Module: Mesa Branch: staging/21.3 Commit: c707001cae150cdb6ae3dc0063efd18472240331 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=c707001cae150cdb6ae3dc0063efd18472240331
Author: Filip Gawin <[email protected]> Date: Tue Dec 21 18:52:31 2021 +0100 r300: fix handling swizzle in transform_source_conflicts these tests are now passing: dEQP-GLES2.functional.shaders.operator.exponential.pow.highp_vec2_vertex,Fail dEQP-GLES2.functional.shaders.operator.exponential.pow.highp_vec3_vertex,Fail dEQP-GLES2.functional.shaders.operator.exponential.pow.highp_vec4_vertex,Fail dEQP-GLES2.functional.shaders.operator.exponential.pow.mediump_vec2_vertex,Fail dEQP-GLES2.functional.shaders.operator.exponential.pow.mediump_vec3_vertex,Fail dEQP-GLES2.functional.shaders.operator.exponential.pow.mediump_vec4_vertex,Fail Fixes: 1c2c4ddbd1e9 ("r300g: copy the compiler from r300c") Reviewed-by: Emma Anholt <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14282> (cherry picked from commit 2ddfb9c256bf18c3031eac28dae04745668f3299) --- .pick_status.json | 2 +- src/gallium/drivers/r300/compiler/r3xx_vertprog.c | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index c9519219a5b..6de4cc2aa8e 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -796,7 +796,7 @@ "description": "r300: fix handling swizzle in transform_source_conflicts", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "1c2c4ddbd1e97bfd13430521e5c09cb5ce8e36e6" }, diff --git a/src/gallium/drivers/r300/compiler/r3xx_vertprog.c b/src/gallium/drivers/r300/compiler/r3xx_vertprog.c index 24121ca8fe4..f4ba0e1abae 100644 --- a/src/gallium/drivers/r300/compiler/r3xx_vertprog.c +++ b/src/gallium/drivers/r300/compiler/r3xx_vertprog.c @@ -732,10 +732,13 @@ static int transform_source_conflicts( inst_mov->U.I.DstReg.File = RC_FILE_TEMPORARY; inst_mov->U.I.DstReg.Index = tmpreg; inst_mov->U.I.SrcReg[0] = inst->U.I.SrcReg[2]; + inst_mov->U.I.SrcReg[0].Swizzle = RC_SWIZZLE_XYZW; + inst_mov->U.I.SrcReg[0].Negate = 0; + inst_mov->U.I.SrcReg[0].Abs = 0; - reset_srcreg(&inst->U.I.SrcReg[2]); inst->U.I.SrcReg[2].File = RC_FILE_TEMPORARY; inst->U.I.SrcReg[2].Index = tmpreg; + inst->U.I.SrcReg[2].RelAddr = false; } } @@ -747,10 +750,13 @@ static int transform_source_conflicts( inst_mov->U.I.DstReg.File = RC_FILE_TEMPORARY; inst_mov->U.I.DstReg.Index = tmpreg; inst_mov->U.I.SrcReg[0] = inst->U.I.SrcReg[1]; + inst_mov->U.I.SrcReg[0].Swizzle = RC_SWIZZLE_XYZW; + inst_mov->U.I.SrcReg[0].Negate = 0; + inst_mov->U.I.SrcReg[0].Abs = 0; - reset_srcreg(&inst->U.I.SrcReg[1]); inst->U.I.SrcReg[1].File = RC_FILE_TEMPORARY; inst->U.I.SrcReg[1].Index = tmpreg; + inst->U.I.SrcReg[1].RelAddr = false; } }
