summaryrefslogtreecommitdiffstats
path: root/src/panfrost/midgard
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <[email protected]>2020-02-04 09:29:59 -0500
committerAlyssa Rosenzweig <[email protected]>2020-02-16 09:16:47 -0500
commitb2cab6b6db4244cb95abb5bf13734360df8391ea (patch)
treeddced03ea28e4b7560d900df3d261f349e18304e /src/panfrost/midgard
parenta55a2e02a54cadcd9466d02021c2c7a0739c373f (diff)
pan/midgard: Fix 32/64 mixed swizzle packing
Occurs in SSBO address computation. Signed-off-by: Alyssa Rosenzweig <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3835>
Diffstat (limited to 'src/panfrost/midgard')
-rw-r--r--src/panfrost/midgard/midgard_emit.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/panfrost/midgard/midgard_emit.c b/src/panfrost/midgard/midgard_emit.c
index 1db5980e374..4d58217ceeb 100644
--- a/src/panfrost/midgard/midgard_emit.c
+++ b/src/panfrost/midgard/midgard_emit.c
@@ -194,8 +194,13 @@ mir_pack_swizzle_alu(midgard_instruction *ins)
packed = mir_pack_swizzle_64(ins->swizzle[i], components);
if (mode == midgard_reg_mode_32) {
- src[i].rep_low |= (ins->swizzle[i][0] >= COMPONENT_Z);
- src[i].rep_high |= (ins->swizzle[i][1] >= COMPONENT_Z);
+ bool lo = ins->swizzle[i][0] >= COMPONENT_Z;
+ bool hi = ins->swizzle[i][1] >= COMPONENT_Z;
+
+ /* TODO: can we mix halves? */
+ assert(lo == hi);
+
+ src[i].rep_low |= lo;
} else if (mode < midgard_reg_mode_32) {
unreachable("Cannot encode 8/16 swizzle in 64-bit");
}