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: 1c2c4ddbd1 ("r300g: copy the compiler from r300c")

Reviewed-by: Emma Anholt <emma@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14282>
(cherry picked from commit 2ddfb9c256)
This commit is contained in:
Filip Gawin 2021-12-21 18:52:31 +01:00 committed by Eric Engestrom
parent 5870889109
commit 1ec2c58de0
2 changed files with 9 additions and 3 deletions

View file

@ -3550,7 +3550,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"
},

View file

@ -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;
}
}