From 4a080a8904d16bb64ed4ad6d83a2cdd9b3ad633b Mon Sep 17 00:00:00 2001 From: Georg Lehmann Date: Sun, 14 Sep 2025 15:44:44 +0200 Subject: [PATCH] radv: allow application required fragment shader subgroup size MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If the application really thinks it needs pswave32, let it use it. Fragment shaders also have no concept of full subgroups, so the existing code that chooses the subgroup size will work already. For pre raster stages, we cannot allow this because of potential mismatches in merged stages. Reviewed-by: Timur Kristóf Part-of: --- src/amd/vulkan/radv_physical_device.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/amd/vulkan/radv_physical_device.c b/src/amd/vulkan/radv_physical_device.c index 2e481443027..889b8dc6d36 100644 --- a/src/amd/vulkan/radv_physical_device.c +++ b/src/amd/vulkan/radv_physical_device.c @@ -1703,7 +1703,9 @@ radv_get_physical_device_properties(struct radv_physical_device *pdev) .minSubgroupSize = pdev->info.gfx_level >= GFX10 ? 32 : 64, .maxSubgroupSize = 64, .maxComputeWorkgroupSubgroups = UINT32_MAX, - .requiredSubgroupSizeStages = pdev->info.gfx_level >= GFX10 ? VK_SHADER_STAGE_COMPUTE_BIT | taskmesh_stages : 0, + .requiredSubgroupSizeStages = pdev->info.gfx_level >= GFX10 + ? VK_SHADER_STAGE_COMPUTE_BIT | VK_SHADER_STAGE_FRAGMENT_BIT | taskmesh_stages + : 0, .maxInlineUniformBlockSize = MAX_INLINE_UNIFORM_BLOCK_SIZE, .maxPerStageDescriptorInlineUniformBlocks = MAX_INLINE_UNIFORM_BLOCK_SIZE * MAX_SETS, .maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = MAX_INLINE_UNIFORM_BLOCK_SIZE * MAX_SETS,