Module: wine Branch: master Commit: 219359ddddea1d0e1c66ed16347503bfd8c29fb8 URL: https://source.winehq.org/git/wine.git/?a=commit;h=219359ddddea1d0e1c66ed163...
Author: Georg Lehmann dadschoorse@gmail.com Date: Sat Oct 31 21:12:21 2020 +0100
winevulkan: Enable VK_EXT_validation_features and VK_EXT_validation_flags.
Signed-off-by: Georg Lehmann dadschoorse@gmail.com Signed-off-by: Liam Middlebrook lmiddlebrook@nvidia.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/winevulkan/make_vulkan | 2 -- dlls/winevulkan/vulkan_thunks.c | 38 +++++++++++++++++++++++++++++ include/wine/vulkan.h | 53 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 91 insertions(+), 2 deletions(-)
diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan index 72b0adf0c97..2ef44338d40 100755 --- a/dlls/winevulkan/make_vulkan +++ b/dlls/winevulkan/make_vulkan @@ -86,8 +86,6 @@ EXT_BLOCK_SIZE = 1000
UNSUPPORTED_EXTENSIONS = [ # Instance extensions - "VK_EXT_validation_features", - "VK_EXT_validation_flags", "VK_KHR_display", # Needs WSI work. "VK_KHR_surface_protected_capabilities",
diff --git a/dlls/winevulkan/vulkan_thunks.c b/dlls/winevulkan/vulkan_thunks.c index b5a24b1d1a1..025a81e1904 100644 --- a/dlls/winevulkan/vulkan_thunks.c +++ b/dlls/winevulkan/vulkan_thunks.c @@ -3168,6 +3168,42 @@ VkResult convert_VkInstanceCreateInfo_struct_chain(const void *pNext, VkInstance break; }
+ case VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT: + { + const VkValidationFlagsEXT *in = (const VkValidationFlagsEXT *)in_header; + VkValidationFlagsEXT *out; + + if (!(out = heap_alloc(sizeof(*out)))) goto out_of_memory; + + out->sType = in->sType; + out->pNext = NULL; + out->disabledValidationCheckCount = in->disabledValidationCheckCount; + out->pDisabledValidationChecks = in->pDisabledValidationChecks; + + out_header->pNext = (VkBaseOutStructure *)out; + out_header = out_header->pNext; + break; + } + + case VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT: + { + const VkValidationFeaturesEXT *in = (const VkValidationFeaturesEXT *)in_header; + VkValidationFeaturesEXT *out; + + if (!(out = heap_alloc(sizeof(*out)))) goto out_of_memory; + + out->sType = in->sType; + out->pNext = NULL; + out->enabledValidationFeatureCount = in->enabledValidationFeatureCount; + out->pEnabledValidationFeatures = in->pEnabledValidationFeatures; + out->disabledValidationFeatureCount = in->disabledValidationFeatureCount; + out->pDisabledValidationFeatures = in->pDisabledValidationFeatures; + + out_header->pNext = (VkBaseOutStructure *)out; + out_header = out_header->pNext; + break; + } + case VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT: { const VkDebugUtilsMessengerCreateInfoEXT *in = (const VkDebugUtilsMessengerCreateInfoEXT *)in_header; @@ -6558,6 +6594,8 @@ static const char * const vk_instance_extensions[] = "VK_EXT_debug_utils", "VK_EXT_headless_surface", "VK_EXT_swapchain_colorspace", + "VK_EXT_validation_features", + "VK_EXT_validation_flags", "VK_KHR_device_group_creation", "VK_KHR_external_fence_capabilities", "VK_KHR_external_memory_capabilities", diff --git a/include/wine/vulkan.h b/include/wine/vulkan.h index c6de4e07ffd..ea6837e87ba 100644 --- a/include/wine/vulkan.h +++ b/include/wine/vulkan.h @@ -115,6 +115,8 @@ #define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2" #define VK_KHR_DEVICE_GROUP_SPEC_VERSION 4 #define VK_KHR_DEVICE_GROUP_EXTENSION_NAME "VK_KHR_device_group" +#define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 2 +#define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags" #define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1 #define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "VK_KHR_shader_draw_parameters" #define VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION 1 @@ -339,6 +341,8 @@ #define VK_EXT_TOOLING_INFO_EXTENSION_NAME "VK_EXT_tooling_info" #define VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION 1 #define VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME "VK_EXT_separate_stencil_usage" +#define VK_EXT_VALIDATION_FEATURES_SPEC_VERSION 4 +#define VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME "VK_EXT_validation_features" #define VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION 1 #define VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME "VK_NV_cooperative_matrix" #define VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION 1 @@ -2752,6 +2756,7 @@ typedef enum VkStructureType VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012, VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013, VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014, + VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000, VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000, @@ -2957,6 +2962,7 @@ typedef enum VkStructureType VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000, VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000, + VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000, VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002, @@ -3238,6 +3244,35 @@ typedef enum VkValidationCacheHeaderVersionEXT VK_VALIDATION_CACHE_HEADER_VERSION_EXT_MAX_ENUM = 0x7fffffff, } VkValidationCacheHeaderVersionEXT;
+typedef enum VkValidationCheckEXT +{ + VK_VALIDATION_CHECK_ALL_EXT = 0, + VK_VALIDATION_CHECK_SHADERS_EXT = 1, + VK_VALIDATION_CHECK_EXT_MAX_ENUM = 0x7fffffff, +} VkValidationCheckEXT; + +typedef enum VkValidationFeatureDisableEXT +{ + VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0, + VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1, + VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2, + VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3, + VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4, + VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5, + VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6, + VK_VALIDATION_FEATURE_DISABLE_EXT_MAX_ENUM = 0x7fffffff, +} VkValidationFeatureDisableEXT; + +typedef enum VkValidationFeatureEnableEXT +{ + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0, + VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1, + VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2, + VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3, + VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4, + VK_VALIDATION_FEATURE_ENABLE_EXT_MAX_ENUM = 0x7fffffff, +} VkValidationFeatureEnableEXT; + typedef enum VkVendorId { VK_VENDOR_ID_VIV = 0x00010001, @@ -5029,6 +5064,14 @@ typedef struct VkValidationCacheCreateInfoEXT const void *pInitialData; } VkValidationCacheCreateInfoEXT;
+typedef struct VkValidationFlagsEXT +{ + VkStructureType sType; + const void *pNext; + uint32_t disabledValidationCheckCount; + const VkValidationCheckEXT *pDisabledValidationChecks; +} VkValidationFlagsEXT; + typedef struct VkVertexInputBindingDescription { uint32_t binding; @@ -7483,6 +7526,16 @@ typedef struct VkSubpassDescription const uint32_t *pPreserveAttachments; } VkSubpassDescription;
+typedef struct VkValidationFeaturesEXT +{ + VkStructureType sType; + const void *pNext; + uint32_t enabledValidationFeatureCount; + const VkValidationFeatureEnableEXT *pEnabledValidationFeatures; + uint32_t disabledValidationFeatureCount; + const VkValidationFeatureDisableEXT *pDisabledValidationFeatures; +} VkValidationFeaturesEXT; + typedef struct VkAccelerationStructureCreateInfoNV { VkStructureType sType;