[PATCH i-g-t] lib/intel_compute: Add documentation of global workgroup size

janga.rahul.kumar at intel.com janga.rahul.kumar at intel.com
Mon Mar 18 08:52:27 UTC 2024


From: Janga Rahul Kumar <janga.rahul.kumar at 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 at intel.com>
Signed-off-by: Janga Rahul Kumar <janga.rahul.kumar at 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;
-- 
2.25.1



More information about the igt-dev mailing list