From a381f356d65565735c1a89c06a92acdda19e9ef4 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Thu, 27 Feb 2025 09:47:00 +1100 Subject: [PATCH] Updated vkd3d-latest patchset --- ...-2feb3a3bbade41b8d7374e0ced625342b35.patch | 2 +- ...-e746a4c12ff1bb2e443a0b32e08778070b1.patch | 2 +- ...-8297ea9aa6d92dec55dc782713655eea998.patch | 130 ++++++++++++++++++ 3 files changed, 132 insertions(+), 2 deletions(-) create mode 100644 patches/vkd3d-latest/0003-Updated-vkd3d-to-8297ea9aa6d92dec55dc782713655eea998.patch diff --git a/patches/vkd3d-latest/0001-Updated-vkd3d-to-2feb3a3bbade41b8d7374e0ced625342b35.patch b/patches/vkd3d-latest/0001-Updated-vkd3d-to-2feb3a3bbade41b8d7374e0ced625342b35.patch index 6a297aa5..31c6737b 100644 --- a/patches/vkd3d-latest/0001-Updated-vkd3d-to-2feb3a3bbade41b8d7374e0ced625342b35.patch +++ b/patches/vkd3d-latest/0001-Updated-vkd3d-to-2feb3a3bbade41b8d7374e0ced625342b35.patch @@ -1,4 +1,4 @@ -From 05cf5fe0eb241db9e3c9a9ad0495e482ddafe178 Mon Sep 17 00:00:00 2001 +From 3a905dd1972b6ecebb24626eab1e82aa69c2e224 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Fri, 21 Feb 2025 09:15:01 +1100 Subject: [PATCH] Updated vkd3d to 2feb3a3bbade41b8d7374e0ced625342b35cd50b. diff --git a/patches/vkd3d-latest/0002-Updated-vkd3d-to-e746a4c12ff1bb2e443a0b32e08778070b1.patch b/patches/vkd3d-latest/0002-Updated-vkd3d-to-e746a4c12ff1bb2e443a0b32e08778070b1.patch index 9d17c410..3089e50c 100644 --- a/patches/vkd3d-latest/0002-Updated-vkd3d-to-e746a4c12ff1bb2e443a0b32e08778070b1.patch +++ b/patches/vkd3d-latest/0002-Updated-vkd3d-to-e746a4c12ff1bb2e443a0b32e08778070b1.patch @@ -1,4 +1,4 @@ -From 77a6f575a77627f53458e9f5f88bf5e6bacd62c4 Mon Sep 17 00:00:00 2001 +From 2c51e991a52e4bc009ca32a51fb1fc654db91487 Mon Sep 17 00:00:00 2001 From: Alistair Leslie-Hughes Date: Tue, 25 Feb 2025 11:54:17 +1100 Subject: [PATCH] Updated vkd3d to e746a4c12ff1bb2e443a0b32e08778070b134cb2. diff --git a/patches/vkd3d-latest/0003-Updated-vkd3d-to-8297ea9aa6d92dec55dc782713655eea998.patch b/patches/vkd3d-latest/0003-Updated-vkd3d-to-8297ea9aa6d92dec55dc782713655eea998.patch new file mode 100644 index 00000000..78cbf435 --- /dev/null +++ b/patches/vkd3d-latest/0003-Updated-vkd3d-to-8297ea9aa6d92dec55dc782713655eea998.patch @@ -0,0 +1,130 @@ +From 3af4a8594334034ce44eb83049b1c659dc31f89e Mon Sep 17 00:00:00 2001 +From: Alistair Leslie-Hughes +Date: Thu, 27 Feb 2025 09:45:01 +1100 +Subject: [PATCH] Updated vkd3d to 8297ea9aa6d92dec55dc782713655eea99878325. + +--- + libs/vkd3d/include/vkd3d_shader.h | 4 ++++ + libs/vkd3d/libs/vkd3d-shader/spirv.c | 7 +++++++ + libs/vkd3d/libs/vkd3d/device.c | 10 ++++++++++ + libs/vkd3d/libs/vkd3d/state.c | 2 ++ + libs/vkd3d/libs/vkd3d/vkd3d_private.h | 1 + + 5 files changed, 24 insertions(+) + +diff --git a/libs/vkd3d/include/vkd3d_shader.h b/libs/vkd3d/include/vkd3d_shader.h +index 7e51bdd5179..2e1f37f12e6 100644 +--- a/libs/vkd3d/include/vkd3d_shader.h ++++ b/libs/vkd3d/include/vkd3d_shader.h +@@ -249,6 +249,10 @@ enum vkd3d_shader_compile_option_feature_flags + * QUAD bits set. + * - supportedStages include COMPUTE and FRAGMENT. \since 1.12 */ + VKD3D_SHADER_COMPILE_OPTION_FEATURE_WAVE_OPS = 0x00000004, ++ /** The SPIR-V target environment supports zero-initializing workgroup ++ * memory. This corresponds to the "shaderZeroInitializeWorkgroupMemory" ++ * Vulkan feature. \since 1.16 */ ++ VKD3D_SHADER_COMPILE_OPTION_FEATURE_ZERO_INITIALIZE_WORKGROUP_MEMORY = 0x00000008, + + VKD3D_FORCE_32_BIT_ENUM(VKD3D_SHADER_COMPILE_OPTION_FEATURE_FLAGS), + }; +diff --git a/libs/vkd3d/libs/vkd3d-shader/spirv.c b/libs/vkd3d/libs/vkd3d-shader/spirv.c +index b65082e35a7..695def77b34 100644 +--- a/libs/vkd3d/libs/vkd3d-shader/spirv.c ++++ b/libs/vkd3d/libs/vkd3d-shader/spirv.c +@@ -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); +diff --git a/libs/vkd3d/libs/vkd3d/device.c b/libs/vkd3d/libs/vkd3d/device.c +index 67bc4493855..a1f451efa7c 100644 +--- a/libs/vkd3d/libs/vkd3d/device.c ++++ b/libs/vkd3d/libs/vkd3d/device.c +@@ -97,6 +97,7 @@ static const struct vkd3d_optional_extension_info optional_device_extensions[] = + VK_EXTENSION(KHR_PUSH_DESCRIPTOR, KHR_push_descriptor), + VK_EXTENSION(KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE, KHR_sampler_mirror_clamp_to_edge), + VK_EXTENSION(KHR_TIMELINE_SEMAPHORE, KHR_timeline_semaphore), ++ VK_EXTENSION(KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY, KHR_zero_initialize_workgroup_memory), + /* EXT extensions */ + VK_EXTENSION(EXT_4444_FORMATS, EXT_4444_formats), + VK_EXTENSION(EXT_CALIBRATED_TIMESTAMPS, EXT_calibrated_timestamps), +@@ -835,6 +836,7 @@ struct vkd3d_physical_device_info + VkPhysicalDeviceTimelineSemaphoreFeaturesKHR timeline_semaphore_features; + VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT mutable_features; + VkPhysicalDevice4444FormatsFeaturesEXT formats4444_features; ++ VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR zero_initialize_workgroup_memory_features; + + VkPhysicalDeviceFeatures2 features2; + }; +@@ -870,6 +872,8 @@ static void vkd3d_chain_physical_device_info_structures(struct vkd3d_physical_de + vk_prepend_struct(&info->features2, &info->mutable_features); + if (vulkan_info->EXT_4444_formats) + vk_prepend_struct(&info->features2, &info->formats4444_features); ++ if (vulkan_info->KHR_zero_initialize_workgroup_memory) ++ vk_prepend_struct(&info->features2, &info->zero_initialize_workgroup_memory_features); + + info->properties2.pNext = NULL; + +@@ -908,6 +912,7 @@ static void vkd3d_physical_device_info_init(struct vkd3d_physical_device_info *i + info->timeline_semaphore_features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR; + info->mutable_features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT; + info->formats4444_features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT; ++ info->zero_initialize_workgroup_memory_features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR; + + info->properties2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2; + info->maintenance3_properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES; +@@ -1418,6 +1423,9 @@ static void vkd3d_init_feature_level(struct vkd3d_vulkan_info *vk_info, + else if (!vk_info->vertex_attrib_zero_divisor) + WARN("Vertex attribute instance rate zero divisor is not supported.\n"); + ++ if (!vk_info->KHR_zero_initialize_workgroup_memory) ++ WARN("Shader zero initialize workgroup memory is not supported.\n"); ++ + #undef CHECK_MIN_REQUIREMENT + #undef CHECK_MAX_REQUIREMENT + #undef CHECK_FEATURE +@@ -1834,6 +1842,8 @@ static HRESULT vkd3d_init_device_caps(struct d3d12_device *device, + vulkan_info->EXT_mutable_descriptor_type = false; + if (!physical_device_info->timeline_semaphore_features.timelineSemaphore) + vulkan_info->KHR_timeline_semaphore = false; ++ if (!physical_device_info->zero_initialize_workgroup_memory_features.shaderZeroInitializeWorkgroupMemory) ++ vulkan_info->KHR_zero_initialize_workgroup_memory = false; + + physical_device_info->formats4444_features.formatA4B4G4R4 = VK_FALSE; + +diff --git a/libs/vkd3d/libs/vkd3d/state.c b/libs/vkd3d/libs/vkd3d/state.c +index b5a8d1331fb..a1f09422305 100644 +--- a/libs/vkd3d/libs/vkd3d/state.c ++++ b/libs/vkd3d/libs/vkd3d/state.c +@@ -2370,6 +2370,8 @@ static unsigned int feature_flags_compile_option(const struct d3d12_device *devi + flags |= VKD3D_SHADER_COMPILE_OPTION_FEATURE_FLOAT64; + if (device->feature_options1.WaveOps) + flags |= VKD3D_SHADER_COMPILE_OPTION_FEATURE_WAVE_OPS; ++ if (device->vk_info.KHR_zero_initialize_workgroup_memory) ++ flags |= VKD3D_SHADER_COMPILE_OPTION_FEATURE_ZERO_INITIALIZE_WORKGROUP_MEMORY; + + return flags; + } +diff --git a/libs/vkd3d/libs/vkd3d/vkd3d_private.h b/libs/vkd3d/libs/vkd3d/vkd3d_private.h +index 7015508e384..e0e44248053 100644 +--- a/libs/vkd3d/libs/vkd3d/vkd3d_private.h ++++ b/libs/vkd3d/libs/vkd3d/vkd3d_private.h +@@ -132,6 +132,7 @@ struct vkd3d_vulkan_info + bool KHR_push_descriptor; + bool KHR_sampler_mirror_clamp_to_edge; + bool KHR_timeline_semaphore; ++ bool KHR_zero_initialize_workgroup_memory; + /* EXT device extensions */ + bool EXT_4444_formats; + bool EXT_calibrated_timestamps; +-- +2.47.2 +