From mboxrd@z Thu Jan 1 00:00:00 1970 From: bugzilla-daemon@freedesktop.org Subject: [Bug 102905] [R600] Miscompilation of TGSI to VLIW causes artifacts in Gallium Nine with Crysis2 bump mapping Date: Wed, 20 Sep 2017 16:39:10 +0000 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0860267757==" Return-path: Received: from culpepper.freedesktop.org (culpepper.freedesktop.org [131.252.210.165]) by gabe.freedesktop.org (Postfix) with ESMTP id 2E3DC89E43 for ; Wed, 20 Sep 2017 16:39:10 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org --===============0860267757== Content-Type: multipart/alternative; boundary="15059255500.8d566EBF4.31075"; charset="UTF-8" --15059255500.8d566EBF4.31075 Date: Wed, 20 Sep 2017 16:39:10 +0000 MIME-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://bugs.freedesktop.org/ Auto-Submitted: auto-generated https://bugs.freedesktop.org/show_bug.cgi?id=3D102905 Bug ID: 102905 Summary: [R600] Miscompilation of TGSI to VLIW causes artifacts in Gallium Nine with Crysis2 bump mapping Product: Mesa Version: 17.2 Hardware: Other OS: All Status: NEW Severity: normal Priority: medium Component: Drivers/Gallium/r600 Assignee: dri-devel@lists.freedesktop.org Reporter: iive@yahoo.com QA Contact: dri-devel@lists.freedesktop.org In short, the miscompilation happens at "cmp" instruction where the destina= tion register is also one of the source registers. I suspect that the problem is caused by breaking "cmp" on two operands that= are executed in different VLIW, thus the result of the first one changes the outcome of the second. Using a temporal register in "cmp" workarounds the issue. The bug is NOT related to Shader Backend. Artifacts are still visible with "R600_DEBUG=3Dnosb". A D3D9 apitrace could be obtained from the ixit Nine ftp. The bug is also tracked at https://github.com/iXit/Mesa-3D/issues/288 . My hardware is Radeon HD5670 (Evergreen, Redwood). Not reproducible on Radeon SI. Bellow are D3D9 Pixel Shader, TGSI and R600 VLIW assembly: -------------------------------------------------------------- 445252 @1 IDirect3DDevice9::CreatePixelShader(this =3D 0xf1e0a290, pFunctio= n =3D " // // Generated by Microsoft (R) D3DX9 Shader Compiler // // Parameters: // // sampler2D BlendMapSampler; // sampler2D BumpMap2Sampler; // float4 MatSpecColor; // float3 __0BlendFactor__1BlendMaskTiling__2BlendFalloff__3; // sampler2D bumpMapSampler; // sampler2D normalsSampler2D; // // // Registers: // // Name Reg Size // -------------------------------------------------- ----- ---- // MatSpecColor c13 1 // __0BlendFactor__1BlendMaskTiling__2BlendFalloff__3 c20 1 // bumpMapSampler s1 1 // normalsSampler2D s2 1 // BumpMap2Sampler s3 1 // BlendMapSampler s4 1 // ps_3_0 def c0, 2, -1, 1, 0.5 def c1, 0.00392156886, 0, 0, 0 dcl_texcoord_centroid v0.x dcl_texcoord1 v1.xy dcl_texcoord2_pp v2 dcl_texcoord3_pp v3.xyz dcl_texcoord4 v4.xyz dcl_2d s1 dcl_2d s2 dcl_2d s3 dcl_2d s4 mov r0.x, c1.x mul_pp oC1.w, r0.x, c13.w texld_pp r0, v4, s4 mul_pp r0.x, r0.x, v4.z pow_sat_pp r1.x, r0.x, c20.z texld_pp r0, v1, s1 mad_pp r0.xy, r0, c0.x, c0.y dp2add_sat_pp r0.w, r0, -r0, c0.z rsq_pp r0.w, r0.w rcp_pp r0.z, r0.w texld_pp r2, v1, s3 mad_pp r1.yz, r2.xxyw, c0.x, c0.y dp2add_sat_pp r0.w, r1.yzzw, -r1.yzzw, c0.z rsq_pp r0.w, r0.w rcp_pp r1.w, r0.w lrp_pp r2.xyz, r1.x, r1.yzww, r0 mul_pp r0.xyz, r2.y, v3 mad_pp r0.xyz, r2.x, v2, r0 mov_pp r1.xyz, v2 mul_pp r2.xyw, r1.zxzy, v3.yzzx mad_pp r1.xyz, r1.yzxw, v3.zxyw, -r2.xyww mul_pp r1.xyz, r1, v2.w mad_pp r0.xyz, r2.z, r1, r0 mad_pp r0.xyz, r0, c0.w, c0.w mad_pp r0.xyz, r0, c0.x, c0.y nrm_pp r1.xyz, r0 max_pp r0.x, r1_abs.x, r1_abs.y max_pp r2.x, r1_abs.z, r0.x add r0.xy, r1_abs.zyzw, -r2.x rcp r0.z, r2.x cmp_pp r0.yw, r0.y, r1_abs.xxzz, r1_abs.xyzz cmp_pp r0.xy, r0.x, r1_abs, r0.ywzw //<=3D=3D=3D=3D=3D this one mul_pp r1.xyz, r1, r0.z add r0.z, -r0.y, r0.x cmp r0.xy, r0.z, r0, r0.yxzw rcp r1.w, r0.x mul r0.z, r0.y, r1.w mov r0.w, c1.y texldl r0, r0.xzww, s2 mul_pp r0.xyz, r1, r0.w mad_pp oC1.xyz, r0, c0.w, c0.w mov_pp oC0, v0.x // approximately 49 instruction slots used (5 texture, 44 arithmetic) ", ppShader =3D [0xbca9a080]) =3D D3D_OK -------------------------------------------------------------- Making the following change in the above code: --- - cmp_pp r0.xy, r0.x, r1_abs, r0.ywzw //<=3D=3D=3D=3D=3D this one + mov r8, r0 + cmp_pp r0.xy, r8.x, r1_abs, r0.ywzw --- workarounds the issue. Alternative workaround is using different destination register, it just nee= ds more changes in the follow up instructions. With NINE_DEBUG=3Dps R600_DEBUG=3Dps the buggy shader looks like this: -------------------------------------------------------------- FRAG PROPERTY FS_COORD_ORIGIN UPPER_LEFT PROPERTY MUL_ZERO_WINS 1 DCL IN[0], GENERIC[0], PERSPECTIVE, CENTROID DCL IN[1], GENERIC[1], PERSPECTIVE DCL IN[2], GENERIC[2], PERSPECTIVE DCL IN[3], GENERIC[3], PERSPECTIVE DCL IN[4], GENERIC[4], PERSPECTIVE DCL OUT[0], COLOR[1] DCL OUT[1], COLOR DCL SAMP[1] DCL SAMP[2] DCL SAMP[3] DCL SAMP[4] DCL CONST[0..20] DCL TEMP[0..1] DCL TEMP[2], LOCAL DCL TEMP[3] IMM[0] FLT32 { 2.0000, -1.0000, 1.0000, 0.5000} IMM[1] FLT32 { 0.0039, 0.0000, 340282346638528859811704183484516925440.0000, 0.0000} 0: MOV TEMP[0].x, IMM[1].xxxx 1: MUL OUT[0].w, TEMP[0].xxxx, CONST[13].wwww 2: TEX TEMP[0], IN[4], SAMP[4], 2D 3: MUL TEMP[0].x, TEMP[0].xxxx, IN[4].zzzz 4: POW_SAT TEMP[1].x, |TEMP[0].xxxx|, CONST[20].zzzz 5: TEX TEMP[0], IN[1], SAMP[1], 2D 6: MAD TEMP[0].xy, TEMP[0], IMM[0].xxxx, IMM[0].yyyy 7: DP2 TEMP[2].x, TEMP[0], -TEMP[0] 8: ADD_SAT TEMP[0].w, IMM[0].zzzz, TEMP[2].xxxx 9: RSQ TEMP[2], |TEMP[0].wwww| 10: MIN TEMP[0].w, IMM[1].zzzz, TEMP[2] 11: RCP TEMP[0].z, TEMP[0].wwww 12: TEX TEMP[3], IN[1], SAMP[3], 2D 13: MAD TEMP[1].yz, TEMP[3].xxyw, IMM[0].xxxx, IMM[0].yyyy 14: DP2 TEMP[2].x, TEMP[1].yzzw, -TEMP[1].yzzw 15: ADD_SAT TEMP[0].w, IMM[0].zzzz, TEMP[2].xxxx 16: RSQ TEMP[2], |TEMP[0].wwww| 17: MIN TEMP[0].w, IMM[1].zzzz, TEMP[2] 18: RCP TEMP[1].w, TEMP[0].wwww 19: LRP TEMP[3].xyz, TEMP[1].xxxx, TEMP[1].yzww, TEMP[0] 20: MUL TEMP[0].xyz, TEMP[3].yyyy, IN[3] 21: MAD TEMP[0].xyz, TEMP[3].xxxx, IN[2], TEMP[0] 22: MOV TEMP[1].xyz, IN[2] 23: MUL TEMP[3].xyw, TEMP[1].zxzy, IN[3].yzzx 24: MAD TEMP[1].xyz, TEMP[1].yzxw, IN[3].zxyw, -TEMP[3].xyww 25: MUL TEMP[1].xyz, TEMP[1], IN[2].wwww 26: MAD TEMP[0].xyz, TEMP[3].zzzz, TEMP[1], TEMP[0] 27: MAD TEMP[0].xyz, TEMP[0], IMM[0].wwww, IMM[0].wwww 28: MAD TEMP[0].xyz, TEMP[0], IMM[0].xxxx, IMM[0].yyyy 29: DP3 TEMP[2].x, TEMP[0], TEMP[0] 30: RSQ TEMP[2].x, TEMP[2].xxxx 31: MIN TEMP[2].x, IMM[1].zzzz, TEMP[2].xxxx 32: MUL TEMP[1].xyz, TEMP[0], TEMP[2].xxxx 33: MAX TEMP[0].x, |TEMP[1].xxxx|, |TEMP[1].yyyy| 34: MAX TEMP[3].x, |TEMP[1].zzzz|, TEMP[0].xxxx 35: ADD TEMP[0].xy, |TEMP[1].zyzw|, -TEMP[3].xxxx 36: RCP TEMP[0].z, TEMP[3].xxxx 37: CMP TEMP[0].yw, TEMP[0].yyyy, |TEMP[1].xyzz|, |TEMP[1].xxzz| 38: CMP TEMP[0].xy, TEMP[0].xxxx, TEMP[0].ywzw, |TEMP[1]| 39: MUL TEMP[1].xyz, TEMP[1], TEMP[0].zzzz 40: ADD TEMP[0].z, -TEMP[0].yyyy, TEMP[0].xxxx 41: CMP TEMP[0].xy, TEMP[0].zzzz, TEMP[0].yxzw, TEMP[0] 42: RCP TEMP[1].w, TEMP[0].xxxx 43: MUL TEMP[0].z, TEMP[0].yyyy, TEMP[1].wwww 44: MOV TEMP[0].w, IMM[1].yyyy 45: TXL TEMP[0], TEMP[0].xzww, SAMP[2], 2D 46: MUL TEMP[0].xyz, TEMP[1], TEMP[0].wwww 47: MAD OUT[0].xyz, TEMP[0], IMM[0].wwww, IMM[0].wwww 48: MOV OUT[1], IN[0].xxxx 49: END =3D=3D=3D=3D=3D SHADER #81 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D PS/REDWOOD/EVE= RGREEN =3D=3D=3D=3D=3D =3D=3D=3D=3D=3D 408 dw =3D=3D=3D=3D=3D 18 gprs =3D=3D=3D=3D=3D 0 stack =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D 0000 4000000b a0a80000 ALU 43 @22 KC0[CB0:0-15] 0022 00380c00 00146b80 1 x: INTERP_ZW __.x, R0.w, Para= m0.x VEC_210 0024 00380800 20146b80 y: INTERP_ZW __.y, R0.z, Para= m0.x VEC_210 0026 00380c00 40346b90 z: INTERP_ZW R1.z, R0.w, Para= m0.x VEC_210 0028 80380800 60346b90 w: INTERP_ZW R1.w, R0.z, Para= m0.x VEC_210 0030 00380c00 00346b10 2 x: INTERP_XY R1.x, R0.w, Para= m0.x VEC_210 0032 00380800 20346b10 y: INTERP_XY R1.y, R0.z, Para= m0.x VEC_210 0034 00380c00 40146b00 z: INTERP_XY __.z, R0.w, Para= m0.x VEC_210 0036 80380800 60146b00 w: INTERP_XY __.w, R0.z, Para= m0.x VEC_210 0038 00382400 00146b80 3 x: INTERP_ZW __.x, R0.y, Para= m1.x VEC_210 0040 00382000 20146b80 y: INTERP_ZW __.y, R0.x, Para= m1.x VEC_210 0042 00382400 40546b90 z: INTERP_ZW R2.z, R0.y, Para= m1.x VEC_210 0044 80382000 60546b90 w: INTERP_ZW R2.w, R0.x, Para= m1.x VEC_210 0046 00382400 00546b10 4 x: INTERP_XY R2.x, R0.y, Para= m1.x VEC_210 0048 00382000 20546b10 y: INTERP_XY R2.y, R0.x, Para= m1.x VEC_210 0050 00382400 40146b00 z: INTERP_XY __.z, R0.y, Para= m1.x VEC_210 0052 80382000 60146b00 w: INTERP_XY __.w, R0.x, Para= m1.x VEC_210 0054 00384400 00146b80 5 x: INTERP_ZW __.x, R0.y, Para= m2.x VEC_210 0056 00384000 20146b80 y: INTERP_ZW __.y, R0.x, Para= m2.x VEC_210 0058 00384400 40746b90 z: INTERP_ZW R3.z, R0.y, Para= m2.x VEC_210 0060 80384000 60746b90 w: INTERP_ZW R3.w, R0.x, Para= m2.x VEC_210 0062 00384400 00746b10 6 x: INTERP_XY R3.x, R0.y, Para= m2.x VEC_210 0064 00384000 20746b10 y: INTERP_XY R3.y, R0.x, Para= m2.x VEC_210 0066 00384400 40146b00 z: INTERP_XY __.z, R0.y, Para= m2.x VEC_210 0068 80384000 60146b00 w: INTERP_XY __.w, R0.x, Para= m2.x VEC_210 0070 00386400 00146b80 7 x: INTERP_ZW __.x, R0.y, Para= m3.x VEC_210 0072 00386000 20146b80 y: INTERP_ZW __.y, R0.x, Para= m3.x VEC_210 0074 00386400 40946b90 z: INTERP_ZW R4.z, R0.y, Para= m3.x VEC_210 0076 80386000 60946b90 w: INTERP_ZW R4.w, R0.x, Para= m3.x VEC_210 0078 00386400 00946b10 8 x: INTERP_XY R4.x, R0.y, Para= m3.x VEC_210 0080 00386000 20946b10 y: INTERP_XY R4.y, R0.x, Para= m3.x VEC_210 0082 00386400 40146b00 z: INTERP_XY __.z, R0.y, Para= m3.x VEC_210 0084 80386000 60146b00 w: INTERP_XY __.w, R0.x, Para= m3.x VEC_210 0086 00388400 00146b80 9 x: INTERP_ZW __.x, R0.y, Para= m4.x VEC_210 0088 00388000 20146b80 y: INTERP_ZW __.y, R0.x, Para= m4.x VEC_210 0090 00388400 40b46b90 z: INTERP_ZW R5.z, R0.y, Para= m4.x VEC_210 0092 80388000 60b46b90 w: INTERP_ZW R5.w, R0.x, Para= m4.x VEC_210 0094 00388400 00b46b10 10 x: INTERP_XY R5.x, R0.y, Para= m4.x VEC_210 0096 00388000 20b46b10 y: INTERP_XY R5.y, R0.x, Para= m4.x VEC_210 0098 00388400 40146b00 z: INTERP_XY __.z, R0.y, Para= m4.x VEC_210 0100 00388000 60146b00 w: INTERP_XY __.w, R0.x, Para= m4.x VEC_210 0102 800000fd 01000c90 t: MOV R8.x, [0x3b808081 0.00392157].x 0104 3b808081=20 0106 8191a0ff 60c00090 11 w: MUL R6.w, PS, KC0[13= ].w 0002 00000036 80400000 TEX 1 @108 0108 00051410 f00d1008 fc820000 SAMPLE R8.xyzw, R5.xy__,=20= =20 RID:20, SID:4 CT:NNNN 0004 40000038 a01c0004 ALU 8 @112 KC0[CB0:16-31] 0112 8100a008 01000090 12 x: MUL R8.x, R8.x, R5.z 0114 800000fe 01e04191 13 t: LOG_IEEE R15.x, |PV.x| 0116 801fe884 01e00090 14 x: MUL R15.x, KC0[4].z,= PS 0118 800000fe 01e04090 15 t: EXP_IEEE R15.x, PV.x 0120 000000ff 81200c90 16 x: MOV_sat R9.x, PS 0122 000000ff a1200c80 y: MOV_sat __.y, PS 0124 000000ff c1200c80 z: MOV_sat __.z, PS 0126 800000ff e1200c80 w: MOV_sat __.w, PS 0006 00000040 80400000 TEX 1 @128 0128 00021110 f00d1008 fc808000 SAMPLE R8.xyzw, R2.xy__,=20= =20 RID:17, SID:1 CT:NNNN 0008 00000042 a04c0000 ALU 20 @132 0132 001fa008 010294f9 17 x: MULADD R8.x, R8.x, [0x40000000 2].x, -1.0 0134 801fa408 210294f9 y: MULADD R8.y, R8.y, [0x40000000 2].x, -1.0 0136 40000000=20 0138 021fc0fe 01405f10 18 x: DOT4 R10.x, PV.x, -PV= .x 0140 029fc4fe 21405f00 y: DOT4 __.y, PV.y, -PV.y 0142 021f00f8 41405f00 z: DOT4 __.z, 0, -0 0144 821f00f8 61405f00 w: DOT4 __.w, 0, -0 0146 801fc8f9 e1000010 19 w: ADD_sat R8.w, 1.0, PV.x 0148 80000cfe 01e04391 20 t: RECIPSQRT_CLAMPED R15.x, |PV.w| 0150 000000ff 01400c90 21 x: MOV R10.x, PS 0152 000000ff 21400c90 y: MOV R10.y, PS 0154 000000ff 41400c90 z: MOV R10.z, PS 0156 800000ff 61400c90 w: MOV R10.w, PS 0158 819fc0fd 61000210 22 w: MIN R8.w, [0x7f7fffff 3.40282e+38].x, PV.w 0160 7f7fffff=20 0162 80000cfe 01e04310 23 t: RECIP_IEEE R15.x, PV.w 0164 000000ff 01000c80 24 x: MOV __.x, PS 0166 000000ff 21000c80 y: MOV __.y, PS 0168 000000ff 41000c90 z: MOV R8.z, PS 0170 800000ff 61000c80 w: MOV __.w, PS 0010 00000056 80400000 TEX 1 @172 0172 00021310 f00d100b fc818000 SAMPLE R11.xyzw, R2.xy__,=20= =20 RID:19, SID:3 CT:NNNN 0012 00000058 a1980000 ALU 103 @176 0176 001fa00b 212294f9 25 y: MULADD R9.y, R11.x, [0x40000000 2].x, -1.0 0178 801fa40b 412294f9 z: MULADD R9.z, R11.y, [0x40000000 2].x, -1.0 0180 40000000=20 0182 029fc4fe 01405f10 26 x: DOT4 R10.x, PV.y, -PV= .y 0184 031fc8fe 21405f00 y: DOT4 __.y, PV.z, -PV.z 0186 021f00f8 41405f00 z: DOT4 __.z, 0, -0 0188 821f00f8 61405f00 w: DOT4 __.w, 0, -0 0190 801fc8f9 e1000010 27 w: ADD_sat R8.w, 1.0, PV.x 0192 80000cfe 01e04391 28 t: RECIPSQRT_CLAMPED R15.x, |PV.w| 0194 000000ff 01400c90 29 x: MOV R10.x, PS 0196 000000ff 21400c90 y: MOV R10.y, PS 0198 000000ff 41400c90 z: MOV R10.z, PS 0200 800000ff 61400c90 w: MOV R10.w, PS 0202 819fc0fd 61000210 30 w: MIN R8.w, [0x7f7fffff 3.40282e+38].x, PV.w 0204 7f7fffff=20 0206 80000cfe 01e04310 31 t: RECIP_IEEE R15.x, PV.w 0208 000000ff 01200c80 32 x: MOV __.x, PS 0210 000000ff 21200c80 y: MOV __.y, PS 0212 000000ff 41200c80 z: MOV __.z, PS 0214 800000ff 61200c90 w: MOV R9.w, PS 0216 020120f9 01e00010 33 x: ADD R15.x, 1.0, -R9.x 0218 020120f9 21e00010 y: ADD R15.y, 1.0, -R9.x 0220 820120f9 41e00010 z: ADD R15.z, 1.0, -R9.x 0222 000100fe 01e00090 34 x: MUL R15.x, PV.x, R8.x 0224 008104fe 21e00090 y: MUL R15.y, PV.y, R8.y 0226 810108fe 41e00090 z: MUL R15.z, PV.z, R8.z 0228 00812009 016280fe 35 x: MULADD R11.x, R9.x, R9.= y, PV.x 0230 01012009 216284fe y: MULADD R11.y, R9.x, R9.= z, PV.y 0232 81812009 416288fe z: MULADD R11.z, R9.x, R9.= w, PV.z 0234 000084fe 01000090 36 x: MUL R8.x, PV.y, R4.x 0236 008084fe 21000090 y: MUL R8.y, PV.y, R4.y 0238 810084fe 41000090 z: MUL R8.z, PV.y, R4.z 0240 0000600b 010280fe 37 x: MULADD R8.x, R11.x, R3.= x, PV.x 0242 0080600b 210284fe y: MULADD R8.y, R11.x, R3.= y, PV.y 0244 8100600b 410288fe z: MULADD R8.z, R11.x, R3.= z, PV.z 0246 00000003 01200c90 38 x: MOV R9.x, R3.x 0248 00000403 21200c90 y: MOV R9.y, R3.y 0250 80000803 41200c90 z: MOV R9.z, R3.z 0252 008088fe 01600090 39 x: MUL R11.x, PV.z, R4.y 0254 010080fe 21600090 y: MUL R11.y, PV.x, R4.z 0256 800084fe 61600090 w: MUL R11.w, PV.y, R4.x 0258 01008409 012290fe 40 x: MULADD R9.x, R9.y, R4.z, -PV.x 0260 00008809 212294fe y: MULADD R9.y, R9.z, R4.x, -PV.y 0262 80808009 41229cfe z: MULADD R9.z, R9.x, R4.y, -PV.w 0264 018060fe 01200090 41 x: MUL R9.x, PV.x, R3.w 0266 018064fe 21200090 y: MUL R9.y, PV.y, R3.w 0268 818068fe 41200090 z: MUL R9.z, PV.z, R3.w 0270 001fc80b 01028008 42 x: MULADD R8.x, R11.z, PV.= x, R8.x 0272 009fc80b 21028408 y: MULADD R8.y, R11.z, PV.= y, R8.y 0274 811fc80b 41028808 z: MULADD R8.z, R11.z, PV.= z, R8.z 0276 019f80fe 01028cfc 43 x: MULADD R8.x, PV.x, 0.5,= 0.5 0278 019f84fe 21028cfc y: MULADD R8.y, PV.y, 0.5,= 0.5 0280 819f88fe 41028cfc z: MULADD R8.z, PV.z, 0.5,= 0.5 0282 001fa0fe 010294f9 44 x: MULADD R8.x, PV.x, [0x40000000 2].x, -1.0 0284 001fa4fe 210294f9 y: MULADD R8.y, PV.y, [0x40000000 2].x, -1.0 0286 801fa8fe 410294f9 z: MULADD R8.z, PV.z, [0x40000000 2].x, -1.0 0288 40000000=20 0290 001fc0fe 01405f10 45 x: DOT4 R10.x, PV.x, PV.x 0292 009fc4fe 21405f00 y: DOT4 __.y, PV.y, PV.y 0294 011fc8fe 41405f00 z: DOT4 __.z, PV.z, PV.z 0296 801f00f8 61405f00 w: DOT4 __.w, 0, 0 0298 800000fe 01e04391 46 t: RECIPSQRT_CLAMPED R15.x, |PV.x| 0300 000000ff 01400c90 47 x: MOV R10.x, PS 0302 000000ff 21400c80 y: MOV __.y, PS 0304 000000ff 41400c80 z: MOV __.z, PS 0306 800000ff 61400c80 w: MOV __.w, PS 0308 801fc0fd 01400210 48 x: MIN R10.x, [0x7f7fff= ff 3.40282e+38].x, PV.x 0310 7f7fffff=20 0312 001fc008 01200090 49 x: MUL R9.x, R8.x, PV.x 0314 001fc408 21200090 y: MUL R9.y, R8.y, PV.x 0316 801fc808 41200090 z: MUL R9.z, R8.z, PV.x 0318 809fc0fe 01000193 50 x: MAX R8.x, |PV.x|, |P= V.y| 0320 801fc809 01600191 51 x: MAX R11.x, |R9.z|, P= V.x 0322 021fc809 01000011 52 x: ADD R8.x, |R9.z|, -P= V.x 0324 021fc409 21000011 y: ADD R8.y, |R9.y|, -P= V.x 0326 800000fe 01e04310 t: RECIP_IEEE R15.x, PV.x 0328 000000ff 01000c80 53 x: MOV __.x, PS 0330 000000ff 21000c80 y: MOV __.y, PS 0332 000000ff 41000c90 z: MOV R8.z, PS 0334 000000ff 61000c80 w: MOV __.w, PS 0336 80000009 22200c91 t: MOV R17.y, |R9.x| 0338 80000409 22000c91 54 y: MOV R16.y, |R9.y| 0340 00822408 210364fe 55 y: CNDGE R8.y, R8.y, R17.= y, PV.y 0342 00000809 62200c91 w: MOV R17.w, |R9.z| 0344 80000809 62000c91 t: MOV R16.w, |R9.z| 0346 00000009 02000c91 56 x: MOV R16.x, |R9.x| 0348 819fc4fe 610360ff w: CNDGE R8.w, PV.y, PV.w= , PS 0350 001fc008 01036408 57 x: CNDGE R8.x, R8.x, PV.x, R8.y 0352 80000409 22000c91 y: MOV R16.y, |R9.y| 0354 01010009 01200090 58 x: MUL R9.x, R9.x, R8.z 0356 009fc0fe 21036c08 y: CNDGE R8.y, PV.x, PV.y, R8.w 0358 01010809 41200090 z: MUL R9.z, R9.z, R8.z 0360 81010409 21200090 t: MUL R9.y, R9.y, R8.z 0362 800114fe 41000010 59 z: ADD R8.z, -PV.y, R8.x 0364 000108fe 01036408 60 x: CNDGE R8.x, PV.z, R8.x, R8.y 0366 808108fe 21036008 y: CNDGE R8.y, PV.z, R8.y, R8.x 0368 800000fe 01e04310 61 t: RECIP_IEEE R15.x, PV.x 0370 000000ff 01200c80 62 x: MOV __.x, PS 0372 000000ff 21200c80 y: MOV __.y, PS 0374 000000ff 41200c80 z: MOV __.z, PS 0376 800000ff 61200c90 w: MOV R9.w, PS 0378 019fc408 41000090 63 z: MUL R8.z, R8.y, PV.w 0380 800004f8 61000c90 w: MOV R8.w, 0 0014 000000c0 80400000 TEX 1 @384 0384 00081211 f00d1008 6d010000 SAMPLE_L R8.xyzw, R8.xzww,=20= =20 RID:18, SID:2 CT:NNNN 0016 000000c2 a0240000 ALU 10 @388 0388 01810009 01000090 64 x: MUL R8.x, R9.x, R8.w 0390 01810409 21000090 y: MUL R8.y, R9.y, R8.w 0392 81810809 41000090 z: MUL R8.z, R9.z, R8.w 0394 019f80fe 00c28cfc 65 x: MULADD R6.x, PV.x, 0.5,= 0.5 0396 019f84fe 20c28cfc y: MULADD R6.y, PV.y, 0.5,= 0.5 0398 819f88fe 40c28cfc z: MULADD R6.z, PV.z, 0.5,= 0.5 0400 00000001 00e00c90 66 x: MOV R7.x, R1.x 0402 00000001 20e00c90 y: MOV R7.y, R1.x 0404 00000001 40e00c90 z: MOV R7.z, R1.x 0406 80000001 60e00c90 w: MOV R7.w, R1.x 0018 c0030001 94c00688 EXPORT PIXEL 1 R6.xyzw 0020 c0038000 95200688 EXPORT_DONE PIXEL 0 R7.xyzw EOP =3D=3D=3D=3D=3D SHADER_END =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --=20 You are receiving this mail because: You are the assignee for the bug.= --15059255500.8d566EBF4.31075 Date: Wed, 20 Sep 2017 16:39:10 +0000 MIME-Version: 1.0 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://bugs.freedesktop.org/ Auto-Submitted: auto-generated
Bug ID 102905
Summary [R600] Miscompilation of TGSI to VLIW causes artifacts in Gal= lium Nine with Crysis2 bump mapping
Product Mesa
Version 17.2
Hardware Other
OS All
Status NEW
Severity normal
Priority medium
Component Drivers/Gallium/r600
Assignee dri-devel@lists.freedesktop.org
Reporter iive@yahoo.com
QA Contact dri-devel@lists.freedesktop.org

In short, the miscompilation happens at "cmp" instru=
ction where the destination
register is also one of the source registers.

I suspect that the problem is caused by breaking "cmp" on two ope=
rands that are
executed in different VLIW, thus the result of the first one changes the
outcome of the second. Using a temporal register in "cmp" workaro=
unds the
issue.

The bug is NOT related to Shader Backend. Artifacts are still visible with
"R600_DEBUG=3Dnosb".

A D3D9 apitrace could be obtained from the ixit Nine ftp.
The bug is also tracked at https://github.com/iXit/Mesa-3D/issues/288 .

My hardware is Radeon HD5670 (Evergreen, Redwood).
Not reproducible on Radeon SI.

Bellow are D3D9 Pixel Shader, TGSI and R600 VLIW assembly:
--------------------------------------------------------------
445252 @1 IDirect3DDevice9::CreatePixelShader(this =3D 0xf1e0a290, pFun=
ction =3D "
//
// Generated by Microsoft (R) D3DX9 Shader Compiler
//
// Parameters:
//
//   sampler2D BlendMapSampler;
//   sampler2D BumpMap2Sampler;
//   float4 MatSpecColor;
//   float3 __0BlendFactor__1BlendMaskTiling__2BlendFalloff__3;
//   sampler2D bumpMapSampler;
//   sampler2D normalsSampler2D;
//
//
// Registers:
//
//   Name                                               Reg   Size
//   -------------------------------------------------- ----- ----
//   MatSpecColor                                       c13      1
//   __0BlendFactor__1BlendMaskTiling__2BlendFalloff__3 c20      1
//   bumpMapSampler                                     s1       1
//   normalsSampler2D                                   s2       1
//   BumpMap2Sampler                                    s3       1
//   BlendMapSampler                                    s4       1
//

    ps_3_0
    def c0, 2, -1, 1, 0.5
    def c1, 0.00392156886, 0, 0, 0
    dcl_texcoord_centroid v0.x
    dcl_texcoord1 v1.xy
    dcl_texcoord2_pp v2
    dcl_texcoord3_pp v3.xyz
    dcl_texcoord4 v4.xyz
    dcl_2d s1
    dcl_2d s2
    dcl_2d s3
    dcl_2d s4
    mov r0.x, c1.x
    mul_pp oC1.w, r0.x, c13.w
    texld_pp r0, v4, s4
    mul_pp r0.x, r0.x, v4.z
    pow_sat_pp r1.x, r0.x, c20.z
    texld_pp r0, v1, s1
    mad_pp r0.xy, r0, c0.x, c0.y
    dp2add_sat_pp r0.w, r0, -r0, c0.z
    rsq_pp r0.w, r0.w
    rcp_pp r0.z, r0.w
    texld_pp r2, v1, s3
    mad_pp r1.yz, r2.xxyw, c0.x, c0.y
    dp2add_sat_pp r0.w, r1.yzzw, -r1.yzzw, c0.z
    rsq_pp r0.w, r0.w
    rcp_pp r1.w, r0.w
    lrp_pp r2.xyz, r1.x, r1.yzww, r0
    mul_pp r0.xyz, r2.y, v3
    mad_pp r0.xyz, r2.x, v2, r0
    mov_pp r1.xyz, v2
    mul_pp r2.xyw, r1.zxzy, v3.yzzx
    mad_pp r1.xyz, r1.yzxw, v3.zxyw, -r2.xyww
    mul_pp r1.xyz, r1, v2.w
    mad_pp r0.xyz, r2.z, r1, r0
    mad_pp r0.xyz, r0, c0.w, c0.w
    mad_pp r0.xyz, r0, c0.x, c0.y
    nrm_pp r1.xyz, r0
    max_pp r0.x, r1_abs.x, r1_abs.y
    max_pp r2.x, r1_abs.z, r0.x
    add r0.xy, r1_abs.zyzw, -r2.x
    rcp r0.z, r2.x
    cmp_pp r0.yw, r0.y, r1_abs.xxzz, r1_abs.xyzz
    cmp_pp r0.xy, r0.x, r1_abs, r0.ywzw    //<=3D=3D=3D=3D=3D this one
    mul_pp r1.xyz, r1, r0.z
    add r0.z, -r0.y, r0.x
    cmp r0.xy, r0.z, r0, r0.yxzw
    rcp r1.w, r0.x
    mul r0.z, r0.y, r1.w
    mov r0.w, c1.y
    texldl r0, r0.xzww, s2
    mul_pp r0.xyz, r1, r0.w
    mad_pp oC1.xyz, r0, c0.w, c0.w
    mov_pp oC0, v0.x

// approximately 49 instruction slots used (5 texture, 44 arithmetic)
", ppShader =3D [0xbca9a080]) =3D D3D_OK
--------------------------------------------------------------

Making the following change in the above code:
---
-    cmp_pp r0.xy, r0.x, r1_abs, r0.ywzw    //<=3D=3D=3D=3D=3D this one
+    mov r8, r0
+    cmp_pp r0.xy, r8.x, r1_abs, r0.ywzw
---
workarounds the issue.
Alternative workaround is using different destination register, it just nee=
ds
more changes in the follow up instructions.

With NINE_DEBUG=3Dps R600_DEBUG=3Dps the buggy shader looks like this:
--------------------------------------------------------------
FRAG
PROPERTY FS_COORD_ORIGIN UPPER_LEFT
PROPERTY MUL_ZERO_WINS 1
DCL IN[0], GENERIC[0], PERSPECTIVE, CENTROID
DCL IN[1], GENERIC[1], PERSPECTIVE
DCL IN[2], GENERIC[2], PERSPECTIVE
DCL IN[3], GENERIC[3], PERSPECTIVE
DCL IN[4], GENERIC[4], PERSPECTIVE
DCL OUT[0], COLOR[1]
DCL OUT[1], COLOR
DCL SAMP[1]
DCL SAMP[2]
DCL SAMP[3]
DCL SAMP[4]
DCL CONST[0..20]
DCL TEMP[0..1]
DCL TEMP[2], LOCAL
DCL TEMP[3]
IMM[0] FLT32 {    2.0000,    -1.0000,     1.0000,     0.5000}
IMM[1] FLT32 {    0.0039,     0.0000,
340282346638528859811704183484516925440.0000,     0.0000}
  0: MOV TEMP[0].x, IMM[1].xxxx
  1: MUL OUT[0].w, TEMP[0].xxxx, CONST[13].wwww
  2: TEX TEMP[0], IN[4], SAMP[4], 2D
  3: MUL TEMP[0].x, TEMP[0].xxxx, IN[4].zzzz
  4: POW_SAT TEMP[1].x, |TEMP[0].xxxx|, CONST[20].zzzz
  5: TEX TEMP[0], IN[1], SAMP[1], 2D
  6: MAD TEMP[0].xy, TEMP[0], IMM[0].xxxx, IMM[0].yyyy
  7: DP2 TEMP[2].x, TEMP[0], -TEMP[0]
  8: ADD_SAT TEMP[0].w, IMM[0].zzzz, TEMP[2].xxxx
  9: RSQ TEMP[2], |TEMP[0].wwww|
 10: MIN TEMP[0].w, IMM[1].zzzz, TEMP[2]
 11: RCP TEMP[0].z, TEMP[0].wwww
 12: TEX TEMP[3], IN[1], SAMP[3], 2D
 13: MAD TEMP[1].yz, TEMP[3].xxyw, IMM[0].xxxx, IMM[0].yyyy
 14: DP2 TEMP[2].x, TEMP[1].yzzw, -TEMP[1].yzzw
 15: ADD_SAT TEMP[0].w, IMM[0].zzzz, TEMP[2].xxxx
 16: RSQ TEMP[2], |TEMP[0].wwww|
 17: MIN TEMP[0].w, IMM[1].zzzz, TEMP[2]
 18: RCP TEMP[1].w, TEMP[0].wwww
 19: LRP TEMP[3].xyz, TEMP[1].xxxx, TEMP[1].yzww, TEMP[0]
 20: MUL TEMP[0].xyz, TEMP[3].yyyy, IN[3]
 21: MAD TEMP[0].xyz, TEMP[3].xxxx, IN[2], TEMP[0]
 22: MOV TEMP[1].xyz, IN[2]
 23: MUL TEMP[3].xyw, TEMP[1].zxzy, IN[3].yzzx
 24: MAD TEMP[1].xyz, TEMP[1].yzxw, IN[3].zxyw, -TEMP[3].xyww
 25: MUL TEMP[1].xyz, TEMP[1], IN[2].wwww
 26: MAD TEMP[0].xyz, TEMP[3].zzzz, TEMP[1], TEMP[0]
 27: MAD TEMP[0].xyz, TEMP[0], IMM[0].wwww, IMM[0].wwww
 28: MAD TEMP[0].xyz, TEMP[0], IMM[0].xxxx, IMM[0].yyyy
 29: DP3 TEMP[2].x, TEMP[0], TEMP[0]
 30: RSQ TEMP[2].x, TEMP[2].xxxx
 31: MIN TEMP[2].x, IMM[1].zzzz, TEMP[2].xxxx
 32: MUL TEMP[1].xyz, TEMP[0], TEMP[2].xxxx
 33: MAX TEMP[0].x, |TEMP[1].xxxx|, |TEMP[1].yyyy|
 34: MAX TEMP[3].x, |TEMP[1].zzzz|, TEMP[0].xxxx
 35: ADD TEMP[0].xy, |TEMP[1].zyzw|, -TEMP[3].xxxx
 36: RCP TEMP[0].z, TEMP[3].xxxx
 37: CMP TEMP[0].yw, TEMP[0].yyyy, |TEMP[1].xyzz|, |TEMP[1].xxzz|
 38: CMP TEMP[0].xy, TEMP[0].xxxx, TEMP[0].ywzw, |TEMP[1]|
 39: MUL TEMP[1].xyz, TEMP[1], TEMP[0].zzzz
 40: ADD TEMP[0].z, -TEMP[0].yyyy, TEMP[0].xxxx
 41: CMP TEMP[0].xy, TEMP[0].zzzz, TEMP[0].yxzw, TEMP[0]
 42: RCP TEMP[1].w, TEMP[0].xxxx
 43: MUL TEMP[0].z, TEMP[0].yyyy, TEMP[1].wwww
 44: MOV TEMP[0].w, IMM[1].yyyy
 45: TXL TEMP[0], TEMP[0].xzww, SAMP[2], 2D
 46: MUL TEMP[0].xyz, TEMP[1], TEMP[0].wwww
 47: MAD OUT[0].xyz, TEMP[0], IMM[0].wwww, IMM[0].wwww
 48: MOV OUT[1], IN[0].xxxx
 49: END

=3D=3D=3D=3D=3D SHADER #81 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D PS/REDWOOD/EVE=
RGREEN
=3D=3D=3D=3D=3D
=3D=3D=3D=3D=3D 408 dw =3D=3D=3D=3D=3D 18 gprs =3D=3D=3D=3D=3D 0 stack
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
0000  4000000b a0a80000 ALU 43 @22 KC0[CB0:0-15]
 0022  00380c00 00146b80     1      x: INTERP_ZW          __.x,  R0.w, Para=
m0.x
        VEC_210
 0024  00380800 20146b80            y: INTERP_ZW          __.y,  R0.z, Para=
m0.x
        VEC_210
 0026  00380c00 40346b90            z: INTERP_ZW          R1.z,  R0.w, Para=
m0.x
        VEC_210
 0028  80380800 60346b90            w: INTERP_ZW          R1.w,  R0.z, Para=
m0.x
        VEC_210
 0030  00380c00 00346b10     2      x: INTERP_XY          R1.x,  R0.w, Para=
m0.x
        VEC_210
 0032  00380800 20346b10            y: INTERP_XY          R1.y,  R0.z, Para=
m0.x
        VEC_210
 0034  00380c00 40146b00            z: INTERP_XY          __.z,  R0.w, Para=
m0.x
        VEC_210
 0036  80380800 60146b00            w: INTERP_XY          __.w,  R0.z, Para=
m0.x
        VEC_210
 0038  00382400 00146b80     3      x: INTERP_ZW          __.x,  R0.y, Para=
m1.x
        VEC_210
 0040  00382000 20146b80            y: INTERP_ZW          __.y,  R0.x, Para=
m1.x
        VEC_210
 0042  00382400 40546b90            z: INTERP_ZW          R2.z,  R0.y, Para=
m1.x
        VEC_210
 0044  80382000 60546b90            w: INTERP_ZW          R2.w,  R0.x, Para=
m1.x
        VEC_210
 0046  00382400 00546b10     4      x: INTERP_XY          R2.x,  R0.y, Para=
m1.x
        VEC_210
 0048  00382000 20546b10            y: INTERP_XY          R2.y,  R0.x, Para=
m1.x
        VEC_210
 0050  00382400 40146b00            z: INTERP_XY          __.z,  R0.y, Para=
m1.x
        VEC_210
 0052  80382000 60146b00            w: INTERP_XY          __.w,  R0.x, Para=
m1.x
        VEC_210
 0054  00384400 00146b80     5      x: INTERP_ZW          __.x,  R0.y, Para=
m2.x
        VEC_210
 0056  00384000 20146b80            y: INTERP_ZW          __.y,  R0.x, Para=
m2.x
        VEC_210
 0058  00384400 40746b90            z: INTERP_ZW          R3.z,  R0.y, Para=
m2.x
        VEC_210
 0060  80384000 60746b90            w: INTERP_ZW          R3.w,  R0.x, Para=
m2.x
        VEC_210
 0062  00384400 00746b10     6      x: INTERP_XY          R3.x,  R0.y, Para=
m2.x
        VEC_210
 0064  00384000 20746b10            y: INTERP_XY          R3.y,  R0.x, Para=
m2.x
        VEC_210
 0066  00384400 40146b00            z: INTERP_XY          __.z,  R0.y, Para=
m2.x
        VEC_210
 0068  80384000 60146b00            w: INTERP_XY          __.w,  R0.x, Para=
m2.x
        VEC_210
 0070  00386400 00146b80     7      x: INTERP_ZW          __.x,  R0.y, Para=
m3.x
        VEC_210
 0072  00386000 20146b80            y: INTERP_ZW          __.y,  R0.x, Para=
m3.x
        VEC_210
 0074  00386400 40946b90            z: INTERP_ZW          R4.z,  R0.y, Para=
m3.x
        VEC_210
 0076  80386000 60946b90            w: INTERP_ZW          R4.w,  R0.x, Para=
m3.x
        VEC_210
 0078  00386400 00946b10     8      x: INTERP_XY          R4.x,  R0.y, Para=
m3.x
        VEC_210
 0080  00386000 20946b10            y: INTERP_XY          R4.y,  R0.x, Para=
m3.x
        VEC_210
 0082  00386400 40146b00            z: INTERP_XY          __.z,  R0.y, Para=
m3.x
        VEC_210
 0084  80386000 60146b00            w: INTERP_XY          __.w,  R0.x, Para=
m3.x
        VEC_210
 0086  00388400 00146b80     9      x: INTERP_ZW          __.x,  R0.y, Para=
m4.x
        VEC_210
 0088  00388000 20146b80            y: INTERP_ZW          __.y,  R0.x, Para=
m4.x
        VEC_210
 0090  00388400 40b46b90            z: INTERP_ZW          R5.z,  R0.y, Para=
m4.x
        VEC_210
 0092  80388000 60b46b90            w: INTERP_ZW          R5.w,  R0.x, Para=
m4.x
        VEC_210
 0094  00388400 00b46b10    10      x: INTERP_XY          R5.x,  R0.y, Para=
m4.x
        VEC_210
 0096  00388000 20b46b10            y: INTERP_XY          R5.y,  R0.x, Para=
m4.x
        VEC_210
 0098  00388400 40146b00            z: INTERP_XY          __.z,  R0.y, Para=
m4.x
        VEC_210
 0100  00388000 60146b00            w: INTERP_XY          __.w,  R0.x, Para=
m4.x
        VEC_210
 0102  800000fd 01000c90            t: MOV                R8.x,  [0x3b808081
0.00392157].x
 0104  3b808081=20
 0106  8191a0ff 60c00090    11      w: MUL                R6.w,  PS, KC0[13=
].w
0002  00000036 80400000 TEX 1 @108
 0108  00051410 f00d1008 fc820000 SAMPLE              R8.xyzw, R5.xy__,=20=
=20
RID:20, SID:4 CT:NNNN
0004  40000038 a01c0004 ALU 8 @112 KC0[CB0:16-31]
 0112  8100a008 01000090    12      x: MUL                R8.x,  R8.x, R5.z
 0114  800000fe 01e04191    13      t: LOG_IEEE           R15.x,  |PV.x|
 0116  801fe884 01e00090    14      x: MUL                R15.x,  KC0[4].z,=
 PS
 0118  800000fe 01e04090    15      t: EXP_IEEE           R15.x,  PV.x
 0120  000000ff 81200c90    16      x: MOV_sat            R9.x,  PS
 0122  000000ff a1200c80            y: MOV_sat            __.y,  PS
 0124  000000ff c1200c80            z: MOV_sat            __.z,  PS
 0126  800000ff e1200c80            w: MOV_sat            __.w,  PS
0006  00000040 80400000 TEX 1 @128
 0128  00021110 f00d1008 fc808000 SAMPLE              R8.xyzw, R2.xy__,=20=
=20
RID:17, SID:1 CT:NNNN
0008  00000042 a04c0000 ALU 20 @132
 0132  001fa008 010294f9    17      x: MULADD             R8.x,  R8.x,
[0x40000000 2].x, -1.0
 0134  801fa408 210294f9            y: MULADD             R8.y,  R8.y,
[0x40000000 2].x, -1.0
 0136  40000000=20
 0138  021fc0fe 01405f10    18      x: DOT4               R10.x,  PV.x, -PV=
.x
 0140  029fc4fe 21405f00            y: DOT4               __.y,  PV.y, -PV.y
 0142  021f00f8 41405f00            z: DOT4               __.z,  0, -0
 0144  821f00f8 61405f00            w: DOT4               __.w,  0, -0
 0146  801fc8f9 e1000010    19      w: ADD_sat            R8.w,  1.0, PV.x
 0148  80000cfe 01e04391    20      t: RECIPSQRT_CLAMPED  R15.x,  |PV.w|
 0150  000000ff 01400c90    21      x: MOV                R10.x,  PS
 0152  000000ff 21400c90            y: MOV                R10.y,  PS
 0154  000000ff 41400c90            z: MOV                R10.z,  PS
 0156  800000ff 61400c90            w: MOV                R10.w,  PS
 0158  819fc0fd 61000210    22      w: MIN                R8.w,  [0x7f7fffff
3.40282e+38].x, PV.w
 0160  7f7fffff=20
 0162  80000cfe 01e04310    23      t: RECIP_IEEE         R15.x,  PV.w
 0164  000000ff 01000c80    24      x: MOV                __.x,  PS
 0166  000000ff 21000c80            y: MOV                __.y,  PS
 0168  000000ff 41000c90            z: MOV                R8.z,  PS
 0170  800000ff 61000c80            w: MOV                __.w,  PS
0010  00000056 80400000 TEX 1 @172
 0172  00021310 f00d100b fc818000 SAMPLE              R11.xyzw, R2.xy__,=20=
=20
RID:19, SID:3 CT:NNNN
0012  00000058 a1980000 ALU 103 @176
 0176  001fa00b 212294f9    25      y: MULADD             R9.y,  R11.x,
[0x40000000 2].x, -1.0
 0178  801fa40b 412294f9            z: MULADD             R9.z,  R11.y,
[0x40000000 2].x, -1.0
 0180  40000000=20
 0182  029fc4fe 01405f10    26      x: DOT4               R10.x,  PV.y, -PV=
.y
 0184  031fc8fe 21405f00            y: DOT4               __.y,  PV.z, -PV.z
 0186  021f00f8 41405f00            z: DOT4               __.z,  0, -0
 0188  821f00f8 61405f00            w: DOT4               __.w,  0, -0
 0190  801fc8f9 e1000010    27      w: ADD_sat            R8.w,  1.0, PV.x
 0192  80000cfe 01e04391    28      t: RECIPSQRT_CLAMPED  R15.x,  |PV.w|
 0194  000000ff 01400c90    29      x: MOV                R10.x,  PS
 0196  000000ff 21400c90            y: MOV                R10.y,  PS
 0198  000000ff 41400c90            z: MOV                R10.z,  PS
 0200  800000ff 61400c90            w: MOV                R10.w,  PS
 0202  819fc0fd 61000210    30      w: MIN                R8.w,  [0x7f7fffff
3.40282e+38].x, PV.w
 0204  7f7fffff=20
 0206  80000cfe 01e04310    31      t: RECIP_IEEE         R15.x,  PV.w
 0208  000000ff 01200c80    32      x: MOV                __.x,  PS
 0210  000000ff 21200c80            y: MOV                __.y,  PS
 0212  000000ff 41200c80            z: MOV                __.z,  PS
 0214  800000ff 61200c90            w: MOV                R9.w,  PS
 0216  020120f9 01e00010    33      x: ADD                R15.x,  1.0, -R9.x
 0218  020120f9 21e00010            y: ADD                R15.y,  1.0, -R9.x
 0220  820120f9 41e00010            z: ADD                R15.z,  1.0, -R9.x
 0222  000100fe 01e00090    34      x: MUL                R15.x,  PV.x, R8.x
 0224  008104fe 21e00090            y: MUL                R15.y,  PV.y, R8.y
 0226  810108fe 41e00090            z: MUL                R15.z,  PV.z, R8.z
 0228  00812009 016280fe    35      x: MULADD             R11.x,  R9.x, R9.=
y,
PV.x
 0230  01012009 216284fe            y: MULADD             R11.y,  R9.x, R9.=
z,
PV.y
 0232  81812009 416288fe            z: MULADD             R11.z,  R9.x, R9.=
w,
PV.z
 0234  000084fe 01000090    36      x: MUL                R8.x,  PV.y, R4.x
 0236  008084fe 21000090            y: MUL                R8.y,  PV.y, R4.y
 0238  810084fe 41000090            z: MUL                R8.z,  PV.y, R4.z
 0240  0000600b 010280fe    37      x: MULADD             R8.x,  R11.x, R3.=
x,
PV.x
 0242  0080600b 210284fe            y: MULADD             R8.y,  R11.x, R3.=
y,
PV.y
 0244  8100600b 410288fe            z: MULADD             R8.z,  R11.x, R3.=
z,
PV.z
 0246  00000003 01200c90    38      x: MOV                R9.x,  R3.x
 0248  00000403 21200c90            y: MOV                R9.y,  R3.y
 0250  80000803 41200c90            z: MOV                R9.z,  R3.z
 0252  008088fe 01600090    39      x: MUL                R11.x,  PV.z, R4.y
 0254  010080fe 21600090            y: MUL                R11.y,  PV.x, R4.z
 0256  800084fe 61600090            w: MUL                R11.w,  PV.y, R4.x
 0258  01008409 012290fe    40      x: MULADD             R9.x,  R9.y, R4.z,
-PV.x
 0260  00008809 212294fe            y: MULADD             R9.y,  R9.z, R4.x,
-PV.y
 0262  80808009 41229cfe            z: MULADD             R9.z,  R9.x, R4.y,
-PV.w
 0264  018060fe 01200090    41      x: MUL                R9.x,  PV.x, R3.w
 0266  018064fe 21200090            y: MUL                R9.y,  PV.y, R3.w
 0268  818068fe 41200090            z: MUL                R9.z,  PV.z, R3.w
 0270  001fc80b 01028008    42      x: MULADD             R8.x,  R11.z, PV.=
x,
R8.x
 0272  009fc80b 21028408            y: MULADD             R8.y,  R11.z, PV.=
y,
R8.y
 0274  811fc80b 41028808            z: MULADD             R8.z,  R11.z, PV.=
z,
R8.z
 0276  019f80fe 01028cfc    43      x: MULADD             R8.x,  PV.x, 0.5,=
 0.5
 0278  019f84fe 21028cfc            y: MULADD             R8.y,  PV.y, 0.5,=
 0.5
 0280  819f88fe 41028cfc            z: MULADD             R8.z,  PV.z, 0.5,=
 0.5
 0282  001fa0fe 010294f9    44      x: MULADD             R8.x,  PV.x,
[0x40000000 2].x, -1.0
 0284  001fa4fe 210294f9            y: MULADD             R8.y,  PV.y,
[0x40000000 2].x, -1.0
 0286  801fa8fe 410294f9            z: MULADD             R8.z,  PV.z,
[0x40000000 2].x, -1.0
 0288  40000000=20
 0290  001fc0fe 01405f10    45      x: DOT4               R10.x,  PV.x, PV.x
 0292  009fc4fe 21405f00            y: DOT4               __.y,  PV.y, PV.y
 0294  011fc8fe 41405f00            z: DOT4               __.z,  PV.z, PV.z
 0296  801f00f8 61405f00            w: DOT4               __.w,  0, 0
 0298  800000fe 01e04391    46      t: RECIPSQRT_CLAMPED  R15.x,  |PV.x|
 0300  000000ff 01400c90    47      x: MOV                R10.x,  PS
 0302  000000ff 21400c80            y: MOV                __.y,  PS
 0304  000000ff 41400c80            z: MOV                __.z,  PS
 0306  800000ff 61400c80            w: MOV                __.w,  PS
 0308  801fc0fd 01400210    48      x: MIN                R10.x,  [0x7f7fff=
ff
3.40282e+38].x, PV.x
 0310  7f7fffff=20
 0312  001fc008 01200090    49      x: MUL                R9.x,  R8.x, PV.x
 0314  001fc408 21200090            y: MUL                R9.y,  R8.y, PV.x
 0316  801fc808 41200090            z: MUL                R9.z,  R8.z, PV.x
 0318  809fc0fe 01000193    50      x: MAX                R8.x,  |PV.x|, |P=
V.y|
 0320  801fc809 01600191    51      x: MAX                R11.x,  |R9.z|, P=
V.x
 0322  021fc809 01000011    52      x: ADD                R8.x,  |R9.z|, -P=
V.x
 0324  021fc409 21000011            y: ADD                R8.y,  |R9.y|, -P=
V.x
 0326  800000fe 01e04310            t: RECIP_IEEE         R15.x,  PV.x
 0328  000000ff 01000c80    53      x: MOV                __.x,  PS
 0330  000000ff 21000c80            y: MOV                __.y,  PS
 0332  000000ff 41000c90            z: MOV                R8.z,  PS
 0334  000000ff 61000c80            w: MOV                __.w,  PS
 0336  80000009 22200c91            t: MOV                R17.y,  |R9.x|
 0338  80000409 22000c91    54      y: MOV                R16.y,  |R9.y|
 0340  00822408 210364fe    55      y: CNDGE              R8.y,  R8.y, R17.=
y,
PV.y
 0342  00000809 62200c91            w: MOV                R17.w,  |R9.z|
 0344  80000809 62000c91            t: MOV                R16.w,  |R9.z|
 0346  00000009 02000c91    56      x: MOV                R16.x,  |R9.x|
 0348  819fc4fe 610360ff            w: CNDGE              R8.w,  PV.y, PV.w=
, PS
 0350  001fc008 01036408    57      x: CNDGE              R8.x,  R8.x, PV.x,
R8.y
 0352  80000409 22000c91            y: MOV                R16.y,  |R9.y|
 0354  01010009 01200090    58      x: MUL                R9.x,  R9.x, R8.z
 0356  009fc0fe 21036c08            y: CNDGE              R8.y,  PV.x, PV.y,
R8.w
 0358  01010809 41200090            z: MUL                R9.z,  R9.z, R8.z
 0360  81010409 21200090            t: MUL                R9.y,  R9.y, R8.z
 0362  800114fe 41000010    59      z: ADD                R8.z,  -PV.y, R8.x
 0364  000108fe 01036408    60      x: CNDGE              R8.x,  PV.z, R8.x,
R8.y
 0366  808108fe 21036008            y: CNDGE              R8.y,  PV.z, R8.y,
R8.x
 0368  800000fe 01e04310    61      t: RECIP_IEEE         R15.x,  PV.x
 0370  000000ff 01200c80    62      x: MOV                __.x,  PS
 0372  000000ff 21200c80            y: MOV                __.y,  PS
 0374  000000ff 41200c80            z: MOV                __.z,  PS
 0376  800000ff 61200c90            w: MOV                R9.w,  PS
 0378  019fc408 41000090    63      z: MUL                R8.z,  R8.y, PV.w
 0380  800004f8 61000c90            w: MOV                R8.w,  0
0014  000000c0 80400000 TEX 1 @384
 0384  00081211 f00d1008 6d010000 SAMPLE_L            R8.xyzw, R8.xzww,=20=
=20
RID:18, SID:2 CT:NNNN
0016  000000c2 a0240000 ALU 10 @388
 0388  01810009 01000090    64      x: MUL                R8.x,  R9.x, R8.w
 0390  01810409 21000090            y: MUL                R8.y,  R9.y, R8.w
 0392  81810809 41000090            z: MUL                R8.z,  R9.z, R8.w
 0394  019f80fe 00c28cfc    65      x: MULADD             R6.x,  PV.x, 0.5,=
 0.5
 0396  019f84fe 20c28cfc            y: MULADD             R6.y,  PV.y, 0.5,=
 0.5
 0398  819f88fe 40c28cfc            z: MULADD             R6.z,  PV.z, 0.5,=
 0.5
 0400  00000001 00e00c90    66      x: MOV                R7.x,  R1.x
 0402  00000001 20e00c90            y: MOV                R7.y,  R1.x
 0404  00000001 40e00c90            z: MOV                R7.z,  R1.x
 0406  80000001 60e00c90            w: MOV                R7.w,  R1.x
0018  c0030001 94c00688 EXPORT             PIXEL 1     R6.xyzw
0020  c0038000 95200688 EXPORT_DONE        PIXEL 0     R7.xyzw  EOP
=3D=3D=3D=3D=3D SHADER_END
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D


You are receiving this mail because:
  • You are the assignee for the bug.
= --15059255500.8d566EBF4.31075-- --===============0860267757== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== --===============0860267757==--