From fe543f83a6dc9f2bbded8e30eb2afea8ba6c6038 Mon Sep 17 00:00:00 2001 From: Mike Weiblen Date: Fri, 9 Dec 2016 17:36:28 -0700 Subject: layers: Update Valid Usage enums (VL-70) Reviewed the following 5 files' invocation of log_msg() for opportunities to update for Valid Usage enums. layers/threading.h layers/vk_layer_logging.h layers/descriptor_sets.cpp layers/swapchain.cpp layers/unique_objects.cpp Split some composite checks apart, to better match the meaning of individual VUs. Added VU enums to a new file, and expanded the stats collection script to include the new file. Changed some placeholder uses of msgCode=="0" to "VALIDATION_ERROR_UNDEFINED". (0 is the value of the enum VALIDATION_ERROR_00000 which was misleading) When Valid Usage enums were referenced, also updated the VU database. Tweak #include order for Windows, to undo clang-format reordering. Completes Jira task VL-70. Change-Id: I550922b194e733f41316ae493098f70a54cbd64e --- layers/swapchain.cpp | 113 +++++++++++++++++++++----------- layers/unique_objects.cpp | 21 +++--- layers/vk_validation_error_database.txt | 24 +++---- layers/vk_validation_stats.py | 3 +- 4 files changed, 100 insertions(+), 61 deletions(-) diff --git a/layers/swapchain.cpp b/layers/swapchain.cpp index 9cc65ab3..c7f1ca0f 100644 --- a/layers/swapchain.cpp +++ b/layers/swapchain.cpp @@ -19,15 +19,18 @@ * Author: Ian Elliott */ -#include -#include -#include +// For Windows, this #include must come before other Vk headers. #include -#include + #include "swapchain.h" -#include "vk_layer_extension_utils.h" #include "vk_enum_string_helper.h" +#include "vk_layer_extension_utils.h" #include "vk_layer_utils.h" +#include "vk_validation_error_messages.h" +#include +#include +#include +#include namespace swapchain { @@ -58,8 +61,8 @@ static void checkDeviceRegisterExtensions(VkPhysicalDevice physicalDevice, const // TBD: Should we leave error in (since Swapchain really needs this // link)? log_msg(my_instance_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT, - reinterpret_cast(physicalDevice), __LINE__, SWAPCHAIN_INVALID_HANDLE, "Swapchain", - "vkCreateDevice() called with a non-valid VkPhysicalDevice."); + reinterpret_cast(physicalDevice), __LINE__, VALIDATION_ERROR_00031, "Swapchain", + "vkCreateDevice() called with a non-valid VkPhysicalDevice. %s", validation_error_map[VALIDATION_ERROR_00031]); } my_device_data->deviceMap[device].device = device; } @@ -105,6 +108,8 @@ static const char *sharingModeStr(VkSharingMode value) { return string_VkSharingMode(value); } +// TODO This overload is only preserved for validateCreateSwapchainKHR(), which doesn't have a VU msgCode defined yet. +// When a VU msgCode is defined, this overload can be deleted, and the latter form used instead. static bool ValidateQueueFamilyIndex(layer_data *my_data, uint32_t queue_family_index, uint32_t queue_family_count, VkPhysicalDevice physical_device, const char *function) { bool skip_call = false; @@ -119,6 +124,20 @@ static bool ValidateQueueFamilyIndex(layer_data *my_data, uint32_t queue_family_ return skip_call; } +static bool ValidateQueueFamilyIndex(layer_data *my_data, uint32_t queue_family_index, uint32_t queue_family_count, + VkPhysicalDevice physical_device, const char *function, + /*enum*/ UNIQUE_VALIDATION_ERROR_CODE msgCode) { + bool skip_call = false; + if (queue_family_index >= queue_family_count) { + skip_call = log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT, + reinterpret_cast(physical_device), __LINE__, msgCode, swapchain_layer_name, + "%s() called with a queueFamilyIndex that is too large (i.e. %d). The maximum value (returned by " + "vkGetPhysicalDeviceQueueFamilyProperties) is only %d. %s", + function, queue_family_index, queue_family_count, validation_error_map[msgCode]); + } + return skip_call; +} + VKAPI_ATTR VkResult VKAPI_CALL CreateInstance(const VkInstanceCreateInfo *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkInstance *pInstance) { VkLayerInstanceCreateInfo *chain_info = get_chain_info(pCreateInfo, VK_LAYER_LINK_INFO); @@ -187,9 +206,10 @@ VKAPI_ATTR void VKAPI_CALL DestroyInstance(VkInstance instance, const VkAllocati if (pPhysicalDevice) { if (pPhysicalDevice->pDevice) { log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT, - reinterpret_cast(pPhysicalDevice->pDevice->device), __LINE__, - SWAPCHAIN_DEL_OBJECT_BEFORE_CHILDREN, swapchain_layer_name, - "VkDestroyInstance() called before all of its associated VkDevices were destroyed."); + reinterpret_cast(pPhysicalDevice->pDevice->device), __LINE__, VALIDATION_ERROR_00018, + swapchain_layer_name, + "VkDestroyInstance() called before all of its associated VkDevices were destroyed. %s", + validation_error_map[VALIDATION_ERROR_00018]); } } @@ -203,9 +223,9 @@ VKAPI_ATTR void VKAPI_CALL DestroyInstance(VkInstance instance, const VkAllocati SwpSurface *pSurface = it->second; if (pSurface) { log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT, - reinterpret_cast(pInstance->instance), __LINE__, SWAPCHAIN_DEL_OBJECT_BEFORE_CHILDREN, - swapchain_layer_name, - "VkDestroyInstance() called before all of its associated VkSurfaceKHRs were destroyed."); + reinterpret_cast(pInstance->instance), __LINE__, VALIDATION_ERROR_00018, swapchain_layer_name, + "VkDestroyInstance() called before all of its associated VkSurfaceKHRs were destroyed. %s", + validation_error_map[VALIDATION_ERROR_00018]); } } my_data->instanceMap.erase(instance); @@ -356,7 +376,8 @@ VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceMirPresentationSupportKHR(VkPhys if (pPhysicalDevice->gotQueueFamilyPropertyCount) { skip_call |= ValidateQueueFamilyIndex(my_data, queueFamilyIndex, pPhysicalDevice->numOfQueueFamilies, - pPhysicalDevice->physicalDevice, "vkGetPhysicalDeviceMirPresentationSupportKHR"); + pPhysicalDevice->physicalDevice, "vkGetPhysicalDeviceMirPresentationSupportKHR", + VALIDATION_ERROR_01893); } lock.unlock(); @@ -425,7 +446,8 @@ VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceWaylandPresentationSupportKHR(Vk if (pPhysicalDevice->gotQueueFamilyPropertyCount) { skip_call |= ValidateQueueFamilyIndex(my_data, queueFamilyIndex, pPhysicalDevice->numOfQueueFamilies, - pPhysicalDevice->physicalDevice, "vkGetPhysicalDeviceWaylandPresentationSupportKHR"); + pPhysicalDevice->physicalDevice, "vkGetPhysicalDeviceWaylandPresentationSupportKHR", + VALIDATION_ERROR_01896); } lock.unlock(); @@ -493,7 +515,8 @@ VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceWin32PresentationSupportKHR(VkPh if (pPhysicalDevice->gotQueueFamilyPropertyCount) { skip_call |= ValidateQueueFamilyIndex(my_data, queueFamilyIndex, pPhysicalDevice->numOfQueueFamilies, - pPhysicalDevice->physicalDevice, "vkGetPhysicalDeviceWin32PresentationSupportKHR"); + pPhysicalDevice->physicalDevice, "vkGetPhysicalDeviceWin32PresentationSupportKHR", + VALIDATION_ERROR_01899); } lock.unlock(); @@ -561,7 +584,8 @@ VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceXcbPresentationSupportKHR(VkPhys if (pPhysicalDevice->gotQueueFamilyPropertyCount) { skip_call |= ValidateQueueFamilyIndex(my_data, queueFamilyIndex, pPhysicalDevice->numOfQueueFamilies, - pPhysicalDevice->physicalDevice, "vkGetPhysicalDeviceXcbPresentationSupportKHR"); + pPhysicalDevice->physicalDevice, "vkGetPhysicalDeviceXcbPresentationSupportKHR", + VALIDATION_ERROR_01901); } lock.unlock(); @@ -630,7 +654,8 @@ VKAPI_ATTR VkBool32 VKAPI_CALL GetPhysicalDeviceXlibPresentationSupportKHR(VkPhy if (pPhysicalDevice->gotQueueFamilyPropertyCount) { skip_call |= ValidateQueueFamilyIndex(my_data, queueFamilyIndex, pPhysicalDevice->numOfQueueFamilies, - pPhysicalDevice->physicalDevice, "vkGetPhysicalDeviceXlibPresentationSupportKHR"); + pPhysicalDevice->physicalDevice, "vkGetPhysicalDeviceXlibPresentationSupportKHR", + VALIDATION_ERROR_01904); } lock.unlock(); @@ -696,11 +721,11 @@ VKAPI_ATTR VkResult VKAPI_CALL GetDisplayPlaneSupportedDisplaysKHR(VkPhysicalDev if (pPhysicalDevice->gotDisplayPlanePropertyCount && planeIndex >= pPhysicalDevice->displayPlanePropertyCount) { skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT, - reinterpret_cast(pPhysicalDevice->pInstance->instance), __LINE__, SWAPCHAIN_PLANE_INDEX_TOO_LARGE, + reinterpret_cast(pPhysicalDevice->pInstance->instance), __LINE__, VALIDATION_ERROR_01857, swapchain_layer_name, "vkGetDisplayPlaneSupportedDisplaysKHR(): planeIndex must be in the range [0, %d] that was returned by " - "vkGetPhysicalDeviceDisplayPlanePropertiesKHR. Do you have the plane index hardcoded?", - pPhysicalDevice->displayPlanePropertyCount - 1); + "vkGetPhysicalDeviceDisplayPlanePropertiesKHR. Do you have the plane index hardcoded? %s", + pPhysicalDevice->displayPlanePropertyCount - 1, validation_error_map[VALIDATION_ERROR_01857]); } lock.unlock(); @@ -802,10 +827,10 @@ VKAPI_ATTR void VKAPI_CALL DestroySurfaceKHR(VkInstance instance, VkSurfaceKHR s pSurface->pInstance->surfaces.erase(surface); } if (!pSurface->swapchains.empty()) { - skip_call |= - log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT, - reinterpret_cast(instance), __LINE__, SWAPCHAIN_DEL_OBJECT_BEFORE_CHILDREN, swapchain_layer_name, - "vkDestroySurfaceKHR() called before all of its associated VkSwapchainKHRs were destroyed."); + skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT, + reinterpret_cast(instance), __LINE__, VALIDATION_ERROR_01844, swapchain_layer_name, + "vkDestroySurfaceKHR() called before all of its associated VkSwapchainKHRs were destroyed. %s", + validation_error_map[VALIDATION_ERROR_01844]); // Empty and then delete all SwpSwapchains for (auto it = pSurface->swapchains.begin(); it != pSurface->swapchains.end(); it++) { @@ -915,8 +940,9 @@ VKAPI_ATTR void VKAPI_CALL DestroyDevice(VkDevice device, const VkAllocationCall } if (!pDevice->swapchains.empty()) { log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT, - reinterpret_cast(device), __LINE__, SWAPCHAIN_DEL_OBJECT_BEFORE_CHILDREN, swapchain_layer_name, - "vkDestroyDevice() called before all of its associated VkSwapchainKHRs were destroyed."); + reinterpret_cast(device), __LINE__, VALIDATION_ERROR_00049, swapchain_layer_name, + "vkDestroyDevice() called before all of its associated VkSwapchainKHRs were destroyed. %s", + validation_error_map[VALIDATION_ERROR_00049]); // Empty and then delete all SwpSwapchain's for (auto it = pDevice->swapchains.begin(); it != pDevice->swapchains.end(); it++) { @@ -957,7 +983,8 @@ VKAPI_ATTR VkResult VKAPI_CALL GetPhysicalDeviceSurfaceSupportKHR(VkPhysicalDevi "vkGetPhysicalDeviceSurfaceSupportKHR() called before calling the vkGetPhysicalDeviceQueueFamilyProperties function."); } else if (pPhysicalDevice->gotQueueFamilyPropertyCount) { skip_call |= ValidateQueueFamilyIndex(my_data, queueFamilyIndex, pPhysicalDevice->numOfQueueFamilies, - pPhysicalDevice->physicalDevice, "vkGetPhysicalDeviceSurfaceSupportKHR"); + pPhysicalDevice->physicalDevice, "vkGetPhysicalDeviceSurfaceSupportKHR", + VALIDATION_ERROR_01889); } lock.unlock(); @@ -1032,27 +1059,35 @@ static bool validateCreateSwapchainKHR(VkDevice device, const VkSwapchainCreateI // surface: SwpSurface *pSurface = ((pPhysicalDevice) ? pPhysicalDevice->supportedSurfaces[pCreateInfo->surface] : NULL); if (!pSurface) { - skip_call |= - log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT, - reinterpret_cast(device), __LINE__, SWAPCHAIN_CREATE_UNSUPPORTED_SURFACE, swapchain_layer_name, - "The surface in pCreateInfo->surface, that was given to vkCreateSwapchainKHR(), must be a surface " - "that is supported by the device as determined by vkGetPhysicalDeviceSurfaceSupportKHR(). " - "However, vkGetPhysicalDeviceSurfaceSupportKHR() was never called with this surface."); + skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT, + reinterpret_cast(device), __LINE__, VALIDATION_ERROR_01922, swapchain_layer_name, + "The surface in pCreateInfo->surface, that was given to vkCreateSwapchainKHR(), must be a surface " + "that is supported by the device as determined by vkGetPhysicalDeviceSurfaceSupportKHR(). " + "However, vkGetPhysicalDeviceSurfaceSupportKHR() was never called with this surface. %s", + validation_error_map[VALIDATION_ERROR_01922]); } } // Validate pCreateInfo->imageSharingMode and related values: if (pCreateInfo->imageSharingMode == VK_SHARING_MODE_CONCURRENT) { - if ((pCreateInfo->queueFamilyIndexCount <= 1) || !pCreateInfo->pQueueFamilyIndices) { + if (pCreateInfo->queueFamilyIndexCount <= 1) { skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT, - reinterpret_cast(device), __LINE__, SWAPCHAIN_CREATE_SWAP_BAD_SHARING_VALUES, - swapchain_layer_name, + reinterpret_cast(device), __LINE__, VALIDATION_ERROR_02338, swapchain_layer_name, "vkCreateSwapchainKHR() called with a supported pCreateInfo->sharingMode of (i.e. %s), but with a " - "bad value(s) for pCreateInfo->queueFamilyIndexCount or pCreateInfo->pQueueFamilyIndices).", - sharingModeStr(pCreateInfo->imageSharingMode)); + "bad value(s) for pCreateInfo->queueFamilyIndexCount or pCreateInfo->pQueueFamilyIndices). %s", + sharingModeStr(pCreateInfo->imageSharingMode), validation_error_map[VALIDATION_ERROR_02338]); + } + + if (!pCreateInfo->pQueueFamilyIndices) { + skip_call |= log_msg(my_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT, + reinterpret_cast(device), __LINE__, VALIDATION_ERROR_02337, swapchain_layer_name, + "vkCreateSwapchainKHR() called with a supported pCreateInfo->sharingMode of (i.e. %s), but with a " + "bad value(s) for pCreateInfo->queueFamilyIndexCount or pCreateInfo->pQueueFamilyIndices). %s", + sharingModeStr(pCreateInfo->imageSharingMode), validation_error_map[VALIDATION_ERROR_02337]); } } + return skip_call; } diff --git a/layers/unique_objects.cpp b/layers/unique_objects.cpp index d4aabdfe..bd9aabd8 100644 --- a/layers/unique_objects.cpp +++ b/layers/unique_objects.cpp @@ -28,18 +28,21 @@ #include #include +// For Windows, this #include must come before other Vk headers. #include "vk_loader_platform.h" -#include "vulkan/vk_layer.h" -#include "vk_layer_config.h" -#include "vk_layer_extension_utils.h" -#include "vk_layer_utils.h" -#include "vk_layer_table.h" -#include "vk_layer_logging.h" + #include "unique_objects.h" #include "vk_dispatch_table_helper.h" -#include "vk_struct_string_helper_cpp.h" +#include "vk_layer_config.h" #include "vk_layer_data.h" +#include "vk_layer_extension_utils.h" +#include "vk_layer_logging.h" +#include "vk_layer_table.h" #include "vk_layer_utils.h" +#include "vk_layer_utils.h" +#include "vk_struct_string_helper_cpp.h" +#include "vk_validation_error_messages.h" +#include "vulkan/vk_layer.h" // This intentionally includes a cpp file #include "vk_safe_struct.cpp" @@ -101,7 +104,7 @@ static void checkInstanceRegisterExtensions(const VkInstanceCreateInfo *pCreateI layer_data *instance_data = get_my_data_ptr(get_dispatch_key(instance), layer_data_map); if (!white_list(pCreateInfo->ppEnabledExtensionNames[i], kUniqueObjectsSupportedInstanceExtensions)) { log_msg(instance_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, - 0, "UniqueObjects", + VALIDATION_ERROR_UNDEFINED, "UniqueObjects", "Instance Extension %s is not supported by this layer. Using this extension may adversely affect " "validation results and/or produce undefined behavior.", pCreateInfo->ppEnabledExtensionNames[i]); @@ -129,7 +132,7 @@ static void createDeviceRegisterExtensions(const VkDeviceCreateInfo *pCreateInfo // Check for recognized device extensions if (!white_list(pCreateInfo->ppEnabledExtensionNames[i], kUniqueObjectsSupportedDeviceExtensions)) { log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, 0, __LINE__, - 0, "UniqueObjects", + VALIDATION_ERROR_UNDEFINED, "UniqueObjects", "Device Extension %s is not supported by this layer. Using this extension may adversely affect " "validation results and/or produce undefined behavior.", pCreateInfo->ppEnabledExtensionNames[i]); diff --git a/layers/vk_validation_error_database.txt b/layers/vk_validation_error_database.txt index fd1adee8..3125fb33 100644 --- a/layers/vk_validation_error_database.txt +++ b/layers/vk_validation_error_database.txt @@ -39,7 +39,7 @@ VALIDATION_ERROR_00027~^~U~^~Unknown~^~vkGetPhysicalDeviceProperties~^~For more VALIDATION_ERROR_00028~^~Y~^~Unknown~^~vkGetPhysicalDeviceQueueFamilyProperties~^~For more information refer to Vulkan Spec Section '4.1. Physical Devices' which states 'physicalDevice must be a valid VkPhysicalDevice handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties)~^~ VALIDATION_ERROR_00029~^~U~^~Unknown~^~vkGetPhysicalDeviceQueueFamilyProperties~^~For more information refer to Vulkan Spec Section '4.1. Physical Devices' which states 'pQueueFamilyPropertyCount must be a pointer to a uint32_t value' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties)~^~ VALIDATION_ERROR_00030~^~U~^~Unknown~^~vkGetPhysicalDeviceQueueFamilyProperties~^~For more information refer to Vulkan Spec Section '4.1. Physical Devices' which states 'If the value referenced by pQueueFamilyPropertyCount is not 0, and pQueueFamilyProperties is not NULL, pQueueFamilyProperties must be a pointer to an array of pQueueFamilyPropertyCount VkQueueFamilyProperties structures' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceQueueFamilyProperties)~^~ -VALIDATION_ERROR_00031~^~U~^~Unknown~^~vkCreateDevice~^~For more information refer to Vulkan Spec Section '4.2.1. Device Creation' which states 'physicalDevice must be a valid VkPhysicalDevice handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCreateDevice)~^~ +VALIDATION_ERROR_00031~^~Y~^~Unknown~^~vkCreateDevice~^~For more information refer to Vulkan Spec Section '4.2.1. Device Creation' which states 'physicalDevice must be a valid VkPhysicalDevice handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCreateDevice)~^~ VALIDATION_ERROR_00032~^~U~^~Unknown~^~vkCreateDevice~^~For more information refer to Vulkan Spec Section '4.2.1. Device Creation' which states 'pCreateInfo must be a pointer to a valid VkDeviceCreateInfo structure' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCreateDevice)~^~ VALIDATION_ERROR_00033~^~U~^~Unknown~^~vkCreateDevice~^~For more information refer to Vulkan Spec Section '4.2.1. Device Creation' which states 'If pAllocator is not NULL, pAllocator must be a pointer to a valid VkAllocationCallbacks structure' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCreateDevice)~^~ VALIDATION_ERROR_00034~^~U~^~Unknown~^~vkCreateDevice~^~For more information refer to Vulkan Spec Section '4.2.1. Device Creation' which states 'pDevice must be a pointer to a VkDevice handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCreateDevice)~^~ @@ -1787,7 +1787,7 @@ VALIDATION_ERROR_01840~^~N~^~Unknown~^~vkCreateXlibSurfaceKHR~^~For more informa VALIDATION_ERROR_01841~^~N~^~Unknown~^~vkCreateXlibSurfaceKHR~^~For more information refer to Vulkan Spec Section '30.2.6. Xlib Platform' which states 'pNext must be NULL' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkXlibSurfaceCreateInfoKHR)~^~TBD in parameter validation layer. VALIDATION_ERROR_01842~^~N~^~Unknown~^~vkCreateXlibSurfaceKHR~^~For more information refer to Vulkan Spec Section '30.2.6. Xlib Platform' which states 'flags must be 0' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkXlibSurfaceCreateInfoKHR)~^~TBD in parameter validation layer. VALIDATION_ERROR_01843~^~U~^~Unknown~^~vkCreateXlibSurfaceKHR~^~For more information refer to Vulkan Spec Section '30.2.6. Xlib Platform' which states 'dpy must point to a valid Xlib Display.' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkXlibSurfaceCreateInfoKHR)~^~ -VALIDATION_ERROR_01844~^~U~^~Unknown~^~vkDestroySurfaceKHR~^~For more information refer to Vulkan Spec Section '30.2.7. Platform-Independent Information' which states 'All VkSwapchainKHR objects created for surface must have been destroyed prior to destroying surface' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkDestroySurfaceKHR)~^~ +VALIDATION_ERROR_01844~^~Y~^~Unknown~^~vkDestroySurfaceKHR~^~For more information refer to Vulkan Spec Section '30.2.7. Platform-Independent Information' which states 'All VkSwapchainKHR objects created for surface must have been destroyed prior to destroying surface' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkDestroySurfaceKHR)~^~ VALIDATION_ERROR_01845~^~Y~^~Unknown~^~vkDestroySurfaceKHR~^~For more information refer to Vulkan Spec Section '30.2.7. Platform-Independent Information' which states 'If VkAllocationCallbacks were provided when surface was created, a compatible set of callbacks must be provided here' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkDestroySurfaceKHR)~^~ VALIDATION_ERROR_01846~^~Y~^~Unknown~^~vkDestroySurfaceKHR~^~For more information refer to Vulkan Spec Section '30.2.7. Platform-Independent Information' which states 'If no VkAllocationCallbacks were provided when surface was created, pAllocator must be NULL' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkDestroySurfaceKHR)~^~ VALIDATION_ERROR_01847~^~Y~^~None~^~vkDestroySurfaceKHR~^~For more information refer to Vulkan Spec Section '30.2.7. Platform-Independent Information' which states 'instance must be a valid VkInstance handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkDestroySurfaceKHR)~^~ @@ -1800,7 +1800,7 @@ VALIDATION_ERROR_01853~^~U~^~Unknown~^~vkGetPhysicalDeviceDisplayPropertiesKHR~^ VALIDATION_ERROR_01854~^~Y~^~Unknown~^~vkGetPhysicalDeviceDisplayPlanePropertiesKHR~^~For more information refer to Vulkan Spec Section '30.3.1. Display Enumeration' which states 'physicalDevice must be a valid VkPhysicalDevice handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceDisplayPlanePropertiesKHR)~^~ VALIDATION_ERROR_01855~^~U~^~Unknown~^~vkGetPhysicalDeviceDisplayPlanePropertiesKHR~^~For more information refer to Vulkan Spec Section '30.3.1. Display Enumeration' which states 'pPropertyCount must be a pointer to a uint32_t value' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceDisplayPlanePropertiesKHR)~^~ VALIDATION_ERROR_01856~^~U~^~Unknown~^~vkGetPhysicalDeviceDisplayPlanePropertiesKHR~^~For more information refer to Vulkan Spec Section '30.3.1. Display Enumeration' which states 'If the value referenced by pPropertyCount is not 0, and pProperties is not NULL, pProperties must be a pointer to an array of pPropertyCount VkDisplayPlanePropertiesKHR structures' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceDisplayPlanePropertiesKHR)~^~ -VALIDATION_ERROR_01857~^~U~^~Unknown~^~vkGetDisplayPlaneSupportedDisplaysKHR~^~For more information refer to Vulkan Spec Section '30.3.1. Display Enumeration' which states 'planeIndex must be less than the number of display planes supported by the device as determined by calling vkGetPhysicalDeviceDisplayPlanePropertiesKHR' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetDisplayPlaneSupportedDisplaysKHR)~^~ +VALIDATION_ERROR_01857~^~Y~^~Unknown~^~vkGetDisplayPlaneSupportedDisplaysKHR~^~For more information refer to Vulkan Spec Section '30.3.1. Display Enumeration' which states 'planeIndex must be less than the number of display planes supported by the device as determined by calling vkGetPhysicalDeviceDisplayPlanePropertiesKHR' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetDisplayPlaneSupportedDisplaysKHR)~^~ VALIDATION_ERROR_01858~^~Y~^~Unknown~^~vkGetDisplayPlaneSupportedDisplaysKHR~^~For more information refer to Vulkan Spec Section '30.3.1. Display Enumeration' which states 'physicalDevice must be a valid VkPhysicalDevice handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetDisplayPlaneSupportedDisplaysKHR)~^~ VALIDATION_ERROR_01859~^~U~^~Unknown~^~vkGetDisplayPlaneSupportedDisplaysKHR~^~For more information refer to Vulkan Spec Section '30.3.1. Display Enumeration' which states 'pDisplayCount must be a pointer to a uint32_t value' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetDisplayPlaneSupportedDisplaysKHR)~^~ VALIDATION_ERROR_01860~^~U~^~Unknown~^~vkGetDisplayPlaneSupportedDisplaysKHR~^~For more information refer to Vulkan Spec Section '30.3.1. Display Enumeration' which states 'If the value referenced by pDisplayCount is not 0, and pDisplays is not NULL, pDisplays must be a pointer to an array of pDisplayCount VkDisplayKHR handles' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetDisplayPlaneSupportedDisplaysKHR)~^~ @@ -1832,22 +1832,22 @@ VALIDATION_ERROR_01885~^~N~^~Unknown~^~vkCreateDisplayPlaneSurfaceKHR~^~For more VALIDATION_ERROR_01886~^~U~^~Unknown~^~vkCreateDisplayPlaneSurfaceKHR~^~For more information refer to Vulkan Spec Section '30.3.2. Display Surfaces' which states 'displayMode must be a valid VkDisplayModeKHR handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkDisplaySurfaceCreateInfoKHR)~^~ VALIDATION_ERROR_01887~^~U~^~Unknown~^~vkCreateDisplayPlaneSurfaceKHR~^~For more information refer to Vulkan Spec Section '30.3.2. Display Surfaces' which states 'transform must be a valid VkSurfaceTransformFlagBitsKHR value' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkDisplaySurfaceCreateInfoKHR)~^~ VALIDATION_ERROR_01888~^~U~^~Unknown~^~vkCreateDisplayPlaneSurfaceKHR~^~For more information refer to Vulkan Spec Section '30.3.2. Display Surfaces' which states 'alphaMode must be a valid VkDisplayPlaneAlphaFlagBitsKHR value' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkDisplaySurfaceCreateInfoKHR)~^~ -VALIDATION_ERROR_01889~^~U~^~Unknown~^~vkGetPhysicalDeviceSurfaceSupportKHR~^~For more information refer to Vulkan Spec Section '30.4. Querying for WSI Support' which states 'queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by vkGetPhysicalDeviceQueueFamilyProperties for the given physicalDevice' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceSurfaceSupportKHR)~^~ +VALIDATION_ERROR_01889~^~Y~^~Unknown~^~vkGetPhysicalDeviceSurfaceSupportKHR~^~For more information refer to Vulkan Spec Section '30.4. Querying for WSI Support' which states 'queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by vkGetPhysicalDeviceQueueFamilyProperties for the given physicalDevice' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceSurfaceSupportKHR)~^~ VALIDATION_ERROR_01890~^~Y~^~None~^~vkGetPhysicalDeviceSurfaceSupportKHR~^~For more information refer to Vulkan Spec Section '30.4. Querying for WSI Support' which states 'physicalDevice must be a valid VkPhysicalDevice handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceSurfaceSupportKHR)~^~ VALIDATION_ERROR_01891~^~Y~^~None~^~vkGetPhysicalDeviceSurfaceSupportKHR~^~For more information refer to Vulkan Spec Section '30.4. Querying for WSI Support' which states 'surface must be a valid VkSurfaceKHR handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceSurfaceSupportKHR)~^~ VALIDATION_ERROR_01892~^~U~^~Unknown~^~vkGetPhysicalDeviceSurfaceSupportKHR~^~For more information refer to Vulkan Spec Section '30.4. Querying for WSI Support' which states 'pSupported must be a pointer to a VkBool32 value' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceSurfaceSupportKHR)~^~ -VALIDATION_ERROR_01893~^~U~^~Unknown~^~vkGetPhysicalDeviceMirPresentationSupportKHR~^~For more information refer to Vulkan Spec Section '30.4.2. Mir Platform' which states 'queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by vkGetPhysicalDeviceQueueFamilyProperties for the given physicalDevice' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceMirPresentationSupportKHR)~^~ +VALIDATION_ERROR_01893~^~Y~^~Unknown~^~vkGetPhysicalDeviceMirPresentationSupportKHR~^~For more information refer to Vulkan Spec Section '30.4.2. Mir Platform' which states 'queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by vkGetPhysicalDeviceQueueFamilyProperties for the given physicalDevice' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceMirPresentationSupportKHR)~^~ VALIDATION_ERROR_01894~^~Y~^~None~^~vkGetPhysicalDeviceMirPresentationSupportKHR~^~For more information refer to Vulkan Spec Section '30.4.2. Mir Platform' which states 'physicalDevice must be a valid VkPhysicalDevice handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceMirPresentationSupportKHR)~^~ VALIDATION_ERROR_01895~^~U~^~Unknown~^~vkGetPhysicalDeviceMirPresentationSupportKHR~^~For more information refer to Vulkan Spec Section '30.4.2. Mir Platform' which states 'connection must be a pointer to a MirConnection value' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceMirPresentationSupportKHR)~^~ -VALIDATION_ERROR_01896~^~U~^~Unknown~^~vkGetPhysicalDeviceWaylandPresentationSupportKHR~^~For more information refer to Vulkan Spec Section '30.4.3. Wayland Platform' which states 'queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by vkGetPhysicalDeviceQueueFamilyProperties for the given physicalDevice' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceWaylandPresentationSupportKHR)~^~ +VALIDATION_ERROR_01896~^~Y~^~Unknown~^~vkGetPhysicalDeviceWaylandPresentationSupportKHR~^~For more information refer to Vulkan Spec Section '30.4.3. Wayland Platform' which states 'queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by vkGetPhysicalDeviceQueueFamilyProperties for the given physicalDevice' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceWaylandPresentationSupportKHR)~^~ VALIDATION_ERROR_01897~^~Y~^~None~^~vkGetPhysicalDeviceWaylandPresentationSupportKHR~^~For more information refer to Vulkan Spec Section '30.4.3. Wayland Platform' which states 'physicalDevice must be a valid VkPhysicalDevice handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceWaylandPresentationSupportKHR)~^~ VALIDATION_ERROR_01898~^~U~^~Unknown~^~vkGetPhysicalDeviceWaylandPresentationSupportKHR~^~For more information refer to Vulkan Spec Section '30.4.3. Wayland Platform' which states 'display must be a pointer to a wl_display value' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceWaylandPresentationSupportKHR)~^~ -VALIDATION_ERROR_01899~^~U~^~Unknown~^~vkGetPhysicalDeviceWin32PresentationSupportKHR~^~For more information refer to Vulkan Spec Section '30.4.4. Win32 Platform' which states 'queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by vkGetPhysicalDeviceQueueFamilyProperties for the given physicalDevice' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceWin32PresentationSupportKHR)~^~ +VALIDATION_ERROR_01899~^~Y~^~Unknown~^~vkGetPhysicalDeviceWin32PresentationSupportKHR~^~For more information refer to Vulkan Spec Section '30.4.4. Win32 Platform' which states 'queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by vkGetPhysicalDeviceQueueFamilyProperties for the given physicalDevice' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceWin32PresentationSupportKHR)~^~ VALIDATION_ERROR_01900~^~Y~^~None~^~vkGetPhysicalDeviceWin32PresentationSupportKHR~^~For more information refer to Vulkan Spec Section '30.4.4. Win32 Platform' which states 'physicalDevice must be a valid VkPhysicalDevice handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceWin32PresentationSupportKHR)~^~ -VALIDATION_ERROR_01901~^~U~^~Unknown~^~vkGetPhysicalDeviceXcbPresentationSupportKHR~^~For more information refer to Vulkan Spec Section '30.4.5. XCB Platform' which states 'queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by vkGetPhysicalDeviceQueueFamilyProperties for the given physicalDevice' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceXcbPresentationSupportKHR)~^~ +VALIDATION_ERROR_01901~^~Y~^~Unknown~^~vkGetPhysicalDeviceXcbPresentationSupportKHR~^~For more information refer to Vulkan Spec Section '30.4.5. XCB Platform' which states 'queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by vkGetPhysicalDeviceQueueFamilyProperties for the given physicalDevice' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceXcbPresentationSupportKHR)~^~ VALIDATION_ERROR_01902~^~Y~^~None~^~vkGetPhysicalDeviceXcbPresentationSupportKHR~^~For more information refer to Vulkan Spec Section '30.4.5. XCB Platform' which states 'physicalDevice must be a valid VkPhysicalDevice handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceXcbPresentationSupportKHR)~^~ VALIDATION_ERROR_01903~^~U~^~Unknown~^~vkGetPhysicalDeviceXcbPresentationSupportKHR~^~For more information refer to Vulkan Spec Section '30.4.5. XCB Platform' which states 'connection must be a pointer to a xcb_connection_t value' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceXcbPresentationSupportKHR)~^~ -VALIDATION_ERROR_01904~^~U~^~Unknown~^~vkGetPhysicalDeviceXlibPresentationSupportKHR~^~For more information refer to Vulkan Spec Section '30.4.6. Xlib Platform' which states 'queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by vkGetPhysicalDeviceQueueFamilyProperties for the given physicalDevice' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceXlibPresentationSupportKHR)~^~ +VALIDATION_ERROR_01904~^~Y~^~Unknown~^~vkGetPhysicalDeviceXlibPresentationSupportKHR~^~For more information refer to Vulkan Spec Section '30.4.6. Xlib Platform' which states 'queueFamilyIndex must be less than pQueueFamilyPropertyCount returned by vkGetPhysicalDeviceQueueFamilyProperties for the given physicalDevice' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceXlibPresentationSupportKHR)~^~ VALIDATION_ERROR_01905~^~Y~^~None~^~vkGetPhysicalDeviceXlibPresentationSupportKHR~^~For more information refer to Vulkan Spec Section '30.4.6. Xlib Platform' which states 'physicalDevice must be a valid VkPhysicalDevice handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceXlibPresentationSupportKHR)~^~ VALIDATION_ERROR_01906~^~U~^~Unknown~^~vkGetPhysicalDeviceXlibPresentationSupportKHR~^~For more information refer to Vulkan Spec Section '30.4.6. Xlib Platform' which states 'dpy must be a pointer to a Display value' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceXlibPresentationSupportKHR)~^~ VALIDATION_ERROR_01907~^~Y~^~None~^~vkGetPhysicalDeviceSurfaceCapabilitiesKHR~^~For more information refer to Vulkan Spec Section '30.5. Surface Queries' which states 'physicalDevice must be a valid VkPhysicalDevice handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkGetPhysicalDeviceSurfaceCapabilitiesKHR)~^~ @@ -1865,7 +1865,7 @@ VALIDATION_ERROR_01918~^~Y~^~None~^~vkCreateSwapchainKHR~^~For more information VALIDATION_ERROR_01919~^~U~^~Unknown~^~vkCreateSwapchainKHR~^~For more information refer to Vulkan Spec Section '30.6. WSI Swapchain' which states 'pCreateInfo must be a pointer to a valid VkSwapchainCreateInfoKHR structure' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCreateSwapchainKHR)~^~ VALIDATION_ERROR_01920~^~U~^~Unknown~^~vkCreateSwapchainKHR~^~For more information refer to Vulkan Spec Section '30.6. WSI Swapchain' which states 'If pAllocator is not NULL, pAllocator must be a pointer to a valid VkAllocationCallbacks structure' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCreateSwapchainKHR)~^~ VALIDATION_ERROR_01921~^~U~^~Unknown~^~vkCreateSwapchainKHR~^~For more information refer to Vulkan Spec Section '30.6. WSI Swapchain' which states 'pSwapchain must be a pointer to a VkSwapchainKHR handle' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#vkCreateSwapchainKHR)~^~ -VALIDATION_ERROR_01922~^~U~^~Unknown~^~vkCreateSwapchainKHR~^~For more information refer to Vulkan Spec Section '30.6. WSI Swapchain' which states 'surface must be a surface that is supported by the device as determined using vkGetPhysicalDeviceSurfaceSupportKHR' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkSwapchainCreateInfoKHR)~^~ +VALIDATION_ERROR_01922~^~Y~^~Unknown~^~vkCreateSwapchainKHR~^~For more information refer to Vulkan Spec Section '30.6. WSI Swapchain' which states 'surface must be a surface that is supported by the device as determined using vkGetPhysicalDeviceSurfaceSupportKHR' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkSwapchainCreateInfoKHR)~^~ VALIDATION_ERROR_01923~^~N~^~Unknown~^~vkCreateSwapchainKHR~^~For more information refer to Vulkan Spec Section '30.6. WSI Swapchain' which states 'sType must be VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkSwapchainCreateInfoKHR)~^~TBD in parameter validation layer. VALIDATION_ERROR_01924~^~N~^~Unknown~^~vkCreateSwapchainKHR~^~For more information refer to Vulkan Spec Section '30.6. WSI Swapchain' which states 'pNext must be NULL' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkSwapchainCreateInfoKHR)~^~TBD in parameter validation layer. VALIDATION_ERROR_01925~^~N~^~Unknown~^~vkCreateSwapchainKHR~^~For more information refer to Vulkan Spec Section '30.6. WSI Swapchain' which states 'flags must be 0' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkSwapchainCreateInfoKHR)~^~TBD in parameter validation layer. @@ -2266,8 +2266,8 @@ VALIDATION_ERROR_02333~^~Y~^~Unknown~^~vkCreateSwapchainKHR~^~For more informati VALIDATION_ERROR_02334~^~Y~^~Unknown~^~vkCreateSwapchainKHR~^~For more information refer to Vulkan Spec Section '30.6. WSI Swapchain' which states 'imageExtent must be between minImageExtent and maxImageExtent, inclusive, where minImageExtent and maxImageExtent are members of the VkSurfaceCapabilitiesKHR structure returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkSwapchainCreateInfoKHR)~^~ VALIDATION_ERROR_02335~^~Y~^~Unknown~^~vkCreateSwapchainKHR~^~For more information refer to Vulkan Spec Section '30.6. WSI Swapchain' which states 'imageArrayLayers must be greater than 0 and less than or equal to the maxImageArrayLayers member of the VkSurfaceCapabilitiesKHR structure returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkSwapchainCreateInfoKHR)~^~ VALIDATION_ERROR_02336~^~Y~^~Unknown~^~vkCreateSwapchainKHR~^~For more information refer to Vulkan Spec Section '30.6. WSI Swapchain' which states 'imageUsage must be a subset of the supported usage flags present in the supportedUsageFlags member of the VkSurfaceCapabilitiesKHR structure returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkSwapchainCreateInfoKHR)~^~ -VALIDATION_ERROR_02337~^~U~^~Unknown~^~vkCreateSwapchainKHR~^~For more information refer to Vulkan Spec Section '30.6. WSI Swapchain' which states 'If imageSharingMode is VK_SHARING_MODE_CONCURRENT, pQueueFamilyIndices must be a pointer to an array of queueFamilyIndexCount uint32_t values' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkSwapchainCreateInfoKHR)~^~ -VALIDATION_ERROR_02338~^~U~^~Unknown~^~vkCreateSwapchainKHR~^~For more information refer to Vulkan Spec Section '30.6. WSI Swapchain' which states 'If imageSharingMode is VK_SHARING_MODE_CONCURRENT, queueFamilyIndexCount must be greater than 1' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkSwapchainCreateInfoKHR)~^~ +VALIDATION_ERROR_02337~^~Y~^~Unknown~^~vkCreateSwapchainKHR~^~For more information refer to Vulkan Spec Section '30.6. WSI Swapchain' which states 'If imageSharingMode is VK_SHARING_MODE_CONCURRENT, pQueueFamilyIndices must be a pointer to an array of queueFamilyIndexCount uint32_t values' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkSwapchainCreateInfoKHR)~^~ +VALIDATION_ERROR_02338~^~Y~^~Unknown~^~vkCreateSwapchainKHR~^~For more information refer to Vulkan Spec Section '30.6. WSI Swapchain' which states 'If imageSharingMode is VK_SHARING_MODE_CONCURRENT, queueFamilyIndexCount must be greater than 1' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkSwapchainCreateInfoKHR)~^~ VALIDATION_ERROR_02339~^~Y~^~Unknown~^~vkCreateSwapchainKHR~^~For more information refer to Vulkan Spec Section '30.6. WSI Swapchain' which states 'preTransform must be one of the bits present in the supportedTransforms member of the VkSurfaceCapabilitiesKHR structure returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkSwapchainCreateInfoKHR)~^~ VALIDATION_ERROR_02340~^~Y~^~Unknown~^~vkCreateSwapchainKHR~^~For more information refer to Vulkan Spec Section '30.6. WSI Swapchain' which states 'compositeAlpha must be one of the bits present in the supportedCompositeAlpha member of the VkSurfaceCapabilitiesKHR structure returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkSwapchainCreateInfoKHR)~^~ VALIDATION_ERROR_02341~^~Y~^~Unknown~^~vkCreateSwapchainKHR~^~For more information refer to Vulkan Spec Section '30.6. WSI Swapchain' which states 'presentMode must be one of the VkPresentModeKHR values returned by vkGetPhysicalDeviceSurfacePresentModesKHR for the surface' (https://www.khronos.org/registry/vulkan/specs/1.0-extensions/xhtml/vkspec.html#VkSwapchainCreateInfoKHR)~^~ diff --git a/layers/vk_validation_stats.py b/layers/vk_validation_stats.py index 9019aab2..132f46c7 100755 --- a/layers/vk_validation_stats.py +++ b/layers/vk_validation_stats.py @@ -49,7 +49,8 @@ layer_source_files = [ 'descriptor_sets.cpp', 'parameter_validation.cpp', 'object_tracker.cpp', -'image.cpp' +'image.cpp', +'swapchain.cpp' ] header_file = 'vk_validation_error_messages.h' # TODO : Don't hardcode linux path format if we want this to run on windows -- cgit v1.2.3