Reviewed-by: Nirmoy Das <nirmoy.das@intel.com>From: Janga Rahul Kumar <janga.rahul.kumar@intel.com> Global workgroup size is calculated based on local X/Y/Z maximum and thread group id X dimension. Cc: Nirmoy Das <nirmoy.das@intel.com> Signed-off-by: Janga Rahul Kumar <janga.rahul.kumar@intel.com>
--- lib/intel_compute.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/intel_compute.c b/lib/intel_compute.c index 9d3b97efe..72025a481 100644 --- a/lib/intel_compute.c +++ b/lib/intel_compute.c @@ -1243,15 +1243,19 @@ static void xe2lpg_compute_exec_compute(uint32_t *addr_bo_buffer_batch, addr_bo_buffer_batch[b++] = offset_indirect_data_start; addr_bo_buffer_batch[b++] = 0xbe040000; addr_bo_buffer_batch[b++] = 0xffffffff; - addr_bo_buffer_batch[b++] = 0x000003ff; + addr_bo_buffer_batch[b++] = 0x000003ff; // Local X/Y/Z Dimension if (threadgroup_preemption) - addr_bo_buffer_batch[b++] = 0x00200000; // Global workgroup size + /* + * Create multiple threadgroups using higher gloabl workgroup size + * Global Workgroup size = Local X * Thread Group X + Local Y * Thread Group Y + Local Z * Thread Group Z + */ + addr_bo_buffer_batch[b++] = 0x00200000; // Thread Group ID X Dimension else addr_bo_buffer_batch[b++] = 0x00000002; - addr_bo_buffer_batch[b++] = 0x00000001; - addr_bo_buffer_batch[b++] = 0x00000001; + addr_bo_buffer_batch[b++] = 0x00000001; // Thread Group ID Y Dimension + addr_bo_buffer_batch[b++] = 0x00000001; // Thread Group ID Z Dimension addr_bo_buffer_batch[b++] = 0x00000000; addr_bo_buffer_batch[b++] = 0x00000000; addr_bo_buffer_batch[b++] = 0x00000000;