diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c index c25802062aa..238bca7d174 100644 --- a/src/gallium/drivers/panfrost/pan_context.c +++ b/src/gallium/drivers/panfrost/pan_context.c @@ -553,7 +553,7 @@ panfrost_direct_draw(struct panfrost_batch *batch, cfg.workgroups_x_shift = 0; cfg.workgroups_y_shift = 0; cfg.workgroups_z_shift = 32; - cfg.unknown_shift = 2; + cfg.thread_group_split = MALI_SPLIT_MIN_EFFICIENT; } } diff --git a/src/panfrost/lib/midgard.xml b/src/panfrost/lib/midgard.xml index 1f526952a66..f27a9ef7450 100644 --- a/src/panfrost/lib/midgard.xml +++ b/src/panfrost/lib/midgard.xml @@ -626,7 +626,9 @@ - + + + diff --git a/src/panfrost/lib/pan_invocation.c b/src/panfrost/lib/pan_invocation.c index c92296fc37e..6c0843e6755 100644 --- a/src/panfrost/lib/pan_invocation.c +++ b/src/panfrost/lib/pan_invocation.c @@ -98,9 +98,11 @@ panfrost_pack_work_groups_compute( if (quirk_graphics && (num_z <= 1)) cfg.workgroups_z_shift = 32; - /* Quirk: for graphics, >= 2. For compute, 2 without barriers - * but equal to workgroups_x_shift with barriers */ + /* For graphics, set to the minimum efficient value. For + * compute, must equal the workgroup X shift for barriers to + * function correctly */ - cfg.unknown_shift = quirk_graphics ? 2 : cfg.workgroups_x_shift; + cfg.thread_group_split = quirk_graphics ? + MALI_SPLIT_MIN_EFFICIENT : cfg.workgroups_x_shift; } }