vk/runtime: Allow "require full subgroups" for Mesh/Task

Per description of VkPipelineShaderStageCreateFlags

```
  VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT specifies
  that the subgroup sizes must be launched with all invocations active in
  the task, mesh, or compute stage.
```

Future CTS tests will use that.

Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31023>
This commit is contained in:
Caio Oliveira 2024-09-04 08:48:58 -07:00 committed by Marge Bot
parent 1e84588887
commit ce9e2dbc62

View file

@ -116,7 +116,9 @@ vk_get_subgroup_size(uint32_t spirv_version,
/* Starting with SPIR-V 1.6, varying subgroup size the default */
return SUBGROUP_SIZE_VARYING;
} else if (require_full) {
assert(stage == MESA_SHADER_COMPUTE);
assert(stage == MESA_SHADER_COMPUTE ||
stage == MESA_SHADER_MESH ||
stage == MESA_SHADER_TASK);
return SUBGROUP_SIZE_FULL_SUBGROUPS;
} else {
return SUBGROUP_SIZE_API_CONSTANT;