fixme:ntoskrnl:KeInitializeTimerEx stub: 0x111080 0 r300: DRM version: 2.24.0, Name: ATI RV530, ID: 0x71c5, GB: 1, Z: 2 r300: GART size: 509 MB, VRAM size: 256 MB r300: AA compression RAM: YES, Z compression RAM: YES, HiZ RAM: YES r300: DRM version: 2.24.0, Name: ATI RV530, ID: 0x71c5, GB: 1, Z: 2 r300: GART size: 509 MB, VRAM size: 256 MB r300: AA compression RAM: YES, Z compression RAM: YES, HiZ RAM: YES r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], LINEAR DCL OUT[0], COLOR DCL SAMP[0] 0: TEX OUT[0], IN[0], SAMP[0], 2D 1: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[1], input[0], 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: TEX temp[1], input[0], 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[1], input[0], 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'inline literals' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: src0.xyz = temp[0], src0.w = temp[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00078005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], LINEAR DCL OUT[0], COLOR 0: MOV OUT[0], IN[0] 1: END Fragment Program: before compilation # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'inline literals' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00078005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], COLOR, COLOR DCL OUT[0], COLOR 0: MOV OUT[0], IN[0] 1: END Fragment Program: before compilation # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'inline literals' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00078005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], COLOR, COLOR DCL OUT[0], COLOR 0: MOV_SAT OUT[0], IN[0] 1: END Fragment Program: before compilation # Radeon Compiler Program 0: MOV_SAT output[0], input[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MOV_SAT output[0], input[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MOV_SAT output[0], input[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: MOV_SAT output[0], input[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MOV_SAT output[0], input[0]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: MOV_SAT output[0], input[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MOV_SAT output[0], input[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MOV_SAT output[0], input[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MOV_SAT output[0], input[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV_SAT output[0], input[0]; Fragment Program: after 'inline literals' # Radeon Compiler Program 0: MOV_SAT output[0], input[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV_SAT output[0], input[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV_SAT output[0], input[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[1..4] DCL TEMP[0], LOCAL 0: TXP TEMP[0], IN[0].xyyw, SAMP[0], 2D 1: MUL TEMP[0].xyz, TEMP[0], CONST[4] 2: MOV TEMP[0].xyz, TEMP[0].xyzx 3: MOV TEMP[0].w, CONST[4].wwww 4: MOV_SAT OUT[0], TEMP[0] 5: END Fragment Program: before compilation # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL temp[0].xyz, temp[0], const[4]; 2: MOV temp[0].xyz, temp[0].xyzx; 3: MOV temp[0].w, const[4].wwww; 4: MOV_SAT output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL temp[0].xyz, temp[0], const[4]; 2: MOV temp[0].xyz, temp[0].xyzx; 3: MOV temp[0].w, const[4].wwww; 4: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL temp[0].xyz, temp[0], const[4]; 2: MOV temp[0].xyz, temp[0].xyzx; 3: MOV temp[0].w, const[4].wwww; 4: MOV_SAT output[0], temp[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL temp[0].xyz, temp[0], const[4]; 2: MOV temp[0].xyz, temp[0].xyzx; 3: MOV temp[0].w, const[4].wwww; 4: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL temp[0].xyz, temp[0], const[4]; 2: MOV temp[0].xyz, temp[0].xyzx; 3: MOV temp[0].w, const[4].wwww; 4: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL temp[0].xyz, temp[0], const[4]; 2: MOV temp[0].xyz, temp[0].xyzx; 3: MOV temp[0].w, const[4].wwww; 4: MOV_SAT output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL temp[0].xyz, temp[0], const[4]; 2: MOV temp[0].xyz, temp[0].xyzx; 3: MOV temp[0].w, const[4].wwww; 4: MOV_SAT output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TXP temp[0].xyz, input[0].xy_w, 2D[0]; 1: MUL temp[0].xyz, temp[0].xyz_, const[4].xyz_; 2: MOV temp[0].xyz, temp[0].xyz_; 3: MOV temp[0].w, const[4].___w; 4: MOV_SAT output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TXP temp[1].xyz, input[0].xy_w, 2D[0]; 1: MUL temp[2].xyz, temp[1].xyz_, const[4].xyz_; 2: MOV temp[3].xyz, temp[2].xyz_; 3: MOV temp[3].w, const[4].___w; 4: MOV_SAT output[0], temp[3]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TXP temp[1].xyz, input[0].xy_w, 2D[0]; 1: MUL temp[2].xyz, temp[1].xyz_, const[4].xyz_; 2: MOV temp[3].xyz, temp[2].xyz_; 3: MOV temp[3].w, const[4].___w; 4: MOV_SAT output[0], temp[3]; Fragment Program: after 'inline literals' # Radeon Compiler Program 0: TXP temp[1].xyz, input[0].xy_w, 2D[0]; 1: MUL temp[2].xyz, temp[1].xyz_, const[4].xyz_; 2: MOV temp[3].xyz, temp[2].xyz_; 3: MOV temp[3].w, const[4].___w; 4: MOV_SAT output[0], temp[3]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TXP temp[1].xyz, input[0].xy_w, 2D[0]; 1: MUL temp[2].xyz, temp[1].xyz_, const[4].xyz_; 2: MOV temp[3].xyz, temp[2].xyz_; 3: MOV temp[3].w, const[4].___w; 4: MOV_SAT output[0], temp[3]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TXP temp[1].xyz, input[0].xy_w, 2D[0]; 1: MUL temp[2].xyz, temp[1].xyz_, const[4].xyz_; 2: MOV temp[3].xyz, temp[2].xyz_; 3: MOV temp[3].w, const[4].___w; 4: MOV_SAT output[0], temp[3]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TXP temp[1].xyz, input[0].xy_w, 2D[0]; 1: src0.xyz = temp[1], src1.xyz = const[4] MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 2: src0.xyz = temp[2] MAD temp[3].xyz, src0.xyz, src0.111, src0.000 3: src0.w = const[4] MAD temp[3].w, src0.w, src0.1, src0.0 4: src0.xyz = temp[3], src0.w = temp[3] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TXP temp[1].xyz, input[0].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[1], src0.w = const[4], src1.xyz = const[4] SEM_WAIT MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[3].w, src0.w, src0.1, src0.0 3: src0.xyz = temp[2] MAD temp[3].xyz, src0.xyz, src0.111, src0.000 4: src0.xyz = temp[3], src0.w = temp[3] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TXP temp[1].xyz, input[0].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[1], src0.w = const[4], src1.xyz = const[4] SEM_WAIT MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[3].w, src0.w, src0.1, src0.0 3: src0.xyz = temp[2] MAD temp[3].xyz, src0.xyz, src0.111, src0.000 4: src0.xyz = temp[3], src0.w = temp[3] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TXP temp[0].xyz, input[0].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = const[4], src1.xyz = const[4] SEM_WAIT MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src0.1, src0.0 3: src0.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.111, src0.000 4: src0.xyz = temp[0], src0.w = temp[0] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x02c00000: id: 0 op:PROJ, ACQ, SCALED 2:TEX_ADDR: 0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08041000:Addr0: 0t, Addr1: 4c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020104:Addr0: 4c, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 2 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 3 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 r300: Initial fragment program FRAG PROPERTY FS_COLOR0_WRITES_ALL_CBUFS 1 DCL IN[0], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[1..4] DCL TEMP[0], LOCAL 0: TXP TEMP[0], IN[0].xyyw, SAMP[0], 2D 1: MUL TEMP[0], TEMP[0], CONST[4] 2: MOV_SAT OUT[0], TEMP[0] 3: END Fragment Program: before compilation # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL temp[0], temp[0], const[4]; 2: MOV_SAT output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL temp[0], temp[0], const[4]; 2: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL temp[0], temp[0], const[4]; 2: MOV_SAT output[0], temp[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL temp[0], temp[0], const[4]; 2: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL temp[0], temp[0], const[4]; 2: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL temp[0], temp[0], const[4]; 2: MOV_SAT output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TXP temp[0], input[0].xyyw, 2D[0]; 1: MUL temp[0], temp[0], const[4]; 2: MOV_SAT output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TXP temp[0], input[0].xy_w, 2D[0]; 1: MUL temp[0], temp[0], const[4]; 2: MOV_SAT output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TXP temp[1], input[0].xy_w, 2D[0]; 1: MUL temp[2], temp[1], const[4]; 2: MOV_SAT output[0], temp[2]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TXP temp[1], input[0].xy_w, 2D[0]; 1: MUL temp[2], temp[1], const[4]; 2: MOV_SAT output[0], temp[2]; Fragment Program: after 'inline literals' # Radeon Compiler Program 0: TXP temp[1], input[0].xy_w, 2D[0]; 1: MUL temp[2], temp[1], const[4]; 2: MOV_SAT output[0], temp[2]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TXP temp[1], input[0].xy_w, 2D[0]; 1: MUL temp[2], temp[1], const[4]; 2: MOV_SAT output[0], temp[2]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TXP temp[1], input[0].xy_w, 2D[0]; 1: MUL temp[2], temp[1], const[4]; 2: MOV_SAT output[0], temp[2]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TXP temp[1], input[0].xy_w, 2D[0]; 1: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = const[4], src1.w = const[4] MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[2].w, src0.w, src1.w, src0.0 2: src0.xyz = temp[2], src0.w = temp[2] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TXP temp[1], input[0].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = const[4], src1.w = const[4] SEM_WAIT MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[2].w, src0.w, src1.w, src0.0 3: src0.xyz = temp[2], src0.w = temp[2] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TXP temp[1], input[0].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = const[4], src1.w = const[4] SEM_WAIT MAD temp[2].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[2].w, src0.w, src1.w, src0.0 3: src0.xyz = temp[2], src0.w = temp[2] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TXP temp[0], input[0].xy_w, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[4], src1.w = const[4] SEM_WAIT MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 3: src0.xyz = temp[0], src0.w = temp[0] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02c00000: id: 0 op:PROJ, ACQ, SCALED 2:TEX_ADDR: 0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08041000:Addr0: 0t, Addr1: 4c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08041000:Addr0: 0t, Addr1: 4c, Addr2: 128t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 2 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 fixme:module:call_tls_callbacks Suppressing call_tls_callbacks call((null),0,0x32b344,0x00000000), stub! r300: DRM version: 2.24.0, Name: ATI RV530, ID: 0x71c5, GB: 1, Z: 2 r300: GART size: 509 MB, VRAM size: 256 MB r300: AA compression RAM: YES, Z compression RAM: YES, HiZ RAM: YES radeon: Acquired access to Hyper-Z. r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], LINEAR DCL OUT[0], COLOR 0: MOV OUT[0], IN[0] 1: END Fragment Program: before compilation # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'inline literals' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV output[0], input[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = input[0], src0.w = input[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00078005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 fixme:d3d9:Direct3DShaderValidatorCreate9 stub fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], LINEAR 0: END Fragment Program: before compilation # Radeon Compiler Program Fragment Program: after 'rewrite depth out' # Radeon Compiler Program Fragment Program: after 'transform KILP' # Radeon Compiler Program Fragment Program: after 'unroll loops' # Radeon Compiler Program Fragment Program: after 'transform TEX' # Radeon Compiler Program Fragment Program: after 'transform IF' # Radeon Compiler Program Fragment Program: after 'native rewrite' # Radeon Compiler Program Fragment Program: after 'deadcode' # Radeon Compiler Program Fragment Program: after 'register rename' # Radeon Compiler Program Fragment Program: after 'dataflow optimize' # Radeon Compiler Program Fragment Program: after 'inline literals' # Radeon Compiler Program Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program Fragment Program: after 'dead constants' # Radeon Compiler Program Fragment Program: after 'pair translate' # Radeon Compiler Program Fragment Program: after 'pair scheduling' # Radeon Compiler Program Fragment Program: after 'dead sources' # Radeon Compiler Program Fragment Program: after 'register allocation' # Radeon Compiler Program R500 Fragment Program: -------- 0 0:CMN_INST 0x00000005:OUT TEX_WAIT wmask: NONE omask: NONE 1:RGB_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00000000:Addr0: 0t, Addr1: 0t, Addr2: 0t, srcp:0 3 RGB_INST: 0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], LINEAR DCL OUT[0], COLOR DCL SAMP[0] 0: TEX OUT[0], IN[0], SAMP[0], 2D 1: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[1], input[0], 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: TEX temp[1], input[0], 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[1], input[0], 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'inline literals' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: src0.xyz = temp[0], src0.w = temp[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00078005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 r300: DRM version: 2.24.0, Name: ATI RV530, ID: 0x71c5, GB: 1, Z: 2 r300: GART size: 509 MB, VRAM size: 256 MB r300: AA compression RAM: YES, Z compression RAM: YES, HiZ RAM: YES r300: DRM version: 2.24.0, Name: ATI RV530, ID: 0x71c5, GB: 1, Z: 2 r300: GART size: 509 MB, VRAM size: 256 MB r300: AA compression RAM: YES, Z compression RAM: YES, HiZ RAM: YES fixme:d3d:wined3d_buffer_preload Too many declaration changes or converting dynamic buffer, stopping converting Mesa: User error: GL_INVALID_VALUE in glPointSize err:d3d:state_pscale >>>>>>>>>>>>>>>>> GL_INVALID_VALUE (0x501) from glPointSize(...); @ state.c / 1593 Mesa: User error: GL_INVALID_VALUE in glPointSize err:d3d:state_pscale >>>>>>>>>>>>>>>>> GL_INVALID_VALUE (0x501) from glPointSize(...); @ state.c / 1593 err:d3d:state_undefined Undefined state. r300: Initial fragment program FRAG DCL IN[0], COLOR, COLOR DCL IN[1], COLOR[1], COLOR DCL OUT[0], COLOR DCL CONST[0] DCL TEMP[0], LOCAL 0: MAD TEMP[0], IN[1], CONST[0], IN[0] 1: MOV_SAT OUT[0], TEMP[0] 2: END Fragment Program: before compilation # Radeon Compiler Program 0: MAD temp[0], input[1], const[0], input[0]; 1: MOV_SAT output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MAD temp[0], input[1], const[0], input[0]; 1: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MAD temp[0], input[1], const[0], input[0]; 1: MOV_SAT output[0], temp[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: MAD temp[0], input[1], const[0], input[0]; 1: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MAD temp[0], input[1], const[0], input[0]; 1: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: MAD temp[0], input[1], const[0], input[0]; 1: MOV_SAT output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MAD temp[0], input[1], const[0], input[0]; 1: MOV_SAT output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MAD temp[0], input[1], const[0], input[0]; 1: MOV_SAT output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MAD temp[1], input[1], const[0], input[0]; 1: MOV_SAT output[0], temp[1]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MAD temp[1], input[1], const[0], input[0]; 1: MOV_SAT output[0], temp[1]; Fragment Program: after 'inline literals' # Radeon Compiler Program 0: MAD temp[1], input[1], const[0], input[0]; 1: MOV_SAT output[0], temp[1]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MAD temp[1], input[1], const[0], input[0]; 1: MOV_SAT output[0], temp[1]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MAD temp[1], input[1], const[0], input[0]; 1: MOV_SAT output[0], temp[1]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = input[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0], src2.xyz = input[0], src2.w = input[0] MAD temp[1].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[1].w, src0.w, src1.w, src2.w 1: src0.xyz = temp[1], src0.w = temp[1] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = input[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0], src2.xyz = input[0], src2.w = input[0] MAD temp[1].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[1].w, src0.w, src1.w, src2.w 1: src0.xyz = temp[1], src0.w = temp[1] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: src0.xyz = input[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0], src2.xyz = input[0], src2.w = input[0] MAD temp[1].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[1].w, src0.w, src1.w, src2.w 1: src0.xyz = temp[1], src0.w = temp[1] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = input[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0], src2.xyz = input[0], src2.w = input[0] MAD temp[0].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[0].w, src0.w, src1.w, src2.w 1: src0.xyz = temp[0], src0.w = temp[0] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x00040001:Addr0: 1t, Addr1: 0c, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x00040001:Addr0: 1t, Addr1: 0c, Addr2: 0t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x1c222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:2 A 0 1 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 r300: Initial fragment program FRAG DCL IN[0], COLOR, COLOR DCL IN[1], COLOR[1], COLOR DCL IN[2], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL 0: TEX TEMP[0], IN[2].xyyy, SAMP[0], 2D 1: MOV_SAT TEMP[0], TEMP[0] 2: MUL TEMP[1], IN[1], CONST[0] 3: MAD TEMP[0], TEMP[0], IN[0], TEMP[1] 4: MOV_SAT OUT[0], TEMP[0] 5: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[2].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: MOV_SAT output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[2].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[2].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: MOV_SAT output[0], temp[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[2].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[2].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: TEX temp[0], input[2].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: MOV_SAT output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[2].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: MOV_SAT output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: MOV_SAT output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[2], input[2].xy__, 2D[0]; 1: MOV_SAT temp[3], temp[2]; 2: MUL temp[4], input[1], const[0]; 3: MAD temp[5], temp[3], input[0], temp[4]; 4: MOV_SAT output[0], temp[5]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[2], input[2].xy__, 2D[0]; 1: MOV_SAT temp[3], temp[2]; 2: MUL temp[4], input[1], const[0]; 3: MAD temp[5], temp[3], input[0], temp[4]; 4: MOV_SAT output[0], temp[5]; Fragment Program: after 'inline literals' # Radeon Compiler Program 0: TEX temp[2], input[2].xy__, 2D[0]; 1: MOV_SAT temp[3], temp[2]; 2: MUL temp[4], input[1], const[0]; 3: MAD temp[5], temp[3], input[0], temp[4]; 4: MOV_SAT output[0], temp[5]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[2], input[2].xy__, 2D[0]; 1: MOV_SAT temp[3], temp[2]; 2: MUL temp[4], input[1], const[0]; 3: MAD temp[5], temp[3], input[0], temp[4]; 4: MOV_SAT output[0], temp[5]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[2], input[2].xy__, 2D[0]; 1: MOV_SAT temp[3], temp[2]; 2: MUL temp[4], input[1], const[0]; 3: MAD temp[5], temp[3], input[0], temp[4]; 4: MOV_SAT output[0], temp[5]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[2], input[2].xy__, 2D[0]; 1: src0.xyz = temp[2], src0.w = temp[2] MAD_SAT temp[3].xyz, src0.xyz, src0.111, src0.000 MAD_SAT temp[3].w, src0.w, src0.1, src0.0 2: src0.xyz = input[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0] MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[4].w, src0.w, src1.w, src0.0 3: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = input[0], src1.w = input[0], src2.xyz = temp[4], src2.w = temp[4] MAD temp[5].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[5].w, src0.w, src1.w, src2.w 4: src0.xyz = temp[5], src0.w = temp[5] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[2], input[2].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = input[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0] MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[4].w, src0.w, src1.w, src0.0 3: src0.xyz = temp[2], src0.w = temp[2] SEM_WAIT MAD_SAT temp[3].xyz, src0.xyz, src0.111, src0.000 MAD_SAT temp[3].w, src0.w, src0.1, src0.0 4: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = input[0], src1.w = input[0], src2.xyz = temp[4], src2.w = temp[4] MAD temp[5].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[5].w, src0.w, src1.w, src2.w 5: src0.xyz = temp[5], src0.w = temp[5] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[2], input[2].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = input[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0] MAD temp[4].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[4].w, src0.w, src1.w, src0.0 3: src0.xyz = temp[2], src0.w = temp[2] SEM_WAIT MAD_SAT temp[3].xyz, src0.xyz, src0.111, src0.000 MAD_SAT temp[3].w, src0.w, src0.1, src0.0 4: src0.xyz = temp[3], src0.w = temp[3], src1.xyz = input[0], src1.w = input[0], src2.xyz = temp[4], src2.w = temp[4] MAD temp[5].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[5].w, src0.w, src1.w, src2.w 5: src0.xyz = temp[5], src0.w = temp[5] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[2], input[2].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = input[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0] MAD temp[1].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[1].w, src0.w, src1.w, src0.0 3: src0.xyz = temp[2], src0.w = temp[2] SEM_WAIT MAD_SAT temp[2].xyz, src0.xyz, src0.111, src0.000 MAD_SAT temp[2].w, src0.w, src0.1, src0.0 4: src0.xyz = temp[2], src0.w = temp[2], src1.xyz = input[0], src1.w = input[0], src2.xyz = temp[1], src2.w = temp[1] MAD temp[0].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[0].w, src0.w, src1.w, src2.w 5: src0.xyz = temp[0], src0.w = temp[0] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe402f402: src: 2 R/G/A/A dst: 2 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08040001:Addr0: 1t, Addr1: 0c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08040001:Addr0: 1t, Addr1: 0c, Addr2: 128t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0068c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 2 0:CMN_INST 0x00187804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c020:MAD dest:2 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 3 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x00100002:Addr0: 2t, Addr1: 0t, Addr2: 1t, srcp:0 2:ALPHA_ADDR 0x00100002:Addr0: 2t, Addr1: 0t, Addr2: 1t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x1c222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:2 A 0 4 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP r300: Initial fragment program FRAG DCL IN[0], GENERIC[0], LINEAR DCL OUT[0], COLOR DCL SAMP[0] 0: TEX OUT[0], IN[0], SAMP[0], 2D 1: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX output[0], input[0], 2D[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[1], input[0], 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: TEX temp[1], input[0], 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[1], input[0], 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[1], input[0].xy__, 2D[0]; 1: MOV output[0], temp[1]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'inline literals' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: MOV output[0], temp[0]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[0], input[0].xy__, 2D[0]; 1: src0.xyz = temp[0], src0.w = temp[0] MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = temp[0], src0.w = temp[0] SEM_WAIT MAD color[0].xyz, src0.xyz, src0.111, src0.000 MAD color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00078005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP context mis-match in pipe_sampler_view_release() fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:module:call_tls_callbacks Suppressing call_tls_callbacks callUnhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. err:ntdll:RtlpWaitForCriticalSection section 0xf46e90 "?" wait timed out in thread 0009, blocked by 0031, retrying (60 sec) fixme:module:call_tls_callbacks Suppressing call_tls_callbacks callUnhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. fixme:d3d:resource_check_usage Unhandled usage flags 0x8. r300: Initial fragment program FRAG DCL IN[0], COLOR, COLOR DCL IN[1], COLOR[1], COLOR DCL IN[2], FOG, PERSPECTIVE DCL IN[3], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL CONST[2..3] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL IMM[0] FLT32 { 1.0000, 0.0000, 0.0000, 0.0000} 0: TEX TEMP[0], IN[3].xyyy, SAMP[0], 2D 1: MOV_SAT TEMP[0], TEMP[0] 2: MUL TEMP[1], IN[1], CONST[0] 3: MAD TEMP[0], TEMP[0], IN[0], TEMP[1] 4: ADD TEMP[1].x, CONST[3].zzzz, -IN[2].xxxx 5: ADD TEMP[2].x, CONST[3].zzzz, -CONST[3].yyyy 6: RCP TEMP[2].x, TEMP[2].xxxx 7: MUL_SAT TEMP[1].x, TEMP[1].xxxx, TEMP[2].xxxx 8: ADD TEMP[2].x, IMM[0].xxxx, -TEMP[1].xxxx 9: MUL TEMP[2].xyz, CONST[2].xyzz, TEMP[2].xxxx 10: MAD TEMP[0].xyz, TEMP[0].xyzz, TEMP[1].xxxx, TEMP[2].xyzz 11: MOV_SAT OUT[0], TEMP[0] 12: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[3].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: ADD temp[1].x, const[3].zzzz, -input[2].xxxx; 5: ADD temp[2].x, const[3].zzzz, -const[3].yyyy; 6: RCP temp[2].x, temp[2].xxxx; 7: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 8: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 9: MUL temp[2].xyz, const[2].xyzz, temp[2].xxxx; 10: MAD temp[0].xyz, temp[0].xyzz, temp[1].xxxx, temp[2].xyzz; 11: MOV_SAT output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[3].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: ADD temp[1].x, const[3].zzzz, -input[2].xxxx; 5: ADD temp[2].x, const[3].zzzz, -const[3].yyyy; 6: RCP temp[2].x, temp[2].xxxx; 7: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 8: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 9: MUL temp[2].xyz, const[2].xyzz, temp[2].xxxx; 10: MAD temp[0].xyz, temp[0].xyzz, temp[1].xxxx, temp[2].xyzz; 11: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[3].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: ADD temp[1].x, const[3].zzzz, -input[2].xxxx; 5: ADD temp[2].x, const[3].zzzz, -const[3].yyyy; 6: RCP temp[2].x, temp[2].xxxx; 7: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 8: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 9: MUL temp[2].xyz, const[2].xyzz, temp[2].xxxx; 10: MAD temp[0].xyz, temp[0].xyzz, temp[1].xxxx, temp[2].xyzz; 11: MOV_SAT output[0], temp[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[3].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: ADD temp[1].x, const[3].zzzz, -input[2].xxxx; 5: ADD temp[2].x, const[3].zzzz, -const[3].yyyy; 6: RCP temp[2].x, temp[2].xxxx; 7: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 8: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 9: MUL temp[2].xyz, const[2].xyzz, temp[2].xxxx; 10: MAD temp[0].xyz, temp[0].xyzz, temp[1].xxxx, temp[2].xyzz; 11: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[3].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: ADD temp[1].x, const[3].zzzz, -input[2].xxxx; 5: ADD temp[2].x, const[3].zzzz, -const[3].yyyy; 6: RCP temp[2].x, temp[2].xxxx; 7: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 8: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 9: MUL temp[2].xyz, const[2].xyzz, temp[2].xxxx; 10: MAD temp[0].xyz, temp[0].xyzz, temp[1].xxxx, temp[2].xyzz; 11: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: TEX temp[0], input[3].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: ADD temp[1].x, const[3].zzzz, -input[2].xxxx; 5: ADD temp[2].x, const[3].zzzz, -const[3].yyyy; 6: RCP temp[2].x, temp[2].xxxx; 7: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 8: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 9: MUL temp[2].xyz, const[2].xyzz, temp[2].xxxx; 10: MAD temp[0].xyz, temp[0].xyzz, temp[1].xxxx, temp[2].xyzz; 11: MOV_SAT output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[3].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: ADD temp[1].x, const[3].zzzz, -input[2].xxxx; 5: ADD temp[2].x, const[3].zzzz, -const[3].yyyy; 6: RCP temp[2].x, temp[2].xxxx; 7: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 8: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 9: MUL temp[2].xyz, const[2].xyzz, temp[2].xxxx; 10: MAD temp[0].xyz, temp[0].xyzz, temp[1].xxxx, temp[2].xyzz; 11: MOV_SAT output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[3].xy__, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: ADD temp[1].x, const[3].z___, -input[2].x___; 5: ADD temp[2].x, const[3].z___, -const[3].y___; 6: RCP temp[2].x, temp[2].x___; 7: MUL_SAT temp[1].x, temp[1].x___, temp[2].x___; 8: ADD temp[2].x, temp[0].1___, -temp[1].x___; 9: MUL temp[2].xyz, const[2].xyz_, temp[2].xxx_; 10: MAD temp[0].xyz, temp[0].xyz_, temp[1].xxx_, temp[2].xyz_; 11: MOV_SAT output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[3], input[3].xy__, 2D[0]; 1: MOV_SAT temp[4], temp[3]; 2: MUL temp[5], input[1], const[0]; 3: MAD temp[6], temp[4], input[0], temp[5]; 4: ADD temp[7].x, const[3].z___, -input[2].x___; 5: ADD temp[8].x, const[3].z___, -const[3].y___; 6: RCP temp[9].x, temp[8].x___; 7: MUL_SAT temp[10].x, temp[7].x___, temp[9].x___; 8: ADD temp[11].x, temp[0].1___, -temp[10].x___; 9: MUL temp[12].xyz, const[2].xyz_, temp[11].xxx_; 10: MAD temp[6].xyz, temp[6].xyz_, temp[10].xxx_, temp[12].xyz_; 11: MOV_SAT output[0], temp[6]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[3], input[3].xy__, 2D[0]; 1: MOV_SAT temp[4], temp[3]; 2: MUL temp[5], input[1], const[0]; 3: MAD temp[6], temp[4], input[0], temp[5]; 4: ADD temp[7].x, const[3].z___, -input[2].x___; 5: ADD temp[8].x, const[3].z___, -const[3].y___; 6: RCP temp[9].x, temp[8].x___; 7: MUL_SAT temp[10].x, temp[7].x___, temp[9].x___; 8: MUL temp[12].xyz, const[2].xyz_, (1 - temp[10]).xxx_; 9: MAD temp[6].xyz, temp[6].xyz_, temp[10].xxx_, temp[12].xyz_; 10: MOV_SAT output[0], temp[6]; Fragment Program: after 'inline literals' # Radeon Compiler Program 0: TEX temp[3], input[3].xy__, 2D[0]; 1: MOV_SAT temp[4], temp[3]; 2: MUL temp[5], input[1], const[0]; 3: MAD temp[6], temp[4], input[0], temp[5]; 4: ADD temp[7].x, const[3].z___, -input[2].x___; 5: ADD temp[8].x, const[3].z___, -const[3].y___; 6: RCP temp[9].x, temp[8].x___; 7: MUL_SAT temp[10].x, temp[7].x___, temp[9].x___; 8: MUL temp[12].xyz, const[2].xyz_, (1 - temp[10]).xxx_; 9: MAD temp[6].xyz, temp[6].xyz_, temp[10].xxx_, temp[12].xyz_; 10: MOV_SAT output[0], temp[6]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[3], input[3].xy__, 2D[0]; 1: MOV_SAT temp[4], temp[3]; 2: MUL temp[5], input[1], const[0]; 3: MAD temp[6], temp[4], input[0], temp[5]; 4: ADD temp[7].x, const[3].z___, -input[2].x___; 5: ADD temp[8].x, const[3].z___, -const[3].y___; 6: RCP temp[9].x, temp[8].x___; 7: MUL_SAT temp[10].x, temp[7].x___, temp[9].x___; 8: MUL temp[12].xyz, const[2].xyz_, (1 - temp[10]).xxx_; 9: MAD temp[6].xyz, temp[6].xyz_, temp[10].xxx_, temp[12].xyz_; 10: MOV_SAT output[0], temp[6]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[3], input[3].xy__, 2D[0]; 1: MOV_SAT temp[4], temp[3]; 2: MUL temp[5], input[1], const[0]; 3: MAD temp[6], temp[4], input[0], temp[5]; 4: ADD temp[7].x, const[3].z___, -input[2].x___; 5: ADD temp[8].x, const[3].z___, -const[3].y___; 6: RCP temp[9].x, temp[8].x___; 7: MUL_SAT temp[10].x, temp[7].x___, temp[9].x___; 8: MUL temp[12].xyz, const[2].xyz_, (1 - temp[10]).xxx_; 9: MAD temp[6].xyz, temp[6].xyz_, temp[10].xxx_, temp[12].xyz_; 10: MOV_SAT output[0], temp[6]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[3], input[3].xy__, 2D[0]; 1: src0.xyz = temp[3], src0.w = temp[3] MAD_SAT temp[4].xyz, src0.xyz, src0.111, src0.000 MAD_SAT temp[4].w, src0.w, src0.1, src0.0 2: src0.xyz = input[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0] MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 3: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = input[0], src1.w = input[0], src2.xyz = temp[5], src2.w = temp[5] MAD temp[6].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[6].w, src0.w, src1.w, src2.w 4: src0.xyz = const[3], src1.xyz = input[2] MAD temp[7].x, src0.z__, src0.111, -src1.x__ 5: src0.xyz = const[3] MAD temp[8].x, src0.z__, src0.111, -src0.y__ 6: src0.xyz = temp[8] REPL_ALPHA temp[9].x RCP, src0.x 7: src0.xyz = temp[7], src1.xyz = temp[9] MAD_SAT temp[10].x, src0.x__, src1.x__, src0.000 8: src0.xyz = temp[10], src1.xyz = const[2], srcp.xyz = (1 - src0) MAD temp[12].xyz, src1.xyz, srcp.xxx, src0.000 9: src0.xyz = temp[6], src1.xyz = temp[10], src2.xyz = temp[12] MAD temp[6].xyz, src0.xyz, src1.xxx, src2.xyz 10: src0.xyz = temp[6], src0.w = temp[6] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[3], input[3].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[3], src1.xyz = input[2] MAD temp[8].x, src0.z__, src0.111, -src0.y__ MAD temp[7].w, src0.z, src0.1, -src1.x 3: src0.xyz = temp[8] RCP temp[9].w, src0.x 4: src0.xyz = temp[7], src0.w = temp[7], src1.xyz = temp[9], src1.w = temp[9] MAD_SAT temp[10].x, src0.w__, src1.w__, src0.000 5: src0.xyz = temp[10], src1.xyz = const[2], srcp.xyz = (1 - src0) MAD temp[12].xyz, src1.xyz, srcp.xxx, src0.000 6: src0.xyz = input[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0] MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 7: src0.xyz = temp[3], src0.w = temp[3] SEM_WAIT MAD_SAT temp[4].xyz, src0.xyz, src0.111, src0.000 MAD_SAT temp[4].w, src0.w, src0.1, src0.0 8: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = input[0], src1.w = input[0], src2.xyz = temp[5], src2.w = temp[5] MAD temp[6].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[6].w, src0.w, src1.w, src2.w 9: src0.xyz = temp[6], src1.xyz = temp[10], src2.xyz = temp[12] MAD temp[6].xyz, src0.xyz, src1.xxx, src2.xyz 10: src0.xyz = temp[6], src0.w = temp[6] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[3], input[3].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[3], src1.xyz = input[2] MAD temp[8].x, src0.z__, src0.111, -src0.y__ MAD temp[7].w, src0.z, src0.1, -src1.x 3: src0.xyz = temp[8] RCP temp[9].w, src0.x 4: src0.w = temp[7], src1.w = temp[9] MAD_SAT temp[10].x, src0.w__, src1.w__, src0.000 5: src0.xyz = temp[10], src1.xyz = const[2], srcp.xyz = (1 - src0) MAD temp[12].xyz, src1.xyz, srcp.xxx, src0.000 6: src0.xyz = input[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0] MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 7: src0.xyz = temp[3], src0.w = temp[3] SEM_WAIT MAD_SAT temp[4].xyz, src0.xyz, src0.111, src0.000 MAD_SAT temp[4].w, src0.w, src0.1, src0.0 8: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = input[0], src1.w = input[0], src2.xyz = temp[5], src2.w = temp[5] MAD temp[6].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[6].w, src0.w, src1.w, src2.w 9: src0.xyz = temp[6], src1.xyz = temp[10], src2.xyz = temp[12] MAD temp[6].xyz, src0.xyz, src1.xxx, src2.xyz 10: src0.xyz = temp[6], src0.w = temp[6] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[2], input[2].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[3], src1.xyz = input[3] MAD temp[3].x, src0.z__, src0.1__, -src0.y__ MAD temp[3].w, src0.z, src0.1, -src1.x 3: src0.xyz = temp[3] RCP temp[4].w, src0.x 4: src0.w = temp[3], src1.w = temp[4] MAD_SAT temp[3].x, src0.w__, src1.w__, src0.0__ 5: src0.xyz = temp[3], src1.xyz = const[2], srcp.xyz = (1 - src0) MAD temp[4].xyz, src1.xyz, srcp.xxx, src0.000 6: src0.xyz = input[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0] MAD temp[1].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[1].w, src0.w, src1.w, src0.0 7: src0.xyz = temp[2], src0.w = temp[2] SEM_WAIT MAD_SAT temp[2].xyz, src0.xyz, src0.111, src0.000 MAD_SAT temp[2].w, src0.w, src0.1, src0.0 8: src0.xyz = temp[2], src0.w = temp[2], src1.xyz = input[0], src1.w = input[0], src2.xyz = temp[1], src2.w = temp[1] MAD temp[0].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[0].w, src0.w, src1.w, src2.w 9: src0.xyz = temp[0], src1.xyz = temp[3], src2.xyz = temp[4] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 10: src0.xyz = temp[0], src0.w = temp[0] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe402f402: src: 2 R/G/A/A dst: 2 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00004800:ALU wmask: AR omask: NONE 1:RGB_ADDR 0x08000d03:Addr0: 3c, Addr1: 3t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930488:rgb_A_src:0 B/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0 4 ALPHA_INST:0x00c08030:MAD dest:3 alp_A_src:0 B 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x42c84030:MAD dest:3 rgb_C_src:0 G/0/0 1 alp_C_src:1 R 1 2 0:CMN_INST 0x00004000:ALU wmask: A omask: NONE 1:RGB_ADDR 0x08020003:Addr0: 3t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0 4 ALPHA_INST:0x0000004a:RCP dest:4 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 3 0:CMN_INST 0x00080a00:ALU NOP wmask: R omask: NONE 1:RGB_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08001003:Addr0: 3t, Addr1: 4t, Addr2: 128t, srcp:0 3 RGB_INST: 0x0091a48c:rgb_A_src:0 A/0/0 0 rgb_B_src:1 A/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490030:MAD dest:3 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 4 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0xc8040803:Addr0: 3t, Addr1: 2c, Addr2: 128t, srcp:3 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00006221:rgb_A_src:1 R/G/B 0 rgb_B_src:3 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 5 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08040001:Addr0: 1t, Addr1: 0c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08040001:Addr0: 1t, Addr1: 0c, Addr2: 128t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0068c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 6 0:CMN_INST 0x00187804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c020:MAD dest:2 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 7 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x00100002:Addr0: 2t, Addr1: 0t, Addr2: 1t, srcp:0 2:ALPHA_ADDR 0x00100002:Addr0: 2t, Addr1: 0t, Addr2: 1t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x1c222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:2 A 0 8 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0x00400c00:Addr0: 0t, Addr1: 3t, Addr2: 4t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 9 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 r300: Initial fragment program FRAG DCL IN[0], FOG, PERSPECTIVE DCL IN[1], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[1..2] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL IMM[0] FLT32 { 1.0000, 0.0000, 0.0000, 0.0000} 0: TEX TEMP[0], IN[1].xyyy, SAMP[0], 2D 1: MOV TEMP[1].w, TEMP[0] 2: ADD TEMP[2].x, CONST[2].zzzz, -IN[0].xxxx 3: ADD TEMP[3].x, CONST[2].zzzz, -CONST[2].yyyy 4: RCP TEMP[3].x, TEMP[3].xxxx 5: MUL_SAT TEMP[2].x, TEMP[2].xxxx, TEMP[3].xxxx 6: ADD TEMP[3].x, IMM[0].xxxx, -TEMP[2].xxxx 7: MUL TEMP[3].xyz, CONST[1].xyzz, TEMP[3].xxxx 8: MAD TEMP[1].xyz, TEMP[0].xyzz, TEMP[2].xxxx, TEMP[3].xyzz 9: MOV_SAT OUT[0], TEMP[1] 10: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[0]; 1: MOV temp[1].w, temp[0]; 2: ADD temp[2].x, const[2].zzzz, -input[0].xxxx; 3: ADD temp[3].x, const[2].zzzz, -const[2].yyyy; 4: RCP temp[3].x, temp[3].xxxx; 5: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 6: ADD temp[3].x, temp[0].1111, -temp[2].xxxx; 7: MUL temp[3].xyz, const[1].xyzz, temp[3].xxxx; 8: MAD temp[1].xyz, temp[0].xyzz, temp[2].xxxx, temp[3].xyzz; 9: MOV_SAT output[0], temp[1]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[0]; 1: MOV temp[1].w, temp[0]; 2: ADD temp[2].x, const[2].zzzz, -input[0].xxxx; 3: ADD temp[3].x, const[2].zzzz, -const[2].yyyy; 4: RCP temp[3].x, temp[3].xxxx; 5: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 6: ADD temp[3].x, temp[0].1111, -temp[2].xxxx; 7: MUL temp[3].xyz, const[1].xyzz, temp[3].xxxx; 8: MAD temp[1].xyz, temp[0].xyzz, temp[2].xxxx, temp[3].xyzz; 9: MOV_SAT output[0], temp[1]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[0]; 1: MOV temp[1].w, temp[0]; 2: ADD temp[2].x, const[2].zzzz, -input[0].xxxx; 3: ADD temp[3].x, const[2].zzzz, -const[2].yyyy; 4: RCP temp[3].x, temp[3].xxxx; 5: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 6: ADD temp[3].x, temp[0].1111, -temp[2].xxxx; 7: MUL temp[3].xyz, const[1].xyzz, temp[3].xxxx; 8: MAD temp[1].xyz, temp[0].xyzz, temp[2].xxxx, temp[3].xyzz; 9: MOV_SAT output[0], temp[1]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[0]; 1: MOV temp[1].w, temp[0]; 2: ADD temp[2].x, const[2].zzzz, -input[0].xxxx; 3: ADD temp[3].x, const[2].zzzz, -const[2].yyyy; 4: RCP temp[3].x, temp[3].xxxx; 5: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 6: ADD temp[3].x, temp[0].1111, -temp[2].xxxx; 7: MUL temp[3].xyz, const[1].xyzz, temp[3].xxxx; 8: MAD temp[1].xyz, temp[0].xyzz, temp[2].xxxx, temp[3].xyzz; 9: MOV_SAT output[0], temp[1]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[0]; 1: MOV temp[1].w, temp[0]; 2: ADD temp[2].x, const[2].zzzz, -input[0].xxxx; 3: ADD temp[3].x, const[2].zzzz, -const[2].yyyy; 4: RCP temp[3].x, temp[3].xxxx; 5: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 6: ADD temp[3].x, temp[0].1111, -temp[2].xxxx; 7: MUL temp[3].xyz, const[1].xyzz, temp[3].xxxx; 8: MAD temp[1].xyz, temp[0].xyzz, temp[2].xxxx, temp[3].xyzz; 9: MOV_SAT output[0], temp[1]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[0]; 1: MOV temp[1].w, temp[0]; 2: ADD temp[2].x, const[2].zzzz, -input[0].xxxx; 3: ADD temp[3].x, const[2].zzzz, -const[2].yyyy; 4: RCP temp[3].x, temp[3].xxxx; 5: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 6: ADD temp[3].x, temp[0].1111, -temp[2].xxxx; 7: MUL temp[3].xyz, const[1].xyzz, temp[3].xxxx; 8: MAD temp[1].xyz, temp[0].xyzz, temp[2].xxxx, temp[3].xyzz; 9: MOV_SAT output[0], temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[0]; 1: MOV temp[1].w, temp[0]; 2: ADD temp[2].x, const[2].zzzz, -input[0].xxxx; 3: ADD temp[3].x, const[2].zzzz, -const[2].yyyy; 4: RCP temp[3].x, temp[3].xxxx; 5: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 6: ADD temp[3].x, temp[0].1111, -temp[2].xxxx; 7: MUL temp[3].xyz, const[1].xyzz, temp[3].xxxx; 8: MAD temp[1].xyz, temp[0].xyzz, temp[2].xxxx, temp[3].xyzz; 9: MOV_SAT output[0], temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: MOV temp[1].w, temp[0].___w; 2: ADD temp[2].x, const[2].z___, -input[0].x___; 3: ADD temp[3].x, const[2].z___, -const[2].y___; 4: RCP temp[3].x, temp[3].x___; 5: MUL_SAT temp[2].x, temp[2].x___, temp[3].x___; 6: ADD temp[3].x, temp[0].1___, -temp[2].x___; 7: MUL temp[3].xyz, const[1].xyz_, temp[3].xxx_; 8: MAD temp[1].xyz, temp[0].xyz_, temp[2].xxx_, temp[3].xyz_; 9: MOV_SAT output[0], temp[1]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[4], input[1].xy__, 2D[0]; 1: MOV temp[5].w, temp[4].___w; 2: ADD temp[6].x, const[2].z___, -input[0].x___; 3: ADD temp[7].x, const[2].z___, -const[2].y___; 4: RCP temp[8].x, temp[7].x___; 5: MUL_SAT temp[9].x, temp[6].x___, temp[8].x___; 6: ADD temp[10].x, temp[0].1___, -temp[9].x___; 7: MUL temp[11].xyz, const[1].xyz_, temp[10].xxx_; 8: MAD temp[5].xyz, temp[4].xyz_, temp[9].xxx_, temp[11].xyz_; 9: MOV_SAT output[0], temp[5]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[4], input[1].xy__, 2D[0]; 1: MOV temp[5].w, temp[4].___w; 2: ADD temp[6].x, const[2].z___, -input[0].x___; 3: ADD temp[7].x, const[2].z___, -const[2].y___; 4: RCP temp[8].x, temp[7].x___; 5: MUL_SAT temp[9].x, temp[6].x___, temp[8].x___; 6: MUL temp[11].xyz, const[1].xyz_, (1 - temp[9]).xxx_; 7: MAD temp[5].xyz, temp[4].xyz_, temp[9].xxx_, temp[11].xyz_; 8: MOV_SAT output[0], temp[5]; Fragment Program: after 'inline literals' # Radeon Compiler Program 0: TEX temp[4], input[1].xy__, 2D[0]; 1: MOV temp[5].w, temp[4].___w; 2: ADD temp[6].x, const[2].z___, -input[0].x___; 3: ADD temp[7].x, const[2].z___, -const[2].y___; 4: RCP temp[8].x, temp[7].x___; 5: MUL_SAT temp[9].x, temp[6].x___, temp[8].x___; 6: MUL temp[11].xyz, const[1].xyz_, (1 - temp[9]).xxx_; 7: MAD temp[5].xyz, temp[4].xyz_, temp[9].xxx_, temp[11].xyz_; 8: MOV_SAT output[0], temp[5]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[4], input[1].xy__, 2D[0]; 1: MOV temp[5].w, temp[4].___w; 2: ADD temp[6].x, const[2].z___, -input[0].x___; 3: ADD temp[7].x, const[2].z___, -const[2].y___; 4: RCP temp[8].x, temp[7].x___; 5: MUL_SAT temp[9].x, temp[6].x___, temp[8].x___; 6: MUL temp[11].xyz, const[1].xyz_, (1 - temp[9]).xxx_; 7: MAD temp[5].xyz, temp[4].xyz_, temp[9].xxx_, temp[11].xyz_; 8: MOV_SAT output[0], temp[5]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[4], input[1].xy__, 2D[0]; 1: MOV temp[5].w, temp[4].___w; 2: ADD temp[6].x, const[2].z___, -input[0].x___; 3: ADD temp[7].x, const[2].z___, -const[2].y___; 4: RCP temp[8].x, temp[7].x___; 5: MUL_SAT temp[9].x, temp[6].x___, temp[8].x___; 6: MUL temp[11].xyz, const[1].xyz_, (1 - temp[9]).xxx_; 7: MAD temp[5].xyz, temp[4].xyz_, temp[9].xxx_, temp[11].xyz_; 8: MOV_SAT output[0], temp[5]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[4], input[1].xy__, 2D[0]; 1: src0.w = temp[4] MAD temp[5].w, src0.w, src0.1, src0.0 2: src0.xyz = const[2], src1.xyz = input[0] MAD temp[6].x, src0.z__, src0.111, -src1.x__ 3: src0.xyz = const[2] MAD temp[7].x, src0.z__, src0.111, -src0.y__ 4: src0.xyz = temp[7] REPL_ALPHA temp[8].x RCP, src0.x 5: src0.xyz = temp[6], src1.xyz = temp[8] MAD_SAT temp[9].x, src0.x__, src1.x__, src0.000 6: src0.xyz = temp[9], src1.xyz = const[1], srcp.xyz = (1 - src0) MAD temp[11].xyz, src1.xyz, srcp.xxx, src0.000 7: src0.xyz = temp[4], src1.xyz = temp[9], src2.xyz = temp[11] MAD temp[5].xyz, src0.xyz, src1.xxx, src2.xyz 8: src0.xyz = temp[5], src0.w = temp[5] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[4], input[1].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[2], src1.xyz = input[0] MAD temp[7].x, src0.z__, src0.111, -src0.y__ MAD temp[6].w, src0.z, src0.1, -src1.x 3: src0.xyz = temp[7] REPL_ALPHA temp[8].x RCP, src0.x 4: src0.xyz = temp[6], src0.w = temp[6], src1.xyz = temp[8], src1.w = temp[4] SEM_WAIT MAD_SAT temp[9].x, src0.w__, src1.x__, src0.000 MAD temp[5].w, src1.w, src0.1, src0.0 5: src0.xyz = temp[9], src1.xyz = const[1], srcp.xyz = (1 - src0) MAD temp[11].xyz, src1.xyz, srcp.xxx, src0.000 6: src0.xyz = temp[4], src1.xyz = temp[9], src2.xyz = temp[11] MAD temp[5].xyz, src0.xyz, src1.xxx, src2.xyz 7: src0.xyz = temp[5], src0.w = temp[5] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[4], input[1].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[2], src1.xyz = input[0] MAD temp[7].x, src0.z__, src0.111, -src0.y__ MAD temp[6].w, src0.z, src0.1, -src1.x 3: src0.xyz = temp[7] REPL_ALPHA temp[8].x RCP, src0.x 4: src0.w = temp[6], src1.xyz = temp[8], src1.w = temp[4] SEM_WAIT MAD_SAT temp[9].x, src0.w__, src1.x__, src0.000 MAD temp[5].w, src1.w, src0.1, src0.0 5: src0.xyz = temp[9], src1.xyz = const[1], srcp.xyz = (1 - src0) MAD temp[11].xyz, src1.xyz, srcp.xxx, src0.000 6: src0.xyz = temp[4], src1.xyz = temp[9], src2.xyz = temp[11] MAD temp[5].xyz, src0.xyz, src1.xxx, src2.xyz 7: src0.xyz = temp[5], src0.w = temp[5] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[2], src1.xyz = input[1] MAD temp[1].x, src0.z__, src0.1__, -src0.y__ MAD temp[1].w, src0.z, src0.1, -src1.x 3: src0.xyz = temp[1] REPL_ALPHA temp[1].x RCP, src0.x 4: src0.w = temp[1], src1.xyz = temp[1], src1.w = temp[0] SEM_WAIT MAD_SAT temp[1].x, src0.w__, src1.x__, src0.0__ MAD temp[1].w, src1.w, src0.1, src0.0 5: src0.xyz = temp[1], src1.xyz = const[1], srcp.xyz = (1 - src0) MAD temp[2].xyz, src1.xyz, srcp.xxx, src0.000 6: src0.xyz = temp[0], src1.xyz = temp[1], src2.xyz = temp[2] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 7: src0.xyz = temp[0], src0.w = temp[1] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00004800:ALU wmask: AR omask: NONE 1:RGB_ADDR 0x08000502:Addr0: 2c, Addr1: 1t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930488:rgb_A_src:0 B/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0 4 ALPHA_INST:0x00c08010:MAD dest:1 alp_A_src:0 B 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x42c84010:MAD dest:1 rgb_C_src:0 G/0/0 1 alp_C_src:1 R 1 2 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0 4 ALPHA_INST:0x0000000a:RCP dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x0000001a:SOP dest:1 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 3 0:CMN_INST 0x00084a04:ALU TEX_WAIT NOP wmask: AR omask: NONE 1:RGB_ADDR 0x08000480:Addr0: 128t, Addr1: 1t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08000001:Addr0: 1t, Addr1: 0t, Addr2: 128t, srcp:0 3 RGB_INST: 0x0090248c:rgb_A_src:0 A/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00c0d010:MAD dest:1 alp_A_src:1 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 4 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0xc8040401:Addr0: 1t, Addr1: 1c, Addr2: 128t, srcp:3 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00006221:rgb_A_src:1 R/G/B 0 rgb_B_src:3 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 5 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0x00200400:Addr0: 0t, Addr1: 1t, Addr2: 2t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 6 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 r300: Initial fragment program FRAG DCL IN[0], FOG, PERSPECTIVE DCL IN[1], GENERIC[0], PERSPECTIVE DCL IN[2], GENERIC[1], PERSPECTIVE DCL IN[3], GENERIC[2], PERSPECTIVE DCL IN[4], GENERIC[3], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL CONST[0..1] DCL CONST[5..7] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL DCL TEMP[4], LOCAL IMM[0] FLT32 { 1.0000, 2.0000, -1.0000, 0.0000} 0: TEX TEMP[0].xy, IN[3].xyyy, SAMP[2], 2D 1: MAD TEMP[1].x, TEMP[0].xxxx, IMM[0].yyyy, IMM[0].zzzz 2: MAD TEMP[0].x, TEMP[0].yyyy, IMM[0].yyyy, IMM[0].zzzz 3: MOV TEMP[1].y, TEMP[0].xxxx 4: TEX TEMP[2].xy, IN[4].xyyy, SAMP[2], 2D 5: MAD TEMP[3].x, TEMP[2].xxxx, IMM[0].yyyy, IMM[0].zzzz 6: MAD TEMP[2].x, TEMP[2].yyyy, IMM[0].yyyy, IMM[0].zzzz 7: MOV TEMP[3].y, TEMP[2].xxxx 8: RCP TEMP[2].x, IN[1].wwww 9: MUL TEMP[2].xy, TEMP[2].xxxx, IN[1].xyyy 10: MAD TEMP[2].xy, TEMP[2].xyyy, CONST[1].xyyy, CONST[1].xxxx 11: MAD TEMP[4].xy, CONST[0].xxxx, TEMP[1].xyyy, CONST[0].yyyy 12: MAD TEMP[4].xy, CONST[0].xxxx, TEMP[3].xyyy, TEMP[4].xyyy 13: ADD TEMP[4].xy, TEMP[4].xyyy, CONST[0].yyyy 14: MAD TEMP[2].xy, TEMP[4].xyyy, CONST[0].wwww, TEMP[2].xyyy 15: MUL TEMP[1].x, TEMP[1].xxxx, TEMP[3].xxxx 16: MAD TEMP[0].xy, TEMP[4].xyyy, CONST[1].zzzz, IN[2].xyyy 17: TEX TEMP[2].xyz, TEMP[2].xyyy, SAMP[1], 2D 18: TEX TEMP[3], TEMP[0].xyyy, SAMP[0], 2D 19: MUL TEMP[4].x, TEMP[1].xxxx, TEMP[1].xxxx 20: MUL TEMP[1].x, TEMP[1].xxxx, TEMP[4].xxxx 21: ADD TEMP[4].xyz, IMM[0].xxxx, -TEMP[3].wwww 22: MUL TEMP[2].xyz, TEMP[2].xyzz, TEMP[4].xyzz 23: MAD TEMP[2].xyz, TEMP[3].xyzz, TEMP[3].wwww, TEMP[2].xyzz 24: MUL TEMP[1].x, TEMP[1].xxxx, CONST[0].zzzz 25: MOV_SAT TEMP[1].x, TEMP[1].xxxx 26: MAD TEMP[0].xyz, TEMP[2].xyzz, CONST[5].xyzz, TEMP[1].xxxx 27: MOV TEMP[0].w, CONST[1].wwww 28: MOV TEMP[1].w, TEMP[0] 29: ADD TEMP[2].x, CONST[7].zzzz, -IN[0].xxxx 30: ADD TEMP[3].x, CONST[7].zzzz, -CONST[7].yyyy 31: RCP TEMP[3].x, TEMP[3].xxxx 32: MUL_SAT TEMP[2].x, TEMP[2].xxxx, TEMP[3].xxxx 33: ADD TEMP[3].x, IMM[0].xxxx, -TEMP[2].xxxx 34: MUL TEMP[3].xyz, CONST[6].xyzz, TEMP[3].xxxx 35: MAD TEMP[1].xyz, TEMP[0].xyzz, TEMP[2].xxxx, TEMP[3].xyzz 36: MOV_SAT OUT[0], TEMP[1] 37: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0].xy, input[3].xyyy, 2D[2]; 1: MAD temp[1].x, temp[0].xxxx, const[8].yyyy, const[8].zzzz; 2: MAD temp[0].x, temp[0].yyyy, const[8].yyyy, const[8].zzzz; 3: MOV temp[1].y, temp[0].xxxx; 4: TEX temp[2].xy, input[4].xyyy, 2D[2]; 5: MAD temp[3].x, temp[2].xxxx, const[8].yyyy, const[8].zzzz; 6: MAD temp[2].x, temp[2].yyyy, const[8].yyyy, const[8].zzzz; 7: MOV temp[3].y, temp[2].xxxx; 8: RCP temp[2].x, input[1].wwww; 9: MUL temp[2].xy, temp[2].xxxx, input[1].xyyy; 10: MAD temp[2].xy, temp[2].xyyy, const[1].xyyy, const[1].xxxx; 11: MAD temp[4].xy, const[0].xxxx, temp[1].xyyy, const[0].yyyy; 12: MAD temp[4].xy, const[0].xxxx, temp[3].xyyy, temp[4].xyyy; 13: ADD temp[4].xy, temp[4].xyyy, const[0].yyyy; 14: MAD temp[2].xy, temp[4].xyyy, const[0].wwww, temp[2].xyyy; 15: MUL temp[1].x, temp[1].xxxx, temp[3].xxxx; 16: MAD temp[0].xy, temp[4].xyyy, const[1].zzzz, input[2].xyyy; 17: TEX temp[2].xyz, temp[2].xyyy, 2D[1]; 18: TEX temp[3], temp[0].xyyy, 2D[0]; 19: MUL temp[4].x, temp[1].xxxx, temp[1].xxxx; 20: MUL temp[1].x, temp[1].xxxx, temp[4].xxxx; 21: ADD temp[4].xyz, const[8].xxxx, -temp[3].wwww; 22: MUL temp[2].xyz, temp[2].xyzz, temp[4].xyzz; 23: MAD temp[2].xyz, temp[3].xyzz, temp[3].wwww, temp[2].xyzz; 24: MUL temp[1].x, temp[1].xxxx, const[0].zzzz; 25: MOV_SAT temp[1].x, temp[1].xxxx; 26: MAD temp[0].xyz, temp[2].xyzz, const[5].xyzz, temp[1].xxxx; 27: MOV temp[0].w, const[1].wwww; 28: MOV temp[1].w, temp[0]; 29: ADD temp[2].x, const[7].zzzz, -input[0].xxxx; 30: ADD temp[3].x, const[7].zzzz, -const[7].yyyy; 31: RCP temp[3].x, temp[3].xxxx; 32: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 33: ADD temp[3].x, const[8].xxxx, -temp[2].xxxx; 34: MUL temp[3].xyz, const[6].xyzz, temp[3].xxxx; 35: MAD temp[1].xyz, temp[0].xyzz, temp[2].xxxx, temp[3].xyzz; 36: MOV_SAT output[0], temp[1]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0].xy, input[3].xyyy, 2D[2]; 1: MAD temp[1].x, temp[0].xxxx, const[8].yyyy, const[8].zzzz; 2: MAD temp[0].x, temp[0].yyyy, const[8].yyyy, const[8].zzzz; 3: MOV temp[1].y, temp[0].xxxx; 4: TEX temp[2].xy, input[4].xyyy, 2D[2]; 5: MAD temp[3].x, temp[2].xxxx, const[8].yyyy, const[8].zzzz; 6: MAD temp[2].x, temp[2].yyyy, const[8].yyyy, const[8].zzzz; 7: MOV temp[3].y, temp[2].xxxx; 8: RCP temp[2].x, input[1].wwww; 9: MUL temp[2].xy, temp[2].xxxx, input[1].xyyy; 10: MAD temp[2].xy, temp[2].xyyy, const[1].xyyy, const[1].xxxx; 11: MAD temp[4].xy, const[0].xxxx, temp[1].xyyy, const[0].yyyy; 12: MAD temp[4].xy, const[0].xxxx, temp[3].xyyy, temp[4].xyyy; 13: ADD temp[4].xy, temp[4].xyyy, const[0].yyyy; 14: MAD temp[2].xy, temp[4].xyyy, const[0].wwww, temp[2].xyyy; 15: MUL temp[1].x, temp[1].xxxx, temp[3].xxxx; 16: MAD temp[0].xy, temp[4].xyyy, const[1].zzzz, input[2].xyyy; 17: TEX temp[2].xyz, temp[2].xyyy, 2D[1]; 18: TEX temp[3], temp[0].xyyy, 2D[0]; 19: MUL temp[4].x, temp[1].xxxx, temp[1].xxxx; 20: MUL temp[1].x, temp[1].xxxx, temp[4].xxxx; 21: ADD temp[4].xyz, const[8].xxxx, -temp[3].wwww; 22: MUL temp[2].xyz, temp[2].xyzz, temp[4].xyzz; 23: MAD temp[2].xyz, temp[3].xyzz, temp[3].wwww, temp[2].xyzz; 24: MUL temp[1].x, temp[1].xxxx, const[0].zzzz; 25: MOV_SAT temp[1].x, temp[1].xxxx; 26: MAD temp[0].xyz, temp[2].xyzz, const[5].xyzz, temp[1].xxxx; 27: MOV temp[0].w, const[1].wwww; 28: MOV temp[1].w, temp[0]; 29: ADD temp[2].x, const[7].zzzz, -input[0].xxxx; 30: ADD temp[3].x, const[7].zzzz, -const[7].yyyy; 31: RCP temp[3].x, temp[3].xxxx; 32: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 33: ADD temp[3].x, const[8].xxxx, -temp[2].xxxx; 34: MUL temp[3].xyz, const[6].xyzz, temp[3].xxxx; 35: MAD temp[1].xyz, temp[0].xyzz, temp[2].xxxx, temp[3].xyzz; 36: MOV_SAT output[0], temp[1]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0].xy, input[3].xyyy, 2D[2]; 1: MAD temp[1].x, temp[0].xxxx, const[8].yyyy, const[8].zzzz; 2: MAD temp[0].x, temp[0].yyyy, const[8].yyyy, const[8].zzzz; 3: MOV temp[1].y, temp[0].xxxx; 4: TEX temp[2].xy, input[4].xyyy, 2D[2]; 5: MAD temp[3].x, temp[2].xxxx, const[8].yyyy, const[8].zzzz; 6: MAD temp[2].x, temp[2].yyyy, const[8].yyyy, const[8].zzzz; 7: MOV temp[3].y, temp[2].xxxx; 8: RCP temp[2].x, input[1].wwww; 9: MUL temp[2].xy, temp[2].xxxx, input[1].xyyy; 10: MAD temp[2].xy, temp[2].xyyy, const[1].xyyy, const[1].xxxx; 11: MAD temp[4].xy, const[0].xxxx, temp[1].xyyy, const[0].yyyy; 12: MAD temp[4].xy, const[0].xxxx, temp[3].xyyy, temp[4].xyyy; 13: ADD temp[4].xy, temp[4].xyyy, const[0].yyyy; 14: MAD temp[2].xy, temp[4].xyyy, const[0].wwww, temp[2].xyyy; 15: MUL temp[1].x, temp[1].xxxx, temp[3].xxxx; 16: MAD temp[0].xy, temp[4].xyyy, const[1].zzzz, input[2].xyyy; 17: TEX temp[2].xyz, temp[2].xyyy, 2D[1]; 18: TEX temp[3], temp[0].xyyy, 2D[0]; 19: MUL temp[4].x, temp[1].xxxx, temp[1].xxxx; 20: MUL temp[1].x, temp[1].xxxx, temp[4].xxxx; 21: ADD temp[4].xyz, const[8].xxxx, -temp[3].wwww; 22: MUL temp[2].xyz, temp[2].xyzz, temp[4].xyzz; 23: MAD temp[2].xyz, temp[3].xyzz, temp[3].wwww, temp[2].xyzz; 24: MUL temp[1].x, temp[1].xxxx, const[0].zzzz; 25: MOV_SAT temp[1].x, temp[1].xxxx; 26: MAD temp[0].xyz, temp[2].xyzz, const[5].xyzz, temp[1].xxxx; 27: MOV temp[0].w, const[1].wwww; 28: MOV temp[1].w, temp[0]; 29: ADD temp[2].x, const[7].zzzz, -input[0].xxxx; 30: ADD temp[3].x, const[7].zzzz, -const[7].yyyy; 31: RCP temp[3].x, temp[3].xxxx; 32: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 33: ADD temp[3].x, const[8].xxxx, -temp[2].xxxx; 34: MUL temp[3].xyz, const[6].xyzz, temp[3].xxxx; 35: MAD temp[1].xyz, temp[0].xyzz, temp[2].xxxx, temp[3].xyzz; 36: MOV_SAT output[0], temp[1]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0].xy, input[3].xyyy, 2D[2]; 1: MAD temp[1].x, temp[0].xxxx, const[8].yyyy, const[8].zzzz; 2: MAD temp[0].x, temp[0].yyyy, const[8].yyyy, const[8].zzzz; 3: MOV temp[1].y, temp[0].xxxx; 4: TEX temp[2].xy, input[4].xyyy, 2D[2]; 5: MAD temp[3].x, temp[2].xxxx, const[8].yyyy, const[8].zzzz; 6: MAD temp[2].x, temp[2].yyyy, const[8].yyyy, const[8].zzzz; 7: MOV temp[3].y, temp[2].xxxx; 8: RCP temp[2].x, input[1].wwww; 9: MUL temp[2].xy, temp[2].xxxx, input[1].xyyy; 10: MAD temp[2].xy, temp[2].xyyy, const[1].xyyy, const[1].xxxx; 11: MAD temp[4].xy, const[0].xxxx, temp[1].xyyy, const[0].yyyy; 12: MAD temp[4].xy, const[0].xxxx, temp[3].xyyy, temp[4].xyyy; 13: ADD temp[4].xy, temp[4].xyyy, const[0].yyyy; 14: MAD temp[2].xy, temp[4].xyyy, const[0].wwww, temp[2].xyyy; 15: MUL temp[1].x, temp[1].xxxx, temp[3].xxxx; 16: MAD temp[0].xy, temp[4].xyyy, const[1].zzzz, input[2].xyyy; 17: TEX temp[2].xyz, temp[2].xyyy, 2D[1]; 18: TEX temp[3], temp[0].xyyy, 2D[0]; 19: MUL temp[4].x, temp[1].xxxx, temp[1].xxxx; 20: MUL temp[1].x, temp[1].xxxx, temp[4].xxxx; 21: ADD temp[4].xyz, const[8].xxxx, -temp[3].wwww; 22: MUL temp[2].xyz, temp[2].xyzz, temp[4].xyzz; 23: MAD temp[2].xyz, temp[3].xyzz, temp[3].wwww, temp[2].xyzz; 24: MUL temp[1].x, temp[1].xxxx, const[0].zzzz; 25: MOV_SAT temp[1].x, temp[1].xxxx; 26: MAD temp[0].xyz, temp[2].xyzz, const[5].xyzz, temp[1].xxxx; 27: MOV temp[0].w, const[1].wwww; 28: MOV temp[1].w, temp[0]; 29: ADD temp[2].x, const[7].zzzz, -input[0].xxxx; 30: ADD temp[3].x, const[7].zzzz, -const[7].yyyy; 31: RCP temp[3].x, temp[3].xxxx; 32: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 33: ADD temp[3].x, const[8].xxxx, -temp[2].xxxx; 34: MUL temp[3].xyz, const[6].xyzz, temp[3].xxxx; 35: MAD temp[1].xyz, temp[0].xyzz, temp[2].xxxx, temp[3].xyzz; 36: MOV_SAT output[0], temp[1]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0].xy, input[3].xyyy, 2D[2]; 1: MAD temp[1].x, temp[0].xxxx, const[8].yyyy, const[8].zzzz; 2: MAD temp[0].x, temp[0].yyyy, const[8].yyyy, const[8].zzzz; 3: MOV temp[1].y, temp[0].xxxx; 4: TEX temp[2].xy, input[4].xyyy, 2D[2]; 5: MAD temp[3].x, temp[2].xxxx, const[8].yyyy, const[8].zzzz; 6: MAD temp[2].x, temp[2].yyyy, const[8].yyyy, const[8].zzzz; 7: MOV temp[3].y, temp[2].xxxx; 8: RCP temp[2].x, input[1].wwww; 9: MUL temp[2].xy, temp[2].xxxx, input[1].xyyy; 10: MAD temp[2].xy, temp[2].xyyy, const[1].xyyy, const[1].xxxx; 11: MAD temp[4].xy, const[0].xxxx, temp[1].xyyy, const[0].yyyy; 12: MAD temp[4].xy, const[0].xxxx, temp[3].xyyy, temp[4].xyyy; 13: ADD temp[4].xy, temp[4].xyyy, const[0].yyyy; 14: MAD temp[2].xy, temp[4].xyyy, const[0].wwww, temp[2].xyyy; 15: MUL temp[1].x, temp[1].xxxx, temp[3].xxxx; 16: MAD temp[0].xy, temp[4].xyyy, const[1].zzzz, input[2].xyyy; 17: TEX temp[2].xyz, temp[2].xyyy, 2D[1]; 18: TEX temp[3], temp[0].xyyy, 2D[0]; 19: MUL temp[4].x, temp[1].xxxx, temp[1].xxxx; 20: MUL temp[1].x, temp[1].xxxx, temp[4].xxxx; 21: ADD temp[4].xyz, const[8].xxxx, -temp[3].wwww; 22: MUL temp[2].xyz, temp[2].xyzz, temp[4].xyzz; 23: MAD temp[2].xyz, temp[3].xyzz, temp[3].wwww, temp[2].xyzz; 24: MUL temp[1].x, temp[1].xxxx, const[0].zzzz; 25: MOV_SAT temp[1].x, temp[1].xxxx; 26: MAD temp[0].xyz, temp[2].xyzz, const[5].xyzz, temp[1].xxxx; 27: MOV temp[0].w, const[1].wwww; 28: MOV temp[1].w, temp[0]; 29: ADD temp[2].x, const[7].zzzz, -input[0].xxxx; 30: ADD temp[3].x, const[7].zzzz, -const[7].yyyy; 31: RCP temp[3].x, temp[3].xxxx; 32: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 33: ADD temp[3].x, const[8].xxxx, -temp[2].xxxx; 34: MUL temp[3].xyz, const[6].xyzz, temp[3].xxxx; 35: MAD temp[1].xyz, temp[0].xyzz, temp[2].xxxx, temp[3].xyzz; 36: MOV_SAT output[0], temp[1]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: TEX temp[0].xy, input[3].xyyy, 2D[2]; 1: MAD temp[1].x, temp[0].xxxx, const[8].yyyy, const[8].zzzz; 2: MAD temp[0].x, temp[0].yyyy, const[8].yyyy, const[8].zzzz; 3: MOV temp[1].y, temp[0].xxxx; 4: TEX temp[2].xy, input[4].xyyy, 2D[2]; 5: MAD temp[3].x, temp[2].xxxx, const[8].yyyy, const[8].zzzz; 6: MAD temp[2].x, temp[2].yyyy, const[8].yyyy, const[8].zzzz; 7: MOV temp[3].y, temp[2].xxxx; 8: RCP temp[2].x, input[1].wwww; 9: MUL temp[2].xy, temp[2].xxxx, input[1].xyyy; 10: MAD temp[2].xy, temp[2].xyyy, const[1].xyyy, const[1].xxxx; 11: MAD temp[4].xy, const[0].xxxx, temp[1].xyyy, const[0].yyyy; 12: MAD temp[4].xy, const[0].xxxx, temp[3].xyyy, temp[4].xyyy; 13: ADD temp[4].xy, temp[4].xyyy, const[0].yyyy; 14: MAD temp[2].xy, temp[4].xyyy, const[0].wwww, temp[2].xyyy; 15: MUL temp[1].x, temp[1].xxxx, temp[3].xxxx; 16: MAD temp[0].xy, temp[4].xyyy, const[1].zzzz, input[2].xyyy; 17: TEX temp[2].xyz, temp[2].xyyy, 2D[1]; 18: TEX temp[3], temp[0].xyyy, 2D[0]; 19: MUL temp[4].x, temp[1].xxxx, temp[1].xxxx; 20: MUL temp[1].x, temp[1].xxxx, temp[4].xxxx; 21: ADD temp[4].xyz, const[8].xxxx, -temp[3].wwww; 22: MUL temp[2].xyz, temp[2].xyzz, temp[4].xyzz; 23: MAD temp[2].xyz, temp[3].xyzz, temp[3].wwww, temp[2].xyzz; 24: MUL temp[1].x, temp[1].xxxx, const[0].zzzz; 25: MOV_SAT temp[1].x, temp[1].xxxx; 26: MAD temp[0].xyz, temp[2].xyzz, const[5].xyzz, temp[1].xxxx; 27: MOV temp[0].w, const[1].wwww; 28: MOV temp[1].w, temp[0]; 29: ADD temp[2].x, const[7].zzzz, -input[0].xxxx; 30: ADD temp[3].x, const[7].zzzz, -const[7].yyyy; 31: RCP temp[3].x, temp[3].xxxx; 32: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 33: ADD temp[3].x, const[8].xxxx, -temp[2].xxxx; 34: MUL temp[3].xyz, const[6].xyzz, temp[3].xxxx; 35: MAD temp[1].xyz, temp[0].xyzz, temp[2].xxxx, temp[3].xyzz; 36: MOV_SAT output[0], temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0].xy, input[3].xyyy, 2D[2]; 1: MAD temp[1].x, temp[0].xxxx, const[8].yyyy, const[8].zzzz; 2: MAD temp[0].x, temp[0].yyyy, const[8].yyyy, const[8].zzzz; 3: MOV temp[1].y, temp[0].xxxx; 4: TEX temp[2].xy, input[4].xyyy, 2D[2]; 5: MAD temp[3].x, temp[2].xxxx, const[8].yyyy, const[8].zzzz; 6: MAD temp[2].x, temp[2].yyyy, const[8].yyyy, const[8].zzzz; 7: MOV temp[3].y, temp[2].xxxx; 8: RCP temp[2].x, input[1].wwww; 9: MUL temp[2].xy, temp[2].xxxx, input[1].xyyy; 10: MAD temp[2].xy, temp[2].xyyy, const[1].xyyy, const[1].xxxx; 11: MAD temp[4].xy, const[0].xxxx, temp[1].xyyy, const[0].yyyy; 12: MAD temp[4].xy, const[0].xxxx, temp[3].xyyy, temp[4].xyyy; 13: ADD temp[4].xy, temp[4].xyyy, const[0].yyyy; 14: MAD temp[2].xy, temp[4].xyyy, const[0].wwww, temp[2].xyyy; 15: MUL temp[1].x, temp[1].xxxx, temp[3].xxxx; 16: MAD temp[0].xy, temp[4].xyyy, const[1].zzzz, input[2].xyyy; 17: TEX temp[2].xyz, temp[2].xyyy, 2D[1]; 18: TEX temp[3], temp[0].xyyy, 2D[0]; 19: MUL temp[4].x, temp[1].xxxx, temp[1].xxxx; 20: MUL temp[1].x, temp[1].xxxx, temp[4].xxxx; 21: ADD temp[4].xyz, const[8].xxxx, -temp[3].wwww; 22: MUL temp[2].xyz, temp[2].xyzz, temp[4].xyzz; 23: MAD temp[2].xyz, temp[3].xyzz, temp[3].wwww, temp[2].xyzz; 24: MUL temp[1].x, temp[1].xxxx, const[0].zzzz; 25: MOV_SAT temp[1].x, temp[1].xxxx; 26: MAD temp[0].xyz, temp[2].xyzz, const[5].xyzz, temp[1].xxxx; 27: MOV temp[0].w, const[1].wwww; 28: MOV temp[1].w, temp[0]; 29: ADD temp[2].x, const[7].zzzz, -input[0].xxxx; 30: ADD temp[3].x, const[7].zzzz, -const[7].yyyy; 31: RCP temp[3].x, temp[3].xxxx; 32: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 33: ADD temp[3].x, const[8].xxxx, -temp[2].xxxx; 34: MUL temp[3].xyz, const[6].xyzz, temp[3].xxxx; 35: MAD temp[1].xyz, temp[0].xyzz, temp[2].xxxx, temp[3].xyzz; 36: MOV_SAT output[0], temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0].xy, input[3].xy__, 2D[2]; 1: MAD temp[1].x, temp[0].x___, const[8].y___, const[8].z___; 2: MAD temp[0].x, temp[0].y___, const[8].y___, const[8].z___; 3: MOV temp[1].y, temp[0]._x__; 4: TEX temp[2].xy, input[4].xy__, 2D[2]; 5: MAD temp[3].x, temp[2].x___, const[8].y___, const[8].z___; 6: MAD temp[2].x, temp[2].y___, const[8].y___, const[8].z___; 7: MOV temp[3].y, temp[2]._x__; 8: RCP temp[2].x, input[1].w___; 9: MUL temp[2].xy, temp[2].xx__, input[1].xy__; 10: MAD temp[2].xy, temp[2].xy__, const[1].xy__, const[1].xx__; 11: MAD temp[4].xy, const[0].xx__, temp[1].xy__, const[0].yy__; 12: MAD temp[4].xy, const[0].xx__, temp[3].xy__, temp[4].xy__; 13: ADD temp[4].xy, temp[4].xy__, const[0].yy__; 14: MAD temp[2].xy, temp[4].xy__, const[0].ww__, temp[2].xy__; 15: MUL temp[1].x, temp[1].x___, temp[3].x___; 16: MAD temp[0].xy, temp[4].xy__, const[1].zz__, input[2].xy__; 17: TEX temp[2].xyz, temp[2].xy__, 2D[1]; 18: TEX temp[3], temp[0].xy__, 2D[0]; 19: MUL temp[4].x, temp[1].x___, temp[1].x___; 20: MUL temp[1].x, temp[1].x___, temp[4].x___; 21: ADD temp[4].xyz, const[8].xxx_, -temp[3].www_; 22: MUL temp[2].xyz, temp[2].xyz_, temp[4].xyz_; 23: MAD temp[2].xyz, temp[3].xyz_, temp[3].www_, temp[2].xyz_; 24: MUL temp[1].x, temp[1].x___, const[0].z___; 25: MOV_SAT temp[1].x, temp[1].x___; 26: MAD temp[0].xyz, temp[2].xyz_, const[5].xyz_, temp[1].xxx_; 27: MOV temp[0].w, const[1].___w; 28: MOV temp[1].w, temp[0].___w; 29: ADD temp[2].x, const[7].z___, -input[0].x___; 30: ADD temp[3].x, const[7].z___, -const[7].y___; 31: RCP temp[3].x, temp[3].x___; 32: MUL_SAT temp[2].x, temp[2].x___, temp[3].x___; 33: ADD temp[3].x, const[8].x___, -temp[2].x___; 34: MUL temp[3].xyz, const[6].xyz_, temp[3].xxx_; 35: MAD temp[1].xyz, temp[0].xyz_, temp[2].xxx_, temp[3].xyz_; 36: MOV_SAT output[0], temp[1]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[5].xy, input[3].xy__, 2D[2]; 1: MAD temp[6].x, temp[5].x___, const[8].y___, const[8].z___; 2: MAD temp[7].x, temp[5].y___, const[8].y___, const[8].z___; 3: MOV temp[6].y, temp[7]._x__; 4: TEX temp[8].xy, input[4].xy__, 2D[2]; 5: MAD temp[9].x, temp[8].x___, const[8].y___, const[8].z___; 6: MAD temp[10].x, temp[8].y___, const[8].y___, const[8].z___; 7: MOV temp[9].y, temp[10]._x__; 8: RCP temp[11].x, input[1].w___; 9: MUL temp[12].xy, temp[11].xx__, input[1].xy__; 10: MAD temp[13].xy, temp[12].xy__, const[1].xy__, const[1].xx__; 11: MAD temp[14].xy, const[0].xx__, temp[6].xy__, const[0].yy__; 12: MAD temp[15].xy, const[0].xx__, temp[9].xy__, temp[14].xy__; 13: ADD temp[16].xy, temp[15].xy__, const[0].yy__; 14: MAD temp[17].xy, temp[16].xy__, const[0].ww__, temp[13].xy__; 15: MUL temp[18].x, temp[6].x___, temp[9].x___; 16: MAD temp[19].xy, temp[16].xy__, const[1].zz__, input[2].xy__; 17: TEX temp[20].xyz, temp[17].xy__, 2D[1]; 18: TEX temp[21], temp[19].xy__, 2D[0]; 19: MUL temp[22].x, temp[18].x___, temp[18].x___; 20: MUL temp[23].x, temp[18].x___, temp[22].x___; 21: ADD temp[24].xyz, const[8].xxx_, -temp[21].www_; 22: MUL temp[25].xyz, temp[20].xyz_, temp[24].xyz_; 23: MAD temp[26].xyz, temp[21].xyz_, temp[21].www_, temp[25].xyz_; 24: MUL temp[27].x, temp[23].x___, const[0].z___; 25: MOV_SAT temp[28].x, temp[27].x___; 26: MAD temp[29].xyz, temp[26].xyz_, const[5].xyz_, temp[28].xxx_; 27: MOV temp[30].w, const[1].___w; 28: MOV temp[31].w, temp[30].___w; 29: ADD temp[32].x, const[7].z___, -input[0].x___; 30: ADD temp[33].x, const[7].z___, -const[7].y___; 31: RCP temp[34].x, temp[33].x___; 32: MUL_SAT temp[35].x, temp[32].x___, temp[34].x___; 33: ADD temp[36].x, const[8].x___, -temp[35].x___; 34: MUL temp[37].xyz, const[6].xyz_, temp[36].xxx_; 35: MAD temp[31].xyz, temp[29].xyz_, temp[35].xxx_, temp[37].xyz_; 36: MOV_SAT output[0], temp[31]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[5].xy, input[3].xy__, 2D[2]; 1: MAD temp[6].x, temp[5].x___, const[8].y___, none.-1___; 2: MAD temp[7].x, temp[5].y___, const[8].y___, none.-1___; 3: MOV temp[6].y, temp[7]._x__; 4: TEX temp[8].xy, input[4].xy__, 2D[2]; 5: MAD temp[9].x, temp[8].x___, const[8].y___, none.-1___; 6: MAD temp[10].x, temp[8].y___, const[8].y___, none.-1___; 7: MOV temp[9].y, temp[10]._x__; 8: RCP temp[11].x, input[1].w___; 9: MUL temp[12].xy, temp[11].xx__, input[1].xy__; 10: MAD temp[13].xy, temp[12].xy__, const[1].xy__, const[1].xx__; 11: MAD temp[14].xy, const[0].xx__, temp[6].xy__, const[0].yy__; 12: MAD temp[15].xy, const[0].xx__, temp[9].xy__, temp[14].xy__; 13: ADD temp[16].xy, temp[15].xy__, const[0].yy__; 14: MAD temp[17].xy, temp[16].xy__, const[0].ww__, temp[13].xy__; 15: MUL temp[18].x, temp[6].x___, temp[9].x___; 16: MAD temp[19].xy, temp[16].xy__, const[1].zz__, input[2].xy__; 17: TEX temp[20].xyz, temp[17].xy__, 2D[1]; 18: TEX temp[21], temp[19].xy__, 2D[0]; 19: MUL temp[22].x, temp[18].x___, temp[18].x___; 20: MUL temp[23].x, temp[18].x___, temp[22].x___; 21: MUL temp[25].xyz, temp[20].xyz_, (1 - temp[21]).www_; 22: MAD temp[26].xyz, temp[21].xyz_, temp[21].www_, temp[25].xyz_; 23: MUL temp[27].x, temp[23].x___, const[0].z___; 24: MOV_SAT temp[28].x, temp[27].x___; 25: MAD temp[29].xyz, temp[26].xyz_, const[5].xyz_, temp[28].xxx_; 26: MOV temp[31].w, const[1].___w; 27: ADD temp[32].x, const[7].z___, -input[0].x___; 28: ADD temp[33].x, const[7].z___, -const[7].y___; 29: RCP temp[34].x, temp[33].x___; 30: MUL_SAT temp[35].x, temp[32].x___, temp[34].x___; 31: MUL temp[37].xyz, const[6].xyz_, (1 - temp[35]).xxx_; 32: MAD temp[31].xyz, temp[29].xyz_, temp[35].xxx_, temp[37].xyz_; 33: MOV_SAT output[0], temp[31]; Fragment Program: after 'inline literals' # Radeon Compiler Program 0: TEX temp[5].xy, input[3].xy__, 2D[2]; 1: MAD temp[6].x, temp[5].x___, 2.000000 (0x40).w___, none.-1___; 2: MAD temp[7].x, temp[5].y___, 2.000000 (0x40).w___, none.-1___; 3: MOV temp[6].y, temp[7]._x__; 4: TEX temp[8].xy, input[4].xy__, 2D[2]; 5: MAD temp[9].x, temp[8].x___, 2.000000 (0x40).w___, none.-1___; 6: MAD temp[10].x, temp[8].y___, 2.000000 (0x40).w___, none.-1___; 7: MOV temp[9].y, temp[10]._x__; 8: RCP temp[11].x, input[1].w___; 9: MUL temp[12].xy, temp[11].xx__, input[1].xy__; 10: MAD temp[13].xy, temp[12].xy__, const[1].xy__, const[1].xx__; 11: MAD temp[14].xy, const[0].xx__, temp[6].xy__, const[0].yy__; 12: MAD temp[15].xy, const[0].xx__, temp[9].xy__, temp[14].xy__; 13: ADD temp[16].xy, temp[15].xy__, const[0].yy__; 14: MAD temp[17].xy, temp[16].xy__, const[0].ww__, temp[13].xy__; 15: MUL temp[18].x, temp[6].x___, temp[9].x___; 16: MAD temp[19].xy, temp[16].xy__, const[1].zz__, input[2].xy__; 17: TEX temp[20].xyz, temp[17].xy__, 2D[1]; 18: TEX temp[21], temp[19].xy__, 2D[0]; 19: MUL temp[22].x, temp[18].x___, temp[18].x___; 20: MUL temp[23].x, temp[18].x___, temp[22].x___; 21: MUL temp[25].xyz, temp[20].xyz_, (1 - temp[21]).www_; 22: MAD temp[26].xyz, temp[21].xyz_, temp[21].www_, temp[25].xyz_; 23: MUL temp[27].x, temp[23].x___, const[0].z___; 24: MOV_SAT temp[28].x, temp[27].x___; 25: MAD temp[29].xyz, temp[26].xyz_, const[5].xyz_, temp[28].xxx_; 26: MOV temp[31].w, const[1].___w; 27: ADD temp[32].x, const[7].z___, -input[0].x___; 28: ADD temp[33].x, const[7].z___, -const[7].y___; 29: RCP temp[34].x, temp[33].x___; 30: MUL_SAT temp[35].x, temp[32].x___, temp[34].x___; 31: MUL temp[37].xyz, const[6].xyz_, (1 - temp[35]).xxx_; 32: MAD temp[31].xyz, temp[29].xyz_, temp[35].xxx_, temp[37].xyz_; 33: MOV_SAT output[0], temp[31]; CONST[8] = { 1.0000 2.0000 -1.0000 0.0000 } Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[5].xy, input[3].xy__, 2D[2]; 1: MAD temp[6].x, temp[5].x___, 2.000000 (0x40).w___, none.-1___; 2: MAD temp[7].x, temp[5].y___, 2.000000 (0x40).w___, none.-1___; 3: MOV temp[6].y, temp[7]._x__; 4: TEX temp[8].xy, input[4].xy__, 2D[2]; 5: MAD temp[9].x, temp[8].x___, 2.000000 (0x40).w___, none.-1___; 6: MAD temp[10].x, temp[8].y___, 2.000000 (0x40).w___, none.-1___; 7: MOV temp[9].y, temp[10]._x__; 8: RCP temp[11].x, input[1].w___; 9: MUL temp[12].xy, temp[11].xx__, input[1].xy__; 10: MAD temp[13].xy, temp[12].xy__, const[1].xy__, const[1].xx__; 11: MAD temp[14].xy, const[0].xx__, temp[6].xy__, const[0].yy__; 12: MAD temp[15].xy, const[0].xx__, temp[9].xy__, temp[14].xy__; 13: ADD temp[16].xy, temp[15].xy__, const[0].yy__; 14: MAD temp[17].xy, temp[16].xy__, const[0].ww__, temp[13].xy__; 15: MUL temp[18].x, temp[6].x___, temp[9].x___; 16: MAD temp[19].xy, temp[16].xy__, const[1].zz__, input[2].xy__; 17: TEX temp[20].xyz, temp[17].xy__, 2D[1]; 18: TEX temp[21], temp[19].xy__, 2D[0]; 19: MUL temp[22].x, temp[18].x___, temp[18].x___; 20: MUL temp[23].x, temp[18].x___, temp[22].x___; 21: MUL temp[25].xyz, temp[20].xyz_, (1 - temp[21]).www_; 22: MAD temp[26].xyz, temp[21].xyz_, temp[21].www_, temp[25].xyz_; 23: MUL temp[27].x, temp[23].x___, const[0].z___; 24: MOV_SAT temp[28].x, temp[27].x___; 25: MAD temp[29].xyz, temp[26].xyz_, const[5].xyz_, temp[28].xxx_; 26: MOV temp[31].w, const[1].___w; 27: ADD temp[32].x, const[7].z___, -input[0].x___; 28: ADD temp[33].x, const[7].z___, -const[7].y___; 29: RCP temp[34].x, temp[33].x___; 30: MUL_SAT temp[35].x, temp[32].x___, temp[34].x___; 31: MUL temp[37].xyz, const[6].xyz_, (1 - temp[35]).xxx_; 32: MAD temp[31].xyz, temp[29].xyz_, temp[35].xxx_, temp[37].xyz_; 33: MOV_SAT output[0], temp[31]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[5].xy, input[3].xy__, 2D[2]; 1: MAD temp[6].x, temp[5].x___, 2.000000 (0x40).w___, none.-1___; 2: MAD temp[7].x, temp[5].y___, 2.000000 (0x40).w___, none.-1___; 3: MOV temp[6].y, temp[7]._x__; 4: TEX temp[8].xy, input[4].xy__, 2D[2]; 5: MAD temp[9].x, temp[8].x___, 2.000000 (0x40).w___, none.-1___; 6: MAD temp[10].x, temp[8].y___, 2.000000 (0x40).w___, none.-1___; 7: MOV temp[9].y, temp[10]._x__; 8: RCP temp[11].x, input[1].w___; 9: MUL temp[12].xy, temp[11].xx__, input[1].xy__; 10: MAD temp[13].xy, temp[12].xy__, const[1].xy__, const[1].xx__; 11: MAD temp[14].xy, const[0].xx__, temp[6].xy__, const[0].yy__; 12: MAD temp[15].xy, const[0].xx__, temp[9].xy__, temp[14].xy__; 13: ADD temp[16].xy, temp[15].xy__, const[0].yy__; 14: MAD temp[17].xy, temp[16].xy__, const[0].ww__, temp[13].xy__; 15: MUL temp[18].x, temp[6].x___, temp[9].x___; 16: MAD temp[19].xy, temp[16].xy__, const[1].zz__, input[2].xy__; 17: TEX temp[20].xyz, temp[17].xy__, 2D[1]; 18: TEX temp[21], temp[19].xy__, 2D[0]; 19: MUL temp[22].x, temp[18].x___, temp[18].x___; 20: MUL temp[23].x, temp[18].x___, temp[22].x___; 21: MUL temp[25].xyz, temp[20].xyz_, (1 - temp[21]).www_; 22: MAD temp[26].xyz, temp[21].xyz_, temp[21].www_, temp[25].xyz_; 23: MUL temp[27].x, temp[23].x___, const[0].z___; 24: MOV_SAT temp[28].x, temp[27].x___; 25: MAD temp[29].xyz, temp[26].xyz_, const[5].xyz_, temp[28].xxx_; 26: MOV temp[31].w, const[1].___w; 27: ADD temp[32].x, const[7].z___, -input[0].x___; 28: ADD temp[33].x, const[7].z___, -const[7].y___; 29: RCP temp[34].x, temp[33].x___; 30: MUL_SAT temp[35].x, temp[32].x___, temp[34].x___; 31: MUL temp[37].xyz, const[6].xyz_, (1 - temp[35]).xxx_; 32: MAD temp[31].xyz, temp[29].xyz_, temp[35].xxx_, temp[37].xyz_; 33: MOV_SAT output[0], temp[31]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[5].xy, input[3].xy__, 2D[2]; 1: src0.xyz = temp[5], src0.w = 2.000000 (0x40) MAD temp[6].x, src0.x__, src0.w__, -src0.1__ 2: src0.xyz = temp[5], src0.w = 2.000000 (0x40) MAD temp[7].x, src0.y__, src0.w__, -src0.1__ 3: src0.xyz = temp[7] MAD temp[6].y, src0._x_, src0.111, src0.000 4: TEX temp[8].xy, input[4].xy__, 2D[2]; 5: src0.xyz = temp[8], src0.w = 2.000000 (0x40) MAD temp[9].x, src0.x__, src0.w__, -src0.1__ 6: src0.xyz = temp[8], src0.w = 2.000000 (0x40) MAD temp[10].x, src0.y__, src0.w__, -src0.1__ 7: src0.xyz = temp[10] MAD temp[9].y, src0._x_, src0.111, src0.000 8: src0.w = input[1] REPL_ALPHA temp[11].x RCP, src0.w 9: src0.xyz = temp[11], src1.xyz = input[1] MAD temp[12].xy, src0.xx_, src1.xy_, src0.000 10: src0.xyz = temp[12], src1.xyz = const[1] MAD temp[13].xy, src0.xy_, src1.xy_, src1.xx_ 11: src0.xyz = const[0], src1.xyz = temp[6] MAD temp[14].xy, src0.xx_, src1.xy_, src0.yy_ 12: src0.xyz = const[0], src1.xyz = temp[9], src2.xyz = temp[14] MAD temp[15].xy, src0.xx_, src1.xy_, src2.xy_ 13: src0.xyz = temp[15], src1.xyz = const[0] MAD temp[16].xy, src0.xy_, src0.111, src1.yy_ 14: src0.xyz = temp[16], src0.w = const[0], src1.xyz = temp[13] MAD temp[17].xy, src0.xy_, src0.ww_, src1.xy_ 15: src0.xyz = temp[6], src1.xyz = temp[9] MAD temp[18].x, src0.x__, src1.x__, src0.000 16: src0.xyz = temp[16], src1.xyz = const[1], src2.xyz = input[2] MAD temp[19].xy, src0.xy_, src1.zz_, src2.xy_ 17: TEX temp[20].xyz, temp[17].xy__, 2D[1]; 18: TEX temp[21], temp[19].xy__, 2D[0]; 19: src0.xyz = temp[18] MAD temp[22].x, src0.x__, src0.x__, src0.000 20: src0.xyz = temp[18], src1.xyz = temp[22] MAD temp[23].x, src0.x__, src1.x__, src0.000 21: src0.xyz = temp[20], src0.w = temp[21], srcp.w = (1 - src0) MAD temp[25].xyz, src0.xyz, srcp.www, src0.000 22: src0.xyz = temp[21], src0.w = temp[21], src1.xyz = temp[25] MAD temp[26].xyz, src0.xyz, src0.www, src1.xyz 23: src0.xyz = temp[23], src1.xyz = const[0] MAD temp[27].x, src0.x__, src1.z__, src0.000 24: src0.xyz = temp[27] MAD_SAT temp[28].x, src0.x__, src0.111, src0.000 25: src0.xyz = temp[26], src1.xyz = const[5], src2.xyz = temp[28] MAD temp[29].xyz, src0.xyz, src1.xyz, src2.xxx 26: src0.w = const[1] MAD temp[31].w, src0.w, src0.1, src0.0 27: src0.xyz = const[7], src1.xyz = input[0] MAD temp[32].x, src0.z__, src0.111, -src1.x__ 28: src0.xyz = const[7] MAD temp[33].x, src0.z__, src0.111, -src0.y__ 29: src0.xyz = temp[33] REPL_ALPHA temp[34].x RCP, src0.x 30: src0.xyz = temp[32], src1.xyz = temp[34] MAD_SAT temp[35].x, src0.x__, src1.x__, src0.000 31: src0.xyz = temp[35], src1.xyz = const[6], srcp.xyz = (1 - src0) MAD temp[37].xyz, src1.xyz, srcp.xxx, src0.000 32: src0.xyz = temp[29], src1.xyz = temp[35], src2.xyz = temp[37] MAD temp[31].xyz, src0.xyz, src1.xxx, src2.xyz 33: src0.xyz = temp[31], src0.w = temp[31] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: src0.xyz = const[7], src0.w = input[1] MAD temp[33].x, src0.z__, src0.111, -src0.y__ RCP temp[11].w, src0.w 1: src0.xyz = temp[11], src0.w = temp[11], src1.xyz = input[1], src2.xyz = temp[33] MAD temp[12].xy, src0.ww_, src1.xy_, src0.000 RCP temp[34].w, src2.x 2: src0.xyz = temp[12], src1.xyz = const[1] MAD temp[13].xy, src0.xy_, src1.xy_, src1.xx_ 3: src0.xyz = const[7], src0.w = const[1], src1.xyz = input[0] MAD temp[32].x, src0.z__, src0.111, -src1.x__ MAD temp[31].w, src0.w, src0.1, src0.0 4: src0.xyz = temp[32], src0.w = temp[34], src1.xyz = temp[34] MAD_SAT temp[35].x, src0.x__, src0.w__, src0.000 5: src0.xyz = temp[35], src1.xyz = const[6], srcp.xyz = (1 - src0) MAD temp[37].xyz, src1.xyz, srcp.xxx, src0.000 6: BEGIN_TEX; 7: TEX temp[5].xy, input[3].xy__, 2D[2]; 8: TEX temp[8].xy, input[4].xy__, 2D[2] SEM_WAIT SEM_ACQUIRE; 9: src0.xyz = temp[8], src0.w = 2.000000 (0x40) SEM_WAIT MAD temp[9].x, src0.x__, src0.w__, -src0.1__ MAD temp[10].w, src0.y, src0.w, -src0.1 10: src0.xyz = temp[5], src0.w = 2.000000 (0x40) MAD temp[6].x, src0.x__, src0.w__, -src0.1__ MAD temp[7].w, src0.y, src0.w, -src0.1 11: src0.xyz = temp[10], src0.w = temp[10], src1.xyz = temp[6], src2.xyz = temp[9] MAD temp[9].y, src0._w_, src0.111, src0.000 MAD temp[18].w, src1.x, src2.x, src0.0 12: src0.xyz = temp[7], src0.w = temp[7], src1.w = temp[18] MAD temp[6].y, src0._w_, src0.111, src0.000 MAD temp[22].w, src1.w, src1.w, src0.0 13: src0.xyz = const[0], src0.w = temp[18], src1.xyz = temp[6], src1.w = temp[22] MAD temp[14].xy, src0.xx_, src1.xy_, src0.yy_ MAD temp[23].w, src0.w, src1.w, src0.0 14: src0.xyz = const[0], src0.w = temp[23], src1.xyz = temp[9], src2.xyz = temp[14] MAD temp[15].xy, src0.xx_, src1.xy_, src2.xy_ MAD temp[27].w, src0.w, src0.z, src0.0 15: src0.xyz = temp[15], src0.w = temp[27], src1.xyz = const[0] MAD temp[16].xy, src0.xy_, src0.111, src1.yy_ MAD_SAT temp[28].w, src0.w, src0.1, src0.0 16: src0.xyz = temp[16], src0.w = const[0], src1.xyz = temp[13] MAD temp[17].xy, src0.xy_, src0.ww_, src1.xy_ 17: src0.xyz = temp[16], src1.xyz = const[1], src2.xyz = input[2] MAD temp[19].xy, src0.xy_, src1.zz_, src2.xy_ 18: BEGIN_TEX; 19: TEX temp[20].xyz, temp[17].xy__, 2D[1]; 20: TEX temp[21], temp[19].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 21: src0.xyz = temp[20], src0.w = temp[21], srcp.w = (1 - src0) SEM_WAIT MAD temp[25].xyz, src0.xyz, srcp.www, src0.000 22: src0.xyz = temp[21], src0.w = temp[21], src1.xyz = temp[25] MAD temp[26].xyz, src0.xyz, src0.www, src1.xyz 23: src0.xyz = temp[26], src0.w = temp[28], src1.xyz = const[5], src2.xyz = temp[28] MAD temp[29].xyz, src0.xyz, src1.xyz, src0.www 24: src0.xyz = temp[29], src1.xyz = temp[35], src2.xyz = temp[37] MAD temp[31].xyz, src0.xyz, src1.xxx, src2.xyz 25: src0.xyz = temp[31], src0.w = temp[31] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: src0.xyz = const[7], src0.w = input[1] MAD temp[33].x, src0.z__, src0.111, -src0.y__ RCP temp[11].w, src0.w 1: src0.w = temp[11], src1.xyz = input[1], src2.xyz = temp[33] MAD temp[12].xy, src0.ww_, src1.xy_, src0.000 RCP temp[34].w, src2.x 2: src0.xyz = temp[12], src1.xyz = const[1] MAD temp[13].xy, src0.xy_, src1.xy_, src1.xx_ 3: src0.xyz = const[7], src0.w = const[1], src1.xyz = input[0] MAD temp[32].x, src0.z__, src0.111, -src1.x__ MAD temp[31].w, src0.w, src0.1, src0.0 4: src0.xyz = temp[32], src0.w = temp[34] MAD_SAT temp[35].x, src0.x__, src0.w__, src0.000 5: src0.xyz = temp[35], src1.xyz = const[6], srcp.xyz = (1 - src0) MAD temp[37].xyz, src1.xyz, srcp.xxx, src0.000 6: BEGIN_TEX; 7: TEX temp[5].xy, input[3].xy__, 2D[2]; 8: TEX temp[8].xy, input[4].xy__, 2D[2] SEM_WAIT SEM_ACQUIRE; 9: src0.xyz = temp[8], src0.w = 2.000000 (0x40) SEM_WAIT MAD temp[9].x, src0.x__, src0.w__, -src0.1__ MAD temp[10].w, src0.y, src0.w, -src0.1 10: src0.xyz = temp[5], src0.w = 2.000000 (0x40) MAD temp[6].x, src0.x__, src0.w__, -src0.1__ MAD temp[7].w, src0.y, src0.w, -src0.1 11: src0.w = temp[10], src1.xyz = temp[6], src2.xyz = temp[9] MAD temp[9].y, src0._w_, src0.111, src0.000 MAD temp[18].w, src1.x, src2.x, src0.0 12: src0.w = temp[7], src1.w = temp[18] MAD temp[6].y, src0._w_, src0.111, src0.000 MAD temp[22].w, src1.w, src1.w, src0.0 13: src0.xyz = const[0], src0.w = temp[18], src1.xyz = temp[6], src1.w = temp[22] MAD temp[14].xy, src0.xx_, src1.xy_, src0.yy_ MAD temp[23].w, src0.w, src1.w, src0.0 14: src0.xyz = const[0], src0.w = temp[23], src1.xyz = temp[9], src2.xyz = temp[14] MAD temp[15].xy, src0.xx_, src1.xy_, src2.xy_ MAD temp[27].w, src0.w, src0.z, src0.0 15: src0.xyz = temp[15], src0.w = temp[27], src1.xyz = const[0] MAD temp[16].xy, src0.xy_, src0.111, src1.yy_ MAD_SAT temp[28].w, src0.w, src0.1, src0.0 16: src0.xyz = temp[16], src0.w = const[0], src1.xyz = temp[13] MAD temp[17].xy, src0.xy_, src0.ww_, src1.xy_ 17: src0.xyz = temp[16], src1.xyz = const[1], src2.xyz = input[2] MAD temp[19].xy, src0.xy_, src1.zz_, src2.xy_ 18: BEGIN_TEX; 19: TEX temp[20].xyz, temp[17].xy__, 2D[1]; 20: TEX temp[21], temp[19].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 21: src0.xyz = temp[20], src0.w = temp[21], srcp.w = (1 - src0) SEM_WAIT MAD temp[25].xyz, src0.xyz, srcp.www, src0.000 22: src0.xyz = temp[21], src0.w = temp[21], src1.xyz = temp[25] MAD temp[26].xyz, src0.xyz, src0.www, src1.xyz 23: src0.xyz = temp[26], src0.w = temp[28], src1.xyz = const[5] MAD temp[29].xyz, src0.xyz, src1.xyz, src0.www 24: src0.xyz = temp[29], src1.xyz = temp[35], src2.xyz = temp[37] MAD temp[31].xyz, src0.xyz, src1.xxx, src2.xyz 25: src0.xyz = temp[31], src0.w = temp[31] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: src0.xyz = const[7], src0.w = input[0] MAD temp[0].z, src0.__z, src0.__1, -src0.__y RCP temp[1].w, src0.w 1: src0.w = temp[1], src1.xyz = input[0], src2.xyz = temp[0] MAD temp[0].xy, src0.ww_, src1.xy_, src0.00_ RCP temp[0].w, src2.z 2: src0.xyz = temp[0], src1.xyz = const[1] MAD temp[0].xy, src0.xy_, src1.xy_, src1.xx_ 3: src0.xyz = const[7], src0.w = const[1], src1.xyz = input[4] MAD temp[0].z, src0.__z, src0.__1, -src1.__x MAD temp[1].w, src0.w, src0.1, src0.0 4: src0.xyz = temp[0], src0.w = temp[0] MAD_SAT temp[4].x, src0.z__, src0.w__, src0.0__ 5: src0.xyz = temp[4], src1.xyz = const[6], srcp.xyz = (1 - src0) MAD temp[5].xyz, src1.xyz, srcp.xxx, src0.000 6: BEGIN_TEX; 7: TEX temp[2].xy, input[2].xy__, 2D[2]; 8: TEX temp[3].xy, input[3].xy__, 2D[2] SEM_WAIT SEM_ACQUIRE; 9: src0.xyz = temp[3], src0.w = 2.000000 (0x40) SEM_WAIT MAD temp[3].x, src0.x__, src0.w__, -src0.1__ MAD temp[0].w, src0.y, src0.w, -src0.1 10: src0.xyz = temp[2], src0.w = 2.000000 (0x40) MAD temp[2].x, src0.x__, src0.w__, -src0.1__ MAD temp[2].w, src0.y, src0.w, -src0.1 11: src0.w = temp[0], src1.xyz = temp[2], src2.xyz = temp[3] MAD temp[3].y, src0._w_, src0.11_, src0.00_ MAD temp[0].w, src1.x, src2.x, src0.0 12: src0.w = temp[2], src1.w = temp[0] MAD temp[2].y, src0._w_, src0.11_, src0.00_ MAD temp[2].w, src1.w, src1.w, src0.0 13: src0.xyz = const[0], src0.w = temp[0], src1.xyz = temp[2], src1.w = temp[2] MAD temp[2].xy, src0.xx_, src1.xy_, src0.yy_ MAD temp[0].w, src0.w, src1.w, src0.0 14: src0.xyz = const[0], src0.w = temp[0], src1.xyz = temp[3], src2.xyz = temp[2] MAD temp[2].xy, src0.xx_, src1.xy_, src2.xy_ MAD temp[0].w, src0.w, src0.z, src0.0 15: src0.xyz = temp[2], src0.w = temp[0], src1.xyz = const[0] MAD temp[2].xy, src0.xy_, src0.11_, src1.yy_ MAD_SAT temp[0].w, src0.w, src0.1, src0.0 16: src0.xyz = temp[2], src0.w = const[0], src1.xyz = temp[0] MAD temp[0].xy, src0.xy_, src0.ww_, src1.xy_ 17: src0.xyz = temp[2], src1.xyz = const[1], src2.xyz = input[1] MAD temp[1].xy, src0.xy_, src1.zz_, src2.xy_ 18: BEGIN_TEX; 19: TEX temp[0].xyz, temp[0].xy__, 2D[1]; 20: TEX temp[2], temp[1].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 21: src0.xyz = temp[0], src0.w = temp[2], srcp.w = (1 - src0) SEM_WAIT MAD temp[0].xyz, src0.xyz, srcp.www, src0.000 22: src0.xyz = temp[2], src0.w = temp[2], src1.xyz = temp[0] MAD temp[0].xyz, src0.xyz, src0.www, src1.xyz 23: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[5] MAD temp[0].xyz, src0.xyz, src1.xyz, src0.www 24: src0.xyz = temp[0], src1.xyz = temp[4], src2.xyz = temp[5] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 25: src0.xyz = temp[0], src0.w = temp[1] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00006000:ALU wmask: AB omask: NONE 1:RGB_ADDR 0x08020107:Addr0: 7c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00d20290:rgb_A_src:0 0/0/B 0 rgb_B_src:0 0/0/1 0 targ: 0 4 ALPHA_INST:0x0000c01a:RCP dest:1 alp_A_src:0 A 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00990000:MAD dest:0 rgb_C_src:0 0/0/G 1 alp_C_src:0 R 0 1 0:CMN_INST 0x00005800:ALU wmask: ARG omask: NONE 1:RGB_ADDR 0x00000080:Addr0: 128t, Addr1: 0t, Addr2: 0t, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x0084246c:rgb_A_src:0 A/A/0 0 rgb_B_src:1 R/G/0 0 targ: 0 4 ALPHA_INST:0x0000a00a:RCP dest:0 alp_A_src:2 B 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 2 0:CMN_INST 0x00001800:ALU wmask: RG omask: NONE 1:RGB_ADDR 0x08040400:Addr0: 0t, Addr1: 1c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00842420:rgb_A_src:0 R/G/0 0 rgb_B_src:1 R/G/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00401000:MAD dest:0 rgb_C_src:1 R/R/0 0 alp_C_src:0 R 0 3 0:CMN_INST 0x00006000:ALU wmask: AB omask: NONE 1:RGB_ADDR 0x08001107:Addr0: 7c, Addr1: 4t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020101:Addr0: 1c, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00d20290:rgb_A_src:0 0/0/B 0 rgb_B_src:0 0/0/1 0 targ: 0 4 ALPHA_INST:0x00c0c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20891000:MAD dest:0 rgb_C_src:1 0/0/R 1 alp_C_src:0 0 0 4 0:CMN_INST 0x00080a00:ALU NOP wmask: R omask: NONE 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00918488:rgb_A_src:0 B/0/0 0 rgb_B_src:0 A/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 5 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0xc8041804:Addr0: 4t, Addr1: 6c, Addr2: 128t, srcp:3 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00006221:rgb_A_src:1 R/G/B 0 rgb_B_src:3 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490050:MAD dest:5 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 6 0:CMN_INST 0x00001803:TEX wmask: RG omask: NONE 1:TEX_INST: 0x00420000: id: 2 op:LD, , SCALED 2:TEX_ADDR: 0xe402f402: src: 2 R/G/A/A dst: 2 R/G/B/A 3:TEX_DXDY: 0x00000000 7 0:CMN_INST 0x00001807:TEX TEX_WAIT wmask: RG omask: NONE 1:TEX_INST: 0x02420000: id: 2 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe403f403: src: 3 R/G/A/A dst: 3 R/G/B/A 3:TEX_DXDY: 0x00000000 8 0:CMN_INST 0x00004804:ALU TEX_WAIT wmask: AR omask: NONE 1:RGB_ADDR 0x08020003:Addr0: 3t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x080200c0:Addr0: 192t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00918480:rgb_A_src:0 R/0/0 0 rgb_B_src:0 A/0/0 0 targ: 0 4 ALPHA_INST:0x00604000:MAD dest:0 alp_A_src:0 G 0 alp_B_src:0 A 0 targ 0 w:0 5 RGBA_INST: 0x70c98030:MAD dest:3 rgb_C_src:0 1/0/0 1 alp_C_src:0 1 1 9 0:CMN_INST 0x00004800:ALU wmask: AR omask: NONE 1:RGB_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x080200c0:Addr0: 192t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00918480:rgb_A_src:0 R/0/0 0 rgb_B_src:0 A/0/0 0 targ: 0 4 ALPHA_INST:0x00604020:MAD dest:2 alp_A_src:0 G 0 alp_B_src:0 A 0 targ 0 w:0 5 RGBA_INST: 0x70c98020:MAD dest:2 rgb_C_src:0 1/0/0 1 alp_C_src:0 1 1 10 0:CMN_INST 0x00005000:ALU wmask: AG omask: NONE 1:RGB_ADDR 0x00300880:Addr0: 128t, Addr1: 2t, Addr2: 3t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x009b0470:rgb_A_src:0 0/A/0 0 rgb_B_src:0 1/1/0 0 targ: 0 4 ALPHA_INST:0x00101000:MAD dest:0 alp_A_src:1 R 0 alp_B_src:2 R 0 targ 0 w:0 5 RGBA_INST: 0x20490030:MAD dest:3 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 11 0:CMN_INST 0x00005000:ALU wmask: AG omask: NONE 1:RGB_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08000002:Addr0: 2t, Addr1: 0t, Addr2: 128t, srcp:0 3 RGB_INST: 0x009b0470:rgb_A_src:0 0/A/0 0 rgb_B_src:0 1/1/0 0 targ: 0 4 ALPHA_INST:0x0068d020:MAD dest:2 alp_A_src:1 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 12 0:CMN_INST 0x00005800:ALU wmask: ARG omask: NONE 1:RGB_ADDR 0x08000900:Addr0: 0c, Addr1: 2t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08000800:Addr0: 0t, Addr1: 2t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00842400:rgb_A_src:0 R/R/0 0 rgb_B_src:1 R/G/0 0 targ: 0 4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20424020:MAD dest:2 rgb_C_src:0 G/G/0 0 alp_C_src:0 0 0 13 0:CMN_INST 0x00005800:ALU wmask: ARG omask: NONE 1:RGB_ADDR 0x00200d00:Addr0: 0c, Addr1: 3t, Addr2: 2t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00842400:rgb_A_src:0 R/R/0 0 rgb_B_src:1 R/G/0 0 targ: 0 4 ALPHA_INST:0x0040c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 B 0 targ 0 w:0 5 RGBA_INST: 0x20422020:MAD dest:2 rgb_C_src:2 R/G/0 0 alp_C_src:0 0 0 14 0:CMN_INST 0x00105800:ALU wmask: ARG omask: NONE 1:RGB_ADDR 0x08040002:Addr0: 2t, Addr1: 0c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x009b0420:rgb_A_src:0 R/G/0 0 rgb_B_src:0 1/1/0 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20425020:MAD dest:2 rgb_C_src:1 G/G/0 0 alp_C_src:0 0 0 15 0:CMN_INST 0x00001800:ALU wmask: RG omask: NONE 1:RGB_ADDR 0x08000002:Addr0: 2t, Addr1: 0t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x008d8420:rgb_A_src:0 R/G/0 0 rgb_B_src:0 A/A/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00421000:MAD dest:0 rgb_C_src:1 R/G/0 0 alp_C_src:0 R 0 16 0:CMN_INST 0x00001800:ALU wmask: RG omask: NONE 1:RGB_ADDR 0x00140402:Addr0: 2t, Addr1: 1c, Addr2: 1t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00892420:rgb_A_src:0 R/G/0 0 rgb_B_src:1 B/B/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00422010:MAD dest:1 rgb_C_src:2 R/G/0 0 alp_C_src:0 R 0 17 0:CMN_INST 0x00003803:TEX wmask: RGB omask: NONE 1:TEX_INST: 0x00410000: id: 1 op:LD, , SCALED 2:TEX_ADDR: 0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A 3:TEX_DXDY: 0x00000000 18 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe402f401: src: 1 R/G/A/A dst: 2 R/G/B/A 3:TEX_DXDY: 0x00000000 19 0:CMN_INST 0x00003804:ALU TEX_WAIT wmask: RGB omask: NONE 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0xc8020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:3 3 RGB_INST: 0x006de220:rgb_A_src:0 R/G/B 0 rgb_B_src:3 A/A/A 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 20 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0x08000002:Addr0: 2t, Addr1: 0t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x006d8220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 A/A/A 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00221000:MAD dest:0 rgb_C_src:1 R/G/B 0 alp_C_src:0 R 0 21 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0x08041400:Addr0: 0t, Addr1: 5c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x0036c000:MAD dest:0 rgb_C_src:0 A/A/A 0 alp_C_src:0 R 0 22 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0x00501000:Addr0: 0t, Addr1: 4t, Addr2: 5t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 23 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 r300: Initial fragment program FRAG DCL IN[0], COLOR, COLOR DCL IN[1], COLOR[1], COLOR DCL IN[2], FOG, PERSPECTIVE DCL IN[3], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL CONST[2..3] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL IMM[0] FLT32 { 1.0000, 0.0000, 0.0000, 0.0000} 0: TEX TEMP[0], IN[3].xyyy, SAMP[0], 2D 1: MOV_SAT TEMP[0], TEMP[0] 2: MUL TEMP[1], IN[1], CONST[0] 3: MAD TEMP[0], TEMP[0], IN[0], TEMP[1] 4: ADD TEMP[1].x, CONST[3].zzzz, -IN[2].xxxx 5: ADD TEMP[2].x, CONST[3].zzzz, -CONST[3].yyyy 6: RCP TEMP[2].x, TEMP[2].xxxx 7: MUL_SAT TEMP[1].x, TEMP[1].xxxx, TEMP[2].xxxx 8: ADD TEMP[2].x, IMM[0].xxxx, -TEMP[1].xxxx 9: MUL TEMP[2].xyz, CONST[2].xyzz, TEMP[2].xxxx 10: MAD TEMP[0].xyz, TEMP[0].xyzz, TEMP[1].xxxx, TEMP[2].xyzz 11: MOV_SAT OUT[0], TEMP[0] 12: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[3].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: ADD temp[1].x, const[3].zzzz, -input[2].xxxx; 5: ADD temp[2].x, const[3].zzzz, -const[3].yyyy; 6: RCP temp[2].x, temp[2].xxxx; 7: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 8: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 9: MUL temp[2].xyz, const[2].xyzz, temp[2].xxxx; 10: MAD temp[0].xyz, temp[0].xyzz, temp[1].xxxx, temp[2].xyzz; 11: MOV_SAT output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[3].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: ADD temp[1].x, const[3].zzzz, -input[2].xxxx; 5: ADD temp[2].x, const[3].zzzz, -const[3].yyyy; 6: RCP temp[2].x, temp[2].xxxx; 7: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 8: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 9: MUL temp[2].xyz, const[2].xyzz, temp[2].xxxx; 10: MAD temp[0].xyz, temp[0].xyzz, temp[1].xxxx, temp[2].xyzz; 11: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[3].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: ADD temp[1].x, const[3].zzzz, -input[2].xxxx; 5: ADD temp[2].x, const[3].zzzz, -const[3].yyyy; 6: RCP temp[2].x, temp[2].xxxx; 7: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 8: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 9: MUL temp[2].xyz, const[2].xyzz, temp[2].xxxx; 10: MAD temp[0].xyz, temp[0].xyzz, temp[1].xxxx, temp[2].xyzz; 11: MOV_SAT output[0], temp[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[3].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: ADD temp[1].x, const[3].zzzz, -input[2].xxxx; 5: ADD temp[2].x, const[3].zzzz, -const[3].yyyy; 6: RCP temp[2].x, temp[2].xxxx; 7: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 8: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 9: MUL temp[2].xyz, const[2].xyzz, temp[2].xxxx; 10: MAD temp[0].xyz, temp[0].xyzz, temp[1].xxxx, temp[2].xyzz; 11: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[3].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: ADD temp[1].x, const[3].zzzz, -input[2].xxxx; 5: ADD temp[2].x, const[3].zzzz, -const[3].yyyy; 6: RCP temp[2].x, temp[2].xxxx; 7: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 8: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 9: MUL temp[2].xyz, const[2].xyzz, temp[2].xxxx; 10: MAD temp[0].xyz, temp[0].xyzz, temp[1].xxxx, temp[2].xyzz; 11: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: TEX temp[0], input[3].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: ADD temp[1].x, const[3].zzzz, -input[2].xxxx; 5: ADD temp[2].x, const[3].zzzz, -const[3].yyyy; 6: RCP temp[2].x, temp[2].xxxx; 7: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 8: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 9: MUL temp[2].xyz, const[2].xyzz, temp[2].xxxx; 10: MAD temp[0].xyz, temp[0].xyzz, temp[1].xxxx, temp[2].xyzz; 11: MOV_SAT output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[3].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: ADD temp[1].x, const[3].zzzz, -input[2].xxxx; 5: ADD temp[2].x, const[3].zzzz, -const[3].yyyy; 6: RCP temp[2].x, temp[2].xxxx; 7: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 8: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 9: MUL temp[2].xyz, const[2].xyzz, temp[2].xxxx; 10: MAD temp[0].xyz, temp[0].xyzz, temp[1].xxxx, temp[2].xyzz; 11: MOV_SAT output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[3].xy__, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: ADD temp[1].x, const[3].z___, -input[2].x___; 5: ADD temp[2].x, const[3].z___, -const[3].y___; 6: RCP temp[2].x, temp[2].x___; 7: MUL_SAT temp[1].x, temp[1].x___, temp[2].x___; 8: ADD temp[2].x, temp[0].1___, -temp[1].x___; 9: MUL temp[2].xyz, const[2].xyz_, temp[2].xxx_; 10: MAD temp[0].xyz, temp[0].xyz_, temp[1].xxx_, temp[2].xyz_; 11: MOV_SAT output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[3], input[3].xy__, 2D[0]; 1: MOV_SAT temp[4], temp[3]; 2: MUL temp[5], input[1], const[0]; 3: MAD temp[6], temp[4], input[0], temp[5]; 4: ADD temp[7].x, const[3].z___, -input[2].x___; 5: ADD temp[8].x, const[3].z___, -const[3].y___; 6: RCP temp[9].x, temp[8].x___; 7: MUL_SAT temp[10].x, temp[7].x___, temp[9].x___; 8: ADD temp[11].x, temp[0].1___, -temp[10].x___; 9: MUL temp[12].xyz, const[2].xyz_, temp[11].xxx_; 10: MAD temp[6].xyz, temp[6].xyz_, temp[10].xxx_, temp[12].xyz_; 11: MOV_SAT output[0], temp[6]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[3], input[3].xy__, 2D[0]; 1: MOV_SAT temp[4], temp[3]; 2: MUL temp[5], input[1], const[0]; 3: MAD temp[6], temp[4], input[0], temp[5]; 4: ADD temp[7].x, const[3].z___, -input[2].x___; 5: ADD temp[8].x, const[3].z___, -const[3].y___; 6: RCP temp[9].x, temp[8].x___; 7: MUL_SAT temp[10].x, temp[7].x___, temp[9].x___; 8: MUL temp[12].xyz, const[2].xyz_, (1 - temp[10]).xxx_; 9: MAD temp[6].xyz, temp[6].xyz_, temp[10].xxx_, temp[12].xyz_; 10: MOV_SAT output[0], temp[6]; Fragment Program: after 'inline literals' # Radeon Compiler Program 0: TEX temp[3], input[3].xy__, 2D[0]; 1: MOV_SAT temp[4], temp[3]; 2: MUL temp[5], input[1], const[0]; 3: MAD temp[6], temp[4], input[0], temp[5]; 4: ADD temp[7].x, const[3].z___, -input[2].x___; 5: ADD temp[8].x, const[3].z___, -const[3].y___; 6: RCP temp[9].x, temp[8].x___; 7: MUL_SAT temp[10].x, temp[7].x___, temp[9].x___; 8: MUL temp[12].xyz, const[2].xyz_, (1 - temp[10]).xxx_; 9: MAD temp[6].xyz, temp[6].xyz_, temp[10].xxx_, temp[12].xyz_; 10: MOV_SAT output[0], temp[6]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[3], input[3].xy__, 2D[0]; 1: MOV_SAT temp[4], temp[3]; 2: MUL temp[5], input[1], const[0]; 3: MAD temp[6], temp[4], input[0], temp[5]; 4: ADD temp[7].x, const[3].z___, -input[2].x___; 5: ADD temp[8].x, const[3].z___, -const[3].y___; 6: RCP temp[9].x, temp[8].x___; 7: MUL_SAT temp[10].x, temp[7].x___, temp[9].x___; 8: MUL temp[12].xyz, const[2].xyz_, (1 - temp[10]).xxx_; 9: MAD temp[6].xyz, temp[6].xyz_, temp[10].xxx_, temp[12].xyz_; 10: MOV_SAT output[0], temp[6]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[3], input[3].xy__, 2D[0]; 1: MOV_SAT temp[4], temp[3]; 2: MUL temp[5], input[1], const[0]; 3: MAD temp[6], temp[4], input[0], temp[5]; 4: ADD temp[7].x, const[3].z___, -input[2].x___; 5: ADD temp[8].x, const[3].z___, -const[3].y___; 6: RCP temp[9].x, temp[8].x___; 7: MUL_SAT temp[10].x, temp[7].x___, temp[9].x___; 8: MUL temp[12].xyz, const[2].xyz_, (1 - temp[10]).xxx_; 9: MAD temp[6].xyz, temp[6].xyz_, temp[10].xxx_, temp[12].xyz_; 10: MOV_SAT output[0], temp[6]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[3], input[3].xy__, 2D[0]; 1: src0.xyz = temp[3], src0.w = temp[3] MAD_SAT temp[4].xyz, src0.xyz, src0.111, src0.000 MAD_SAT temp[4].w, src0.w, src0.1, src0.0 2: src0.xyz = input[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0] MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 3: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = input[0], src1.w = input[0], src2.xyz = temp[5], src2.w = temp[5] MAD temp[6].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[6].w, src0.w, src1.w, src2.w 4: src0.xyz = const[3], src1.xyz = input[2] MAD temp[7].x, src0.z__, src0.111, -src1.x__ 5: src0.xyz = const[3] MAD temp[8].x, src0.z__, src0.111, -src0.y__ 6: src0.xyz = temp[8] REPL_ALPHA temp[9].x RCP, src0.x 7: src0.xyz = temp[7], src1.xyz = temp[9] MAD_SAT temp[10].x, src0.x__, src1.x__, src0.000 8: src0.xyz = temp[10], src1.xyz = const[2], srcp.xyz = (1 - src0) MAD temp[12].xyz, src1.xyz, srcp.xxx, src0.000 9: src0.xyz = temp[6], src1.xyz = temp[10], src2.xyz = temp[12] MAD temp[6].xyz, src0.xyz, src1.xxx, src2.xyz 10: src0.xyz = temp[6], src0.w = temp[6] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[3], input[3].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[3], src1.xyz = input[2] MAD temp[8].x, src0.z__, src0.111, -src0.y__ MAD temp[7].w, src0.z, src0.1, -src1.x 3: src0.xyz = temp[8] RCP temp[9].w, src0.x 4: src0.xyz = temp[7], src0.w = temp[7], src1.xyz = temp[9], src1.w = temp[9] MAD_SAT temp[10].x, src0.w__, src1.w__, src0.000 5: src0.xyz = temp[10], src1.xyz = const[2], srcp.xyz = (1 - src0) MAD temp[12].xyz, src1.xyz, srcp.xxx, src0.000 6: src0.xyz = input[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0] MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 7: src0.xyz = temp[3], src0.w = temp[3] SEM_WAIT MAD_SAT temp[4].xyz, src0.xyz, src0.111, src0.000 MAD_SAT temp[4].w, src0.w, src0.1, src0.0 8: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = input[0], src1.w = input[0], src2.xyz = temp[5], src2.w = temp[5] MAD temp[6].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[6].w, src0.w, src1.w, src2.w 9: src0.xyz = temp[6], src1.xyz = temp[10], src2.xyz = temp[12] MAD temp[6].xyz, src0.xyz, src1.xxx, src2.xyz 10: src0.xyz = temp[6], src0.w = temp[6] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[3], input[3].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[3], src1.xyz = input[2] MAD temp[8].x, src0.z__, src0.111, -src0.y__ MAD temp[7].w, src0.z, src0.1, -src1.x 3: src0.xyz = temp[8] RCP temp[9].w, src0.x 4: src0.w = temp[7], src1.w = temp[9] MAD_SAT temp[10].x, src0.w__, src1.w__, src0.000 5: src0.xyz = temp[10], src1.xyz = const[2], srcp.xyz = (1 - src0) MAD temp[12].xyz, src1.xyz, srcp.xxx, src0.000 6: src0.xyz = input[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0] MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 7: src0.xyz = temp[3], src0.w = temp[3] SEM_WAIT MAD_SAT temp[4].xyz, src0.xyz, src0.111, src0.000 MAD_SAT temp[4].w, src0.w, src0.1, src0.0 8: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = input[0], src1.w = input[0], src2.xyz = temp[5], src2.w = temp[5] MAD temp[6].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[6].w, src0.w, src1.w, src2.w 9: src0.xyz = temp[6], src1.xyz = temp[10], src2.xyz = temp[12] MAD temp[6].xyz, src0.xyz, src1.xxx, src2.xyz 10: src0.xyz = temp[6], src0.w = temp[6] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[2], input[2].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[3], src1.xyz = input[3] MAD temp[3].x, src0.z__, src0.1__, -src0.y__ MAD temp[3].w, src0.z, src0.1, -src1.x 3: src0.xyz = temp[3] RCP temp[4].w, src0.x 4: src0.w = temp[3], src1.w = temp[4] MAD_SAT temp[3].x, src0.w__, src1.w__, src0.0__ 5: src0.xyz = temp[3], src1.xyz = const[2], srcp.xyz = (1 - src0) MAD temp[4].xyz, src1.xyz, srcp.xxx, src0.000 6: src0.xyz = input[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0] MAD temp[1].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[1].w, src0.w, src1.w, src0.0 7: src0.xyz = temp[2], src0.w = temp[2] SEM_WAIT MAD_SAT temp[2].xyz, src0.xyz, src0.111, src0.000 MAD_SAT temp[2].w, src0.w, src0.1, src0.0 8: src0.xyz = temp[2], src0.w = temp[2], src1.xyz = input[0], src1.w = input[0], src2.xyz = temp[1], src2.w = temp[1] MAD temp[0].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[0].w, src0.w, src1.w, src2.w 9: src0.xyz = temp[0], src1.xyz = temp[3], src2.xyz = temp[4] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 10: src0.xyz = temp[0], src0.w = temp[0] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe402f402: src: 2 R/G/A/A dst: 2 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00004800:ALU wmask: AR omask: NONE 1:RGB_ADDR 0x08000d03:Addr0: 3c, Addr1: 3t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930488:rgb_A_src:0 B/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0 4 ALPHA_INST:0x00c08030:MAD dest:3 alp_A_src:0 B 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x42c84030:MAD dest:3 rgb_C_src:0 G/0/0 1 alp_C_src:1 R 1 2 0:CMN_INST 0x00004000:ALU wmask: A omask: NONE 1:RGB_ADDR 0x08020003:Addr0: 3t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0 4 ALPHA_INST:0x0000004a:RCP dest:4 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 3 0:CMN_INST 0x00080a00:ALU NOP wmask: R omask: NONE 1:RGB_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08001003:Addr0: 3t, Addr1: 4t, Addr2: 128t, srcp:0 3 RGB_INST: 0x0091a48c:rgb_A_src:0 A/0/0 0 rgb_B_src:1 A/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490030:MAD dest:3 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 4 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0xc8040803:Addr0: 3t, Addr1: 2c, Addr2: 128t, srcp:3 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00006221:rgb_A_src:1 R/G/B 0 rgb_B_src:3 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 5 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08040001:Addr0: 1t, Addr1: 0c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08040001:Addr0: 1t, Addr1: 0c, Addr2: 128t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0068c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 6 0:CMN_INST 0x00187804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c020:MAD dest:2 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 7 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x00100002:Addr0: 2t, Addr1: 0t, Addr2: 1t, srcp:0 2:ALPHA_ADDR 0x00100002:Addr0: 2t, Addr1: 0t, Addr2: 1t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x1c222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:2 A 0 8 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0x00400c00:Addr0: 0t, Addr1: 3t, Addr2: 4t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 9 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 r300: Initial fragment program FRAG DCL IN[0], COLOR[1], COLOR DCL IN[1], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0..1] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL 0: MOV TEMP[0].xyz, CONST[1].xyzx 1: TEX TEMP[1], IN[1].xyyy, SAMP[0], 2D 2: MOV_SAT TEMP[1], TEMP[1] 3: MOV TEMP[0].w, TEMP[1].wwww 4: MAD TEMP[0], IN[0], CONST[0], TEMP[0] 5: MOV_SAT OUT[0], TEMP[0] 6: END Fragment Program: before compilation # Radeon Compiler Program 0: MOV temp[0].xyz, const[1].xyzx; 1: TEX temp[1], input[1].xyyy, 2D[0]; 2: MOV_SAT temp[1], temp[1]; 3: MOV temp[0].w, temp[1].wwww; 4: MAD temp[0], input[0], const[0], temp[0]; 5: MOV_SAT output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: MOV temp[0].xyz, const[1].xyzx; 1: TEX temp[1], input[1].xyyy, 2D[0]; 2: MOV_SAT temp[1], temp[1]; 3: MOV temp[0].w, temp[1].wwww; 4: MAD temp[0], input[0], const[0], temp[0]; 5: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: MOV temp[0].xyz, const[1].xyzx; 1: TEX temp[1], input[1].xyyy, 2D[0]; 2: MOV_SAT temp[1], temp[1]; 3: MOV temp[0].w, temp[1].wwww; 4: MAD temp[0], input[0], const[0], temp[0]; 5: MOV_SAT output[0], temp[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: MOV temp[0].xyz, const[1].xyzx; 1: TEX temp[1], input[1].xyyy, 2D[0]; 2: MOV_SAT temp[1], temp[1]; 3: MOV temp[0].w, temp[1].wwww; 4: MAD temp[0], input[0], const[0], temp[0]; 5: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: MOV temp[0].xyz, const[1].xyzx; 1: TEX temp[1], input[1].xyyy, 2D[0]; 2: MOV_SAT temp[1], temp[1]; 3: MOV temp[0].w, temp[1].wwww; 4: MAD temp[0], input[0], const[0], temp[0]; 5: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: MOV temp[0].xyz, const[1].xyzx; 1: TEX temp[1], input[1].xyyy, 2D[0]; 2: MOV_SAT temp[1], temp[1]; 3: MOV temp[0].w, temp[1].wwww; 4: MAD temp[0], input[0], const[0], temp[0]; 5: MOV_SAT output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: MOV temp[0].xyz, const[1].xyzx; 1: TEX temp[1], input[1].xyyy, 2D[0]; 2: MOV_SAT temp[1], temp[1]; 3: MOV temp[0].w, temp[1].wwww; 4: MAD temp[0], input[0], const[0], temp[0]; 5: MOV_SAT output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: MOV temp[0].xyz, const[1].xyz_; 1: TEX temp[1].w, input[1].xy__, 2D[0]; 2: MOV_SAT temp[1].w, temp[1].___w; 3: MOV temp[0].w, temp[1].___w; 4: MAD temp[0], input[0], const[0], temp[0]; 5: MOV_SAT output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: MOV temp[2].xyz, const[1].xyz_; 1: TEX temp[3].w, input[1].xy__, 2D[0]; 2: MOV_SAT temp[4].w, temp[3].___w; 3: MOV temp[2].w, temp[4].___w; 4: MAD temp[5], input[0], const[0], temp[2]; 5: MOV_SAT output[0], temp[5]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: MOV temp[2].xyz, const[1].xyz_; 1: TEX temp[3].w, input[1].xy__, 2D[0]; 2: MOV_SAT temp[2].w, temp[3].___w; 3: MAD temp[5], input[0], const[0], temp[2]; 4: MOV_SAT output[0], temp[5]; Fragment Program: after 'inline literals' # Radeon Compiler Program 0: MOV temp[2].xyz, const[1].xyz_; 1: TEX temp[3].w, input[1].xy__, 2D[0]; 2: MOV_SAT temp[2].w, temp[3].___w; 3: MAD temp[5], input[0], const[0], temp[2]; 4: MOV_SAT output[0], temp[5]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: MOV temp[2].xyz, const[1].xyz_; 1: TEX temp[3].w, input[1].xy__, 2D[0]; 2: MOV_SAT temp[2].w, temp[3].___w; 3: MAD temp[5], input[0], const[0], temp[2]; 4: MOV_SAT output[0], temp[5]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: MOV temp[2].xyz, const[1].xyz_; 1: TEX temp[3].w, input[1].xy__, 2D[0]; 2: MOV_SAT temp[2].w, temp[3].___w; 3: MAD temp[5], input[0], const[0], temp[2]; 4: MOV_SAT output[0], temp[5]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: src0.xyz = const[1] MAD temp[2].xyz, src0.xyz, src0.111, src0.000 1: TEX temp[3].w, input[1].xy__, 2D[0]; 2: src0.w = temp[3] MAD_SAT temp[2].w, src0.w, src0.1, src0.0 3: src0.xyz = input[0], src0.w = input[0], src1.xyz = const[0], src1.w = const[0], src2.xyz = temp[2], src2.w = temp[2] MAD temp[5].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[5].w, src0.w, src1.w, src2.w 4: src0.xyz = temp[5], src0.w = temp[5] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[3].w, input[1].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[1], src0.w = temp[3] SEM_WAIT MAD temp[2].xyz, src0.xyz, src0.111, src0.000 MAD_SAT temp[2].w, src0.w, src0.1, src0.0 3: src0.xyz = input[0], src0.w = input[0], src1.xyz = const[0], src1.w = const[0], src2.xyz = temp[2], src2.w = temp[2] MAD temp[5].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[5].w, src0.w, src1.w, src2.w 4: src0.xyz = temp[5], src0.w = temp[5] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[3].w, input[1].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[1], src0.w = temp[3] SEM_WAIT MAD temp[2].xyz, src0.xyz, src0.111, src0.000 MAD_SAT temp[2].w, src0.w, src0.1, src0.0 3: src0.xyz = input[0], src0.w = input[0], src1.xyz = const[0], src1.w = const[0], src2.xyz = temp[2], src2.w = temp[2] MAD temp[5].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[5].w, src0.w, src1.w, src2.w 4: src0.xyz = temp[5], src0.w = temp[5] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[1].w, input[1].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[1], src0.w = temp[1] SEM_WAIT MAD temp[1].xyz, src0.xyz, src0.111, src0.000 MAD_SAT temp[1].w, src0.w, src0.1, src0.0 3: src0.xyz = input[0], src0.w = input[0], src1.xyz = const[0], src1.w = const[0], src2.xyz = temp[1], src2.w = temp[1] MAD temp[0].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[0].w, src0.w, src1.w, src2.w 4: src0.xyz = temp[0], src0.w = temp[0] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00004007:TEX TEX_WAIT wmask: A omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00107804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08020101:Addr0: 1c, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 2 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x00140000:Addr0: 0t, Addr1: 0c, Addr2: 1t, srcp:0 2:ALPHA_ADDR 0x00140000:Addr0: 0t, Addr1: 0c, Addr2: 1t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x1c222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:2 A 0 3 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 r300: Initial fragment program FRAG DCL IN[0], FOG, PERSPECTIVE DCL IN[1], GENERIC[0], PERSPECTIVE DCL IN[2], GENERIC[1], PERSPECTIVE DCL IN[3], GENERIC[2], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL CONST[0..1] DCL CONST[5..6] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL DCL TEMP[4], LOCAL DCL TEMP[5], LOCAL IMM[0] FLT32 { 0.0000, 1.0000, 0.0000, 0.0000} 0: TEX TEMP[0], IN[2].xyyy, SAMP[2], 2D 1: MAD TEMP[1].xy, CONST[0].xxxx, TEMP[0].zyyy, CONST[0].yyyy 2: MOV TEMP[2].yz, TEMP[1].yxyy 3: MAD TEMP[2].x, CONST[0].xxxx, TEMP[0].xxxx, CONST[0].yyyy 4: MAD TEMP[3].xyz, TEMP[2].xyzz, CONST[0].wwww, IN[3].xyzz 5: DP3 TEMP[4].x, TEMP[3].xyzz, TEMP[3].xyzz 6: SEQ TEMP[5].x, TEMP[4].xxxx, IMM[0].xxxx 7: IF TEMP[5].xxxx :0 8: MOV TEMP[5].xyz, IMM[0].xxxx 9: ELSE :0 10: RSQ TEMP[4].x, TEMP[4].xxxx 11: MUL TEMP[5].xyz, TEMP[3].xyzz, TEMP[4].xxxx 12: ENDIF 13: DP3 TEMP[1].x, TEMP[5].xyzz, CONST[1].xyzz 14: MOV_SAT TEMP[1].x, TEMP[1].xxxx 15: MUL TEMP[3].x, TEMP[1].xxxx, TEMP[1].xxxx 16: MAD TEMP[2].xyz, TEMP[2].xyzz, CONST[0].zzzz, IN[3].xyzz 17: MUL TEMP[1].x, TEMP[1].xxxx, TEMP[3].xxxx 18: TEX TEMP[3].xyz, TEMP[2].xyzz, SAMP[0], CUBE 19: TEX TEMP[4], IN[1].xyyy, SAMP[1], 2D 20: MOV TEMP[2].w, TEMP[4].wwww 21: ADD TEMP[5].xyz, IMM[0].yyyy, -TEMP[0].wwww 22: MUL TEMP[3].xyz, TEMP[3].xyzz, TEMP[5].xyzz 23: MAD TEMP[0].xyz, TEMP[4].xyzz, TEMP[0].wwww, TEMP[3].xyzz 24: MAD TEMP[2].xyz, TEMP[1].xxxx, CONST[1].wwww, TEMP[0].xyzz 25: MOV TEMP[0].w, TEMP[2] 26: ADD TEMP[1].x, CONST[6].zzzz, -IN[0].xxxx 27: ADD TEMP[3].x, CONST[6].zzzz, -CONST[6].yyyy 28: RCP TEMP[3].x, TEMP[3].xxxx 29: MUL_SAT TEMP[1].x, TEMP[1].xxxx, TEMP[3].xxxx 30: ADD TEMP[3].x, IMM[0].yyyy, -TEMP[1].xxxx 31: MUL TEMP[3].xyz, CONST[5].xyzz, TEMP[3].xxxx 32: MAD TEMP[0].xyz, TEMP[2].xyzz, TEMP[1].xxxx, TEMP[3].xyzz 33: MOV_SAT OUT[0], TEMP[0] 34: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[2].xyyy, 2D[2]; 1: MAD temp[1].xy, const[0].xxxx, temp[0].zyyy, const[0].yyyy; 2: MOV temp[2].yz, temp[1].yxyy; 3: MAD temp[2].x, const[0].xxxx, temp[0].xxxx, const[0].yyyy; 4: MAD temp[3].xyz, temp[2].xyzz, const[0].wwww, input[3].xyzz; 5: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 6: SEQ temp[5].x, temp[4].xxxx, temp[0].0000; 7: IF temp[5].xxxx; 8: MOV temp[5].xyz, temp[0].0000; 9: ELSE; 10: RSQ temp[4].x, temp[4].xxxx; 11: MUL temp[5].xyz, temp[3].xyzz, temp[4].xxxx; 12: ENDIF; 13: DP3 temp[1].x, temp[5].xyzz, const[1].xyzz; 14: MOV_SAT temp[1].x, temp[1].xxxx; 15: MUL temp[3].x, temp[1].xxxx, temp[1].xxxx; 16: MAD temp[2].xyz, temp[2].xyzz, const[0].zzzz, input[3].xyzz; 17: MUL temp[1].x, temp[1].xxxx, temp[3].xxxx; 18: TEX temp[3].xyz, temp[2].xyzz, CUBE[0]; 19: TEX temp[4], input[1].xyyy, 2D[1]; 20: MOV temp[2].w, temp[4].wwww; 21: ADD temp[5].xyz, temp[0].1111, -temp[0].wwww; 22: MUL temp[3].xyz, temp[3].xyzz, temp[5].xyzz; 23: MAD temp[0].xyz, temp[4].xyzz, temp[0].wwww, temp[3].xyzz; 24: MAD temp[2].xyz, temp[1].xxxx, const[1].wwww, temp[0].xyzz; 25: MOV temp[0].w, temp[2]; 26: ADD temp[1].x, const[6].zzzz, -input[0].xxxx; 27: ADD temp[3].x, const[6].zzzz, -const[6].yyyy; 28: RCP temp[3].x, temp[3].xxxx; 29: MUL_SAT temp[1].x, temp[1].xxxx, temp[3].xxxx; 30: ADD temp[3].x, temp[0].1111, -temp[1].xxxx; 31: MUL temp[3].xyz, const[5].xyzz, temp[3].xxxx; 32: MAD temp[0].xyz, temp[2].xyzz, temp[1].xxxx, temp[3].xyzz; 33: MOV_SAT output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[2].xyyy, 2D[2]; 1: MAD temp[1].xy, const[0].xxxx, temp[0].zyyy, const[0].yyyy; 2: MOV temp[2].yz, temp[1].yxyy; 3: MAD temp[2].x, const[0].xxxx, temp[0].xxxx, const[0].yyyy; 4: MAD temp[3].xyz, temp[2].xyzz, const[0].wwww, input[3].xyzz; 5: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 6: SEQ temp[5].x, temp[4].xxxx, temp[0].0000; 7: IF temp[5].xxxx; 8: MOV temp[5].xyz, temp[0].0000; 9: ELSE; 10: RSQ temp[4].x, temp[4].xxxx; 11: MUL temp[5].xyz, temp[3].xyzz, temp[4].xxxx; 12: ENDIF; 13: DP3 temp[1].x, temp[5].xyzz, const[1].xyzz; 14: MOV_SAT temp[1].x, temp[1].xxxx; 15: MUL temp[3].x, temp[1].xxxx, temp[1].xxxx; 16: MAD temp[2].xyz, temp[2].xyzz, const[0].zzzz, input[3].xyzz; 17: MUL temp[1].x, temp[1].xxxx, temp[3].xxxx; 18: TEX temp[3].xyz, temp[2].xyzz, CUBE[0]; 19: TEX temp[4], input[1].xyyy, 2D[1]; 20: MOV temp[2].w, temp[4].wwww; 21: ADD temp[5].xyz, temp[0].1111, -temp[0].wwww; 22: MUL temp[3].xyz, temp[3].xyzz, temp[5].xyzz; 23: MAD temp[0].xyz, temp[4].xyzz, temp[0].wwww, temp[3].xyzz; 24: MAD temp[2].xyz, temp[1].xxxx, const[1].wwww, temp[0].xyzz; 25: MOV temp[0].w, temp[2]; 26: ADD temp[1].x, const[6].zzzz, -input[0].xxxx; 27: ADD temp[3].x, const[6].zzzz, -const[6].yyyy; 28: RCP temp[3].x, temp[3].xxxx; 29: MUL_SAT temp[1].x, temp[1].xxxx, temp[3].xxxx; 30: ADD temp[3].x, temp[0].1111, -temp[1].xxxx; 31: MUL temp[3].xyz, const[5].xyzz, temp[3].xxxx; 32: MAD temp[0].xyz, temp[2].xyzz, temp[1].xxxx, temp[3].xyzz; 33: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[2].xyyy, 2D[2]; 1: MAD temp[1].xy, const[0].xxxx, temp[0].zyyy, const[0].yyyy; 2: MOV temp[2].yz, temp[1].yxyy; 3: MAD temp[2].x, const[0].xxxx, temp[0].xxxx, const[0].yyyy; 4: MAD temp[3].xyz, temp[2].xyzz, const[0].wwww, input[3].xyzz; 5: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 6: SEQ temp[5].x, temp[4].xxxx, temp[0].0000; 7: IF temp[5].xxxx; 8: MOV temp[5].xyz, temp[0].0000; 9: ELSE; 10: RSQ temp[4].x, temp[4].xxxx; 11: MUL temp[5].xyz, temp[3].xyzz, temp[4].xxxx; 12: ENDIF; 13: DP3 temp[1].x, temp[5].xyzz, const[1].xyzz; 14: MOV_SAT temp[1].x, temp[1].xxxx; 15: MUL temp[3].x, temp[1].xxxx, temp[1].xxxx; 16: MAD temp[2].xyz, temp[2].xyzz, const[0].zzzz, input[3].xyzz; 17: MUL temp[1].x, temp[1].xxxx, temp[3].xxxx; 18: TEX temp[3].xyz, temp[2].xyzz, CUBE[0]; 19: TEX temp[4], input[1].xyyy, 2D[1]; 20: MOV temp[2].w, temp[4].wwww; 21: ADD temp[5].xyz, temp[0].1111, -temp[0].wwww; 22: MUL temp[3].xyz, temp[3].xyzz, temp[5].xyzz; 23: MAD temp[0].xyz, temp[4].xyzz, temp[0].wwww, temp[3].xyzz; 24: MAD temp[2].xyz, temp[1].xxxx, const[1].wwww, temp[0].xyzz; 25: MOV temp[0].w, temp[2]; 26: ADD temp[1].x, const[6].zzzz, -input[0].xxxx; 27: ADD temp[3].x, const[6].zzzz, -const[6].yyyy; 28: RCP temp[3].x, temp[3].xxxx; 29: MUL_SAT temp[1].x, temp[1].xxxx, temp[3].xxxx; 30: ADD temp[3].x, temp[0].1111, -temp[1].xxxx; 31: MUL temp[3].xyz, const[5].xyzz, temp[3].xxxx; 32: MAD temp[0].xyz, temp[2].xyzz, temp[1].xxxx, temp[3].xyzz; 33: MOV_SAT output[0], temp[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[2].xyyy, 2D[2]; 1: MAD temp[1].xy, const[0].xxxx, temp[0].zyyy, const[0].yyyy; 2: MOV temp[2].yz, temp[1].yxyy; 3: MAD temp[2].x, const[0].xxxx, temp[0].xxxx, const[0].yyyy; 4: MAD temp[3].xyz, temp[2].xyzz, const[0].wwww, input[3].xyzz; 5: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 6: SEQ temp[5].x, temp[4].xxxx, temp[0].0000; 7: IF temp[5].xxxx; 8: MOV temp[5].xyz, temp[0].0000; 9: ELSE; 10: RSQ temp[4].x, temp[4].xxxx; 11: MUL temp[5].xyz, temp[3].xyzz, temp[4].xxxx; 12: ENDIF; 13: DP3 temp[1].x, temp[5].xyzz, const[1].xyzz; 14: MOV_SAT temp[1].x, temp[1].xxxx; 15: MUL temp[3].x, temp[1].xxxx, temp[1].xxxx; 16: MAD temp[2].xyz, temp[2].xyzz, const[0].zzzz, input[3].xyzz; 17: MUL temp[1].x, temp[1].xxxx, temp[3].xxxx; 18: TEX temp[3].xyz, temp[2].xyzz, CUBE[0]; 19: TEX temp[4], input[1].xyyy, 2D[1]; 20: MOV temp[2].w, temp[4].wwww; 21: ADD temp[5].xyz, temp[0].1111, -temp[0].wwww; 22: MUL temp[3].xyz, temp[3].xyzz, temp[5].xyzz; 23: MAD temp[0].xyz, temp[4].xyzz, temp[0].wwww, temp[3].xyzz; 24: MAD temp[2].xyz, temp[1].xxxx, const[1].wwww, temp[0].xyzz; 25: MOV temp[0].w, temp[2]; 26: ADD temp[1].x, const[6].zzzz, -input[0].xxxx; 27: ADD temp[3].x, const[6].zzzz, -const[6].yyyy; 28: RCP temp[3].x, temp[3].xxxx; 29: MUL_SAT temp[1].x, temp[1].xxxx, temp[3].xxxx; 30: ADD temp[3].x, temp[0].1111, -temp[1].xxxx; 31: MUL temp[3].xyz, const[5].xyzz, temp[3].xxxx; 32: MAD temp[0].xyz, temp[2].xyzz, temp[1].xxxx, temp[3].xyzz; 33: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[2].xyyy, 2D[2]; 1: MAD temp[1].xy, const[0].xxxx, temp[0].zyyy, const[0].yyyy; 2: MOV temp[2].yz, temp[1].yxyy; 3: MAD temp[2].x, const[0].xxxx, temp[0].xxxx, const[0].yyyy; 4: MAD temp[3].xyz, temp[2].xyzz, const[0].wwww, input[3].xyzz; 5: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 6: SEQ temp[5].x, temp[4].xxxx, temp[0].0000; 7: IF temp[5].xxxx; 8: MOV temp[5].xyz, temp[0].0000; 9: ELSE; 10: RSQ temp[4].x, temp[4].xxxx; 11: MUL temp[5].xyz, temp[3].xyzz, temp[4].xxxx; 12: ENDIF; 13: DP3 temp[1].x, temp[5].xyzz, const[1].xyzz; 14: MOV_SAT temp[1].x, temp[1].xxxx; 15: MUL temp[3].x, temp[1].xxxx, temp[1].xxxx; 16: MAD temp[2].xyz, temp[2].xyzz, const[0].zzzz, input[3].xyzz; 17: MUL temp[1].x, temp[1].xxxx, temp[3].xxxx; 18: TEX temp[3].xyz, temp[2].xyzz, CUBE[0]; 19: TEX temp[4], input[1].xyyy, 2D[1]; 20: MOV temp[2].w, temp[4].wwww; 21: ADD temp[5].xyz, temp[0].1111, -temp[0].wwww; 22: MUL temp[3].xyz, temp[3].xyzz, temp[5].xyzz; 23: MAD temp[0].xyz, temp[4].xyzz, temp[0].wwww, temp[3].xyzz; 24: MAD temp[2].xyz, temp[1].xxxx, const[1].wwww, temp[0].xyzz; 25: MOV temp[0].w, temp[2]; 26: ADD temp[1].x, const[6].zzzz, -input[0].xxxx; 27: ADD temp[3].x, const[6].zzzz, -const[6].yyyy; 28: RCP temp[3].x, temp[3].xxxx; 29: MUL_SAT temp[1].x, temp[1].xxxx, temp[3].xxxx; 30: ADD temp[3].x, temp[0].1111, -temp[1].xxxx; 31: MUL temp[3].xyz, const[5].xyzz, temp[3].xxxx; 32: MAD temp[0].xyz, temp[2].xyzz, temp[1].xxxx, temp[3].xyzz; 33: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: TEX temp[0], input[2].xyyy, 2D[2]; 1: MAD temp[1].xy, const[0].xxxx, temp[0].zyyy, const[0].yyyy; 2: MOV temp[2].yz, temp[1].yxyy; 3: MAD temp[2].x, const[0].xxxx, temp[0].xxxx, const[0].yyyy; 4: MAD temp[3].xyz, temp[2].xyzz, const[0].wwww, input[3].xyzz; 5: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 6: SUB none., temp[4].xxxx, temp[0].0000; [aluresult = (x == 0)] 7: IF aluresult.x___; 8: MOV temp[5].xyz, temp[0].0000; 9: ELSE; 10: RSQ temp[4].x, temp[4].xxxx; 11: MUL temp[5].xyz, temp[3].xyzz, temp[4].xxxx; 12: ENDIF; 13: DP3 temp[1].x, temp[5].xyzz, const[1].xyzz; 14: MOV_SAT temp[1].x, temp[1].xxxx; 15: MUL temp[3].x, temp[1].xxxx, temp[1].xxxx; 16: MAD temp[2].xyz, temp[2].xyzz, const[0].zzzz, input[3].xyzz; 17: MUL temp[1].x, temp[1].xxxx, temp[3].xxxx; 18: TEX temp[3].xyz, temp[2].xyzz, CUBE[0]; 19: TEX temp[4], input[1].xyyy, 2D[1]; 20: MOV temp[2].w, temp[4].wwww; 21: ADD temp[5].xyz, temp[0].1111, -temp[0].wwww; 22: MUL temp[3].xyz, temp[3].xyzz, temp[5].xyzz; 23: MAD temp[0].xyz, temp[4].xyzz, temp[0].wwww, temp[3].xyzz; 24: MAD temp[2].xyz, temp[1].xxxx, const[1].wwww, temp[0].xyzz; 25: MOV temp[0].w, temp[2]; 26: ADD temp[1].x, const[6].zzzz, -input[0].xxxx; 27: ADD temp[3].x, const[6].zzzz, -const[6].yyyy; 28: RCP temp[3].x, temp[3].xxxx; 29: MUL_SAT temp[1].x, temp[1].xxxx, temp[3].xxxx; 30: ADD temp[3].x, temp[0].1111, -temp[1].xxxx; 31: MUL temp[3].xyz, const[5].xyzz, temp[3].xxxx; 32: MAD temp[0].xyz, temp[2].xyzz, temp[1].xxxx, temp[3].xyzz; 33: MOV_SAT output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[2].xyyy, 2D[2]; 1: MAD temp[1].xy, const[0].xxxx, temp[0].zyyy, const[0].yyyy; 2: MOV temp[2].yz, temp[1].yxyy; 3: MAD temp[2].x, const[0].xxxx, temp[0].xxxx, const[0].yyyy; 4: MAD temp[3].xyz, temp[2].xyzz, const[0].wwww, input[3].xyzz; 5: DP3 temp[4].x, temp[3].xyzz, temp[3].xyzz; 6: ADD none., temp[4].xxxx, -temp[0].0000; [aluresult = (x == 0)] 7: IF aluresult.x___; 8: MOV temp[5].xyz, temp[0].0000; 9: ELSE; 10: RSQ temp[4].x, |temp[4].xxxx|; 11: MUL temp[5].xyz, temp[3].xyzz, temp[4].xxxx; 12: ENDIF; 13: DP3 temp[1].x, temp[5].xyzz, const[1].xyzz; 14: MOV_SAT temp[1].x, temp[1].xxxx; 15: MUL temp[3].x, temp[1].xxxx, temp[1].xxxx; 16: MAD temp[2].xyz, temp[2].xyzz, const[0].zzzz, input[3].xyzz; 17: MUL temp[1].x, temp[1].xxxx, temp[3].xxxx; 18: TEX temp[3].xyz, temp[2].xyzz, CUBE[0]; 19: TEX temp[4], input[1].xyyy, 2D[1]; 20: MOV temp[2].w, temp[4].wwww; 21: ADD temp[5].xyz, temp[0].1111, -temp[0].wwww; 22: MUL temp[3].xyz, temp[3].xyzz, temp[5].xyzz; 23: MAD temp[0].xyz, temp[4].xyzz, temp[0].wwww, temp[3].xyzz; 24: MAD temp[2].xyz, temp[1].xxxx, const[1].wwww, temp[0].xyzz; 25: MOV temp[0].w, temp[2]; 26: ADD temp[1].x, const[6].zzzz, -input[0].xxxx; 27: ADD temp[3].x, const[6].zzzz, -const[6].yyyy; 28: RCP temp[3].x, temp[3].xxxx; 29: MUL_SAT temp[1].x, temp[1].xxxx, temp[3].xxxx; 30: ADD temp[3].x, temp[0].1111, -temp[1].xxxx; 31: MUL temp[3].xyz, const[5].xyzz, temp[3].xxxx; 32: MAD temp[0].xyz, temp[2].xyzz, temp[1].xxxx, temp[3].xyzz; 33: MOV_SAT output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[2]; 1: MAD temp[1].xy, const[0].xx__, temp[0].zy__, const[0].yy__; 2: MOV temp[2].yz, temp[1]._xy_; 3: MAD temp[2].x, const[0].x___, temp[0].x___, const[0].y___; 4: MAD temp[3].xyz, temp[2].xyz_, const[0].www_, input[3].xyz_; 5: DP3 temp[4].x, temp[3].xyz_, temp[3].xyz_; 6: ADD none., temp[4].x___, -temp[0].0___; [aluresult = (x == 0)] 7: IF aluresult.x___; 8: MOV temp[5].xyz, temp[0].000_; 9: ELSE; 10: RSQ temp[4].x, |temp[4].x___|; 11: MUL temp[5].xyz, temp[3].xyz_, temp[4].xxx_; 12: ENDIF; 13: DP3 temp[1].x, temp[5].xyz_, const[1].xyz_; 14: MOV_SAT temp[1].x, temp[1].x___; 15: MUL temp[3].x, temp[1].x___, temp[1].x___; 16: MAD temp[2].xyz, temp[2].xyz_, const[0].zzz_, input[3].xyz_; 17: MUL temp[1].x, temp[1].x___, temp[3].x___; 18: TEX temp[3].xyz, temp[2].xyz_, CUBE[0]; 19: TEX temp[4], input[1].xy__, 2D[1]; 20: MOV temp[2].w, temp[4].___w; 21: ADD temp[5].xyz, temp[0].111_, -temp[0].www_; 22: MUL temp[3].xyz, temp[3].xyz_, temp[5].xyz_; 23: MAD temp[0].xyz, temp[4].xyz_, temp[0].www_, temp[3].xyz_; 24: MAD temp[2].xyz, temp[1].xxx_, const[1].www_, temp[0].xyz_; 25: MOV temp[0].w, temp[2].___w; 26: ADD temp[1].x, const[6].z___, -input[0].x___; 27: ADD temp[3].x, const[6].z___, -const[6].y___; 28: RCP temp[3].x, temp[3].x___; 29: MUL_SAT temp[1].x, temp[1].x___, temp[3].x___; 30: ADD temp[3].x, temp[0].1___, -temp[1].x___; 31: MUL temp[3].xyz, const[5].xyz_, temp[3].xxx_; 32: MAD temp[0].xyz, temp[2].xyz_, temp[1].xxx_, temp[3].xyz_; 33: MOV_SAT output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[6], input[2].xy__, 2D[2]; 1: MAD temp[7].xy, const[0].xx__, temp[6].zy__, const[0].yy__; 2: MOV temp[8].yz, temp[7]._xy_; 3: MAD temp[8].x, const[0].x___, temp[6].x___, const[0].y___; 4: MAD temp[9].xyz, temp[8].xyz_, const[0].www_, input[3].xyz_; 5: DP3 temp[10].x, temp[9].xyz_, temp[9].xyz_; 6: ADD none., temp[10].x___, -temp[0].0___; [aluresult = (x == 0)] 7: IF aluresult.x___; 8: MOV temp[11].xyz, temp[0].000_; 9: ELSE; 10: RSQ temp[12].x, |temp[10].x___|; 11: MUL temp[11].xyz, temp[9].xyz_, temp[12].xxx_; 12: ENDIF; 13: DP3 temp[13].x, temp[11].xyz_, const[1].xyz_; 14: MOV_SAT temp[14].x, temp[13].x___; 15: MUL temp[15].x, temp[14].x___, temp[14].x___; 16: MAD temp[16].xyz, temp[8].xyz_, const[0].zzz_, input[3].xyz_; 17: MUL temp[17].x, temp[14].x___, temp[15].x___; 18: TEX temp[18].xyz, temp[16].xyz_, CUBE[0]; 19: TEX temp[19], input[1].xy__, 2D[1]; 20: MOV temp[20].w, temp[19].___w; 21: ADD temp[21].xyz, temp[0].111_, -temp[6].www_; 22: MUL temp[22].xyz, temp[18].xyz_, temp[21].xyz_; 23: MAD temp[23].xyz, temp[19].xyz_, temp[6].www_, temp[22].xyz_; 24: MAD temp[24].xyz, temp[17].xxx_, const[1].www_, temp[23].xyz_; 25: MOV temp[25].w, temp[20].___w; 26: ADD temp[26].x, const[6].z___, -input[0].x___; 27: ADD temp[27].x, const[6].z___, -const[6].y___; 28: RCP temp[28].x, temp[27].x___; 29: MUL_SAT temp[29].x, temp[26].x___, temp[28].x___; 30: ADD temp[30].x, temp[0].1___, -temp[29].x___; 31: MUL temp[31].xyz, const[5].xyz_, temp[30].xxx_; 32: MAD temp[25].xyz, temp[24].xyz_, temp[29].xxx_, temp[31].xyz_; 33: MOV_SAT output[0], temp[25]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[6], input[2].xy__, 2D[2]; 1: MAD temp[7].xy, const[0].xx__, temp[6].zy__, const[0].yy__; 2: MOV temp[8].yz, temp[7]._xy_; 3: MAD temp[8].x, const[0].x___, temp[6].x___, const[0].y___; 4: MAD temp[9].xyz, temp[8].xyz_, const[0].www_, input[3].xyz_; 5: DP3 temp[10].x, temp[9].xyz_, temp[9].xyz_; 6: MOV none., temp[10].x___; [aluresult = (x == 0)] 7: IF aluresult.x___; 8: MOV temp[11].xyz, none.000_; 9: ELSE; 10: RSQ temp[12].x, |temp[10].x___|; 11: MUL temp[11].xyz, temp[9].xyz_, temp[12].xxx_; 12: ENDIF; 13: DP3 temp[13].x, temp[11].xyz_, const[1].xyz_; 14: MOV_SAT temp[14].x, temp[13].x___; 15: MUL temp[15].x, temp[14].x___, temp[14].x___; 16: MAD temp[16].xyz, temp[8].xyz_, const[0].zzz_, input[3].xyz_; 17: MUL temp[17].x, temp[14].x___, temp[15].x___; 18: TEX temp[18].xyz, temp[16].xyz_, CUBE[0]; 19: TEX temp[19], input[1].xy__, 2D[1]; 20: MUL temp[22].xyz, temp[18].xyz_, (1 - temp[6]).www_; 21: MAD temp[23].xyz, temp[19].xyz_, temp[6].www_, temp[22].xyz_; 22: MAD temp[24].xyz, temp[17].xxx_, const[1].www_, temp[23].xyz_; 23: MOV temp[25].w, temp[19].___w; 24: ADD temp[26].x, const[6].z___, -input[0].x___; 25: ADD temp[27].x, const[6].z___, -const[6].y___; 26: RCP temp[28].x, temp[27].x___; 27: MUL_SAT temp[29].x, temp[26].x___, temp[28].x___; 28: MUL temp[31].xyz, const[5].xyz_, (1 - temp[29]).xxx_; 29: MAD temp[25].xyz, temp[24].xyz_, temp[29].xxx_, temp[31].xyz_; 30: MOV_SAT output[0], temp[25]; Fragment Program: after 'inline literals' # Radeon Compiler Program 0: TEX temp[6], input[2].xy__, 2D[2]; 1: MAD temp[7].xy, const[0].xx__, temp[6].zy__, const[0].yy__; 2: MOV temp[8].yz, temp[7]._xy_; 3: MAD temp[8].x, const[0].x___, temp[6].x___, const[0].y___; 4: MAD temp[9].xyz, temp[8].xyz_, const[0].www_, input[3].xyz_; 5: DP3 temp[10].x, temp[9].xyz_, temp[9].xyz_; 6: MOV none., temp[10].x___; [aluresult = (x == 0)] 7: IF aluresult.x___; 8: MOV temp[11].xyz, none.000_; 9: ELSE; 10: RSQ temp[12].x, |temp[10].x___|; 11: MUL temp[11].xyz, temp[9].xyz_, temp[12].xxx_; 12: ENDIF; 13: DP3 temp[13].x, temp[11].xyz_, const[1].xyz_; 14: MOV_SAT temp[14].x, temp[13].x___; 15: MUL temp[15].x, temp[14].x___, temp[14].x___; 16: MAD temp[16].xyz, temp[8].xyz_, const[0].zzz_, input[3].xyz_; 17: MUL temp[17].x, temp[14].x___, temp[15].x___; 18: TEX temp[18].xyz, temp[16].xyz_, CUBE[0]; 19: TEX temp[19], input[1].xy__, 2D[1]; 20: MUL temp[22].xyz, temp[18].xyz_, (1 - temp[6]).www_; 21: MAD temp[23].xyz, temp[19].xyz_, temp[6].www_, temp[22].xyz_; 22: MAD temp[24].xyz, temp[17].xxx_, const[1].www_, temp[23].xyz_; 23: MOV temp[25].w, temp[19].___w; 24: ADD temp[26].x, const[6].z___, -input[0].x___; 25: ADD temp[27].x, const[6].z___, -const[6].y___; 26: RCP temp[28].x, temp[27].x___; 27: MUL_SAT temp[29].x, temp[26].x___, temp[28].x___; 28: MUL temp[31].xyz, const[5].xyz_, (1 - temp[29]).xxx_; 29: MAD temp[25].xyz, temp[24].xyz_, temp[29].xxx_, temp[31].xyz_; 30: MOV_SAT output[0], temp[25]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[6], input[2].xy__, 2D[2]; 1: MAD temp[7].xy, const[0].xx__, temp[6].zy__, const[0].yy__; 2: MOV temp[8].yz, temp[7]._xy_; 3: MAD temp[8].x, const[0].x___, temp[6].x___, const[0].y___; 4: MAD temp[9].xyz, temp[8].xyz_, const[0].www_, input[3].xyz_; 5: DP3 temp[10].x, temp[9].xyz_, temp[9].xyz_; 6: MOV none., temp[10].x___; [aluresult = (x == 0)] 7: IF aluresult.x___; 8: MOV temp[11].xyz, none.000_; 9: ELSE; 10: RSQ temp[12].x, |temp[10].x___|; 11: MUL temp[11].xyz, temp[9].xyz_, temp[12].xxx_; 12: ENDIF; 13: DP3 temp[13].x, temp[11].xyz_, const[1].xyz_; 14: MOV_SAT temp[14].x, temp[13].x___; 15: MUL temp[15].x, temp[14].x___, temp[14].x___; 16: MAD temp[16].xyz, temp[8].xyz_, const[0].zzz_, input[3].xyz_; 17: MUL temp[17].x, temp[14].x___, temp[15].x___; 18: TEX temp[18].xyz, temp[16].xyz_, CUBE[0]; 19: TEX temp[19], input[1].xy__, 2D[1]; 20: MUL temp[22].xyz, temp[18].xyz_, (1 - temp[6]).www_; 21: MAD temp[23].xyz, temp[19].xyz_, temp[6].www_, temp[22].xyz_; 22: MAD temp[24].xyz, temp[17].xxx_, const[1].www_, temp[23].xyz_; 23: MOV temp[25].w, temp[19].___w; 24: ADD temp[26].x, const[6].z___, -input[0].x___; 25: ADD temp[27].x, const[6].z___, -const[6].y___; 26: RCP temp[28].x, temp[27].x___; 27: MUL_SAT temp[29].x, temp[26].x___, temp[28].x___; 28: MUL temp[31].xyz, const[5].xyz_, (1 - temp[29]).xxx_; 29: MAD temp[25].xyz, temp[24].xyz_, temp[29].xxx_, temp[31].xyz_; 30: MOV_SAT output[0], temp[25]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[6], input[2].xy__, 2D[2]; 1: MAD temp[7].xy, const[0].xx__, temp[6].zy__, const[0].yy__; 2: MOV temp[8].yz, temp[7]._xy_; 3: MAD temp[8].x, const[0].x___, temp[6].x___, const[0].y___; 4: MAD temp[9].xyz, temp[8].xyz_, const[0].www_, input[3].xyz_; 5: DP3 temp[10].x, temp[9].xyz_, temp[9].xyz_; 6: MOV none., temp[10].x___; [aluresult = (x == 0)] 7: IF aluresult.x___; 8: MOV temp[11].xyz, none.000_; 9: ELSE; 10: RSQ temp[12].x, |temp[10].x___|; 11: MUL temp[11].xyz, temp[9].xyz_, temp[12].xxx_; 12: ENDIF; 13: DP3 temp[13].x, temp[11].xyz_, const[1].xyz_; 14: MOV_SAT temp[14].x, temp[13].x___; 15: MUL temp[15].x, temp[14].x___, temp[14].x___; 16: MAD temp[16].xyz, temp[8].xyz_, const[0].zzz_, input[3].xyz_; 17: MUL temp[17].x, temp[14].x___, temp[15].x___; 18: TEX temp[18].xyz, temp[16].xyz_, CUBE[0]; 19: TEX temp[19], input[1].xy__, 2D[1]; 20: MUL temp[22].xyz, temp[18].xyz_, (1 - temp[6]).www_; 21: MAD temp[23].xyz, temp[19].xyz_, temp[6].www_, temp[22].xyz_; 22: MAD temp[24].xyz, temp[17].xxx_, const[1].www_, temp[23].xyz_; 23: MOV temp[25].w, temp[19].___w; 24: ADD temp[26].x, const[6].z___, -input[0].x___; 25: ADD temp[27].x, const[6].z___, -const[6].y___; 26: RCP temp[28].x, temp[27].x___; 27: MUL_SAT temp[29].x, temp[26].x___, temp[28].x___; 28: MUL temp[31].xyz, const[5].xyz_, (1 - temp[29]).xxx_; 29: MAD temp[25].xyz, temp[24].xyz_, temp[29].xxx_, temp[31].xyz_; 30: MOV_SAT output[0], temp[25]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[6], input[2].xy__, 2D[2]; 1: src0.xyz = const[0], src1.xyz = temp[6] MAD temp[7].xy, src0.xx_, src1.zy_, src0.yy_ 2: src0.xyz = temp[7] MAD temp[8].yz, src0._xy, src0.111, src0.000 3: src0.xyz = const[0], src1.xyz = temp[6] MAD temp[8].x, src0.x__, src1.x__, src0.y__ 4: src0.xyz = temp[8], src0.w = const[0], src1.xyz = input[3] MAD temp[9].xyz, src0.xyz, src0.www, src1.xyz 5: src0.xyz = temp[9] DP3 temp[10].x, src0.xyz, src0.xyz 6: src0.xyz = temp[10] MAD aluresult, src0.x__, src0.111, src0.000 [aluresult = (result == 0)] 7: IF aluresult.x___; 8: MAD temp[11].xyz, src0.000, src0.111, src0.000 9: ELSE; 10: src0.xyz = temp[10] REPL_ALPHA temp[12].x RSQ, |src0.x| 11: src0.xyz = temp[9], src1.xyz = temp[12] MAD temp[11].xyz, src0.xyz, src1.xxx, src0.000 12: ENDIF; 13: src0.xyz = temp[11], src1.xyz = const[1] DP3 temp[13].x, src0.xyz, src1.xyz 14: src0.xyz = temp[13] MAD_SAT temp[14].x, src0.x__, src0.111, src0.000 15: src0.xyz = temp[14] MAD temp[15].x, src0.x__, src0.x__, src0.000 16: src0.xyz = temp[8], src1.xyz = const[0], src2.xyz = input[3] MAD temp[16].xyz, src0.xyz, src1.zzz, src2.xyz 17: src0.xyz = temp[14], src1.xyz = temp[15] MAD temp[17].x, src0.x__, src1.x__, src0.000 18: TEX temp[18].xyz, temp[16].xyz_, CUBE[0]; 19: TEX temp[19], input[1].xy__, 2D[1]; 20: src0.xyz = temp[18], src0.w = temp[6], srcp.w = (1 - src0) MAD temp[22].xyz, src0.xyz, srcp.www, src0.000 21: src0.xyz = temp[19], src0.w = temp[6], src1.xyz = temp[22] MAD temp[23].xyz, src0.xyz, src0.www, src1.xyz 22: src0.xyz = temp[17], src0.w = const[1], src1.xyz = temp[23] MAD temp[24].xyz, src0.xxx, src0.www, src1.xyz 23: src0.w = temp[19] MAD temp[25].w, src0.w, src0.1, src0.0 24: src0.xyz = const[6], src1.xyz = input[0] MAD temp[26].x, src0.z__, src0.111, -src1.x__ 25: src0.xyz = const[6] MAD temp[27].x, src0.z__, src0.111, -src0.y__ 26: src0.xyz = temp[27] REPL_ALPHA temp[28].x RCP, src0.x 27: src0.xyz = temp[26], src1.xyz = temp[28] MAD_SAT temp[29].x, src0.x__, src1.x__, src0.000 28: src0.xyz = temp[29], src1.xyz = const[5], srcp.xyz = (1 - src0) MAD temp[31].xyz, src1.xyz, srcp.xxx, src0.000 29: src0.xyz = temp[24], src1.xyz = temp[29], src2.xyz = temp[31] MAD temp[25].xyz, src0.xyz, src1.xxx, src2.xyz 30: src0.xyz = temp[25], src0.w = temp[25] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[6], input[2].xy__, 2D[2] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[0], src1.xyz = temp[6] SEM_WAIT MAD temp[7].xy, src0.xx_, src1.zy_, src0.yy_ 3: src0.xyz = temp[7] MAD temp[8].yz, src0._xy, src0.111, src0.000 4: src0.xyz = const[0], src1.xyz = temp[6] MAD temp[8].x, src0.x__, src1.x__, src0.y__ 5: src0.xyz = temp[8], src0.w = const[0], src1.xyz = input[3] MAD temp[9].xyz, src0.xyz, src0.www, src1.xyz 6: src0.xyz = temp[9] DP3 temp[10].x, src0.xyz, src0.xyz 7: src0.xyz = temp[10] MAD aluresult, src0.x__, src0.111, src0.000 [aluresult = (result == 0)] 8: IF aluresult.x___; 9: MAD temp[11].xyz, src0.000, src0.111, src0.000 10: ELSE; 11: src0.xyz = temp[10] REPL_ALPHA temp[12].x RSQ, |src0.x| 12: src0.xyz = temp[9], src1.xyz = temp[12] MAD temp[11].xyz, src0.xyz, src1.xxx, src0.000 13: ENDIF; 14: src0.xyz = temp[11], src1.xyz = const[1] DP3 temp[13].x, src0.xyz, src1.xyz 15: src0.xyz = temp[8], src1.xyz = const[0], src2.xyz = input[3] MAD temp[16].xyz, src0.xyz, src1.zzz, src2.xyz 16: BEGIN_TEX; 17: TEX temp[19], input[1].xy__, 2D[1]; 18: TEX temp[18].xyz, temp[16].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE; 19: src0.xyz = const[6], src1.xyz = input[0] MAD temp[27].x, src0.z__, src0.111, -src0.y__ MAD temp[26].w, src0.z, src0.1, -src1.x 20: src0.xyz = temp[27] RCP temp[28].w, src0.x 21: src0.xyz = temp[18], src0.w = temp[6], src1.xyz = temp[13], srcp.w = (1 - src0) SEM_WAIT MAD temp[22].xyz, src0.xyz, srcp.www, src0.000 MAD_SAT temp[14].w, src1.x, src0.1, src0.0 22: src0.xyz = temp[19], src0.w = temp[6], src1.xyz = temp[22], src1.w = temp[14] MAD temp[23].xyz, src0.xyz, src0.www, src1.xyz MAD temp[15].w, src1.w, src1.w, src0.0 23: src0.xyz = temp[26], src0.w = temp[26], src1.xyz = temp[28], src1.w = temp[28], src2.w = temp[19] MAD_SAT temp[29].x, src0.w__, src1.w__, src0.000 MAD temp[25].w, src2.w, src0.1, src0.0 24: src0.xyz = temp[29], src0.w = temp[14], src1.xyz = const[5], src1.w = temp[15], srcp.xyz = (1 - src0) MAD temp[31].xyz, src1.xyz, srcp.xxx, src0.000 MAD temp[17].w, src0.w, src1.w, src0.0 25: src0.xyz = temp[17], src0.w = const[1], src1.xyz = temp[23], src1.w = temp[17] MAD temp[24].xyz, src1.www, src0.www, src1.xyz 26: src0.xyz = temp[24], src1.xyz = temp[29], src2.xyz = temp[31] MAD temp[25].xyz, src0.xyz, src1.xxx, src2.xyz 27: src0.xyz = temp[25], src0.w = temp[25] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[6], input[2].xy__, 2D[2] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[0], src1.xyz = temp[6] SEM_WAIT MAD temp[7].xy, src0.xx_, src1.zy_, src0.yy_ 3: src0.xyz = temp[7] MAD temp[8].yz, src0._xy, src0.111, src0.000 4: src0.xyz = const[0], src1.xyz = temp[6] MAD temp[8].x, src0.x__, src1.x__, src0.y__ 5: src0.xyz = temp[8], src0.w = const[0], src1.xyz = input[3] MAD temp[9].xyz, src0.xyz, src0.www, src1.xyz 6: src0.xyz = temp[9] DP3 temp[10].x, src0.xyz, src0.xyz 7: src0.xyz = temp[10] MAD aluresult, src0.x__, src0.111, src0.000 [aluresult = (result == 0)] 8: IF aluresult.x___; 9: MAD temp[11].xyz, src0.000, src0.111, src0.000 10: ELSE; 11: src0.xyz = temp[10] REPL_ALPHA temp[12].x RSQ, |src0.x| 12: src0.xyz = temp[9], src1.xyz = temp[12] MAD temp[11].xyz, src0.xyz, src1.xxx, src0.000 13: ENDIF; 14: src0.xyz = temp[11], src1.xyz = const[1] DP3 temp[13].x, src0.xyz, src1.xyz 15: src0.xyz = temp[8], src1.xyz = const[0], src2.xyz = input[3] MAD temp[16].xyz, src0.xyz, src1.zzz, src2.xyz 16: BEGIN_TEX; 17: TEX temp[19], input[1].xy__, 2D[1]; 18: TEX temp[18].xyz, temp[16].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE; 19: src0.xyz = const[6], src1.xyz = input[0] MAD temp[27].x, src0.z__, src0.111, -src0.y__ MAD temp[26].w, src0.z, src0.1, -src1.x 20: src0.xyz = temp[27] RCP temp[28].w, src0.x 21: src0.xyz = temp[18], src0.w = temp[6], src1.xyz = temp[13], srcp.w = (1 - src0) SEM_WAIT MAD temp[22].xyz, src0.xyz, srcp.www, src0.000 MAD_SAT temp[14].w, src1.x, src0.1, src0.0 22: src0.xyz = temp[19], src0.w = temp[6], src1.xyz = temp[22], src1.w = temp[14] MAD temp[23].xyz, src0.xyz, src0.www, src1.xyz MAD temp[15].w, src1.w, src1.w, src0.0 23: src0.w = temp[26], src1.w = temp[28], src2.w = temp[19] MAD_SAT temp[29].x, src0.w__, src1.w__, src0.000 MAD temp[25].w, src2.w, src0.1, src0.0 24: src0.xyz = temp[29], src0.w = temp[14], src1.xyz = const[5], src1.w = temp[15], srcp.xyz = (1 - src0) MAD temp[31].xyz, src1.xyz, srcp.xxx, src0.000 MAD temp[17].w, src0.w, src1.w, src0.0 25: src0.w = const[1], src1.xyz = temp[23], src1.w = temp[17] MAD temp[24].xyz, src1.www, src0.www, src1.xyz 26: src0.xyz = temp[24], src1.xyz = temp[29], src2.xyz = temp[31] MAD temp[25].xyz, src0.xyz, src1.xxx, src2.xyz 27: src0.xyz = temp[25], src0.w = temp[25] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[1], input[1].xy__, 2D[2] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[0], src1.xyz = temp[1] SEM_WAIT MAD temp[3].yz, src0._xx, src1._zy, src0._yy 3: src0.xyz = temp[3] MAD temp[4].yz, src0._yz, src0.111, src0.000 4: src0.xyz = const[0], src1.xyz = temp[1] MAD temp[4].x, src0.x__, src1.x__, src0.y__ 5: src0.xyz = temp[4], src0.w = const[0], src1.xyz = input[2] MAD temp[5].xyz, src0.xyz, src0.www, src1.xyz 6: src0.xyz = temp[5] DP3 temp[0].z, src0.xyz, src0.xyz 7: src0.xyz = temp[0] MAD aluresult, src0.z__, src0.111, src0.000 [aluresult = (result == 0)] 8: IF aluresult.x___; 9: MAD temp[6].xyz, src0.000, src0.111, src0.000 10: ELSE; 11: src0.xyz = temp[0] REPL_ALPHA temp[0].z RSQ, |src0.z| 12: src0.xyz = temp[5], src1.xyz = temp[0] MAD temp[6].xyz, src0.xyz, src1.zzz, src0.000 13: ENDIF; 14: src0.xyz = temp[6], src1.xyz = const[1] DP3 temp[0].z, src0.xyz, src1.xyz 15: src0.xyz = temp[4], src1.xyz = const[0], src2.xyz = input[2] MAD temp[2].xyz, src0.xyz, src1.zzz, src2.xyz 16: BEGIN_TEX; 17: TEX temp[4], input[0].xy__, 2D[1]; 18: TEX temp[2].xyz, temp[2].xyz_, CUBE[0] SEM_WAIT SEM_ACQUIRE; 19: src0.xyz = const[6], src1.xyz = input[3] MAD temp[0].x, src0.z__, src0.1__, -src0.y__ MAD temp[0].w, src0.z, src0.1, -src1.x 20: src0.xyz = temp[0] RCP temp[2].w, src0.x 21: src0.xyz = temp[2], src0.w = temp[1], src1.xyz = temp[0], srcp.w = (1 - src0) SEM_WAIT MAD temp[0].xyz, src0.xyz, srcp.www, src0.000 MAD_SAT temp[3].w, src1.z, src0.1, src0.0 22: src0.xyz = temp[4], src0.w = temp[1], src1.xyz = temp[0], src1.w = temp[3] MAD temp[0].xyz, src0.xyz, src0.www, src1.xyz MAD temp[1].w, src1.w, src1.w, src0.0 23: src0.w = temp[0], src1.w = temp[2], src2.w = temp[4] MAD_SAT temp[1].x, src0.w__, src1.w__, src0.0__ MAD temp[0].w, src2.w, src0.1, src0.0 24: src0.xyz = temp[1], src0.w = temp[3], src1.xyz = const[5], src1.w = temp[1], srcp.xyz = (1 - src0) MAD temp[2].xyz, src1.xyz, srcp.xxx, src0.000 MAD temp[1].w, src0.w, src1.w, src0.0 25: src0.w = const[1], src1.xyz = temp[0], src1.w = temp[1] MAD temp[0].xyz, src1.www, src0.www, src1.xyz 26: src0.xyz = temp[0], src1.xyz = temp[1], src2.xyz = temp[2] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 27: src0.xyz = temp[0], src0.w = temp[0] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02420000: id: 2 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00003004:ALU TEX_WAIT wmask: GB omask: NONE 1:RGB_ADDR 0x08000500:Addr0: 0c, Addr1: 1t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x002a2010:rgb_A_src:0 0/R/R 0 rgb_B_src:1 0/B/G 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00130030:MAD dest:3 rgb_C_src:0 0/G/G 0 alp_C_src:0 R 0 2 0:CMN_INST 0x00003000:ALU wmask: GB omask: NONE 1:RGB_ADDR 0x08020003:Addr0: 3t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0230:rgb_A_src:0 0/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 3 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08000500:Addr0: 0c, Addr1: 1t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00902480:rgb_A_src:0 R/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00484040:MAD dest:4 rgb_C_src:0 G/0/0 0 alp_C_src:0 R 0 4 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0x08000804:Addr0: 4t, Addr1: 2t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020100:Addr0: 0c, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x006d8220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 A/A/A 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00221050:MAD dest:5 rgb_C_src:1 R/G/B 0 alp_C_src:0 R 0 5 0:CMN_INST 0x00002000:ALU wmask: B omask: NONE 1:RGB_ADDR 0x08020005:Addr0: 5t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00440220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000001:DP3 dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 6 0:CMN_INST 0x00000000:ALU wmask: NONE omask: NONE 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x80db0488:rgb_A_src:0 B/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490050:MAD dest:5 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 7 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x1a000f00:0x0f 0 JUMP NONE INCR INCR 0 0 10 IGN_UNC 3:FC_ADDR 0x000a0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 10, JMP_GLBL: 0 8 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0490:rgb_A_src:0 0/0/0 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490060:MAD dest:6 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 9 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x04010010:0x00 0 JUMP NONE NONE DECR 1 1 13 3:FC_ADDR 0x000d0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 13, JMP_GLBL: 0 10 0:CMN_INST 0x00002000:ALU wmask: B omask: NONE 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0 4 ALPHA_INST:0x0004800b:RSQ dest:0 alp_A_src:0 B 2 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x0000000a:SOP dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 11 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0x08000005:Addr0: 5t, Addr1: 0t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00492220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 B/B/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490060:MAD dest:6 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 12 0:CMN_INST 0x00000402:FC ALU WAIT wmask: NONE omask: NONE 2:FC_INST 0x01010020:0x00 1 JUMP NONE DECR NONE 1 0 13 3:FC_ADDR 0x000d0000:BOOL: 0x00, INT: 0x00, JUMP_ADDR: 13, JMP_GLBL: 0 13 0:CMN_INST 0x00002000:ALU wmask: B omask: NONE 1:RGB_ADDR 0x08040406:Addr0: 6t, Addr1: 1c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000001:DP3 dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 14 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0x00240004:Addr0: 4t, Addr1: 0c, Addr2: 2t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00492220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 B/B/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222020:MAD dest:2 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 15 0:CMN_INST 0x00007803:TEX wmask: ARGB omask: NONE 1:TEX_INST: 0x00410000: id: 1 op:LD, , SCALED 2:TEX_ADDR: 0xe404f400: src: 0 R/G/A/A dst: 4 R/G/B/A 3:TEX_DXDY: 0x00000000 16 0:CMN_INST 0x00003807:TEX TEX_WAIT wmask: RGB omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe402e402: src: 2 R/G/B/A dst: 2 R/G/B/A 3:TEX_DXDY: 0x00000000 17 0:CMN_INST 0x00004800:ALU wmask: AR omask: NONE 1:RGB_ADDR 0x08000d06:Addr0: 6c, Addr1: 3t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930488:rgb_A_src:0 B/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0 4 ALPHA_INST:0x00c08000:MAD dest:0 alp_A_src:0 B 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x42c84000:MAD dest:0 rgb_C_src:0 G/0/0 1 alp_C_src:1 R 1 18 0:CMN_INST 0x00004000:ALU wmask: A omask: NONE 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0 4 ALPHA_INST:0x0000002a:RCP dest:2 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 19 0:CMN_INST 0x00107804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08000002:Addr0: 2t, Addr1: 0t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0xc8020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:3 3 RGB_INST: 0x006de220:rgb_A_src:0 R/G/B 0 rgb_B_src:3 A/A/A 0 targ: 0 4 ALPHA_INST:0x00c09030:MAD dest:3 alp_A_src:1 B 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 20 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08000004:Addr0: 4t, Addr1: 0t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08000c01:Addr0: 1t, Addr1: 3t, Addr2: 128t, srcp:0 3 RGB_INST: 0x006d8220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 A/A/A 0 targ: 0 4 ALPHA_INST:0x0068d010:MAD dest:1 alp_A_src:1 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20221000:MAD dest:0 rgb_C_src:1 R/G/B 0 alp_C_src:0 0 0 21 0:CMN_INST 0x00084a00:ALU NOP wmask: AR omask: NONE 1:RGB_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x00400800:Addr0: 0t, Addr1: 2t, Addr2: 4t, srcp:0 3 RGB_INST: 0x0091a48c:rgb_A_src:0 A/0/0 0 rgb_B_src:1 A/0/0 0 targ: 0 4 ALPHA_INST:0x00c0e000:MAD dest:0 alp_A_src:2 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 22 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0xc8041401:Addr0: 1t, Addr1: 5c, Addr2: 128t, srcp:3 2:ALPHA_ADDR 0x08000403:Addr0: 3t, Addr1: 1t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00006221:rgb_A_src:1 R/G/B 0 rgb_B_src:3 R/R/R 0 targ: 0 4 ALPHA_INST:0x0068c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 23 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0x08000080:Addr0: 128t, Addr1: 0t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08000501:Addr0: 1c, Addr1: 1t, Addr2: 128t, srcp:0 3 RGB_INST: 0x006d836d:rgb_A_src:1 A/A/A 0 rgb_B_src:0 A/A/A 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00221000:MAD dest:0 rgb_C_src:1 R/G/B 0 alp_C_src:0 R 0 24 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0x00200400:Addr0: 0t, Addr1: 1t, Addr2: 2t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 25 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 r300: Initial fragment program FRAG DCL IN[0], FOG, PERSPECTIVE DCL IN[1], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[1..2] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL IMM[0] FLT32 { 1.0000, 0.0000, 0.0000, 0.0000} 0: TEX TEMP[0], IN[1].xyyy, SAMP[0], 2D 1: MOV TEMP[1].w, TEMP[0] 2: ADD TEMP[2].x, CONST[2].zzzz, -IN[0].xxxx 3: ADD TEMP[3].x, CONST[2].zzzz, -CONST[2].yyyy 4: RCP TEMP[3].x, TEMP[3].xxxx 5: MUL_SAT TEMP[2].x, TEMP[2].xxxx, TEMP[3].xxxx 6: ADD TEMP[3].x, IMM[0].xxxx, -TEMP[2].xxxx 7: MUL TEMP[3].xyz, CONST[1].xyzz, TEMP[3].xxxx 8: MAD TEMP[1].xyz, TEMP[0].xyzz, TEMP[2].xxxx, TEMP[3].xyzz 9: MOV_SAT OUT[0], TEMP[1] 10: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[0]; 1: MOV temp[1].w, temp[0]; 2: ADD temp[2].x, const[2].zzzz, -input[0].xxxx; 3: ADD temp[3].x, const[2].zzzz, -const[2].yyyy; 4: RCP temp[3].x, temp[3].xxxx; 5: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 6: ADD temp[3].x, temp[0].1111, -temp[2].xxxx; 7: MUL temp[3].xyz, const[1].xyzz, temp[3].xxxx; 8: MAD temp[1].xyz, temp[0].xyzz, temp[2].xxxx, temp[3].xyzz; 9: MOV_SAT output[0], temp[1]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[0]; 1: MOV temp[1].w, temp[0]; 2: ADD temp[2].x, const[2].zzzz, -input[0].xxxx; 3: ADD temp[3].x, const[2].zzzz, -const[2].yyyy; 4: RCP temp[3].x, temp[3].xxxx; 5: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 6: ADD temp[3].x, temp[0].1111, -temp[2].xxxx; 7: MUL temp[3].xyz, const[1].xyzz, temp[3].xxxx; 8: MAD temp[1].xyz, temp[0].xyzz, temp[2].xxxx, temp[3].xyzz; 9: MOV_SAT output[0], temp[1]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[0]; 1: MOV temp[1].w, temp[0]; 2: ADD temp[2].x, const[2].zzzz, -input[0].xxxx; 3: ADD temp[3].x, const[2].zzzz, -const[2].yyyy; 4: RCP temp[3].x, temp[3].xxxx; 5: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 6: ADD temp[3].x, temp[0].1111, -temp[2].xxxx; 7: MUL temp[3].xyz, const[1].xyzz, temp[3].xxxx; 8: MAD temp[1].xyz, temp[0].xyzz, temp[2].xxxx, temp[3].xyzz; 9: MOV_SAT output[0], temp[1]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[0]; 1: MOV temp[1].w, temp[0]; 2: ADD temp[2].x, const[2].zzzz, -input[0].xxxx; 3: ADD temp[3].x, const[2].zzzz, -const[2].yyyy; 4: RCP temp[3].x, temp[3].xxxx; 5: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 6: ADD temp[3].x, temp[0].1111, -temp[2].xxxx; 7: MUL temp[3].xyz, const[1].xyzz, temp[3].xxxx; 8: MAD temp[1].xyz, temp[0].xyzz, temp[2].xxxx, temp[3].xyzz; 9: MOV_SAT output[0], temp[1]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[0]; 1: MOV temp[1].w, temp[0]; 2: ADD temp[2].x, const[2].zzzz, -input[0].xxxx; 3: ADD temp[3].x, const[2].zzzz, -const[2].yyyy; 4: RCP temp[3].x, temp[3].xxxx; 5: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 6: ADD temp[3].x, temp[0].1111, -temp[2].xxxx; 7: MUL temp[3].xyz, const[1].xyzz, temp[3].xxxx; 8: MAD temp[1].xyz, temp[0].xyzz, temp[2].xxxx, temp[3].xyzz; 9: MOV_SAT output[0], temp[1]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[0]; 1: MOV temp[1].w, temp[0]; 2: ADD temp[2].x, const[2].zzzz, -input[0].xxxx; 3: ADD temp[3].x, const[2].zzzz, -const[2].yyyy; 4: RCP temp[3].x, temp[3].xxxx; 5: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 6: ADD temp[3].x, temp[0].1111, -temp[2].xxxx; 7: MUL temp[3].xyz, const[1].xyzz, temp[3].xxxx; 8: MAD temp[1].xyz, temp[0].xyzz, temp[2].xxxx, temp[3].xyzz; 9: MOV_SAT output[0], temp[1]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[0]; 1: MOV temp[1].w, temp[0]; 2: ADD temp[2].x, const[2].zzzz, -input[0].xxxx; 3: ADD temp[3].x, const[2].zzzz, -const[2].yyyy; 4: RCP temp[3].x, temp[3].xxxx; 5: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 6: ADD temp[3].x, temp[0].1111, -temp[2].xxxx; 7: MUL temp[3].xyz, const[1].xyzz, temp[3].xxxx; 8: MAD temp[1].xyz, temp[0].xyzz, temp[2].xxxx, temp[3].xyzz; 9: MOV_SAT output[0], temp[1]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[0]; 1: MOV temp[1].w, temp[0].___w; 2: ADD temp[2].x, const[2].z___, -input[0].x___; 3: ADD temp[3].x, const[2].z___, -const[2].y___; 4: RCP temp[3].x, temp[3].x___; 5: MUL_SAT temp[2].x, temp[2].x___, temp[3].x___; 6: ADD temp[3].x, temp[0].1___, -temp[2].x___; 7: MUL temp[3].xyz, const[1].xyz_, temp[3].xxx_; 8: MAD temp[1].xyz, temp[0].xyz_, temp[2].xxx_, temp[3].xyz_; 9: MOV_SAT output[0], temp[1]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[4], input[1].xy__, 2D[0]; 1: MOV temp[5].w, temp[4].___w; 2: ADD temp[6].x, const[2].z___, -input[0].x___; 3: ADD temp[7].x, const[2].z___, -const[2].y___; 4: RCP temp[8].x, temp[7].x___; 5: MUL_SAT temp[9].x, temp[6].x___, temp[8].x___; 6: ADD temp[10].x, temp[0].1___, -temp[9].x___; 7: MUL temp[11].xyz, const[1].xyz_, temp[10].xxx_; 8: MAD temp[5].xyz, temp[4].xyz_, temp[9].xxx_, temp[11].xyz_; 9: MOV_SAT output[0], temp[5]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[4], input[1].xy__, 2D[0]; 1: MOV temp[5].w, temp[4].___w; 2: ADD temp[6].x, const[2].z___, -input[0].x___; 3: ADD temp[7].x, const[2].z___, -const[2].y___; 4: RCP temp[8].x, temp[7].x___; 5: MUL_SAT temp[9].x, temp[6].x___, temp[8].x___; 6: MUL temp[11].xyz, const[1].xyz_, (1 - temp[9]).xxx_; 7: MAD temp[5].xyz, temp[4].xyz_, temp[9].xxx_, temp[11].xyz_; 8: MOV_SAT output[0], temp[5]; Fragment Program: after 'inline literals' # Radeon Compiler Program 0: TEX temp[4], input[1].xy__, 2D[0]; 1: MOV temp[5].w, temp[4].___w; 2: ADD temp[6].x, const[2].z___, -input[0].x___; 3: ADD temp[7].x, const[2].z___, -const[2].y___; 4: RCP temp[8].x, temp[7].x___; 5: MUL_SAT temp[9].x, temp[6].x___, temp[8].x___; 6: MUL temp[11].xyz, const[1].xyz_, (1 - temp[9]).xxx_; 7: MAD temp[5].xyz, temp[4].xyz_, temp[9].xxx_, temp[11].xyz_; 8: MOV_SAT output[0], temp[5]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[4], input[1].xy__, 2D[0]; 1: MOV temp[5].w, temp[4].___w; 2: ADD temp[6].x, const[2].z___, -input[0].x___; 3: ADD temp[7].x, const[2].z___, -const[2].y___; 4: RCP temp[8].x, temp[7].x___; 5: MUL_SAT temp[9].x, temp[6].x___, temp[8].x___; 6: MUL temp[11].xyz, const[1].xyz_, (1 - temp[9]).xxx_; 7: MAD temp[5].xyz, temp[4].xyz_, temp[9].xxx_, temp[11].xyz_; 8: MOV_SAT output[0], temp[5]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[4], input[1].xy__, 2D[0]; 1: MOV temp[5].w, temp[4].___w; 2: ADD temp[6].x, const[2].z___, -input[0].x___; 3: ADD temp[7].x, const[2].z___, -const[2].y___; 4: RCP temp[8].x, temp[7].x___; 5: MUL_SAT temp[9].x, temp[6].x___, temp[8].x___; 6: MUL temp[11].xyz, const[1].xyz_, (1 - temp[9]).xxx_; 7: MAD temp[5].xyz, temp[4].xyz_, temp[9].xxx_, temp[11].xyz_; 8: MOV_SAT output[0], temp[5]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[4], input[1].xy__, 2D[0]; 1: src0.w = temp[4] MAD temp[5].w, src0.w, src0.1, src0.0 2: src0.xyz = const[2], src1.xyz = input[0] MAD temp[6].x, src0.z__, src0.111, -src1.x__ 3: src0.xyz = const[2] MAD temp[7].x, src0.z__, src0.111, -src0.y__ 4: src0.xyz = temp[7] REPL_ALPHA temp[8].x RCP, src0.x 5: src0.xyz = temp[6], src1.xyz = temp[8] MAD_SAT temp[9].x, src0.x__, src1.x__, src0.000 6: src0.xyz = temp[9], src1.xyz = const[1], srcp.xyz = (1 - src0) MAD temp[11].xyz, src1.xyz, srcp.xxx, src0.000 7: src0.xyz = temp[4], src1.xyz = temp[9], src2.xyz = temp[11] MAD temp[5].xyz, src0.xyz, src1.xxx, src2.xyz 8: src0.xyz = temp[5], src0.w = temp[5] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[4], input[1].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[2], src1.xyz = input[0] MAD temp[7].x, src0.z__, src0.111, -src0.y__ MAD temp[6].w, src0.z, src0.1, -src1.x 3: src0.xyz = temp[7] REPL_ALPHA temp[8].x RCP, src0.x 4: src0.xyz = temp[6], src0.w = temp[6], src1.xyz = temp[8], src1.w = temp[4] SEM_WAIT MAD_SAT temp[9].x, src0.w__, src1.x__, src0.000 MAD temp[5].w, src1.w, src0.1, src0.0 5: src0.xyz = temp[9], src1.xyz = const[1], srcp.xyz = (1 - src0) MAD temp[11].xyz, src1.xyz, srcp.xxx, src0.000 6: src0.xyz = temp[4], src1.xyz = temp[9], src2.xyz = temp[11] MAD temp[5].xyz, src0.xyz, src1.xxx, src2.xyz 7: src0.xyz = temp[5], src0.w = temp[5] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[4], input[1].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[2], src1.xyz = input[0] MAD temp[7].x, src0.z__, src0.111, -src0.y__ MAD temp[6].w, src0.z, src0.1, -src1.x 3: src0.xyz = temp[7] REPL_ALPHA temp[8].x RCP, src0.x 4: src0.w = temp[6], src1.xyz = temp[8], src1.w = temp[4] SEM_WAIT MAD_SAT temp[9].x, src0.w__, src1.x__, src0.000 MAD temp[5].w, src1.w, src0.1, src0.0 5: src0.xyz = temp[9], src1.xyz = const[1], srcp.xyz = (1 - src0) MAD temp[11].xyz, src1.xyz, srcp.xxx, src0.000 6: src0.xyz = temp[4], src1.xyz = temp[9], src2.xyz = temp[11] MAD temp[5].xyz, src0.xyz, src1.xxx, src2.xyz 7: src0.xyz = temp[5], src0.w = temp[5] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[2], src1.xyz = input[1] MAD temp[1].x, src0.z__, src0.1__, -src0.y__ MAD temp[1].w, src0.z, src0.1, -src1.x 3: src0.xyz = temp[1] REPL_ALPHA temp[1].x RCP, src0.x 4: src0.w = temp[1], src1.xyz = temp[1], src1.w = temp[0] SEM_WAIT MAD_SAT temp[1].x, src0.w__, src1.x__, src0.0__ MAD temp[1].w, src1.w, src0.1, src0.0 5: src0.xyz = temp[1], src1.xyz = const[1], srcp.xyz = (1 - src0) MAD temp[2].xyz, src1.xyz, srcp.xxx, src0.000 6: src0.xyz = temp[0], src1.xyz = temp[1], src2.xyz = temp[2] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 7: src0.xyz = temp[0], src0.w = temp[1] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00004800:ALU wmask: AR omask: NONE 1:RGB_ADDR 0x08000502:Addr0: 2c, Addr1: 1t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930488:rgb_A_src:0 B/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0 4 ALPHA_INST:0x00c08010:MAD dest:1 alp_A_src:0 B 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x42c84010:MAD dest:1 rgb_C_src:0 G/0/0 1 alp_C_src:1 R 1 2 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0 4 ALPHA_INST:0x0000000a:RCP dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x0000001a:SOP dest:1 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 3 0:CMN_INST 0x00084a04:ALU TEX_WAIT NOP wmask: AR omask: NONE 1:RGB_ADDR 0x08000480:Addr0: 128t, Addr1: 1t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08000001:Addr0: 1t, Addr1: 0t, Addr2: 128t, srcp:0 3 RGB_INST: 0x0090248c:rgb_A_src:0 A/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00c0d010:MAD dest:1 alp_A_src:1 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 4 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0xc8040401:Addr0: 1t, Addr1: 1c, Addr2: 128t, srcp:3 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00006221:rgb_A_src:1 R/G/B 0 rgb_B_src:3 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 5 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0x00200400:Addr0: 0t, Addr1: 1t, Addr2: 2t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 6 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 fixme:d3d:state_zfunc D3DCMP_NOTEQUAL and D3DCMP_EQUAL do not work correctly yet. r300: Initial fragment program FRAG DCL IN[0], COLOR, COLOR DCL IN[1], FOG, PERSPECTIVE DCL IN[2], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[1..3] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL IMM[0] FLT32 { 2.0000, 1.0000, 0.0000, 0.0000} 0: TEX TEMP[0], IN[2].xyyy, SAMP[0], 2D 1: MUL TEMP[1].xyz, TEMP[0].xyzz, IN[0].xyzz 2: MUL TEMP[0].x, TEMP[0].wwww, IN[0].wwww 3: MOV TEMP[1].w, TEMP[0].xxxx 4: MUL TEMP[0].xyz, TEMP[1].xyzz, CONST[1].xyzz 5: MUL TEMP[1].xyz, IMM[0].xxxx, TEMP[0].xyzz 6: MOV TEMP[0].w, TEMP[1] 7: ADD TEMP[2].x, CONST[3].zzzz, -IN[1].xxxx 8: ADD TEMP[3].x, CONST[3].zzzz, -CONST[3].yyyy 9: RCP TEMP[3].x, TEMP[3].xxxx 10: MUL_SAT TEMP[2].x, TEMP[2].xxxx, TEMP[3].xxxx 11: ADD TEMP[3].x, IMM[0].yyyy, -TEMP[2].xxxx 12: MUL TEMP[3].xyz, CONST[2].xyzz, TEMP[3].xxxx 13: MAD TEMP[0].xyz, TEMP[1].xyzz, TEMP[2].xxxx, TEMP[3].xyzz 14: MOV_SAT OUT[0], TEMP[0] 15: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[2].xyyy, 2D[0]; 1: MUL temp[1].xyz, temp[0].xyzz, input[0].xyzz; 2: MUL temp[0].x, temp[0].wwww, input[0].wwww; 3: MOV temp[1].w, temp[0].xxxx; 4: MUL temp[0].xyz, temp[1].xyzz, const[1].xyzz; 5: MUL temp[1].xyz, const[4].xxxx, temp[0].xyzz; 6: MOV temp[0].w, temp[1]; 7: ADD temp[2].x, const[3].zzzz, -input[1].xxxx; 8: ADD temp[3].x, const[3].zzzz, -const[3].yyyy; 9: RCP temp[3].x, temp[3].xxxx; 10: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 11: ADD temp[3].x, const[4].yyyy, -temp[2].xxxx; 12: MUL temp[3].xyz, const[2].xyzz, temp[3].xxxx; 13: MAD temp[0].xyz, temp[1].xyzz, temp[2].xxxx, temp[3].xyzz; 14: MOV_SAT output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[2].xyyy, 2D[0]; 1: MUL temp[1].xyz, temp[0].xyzz, input[0].xyzz; 2: MUL temp[0].x, temp[0].wwww, input[0].wwww; 3: MOV temp[1].w, temp[0].xxxx; 4: MUL temp[0].xyz, temp[1].xyzz, const[1].xyzz; 5: MUL temp[1].xyz, const[4].xxxx, temp[0].xyzz; 6: MOV temp[0].w, temp[1]; 7: ADD temp[2].x, const[3].zzzz, -input[1].xxxx; 8: ADD temp[3].x, const[3].zzzz, -const[3].yyyy; 9: RCP temp[3].x, temp[3].xxxx; 10: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 11: ADD temp[3].x, const[4].yyyy, -temp[2].xxxx; 12: MUL temp[3].xyz, const[2].xyzz, temp[3].xxxx; 13: MAD temp[0].xyz, temp[1].xyzz, temp[2].xxxx, temp[3].xyzz; 14: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[2].xyyy, 2D[0]; 1: MUL temp[1].xyz, temp[0].xyzz, input[0].xyzz; 2: MUL temp[0].x, temp[0].wwww, input[0].wwww; 3: MOV temp[1].w, temp[0].xxxx; 4: MUL temp[0].xyz, temp[1].xyzz, const[1].xyzz; 5: MUL temp[1].xyz, const[4].xxxx, temp[0].xyzz; 6: MOV temp[0].w, temp[1]; 7: ADD temp[2].x, const[3].zzzz, -input[1].xxxx; 8: ADD temp[3].x, const[3].zzzz, -const[3].yyyy; 9: RCP temp[3].x, temp[3].xxxx; 10: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 11: ADD temp[3].x, const[4].yyyy, -temp[2].xxxx; 12: MUL temp[3].xyz, const[2].xyzz, temp[3].xxxx; 13: MAD temp[0].xyz, temp[1].xyzz, temp[2].xxxx, temp[3].xyzz; 14: MOV_SAT output[0], temp[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[2].xyyy, 2D[0]; 1: MUL temp[1].xyz, temp[0].xyzz, input[0].xyzz; 2: MUL temp[0].x, temp[0].wwww, input[0].wwww; 3: MOV temp[1].w, temp[0].xxxx; 4: MUL temp[0].xyz, temp[1].xyzz, const[1].xyzz; 5: MUL temp[1].xyz, const[4].xxxx, temp[0].xyzz; 6: MOV temp[0].w, temp[1]; 7: ADD temp[2].x, const[3].zzzz, -input[1].xxxx; 8: ADD temp[3].x, const[3].zzzz, -const[3].yyyy; 9: RCP temp[3].x, temp[3].xxxx; 10: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 11: ADD temp[3].x, const[4].yyyy, -temp[2].xxxx; 12: MUL temp[3].xyz, const[2].xyzz, temp[3].xxxx; 13: MAD temp[0].xyz, temp[1].xyzz, temp[2].xxxx, temp[3].xyzz; 14: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[2].xyyy, 2D[0]; 1: MUL temp[1].xyz, temp[0].xyzz, input[0].xyzz; 2: MUL temp[0].x, temp[0].wwww, input[0].wwww; 3: MOV temp[1].w, temp[0].xxxx; 4: MUL temp[0].xyz, temp[1].xyzz, const[1].xyzz; 5: MUL temp[1].xyz, const[4].xxxx, temp[0].xyzz; 6: MOV temp[0].w, temp[1]; 7: ADD temp[2].x, const[3].zzzz, -input[1].xxxx; 8: ADD temp[3].x, const[3].zzzz, -const[3].yyyy; 9: RCP temp[3].x, temp[3].xxxx; 10: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 11: ADD temp[3].x, const[4].yyyy, -temp[2].xxxx; 12: MUL temp[3].xyz, const[2].xyzz, temp[3].xxxx; 13: MAD temp[0].xyz, temp[1].xyzz, temp[2].xxxx, temp[3].xyzz; 14: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: TEX temp[0], input[2].xyyy, 2D[0]; 1: MUL temp[1].xyz, temp[0].xyzz, input[0].xyzz; 2: MUL temp[0].x, temp[0].wwww, input[0].wwww; 3: MOV temp[1].w, temp[0].xxxx; 4: MUL temp[0].xyz, temp[1].xyzz, const[1].xyzz; 5: MUL temp[1].xyz, const[4].xxxx, temp[0].xyzz; 6: MOV temp[0].w, temp[1]; 7: ADD temp[2].x, const[3].zzzz, -input[1].xxxx; 8: ADD temp[3].x, const[3].zzzz, -const[3].yyyy; 9: RCP temp[3].x, temp[3].xxxx; 10: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 11: ADD temp[3].x, const[4].yyyy, -temp[2].xxxx; 12: MUL temp[3].xyz, const[2].xyzz, temp[3].xxxx; 13: MAD temp[0].xyz, temp[1].xyzz, temp[2].xxxx, temp[3].xyzz; 14: MOV_SAT output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[2].xyyy, 2D[0]; 1: MUL temp[1].xyz, temp[0].xyzz, input[0].xyzz; 2: MUL temp[0].x, temp[0].wwww, input[0].wwww; 3: MOV temp[1].w, temp[0].xxxx; 4: MUL temp[0].xyz, temp[1].xyzz, const[1].xyzz; 5: MUL temp[1].xyz, const[4].xxxx, temp[0].xyzz; 6: MOV temp[0].w, temp[1]; 7: ADD temp[2].x, const[3].zzzz, -input[1].xxxx; 8: ADD temp[3].x, const[3].zzzz, -const[3].yyyy; 9: RCP temp[3].x, temp[3].xxxx; 10: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 11: ADD temp[3].x, const[4].yyyy, -temp[2].xxxx; 12: MUL temp[3].xyz, const[2].xyzz, temp[3].xxxx; 13: MAD temp[0].xyz, temp[1].xyzz, temp[2].xxxx, temp[3].xyzz; 14: MOV_SAT output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[2].xy__, 2D[0]; 1: MUL temp[1].xyz, temp[0].xyz_, input[0].xyz_; 2: MUL temp[0].x, temp[0].w___, input[0].w___; 3: MOV temp[1].w, temp[0].___x; 4: MUL temp[0].xyz, temp[1].xyz_, const[1].xyz_; 5: MUL temp[1].xyz, const[4].xxx_, temp[0].xyz_; 6: MOV temp[0].w, temp[1].___w; 7: ADD temp[2].x, const[3].z___, -input[1].x___; 8: ADD temp[3].x, const[3].z___, -const[3].y___; 9: RCP temp[3].x, temp[3].x___; 10: MUL_SAT temp[2].x, temp[2].x___, temp[3].x___; 11: ADD temp[3].x, const[4].y___, -temp[2].x___; 12: MUL temp[3].xyz, const[2].xyz_, temp[3].xxx_; 13: MAD temp[0].xyz, temp[1].xyz_, temp[2].xxx_, temp[3].xyz_; 14: MOV_SAT output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[4], input[2].xy__, 2D[0]; 1: MUL temp[5].xyz, temp[4].xyz_, input[0].xyz_; 2: MUL temp[6].x, temp[4].w___, input[0].w___; 3: MOV temp[7].w, temp[6].___x; 4: MUL temp[8].xyz, temp[5].xyz_, const[1].xyz_; 5: MUL temp[9].xyz, const[4].xxx_, temp[8].xyz_; 6: MOV temp[10].w, temp[7].___w; 7: ADD temp[11].x, const[3].z___, -input[1].x___; 8: ADD temp[12].x, const[3].z___, -const[3].y___; 9: RCP temp[13].x, temp[12].x___; 10: MUL_SAT temp[14].x, temp[11].x___, temp[13].x___; 11: ADD temp[15].x, const[4].y___, -temp[14].x___; 12: MUL temp[16].xyz, const[2].xyz_, temp[15].xxx_; 13: MAD temp[10].xyz, temp[9].xyz_, temp[14].xxx_, temp[16].xyz_; 14: MOV_SAT output[0], temp[10]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[4], input[2].xy__, 2D[0]; 1: MUL temp[5].xyz, temp[4].xyz_, input[0].xyz_; 2: MUL temp[6].x, temp[4].w___, input[0].w___; 3: MUL temp[9].xyz * 2, temp[5].xyz_, const[1].xyz_; 4: MOV temp[10].w, temp[6].___x; 5: ADD temp[11].x, const[3].z___, -input[1].x___; 6: ADD temp[12].x, const[3].z___, -const[3].y___; 7: RCP temp[13].x, temp[12].x___; 8: MUL_SAT temp[14].x, temp[11].x___, temp[13].x___; 9: MUL temp[16].xyz, const[2].xyz_, (1 - temp[14]).xxx_; 10: MAD temp[10].xyz, temp[9].xyz_, temp[14].xxx_, temp[16].xyz_; 11: MOV_SAT output[0], temp[10]; Fragment Program: after 'inline literals' # Radeon Compiler Program 0: TEX temp[4], input[2].xy__, 2D[0]; 1: MUL temp[5].xyz, temp[4].xyz_, input[0].xyz_; 2: MUL temp[6].x, temp[4].w___, input[0].w___; 3: MUL temp[9].xyz * 2, temp[5].xyz_, const[1].xyz_; 4: MOV temp[10].w, temp[6].___x; 5: ADD temp[11].x, const[3].z___, -input[1].x___; 6: ADD temp[12].x, const[3].z___, -const[3].y___; 7: RCP temp[13].x, temp[12].x___; 8: MUL_SAT temp[14].x, temp[11].x___, temp[13].x___; 9: MUL temp[16].xyz, const[2].xyz_, (1 - temp[14]).xxx_; 10: MAD temp[10].xyz, temp[9].xyz_, temp[14].xxx_, temp[16].xyz_; 11: MOV_SAT output[0], temp[10]; CONST[4] = { 2.0000 1.0000 0.0000 0.0000 } Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[4], input[2].xy__, 2D[0]; 1: MUL temp[5].xyz, temp[4].xyz_, input[0].xyz_; 2: MUL temp[6].x, temp[4].w___, input[0].w___; 3: MUL temp[9].xyz * 2, temp[5].xyz_, const[1].xyz_; 4: MOV temp[10].w, temp[6].___x; 5: ADD temp[11].x, const[3].z___, -input[1].x___; 6: ADD temp[12].x, const[3].z___, -const[3].y___; 7: RCP temp[13].x, temp[12].x___; 8: MUL_SAT temp[14].x, temp[11].x___, temp[13].x___; 9: MUL temp[16].xyz, const[2].xyz_, (1 - temp[14]).xxx_; 10: MAD temp[10].xyz, temp[9].xyz_, temp[14].xxx_, temp[16].xyz_; 11: MOV_SAT output[0], temp[10]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[4], input[2].xy__, 2D[0]; 1: MUL temp[5].xyz, temp[4].xyz_, input[0].xyz_; 2: MUL temp[6].x, temp[4].w___, input[0].w___; 3: MUL temp[9].xyz * 2, temp[5].xyz_, const[1].xyz_; 4: MOV temp[10].w, temp[6].___x; 5: ADD temp[11].x, const[3].z___, -input[1].x___; 6: ADD temp[12].x, const[3].z___, -const[3].y___; 7: RCP temp[13].x, temp[12].x___; 8: MUL_SAT temp[14].x, temp[11].x___, temp[13].x___; 9: MUL temp[16].xyz, const[2].xyz_, (1 - temp[14]).xxx_; 10: MAD temp[10].xyz, temp[9].xyz_, temp[14].xxx_, temp[16].xyz_; 11: MOV_SAT output[0], temp[10]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[4], input[2].xy__, 2D[0]; 1: src0.xyz = temp[4], src1.xyz = input[0] MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 2: src0.w = temp[4], src1.w = input[0] MAD temp[6].x, src0.w__, src1.w__, src0.000 3: src0.xyz = temp[5], src1.xyz = const[1] MAD temp[9].xyz * 2, src0.xyz, src1.xyz, src0.000 4: src0.xyz = temp[6] MAD temp[10].w, src0.x, src0.1, src0.0 5: src0.xyz = const[3], src1.xyz = input[1] MAD temp[11].x, src0.z__, src0.111, -src1.x__ 6: src0.xyz = const[3] MAD temp[12].x, src0.z__, src0.111, -src0.y__ 7: src0.xyz = temp[12] REPL_ALPHA temp[13].x RCP, src0.x 8: src0.xyz = temp[11], src1.xyz = temp[13] MAD_SAT temp[14].x, src0.x__, src1.x__, src0.000 9: src0.xyz = temp[14], src1.xyz = const[2], srcp.xyz = (1 - src0) MAD temp[16].xyz, src1.xyz, srcp.xxx, src0.000 10: src0.xyz = temp[9], src1.xyz = temp[14], src2.xyz = temp[16] MAD temp[10].xyz, src0.xyz, src1.xxx, src2.xyz 11: src0.xyz = temp[10], src0.w = temp[10] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[4], input[2].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[3], src1.xyz = input[1] MAD temp[12].x, src0.z__, src0.111, -src0.y__ MAD temp[11].w, src0.z, src0.1, -src1.x 3: src0.xyz = temp[12] RCP temp[13].w, src0.x 4: src0.xyz = temp[11], src0.w = temp[11], src1.xyz = temp[13], src1.w = temp[13] MAD_SAT temp[14].x, src0.w__, src1.w__, src0.000 5: src0.xyz = temp[14], src1.xyz = const[2], srcp.xyz = (1 - src0) MAD temp[16].xyz, src1.xyz, srcp.xxx, src0.000 6: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = input[0], src1.w = input[0] SEM_WAIT MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[6].w, src0.w, src1.w, src0.0 7: src0.xyz = temp[5], src0.w = temp[6], src1.xyz = const[1] MAD temp[9].xyz * 2, src0.xyz, src1.xyz, src0.000 MAD temp[10].w, src0.w, src0.1, src0.0 8: src0.xyz = temp[9], src1.xyz = temp[14], src2.xyz = temp[16] MAD temp[10].xyz, src0.xyz, src1.xxx, src2.xyz 9: src0.xyz = temp[10], src0.w = temp[10] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[4], input[2].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[3], src1.xyz = input[1] MAD temp[12].x, src0.z__, src0.111, -src0.y__ MAD temp[11].w, src0.z, src0.1, -src1.x 3: src0.xyz = temp[12] RCP temp[13].w, src0.x 4: src0.w = temp[11], src1.w = temp[13] MAD_SAT temp[14].x, src0.w__, src1.w__, src0.000 5: src0.xyz = temp[14], src1.xyz = const[2], srcp.xyz = (1 - src0) MAD temp[16].xyz, src1.xyz, srcp.xxx, src0.000 6: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = input[0], src1.w = input[0] SEM_WAIT MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[6].w, src0.w, src1.w, src0.0 7: src0.xyz = temp[5], src0.w = temp[6], src1.xyz = const[1] MAD temp[9].xyz * 2, src0.xyz, src1.xyz, src0.000 MAD temp[10].w, src0.w, src0.1, src0.0 8: src0.xyz = temp[9], src1.xyz = temp[14], src2.xyz = temp[16] MAD temp[10].xyz, src0.xyz, src1.xxx, src2.xyz 9: src0.xyz = temp[10], src0.w = temp[10] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[1], input[1].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[3], src1.xyz = input[2] MAD temp[2].x, src0.z__, src0.1__, -src0.y__ MAD temp[2].w, src0.z, src0.1, -src1.x 3: src0.xyz = temp[2] RCP temp[3].w, src0.x 4: src0.w = temp[2], src1.w = temp[3] MAD_SAT temp[2].x, src0.w__, src1.w__, src0.0__ 5: src0.xyz = temp[2], src1.xyz = const[2], srcp.xyz = (1 - src0) MAD temp[3].xyz, src1.xyz, srcp.xxx, src0.000 6: src0.xyz = temp[1], src0.w = temp[1], src1.xyz = input[0], src1.w = input[0] SEM_WAIT MAD temp[0].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src1.w, src0.0 7: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = const[1] MAD temp[0].xyz * 2, src0.xyz, src1.xyz, src0.000 MAD temp[0].w, src0.w, src0.1, src0.0 8: src0.xyz = temp[0], src1.xyz = temp[2], src2.xyz = temp[3] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 9: src0.xyz = temp[0], src0.w = temp[0] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00004800:ALU wmask: AR omask: NONE 1:RGB_ADDR 0x08000903:Addr0: 3c, Addr1: 2t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930488:rgb_A_src:0 B/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0 4 ALPHA_INST:0x00c08020:MAD dest:2 alp_A_src:0 B 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x42c84020:MAD dest:2 rgb_C_src:0 G/0/0 1 alp_C_src:1 R 1 2 0:CMN_INST 0x00004000:ALU wmask: A omask: NONE 1:RGB_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0 4 ALPHA_INST:0x0000003a:RCP dest:3 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 3 0:CMN_INST 0x00080a00:ALU NOP wmask: R omask: NONE 1:RGB_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08000c02:Addr0: 2t, Addr1: 3t, Addr2: 128t, srcp:0 3 RGB_INST: 0x0091a48c:rgb_A_src:0 A/0/0 0 rgb_B_src:1 A/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 4 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0xc8040802:Addr0: 2t, Addr1: 2c, Addr2: 128t, srcp:3 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00006221:rgb_A_src:1 R/G/B 0 rgb_B_src:3 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490030:MAD dest:3 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 5 0:CMN_INST 0x00007804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08000001:Addr0: 1t, Addr1: 0t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08000001:Addr0: 1t, Addr1: 0t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 6 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08040400:Addr0: 0t, Addr1: 1c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x04442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 7 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0x00300800:Addr0: 0t, Addr1: 2t, Addr2: 3t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 8 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 r300: Initial fragment program FRAG DCL IN[0], FOG, PERSPECTIVE DCL IN[1], GENERIC[0], PERSPECTIVE DCL IN[2], GENERIC[1], PERSPECTIVE DCL IN[3], GENERIC[2], PERSPECTIVE DCL IN[4], GENERIC[3], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL CONST[0..1] DCL CONST[6..7] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL DCL TEMP[3], LOCAL DCL TEMP[4], LOCAL IMM[0] FLT32 { 4.0000, 1.0000, 0.0000, 0.0000} 0: TEX TEMP[0], IN[1].xyyy, SAMP[3], 2D 1: TEX TEMP[1].w, IN[2].xyyy, SAMP[2], 2D 2: TEX TEMP[2].w, IN[3].xyyy, SAMP[1], 2D 3: TEX TEMP[3].w, IN[4].xyyy, SAMP[0], 2D 4: DP3 TEMP[4].x, CONST[0].xyzz, TEMP[0].xyzz 5: MUL TEMP[4].x, TEMP[1].wwww, TEMP[4].xxxx 6: MUL TEMP[2].x, TEMP[2].wwww, TEMP[4].xxxx 7: MUL TEMP[2].x, IMM[0].xxxx, TEMP[2].xxxx 8: ADD TEMP[1].xyz, TEMP[2].xxxx, CONST[1].xyzz 9: MAD TEMP[0].x, TEMP[0].wwww, TEMP[3].wwww, TEMP[2].xxxx 10: MOV TEMP[1].w, TEMP[0].xxxx 11: MOV TEMP[0].w, TEMP[1] 12: ADD TEMP[2].x, CONST[7].zzzz, -IN[0].xxxx 13: ADD TEMP[3].x, CONST[7].zzzz, -CONST[7].yyyy 14: RCP TEMP[3].x, TEMP[3].xxxx 15: MUL_SAT TEMP[2].x, TEMP[2].xxxx, TEMP[3].xxxx 16: ADD TEMP[3].x, IMM[0].yyyy, -TEMP[2].xxxx 17: MUL TEMP[3].xyz, CONST[6].xyzz, TEMP[3].xxxx 18: MAD TEMP[0].xyz, TEMP[1].xyzz, TEMP[2].xxxx, TEMP[3].xyzz 19: MOV_SAT OUT[0], TEMP[0] 20: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[3]; 1: TEX temp[1].w, input[2].xyyy, 2D[2]; 2: TEX temp[2].w, input[3].xyyy, 2D[1]; 3: TEX temp[3].w, input[4].xyyy, 2D[0]; 4: DP3 temp[4].x, const[0].xyzz, temp[0].xyzz; 5: MUL temp[4].x, temp[1].wwww, temp[4].xxxx; 6: MUL temp[2].x, temp[2].wwww, temp[4].xxxx; 7: MUL temp[2].x, const[8].xxxx, temp[2].xxxx; 8: ADD temp[1].xyz, temp[2].xxxx, const[1].xyzz; 9: MAD temp[0].x, temp[0].wwww, temp[3].wwww, temp[2].xxxx; 10: MOV temp[1].w, temp[0].xxxx; 11: MOV temp[0].w, temp[1]; 12: ADD temp[2].x, const[7].zzzz, -input[0].xxxx; 13: ADD temp[3].x, const[7].zzzz, -const[7].yyyy; 14: RCP temp[3].x, temp[3].xxxx; 15: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 16: ADD temp[3].x, const[8].yyyy, -temp[2].xxxx; 17: MUL temp[3].xyz, const[6].xyzz, temp[3].xxxx; 18: MAD temp[0].xyz, temp[1].xyzz, temp[2].xxxx, temp[3].xyzz; 19: MOV_SAT output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[3]; 1: TEX temp[1].w, input[2].xyyy, 2D[2]; 2: TEX temp[2].w, input[3].xyyy, 2D[1]; 3: TEX temp[3].w, input[4].xyyy, 2D[0]; 4: DP3 temp[4].x, const[0].xyzz, temp[0].xyzz; 5: MUL temp[4].x, temp[1].wwww, temp[4].xxxx; 6: MUL temp[2].x, temp[2].wwww, temp[4].xxxx; 7: MUL temp[2].x, const[8].xxxx, temp[2].xxxx; 8: ADD temp[1].xyz, temp[2].xxxx, const[1].xyzz; 9: MAD temp[0].x, temp[0].wwww, temp[3].wwww, temp[2].xxxx; 10: MOV temp[1].w, temp[0].xxxx; 11: MOV temp[0].w, temp[1]; 12: ADD temp[2].x, const[7].zzzz, -input[0].xxxx; 13: ADD temp[3].x, const[7].zzzz, -const[7].yyyy; 14: RCP temp[3].x, temp[3].xxxx; 15: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 16: ADD temp[3].x, const[8].yyyy, -temp[2].xxxx; 17: MUL temp[3].xyz, const[6].xyzz, temp[3].xxxx; 18: MAD temp[0].xyz, temp[1].xyzz, temp[2].xxxx, temp[3].xyzz; 19: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[3]; 1: TEX temp[1].w, input[2].xyyy, 2D[2]; 2: TEX temp[2].w, input[3].xyyy, 2D[1]; 3: TEX temp[3].w, input[4].xyyy, 2D[0]; 4: DP3 temp[4].x, const[0].xyzz, temp[0].xyzz; 5: MUL temp[4].x, temp[1].wwww, temp[4].xxxx; 6: MUL temp[2].x, temp[2].wwww, temp[4].xxxx; 7: MUL temp[2].x, const[8].xxxx, temp[2].xxxx; 8: ADD temp[1].xyz, temp[2].xxxx, const[1].xyzz; 9: MAD temp[0].x, temp[0].wwww, temp[3].wwww, temp[2].xxxx; 10: MOV temp[1].w, temp[0].xxxx; 11: MOV temp[0].w, temp[1]; 12: ADD temp[2].x, const[7].zzzz, -input[0].xxxx; 13: ADD temp[3].x, const[7].zzzz, -const[7].yyyy; 14: RCP temp[3].x, temp[3].xxxx; 15: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 16: ADD temp[3].x, const[8].yyyy, -temp[2].xxxx; 17: MUL temp[3].xyz, const[6].xyzz, temp[3].xxxx; 18: MAD temp[0].xyz, temp[1].xyzz, temp[2].xxxx, temp[3].xyzz; 19: MOV_SAT output[0], temp[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[3]; 1: TEX temp[1].w, input[2].xyyy, 2D[2]; 2: TEX temp[2].w, input[3].xyyy, 2D[1]; 3: TEX temp[3].w, input[4].xyyy, 2D[0]; 4: DP3 temp[4].x, const[0].xyzz, temp[0].xyzz; 5: MUL temp[4].x, temp[1].wwww, temp[4].xxxx; 6: MUL temp[2].x, temp[2].wwww, temp[4].xxxx; 7: MUL temp[2].x, const[8].xxxx, temp[2].xxxx; 8: ADD temp[1].xyz, temp[2].xxxx, const[1].xyzz; 9: MAD temp[0].x, temp[0].wwww, temp[3].wwww, temp[2].xxxx; 10: MOV temp[1].w, temp[0].xxxx; 11: MOV temp[0].w, temp[1]; 12: ADD temp[2].x, const[7].zzzz, -input[0].xxxx; 13: ADD temp[3].x, const[7].zzzz, -const[7].yyyy; 14: RCP temp[3].x, temp[3].xxxx; 15: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 16: ADD temp[3].x, const[8].yyyy, -temp[2].xxxx; 17: MUL temp[3].xyz, const[6].xyzz, temp[3].xxxx; 18: MAD temp[0].xyz, temp[1].xyzz, temp[2].xxxx, temp[3].xyzz; 19: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[3]; 1: TEX temp[1].w, input[2].xyyy, 2D[2]; 2: TEX temp[2].w, input[3].xyyy, 2D[1]; 3: TEX temp[3].w, input[4].xyyy, 2D[0]; 4: DP3 temp[4].x, const[0].xyzz, temp[0].xyzz; 5: MUL temp[4].x, temp[1].wwww, temp[4].xxxx; 6: MUL temp[2].x, temp[2].wwww, temp[4].xxxx; 7: MUL temp[2].x, const[8].xxxx, temp[2].xxxx; 8: ADD temp[1].xyz, temp[2].xxxx, const[1].xyzz; 9: MAD temp[0].x, temp[0].wwww, temp[3].wwww, temp[2].xxxx; 10: MOV temp[1].w, temp[0].xxxx; 11: MOV temp[0].w, temp[1]; 12: ADD temp[2].x, const[7].zzzz, -input[0].xxxx; 13: ADD temp[3].x, const[7].zzzz, -const[7].yyyy; 14: RCP temp[3].x, temp[3].xxxx; 15: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 16: ADD temp[3].x, const[8].yyyy, -temp[2].xxxx; 17: MUL temp[3].xyz, const[6].xyzz, temp[3].xxxx; 18: MAD temp[0].xyz, temp[1].xyzz, temp[2].xxxx, temp[3].xyzz; 19: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[3]; 1: TEX temp[1].w, input[2].xyyy, 2D[2]; 2: TEX temp[2].w, input[3].xyyy, 2D[1]; 3: TEX temp[3].w, input[4].xyyy, 2D[0]; 4: DP3 temp[4].x, const[0].xyzz, temp[0].xyzz; 5: MUL temp[4].x, temp[1].wwww, temp[4].xxxx; 6: MUL temp[2].x, temp[2].wwww, temp[4].xxxx; 7: MUL temp[2].x, const[8].xxxx, temp[2].xxxx; 8: ADD temp[1].xyz, temp[2].xxxx, const[1].xyzz; 9: MAD temp[0].x, temp[0].wwww, temp[3].wwww, temp[2].xxxx; 10: MOV temp[1].w, temp[0].xxxx; 11: MOV temp[0].w, temp[1]; 12: ADD temp[2].x, const[7].zzzz, -input[0].xxxx; 13: ADD temp[3].x, const[7].zzzz, -const[7].yyyy; 14: RCP temp[3].x, temp[3].xxxx; 15: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 16: ADD temp[3].x, const[8].yyyy, -temp[2].xxxx; 17: MUL temp[3].xyz, const[6].xyzz, temp[3].xxxx; 18: MAD temp[0].xyz, temp[1].xyzz, temp[2].xxxx, temp[3].xyzz; 19: MOV_SAT output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[1].xyyy, 2D[3]; 1: TEX temp[1].w, input[2].xyyy, 2D[2]; 2: TEX temp[2].w, input[3].xyyy, 2D[1]; 3: TEX temp[3].w, input[4].xyyy, 2D[0]; 4: DP3 temp[4].x, const[0].xyzz, temp[0].xyzz; 5: MUL temp[4].x, temp[1].wwww, temp[4].xxxx; 6: MUL temp[2].x, temp[2].wwww, temp[4].xxxx; 7: MUL temp[2].x, const[8].xxxx, temp[2].xxxx; 8: ADD temp[1].xyz, temp[2].xxxx, const[1].xyzz; 9: MAD temp[0].x, temp[0].wwww, temp[3].wwww, temp[2].xxxx; 10: MOV temp[1].w, temp[0].xxxx; 11: MOV temp[0].w, temp[1]; 12: ADD temp[2].x, const[7].zzzz, -input[0].xxxx; 13: ADD temp[3].x, const[7].zzzz, -const[7].yyyy; 14: RCP temp[3].x, temp[3].xxxx; 15: MUL_SAT temp[2].x, temp[2].xxxx, temp[3].xxxx; 16: ADD temp[3].x, const[8].yyyy, -temp[2].xxxx; 17: MUL temp[3].xyz, const[6].xyzz, temp[3].xxxx; 18: MAD temp[0].xyz, temp[1].xyzz, temp[2].xxxx, temp[3].xyzz; 19: MOV_SAT output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[1].xy__, 2D[3]; 1: TEX temp[1].w, input[2].xy__, 2D[2]; 2: TEX temp[2].w, input[3].xy__, 2D[1]; 3: TEX temp[3].w, input[4].xy__, 2D[0]; 4: DP3 temp[4].x, const[0].xyz_, temp[0].xyz_; 5: MUL temp[4].x, temp[1].w___, temp[4].x___; 6: MUL temp[2].x, temp[2].w___, temp[4].x___; 7: MUL temp[2].x, const[8].x___, temp[2].x___; 8: ADD temp[1].xyz, temp[2].xxx_, const[1].xyz_; 9: MAD temp[0].x, temp[0].w___, temp[3].w___, temp[2].x___; 10: MOV temp[1].w, temp[0].___x; 11: MOV temp[0].w, temp[1].___w; 12: ADD temp[2].x, const[7].z___, -input[0].x___; 13: ADD temp[3].x, const[7].z___, -const[7].y___; 14: RCP temp[3].x, temp[3].x___; 15: MUL_SAT temp[2].x, temp[2].x___, temp[3].x___; 16: ADD temp[3].x, const[8].y___, -temp[2].x___; 17: MUL temp[3].xyz, const[6].xyz_, temp[3].xxx_; 18: MAD temp[0].xyz, temp[1].xyz_, temp[2].xxx_, temp[3].xyz_; 19: MOV_SAT output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[5], input[1].xy__, 2D[3]; 1: TEX temp[6].w, input[2].xy__, 2D[2]; 2: TEX temp[7].w, input[3].xy__, 2D[1]; 3: TEX temp[8].w, input[4].xy__, 2D[0]; 4: DP3 temp[9].x, const[0].xyz_, temp[5].xyz_; 5: MUL temp[10].x, temp[6].w___, temp[9].x___; 6: MUL temp[11].x, temp[7].w___, temp[10].x___; 7: MUL temp[12].x, const[8].x___, temp[11].x___; 8: ADD temp[13].xyz, temp[12].xxx_, const[1].xyz_; 9: MAD temp[14].x, temp[5].w___, temp[8].w___, temp[12].x___; 10: MOV temp[15].w, temp[14].___x; 11: MOV temp[16].w, temp[15].___w; 12: ADD temp[17].x, const[7].z___, -input[0].x___; 13: ADD temp[18].x, const[7].z___, -const[7].y___; 14: RCP temp[19].x, temp[18].x___; 15: MUL_SAT temp[20].x, temp[17].x___, temp[19].x___; 16: ADD temp[21].x, const[8].y___, -temp[20].x___; 17: MUL temp[22].xyz, const[6].xyz_, temp[21].xxx_; 18: MAD temp[16].xyz, temp[13].xyz_, temp[20].xxx_, temp[22].xyz_; 19: MOV_SAT output[0], temp[16]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[5], input[1].xy__, 2D[3]; 1: TEX temp[6].w, input[2].xy__, 2D[2]; 2: TEX temp[7].w, input[3].xy__, 2D[1]; 3: TEX temp[8].w, input[4].xy__, 2D[0]; 4: DP3 temp[9].x, const[0].xyz_, temp[5].xyz_; 5: MUL temp[10].x, temp[6].w___, temp[9].x___; 6: MUL temp[12].x * 4, temp[7].w___, temp[10].x___; 7: ADD temp[13].xyz, temp[12].xxx_, const[1].xyz_; 8: MAD temp[14].x, temp[5].w___, temp[8].w___, temp[12].x___; 9: MOV temp[16].w, temp[14].___x; 10: ADD temp[17].x, const[7].z___, -input[0].x___; 11: ADD temp[18].x, const[7].z___, -const[7].y___; 12: RCP temp[19].x, temp[18].x___; 13: MUL_SAT temp[20].x, temp[17].x___, temp[19].x___; 14: MUL temp[22].xyz, const[6].xyz_, (1 - temp[20]).xxx_; 15: MAD temp[16].xyz, temp[13].xyz_, temp[20].xxx_, temp[22].xyz_; 16: MOV_SAT output[0], temp[16]; Fragment Program: after 'inline literals' # Radeon Compiler Program 0: TEX temp[5], input[1].xy__, 2D[3]; 1: TEX temp[6].w, input[2].xy__, 2D[2]; 2: TEX temp[7].w, input[3].xy__, 2D[1]; 3: TEX temp[8].w, input[4].xy__, 2D[0]; 4: DP3 temp[9].x, const[0].xyz_, temp[5].xyz_; 5: MUL temp[10].x, temp[6].w___, temp[9].x___; 6: MUL temp[12].x * 4, temp[7].w___, temp[10].x___; 7: ADD temp[13].xyz, temp[12].xxx_, const[1].xyz_; 8: MAD temp[14].x, temp[5].w___, temp[8].w___, temp[12].x___; 9: MOV temp[16].w, temp[14].___x; 10: ADD temp[17].x, const[7].z___, -input[0].x___; 11: ADD temp[18].x, const[7].z___, -const[7].y___; 12: RCP temp[19].x, temp[18].x___; 13: MUL_SAT temp[20].x, temp[17].x___, temp[19].x___; 14: MUL temp[22].xyz, const[6].xyz_, (1 - temp[20]).xxx_; 15: MAD temp[16].xyz, temp[13].xyz_, temp[20].xxx_, temp[22].xyz_; 16: MOV_SAT output[0], temp[16]; CONST[8] = { 4.0000 1.0000 0.0000 0.0000 } Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[5], input[1].xy__, 2D[3]; 1: TEX temp[6].w, input[2].xy__, 2D[2]; 2: TEX temp[7].w, input[3].xy__, 2D[1]; 3: TEX temp[8].w, input[4].xy__, 2D[0]; 4: DP3 temp[9].x, const[0].xyz_, temp[5].xyz_; 5: MUL temp[10].x, temp[6].w___, temp[9].x___; 6: MUL temp[12].x * 4, temp[7].w___, temp[10].x___; 7: ADD temp[13].xyz, temp[12].xxx_, const[1].xyz_; 8: MAD temp[14].x, temp[5].w___, temp[8].w___, temp[12].x___; 9: MOV temp[16].w, temp[14].___x; 10: ADD temp[17].x, const[7].z___, -input[0].x___; 11: ADD temp[18].x, const[7].z___, -const[7].y___; 12: RCP temp[19].x, temp[18].x___; 13: MUL_SAT temp[20].x, temp[17].x___, temp[19].x___; 14: MUL temp[22].xyz, const[6].xyz_, (1 - temp[20]).xxx_; 15: MAD temp[16].xyz, temp[13].xyz_, temp[20].xxx_, temp[22].xyz_; 16: MOV_SAT output[0], temp[16]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[5], input[1].xy__, 2D[3]; 1: TEX temp[6].w, input[2].xy__, 2D[2]; 2: TEX temp[7].w, input[3].xy__, 2D[1]; 3: TEX temp[8].w, input[4].xy__, 2D[0]; 4: DP3 temp[9].x, const[0].xyz_, temp[5].xyz_; 5: MUL temp[10].x, temp[6].w___, temp[9].x___; 6: MUL temp[12].x * 4, temp[7].w___, temp[10].x___; 7: ADD temp[13].xyz, temp[12].xxx_, const[1].xyz_; 8: MAD temp[14].x, temp[5].w___, temp[8].w___, temp[12].x___; 9: MOV temp[16].w, temp[14].___x; 10: ADD temp[17].x, const[7].z___, -input[0].x___; 11: ADD temp[18].x, const[7].z___, -const[7].y___; 12: RCP temp[19].x, temp[18].x___; 13: MUL_SAT temp[20].x, temp[17].x___, temp[19].x___; 14: MUL temp[22].xyz, const[6].xyz_, (1 - temp[20]).xxx_; 15: MAD temp[16].xyz, temp[13].xyz_, temp[20].xxx_, temp[22].xyz_; 16: MOV_SAT output[0], temp[16]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[5], input[1].xy__, 2D[3]; 1: TEX temp[6].w, input[2].xy__, 2D[2]; 2: TEX temp[7].w, input[3].xy__, 2D[1]; 3: TEX temp[8].w, input[4].xy__, 2D[0]; 4: src0.xyz = const[0], src1.xyz = temp[5] DP3 temp[9].x, src0.xyz, src1.xyz 5: src0.xyz = temp[9], src0.w = temp[6] MAD temp[10].x, src0.w__, src0.x__, src0.000 6: src0.xyz = temp[10], src0.w = temp[7] MAD temp[12].x * 4, src0.w__, src0.x__, src0.000 7: src0.xyz = temp[12], src1.xyz = const[1] MAD temp[13].xyz, src0.xxx, src0.111, src1.xyz 8: src0.xyz = temp[12], src0.w = temp[5], src1.w = temp[8] MAD temp[14].x, src0.w__, src1.w__, src0.x__ 9: src0.xyz = temp[14] MAD temp[16].w, src0.x, src0.1, src0.0 10: src0.xyz = const[7], src1.xyz = input[0] MAD temp[17].x, src0.z__, src0.111, -src1.x__ 11: src0.xyz = const[7] MAD temp[18].x, src0.z__, src0.111, -src0.y__ 12: src0.xyz = temp[18] REPL_ALPHA temp[19].x RCP, src0.x 13: src0.xyz = temp[17], src1.xyz = temp[19] MAD_SAT temp[20].x, src0.x__, src1.x__, src0.000 14: src0.xyz = temp[20], src1.xyz = const[6], srcp.xyz = (1 - src0) MAD temp[22].xyz, src1.xyz, srcp.xxx, src0.000 15: src0.xyz = temp[13], src1.xyz = temp[20], src2.xyz = temp[22] MAD temp[16].xyz, src0.xyz, src1.xxx, src2.xyz 16: src0.xyz = temp[16], src0.w = temp[16] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[5], input[1].xy__, 2D[3]; 2: TEX temp[6].w, input[2].xy__, 2D[2]; 3: TEX temp[7].w, input[3].xy__, 2D[1]; 4: TEX temp[8].w, input[4].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 5: src0.xyz = const[7], src1.xyz = input[0] MAD temp[18].x, src0.z__, src0.111, -src0.y__ MAD temp[17].w, src0.z, src0.1, -src1.x 6: src0.xyz = temp[18] REPL_ALPHA temp[19].x RCP, src0.x 7: src0.xyz = temp[17], src0.w = temp[17], src1.xyz = temp[19] MAD_SAT temp[20].x, src0.w__, src1.x__, src0.000 8: src0.xyz = temp[20], src1.xyz = const[6], srcp.xyz = (1 - src0) MAD temp[22].xyz, src1.xyz, srcp.xxx, src0.000 9: src0.xyz = const[0], src1.xyz = temp[5] SEM_WAIT DP3 temp[9].x, src0.xyz, src1.xyz 10: src0.xyz = temp[9], src0.w = temp[6] MAD temp[10].x, src0.w__, src0.x__, src0.000 11: src0.xyz = temp[10], src0.w = temp[7] MAD temp[12].x * 4, src0.w__, src0.x__, src0.000 12: src0.xyz = temp[12], src0.w = temp[5], src1.xyz = const[1], src1.w = temp[8] MAD temp[13].xyz, src0.xxx, src0.111, src1.xyz MAD temp[14].w, src0.w, src1.w, src0.x 13: src0.xyz = temp[13], src0.w = temp[14], src1.xyz = temp[20], src2.xyz = temp[22] MAD temp[16].xyz, src0.xyz, src1.xxx, src2.xyz MAD temp[16].w, src0.w, src0.1, src0.0 14: src0.xyz = temp[16], src0.w = temp[16] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[5], input[1].xy__, 2D[3]; 2: TEX temp[6].w, input[2].xy__, 2D[2]; 3: TEX temp[7].w, input[3].xy__, 2D[1]; 4: TEX temp[8].w, input[4].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 5: src0.xyz = const[7], src1.xyz = input[0] MAD temp[18].x, src0.z__, src0.111, -src0.y__ MAD temp[17].w, src0.z, src0.1, -src1.x 6: src0.xyz = temp[18] REPL_ALPHA temp[19].x RCP, src0.x 7: src0.w = temp[17], src1.xyz = temp[19] MAD_SAT temp[20].x, src0.w__, src1.x__, src0.000 8: src0.xyz = temp[20], src1.xyz = const[6], srcp.xyz = (1 - src0) MAD temp[22].xyz, src1.xyz, srcp.xxx, src0.000 9: src0.xyz = const[0], src1.xyz = temp[5] SEM_WAIT DP3 temp[9].x, src0.xyz, src1.xyz 10: src0.xyz = temp[9], src0.w = temp[6] MAD temp[10].x, src0.w__, src0.x__, src0.000 11: src0.xyz = temp[10], src0.w = temp[7] MAD temp[12].x * 4, src0.w__, src0.x__, src0.000 12: src0.xyz = temp[12], src0.w = temp[5], src1.xyz = const[1], src1.w = temp[8] MAD temp[13].xyz, src0.xxx, src0.111, src1.xyz MAD temp[14].w, src0.w, src1.w, src0.x 13: src0.xyz = temp[13], src0.w = temp[14], src1.xyz = temp[20], src2.xyz = temp[22] MAD temp[16].xyz, src0.xyz, src1.xxx, src2.xyz MAD temp[16].w, src0.w, src0.1, src0.0 14: src0.xyz = temp[16], src0.w = temp[16] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[0], input[0].xy__, 2D[3]; 2: TEX temp[1].w, input[1].xy__, 2D[2]; 3: TEX temp[2].w, input[2].xy__, 2D[1]; 4: TEX temp[3].w, input[3].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 5: src0.xyz = const[7], src1.xyz = input[4] MAD temp[1].x, src0.z__, src0.1__, -src0.y__ MAD temp[4].w, src0.z, src0.1, -src1.x 6: src0.xyz = temp[1] REPL_ALPHA temp[1].x RCP, src0.x 7: src0.w = temp[4], src1.xyz = temp[1] MAD_SAT temp[1].x, src0.w__, src1.x__, src0.0__ 8: src0.xyz = temp[1], src1.xyz = const[6], srcp.xyz = (1 - src0) MAD temp[2].xyz, src1.xyz, srcp.xxx, src0.000 9: src0.xyz = const[0], src1.xyz = temp[0] SEM_WAIT DP3 temp[1].y, src0.xyz, src1.xyz 10: src0.xyz = temp[1], src0.w = temp[1] MAD temp[1].y, src0._w_, src0._y_, src0._0_ 11: src0.xyz = temp[1], src0.w = temp[2] MAD temp[1].y * 4, src0._w_, src0._y_, src0._0_ 12: src0.xyz = temp[1], src0.w = temp[0], src1.xyz = const[1], src1.w = temp[3] MAD temp[0].xyz, src0.yyy, src0.111, src1.xyz MAD temp[0].w, src0.w, src1.w, src0.y 13: src0.xyz = temp[0], src0.w = temp[0], src1.xyz = temp[1], src2.xyz = temp[2] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz MAD temp[0].w, src0.w, src0.1, src0.0 14: src0.xyz = temp[0], src0.w = temp[0] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00007803:TEX wmask: ARGB omask: NONE 1:TEX_INST: 0x00430000: id: 3 op:LD, , SCALED 2:TEX_ADDR: 0xe400f400: src: 0 R/G/A/A dst: 0 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00004003:TEX wmask: A omask: NONE 1:TEX_INST: 0x00420000: id: 2 op:LD, , SCALED 2:TEX_ADDR: 0xe401f401: src: 1 R/G/A/A dst: 1 R/G/B/A 3:TEX_DXDY: 0x00000000 2 0:CMN_INST 0x00004003:TEX wmask: A omask: NONE 1:TEX_INST: 0x00410000: id: 1 op:LD, , SCALED 2:TEX_ADDR: 0xe402f402: src: 2 R/G/A/A dst: 2 R/G/B/A 3:TEX_DXDY: 0x00000000 3 0:CMN_INST 0x00004007:TEX TEX_WAIT wmask: A omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe403f403: src: 3 R/G/A/A dst: 3 R/G/B/A 3:TEX_DXDY: 0x00000000 4 0:CMN_INST 0x00004800:ALU wmask: AR omask: NONE 1:RGB_ADDR 0x08001107:Addr0: 7c, Addr1: 4t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930488:rgb_A_src:0 B/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0 4 ALPHA_INST:0x00c08040:MAD dest:4 alp_A_src:0 B 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x42c84010:MAD dest:1 rgb_C_src:0 G/0/0 1 alp_C_src:1 R 1 5 0:CMN_INST 0x00000800:ALU wmask: R omask: NONE 1:RGB_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0 4 ALPHA_INST:0x0000000a:RCP dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x0000001a:SOP dest:1 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 6 0:CMN_INST 0x00080a00:ALU NOP wmask: R omask: NONE 1:RGB_ADDR 0x08000480:Addr0: 128t, Addr1: 1t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020004:Addr0: 4t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x0090248c:rgb_A_src:0 A/0/0 0 rgb_B_src:1 R/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 7 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0xc8041801:Addr0: 1t, Addr1: 6c, Addr2: 128t, srcp:3 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00006221:rgb_A_src:1 R/G/B 0 rgb_B_src:3 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 8 0:CMN_INST 0x00001004:ALU TEX_WAIT wmask: G omask: NONE 1:RGB_ADDR 0x08000100:Addr0: 0c, Addr1: 0t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000011:DP3 dest:1 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 9 0:CMN_INST 0x00001000:ALU wmask: G omask: NONE 1:RGB_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00860470:rgb_A_src:0 0/A/0 0 rgb_B_src:0 0/G/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 10 0:CMN_INST 0x00001000:ALU wmask: G omask: NONE 1:RGB_ADDR 0x08020001:Addr0: 1t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x08860470:rgb_A_src:0 0/A/0 0 rgb_B_src:0 0/G/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 11 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08040401:Addr0: 1t, Addr1: 1c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08000c00:Addr0: 0t, Addr1: 3t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0124:rgb_A_src:0 G/G/G 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x08221000:MAD dest:0 rgb_C_src:1 R/G/B 0 alp_C_src:0 G 0 12 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x00200400:Addr0: 0t, Addr1: 1t, Addr2: 2t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 0 0 13 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 r300: Initial fragment program FRAG DCL IN[0], COLOR, COLOR DCL IN[1], COLOR[1], COLOR DCL IN[2], FOG, PERSPECTIVE DCL IN[3], GENERIC[0], PERSPECTIVE DCL OUT[0], COLOR DCL SAMP[0] DCL CONST[0] DCL CONST[2..3] DCL TEMP[0], LOCAL DCL TEMP[1], LOCAL DCL TEMP[2], LOCAL IMM[0] FLT32 { 1.0000, 0.0000, 0.0000, 0.0000} 0: TEX TEMP[0], IN[3].xyyy, SAMP[0], 2D 1: MOV_SAT TEMP[0], TEMP[0] 2: MUL TEMP[1], IN[1], CONST[0] 3: MAD TEMP[0], TEMP[0], IN[0], TEMP[1] 4: ADD TEMP[1].x, CONST[3].zzzz, -IN[2].xxxx 5: ADD TEMP[2].x, CONST[3].zzzz, -CONST[3].yyyy 6: RCP TEMP[2].x, TEMP[2].xxxx 7: MUL_SAT TEMP[1].x, TEMP[1].xxxx, TEMP[2].xxxx 8: ADD TEMP[2].x, IMM[0].xxxx, -TEMP[1].xxxx 9: MUL TEMP[2].xyz, CONST[2].xyzz, TEMP[2].xxxx 10: MAD TEMP[0].xyz, TEMP[0].xyzz, TEMP[1].xxxx, TEMP[2].xyzz 11: MOV_SAT OUT[0], TEMP[0] 12: END Fragment Program: before compilation # Radeon Compiler Program 0: TEX temp[0], input[3].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: ADD temp[1].x, const[3].zzzz, -input[2].xxxx; 5: ADD temp[2].x, const[3].zzzz, -const[3].yyyy; 6: RCP temp[2].x, temp[2].xxxx; 7: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 8: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 9: MUL temp[2].xyz, const[2].xyzz, temp[2].xxxx; 10: MAD temp[0].xyz, temp[0].xyzz, temp[1].xxxx, temp[2].xyzz; 11: MOV_SAT output[0], temp[0]; Fragment Program: after 'rewrite depth out' # Radeon Compiler Program 0: TEX temp[0], input[3].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: ADD temp[1].x, const[3].zzzz, -input[2].xxxx; 5: ADD temp[2].x, const[3].zzzz, -const[3].yyyy; 6: RCP temp[2].x, temp[2].xxxx; 7: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 8: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 9: MUL temp[2].xyz, const[2].xyzz, temp[2].xxxx; 10: MAD temp[0].xyz, temp[0].xyzz, temp[1].xxxx, temp[2].xyzz; 11: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform KILP' # Radeon Compiler Program 0: TEX temp[0], input[3].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: ADD temp[1].x, const[3].zzzz, -input[2].xxxx; 5: ADD temp[2].x, const[3].zzzz, -const[3].yyyy; 6: RCP temp[2].x, temp[2].xxxx; 7: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 8: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 9: MUL temp[2].xyz, const[2].xyzz, temp[2].xxxx; 10: MAD temp[0].xyz, temp[0].xyzz, temp[1].xxxx, temp[2].xyzz; 11: MOV_SAT output[0], temp[0]; Fragment Program: after 'unroll loops' # Radeon Compiler Program 0: TEX temp[0], input[3].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: ADD temp[1].x, const[3].zzzz, -input[2].xxxx; 5: ADD temp[2].x, const[3].zzzz, -const[3].yyyy; 6: RCP temp[2].x, temp[2].xxxx; 7: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 8: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 9: MUL temp[2].xyz, const[2].xyzz, temp[2].xxxx; 10: MAD temp[0].xyz, temp[0].xyzz, temp[1].xxxx, temp[2].xyzz; 11: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform TEX' # Radeon Compiler Program 0: TEX temp[0], input[3].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: ADD temp[1].x, const[3].zzzz, -input[2].xxxx; 5: ADD temp[2].x, const[3].zzzz, -const[3].yyyy; 6: RCP temp[2].x, temp[2].xxxx; 7: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 8: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 9: MUL temp[2].xyz, const[2].xyzz, temp[2].xxxx; 10: MAD temp[0].xyz, temp[0].xyzz, temp[1].xxxx, temp[2].xyzz; 11: MOV_SAT output[0], temp[0]; Fragment Program: after 'transform IF' # Radeon Compiler Program 0: TEX temp[0], input[3].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: ADD temp[1].x, const[3].zzzz, -input[2].xxxx; 5: ADD temp[2].x, const[3].zzzz, -const[3].yyyy; 6: RCP temp[2].x, temp[2].xxxx; 7: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 8: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 9: MUL temp[2].xyz, const[2].xyzz, temp[2].xxxx; 10: MAD temp[0].xyz, temp[0].xyzz, temp[1].xxxx, temp[2].xyzz; 11: MOV_SAT output[0], temp[0]; Fragment Program: after 'native rewrite' # Radeon Compiler Program 0: TEX temp[0], input[3].xyyy, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: ADD temp[1].x, const[3].zzzz, -input[2].xxxx; 5: ADD temp[2].x, const[3].zzzz, -const[3].yyyy; 6: RCP temp[2].x, temp[2].xxxx; 7: MUL_SAT temp[1].x, temp[1].xxxx, temp[2].xxxx; 8: ADD temp[2].x, temp[0].1111, -temp[1].xxxx; 9: MUL temp[2].xyz, const[2].xyzz, temp[2].xxxx; 10: MAD temp[0].xyz, temp[0].xyzz, temp[1].xxxx, temp[2].xyzz; 11: MOV_SAT output[0], temp[0]; Fragment Program: after 'deadcode' # Radeon Compiler Program 0: TEX temp[0], input[3].xy__, 2D[0]; 1: MOV_SAT temp[0], temp[0]; 2: MUL temp[1], input[1], const[0]; 3: MAD temp[0], temp[0], input[0], temp[1]; 4: ADD temp[1].x, const[3].z___, -input[2].x___; 5: ADD temp[2].x, const[3].z___, -const[3].y___; 6: RCP temp[2].x, temp[2].x___; 7: MUL_SAT temp[1].x, temp[1].x___, temp[2].x___; 8: ADD temp[2].x, temp[0].1___, -temp[1].x___; 9: MUL temp[2].xyz, const[2].xyz_, temp[2].xxx_; 10: MAD temp[0].xyz, temp[0].xyz_, temp[1].xxx_, temp[2].xyz_; 11: MOV_SAT output[0], temp[0]; Fragment Program: after 'register rename' # Radeon Compiler Program 0: TEX temp[3], input[3].xy__, 2D[0]; 1: MOV_SAT temp[4], temp[3]; 2: MUL temp[5], input[1], const[0]; 3: MAD temp[6], temp[4], input[0], temp[5]; 4: ADD temp[7].x, const[3].z___, -input[2].x___; 5: ADD temp[8].x, const[3].z___, -const[3].y___; 6: RCP temp[9].x, temp[8].x___; 7: MUL_SAT temp[10].x, temp[7].x___, temp[9].x___; 8: ADD temp[11].x, temp[0].1___, -temp[10].x___; 9: MUL temp[12].xyz, const[2].xyz_, temp[11].xxx_; 10: MAD temp[6].xyz, temp[6].xyz_, temp[10].xxx_, temp[12].xyz_; 11: MOV_SAT output[0], temp[6]; Fragment Program: after 'dataflow optimize' # Radeon Compiler Program 0: TEX temp[3], input[3].xy__, 2D[0]; 1: MOV_SAT temp[4], temp[3]; 2: MUL temp[5], input[1], const[0]; 3: MAD temp[6], temp[4], input[0], temp[5]; 4: ADD temp[7].x, const[3].z___, -input[2].x___; 5: ADD temp[8].x, const[3].z___, -const[3].y___; 6: RCP temp[9].x, temp[8].x___; 7: MUL_SAT temp[10].x, temp[7].x___, temp[9].x___; 8: MUL temp[12].xyz, const[2].xyz_, (1 - temp[10]).xxx_; 9: MAD temp[6].xyz, temp[6].xyz_, temp[10].xxx_, temp[12].xyz_; 10: MOV_SAT output[0], temp[6]; Fragment Program: after 'inline literals' # Radeon Compiler Program 0: TEX temp[3], input[3].xy__, 2D[0]; 1: MOV_SAT temp[4], temp[3]; 2: MUL temp[5], input[1], const[0]; 3: MAD temp[6], temp[4], input[0], temp[5]; 4: ADD temp[7].x, const[3].z___, -input[2].x___; 5: ADD temp[8].x, const[3].z___, -const[3].y___; 6: RCP temp[9].x, temp[8].x___; 7: MUL_SAT temp[10].x, temp[7].x___, temp[9].x___; 8: MUL temp[12].xyz, const[2].xyz_, (1 - temp[10]).xxx_; 9: MAD temp[6].xyz, temp[6].xyz_, temp[10].xxx_, temp[12].xyz_; 10: MOV_SAT output[0], temp[6]; Fragment Program: after 'dataflow swizzles' # Radeon Compiler Program 0: TEX temp[3], input[3].xy__, 2D[0]; 1: MOV_SAT temp[4], temp[3]; 2: MUL temp[5], input[1], const[0]; 3: MAD temp[6], temp[4], input[0], temp[5]; 4: ADD temp[7].x, const[3].z___, -input[2].x___; 5: ADD temp[8].x, const[3].z___, -const[3].y___; 6: RCP temp[9].x, temp[8].x___; 7: MUL_SAT temp[10].x, temp[7].x___, temp[9].x___; 8: MUL temp[12].xyz, const[2].xyz_, (1 - temp[10]).xxx_; 9: MAD temp[6].xyz, temp[6].xyz_, temp[10].xxx_, temp[12].xyz_; 10: MOV_SAT output[0], temp[6]; Fragment Program: after 'dead constants' # Radeon Compiler Program 0: TEX temp[3], input[3].xy__, 2D[0]; 1: MOV_SAT temp[4], temp[3]; 2: MUL temp[5], input[1], const[0]; 3: MAD temp[6], temp[4], input[0], temp[5]; 4: ADD temp[7].x, const[3].z___, -input[2].x___; 5: ADD temp[8].x, const[3].z___, -const[3].y___; 6: RCP temp[9].x, temp[8].x___; 7: MUL_SAT temp[10].x, temp[7].x___, temp[9].x___; 8: MUL temp[12].xyz, const[2].xyz_, (1 - temp[10]).xxx_; 9: MAD temp[6].xyz, temp[6].xyz_, temp[10].xxx_, temp[12].xyz_; 10: MOV_SAT output[0], temp[6]; Fragment Program: after 'pair translate' # Radeon Compiler Program 0: TEX temp[3], input[3].xy__, 2D[0]; 1: src0.xyz = temp[3], src0.w = temp[3] MAD_SAT temp[4].xyz, src0.xyz, src0.111, src0.000 MAD_SAT temp[4].w, src0.w, src0.1, src0.0 2: src0.xyz = input[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0] MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 3: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = input[0], src1.w = input[0], src2.xyz = temp[5], src2.w = temp[5] MAD temp[6].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[6].w, src0.w, src1.w, src2.w 4: src0.xyz = const[3], src1.xyz = input[2] MAD temp[7].x, src0.z__, src0.111, -src1.x__ 5: src0.xyz = const[3] MAD temp[8].x, src0.z__, src0.111, -src0.y__ 6: src0.xyz = temp[8] REPL_ALPHA temp[9].x RCP, src0.x 7: src0.xyz = temp[7], src1.xyz = temp[9] MAD_SAT temp[10].x, src0.x__, src1.x__, src0.000 8: src0.xyz = temp[10], src1.xyz = const[2], srcp.xyz = (1 - src0) MAD temp[12].xyz, src1.xyz, srcp.xxx, src0.000 9: src0.xyz = temp[6], src1.xyz = temp[10], src2.xyz = temp[12] MAD temp[6].xyz, src0.xyz, src1.xxx, src2.xyz 10: src0.xyz = temp[6], src0.w = temp[6] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'pair scheduling' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[3], input[3].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[3], src1.xyz = input[2] MAD temp[8].x, src0.z__, src0.111, -src0.y__ MAD temp[7].w, src0.z, src0.1, -src1.x 3: src0.xyz = temp[8] RCP temp[9].w, src0.x 4: src0.xyz = temp[7], src0.w = temp[7], src1.xyz = temp[9], src1.w = temp[9] MAD_SAT temp[10].x, src0.w__, src1.w__, src0.000 5: src0.xyz = temp[10], src1.xyz = const[2], srcp.xyz = (1 - src0) MAD temp[12].xyz, src1.xyz, srcp.xxx, src0.000 6: src0.xyz = input[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0] MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 7: src0.xyz = temp[3], src0.w = temp[3] SEM_WAIT MAD_SAT temp[4].xyz, src0.xyz, src0.111, src0.000 MAD_SAT temp[4].w, src0.w, src0.1, src0.0 8: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = input[0], src1.w = input[0], src2.xyz = temp[5], src2.w = temp[5] MAD temp[6].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[6].w, src0.w, src1.w, src2.w 9: src0.xyz = temp[6], src1.xyz = temp[10], src2.xyz = temp[12] MAD temp[6].xyz, src0.xyz, src1.xxx, src2.xyz 10: src0.xyz = temp[6], src0.w = temp[6] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'dead sources' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[3], input[3].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[3], src1.xyz = input[2] MAD temp[8].x, src0.z__, src0.111, -src0.y__ MAD temp[7].w, src0.z, src0.1, -src1.x 3: src0.xyz = temp[8] RCP temp[9].w, src0.x 4: src0.w = temp[7], src1.w = temp[9] MAD_SAT temp[10].x, src0.w__, src1.w__, src0.000 5: src0.xyz = temp[10], src1.xyz = const[2], srcp.xyz = (1 - src0) MAD temp[12].xyz, src1.xyz, srcp.xxx, src0.000 6: src0.xyz = input[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0] MAD temp[5].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[5].w, src0.w, src1.w, src0.0 7: src0.xyz = temp[3], src0.w = temp[3] SEM_WAIT MAD_SAT temp[4].xyz, src0.xyz, src0.111, src0.000 MAD_SAT temp[4].w, src0.w, src0.1, src0.0 8: src0.xyz = temp[4], src0.w = temp[4], src1.xyz = input[0], src1.w = input[0], src2.xyz = temp[5], src2.w = temp[5] MAD temp[6].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[6].w, src0.w, src1.w, src2.w 9: src0.xyz = temp[6], src1.xyz = temp[10], src2.xyz = temp[12] MAD temp[6].xyz, src0.xyz, src1.xxx, src2.xyz 10: src0.xyz = temp[6], src0.w = temp[6] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 Fragment Program: after 'register allocation' # Radeon Compiler Program 0: BEGIN_TEX; 1: TEX temp[2], input[2].xy__, 2D[0] SEM_WAIT SEM_ACQUIRE; 2: src0.xyz = const[3], src1.xyz = input[3] MAD temp[3].x, src0.z__, src0.1__, -src0.y__ MAD temp[3].w, src0.z, src0.1, -src1.x 3: src0.xyz = temp[3] RCP temp[4].w, src0.x 4: src0.w = temp[3], src1.w = temp[4] MAD_SAT temp[3].x, src0.w__, src1.w__, src0.0__ 5: src0.xyz = temp[3], src1.xyz = const[2], srcp.xyz = (1 - src0) MAD temp[4].xyz, src1.xyz, srcp.xxx, src0.000 6: src0.xyz = input[1], src0.w = input[1], src1.xyz = const[0], src1.w = const[0] MAD temp[1].xyz, src0.xyz, src1.xyz, src0.000 MAD temp[1].w, src0.w, src1.w, src0.0 7: src0.xyz = temp[2], src0.w = temp[2] SEM_WAIT MAD_SAT temp[2].xyz, src0.xyz, src0.111, src0.000 MAD_SAT temp[2].w, src0.w, src0.1, src0.0 8: src0.xyz = temp[2], src0.w = temp[2], src1.xyz = input[0], src1.w = input[0], src2.xyz = temp[1], src2.w = temp[1] MAD temp[0].xyz, src0.xyz, src1.xyz, src2.xyz MAD temp[0].w, src0.w, src1.w, src2.w 9: src0.xyz = temp[0], src1.xyz = temp[3], src2.xyz = temp[4] MAD temp[0].xyz, src0.xyz, src1.xxx, src2.xyz 10: src0.xyz = temp[0], src0.w = temp[0] MAD_SAT color[0].xyz, src0.xyz, src0.111, src0.000 MAD_SAT color[0].w, src0.w, src0.1, src0.0 R500 Fragment Program: -------- 0 0:CMN_INST 0x00007807:TEX TEX_WAIT wmask: ARGB omask: NONE 1:TEX_INST: 0x02400000: id: 0 op:LD, ACQ, SCALED 2:TEX_ADDR: 0xe402f402: src: 2 R/G/A/A dst: 2 R/G/B/A 3:TEX_DXDY: 0x00000000 1 0:CMN_INST 0x00004800:ALU wmask: AR omask: NONE 1:RGB_ADDR 0x08000d03:Addr0: 3c, Addr1: 3t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00930488:rgb_A_src:0 B/0/0 0 rgb_B_src:0 1/0/0 0 targ: 0 4 ALPHA_INST:0x00c08030:MAD dest:3 alp_A_src:0 B 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x42c84030:MAD dest:3 rgb_C_src:0 G/0/0 1 alp_C_src:1 R 1 2 0:CMN_INST 0x00004000:ALU wmask: A omask: NONE 1:RGB_ADDR 0x08020003:Addr0: 3t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00000000:rgb_A_src:0 R/R/R 0 rgb_B_src:0 R/R/R 0 targ: 0 4 ALPHA_INST:0x0000004a:RCP dest:4 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00000000:MAD dest:0 rgb_C_src:0 R/R/R 0 alp_C_src:0 R 0 3 0:CMN_INST 0x00080a00:ALU NOP wmask: R omask: NONE 1:RGB_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08001003:Addr0: 3t, Addr1: 4t, Addr2: 128t, srcp:0 3 RGB_INST: 0x0091a48c:rgb_A_src:0 A/0/0 0 rgb_B_src:1 A/0/0 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490030:MAD dest:3 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 4 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0xc8040803:Addr0: 3t, Addr1: 2c, Addr2: 128t, srcp:3 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00006221:rgb_A_src:1 R/G/B 0 rgb_B_src:3 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00490040:MAD dest:4 rgb_C_src:0 0/0/0 0 alp_C_src:0 R 0 5 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x08040001:Addr0: 1t, Addr1: 0c, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08040001:Addr0: 1t, Addr1: 0c, Addr2: 128t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0068c010:MAD dest:1 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x20490010:MAD dest:1 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 6 0:CMN_INST 0x00187804:ALU TEX_WAIT wmask: ARGB omask: NONE 1:RGB_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020002:Addr0: 2t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c020:MAD dest:2 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490020:MAD dest:2 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 7 0:CMN_INST 0x00007800:ALU wmask: ARGB omask: NONE 1:RGB_ADDR 0x00100002:Addr0: 2t, Addr1: 0t, Addr2: 1t, srcp:0 2:ALPHA_ADDR 0x00100002:Addr0: 2t, Addr1: 0t, Addr2: 1t, srcp:0 3 RGB_INST: 0x00442220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/G/B 0 targ: 0 4 ALPHA_INST:0x0068c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:1 A 0 targ 0 w:0 5 RGBA_INST: 0x1c222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:2 A 0 8 0:CMN_INST 0x00003800:ALU wmask: RGB omask: NONE 1:RGB_ADDR 0x00400c00:Addr0: 0t, Addr1: 3t, Addr2: 4t, srcp:0 2:ALPHA_ADDR 0x08020080:Addr0: 128t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00002220:rgb_A_src:0 R/G/B 0 rgb_B_src:1 R/R/R 0 targ: 0 4 ALPHA_INST:0x00000000:MAD dest:0 alp_A_src:0 R 0 alp_B_src:0 R 0 targ 0 w:0 5 RGBA_INST: 0x00222000:MAD dest:0 rgb_C_src:2 R/G/B 0 alp_C_src:0 R 0 9 0:CMN_INST 0x001f8005:OUT TEX_WAIT wmask: NONE omask: ARGB 1:RGB_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 2:ALPHA_ADDR 0x08020000:Addr0: 0t, Addr1: 128t, Addr2: 128t, srcp:0 3 RGB_INST: 0x00db0220:rgb_A_src:0 R/G/B 0 rgb_B_src:0 1/1/1 0 targ: 0 4 ALPHA_INST:0x00c0c000:MAD dest:0 alp_A_src:0 A 0 alp_B_src:0 1 0 targ 0 w:0 5 RGBA_INST: 0x20490000:MAD dest:0 rgb_C_src:0 0/0/0 0 alp_C_src:0 0 0 fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP fixme:d3d:swapchain_gl_present Render-to-fbo with WINED3D_SWAP_EFFECT_FLIP radeon: Released access to Hyper-Z.