radv: allow application required fragment shader subgroup size

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 <timur.kristof@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37360>
This commit is contained in:
Georg Lehmann 2025-09-14 15:44:44 +02:00 committed by Marge Bot
parent 4a84acff8a
commit 4a080a8904

View file

@ -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,