Add tracking of the new VkDescriptorUpdateTemplateKHR handle.
Also, update to include proper VUIDs for the corresponding checks
in object_tracker.cpp with help from Mark L and Mike S.
Change-Id: I4a665cfa2e8b4d8faf2a0ebd583c759e399b1599
if (other_device_data.second != device_data) {
if (other_device_data.second->object_map[object_type].find(object_handle) !=
other_device_data.second->object_map[object_type].end() ||
- (object_type == kVulkanObjectTypeImage && other_device_data.second->swapchainImageMap.find(object_handle) !=
- other_device_data.second->swapchainImageMap.end())) {
+ (object_type == kVulkanObjectTypeImage &&
+ other_device_data.second->swapchainImageMap.find(object_handle) !=
+ other_device_data.second->swapchainImageMap.end())) {
// Object found on other device, report an error if object has a device parent error code
if (wrong_device_code != VALIDATION_ERROR_UNDEFINED) {
return log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, debug_object_type,
}
// Report an error if object was not found anywhere
return log_msg(device_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, debug_object_type, object_handle, __LINE__,
- invalid_handle_code, LayerName, "Invalid %s Object 0x%" PRIxLEAST64 ". %s",
- object_string[object_type], object_handle, validation_error_map[invalid_handle_code]);
+ invalid_handle_code, LayerName, "Invalid %s Object 0x%" PRIxLEAST64 ". %s", object_string[object_type],
+ object_handle, validation_error_map[invalid_handle_code]);
}
}
return false;
VkDescriptorUpdateTemplateKHR *pDescriptorUpdateTemplate) {
bool skip = VK_FALSE;
std::unique_lock<std::mutex> lock(global_lock);
- skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, VALIDATION_ERROR_UNDEFINED, VALIDATION_ERROR_UNDEFINED);
+ skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, VALIDATION_ERROR_1fa05601, VALIDATION_ERROR_UNDEFINED);
lock.unlock();
if (skip) {
return VK_ERROR_VALIDATION_FAILED_EXT;
layer_data *dev_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
VkResult result = VK_SUCCESS;
result = dev_data->dispatch_table.CreateDescriptorUpdateTemplateKHR(device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate);
- // TODO: Add tracking of VkDescriptorUpdateTemplateKHR
+ if (result == VK_SUCCESS) {
+ CreateObject(device, *pDescriptorUpdateTemplate, kVulkanObjectTypeDescriptorUpdateTemplateKHR, pAllocator);
+ }
+
return result;
}
const VkAllocationCallbacks *pAllocator) {
bool skip = VK_FALSE;
std::unique_lock<std::mutex> lock(global_lock);
- skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, VALIDATION_ERROR_UNDEFINED, VALIDATION_ERROR_UNDEFINED);
- // TODO: Add tracking of VkDescriptorUpdateTemplateKHR
+ skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, VALIDATION_ERROR_24805601, VALIDATION_ERROR_UNDEFINED);
+ skip |= ValidateObject(device, descriptorUpdateTemplate, kVulkanObjectTypeDescriptorUpdateTemplateKHR, false,
+ VALIDATION_ERROR_24805201, VALIDATION_ERROR_24805207);
lock.unlock();
if (!skip) {
layer_data *dev_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
dev_data->dispatch_table.DestroyDescriptorUpdateTemplateKHR(device, descriptorUpdateTemplate, pAllocator);
+ DestroyObject(device, descriptorUpdateTemplate, kVulkanObjectTypeDescriptorUpdateTemplateKHR, pAllocator,
+ VALIDATION_ERROR_248002c8, VALIDATION_ERROR_248002ca);
}
}
const void *pData) {
bool skip = VK_FALSE;
std::unique_lock<std::mutex> lock(global_lock);
- skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, VALIDATION_ERROR_UNDEFINED, VALIDATION_ERROR_UNDEFINED);
- skip |= ValidateObject(device, descriptorSet, kVulkanObjectTypeDescriptorSet, false, VALIDATION_ERROR_UNDEFINED,
+ skip |= ValidateObject(device, device, kVulkanObjectTypeDevice, false, VALIDATION_ERROR_33a05601, VALIDATION_ERROR_UNDEFINED);
+ skip |= ValidateObject(device, descriptorSet, kVulkanObjectTypeDescriptorSet, false, VALIDATION_ERROR_33a04801,
VALIDATION_ERROR_UNDEFINED);
- // TODO: Add tracking of VkDescriptorUpdateTemplateKHR
+ skip |= ValidateObject(device, descriptorUpdateTemplate, kVulkanObjectTypeDescriptorUpdateTemplateKHR, false,
+ VALIDATION_ERROR_33a05201, VALIDATION_ERROR_33a05207);
lock.unlock();
if (!skip) {
layer_data *dev_data = GetLayerDataPtr(get_dispatch_key(device), layer_data_map);
VkPipelineLayout layout, uint32_t set, const void *pData) {
bool skip = false;
std::unique_lock<std::mutex> lock(global_lock);
- skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, VALIDATION_ERROR_UNDEFINED,
- VALIDATION_ERROR_UNDEFINED);
- skip |= ValidateObject(commandBuffer, layout, kVulkanObjectTypePipelineLayout, false, VALIDATION_ERROR_UNDEFINED,
+ skip |= ValidateObject(commandBuffer, commandBuffer, kVulkanObjectTypeCommandBuffer, false, VALIDATION_ERROR_1c002401,
VALIDATION_ERROR_UNDEFINED);
- // TODO: Add tracking of VkDescriptorUpdateTemplateKHR
+ skip |= ValidateObject(commandBuffer, layout, kVulkanObjectTypePipelineLayout, false, VALIDATION_ERROR_1c00be01,
+ VALIDATION_ERROR_1c000009);
+ skip |= ValidateObject(commandBuffer, descriptorUpdateTemplate, kVulkanObjectTypeDescriptorUpdateTemplateKHR, false,
+ VALIDATION_ERROR_1c005201, VALIDATION_ERROR_1c000009);
lock.unlock();
if (!skip) {
layer_data *dev_data = GetLayerDataPtr(get_dispatch_key(commandBuffer), layer_data_map);
c_VkDisplayModeKHR("VkDisplayModeKHR", VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT),
c_VkSurfaceKHR("VkSurfaceKHR", VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT),
c_VkSwapchainKHR("VkSwapchainKHR", VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT),
- // TODO: Add proper structure for VkDescriptorUpdateTemplateKHR
- c_VkDescriptorUpdateTemplateKHR("VkDescriptorUpdateTemplateKHR", VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT)
+ c_VkDescriptorUpdateTemplateKHR("VkDescriptorUpdateTemplateKHR", VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT)
#else // DISTINCT_NONDISPATCHABLE_HANDLES
c_uint64_t("NON_DISPATCHABLE_HANDLE", VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT)
#endif // DISTINCT_NONDISPATCHABLE_HANDLES
VALIDATION_ERROR_1be0be01~^~N~^~Unknown~^~vkCmdPushDescriptorSetKHR~^~VUID-vkCmdPushDescriptorSetKHR-layout-parameter~^~core~^~The spec valid usage text states 'layout must be a valid VkPipelineLayout handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdPushDescriptorSetKHR-layout-parameter)~^~implicit
VALIDATION_ERROR_1be13601~^~N~^~Unknown~^~vkCmdPushDescriptorSetKHR~^~VUID-vkCmdPushDescriptorSetKHR-pDescriptorWrites-parameter~^~core~^~The spec valid usage text states 'pDescriptorWrites must be a pointer to an array of descriptorWriteCount valid VkWriteDescriptorSet structures' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdPushDescriptorSetKHR-pDescriptorWrites-parameter)~^~implicit
VALIDATION_ERROR_1be27e01~^~N~^~Unknown~^~vkCmdPushDescriptorSetKHR~^~VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-parameter~^~core~^~The spec valid usage text states 'pipelineBindPoint must be a valid VkPipelineBindPoint value' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdPushDescriptorSetKHR-pipelineBindPoint-parameter)~^~implicit
-VALIDATION_ERROR_1c000009~^~N~^~Unknown~^~vkCmdPushDescriptorSetWithTemplateKHR~^~VUID-vkCmdPushDescriptorSetWithTemplateKHR-commonparent~^~core~^~The spec valid usage text states 'Each of commandBuffer, descriptorUpdateTemplate, and layout must have been created, allocated, or retrieved from the same VkDevice' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdPushDescriptorSetWithTemplateKHR-commonparent)~^~implicit
+VALIDATION_ERROR_1c000009~^~Y~^~Unknown~^~vkCmdPushDescriptorSetWithTemplateKHR~^~VUID-vkCmdPushDescriptorSetWithTemplateKHR-commonparent~^~core~^~The spec valid usage text states 'Each of commandBuffer, descriptorUpdateTemplate, and layout must have been created, allocated, or retrieved from the same VkDevice' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdPushDescriptorSetWithTemplateKHR-commonparent)~^~implicit
VALIDATION_ERROR_1c0002dc~^~N~^~Unknown~^~vkCmdPushDescriptorSetWithTemplateKHR~^~VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-00366~^~core~^~The spec valid usage text states 'The pipelineBindPoint specified during the creation of the descriptor update template must be supported by the commandBuffer's parent VkCommandPool's queue family' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-00366)~^~
-VALIDATION_ERROR_1c002401~^~N~^~Unknown~^~vkCmdPushDescriptorSetWithTemplateKHR~^~VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-parameter~^~core~^~The spec valid usage text states 'commandBuffer must be a valid VkCommandBuffer handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-parameter)~^~implicit
+VALIDATION_ERROR_1c002401~^~Y~^~Unknown~^~vkCmdPushDescriptorSetWithTemplateKHR~^~VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-parameter~^~core~^~The spec valid usage text states 'commandBuffer must be a valid VkCommandBuffer handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-parameter)~^~implicit
VALIDATION_ERROR_1c002413~^~N~^~Unknown~^~vkCmdPushDescriptorSetWithTemplateKHR~^~VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-recording~^~core~^~The spec valid usage text states 'commandBuffer must be in the recording state' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-recording)~^~implicit
VALIDATION_ERROR_1c002415~^~N~^~Unknown~^~vkCmdPushDescriptorSetWithTemplateKHR~^~VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-cmdpool~^~core~^~The spec valid usage text states 'The VkCommandPool that commandBuffer was allocated from must support graphics, or compute operations' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdPushDescriptorSetWithTemplateKHR-commandBuffer-cmdpool)~^~implicit
-VALIDATION_ERROR_1c005201~^~N~^~Unknown~^~vkCmdPushDescriptorSetWithTemplateKHR~^~VUID-vkCmdPushDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parameter~^~core~^~The spec valid usage text states 'descriptorUpdateTemplate must be a valid VkDescriptorUpdateTemplateKHR handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdPushDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parameter)~^~implicit
-VALIDATION_ERROR_1c00be01~^~N~^~Unknown~^~vkCmdPushDescriptorSetWithTemplateKHR~^~VUID-vkCmdPushDescriptorSetWithTemplateKHR-layout-parameter~^~core~^~The spec valid usage text states 'layout must be a valid VkPipelineLayout handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdPushDescriptorSetWithTemplateKHR-layout-parameter)~^~implicit
+VALIDATION_ERROR_1c005201~^~Y~^~Unknown~^~vkCmdPushDescriptorSetWithTemplateKHR~^~VUID-vkCmdPushDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parameter~^~core~^~The spec valid usage text states 'descriptorUpdateTemplate must be a valid VkDescriptorUpdateTemplateKHR handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdPushDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parameter)~^~implicit
+VALIDATION_ERROR_1c00be01~^~Y~^~Unknown~^~vkCmdPushDescriptorSetWithTemplateKHR~^~VUID-vkCmdPushDescriptorSetWithTemplateKHR-layout-parameter~^~core~^~The spec valid usage text states 'layout must be a valid VkPipelineLayout handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdPushDescriptorSetWithTemplateKHR-layout-parameter)~^~implicit
VALIDATION_ERROR_1c012201~^~N~^~Unknown~^~vkCmdPushDescriptorSetWithTemplateKHR~^~VUID-vkCmdPushDescriptorSetWithTemplateKHR-pData-parameter~^~core~^~The spec valid usage text states 'pData must be a pointer' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdPushDescriptorSetWithTemplateKHR-pData-parameter)~^~implicit
VALIDATION_ERROR_1c200017~^~N~^~Unknown~^~vkCmdReserveSpaceForCommandsNVX~^~VUID-vkCmdReserveSpaceForCommandsNVX-renderpass~^~core~^~The spec valid usage text states 'This command must only be called inside of a render pass instance' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdReserveSpaceForCommandsNVX-renderpass)~^~implicit
VALIDATION_ERROR_1c200019~^~N~^~Unknown~^~vkCmdReserveSpaceForCommandsNVX~^~VUID-vkCmdReserveSpaceForCommandsNVX-bufferlevel~^~core~^~The spec valid usage text states 'commandBuffer must be a secondary VkCommandBuffer' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCmdReserveSpaceForCommandsNVX-bufferlevel)~^~implicit
VALIDATION_ERROR_1f80ec01~^~N~^~Unknown~^~vkCreateDescriptorSetLayout~^~VUID-vkCreateDescriptorSetLayout-pAllocator-parameter~^~core~^~The spec valid usage text 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/html/vkspec.html#VUID-vkCreateDescriptorSetLayout-pAllocator-parameter)~^~implicit
VALIDATION_ERROR_1f811e01~^~N~^~Unknown~^~vkCreateDescriptorSetLayout~^~VUID-vkCreateDescriptorSetLayout-pCreateInfo-parameter~^~core~^~The spec valid usage text states 'pCreateInfo must be a pointer to a valid VkDescriptorSetLayoutCreateInfo structure' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCreateDescriptorSetLayout-pCreateInfo-parameter)~^~implicit
VALIDATION_ERROR_1f822a01~^~N~^~Unknown~^~vkCreateDescriptorSetLayout~^~VUID-vkCreateDescriptorSetLayout-pSetLayout-parameter~^~core~^~The spec valid usage text states 'pSetLayout must be a pointer to a VkDescriptorSetLayout handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCreateDescriptorSetLayout-pSetLayout-parameter)~^~implicit
-VALIDATION_ERROR_1fa05601~^~N~^~Unknown~^~vkCreateDescriptorUpdateTemplateKHR~^~VUID-vkCreateDescriptorUpdateTemplateKHR-device-parameter~^~core~^~The spec valid usage text states 'device must be a valid VkDevice handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCreateDescriptorUpdateTemplateKHR-device-parameter)~^~implicit
+VALIDATION_ERROR_1fa05601~^~Y~^~Unknown~^~vkCreateDescriptorUpdateTemplateKHR~^~VUID-vkCreateDescriptorUpdateTemplateKHR-device-parameter~^~core~^~The spec valid usage text states 'device must be a valid VkDevice handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCreateDescriptorUpdateTemplateKHR-device-parameter)~^~implicit
VALIDATION_ERROR_1fa0ec01~^~N~^~Unknown~^~vkCreateDescriptorUpdateTemplateKHR~^~VUID-vkCreateDescriptorUpdateTemplateKHR-pAllocator-parameter~^~core~^~The spec valid usage text 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/html/vkspec.html#VUID-vkCreateDescriptorUpdateTemplateKHR-pAllocator-parameter)~^~implicit
VALIDATION_ERROR_1fa11e01~^~N~^~Unknown~^~vkCreateDescriptorUpdateTemplateKHR~^~VUID-vkCreateDescriptorUpdateTemplateKHR-pCreateInfo-parameter~^~core~^~The spec valid usage text states 'pCreateInfo must be a pointer to a valid VkDescriptorUpdateTemplateCreateInfoKHR structure' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCreateDescriptorUpdateTemplateKHR-pCreateInfo-parameter)~^~implicit
VALIDATION_ERROR_1fa13401~^~N~^~Unknown~^~vkCreateDescriptorUpdateTemplateKHR~^~VUID-vkCreateDescriptorUpdateTemplateKHR-pDescriptorUpdateTemplate-parameter~^~core~^~The spec valid usage text states 'pDescriptorUpdateTemplate must be a pointer to a VkDescriptorUpdateTemplateKHR handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkCreateDescriptorUpdateTemplateKHR-pDescriptorUpdateTemplate-parameter)~^~implicit
VALIDATION_ERROR_24604c07~^~Y~^~Unknown~^~vkDestroyDescriptorSetLayout~^~VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-parent~^~core~^~The spec valid usage text states 'If descriptorSetLayout is a valid handle, it must have been created, allocated, or retrieved from device' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkDestroyDescriptorSetLayout-descriptorSetLayout-parent)~^~implicit
VALIDATION_ERROR_24605601~^~Y~^~None~^~vkDestroyDescriptorSetLayout~^~VUID-vkDestroyDescriptorSetLayout-device-parameter~^~core~^~The spec valid usage text states 'device must be a valid VkDevice handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkDestroyDescriptorSetLayout-device-parameter)~^~implicit
VALIDATION_ERROR_2460ec01~^~N~^~Unknown~^~vkDestroyDescriptorSetLayout~^~VUID-vkDestroyDescriptorSetLayout-pAllocator-parameter~^~core~^~The spec valid usage text 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/html/vkspec.html#VUID-vkDestroyDescriptorSetLayout-pAllocator-parameter)~^~implicit
-VALIDATION_ERROR_248002c8~^~N~^~Unknown~^~vkDestroyDescriptorUpdateTemplateKHR~^~VUID-vkDestroyDescriptorUpdateTemplateKHR-descriptorSetLayout-00356~^~core~^~The spec valid usage text states 'If VkAllocationCallbacks were provided when descriptorSetLayout was created, a compatible set of callbacks must be provided here' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkDestroyDescriptorUpdateTemplateKHR-descriptorSetLayout-00356)~^~
-VALIDATION_ERROR_248002ca~^~N~^~Unknown~^~vkDestroyDescriptorUpdateTemplateKHR~^~VUID-vkDestroyDescriptorUpdateTemplateKHR-descriptorSetLayout-00357~^~core~^~The spec valid usage text states 'If no VkAllocationCallbacks were provided when descriptorSetLayout was created, pAllocator must be NULL' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkDestroyDescriptorUpdateTemplateKHR-descriptorSetLayout-00357)~^~
-VALIDATION_ERROR_24805201~^~N~^~Unknown~^~vkDestroyDescriptorUpdateTemplateKHR~^~VUID-vkDestroyDescriptorUpdateTemplateKHR-descriptorUpdateTemplate-parameter~^~core~^~The spec valid usage text states 'If descriptorUpdateTemplate is not VK_NULL_HANDLE, descriptorUpdateTemplate must be a valid VkDescriptorUpdateTemplateKHR handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkDestroyDescriptorUpdateTemplateKHR-descriptorUpdateTemplate-parameter)~^~implicit
-VALIDATION_ERROR_24805207~^~N~^~Unknown~^~vkDestroyDescriptorUpdateTemplateKHR~^~VUID-vkDestroyDescriptorUpdateTemplateKHR-descriptorUpdateTemplate-parent~^~core~^~The spec valid usage text states 'If descriptorUpdateTemplate is a valid handle, it must have been created, allocated, or retrieved from device' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkDestroyDescriptorUpdateTemplateKHR-descriptorUpdateTemplate-parent)~^~implicit
-VALIDATION_ERROR_24805601~^~N~^~Unknown~^~vkDestroyDescriptorUpdateTemplateKHR~^~VUID-vkDestroyDescriptorUpdateTemplateKHR-device-parameter~^~core~^~The spec valid usage text states 'device must be a valid VkDevice handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkDestroyDescriptorUpdateTemplateKHR-device-parameter)~^~implicit
+VALIDATION_ERROR_248002c8~^~Y~^~Unknown~^~vkDestroyDescriptorUpdateTemplateKHR~^~VUID-vkDestroyDescriptorUpdateTemplateKHR-descriptorSetLayout-00356~^~core~^~The spec valid usage text states 'If VkAllocationCallbacks were provided when descriptorSetLayout was created, a compatible set of callbacks must be provided here' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkDestroyDescriptorUpdateTemplateKHR-descriptorSetLayout-00356)~^~
+VALIDATION_ERROR_248002ca~^~Y~^~Unknown~^~vkDestroyDescriptorUpdateTemplateKHR~^~VUID-vkDestroyDescriptorUpdateTemplateKHR-descriptorSetLayout-00357~^~core~^~The spec valid usage text states 'If no VkAllocationCallbacks were provided when descriptorSetLayout was created, pAllocator must be NULL' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkDestroyDescriptorUpdateTemplateKHR-descriptorSetLayout-00357)~^~
+VALIDATION_ERROR_24805201~^~Y~^~Unknown~^~vkDestroyDescriptorUpdateTemplateKHR~^~VUID-vkDestroyDescriptorUpdateTemplateKHR-descriptorUpdateTemplate-parameter~^~core~^~The spec valid usage text states 'If descriptorUpdateTemplate is not VK_NULL_HANDLE, descriptorUpdateTemplate must be a valid VkDescriptorUpdateTemplateKHR handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkDestroyDescriptorUpdateTemplateKHR-descriptorUpdateTemplate-parameter)~^~implicit
+VALIDATION_ERROR_24805207~^~Y~^~Unknown~^~vkDestroyDescriptorUpdateTemplateKHR~^~VUID-vkDestroyDescriptorUpdateTemplateKHR-descriptorUpdateTemplate-parent~^~core~^~The spec valid usage text states 'If descriptorUpdateTemplate is a valid handle, it must have been created, allocated, or retrieved from device' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkDestroyDescriptorUpdateTemplateKHR-descriptorUpdateTemplate-parent)~^~implicit
+VALIDATION_ERROR_24805601~^~Y~^~Unknown~^~vkDestroyDescriptorUpdateTemplateKHR~^~VUID-vkDestroyDescriptorUpdateTemplateKHR-device-parameter~^~core~^~The spec valid usage text states 'device must be a valid VkDevice handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkDestroyDescriptorUpdateTemplateKHR-device-parameter)~^~implicit
VALIDATION_ERROR_2480ec01~^~N~^~Unknown~^~vkDestroyDescriptorUpdateTemplateKHR~^~VUID-vkDestroyDescriptorUpdateTemplateKHR-pAllocator-parameter~^~core~^~The spec valid usage text 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/html/vkspec.html#VUID-vkDestroyDescriptorUpdateTemplateKHR-pAllocator-parameter)~^~implicit
VALIDATION_ERROR_24a002f4~^~Y~^~Unknown~^~vkDestroyDevice~^~VUID-vkDestroyDevice-device-00378~^~core~^~The spec valid usage text states 'All child objects created on device must have been destroyed prior to destroying device' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkDestroyDevice-device-00378)~^~
VALIDATION_ERROR_24a002f6~^~Y~^~Unknown~^~vkDestroyDevice~^~VUID-vkDestroyDevice-device-00379~^~core~^~The spec valid usage text states 'If VkAllocationCallbacks were provided when device was created, a compatible set of callbacks must be provided here' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkDestroyDevice-device-00379)~^~
VALIDATION_ERROR_3380d807~^~N~^~Unknown~^~vkUnregisterObjectsNVX~^~VUID-vkUnregisterObjectsNVX-objectTable-parent~^~core~^~The spec valid usage text states 'objectTable must have been created, allocated, or retrieved from device' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkUnregisterObjectsNVX-objectTable-parent)~^~implicit
VALIDATION_ERROR_3381c801~^~N~^~Unknown~^~vkUnregisterObjectsNVX~^~VUID-vkUnregisterObjectsNVX-pObjectEntryTypes-parameter~^~core~^~The spec valid usage text states 'pObjectEntryTypes must be a pointer to an array of objectCount valid VkObjectEntryTypeNVX values' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkUnregisterObjectsNVX-pObjectEntryTypes-parameter)~^~implicit
VALIDATION_ERROR_3381cc01~^~N~^~Unknown~^~vkUnregisterObjectsNVX~^~VUID-vkUnregisterObjectsNVX-pObjectIndices-parameter~^~core~^~The spec valid usage text states 'pObjectIndices must be a pointer to an array of objectCount uint32_t values' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkUnregisterObjectsNVX-pObjectIndices-parameter)~^~implicit
-VALIDATION_ERROR_33a04801~^~N~^~Unknown~^~vkUpdateDescriptorSetWithTemplateKHR~^~VUID-vkUpdateDescriptorSetWithTemplateKHR-descriptorSet-parameter~^~core~^~The spec valid usage text states 'descriptorSet must be a valid VkDescriptorSet handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkUpdateDescriptorSetWithTemplateKHR-descriptorSet-parameter)~^~implicit
-VALIDATION_ERROR_33a05201~^~N~^~Unknown~^~vkUpdateDescriptorSetWithTemplateKHR~^~VUID-vkUpdateDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parameter~^~core~^~The spec valid usage text states 'descriptorUpdateTemplate must be a valid VkDescriptorUpdateTemplateKHR handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkUpdateDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parameter)~^~implicit
-VALIDATION_ERROR_33a05207~^~N~^~Unknown~^~vkUpdateDescriptorSetWithTemplateKHR~^~VUID-vkUpdateDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parent~^~core~^~The spec valid usage text states 'descriptorUpdateTemplate must have been created, allocated, or retrieved from device' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkUpdateDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parent)~^~implicit
-VALIDATION_ERROR_33a05601~^~N~^~Unknown~^~vkUpdateDescriptorSetWithTemplateKHR~^~VUID-vkUpdateDescriptorSetWithTemplateKHR-device-parameter~^~core~^~The spec valid usage text states 'device must be a valid VkDevice handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkUpdateDescriptorSetWithTemplateKHR-device-parameter)~^~implicit
+VALIDATION_ERROR_33a04801~^~Y~^~Unknown~^~vkUpdateDescriptorSetWithTemplateKHR~^~VUID-vkUpdateDescriptorSetWithTemplateKHR-descriptorSet-parameter~^~core~^~The spec valid usage text states 'descriptorSet must be a valid VkDescriptorSet handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkUpdateDescriptorSetWithTemplateKHR-descriptorSet-parameter)~^~implicit
+VALIDATION_ERROR_33a05201~^~Y~^~Unknown~^~vkUpdateDescriptorSetWithTemplateKHR~^~VUID-vkUpdateDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parameter~^~core~^~The spec valid usage text states 'descriptorUpdateTemplate must be a valid VkDescriptorUpdateTemplateKHR handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkUpdateDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parameter)~^~implicit
+VALIDATION_ERROR_33a05207~^~Y~^~Unknown~^~vkUpdateDescriptorSetWithTemplateKHR~^~VUID-vkUpdateDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parent~^~core~^~The spec valid usage text states 'descriptorUpdateTemplate must have been created, allocated, or retrieved from device' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkUpdateDescriptorSetWithTemplateKHR-descriptorUpdateTemplate-parent)~^~implicit
+VALIDATION_ERROR_33a05601~^~Y~^~Unknown~^~vkUpdateDescriptorSetWithTemplateKHR~^~VUID-vkUpdateDescriptorSetWithTemplateKHR-device-parameter~^~core~^~The spec valid usage text states 'device must be a valid VkDevice handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkUpdateDescriptorSetWithTemplateKHR-device-parameter)~^~implicit
VALIDATION_ERROR_33a12201~^~N~^~Unknown~^~vkUpdateDescriptorSetWithTemplateKHR~^~VUID-vkUpdateDescriptorSetWithTemplateKHR-pData-parameter~^~core~^~The spec valid usage text states 'pData must be a pointer' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkUpdateDescriptorSetWithTemplateKHR-pData-parameter)~^~implicit
VALIDATION_ERROR_33c00274~^~N~^~Unknown~^~vkUpdateDescriptorSets~^~VUID-vkUpdateDescriptorSets-dstSet-00314~^~core~^~The spec valid usage text states 'The dstSet member of any given element of pDescriptorWrites or pDescriptorCopies must not be used by any command that was recorded to a command buffer which is in the pending state.' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkUpdateDescriptorSets-dstSet-00314)~^~
VALIDATION_ERROR_33c05601~^~Y~^~None~^~vkUpdateDescriptorSets~^~VUID-vkUpdateDescriptorSets-device-parameter~^~core~^~The spec valid usage text states 'device must be a valid VkDevice handle' (https://www.khronos.org/registry/vulkan/specs/1.0/html/vkspec.html#VUID-vkUpdateDescriptorSets-device-parameter)~^~implicit