From e761c45390549ab28606b0f62d51d31eec7883e1 Mon Sep 17 00:00:00 2001 From: Sagar Ghuge Date: Wed, 2 Jul 2025 20:50:38 -0700 Subject: [PATCH] anv: Set TG size based on number of threads MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Series shows improvement on TotalWarPharaoh-trace-dx11-1440p-ultra-n=2080 title by 0.96% (not a lot but still it's improvement, so will take that.) Signed-off-by: Sagar Ghuge Reviewed-by: José Roberto de Souza Part-of: --- src/intel/vulkan/genX_cmd_compute.c | 3 +++ src/intel/vulkan/genX_pipeline.c | 3 +++ src/intel/vulkan/genX_simple_shader.c | 1 + 3 files changed, 7 insertions(+) diff --git a/src/intel/vulkan/genX_cmd_compute.c b/src/intel/vulkan/genX_cmd_compute.c index 3e5c0d5e082..763335f69cf 100644 --- a/src/intel/vulkan/genX_cmd_compute.c +++ b/src/intel/vulkan/genX_cmd_compute.c @@ -367,6 +367,7 @@ get_interface_descriptor_data(struct anv_cmd_buffer *cmd_buffer, .BindingTableEntryCount = devinfo->verx10 == 125 ? 0 : MIN2(shader->bind_map.surface_count, 30), .NumberofThreadsinGPGPUThreadGroup = dispatch->threads, + .ThreadGroupDispatchSize = intel_compute_threads_group_dispatch_size(dispatch->threads), .SharedLocalMemorySize = intel_compute_slm_encode_size(GFX_VER, prog_data->base.total_shared), .PreferredSLMAllocationSize = intel_compute_preferred_slm_calc_encode_size(devinfo, @@ -1392,6 +1393,8 @@ cmd_buffer_trace_rays(struct anv_cmd_buffer *cmd_buffer, .SamplerCount = 0, .BindingTablePointer = surfaces->offset, .NumberofThreadsinGPGPUThreadGroup = 1, + .ThreadGroupDispatchSize = + intel_compute_threads_group_dispatch_size(dispatch.threads), .BTDMode = true, #if INTEL_NEEDS_WA_14017794102 || INTEL_NEEDS_WA_14023061436 .ThreadPreemption = false, diff --git a/src/intel/vulkan/genX_pipeline.c b/src/intel/vulkan/genX_pipeline.c index 2a92f432af8..8d60778071b 100644 --- a/src/intel/vulkan/genX_pipeline.c +++ b/src/intel/vulkan/genX_pipeline.c @@ -28,6 +28,7 @@ #include "genxml/genX_rt_pack.h" #include "common/intel_compute_slm.h" +#include "common/intel_common.h" #include "common/intel_genX_state_brw.h" #include "common/intel_l3_config.h" #include "common/intel_sample_positions.h" @@ -2080,6 +2081,8 @@ genX(compute_pipeline_emit)(struct anv_compute_pipeline *pipeline) .BindingTableEntryCount = devinfo->verx10 == 125 ? 0 : 1 + MIN2(shader->bind_map.surface_count, 30), .NumberofThreadsinGPGPUThreadGroup = dispatch.threads, + .ThreadGroupDispatchSize = + intel_compute_threads_group_dispatch_size(dispatch.threads), .SharedLocalMemorySize = intel_compute_slm_encode_size(GFX_VER, prog_data->base.total_shared), .PreferredSLMAllocationSize = diff --git a/src/intel/vulkan/genX_simple_shader.c b/src/intel/vulkan/genX_simple_shader.c index fb357fda768..5de8e82c7fd 100644 --- a/src/intel/vulkan/genX_simple_shader.c +++ b/src/intel/vulkan/genX_simple_shader.c @@ -647,6 +647,7 @@ genX(emit_simple_shader_dispatch)(struct anv_simple_shader *state, .BindingTablePointer = 0, .BindingTableEntryCount = 0, .NumberofThreadsinGPGPUThreadGroup = dispatch.threads, + .ThreadGroupDispatchSize = intel_compute_threads_group_dispatch_size(dispatch.threads), .SharedLocalMemorySize = intel_compute_slm_encode_size(GFX_VER, prog_data->base.total_shared), .NumberOfBarriers = prog_data->uses_barrier,