From c41f88fb3505590cf0e0847bfb4b5679243a072c Mon Sep 17 00:00:00 2001 From: Lishin Date: Mon, 25 May 2026 23:02:17 +0100 Subject: [PATCH] v3d/v3dv: use common compute limits Move the compute workgroup count and shared memory limits shared by v3d and v3dv to v3d_limits.h. Reviewed-by: Iago Toral Quiroga Part-of: --- src/broadcom/common/v3d_limits.h | 3 +++ src/broadcom/vulkan/v3dv_device.c | 6 ++++-- src/gallium/drivers/v3d/v3d_screen.c | 4 ++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/broadcom/common/v3d_limits.h b/src/broadcom/common/v3d_limits.h index 34d1345cfbe..f270692c4b2 100644 --- a/src/broadcom/common/v3d_limits.h +++ b/src/broadcom/common/v3d_limits.h @@ -69,6 +69,9 @@ #define V3D_MAX_ARRAY_LAYERS 2048 +#define V3D_MAX_COMPUTE_SHARED_MEMORY_SIZE (32u * 1024u) + +#define V3D_MAX_CSD_WG_COUNT 65535 #define V3D_MAX_CSD_WG_SIZE 256 #define V3D_MAX_VERTEX_ATTRIB_DIVISOR 0xffff diff --git a/src/broadcom/vulkan/v3dv_device.c b/src/broadcom/vulkan/v3dv_device.c index ba9986bd896..307c060e509 100644 --- a/src/broadcom/vulkan/v3dv_device.c +++ b/src/broadcom/vulkan/v3dv_device.c @@ -1027,8 +1027,10 @@ get_device_properties(const struct v3dv_physical_device *device, MAX_STORAGE_IMAGES, /* Compute limits */ - .maxComputeSharedMemorySize = 32u * 1024u, - .maxComputeWorkGroupCount = { 65535, 65535, 65535 }, + .maxComputeSharedMemorySize = V3D_MAX_COMPUTE_SHARED_MEMORY_SIZE, + .maxComputeWorkGroupCount = { V3D_MAX_CSD_WG_COUNT, + V3D_MAX_CSD_WG_COUNT, + V3D_MAX_CSD_WG_COUNT }, .maxComputeWorkGroupInvocations = V3D_MAX_CSD_WG_SIZE, .maxComputeWorkGroupSize = { V3D_MAX_CSD_WG_SIZE, V3D_MAX_CSD_WG_SIZE, diff --git a/src/gallium/drivers/v3d/v3d_screen.c b/src/gallium/drivers/v3d/v3d_screen.c index 94c2db33d3f..02a646bbae9 100644 --- a/src/gallium/drivers/v3d/v3d_screen.c +++ b/src/gallium/drivers/v3d/v3d_screen.c @@ -202,7 +202,7 @@ v3d_init_compute_caps(struct v3d_screen *screen) */ caps->max_grid_size[0] = caps->max_grid_size[1] = - caps->max_grid_size[2] = 65535; + caps->max_grid_size[2] = V3D_MAX_CSD_WG_COUNT; /* GL_MAX_COMPUTE_WORK_GROUP_SIZE */ caps->max_block_size[0] = @@ -216,7 +216,7 @@ v3d_init_compute_caps(struct v3d_screen *screen) caps->max_variable_threads_per_block = V3D_MAX_CSD_WG_SIZE; /* GL_MAX_COMPUTE_SHARED_MEMORY_SIZE */ - caps->max_local_size = 32768; + caps->max_local_size = V3D_MAX_COMPUTE_SHARED_MEMORY_SIZE; struct sysinfo si; sysinfo(&si);