vkd3d/device: Require VK_KHR_zero_initialize_workgroup_memory when appropriate.

That extension (and the corresponding feature) must be enabled when
the Initializer operand is used for workgroup variables.
This commit is contained in:
Giovanni Mascellani
2025-02-21 14:55:24 +01:00
committed by Henri Verbeet
parent e746a4c12f
commit 8297ea9aa6
Notes: Henri Verbeet 2025-02-26 16:18:05 +01:00
Approved-by: Giovanni Mascellani (@giomasce)
Approved-by: Henri Verbeet (@hverbeet)
Merge-Request: https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/1390
5 changed files with 24 additions and 0 deletions

View File

@@ -6905,6 +6905,13 @@ static void spirv_compiler_emit_workgroup_memory(struct spirv_compiler *compiler
const SpvStorageClass storage_class = SpvStorageClassWorkgroup;
struct vkd3d_symbol reg_symbol;
if (zero_init && !(compiler->features & VKD3D_SHADER_COMPILE_OPTION_FEATURE_ZERO_INITIALIZE_WORKGROUP_MEMORY))
{
WARN("Unsupported zero-initialized workgroup memory.\n");
spirv_compiler_error(compiler, VKD3D_SHADER_ERROR_SPV_UNSUPPORTED_FEATURE,
"The target environment does not support zero-initialized workgroup memory.");
}
/* Alignment is supported only in the Kernel execution model. */
if (alignment)
TRACE("Ignoring alignment %u.\n", alignment);