mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 09:18:04 +02:00
jay: Clear default group for quad swizzles
Quad swizzles should always execute with NoMask and group 0. We skipped initializing the group, and so inherited whatever the state from the previous instruction was. This led to incorrect behavior if the previous instruction was SIMD split: (16) mov.u32 g84<2>, g2 | (16|M16) mov.u32 g86<2>, g3 | (32|M16&W) mov.u32 g2, g126.2<4,4,0> | I@1 Oops. The final quad swizzle shouldn't have had M16 set. Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/40960>
This commit is contained in:
parent
8bfb139033
commit
3a1227f36b
1 changed files with 5 additions and 7 deletions
|
|
@ -264,16 +264,10 @@ emit(struct brw_codegen *p,
|
|||
|
||||
brw_set_default_exec_size(p, util_logbase2(exec_size));
|
||||
brw_set_default_mask_control(p, jay_is_no_mask(I));
|
||||
brw_set_default_group(p, simd_offs * exec_size);
|
||||
brw_set_default_swsb(p, dep);
|
||||
brw_set_default_saturate(p, I->saturate);
|
||||
|
||||
/* Quad swizzle can get split down to SIMD4 even on Xe2 where we don't have
|
||||
* NibCtrl. Fortunately, it's NoMask so it doesn't matter.
|
||||
*/
|
||||
if (I->op != JAY_OPCODE_QUAD_SWIZZLE) {
|
||||
brw_set_default_group(p, simd_offs * exec_size);
|
||||
}
|
||||
|
||||
/* Grab the hardware predicate, corresponding either to a logical predicate
|
||||
* or SEL's selector.
|
||||
*/
|
||||
|
|
@ -419,6 +413,10 @@ emit(struct brw_codegen *p,
|
|||
break;
|
||||
|
||||
case JAY_OPCODE_QUAD_SWIZZLE:
|
||||
/* Quad swizzle can get split down to SIMD4 even on Xe2 where we don't
|
||||
* have NibCtrl. Fortunately, it's NoMask so it doesn't matter.
|
||||
*/
|
||||
brw_set_default_group(p, 0);
|
||||
brw_MOV(p, dst, quad_swizzle(SRC(0), I));
|
||||
break;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue