panfrost: Implement workgroups_x_shift_2 quirk
I'm not sure why this is done this way, but let's follow the blob.
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
diff --git a/src/panfrost/encoder/pan_invocation.c b/src/panfrost/encoder/pan_invocation.c
index 96efd19..8fb1669 100644
--- a/src/panfrost/encoder/pan_invocation.c
+++ b/src/panfrost/encoder/pan_invocation.c
@@ -106,8 +106,17 @@
if (quirk_graphics && (num_z <= 1))
out->workgroups_z_shift = 32;
- /* Special fields */
- out->workgroups_x_shift_2 = MAX2(out->workgroups_x_shift, 2);
+ /* Quirk: for graphics, workgroups_x_shift_2 must be at least 2,
+ * whereas for OpenCL it is simply equal to workgroups_x_shift. For GL
+ * compute, it seems it might *always* be 2, but this is suspicious and
+ * needs further investigation. (I'm probably just using GL wrong). */
+
+ if (quirk_graphics)
+ out->workgroups_x_shift_2 = MAX2(out->workgroups_x_shift, 2);
+ else
+ out->workgroups_x_shift_2 = out->workgroups_x_shift;
+
+ /* TODO: Compute workgroups_x_shift_3 */
out->workgroups_x_shift_3 = out->workgroups_x_shift_2;
}