From: Georg Lehmann dadschoorse@gmail.com
Signed-off-by: Georg Lehmann dadschoorse@gmail.com Signed-off-by: Alexandre Julliard julliard@winehq.org --- dlls/winevulkan/loader_thunks.c | 19 ++++++ dlls/winevulkan/loader_thunks.h | 15 ++++ dlls/winevulkan/make_vulkan | 6 +- dlls/winevulkan/vulkan_thunks.c | 91 +++++++++++++++++++++++++ dlls/winevulkan/vulkan_thunks.h | 16 +++++ dlls/winevulkan/winevulkan.json | 2 +- include/wine/vulkan.h | 117 +++++++++++++++++++++++++++++++- 7 files changed, 263 insertions(+), 3 deletions(-)
diff --git a/dlls/winevulkan/loader_thunks.c b/dlls/winevulkan/loader_thunks.c index fdcdb3b964f..055759518c0 100644 --- a/dlls/winevulkan/loader_thunks.c +++ b/dlls/winevulkan/loader_thunks.c @@ -1710,6 +1710,14 @@ void WINAPI vkCmdSubpassShadingHUAWEI(VkCommandBuffer commandBuffer) unix_funcs->p_vk_call(unix_vkCmdSubpassShadingHUAWEI, ¶ms); }
+void WINAPI vkCmdTraceRaysIndirect2KHR(VkCommandBuffer commandBuffer, VkDeviceAddress indirectDeviceAddress) +{ + struct vkCmdTraceRaysIndirect2KHR_params params; + params.commandBuffer = commandBuffer; + params.indirectDeviceAddress = indirectDeviceAddress; + unix_funcs->p_vk_call(unix_vkCmdTraceRaysIndirect2KHR, ¶ms); +} + void WINAPI vkCmdTraceRaysIndirectKHR(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR *pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR *pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR *pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR *pCallableShaderBindingTable, VkDeviceAddress indirectDeviceAddress) { struct vkCmdTraceRaysIndirectKHR_params params; @@ -3691,6 +3699,15 @@ VkResult WINAPI vkGetPipelineExecutableStatisticsKHR(VkDevice device, const VkPi return vk_unix_call(unix_vkGetPipelineExecutableStatisticsKHR, ¶ms); }
+VkResult WINAPI vkGetPipelinePropertiesEXT(VkDevice device, const VkPipelineInfoEXT *pPipelineInfo, VkBaseOutStructure *pPipelineProperties) +{ + struct vkGetPipelinePropertiesEXT_params params; + params.device = device; + params.pPipelineInfo = pPipelineInfo; + params.pPipelineProperties = pPipelineProperties; + return vk_unix_call(unix_vkGetPipelinePropertiesEXT, ¶ms); +} + void WINAPI vkGetPrivateData(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t *pData) { struct vkGetPrivateData_params params; @@ -4440,6 +4457,7 @@ static const struct vulkan_func vk_device_dispatch_table[] = {"vkCmdSetViewportWithCount", vkCmdSetViewportWithCount}, {"vkCmdSetViewportWithCountEXT", vkCmdSetViewportWithCountEXT}, {"vkCmdSubpassShadingHUAWEI", vkCmdSubpassShadingHUAWEI}, + {"vkCmdTraceRaysIndirect2KHR", vkCmdTraceRaysIndirect2KHR}, {"vkCmdTraceRaysIndirectKHR", vkCmdTraceRaysIndirectKHR}, {"vkCmdTraceRaysKHR", vkCmdTraceRaysKHR}, {"vkCmdTraceRaysNV", vkCmdTraceRaysNV}, @@ -4592,6 +4610,7 @@ static const struct vulkan_func vk_device_dispatch_table[] = {"vkGetPipelineExecutableInternalRepresentationsKHR", vkGetPipelineExecutableInternalRepresentationsKHR}, {"vkGetPipelineExecutablePropertiesKHR", vkGetPipelineExecutablePropertiesKHR}, {"vkGetPipelineExecutableStatisticsKHR", vkGetPipelineExecutableStatisticsKHR}, + {"vkGetPipelinePropertiesEXT", vkGetPipelinePropertiesEXT}, {"vkGetPrivateData", vkGetPrivateData}, {"vkGetPrivateDataEXT", vkGetPrivateDataEXT}, {"vkGetQueryPoolResults", vkGetQueryPoolResults}, diff --git a/dlls/winevulkan/loader_thunks.h b/dlls/winevulkan/loader_thunks.h index 36f9d70521d..e0641b0be3d 100644 --- a/dlls/winevulkan/loader_thunks.h +++ b/dlls/winevulkan/loader_thunks.h @@ -193,6 +193,7 @@ enum unix_call unix_vkCmdSetViewportWithCount, unix_vkCmdSetViewportWithCountEXT, unix_vkCmdSubpassShadingHUAWEI, + unix_vkCmdTraceRaysIndirect2KHR, unix_vkCmdTraceRaysIndirectKHR, unix_vkCmdTraceRaysKHR, unix_vkCmdTraceRaysNV, @@ -405,6 +406,7 @@ enum unix_call unix_vkGetPipelineExecutableInternalRepresentationsKHR, unix_vkGetPipelineExecutablePropertiesKHR, unix_vkGetPipelineExecutableStatisticsKHR, + unix_vkGetPipelinePropertiesEXT, unix_vkGetPrivateData, unix_vkGetPrivateDataEXT, unix_vkGetQueryPoolResults, @@ -1811,6 +1813,12 @@ struct vkCmdSubpassShadingHUAWEI_params VkCommandBuffer commandBuffer; };
+struct vkCmdTraceRaysIndirect2KHR_params +{ + VkCommandBuffer commandBuffer; + VkDeviceAddress indirectDeviceAddress; +}; + struct vkCmdTraceRaysIndirectKHR_params { VkCommandBuffer commandBuffer; @@ -3409,6 +3417,13 @@ struct vkGetPipelineExecutableStatisticsKHR_params VkPipelineExecutableStatisticKHR *pStatistics; };
+struct vkGetPipelinePropertiesEXT_params +{ + VkDevice device; + const VkPipelineInfoEXT *pPipelineInfo; + VkBaseOutStructure *pPipelineProperties; +}; + struct vkGetPrivateData_params { VkDevice device; diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan index 4348201810b..2d49eceb93b 100755 --- a/dlls/winevulkan/make_vulkan +++ b/dlls/winevulkan/make_vulkan @@ -64,7 +64,7 @@ from enum import Enum LOGGER = logging.Logger("vulkan") LOGGER.addHandler(logging.StreamHandler())
-VK_XML_VERSION = "1.3.211" +VK_XML_VERSION = "1.3.213" WINE_VK_VERSION = (1, 3)
# Filenames to create. @@ -116,6 +116,10 @@ UNSUPPORTED_EXTENSIONS = [ # Extensions which require callback handling "VK_EXT_device_memory_report",
+ # Needs https://github.com/KhronosGroup/Vulkan-Docs/pull/1848 + # or a rework of how we detect returned structs. + "VK_EXT_image_compression_control", + # Deprecated extensions "VK_NV_external_memory_capabilities", "VK_NV_external_memory_win32", diff --git a/dlls/winevulkan/vulkan_thunks.c b/dlls/winevulkan/vulkan_thunks.c index ab9ee691986..20074e94887 100644 --- a/dlls/winevulkan/vulkan_thunks.c +++ b/dlls/winevulkan/vulkan_thunks.c @@ -2247,6 +2247,17 @@ static inline void convert_VkPipelineInfoKHR_win_to_host(const VkPipelineInfoKHR } #endif /* USE_STRUCT_CONVERSION */
+#if defined(USE_STRUCT_CONVERSION) +static inline void convert_VkPipelineInfoEXT_win_to_host(const VkPipelineInfoEXT *in, VkPipelineInfoEXT_host *out) +{ + if (!in) return; + + out->sType = in->sType; + out->pNext = in->pNext; + out->pipeline = in->pipeline; +} +#endif /* USE_STRUCT_CONVERSION */ + #if defined(USE_STRUCT_CONVERSION) static inline VkSparseMemoryBind_host *convert_VkSparseMemoryBind_array_win_to_host(const VkSparseMemoryBind *in, uint32_t count) { @@ -3594,6 +3605,23 @@ VkResult convert_VkDeviceCreateInfo_struct_chain(const void *pNext, VkDeviceCrea break; }
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR: + { + const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR *in = (const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR *)in_header; + VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR *out; + + if (!(out = malloc(sizeof(*out)))) goto out_of_memory; + + out->sType = in->sType; + out->pNext = NULL; + out->rayTracingMaintenance1 = in->rayTracingMaintenance1; + out->rayTracingPipelineTraceRaysIndirect2 = in->rayTracingPipelineTraceRaysIndirect2; + + out_header->pNext = (VkBaseOutStructure *)out; + out_header = out_header->pNext; + break; + } + case VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD: { const VkDeviceMemoryOverallocationCreateInfoAMD *in = (const VkDeviceMemoryOverallocationCreateInfoAMD *)in_header; @@ -4825,6 +4853,38 @@ VkResult convert_VkDeviceCreateInfo_struct_chain(const void *pNext, VkDeviceCrea break; }
+ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT: + { + const VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT *in = (const VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT *)in_header; + VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT *out; + + if (!(out = malloc(sizeof(*out)))) goto out_of_memory; + + out->sType = in->sType; + out->pNext = NULL; + out->subpassMergeFeedback = in->subpassMergeFeedback; + + out_header->pNext = (VkBaseOutStructure *)out; + out_header = out_header->pNext; + break; + } + + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT: + { + const VkPhysicalDevicePipelinePropertiesFeaturesEXT *in = (const VkPhysicalDevicePipelinePropertiesFeaturesEXT *)in_header; + VkPhysicalDevicePipelinePropertiesFeaturesEXT *out; + + if (!(out = malloc(sizeof(*out)))) goto out_of_memory; + + out->sType = in->sType; + out->pNext = NULL; + out->pipelinePropertiesIdentifier = in->pipelinePropertiesIdentifier; + + out_header->pNext = (VkBaseOutStructure *)out; + out_header = out_header->pNext; + break; + } + default: FIXME("Application requested a linked structure of type %u.\n", in_header->sType); } @@ -6921,6 +6981,14 @@ static NTSTATUS wine_vkCmdSubpassShadingHUAWEI(void *args) return STATUS_SUCCESS; }
+static NTSTATUS wine_vkCmdTraceRaysIndirect2KHR(void *args) +{ + struct vkCmdTraceRaysIndirect2KHR_params *params = args; + TRACE("%p, 0x%s\n", params->commandBuffer, wine_dbgstr_longlong(params->indirectDeviceAddress)); + params->commandBuffer->device->funcs.p_vkCmdTraceRaysIndirect2KHR(params->commandBuffer->command_buffer, params->indirectDeviceAddress); + return STATUS_SUCCESS; +} + static NTSTATUS wine_vkCmdTraceRaysIndirectKHR(void *args) { struct vkCmdTraceRaysIndirectKHR_params *params = args; @@ -9058,6 +9126,24 @@ static NTSTATUS wine_vkGetPipelineExecutableStatisticsKHR(void *args) #endif }
+static NTSTATUS wine_vkGetPipelinePropertiesEXT(void *args) +{ + struct vkGetPipelinePropertiesEXT_params *params = args; +#if defined(USE_STRUCT_CONVERSION) + VkResult result; + VkPipelineInfoEXT_host pPipelineInfo_host; + TRACE("%p, %p, %p\n", params->device, params->pPipelineInfo, params->pPipelineProperties); + + convert_VkPipelineInfoEXT_win_to_host(params->pPipelineInfo, &pPipelineInfo_host); + result = params->device->funcs.p_vkGetPipelinePropertiesEXT(params->device->device, &pPipelineInfo_host, params->pPipelineProperties); + + return result; +#else + TRACE("%p, %p, %p\n", params->device, params->pPipelineInfo, params->pPipelineProperties); + return params->device->funcs.p_vkGetPipelinePropertiesEXT(params->device->device, params->pPipelineInfo, params->pPipelineProperties); +#endif +} + static NTSTATUS wine_vkGetPrivateData(void *args) { struct vkGetPrivateData_params *params = args; @@ -9717,6 +9803,7 @@ static const char * const vk_device_extensions[] = "VK_EXT_pci_bus_info", "VK_EXT_pipeline_creation_cache_control", "VK_EXT_pipeline_creation_feedback", + "VK_EXT_pipeline_properties", "VK_EXT_post_depth_coverage", "VK_EXT_primitive_topology_list_restart", "VK_EXT_primitives_generated_query", @@ -9738,6 +9825,7 @@ static const char * const vk_device_extensions[] = "VK_EXT_shader_subgroup_vote", "VK_EXT_shader_viewport_index_layer", "VK_EXT_subgroup_size_control", + "VK_EXT_subpass_merge_feedback", "VK_EXT_texel_buffer_alignment", "VK_EXT_texture_compression_astc_hdr", "VK_EXT_tooling_info", @@ -9793,6 +9881,7 @@ static const char * const vk_device_extensions[] = "VK_KHR_present_wait", "VK_KHR_push_descriptor", "VK_KHR_ray_query", + "VK_KHR_ray_tracing_maintenance1", "VK_KHR_ray_tracing_pipeline", "VK_KHR_relaxed_block_layout", "VK_KHR_sampler_mirror_clamp_to_edge", @@ -10123,6 +10212,7 @@ const unixlib_entry_t __wine_unix_call_funcs[] = wine_vkCmdSetViewportWithCount, wine_vkCmdSetViewportWithCountEXT, wine_vkCmdSubpassShadingHUAWEI, + wine_vkCmdTraceRaysIndirect2KHR, wine_vkCmdTraceRaysIndirectKHR, wine_vkCmdTraceRaysKHR, wine_vkCmdTraceRaysNV, @@ -10335,6 +10425,7 @@ const unixlib_entry_t __wine_unix_call_funcs[] = wine_vkGetPipelineExecutableInternalRepresentationsKHR, wine_vkGetPipelineExecutablePropertiesKHR, wine_vkGetPipelineExecutableStatisticsKHR, + wine_vkGetPipelinePropertiesEXT, wine_vkGetPrivateData, wine_vkGetPrivateDataEXT, wine_vkGetQueryPoolResults, diff --git a/dlls/winevulkan/vulkan_thunks.h b/dlls/winevulkan/vulkan_thunks.h index d8387fa54f5..f3886d8582e 100644 --- a/dlls/winevulkan/vulkan_thunks.h +++ b/dlls/winevulkan/vulkan_thunks.h @@ -1572,10 +1572,22 @@ typedef struct VkPipelineInfoKHR_host const void *pNext; VkPipeline pipeline; } VkPipelineInfoKHR_host; +typedef VkPipelineInfoKHR VkPipelineInfoEXT; #else typedef VkPipelineInfoKHR VkPipelineInfoKHR_host; #endif
+#if defined(USE_STRUCT_CONVERSION) +typedef struct VkPipelineInfoEXT_host +{ + VkStructureType sType; + const void *pNext; + VkPipeline pipeline; +} VkPipelineInfoEXT_host; +#else +typedef VkPipelineInfoEXT VkPipelineInfoEXT_host; +#endif + #if defined(USE_STRUCT_CONVERSION) typedef struct VkSparseMemoryBind_host { @@ -1984,6 +1996,7 @@ struct vulkan_device_funcs void (*p_vkCmdSetViewportWithCount)(VkCommandBuffer, uint32_t, const VkViewport *); void (*p_vkCmdSetViewportWithCountEXT)(VkCommandBuffer, uint32_t, const VkViewport *); void (*p_vkCmdSubpassShadingHUAWEI)(VkCommandBuffer); + void (*p_vkCmdTraceRaysIndirect2KHR)(VkCommandBuffer, VkDeviceAddress); void (*p_vkCmdTraceRaysIndirectKHR)(VkCommandBuffer, const VkStridedDeviceAddressRegionKHR_host *, const VkStridedDeviceAddressRegionKHR_host *, const VkStridedDeviceAddressRegionKHR_host *, const VkStridedDeviceAddressRegionKHR_host *, VkDeviceAddress); void (*p_vkCmdTraceRaysKHR)(VkCommandBuffer, const VkStridedDeviceAddressRegionKHR_host *, const VkStridedDeviceAddressRegionKHR_host *, const VkStridedDeviceAddressRegionKHR_host *, const VkStridedDeviceAddressRegionKHR_host *, uint32_t, uint32_t, uint32_t); void (*p_vkCmdTraceRaysNV)(VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, uint32_t, uint32_t, uint32_t); @@ -2137,6 +2150,7 @@ struct vulkan_device_funcs VkResult (*p_vkGetPipelineExecutableInternalRepresentationsKHR)(VkDevice, const VkPipelineExecutableInfoKHR_host *, uint32_t *, VkPipelineExecutableInternalRepresentationKHR *); VkResult (*p_vkGetPipelineExecutablePropertiesKHR)(VkDevice, const VkPipelineInfoKHR_host *, uint32_t *, VkPipelineExecutablePropertiesKHR *); VkResult (*p_vkGetPipelineExecutableStatisticsKHR)(VkDevice, const VkPipelineExecutableInfoKHR_host *, uint32_t *, VkPipelineExecutableStatisticKHR *); + VkResult (*p_vkGetPipelinePropertiesEXT)(VkDevice, const VkPipelineInfoEXT_host *, VkBaseOutStructure *); void (*p_vkGetPrivateData)(VkDevice, VkObjectType, uint64_t, VkPrivateDataSlot, uint64_t *); void (*p_vkGetPrivateDataEXT)(VkDevice, VkObjectType, uint64_t, VkPrivateDataSlot, uint64_t *); VkResult (*p_vkGetQueryPoolResults)(VkDevice, VkQueryPool, uint32_t, uint32_t, size_t, void *, VkDeviceSize, VkQueryResultFlags); @@ -2434,6 +2448,7 @@ struct vulkan_instance_funcs USE_VK_FUNC(vkCmdSetViewportWithCount) \ USE_VK_FUNC(vkCmdSetViewportWithCountEXT) \ USE_VK_FUNC(vkCmdSubpassShadingHUAWEI) \ + USE_VK_FUNC(vkCmdTraceRaysIndirect2KHR) \ USE_VK_FUNC(vkCmdTraceRaysIndirectKHR) \ USE_VK_FUNC(vkCmdTraceRaysKHR) \ USE_VK_FUNC(vkCmdTraceRaysNV) \ @@ -2587,6 +2602,7 @@ struct vulkan_instance_funcs USE_VK_FUNC(vkGetPipelineExecutableInternalRepresentationsKHR) \ USE_VK_FUNC(vkGetPipelineExecutablePropertiesKHR) \ USE_VK_FUNC(vkGetPipelineExecutableStatisticsKHR) \ + USE_VK_FUNC(vkGetPipelinePropertiesEXT) \ USE_VK_FUNC(vkGetPrivateData) \ USE_VK_FUNC(vkGetPrivateDataEXT) \ USE_VK_FUNC(vkGetQueryPoolResults) \ diff --git a/dlls/winevulkan/winevulkan.json b/dlls/winevulkan/winevulkan.json index 2345547ff1d..987249a6f08 100644 --- a/dlls/winevulkan/winevulkan.json +++ b/dlls/winevulkan/winevulkan.json @@ -2,6 +2,6 @@ "file_format_version": "1.0.0", "ICD": { "library_path": ".\winevulkan.dll", - "api_version": "1.3.211" + "api_version": "1.3.213" } } diff --git a/include/wine/vulkan.h b/include/wine/vulkan.h index 2a7a02db636..a1b9040715d 100644 --- a/include/wine/vulkan.h +++ b/include/wine/vulkan.h @@ -475,12 +475,16 @@ #define VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME "VK_HUAWEI_subpass_shading" #define VK_HUAWEI_INVOCATION_MASK_SPEC_VERSION 1 #define VK_HUAWEI_INVOCATION_MASK_EXTENSION_NAME "VK_HUAWEI_invocation_mask" +#define VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION 1 +#define VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME "VK_EXT_pipeline_properties" #define VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION 1 #define VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME "VK_EXT_extended_dynamic_state2" #define VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION 1 #define VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME "VK_EXT_color_write_enable" #define VK_EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION 1 #define VK_EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME "VK_EXT_primitives_generated_query" +#define VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION 1 +#define VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME "VK_KHR_ray_tracing_maintenance1" #define VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION 1 #define VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME "VK_EXT_global_priority_query" #define VK_EXT_IMAGE_VIEW_MIN_LOD_SPEC_VERSION 1 @@ -505,6 +509,8 @@ #define VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME "VK_QCOM_fragment_density_map_offset" #define VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION 1 #define VK_NV_LINEAR_COLOR_ATTACHMENT_EXTENSION_NAME "VK_NV_linear_color_attachment" +#define VK_EXT_SUBPASS_MERGE_FEEDBACK_SPEC_VERSION 1 +#define VK_EXT_SUBPASS_MERGE_FEEDBACK_EXTENSION_NAME "VK_EXT_subpass_merge_feedback" #define VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION 13 #define VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME "VK_KHR_acceleration_structure" #define VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION 1 @@ -527,7 +533,7 @@ #define VK_API_VERSION_1_1 VK_MAKE_API_VERSION(0, 1, 1, 0) #define VK_API_VERSION_1_2 VK_MAKE_API_VERSION(0, 1, 2, 0) #define VK_API_VERSION_1_3 VK_MAKE_API_VERSION(0, 1, 3, 0) -#define VK_HEADER_VERSION 211 +#define VK_HEADER_VERSION 213 #define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION) #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; #define VK_USE_64_BIT_PTR_DEFINES 0 @@ -685,6 +691,8 @@ typedef VkFlags VkGraphicsPipelineLibraryFlagsEXT; typedef VkFlags VkHeadlessSurfaceCreateFlagsEXT; typedef VkFlags VkIOSSurfaceCreateFlagsMVK; typedef VkFlags VkImageAspectFlags; +typedef VkFlags VkImageCompressionFixedRateFlagsEXT; +typedef VkFlags VkImageCompressionFlagsEXT; typedef VkFlags VkImageConstraintsInfoFlagsFUCHSIA; typedef VkFlags VkImageCreateFlags; typedef VkFlags VkImageFormatConstraintsFlagsFUCHSIA; @@ -947,6 +955,7 @@ static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR = 0x20000 static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT = 0x400000000ull; static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR = 0x400000000ull; static const VkAccessFlagBits2 VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI = 0x8000000000ull; +static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR = 0x10000000000ull; typedef VkAccessFlagBits2 VkAccessFlagBits2KHR;
typedef enum VkAcquireProfilingLockFlagBitsKHR @@ -2820,6 +2829,7 @@ static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCE static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000ull; static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 0x02000000ull; static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 0x02000000ull; +static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR = 0x10000000ull; static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COPY_BIT = 0x100000000ull; static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COPY_BIT_KHR = 0x100000000ull; static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RESOLVE_BIT = 0x200000000ull; @@ -2938,6 +2948,8 @@ typedef enum VkQueryType VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000, VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000, VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000, + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = 1000386000, + VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR = 1000386001, VK_QUERY_TYPE_MAX_ENUM = 0x7fffffff, } VkQueryType;
@@ -3758,10 +3770,13 @@ typedef enum VkStructureType VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI = 1000369001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI = 1000369002, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI = 1000370000, + VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT = 1000372000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT = 1000372001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT = 1000377000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT = 1000381000, VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT = 1000381001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT = 1000382000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR = 1000386000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000, VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT = 1000391000, @@ -3783,6 +3798,10 @@ typedef enum VkStructureType VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001, VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = 1000458000, + VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT = 1000458001, + VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_INFO_EXT = 1000458002, + VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_INFO_EXT = 1000458003, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT, @@ -3944,6 +3963,7 @@ typedef enum VkStructureType VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR = VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2, VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR = VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2, VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3, + VK_STRUCTURE_TYPE_PIPELINE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR, VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES, @@ -3992,6 +4012,25 @@ typedef enum VkSubpassDescriptionFlagBits VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7fffffff, } VkSubpassDescriptionFlagBits;
+typedef enum VkSubpassMergeStatusEXT +{ + VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0, + VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12, + VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13, + VK_SUBPASS_MERGE_STATUS_EXT_MAX_ENUM = 0x7fffffff, +} VkSubpassMergeStatusEXT; + typedef enum VkSurfaceTransformFlagBitsKHR { VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001, @@ -6963,6 +7002,13 @@ typedef struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR VkBool32 pipelineExecutableInfo; } VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR;
+typedef struct VkPhysicalDevicePipelinePropertiesFeaturesEXT +{ + VkStructureType sType; + void *pNext; + VkBool32 pipelinePropertiesIdentifier; +} VkPhysicalDevicePipelinePropertiesFeaturesEXT; + typedef struct VkPhysicalDevicePointClippingProperties { VkStructureType sType; @@ -7070,6 +7116,14 @@ typedef struct VkPhysicalDeviceRayQueryFeaturesKHR VkBool32 rayQuery; } VkPhysicalDeviceRayQueryFeaturesKHR;
+typedef struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR +{ + VkStructureType sType; + void *pNext; + VkBool32 rayTracingMaintenance1; + VkBool32 rayTracingPipelineTraceRaysIndirect2; +} VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR; + typedef struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV { VkStructureType sType; @@ -7466,6 +7520,13 @@ typedef struct VkPhysicalDeviceSubgroupSizeControlProperties } VkPhysicalDeviceSubgroupSizeControlProperties; typedef VkPhysicalDeviceSubgroupSizeControlProperties VkPhysicalDeviceSubgroupSizeControlPropertiesEXT;
+typedef struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT +{ + VkStructureType sType; + void *pNext; + VkBool32 subpassMergeFeedback; +} VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT; + typedef struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI { VkStructureType sType; @@ -8053,12 +8114,14 @@ typedef struct VkPipelineFragmentShadingRateStateCreateInfoKHR VkFragmentShadingRateCombinerOpKHR combinerOps[2]; } VkPipelineFragmentShadingRateStateCreateInfoKHR;
+ typedef struct VkPipelineInfoKHR { VkStructureType sType; const void *pNext; VkPipeline WINE_VK_ALIGN(8) pipeline; } VkPipelineInfoKHR; +typedef VkPipelineInfoKHR VkPipelineInfoEXT;
typedef struct VkPipelineInputAssemblyStateCreateInfo { @@ -8090,6 +8153,13 @@ typedef struct VkPipelineMultisampleStateCreateInfo VkBool32 alphaToOneEnable; } VkPipelineMultisampleStateCreateInfo;
+typedef struct VkPipelinePropertiesIdentifierEXT +{ + VkStructureType sType; + void *pNext; + uint8_t pipelineIdentifier[VK_UUID_SIZE]; +} VkPipelinePropertiesIdentifierEXT; + typedef struct VkPipelineRasterizationConservativeStateCreateInfoEXT { VkStructureType sType; @@ -8387,6 +8457,20 @@ typedef struct VkRenderPassBeginInfo const VkClearValue *pClearValues; } VkRenderPassBeginInfo;
+typedef struct VkRenderPassCreationControlEXT +{ + VkStructureType sType; + const void *pNext; + VkBool32 disallowMerging; +} VkRenderPassCreationControlEXT; + +typedef struct VkRenderPassCreationFeedbackInfoEXT +{ + VkStructureType sType; + const void *pNext; + uint32_t postMergeSubpassCount; +} VkRenderPassCreationFeedbackInfoEXT; + typedef struct VkRenderPassFragmentDensityMapCreateInfoEXT { VkStructureType sType; @@ -8416,6 +8500,15 @@ typedef struct VkRenderPassMultiviewCreateInfo } VkRenderPassMultiviewCreateInfo; typedef VkRenderPassMultiviewCreateInfo VkRenderPassMultiviewCreateInfoKHR;
+typedef struct VkRenderPassSubpassFeedbackInfoEXT +{ + VkStructureType sType; + const void *pNext; + VkSubpassMergeStatusEXT subpassMergeStatus; + char description[VK_MAX_DESCRIPTION_SIZE]; + uint32_t postMergeIndex; +} VkRenderPassSubpassFeedbackInfoEXT; + typedef struct VkRenderPassTransformBeginInfoQCOM { VkStructureType sType; @@ -8961,6 +9054,24 @@ typedef struct VkTimelineSemaphoreSubmitInfo } VkTimelineSemaphoreSubmitInfo; typedef VkTimelineSemaphoreSubmitInfo VkTimelineSemaphoreSubmitInfoKHR;
+typedef struct VkTraceRaysIndirectCommand2KHR +{ + VkDeviceAddress raygenShaderRecordAddress; + VkDeviceSize WINE_VK_ALIGN(8) raygenShaderRecordSize; + VkDeviceAddress missShaderBindingTableAddress; + VkDeviceSize WINE_VK_ALIGN(8) missShaderBindingTableSize; + VkDeviceSize WINE_VK_ALIGN(8) missShaderBindingTableStride; + VkDeviceAddress hitShaderBindingTableAddress; + VkDeviceSize WINE_VK_ALIGN(8) hitShaderBindingTableSize; + VkDeviceSize WINE_VK_ALIGN(8) hitShaderBindingTableStride; + VkDeviceAddress callableShaderBindingTableAddress; + VkDeviceSize WINE_VK_ALIGN(8) callableShaderBindingTableSize; + VkDeviceSize WINE_VK_ALIGN(8) callableShaderBindingTableStride; + uint32_t width; + uint32_t height; + uint32_t depth; +} VkTraceRaysIndirectCommand2KHR; + typedef struct VkTraceRaysIndirectCommandKHR { uint32_t width; @@ -10180,6 +10291,7 @@ typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWScalingNV)(VkCommandBuffer, uint32 typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWithCount)(VkCommandBuffer, uint32_t, const VkViewport *); typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWithCountEXT)(VkCommandBuffer, uint32_t, const VkViewport *); typedef void (VKAPI_PTR *PFN_vkCmdSubpassShadingHUAWEI)(VkCommandBuffer); +typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysIndirect2KHR)(VkCommandBuffer, VkDeviceAddress); typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysIndirectKHR)(VkCommandBuffer, const VkStridedDeviceAddressRegionKHR *, const VkStridedDeviceAddressRegionKHR *, const VkStridedDeviceAddressRegionKHR *, const VkStridedDeviceAddressRegionKHR *, VkDeviceAddress); typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysKHR)(VkCommandBuffer, const VkStridedDeviceAddressRegionKHR *, const VkStridedDeviceAddressRegionKHR *, const VkStridedDeviceAddressRegionKHR *, const VkStridedDeviceAddressRegionKHR *, uint32_t, uint32_t, uint32_t); typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysNV)(VkCommandBuffer, VkBuffer, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, VkBuffer, VkDeviceSize, VkDeviceSize, uint32_t, uint32_t, uint32_t); @@ -10397,6 +10509,7 @@ typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineCacheData)(VkDevice, VkPipelineCac typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutableInternalRepresentationsKHR)(VkDevice, const VkPipelineExecutableInfoKHR *, uint32_t *, VkPipelineExecutableInternalRepresentationKHR *); typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutablePropertiesKHR)(VkDevice, const VkPipelineInfoKHR *, uint32_t *, VkPipelineExecutablePropertiesKHR *); typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutableStatisticsKHR)(VkDevice, const VkPipelineExecutableInfoKHR *, uint32_t *, VkPipelineExecutableStatisticKHR *); +typedef VkResult (VKAPI_PTR *PFN_vkGetPipelinePropertiesEXT)(VkDevice, const VkPipelineInfoEXT *, VkBaseOutStructure *); typedef void (VKAPI_PTR *PFN_vkGetPrivateData)(VkDevice, VkObjectType, uint64_t, VkPrivateDataSlot, uint64_t *); typedef void (VKAPI_PTR *PFN_vkGetPrivateDataEXT)(VkDevice, VkObjectType, uint64_t, VkPrivateDataSlot, uint64_t *); typedef VkResult (VKAPI_PTR *PFN_vkGetQueryPoolResults)(VkDevice, VkQueryPool, uint32_t, uint32_t, size_t, void *, VkDeviceSize, VkQueryResultFlags); @@ -10637,6 +10750,7 @@ void VKAPI_CALL vkCmdSetViewportWScalingNV(VkCommandBuffer commandBuffer, uint32 void VKAPI_CALL vkCmdSetViewportWithCount(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport *pViewports); void VKAPI_CALL vkCmdSetViewportWithCountEXT(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport *pViewports); void VKAPI_CALL vkCmdSubpassShadingHUAWEI(VkCommandBuffer commandBuffer); +void VKAPI_CALL vkCmdTraceRaysIndirect2KHR(VkCommandBuffer commandBuffer, VkDeviceAddress indirectDeviceAddress); void VKAPI_CALL vkCmdTraceRaysIndirectKHR(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR *pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR *pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR *pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR *pCallableShaderBindingTable, VkDeviceAddress indirectDeviceAddress); void VKAPI_CALL vkCmdTraceRaysKHR(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR *pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR *pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR *pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR *pCallableShaderBindingTable, uint32_t width, uint32_t height, uint32_t depth); void VKAPI_CALL vkCmdTraceRaysNV(VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer, VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer, VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride, VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset, VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer, VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride, uint32_t width, uint32_t height, uint32_t depth); @@ -10854,6 +10968,7 @@ VkResult VKAPI_CALL vkGetPipelineCacheData(VkDevice device, VkPipelineCache pipe VkResult VKAPI_CALL vkGetPipelineExecutableInternalRepresentationsKHR(VkDevice device, const VkPipelineExecutableInfoKHR *pExecutableInfo, uint32_t *pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR *pInternalRepresentations); VkResult VKAPI_CALL vkGetPipelineExecutablePropertiesKHR(VkDevice device, const VkPipelineInfoKHR *pPipelineInfo, uint32_t *pExecutableCount, VkPipelineExecutablePropertiesKHR *pProperties); VkResult VKAPI_CALL vkGetPipelineExecutableStatisticsKHR(VkDevice device, const VkPipelineExecutableInfoKHR *pExecutableInfo, uint32_t *pStatisticCount, VkPipelineExecutableStatisticKHR *pStatistics); +VkResult VKAPI_CALL vkGetPipelinePropertiesEXT(VkDevice device, const VkPipelineInfoEXT *pPipelineInfo, VkBaseOutStructure *pPipelineProperties); void VKAPI_CALL vkGetPrivateData(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t *pData); void VKAPI_CALL vkGetPrivateDataEXT(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t *pData); VkResult VKAPI_CALL vkGetQueryPoolResults(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void *pData, VkDeviceSize stride, VkQueryResultFlags flags);