diff --git a/src/broadcom/vulkan/v3dv_device.c b/src/broadcom/vulkan/v3dv_device.c index bc9ffcdb5a0..e4a9c506e6b 100644 --- a/src/broadcom/vulkan/v3dv_device.c +++ b/src/broadcom/vulkan/v3dv_device.c @@ -829,6 +829,8 @@ get_device_properties(const struct v3dv_physical_device *device, const uint32_t max_varying_components = 16 * 4; + const uint32_t max_per_stage_resources = 128; + const float v3d_point_line_granularity = 2.0f / (1 << V3D_COORD_SHIFT); const uint32_t max_fb_size = V3D_MAX_IMAGE_DIMENSION; @@ -908,19 +910,20 @@ get_device_properties(const struct v3dv_physical_device *device, .maxPerStageDescriptorSampledImages = MAX_SAMPLED_IMAGES, .maxPerStageDescriptorStorageImages = MAX_STORAGE_IMAGES, .maxPerStageDescriptorInputAttachments = MAX_INPUT_ATTACHMENTS, - .maxPerStageResources = 128, + .maxPerStageResources = max_per_stage_resources, - /* Some of these limits are multiplied by 6 because they need to - * include all possible shader stages (even if not supported). See - * 'Required Limits' table in the Vulkan spec. - */ - .maxDescriptorSetSamplers = 6 * V3D_MAX_TEXTURE_SAMPLERS, - .maxDescriptorSetUniformBuffers = 6 * MAX_UNIFORM_BUFFERS, + .maxDescriptorSetSamplers = + V3DV_SUPPORTED_SHADER_STAGES * V3D_MAX_TEXTURE_SAMPLERS, + .maxDescriptorSetUniformBuffers = + V3DV_SUPPORTED_SHADER_STAGES * MAX_UNIFORM_BUFFERS, .maxDescriptorSetUniformBuffersDynamic = MAX_DYNAMIC_UNIFORM_BUFFERS, - .maxDescriptorSetStorageBuffers = 6 * MAX_STORAGE_BUFFERS, + .maxDescriptorSetStorageBuffers = + V3DV_SUPPORTED_SHADER_STAGES * MAX_STORAGE_BUFFERS, .maxDescriptorSetStorageBuffersDynamic = MAX_DYNAMIC_STORAGE_BUFFERS, - .maxDescriptorSetSampledImages = 6 * MAX_SAMPLED_IMAGES, - .maxDescriptorSetStorageImages = 6 * MAX_STORAGE_IMAGES, + .maxDescriptorSetSampledImages = + V3DV_SUPPORTED_SHADER_STAGES * MAX_SAMPLED_IMAGES, + .maxDescriptorSetStorageImages = + V3DV_SUPPORTED_SHADER_STAGES * MAX_STORAGE_IMAGES, .maxDescriptorSetInputAttachments = MAX_INPUT_ATTACHMENTS, /* Vertex limits */ diff --git a/src/broadcom/vulkan/v3dv_limits.h b/src/broadcom/vulkan/v3dv_limits.h index 4df172e6bf3..6f809817d15 100644 --- a/src/broadcom/vulkan/v3dv_limits.h +++ b/src/broadcom/vulkan/v3dv_limits.h @@ -52,6 +52,8 @@ #define MAX_MULTIVIEW_VIEW_COUNT 16 +#define V3DV_SUPPORTED_SHADER_STAGES 4 + /* These are tunable parameters in the HW design, but all the V3D * implementations agree. */