From 37525665842156a4e3dad9e53103466d78083d67 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Fri, 16 Aug 2019 16:31:00 -0700 Subject: [PATCH] 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 --- src/panfrost/encoder/pan_invocation.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/panfrost/encoder/pan_invocation.c b/src/panfrost/encoder/pan_invocation.c index 96efd190d82..8fb1669c9ed 100644 --- a/src/panfrost/encoder/pan_invocation.c +++ b/src/panfrost/encoder/pan_invocation.c @@ -106,8 +106,17 @@ panfrost_pack_work_groups_compute( 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; } -- 2.30.2