diff --git a/build-android/known_good.json b/build-android/known_good.json index 877ff59e076..6d6e022d575 100755 --- a/build-android/known_good.json +++ b/build-android/known_good.json @@ -16,13 +16,13 @@ "name" : "Vulkan-Headers", "url" : "https://github.com/KhronosGroup/Vulkan-Headers.git", "sub_dir" : "Vulkan-Headers", - "commit" : "v1.2.141" + "commit" : "v1.2.144" }, { "name" : "Vulkan-Tools", "url" : "https://github.com/KhronosGroup/Vulkan-Tools.git", "sub_dir" : "Vulkan-Tools", - "commit" : "0c4ea014bf289e8b0a8501c3e89c8bc4ecf9f0a4" + "commit" : "9d7880c7a07598cca8fb80b74bfee933e852f445" }, { "name" : "SPIRV-Tools", diff --git a/layers/buffer_validation.cpp b/layers/buffer_validation.cpp index e8bcc5c4f5c..b0aff94078f 100644 --- a/layers/buffer_validation.cpp +++ b/layers/buffer_validation.cpp @@ -5293,13 +5293,6 @@ bool CoreChecks::ValidateBufferImageCopyData(uint32_t regionCount, const VkBuffe function, i, pRegions[i].bufferOffset, element_size); } - // BufferOffset must be a multiple of 4 - if (SafeModulo(pRegions[i].bufferOffset, 4) != 0) { - skip |= LogError(image_state->image, "VUID-VkBufferImageCopy-bufferOffset-00194", - "%s(): pRegion[%d] bufferOffset 0x%" PRIxLEAST64 " must be a multiple of 4.", function, i, - pRegions[i].bufferOffset); - } - // BufferRowLength must be 0, or greater than or equal to the width member of imageExtent if ((pRegions[i].bufferRowLength != 0) && (pRegions[i].bufferRowLength < pRegions[i].imageExtent.width)) { skip |= diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index bec2023d183..a541f3982e1 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -6049,9 +6049,9 @@ bool CoreChecks::PreCallValidateCmdSetEvent(VkCommandBuffer commandBuffer, VkEve "VUID-vkCmdSetEvent-commandBuffer-cmdpool"); skip |= ValidateCmd(cb_state, CMD_SETEVENT, "vkCmdSetEvent()"); skip |= InsideRenderPass(cb_state, "vkCmdSetEvent()", "VUID-vkCmdSetEvent-renderpass"); - skip |= ValidateStageMaskGsTsEnables(stageMask, "vkCmdSetEvent()", "VUID-vkCmdSetEvent-stageMask-01150", - "VUID-vkCmdSetEvent-stageMask-01151", "VUID-vkCmdSetEvent-stageMask-02107", - "VUID-vkCmdSetEvent-stageMask-02108"); + skip |= ValidateStageMaskGsTsEnables(stageMask, "vkCmdSetEvent()", "VUID-vkCmdSetEvent-stageMask-04090", + "VUID-vkCmdSetEvent-stageMask-04091", "VUID-vkCmdSetEvent-stageMask-04095", + "VUID-vkCmdSetEvent-stageMask-04096"); skip |= ValidateStageMaskHost(stageMask, "vkCmdSetEvent()", "VUID-vkCmdSetEvent-stageMask-01149"); return skip; } @@ -6064,9 +6064,9 @@ bool CoreChecks::PreCallValidateCmdResetEvent(VkCommandBuffer commandBuffer, VkE "VUID-vkCmdResetEvent-commandBuffer-cmdpool"); skip |= ValidateCmd(cb_state, CMD_RESETEVENT, "vkCmdResetEvent()"); skip |= InsideRenderPass(cb_state, "vkCmdResetEvent()", "VUID-vkCmdResetEvent-renderpass"); - skip |= ValidateStageMaskGsTsEnables(stageMask, "vkCmdResetEvent()", "VUID-vkCmdResetEvent-stageMask-01154", - "VUID-vkCmdResetEvent-stageMask-01155", "VUID-vkCmdResetEvent-stageMask-02109", - "VUID-vkCmdResetEvent-stageMask-02110"); + skip |= ValidateStageMaskGsTsEnables(stageMask, "vkCmdResetEvent()", "VUID-vkCmdResetEvent-stageMask-04090", + "VUID-vkCmdResetEvent-stageMask-04091", "VUID-vkCmdResetEvent-stageMask-04095", + "VUID-vkCmdResetEvent-stageMask-04096"); skip |= ValidateStageMaskHost(stageMask, "vkCmdResetEvent()", "VUID-vkCmdResetEvent-stageMask-01153"); return skip; } @@ -6227,7 +6227,7 @@ bool CoreChecks::ValidateImageBarrierAttachment(const char *funcName, CMD_BUFFER } } if (!sub_image_found) { - skip |= LogError(rp_handle, "VUID-vkCmdPipelineBarrier-image-02635", + skip |= LogError(rp_handle, "VUID-vkCmdPipelineBarrier-image-04073", "%s: Barrier pImageMemoryBarriers[%d].%s is not referenced by the VkSubpassDescription for " "active subpass (%d) of current %s.", funcName, img_index, report_data->FormatHandle(img_bar_image).c_str(), active_subpass, @@ -6235,7 +6235,7 @@ bool CoreChecks::ValidateImageBarrierAttachment(const char *funcName, CMD_BUFFER } } else { // !image_match skip |= - LogError(fb_state->framebuffer, "VUID-vkCmdPipelineBarrier-image-02635", + LogError(fb_state->framebuffer, "VUID-vkCmdPipelineBarrier-image-04073", "%s: Barrier pImageMemoryBarriers[%d].%s does not match an image from the current %s.", funcName, img_index, report_data->FormatHandle(img_bar_image).c_str(), report_data->FormatHandle(fb_state->framebuffer).c_str()); } @@ -6249,7 +6249,7 @@ bool CoreChecks::ValidateImageBarrierAttachment(const char *funcName, CMD_BUFFER if (sub_image_found && sub_image_layout != img_barrier.oldLayout) { LogObjectList objlist(rp_handle); objlist.add(img_bar_image); - skip |= LogError(objlist, "VUID-vkCmdPipelineBarrier-oldLayout-02636", + skip |= LogError(objlist, "VUID-vkCmdPipelineBarrier-oldLayout-01181", "%s: Barrier pImageMemoryBarriers[%d].%s is referenced by the VkSubpassDescription for active " "subpass (%d) of current %s as having layout %s, but image barrier has layout %s.", funcName, img_index, report_data->FormatHandle(img_bar_image).c_str(), active_subpass, @@ -6509,11 +6509,9 @@ namespace barrier_queue_families { enum VuIndex { kSrcOrDstMustBeIgnore, kSpecialOrIgnoreOnly, - kSrcIgnoreRequiresDstIgnore, - kDstValidOrSpecialIfNotIgnore, - kSrcValidOrSpecialIfNotIgnore, + kSrcAndDstValidOrSpecial, kSrcAndDestMustBeIgnore, - kBothIgnoreOrBothValid, + kSrcAndDstBothValid, kSubmitQueueMustMatchSrcOrDst }; static const char *vu_summary[] = {"Source or destination queue family must be ignored.", @@ -6526,25 +6524,21 @@ static const char *vu_summary[] = {"Source or destination queue family must be i "Source or destination queue family must match submit queue family, if not ignored."}; static const std::string image_error_codes[] = { - "VUID-VkImageMemoryBarrier-image-01381", // kSrcOrDstMustBeIgnore - "VUID-VkImageMemoryBarrier-image-01766", // kSpecialOrIgnoreOnly - "VUID-VkImageMemoryBarrier-image-01201", // kSrcIgnoreRequiresDstIgnore - "VUID-VkImageMemoryBarrier-image-01768", // kDstValidOrSpecialIfNotIgnore - "VUID-VkImageMemoryBarrier-image-01767", // kSrcValidOrSpecialIfNotIgnore - "VUID-VkImageMemoryBarrier-image-01199", // kSrcAndDestMustBeIgnore - "VUID-VkImageMemoryBarrier-image-01200", // kBothIgnoreOrBothValid - "VUID-VkImageMemoryBarrier-image-01205", // kSubmitQueueMustMatchSrcOrDst + "VUID-VkImageMemoryBarrier-image-01381", // kSrcOrDstMustBeIgnore + "VUID-VkImageMemoryBarrier-image-04071", // kSpecialOrIgnoreOnly + "VUID-VkImageMemoryBarrier-image-04072", // kSrcAndDstValidOrSpecial + "VUID-VkImageMemoryBarrier-image-01199", // kSrcAndDestMustBeIgnore + "VUID-VkImageMemoryBarrier-image-04069", // kSrcAndDstBothValid + "UNASSIGNED-CoreValidation-vkImageMemoryBarrier-sharing-mode-exclusive-same-family", // kSubmitQueueMustMatchSrcOrDst }; static const std::string buffer_error_codes[] = { - "VUID-VkBufferMemoryBarrier-buffer-01191", // kSrcOrDstMustBeIgnore - "VUID-VkBufferMemoryBarrier-buffer-01763", // kSpecialOrIgnoreOnly - "VUID-VkBufferMemoryBarrier-buffer-01193", // kSrcIgnoreRequiresDstIgnore - "VUID-VkBufferMemoryBarrier-buffer-01765", // kDstValidOrSpecialIfNotIgnore - "VUID-VkBufferMemoryBarrier-buffer-01764", // kSrcValidOrSpecialIfNotIgnore - "VUID-VkBufferMemoryBarrier-buffer-01190", // kSrcAndDestMustBeIgnore - "VUID-VkBufferMemoryBarrier-buffer-01192", // kBothIgnoreOrBothValid - "VUID-VkBufferMemoryBarrier-buffer-01196", // kSubmitQueueMustMatchSrcOrDst + "VUID-VkBufferMemoryBarrier-buffer-01191", // kSrcOrDstMustBeIgnore + "VUID-VkBufferMemoryBarrier-buffer-04088", // kSpecialOrIgnoreOnly + "VUID-VkBufferMemoryBarrier-buffer-04089", // kSrcAndDstValidOrSpecial + "VUID-VkBufferMemoryBarrier-buffer-01190", // kSrcAndDestMustBeIgnore + "VUID-VkBufferMemoryBarrier-buffer-04086", // kSrcAndDstBothValid + "UNASSIGNED-CoreValidation-vkBufferMemoryBarrier-sharing-mode-exclusive-same-family", // kSubmitQueueMustMatchSrcOrDst }; class ValidatorState { @@ -6665,14 +6659,13 @@ bool Validate(const CoreChecks *device_data, const char *func_name, const CMD_BU } } else { // VK_SHARING_MODE_EXCLUSIVE - if (src_ignored && !dst_ignored) { - skip |= val.LogMsg(kSrcIgnoreRequiresDstIgnore, src_queue_family, dst_queue_family); - } - if (!dst_ignored && !val.IsValidOrSpecial(dst_queue_family)) { - skip |= val.LogMsg(kDstValidOrSpecialIfNotIgnore, dst_queue_family, "dstQueueFamilyIndex"); - } - if (!src_ignored && !val.IsValidOrSpecial(src_queue_family)) { - skip |= val.LogMsg(kSrcValidOrSpecialIfNotIgnore, src_queue_family, "srcQueueFamilyIndex"); + if (src_queue_family != dst_queue_family) { + if (!val.IsValidOrSpecial(dst_queue_family)) { + skip |= val.LogMsg(kSrcAndDstValidOrSpecial, dst_queue_family, "dstQueueFamilyIndex"); + } + if (!val.IsValidOrSpecial(src_queue_family)) { + skip |= val.LogMsg(kSrcAndDstValidOrSpecial, src_queue_family, "srcQueueFamilyIndex"); + } } } } else { @@ -6683,8 +6676,8 @@ bool Validate(const CoreChecks *device_data, const char *func_name, const CMD_BU } } else { // VK_SHARING_MODE_EXCLUSIVE - if (!((src_ignored && dst_ignored) || (val.IsValid(src_queue_family) && val.IsValid(dst_queue_family)))) { - skip |= val.LogMsg(kBothIgnoreOrBothValid, src_queue_family, dst_queue_family); + if ((src_queue_family != dst_queue_family) && !(val.IsValid(src_queue_family) && val.IsValid(dst_queue_family))) { + skip |= val.LogMsg(kSrcAndDstBothValid, src_queue_family, dst_queue_family); } } } @@ -6993,13 +6986,13 @@ bool CoreChecks::PreCallValidateCmdWaitEvents(VkCommandBuffer commandBuffer, uin auto barrier_op_type = ComputeBarrierOperationsType(cb_state, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers); bool skip = ValidateStageMasksAgainstQueueCapabilities(cb_state, sourceStageMask, dstStageMask, barrier_op_type, - "vkCmdWaitEvents", "VUID-vkCmdWaitEvents-srcStageMask-01164"); - skip |= ValidateStageMaskGsTsEnables(sourceStageMask, "vkCmdWaitEvents()", "VUID-vkCmdWaitEvents-srcStageMask-01159", - "VUID-vkCmdWaitEvents-srcStageMask-01161", "VUID-vkCmdWaitEvents-srcStageMask-02111", - "VUID-vkCmdWaitEvents-srcStageMask-02112"); - skip |= ValidateStageMaskGsTsEnables(dstStageMask, "vkCmdWaitEvents()", "VUID-vkCmdWaitEvents-dstStageMask-01160", - "VUID-vkCmdWaitEvents-dstStageMask-01162", "VUID-vkCmdWaitEvents-dstStageMask-02113", - "VUID-vkCmdWaitEvents-dstStageMask-02114"); + "vkCmdWaitEvents", "VUID-vkCmdWaitEvents-srcStageMask-4098"); + skip |= ValidateStageMaskGsTsEnables(sourceStageMask, "vkCmdWaitEvents()", "VUID-vkCmdWaitEvents-srcStageMask-04090", + "VUID-vkCmdWaitEvents-srcStageMask-04091", "VUID-vkCmdWaitEvents-srcStageMask-04095", + "VUID-vkCmdWaitEvents-srcStageMask-04096"); + skip |= ValidateStageMaskGsTsEnables(dstStageMask, "vkCmdWaitEvents()", "VUID-vkCmdWaitEvents-dstStageMask-04090", + "VUID-vkCmdWaitEvents-dstStageMask-04091", "VUID-vkCmdWaitEvents-dstStageMask-04095", + "VUID-vkCmdWaitEvents-dstStageMask-04096"); skip |= ValidateCmdQueueFlags(cb_state, "vkCmdWaitEvents()", VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT, "VUID-vkCmdWaitEvents-commandBuffer-cmdpool"); skip |= ValidateCmd(cb_state, CMD_WAITEVENTS, "vkCmdWaitEvents()"); @@ -7058,20 +7051,20 @@ bool CoreChecks::PreCallValidateCmdPipelineBarrier(VkCommandBuffer commandBuffer auto barrier_op_type = ComputeBarrierOperationsType(cb_state, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers); skip |= ValidateStageMasksAgainstQueueCapabilities(cb_state, srcStageMask, dstStageMask, barrier_op_type, - "vkCmdPipelineBarrier", "VUID-vkCmdPipelineBarrier-srcStageMask-01183"); + "vkCmdPipelineBarrier", "VUID-vkCmdPipelineBarrier-srcStageMask-4098"); } skip |= ValidateCmdQueueFlags(cb_state, "vkCmdPipelineBarrier()", VK_QUEUE_TRANSFER_BIT | VK_QUEUE_GRAPHICS_BIT | VK_QUEUE_COMPUTE_BIT, "VUID-vkCmdPipelineBarrier-commandBuffer-cmdpool"); skip |= ValidateCmd(cb_state, CMD_PIPELINEBARRIER, "vkCmdPipelineBarrier()"); skip |= - ValidateStageMaskGsTsEnables(srcStageMask, "vkCmdPipelineBarrier()", "VUID-vkCmdPipelineBarrier-srcStageMask-01168", - "VUID-vkCmdPipelineBarrier-srcStageMask-01170", "VUID-vkCmdPipelineBarrier-srcStageMask-02115", - "VUID-vkCmdPipelineBarrier-srcStageMask-02116"); + ValidateStageMaskGsTsEnables(srcStageMask, "vkCmdPipelineBarrier()", "VUID-vkCmdPipelineBarrier-srcStageMask-04090", + "VUID-vkCmdPipelineBarrier-srcStageMask-04091", "VUID-vkCmdPipelineBarrier-srcStageMask-04095", + "VUID-vkCmdPipelineBarrier-srcStageMask-04096"); skip |= - ValidateStageMaskGsTsEnables(dstStageMask, "vkCmdPipelineBarrier()", "VUID-vkCmdPipelineBarrier-dstStageMask-01169", - "VUID-vkCmdPipelineBarrier-dstStageMask-01171", "VUID-vkCmdPipelineBarrier-dstStageMask-02117", - "VUID-vkCmdPipelineBarrier-dstStageMask-02118"); + ValidateStageMaskGsTsEnables(dstStageMask, "vkCmdPipelineBarrier()", "VUID-vkCmdPipelineBarrier-dstStageMask-04090", + "VUID-vkCmdPipelineBarrier-dstStageMask-04091", "VUID-vkCmdPipelineBarrier-dstStageMask-04095", + "VUID-vkCmdPipelineBarrier-dstStageMask-04096"); if (cb_state->activeRenderPass) { skip |= ValidateRenderPassPipelineBarriers("vkCmdPipelineBarrier()", cb_state, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, @@ -11560,9 +11553,10 @@ bool CoreChecks::ValidateCreateSamplerYcbcrConversion(const char *func_name, if (device_extensions.vk_android_external_memory_android_hardware_buffer) { skip |= ValidateCreateSamplerYcbcrConversionANDROID(func_name, create_info); } else { // Not android hardware buffer - if (VK_FORMAT_UNDEFINED == conversion_format) { - skip |= LogError(device, "VUID-VkSamplerYcbcrConversionCreateInfo-format-01649", - "%s: CreateInfo format type is VK_FORMAT_UNDEFINED.", func_name); + if (FormatIsUNorm(conversion_format) == false) { + skip |= + LogError(device, "VUID-VkSamplerYcbcrConversionCreateInfo-format-04060", + "%s: CreateInfo format type (%s) is not an UNORM format.", func_name, string_VkFormat(conversion_format)); } } diff --git a/layers/core_validation_error_enums.h b/layers/core_validation_error_enums.h index 76cdc4a1d39..e2b0b7c66e6 100644 --- a/layers/core_validation_error_enums.h +++ b/layers/core_validation_error_enums.h @@ -255,6 +255,9 @@ static const char DECORATE_UNUSED *kVUID_Core_CmdBuildAccelNV_NoUpdateMemReqQuer static const char DECORATE_UNUSED *kVUID_Core_CreatInstance_Status = "UNASSIGNED-khronos-validation-createinstance-status-message"; static const char DECORATE_UNUSED *kVUID_Core_CreateInstance_Debug_Warning = "UNASSIGNED-khronos-Validation-debug-build-warning-message"; +static const char DECORATE_UNUSED *kVUID_Core_ImageMemoryBarrier_SharingModeExclusiveSameFamily = "UNASSIGNED-CoreValidation-vkImageMemoryBarrier-sharing-mode-exclusive-same-family"; +static const char DECORATE_UNUSED *kVUID_Core_BufferMemoryBarrier_SharingModeExclusiveSameFamily = "UNASSIGNED-CoreValidation-vkBufferMemoryBarrier-sharing-mode-exclusive-same-family"; + // clang-format on #undef DECORATE_UNUSED diff --git a/layers/generated/chassis.h b/layers/generated/chassis.h index 6bc9d061517..2c5e47330b0 100644 --- a/layers/generated/chassis.h +++ b/layers/generated/chassis.h @@ -4325,9 +4325,9 @@ class ValidationObject { virtual void PostCallRecordCmdBuildAccelerationStructureKHR(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildOffsetInfoKHR* const* ppOffsetInfos) {}; #endif #ifdef VK_ENABLE_BETA_EXTENSIONS - virtual bool PreCallValidateCmdBuildAccelerationStructureIndirectKHR(VkCommandBuffer commandBuffer, const VkAccelerationStructureBuildGeometryInfoKHR* pInfo, VkBuffer indirectBuffer, VkDeviceSize indirectOffset, uint32_t indirectStride) const { return false; }; - virtual void PreCallRecordCmdBuildAccelerationStructureIndirectKHR(VkCommandBuffer commandBuffer, const VkAccelerationStructureBuildGeometryInfoKHR* pInfo, VkBuffer indirectBuffer, VkDeviceSize indirectOffset, uint32_t indirectStride) {}; - virtual void PostCallRecordCmdBuildAccelerationStructureIndirectKHR(VkCommandBuffer commandBuffer, const VkAccelerationStructureBuildGeometryInfoKHR* pInfo, VkBuffer indirectBuffer, VkDeviceSize indirectOffset, uint32_t indirectStride) {}; + virtual bool PreCallValidateCmdBuildAccelerationStructureIndirectKHR(VkCommandBuffer commandBuffer, const VkAccelerationStructureBuildGeometryInfoKHR* pInfo, VkBuffer indirectBuffer, VkDeviceSize indirectOffset, uint32_t indirectStride) const { return false; }; + virtual void PreCallRecordCmdBuildAccelerationStructureIndirectKHR(VkCommandBuffer commandBuffer, const VkAccelerationStructureBuildGeometryInfoKHR* pInfo, VkBuffer indirectBuffer, VkDeviceSize indirectOffset, uint32_t indirectStride) {}; + virtual void PostCallRecordCmdBuildAccelerationStructureIndirectKHR(VkCommandBuffer commandBuffer, const VkAccelerationStructureBuildGeometryInfoKHR* pInfo, VkBuffer indirectBuffer, VkDeviceSize indirectOffset, uint32_t indirectStride) {}; #endif #ifdef VK_ENABLE_BETA_EXTENSIONS virtual bool PreCallValidateBuildAccelerationStructureKHR(VkDevice device, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildOffsetInfoKHR* const* ppOffsetInfos) const { return false; }; diff --git a/layers/generated/command_counter_helper.cpp b/layers/generated/command_counter_helper.cpp index a3097593aa1..1c0685b3b19 100644 --- a/layers/generated/command_counter_helper.cpp +++ b/layers/generated/command_counter_helper.cpp @@ -333,7 +333,7 @@ void CommandCounter::PreCallRecordCmdBuildAccelerationStructureKHR(VkCommandBuff } #endif // VK_ENABLE_BETA_EXTENSIONS #ifdef VK_ENABLE_BETA_EXTENSIONS -void CommandCounter::PreCallRecordCmdBuildAccelerationStructureIndirectKHR(VkCommandBuffer commandBuffer, const VkAccelerationStructureBuildGeometryInfoKHR* pInfo, VkBuffer indirectBuffer, VkDeviceSize indirectOffset, uint32_t indirectStride) { +void CommandCounter::PreCallRecordCmdBuildAccelerationStructureIndirectKHR(VkCommandBuffer commandBuffer, const VkAccelerationStructureBuildGeometryInfoKHR* pInfo, VkBuffer indirectBuffer, VkDeviceSize indirectOffset, uint32_t indirectStride) { coreChecks->IncrementCommandCount(commandBuffer); } #endif // VK_ENABLE_BETA_EXTENSIONS diff --git a/layers/generated/command_counter_helper.h b/layers/generated/command_counter_helper.h index e5e8e8dea50..fea4cca9633 100644 --- a/layers/generated/command_counter_helper.h +++ b/layers/generated/command_counter_helper.h @@ -128,7 +128,7 @@ void PreCallRecordCmdBindPipelineShaderGroupNV(VkCommandBuffer commandBuffer, Vk void PreCallRecordCmdBuildAccelerationStructureKHR(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildOffsetInfoKHR* const* ppOffsetInfos); #endif // VK_ENABLE_BETA_EXTENSIONS #ifdef VK_ENABLE_BETA_EXTENSIONS -void PreCallRecordCmdBuildAccelerationStructureIndirectKHR(VkCommandBuffer commandBuffer, const VkAccelerationStructureBuildGeometryInfoKHR* pInfo, VkBuffer indirectBuffer, VkDeviceSize indirectOffset, uint32_t indirectStride); +void PreCallRecordCmdBuildAccelerationStructureIndirectKHR(VkCommandBuffer commandBuffer, const VkAccelerationStructureBuildGeometryInfoKHR* pInfo, VkBuffer indirectBuffer, VkDeviceSize indirectOffset, uint32_t indirectStride); #endif // VK_ENABLE_BETA_EXTENSIONS #ifdef VK_ENABLE_BETA_EXTENSIONS void PreCallRecordCmdCopyAccelerationStructureKHR(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo); diff --git a/layers/generated/object_tracker.cpp b/layers/generated/object_tracker.cpp index 716402cd0e8..040cfa97b90 100644 --- a/layers/generated/object_tracker.cpp +++ b/layers/generated/object_tracker.cpp @@ -46,11 +46,11 @@ bool ObjectLifetimes::ReportUndestroyedInstanceObjects(VkInstance instance, cons bool ObjectLifetimes::ReportUndestroyedDeviceObjects(VkDevice device, const std::string& error_code) const { bool skip = false; skip |= ReportLeakedDeviceObjects(device, kVulkanObjectTypeCommandBuffer, error_code); + skip |= ReportLeakedDeviceObjects(device, kVulkanObjectTypeBuffer, error_code); + skip |= ReportLeakedDeviceObjects(device, kVulkanObjectTypeImage, error_code); skip |= ReportLeakedDeviceObjects(device, kVulkanObjectTypeSemaphore, error_code); skip |= ReportLeakedDeviceObjects(device, kVulkanObjectTypeFence, error_code); skip |= ReportLeakedDeviceObjects(device, kVulkanObjectTypeDeviceMemory, error_code); - skip |= ReportLeakedDeviceObjects(device, kVulkanObjectTypeBuffer, error_code); - skip |= ReportLeakedDeviceObjects(device, kVulkanObjectTypeImage, error_code); skip |= ReportLeakedDeviceObjects(device, kVulkanObjectTypeEvent, error_code); skip |= ReportLeakedDeviceObjects(device, kVulkanObjectTypeQueryPool, error_code); skip |= ReportLeakedDeviceObjects(device, kVulkanObjectTypeBufferView, error_code); @@ -58,12 +58,12 @@ bool ObjectLifetimes::ReportUndestroyedDeviceObjects(VkDevice device, const std: skip |= ReportLeakedDeviceObjects(device, kVulkanObjectTypeShaderModule, error_code); skip |= ReportLeakedDeviceObjects(device, kVulkanObjectTypePipelineCache, error_code); skip |= ReportLeakedDeviceObjects(device, kVulkanObjectTypePipelineLayout, error_code); - skip |= ReportLeakedDeviceObjects(device, kVulkanObjectTypeRenderPass, error_code); skip |= ReportLeakedDeviceObjects(device, kVulkanObjectTypePipeline, error_code); + skip |= ReportLeakedDeviceObjects(device, kVulkanObjectTypeRenderPass, error_code); skip |= ReportLeakedDeviceObjects(device, kVulkanObjectTypeDescriptorSetLayout, error_code); skip |= ReportLeakedDeviceObjects(device, kVulkanObjectTypeSampler, error_code); - skip |= ReportLeakedDeviceObjects(device, kVulkanObjectTypeDescriptorPool, error_code); skip |= ReportLeakedDeviceObjects(device, kVulkanObjectTypeDescriptorSet, error_code); + skip |= ReportLeakedDeviceObjects(device, kVulkanObjectTypeDescriptorPool, error_code); skip |= ReportLeakedDeviceObjects(device, kVulkanObjectTypeFramebuffer, error_code); skip |= ReportLeakedDeviceObjects(device, kVulkanObjectTypeCommandPool, error_code); skip |= ReportLeakedDeviceObjects(device, kVulkanObjectTypeSamplerYcbcrConversion, error_code); @@ -87,11 +87,11 @@ void ObjectLifetimes::DestroyLeakedInstanceObjects() { } void ObjectLifetimes::DestroyLeakedDeviceObjects() { DestroyUndestroyedObjects(kVulkanObjectTypeCommandBuffer); + DestroyUndestroyedObjects(kVulkanObjectTypeBuffer); + DestroyUndestroyedObjects(kVulkanObjectTypeImage); DestroyUndestroyedObjects(kVulkanObjectTypeSemaphore); DestroyUndestroyedObjects(kVulkanObjectTypeFence); DestroyUndestroyedObjects(kVulkanObjectTypeDeviceMemory); - DestroyUndestroyedObjects(kVulkanObjectTypeBuffer); - DestroyUndestroyedObjects(kVulkanObjectTypeImage); DestroyUndestroyedObjects(kVulkanObjectTypeEvent); DestroyUndestroyedObjects(kVulkanObjectTypeQueryPool); DestroyUndestroyedObjects(kVulkanObjectTypeBufferView); @@ -99,12 +99,12 @@ void ObjectLifetimes::DestroyLeakedDeviceObjects() { DestroyUndestroyedObjects(kVulkanObjectTypeShaderModule); DestroyUndestroyedObjects(kVulkanObjectTypePipelineCache); DestroyUndestroyedObjects(kVulkanObjectTypePipelineLayout); - DestroyUndestroyedObjects(kVulkanObjectTypeRenderPass); DestroyUndestroyedObjects(kVulkanObjectTypePipeline); + DestroyUndestroyedObjects(kVulkanObjectTypeRenderPass); DestroyUndestroyedObjects(kVulkanObjectTypeDescriptorSetLayout); DestroyUndestroyedObjects(kVulkanObjectTypeSampler); - DestroyUndestroyedObjects(kVulkanObjectTypeDescriptorPool); DestroyUndestroyedObjects(kVulkanObjectTypeDescriptorSet); + DestroyUndestroyedObjects(kVulkanObjectTypeDescriptorPool); DestroyUndestroyedObjects(kVulkanObjectTypeFramebuffer); DestroyUndestroyedObjects(kVulkanObjectTypeCommandPool); DestroyUndestroyedObjects(kVulkanObjectTypeSamplerYcbcrConversion); @@ -5499,8 +5499,8 @@ bool ObjectLifetimes::PreCallValidateDestroyPrivateDataSlotEXT( VkPrivateDataSlotEXT privateDataSlot, const VkAllocationCallbacks* pAllocator) const { bool skip = false; - skip |= ValidateObject(device, kVulkanObjectTypeDevice, false, kVUIDUndefined, kVUIDUndefined); - skip |= ValidateObject(privateDataSlot, kVulkanObjectTypePrivateDataSlotEXT, true, kVUIDUndefined, kVUIDUndefined); + skip |= ValidateObject(device, kVulkanObjectTypeDevice, false, "VUID-vkDestroyPrivateDataSlotEXT-device-parameter", kVUIDUndefined); + skip |= ValidateObject(privateDataSlot, kVulkanObjectTypePrivateDataSlotEXT, true, "VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-parameter", "VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-parent"); skip |= ValidateDestroyObject(privateDataSlot, kVulkanObjectTypePrivateDataSlotEXT, pAllocator, kVUIDUndefined, kVUIDUndefined); return skip; diff --git a/layers/generated/parameter_validation.cpp b/layers/generated/parameter_validation.cpp index 82e5cd2d7ad..4a85e3b7e0d 100644 --- a/layers/generated/parameter_validation.cpp +++ b/layers/generated/parameter_validation.cpp @@ -27,7 +27,7 @@ #include "stateless_validation.h" -const uint32_t GeneratedVulkanHeaderVersion = 141; +const uint32_t GeneratedVulkanHeaderVersion = 144; const DECORATE_UNUSED VkAccessFlags AllVkAccessFlagBits = VK_ACCESS_INDIRECT_COMMAND_READ_BIT|VK_ACCESS_INDEX_READ_BIT|VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT|VK_ACCESS_UNIFORM_READ_BIT|VK_ACCESS_INPUT_ATTACHMENT_READ_BIT|VK_ACCESS_SHADER_READ_BIT|VK_ACCESS_SHADER_WRITE_BIT|VK_ACCESS_COLOR_ATTACHMENT_READ_BIT|VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT|VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT|VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT|VK_ACCESS_TRANSFER_READ_BIT|VK_ACCESS_TRANSFER_WRITE_BIT|VK_ACCESS_HOST_READ_BIT|VK_ACCESS_HOST_WRITE_BIT|VK_ACCESS_MEMORY_READ_BIT|VK_ACCESS_MEMORY_WRITE_BIT|VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT|VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT|VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT|VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT|VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT|VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR|VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR|VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV|VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV|VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV|VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT|VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV|VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV; const DECORATE_UNUSED VkAttachmentDescriptionFlags AllVkAttachmentDescriptionFlagBits = VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT; @@ -120,33 +120,35 @@ const DECORATE_UNUSED VkIndirectCommandsLayoutUsageFlagsNV AllVkIndirectCommands const DECORATE_UNUSED VkIndirectStateFlagsNV AllVkIndirectStateFlagBitsNV = VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV; const DECORATE_UNUSED VkDeviceDiagnosticsConfigFlagsNV AllVkDeviceDiagnosticsConfigFlagBitsNV = VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV|VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV|VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV; -const std::vector AllVkPipelineCacheHeaderVersionEnums = {VK_PIPELINE_CACHE_HEADER_VERSION_ONE, }; const std::vector AllVkResultEnums = {VK_SUCCESS, VK_NOT_READY, VK_TIMEOUT, VK_EVENT_SET, VK_EVENT_RESET, VK_INCOMPLETE, VK_ERROR_OUT_OF_HOST_MEMORY, VK_ERROR_OUT_OF_DEVICE_MEMORY, VK_ERROR_INITIALIZATION_FAILED, VK_ERROR_DEVICE_LOST, VK_ERROR_MEMORY_MAP_FAILED, VK_ERROR_LAYER_NOT_PRESENT, VK_ERROR_EXTENSION_NOT_PRESENT, VK_ERROR_FEATURE_NOT_PRESENT, VK_ERROR_INCOMPATIBLE_DRIVER, VK_ERROR_TOO_MANY_OBJECTS, VK_ERROR_FORMAT_NOT_SUPPORTED, VK_ERROR_FRAGMENTED_POOL, VK_ERROR_UNKNOWN, VK_ERROR_OUT_OF_POOL_MEMORY, VK_ERROR_INVALID_EXTERNAL_HANDLE, VK_ERROR_FRAGMENTATION, VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS, VK_ERROR_SURFACE_LOST_KHR, VK_ERROR_NATIVE_WINDOW_IN_USE_KHR, VK_SUBOPTIMAL_KHR, VK_ERROR_OUT_OF_DATE_KHR, VK_ERROR_INCOMPATIBLE_DISPLAY_KHR, VK_ERROR_VALIDATION_FAILED_EXT, VK_ERROR_INVALID_SHADER_NV, VK_ERROR_OUT_OF_POOL_MEMORY_KHR, VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR, VK_ERROR_INCOMPATIBLE_VERSION_KHR, VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT, VK_ERROR_FRAGMENTATION_EXT, VK_ERROR_NOT_PERMITTED_EXT, VK_ERROR_INVALID_DEVICE_ADDRESS_EXT, VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT, VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR, VK_THREAD_IDLE_KHR, VK_THREAD_DONE_KHR, VK_OPERATION_DEFERRED_KHR, VK_OPERATION_NOT_DEFERRED_KHR, VK_PIPELINE_COMPILE_REQUIRED_EXT, VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT, }; +const std::vector AllVkImageLayoutEnums = {VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_GENERAL, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_IMAGE_LAYOUT_PREINITIALIZED, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR, VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR, VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV, VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT, VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR, VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR, }; +const std::vector AllVkObjectTypeEnums = {VK_OBJECT_TYPE_UNKNOWN, VK_OBJECT_TYPE_INSTANCE, VK_OBJECT_TYPE_PHYSICAL_DEVICE, VK_OBJECT_TYPE_DEVICE, VK_OBJECT_TYPE_QUEUE, VK_OBJECT_TYPE_SEMAPHORE, VK_OBJECT_TYPE_COMMAND_BUFFER, VK_OBJECT_TYPE_FENCE, VK_OBJECT_TYPE_DEVICE_MEMORY, VK_OBJECT_TYPE_BUFFER, VK_OBJECT_TYPE_IMAGE, VK_OBJECT_TYPE_EVENT, VK_OBJECT_TYPE_QUERY_POOL, VK_OBJECT_TYPE_BUFFER_VIEW, VK_OBJECT_TYPE_IMAGE_VIEW, VK_OBJECT_TYPE_SHADER_MODULE, VK_OBJECT_TYPE_PIPELINE_CACHE, VK_OBJECT_TYPE_PIPELINE_LAYOUT, VK_OBJECT_TYPE_RENDER_PASS, VK_OBJECT_TYPE_PIPELINE, VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT, VK_OBJECT_TYPE_SAMPLER, VK_OBJECT_TYPE_DESCRIPTOR_POOL, VK_OBJECT_TYPE_DESCRIPTOR_SET, VK_OBJECT_TYPE_FRAMEBUFFER, VK_OBJECT_TYPE_COMMAND_POOL, VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION, VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE, VK_OBJECT_TYPE_SURFACE_KHR, VK_OBJECT_TYPE_SWAPCHAIN_KHR, VK_OBJECT_TYPE_DISPLAY_KHR, VK_OBJECT_TYPE_DISPLAY_MODE_KHR, VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT, VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR, VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT, VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR, VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR, VK_OBJECT_TYPE_VALIDATION_CACHE_EXT, VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV, VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL, VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR, VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV, VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT, }; +const std::vector AllVkVendorIdEnums = {VK_VENDOR_ID_VIV, VK_VENDOR_ID_VSI, VK_VENDOR_ID_KAZAN, VK_VENDOR_ID_CODEPLAY, VK_VENDOR_ID_MESA, }; +const std::vector AllVkPipelineCacheHeaderVersionEnums = {VK_PIPELINE_CACHE_HEADER_VERSION_ONE, }; const std::vector AllVkSystemAllocationScopeEnums = {VK_SYSTEM_ALLOCATION_SCOPE_COMMAND, VK_SYSTEM_ALLOCATION_SCOPE_OBJECT, VK_SYSTEM_ALLOCATION_SCOPE_CACHE, VK_SYSTEM_ALLOCATION_SCOPE_DEVICE, VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE, }; const std::vector AllVkInternalAllocationTypeEnums = {VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE, }; const std::vector AllVkFormatEnums = {VK_FORMAT_UNDEFINED, VK_FORMAT_R4G4_UNORM_PACK8, VK_FORMAT_R4G4B4A4_UNORM_PACK16, VK_FORMAT_B4G4R4A4_UNORM_PACK16, VK_FORMAT_R5G6B5_UNORM_PACK16, VK_FORMAT_B5G6R5_UNORM_PACK16, VK_FORMAT_R5G5B5A1_UNORM_PACK16, VK_FORMAT_B5G5R5A1_UNORM_PACK16, VK_FORMAT_A1R5G5B5_UNORM_PACK16, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_SNORM, VK_FORMAT_R8_USCALED, VK_FORMAT_R8_SSCALED, VK_FORMAT_R8_UINT, VK_FORMAT_R8_SINT, VK_FORMAT_R8_SRGB, VK_FORMAT_R8G8_UNORM, VK_FORMAT_R8G8_SNORM, VK_FORMAT_R8G8_USCALED, VK_FORMAT_R8G8_SSCALED, VK_FORMAT_R8G8_UINT, VK_FORMAT_R8G8_SINT, VK_FORMAT_R8G8_SRGB, VK_FORMAT_R8G8B8_UNORM, VK_FORMAT_R8G8B8_SNORM, VK_FORMAT_R8G8B8_USCALED, VK_FORMAT_R8G8B8_SSCALED, VK_FORMAT_R8G8B8_UINT, VK_FORMAT_R8G8B8_SINT, VK_FORMAT_R8G8B8_SRGB, VK_FORMAT_B8G8R8_UNORM, VK_FORMAT_B8G8R8_SNORM, VK_FORMAT_B8G8R8_USCALED, VK_FORMAT_B8G8R8_SSCALED, VK_FORMAT_B8G8R8_UINT, VK_FORMAT_B8G8R8_SINT, VK_FORMAT_B8G8R8_SRGB, VK_FORMAT_R8G8B8A8_UNORM, VK_FORMAT_R8G8B8A8_SNORM, VK_FORMAT_R8G8B8A8_USCALED, VK_FORMAT_R8G8B8A8_SSCALED, VK_FORMAT_R8G8B8A8_UINT, VK_FORMAT_R8G8B8A8_SINT, VK_FORMAT_R8G8B8A8_SRGB, VK_FORMAT_B8G8R8A8_UNORM, VK_FORMAT_B8G8R8A8_SNORM, VK_FORMAT_B8G8R8A8_USCALED, VK_FORMAT_B8G8R8A8_SSCALED, VK_FORMAT_B8G8R8A8_UINT, VK_FORMAT_B8G8R8A8_SINT, VK_FORMAT_B8G8R8A8_SRGB, VK_FORMAT_A8B8G8R8_UNORM_PACK32, VK_FORMAT_A8B8G8R8_SNORM_PACK32, VK_FORMAT_A8B8G8R8_USCALED_PACK32, VK_FORMAT_A8B8G8R8_SSCALED_PACK32, VK_FORMAT_A8B8G8R8_UINT_PACK32, VK_FORMAT_A8B8G8R8_SINT_PACK32, VK_FORMAT_A8B8G8R8_SRGB_PACK32, VK_FORMAT_A2R10G10B10_UNORM_PACK32, VK_FORMAT_A2R10G10B10_SNORM_PACK32, VK_FORMAT_A2R10G10B10_USCALED_PACK32, VK_FORMAT_A2R10G10B10_SSCALED_PACK32, VK_FORMAT_A2R10G10B10_UINT_PACK32, VK_FORMAT_A2R10G10B10_SINT_PACK32, VK_FORMAT_A2B10G10R10_UNORM_PACK32, VK_FORMAT_A2B10G10R10_SNORM_PACK32, VK_FORMAT_A2B10G10R10_USCALED_PACK32, VK_FORMAT_A2B10G10R10_SSCALED_PACK32, VK_FORMAT_A2B10G10R10_UINT_PACK32, VK_FORMAT_A2B10G10R10_SINT_PACK32, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_SNORM, VK_FORMAT_R16_USCALED, VK_FORMAT_R16_SSCALED, VK_FORMAT_R16_UINT, VK_FORMAT_R16_SINT, VK_FORMAT_R16_SFLOAT, VK_FORMAT_R16G16_UNORM, VK_FORMAT_R16G16_SNORM, VK_FORMAT_R16G16_USCALED, VK_FORMAT_R16G16_SSCALED, VK_FORMAT_R16G16_UINT, VK_FORMAT_R16G16_SINT, VK_FORMAT_R16G16_SFLOAT, VK_FORMAT_R16G16B16_UNORM, VK_FORMAT_R16G16B16_SNORM, VK_FORMAT_R16G16B16_USCALED, VK_FORMAT_R16G16B16_SSCALED, VK_FORMAT_R16G16B16_UINT, VK_FORMAT_R16G16B16_SINT, VK_FORMAT_R16G16B16_SFLOAT, VK_FORMAT_R16G16B16A16_UNORM, VK_FORMAT_R16G16B16A16_SNORM, VK_FORMAT_R16G16B16A16_USCALED, VK_FORMAT_R16G16B16A16_SSCALED, VK_FORMAT_R16G16B16A16_UINT, VK_FORMAT_R16G16B16A16_SINT, VK_FORMAT_R16G16B16A16_SFLOAT, VK_FORMAT_R32_UINT, VK_FORMAT_R32_SINT, VK_FORMAT_R32_SFLOAT, VK_FORMAT_R32G32_UINT, VK_FORMAT_R32G32_SINT, VK_FORMAT_R32G32_SFLOAT, VK_FORMAT_R32G32B32_UINT, VK_FORMAT_R32G32B32_SINT, VK_FORMAT_R32G32B32_SFLOAT, VK_FORMAT_R32G32B32A32_UINT, VK_FORMAT_R32G32B32A32_SINT, VK_FORMAT_R32G32B32A32_SFLOAT, VK_FORMAT_R64_UINT, VK_FORMAT_R64_SINT, VK_FORMAT_R64_SFLOAT, VK_FORMAT_R64G64_UINT, VK_FORMAT_R64G64_SINT, VK_FORMAT_R64G64_SFLOAT, VK_FORMAT_R64G64B64_UINT, VK_FORMAT_R64G64B64_SINT, VK_FORMAT_R64G64B64_SFLOAT, VK_FORMAT_R64G64B64A64_UINT, VK_FORMAT_R64G64B64A64_SINT, VK_FORMAT_R64G64B64A64_SFLOAT, VK_FORMAT_B10G11R11_UFLOAT_PACK32, VK_FORMAT_E5B9G9R9_UFLOAT_PACK32, VK_FORMAT_D16_UNORM, VK_FORMAT_X8_D24_UNORM_PACK32, VK_FORMAT_D32_SFLOAT, VK_FORMAT_S8_UINT, VK_FORMAT_D16_UNORM_S8_UINT, VK_FORMAT_D24_UNORM_S8_UINT, VK_FORMAT_D32_SFLOAT_S8_UINT, VK_FORMAT_BC1_RGB_UNORM_BLOCK, VK_FORMAT_BC1_RGB_SRGB_BLOCK, VK_FORMAT_BC1_RGBA_UNORM_BLOCK, VK_FORMAT_BC1_RGBA_SRGB_BLOCK, VK_FORMAT_BC2_UNORM_BLOCK, VK_FORMAT_BC2_SRGB_BLOCK, VK_FORMAT_BC3_UNORM_BLOCK, VK_FORMAT_BC3_SRGB_BLOCK, VK_FORMAT_BC4_UNORM_BLOCK, VK_FORMAT_BC4_SNORM_BLOCK, VK_FORMAT_BC5_UNORM_BLOCK, VK_FORMAT_BC5_SNORM_BLOCK, VK_FORMAT_BC6H_UFLOAT_BLOCK, VK_FORMAT_BC6H_SFLOAT_BLOCK, VK_FORMAT_BC7_UNORM_BLOCK, VK_FORMAT_BC7_SRGB_BLOCK, VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK, VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK, VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK, VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK, VK_FORMAT_EAC_R11_UNORM_BLOCK, VK_FORMAT_EAC_R11_SNORM_BLOCK, VK_FORMAT_EAC_R11G11_UNORM_BLOCK, VK_FORMAT_EAC_R11G11_SNORM_BLOCK, VK_FORMAT_ASTC_4x4_UNORM_BLOCK, VK_FORMAT_ASTC_4x4_SRGB_BLOCK, VK_FORMAT_ASTC_5x4_UNORM_BLOCK, VK_FORMAT_ASTC_5x4_SRGB_BLOCK, VK_FORMAT_ASTC_5x5_UNORM_BLOCK, VK_FORMAT_ASTC_5x5_SRGB_BLOCK, VK_FORMAT_ASTC_6x5_UNORM_BLOCK, VK_FORMAT_ASTC_6x5_SRGB_BLOCK, VK_FORMAT_ASTC_6x6_UNORM_BLOCK, VK_FORMAT_ASTC_6x6_SRGB_BLOCK, VK_FORMAT_ASTC_8x5_UNORM_BLOCK, VK_FORMAT_ASTC_8x5_SRGB_BLOCK, VK_FORMAT_ASTC_8x6_UNORM_BLOCK, VK_FORMAT_ASTC_8x6_SRGB_BLOCK, VK_FORMAT_ASTC_8x8_UNORM_BLOCK, VK_FORMAT_ASTC_8x8_SRGB_BLOCK, VK_FORMAT_ASTC_10x5_UNORM_BLOCK, VK_FORMAT_ASTC_10x5_SRGB_BLOCK, VK_FORMAT_ASTC_10x6_UNORM_BLOCK, VK_FORMAT_ASTC_10x6_SRGB_BLOCK, VK_FORMAT_ASTC_10x8_UNORM_BLOCK, VK_FORMAT_ASTC_10x8_SRGB_BLOCK, VK_FORMAT_ASTC_10x10_UNORM_BLOCK, VK_FORMAT_ASTC_10x10_SRGB_BLOCK, VK_FORMAT_ASTC_12x10_UNORM_BLOCK, VK_FORMAT_ASTC_12x10_SRGB_BLOCK, VK_FORMAT_ASTC_12x12_UNORM_BLOCK, VK_FORMAT_ASTC_12x12_SRGB_BLOCK, VK_FORMAT_G8B8G8R8_422_UNORM, VK_FORMAT_B8G8R8G8_422_UNORM, VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM, VK_FORMAT_G8_B8R8_2PLANE_420_UNORM, VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM, VK_FORMAT_G8_B8R8_2PLANE_422_UNORM, VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM, VK_FORMAT_R10X6_UNORM_PACK16, VK_FORMAT_R10X6G10X6_UNORM_2PACK16, VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16, VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16, VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16, VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16, VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16, VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16, VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16, VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16, VK_FORMAT_R12X4_UNORM_PACK16, VK_FORMAT_R12X4G12X4_UNORM_2PACK16, VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16, VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16, VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16, VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16, VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16, VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16, VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16, VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16, VK_FORMAT_G16B16G16R16_422_UNORM, VK_FORMAT_B16G16R16G16_422_UNORM, VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM, VK_FORMAT_G16_B16R16_2PLANE_420_UNORM, VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM, VK_FORMAT_G16_B16R16_2PLANE_422_UNORM, VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM, VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG, VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG, VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG, VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG, VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG, VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG, VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG, VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG, VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT, VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT, VK_FORMAT_G8B8G8R8_422_UNORM_KHR, VK_FORMAT_B8G8R8G8_422_UNORM_KHR, VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR, VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR, VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR, VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR, VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR, VK_FORMAT_R10X6_UNORM_PACK16_KHR, VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR, VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR, VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR, VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR, VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR, VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR, VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR, VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR, VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR, VK_FORMAT_R12X4_UNORM_PACK16_KHR, VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR, VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR, VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR, VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR, VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR, VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR, VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR, VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR, VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR, VK_FORMAT_G16B16G16R16_422_UNORM_KHR, VK_FORMAT_B16G16R16G16_422_UNORM_KHR, VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR, VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR, VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR, VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR, VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR, }; -const std::vector AllVkImageTypeEnums = {VK_IMAGE_TYPE_1D, VK_IMAGE_TYPE_2D, VK_IMAGE_TYPE_3D, }; const std::vector AllVkImageTilingEnums = {VK_IMAGE_TILING_OPTIMAL, VK_IMAGE_TILING_LINEAR, VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT, }; +const std::vector AllVkImageTypeEnums = {VK_IMAGE_TYPE_1D, VK_IMAGE_TYPE_2D, VK_IMAGE_TYPE_3D, }; const std::vector AllVkPhysicalDeviceTypeEnums = {VK_PHYSICAL_DEVICE_TYPE_OTHER, VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU, VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU, VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU, VK_PHYSICAL_DEVICE_TYPE_CPU, }; const std::vector AllVkQueryTypeEnums = {VK_QUERY_TYPE_OCCLUSION, VK_QUERY_TYPE_PIPELINE_STATISTICS, VK_QUERY_TYPE_TIMESTAMP, VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT, VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR, VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR, VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR, VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV, VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL, }; const std::vector AllVkSharingModeEnums = {VK_SHARING_MODE_EXCLUSIVE, VK_SHARING_MODE_CONCURRENT, }; -const std::vector AllVkImageLayoutEnums = {VK_IMAGE_LAYOUT_UNDEFINED, VK_IMAGE_LAYOUT_GENERAL, VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_IMAGE_LAYOUT_PREINITIALIZED, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR, VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR, VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV, VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT, VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR, VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR, VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR, }; -const std::vector AllVkImageViewTypeEnums = {VK_IMAGE_VIEW_TYPE_1D, VK_IMAGE_VIEW_TYPE_2D, VK_IMAGE_VIEW_TYPE_3D, VK_IMAGE_VIEW_TYPE_CUBE, VK_IMAGE_VIEW_TYPE_1D_ARRAY, VK_IMAGE_VIEW_TYPE_2D_ARRAY, VK_IMAGE_VIEW_TYPE_CUBE_ARRAY, }; const std::vector AllVkComponentSwizzleEnums = {VK_COMPONENT_SWIZZLE_IDENTITY, VK_COMPONENT_SWIZZLE_ZERO, VK_COMPONENT_SWIZZLE_ONE, VK_COMPONENT_SWIZZLE_R, VK_COMPONENT_SWIZZLE_G, VK_COMPONENT_SWIZZLE_B, VK_COMPONENT_SWIZZLE_A, }; +const std::vector AllVkImageViewTypeEnums = {VK_IMAGE_VIEW_TYPE_1D, VK_IMAGE_VIEW_TYPE_2D, VK_IMAGE_VIEW_TYPE_3D, VK_IMAGE_VIEW_TYPE_CUBE, VK_IMAGE_VIEW_TYPE_1D_ARRAY, VK_IMAGE_VIEW_TYPE_2D_ARRAY, VK_IMAGE_VIEW_TYPE_CUBE_ARRAY, }; +const std::vector AllVkBlendFactorEnums = {VK_BLEND_FACTOR_ZERO, VK_BLEND_FACTOR_ONE, VK_BLEND_FACTOR_SRC_COLOR, VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR, VK_BLEND_FACTOR_DST_COLOR, VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR, VK_BLEND_FACTOR_SRC_ALPHA, VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA, VK_BLEND_FACTOR_DST_ALPHA, VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA, VK_BLEND_FACTOR_CONSTANT_COLOR, VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR, VK_BLEND_FACTOR_CONSTANT_ALPHA, VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA, VK_BLEND_FACTOR_SRC_ALPHA_SATURATE, VK_BLEND_FACTOR_SRC1_COLOR, VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, VK_BLEND_FACTOR_SRC1_ALPHA, VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA, }; +const std::vector AllVkBlendOpEnums = {VK_BLEND_OP_ADD, VK_BLEND_OP_SUBTRACT, VK_BLEND_OP_REVERSE_SUBTRACT, VK_BLEND_OP_MIN, VK_BLEND_OP_MAX, VK_BLEND_OP_ZERO_EXT, VK_BLEND_OP_SRC_EXT, VK_BLEND_OP_DST_EXT, VK_BLEND_OP_SRC_OVER_EXT, VK_BLEND_OP_DST_OVER_EXT, VK_BLEND_OP_SRC_IN_EXT, VK_BLEND_OP_DST_IN_EXT, VK_BLEND_OP_SRC_OUT_EXT, VK_BLEND_OP_DST_OUT_EXT, VK_BLEND_OP_SRC_ATOP_EXT, VK_BLEND_OP_DST_ATOP_EXT, VK_BLEND_OP_XOR_EXT, VK_BLEND_OP_MULTIPLY_EXT, VK_BLEND_OP_SCREEN_EXT, VK_BLEND_OP_OVERLAY_EXT, VK_BLEND_OP_DARKEN_EXT, VK_BLEND_OP_LIGHTEN_EXT, VK_BLEND_OP_COLORDODGE_EXT, VK_BLEND_OP_COLORBURN_EXT, VK_BLEND_OP_HARDLIGHT_EXT, VK_BLEND_OP_SOFTLIGHT_EXT, VK_BLEND_OP_DIFFERENCE_EXT, VK_BLEND_OP_EXCLUSION_EXT, VK_BLEND_OP_INVERT_EXT, VK_BLEND_OP_INVERT_RGB_EXT, VK_BLEND_OP_LINEARDODGE_EXT, VK_BLEND_OP_LINEARBURN_EXT, VK_BLEND_OP_VIVIDLIGHT_EXT, VK_BLEND_OP_LINEARLIGHT_EXT, VK_BLEND_OP_PINLIGHT_EXT, VK_BLEND_OP_HARDMIX_EXT, VK_BLEND_OP_HSL_HUE_EXT, VK_BLEND_OP_HSL_SATURATION_EXT, VK_BLEND_OP_HSL_COLOR_EXT, VK_BLEND_OP_HSL_LUMINOSITY_EXT, VK_BLEND_OP_PLUS_EXT, VK_BLEND_OP_PLUS_CLAMPED_EXT, VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT, VK_BLEND_OP_PLUS_DARKER_EXT, VK_BLEND_OP_MINUS_EXT, VK_BLEND_OP_MINUS_CLAMPED_EXT, VK_BLEND_OP_CONTRAST_EXT, VK_BLEND_OP_INVERT_OVG_EXT, VK_BLEND_OP_RED_EXT, VK_BLEND_OP_GREEN_EXT, VK_BLEND_OP_BLUE_EXT, }; +const std::vector AllVkCompareOpEnums = {VK_COMPARE_OP_NEVER, VK_COMPARE_OP_LESS, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_ALWAYS, }; +const std::vector AllVkDynamicStateEnums = {VK_DYNAMIC_STATE_VIEWPORT, VK_DYNAMIC_STATE_SCISSOR, VK_DYNAMIC_STATE_LINE_WIDTH, VK_DYNAMIC_STATE_DEPTH_BIAS, VK_DYNAMIC_STATE_BLEND_CONSTANTS, VK_DYNAMIC_STATE_DEPTH_BOUNDS, VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK, VK_DYNAMIC_STATE_STENCIL_WRITE_MASK, VK_DYNAMIC_STATE_STENCIL_REFERENCE, VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV, VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT, VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT, VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV, VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV, VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV, VK_DYNAMIC_STATE_LINE_STIPPLE_EXT, }; +const std::vector AllVkFrontFaceEnums = {VK_FRONT_FACE_COUNTER_CLOCKWISE, VK_FRONT_FACE_CLOCKWISE, }; const std::vector AllVkVertexInputRateEnums = {VK_VERTEX_INPUT_RATE_VERTEX, VK_VERTEX_INPUT_RATE_INSTANCE, }; const std::vector AllVkPrimitiveTopologyEnums = {VK_PRIMITIVE_TOPOLOGY_POINT_LIST, VK_PRIMITIVE_TOPOLOGY_LINE_LIST, VK_PRIMITIVE_TOPOLOGY_LINE_STRIP, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN, VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY, VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY, VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY, VK_PRIMITIVE_TOPOLOGY_PATCH_LIST, }; const std::vector AllVkPolygonModeEnums = {VK_POLYGON_MODE_FILL, VK_POLYGON_MODE_LINE, VK_POLYGON_MODE_POINT, VK_POLYGON_MODE_FILL_RECTANGLE_NV, }; -const std::vector AllVkFrontFaceEnums = {VK_FRONT_FACE_COUNTER_CLOCKWISE, VK_FRONT_FACE_CLOCKWISE, }; -const std::vector AllVkCompareOpEnums = {VK_COMPARE_OP_NEVER, VK_COMPARE_OP_LESS, VK_COMPARE_OP_EQUAL, VK_COMPARE_OP_LESS_OR_EQUAL, VK_COMPARE_OP_GREATER, VK_COMPARE_OP_NOT_EQUAL, VK_COMPARE_OP_GREATER_OR_EQUAL, VK_COMPARE_OP_ALWAYS, }; const std::vector AllVkStencilOpEnums = {VK_STENCIL_OP_KEEP, VK_STENCIL_OP_ZERO, VK_STENCIL_OP_REPLACE, VK_STENCIL_OP_INCREMENT_AND_CLAMP, VK_STENCIL_OP_DECREMENT_AND_CLAMP, VK_STENCIL_OP_INVERT, VK_STENCIL_OP_INCREMENT_AND_WRAP, VK_STENCIL_OP_DECREMENT_AND_WRAP, }; const std::vector AllVkLogicOpEnums = {VK_LOGIC_OP_CLEAR, VK_LOGIC_OP_AND, VK_LOGIC_OP_AND_REVERSE, VK_LOGIC_OP_COPY, VK_LOGIC_OP_AND_INVERTED, VK_LOGIC_OP_NO_OP, VK_LOGIC_OP_XOR, VK_LOGIC_OP_OR, VK_LOGIC_OP_NOR, VK_LOGIC_OP_EQUIVALENT, VK_LOGIC_OP_INVERT, VK_LOGIC_OP_OR_REVERSE, VK_LOGIC_OP_COPY_INVERTED, VK_LOGIC_OP_OR_INVERTED, VK_LOGIC_OP_NAND, VK_LOGIC_OP_SET, }; -const std::vector AllVkBlendFactorEnums = {VK_BLEND_FACTOR_ZERO, VK_BLEND_FACTOR_ONE, VK_BLEND_FACTOR_SRC_COLOR, VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR, VK_BLEND_FACTOR_DST_COLOR, VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR, VK_BLEND_FACTOR_SRC_ALPHA, VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA, VK_BLEND_FACTOR_DST_ALPHA, VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA, VK_BLEND_FACTOR_CONSTANT_COLOR, VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR, VK_BLEND_FACTOR_CONSTANT_ALPHA, VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA, VK_BLEND_FACTOR_SRC_ALPHA_SATURATE, VK_BLEND_FACTOR_SRC1_COLOR, VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR, VK_BLEND_FACTOR_SRC1_ALPHA, VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA, }; -const std::vector AllVkBlendOpEnums = {VK_BLEND_OP_ADD, VK_BLEND_OP_SUBTRACT, VK_BLEND_OP_REVERSE_SUBTRACT, VK_BLEND_OP_MIN, VK_BLEND_OP_MAX, VK_BLEND_OP_ZERO_EXT, VK_BLEND_OP_SRC_EXT, VK_BLEND_OP_DST_EXT, VK_BLEND_OP_SRC_OVER_EXT, VK_BLEND_OP_DST_OVER_EXT, VK_BLEND_OP_SRC_IN_EXT, VK_BLEND_OP_DST_IN_EXT, VK_BLEND_OP_SRC_OUT_EXT, VK_BLEND_OP_DST_OUT_EXT, VK_BLEND_OP_SRC_ATOP_EXT, VK_BLEND_OP_DST_ATOP_EXT, VK_BLEND_OP_XOR_EXT, VK_BLEND_OP_MULTIPLY_EXT, VK_BLEND_OP_SCREEN_EXT, VK_BLEND_OP_OVERLAY_EXT, VK_BLEND_OP_DARKEN_EXT, VK_BLEND_OP_LIGHTEN_EXT, VK_BLEND_OP_COLORDODGE_EXT, VK_BLEND_OP_COLORBURN_EXT, VK_BLEND_OP_HARDLIGHT_EXT, VK_BLEND_OP_SOFTLIGHT_EXT, VK_BLEND_OP_DIFFERENCE_EXT, VK_BLEND_OP_EXCLUSION_EXT, VK_BLEND_OP_INVERT_EXT, VK_BLEND_OP_INVERT_RGB_EXT, VK_BLEND_OP_LINEARDODGE_EXT, VK_BLEND_OP_LINEARBURN_EXT, VK_BLEND_OP_VIVIDLIGHT_EXT, VK_BLEND_OP_LINEARLIGHT_EXT, VK_BLEND_OP_PINLIGHT_EXT, VK_BLEND_OP_HARDMIX_EXT, VK_BLEND_OP_HSL_HUE_EXT, VK_BLEND_OP_HSL_SATURATION_EXT, VK_BLEND_OP_HSL_COLOR_EXT, VK_BLEND_OP_HSL_LUMINOSITY_EXT, VK_BLEND_OP_PLUS_EXT, VK_BLEND_OP_PLUS_CLAMPED_EXT, VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT, VK_BLEND_OP_PLUS_DARKER_EXT, VK_BLEND_OP_MINUS_EXT, VK_BLEND_OP_MINUS_CLAMPED_EXT, VK_BLEND_OP_CONTRAST_EXT, VK_BLEND_OP_INVERT_OVG_EXT, VK_BLEND_OP_RED_EXT, VK_BLEND_OP_GREEN_EXT, VK_BLEND_OP_BLUE_EXT, }; -const std::vector AllVkDynamicStateEnums = {VK_DYNAMIC_STATE_VIEWPORT, VK_DYNAMIC_STATE_SCISSOR, VK_DYNAMIC_STATE_LINE_WIDTH, VK_DYNAMIC_STATE_DEPTH_BIAS, VK_DYNAMIC_STATE_BLEND_CONSTANTS, VK_DYNAMIC_STATE_DEPTH_BOUNDS, VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK, VK_DYNAMIC_STATE_STENCIL_WRITE_MASK, VK_DYNAMIC_STATE_STENCIL_REFERENCE, VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV, VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT, VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT, VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV, VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV, VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV, VK_DYNAMIC_STATE_LINE_STIPPLE_EXT, }; +const std::vector AllVkBorderColorEnums = {VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK, VK_BORDER_COLOR_INT_TRANSPARENT_BLACK, VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK, VK_BORDER_COLOR_INT_OPAQUE_BLACK, VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE, VK_BORDER_COLOR_INT_OPAQUE_WHITE, VK_BORDER_COLOR_FLOAT_CUSTOM_EXT, VK_BORDER_COLOR_INT_CUSTOM_EXT, }; const std::vector AllVkFilterEnums = {VK_FILTER_NEAREST, VK_FILTER_LINEAR, VK_FILTER_CUBIC_IMG, VK_FILTER_CUBIC_EXT, }; -const std::vector AllVkSamplerMipmapModeEnums = {VK_SAMPLER_MIPMAP_MODE_NEAREST, VK_SAMPLER_MIPMAP_MODE_LINEAR, }; const std::vector AllVkSamplerAddressModeEnums = {VK_SAMPLER_ADDRESS_MODE_REPEAT, VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER, VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR, }; -const std::vector AllVkBorderColorEnums = {VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK, VK_BORDER_COLOR_INT_TRANSPARENT_BLACK, VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK, VK_BORDER_COLOR_INT_OPAQUE_BLACK, VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE, VK_BORDER_COLOR_INT_OPAQUE_WHITE, VK_BORDER_COLOR_FLOAT_CUSTOM_EXT, VK_BORDER_COLOR_INT_CUSTOM_EXT, }; +const std::vector AllVkSamplerMipmapModeEnums = {VK_SAMPLER_MIPMAP_MODE_NEAREST, VK_SAMPLER_MIPMAP_MODE_LINEAR, }; const std::vector AllVkDescriptorTypeEnums = {VK_DESCRIPTOR_TYPE_SAMPLER, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE, VK_DESCRIPTOR_TYPE_STORAGE_IMAGE, VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER, VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC, VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT, VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT, VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV, }; const std::vector AllVkAttachmentLoadOpEnums = {VK_ATTACHMENT_LOAD_OP_LOAD, VK_ATTACHMENT_LOAD_OP_CLEAR, VK_ATTACHMENT_LOAD_OP_DONT_CARE, }; const std::vector AllVkAttachmentStoreOpEnums = {VK_ATTACHMENT_STORE_OP_STORE, VK_ATTACHMENT_STORE_OP_DONT_CARE, VK_ATTACHMENT_STORE_OP_NONE_QCOM, }; @@ -154,8 +156,6 @@ const std::vector AllVkPipelineBindPointEnums = {VK_PIPELIN const std::vector AllVkCommandBufferLevelEnums = {VK_COMMAND_BUFFER_LEVEL_PRIMARY, VK_COMMAND_BUFFER_LEVEL_SECONDARY, }; const std::vector AllVkIndexTypeEnums = {VK_INDEX_TYPE_UINT16, VK_INDEX_TYPE_UINT32, VK_INDEX_TYPE_NONE_KHR, VK_INDEX_TYPE_NONE_NV, VK_INDEX_TYPE_UINT8_EXT, }; const std::vector AllVkSubpassContentsEnums = {VK_SUBPASS_CONTENTS_INLINE, VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS, }; -const std::vector AllVkObjectTypeEnums = {VK_OBJECT_TYPE_UNKNOWN, VK_OBJECT_TYPE_INSTANCE, VK_OBJECT_TYPE_PHYSICAL_DEVICE, VK_OBJECT_TYPE_DEVICE, VK_OBJECT_TYPE_QUEUE, VK_OBJECT_TYPE_SEMAPHORE, VK_OBJECT_TYPE_COMMAND_BUFFER, VK_OBJECT_TYPE_FENCE, VK_OBJECT_TYPE_DEVICE_MEMORY, VK_OBJECT_TYPE_BUFFER, VK_OBJECT_TYPE_IMAGE, VK_OBJECT_TYPE_EVENT, VK_OBJECT_TYPE_QUERY_POOL, VK_OBJECT_TYPE_BUFFER_VIEW, VK_OBJECT_TYPE_IMAGE_VIEW, VK_OBJECT_TYPE_SHADER_MODULE, VK_OBJECT_TYPE_PIPELINE_CACHE, VK_OBJECT_TYPE_PIPELINE_LAYOUT, VK_OBJECT_TYPE_RENDER_PASS, VK_OBJECT_TYPE_PIPELINE, VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT, VK_OBJECT_TYPE_SAMPLER, VK_OBJECT_TYPE_DESCRIPTOR_POOL, VK_OBJECT_TYPE_DESCRIPTOR_SET, VK_OBJECT_TYPE_FRAMEBUFFER, VK_OBJECT_TYPE_COMMAND_POOL, VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION, VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE, VK_OBJECT_TYPE_SURFACE_KHR, VK_OBJECT_TYPE_SWAPCHAIN_KHR, VK_OBJECT_TYPE_DISPLAY_KHR, VK_OBJECT_TYPE_DISPLAY_MODE_KHR, VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT, VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR, VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT, VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR, VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR, VK_OBJECT_TYPE_VALIDATION_CACHE_EXT, VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV, VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL, VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR, VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV, VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT, }; -const std::vector AllVkVendorIdEnums = {VK_VENDOR_ID_VIV, VK_VENDOR_ID_VSI, VK_VENDOR_ID_KAZAN, VK_VENDOR_ID_CODEPLAY, VK_VENDOR_ID_MESA, }; const std::vector AllVkPointClippingBehaviorEnums = {VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES, VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY, VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR, VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR, }; const std::vector AllVkTessellationDomainOriginEnums = {VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT, VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT, VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR, VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR, }; const std::vector AllVkSamplerYcbcrModelConversionEnums = {VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020, VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR, VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR, }; @@ -1488,14 +1488,6 @@ bool StatelessValidation::ValidatePnextStructContents(const char *api_name, cons case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV: { // Covers VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-sType-sType VkPipelineViewportShadingRateImageStateCreateInfoNV *structure = (VkPipelineViewportShadingRateImageStateCreateInfoNV *) header; skip |= validate_bool32("VkPipelineViewportShadingRateImageStateCreateInfoNV", "shadingRateImageEnable", structure->shadingRateImageEnable); - - if (structure->pShadingRatePalettes != NULL) - { - for (uint32_t viewportIndex = 0; viewportIndex < structure->viewportCount; ++viewportIndex) - { - skip |= validate_ranged_enum_array("VkPipelineViewportShadingRateImageStateCreateInfoNV", ParameterName("pShadingRatePalettes[%i].shadingRatePaletteEntryCount", ParameterName::IndexVector{ viewportIndex }), ParameterName("pShadingRatePalettes[%i].pShadingRatePaletteEntries", ParameterName::IndexVector{ viewportIndex }), "VkShadingRatePaletteEntryNV", AllVkShadingRatePaletteEntryNVEnums, structure->pShadingRatePalettes[viewportIndex].shadingRatePaletteEntryCount, structure->pShadingRatePalettes[viewportIndex].pShadingRatePaletteEntries, true, true); - } - } } break; // Validation code for VkPhysicalDeviceShadingRateImageFeaturesNV structure members @@ -1665,16 +1657,7 @@ bool StatelessValidation::ValidatePnextStructContents(const char *api_name, cons skip |= validate_bool32("VkPhysicalDeviceShaderImageFootprintFeaturesNV", "imageFootprint", structure->imageFootprint); } break; - // Validation code for VkPipelineViewportExclusiveScissorStateCreateInfoNV structure members - case VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV: { // Covers VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-sType-sType - VkPipelineViewportExclusiveScissorStateCreateInfoNV *structure = (VkPipelineViewportExclusiveScissorStateCreateInfoNV *) header; - if (structure->pExclusiveScissors != NULL) - { - for (uint32_t exclusiveScissorIndex = 0; exclusiveScissorIndex < structure->exclusiveScissorCount; ++exclusiveScissorIndex) - { - } - } - } break; + // No Validation code for VkPipelineViewportExclusiveScissorStateCreateInfoNV structure members -- Covers VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-sType-sType // Validation code for VkPhysicalDeviceExclusiveScissorFeaturesNV structure members case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV: { // Covers VUID-VkPhysicalDeviceExclusiveScissorFeaturesNV-sType-sType @@ -1960,6 +1943,14 @@ bool StatelessValidation::ValidatePnextStructContents(const char *api_name, cons skip |= validate_bool32("VkPhysicalDeviceCustomBorderColorFeaturesEXT", "customBorderColorWithoutFormat", structure->customBorderColorWithoutFormat); } break; + // Validation code for VkPhysicalDevicePrivateDataFeaturesEXT structure members + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT: { // Covers VUID-VkPhysicalDevicePrivateDataFeaturesEXT-sType-sType + VkPhysicalDevicePrivateDataFeaturesEXT *structure = (VkPhysicalDevicePrivateDataFeaturesEXT *) header; + skip |= validate_bool32("VkPhysicalDevicePrivateDataFeaturesEXT", "privateData", structure->privateData); + } break; + + // No Validation code for VkDevicePrivateDataCreateInfoEXT structure members -- Covers VUID-VkDevicePrivateDataCreateInfoEXT-sType-sType + // Validation code for VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT structure members case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT: { // Covers VUID-VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT-sType-sType VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT *structure = (VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT *) header; @@ -2196,9 +2187,9 @@ bool StatelessValidation::PreCallValidateCreateDevice( skip |= validate_struct_type("vkCreateDevice", "pCreateInfo", "VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO", pCreateInfo, VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO, true, "VUID-vkCreateDevice-pCreateInfo-parameter", "VUID-VkDeviceCreateInfo-sType-sType"); if (pCreateInfo != NULL) { - const VkStructureType allowed_structs_VkDeviceCreateInfo[] = { VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV, VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO, VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT }; + const VkStructureType allowed_structs_VkDeviceCreateInfo[] = { VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV, VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO, VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD, VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_FEATURES_KHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES, VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT }; - skip |= validate_struct_pnext("vkCreateDevice", "pCreateInfo->pNext", "VkDeviceDiagnosticsConfigCreateInfoNV, VkDeviceGroupDeviceCreateInfo, VkDeviceMemoryOverallocationCreateInfoAMD, VkPhysicalDevice16BitStorageFeatures, VkPhysicalDevice8BitStorageFeatures, VkPhysicalDeviceASTCDecodeFeaturesEXT, VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, VkPhysicalDeviceBufferDeviceAddressFeatures, VkPhysicalDeviceBufferDeviceAddressFeaturesEXT, VkPhysicalDeviceCoherentMemoryFeaturesAMD, VkPhysicalDeviceComputeShaderDerivativesFeaturesNV, VkPhysicalDeviceConditionalRenderingFeaturesEXT, VkPhysicalDeviceCooperativeMatrixFeaturesNV, VkPhysicalDeviceCornerSampledImageFeaturesNV, VkPhysicalDeviceCoverageReductionModeFeaturesNV, VkPhysicalDeviceCustomBorderColorFeaturesEXT, VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV, VkPhysicalDeviceDepthClipEnableFeaturesEXT, VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV, VkPhysicalDeviceDiagnosticsConfigFeaturesNV, VkPhysicalDeviceExclusiveScissorFeaturesNV, VkPhysicalDeviceFeatures2, VkPhysicalDeviceFragmentDensityMapFeaturesEXT, VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV, VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT, VkPhysicalDeviceHostQueryResetFeatures, VkPhysicalDeviceImagelessFramebufferFeatures, VkPhysicalDeviceIndexTypeUint8FeaturesEXT, VkPhysicalDeviceInlineUniformBlockFeaturesEXT, VkPhysicalDeviceLineRasterizationFeaturesEXT, VkPhysicalDeviceMemoryPriorityFeaturesEXT, VkPhysicalDeviceMeshShaderFeaturesNV, VkPhysicalDeviceMultiviewFeatures, VkPhysicalDevicePerformanceQueryFeaturesKHR, VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT, VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR, VkPhysicalDeviceProtectedMemoryFeatures, VkPhysicalDeviceRayTracingFeaturesKHR, VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV, VkPhysicalDeviceRobustness2FeaturesEXT, VkPhysicalDeviceSamplerYcbcrConversionFeatures, VkPhysicalDeviceScalarBlockLayoutFeatures, VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures, VkPhysicalDeviceShaderAtomicInt64Features, VkPhysicalDeviceShaderClockFeaturesKHR, VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT, VkPhysicalDeviceShaderDrawParametersFeatures, VkPhysicalDeviceShaderFloat16Int8Features, VkPhysicalDeviceShaderImageFootprintFeaturesNV, VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL, VkPhysicalDeviceShaderSMBuiltinsFeaturesNV, VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures, VkPhysicalDeviceShadingRateImageFeaturesNV, VkPhysicalDeviceSubgroupSizeControlFeaturesEXT, VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT, VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT, VkPhysicalDeviceTimelineSemaphoreFeatures, VkPhysicalDeviceTransformFeedbackFeaturesEXT, VkPhysicalDeviceUniformBufferStandardLayoutFeatures, VkPhysicalDeviceVariablePointersFeatures, VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT, VkPhysicalDeviceVulkan11Features, VkPhysicalDeviceVulkan12Features, VkPhysicalDeviceVulkanMemoryModelFeatures, VkPhysicalDeviceYcbcrImageArraysFeaturesEXT", pCreateInfo->pNext, ARRAY_SIZE(allowed_structs_VkDeviceCreateInfo), allowed_structs_VkDeviceCreateInfo, GeneratedVulkanHeaderVersion, "VUID-VkDeviceCreateInfo-pNext-pNext", "VUID-VkDeviceCreateInfo-sType-unique"); + skip |= validate_struct_pnext("vkCreateDevice", "pCreateInfo->pNext", "VkDeviceDiagnosticsConfigCreateInfoNV, VkDeviceGroupDeviceCreateInfo, VkDeviceMemoryOverallocationCreateInfoAMD, VkDevicePrivateDataCreateInfoEXT, VkPhysicalDevice16BitStorageFeatures, VkPhysicalDevice8BitStorageFeatures, VkPhysicalDeviceASTCDecodeFeaturesEXT, VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, VkPhysicalDeviceBufferDeviceAddressFeatures, VkPhysicalDeviceBufferDeviceAddressFeaturesEXT, VkPhysicalDeviceCoherentMemoryFeaturesAMD, VkPhysicalDeviceComputeShaderDerivativesFeaturesNV, VkPhysicalDeviceConditionalRenderingFeaturesEXT, VkPhysicalDeviceCooperativeMatrixFeaturesNV, VkPhysicalDeviceCornerSampledImageFeaturesNV, VkPhysicalDeviceCoverageReductionModeFeaturesNV, VkPhysicalDeviceCustomBorderColorFeaturesEXT, VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV, VkPhysicalDeviceDepthClipEnableFeaturesEXT, VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV, VkPhysicalDeviceDiagnosticsConfigFeaturesNV, VkPhysicalDeviceExclusiveScissorFeaturesNV, VkPhysicalDeviceFeatures2, VkPhysicalDeviceFragmentDensityMapFeaturesEXT, VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV, VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT, VkPhysicalDeviceHostQueryResetFeatures, VkPhysicalDeviceImagelessFramebufferFeatures, VkPhysicalDeviceIndexTypeUint8FeaturesEXT, VkPhysicalDeviceInlineUniformBlockFeaturesEXT, VkPhysicalDeviceLineRasterizationFeaturesEXT, VkPhysicalDeviceMemoryPriorityFeaturesEXT, VkPhysicalDeviceMeshShaderFeaturesNV, VkPhysicalDeviceMultiviewFeatures, VkPhysicalDevicePerformanceQueryFeaturesKHR, VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT, VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR, VkPhysicalDevicePrivateDataFeaturesEXT, VkPhysicalDeviceProtectedMemoryFeatures, VkPhysicalDeviceRayTracingFeaturesKHR, VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV, VkPhysicalDeviceRobustness2FeaturesEXT, VkPhysicalDeviceSamplerYcbcrConversionFeatures, VkPhysicalDeviceScalarBlockLayoutFeatures, VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures, VkPhysicalDeviceShaderAtomicInt64Features, VkPhysicalDeviceShaderClockFeaturesKHR, VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT, VkPhysicalDeviceShaderDrawParametersFeatures, VkPhysicalDeviceShaderFloat16Int8Features, VkPhysicalDeviceShaderImageFootprintFeaturesNV, VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL, VkPhysicalDeviceShaderSMBuiltinsFeaturesNV, VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures, VkPhysicalDeviceShadingRateImageFeaturesNV, VkPhysicalDeviceSubgroupSizeControlFeaturesEXT, VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT, VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT, VkPhysicalDeviceTimelineSemaphoreFeatures, VkPhysicalDeviceTransformFeedbackFeaturesEXT, VkPhysicalDeviceUniformBufferStandardLayoutFeatures, VkPhysicalDeviceVariablePointersFeatures, VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT, VkPhysicalDeviceVulkan11Features, VkPhysicalDeviceVulkan12Features, VkPhysicalDeviceVulkanMemoryModelFeatures, VkPhysicalDeviceYcbcrImageArraysFeaturesEXT", pCreateInfo->pNext, ARRAY_SIZE(allowed_structs_VkDeviceCreateInfo), allowed_structs_VkDeviceCreateInfo, GeneratedVulkanHeaderVersion, "VUID-VkDeviceCreateInfo-pNext-pNext", "VUID-VkDeviceCreateInfo-sType-unique"); skip |= validate_reserved_flags("vkCreateDevice", "pCreateInfo->flags", pCreateInfo->flags, "VUID-VkDeviceCreateInfo-flags-zerobitmask"); @@ -8760,6 +8751,7 @@ bool StatelessValidation::PreCallValidateGetPipelineExecutablePropertiesKHR( uint32_t* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties) const { bool skip = false; + if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkGetPipelineExecutablePropertiesKHR", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME); if (!device_extensions.vk_khr_pipeline_executable_properties) skip |= OutputExtensionError("vkGetPipelineExecutablePropertiesKHR", VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME); skip |= validate_struct_type("vkGetPipelineExecutablePropertiesKHR", "pPipelineInfo", "VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR", pPipelineInfo, VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR, true, "VUID-vkGetPipelineExecutablePropertiesKHR-pPipelineInfo-parameter", "VUID-VkPipelineInfoKHR-sType-sType"); if (pPipelineInfo != NULL) @@ -8785,6 +8777,7 @@ bool StatelessValidation::PreCallValidateGetPipelineExecutableStatisticsKHR( uint32_t* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics) const { bool skip = false; + if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkGetPipelineExecutableStatisticsKHR", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME); if (!device_extensions.vk_khr_pipeline_executable_properties) skip |= OutputExtensionError("vkGetPipelineExecutableStatisticsKHR", VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME); skip |= validate_struct_type("vkGetPipelineExecutableStatisticsKHR", "pExecutableInfo", "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR", pExecutableInfo, VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR, true, "VUID-vkGetPipelineExecutableStatisticsKHR-pExecutableInfo-parameter", "VUID-VkPipelineExecutableInfoKHR-sType-sType"); if (pExecutableInfo != NULL) @@ -8810,6 +8803,7 @@ bool StatelessValidation::PreCallValidateGetPipelineExecutableInternalRepresenta uint32_t* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations) const { bool skip = false; + if (!device_extensions.vk_khr_get_physical_device_properties_2) skip |= OutputExtensionError("vkGetPipelineExecutableInternalRepresentationsKHR", VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME); if (!device_extensions.vk_khr_pipeline_executable_properties) skip |= OutputExtensionError("vkGetPipelineExecutableInternalRepresentationsKHR", VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME); skip |= validate_struct_type("vkGetPipelineExecutableInternalRepresentationsKHR", "pExecutableInfo", "VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR", pExecutableInfo, VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR, true, "VUID-vkGetPipelineExecutableInternalRepresentationsKHR-pExecutableInfo-parameter", "VUID-VkPipelineExecutableInfoKHR-sType-sType"); if (pExecutableInfo != NULL) @@ -10328,6 +10322,8 @@ bool StatelessValidation::PreCallValidateCreateAccelerationStructureNV( skip |= validate_ranged_enum("vkCreateAccelerationStructureNV", "pCreateInfo->info.type", "VkAccelerationStructureTypeNV", AllVkAccelerationStructureTypeNVEnums, pCreateInfo->info.type, "VUID-VkAccelerationStructureInfoNV-type-parameter"); + skip |= validate_flags("vkCreateAccelerationStructureNV", "pCreateInfo->info.flags", "VkBuildAccelerationStructureFlagBitsNV", AllVkBuildAccelerationStructureFlagBitsNV, pCreateInfo->info.flags, kOptionalFlags, "VUID-VkAccelerationStructureInfoNV-flags-parameter"); + skip |= validate_struct_type_array("vkCreateAccelerationStructureNV", "pCreateInfo->info.geometryCount", "pCreateInfo->info.pGeometries", "VK_STRUCTURE_TYPE_GEOMETRY_NV", pCreateInfo->info.geometryCount, pCreateInfo->info.pGeometries, VK_STRUCTURE_TYPE_GEOMETRY_NV, false, true, "VUID-VkGeometryNV-sType-sType", "VUID-VkAccelerationStructureInfoNV-pGeometries-parameter", kVUIDUndefined); if (pCreateInfo->info.pGeometries != NULL) @@ -10527,6 +10523,8 @@ bool StatelessValidation::PreCallValidateCmdBuildAccelerationStructureNV( skip |= validate_ranged_enum("vkCmdBuildAccelerationStructureNV", "pInfo->type", "VkAccelerationStructureTypeNV", AllVkAccelerationStructureTypeNVEnums, pInfo->type, "VUID-VkAccelerationStructureInfoNV-type-parameter"); + skip |= validate_flags("vkCmdBuildAccelerationStructureNV", "pInfo->flags", "VkBuildAccelerationStructureFlagBitsNV", AllVkBuildAccelerationStructureFlagBitsNV, pInfo->flags, kOptionalFlags, "VUID-VkAccelerationStructureInfoNV-flags-parameter"); + skip |= validate_struct_type_array("vkCmdBuildAccelerationStructureNV", "pInfo->geometryCount", "pInfo->pGeometries", "VK_STRUCTURE_TYPE_GEOMETRY_NV", pInfo->geometryCount, pInfo->pGeometries, VK_STRUCTURE_TYPE_GEOMETRY_NV, false, true, "VUID-VkGeometryNV-sType-sType", "VUID-VkAccelerationStructureInfoNV-pGeometries-parameter", kVUIDUndefined); if (pInfo->pGeometries != NULL) diff --git a/layers/generated/thread_safety.cpp b/layers/generated/thread_safety.cpp index 5c5a96237eb..e809ce8f355 100644 --- a/layers/generated/thread_safety.cpp +++ b/layers/generated/thread_safety.cpp @@ -5502,35 +5502,41 @@ void ThreadSafety::PostCallRecordQueueInsertDebugUtilsLabelEXT( void ThreadSafety::PreCallRecordCmdBeginDebugUtilsLabelEXT( VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo) { - StartReadObject(commandBuffer, "vkCmdBeginDebugUtilsLabelEXT"); + StartWriteObject(commandBuffer, "vkCmdBeginDebugUtilsLabelEXT"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PostCallRecordCmdBeginDebugUtilsLabelEXT( VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo) { - FinishReadObject(commandBuffer, "vkCmdBeginDebugUtilsLabelEXT"); + FinishWriteObject(commandBuffer, "vkCmdBeginDebugUtilsLabelEXT"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PreCallRecordCmdEndDebugUtilsLabelEXT( VkCommandBuffer commandBuffer) { - StartReadObject(commandBuffer, "vkCmdEndDebugUtilsLabelEXT"); + StartWriteObject(commandBuffer, "vkCmdEndDebugUtilsLabelEXT"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PostCallRecordCmdEndDebugUtilsLabelEXT( VkCommandBuffer commandBuffer) { - FinishReadObject(commandBuffer, "vkCmdEndDebugUtilsLabelEXT"); + FinishWriteObject(commandBuffer, "vkCmdEndDebugUtilsLabelEXT"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PreCallRecordCmdInsertDebugUtilsLabelEXT( VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo) { - StartReadObject(commandBuffer, "vkCmdInsertDebugUtilsLabelEXT"); + StartWriteObject(commandBuffer, "vkCmdInsertDebugUtilsLabelEXT"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PostCallRecordCmdInsertDebugUtilsLabelEXT( VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo) { - FinishReadObject(commandBuffer, "vkCmdInsertDebugUtilsLabelEXT"); + FinishWriteObject(commandBuffer, "vkCmdInsertDebugUtilsLabelEXT"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PreCallRecordCreateDebugUtilsMessengerEXT( @@ -5907,11 +5913,12 @@ void ThreadSafety::PreCallRecordCmdBuildAccelerationStructureNV( VkAccelerationStructureKHR src, VkBuffer scratch, VkDeviceSize scratchOffset) { - StartReadObject(commandBuffer, "vkCmdBuildAccelerationStructureNV"); + StartWriteObject(commandBuffer, "vkCmdBuildAccelerationStructureNV"); StartReadObject(instanceData, "vkCmdBuildAccelerationStructureNV"); StartReadObject(dst, "vkCmdBuildAccelerationStructureNV"); StartReadObject(src, "vkCmdBuildAccelerationStructureNV"); StartReadObject(scratch, "vkCmdBuildAccelerationStructureNV"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PostCallRecordCmdBuildAccelerationStructureNV( @@ -5924,11 +5931,12 @@ void ThreadSafety::PostCallRecordCmdBuildAccelerationStructureNV( VkAccelerationStructureKHR src, VkBuffer scratch, VkDeviceSize scratchOffset) { - FinishReadObject(commandBuffer, "vkCmdBuildAccelerationStructureNV"); + FinishWriteObject(commandBuffer, "vkCmdBuildAccelerationStructureNV"); FinishReadObject(instanceData, "vkCmdBuildAccelerationStructureNV"); FinishReadObject(dst, "vkCmdBuildAccelerationStructureNV"); FinishReadObject(src, "vkCmdBuildAccelerationStructureNV"); FinishReadObject(scratch, "vkCmdBuildAccelerationStructureNV"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PreCallRecordCmdCopyAccelerationStructureNV( @@ -5936,9 +5944,10 @@ void ThreadSafety::PreCallRecordCmdCopyAccelerationStructureNV( VkAccelerationStructureKHR dst, VkAccelerationStructureKHR src, VkCopyAccelerationStructureModeKHR mode) { - StartReadObject(commandBuffer, "vkCmdCopyAccelerationStructureNV"); + StartWriteObject(commandBuffer, "vkCmdCopyAccelerationStructureNV"); StartReadObject(dst, "vkCmdCopyAccelerationStructureNV"); StartReadObject(src, "vkCmdCopyAccelerationStructureNV"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PostCallRecordCmdCopyAccelerationStructureNV( @@ -5946,9 +5955,10 @@ void ThreadSafety::PostCallRecordCmdCopyAccelerationStructureNV( VkAccelerationStructureKHR dst, VkAccelerationStructureKHR src, VkCopyAccelerationStructureModeKHR mode) { - FinishReadObject(commandBuffer, "vkCmdCopyAccelerationStructureNV"); + FinishWriteObject(commandBuffer, "vkCmdCopyAccelerationStructureNV"); FinishReadObject(dst, "vkCmdCopyAccelerationStructureNV"); FinishReadObject(src, "vkCmdCopyAccelerationStructureNV"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PreCallRecordCmdTraceRaysNV( @@ -5967,11 +5977,12 @@ void ThreadSafety::PreCallRecordCmdTraceRaysNV( uint32_t width, uint32_t height, uint32_t depth) { - StartReadObject(commandBuffer, "vkCmdTraceRaysNV"); + StartWriteObject(commandBuffer, "vkCmdTraceRaysNV"); StartReadObject(raygenShaderBindingTableBuffer, "vkCmdTraceRaysNV"); StartReadObject(missShaderBindingTableBuffer, "vkCmdTraceRaysNV"); StartReadObject(hitShaderBindingTableBuffer, "vkCmdTraceRaysNV"); StartReadObject(callableShaderBindingTableBuffer, "vkCmdTraceRaysNV"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PostCallRecordCmdTraceRaysNV( @@ -5990,11 +6001,12 @@ void ThreadSafety::PostCallRecordCmdTraceRaysNV( uint32_t width, uint32_t height, uint32_t depth) { - FinishReadObject(commandBuffer, "vkCmdTraceRaysNV"); + FinishWriteObject(commandBuffer, "vkCmdTraceRaysNV"); FinishReadObject(raygenShaderBindingTableBuffer, "vkCmdTraceRaysNV"); FinishReadObject(missShaderBindingTableBuffer, "vkCmdTraceRaysNV"); FinishReadObject(hitShaderBindingTableBuffer, "vkCmdTraceRaysNV"); FinishReadObject(callableShaderBindingTableBuffer, "vkCmdTraceRaysNV"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PreCallRecordCreateRayTracingPipelinesNV( @@ -6098,13 +6110,14 @@ void ThreadSafety::PreCallRecordCmdWriteAccelerationStructuresPropertiesKHR( VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery) { - StartReadObject(commandBuffer, "vkCmdWriteAccelerationStructuresPropertiesKHR"); + StartWriteObject(commandBuffer, "vkCmdWriteAccelerationStructuresPropertiesKHR"); if (pAccelerationStructures) { for (uint32_t index = 0; index < accelerationStructureCount; index++) { StartReadObject(pAccelerationStructures[index], "vkCmdWriteAccelerationStructuresPropertiesKHR"); } } StartReadObject(queryPool, "vkCmdWriteAccelerationStructuresPropertiesKHR"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PostCallRecordCmdWriteAccelerationStructuresPropertiesKHR( @@ -6114,13 +6127,14 @@ void ThreadSafety::PostCallRecordCmdWriteAccelerationStructuresPropertiesKHR( VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery) { - FinishReadObject(commandBuffer, "vkCmdWriteAccelerationStructuresPropertiesKHR"); + FinishWriteObject(commandBuffer, "vkCmdWriteAccelerationStructuresPropertiesKHR"); if (pAccelerationStructures) { for (uint32_t index = 0; index < accelerationStructureCount; index++) { FinishReadObject(pAccelerationStructures[index], "vkCmdWriteAccelerationStructuresPropertiesKHR"); } } FinishReadObject(queryPool, "vkCmdWriteAccelerationStructuresPropertiesKHR"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PreCallRecordCmdWriteAccelerationStructuresPropertiesNV( @@ -6130,13 +6144,14 @@ void ThreadSafety::PreCallRecordCmdWriteAccelerationStructuresPropertiesNV( VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery) { - StartReadObject(commandBuffer, "vkCmdWriteAccelerationStructuresPropertiesNV"); + StartWriteObject(commandBuffer, "vkCmdWriteAccelerationStructuresPropertiesNV"); if (pAccelerationStructures) { for (uint32_t index = 0; index < accelerationStructureCount; index++) { StartReadObject(pAccelerationStructures[index], "vkCmdWriteAccelerationStructuresPropertiesNV"); } } StartReadObject(queryPool, "vkCmdWriteAccelerationStructuresPropertiesNV"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PostCallRecordCmdWriteAccelerationStructuresPropertiesNV( @@ -6146,13 +6161,14 @@ void ThreadSafety::PostCallRecordCmdWriteAccelerationStructuresPropertiesNV( VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery) { - FinishReadObject(commandBuffer, "vkCmdWriteAccelerationStructuresPropertiesNV"); + FinishWriteObject(commandBuffer, "vkCmdWriteAccelerationStructuresPropertiesNV"); if (pAccelerationStructures) { for (uint32_t index = 0; index < accelerationStructureCount; index++) { FinishReadObject(pAccelerationStructures[index], "vkCmdWriteAccelerationStructuresPropertiesNV"); } } FinishReadObject(queryPool, "vkCmdWriteAccelerationStructuresPropertiesNV"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PreCallRecordCompileDeferredNV( @@ -6320,13 +6336,15 @@ void ThreadSafety::PostCallRecordCmdSetExclusiveScissorNV( void ThreadSafety::PreCallRecordCmdSetCheckpointNV( VkCommandBuffer commandBuffer, const void* pCheckpointMarker) { - StartReadObject(commandBuffer, "vkCmdSetCheckpointNV"); + StartWriteObject(commandBuffer, "vkCmdSetCheckpointNV"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PostCallRecordCmdSetCheckpointNV( VkCommandBuffer commandBuffer, const void* pCheckpointMarker) { - FinishReadObject(commandBuffer, "vkCmdSetCheckpointNV"); + FinishWriteObject(commandBuffer, "vkCmdSetCheckpointNV"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PreCallRecordGetQueueCheckpointDataNV( @@ -6369,40 +6387,46 @@ void ThreadSafety::PostCallRecordUninitializePerformanceApiINTEL( void ThreadSafety::PreCallRecordCmdSetPerformanceMarkerINTEL( VkCommandBuffer commandBuffer, const VkPerformanceMarkerInfoINTEL* pMarkerInfo) { - StartReadObject(commandBuffer, "vkCmdSetPerformanceMarkerINTEL"); + StartWriteObject(commandBuffer, "vkCmdSetPerformanceMarkerINTEL"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PostCallRecordCmdSetPerformanceMarkerINTEL( VkCommandBuffer commandBuffer, const VkPerformanceMarkerInfoINTEL* pMarkerInfo, VkResult result) { - FinishReadObject(commandBuffer, "vkCmdSetPerformanceMarkerINTEL"); + FinishWriteObject(commandBuffer, "vkCmdSetPerformanceMarkerINTEL"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PreCallRecordCmdSetPerformanceStreamMarkerINTEL( VkCommandBuffer commandBuffer, const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo) { - StartReadObject(commandBuffer, "vkCmdSetPerformanceStreamMarkerINTEL"); + StartWriteObject(commandBuffer, "vkCmdSetPerformanceStreamMarkerINTEL"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PostCallRecordCmdSetPerformanceStreamMarkerINTEL( VkCommandBuffer commandBuffer, const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo, VkResult result) { - FinishReadObject(commandBuffer, "vkCmdSetPerformanceStreamMarkerINTEL"); + FinishWriteObject(commandBuffer, "vkCmdSetPerformanceStreamMarkerINTEL"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PreCallRecordCmdSetPerformanceOverrideINTEL( VkCommandBuffer commandBuffer, const VkPerformanceOverrideInfoINTEL* pOverrideInfo) { - StartReadObject(commandBuffer, "vkCmdSetPerformanceOverrideINTEL"); + StartWriteObject(commandBuffer, "vkCmdSetPerformanceOverrideINTEL"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PostCallRecordCmdSetPerformanceOverrideINTEL( VkCommandBuffer commandBuffer, const VkPerformanceOverrideInfoINTEL* pOverrideInfo, VkResult result) { - FinishReadObject(commandBuffer, "vkCmdSetPerformanceOverrideINTEL"); + FinishWriteObject(commandBuffer, "vkCmdSetPerformanceOverrideINTEL"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PreCallRecordAcquirePerformanceConfigurationINTEL( @@ -6866,7 +6890,8 @@ void ThreadSafety::PreCallRecordCmdBuildAccelerationStructureKHR( uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildOffsetInfoKHR* const* ppOffsetInfos) { - StartReadObject(commandBuffer, "vkCmdBuildAccelerationStructureKHR"); + StartWriteObject(commandBuffer, "vkCmdBuildAccelerationStructureKHR"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PostCallRecordCmdBuildAccelerationStructureKHR( @@ -6874,7 +6899,8 @@ void ThreadSafety::PostCallRecordCmdBuildAccelerationStructureKHR( uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildOffsetInfoKHR* const* ppOffsetInfos) { - FinishReadObject(commandBuffer, "vkCmdBuildAccelerationStructureKHR"); + FinishWriteObject(commandBuffer, "vkCmdBuildAccelerationStructureKHR"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PreCallRecordCmdBuildAccelerationStructureIndirectKHR( @@ -6883,8 +6909,9 @@ void ThreadSafety::PreCallRecordCmdBuildAccelerationStructureIndirectKHR( VkBuffer indirectBuffer, VkDeviceSize indirectOffset, uint32_t indirectStride) { - StartReadObject(commandBuffer, "vkCmdBuildAccelerationStructureIndirectKHR"); + StartWriteObject(commandBuffer, "vkCmdBuildAccelerationStructureIndirectKHR"); StartReadObject(indirectBuffer, "vkCmdBuildAccelerationStructureIndirectKHR"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PostCallRecordCmdBuildAccelerationStructureIndirectKHR( @@ -6893,8 +6920,9 @@ void ThreadSafety::PostCallRecordCmdBuildAccelerationStructureIndirectKHR( VkBuffer indirectBuffer, VkDeviceSize indirectOffset, uint32_t indirectStride) { - FinishReadObject(commandBuffer, "vkCmdBuildAccelerationStructureIndirectKHR"); + FinishWriteObject(commandBuffer, "vkCmdBuildAccelerationStructureIndirectKHR"); FinishReadObject(indirectBuffer, "vkCmdBuildAccelerationStructureIndirectKHR"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PreCallRecordBuildAccelerationStructureKHR( @@ -6989,37 +7017,43 @@ void ThreadSafety::PostCallRecordWriteAccelerationStructuresPropertiesKHR( void ThreadSafety::PreCallRecordCmdCopyAccelerationStructureKHR( VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo) { - StartReadObject(commandBuffer, "vkCmdCopyAccelerationStructureKHR"); + StartWriteObject(commandBuffer, "vkCmdCopyAccelerationStructureKHR"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PostCallRecordCmdCopyAccelerationStructureKHR( VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo) { - FinishReadObject(commandBuffer, "vkCmdCopyAccelerationStructureKHR"); + FinishWriteObject(commandBuffer, "vkCmdCopyAccelerationStructureKHR"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PreCallRecordCmdCopyAccelerationStructureToMemoryKHR( VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) { - StartReadObject(commandBuffer, "vkCmdCopyAccelerationStructureToMemoryKHR"); + StartWriteObject(commandBuffer, "vkCmdCopyAccelerationStructureToMemoryKHR"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PostCallRecordCmdCopyAccelerationStructureToMemoryKHR( VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo) { - FinishReadObject(commandBuffer, "vkCmdCopyAccelerationStructureToMemoryKHR"); + FinishWriteObject(commandBuffer, "vkCmdCopyAccelerationStructureToMemoryKHR"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PreCallRecordCmdCopyMemoryToAccelerationStructureKHR( VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) { - StartReadObject(commandBuffer, "vkCmdCopyMemoryToAccelerationStructureKHR"); + StartWriteObject(commandBuffer, "vkCmdCopyMemoryToAccelerationStructureKHR"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PostCallRecordCmdCopyMemoryToAccelerationStructureKHR( VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo) { - FinishReadObject(commandBuffer, "vkCmdCopyMemoryToAccelerationStructureKHR"); + FinishWriteObject(commandBuffer, "vkCmdCopyMemoryToAccelerationStructureKHR"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PreCallRecordCmdTraceRaysKHR( @@ -7031,7 +7065,8 @@ void ThreadSafety::PreCallRecordCmdTraceRaysKHR( uint32_t width, uint32_t height, uint32_t depth) { - StartReadObject(commandBuffer, "vkCmdTraceRaysKHR"); + StartWriteObject(commandBuffer, "vkCmdTraceRaysKHR"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PostCallRecordCmdTraceRaysKHR( @@ -7043,7 +7078,8 @@ void ThreadSafety::PostCallRecordCmdTraceRaysKHR( uint32_t width, uint32_t height, uint32_t depth) { - FinishReadObject(commandBuffer, "vkCmdTraceRaysKHR"); + FinishWriteObject(commandBuffer, "vkCmdTraceRaysKHR"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PreCallRecordCreateRayTracingPipelinesKHR( @@ -7119,8 +7155,9 @@ void ThreadSafety::PreCallRecordCmdTraceRaysIndirectKHR( const VkStridedBufferRegionKHR* pCallableShaderBindingTable, VkBuffer buffer, VkDeviceSize offset) { - StartReadObject(commandBuffer, "vkCmdTraceRaysIndirectKHR"); + StartWriteObject(commandBuffer, "vkCmdTraceRaysIndirectKHR"); StartReadObject(buffer, "vkCmdTraceRaysIndirectKHR"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PostCallRecordCmdTraceRaysIndirectKHR( @@ -7131,8 +7168,9 @@ void ThreadSafety::PostCallRecordCmdTraceRaysIndirectKHR( const VkStridedBufferRegionKHR* pCallableShaderBindingTable, VkBuffer buffer, VkDeviceSize offset) { - FinishReadObject(commandBuffer, "vkCmdTraceRaysIndirectKHR"); + FinishWriteObject(commandBuffer, "vkCmdTraceRaysIndirectKHR"); FinishReadObject(buffer, "vkCmdTraceRaysIndirectKHR"); + // Host access to commandBuffer must be externally synchronized } void ThreadSafety::PreCallRecordGetDeviceAccelerationStructureCompatibilityKHR( diff --git a/layers/generated/vk_dispatch_table_helper.h b/layers/generated/vk_dispatch_table_helper.h index 7ea0ce32810..1c84be1e258 100644 --- a/layers/generated/vk_dispatch_table_helper.h +++ b/layers/generated/vk_dispatch_table_helper.h @@ -377,7 +377,7 @@ static VKAPI_ATTR void VKAPI_CALL StubGetAccelerationStructureMemoryRequirements static VKAPI_ATTR void VKAPI_CALL StubCmdBuildAccelerationStructureKHR(VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildOffsetInfoKHR* const* ppOffsetInfos) { }; #endif // VK_ENABLE_BETA_EXTENSIONS #ifdef VK_ENABLE_BETA_EXTENSIONS -static VKAPI_ATTR void VKAPI_CALL StubCmdBuildAccelerationStructureIndirectKHR(VkCommandBuffer commandBuffer, const VkAccelerationStructureBuildGeometryInfoKHR* pInfo, VkBuffer indirectBuffer, VkDeviceSize indirectOffset, uint32_t indirectStride) { }; +static VKAPI_ATTR void VKAPI_CALL StubCmdBuildAccelerationStructureIndirectKHR(VkCommandBuffer commandBuffer, const VkAccelerationStructureBuildGeometryInfoKHR* pInfo, VkBuffer indirectBuffer, VkDeviceSize indirectOffset, uint32_t indirectStride) { }; #endif // VK_ENABLE_BETA_EXTENSIONS #ifdef VK_ENABLE_BETA_EXTENSIONS static VKAPI_ATTR VkResult VKAPI_CALL StubBuildAccelerationStructureKHR(VkDevice device, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildOffsetInfoKHR* const* ppOffsetInfos) { return VK_SUCCESS; }; diff --git a/layers/generated/vk_enum_string_helper.h b/layers/generated/vk_enum_string_helper.h index cc9ad287bda..a4d858f3d1b 100644 --- a/layers/generated/vk_enum_string_helper.h +++ b/layers/generated/vk_enum_string_helper.h @@ -39,17 +39,6 @@ #include -static inline const char* string_VkPipelineCacheHeaderVersion(VkPipelineCacheHeaderVersion input_value) -{ - switch ((VkPipelineCacheHeaderVersion)input_value) - { - case VK_PIPELINE_CACHE_HEADER_VERSION_ONE: - return "VK_PIPELINE_CACHE_HEADER_VERSION_ONE"; - default: - return "Unhandled VkPipelineCacheHeaderVersion"; - } -} - static inline const char* string_VkResult(VkResult input_value) { switch ((VkResult)input_value) @@ -1018,147 +1007,441 @@ static inline const char* string_VkStructureType(VkStructureType input_value) } } -static inline const char* string_VkSystemAllocationScope(VkSystemAllocationScope input_value) +static inline const char* string_VkAccessFlagBits(VkAccessFlagBits input_value) { - switch ((VkSystemAllocationScope)input_value) + switch ((VkAccessFlagBits)input_value) { - case VK_SYSTEM_ALLOCATION_SCOPE_CACHE: - return "VK_SYSTEM_ALLOCATION_SCOPE_CACHE"; - case VK_SYSTEM_ALLOCATION_SCOPE_COMMAND: - return "VK_SYSTEM_ALLOCATION_SCOPE_COMMAND"; - case VK_SYSTEM_ALLOCATION_SCOPE_DEVICE: - return "VK_SYSTEM_ALLOCATION_SCOPE_DEVICE"; - case VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE: - return "VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE"; - case VK_SYSTEM_ALLOCATION_SCOPE_OBJECT: - return "VK_SYSTEM_ALLOCATION_SCOPE_OBJECT"; + case VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR: + return "VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR"; + case VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR: + return "VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR"; + case VK_ACCESS_COLOR_ATTACHMENT_READ_BIT: + return "VK_ACCESS_COLOR_ATTACHMENT_READ_BIT"; + case VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT: + return "VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"; + case VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT: + return "VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT"; + case VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV: + return "VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV"; + case VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV: + return "VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV"; + case VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT: + return "VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT"; + case VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT: + return "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT"; + case VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT: + return "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"; + case VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT: + return "VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT"; + case VK_ACCESS_HOST_READ_BIT: + return "VK_ACCESS_HOST_READ_BIT"; + case VK_ACCESS_HOST_WRITE_BIT: + return "VK_ACCESS_HOST_WRITE_BIT"; + case VK_ACCESS_INDEX_READ_BIT: + return "VK_ACCESS_INDEX_READ_BIT"; + case VK_ACCESS_INDIRECT_COMMAND_READ_BIT: + return "VK_ACCESS_INDIRECT_COMMAND_READ_BIT"; + case VK_ACCESS_INPUT_ATTACHMENT_READ_BIT: + return "VK_ACCESS_INPUT_ATTACHMENT_READ_BIT"; + case VK_ACCESS_MEMORY_READ_BIT: + return "VK_ACCESS_MEMORY_READ_BIT"; + case VK_ACCESS_MEMORY_WRITE_BIT: + return "VK_ACCESS_MEMORY_WRITE_BIT"; + case VK_ACCESS_SHADER_READ_BIT: + return "VK_ACCESS_SHADER_READ_BIT"; + case VK_ACCESS_SHADER_WRITE_BIT: + return "VK_ACCESS_SHADER_WRITE_BIT"; + case VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV: + return "VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV"; + case VK_ACCESS_TRANSFER_READ_BIT: + return "VK_ACCESS_TRANSFER_READ_BIT"; + case VK_ACCESS_TRANSFER_WRITE_BIT: + return "VK_ACCESS_TRANSFER_WRITE_BIT"; + case VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT: + return "VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT"; + case VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT: + return "VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT"; + case VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT: + return "VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT"; + case VK_ACCESS_UNIFORM_READ_BIT: + return "VK_ACCESS_UNIFORM_READ_BIT"; + case VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT: + return "VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT"; default: - return "Unhandled VkSystemAllocationScope"; + return "Unhandled VkAccessFlagBits"; } } -static inline const char* string_VkInternalAllocationType(VkInternalAllocationType input_value) +static inline std::string string_VkAccessFlags(VkAccessFlags input_value) { - switch ((VkInternalAllocationType)input_value) + std::string ret; + int index = 0; + while(input_value) { + if (input_value & 1) { + if( !ret.empty()) ret.append("|"); + ret.append(string_VkAccessFlagBits(static_cast(1 << index))); + } + ++index; + input_value >>= 1; + } + if( ret.empty()) ret.append(string_VkAccessFlagBits(static_cast(0))); + return ret; +} + +static inline const char* string_VkImageLayout(VkImageLayout input_value) +{ + switch ((VkImageLayout)input_value) { - case VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE: - return "VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE"; + case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL: + return "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL"; + case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL: + return "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL"; + case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL: + return "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL"; + case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL: + return "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL"; + case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL: + return "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL"; + case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL: + return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL"; + case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL: + return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL"; + case VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT: + return "VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT"; + case VK_IMAGE_LAYOUT_GENERAL: + return "VK_IMAGE_LAYOUT_GENERAL"; + case VK_IMAGE_LAYOUT_PREINITIALIZED: + return "VK_IMAGE_LAYOUT_PREINITIALIZED"; + case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR: + return "VK_IMAGE_LAYOUT_PRESENT_SRC_KHR"; + case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL: + return "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL"; + case VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV: + return "VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV"; + case VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR: + return "VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR"; + case VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL: + return "VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL"; + case VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL: + return "VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL"; + case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL: + return "VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL"; + case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL: + return "VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL"; + case VK_IMAGE_LAYOUT_UNDEFINED: + return "VK_IMAGE_LAYOUT_UNDEFINED"; default: - return "Unhandled VkInternalAllocationType"; + return "Unhandled VkImageLayout"; } } -static inline const char* string_VkFormat(VkFormat input_value) +static inline const char* string_VkImageAspectFlagBits(VkImageAspectFlagBits input_value) { - switch ((VkFormat)input_value) + switch ((VkImageAspectFlagBits)input_value) { - case VK_FORMAT_A1R5G5B5_UNORM_PACK16: - return "VK_FORMAT_A1R5G5B5_UNORM_PACK16"; - case VK_FORMAT_A2B10G10R10_SINT_PACK32: - return "VK_FORMAT_A2B10G10R10_SINT_PACK32"; - case VK_FORMAT_A2B10G10R10_SNORM_PACK32: - return "VK_FORMAT_A2B10G10R10_SNORM_PACK32"; - case VK_FORMAT_A2B10G10R10_SSCALED_PACK32: - return "VK_FORMAT_A2B10G10R10_SSCALED_PACK32"; - case VK_FORMAT_A2B10G10R10_UINT_PACK32: - return "VK_FORMAT_A2B10G10R10_UINT_PACK32"; - case VK_FORMAT_A2B10G10R10_UNORM_PACK32: - return "VK_FORMAT_A2B10G10R10_UNORM_PACK32"; - case VK_FORMAT_A2B10G10R10_USCALED_PACK32: - return "VK_FORMAT_A2B10G10R10_USCALED_PACK32"; - case VK_FORMAT_A2R10G10B10_SINT_PACK32: - return "VK_FORMAT_A2R10G10B10_SINT_PACK32"; - case VK_FORMAT_A2R10G10B10_SNORM_PACK32: - return "VK_FORMAT_A2R10G10B10_SNORM_PACK32"; - case VK_FORMAT_A2R10G10B10_SSCALED_PACK32: - return "VK_FORMAT_A2R10G10B10_SSCALED_PACK32"; - case VK_FORMAT_A2R10G10B10_UINT_PACK32: - return "VK_FORMAT_A2R10G10B10_UINT_PACK32"; - case VK_FORMAT_A2R10G10B10_UNORM_PACK32: - return "VK_FORMAT_A2R10G10B10_UNORM_PACK32"; - case VK_FORMAT_A2R10G10B10_USCALED_PACK32: - return "VK_FORMAT_A2R10G10B10_USCALED_PACK32"; - case VK_FORMAT_A8B8G8R8_SINT_PACK32: - return "VK_FORMAT_A8B8G8R8_SINT_PACK32"; - case VK_FORMAT_A8B8G8R8_SNORM_PACK32: - return "VK_FORMAT_A8B8G8R8_SNORM_PACK32"; - case VK_FORMAT_A8B8G8R8_SRGB_PACK32: - return "VK_FORMAT_A8B8G8R8_SRGB_PACK32"; - case VK_FORMAT_A8B8G8R8_SSCALED_PACK32: - return "VK_FORMAT_A8B8G8R8_SSCALED_PACK32"; - case VK_FORMAT_A8B8G8R8_UINT_PACK32: - return "VK_FORMAT_A8B8G8R8_UINT_PACK32"; - case VK_FORMAT_A8B8G8R8_UNORM_PACK32: - return "VK_FORMAT_A8B8G8R8_UNORM_PACK32"; - case VK_FORMAT_A8B8G8R8_USCALED_PACK32: - return "VK_FORMAT_A8B8G8R8_USCALED_PACK32"; - case VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT: - return "VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT"; - case VK_FORMAT_ASTC_10x10_SRGB_BLOCK: - return "VK_FORMAT_ASTC_10x10_SRGB_BLOCK"; - case VK_FORMAT_ASTC_10x10_UNORM_BLOCK: - return "VK_FORMAT_ASTC_10x10_UNORM_BLOCK"; - case VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT: - return "VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT"; - case VK_FORMAT_ASTC_10x5_SRGB_BLOCK: - return "VK_FORMAT_ASTC_10x5_SRGB_BLOCK"; - case VK_FORMAT_ASTC_10x5_UNORM_BLOCK: - return "VK_FORMAT_ASTC_10x5_UNORM_BLOCK"; - case VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT: - return "VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT"; - case VK_FORMAT_ASTC_10x6_SRGB_BLOCK: - return "VK_FORMAT_ASTC_10x6_SRGB_BLOCK"; - case VK_FORMAT_ASTC_10x6_UNORM_BLOCK: - return "VK_FORMAT_ASTC_10x6_UNORM_BLOCK"; - case VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT: - return "VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT"; - case VK_FORMAT_ASTC_10x8_SRGB_BLOCK: - return "VK_FORMAT_ASTC_10x8_SRGB_BLOCK"; - case VK_FORMAT_ASTC_10x8_UNORM_BLOCK: - return "VK_FORMAT_ASTC_10x8_UNORM_BLOCK"; - case VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT: - return "VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT"; - case VK_FORMAT_ASTC_12x10_SRGB_BLOCK: - return "VK_FORMAT_ASTC_12x10_SRGB_BLOCK"; - case VK_FORMAT_ASTC_12x10_UNORM_BLOCK: - return "VK_FORMAT_ASTC_12x10_UNORM_BLOCK"; - case VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT: - return "VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT"; - case VK_FORMAT_ASTC_12x12_SRGB_BLOCK: - return "VK_FORMAT_ASTC_12x12_SRGB_BLOCK"; - case VK_FORMAT_ASTC_12x12_UNORM_BLOCK: - return "VK_FORMAT_ASTC_12x12_UNORM_BLOCK"; - case VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT: - return "VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT"; - case VK_FORMAT_ASTC_4x4_SRGB_BLOCK: - return "VK_FORMAT_ASTC_4x4_SRGB_BLOCK"; - case VK_FORMAT_ASTC_4x4_UNORM_BLOCK: - return "VK_FORMAT_ASTC_4x4_UNORM_BLOCK"; - case VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT: - return "VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT"; - case VK_FORMAT_ASTC_5x4_SRGB_BLOCK: - return "VK_FORMAT_ASTC_5x4_SRGB_BLOCK"; - case VK_FORMAT_ASTC_5x4_UNORM_BLOCK: - return "VK_FORMAT_ASTC_5x4_UNORM_BLOCK"; - case VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT: - return "VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT"; - case VK_FORMAT_ASTC_5x5_SRGB_BLOCK: - return "VK_FORMAT_ASTC_5x5_SRGB_BLOCK"; - case VK_FORMAT_ASTC_5x5_UNORM_BLOCK: - return "VK_FORMAT_ASTC_5x5_UNORM_BLOCK"; - case VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT: - return "VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT"; - case VK_FORMAT_ASTC_6x5_SRGB_BLOCK: - return "VK_FORMAT_ASTC_6x5_SRGB_BLOCK"; - case VK_FORMAT_ASTC_6x5_UNORM_BLOCK: - return "VK_FORMAT_ASTC_6x5_UNORM_BLOCK"; - case VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT: - return "VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT"; - case VK_FORMAT_ASTC_6x6_SRGB_BLOCK: - return "VK_FORMAT_ASTC_6x6_SRGB_BLOCK"; - case VK_FORMAT_ASTC_6x6_UNORM_BLOCK: - return "VK_FORMAT_ASTC_6x6_UNORM_BLOCK"; - case VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT: + case VK_IMAGE_ASPECT_COLOR_BIT: + return "VK_IMAGE_ASPECT_COLOR_BIT"; + case VK_IMAGE_ASPECT_DEPTH_BIT: + return "VK_IMAGE_ASPECT_DEPTH_BIT"; + case VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT: + return "VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT"; + case VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT: + return "VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT"; + case VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT: + return "VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT"; + case VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT: + return "VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT"; + case VK_IMAGE_ASPECT_METADATA_BIT: + return "VK_IMAGE_ASPECT_METADATA_BIT"; + case VK_IMAGE_ASPECT_PLANE_0_BIT: + return "VK_IMAGE_ASPECT_PLANE_0_BIT"; + case VK_IMAGE_ASPECT_PLANE_1_BIT: + return "VK_IMAGE_ASPECT_PLANE_1_BIT"; + case VK_IMAGE_ASPECT_PLANE_2_BIT: + return "VK_IMAGE_ASPECT_PLANE_2_BIT"; + case VK_IMAGE_ASPECT_STENCIL_BIT: + return "VK_IMAGE_ASPECT_STENCIL_BIT"; + default: + return "Unhandled VkImageAspectFlagBits"; + } +} + +static inline std::string string_VkImageAspectFlags(VkImageAspectFlags input_value) +{ + std::string ret; + int index = 0; + while(input_value) { + if (input_value & 1) { + if( !ret.empty()) ret.append("|"); + ret.append(string_VkImageAspectFlagBits(static_cast(1 << index))); + } + ++index; + input_value >>= 1; + } + if( ret.empty()) ret.append(string_VkImageAspectFlagBits(static_cast(0))); + return ret; +} + +static inline const char* string_VkObjectType(VkObjectType input_value) +{ + switch ((VkObjectType)input_value) + { + case VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR: + return "VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR"; + case VK_OBJECT_TYPE_BUFFER: + return "VK_OBJECT_TYPE_BUFFER"; + case VK_OBJECT_TYPE_BUFFER_VIEW: + return "VK_OBJECT_TYPE_BUFFER_VIEW"; + case VK_OBJECT_TYPE_COMMAND_BUFFER: + return "VK_OBJECT_TYPE_COMMAND_BUFFER"; + case VK_OBJECT_TYPE_COMMAND_POOL: + return "VK_OBJECT_TYPE_COMMAND_POOL"; + case VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT: + return "VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT"; + case VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT: + return "VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT"; + case VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR: + return "VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR"; + case VK_OBJECT_TYPE_DESCRIPTOR_POOL: + return "VK_OBJECT_TYPE_DESCRIPTOR_POOL"; + case VK_OBJECT_TYPE_DESCRIPTOR_SET: + return "VK_OBJECT_TYPE_DESCRIPTOR_SET"; + case VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT: + return "VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT"; + case VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE: + return "VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE"; + case VK_OBJECT_TYPE_DEVICE: + return "VK_OBJECT_TYPE_DEVICE"; + case VK_OBJECT_TYPE_DEVICE_MEMORY: + return "VK_OBJECT_TYPE_DEVICE_MEMORY"; + case VK_OBJECT_TYPE_DISPLAY_KHR: + return "VK_OBJECT_TYPE_DISPLAY_KHR"; + case VK_OBJECT_TYPE_DISPLAY_MODE_KHR: + return "VK_OBJECT_TYPE_DISPLAY_MODE_KHR"; + case VK_OBJECT_TYPE_EVENT: + return "VK_OBJECT_TYPE_EVENT"; + case VK_OBJECT_TYPE_FENCE: + return "VK_OBJECT_TYPE_FENCE"; + case VK_OBJECT_TYPE_FRAMEBUFFER: + return "VK_OBJECT_TYPE_FRAMEBUFFER"; + case VK_OBJECT_TYPE_IMAGE: + return "VK_OBJECT_TYPE_IMAGE"; + case VK_OBJECT_TYPE_IMAGE_VIEW: + return "VK_OBJECT_TYPE_IMAGE_VIEW"; + case VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV: + return "VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV"; + case VK_OBJECT_TYPE_INSTANCE: + return "VK_OBJECT_TYPE_INSTANCE"; + case VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL: + return "VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL"; + case VK_OBJECT_TYPE_PHYSICAL_DEVICE: + return "VK_OBJECT_TYPE_PHYSICAL_DEVICE"; + case VK_OBJECT_TYPE_PIPELINE: + return "VK_OBJECT_TYPE_PIPELINE"; + case VK_OBJECT_TYPE_PIPELINE_CACHE: + return "VK_OBJECT_TYPE_PIPELINE_CACHE"; + case VK_OBJECT_TYPE_PIPELINE_LAYOUT: + return "VK_OBJECT_TYPE_PIPELINE_LAYOUT"; + case VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT: + return "VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT"; + case VK_OBJECT_TYPE_QUERY_POOL: + return "VK_OBJECT_TYPE_QUERY_POOL"; + case VK_OBJECT_TYPE_QUEUE: + return "VK_OBJECT_TYPE_QUEUE"; + case VK_OBJECT_TYPE_RENDER_PASS: + return "VK_OBJECT_TYPE_RENDER_PASS"; + case VK_OBJECT_TYPE_SAMPLER: + return "VK_OBJECT_TYPE_SAMPLER"; + case VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION: + return "VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION"; + case VK_OBJECT_TYPE_SEMAPHORE: + return "VK_OBJECT_TYPE_SEMAPHORE"; + case VK_OBJECT_TYPE_SHADER_MODULE: + return "VK_OBJECT_TYPE_SHADER_MODULE"; + case VK_OBJECT_TYPE_SURFACE_KHR: + return "VK_OBJECT_TYPE_SURFACE_KHR"; + case VK_OBJECT_TYPE_SWAPCHAIN_KHR: + return "VK_OBJECT_TYPE_SWAPCHAIN_KHR"; + case VK_OBJECT_TYPE_UNKNOWN: + return "VK_OBJECT_TYPE_UNKNOWN"; + case VK_OBJECT_TYPE_VALIDATION_CACHE_EXT: + return "VK_OBJECT_TYPE_VALIDATION_CACHE_EXT"; + default: + return "Unhandled VkObjectType"; + } +} + +static inline const char* string_VkVendorId(VkVendorId input_value) +{ + switch ((VkVendorId)input_value) + { + case VK_VENDOR_ID_CODEPLAY: + return "VK_VENDOR_ID_CODEPLAY"; + case VK_VENDOR_ID_KAZAN: + return "VK_VENDOR_ID_KAZAN"; + case VK_VENDOR_ID_MESA: + return "VK_VENDOR_ID_MESA"; + case VK_VENDOR_ID_VIV: + return "VK_VENDOR_ID_VIV"; + case VK_VENDOR_ID_VSI: + return "VK_VENDOR_ID_VSI"; + default: + return "Unhandled VkVendorId"; + } +} + +static inline const char* string_VkPipelineCacheHeaderVersion(VkPipelineCacheHeaderVersion input_value) +{ + switch ((VkPipelineCacheHeaderVersion)input_value) + { + case VK_PIPELINE_CACHE_HEADER_VERSION_ONE: + return "VK_PIPELINE_CACHE_HEADER_VERSION_ONE"; + default: + return "Unhandled VkPipelineCacheHeaderVersion"; + } +} + +static inline const char* string_VkSystemAllocationScope(VkSystemAllocationScope input_value) +{ + switch ((VkSystemAllocationScope)input_value) + { + case VK_SYSTEM_ALLOCATION_SCOPE_CACHE: + return "VK_SYSTEM_ALLOCATION_SCOPE_CACHE"; + case VK_SYSTEM_ALLOCATION_SCOPE_COMMAND: + return "VK_SYSTEM_ALLOCATION_SCOPE_COMMAND"; + case VK_SYSTEM_ALLOCATION_SCOPE_DEVICE: + return "VK_SYSTEM_ALLOCATION_SCOPE_DEVICE"; + case VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE: + return "VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE"; + case VK_SYSTEM_ALLOCATION_SCOPE_OBJECT: + return "VK_SYSTEM_ALLOCATION_SCOPE_OBJECT"; + default: + return "Unhandled VkSystemAllocationScope"; + } +} + +static inline const char* string_VkInternalAllocationType(VkInternalAllocationType input_value) +{ + switch ((VkInternalAllocationType)input_value) + { + case VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE: + return "VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE"; + default: + return "Unhandled VkInternalAllocationType"; + } +} + +static inline const char* string_VkFormat(VkFormat input_value) +{ + switch ((VkFormat)input_value) + { + case VK_FORMAT_A1R5G5B5_UNORM_PACK16: + return "VK_FORMAT_A1R5G5B5_UNORM_PACK16"; + case VK_FORMAT_A2B10G10R10_SINT_PACK32: + return "VK_FORMAT_A2B10G10R10_SINT_PACK32"; + case VK_FORMAT_A2B10G10R10_SNORM_PACK32: + return "VK_FORMAT_A2B10G10R10_SNORM_PACK32"; + case VK_FORMAT_A2B10G10R10_SSCALED_PACK32: + return "VK_FORMAT_A2B10G10R10_SSCALED_PACK32"; + case VK_FORMAT_A2B10G10R10_UINT_PACK32: + return "VK_FORMAT_A2B10G10R10_UINT_PACK32"; + case VK_FORMAT_A2B10G10R10_UNORM_PACK32: + return "VK_FORMAT_A2B10G10R10_UNORM_PACK32"; + case VK_FORMAT_A2B10G10R10_USCALED_PACK32: + return "VK_FORMAT_A2B10G10R10_USCALED_PACK32"; + case VK_FORMAT_A2R10G10B10_SINT_PACK32: + return "VK_FORMAT_A2R10G10B10_SINT_PACK32"; + case VK_FORMAT_A2R10G10B10_SNORM_PACK32: + return "VK_FORMAT_A2R10G10B10_SNORM_PACK32"; + case VK_FORMAT_A2R10G10B10_SSCALED_PACK32: + return "VK_FORMAT_A2R10G10B10_SSCALED_PACK32"; + case VK_FORMAT_A2R10G10B10_UINT_PACK32: + return "VK_FORMAT_A2R10G10B10_UINT_PACK32"; + case VK_FORMAT_A2R10G10B10_UNORM_PACK32: + return "VK_FORMAT_A2R10G10B10_UNORM_PACK32"; + case VK_FORMAT_A2R10G10B10_USCALED_PACK32: + return "VK_FORMAT_A2R10G10B10_USCALED_PACK32"; + case VK_FORMAT_A8B8G8R8_SINT_PACK32: + return "VK_FORMAT_A8B8G8R8_SINT_PACK32"; + case VK_FORMAT_A8B8G8R8_SNORM_PACK32: + return "VK_FORMAT_A8B8G8R8_SNORM_PACK32"; + case VK_FORMAT_A8B8G8R8_SRGB_PACK32: + return "VK_FORMAT_A8B8G8R8_SRGB_PACK32"; + case VK_FORMAT_A8B8G8R8_SSCALED_PACK32: + return "VK_FORMAT_A8B8G8R8_SSCALED_PACK32"; + case VK_FORMAT_A8B8G8R8_UINT_PACK32: + return "VK_FORMAT_A8B8G8R8_UINT_PACK32"; + case VK_FORMAT_A8B8G8R8_UNORM_PACK32: + return "VK_FORMAT_A8B8G8R8_UNORM_PACK32"; + case VK_FORMAT_A8B8G8R8_USCALED_PACK32: + return "VK_FORMAT_A8B8G8R8_USCALED_PACK32"; + case VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT: + return "VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT"; + case VK_FORMAT_ASTC_10x10_SRGB_BLOCK: + return "VK_FORMAT_ASTC_10x10_SRGB_BLOCK"; + case VK_FORMAT_ASTC_10x10_UNORM_BLOCK: + return "VK_FORMAT_ASTC_10x10_UNORM_BLOCK"; + case VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT: + return "VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT"; + case VK_FORMAT_ASTC_10x5_SRGB_BLOCK: + return "VK_FORMAT_ASTC_10x5_SRGB_BLOCK"; + case VK_FORMAT_ASTC_10x5_UNORM_BLOCK: + return "VK_FORMAT_ASTC_10x5_UNORM_BLOCK"; + case VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT: + return "VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT"; + case VK_FORMAT_ASTC_10x6_SRGB_BLOCK: + return "VK_FORMAT_ASTC_10x6_SRGB_BLOCK"; + case VK_FORMAT_ASTC_10x6_UNORM_BLOCK: + return "VK_FORMAT_ASTC_10x6_UNORM_BLOCK"; + case VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT: + return "VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT"; + case VK_FORMAT_ASTC_10x8_SRGB_BLOCK: + return "VK_FORMAT_ASTC_10x8_SRGB_BLOCK"; + case VK_FORMAT_ASTC_10x8_UNORM_BLOCK: + return "VK_FORMAT_ASTC_10x8_UNORM_BLOCK"; + case VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT: + return "VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT"; + case VK_FORMAT_ASTC_12x10_SRGB_BLOCK: + return "VK_FORMAT_ASTC_12x10_SRGB_BLOCK"; + case VK_FORMAT_ASTC_12x10_UNORM_BLOCK: + return "VK_FORMAT_ASTC_12x10_UNORM_BLOCK"; + case VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT: + return "VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT"; + case VK_FORMAT_ASTC_12x12_SRGB_BLOCK: + return "VK_FORMAT_ASTC_12x12_SRGB_BLOCK"; + case VK_FORMAT_ASTC_12x12_UNORM_BLOCK: + return "VK_FORMAT_ASTC_12x12_UNORM_BLOCK"; + case VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT: + return "VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT"; + case VK_FORMAT_ASTC_4x4_SRGB_BLOCK: + return "VK_FORMAT_ASTC_4x4_SRGB_BLOCK"; + case VK_FORMAT_ASTC_4x4_UNORM_BLOCK: + return "VK_FORMAT_ASTC_4x4_UNORM_BLOCK"; + case VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT: + return "VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT"; + case VK_FORMAT_ASTC_5x4_SRGB_BLOCK: + return "VK_FORMAT_ASTC_5x4_SRGB_BLOCK"; + case VK_FORMAT_ASTC_5x4_UNORM_BLOCK: + return "VK_FORMAT_ASTC_5x4_UNORM_BLOCK"; + case VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT: + return "VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT"; + case VK_FORMAT_ASTC_5x5_SRGB_BLOCK: + return "VK_FORMAT_ASTC_5x5_SRGB_BLOCK"; + case VK_FORMAT_ASTC_5x5_UNORM_BLOCK: + return "VK_FORMAT_ASTC_5x5_UNORM_BLOCK"; + case VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT: + return "VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT"; + case VK_FORMAT_ASTC_6x5_SRGB_BLOCK: + return "VK_FORMAT_ASTC_6x5_SRGB_BLOCK"; + case VK_FORMAT_ASTC_6x5_UNORM_BLOCK: + return "VK_FORMAT_ASTC_6x5_UNORM_BLOCK"; + case VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT: + return "VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT"; + case VK_FORMAT_ASTC_6x6_SRGB_BLOCK: + return "VK_FORMAT_ASTC_6x6_SRGB_BLOCK"; + case VK_FORMAT_ASTC_6x6_UNORM_BLOCK: + return "VK_FORMAT_ASTC_6x6_UNORM_BLOCK"; + case VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT: return "VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT"; case VK_FORMAT_ASTC_8x5_SRGB_BLOCK: return "VK_FORMAT_ASTC_8x5_SRGB_BLOCK"; @@ -1616,81 +1899,6 @@ static inline std::string string_VkFormatFeatureFlags(VkFormatFeatureFlags input return ret; } -static inline const char* string_VkImageType(VkImageType input_value) -{ - switch ((VkImageType)input_value) - { - case VK_IMAGE_TYPE_1D: - return "VK_IMAGE_TYPE_1D"; - case VK_IMAGE_TYPE_2D: - return "VK_IMAGE_TYPE_2D"; - case VK_IMAGE_TYPE_3D: - return "VK_IMAGE_TYPE_3D"; - default: - return "Unhandled VkImageType"; - } -} - -static inline const char* string_VkImageTiling(VkImageTiling input_value) -{ - switch ((VkImageTiling)input_value) - { - case VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT: - return "VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT"; - case VK_IMAGE_TILING_LINEAR: - return "VK_IMAGE_TILING_LINEAR"; - case VK_IMAGE_TILING_OPTIMAL: - return "VK_IMAGE_TILING_OPTIMAL"; - default: - return "Unhandled VkImageTiling"; - } -} - -static inline const char* string_VkImageUsageFlagBits(VkImageUsageFlagBits input_value) -{ - switch ((VkImageUsageFlagBits)input_value) - { - case VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT: - return "VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"; - case VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT: - return "VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT"; - case VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT: - return "VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT"; - case VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT: - return "VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT"; - case VK_IMAGE_USAGE_SAMPLED_BIT: - return "VK_IMAGE_USAGE_SAMPLED_BIT"; - case VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV: - return "VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV"; - case VK_IMAGE_USAGE_STORAGE_BIT: - return "VK_IMAGE_USAGE_STORAGE_BIT"; - case VK_IMAGE_USAGE_TRANSFER_DST_BIT: - return "VK_IMAGE_USAGE_TRANSFER_DST_BIT"; - case VK_IMAGE_USAGE_TRANSFER_SRC_BIT: - return "VK_IMAGE_USAGE_TRANSFER_SRC_BIT"; - case VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT: - return "VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"; - default: - return "Unhandled VkImageUsageFlagBits"; - } -} - -static inline std::string string_VkImageUsageFlags(VkImageUsageFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkImageUsageFlagBits(static_cast(1 << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkImageUsageFlagBits(static_cast(0))); - return ret; -} - static inline const char* string_VkImageCreateFlagBits(VkImageCreateFlagBits input_value) { switch ((VkImageCreateFlagBits)input_value) @@ -1785,57 +1993,107 @@ static inline std::string string_VkSampleCountFlags(VkSampleCountFlags input_val return ret; } -static inline const char* string_VkPhysicalDeviceType(VkPhysicalDeviceType input_value) +static inline const char* string_VkImageTiling(VkImageTiling input_value) { - switch ((VkPhysicalDeviceType)input_value) + switch ((VkImageTiling)input_value) { - case VK_PHYSICAL_DEVICE_TYPE_CPU: - return "VK_PHYSICAL_DEVICE_TYPE_CPU"; - case VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU: - return "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU"; - case VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU: - return "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU"; - case VK_PHYSICAL_DEVICE_TYPE_OTHER: - return "VK_PHYSICAL_DEVICE_TYPE_OTHER"; - case VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU: - return "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU"; + case VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT: + return "VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT"; + case VK_IMAGE_TILING_LINEAR: + return "VK_IMAGE_TILING_LINEAR"; + case VK_IMAGE_TILING_OPTIMAL: + return "VK_IMAGE_TILING_OPTIMAL"; default: - return "Unhandled VkPhysicalDeviceType"; + return "Unhandled VkImageTiling"; } } -static inline const char* string_VkQueueFlagBits(VkQueueFlagBits input_value) +static inline const char* string_VkImageType(VkImageType input_value) { - switch ((VkQueueFlagBits)input_value) + switch ((VkImageType)input_value) { - case VK_QUEUE_COMPUTE_BIT: - return "VK_QUEUE_COMPUTE_BIT"; - case VK_QUEUE_GRAPHICS_BIT: - return "VK_QUEUE_GRAPHICS_BIT"; - case VK_QUEUE_PROTECTED_BIT: - return "VK_QUEUE_PROTECTED_BIT"; - case VK_QUEUE_SPARSE_BINDING_BIT: - return "VK_QUEUE_SPARSE_BINDING_BIT"; - case VK_QUEUE_TRANSFER_BIT: - return "VK_QUEUE_TRANSFER_BIT"; + case VK_IMAGE_TYPE_1D: + return "VK_IMAGE_TYPE_1D"; + case VK_IMAGE_TYPE_2D: + return "VK_IMAGE_TYPE_2D"; + case VK_IMAGE_TYPE_3D: + return "VK_IMAGE_TYPE_3D"; default: - return "Unhandled VkQueueFlagBits"; + return "Unhandled VkImageType"; } } -static inline std::string string_VkQueueFlags(VkQueueFlags input_value) +static inline const char* string_VkImageUsageFlagBits(VkImageUsageFlagBits input_value) +{ + switch ((VkImageUsageFlagBits)input_value) + { + case VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT: + return "VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT"; + case VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT: + return "VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT"; + case VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT: + return "VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT"; + case VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT: + return "VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT"; + case VK_IMAGE_USAGE_SAMPLED_BIT: + return "VK_IMAGE_USAGE_SAMPLED_BIT"; + case VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV: + return "VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV"; + case VK_IMAGE_USAGE_STORAGE_BIT: + return "VK_IMAGE_USAGE_STORAGE_BIT"; + case VK_IMAGE_USAGE_TRANSFER_DST_BIT: + return "VK_IMAGE_USAGE_TRANSFER_DST_BIT"; + case VK_IMAGE_USAGE_TRANSFER_SRC_BIT: + return "VK_IMAGE_USAGE_TRANSFER_SRC_BIT"; + case VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT: + return "VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT"; + default: + return "Unhandled VkImageUsageFlagBits"; + } +} + +static inline std::string string_VkImageUsageFlags(VkImageUsageFlags input_value) { std::string ret; int index = 0; while(input_value) { if (input_value & 1) { if( !ret.empty()) ret.append("|"); - ret.append(string_VkQueueFlagBits(static_cast(1 << index))); + ret.append(string_VkImageUsageFlagBits(static_cast(1 << index))); } ++index; input_value >>= 1; } - if( ret.empty()) ret.append(string_VkQueueFlagBits(static_cast(0))); + if( ret.empty()) ret.append(string_VkImageUsageFlagBits(static_cast(0))); + return ret; +} + +static inline const char* string_VkMemoryHeapFlagBits(VkMemoryHeapFlagBits input_value) +{ + switch ((VkMemoryHeapFlagBits)input_value) + { + case VK_MEMORY_HEAP_DEVICE_LOCAL_BIT: + return "VK_MEMORY_HEAP_DEVICE_LOCAL_BIT"; + case VK_MEMORY_HEAP_MULTI_INSTANCE_BIT: + return "VK_MEMORY_HEAP_MULTI_INSTANCE_BIT"; + default: + return "Unhandled VkMemoryHeapFlagBits"; + } +} + +static inline std::string string_VkMemoryHeapFlags(VkMemoryHeapFlags input_value) +{ + std::string ret; + int index = 0; + while(input_value) { + if (input_value & 1) { + if( !ret.empty()) ret.append("|"); + ret.append(string_VkMemoryHeapFlagBits(static_cast(1 << index))); + } + ++index; + input_value >>= 1; + } + if( ret.empty()) ret.append(string_VkMemoryHeapFlagBits(static_cast(0))); return ret; } @@ -1880,32 +2138,57 @@ static inline std::string string_VkMemoryPropertyFlags(VkMemoryPropertyFlags inp return ret; } -static inline const char* string_VkMemoryHeapFlagBits(VkMemoryHeapFlagBits input_value) +static inline const char* string_VkPhysicalDeviceType(VkPhysicalDeviceType input_value) { - switch ((VkMemoryHeapFlagBits)input_value) + switch ((VkPhysicalDeviceType)input_value) { - case VK_MEMORY_HEAP_DEVICE_LOCAL_BIT: - return "VK_MEMORY_HEAP_DEVICE_LOCAL_BIT"; - case VK_MEMORY_HEAP_MULTI_INSTANCE_BIT: - return "VK_MEMORY_HEAP_MULTI_INSTANCE_BIT"; + case VK_PHYSICAL_DEVICE_TYPE_CPU: + return "VK_PHYSICAL_DEVICE_TYPE_CPU"; + case VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU: + return "VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU"; + case VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU: + return "VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU"; + case VK_PHYSICAL_DEVICE_TYPE_OTHER: + return "VK_PHYSICAL_DEVICE_TYPE_OTHER"; + case VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU: + return "VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU"; + default: + return "Unhandled VkPhysicalDeviceType"; + } +} + +static inline const char* string_VkQueueFlagBits(VkQueueFlagBits input_value) +{ + switch ((VkQueueFlagBits)input_value) + { + case VK_QUEUE_COMPUTE_BIT: + return "VK_QUEUE_COMPUTE_BIT"; + case VK_QUEUE_GRAPHICS_BIT: + return "VK_QUEUE_GRAPHICS_BIT"; + case VK_QUEUE_PROTECTED_BIT: + return "VK_QUEUE_PROTECTED_BIT"; + case VK_QUEUE_SPARSE_BINDING_BIT: + return "VK_QUEUE_SPARSE_BINDING_BIT"; + case VK_QUEUE_TRANSFER_BIT: + return "VK_QUEUE_TRANSFER_BIT"; default: - return "Unhandled VkMemoryHeapFlagBits"; + return "Unhandled VkQueueFlagBits"; } } -static inline std::string string_VkMemoryHeapFlags(VkMemoryHeapFlags input_value) +static inline std::string string_VkQueueFlags(VkQueueFlags input_value) { std::string ret; int index = 0; while(input_value) { if (input_value & 1) { if( !ret.empty()) ret.append("|"); - ret.append(string_VkMemoryHeapFlagBits(static_cast(1 << index))); + ret.append(string_VkQueueFlagBits(static_cast(1 << index))); } ++index; input_value >>= 1; } - if( ret.empty()) ret.append(string_VkMemoryHeapFlagBits(static_cast(0))); + if( ret.empty()) ret.append(string_VkQueueFlagBits(static_cast(0))); return ret; } @@ -2013,50 +2296,30 @@ static inline std::string string_VkPipelineStageFlags(VkPipelineStageFlags input return ret; } -static inline const char* string_VkImageAspectFlagBits(VkImageAspectFlagBits input_value) +static inline const char* string_VkSparseMemoryBindFlagBits(VkSparseMemoryBindFlagBits input_value) { - switch ((VkImageAspectFlagBits)input_value) + switch ((VkSparseMemoryBindFlagBits)input_value) { - case VK_IMAGE_ASPECT_COLOR_BIT: - return "VK_IMAGE_ASPECT_COLOR_BIT"; - case VK_IMAGE_ASPECT_DEPTH_BIT: - return "VK_IMAGE_ASPECT_DEPTH_BIT"; - case VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT: - return "VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT"; - case VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT: - return "VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT"; - case VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT: - return "VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT"; - case VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT: - return "VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT"; - case VK_IMAGE_ASPECT_METADATA_BIT: - return "VK_IMAGE_ASPECT_METADATA_BIT"; - case VK_IMAGE_ASPECT_PLANE_0_BIT: - return "VK_IMAGE_ASPECT_PLANE_0_BIT"; - case VK_IMAGE_ASPECT_PLANE_1_BIT: - return "VK_IMAGE_ASPECT_PLANE_1_BIT"; - case VK_IMAGE_ASPECT_PLANE_2_BIT: - return "VK_IMAGE_ASPECT_PLANE_2_BIT"; - case VK_IMAGE_ASPECT_STENCIL_BIT: - return "VK_IMAGE_ASPECT_STENCIL_BIT"; + case VK_SPARSE_MEMORY_BIND_METADATA_BIT: + return "VK_SPARSE_MEMORY_BIND_METADATA_BIT"; default: - return "Unhandled VkImageAspectFlagBits"; + return "Unhandled VkSparseMemoryBindFlagBits"; } } -static inline std::string string_VkImageAspectFlags(VkImageAspectFlags input_value) +static inline std::string string_VkSparseMemoryBindFlags(VkSparseMemoryBindFlags input_value) { std::string ret; int index = 0; while(input_value) { if (input_value & 1) { if( !ret.empty()) ret.append("|"); - ret.append(string_VkImageAspectFlagBits(static_cast(1 << index))); + ret.append(string_VkSparseMemoryBindFlagBits(static_cast(1 << index))); } ++index; input_value >>= 1; } - if( ret.empty()) ret.append(string_VkImageAspectFlagBits(static_cast(0))); + if( ret.empty()) ret.append(string_VkSparseMemoryBindFlagBits(static_cast(0))); return ret; } @@ -2091,33 +2354,6 @@ static inline std::string string_VkSparseImageFormatFlags(VkSparseImageFormatFla return ret; } -static inline const char* string_VkSparseMemoryBindFlagBits(VkSparseMemoryBindFlagBits input_value) -{ - switch ((VkSparseMemoryBindFlagBits)input_value) - { - case VK_SPARSE_MEMORY_BIND_METADATA_BIT: - return "VK_SPARSE_MEMORY_BIND_METADATA_BIT"; - default: - return "Unhandled VkSparseMemoryBindFlagBits"; - } -} - -static inline std::string string_VkSparseMemoryBindFlags(VkSparseMemoryBindFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkSparseMemoryBindFlagBits(static_cast(1 << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkSparseMemoryBindFlagBits(static_cast(0))); - return ret; -} - static inline const char* string_VkFenceCreateFlagBits(VkFenceCreateFlagBits input_value) { switch ((VkFenceCreateFlagBits)input_value) @@ -2145,31 +2381,6 @@ static inline std::string string_VkFenceCreateFlags(VkFenceCreateFlags input_val return ret; } -static inline const char* string_VkQueryType(VkQueryType input_value) -{ - switch ((VkQueryType)input_value) - { - case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR: - return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR"; - case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR: - return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR"; - case VK_QUERY_TYPE_OCCLUSION: - return "VK_QUERY_TYPE_OCCLUSION"; - case VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL: - return "VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL"; - case VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR: - return "VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR"; - case VK_QUERY_TYPE_PIPELINE_STATISTICS: - return "VK_QUERY_TYPE_PIPELINE_STATISTICS"; - case VK_QUERY_TYPE_TIMESTAMP: - return "VK_QUERY_TYPE_TIMESTAMP"; - case VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT: - return "VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT"; - default: - return "Unhandled VkQueryType"; - } -} - static inline const char* string_VkQueryPipelineStatisticFlagBits(VkQueryPipelineStatisticFlagBits input_value) { switch ((VkQueryPipelineStatisticFlagBits)input_value) @@ -2217,6 +2428,31 @@ static inline std::string string_VkQueryPipelineStatisticFlags(VkQueryPipelineSt return ret; } +static inline const char* string_VkQueryType(VkQueryType input_value) +{ + switch ((VkQueryType)input_value) + { + case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR: + return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR"; + case VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR: + return "VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR"; + case VK_QUERY_TYPE_OCCLUSION: + return "VK_QUERY_TYPE_OCCLUSION"; + case VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL: + return "VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL"; + case VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR: + return "VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR"; + case VK_QUERY_TYPE_PIPELINE_STATISTICS: + return "VK_QUERY_TYPE_PIPELINE_STATISTICS"; + case VK_QUERY_TYPE_TIMESTAMP: + return "VK_QUERY_TYPE_TIMESTAMP"; + case VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT: + return "VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT"; + default: + return "Unhandled VkQueryType"; + } +} + static inline const char* string_VkQueryResultFlagBits(VkQueryResultFlagBits input_value) { switch ((VkQueryResultFlagBits)input_value) @@ -2254,248 +2490,417 @@ static inline const char* string_VkBufferCreateFlagBits(VkBufferCreateFlagBits i { switch ((VkBufferCreateFlagBits)input_value) { - case VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT: - return "VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"; - case VK_BUFFER_CREATE_PROTECTED_BIT: - return "VK_BUFFER_CREATE_PROTECTED_BIT"; - case VK_BUFFER_CREATE_SPARSE_ALIASED_BIT: - return "VK_BUFFER_CREATE_SPARSE_ALIASED_BIT"; - case VK_BUFFER_CREATE_SPARSE_BINDING_BIT: - return "VK_BUFFER_CREATE_SPARSE_BINDING_BIT"; - case VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT: - return "VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT"; + case VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT: + return "VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT"; + case VK_BUFFER_CREATE_PROTECTED_BIT: + return "VK_BUFFER_CREATE_PROTECTED_BIT"; + case VK_BUFFER_CREATE_SPARSE_ALIASED_BIT: + return "VK_BUFFER_CREATE_SPARSE_ALIASED_BIT"; + case VK_BUFFER_CREATE_SPARSE_BINDING_BIT: + return "VK_BUFFER_CREATE_SPARSE_BINDING_BIT"; + case VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT: + return "VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT"; + default: + return "Unhandled VkBufferCreateFlagBits"; + } +} + +static inline std::string string_VkBufferCreateFlags(VkBufferCreateFlags input_value) +{ + std::string ret; + int index = 0; + while(input_value) { + if (input_value & 1) { + if( !ret.empty()) ret.append("|"); + ret.append(string_VkBufferCreateFlagBits(static_cast(1 << index))); + } + ++index; + input_value >>= 1; + } + if( ret.empty()) ret.append(string_VkBufferCreateFlagBits(static_cast(0))); + return ret; +} + +static inline const char* string_VkBufferUsageFlagBits(VkBufferUsageFlagBits input_value) +{ + switch ((VkBufferUsageFlagBits)input_value) + { + case VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT: + return "VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT"; + case VK_BUFFER_USAGE_INDEX_BUFFER_BIT: + return "VK_BUFFER_USAGE_INDEX_BUFFER_BIT"; + case VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT: + return "VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT"; + case VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR: + return "VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR"; + case VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT: + return "VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT"; + case VK_BUFFER_USAGE_STORAGE_BUFFER_BIT: + return "VK_BUFFER_USAGE_STORAGE_BUFFER_BIT"; + case VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT: + return "VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT"; + case VK_BUFFER_USAGE_TRANSFER_DST_BIT: + return "VK_BUFFER_USAGE_TRANSFER_DST_BIT"; + case VK_BUFFER_USAGE_TRANSFER_SRC_BIT: + return "VK_BUFFER_USAGE_TRANSFER_SRC_BIT"; + case VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT: + return "VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT"; + case VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT: + return "VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT"; + case VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT: + return "VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT"; + case VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT: + return "VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT"; + case VK_BUFFER_USAGE_VERTEX_BUFFER_BIT: + return "VK_BUFFER_USAGE_VERTEX_BUFFER_BIT"; + default: + return "Unhandled VkBufferUsageFlagBits"; + } +} + +static inline std::string string_VkBufferUsageFlags(VkBufferUsageFlags input_value) +{ + std::string ret; + int index = 0; + while(input_value) { + if (input_value & 1) { + if( !ret.empty()) ret.append("|"); + ret.append(string_VkBufferUsageFlagBits(static_cast(1 << index))); + } + ++index; + input_value >>= 1; + } + if( ret.empty()) ret.append(string_VkBufferUsageFlagBits(static_cast(0))); + return ret; +} + +static inline const char* string_VkSharingMode(VkSharingMode input_value) +{ + switch ((VkSharingMode)input_value) + { + case VK_SHARING_MODE_CONCURRENT: + return "VK_SHARING_MODE_CONCURRENT"; + case VK_SHARING_MODE_EXCLUSIVE: + return "VK_SHARING_MODE_EXCLUSIVE"; + default: + return "Unhandled VkSharingMode"; + } +} + +static inline const char* string_VkComponentSwizzle(VkComponentSwizzle input_value) +{ + switch ((VkComponentSwizzle)input_value) + { + case VK_COMPONENT_SWIZZLE_A: + return "VK_COMPONENT_SWIZZLE_A"; + case VK_COMPONENT_SWIZZLE_B: + return "VK_COMPONENT_SWIZZLE_B"; + case VK_COMPONENT_SWIZZLE_G: + return "VK_COMPONENT_SWIZZLE_G"; + case VK_COMPONENT_SWIZZLE_IDENTITY: + return "VK_COMPONENT_SWIZZLE_IDENTITY"; + case VK_COMPONENT_SWIZZLE_ONE: + return "VK_COMPONENT_SWIZZLE_ONE"; + case VK_COMPONENT_SWIZZLE_R: + return "VK_COMPONENT_SWIZZLE_R"; + case VK_COMPONENT_SWIZZLE_ZERO: + return "VK_COMPONENT_SWIZZLE_ZERO"; + default: + return "Unhandled VkComponentSwizzle"; + } +} + +static inline const char* string_VkImageViewCreateFlagBits(VkImageViewCreateFlagBits input_value) +{ + switch ((VkImageViewCreateFlagBits)input_value) + { + case VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT: + return "VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT"; default: - return "Unhandled VkBufferCreateFlagBits"; + return "Unhandled VkImageViewCreateFlagBits"; } } -static inline std::string string_VkBufferCreateFlags(VkBufferCreateFlags input_value) +static inline std::string string_VkImageViewCreateFlags(VkImageViewCreateFlags input_value) { std::string ret; int index = 0; while(input_value) { if (input_value & 1) { if( !ret.empty()) ret.append("|"); - ret.append(string_VkBufferCreateFlagBits(static_cast(1 << index))); + ret.append(string_VkImageViewCreateFlagBits(static_cast(1 << index))); } ++index; input_value >>= 1; } - if( ret.empty()) ret.append(string_VkBufferCreateFlagBits(static_cast(0))); + if( ret.empty()) ret.append(string_VkImageViewCreateFlagBits(static_cast(0))); return ret; } -static inline const char* string_VkBufferUsageFlagBits(VkBufferUsageFlagBits input_value) +static inline const char* string_VkImageViewType(VkImageViewType input_value) { - switch ((VkBufferUsageFlagBits)input_value) + switch ((VkImageViewType)input_value) { - case VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT: - return "VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT"; - case VK_BUFFER_USAGE_INDEX_BUFFER_BIT: - return "VK_BUFFER_USAGE_INDEX_BUFFER_BIT"; - case VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT: - return "VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT"; - case VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR: - return "VK_BUFFER_USAGE_RAY_TRACING_BIT_KHR"; - case VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT: - return "VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT"; - case VK_BUFFER_USAGE_STORAGE_BUFFER_BIT: - return "VK_BUFFER_USAGE_STORAGE_BUFFER_BIT"; - case VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT: - return "VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT"; - case VK_BUFFER_USAGE_TRANSFER_DST_BIT: - return "VK_BUFFER_USAGE_TRANSFER_DST_BIT"; - case VK_BUFFER_USAGE_TRANSFER_SRC_BIT: - return "VK_BUFFER_USAGE_TRANSFER_SRC_BIT"; - case VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT: - return "VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT"; - case VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT: - return "VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT"; - case VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT: - return "VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT"; - case VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT: - return "VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT"; - case VK_BUFFER_USAGE_VERTEX_BUFFER_BIT: - return "VK_BUFFER_USAGE_VERTEX_BUFFER_BIT"; + case VK_IMAGE_VIEW_TYPE_1D: + return "VK_IMAGE_VIEW_TYPE_1D"; + case VK_IMAGE_VIEW_TYPE_1D_ARRAY: + return "VK_IMAGE_VIEW_TYPE_1D_ARRAY"; + case VK_IMAGE_VIEW_TYPE_2D: + return "VK_IMAGE_VIEW_TYPE_2D"; + case VK_IMAGE_VIEW_TYPE_2D_ARRAY: + return "VK_IMAGE_VIEW_TYPE_2D_ARRAY"; + case VK_IMAGE_VIEW_TYPE_3D: + return "VK_IMAGE_VIEW_TYPE_3D"; + case VK_IMAGE_VIEW_TYPE_CUBE: + return "VK_IMAGE_VIEW_TYPE_CUBE"; + case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY: + return "VK_IMAGE_VIEW_TYPE_CUBE_ARRAY"; default: - return "Unhandled VkBufferUsageFlagBits"; + return "Unhandled VkImageViewType"; } } -static inline std::string string_VkBufferUsageFlags(VkBufferUsageFlags input_value) +static inline const char* string_VkPipelineCacheCreateFlagBits(VkPipelineCacheCreateFlagBits input_value) +{ + switch ((VkPipelineCacheCreateFlagBits)input_value) + { + case VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT: + return "VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT"; + default: + return "Unhandled VkPipelineCacheCreateFlagBits"; + } +} + +static inline std::string string_VkPipelineCacheCreateFlags(VkPipelineCacheCreateFlags input_value) { std::string ret; int index = 0; while(input_value) { if (input_value & 1) { if( !ret.empty()) ret.append("|"); - ret.append(string_VkBufferUsageFlagBits(static_cast(1 << index))); + ret.append(string_VkPipelineCacheCreateFlagBits(static_cast(1 << index))); } ++index; input_value >>= 1; } - if( ret.empty()) ret.append(string_VkBufferUsageFlagBits(static_cast(0))); + if( ret.empty()) ret.append(string_VkPipelineCacheCreateFlagBits(static_cast(0))); return ret; } -static inline const char* string_VkSharingMode(VkSharingMode input_value) +static inline const char* string_VkBlendFactor(VkBlendFactor input_value) { - switch ((VkSharingMode)input_value) + switch ((VkBlendFactor)input_value) { - case VK_SHARING_MODE_CONCURRENT: - return "VK_SHARING_MODE_CONCURRENT"; - case VK_SHARING_MODE_EXCLUSIVE: - return "VK_SHARING_MODE_EXCLUSIVE"; + case VK_BLEND_FACTOR_CONSTANT_ALPHA: + return "VK_BLEND_FACTOR_CONSTANT_ALPHA"; + case VK_BLEND_FACTOR_CONSTANT_COLOR: + return "VK_BLEND_FACTOR_CONSTANT_COLOR"; + case VK_BLEND_FACTOR_DST_ALPHA: + return "VK_BLEND_FACTOR_DST_ALPHA"; + case VK_BLEND_FACTOR_DST_COLOR: + return "VK_BLEND_FACTOR_DST_COLOR"; + case VK_BLEND_FACTOR_ONE: + return "VK_BLEND_FACTOR_ONE"; + case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA: + return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA"; + case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR: + return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR"; + case VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA: + return "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA"; + case VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR: + return "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR"; + case VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA: + return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA"; + case VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR: + return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR"; + case VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA: + return "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA"; + case VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR: + return "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR"; + case VK_BLEND_FACTOR_SRC1_ALPHA: + return "VK_BLEND_FACTOR_SRC1_ALPHA"; + case VK_BLEND_FACTOR_SRC1_COLOR: + return "VK_BLEND_FACTOR_SRC1_COLOR"; + case VK_BLEND_FACTOR_SRC_ALPHA: + return "VK_BLEND_FACTOR_SRC_ALPHA"; + case VK_BLEND_FACTOR_SRC_ALPHA_SATURATE: + return "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE"; + case VK_BLEND_FACTOR_SRC_COLOR: + return "VK_BLEND_FACTOR_SRC_COLOR"; + case VK_BLEND_FACTOR_ZERO: + return "VK_BLEND_FACTOR_ZERO"; default: - return "Unhandled VkSharingMode"; + return "Unhandled VkBlendFactor"; } } -static inline const char* string_VkImageLayout(VkImageLayout input_value) +static inline const char* string_VkBlendOp(VkBlendOp input_value) { - switch ((VkImageLayout)input_value) + switch ((VkBlendOp)input_value) { - case VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL: - return "VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL"; - case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL: - return "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL"; - case VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL: - return "VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL"; - case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL: - return "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL"; - case VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL: - return "VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL"; - case VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL: - return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL"; - case VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL: - return "VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL"; - case VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT: - return "VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT"; - case VK_IMAGE_LAYOUT_GENERAL: - return "VK_IMAGE_LAYOUT_GENERAL"; - case VK_IMAGE_LAYOUT_PREINITIALIZED: - return "VK_IMAGE_LAYOUT_PREINITIALIZED"; - case VK_IMAGE_LAYOUT_PRESENT_SRC_KHR: - return "VK_IMAGE_LAYOUT_PRESENT_SRC_KHR"; - case VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL: - return "VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL"; - case VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV: - return "VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV"; - case VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR: - return "VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR"; - case VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL: - return "VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL"; - case VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL: - return "VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL"; - case VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL: - return "VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL"; - case VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL: - return "VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL"; - case VK_IMAGE_LAYOUT_UNDEFINED: - return "VK_IMAGE_LAYOUT_UNDEFINED"; + case VK_BLEND_OP_ADD: + return "VK_BLEND_OP_ADD"; + case VK_BLEND_OP_BLUE_EXT: + return "VK_BLEND_OP_BLUE_EXT"; + case VK_BLEND_OP_COLORBURN_EXT: + return "VK_BLEND_OP_COLORBURN_EXT"; + case VK_BLEND_OP_COLORDODGE_EXT: + return "VK_BLEND_OP_COLORDODGE_EXT"; + case VK_BLEND_OP_CONTRAST_EXT: + return "VK_BLEND_OP_CONTRAST_EXT"; + case VK_BLEND_OP_DARKEN_EXT: + return "VK_BLEND_OP_DARKEN_EXT"; + case VK_BLEND_OP_DIFFERENCE_EXT: + return "VK_BLEND_OP_DIFFERENCE_EXT"; + case VK_BLEND_OP_DST_ATOP_EXT: + return "VK_BLEND_OP_DST_ATOP_EXT"; + case VK_BLEND_OP_DST_EXT: + return "VK_BLEND_OP_DST_EXT"; + case VK_BLEND_OP_DST_IN_EXT: + return "VK_BLEND_OP_DST_IN_EXT"; + case VK_BLEND_OP_DST_OUT_EXT: + return "VK_BLEND_OP_DST_OUT_EXT"; + case VK_BLEND_OP_DST_OVER_EXT: + return "VK_BLEND_OP_DST_OVER_EXT"; + case VK_BLEND_OP_EXCLUSION_EXT: + return "VK_BLEND_OP_EXCLUSION_EXT"; + case VK_BLEND_OP_GREEN_EXT: + return "VK_BLEND_OP_GREEN_EXT"; + case VK_BLEND_OP_HARDLIGHT_EXT: + return "VK_BLEND_OP_HARDLIGHT_EXT"; + case VK_BLEND_OP_HARDMIX_EXT: + return "VK_BLEND_OP_HARDMIX_EXT"; + case VK_BLEND_OP_HSL_COLOR_EXT: + return "VK_BLEND_OP_HSL_COLOR_EXT"; + case VK_BLEND_OP_HSL_HUE_EXT: + return "VK_BLEND_OP_HSL_HUE_EXT"; + case VK_BLEND_OP_HSL_LUMINOSITY_EXT: + return "VK_BLEND_OP_HSL_LUMINOSITY_EXT"; + case VK_BLEND_OP_HSL_SATURATION_EXT: + return "VK_BLEND_OP_HSL_SATURATION_EXT"; + case VK_BLEND_OP_INVERT_EXT: + return "VK_BLEND_OP_INVERT_EXT"; + case VK_BLEND_OP_INVERT_OVG_EXT: + return "VK_BLEND_OP_INVERT_OVG_EXT"; + case VK_BLEND_OP_INVERT_RGB_EXT: + return "VK_BLEND_OP_INVERT_RGB_EXT"; + case VK_BLEND_OP_LIGHTEN_EXT: + return "VK_BLEND_OP_LIGHTEN_EXT"; + case VK_BLEND_OP_LINEARBURN_EXT: + return "VK_BLEND_OP_LINEARBURN_EXT"; + case VK_BLEND_OP_LINEARDODGE_EXT: + return "VK_BLEND_OP_LINEARDODGE_EXT"; + case VK_BLEND_OP_LINEARLIGHT_EXT: + return "VK_BLEND_OP_LINEARLIGHT_EXT"; + case VK_BLEND_OP_MAX: + return "VK_BLEND_OP_MAX"; + case VK_BLEND_OP_MIN: + return "VK_BLEND_OP_MIN"; + case VK_BLEND_OP_MINUS_CLAMPED_EXT: + return "VK_BLEND_OP_MINUS_CLAMPED_EXT"; + case VK_BLEND_OP_MINUS_EXT: + return "VK_BLEND_OP_MINUS_EXT"; + case VK_BLEND_OP_MULTIPLY_EXT: + return "VK_BLEND_OP_MULTIPLY_EXT"; + case VK_BLEND_OP_OVERLAY_EXT: + return "VK_BLEND_OP_OVERLAY_EXT"; + case VK_BLEND_OP_PINLIGHT_EXT: + return "VK_BLEND_OP_PINLIGHT_EXT"; + case VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT: + return "VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT"; + case VK_BLEND_OP_PLUS_CLAMPED_EXT: + return "VK_BLEND_OP_PLUS_CLAMPED_EXT"; + case VK_BLEND_OP_PLUS_DARKER_EXT: + return "VK_BLEND_OP_PLUS_DARKER_EXT"; + case VK_BLEND_OP_PLUS_EXT: + return "VK_BLEND_OP_PLUS_EXT"; + case VK_BLEND_OP_RED_EXT: + return "VK_BLEND_OP_RED_EXT"; + case VK_BLEND_OP_REVERSE_SUBTRACT: + return "VK_BLEND_OP_REVERSE_SUBTRACT"; + case VK_BLEND_OP_SCREEN_EXT: + return "VK_BLEND_OP_SCREEN_EXT"; + case VK_BLEND_OP_SOFTLIGHT_EXT: + return "VK_BLEND_OP_SOFTLIGHT_EXT"; + case VK_BLEND_OP_SRC_ATOP_EXT: + return "VK_BLEND_OP_SRC_ATOP_EXT"; + case VK_BLEND_OP_SRC_EXT: + return "VK_BLEND_OP_SRC_EXT"; + case VK_BLEND_OP_SRC_IN_EXT: + return "VK_BLEND_OP_SRC_IN_EXT"; + case VK_BLEND_OP_SRC_OUT_EXT: + return "VK_BLEND_OP_SRC_OUT_EXT"; + case VK_BLEND_OP_SRC_OVER_EXT: + return "VK_BLEND_OP_SRC_OVER_EXT"; + case VK_BLEND_OP_SUBTRACT: + return "VK_BLEND_OP_SUBTRACT"; + case VK_BLEND_OP_VIVIDLIGHT_EXT: + return "VK_BLEND_OP_VIVIDLIGHT_EXT"; + case VK_BLEND_OP_XOR_EXT: + return "VK_BLEND_OP_XOR_EXT"; + case VK_BLEND_OP_ZERO_EXT: + return "VK_BLEND_OP_ZERO_EXT"; default: - return "Unhandled VkImageLayout"; + return "Unhandled VkBlendOp"; } } -static inline const char* string_VkImageViewCreateFlagBits(VkImageViewCreateFlagBits input_value) +static inline const char* string_VkColorComponentFlagBits(VkColorComponentFlagBits input_value) { - switch ((VkImageViewCreateFlagBits)input_value) + switch ((VkColorComponentFlagBits)input_value) { - case VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT: - return "VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT"; + case VK_COLOR_COMPONENT_A_BIT: + return "VK_COLOR_COMPONENT_A_BIT"; + case VK_COLOR_COMPONENT_B_BIT: + return "VK_COLOR_COMPONENT_B_BIT"; + case VK_COLOR_COMPONENT_G_BIT: + return "VK_COLOR_COMPONENT_G_BIT"; + case VK_COLOR_COMPONENT_R_BIT: + return "VK_COLOR_COMPONENT_R_BIT"; default: - return "Unhandled VkImageViewCreateFlagBits"; + return "Unhandled VkColorComponentFlagBits"; } } -static inline std::string string_VkImageViewCreateFlags(VkImageViewCreateFlags input_value) +static inline std::string string_VkColorComponentFlags(VkColorComponentFlags input_value) { std::string ret; int index = 0; while(input_value) { if (input_value & 1) { if( !ret.empty()) ret.append("|"); - ret.append(string_VkImageViewCreateFlagBits(static_cast(1 << index))); + ret.append(string_VkColorComponentFlagBits(static_cast(1 << index))); } ++index; input_value >>= 1; } - if( ret.empty()) ret.append(string_VkImageViewCreateFlagBits(static_cast(0))); + if( ret.empty()) ret.append(string_VkColorComponentFlagBits(static_cast(0))); return ret; } -static inline const char* string_VkImageViewType(VkImageViewType input_value) -{ - switch ((VkImageViewType)input_value) - { - case VK_IMAGE_VIEW_TYPE_1D: - return "VK_IMAGE_VIEW_TYPE_1D"; - case VK_IMAGE_VIEW_TYPE_1D_ARRAY: - return "VK_IMAGE_VIEW_TYPE_1D_ARRAY"; - case VK_IMAGE_VIEW_TYPE_2D: - return "VK_IMAGE_VIEW_TYPE_2D"; - case VK_IMAGE_VIEW_TYPE_2D_ARRAY: - return "VK_IMAGE_VIEW_TYPE_2D_ARRAY"; - case VK_IMAGE_VIEW_TYPE_3D: - return "VK_IMAGE_VIEW_TYPE_3D"; - case VK_IMAGE_VIEW_TYPE_CUBE: - return "VK_IMAGE_VIEW_TYPE_CUBE"; - case VK_IMAGE_VIEW_TYPE_CUBE_ARRAY: - return "VK_IMAGE_VIEW_TYPE_CUBE_ARRAY"; - default: - return "Unhandled VkImageViewType"; - } -} - -static inline const char* string_VkComponentSwizzle(VkComponentSwizzle input_value) -{ - switch ((VkComponentSwizzle)input_value) - { - case VK_COMPONENT_SWIZZLE_A: - return "VK_COMPONENT_SWIZZLE_A"; - case VK_COMPONENT_SWIZZLE_B: - return "VK_COMPONENT_SWIZZLE_B"; - case VK_COMPONENT_SWIZZLE_G: - return "VK_COMPONENT_SWIZZLE_G"; - case VK_COMPONENT_SWIZZLE_IDENTITY: - return "VK_COMPONENT_SWIZZLE_IDENTITY"; - case VK_COMPONENT_SWIZZLE_ONE: - return "VK_COMPONENT_SWIZZLE_ONE"; - case VK_COMPONENT_SWIZZLE_R: - return "VK_COMPONENT_SWIZZLE_R"; - case VK_COMPONENT_SWIZZLE_ZERO: - return "VK_COMPONENT_SWIZZLE_ZERO"; - default: - return "Unhandled VkComponentSwizzle"; - } -} - -static inline const char* string_VkPipelineCacheCreateFlagBits(VkPipelineCacheCreateFlagBits input_value) +static inline const char* string_VkCompareOp(VkCompareOp input_value) { - switch ((VkPipelineCacheCreateFlagBits)input_value) + switch ((VkCompareOp)input_value) { - case VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT: - return "VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT"; + case VK_COMPARE_OP_ALWAYS: + return "VK_COMPARE_OP_ALWAYS"; + case VK_COMPARE_OP_EQUAL: + return "VK_COMPARE_OP_EQUAL"; + case VK_COMPARE_OP_GREATER: + return "VK_COMPARE_OP_GREATER"; + case VK_COMPARE_OP_GREATER_OR_EQUAL: + return "VK_COMPARE_OP_GREATER_OR_EQUAL"; + case VK_COMPARE_OP_LESS: + return "VK_COMPARE_OP_LESS"; + case VK_COMPARE_OP_LESS_OR_EQUAL: + return "VK_COMPARE_OP_LESS_OR_EQUAL"; + case VK_COMPARE_OP_NEVER: + return "VK_COMPARE_OP_NEVER"; + case VK_COMPARE_OP_NOT_EQUAL: + return "VK_COMPARE_OP_NOT_EQUAL"; default: - return "Unhandled VkPipelineCacheCreateFlagBits"; - } -} - -static inline std::string string_VkPipelineCacheCreateFlags(VkPipelineCacheCreateFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkPipelineCacheCreateFlagBits(static_cast(1 << index))); - } - ++index; - input_value >>= 1; + return "Unhandled VkCompareOp"; } - if( ret.empty()) ret.append(string_VkPipelineCacheCreateFlagBits(static_cast(0))); - return ret; } static inline const char* string_VkPipelineCreateFlagBits(VkPipelineCreateFlagBits input_value) @@ -2645,67 +3050,6 @@ static inline std::string string_VkShaderStageFlags(VkShaderStageFlags input_val return ret; } -static inline const char* string_VkVertexInputRate(VkVertexInputRate input_value) -{ - switch ((VkVertexInputRate)input_value) - { - case VK_VERTEX_INPUT_RATE_INSTANCE: - return "VK_VERTEX_INPUT_RATE_INSTANCE"; - case VK_VERTEX_INPUT_RATE_VERTEX: - return "VK_VERTEX_INPUT_RATE_VERTEX"; - default: - return "Unhandled VkVertexInputRate"; - } -} - -static inline const char* string_VkPrimitiveTopology(VkPrimitiveTopology input_value) -{ - switch ((VkPrimitiveTopology)input_value) - { - case VK_PRIMITIVE_TOPOLOGY_LINE_LIST: - return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST"; - case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY: - return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY"; - case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP: - return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP"; - case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY: - return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY"; - case VK_PRIMITIVE_TOPOLOGY_PATCH_LIST: - return "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST"; - case VK_PRIMITIVE_TOPOLOGY_POINT_LIST: - return "VK_PRIMITIVE_TOPOLOGY_POINT_LIST"; - case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN: - return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN"; - case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST: - return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST"; - case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY: - return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY"; - case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP: - return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP"; - case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY: - return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY"; - default: - return "Unhandled VkPrimitiveTopology"; - } -} - -static inline const char* string_VkPolygonMode(VkPolygonMode input_value) -{ - switch ((VkPolygonMode)input_value) - { - case VK_POLYGON_MODE_FILL: - return "VK_POLYGON_MODE_FILL"; - case VK_POLYGON_MODE_FILL_RECTANGLE_NV: - return "VK_POLYGON_MODE_FILL_RECTANGLE_NV"; - case VK_POLYGON_MODE_LINE: - return "VK_POLYGON_MODE_LINE"; - case VK_POLYGON_MODE_POINT: - return "VK_POLYGON_MODE_POINT"; - default: - return "Unhandled VkPolygonMode"; - } -} - static inline const char* string_VkCullModeFlagBits(VkCullModeFlagBits input_value) { switch ((VkCullModeFlagBits)input_value) @@ -2735,45 +3079,122 @@ static inline std::string string_VkCullModeFlags(VkCullModeFlags input_value) ++index; input_value >>= 1; } - if( ret.empty()) ret.append(string_VkCullModeFlagBits(static_cast(0))); - return ret; + if( ret.empty()) ret.append(string_VkCullModeFlagBits(static_cast(0))); + return ret; +} + +static inline const char* string_VkDynamicState(VkDynamicState input_value) +{ + switch ((VkDynamicState)input_value) + { + case VK_DYNAMIC_STATE_BLEND_CONSTANTS: + return "VK_DYNAMIC_STATE_BLEND_CONSTANTS"; + case VK_DYNAMIC_STATE_DEPTH_BIAS: + return "VK_DYNAMIC_STATE_DEPTH_BIAS"; + case VK_DYNAMIC_STATE_DEPTH_BOUNDS: + return "VK_DYNAMIC_STATE_DEPTH_BOUNDS"; + case VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT: + return "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT"; + case VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV: + return "VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV"; + case VK_DYNAMIC_STATE_LINE_STIPPLE_EXT: + return "VK_DYNAMIC_STATE_LINE_STIPPLE_EXT"; + case VK_DYNAMIC_STATE_LINE_WIDTH: + return "VK_DYNAMIC_STATE_LINE_WIDTH"; + case VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT: + return "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT"; + case VK_DYNAMIC_STATE_SCISSOR: + return "VK_DYNAMIC_STATE_SCISSOR"; + case VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK: + return "VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK"; + case VK_DYNAMIC_STATE_STENCIL_REFERENCE: + return "VK_DYNAMIC_STATE_STENCIL_REFERENCE"; + case VK_DYNAMIC_STATE_STENCIL_WRITE_MASK: + return "VK_DYNAMIC_STATE_STENCIL_WRITE_MASK"; + case VK_DYNAMIC_STATE_VIEWPORT: + return "VK_DYNAMIC_STATE_VIEWPORT"; + case VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV: + return "VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV"; + case VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV: + return "VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV"; + case VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV: + return "VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV"; + default: + return "Unhandled VkDynamicState"; + } +} + +static inline const char* string_VkFrontFace(VkFrontFace input_value) +{ + switch ((VkFrontFace)input_value) + { + case VK_FRONT_FACE_CLOCKWISE: + return "VK_FRONT_FACE_CLOCKWISE"; + case VK_FRONT_FACE_COUNTER_CLOCKWISE: + return "VK_FRONT_FACE_COUNTER_CLOCKWISE"; + default: + return "Unhandled VkFrontFace"; + } +} + +static inline const char* string_VkVertexInputRate(VkVertexInputRate input_value) +{ + switch ((VkVertexInputRate)input_value) + { + case VK_VERTEX_INPUT_RATE_INSTANCE: + return "VK_VERTEX_INPUT_RATE_INSTANCE"; + case VK_VERTEX_INPUT_RATE_VERTEX: + return "VK_VERTEX_INPUT_RATE_VERTEX"; + default: + return "Unhandled VkVertexInputRate"; + } } -static inline const char* string_VkFrontFace(VkFrontFace input_value) +static inline const char* string_VkPrimitiveTopology(VkPrimitiveTopology input_value) { - switch ((VkFrontFace)input_value) + switch ((VkPrimitiveTopology)input_value) { - case VK_FRONT_FACE_CLOCKWISE: - return "VK_FRONT_FACE_CLOCKWISE"; - case VK_FRONT_FACE_COUNTER_CLOCKWISE: - return "VK_FRONT_FACE_COUNTER_CLOCKWISE"; + case VK_PRIMITIVE_TOPOLOGY_LINE_LIST: + return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST"; + case VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY: + return "VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY"; + case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP: + return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP"; + case VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY: + return "VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY"; + case VK_PRIMITIVE_TOPOLOGY_PATCH_LIST: + return "VK_PRIMITIVE_TOPOLOGY_PATCH_LIST"; + case VK_PRIMITIVE_TOPOLOGY_POINT_LIST: + return "VK_PRIMITIVE_TOPOLOGY_POINT_LIST"; + case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN: + return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN"; + case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST: + return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST"; + case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY: + return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY"; + case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP: + return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP"; + case VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY: + return "VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY"; default: - return "Unhandled VkFrontFace"; + return "Unhandled VkPrimitiveTopology"; } } -static inline const char* string_VkCompareOp(VkCompareOp input_value) +static inline const char* string_VkPolygonMode(VkPolygonMode input_value) { - switch ((VkCompareOp)input_value) + switch ((VkPolygonMode)input_value) { - case VK_COMPARE_OP_ALWAYS: - return "VK_COMPARE_OP_ALWAYS"; - case VK_COMPARE_OP_EQUAL: - return "VK_COMPARE_OP_EQUAL"; - case VK_COMPARE_OP_GREATER: - return "VK_COMPARE_OP_GREATER"; - case VK_COMPARE_OP_GREATER_OR_EQUAL: - return "VK_COMPARE_OP_GREATER_OR_EQUAL"; - case VK_COMPARE_OP_LESS: - return "VK_COMPARE_OP_LESS"; - case VK_COMPARE_OP_LESS_OR_EQUAL: - return "VK_COMPARE_OP_LESS_OR_EQUAL"; - case VK_COMPARE_OP_NEVER: - return "VK_COMPARE_OP_NEVER"; - case VK_COMPARE_OP_NOT_EQUAL: - return "VK_COMPARE_OP_NOT_EQUAL"; + case VK_POLYGON_MODE_FILL: + return "VK_POLYGON_MODE_FILL"; + case VK_POLYGON_MODE_FILL_RECTANGLE_NV: + return "VK_POLYGON_MODE_FILL_RECTANGLE_NV"; + case VK_POLYGON_MODE_LINE: + return "VK_POLYGON_MODE_LINE"; + case VK_POLYGON_MODE_POINT: + return "VK_POLYGON_MODE_POINT"; default: - return "Unhandled VkCompareOp"; + return "Unhandled VkPolygonMode"; } } @@ -2843,235 +3264,62 @@ static inline const char* string_VkLogicOp(VkLogicOp input_value) } } -static inline const char* string_VkBlendFactor(VkBlendFactor input_value) -{ - switch ((VkBlendFactor)input_value) - { - case VK_BLEND_FACTOR_CONSTANT_ALPHA: - return "VK_BLEND_FACTOR_CONSTANT_ALPHA"; - case VK_BLEND_FACTOR_CONSTANT_COLOR: - return "VK_BLEND_FACTOR_CONSTANT_COLOR"; - case VK_BLEND_FACTOR_DST_ALPHA: - return "VK_BLEND_FACTOR_DST_ALPHA"; - case VK_BLEND_FACTOR_DST_COLOR: - return "VK_BLEND_FACTOR_DST_COLOR"; - case VK_BLEND_FACTOR_ONE: - return "VK_BLEND_FACTOR_ONE"; - case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA: - return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA"; - case VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR: - return "VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR"; - case VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA: - return "VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA"; - case VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR: - return "VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR"; - case VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA: - return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA"; - case VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR: - return "VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR"; - case VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA: - return "VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA"; - case VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR: - return "VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR"; - case VK_BLEND_FACTOR_SRC1_ALPHA: - return "VK_BLEND_FACTOR_SRC1_ALPHA"; - case VK_BLEND_FACTOR_SRC1_COLOR: - return "VK_BLEND_FACTOR_SRC1_COLOR"; - case VK_BLEND_FACTOR_SRC_ALPHA: - return "VK_BLEND_FACTOR_SRC_ALPHA"; - case VK_BLEND_FACTOR_SRC_ALPHA_SATURATE: - return "VK_BLEND_FACTOR_SRC_ALPHA_SATURATE"; - case VK_BLEND_FACTOR_SRC_COLOR: - return "VK_BLEND_FACTOR_SRC_COLOR"; - case VK_BLEND_FACTOR_ZERO: - return "VK_BLEND_FACTOR_ZERO"; - default: - return "Unhandled VkBlendFactor"; - } -} - -static inline const char* string_VkBlendOp(VkBlendOp input_value) +static inline const char* string_VkBorderColor(VkBorderColor input_value) { - switch ((VkBlendOp)input_value) + switch ((VkBorderColor)input_value) { - case VK_BLEND_OP_ADD: - return "VK_BLEND_OP_ADD"; - case VK_BLEND_OP_BLUE_EXT: - return "VK_BLEND_OP_BLUE_EXT"; - case VK_BLEND_OP_COLORBURN_EXT: - return "VK_BLEND_OP_COLORBURN_EXT"; - case VK_BLEND_OP_COLORDODGE_EXT: - return "VK_BLEND_OP_COLORDODGE_EXT"; - case VK_BLEND_OP_CONTRAST_EXT: - return "VK_BLEND_OP_CONTRAST_EXT"; - case VK_BLEND_OP_DARKEN_EXT: - return "VK_BLEND_OP_DARKEN_EXT"; - case VK_BLEND_OP_DIFFERENCE_EXT: - return "VK_BLEND_OP_DIFFERENCE_EXT"; - case VK_BLEND_OP_DST_ATOP_EXT: - return "VK_BLEND_OP_DST_ATOP_EXT"; - case VK_BLEND_OP_DST_EXT: - return "VK_BLEND_OP_DST_EXT"; - case VK_BLEND_OP_DST_IN_EXT: - return "VK_BLEND_OP_DST_IN_EXT"; - case VK_BLEND_OP_DST_OUT_EXT: - return "VK_BLEND_OP_DST_OUT_EXT"; - case VK_BLEND_OP_DST_OVER_EXT: - return "VK_BLEND_OP_DST_OVER_EXT"; - case VK_BLEND_OP_EXCLUSION_EXT: - return "VK_BLEND_OP_EXCLUSION_EXT"; - case VK_BLEND_OP_GREEN_EXT: - return "VK_BLEND_OP_GREEN_EXT"; - case VK_BLEND_OP_HARDLIGHT_EXT: - return "VK_BLEND_OP_HARDLIGHT_EXT"; - case VK_BLEND_OP_HARDMIX_EXT: - return "VK_BLEND_OP_HARDMIX_EXT"; - case VK_BLEND_OP_HSL_COLOR_EXT: - return "VK_BLEND_OP_HSL_COLOR_EXT"; - case VK_BLEND_OP_HSL_HUE_EXT: - return "VK_BLEND_OP_HSL_HUE_EXT"; - case VK_BLEND_OP_HSL_LUMINOSITY_EXT: - return "VK_BLEND_OP_HSL_LUMINOSITY_EXT"; - case VK_BLEND_OP_HSL_SATURATION_EXT: - return "VK_BLEND_OP_HSL_SATURATION_EXT"; - case VK_BLEND_OP_INVERT_EXT: - return "VK_BLEND_OP_INVERT_EXT"; - case VK_BLEND_OP_INVERT_OVG_EXT: - return "VK_BLEND_OP_INVERT_OVG_EXT"; - case VK_BLEND_OP_INVERT_RGB_EXT: - return "VK_BLEND_OP_INVERT_RGB_EXT"; - case VK_BLEND_OP_LIGHTEN_EXT: - return "VK_BLEND_OP_LIGHTEN_EXT"; - case VK_BLEND_OP_LINEARBURN_EXT: - return "VK_BLEND_OP_LINEARBURN_EXT"; - case VK_BLEND_OP_LINEARDODGE_EXT: - return "VK_BLEND_OP_LINEARDODGE_EXT"; - case VK_BLEND_OP_LINEARLIGHT_EXT: - return "VK_BLEND_OP_LINEARLIGHT_EXT"; - case VK_BLEND_OP_MAX: - return "VK_BLEND_OP_MAX"; - case VK_BLEND_OP_MIN: - return "VK_BLEND_OP_MIN"; - case VK_BLEND_OP_MINUS_CLAMPED_EXT: - return "VK_BLEND_OP_MINUS_CLAMPED_EXT"; - case VK_BLEND_OP_MINUS_EXT: - return "VK_BLEND_OP_MINUS_EXT"; - case VK_BLEND_OP_MULTIPLY_EXT: - return "VK_BLEND_OP_MULTIPLY_EXT"; - case VK_BLEND_OP_OVERLAY_EXT: - return "VK_BLEND_OP_OVERLAY_EXT"; - case VK_BLEND_OP_PINLIGHT_EXT: - return "VK_BLEND_OP_PINLIGHT_EXT"; - case VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT: - return "VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT"; - case VK_BLEND_OP_PLUS_CLAMPED_EXT: - return "VK_BLEND_OP_PLUS_CLAMPED_EXT"; - case VK_BLEND_OP_PLUS_DARKER_EXT: - return "VK_BLEND_OP_PLUS_DARKER_EXT"; - case VK_BLEND_OP_PLUS_EXT: - return "VK_BLEND_OP_PLUS_EXT"; - case VK_BLEND_OP_RED_EXT: - return "VK_BLEND_OP_RED_EXT"; - case VK_BLEND_OP_REVERSE_SUBTRACT: - return "VK_BLEND_OP_REVERSE_SUBTRACT"; - case VK_BLEND_OP_SCREEN_EXT: - return "VK_BLEND_OP_SCREEN_EXT"; - case VK_BLEND_OP_SOFTLIGHT_EXT: - return "VK_BLEND_OP_SOFTLIGHT_EXT"; - case VK_BLEND_OP_SRC_ATOP_EXT: - return "VK_BLEND_OP_SRC_ATOP_EXT"; - case VK_BLEND_OP_SRC_EXT: - return "VK_BLEND_OP_SRC_EXT"; - case VK_BLEND_OP_SRC_IN_EXT: - return "VK_BLEND_OP_SRC_IN_EXT"; - case VK_BLEND_OP_SRC_OUT_EXT: - return "VK_BLEND_OP_SRC_OUT_EXT"; - case VK_BLEND_OP_SRC_OVER_EXT: - return "VK_BLEND_OP_SRC_OVER_EXT"; - case VK_BLEND_OP_SUBTRACT: - return "VK_BLEND_OP_SUBTRACT"; - case VK_BLEND_OP_VIVIDLIGHT_EXT: - return "VK_BLEND_OP_VIVIDLIGHT_EXT"; - case VK_BLEND_OP_XOR_EXT: - return "VK_BLEND_OP_XOR_EXT"; - case VK_BLEND_OP_ZERO_EXT: - return "VK_BLEND_OP_ZERO_EXT"; + case VK_BORDER_COLOR_FLOAT_CUSTOM_EXT: + return "VK_BORDER_COLOR_FLOAT_CUSTOM_EXT"; + case VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK: + return "VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK"; + case VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE: + return "VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE"; + case VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK: + return "VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK"; + case VK_BORDER_COLOR_INT_CUSTOM_EXT: + return "VK_BORDER_COLOR_INT_CUSTOM_EXT"; + case VK_BORDER_COLOR_INT_OPAQUE_BLACK: + return "VK_BORDER_COLOR_INT_OPAQUE_BLACK"; + case VK_BORDER_COLOR_INT_OPAQUE_WHITE: + return "VK_BORDER_COLOR_INT_OPAQUE_WHITE"; + case VK_BORDER_COLOR_INT_TRANSPARENT_BLACK: + return "VK_BORDER_COLOR_INT_TRANSPARENT_BLACK"; default: - return "Unhandled VkBlendOp"; + return "Unhandled VkBorderColor"; } } -static inline const char* string_VkColorComponentFlagBits(VkColorComponentFlagBits input_value) +static inline const char* string_VkFilter(VkFilter input_value) { - switch ((VkColorComponentFlagBits)input_value) + switch ((VkFilter)input_value) { - case VK_COLOR_COMPONENT_A_BIT: - return "VK_COLOR_COMPONENT_A_BIT"; - case VK_COLOR_COMPONENT_B_BIT: - return "VK_COLOR_COMPONENT_B_BIT"; - case VK_COLOR_COMPONENT_G_BIT: - return "VK_COLOR_COMPONENT_G_BIT"; - case VK_COLOR_COMPONENT_R_BIT: - return "VK_COLOR_COMPONENT_R_BIT"; + case VK_FILTER_CUBIC_IMG: + return "VK_FILTER_CUBIC_IMG"; + case VK_FILTER_LINEAR: + return "VK_FILTER_LINEAR"; + case VK_FILTER_NEAREST: + return "VK_FILTER_NEAREST"; default: - return "Unhandled VkColorComponentFlagBits"; - } -} - -static inline std::string string_VkColorComponentFlags(VkColorComponentFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkColorComponentFlagBits(static_cast(1 << index))); - } - ++index; - input_value >>= 1; + return "Unhandled VkFilter"; } - if( ret.empty()) ret.append(string_VkColorComponentFlagBits(static_cast(0))); - return ret; } -static inline const char* string_VkDynamicState(VkDynamicState input_value) +static inline const char* string_VkSamplerAddressMode(VkSamplerAddressMode input_value) { - switch ((VkDynamicState)input_value) + switch ((VkSamplerAddressMode)input_value) { - case VK_DYNAMIC_STATE_BLEND_CONSTANTS: - return "VK_DYNAMIC_STATE_BLEND_CONSTANTS"; - case VK_DYNAMIC_STATE_DEPTH_BIAS: - return "VK_DYNAMIC_STATE_DEPTH_BIAS"; - case VK_DYNAMIC_STATE_DEPTH_BOUNDS: - return "VK_DYNAMIC_STATE_DEPTH_BOUNDS"; - case VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT: - return "VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT"; - case VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV: - return "VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV"; - case VK_DYNAMIC_STATE_LINE_STIPPLE_EXT: - return "VK_DYNAMIC_STATE_LINE_STIPPLE_EXT"; - case VK_DYNAMIC_STATE_LINE_WIDTH: - return "VK_DYNAMIC_STATE_LINE_WIDTH"; - case VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT: - return "VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT"; - case VK_DYNAMIC_STATE_SCISSOR: - return "VK_DYNAMIC_STATE_SCISSOR"; - case VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK: - return "VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK"; - case VK_DYNAMIC_STATE_STENCIL_REFERENCE: - return "VK_DYNAMIC_STATE_STENCIL_REFERENCE"; - case VK_DYNAMIC_STATE_STENCIL_WRITE_MASK: - return "VK_DYNAMIC_STATE_STENCIL_WRITE_MASK"; - case VK_DYNAMIC_STATE_VIEWPORT: - return "VK_DYNAMIC_STATE_VIEWPORT"; - case VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV: - return "VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV"; - case VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV: - return "VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV"; - case VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV: - return "VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV"; + case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER: + return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER"; + case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE: + return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE"; + case VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT: + return "VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT"; + case VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE: + return "VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE"; + case VK_SAMPLER_ADDRESS_MODE_REPEAT: + return "VK_SAMPLER_ADDRESS_MODE_REPEAT"; default: - return "Unhandled VkDynamicState"; + return "Unhandled VkSamplerAddressMode"; } } @@ -3104,21 +3352,6 @@ static inline std::string string_VkSamplerCreateFlags(VkSamplerCreateFlags input return ret; } -static inline const char* string_VkFilter(VkFilter input_value) -{ - switch ((VkFilter)input_value) - { - case VK_FILTER_CUBIC_IMG: - return "VK_FILTER_CUBIC_IMG"; - case VK_FILTER_LINEAR: - return "VK_FILTER_LINEAR"; - case VK_FILTER_NEAREST: - return "VK_FILTER_NEAREST"; - default: - return "Unhandled VkFilter"; - } -} - static inline const char* string_VkSamplerMipmapMode(VkSamplerMipmapMode input_value) { switch ((VkSamplerMipmapMode)input_value) @@ -3132,76 +3365,32 @@ static inline const char* string_VkSamplerMipmapMode(VkSamplerMipmapMode input_v } } -static inline const char* string_VkSamplerAddressMode(VkSamplerAddressMode input_value) -{ - switch ((VkSamplerAddressMode)input_value) - { - case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER: - return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER"; - case VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE: - return "VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE"; - case VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT: - return "VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT"; - case VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE: - return "VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE"; - case VK_SAMPLER_ADDRESS_MODE_REPEAT: - return "VK_SAMPLER_ADDRESS_MODE_REPEAT"; - default: - return "Unhandled VkSamplerAddressMode"; - } -} - -static inline const char* string_VkBorderColor(VkBorderColor input_value) -{ - switch ((VkBorderColor)input_value) - { - case VK_BORDER_COLOR_FLOAT_CUSTOM_EXT: - return "VK_BORDER_COLOR_FLOAT_CUSTOM_EXT"; - case VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK: - return "VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK"; - case VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE: - return "VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE"; - case VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK: - return "VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK"; - case VK_BORDER_COLOR_INT_CUSTOM_EXT: - return "VK_BORDER_COLOR_INT_CUSTOM_EXT"; - case VK_BORDER_COLOR_INT_OPAQUE_BLACK: - return "VK_BORDER_COLOR_INT_OPAQUE_BLACK"; - case VK_BORDER_COLOR_INT_OPAQUE_WHITE: - return "VK_BORDER_COLOR_INT_OPAQUE_WHITE"; - case VK_BORDER_COLOR_INT_TRANSPARENT_BLACK: - return "VK_BORDER_COLOR_INT_TRANSPARENT_BLACK"; - default: - return "Unhandled VkBorderColor"; - } -} - -static inline const char* string_VkDescriptorSetLayoutCreateFlagBits(VkDescriptorSetLayoutCreateFlagBits input_value) +static inline const char* string_VkDescriptorPoolCreateFlagBits(VkDescriptorPoolCreateFlagBits input_value) { - switch ((VkDescriptorSetLayoutCreateFlagBits)input_value) + switch ((VkDescriptorPoolCreateFlagBits)input_value) { - case VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR: - return "VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR"; - case VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT: - return "VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT"; + case VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT: + return "VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT"; + case VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT: + return "VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT"; default: - return "Unhandled VkDescriptorSetLayoutCreateFlagBits"; + return "Unhandled VkDescriptorPoolCreateFlagBits"; } } -static inline std::string string_VkDescriptorSetLayoutCreateFlags(VkDescriptorSetLayoutCreateFlags input_value) +static inline std::string string_VkDescriptorPoolCreateFlags(VkDescriptorPoolCreateFlags input_value) { std::string ret; int index = 0; while(input_value) { if (input_value & 1) { if( !ret.empty()) ret.append("|"); - ret.append(string_VkDescriptorSetLayoutCreateFlagBits(static_cast(1 << index))); + ret.append(string_VkDescriptorPoolCreateFlagBits(static_cast(1 << index))); } ++index; input_value >>= 1; } - if( ret.empty()) ret.append(string_VkDescriptorSetLayoutCreateFlagBits(static_cast(0))); + if( ret.empty()) ret.append(string_VkDescriptorPoolCreateFlagBits(static_cast(0))); return ret; } @@ -3240,86 +3429,32 @@ static inline const char* string_VkDescriptorType(VkDescriptorType input_value) } } -static inline const char* string_VkDescriptorPoolCreateFlagBits(VkDescriptorPoolCreateFlagBits input_value) -{ - switch ((VkDescriptorPoolCreateFlagBits)input_value) - { - case VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT: - return "VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT"; - case VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT: - return "VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT"; - default: - return "Unhandled VkDescriptorPoolCreateFlagBits"; - } -} - -static inline std::string string_VkDescriptorPoolCreateFlags(VkDescriptorPoolCreateFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkDescriptorPoolCreateFlagBits(static_cast(1 << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkDescriptorPoolCreateFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkFramebufferCreateFlagBits(VkFramebufferCreateFlagBits input_value) -{ - switch ((VkFramebufferCreateFlagBits)input_value) - { - case VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT: - return "VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT"; - default: - return "Unhandled VkFramebufferCreateFlagBits"; - } -} - -static inline std::string string_VkFramebufferCreateFlags(VkFramebufferCreateFlags input_value) -{ - std::string ret; - int index = 0; - while(input_value) { - if (input_value & 1) { - if( !ret.empty()) ret.append("|"); - ret.append(string_VkFramebufferCreateFlagBits(static_cast(1 << index))); - } - ++index; - input_value >>= 1; - } - if( ret.empty()) ret.append(string_VkFramebufferCreateFlagBits(static_cast(0))); - return ret; -} - -static inline const char* string_VkRenderPassCreateFlagBits(VkRenderPassCreateFlagBits input_value) +static inline const char* string_VkDescriptorSetLayoutCreateFlagBits(VkDescriptorSetLayoutCreateFlagBits input_value) { - switch ((VkRenderPassCreateFlagBits)input_value) + switch ((VkDescriptorSetLayoutCreateFlagBits)input_value) { - case VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM: - return "VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM"; + case VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR: + return "VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR"; + case VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT: + return "VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT"; default: - return "Unhandled VkRenderPassCreateFlagBits"; + return "Unhandled VkDescriptorSetLayoutCreateFlagBits"; } } -static inline std::string string_VkRenderPassCreateFlags(VkRenderPassCreateFlags input_value) +static inline std::string string_VkDescriptorSetLayoutCreateFlags(VkDescriptorSetLayoutCreateFlags input_value) { std::string ret; int index = 0; while(input_value) { if (input_value & 1) { if( !ret.empty()) ret.append("|"); - ret.append(string_VkRenderPassCreateFlagBits(static_cast(1 << index))); + ret.append(string_VkDescriptorSetLayoutCreateFlagBits(static_cast(1 << index))); } ++index; input_value >>= 1; } - if( ret.empty()) ret.append(string_VkRenderPassCreateFlagBits(static_cast(0))); + if( ret.empty()) ret.append(string_VkDescriptorSetLayoutCreateFlagBits(static_cast(0))); return ret; } @@ -3380,36 +3515,61 @@ static inline const char* string_VkAttachmentStoreOp(VkAttachmentStoreOp input_v } } -static inline const char* string_VkSubpassDescriptionFlagBits(VkSubpassDescriptionFlagBits input_value) +static inline const char* string_VkDependencyFlagBits(VkDependencyFlagBits input_value) { - switch ((VkSubpassDescriptionFlagBits)input_value) + switch ((VkDependencyFlagBits)input_value) + { + case VK_DEPENDENCY_BY_REGION_BIT: + return "VK_DEPENDENCY_BY_REGION_BIT"; + case VK_DEPENDENCY_DEVICE_GROUP_BIT: + return "VK_DEPENDENCY_DEVICE_GROUP_BIT"; + case VK_DEPENDENCY_VIEW_LOCAL_BIT: + return "VK_DEPENDENCY_VIEW_LOCAL_BIT"; + default: + return "Unhandled VkDependencyFlagBits"; + } +} + +static inline std::string string_VkDependencyFlags(VkDependencyFlags input_value) +{ + std::string ret; + int index = 0; + while(input_value) { + if (input_value & 1) { + if( !ret.empty()) ret.append("|"); + ret.append(string_VkDependencyFlagBits(static_cast(1 << index))); + } + ++index; + input_value >>= 1; + } + if( ret.empty()) ret.append(string_VkDependencyFlagBits(static_cast(0))); + return ret; +} + +static inline const char* string_VkFramebufferCreateFlagBits(VkFramebufferCreateFlagBits input_value) +{ + switch ((VkFramebufferCreateFlagBits)input_value) { - case VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM: - return "VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM"; - case VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX: - return "VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX"; - case VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX: - return "VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX"; - case VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM: - return "VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM"; + case VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT: + return "VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT"; default: - return "Unhandled VkSubpassDescriptionFlagBits"; + return "Unhandled VkFramebufferCreateFlagBits"; } } -static inline std::string string_VkSubpassDescriptionFlags(VkSubpassDescriptionFlags input_value) +static inline std::string string_VkFramebufferCreateFlags(VkFramebufferCreateFlags input_value) { std::string ret; int index = 0; while(input_value) { if (input_value & 1) { if( !ret.empty()) ret.append("|"); - ret.append(string_VkSubpassDescriptionFlagBits(static_cast(1 << index))); + ret.append(string_VkFramebufferCreateFlagBits(static_cast(1 << index))); } ++index; input_value >>= 1; } - if( ret.empty()) ret.append(string_VkSubpassDescriptionFlagBits(static_cast(0))); + if( ret.empty()) ret.append(string_VkFramebufferCreateFlagBits(static_cast(0))); return ret; } @@ -3428,115 +3588,63 @@ static inline const char* string_VkPipelineBindPoint(VkPipelineBindPoint input_v } } -static inline const char* string_VkAccessFlagBits(VkAccessFlagBits input_value) +static inline const char* string_VkRenderPassCreateFlagBits(VkRenderPassCreateFlagBits input_value) { - switch ((VkAccessFlagBits)input_value) + switch ((VkRenderPassCreateFlagBits)input_value) { - case VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR: - return "VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR"; - case VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR: - return "VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR"; - case VK_ACCESS_COLOR_ATTACHMENT_READ_BIT: - return "VK_ACCESS_COLOR_ATTACHMENT_READ_BIT"; - case VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT: - return "VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT"; - case VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT: - return "VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT"; - case VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV: - return "VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV"; - case VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV: - return "VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV"; - case VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT: - return "VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT"; - case VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT: - return "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT"; - case VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT: - return "VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT"; - case VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT: - return "VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT"; - case VK_ACCESS_HOST_READ_BIT: - return "VK_ACCESS_HOST_READ_BIT"; - case VK_ACCESS_HOST_WRITE_BIT: - return "VK_ACCESS_HOST_WRITE_BIT"; - case VK_ACCESS_INDEX_READ_BIT: - return "VK_ACCESS_INDEX_READ_BIT"; - case VK_ACCESS_INDIRECT_COMMAND_READ_BIT: - return "VK_ACCESS_INDIRECT_COMMAND_READ_BIT"; - case VK_ACCESS_INPUT_ATTACHMENT_READ_BIT: - return "VK_ACCESS_INPUT_ATTACHMENT_READ_BIT"; - case VK_ACCESS_MEMORY_READ_BIT: - return "VK_ACCESS_MEMORY_READ_BIT"; - case VK_ACCESS_MEMORY_WRITE_BIT: - return "VK_ACCESS_MEMORY_WRITE_BIT"; - case VK_ACCESS_SHADER_READ_BIT: - return "VK_ACCESS_SHADER_READ_BIT"; - case VK_ACCESS_SHADER_WRITE_BIT: - return "VK_ACCESS_SHADER_WRITE_BIT"; - case VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV: - return "VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV"; - case VK_ACCESS_TRANSFER_READ_BIT: - return "VK_ACCESS_TRANSFER_READ_BIT"; - case VK_ACCESS_TRANSFER_WRITE_BIT: - return "VK_ACCESS_TRANSFER_WRITE_BIT"; - case VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT: - return "VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT"; - case VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT: - return "VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT"; - case VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT: - return "VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT"; - case VK_ACCESS_UNIFORM_READ_BIT: - return "VK_ACCESS_UNIFORM_READ_BIT"; - case VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT: - return "VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT"; + case VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM: + return "VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM"; default: - return "Unhandled VkAccessFlagBits"; + return "Unhandled VkRenderPassCreateFlagBits"; } } -static inline std::string string_VkAccessFlags(VkAccessFlags input_value) +static inline std::string string_VkRenderPassCreateFlags(VkRenderPassCreateFlags input_value) { std::string ret; int index = 0; while(input_value) { if (input_value & 1) { if( !ret.empty()) ret.append("|"); - ret.append(string_VkAccessFlagBits(static_cast(1 << index))); + ret.append(string_VkRenderPassCreateFlagBits(static_cast(1 << index))); } ++index; input_value >>= 1; } - if( ret.empty()) ret.append(string_VkAccessFlagBits(static_cast(0))); + if( ret.empty()) ret.append(string_VkRenderPassCreateFlagBits(static_cast(0))); return ret; } -static inline const char* string_VkDependencyFlagBits(VkDependencyFlagBits input_value) +static inline const char* string_VkSubpassDescriptionFlagBits(VkSubpassDescriptionFlagBits input_value) { - switch ((VkDependencyFlagBits)input_value) + switch ((VkSubpassDescriptionFlagBits)input_value) { - case VK_DEPENDENCY_BY_REGION_BIT: - return "VK_DEPENDENCY_BY_REGION_BIT"; - case VK_DEPENDENCY_DEVICE_GROUP_BIT: - return "VK_DEPENDENCY_DEVICE_GROUP_BIT"; - case VK_DEPENDENCY_VIEW_LOCAL_BIT: - return "VK_DEPENDENCY_VIEW_LOCAL_BIT"; + case VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM: + return "VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM"; + case VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX: + return "VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX"; + case VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX: + return "VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX"; + case VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM: + return "VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM"; default: - return "Unhandled VkDependencyFlagBits"; + return "Unhandled VkSubpassDescriptionFlagBits"; } } -static inline std::string string_VkDependencyFlags(VkDependencyFlags input_value) +static inline std::string string_VkSubpassDescriptionFlags(VkSubpassDescriptionFlags input_value) { std::string ret; int index = 0; while(input_value) { if (input_value & 1) { if( !ret.empty()) ret.append("|"); - ret.append(string_VkDependencyFlagBits(static_cast(1 << index))); + ret.append(string_VkSubpassDescriptionFlagBits(static_cast(1 << index))); } ++index; input_value >>= 1; } - if( ret.empty()) ret.append(string_VkDependencyFlagBits(static_cast(0))); + if( ret.empty()) ret.append(string_VkSubpassDescriptionFlagBits(static_cast(0))); return ret; } @@ -3696,6 +3804,23 @@ static inline std::string string_VkCommandBufferResetFlags(VkCommandBufferResetF return ret; } +static inline const char* string_VkIndexType(VkIndexType input_value) +{ + switch ((VkIndexType)input_value) + { + case VK_INDEX_TYPE_NONE_KHR: + return "VK_INDEX_TYPE_NONE_KHR"; + case VK_INDEX_TYPE_UINT16: + return "VK_INDEX_TYPE_UINT16"; + case VK_INDEX_TYPE_UINT32: + return "VK_INDEX_TYPE_UINT32"; + case VK_INDEX_TYPE_UINT8_EXT: + return "VK_INDEX_TYPE_UINT8_EXT"; + default: + return "Unhandled VkIndexType"; + } +} + static inline const char* string_VkStencilFaceFlagBits(VkStencilFaceFlagBits input_value) { switch ((VkStencilFaceFlagBits)input_value) @@ -3727,23 +3852,6 @@ static inline std::string string_VkStencilFaceFlags(VkStencilFaceFlags input_val return ret; } -static inline const char* string_VkIndexType(VkIndexType input_value) -{ - switch ((VkIndexType)input_value) - { - case VK_INDEX_TYPE_NONE_KHR: - return "VK_INDEX_TYPE_NONE_KHR"; - case VK_INDEX_TYPE_UINT16: - return "VK_INDEX_TYPE_UINT16"; - case VK_INDEX_TYPE_UINT32: - return "VK_INDEX_TYPE_UINT32"; - case VK_INDEX_TYPE_UINT8_EXT: - return "VK_INDEX_TYPE_UINT8_EXT"; - default: - return "Unhandled VkIndexType"; - } -} - static inline const char* string_VkSubpassContents(VkSubpassContents input_value) { switch ((VkSubpassContents)input_value) @@ -3757,114 +3865,6 @@ static inline const char* string_VkSubpassContents(VkSubpassContents input_value } } -static inline const char* string_VkObjectType(VkObjectType input_value) -{ - switch ((VkObjectType)input_value) - { - case VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR: - return "VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR"; - case VK_OBJECT_TYPE_BUFFER: - return "VK_OBJECT_TYPE_BUFFER"; - case VK_OBJECT_TYPE_BUFFER_VIEW: - return "VK_OBJECT_TYPE_BUFFER_VIEW"; - case VK_OBJECT_TYPE_COMMAND_BUFFER: - return "VK_OBJECT_TYPE_COMMAND_BUFFER"; - case VK_OBJECT_TYPE_COMMAND_POOL: - return "VK_OBJECT_TYPE_COMMAND_POOL"; - case VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT: - return "VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT"; - case VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT: - return "VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT"; - case VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR: - return "VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR"; - case VK_OBJECT_TYPE_DESCRIPTOR_POOL: - return "VK_OBJECT_TYPE_DESCRIPTOR_POOL"; - case VK_OBJECT_TYPE_DESCRIPTOR_SET: - return "VK_OBJECT_TYPE_DESCRIPTOR_SET"; - case VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT: - return "VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT"; - case VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE: - return "VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE"; - case VK_OBJECT_TYPE_DEVICE: - return "VK_OBJECT_TYPE_DEVICE"; - case VK_OBJECT_TYPE_DEVICE_MEMORY: - return "VK_OBJECT_TYPE_DEVICE_MEMORY"; - case VK_OBJECT_TYPE_DISPLAY_KHR: - return "VK_OBJECT_TYPE_DISPLAY_KHR"; - case VK_OBJECT_TYPE_DISPLAY_MODE_KHR: - return "VK_OBJECT_TYPE_DISPLAY_MODE_KHR"; - case VK_OBJECT_TYPE_EVENT: - return "VK_OBJECT_TYPE_EVENT"; - case VK_OBJECT_TYPE_FENCE: - return "VK_OBJECT_TYPE_FENCE"; - case VK_OBJECT_TYPE_FRAMEBUFFER: - return "VK_OBJECT_TYPE_FRAMEBUFFER"; - case VK_OBJECT_TYPE_IMAGE: - return "VK_OBJECT_TYPE_IMAGE"; - case VK_OBJECT_TYPE_IMAGE_VIEW: - return "VK_OBJECT_TYPE_IMAGE_VIEW"; - case VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV: - return "VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV"; - case VK_OBJECT_TYPE_INSTANCE: - return "VK_OBJECT_TYPE_INSTANCE"; - case VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL: - return "VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL"; - case VK_OBJECT_TYPE_PHYSICAL_DEVICE: - return "VK_OBJECT_TYPE_PHYSICAL_DEVICE"; - case VK_OBJECT_TYPE_PIPELINE: - return "VK_OBJECT_TYPE_PIPELINE"; - case VK_OBJECT_TYPE_PIPELINE_CACHE: - return "VK_OBJECT_TYPE_PIPELINE_CACHE"; - case VK_OBJECT_TYPE_PIPELINE_LAYOUT: - return "VK_OBJECT_TYPE_PIPELINE_LAYOUT"; - case VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT: - return "VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT"; - case VK_OBJECT_TYPE_QUERY_POOL: - return "VK_OBJECT_TYPE_QUERY_POOL"; - case VK_OBJECT_TYPE_QUEUE: - return "VK_OBJECT_TYPE_QUEUE"; - case VK_OBJECT_TYPE_RENDER_PASS: - return "VK_OBJECT_TYPE_RENDER_PASS"; - case VK_OBJECT_TYPE_SAMPLER: - return "VK_OBJECT_TYPE_SAMPLER"; - case VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION: - return "VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION"; - case VK_OBJECT_TYPE_SEMAPHORE: - return "VK_OBJECT_TYPE_SEMAPHORE"; - case VK_OBJECT_TYPE_SHADER_MODULE: - return "VK_OBJECT_TYPE_SHADER_MODULE"; - case VK_OBJECT_TYPE_SURFACE_KHR: - return "VK_OBJECT_TYPE_SURFACE_KHR"; - case VK_OBJECT_TYPE_SWAPCHAIN_KHR: - return "VK_OBJECT_TYPE_SWAPCHAIN_KHR"; - case VK_OBJECT_TYPE_UNKNOWN: - return "VK_OBJECT_TYPE_UNKNOWN"; - case VK_OBJECT_TYPE_VALIDATION_CACHE_EXT: - return "VK_OBJECT_TYPE_VALIDATION_CACHE_EXT"; - default: - return "Unhandled VkObjectType"; - } -} - -static inline const char* string_VkVendorId(VkVendorId input_value) -{ - switch ((VkVendorId)input_value) - { - case VK_VENDOR_ID_CODEPLAY: - return "VK_VENDOR_ID_CODEPLAY"; - case VK_VENDOR_ID_KAZAN: - return "VK_VENDOR_ID_KAZAN"; - case VK_VENDOR_ID_MESA: - return "VK_VENDOR_ID_MESA"; - case VK_VENDOR_ID_VIV: - return "VK_VENDOR_ID_VIV"; - case VK_VENDOR_ID_VSI: - return "VK_VENDOR_ID_VSI"; - default: - return "Unhandled VkVendorId"; - } -} - static inline const char* string_VkSubgroupFeatureFlagBits(VkSubgroupFeatureFlagBits input_value) { switch ((VkSubgroupFeatureFlagBits)input_value) diff --git a/layers/generated/vk_extension_helper.h b/layers/generated/vk_extension_helper.h index 1dc1fdde7b8..ddbe0788a12 100644 --- a/layers/generated/vk_extension_helper.h +++ b/layers/generated/vk_extension_helper.h @@ -719,7 +719,8 @@ struct DeviceExtensions : public InstanceExtensions { {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), std::make_pair(VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_performance_query, {{ {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), - std::make_pair(VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_pipeline_executable_properties, {})), + std::make_pair(VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_pipeline_executable_properties, {{ + {&DeviceExtensions::vk_khr_get_physical_device_properties_2, VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME}}})), #ifdef VK_ENABLE_BETA_EXTENSIONS std::make_pair(VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME, DeviceInfo(&DeviceExtensions::vk_khr_pipeline_library, {})), #endif diff --git a/layers/generated/vk_object_types.h b/layers/generated/vk_object_types.h index 6c7efe1e93b..0b2236d1453 100644 --- a/layers/generated/vk_object_types.h +++ b/layers/generated/vk_object_types.h @@ -37,16 +37,16 @@ // Object Type enum for validation layer internal object handling typedef enum VulkanObjectType { kVulkanObjectTypeUnknown = 0, - kVulkanObjectTypeInstance = 1, - kVulkanObjectTypePhysicalDevice = 2, - kVulkanObjectTypeDevice = 3, - kVulkanObjectTypeQueue = 4, - kVulkanObjectTypeSemaphore = 5, - kVulkanObjectTypeCommandBuffer = 6, - kVulkanObjectTypeFence = 7, - kVulkanObjectTypeDeviceMemory = 8, - kVulkanObjectTypeBuffer = 9, - kVulkanObjectTypeImage = 10, + kVulkanObjectTypeBuffer = 1, + kVulkanObjectTypeImage = 2, + kVulkanObjectTypeInstance = 3, + kVulkanObjectTypePhysicalDevice = 4, + kVulkanObjectTypeDevice = 5, + kVulkanObjectTypeQueue = 6, + kVulkanObjectTypeSemaphore = 7, + kVulkanObjectTypeCommandBuffer = 8, + kVulkanObjectTypeFence = 9, + kVulkanObjectTypeDeviceMemory = 10, kVulkanObjectTypeEvent = 11, kVulkanObjectTypeQueryPool = 12, kVulkanObjectTypeBufferView = 13, @@ -54,12 +54,12 @@ typedef enum VulkanObjectType { kVulkanObjectTypeShaderModule = 15, kVulkanObjectTypePipelineCache = 16, kVulkanObjectTypePipelineLayout = 17, - kVulkanObjectTypeRenderPass = 18, - kVulkanObjectTypePipeline = 19, + kVulkanObjectTypePipeline = 18, + kVulkanObjectTypeRenderPass = 19, kVulkanObjectTypeDescriptorSetLayout = 20, kVulkanObjectTypeSampler = 21, - kVulkanObjectTypeDescriptorPool = 22, - kVulkanObjectTypeDescriptorSet = 23, + kVulkanObjectTypeDescriptorSet = 22, + kVulkanObjectTypeDescriptorPool = 23, kVulkanObjectTypeFramebuffer = 24, kVulkanObjectTypeCommandPool = 25, kVulkanObjectTypeSamplerYcbcrConversion = 26, @@ -86,6 +86,8 @@ typedef enum VulkanObjectType { // Array of object name strings for OBJECT_TYPE enum conversion static const char * const object_string[kVulkanObjectTypeMax] = { "VkNonDispatchableHandle", + "VkBuffer", + "VkImage", "VkInstance", "VkPhysicalDevice", "VkDevice", @@ -94,8 +96,6 @@ static const char * const object_string[kVulkanObjectTypeMax] = { "VkCommandBuffer", "VkFence", "VkDeviceMemory", - "VkBuffer", - "VkImage", "VkEvent", "VkQueryPool", "VkBufferView", @@ -103,12 +103,12 @@ static const char * const object_string[kVulkanObjectTypeMax] = { "VkShaderModule", "VkPipelineCache", "VkPipelineLayout", - "VkRenderPass", "VkPipeline", + "VkRenderPass", "VkDescriptorSetLayout", "VkSampler", - "VkDescriptorPool", "VkDescriptorSet", + "VkDescriptorPool", "VkFramebuffer", "VkCommandPool", "VkSamplerYcbcrConversion", @@ -130,6 +130,8 @@ static const char * const object_string[kVulkanObjectTypeMax] = { // Helper array to get Vulkan VK_EXT_debug_report object type enum from the internal layers version const VkDebugReportObjectTypeEXT get_debug_report_enum[] = { VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT, // kVulkanObjectTypeUnknown + VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT, // kVulkanObjectTypeBuffer + VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT, // kVulkanObjectTypeImage VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT, // kVulkanObjectTypeInstance VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT, // kVulkanObjectTypePhysicalDevice VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT, // kVulkanObjectTypeDevice @@ -138,8 +140,6 @@ const VkDebugReportObjectTypeEXT get_debug_report_enum[] = { VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT, // kVulkanObjectTypeCommandBuffer VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT, // kVulkanObjectTypeFence VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT, // kVulkanObjectTypeDeviceMemory - VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT, // kVulkanObjectTypeBuffer - VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT, // kVulkanObjectTypeImage VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT, // kVulkanObjectTypeEvent VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT, // kVulkanObjectTypeQueryPool VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT, // kVulkanObjectTypeBufferView @@ -147,12 +147,12 @@ const VkDebugReportObjectTypeEXT get_debug_report_enum[] = { VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT, // kVulkanObjectTypeShaderModule VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT, // kVulkanObjectTypePipelineCache VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT, // kVulkanObjectTypePipelineLayout - VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, // kVulkanObjectTypeRenderPass VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT, // kVulkanObjectTypePipeline + VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT, // kVulkanObjectTypeRenderPass VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT, // kVulkanObjectTypeDescriptorSetLayout VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT, // kVulkanObjectTypeSampler - VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT, // kVulkanObjectTypeDescriptorPool VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT, // kVulkanObjectTypeDescriptorSet + VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT, // kVulkanObjectTypeDescriptorPool VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT, // kVulkanObjectTypeFramebuffer VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT, // kVulkanObjectTypeCommandPool VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT, // kVulkanObjectTypeSamplerYcbcrConversion @@ -178,6 +178,8 @@ const VkDebugReportObjectTypeEXT get_debug_report_enum[] = { // Helper function to get Official Vulkan VkObjectType enum from the internal layers version static inline VkObjectType ConvertVulkanObjectToCoreObject(VulkanObjectType internal_type) { switch (internal_type) { + case kVulkanObjectTypeBuffer: return VK_OBJECT_TYPE_BUFFER; + case kVulkanObjectTypeImage: return VK_OBJECT_TYPE_IMAGE; case kVulkanObjectTypeInstance: return VK_OBJECT_TYPE_INSTANCE; case kVulkanObjectTypePhysicalDevice: return VK_OBJECT_TYPE_PHYSICAL_DEVICE; case kVulkanObjectTypeDevice: return VK_OBJECT_TYPE_DEVICE; @@ -186,8 +188,6 @@ static inline VkObjectType ConvertVulkanObjectToCoreObject(VulkanObjectType inte case kVulkanObjectTypeCommandBuffer: return VK_OBJECT_TYPE_COMMAND_BUFFER; case kVulkanObjectTypeFence: return VK_OBJECT_TYPE_FENCE; case kVulkanObjectTypeDeviceMemory: return VK_OBJECT_TYPE_DEVICE_MEMORY; - case kVulkanObjectTypeBuffer: return VK_OBJECT_TYPE_BUFFER; - case kVulkanObjectTypeImage: return VK_OBJECT_TYPE_IMAGE; case kVulkanObjectTypeEvent: return VK_OBJECT_TYPE_EVENT; case kVulkanObjectTypeQueryPool: return VK_OBJECT_TYPE_QUERY_POOL; case kVulkanObjectTypeBufferView: return VK_OBJECT_TYPE_BUFFER_VIEW; @@ -195,12 +195,12 @@ static inline VkObjectType ConvertVulkanObjectToCoreObject(VulkanObjectType inte case kVulkanObjectTypeShaderModule: return VK_OBJECT_TYPE_SHADER_MODULE; case kVulkanObjectTypePipelineCache: return VK_OBJECT_TYPE_PIPELINE_CACHE; case kVulkanObjectTypePipelineLayout: return VK_OBJECT_TYPE_PIPELINE_LAYOUT; - case kVulkanObjectTypeRenderPass: return VK_OBJECT_TYPE_RENDER_PASS; case kVulkanObjectTypePipeline: return VK_OBJECT_TYPE_PIPELINE; + case kVulkanObjectTypeRenderPass: return VK_OBJECT_TYPE_RENDER_PASS; case kVulkanObjectTypeDescriptorSetLayout: return VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT; case kVulkanObjectTypeSampler: return VK_OBJECT_TYPE_SAMPLER; - case kVulkanObjectTypeDescriptorPool: return VK_OBJECT_TYPE_DESCRIPTOR_POOL; case kVulkanObjectTypeDescriptorSet: return VK_OBJECT_TYPE_DESCRIPTOR_SET; + case kVulkanObjectTypeDescriptorPool: return VK_OBJECT_TYPE_DESCRIPTOR_POOL; case kVulkanObjectTypeFramebuffer: return VK_OBJECT_TYPE_FRAMEBUFFER; case kVulkanObjectTypeCommandPool: return VK_OBJECT_TYPE_COMMAND_POOL; case kVulkanObjectTypeSamplerYcbcrConversion: return VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION; @@ -224,6 +224,8 @@ static inline VkObjectType ConvertVulkanObjectToCoreObject(VulkanObjectType inte // Helper function to get internal layers object ids from the official Vulkan VkObjectType enum static inline VulkanObjectType ConvertCoreObjectToVulkanObject(VkObjectType vulkan_object_type) { switch (vulkan_object_type) { + case VK_OBJECT_TYPE_BUFFER: return kVulkanObjectTypeBuffer; + case VK_OBJECT_TYPE_IMAGE: return kVulkanObjectTypeImage; case VK_OBJECT_TYPE_INSTANCE: return kVulkanObjectTypeInstance; case VK_OBJECT_TYPE_PHYSICAL_DEVICE: return kVulkanObjectTypePhysicalDevice; case VK_OBJECT_TYPE_DEVICE: return kVulkanObjectTypeDevice; @@ -232,8 +234,6 @@ static inline VulkanObjectType ConvertCoreObjectToVulkanObject(VkObjectType vulk case VK_OBJECT_TYPE_COMMAND_BUFFER: return kVulkanObjectTypeCommandBuffer; case VK_OBJECT_TYPE_FENCE: return kVulkanObjectTypeFence; case VK_OBJECT_TYPE_DEVICE_MEMORY: return kVulkanObjectTypeDeviceMemory; - case VK_OBJECT_TYPE_BUFFER: return kVulkanObjectTypeBuffer; - case VK_OBJECT_TYPE_IMAGE: return kVulkanObjectTypeImage; case VK_OBJECT_TYPE_EVENT: return kVulkanObjectTypeEvent; case VK_OBJECT_TYPE_QUERY_POOL: return kVulkanObjectTypeQueryPool; case VK_OBJECT_TYPE_BUFFER_VIEW: return kVulkanObjectTypeBufferView; @@ -241,12 +241,12 @@ static inline VulkanObjectType ConvertCoreObjectToVulkanObject(VkObjectType vulk case VK_OBJECT_TYPE_SHADER_MODULE: return kVulkanObjectTypeShaderModule; case VK_OBJECT_TYPE_PIPELINE_CACHE: return kVulkanObjectTypePipelineCache; case VK_OBJECT_TYPE_PIPELINE_LAYOUT: return kVulkanObjectTypePipelineLayout; - case VK_OBJECT_TYPE_RENDER_PASS: return kVulkanObjectTypeRenderPass; case VK_OBJECT_TYPE_PIPELINE: return kVulkanObjectTypePipeline; + case VK_OBJECT_TYPE_RENDER_PASS: return kVulkanObjectTypeRenderPass; case VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT: return kVulkanObjectTypeDescriptorSetLayout; case VK_OBJECT_TYPE_SAMPLER: return kVulkanObjectTypeSampler; - case VK_OBJECT_TYPE_DESCRIPTOR_POOL: return kVulkanObjectTypeDescriptorPool; case VK_OBJECT_TYPE_DESCRIPTOR_SET: return kVulkanObjectTypeDescriptorSet; + case VK_OBJECT_TYPE_DESCRIPTOR_POOL: return kVulkanObjectTypeDescriptorPool; case VK_OBJECT_TYPE_FRAMEBUFFER: return kVulkanObjectTypeFramebuffer; case VK_OBJECT_TYPE_COMMAND_POOL: return kVulkanObjectTypeCommandPool; case VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION: return kVulkanObjectTypeSamplerYcbcrConversion; diff --git a/layers/generated/vk_safe_struct.cpp b/layers/generated/vk_safe_struct.cpp index daca889c618..c42e365c051 100644 --- a/layers/generated/vk_safe_struct.cpp +++ b/layers/generated/vk_safe_struct.cpp @@ -42,6 +42,298 @@ extern std::vector> custom_stype_info; +safe_VkBufferMemoryBarrier::safe_VkBufferMemoryBarrier(const VkBufferMemoryBarrier* in_struct) : + sType(in_struct->sType), + srcAccessMask(in_struct->srcAccessMask), + dstAccessMask(in_struct->dstAccessMask), + srcQueueFamilyIndex(in_struct->srcQueueFamilyIndex), + dstQueueFamilyIndex(in_struct->dstQueueFamilyIndex), + buffer(in_struct->buffer), + offset(in_struct->offset), + size(in_struct->size) +{ + pNext = SafePnextCopy(in_struct->pNext); +} + +safe_VkBufferMemoryBarrier::safe_VkBufferMemoryBarrier() : + sType(VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER), + pNext(nullptr) +{} + +safe_VkBufferMemoryBarrier::safe_VkBufferMemoryBarrier(const safe_VkBufferMemoryBarrier& copy_src) +{ + sType = copy_src.sType; + srcAccessMask = copy_src.srcAccessMask; + dstAccessMask = copy_src.dstAccessMask; + srcQueueFamilyIndex = copy_src.srcQueueFamilyIndex; + dstQueueFamilyIndex = copy_src.dstQueueFamilyIndex; + buffer = copy_src.buffer; + offset = copy_src.offset; + size = copy_src.size; + pNext = SafePnextCopy(copy_src.pNext); +} + +safe_VkBufferMemoryBarrier& safe_VkBufferMemoryBarrier::operator=(const safe_VkBufferMemoryBarrier& copy_src) +{ + if (©_src == this) return *this; + + if (pNext) + FreePnextChain(pNext); + + sType = copy_src.sType; + srcAccessMask = copy_src.srcAccessMask; + dstAccessMask = copy_src.dstAccessMask; + srcQueueFamilyIndex = copy_src.srcQueueFamilyIndex; + dstQueueFamilyIndex = copy_src.dstQueueFamilyIndex; + buffer = copy_src.buffer; + offset = copy_src.offset; + size = copy_src.size; + pNext = SafePnextCopy(copy_src.pNext); + + return *this; +} + +safe_VkBufferMemoryBarrier::~safe_VkBufferMemoryBarrier() +{ + if (pNext) + FreePnextChain(pNext); +} + +void safe_VkBufferMemoryBarrier::initialize(const VkBufferMemoryBarrier* in_struct) +{ + sType = in_struct->sType; + srcAccessMask = in_struct->srcAccessMask; + dstAccessMask = in_struct->dstAccessMask; + srcQueueFamilyIndex = in_struct->srcQueueFamilyIndex; + dstQueueFamilyIndex = in_struct->dstQueueFamilyIndex; + buffer = in_struct->buffer; + offset = in_struct->offset; + size = in_struct->size; + pNext = SafePnextCopy(in_struct->pNext); +} + +void safe_VkBufferMemoryBarrier::initialize(const safe_VkBufferMemoryBarrier* copy_src) +{ + sType = copy_src->sType; + srcAccessMask = copy_src->srcAccessMask; + dstAccessMask = copy_src->dstAccessMask; + srcQueueFamilyIndex = copy_src->srcQueueFamilyIndex; + dstQueueFamilyIndex = copy_src->dstQueueFamilyIndex; + buffer = copy_src->buffer; + offset = copy_src->offset; + size = copy_src->size; + pNext = SafePnextCopy(copy_src->pNext); +} + +safe_VkImageMemoryBarrier::safe_VkImageMemoryBarrier(const VkImageMemoryBarrier* in_struct) : + sType(in_struct->sType), + srcAccessMask(in_struct->srcAccessMask), + dstAccessMask(in_struct->dstAccessMask), + oldLayout(in_struct->oldLayout), + newLayout(in_struct->newLayout), + srcQueueFamilyIndex(in_struct->srcQueueFamilyIndex), + dstQueueFamilyIndex(in_struct->dstQueueFamilyIndex), + image(in_struct->image), + subresourceRange(in_struct->subresourceRange) +{ + pNext = SafePnextCopy(in_struct->pNext); +} + +safe_VkImageMemoryBarrier::safe_VkImageMemoryBarrier() : + sType(VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER), + pNext(nullptr) +{} + +safe_VkImageMemoryBarrier::safe_VkImageMemoryBarrier(const safe_VkImageMemoryBarrier& copy_src) +{ + sType = copy_src.sType; + srcAccessMask = copy_src.srcAccessMask; + dstAccessMask = copy_src.dstAccessMask; + oldLayout = copy_src.oldLayout; + newLayout = copy_src.newLayout; + srcQueueFamilyIndex = copy_src.srcQueueFamilyIndex; + dstQueueFamilyIndex = copy_src.dstQueueFamilyIndex; + image = copy_src.image; + subresourceRange = copy_src.subresourceRange; + pNext = SafePnextCopy(copy_src.pNext); +} + +safe_VkImageMemoryBarrier& safe_VkImageMemoryBarrier::operator=(const safe_VkImageMemoryBarrier& copy_src) +{ + if (©_src == this) return *this; + + if (pNext) + FreePnextChain(pNext); + + sType = copy_src.sType; + srcAccessMask = copy_src.srcAccessMask; + dstAccessMask = copy_src.dstAccessMask; + oldLayout = copy_src.oldLayout; + newLayout = copy_src.newLayout; + srcQueueFamilyIndex = copy_src.srcQueueFamilyIndex; + dstQueueFamilyIndex = copy_src.dstQueueFamilyIndex; + image = copy_src.image; + subresourceRange = copy_src.subresourceRange; + pNext = SafePnextCopy(copy_src.pNext); + + return *this; +} + +safe_VkImageMemoryBarrier::~safe_VkImageMemoryBarrier() +{ + if (pNext) + FreePnextChain(pNext); +} + +void safe_VkImageMemoryBarrier::initialize(const VkImageMemoryBarrier* in_struct) +{ + sType = in_struct->sType; + srcAccessMask = in_struct->srcAccessMask; + dstAccessMask = in_struct->dstAccessMask; + oldLayout = in_struct->oldLayout; + newLayout = in_struct->newLayout; + srcQueueFamilyIndex = in_struct->srcQueueFamilyIndex; + dstQueueFamilyIndex = in_struct->dstQueueFamilyIndex; + image = in_struct->image; + subresourceRange = in_struct->subresourceRange; + pNext = SafePnextCopy(in_struct->pNext); +} + +void safe_VkImageMemoryBarrier::initialize(const safe_VkImageMemoryBarrier* copy_src) +{ + sType = copy_src->sType; + srcAccessMask = copy_src->srcAccessMask; + dstAccessMask = copy_src->dstAccessMask; + oldLayout = copy_src->oldLayout; + newLayout = copy_src->newLayout; + srcQueueFamilyIndex = copy_src->srcQueueFamilyIndex; + dstQueueFamilyIndex = copy_src->dstQueueFamilyIndex; + image = copy_src->image; + subresourceRange = copy_src->subresourceRange; + pNext = SafePnextCopy(copy_src->pNext); +} + +safe_VkMemoryBarrier::safe_VkMemoryBarrier(const VkMemoryBarrier* in_struct) : + sType(in_struct->sType), + srcAccessMask(in_struct->srcAccessMask), + dstAccessMask(in_struct->dstAccessMask) +{ + pNext = SafePnextCopy(in_struct->pNext); +} + +safe_VkMemoryBarrier::safe_VkMemoryBarrier() : + sType(VK_STRUCTURE_TYPE_MEMORY_BARRIER), + pNext(nullptr) +{} + +safe_VkMemoryBarrier::safe_VkMemoryBarrier(const safe_VkMemoryBarrier& copy_src) +{ + sType = copy_src.sType; + srcAccessMask = copy_src.srcAccessMask; + dstAccessMask = copy_src.dstAccessMask; + pNext = SafePnextCopy(copy_src.pNext); +} + +safe_VkMemoryBarrier& safe_VkMemoryBarrier::operator=(const safe_VkMemoryBarrier& copy_src) +{ + if (©_src == this) return *this; + + if (pNext) + FreePnextChain(pNext); + + sType = copy_src.sType; + srcAccessMask = copy_src.srcAccessMask; + dstAccessMask = copy_src.dstAccessMask; + pNext = SafePnextCopy(copy_src.pNext); + + return *this; +} + +safe_VkMemoryBarrier::~safe_VkMemoryBarrier() +{ + if (pNext) + FreePnextChain(pNext); +} + +void safe_VkMemoryBarrier::initialize(const VkMemoryBarrier* in_struct) +{ + sType = in_struct->sType; + srcAccessMask = in_struct->srcAccessMask; + dstAccessMask = in_struct->dstAccessMask; + pNext = SafePnextCopy(in_struct->pNext); +} + +void safe_VkMemoryBarrier::initialize(const safe_VkMemoryBarrier* copy_src) +{ + sType = copy_src->sType; + srcAccessMask = copy_src->srcAccessMask; + dstAccessMask = copy_src->dstAccessMask; + pNext = SafePnextCopy(copy_src->pNext); +} + +safe_VkAllocationCallbacks::safe_VkAllocationCallbacks(const VkAllocationCallbacks* in_struct) : + pUserData(in_struct->pUserData), + pfnAllocation(in_struct->pfnAllocation), + pfnReallocation(in_struct->pfnReallocation), + pfnFree(in_struct->pfnFree), + pfnInternalAllocation(in_struct->pfnInternalAllocation), + pfnInternalFree(in_struct->pfnInternalFree) +{ +} + +safe_VkAllocationCallbacks::safe_VkAllocationCallbacks() : + pUserData(nullptr) +{} + +safe_VkAllocationCallbacks::safe_VkAllocationCallbacks(const safe_VkAllocationCallbacks& copy_src) +{ + pUserData = copy_src.pUserData; + pfnAllocation = copy_src.pfnAllocation; + pfnReallocation = copy_src.pfnReallocation; + pfnFree = copy_src.pfnFree; + pfnInternalAllocation = copy_src.pfnInternalAllocation; + pfnInternalFree = copy_src.pfnInternalFree; +} + +safe_VkAllocationCallbacks& safe_VkAllocationCallbacks::operator=(const safe_VkAllocationCallbacks& copy_src) +{ + if (©_src == this) return *this; + + + pUserData = copy_src.pUserData; + pfnAllocation = copy_src.pfnAllocation; + pfnReallocation = copy_src.pfnReallocation; + pfnFree = copy_src.pfnFree; + pfnInternalAllocation = copy_src.pfnInternalAllocation; + pfnInternalFree = copy_src.pfnInternalFree; + + return *this; +} + +safe_VkAllocationCallbacks::~safe_VkAllocationCallbacks() +{ +} + +void safe_VkAllocationCallbacks::initialize(const VkAllocationCallbacks* in_struct) +{ + pUserData = in_struct->pUserData; + pfnAllocation = in_struct->pfnAllocation; + pfnReallocation = in_struct->pfnReallocation; + pfnFree = in_struct->pfnFree; + pfnInternalAllocation = in_struct->pfnInternalAllocation; + pfnInternalFree = in_struct->pfnInternalFree; +} + +void safe_VkAllocationCallbacks::initialize(const safe_VkAllocationCallbacks* copy_src) +{ + pUserData = copy_src->pUserData; + pfnAllocation = copy_src->pfnAllocation; + pfnReallocation = copy_src->pfnReallocation; + pfnFree = copy_src->pfnFree; + pfnInternalAllocation = copy_src->pfnInternalAllocation; + pfnInternalFree = copy_src->pfnInternalFree; +} + safe_VkApplicationInfo::safe_VkApplicationInfo(const VkApplicationInfo* in_struct) : sType(in_struct->sType), applicationVersion(in_struct->applicationVersion), @@ -280,69 +572,6 @@ void safe_VkInstanceCreateInfo::initialize(const safe_VkInstanceCreateInfo* copy pApplicationInfo = new safe_VkApplicationInfo(*copy_src->pApplicationInfo); } -safe_VkAllocationCallbacks::safe_VkAllocationCallbacks(const VkAllocationCallbacks* in_struct) : - pUserData(in_struct->pUserData), - pfnAllocation(in_struct->pfnAllocation), - pfnReallocation(in_struct->pfnReallocation), - pfnFree(in_struct->pfnFree), - pfnInternalAllocation(in_struct->pfnInternalAllocation), - pfnInternalFree(in_struct->pfnInternalFree) -{ -} - -safe_VkAllocationCallbacks::safe_VkAllocationCallbacks() : - pUserData(nullptr) -{} - -safe_VkAllocationCallbacks::safe_VkAllocationCallbacks(const safe_VkAllocationCallbacks& copy_src) -{ - pUserData = copy_src.pUserData; - pfnAllocation = copy_src.pfnAllocation; - pfnReallocation = copy_src.pfnReallocation; - pfnFree = copy_src.pfnFree; - pfnInternalAllocation = copy_src.pfnInternalAllocation; - pfnInternalFree = copy_src.pfnInternalFree; -} - -safe_VkAllocationCallbacks& safe_VkAllocationCallbacks::operator=(const safe_VkAllocationCallbacks& copy_src) -{ - if (©_src == this) return *this; - - - pUserData = copy_src.pUserData; - pfnAllocation = copy_src.pfnAllocation; - pfnReallocation = copy_src.pfnReallocation; - pfnFree = copy_src.pfnFree; - pfnInternalAllocation = copy_src.pfnInternalAllocation; - pfnInternalFree = copy_src.pfnInternalFree; - - return *this; -} - -safe_VkAllocationCallbacks::~safe_VkAllocationCallbacks() -{ -} - -void safe_VkAllocationCallbacks::initialize(const VkAllocationCallbacks* in_struct) -{ - pUserData = in_struct->pUserData; - pfnAllocation = in_struct->pfnAllocation; - pfnReallocation = in_struct->pfnReallocation; - pfnFree = in_struct->pfnFree; - pfnInternalAllocation = in_struct->pfnInternalAllocation; - pfnInternalFree = in_struct->pfnInternalFree; -} - -void safe_VkAllocationCallbacks::initialize(const safe_VkAllocationCallbacks* copy_src) -{ - pUserData = copy_src->pUserData; - pfnAllocation = copy_src->pfnAllocation; - pfnReallocation = copy_src->pfnReallocation; - pfnFree = copy_src->pfnFree; - pfnInternalAllocation = copy_src->pfnInternalAllocation; - pfnInternalFree = copy_src->pfnInternalFree; -} - safe_VkDeviceQueueCreateInfo::safe_VkDeviceQueueCreateInfo(const VkDeviceQueueCreateInfo* in_struct) : sType(in_struct->sType), flags(in_struct->flags), @@ -848,28 +1077,30 @@ void safe_VkSubmitInfo::initialize(const safe_VkSubmitInfo* copy_src) } } -safe_VkMemoryAllocateInfo::safe_VkMemoryAllocateInfo(const VkMemoryAllocateInfo* in_struct) : +safe_VkMappedMemoryRange::safe_VkMappedMemoryRange(const VkMappedMemoryRange* in_struct) : sType(in_struct->sType), - allocationSize(in_struct->allocationSize), - memoryTypeIndex(in_struct->memoryTypeIndex) + memory(in_struct->memory), + offset(in_struct->offset), + size(in_struct->size) { pNext = SafePnextCopy(in_struct->pNext); } -safe_VkMemoryAllocateInfo::safe_VkMemoryAllocateInfo() : - sType(VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO), +safe_VkMappedMemoryRange::safe_VkMappedMemoryRange() : + sType(VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE), pNext(nullptr) {} -safe_VkMemoryAllocateInfo::safe_VkMemoryAllocateInfo(const safe_VkMemoryAllocateInfo& copy_src) +safe_VkMappedMemoryRange::safe_VkMappedMemoryRange(const safe_VkMappedMemoryRange& copy_src) { sType = copy_src.sType; - allocationSize = copy_src.allocationSize; - memoryTypeIndex = copy_src.memoryTypeIndex; + memory = copy_src.memory; + offset = copy_src.offset; + size = copy_src.size; pNext = SafePnextCopy(copy_src.pNext); } -safe_VkMemoryAllocateInfo& safe_VkMemoryAllocateInfo::operator=(const safe_VkMemoryAllocateInfo& copy_src) +safe_VkMappedMemoryRange& safe_VkMappedMemoryRange::operator=(const safe_VkMappedMemoryRange& copy_src) { if (©_src == this) return *this; @@ -877,59 +1108,60 @@ safe_VkMemoryAllocateInfo& safe_VkMemoryAllocateInfo::operator=(const safe_VkMem FreePnextChain(pNext); sType = copy_src.sType; - allocationSize = copy_src.allocationSize; - memoryTypeIndex = copy_src.memoryTypeIndex; + memory = copy_src.memory; + offset = copy_src.offset; + size = copy_src.size; pNext = SafePnextCopy(copy_src.pNext); return *this; } -safe_VkMemoryAllocateInfo::~safe_VkMemoryAllocateInfo() +safe_VkMappedMemoryRange::~safe_VkMappedMemoryRange() { if (pNext) FreePnextChain(pNext); } -void safe_VkMemoryAllocateInfo::initialize(const VkMemoryAllocateInfo* in_struct) +void safe_VkMappedMemoryRange::initialize(const VkMappedMemoryRange* in_struct) { sType = in_struct->sType; - allocationSize = in_struct->allocationSize; - memoryTypeIndex = in_struct->memoryTypeIndex; + memory = in_struct->memory; + offset = in_struct->offset; + size = in_struct->size; pNext = SafePnextCopy(in_struct->pNext); } -void safe_VkMemoryAllocateInfo::initialize(const safe_VkMemoryAllocateInfo* copy_src) +void safe_VkMappedMemoryRange::initialize(const safe_VkMappedMemoryRange* copy_src) { sType = copy_src->sType; - allocationSize = copy_src->allocationSize; - memoryTypeIndex = copy_src->memoryTypeIndex; + memory = copy_src->memory; + offset = copy_src->offset; + size = copy_src->size; pNext = SafePnextCopy(copy_src->pNext); } -safe_VkMappedMemoryRange::safe_VkMappedMemoryRange(const VkMappedMemoryRange* in_struct) : +safe_VkMemoryAllocateInfo::safe_VkMemoryAllocateInfo(const VkMemoryAllocateInfo* in_struct) : sType(in_struct->sType), - memory(in_struct->memory), - offset(in_struct->offset), - size(in_struct->size) + allocationSize(in_struct->allocationSize), + memoryTypeIndex(in_struct->memoryTypeIndex) { pNext = SafePnextCopy(in_struct->pNext); } -safe_VkMappedMemoryRange::safe_VkMappedMemoryRange() : - sType(VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE), +safe_VkMemoryAllocateInfo::safe_VkMemoryAllocateInfo() : + sType(VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO), pNext(nullptr) {} -safe_VkMappedMemoryRange::safe_VkMappedMemoryRange(const safe_VkMappedMemoryRange& copy_src) +safe_VkMemoryAllocateInfo::safe_VkMemoryAllocateInfo(const safe_VkMemoryAllocateInfo& copy_src) { sType = copy_src.sType; - memory = copy_src.memory; - offset = copy_src.offset; - size = copy_src.size; + allocationSize = copy_src.allocationSize; + memoryTypeIndex = copy_src.memoryTypeIndex; pNext = SafePnextCopy(copy_src.pNext); } -safe_VkMappedMemoryRange& safe_VkMappedMemoryRange::operator=(const safe_VkMappedMemoryRange& copy_src) +safe_VkMemoryAllocateInfo& safe_VkMemoryAllocateInfo::operator=(const safe_VkMemoryAllocateInfo& copy_src) { if (©_src == this) return *this; @@ -937,35 +1169,32 @@ safe_VkMappedMemoryRange& safe_VkMappedMemoryRange::operator=(const safe_VkMappe FreePnextChain(pNext); sType = copy_src.sType; - memory = copy_src.memory; - offset = copy_src.offset; - size = copy_src.size; + allocationSize = copy_src.allocationSize; + memoryTypeIndex = copy_src.memoryTypeIndex; pNext = SafePnextCopy(copy_src.pNext); return *this; } -safe_VkMappedMemoryRange::~safe_VkMappedMemoryRange() +safe_VkMemoryAllocateInfo::~safe_VkMemoryAllocateInfo() { if (pNext) FreePnextChain(pNext); } -void safe_VkMappedMemoryRange::initialize(const VkMappedMemoryRange* in_struct) +void safe_VkMemoryAllocateInfo::initialize(const VkMemoryAllocateInfo* in_struct) { sType = in_struct->sType; - memory = in_struct->memory; - offset = in_struct->offset; - size = in_struct->size; + allocationSize = in_struct->allocationSize; + memoryTypeIndex = in_struct->memoryTypeIndex; pNext = SafePnextCopy(in_struct->pNext); } -void safe_VkMappedMemoryRange::initialize(const safe_VkMappedMemoryRange* copy_src) +void safe_VkMemoryAllocateInfo::initialize(const safe_VkMemoryAllocateInfo* copy_src) { sType = copy_src->sType; - memory = copy_src->memory; - offset = copy_src->offset; - size = copy_src->size; + allocationSize = copy_src->allocationSize; + memoryTypeIndex = copy_src->memoryTypeIndex; pNext = SafePnextCopy(copy_src->pNext); } @@ -2428,6 +2657,79 @@ void safe_VkPipelineShaderStageCreateInfo::initialize(const safe_VkPipelineShade pSpecializationInfo = new safe_VkSpecializationInfo(*copy_src->pSpecializationInfo); } +safe_VkComputePipelineCreateInfo::safe_VkComputePipelineCreateInfo(const VkComputePipelineCreateInfo* in_struct) : + sType(in_struct->sType), + flags(in_struct->flags), + stage(&in_struct->stage), + layout(in_struct->layout), + basePipelineHandle(in_struct->basePipelineHandle), + basePipelineIndex(in_struct->basePipelineIndex) +{ + pNext = SafePnextCopy(in_struct->pNext); +} + +safe_VkComputePipelineCreateInfo::safe_VkComputePipelineCreateInfo() : + sType(VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO), + pNext(nullptr) +{} + +safe_VkComputePipelineCreateInfo::safe_VkComputePipelineCreateInfo(const safe_VkComputePipelineCreateInfo& copy_src) +{ + sType = copy_src.sType; + flags = copy_src.flags; + stage.initialize(©_src.stage); + layout = copy_src.layout; + basePipelineHandle = copy_src.basePipelineHandle; + basePipelineIndex = copy_src.basePipelineIndex; + pNext = SafePnextCopy(copy_src.pNext); +} + +safe_VkComputePipelineCreateInfo& safe_VkComputePipelineCreateInfo::operator=(const safe_VkComputePipelineCreateInfo& copy_src) +{ + if (©_src == this) return *this; + + if (pNext) + FreePnextChain(pNext); + + sType = copy_src.sType; + flags = copy_src.flags; + stage.initialize(©_src.stage); + layout = copy_src.layout; + basePipelineHandle = copy_src.basePipelineHandle; + basePipelineIndex = copy_src.basePipelineIndex; + pNext = SafePnextCopy(copy_src.pNext); + + return *this; +} + +safe_VkComputePipelineCreateInfo::~safe_VkComputePipelineCreateInfo() +{ + if (pNext) + FreePnextChain(pNext); +} + +void safe_VkComputePipelineCreateInfo::initialize(const VkComputePipelineCreateInfo* in_struct) +{ + sType = in_struct->sType; + flags = in_struct->flags; + stage.initialize(&in_struct->stage); + layout = in_struct->layout; + basePipelineHandle = in_struct->basePipelineHandle; + basePipelineIndex = in_struct->basePipelineIndex; + pNext = SafePnextCopy(in_struct->pNext); +} + +void safe_VkComputePipelineCreateInfo::initialize(const safe_VkComputePipelineCreateInfo* copy_src) +{ + sType = copy_src->sType; + flags = copy_src->flags; + stage.initialize(©_src->stage); + layout = copy_src->layout; + basePipelineHandle = copy_src->basePipelineHandle; + basePipelineIndex = copy_src->basePipelineIndex; + pNext = SafePnextCopy(copy_src->pNext); +} + safe_VkPipelineVertexInputStateCreateInfo::safe_VkPipelineVertexInputStateCreateInfo(const VkPipelineVertexInputStateCreateInfo* in_struct) : sType(in_struct->sType), flags(in_struct->flags), @@ -3767,79 +4069,6 @@ void safe_VkGraphicsPipelineCreateInfo::initialize(const safe_VkGraphicsPipeline pDynamicState = NULL; } -safe_VkComputePipelineCreateInfo::safe_VkComputePipelineCreateInfo(const VkComputePipelineCreateInfo* in_struct) : - sType(in_struct->sType), - flags(in_struct->flags), - stage(&in_struct->stage), - layout(in_struct->layout), - basePipelineHandle(in_struct->basePipelineHandle), - basePipelineIndex(in_struct->basePipelineIndex) -{ - pNext = SafePnextCopy(in_struct->pNext); -} - -safe_VkComputePipelineCreateInfo::safe_VkComputePipelineCreateInfo() : - sType(VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO), - pNext(nullptr) -{} - -safe_VkComputePipelineCreateInfo::safe_VkComputePipelineCreateInfo(const safe_VkComputePipelineCreateInfo& copy_src) -{ - sType = copy_src.sType; - flags = copy_src.flags; - stage.initialize(©_src.stage); - layout = copy_src.layout; - basePipelineHandle = copy_src.basePipelineHandle; - basePipelineIndex = copy_src.basePipelineIndex; - pNext = SafePnextCopy(copy_src.pNext); -} - -safe_VkComputePipelineCreateInfo& safe_VkComputePipelineCreateInfo::operator=(const safe_VkComputePipelineCreateInfo& copy_src) -{ - if (©_src == this) return *this; - - if (pNext) - FreePnextChain(pNext); - - sType = copy_src.sType; - flags = copy_src.flags; - stage.initialize(©_src.stage); - layout = copy_src.layout; - basePipelineHandle = copy_src.basePipelineHandle; - basePipelineIndex = copy_src.basePipelineIndex; - pNext = SafePnextCopy(copy_src.pNext); - - return *this; -} - -safe_VkComputePipelineCreateInfo::~safe_VkComputePipelineCreateInfo() -{ - if (pNext) - FreePnextChain(pNext); -} - -void safe_VkComputePipelineCreateInfo::initialize(const VkComputePipelineCreateInfo* in_struct) -{ - sType = in_struct->sType; - flags = in_struct->flags; - stage.initialize(&in_struct->stage); - layout = in_struct->layout; - basePipelineHandle = in_struct->basePipelineHandle; - basePipelineIndex = in_struct->basePipelineIndex; - pNext = SafePnextCopy(in_struct->pNext); -} - -void safe_VkComputePipelineCreateInfo::initialize(const safe_VkComputePipelineCreateInfo* copy_src) -{ - sType = copy_src->sType; - flags = copy_src->flags; - stage.initialize(©_src->stage); - layout = copy_src->layout; - basePipelineHandle = copy_src->basePipelineHandle; - basePipelineIndex = copy_src->basePipelineIndex; - pNext = SafePnextCopy(copy_src->pNext); -} - safe_VkPipelineLayoutCreateInfo::safe_VkPipelineLayoutCreateInfo(const VkPipelineLayoutCreateInfo* in_struct) : sType(in_struct->sType), flags(in_struct->flags), @@ -4101,199 +4330,87 @@ void safe_VkSamplerCreateInfo::initialize(const safe_VkSamplerCreateInfo* copy_s pNext = SafePnextCopy(copy_src->pNext); } -safe_VkDescriptorSetLayoutBinding::safe_VkDescriptorSetLayoutBinding(const VkDescriptorSetLayoutBinding* in_struct) : - binding(in_struct->binding), - descriptorType(in_struct->descriptorType), - descriptorCount(in_struct->descriptorCount), - stageFlags(in_struct->stageFlags), - pImmutableSamplers(nullptr) -{ - const bool sampler_type = in_struct->descriptorType == VK_DESCRIPTOR_TYPE_SAMPLER || in_struct->descriptorType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; - if (descriptorCount && in_struct->pImmutableSamplers && sampler_type) { - pImmutableSamplers = new VkSampler[descriptorCount]; - for (uint32_t i = 0; i < descriptorCount; ++i) { - pImmutableSamplers[i] = in_struct->pImmutableSamplers[i]; - } - } -} - -safe_VkDescriptorSetLayoutBinding::safe_VkDescriptorSetLayoutBinding() : - pImmutableSamplers(nullptr) -{} - -safe_VkDescriptorSetLayoutBinding::safe_VkDescriptorSetLayoutBinding(const safe_VkDescriptorSetLayoutBinding& copy_src) -{ - binding = copy_src.binding; - descriptorType = copy_src.descriptorType; - descriptorCount = copy_src.descriptorCount; - stageFlags = copy_src.stageFlags; - pImmutableSamplers = nullptr; - const bool sampler_type = copy_src.descriptorType == VK_DESCRIPTOR_TYPE_SAMPLER || copy_src.descriptorType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; - if (descriptorCount && copy_src.pImmutableSamplers && sampler_type) { - pImmutableSamplers = new VkSampler[descriptorCount]; - for (uint32_t i = 0; i < descriptorCount; ++i) { - pImmutableSamplers[i] = copy_src.pImmutableSamplers[i]; - } - } -} - -safe_VkDescriptorSetLayoutBinding& safe_VkDescriptorSetLayoutBinding::operator=(const safe_VkDescriptorSetLayoutBinding& copy_src) -{ - if (©_src == this) return *this; - - if (pImmutableSamplers) - delete[] pImmutableSamplers; - - binding = copy_src.binding; - descriptorType = copy_src.descriptorType; - descriptorCount = copy_src.descriptorCount; - stageFlags = copy_src.stageFlags; - pImmutableSamplers = nullptr; - const bool sampler_type = copy_src.descriptorType == VK_DESCRIPTOR_TYPE_SAMPLER || copy_src.descriptorType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; - if (descriptorCount && copy_src.pImmutableSamplers && sampler_type) { - pImmutableSamplers = new VkSampler[descriptorCount]; - for (uint32_t i = 0; i < descriptorCount; ++i) { - pImmutableSamplers[i] = copy_src.pImmutableSamplers[i]; - } - } - - return *this; -} - -safe_VkDescriptorSetLayoutBinding::~safe_VkDescriptorSetLayoutBinding() -{ - if (pImmutableSamplers) - delete[] pImmutableSamplers; -} - -void safe_VkDescriptorSetLayoutBinding::initialize(const VkDescriptorSetLayoutBinding* in_struct) -{ - binding = in_struct->binding; - descriptorType = in_struct->descriptorType; - descriptorCount = in_struct->descriptorCount; - stageFlags = in_struct->stageFlags; - pImmutableSamplers = nullptr; - const bool sampler_type = in_struct->descriptorType == VK_DESCRIPTOR_TYPE_SAMPLER || in_struct->descriptorType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; - if (descriptorCount && in_struct->pImmutableSamplers && sampler_type) { - pImmutableSamplers = new VkSampler[descriptorCount]; - for (uint32_t i = 0; i < descriptorCount; ++i) { - pImmutableSamplers[i] = in_struct->pImmutableSamplers[i]; - } - } -} - -void safe_VkDescriptorSetLayoutBinding::initialize(const safe_VkDescriptorSetLayoutBinding* copy_src) -{ - binding = copy_src->binding; - descriptorType = copy_src->descriptorType; - descriptorCount = copy_src->descriptorCount; - stageFlags = copy_src->stageFlags; - pImmutableSamplers = nullptr; - const bool sampler_type = copy_src->descriptorType == VK_DESCRIPTOR_TYPE_SAMPLER || copy_src->descriptorType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; - if (descriptorCount && copy_src->pImmutableSamplers && sampler_type) { - pImmutableSamplers = new VkSampler[descriptorCount]; - for (uint32_t i = 0; i < descriptorCount; ++i) { - pImmutableSamplers[i] = copy_src->pImmutableSamplers[i]; - } - } -} - -safe_VkDescriptorSetLayoutCreateInfo::safe_VkDescriptorSetLayoutCreateInfo(const VkDescriptorSetLayoutCreateInfo* in_struct) : +safe_VkCopyDescriptorSet::safe_VkCopyDescriptorSet(const VkCopyDescriptorSet* in_struct) : sType(in_struct->sType), - flags(in_struct->flags), - bindingCount(in_struct->bindingCount), - pBindings(nullptr) + srcSet(in_struct->srcSet), + srcBinding(in_struct->srcBinding), + srcArrayElement(in_struct->srcArrayElement), + dstSet(in_struct->dstSet), + dstBinding(in_struct->dstBinding), + dstArrayElement(in_struct->dstArrayElement), + descriptorCount(in_struct->descriptorCount) { pNext = SafePnextCopy(in_struct->pNext); - if (bindingCount && in_struct->pBindings) { - pBindings = new safe_VkDescriptorSetLayoutBinding[bindingCount]; - for (uint32_t i = 0; i < bindingCount; ++i) { - pBindings[i].initialize(&in_struct->pBindings[i]); - } - } } -safe_VkDescriptorSetLayoutCreateInfo::safe_VkDescriptorSetLayoutCreateInfo() : - sType(VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO), - pNext(nullptr), - pBindings(nullptr) +safe_VkCopyDescriptorSet::safe_VkCopyDescriptorSet() : + sType(VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET), + pNext(nullptr) {} -safe_VkDescriptorSetLayoutCreateInfo::safe_VkDescriptorSetLayoutCreateInfo(const safe_VkDescriptorSetLayoutCreateInfo& copy_src) +safe_VkCopyDescriptorSet::safe_VkCopyDescriptorSet(const safe_VkCopyDescriptorSet& copy_src) { sType = copy_src.sType; - flags = copy_src.flags; - bindingCount = copy_src.bindingCount; - pBindings = nullptr; + srcSet = copy_src.srcSet; + srcBinding = copy_src.srcBinding; + srcArrayElement = copy_src.srcArrayElement; + dstSet = copy_src.dstSet; + dstBinding = copy_src.dstBinding; + dstArrayElement = copy_src.dstArrayElement; + descriptorCount = copy_src.descriptorCount; pNext = SafePnextCopy(copy_src.pNext); - if (bindingCount && copy_src.pBindings) { - pBindings = new safe_VkDescriptorSetLayoutBinding[bindingCount]; - for (uint32_t i = 0; i < bindingCount; ++i) { - pBindings[i].initialize(©_src.pBindings[i]); - } - } } -safe_VkDescriptorSetLayoutCreateInfo& safe_VkDescriptorSetLayoutCreateInfo::operator=(const safe_VkDescriptorSetLayoutCreateInfo& copy_src) +safe_VkCopyDescriptorSet& safe_VkCopyDescriptorSet::operator=(const safe_VkCopyDescriptorSet& copy_src) { if (©_src == this) return *this; - if (pBindings) - delete[] pBindings; if (pNext) FreePnextChain(pNext); sType = copy_src.sType; - flags = copy_src.flags; - bindingCount = copy_src.bindingCount; - pBindings = nullptr; + srcSet = copy_src.srcSet; + srcBinding = copy_src.srcBinding; + srcArrayElement = copy_src.srcArrayElement; + dstSet = copy_src.dstSet; + dstBinding = copy_src.dstBinding; + dstArrayElement = copy_src.dstArrayElement; + descriptorCount = copy_src.descriptorCount; pNext = SafePnextCopy(copy_src.pNext); - if (bindingCount && copy_src.pBindings) { - pBindings = new safe_VkDescriptorSetLayoutBinding[bindingCount]; - for (uint32_t i = 0; i < bindingCount; ++i) { - pBindings[i].initialize(©_src.pBindings[i]); - } - } return *this; } -safe_VkDescriptorSetLayoutCreateInfo::~safe_VkDescriptorSetLayoutCreateInfo() +safe_VkCopyDescriptorSet::~safe_VkCopyDescriptorSet() { - if (pBindings) - delete[] pBindings; if (pNext) FreePnextChain(pNext); } -void safe_VkDescriptorSetLayoutCreateInfo::initialize(const VkDescriptorSetLayoutCreateInfo* in_struct) +void safe_VkCopyDescriptorSet::initialize(const VkCopyDescriptorSet* in_struct) { sType = in_struct->sType; - flags = in_struct->flags; - bindingCount = in_struct->bindingCount; - pBindings = nullptr; + srcSet = in_struct->srcSet; + srcBinding = in_struct->srcBinding; + srcArrayElement = in_struct->srcArrayElement; + dstSet = in_struct->dstSet; + dstBinding = in_struct->dstBinding; + dstArrayElement = in_struct->dstArrayElement; + descriptorCount = in_struct->descriptorCount; pNext = SafePnextCopy(in_struct->pNext); - if (bindingCount && in_struct->pBindings) { - pBindings = new safe_VkDescriptorSetLayoutBinding[bindingCount]; - for (uint32_t i = 0; i < bindingCount; ++i) { - pBindings[i].initialize(&in_struct->pBindings[i]); - } - } } -void safe_VkDescriptorSetLayoutCreateInfo::initialize(const safe_VkDescriptorSetLayoutCreateInfo* copy_src) +void safe_VkCopyDescriptorSet::initialize(const safe_VkCopyDescriptorSet* copy_src) { sType = copy_src->sType; - flags = copy_src->flags; - bindingCount = copy_src->bindingCount; - pBindings = nullptr; + srcSet = copy_src->srcSet; + srcBinding = copy_src->srcBinding; + srcArrayElement = copy_src->srcArrayElement; + dstSet = copy_src->dstSet; + dstBinding = copy_src->dstBinding; + dstArrayElement = copy_src->dstArrayElement; + descriptorCount = copy_src->descriptorCount; pNext = SafePnextCopy(copy_src->pNext); - if (bindingCount && copy_src->pBindings) { - pBindings = new safe_VkDescriptorSetLayoutBinding[bindingCount]; - for (uint32_t i = 0; i < bindingCount; ++i) { - pBindings[i].initialize(©_src->pBindings[i]); - } - } } safe_VkDescriptorPoolCreateInfo::safe_VkDescriptorPoolCreateInfo(const VkDescriptorPoolCreateInfo* in_struct) : @@ -4487,6 +4604,201 @@ void safe_VkDescriptorSetAllocateInfo::initialize(const safe_VkDescriptorSetAllo } } +safe_VkDescriptorSetLayoutBinding::safe_VkDescriptorSetLayoutBinding(const VkDescriptorSetLayoutBinding* in_struct) : + binding(in_struct->binding), + descriptorType(in_struct->descriptorType), + descriptorCount(in_struct->descriptorCount), + stageFlags(in_struct->stageFlags), + pImmutableSamplers(nullptr) +{ + const bool sampler_type = in_struct->descriptorType == VK_DESCRIPTOR_TYPE_SAMPLER || in_struct->descriptorType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; + if (descriptorCount && in_struct->pImmutableSamplers && sampler_type) { + pImmutableSamplers = new VkSampler[descriptorCount]; + for (uint32_t i = 0; i < descriptorCount; ++i) { + pImmutableSamplers[i] = in_struct->pImmutableSamplers[i]; + } + } +} + +safe_VkDescriptorSetLayoutBinding::safe_VkDescriptorSetLayoutBinding() : + pImmutableSamplers(nullptr) +{} + +safe_VkDescriptorSetLayoutBinding::safe_VkDescriptorSetLayoutBinding(const safe_VkDescriptorSetLayoutBinding& copy_src) +{ + binding = copy_src.binding; + descriptorType = copy_src.descriptorType; + descriptorCount = copy_src.descriptorCount; + stageFlags = copy_src.stageFlags; + pImmutableSamplers = nullptr; + const bool sampler_type = copy_src.descriptorType == VK_DESCRIPTOR_TYPE_SAMPLER || copy_src.descriptorType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; + if (descriptorCount && copy_src.pImmutableSamplers && sampler_type) { + pImmutableSamplers = new VkSampler[descriptorCount]; + for (uint32_t i = 0; i < descriptorCount; ++i) { + pImmutableSamplers[i] = copy_src.pImmutableSamplers[i]; + } + } +} + +safe_VkDescriptorSetLayoutBinding& safe_VkDescriptorSetLayoutBinding::operator=(const safe_VkDescriptorSetLayoutBinding& copy_src) +{ + if (©_src == this) return *this; + + if (pImmutableSamplers) + delete[] pImmutableSamplers; + + binding = copy_src.binding; + descriptorType = copy_src.descriptorType; + descriptorCount = copy_src.descriptorCount; + stageFlags = copy_src.stageFlags; + pImmutableSamplers = nullptr; + const bool sampler_type = copy_src.descriptorType == VK_DESCRIPTOR_TYPE_SAMPLER || copy_src.descriptorType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; + if (descriptorCount && copy_src.pImmutableSamplers && sampler_type) { + pImmutableSamplers = new VkSampler[descriptorCount]; + for (uint32_t i = 0; i < descriptorCount; ++i) { + pImmutableSamplers[i] = copy_src.pImmutableSamplers[i]; + } + } + + return *this; +} + +safe_VkDescriptorSetLayoutBinding::~safe_VkDescriptorSetLayoutBinding() +{ + if (pImmutableSamplers) + delete[] pImmutableSamplers; +} + +void safe_VkDescriptorSetLayoutBinding::initialize(const VkDescriptorSetLayoutBinding* in_struct) +{ + binding = in_struct->binding; + descriptorType = in_struct->descriptorType; + descriptorCount = in_struct->descriptorCount; + stageFlags = in_struct->stageFlags; + pImmutableSamplers = nullptr; + const bool sampler_type = in_struct->descriptorType == VK_DESCRIPTOR_TYPE_SAMPLER || in_struct->descriptorType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; + if (descriptorCount && in_struct->pImmutableSamplers && sampler_type) { + pImmutableSamplers = new VkSampler[descriptorCount]; + for (uint32_t i = 0; i < descriptorCount; ++i) { + pImmutableSamplers[i] = in_struct->pImmutableSamplers[i]; + } + } +} + +void safe_VkDescriptorSetLayoutBinding::initialize(const safe_VkDescriptorSetLayoutBinding* copy_src) +{ + binding = copy_src->binding; + descriptorType = copy_src->descriptorType; + descriptorCount = copy_src->descriptorCount; + stageFlags = copy_src->stageFlags; + pImmutableSamplers = nullptr; + const bool sampler_type = copy_src->descriptorType == VK_DESCRIPTOR_TYPE_SAMPLER || copy_src->descriptorType == VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER; + if (descriptorCount && copy_src->pImmutableSamplers && sampler_type) { + pImmutableSamplers = new VkSampler[descriptorCount]; + for (uint32_t i = 0; i < descriptorCount; ++i) { + pImmutableSamplers[i] = copy_src->pImmutableSamplers[i]; + } + } +} + +safe_VkDescriptorSetLayoutCreateInfo::safe_VkDescriptorSetLayoutCreateInfo(const VkDescriptorSetLayoutCreateInfo* in_struct) : + sType(in_struct->sType), + flags(in_struct->flags), + bindingCount(in_struct->bindingCount), + pBindings(nullptr) +{ + pNext = SafePnextCopy(in_struct->pNext); + if (bindingCount && in_struct->pBindings) { + pBindings = new safe_VkDescriptorSetLayoutBinding[bindingCount]; + for (uint32_t i = 0; i < bindingCount; ++i) { + pBindings[i].initialize(&in_struct->pBindings[i]); + } + } +} + +safe_VkDescriptorSetLayoutCreateInfo::safe_VkDescriptorSetLayoutCreateInfo() : + sType(VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO), + pNext(nullptr), + pBindings(nullptr) +{} + +safe_VkDescriptorSetLayoutCreateInfo::safe_VkDescriptorSetLayoutCreateInfo(const safe_VkDescriptorSetLayoutCreateInfo& copy_src) +{ + sType = copy_src.sType; + flags = copy_src.flags; + bindingCount = copy_src.bindingCount; + pBindings = nullptr; + pNext = SafePnextCopy(copy_src.pNext); + if (bindingCount && copy_src.pBindings) { + pBindings = new safe_VkDescriptorSetLayoutBinding[bindingCount]; + for (uint32_t i = 0; i < bindingCount; ++i) { + pBindings[i].initialize(©_src.pBindings[i]); + } + } +} + +safe_VkDescriptorSetLayoutCreateInfo& safe_VkDescriptorSetLayoutCreateInfo::operator=(const safe_VkDescriptorSetLayoutCreateInfo& copy_src) +{ + if (©_src == this) return *this; + + if (pBindings) + delete[] pBindings; + if (pNext) + FreePnextChain(pNext); + + sType = copy_src.sType; + flags = copy_src.flags; + bindingCount = copy_src.bindingCount; + pBindings = nullptr; + pNext = SafePnextCopy(copy_src.pNext); + if (bindingCount && copy_src.pBindings) { + pBindings = new safe_VkDescriptorSetLayoutBinding[bindingCount]; + for (uint32_t i = 0; i < bindingCount; ++i) { + pBindings[i].initialize(©_src.pBindings[i]); + } + } + + return *this; +} + +safe_VkDescriptorSetLayoutCreateInfo::~safe_VkDescriptorSetLayoutCreateInfo() +{ + if (pBindings) + delete[] pBindings; + if (pNext) + FreePnextChain(pNext); +} + +void safe_VkDescriptorSetLayoutCreateInfo::initialize(const VkDescriptorSetLayoutCreateInfo* in_struct) +{ + sType = in_struct->sType; + flags = in_struct->flags; + bindingCount = in_struct->bindingCount; + pBindings = nullptr; + pNext = SafePnextCopy(in_struct->pNext); + if (bindingCount && in_struct->pBindings) { + pBindings = new safe_VkDescriptorSetLayoutBinding[bindingCount]; + for (uint32_t i = 0; i < bindingCount; ++i) { + pBindings[i].initialize(&in_struct->pBindings[i]); + } + } +} + +void safe_VkDescriptorSetLayoutCreateInfo::initialize(const safe_VkDescriptorSetLayoutCreateInfo* copy_src) +{ + sType = copy_src->sType; + flags = copy_src->flags; + bindingCount = copy_src->bindingCount; + pBindings = nullptr; + pNext = SafePnextCopy(copy_src->pNext); + if (bindingCount && copy_src->pBindings) { + pBindings = new safe_VkDescriptorSetLayoutBinding[bindingCount]; + for (uint32_t i = 0; i < bindingCount; ++i) { + pBindings[i].initialize(©_src->pBindings[i]); + } + } +} + safe_VkWriteDescriptorSet::safe_VkWriteDescriptorSet(const VkWriteDescriptorSet* in_struct) : sType(in_struct->sType), dstSet(in_struct->dstSet), @@ -4770,89 +5082,6 @@ void safe_VkWriteDescriptorSet::initialize(const safe_VkWriteDescriptorSet* copy } } -safe_VkCopyDescriptorSet::safe_VkCopyDescriptorSet(const VkCopyDescriptorSet* in_struct) : - sType(in_struct->sType), - srcSet(in_struct->srcSet), - srcBinding(in_struct->srcBinding), - srcArrayElement(in_struct->srcArrayElement), - dstSet(in_struct->dstSet), - dstBinding(in_struct->dstBinding), - dstArrayElement(in_struct->dstArrayElement), - descriptorCount(in_struct->descriptorCount) -{ - pNext = SafePnextCopy(in_struct->pNext); -} - -safe_VkCopyDescriptorSet::safe_VkCopyDescriptorSet() : - sType(VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET), - pNext(nullptr) -{} - -safe_VkCopyDescriptorSet::safe_VkCopyDescriptorSet(const safe_VkCopyDescriptorSet& copy_src) -{ - sType = copy_src.sType; - srcSet = copy_src.srcSet; - srcBinding = copy_src.srcBinding; - srcArrayElement = copy_src.srcArrayElement; - dstSet = copy_src.dstSet; - dstBinding = copy_src.dstBinding; - dstArrayElement = copy_src.dstArrayElement; - descriptorCount = copy_src.descriptorCount; - pNext = SafePnextCopy(copy_src.pNext); -} - -safe_VkCopyDescriptorSet& safe_VkCopyDescriptorSet::operator=(const safe_VkCopyDescriptorSet& copy_src) -{ - if (©_src == this) return *this; - - if (pNext) - FreePnextChain(pNext); - - sType = copy_src.sType; - srcSet = copy_src.srcSet; - srcBinding = copy_src.srcBinding; - srcArrayElement = copy_src.srcArrayElement; - dstSet = copy_src.dstSet; - dstBinding = copy_src.dstBinding; - dstArrayElement = copy_src.dstArrayElement; - descriptorCount = copy_src.descriptorCount; - pNext = SafePnextCopy(copy_src.pNext); - - return *this; -} - -safe_VkCopyDescriptorSet::~safe_VkCopyDescriptorSet() -{ - if (pNext) - FreePnextChain(pNext); -} - -void safe_VkCopyDescriptorSet::initialize(const VkCopyDescriptorSet* in_struct) -{ - sType = in_struct->sType; - srcSet = in_struct->srcSet; - srcBinding = in_struct->srcBinding; - srcArrayElement = in_struct->srcArrayElement; - dstSet = in_struct->dstSet; - dstBinding = in_struct->dstBinding; - dstArrayElement = in_struct->dstArrayElement; - descriptorCount = in_struct->descriptorCount; - pNext = SafePnextCopy(in_struct->pNext); -} - -void safe_VkCopyDescriptorSet::initialize(const safe_VkCopyDescriptorSet* copy_src) -{ - sType = copy_src->sType; - srcSet = copy_src->srcSet; - srcBinding = copy_src->srcBinding; - srcArrayElement = copy_src->srcArrayElement; - dstSet = copy_src->dstSet; - dstBinding = copy_src->dstBinding; - dstArrayElement = copy_src->dstArrayElement; - descriptorCount = copy_src->descriptorCount; - pNext = SafePnextCopy(copy_src->pNext); -} - safe_VkFramebufferCreateInfo::safe_VkFramebufferCreateInfo(const VkFramebufferCreateInfo* in_struct) : sType(in_struct->sType), flags(in_struct->flags), @@ -5613,235 +5842,6 @@ void safe_VkCommandBufferBeginInfo::initialize(const safe_VkCommandBufferBeginIn pInheritanceInfo = new safe_VkCommandBufferInheritanceInfo(*copy_src->pInheritanceInfo); } -safe_VkMemoryBarrier::safe_VkMemoryBarrier(const VkMemoryBarrier* in_struct) : - sType(in_struct->sType), - srcAccessMask(in_struct->srcAccessMask), - dstAccessMask(in_struct->dstAccessMask) -{ - pNext = SafePnextCopy(in_struct->pNext); -} - -safe_VkMemoryBarrier::safe_VkMemoryBarrier() : - sType(VK_STRUCTURE_TYPE_MEMORY_BARRIER), - pNext(nullptr) -{} - -safe_VkMemoryBarrier::safe_VkMemoryBarrier(const safe_VkMemoryBarrier& copy_src) -{ - sType = copy_src.sType; - srcAccessMask = copy_src.srcAccessMask; - dstAccessMask = copy_src.dstAccessMask; - pNext = SafePnextCopy(copy_src.pNext); -} - -safe_VkMemoryBarrier& safe_VkMemoryBarrier::operator=(const safe_VkMemoryBarrier& copy_src) -{ - if (©_src == this) return *this; - - if (pNext) - FreePnextChain(pNext); - - sType = copy_src.sType; - srcAccessMask = copy_src.srcAccessMask; - dstAccessMask = copy_src.dstAccessMask; - pNext = SafePnextCopy(copy_src.pNext); - - return *this; -} - -safe_VkMemoryBarrier::~safe_VkMemoryBarrier() -{ - if (pNext) - FreePnextChain(pNext); -} - -void safe_VkMemoryBarrier::initialize(const VkMemoryBarrier* in_struct) -{ - sType = in_struct->sType; - srcAccessMask = in_struct->srcAccessMask; - dstAccessMask = in_struct->dstAccessMask; - pNext = SafePnextCopy(in_struct->pNext); -} - -void safe_VkMemoryBarrier::initialize(const safe_VkMemoryBarrier* copy_src) -{ - sType = copy_src->sType; - srcAccessMask = copy_src->srcAccessMask; - dstAccessMask = copy_src->dstAccessMask; - pNext = SafePnextCopy(copy_src->pNext); -} - -safe_VkBufferMemoryBarrier::safe_VkBufferMemoryBarrier(const VkBufferMemoryBarrier* in_struct) : - sType(in_struct->sType), - srcAccessMask(in_struct->srcAccessMask), - dstAccessMask(in_struct->dstAccessMask), - srcQueueFamilyIndex(in_struct->srcQueueFamilyIndex), - dstQueueFamilyIndex(in_struct->dstQueueFamilyIndex), - buffer(in_struct->buffer), - offset(in_struct->offset), - size(in_struct->size) -{ - pNext = SafePnextCopy(in_struct->pNext); -} - -safe_VkBufferMemoryBarrier::safe_VkBufferMemoryBarrier() : - sType(VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER), - pNext(nullptr) -{} - -safe_VkBufferMemoryBarrier::safe_VkBufferMemoryBarrier(const safe_VkBufferMemoryBarrier& copy_src) -{ - sType = copy_src.sType; - srcAccessMask = copy_src.srcAccessMask; - dstAccessMask = copy_src.dstAccessMask; - srcQueueFamilyIndex = copy_src.srcQueueFamilyIndex; - dstQueueFamilyIndex = copy_src.dstQueueFamilyIndex; - buffer = copy_src.buffer; - offset = copy_src.offset; - size = copy_src.size; - pNext = SafePnextCopy(copy_src.pNext); -} - -safe_VkBufferMemoryBarrier& safe_VkBufferMemoryBarrier::operator=(const safe_VkBufferMemoryBarrier& copy_src) -{ - if (©_src == this) return *this; - - if (pNext) - FreePnextChain(pNext); - - sType = copy_src.sType; - srcAccessMask = copy_src.srcAccessMask; - dstAccessMask = copy_src.dstAccessMask; - srcQueueFamilyIndex = copy_src.srcQueueFamilyIndex; - dstQueueFamilyIndex = copy_src.dstQueueFamilyIndex; - buffer = copy_src.buffer; - offset = copy_src.offset; - size = copy_src.size; - pNext = SafePnextCopy(copy_src.pNext); - - return *this; -} - -safe_VkBufferMemoryBarrier::~safe_VkBufferMemoryBarrier() -{ - if (pNext) - FreePnextChain(pNext); -} - -void safe_VkBufferMemoryBarrier::initialize(const VkBufferMemoryBarrier* in_struct) -{ - sType = in_struct->sType; - srcAccessMask = in_struct->srcAccessMask; - dstAccessMask = in_struct->dstAccessMask; - srcQueueFamilyIndex = in_struct->srcQueueFamilyIndex; - dstQueueFamilyIndex = in_struct->dstQueueFamilyIndex; - buffer = in_struct->buffer; - offset = in_struct->offset; - size = in_struct->size; - pNext = SafePnextCopy(in_struct->pNext); -} - -void safe_VkBufferMemoryBarrier::initialize(const safe_VkBufferMemoryBarrier* copy_src) -{ - sType = copy_src->sType; - srcAccessMask = copy_src->srcAccessMask; - dstAccessMask = copy_src->dstAccessMask; - srcQueueFamilyIndex = copy_src->srcQueueFamilyIndex; - dstQueueFamilyIndex = copy_src->dstQueueFamilyIndex; - buffer = copy_src->buffer; - offset = copy_src->offset; - size = copy_src->size; - pNext = SafePnextCopy(copy_src->pNext); -} - -safe_VkImageMemoryBarrier::safe_VkImageMemoryBarrier(const VkImageMemoryBarrier* in_struct) : - sType(in_struct->sType), - srcAccessMask(in_struct->srcAccessMask), - dstAccessMask(in_struct->dstAccessMask), - oldLayout(in_struct->oldLayout), - newLayout(in_struct->newLayout), - srcQueueFamilyIndex(in_struct->srcQueueFamilyIndex), - dstQueueFamilyIndex(in_struct->dstQueueFamilyIndex), - image(in_struct->image), - subresourceRange(in_struct->subresourceRange) -{ - pNext = SafePnextCopy(in_struct->pNext); -} - -safe_VkImageMemoryBarrier::safe_VkImageMemoryBarrier() : - sType(VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER), - pNext(nullptr) -{} - -safe_VkImageMemoryBarrier::safe_VkImageMemoryBarrier(const safe_VkImageMemoryBarrier& copy_src) -{ - sType = copy_src.sType; - srcAccessMask = copy_src.srcAccessMask; - dstAccessMask = copy_src.dstAccessMask; - oldLayout = copy_src.oldLayout; - newLayout = copy_src.newLayout; - srcQueueFamilyIndex = copy_src.srcQueueFamilyIndex; - dstQueueFamilyIndex = copy_src.dstQueueFamilyIndex; - image = copy_src.image; - subresourceRange = copy_src.subresourceRange; - pNext = SafePnextCopy(copy_src.pNext); -} - -safe_VkImageMemoryBarrier& safe_VkImageMemoryBarrier::operator=(const safe_VkImageMemoryBarrier& copy_src) -{ - if (©_src == this) return *this; - - if (pNext) - FreePnextChain(pNext); - - sType = copy_src.sType; - srcAccessMask = copy_src.srcAccessMask; - dstAccessMask = copy_src.dstAccessMask; - oldLayout = copy_src.oldLayout; - newLayout = copy_src.newLayout; - srcQueueFamilyIndex = copy_src.srcQueueFamilyIndex; - dstQueueFamilyIndex = copy_src.dstQueueFamilyIndex; - image = copy_src.image; - subresourceRange = copy_src.subresourceRange; - pNext = SafePnextCopy(copy_src.pNext); - - return *this; -} - -safe_VkImageMemoryBarrier::~safe_VkImageMemoryBarrier() -{ - if (pNext) - FreePnextChain(pNext); -} - -void safe_VkImageMemoryBarrier::initialize(const VkImageMemoryBarrier* in_struct) -{ - sType = in_struct->sType; - srcAccessMask = in_struct->srcAccessMask; - dstAccessMask = in_struct->dstAccessMask; - oldLayout = in_struct->oldLayout; - newLayout = in_struct->newLayout; - srcQueueFamilyIndex = in_struct->srcQueueFamilyIndex; - dstQueueFamilyIndex = in_struct->dstQueueFamilyIndex; - image = in_struct->image; - subresourceRange = in_struct->subresourceRange; - pNext = SafePnextCopy(in_struct->pNext); -} - -void safe_VkImageMemoryBarrier::initialize(const safe_VkImageMemoryBarrier* copy_src) -{ - sType = copy_src->sType; - srcAccessMask = copy_src->srcAccessMask; - dstAccessMask = copy_src->dstAccessMask; - oldLayout = copy_src->oldLayout; - newLayout = copy_src->newLayout; - srcQueueFamilyIndex = copy_src->srcQueueFamilyIndex; - dstQueueFamilyIndex = copy_src->dstQueueFamilyIndex; - image = copy_src->image; - subresourceRange = copy_src->subresourceRange; - pNext = SafePnextCopy(copy_src->pNext); -} - safe_VkRenderPassBeginInfo::safe_VkRenderPassBeginInfo(const VkRenderPassBeginInfo* in_struct) : sType(in_struct->sType), renderPass(in_struct->renderPass), @@ -15399,6 +15399,64 @@ void safe_VkDeviceGroupSwapchainCreateInfoKHR::initialize(const safe_VkDeviceGro pNext = SafePnextCopy(copy_src->pNext); } +safe_VkDisplayModeCreateInfoKHR::safe_VkDisplayModeCreateInfoKHR(const VkDisplayModeCreateInfoKHR* in_struct) : + sType(in_struct->sType), + flags(in_struct->flags), + parameters(in_struct->parameters) +{ + pNext = SafePnextCopy(in_struct->pNext); +} + +safe_VkDisplayModeCreateInfoKHR::safe_VkDisplayModeCreateInfoKHR() : + sType(VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR), + pNext(nullptr) +{} + +safe_VkDisplayModeCreateInfoKHR::safe_VkDisplayModeCreateInfoKHR(const safe_VkDisplayModeCreateInfoKHR& copy_src) +{ + sType = copy_src.sType; + flags = copy_src.flags; + parameters = copy_src.parameters; + pNext = SafePnextCopy(copy_src.pNext); +} + +safe_VkDisplayModeCreateInfoKHR& safe_VkDisplayModeCreateInfoKHR::operator=(const safe_VkDisplayModeCreateInfoKHR& copy_src) +{ + if (©_src == this) return *this; + + if (pNext) + FreePnextChain(pNext); + + sType = copy_src.sType; + flags = copy_src.flags; + parameters = copy_src.parameters; + pNext = SafePnextCopy(copy_src.pNext); + + return *this; +} + +safe_VkDisplayModeCreateInfoKHR::~safe_VkDisplayModeCreateInfoKHR() +{ + if (pNext) + FreePnextChain(pNext); +} + +void safe_VkDisplayModeCreateInfoKHR::initialize(const VkDisplayModeCreateInfoKHR* in_struct) +{ + sType = in_struct->sType; + flags = in_struct->flags; + parameters = in_struct->parameters; + pNext = SafePnextCopy(in_struct->pNext); +} + +void safe_VkDisplayModeCreateInfoKHR::initialize(const safe_VkDisplayModeCreateInfoKHR* copy_src) +{ + sType = copy_src->sType; + flags = copy_src->flags; + parameters = copy_src->parameters; + pNext = SafePnextCopy(copy_src->pNext); +} + safe_VkDisplayPropertiesKHR::safe_VkDisplayPropertiesKHR(const VkDisplayPropertiesKHR* in_struct) : display(in_struct->display), physicalDimensions(in_struct->physicalDimensions), @@ -15469,64 +15527,6 @@ void safe_VkDisplayPropertiesKHR::initialize(const safe_VkDisplayPropertiesKHR* displayName = SafeStringCopy(copy_src->displayName); } -safe_VkDisplayModeCreateInfoKHR::safe_VkDisplayModeCreateInfoKHR(const VkDisplayModeCreateInfoKHR* in_struct) : - sType(in_struct->sType), - flags(in_struct->flags), - parameters(in_struct->parameters) -{ - pNext = SafePnextCopy(in_struct->pNext); -} - -safe_VkDisplayModeCreateInfoKHR::safe_VkDisplayModeCreateInfoKHR() : - sType(VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR), - pNext(nullptr) -{} - -safe_VkDisplayModeCreateInfoKHR::safe_VkDisplayModeCreateInfoKHR(const safe_VkDisplayModeCreateInfoKHR& copy_src) -{ - sType = copy_src.sType; - flags = copy_src.flags; - parameters = copy_src.parameters; - pNext = SafePnextCopy(copy_src.pNext); -} - -safe_VkDisplayModeCreateInfoKHR& safe_VkDisplayModeCreateInfoKHR::operator=(const safe_VkDisplayModeCreateInfoKHR& copy_src) -{ - if (©_src == this) return *this; - - if (pNext) - FreePnextChain(pNext); - - sType = copy_src.sType; - flags = copy_src.flags; - parameters = copy_src.parameters; - pNext = SafePnextCopy(copy_src.pNext); - - return *this; -} - -safe_VkDisplayModeCreateInfoKHR::~safe_VkDisplayModeCreateInfoKHR() -{ - if (pNext) - FreePnextChain(pNext); -} - -void safe_VkDisplayModeCreateInfoKHR::initialize(const VkDisplayModeCreateInfoKHR* in_struct) -{ - sType = in_struct->sType; - flags = in_struct->flags; - parameters = in_struct->parameters; - pNext = SafePnextCopy(in_struct->pNext); -} - -void safe_VkDisplayModeCreateInfoKHR::initialize(const safe_VkDisplayModeCreateInfoKHR* copy_src) -{ - sType = copy_src->sType; - flags = copy_src->flags; - parameters = copy_src->parameters; - pNext = SafePnextCopy(copy_src->pNext); -} - safe_VkDisplaySurfaceCreateInfoKHR::safe_VkDisplaySurfaceCreateInfoKHR(const VkDisplaySurfaceCreateInfoKHR* in_struct) : sType(in_struct->sType), flags(in_struct->flags), @@ -22313,179 +22313,253 @@ safe_VkDebugUtilsMessengerCallbackDataEXT::safe_VkDebugUtilsMessengerCallbackDat } } -safe_VkDebugUtilsMessengerCallbackDataEXT::safe_VkDebugUtilsMessengerCallbackDataEXT() : - sType(VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT), - pNext(nullptr), - pMessageIdName(nullptr), - pMessage(nullptr), - pQueueLabels(nullptr), - pCmdBufLabels(nullptr), - pObjects(nullptr) -{} - -safe_VkDebugUtilsMessengerCallbackDataEXT::safe_VkDebugUtilsMessengerCallbackDataEXT(const safe_VkDebugUtilsMessengerCallbackDataEXT& copy_src) +safe_VkDebugUtilsMessengerCallbackDataEXT::safe_VkDebugUtilsMessengerCallbackDataEXT() : + sType(VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT), + pNext(nullptr), + pMessageIdName(nullptr), + pMessage(nullptr), + pQueueLabels(nullptr), + pCmdBufLabels(nullptr), + pObjects(nullptr) +{} + +safe_VkDebugUtilsMessengerCallbackDataEXT::safe_VkDebugUtilsMessengerCallbackDataEXT(const safe_VkDebugUtilsMessengerCallbackDataEXT& copy_src) +{ + sType = copy_src.sType; + flags = copy_src.flags; + messageIdNumber = copy_src.messageIdNumber; + queueLabelCount = copy_src.queueLabelCount; + pQueueLabels = nullptr; + cmdBufLabelCount = copy_src.cmdBufLabelCount; + pCmdBufLabels = nullptr; + objectCount = copy_src.objectCount; + pObjects = nullptr; + pNext = SafePnextCopy(copy_src.pNext); + pMessageIdName = SafeStringCopy(copy_src.pMessageIdName); + pMessage = SafeStringCopy(copy_src.pMessage); + if (queueLabelCount && copy_src.pQueueLabels) { + pQueueLabels = new safe_VkDebugUtilsLabelEXT[queueLabelCount]; + for (uint32_t i = 0; i < queueLabelCount; ++i) { + pQueueLabels[i].initialize(©_src.pQueueLabels[i]); + } + } + if (cmdBufLabelCount && copy_src.pCmdBufLabels) { + pCmdBufLabels = new safe_VkDebugUtilsLabelEXT[cmdBufLabelCount]; + for (uint32_t i = 0; i < cmdBufLabelCount; ++i) { + pCmdBufLabels[i].initialize(©_src.pCmdBufLabels[i]); + } + } + if (objectCount && copy_src.pObjects) { + pObjects = new safe_VkDebugUtilsObjectNameInfoEXT[objectCount]; + for (uint32_t i = 0; i < objectCount; ++i) { + pObjects[i].initialize(©_src.pObjects[i]); + } + } +} + +safe_VkDebugUtilsMessengerCallbackDataEXT& safe_VkDebugUtilsMessengerCallbackDataEXT::operator=(const safe_VkDebugUtilsMessengerCallbackDataEXT& copy_src) +{ + if (©_src == this) return *this; + + if (pMessageIdName) delete [] pMessageIdName; + if (pMessage) delete [] pMessage; + if (pQueueLabels) + delete[] pQueueLabels; + if (pCmdBufLabels) + delete[] pCmdBufLabels; + if (pObjects) + delete[] pObjects; + if (pNext) + FreePnextChain(pNext); + + sType = copy_src.sType; + flags = copy_src.flags; + messageIdNumber = copy_src.messageIdNumber; + queueLabelCount = copy_src.queueLabelCount; + pQueueLabels = nullptr; + cmdBufLabelCount = copy_src.cmdBufLabelCount; + pCmdBufLabels = nullptr; + objectCount = copy_src.objectCount; + pObjects = nullptr; + pNext = SafePnextCopy(copy_src.pNext); + pMessageIdName = SafeStringCopy(copy_src.pMessageIdName); + pMessage = SafeStringCopy(copy_src.pMessage); + if (queueLabelCount && copy_src.pQueueLabels) { + pQueueLabels = new safe_VkDebugUtilsLabelEXT[queueLabelCount]; + for (uint32_t i = 0; i < queueLabelCount; ++i) { + pQueueLabels[i].initialize(©_src.pQueueLabels[i]); + } + } + if (cmdBufLabelCount && copy_src.pCmdBufLabels) { + pCmdBufLabels = new safe_VkDebugUtilsLabelEXT[cmdBufLabelCount]; + for (uint32_t i = 0; i < cmdBufLabelCount; ++i) { + pCmdBufLabels[i].initialize(©_src.pCmdBufLabels[i]); + } + } + if (objectCount && copy_src.pObjects) { + pObjects = new safe_VkDebugUtilsObjectNameInfoEXT[objectCount]; + for (uint32_t i = 0; i < objectCount; ++i) { + pObjects[i].initialize(©_src.pObjects[i]); + } + } + + return *this; +} + +safe_VkDebugUtilsMessengerCallbackDataEXT::~safe_VkDebugUtilsMessengerCallbackDataEXT() +{ + if (pMessageIdName) delete [] pMessageIdName; + if (pMessage) delete [] pMessage; + if (pQueueLabels) + delete[] pQueueLabels; + if (pCmdBufLabels) + delete[] pCmdBufLabels; + if (pObjects) + delete[] pObjects; + if (pNext) + FreePnextChain(pNext); +} + +void safe_VkDebugUtilsMessengerCallbackDataEXT::initialize(const VkDebugUtilsMessengerCallbackDataEXT* in_struct) +{ + sType = in_struct->sType; + flags = in_struct->flags; + messageIdNumber = in_struct->messageIdNumber; + queueLabelCount = in_struct->queueLabelCount; + pQueueLabels = nullptr; + cmdBufLabelCount = in_struct->cmdBufLabelCount; + pCmdBufLabels = nullptr; + objectCount = in_struct->objectCount; + pObjects = nullptr; + pNext = SafePnextCopy(in_struct->pNext); + pMessageIdName = SafeStringCopy(in_struct->pMessageIdName); + pMessage = SafeStringCopy(in_struct->pMessage); + if (queueLabelCount && in_struct->pQueueLabels) { + pQueueLabels = new safe_VkDebugUtilsLabelEXT[queueLabelCount]; + for (uint32_t i = 0; i < queueLabelCount; ++i) { + pQueueLabels[i].initialize(&in_struct->pQueueLabels[i]); + } + } + if (cmdBufLabelCount && in_struct->pCmdBufLabels) { + pCmdBufLabels = new safe_VkDebugUtilsLabelEXT[cmdBufLabelCount]; + for (uint32_t i = 0; i < cmdBufLabelCount; ++i) { + pCmdBufLabels[i].initialize(&in_struct->pCmdBufLabels[i]); + } + } + if (objectCount && in_struct->pObjects) { + pObjects = new safe_VkDebugUtilsObjectNameInfoEXT[objectCount]; + for (uint32_t i = 0; i < objectCount; ++i) { + pObjects[i].initialize(&in_struct->pObjects[i]); + } + } +} + +void safe_VkDebugUtilsMessengerCallbackDataEXT::initialize(const safe_VkDebugUtilsMessengerCallbackDataEXT* copy_src) { - sType = copy_src.sType; - flags = copy_src.flags; - messageIdNumber = copy_src.messageIdNumber; - queueLabelCount = copy_src.queueLabelCount; + sType = copy_src->sType; + flags = copy_src->flags; + messageIdNumber = copy_src->messageIdNumber; + queueLabelCount = copy_src->queueLabelCount; pQueueLabels = nullptr; - cmdBufLabelCount = copy_src.cmdBufLabelCount; + cmdBufLabelCount = copy_src->cmdBufLabelCount; pCmdBufLabels = nullptr; - objectCount = copy_src.objectCount; + objectCount = copy_src->objectCount; pObjects = nullptr; - pNext = SafePnextCopy(copy_src.pNext); - pMessageIdName = SafeStringCopy(copy_src.pMessageIdName); - pMessage = SafeStringCopy(copy_src.pMessage); - if (queueLabelCount && copy_src.pQueueLabels) { + pNext = SafePnextCopy(copy_src->pNext); + pMessageIdName = SafeStringCopy(copy_src->pMessageIdName); + pMessage = SafeStringCopy(copy_src->pMessage); + if (queueLabelCount && copy_src->pQueueLabels) { pQueueLabels = new safe_VkDebugUtilsLabelEXT[queueLabelCount]; for (uint32_t i = 0; i < queueLabelCount; ++i) { - pQueueLabels[i].initialize(©_src.pQueueLabels[i]); + pQueueLabels[i].initialize(©_src->pQueueLabels[i]); } } - if (cmdBufLabelCount && copy_src.pCmdBufLabels) { + if (cmdBufLabelCount && copy_src->pCmdBufLabels) { pCmdBufLabels = new safe_VkDebugUtilsLabelEXT[cmdBufLabelCount]; for (uint32_t i = 0; i < cmdBufLabelCount; ++i) { - pCmdBufLabels[i].initialize(©_src.pCmdBufLabels[i]); + pCmdBufLabels[i].initialize(©_src->pCmdBufLabels[i]); } } - if (objectCount && copy_src.pObjects) { + if (objectCount && copy_src->pObjects) { pObjects = new safe_VkDebugUtilsObjectNameInfoEXT[objectCount]; for (uint32_t i = 0; i < objectCount; ++i) { - pObjects[i].initialize(©_src.pObjects[i]); + pObjects[i].initialize(©_src->pObjects[i]); } } } -safe_VkDebugUtilsMessengerCallbackDataEXT& safe_VkDebugUtilsMessengerCallbackDataEXT::operator=(const safe_VkDebugUtilsMessengerCallbackDataEXT& copy_src) +safe_VkDebugUtilsMessengerCreateInfoEXT::safe_VkDebugUtilsMessengerCreateInfoEXT(const VkDebugUtilsMessengerCreateInfoEXT* in_struct) : + sType(in_struct->sType), + flags(in_struct->flags), + messageSeverity(in_struct->messageSeverity), + messageType(in_struct->messageType), + pfnUserCallback(in_struct->pfnUserCallback), + pUserData(in_struct->pUserData) +{ + pNext = SafePnextCopy(in_struct->pNext); +} + +safe_VkDebugUtilsMessengerCreateInfoEXT::safe_VkDebugUtilsMessengerCreateInfoEXT() : + sType(VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT), + pNext(nullptr), + pUserData(nullptr) +{} + +safe_VkDebugUtilsMessengerCreateInfoEXT::safe_VkDebugUtilsMessengerCreateInfoEXT(const safe_VkDebugUtilsMessengerCreateInfoEXT& copy_src) +{ + sType = copy_src.sType; + flags = copy_src.flags; + messageSeverity = copy_src.messageSeverity; + messageType = copy_src.messageType; + pfnUserCallback = copy_src.pfnUserCallback; + pUserData = copy_src.pUserData; + pNext = SafePnextCopy(copy_src.pNext); +} + +safe_VkDebugUtilsMessengerCreateInfoEXT& safe_VkDebugUtilsMessengerCreateInfoEXT::operator=(const safe_VkDebugUtilsMessengerCreateInfoEXT& copy_src) { if (©_src == this) return *this; - if (pMessageIdName) delete [] pMessageIdName; - if (pMessage) delete [] pMessage; - if (pQueueLabels) - delete[] pQueueLabels; - if (pCmdBufLabels) - delete[] pCmdBufLabels; - if (pObjects) - delete[] pObjects; if (pNext) FreePnextChain(pNext); sType = copy_src.sType; flags = copy_src.flags; - messageIdNumber = copy_src.messageIdNumber; - queueLabelCount = copy_src.queueLabelCount; - pQueueLabels = nullptr; - cmdBufLabelCount = copy_src.cmdBufLabelCount; - pCmdBufLabels = nullptr; - objectCount = copy_src.objectCount; - pObjects = nullptr; + messageSeverity = copy_src.messageSeverity; + messageType = copy_src.messageType; + pfnUserCallback = copy_src.pfnUserCallback; + pUserData = copy_src.pUserData; pNext = SafePnextCopy(copy_src.pNext); - pMessageIdName = SafeStringCopy(copy_src.pMessageIdName); - pMessage = SafeStringCopy(copy_src.pMessage); - if (queueLabelCount && copy_src.pQueueLabels) { - pQueueLabels = new safe_VkDebugUtilsLabelEXT[queueLabelCount]; - for (uint32_t i = 0; i < queueLabelCount; ++i) { - pQueueLabels[i].initialize(©_src.pQueueLabels[i]); - } - } - if (cmdBufLabelCount && copy_src.pCmdBufLabels) { - pCmdBufLabels = new safe_VkDebugUtilsLabelEXT[cmdBufLabelCount]; - for (uint32_t i = 0; i < cmdBufLabelCount; ++i) { - pCmdBufLabels[i].initialize(©_src.pCmdBufLabels[i]); - } - } - if (objectCount && copy_src.pObjects) { - pObjects = new safe_VkDebugUtilsObjectNameInfoEXT[objectCount]; - for (uint32_t i = 0; i < objectCount; ++i) { - pObjects[i].initialize(©_src.pObjects[i]); - } - } return *this; } -safe_VkDebugUtilsMessengerCallbackDataEXT::~safe_VkDebugUtilsMessengerCallbackDataEXT() +safe_VkDebugUtilsMessengerCreateInfoEXT::~safe_VkDebugUtilsMessengerCreateInfoEXT() { - if (pMessageIdName) delete [] pMessageIdName; - if (pMessage) delete [] pMessage; - if (pQueueLabels) - delete[] pQueueLabels; - if (pCmdBufLabels) - delete[] pCmdBufLabels; - if (pObjects) - delete[] pObjects; if (pNext) FreePnextChain(pNext); } -void safe_VkDebugUtilsMessengerCallbackDataEXT::initialize(const VkDebugUtilsMessengerCallbackDataEXT* in_struct) +void safe_VkDebugUtilsMessengerCreateInfoEXT::initialize(const VkDebugUtilsMessengerCreateInfoEXT* in_struct) { sType = in_struct->sType; flags = in_struct->flags; - messageIdNumber = in_struct->messageIdNumber; - queueLabelCount = in_struct->queueLabelCount; - pQueueLabels = nullptr; - cmdBufLabelCount = in_struct->cmdBufLabelCount; - pCmdBufLabels = nullptr; - objectCount = in_struct->objectCount; - pObjects = nullptr; + messageSeverity = in_struct->messageSeverity; + messageType = in_struct->messageType; + pfnUserCallback = in_struct->pfnUserCallback; + pUserData = in_struct->pUserData; pNext = SafePnextCopy(in_struct->pNext); - pMessageIdName = SafeStringCopy(in_struct->pMessageIdName); - pMessage = SafeStringCopy(in_struct->pMessage); - if (queueLabelCount && in_struct->pQueueLabels) { - pQueueLabels = new safe_VkDebugUtilsLabelEXT[queueLabelCount]; - for (uint32_t i = 0; i < queueLabelCount; ++i) { - pQueueLabels[i].initialize(&in_struct->pQueueLabels[i]); - } - } - if (cmdBufLabelCount && in_struct->pCmdBufLabels) { - pCmdBufLabels = new safe_VkDebugUtilsLabelEXT[cmdBufLabelCount]; - for (uint32_t i = 0; i < cmdBufLabelCount; ++i) { - pCmdBufLabels[i].initialize(&in_struct->pCmdBufLabels[i]); - } - } - if (objectCount && in_struct->pObjects) { - pObjects = new safe_VkDebugUtilsObjectNameInfoEXT[objectCount]; - for (uint32_t i = 0; i < objectCount; ++i) { - pObjects[i].initialize(&in_struct->pObjects[i]); - } - } } -void safe_VkDebugUtilsMessengerCallbackDataEXT::initialize(const safe_VkDebugUtilsMessengerCallbackDataEXT* copy_src) +void safe_VkDebugUtilsMessengerCreateInfoEXT::initialize(const safe_VkDebugUtilsMessengerCreateInfoEXT* copy_src) { sType = copy_src->sType; flags = copy_src->flags; - messageIdNumber = copy_src->messageIdNumber; - queueLabelCount = copy_src->queueLabelCount; - pQueueLabels = nullptr; - cmdBufLabelCount = copy_src->cmdBufLabelCount; - pCmdBufLabels = nullptr; - objectCount = copy_src->objectCount; - pObjects = nullptr; + messageSeverity = copy_src->messageSeverity; + messageType = copy_src->messageType; + pfnUserCallback = copy_src->pfnUserCallback; + pUserData = copy_src->pUserData; pNext = SafePnextCopy(copy_src->pNext); - pMessageIdName = SafeStringCopy(copy_src->pMessageIdName); - pMessage = SafeStringCopy(copy_src->pMessage); - if (queueLabelCount && copy_src->pQueueLabels) { - pQueueLabels = new safe_VkDebugUtilsLabelEXT[queueLabelCount]; - for (uint32_t i = 0; i < queueLabelCount; ++i) { - pQueueLabels[i].initialize(©_src->pQueueLabels[i]); - } - } - if (cmdBufLabelCount && copy_src->pCmdBufLabels) { - pCmdBufLabels = new safe_VkDebugUtilsLabelEXT[cmdBufLabelCount]; - for (uint32_t i = 0; i < cmdBufLabelCount; ++i) { - pCmdBufLabels[i].initialize(©_src->pCmdBufLabels[i]); - } - } - if (objectCount && copy_src->pObjects) { - pObjects = new safe_VkDebugUtilsObjectNameInfoEXT[objectCount]; - for (uint32_t i = 0; i < objectCount; ++i) { - pObjects[i].initialize(©_src->pObjects[i]); - } - } } safe_VkDebugUtilsObjectTagInfoEXT::safe_VkDebugUtilsObjectTagInfoEXT(const VkDebugUtilsObjectTagInfoEXT* in_struct) : @@ -22561,80 +22635,6 @@ void safe_VkDebugUtilsObjectTagInfoEXT::initialize(const safe_VkDebugUtilsObject pTag = copy_src->pTag; pNext = SafePnextCopy(copy_src->pNext); } - -safe_VkDebugUtilsMessengerCreateInfoEXT::safe_VkDebugUtilsMessengerCreateInfoEXT(const VkDebugUtilsMessengerCreateInfoEXT* in_struct) : - sType(in_struct->sType), - flags(in_struct->flags), - messageSeverity(in_struct->messageSeverity), - messageType(in_struct->messageType), - pfnUserCallback(in_struct->pfnUserCallback), - pUserData(in_struct->pUserData) -{ - pNext = SafePnextCopy(in_struct->pNext); -} - -safe_VkDebugUtilsMessengerCreateInfoEXT::safe_VkDebugUtilsMessengerCreateInfoEXT() : - sType(VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT), - pNext(nullptr), - pUserData(nullptr) -{} - -safe_VkDebugUtilsMessengerCreateInfoEXT::safe_VkDebugUtilsMessengerCreateInfoEXT(const safe_VkDebugUtilsMessengerCreateInfoEXT& copy_src) -{ - sType = copy_src.sType; - flags = copy_src.flags; - messageSeverity = copy_src.messageSeverity; - messageType = copy_src.messageType; - pfnUserCallback = copy_src.pfnUserCallback; - pUserData = copy_src.pUserData; - pNext = SafePnextCopy(copy_src.pNext); -} - -safe_VkDebugUtilsMessengerCreateInfoEXT& safe_VkDebugUtilsMessengerCreateInfoEXT::operator=(const safe_VkDebugUtilsMessengerCreateInfoEXT& copy_src) -{ - if (©_src == this) return *this; - - if (pNext) - FreePnextChain(pNext); - - sType = copy_src.sType; - flags = copy_src.flags; - messageSeverity = copy_src.messageSeverity; - messageType = copy_src.messageType; - pfnUserCallback = copy_src.pfnUserCallback; - pUserData = copy_src.pUserData; - pNext = SafePnextCopy(copy_src.pNext); - - return *this; -} - -safe_VkDebugUtilsMessengerCreateInfoEXT::~safe_VkDebugUtilsMessengerCreateInfoEXT() -{ - if (pNext) - FreePnextChain(pNext); -} - -void safe_VkDebugUtilsMessengerCreateInfoEXT::initialize(const VkDebugUtilsMessengerCreateInfoEXT* in_struct) -{ - sType = in_struct->sType; - flags = in_struct->flags; - messageSeverity = in_struct->messageSeverity; - messageType = in_struct->messageType; - pfnUserCallback = in_struct->pfnUserCallback; - pUserData = in_struct->pUserData; - pNext = SafePnextCopy(in_struct->pNext); -} - -void safe_VkDebugUtilsMessengerCreateInfoEXT::initialize(const safe_VkDebugUtilsMessengerCreateInfoEXT* copy_src) -{ - sType = copy_src->sType; - flags = copy_src->flags; - messageSeverity = copy_src->messageSeverity; - messageType = copy_src->messageType; - pfnUserCallback = copy_src->pfnUserCallback; - pUserData = copy_src->pUserData; - pNext = SafePnextCopy(copy_src->pNext); -} #ifdef VK_USE_PLATFORM_ANDROID_KHR @@ -34645,6 +34645,12 @@ void *SafePnextCopy(const void *pNext) { case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT: safe_pNext = new safe_VkPhysicalDeviceCustomBorderColorFeaturesEXT(reinterpret_cast(pNext)); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT: + safe_pNext = new safe_VkPhysicalDevicePrivateDataFeaturesEXT(reinterpret_cast(pNext)); + break; + case VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT: + safe_pNext = new safe_VkDevicePrivateDataCreateInfoEXT(reinterpret_cast(pNext)); + break; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT: safe_pNext = new safe_VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT(reinterpret_cast(pNext)); break; @@ -35402,6 +35408,12 @@ void FreePnextChain(const void *pNext) { case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT: delete reinterpret_cast(header); break; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT: + delete reinterpret_cast(header); + break; + case VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT: + delete reinterpret_cast(header); + break; case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT: delete reinterpret_cast(header); break; diff --git a/layers/generated/vk_safe_struct.h b/layers/generated/vk_safe_struct.h index 16eab870179..ff411a514db 100644 --- a/layers/generated/vk_safe_struct.h +++ b/layers/generated/vk_safe_struct.h @@ -39,6 +39,83 @@ void FreePnextChain(const void *pNext); char *SafeStringCopy(const char *in_string); +struct safe_VkBufferMemoryBarrier { + VkStructureType sType; + const void* pNext; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; + uint32_t srcQueueFamilyIndex; + uint32_t dstQueueFamilyIndex; + VkBuffer buffer; + VkDeviceSize offset; + VkDeviceSize size; + safe_VkBufferMemoryBarrier(const VkBufferMemoryBarrier* in_struct); + safe_VkBufferMemoryBarrier(const safe_VkBufferMemoryBarrier& copy_src); + safe_VkBufferMemoryBarrier& operator=(const safe_VkBufferMemoryBarrier& copy_src); + safe_VkBufferMemoryBarrier(); + ~safe_VkBufferMemoryBarrier(); + void initialize(const VkBufferMemoryBarrier* in_struct); + void initialize(const safe_VkBufferMemoryBarrier* copy_src); + VkBufferMemoryBarrier *ptr() { return reinterpret_cast(this); } + VkBufferMemoryBarrier const *ptr() const { return reinterpret_cast(this); } +}; + +struct safe_VkImageMemoryBarrier { + VkStructureType sType; + const void* pNext; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; + VkImageLayout oldLayout; + VkImageLayout newLayout; + uint32_t srcQueueFamilyIndex; + uint32_t dstQueueFamilyIndex; + VkImage image; + VkImageSubresourceRange subresourceRange; + safe_VkImageMemoryBarrier(const VkImageMemoryBarrier* in_struct); + safe_VkImageMemoryBarrier(const safe_VkImageMemoryBarrier& copy_src); + safe_VkImageMemoryBarrier& operator=(const safe_VkImageMemoryBarrier& copy_src); + safe_VkImageMemoryBarrier(); + ~safe_VkImageMemoryBarrier(); + void initialize(const VkImageMemoryBarrier* in_struct); + void initialize(const safe_VkImageMemoryBarrier* copy_src); + VkImageMemoryBarrier *ptr() { return reinterpret_cast(this); } + VkImageMemoryBarrier const *ptr() const { return reinterpret_cast(this); } +}; + +struct safe_VkMemoryBarrier { + VkStructureType sType; + const void* pNext; + VkAccessFlags srcAccessMask; + VkAccessFlags dstAccessMask; + safe_VkMemoryBarrier(const VkMemoryBarrier* in_struct); + safe_VkMemoryBarrier(const safe_VkMemoryBarrier& copy_src); + safe_VkMemoryBarrier& operator=(const safe_VkMemoryBarrier& copy_src); + safe_VkMemoryBarrier(); + ~safe_VkMemoryBarrier(); + void initialize(const VkMemoryBarrier* in_struct); + void initialize(const safe_VkMemoryBarrier* copy_src); + VkMemoryBarrier *ptr() { return reinterpret_cast(this); } + VkMemoryBarrier const *ptr() const { return reinterpret_cast(this); } +}; + +struct safe_VkAllocationCallbacks { + void* pUserData; + PFN_vkAllocationFunction pfnAllocation; + PFN_vkReallocationFunction pfnReallocation; + PFN_vkFreeFunction pfnFree; + PFN_vkInternalAllocationNotification pfnInternalAllocation; + PFN_vkInternalFreeNotification pfnInternalFree; + safe_VkAllocationCallbacks(const VkAllocationCallbacks* in_struct); + safe_VkAllocationCallbacks(const safe_VkAllocationCallbacks& copy_src); + safe_VkAllocationCallbacks& operator=(const safe_VkAllocationCallbacks& copy_src); + safe_VkAllocationCallbacks(); + ~safe_VkAllocationCallbacks(); + void initialize(const VkAllocationCallbacks* in_struct); + void initialize(const safe_VkAllocationCallbacks* copy_src); + VkAllocationCallbacks *ptr() { return reinterpret_cast(this); } + VkAllocationCallbacks const *ptr() const { return reinterpret_cast(this); } +}; + struct safe_VkApplicationInfo { VkStructureType sType; const void* pNext; @@ -78,24 +155,6 @@ struct safe_VkInstanceCreateInfo { VkInstanceCreateInfo const *ptr() const { return reinterpret_cast(this); } }; -struct safe_VkAllocationCallbacks { - void* pUserData; - PFN_vkAllocationFunction pfnAllocation; - PFN_vkReallocationFunction pfnReallocation; - PFN_vkFreeFunction pfnFree; - PFN_vkInternalAllocationNotification pfnInternalAllocation; - PFN_vkInternalFreeNotification pfnInternalFree; - safe_VkAllocationCallbacks(const VkAllocationCallbacks* in_struct); - safe_VkAllocationCallbacks(const safe_VkAllocationCallbacks& copy_src); - safe_VkAllocationCallbacks& operator=(const safe_VkAllocationCallbacks& copy_src); - safe_VkAllocationCallbacks(); - ~safe_VkAllocationCallbacks(); - void initialize(const VkAllocationCallbacks* in_struct); - void initialize(const safe_VkAllocationCallbacks* copy_src); - VkAllocationCallbacks *ptr() { return reinterpret_cast(this); } - VkAllocationCallbacks const *ptr() const { return reinterpret_cast(this); } -}; - struct safe_VkDeviceQueueCreateInfo { VkStructureType sType; const void* pNext; @@ -157,22 +216,6 @@ struct safe_VkSubmitInfo { VkSubmitInfo const *ptr() const { return reinterpret_cast(this); } }; -struct safe_VkMemoryAllocateInfo { - VkStructureType sType; - const void* pNext; - VkDeviceSize allocationSize; - uint32_t memoryTypeIndex; - safe_VkMemoryAllocateInfo(const VkMemoryAllocateInfo* in_struct); - safe_VkMemoryAllocateInfo(const safe_VkMemoryAllocateInfo& copy_src); - safe_VkMemoryAllocateInfo& operator=(const safe_VkMemoryAllocateInfo& copy_src); - safe_VkMemoryAllocateInfo(); - ~safe_VkMemoryAllocateInfo(); - void initialize(const VkMemoryAllocateInfo* in_struct); - void initialize(const safe_VkMemoryAllocateInfo* copy_src); - VkMemoryAllocateInfo *ptr() { return reinterpret_cast(this); } - VkMemoryAllocateInfo const *ptr() const { return reinterpret_cast(this); } -}; - struct safe_VkMappedMemoryRange { VkStructureType sType; const void* pNext; @@ -190,6 +233,22 @@ struct safe_VkMappedMemoryRange { VkMappedMemoryRange const *ptr() const { return reinterpret_cast(this); } }; +struct safe_VkMemoryAllocateInfo { + VkStructureType sType; + const void* pNext; + VkDeviceSize allocationSize; + uint32_t memoryTypeIndex; + safe_VkMemoryAllocateInfo(const VkMemoryAllocateInfo* in_struct); + safe_VkMemoryAllocateInfo(const safe_VkMemoryAllocateInfo& copy_src); + safe_VkMemoryAllocateInfo& operator=(const safe_VkMemoryAllocateInfo& copy_src); + safe_VkMemoryAllocateInfo(); + ~safe_VkMemoryAllocateInfo(); + void initialize(const VkMemoryAllocateInfo* in_struct); + void initialize(const safe_VkMemoryAllocateInfo* copy_src); + VkMemoryAllocateInfo *ptr() { return reinterpret_cast(this); } + VkMemoryAllocateInfo const *ptr() const { return reinterpret_cast(this); } +}; + struct safe_VkSparseBufferMemoryBindInfo { VkBuffer buffer; uint32_t bindCount; @@ -477,6 +536,25 @@ struct safe_VkPipelineShaderStageCreateInfo { VkPipelineShaderStageCreateInfo const *ptr() const { return reinterpret_cast(this); } }; +struct safe_VkComputePipelineCreateInfo { + VkStructureType sType; + const void* pNext; + VkPipelineCreateFlags flags; + safe_VkPipelineShaderStageCreateInfo stage; + VkPipelineLayout layout; + VkPipeline basePipelineHandle; + int32_t basePipelineIndex; + safe_VkComputePipelineCreateInfo(const VkComputePipelineCreateInfo* in_struct); + safe_VkComputePipelineCreateInfo(const safe_VkComputePipelineCreateInfo& copy_src); + safe_VkComputePipelineCreateInfo& operator=(const safe_VkComputePipelineCreateInfo& copy_src); + safe_VkComputePipelineCreateInfo(); + ~safe_VkComputePipelineCreateInfo(); + void initialize(const VkComputePipelineCreateInfo* in_struct); + void initialize(const safe_VkComputePipelineCreateInfo* copy_src); + VkComputePipelineCreateInfo *ptr() { return reinterpret_cast(this); } + VkComputePipelineCreateInfo const *ptr() const { return reinterpret_cast(this); } +}; + struct safe_VkPipelineVertexInputStateCreateInfo { VkStructureType sType; const void* pNext; @@ -686,25 +764,6 @@ struct safe_VkGraphicsPipelineCreateInfo { VkGraphicsPipelineCreateInfo const *ptr() const { return reinterpret_cast(this); } }; -struct safe_VkComputePipelineCreateInfo { - VkStructureType sType; - const void* pNext; - VkPipelineCreateFlags flags; - safe_VkPipelineShaderStageCreateInfo stage; - VkPipelineLayout layout; - VkPipeline basePipelineHandle; - int32_t basePipelineIndex; - safe_VkComputePipelineCreateInfo(const VkComputePipelineCreateInfo* in_struct); - safe_VkComputePipelineCreateInfo(const safe_VkComputePipelineCreateInfo& copy_src); - safe_VkComputePipelineCreateInfo& operator=(const safe_VkComputePipelineCreateInfo& copy_src); - safe_VkComputePipelineCreateInfo(); - ~safe_VkComputePipelineCreateInfo(); - void initialize(const VkComputePipelineCreateInfo* in_struct); - void initialize(const safe_VkComputePipelineCreateInfo* copy_src); - VkComputePipelineCreateInfo *ptr() { return reinterpret_cast(this); } - VkComputePipelineCreateInfo const *ptr() const { return reinterpret_cast(this); } -}; - struct safe_VkPipelineLayoutCreateInfo { VkStructureType sType; const void* pNext; @@ -754,38 +813,25 @@ struct safe_VkSamplerCreateInfo { VkSamplerCreateInfo const *ptr() const { return reinterpret_cast(this); } }; -struct safe_VkDescriptorSetLayoutBinding { - uint32_t binding; - VkDescriptorType descriptorType; - uint32_t descriptorCount; - VkShaderStageFlags stageFlags; - VkSampler* pImmutableSamplers; - safe_VkDescriptorSetLayoutBinding(const VkDescriptorSetLayoutBinding* in_struct); - safe_VkDescriptorSetLayoutBinding(const safe_VkDescriptorSetLayoutBinding& copy_src); - safe_VkDescriptorSetLayoutBinding& operator=(const safe_VkDescriptorSetLayoutBinding& copy_src); - safe_VkDescriptorSetLayoutBinding(); - ~safe_VkDescriptorSetLayoutBinding(); - void initialize(const VkDescriptorSetLayoutBinding* in_struct); - void initialize(const safe_VkDescriptorSetLayoutBinding* copy_src); - VkDescriptorSetLayoutBinding *ptr() { return reinterpret_cast(this); } - VkDescriptorSetLayoutBinding const *ptr() const { return reinterpret_cast(this); } -}; - -struct safe_VkDescriptorSetLayoutCreateInfo { +struct safe_VkCopyDescriptorSet { VkStructureType sType; const void* pNext; - VkDescriptorSetLayoutCreateFlags flags; - uint32_t bindingCount; - safe_VkDescriptorSetLayoutBinding* pBindings; - safe_VkDescriptorSetLayoutCreateInfo(const VkDescriptorSetLayoutCreateInfo* in_struct); - safe_VkDescriptorSetLayoutCreateInfo(const safe_VkDescriptorSetLayoutCreateInfo& copy_src); - safe_VkDescriptorSetLayoutCreateInfo& operator=(const safe_VkDescriptorSetLayoutCreateInfo& copy_src); - safe_VkDescriptorSetLayoutCreateInfo(); - ~safe_VkDescriptorSetLayoutCreateInfo(); - void initialize(const VkDescriptorSetLayoutCreateInfo* in_struct); - void initialize(const safe_VkDescriptorSetLayoutCreateInfo* copy_src); - VkDescriptorSetLayoutCreateInfo *ptr() { return reinterpret_cast(this); } - VkDescriptorSetLayoutCreateInfo const *ptr() const { return reinterpret_cast(this); } + VkDescriptorSet srcSet; + uint32_t srcBinding; + uint32_t srcArrayElement; + VkDescriptorSet dstSet; + uint32_t dstBinding; + uint32_t dstArrayElement; + uint32_t descriptorCount; + safe_VkCopyDescriptorSet(const VkCopyDescriptorSet* in_struct); + safe_VkCopyDescriptorSet(const safe_VkCopyDescriptorSet& copy_src); + safe_VkCopyDescriptorSet& operator=(const safe_VkCopyDescriptorSet& copy_src); + safe_VkCopyDescriptorSet(); + ~safe_VkCopyDescriptorSet(); + void initialize(const VkCopyDescriptorSet* in_struct); + void initialize(const safe_VkCopyDescriptorSet* copy_src); + VkCopyDescriptorSet *ptr() { return reinterpret_cast(this); } + VkCopyDescriptorSet const *ptr() const { return reinterpret_cast(this); } }; struct safe_VkDescriptorPoolCreateInfo { @@ -823,6 +869,40 @@ struct safe_VkDescriptorSetAllocateInfo { VkDescriptorSetAllocateInfo const *ptr() const { return reinterpret_cast(this); } }; +struct safe_VkDescriptorSetLayoutBinding { + uint32_t binding; + VkDescriptorType descriptorType; + uint32_t descriptorCount; + VkShaderStageFlags stageFlags; + VkSampler* pImmutableSamplers; + safe_VkDescriptorSetLayoutBinding(const VkDescriptorSetLayoutBinding* in_struct); + safe_VkDescriptorSetLayoutBinding(const safe_VkDescriptorSetLayoutBinding& copy_src); + safe_VkDescriptorSetLayoutBinding& operator=(const safe_VkDescriptorSetLayoutBinding& copy_src); + safe_VkDescriptorSetLayoutBinding(); + ~safe_VkDescriptorSetLayoutBinding(); + void initialize(const VkDescriptorSetLayoutBinding* in_struct); + void initialize(const safe_VkDescriptorSetLayoutBinding* copy_src); + VkDescriptorSetLayoutBinding *ptr() { return reinterpret_cast(this); } + VkDescriptorSetLayoutBinding const *ptr() const { return reinterpret_cast(this); } +}; + +struct safe_VkDescriptorSetLayoutCreateInfo { + VkStructureType sType; + const void* pNext; + VkDescriptorSetLayoutCreateFlags flags; + uint32_t bindingCount; + safe_VkDescriptorSetLayoutBinding* pBindings; + safe_VkDescriptorSetLayoutCreateInfo(const VkDescriptorSetLayoutCreateInfo* in_struct); + safe_VkDescriptorSetLayoutCreateInfo(const safe_VkDescriptorSetLayoutCreateInfo& copy_src); + safe_VkDescriptorSetLayoutCreateInfo& operator=(const safe_VkDescriptorSetLayoutCreateInfo& copy_src); + safe_VkDescriptorSetLayoutCreateInfo(); + ~safe_VkDescriptorSetLayoutCreateInfo(); + void initialize(const VkDescriptorSetLayoutCreateInfo* in_struct); + void initialize(const safe_VkDescriptorSetLayoutCreateInfo* copy_src); + VkDescriptorSetLayoutCreateInfo *ptr() { return reinterpret_cast(this); } + VkDescriptorSetLayoutCreateInfo const *ptr() const { return reinterpret_cast(this); } +}; + struct safe_VkWriteDescriptorSet { VkStructureType sType; const void* pNext; @@ -845,27 +925,6 @@ struct safe_VkWriteDescriptorSet { VkWriteDescriptorSet const *ptr() const { return reinterpret_cast(this); } }; -struct safe_VkCopyDescriptorSet { - VkStructureType sType; - const void* pNext; - VkDescriptorSet srcSet; - uint32_t srcBinding; - uint32_t srcArrayElement; - VkDescriptorSet dstSet; - uint32_t dstBinding; - uint32_t dstArrayElement; - uint32_t descriptorCount; - safe_VkCopyDescriptorSet(const VkCopyDescriptorSet* in_struct); - safe_VkCopyDescriptorSet(const safe_VkCopyDescriptorSet& copy_src); - safe_VkCopyDescriptorSet& operator=(const safe_VkCopyDescriptorSet& copy_src); - safe_VkCopyDescriptorSet(); - ~safe_VkCopyDescriptorSet(); - void initialize(const VkCopyDescriptorSet* in_struct); - void initialize(const safe_VkCopyDescriptorSet* copy_src); - VkCopyDescriptorSet *ptr() { return reinterpret_cast(this); } - VkCopyDescriptorSet const *ptr() const { return reinterpret_cast(this); } -}; - struct safe_VkFramebufferCreateInfo { VkStructureType sType; const void* pNext; @@ -999,65 +1058,6 @@ struct safe_VkCommandBufferBeginInfo { VkCommandBufferBeginInfo const *ptr() const { return reinterpret_cast(this); } }; -struct safe_VkMemoryBarrier { - VkStructureType sType; - const void* pNext; - VkAccessFlags srcAccessMask; - VkAccessFlags dstAccessMask; - safe_VkMemoryBarrier(const VkMemoryBarrier* in_struct); - safe_VkMemoryBarrier(const safe_VkMemoryBarrier& copy_src); - safe_VkMemoryBarrier& operator=(const safe_VkMemoryBarrier& copy_src); - safe_VkMemoryBarrier(); - ~safe_VkMemoryBarrier(); - void initialize(const VkMemoryBarrier* in_struct); - void initialize(const safe_VkMemoryBarrier* copy_src); - VkMemoryBarrier *ptr() { return reinterpret_cast(this); } - VkMemoryBarrier const *ptr() const { return reinterpret_cast(this); } -}; - -struct safe_VkBufferMemoryBarrier { - VkStructureType sType; - const void* pNext; - VkAccessFlags srcAccessMask; - VkAccessFlags dstAccessMask; - uint32_t srcQueueFamilyIndex; - uint32_t dstQueueFamilyIndex; - VkBuffer buffer; - VkDeviceSize offset; - VkDeviceSize size; - safe_VkBufferMemoryBarrier(const VkBufferMemoryBarrier* in_struct); - safe_VkBufferMemoryBarrier(const safe_VkBufferMemoryBarrier& copy_src); - safe_VkBufferMemoryBarrier& operator=(const safe_VkBufferMemoryBarrier& copy_src); - safe_VkBufferMemoryBarrier(); - ~safe_VkBufferMemoryBarrier(); - void initialize(const VkBufferMemoryBarrier* in_struct); - void initialize(const safe_VkBufferMemoryBarrier* copy_src); - VkBufferMemoryBarrier *ptr() { return reinterpret_cast(this); } - VkBufferMemoryBarrier const *ptr() const { return reinterpret_cast(this); } -}; - -struct safe_VkImageMemoryBarrier { - VkStructureType sType; - const void* pNext; - VkAccessFlags srcAccessMask; - VkAccessFlags dstAccessMask; - VkImageLayout oldLayout; - VkImageLayout newLayout; - uint32_t srcQueueFamilyIndex; - uint32_t dstQueueFamilyIndex; - VkImage image; - VkImageSubresourceRange subresourceRange; - safe_VkImageMemoryBarrier(const VkImageMemoryBarrier* in_struct); - safe_VkImageMemoryBarrier(const safe_VkImageMemoryBarrier& copy_src); - safe_VkImageMemoryBarrier& operator=(const safe_VkImageMemoryBarrier& copy_src); - safe_VkImageMemoryBarrier(); - ~safe_VkImageMemoryBarrier(); - void initialize(const VkImageMemoryBarrier* in_struct); - void initialize(const safe_VkImageMemoryBarrier* copy_src); - VkImageMemoryBarrier *ptr() { return reinterpret_cast(this); } - VkImageMemoryBarrier const *ptr() const { return reinterpret_cast(this); } -}; - struct safe_VkRenderPassBeginInfo { VkStructureType sType; const void* pNext; @@ -3273,6 +3273,22 @@ struct safe_VkDeviceGroupSwapchainCreateInfoKHR { VkDeviceGroupSwapchainCreateInfoKHR const *ptr() const { return reinterpret_cast(this); } }; +struct safe_VkDisplayModeCreateInfoKHR { + VkStructureType sType; + const void* pNext; + VkDisplayModeCreateFlagsKHR flags; + VkDisplayModeParametersKHR parameters; + safe_VkDisplayModeCreateInfoKHR(const VkDisplayModeCreateInfoKHR* in_struct); + safe_VkDisplayModeCreateInfoKHR(const safe_VkDisplayModeCreateInfoKHR& copy_src); + safe_VkDisplayModeCreateInfoKHR& operator=(const safe_VkDisplayModeCreateInfoKHR& copy_src); + safe_VkDisplayModeCreateInfoKHR(); + ~safe_VkDisplayModeCreateInfoKHR(); + void initialize(const VkDisplayModeCreateInfoKHR* in_struct); + void initialize(const safe_VkDisplayModeCreateInfoKHR* copy_src); + VkDisplayModeCreateInfoKHR *ptr() { return reinterpret_cast(this); } + VkDisplayModeCreateInfoKHR const *ptr() const { return reinterpret_cast(this); } +}; + struct safe_VkDisplayPropertiesKHR { VkDisplayKHR display; const char* displayName; @@ -3292,22 +3308,6 @@ struct safe_VkDisplayPropertiesKHR { VkDisplayPropertiesKHR const *ptr() const { return reinterpret_cast(this); } }; -struct safe_VkDisplayModeCreateInfoKHR { - VkStructureType sType; - const void* pNext; - VkDisplayModeCreateFlagsKHR flags; - VkDisplayModeParametersKHR parameters; - safe_VkDisplayModeCreateInfoKHR(const VkDisplayModeCreateInfoKHR* in_struct); - safe_VkDisplayModeCreateInfoKHR(const safe_VkDisplayModeCreateInfoKHR& copy_src); - safe_VkDisplayModeCreateInfoKHR& operator=(const safe_VkDisplayModeCreateInfoKHR& copy_src); - safe_VkDisplayModeCreateInfoKHR(); - ~safe_VkDisplayModeCreateInfoKHR(); - void initialize(const VkDisplayModeCreateInfoKHR* in_struct); - void initialize(const safe_VkDisplayModeCreateInfoKHR* copy_src); - VkDisplayModeCreateInfoKHR *ptr() { return reinterpret_cast(this); } - VkDisplayModeCreateInfoKHR const *ptr() const { return reinterpret_cast(this); } -}; - struct safe_VkDisplaySurfaceCreateInfoKHR { VkStructureType sType; const void* pNext; @@ -5103,25 +5103,6 @@ struct safe_VkDebugUtilsMessengerCallbackDataEXT { VkDebugUtilsMessengerCallbackDataEXT const *ptr() const { return reinterpret_cast(this); } }; -struct safe_VkDebugUtilsObjectTagInfoEXT { - VkStructureType sType; - const void* pNext; - VkObjectType objectType; - uint64_t objectHandle; - uint64_t tagName; - size_t tagSize; - const void* pTag; - safe_VkDebugUtilsObjectTagInfoEXT(const VkDebugUtilsObjectTagInfoEXT* in_struct); - safe_VkDebugUtilsObjectTagInfoEXT(const safe_VkDebugUtilsObjectTagInfoEXT& copy_src); - safe_VkDebugUtilsObjectTagInfoEXT& operator=(const safe_VkDebugUtilsObjectTagInfoEXT& copy_src); - safe_VkDebugUtilsObjectTagInfoEXT(); - ~safe_VkDebugUtilsObjectTagInfoEXT(); - void initialize(const VkDebugUtilsObjectTagInfoEXT* in_struct); - void initialize(const safe_VkDebugUtilsObjectTagInfoEXT* copy_src); - VkDebugUtilsObjectTagInfoEXT *ptr() { return reinterpret_cast(this); } - VkDebugUtilsObjectTagInfoEXT const *ptr() const { return reinterpret_cast(this); } -}; - struct safe_VkDebugUtilsMessengerCreateInfoEXT { VkStructureType sType; const void* pNext; @@ -5141,6 +5122,25 @@ struct safe_VkDebugUtilsMessengerCreateInfoEXT { VkDebugUtilsMessengerCreateInfoEXT const *ptr() const { return reinterpret_cast(this); } }; +struct safe_VkDebugUtilsObjectTagInfoEXT { + VkStructureType sType; + const void* pNext; + VkObjectType objectType; + uint64_t objectHandle; + uint64_t tagName; + size_t tagSize; + const void* pTag; + safe_VkDebugUtilsObjectTagInfoEXT(const VkDebugUtilsObjectTagInfoEXT* in_struct); + safe_VkDebugUtilsObjectTagInfoEXT(const safe_VkDebugUtilsObjectTagInfoEXT& copy_src); + safe_VkDebugUtilsObjectTagInfoEXT& operator=(const safe_VkDebugUtilsObjectTagInfoEXT& copy_src); + safe_VkDebugUtilsObjectTagInfoEXT(); + ~safe_VkDebugUtilsObjectTagInfoEXT(); + void initialize(const VkDebugUtilsObjectTagInfoEXT* in_struct); + void initialize(const safe_VkDebugUtilsObjectTagInfoEXT* copy_src); + VkDebugUtilsObjectTagInfoEXT *ptr() { return reinterpret_cast(this); } + VkDebugUtilsObjectTagInfoEXT const *ptr() const { return reinterpret_cast(this); } +}; + #ifdef VK_USE_PLATFORM_ANDROID_KHR struct safe_VkAndroidHardwareBufferUsageANDROID { VkStructureType sType; diff --git a/layers/generated/vk_typemap_helper.h b/layers/generated/vk_typemap_helper.h index 521593a3079..b82381efe1d 100644 --- a/layers/generated/vk_typemap_helper.h +++ b/layers/generated/vk_typemap_helper.h @@ -39,6 +39,33 @@ template struct LvlSTypeMap {}; template struct LvlTypeMap {}; +// Map type VkBufferMemoryBarrier to id VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER +template <> struct LvlTypeMap { + static const VkStructureType kSType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER; +}; + +template <> struct LvlSTypeMap { + typedef VkBufferMemoryBarrier Type; +}; + +// Map type VkImageMemoryBarrier to id VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER +template <> struct LvlTypeMap { + static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER; +}; + +template <> struct LvlSTypeMap { + typedef VkImageMemoryBarrier Type; +}; + +// Map type VkMemoryBarrier to id VK_STRUCTURE_TYPE_MEMORY_BARRIER +template <> struct LvlTypeMap { + static const VkStructureType kSType = VK_STRUCTURE_TYPE_MEMORY_BARRIER; +}; + +template <> struct LvlSTypeMap { + typedef VkMemoryBarrier Type; +}; + // Map type VkApplicationInfo to id VK_STRUCTURE_TYPE_APPLICATION_INFO template <> struct LvlTypeMap { static const VkStructureType kSType = VK_STRUCTURE_TYPE_APPLICATION_INFO; @@ -84,15 +111,6 @@ template <> struct LvlSTypeMap { typedef VkSubmitInfo Type; }; -// Map type VkMemoryAllocateInfo to id VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO -template <> struct LvlTypeMap { - static const VkStructureType kSType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO; -}; - -template <> struct LvlSTypeMap { - typedef VkMemoryAllocateInfo Type; -}; - // Map type VkMappedMemoryRange to id VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE template <> struct LvlTypeMap { static const VkStructureType kSType = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE; @@ -102,6 +120,15 @@ template <> struct LvlSTypeMap { typedef VkMappedMemoryRange Type; }; +// Map type VkMemoryAllocateInfo to id VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO +template <> struct LvlTypeMap { + static const VkStructureType kSType = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO; +}; + +template <> struct LvlSTypeMap { + typedef VkMemoryAllocateInfo Type; +}; + // Map type VkBindSparseInfo to id VK_STRUCTURE_TYPE_BIND_SPARSE_INFO template <> struct LvlTypeMap { static const VkStructureType kSType = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO; @@ -210,6 +237,15 @@ template <> struct LvlSTypeMap struct LvlTypeMap { + static const VkStructureType kSType = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO; +}; + +template <> struct LvlSTypeMap { + typedef VkComputePipelineCreateInfo Type; +}; + // Map type VkPipelineVertexInputStateCreateInfo to id VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO template <> struct LvlTypeMap { static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO; @@ -300,15 +336,6 @@ template <> struct LvlSTypeMap typedef VkGraphicsPipelineCreateInfo Type; }; -// Map type VkComputePipelineCreateInfo to id VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO -template <> struct LvlTypeMap { - static const VkStructureType kSType = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO; -}; - -template <> struct LvlSTypeMap { - typedef VkComputePipelineCreateInfo Type; -}; - // Map type VkPipelineLayoutCreateInfo to id VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO template <> struct LvlTypeMap { static const VkStructureType kSType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO; @@ -327,13 +354,13 @@ template <> struct LvlSTypeMap { typedef VkSamplerCreateInfo Type; }; -// Map type VkDescriptorSetLayoutCreateInfo to id VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO -template <> struct LvlTypeMap { - static const VkStructureType kSType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO; +// Map type VkCopyDescriptorSet to id VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET +template <> struct LvlTypeMap { + static const VkStructureType kSType = VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET; }; -template <> struct LvlSTypeMap { - typedef VkDescriptorSetLayoutCreateInfo Type; +template <> struct LvlSTypeMap { + typedef VkCopyDescriptorSet Type; }; // Map type VkDescriptorPoolCreateInfo to id VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO @@ -354,6 +381,15 @@ template <> struct LvlSTypeMap { typedef VkDescriptorSetAllocateInfo Type; }; +// Map type VkDescriptorSetLayoutCreateInfo to id VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO +template <> struct LvlTypeMap { + static const VkStructureType kSType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO; +}; + +template <> struct LvlSTypeMap { + typedef VkDescriptorSetLayoutCreateInfo Type; +}; + // Map type VkWriteDescriptorSet to id VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET template <> struct LvlTypeMap { static const VkStructureType kSType = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET; @@ -363,15 +399,6 @@ template <> struct LvlSTypeMap { typedef VkWriteDescriptorSet Type; }; -// Map type VkCopyDescriptorSet to id VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET -template <> struct LvlTypeMap { - static const VkStructureType kSType = VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET; -}; - -template <> struct LvlSTypeMap { - typedef VkCopyDescriptorSet Type; -}; - // Map type VkFramebufferCreateInfo to id VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO template <> struct LvlTypeMap { static const VkStructureType kSType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO; @@ -426,33 +453,6 @@ template <> struct LvlSTypeMap { typedef VkCommandBufferBeginInfo Type; }; -// Map type VkMemoryBarrier to id VK_STRUCTURE_TYPE_MEMORY_BARRIER -template <> struct LvlTypeMap { - static const VkStructureType kSType = VK_STRUCTURE_TYPE_MEMORY_BARRIER; -}; - -template <> struct LvlSTypeMap { - typedef VkMemoryBarrier Type; -}; - -// Map type VkBufferMemoryBarrier to id VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER -template <> struct LvlTypeMap { - static const VkStructureType kSType = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER; -}; - -template <> struct LvlSTypeMap { - typedef VkBufferMemoryBarrier Type; -}; - -// Map type VkImageMemoryBarrier to id VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER -template <> struct LvlTypeMap { - static const VkStructureType kSType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER; -}; - -template <> struct LvlSTypeMap { - typedef VkImageMemoryBarrier Type; -}; - // Map type VkRenderPassBeginInfo to id VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO template <> struct LvlTypeMap { static const VkStructureType kSType = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO; @@ -2566,15 +2566,6 @@ template <> struct LvlSTypeMap struct LvlTypeMap { - static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT; -}; - -template <> struct LvlSTypeMap { - typedef VkDebugUtilsObjectTagInfoEXT Type; -}; - // Map type VkDebugUtilsMessengerCreateInfoEXT to id VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT template <> struct LvlTypeMap { static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT; @@ -2584,6 +2575,15 @@ template <> struct LvlSTypeMap struct LvlTypeMap { + static const VkStructureType kSType = VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT; +}; + +template <> struct LvlSTypeMap { + typedef VkDebugUtilsObjectTagInfoEXT Type; +}; + #ifdef VK_USE_PLATFORM_ANDROID_KHR // Map type VkAndroidHardwareBufferUsageANDROID to id VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID template <> struct LvlTypeMap { diff --git a/layers/generated/vk_validation_error_messages.h b/layers/generated/vk_validation_error_messages.h index f2e1d384377..e00a04083bb 100644 --- a/layers/generated/vk_validation_error_messages.h +++ b/layers/generated/vk_validation_error_messages.h @@ -1,5 +1,5 @@ /* THIS FILE IS GENERATED - DO NOT EDIT (scripts/vk_validation_stats.py) */ -/* Vulkan specification version: 1.2.141 */ +/* Vulkan specification version: 1.2.144 */ /* * Vulkan * @@ -92,22 +92,21 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkAccelerationStructureGeometryAabbsDataKHR-pNext-pNext", "pNext must be NULL", "1.2-extensions"}, {"VUID-VkAccelerationStructureGeometryAabbsDataKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR", "1.2-extensions"}, {"VUID-VkAccelerationStructureGeometryAabbsDataKHR-stride-03545", "stride must be a multiple of 8", "1.2-extensions"}, - {"VUID-VkAccelerationStructureGeometryDataKHR-aabbs-parameter", "aabbs must be a valid VkAccelerationStructureGeometryAabbsDataKHR structure", "1.2-extensions"}, - {"VUID-VkAccelerationStructureGeometryDataKHR-instances-parameter", "instances must be a valid VkAccelerationStructureGeometryInstancesDataKHR structure", "1.2-extensions"}, - {"VUID-VkAccelerationStructureGeometryDataKHR-triangles-parameter", "triangles must be a valid VkAccelerationStructureGeometryTrianglesDataKHR structure", "1.2-extensions"}, {"VUID-VkAccelerationStructureGeometryInstancesDataKHR-arrayOfPointers-03550", "If arrayOfPointers is true, each pointer must be aligned to 16 bytes", "1.2-extensions"}, {"VUID-VkAccelerationStructureGeometryInstancesDataKHR-data-03549", "data must be aligned to 16 bytes", "1.2-extensions"}, {"VUID-VkAccelerationStructureGeometryInstancesDataKHR-data-parameter", "data must be a valid VkDeviceOrHostAddressConstKHR union", "1.2-extensions"}, {"VUID-VkAccelerationStructureGeometryInstancesDataKHR-pNext-pNext", "pNext must be NULL", "1.2-extensions"}, {"VUID-VkAccelerationStructureGeometryInstancesDataKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR", "1.2-extensions"}, + {"VUID-VkAccelerationStructureGeometryKHR-aabbs-parameter", "If geometryType is VK_GEOMETRY_TYPE_AABBS_KHR, the aabbs member of geometry must be a valid VkAccelerationStructureGeometryAabbsDataKHR structure", "1.2-extensions"}, {"VUID-VkAccelerationStructureGeometryKHR-flags-parameter", "flags must be a valid combination of VkGeometryFlagBitsKHR values", "1.2-extensions"}, - {"VUID-VkAccelerationStructureGeometryKHR-geometry-parameter", "geometry must be a valid VkAccelerationStructureGeometryDataKHR union", "1.2-extensions"}, {"VUID-VkAccelerationStructureGeometryKHR-geometryType-03541", "If geometryType is VK_GEOMETRY_TYPE_AABBS_KHR, the aabbs member of geometry must be a valid VkAccelerationStructureGeometryAabbsDataKHR structure", "1.2-extensions"}, {"VUID-VkAccelerationStructureGeometryKHR-geometryType-03542", "If geometryType is VK_GEOMETRY_TYPE_TRIANGLES_KHR, the triangles member of geometry must be a valid VkAccelerationStructureGeometryTrianglesDataKHR structure", "1.2-extensions"}, {"VUID-VkAccelerationStructureGeometryKHR-geometryType-03543", "If geometryType is VK_GEOMETRY_TYPE_INSTANCES_KHR, the instances member of geometry must be a valid VkAccelerationStructureGeometryInstancesDataKHR structure", "1.2-extensions"}, {"VUID-VkAccelerationStructureGeometryKHR-geometryType-parameter", "geometryType must be a valid VkGeometryTypeKHR value", "1.2-extensions"}, + {"VUID-VkAccelerationStructureGeometryKHR-instances-parameter", "If geometryType is VK_GEOMETRY_TYPE_INSTANCES_KHR, the instances member of geometry must be a valid VkAccelerationStructureGeometryInstancesDataKHR structure", "1.2-extensions"}, {"VUID-VkAccelerationStructureGeometryKHR-pNext-pNext", "pNext must be NULL", "1.2-extensions"}, {"VUID-VkAccelerationStructureGeometryKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR", "1.2-extensions"}, + {"VUID-VkAccelerationStructureGeometryKHR-triangles-parameter", "If geometryType is VK_GEOMETRY_TYPE_TRIANGLES_KHR, the triangles member of geometry must be a valid VkAccelerationStructureGeometryTrianglesDataKHR structure", "1.2-extensions"}, {"VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexData-parameter", "If indexData is not 0, indexData must be a valid VkDeviceOrHostAddressConstKHR union", "1.2-extensions"}, {"VUID-VkAccelerationStructureGeometryTrianglesDataKHR-indexType-parameter", "indexType must be a valid VkIndexType value", "1.2-extensions"}, {"VUID-VkAccelerationStructureGeometryTrianglesDataKHR-pNext-pNext", "pNext must be NULL", "1.2-extensions"}, @@ -116,8 +115,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexData-parameter", "vertexData must be a valid VkDeviceOrHostAddressConstKHR union", "1.2-extensions"}, {"VUID-VkAccelerationStructureGeometryTrianglesDataKHR-vertexFormat-parameter", "vertexFormat must be a valid VkFormat value", "1.2-extensions"}, {"VUID-VkAccelerationStructureInfoNV-flags-02592", "If flags has the VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV bit set, then it must not have the VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV bit set", "1.2-extensions"}, - {"VUID-VkAccelerationStructureInfoNV-flags-03486", "flags must be a valid combination of VkBuildAccelerationStructureFlagBitsNV values", "1.2-extensions"}, - {"VUID-VkAccelerationStructureInfoNV-flags-zerobitmask", "flags must be 0", "1.2-extensions"}, + {"VUID-VkAccelerationStructureInfoNV-flags-parameter", "flags must be a valid combination of VkBuildAccelerationStructureFlagBitsNV values", "1.2-extensions"}, {"VUID-VkAccelerationStructureInfoNV-geometryCount-02422", "geometryCount must be less than or equal to VkPhysicalDeviceRayTracingPropertiesNV::maxGeometryCount", "1.2-extensions"}, {"VUID-VkAccelerationStructureInfoNV-instanceCount-02423", "instanceCount must be less than or equal to VkPhysicalDeviceRayTracingPropertiesNV::maxInstanceCount", "1.2-extensions"}, {"VUID-VkAccelerationStructureInfoNV-instanceData-02782", "If instanceData is not VK_NULL_HANDLE, instanceData must have been created with VK_BUFFER_USAGE_RAY_TRACING_BIT_NV usage flag", "1.2-extensions"}, @@ -410,7 +408,6 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkBufferImageCopy-bufferImageHeight-00196", "bufferImageHeight must be 0, or greater than or equal to the height member of imageExtent", "1.2-extensions"}, {"VUID-VkBufferImageCopy-bufferImageHeight-00204", "If the calling command's VkImage parameter is a compressed image, bufferImageHeight must be a multiple of the compressed texel block height", "1.0"}, {"VUID-VkBufferImageCopy-bufferOffset-00193", "If the calling command's VkImage parameter's format is not a depth/stencil format, then bufferOffset must be a multiple of the format's texel block size", "1.0"}, - {"VUID-VkBufferImageCopy-bufferOffset-00194", "bufferOffset must be a multiple of 4", "1.2-extensions"}, {"VUID-VkBufferImageCopy-bufferOffset-00206", "If the calling command's VkImage parameter is a compressed image, bufferOffset must be a multiple of the compressed texel block size in bytes", "1.0"}, {"VUID-VkBufferImageCopy-bufferOffset-01558", "If the calling command's VkImage parameter's format is not a depth/stencil format or a multi-planar format, then bufferOffset must be a multiple of the format's texel block size", "1.2-extensions"}, {"VUID-VkBufferImageCopy-bufferOffset-01559", "If the calling command's VkImage parameter's format is a multi-planar format, then bufferOffset must be a multiple of the element size of the compatible format for the format and the aspectMask of the imageSubresource as defined in Compatible formats of planes of multi-planar formats", "1.2-extensions"}, @@ -428,19 +425,17 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkBufferImageCopy-srcImage-00201", "If the calling command's srcImage (vkCmdCopyImageToBuffer) or dstImage (vkCmdCopyBufferToImage) is of type VK_IMAGE_TYPE_1D or VK_IMAGE_TYPE_2D, then imageOffset.z must be 0 and imageExtent.depth must be 1", "1.2-extensions"}, {"VUID-VkBufferMemoryBarrier-buffer-01190", "If buffer was created with a sharing mode of VK_SHARING_MODE_CONCURRENT, srcQueueFamilyIndex and dstQueueFamilyIndex must both be VK_QUEUE_FAMILY_IGNORED", "1.0"}, {"VUID-VkBufferMemoryBarrier-buffer-01191", "If buffer was created with a sharing mode of VK_SHARING_MODE_CONCURRENT, at least one of srcQueueFamilyIndex and dstQueueFamilyIndex must be VK_QUEUE_FAMILY_IGNORED", "1.2-extensions"}, - {"VUID-VkBufferMemoryBarrier-buffer-01192", "If buffer was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE, srcQueueFamilyIndex and dstQueueFamilyIndex must either both be VK_QUEUE_FAMILY_IGNORED, or both be a valid queue family (see Queue Family Properties)", "1.0"}, - {"VUID-VkBufferMemoryBarrier-buffer-01193", "If buffer was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE and srcQueueFamilyIndex is VK_QUEUE_FAMILY_IGNORED, dstQueueFamilyIndex must also be VK_QUEUE_FAMILY_IGNORED", "1.2-extensions"}, - {"VUID-VkBufferMemoryBarrier-buffer-01196", "If buffer was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE, and srcQueueFamilyIndex and dstQueueFamilyIndex are not VK_QUEUE_FAMILY_IGNORED, at least one of them must be the same as the family of the queue that will execute this barrier", "1.2-extensions"}, - {"VUID-VkBufferMemoryBarrier-buffer-01763", "If buffer was created with a sharing mode of VK_SHARING_MODE_CONCURRENT, and one of srcQueueFamilyIndex and dstQueueFamilyIndex is VK_QUEUE_FAMILY_IGNORED, the other must be VK_QUEUE_FAMILY_IGNORED or a special queue family reserved for external memory ownership transfers, as described in Queue Family Ownership Transfer", "1.2-extensions"}, - {"VUID-VkBufferMemoryBarrier-buffer-01764", "If buffer was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE and srcQueueFamilyIndex is not VK_QUEUE_FAMILY_IGNORED, it must be a valid queue family or a special queue family reserved for external memory transfers, as described in Queue Family Ownership Transfer", "1.2-extensions"}, - {"VUID-VkBufferMemoryBarrier-buffer-01765", "If buffer was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE and dstQueueFamilyIndex is not VK_QUEUE_FAMILY_IGNORED, it must be a valid queue family or a special queue family reserved for external memory transfers, as described in Queue Family Ownership Transfer", "1.2-extensions"}, {"VUID-VkBufferMemoryBarrier-buffer-01931", "If buffer is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory object", "1.2-extensions"}, + {"VUID-VkBufferMemoryBarrier-buffer-04086", "If buffer was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE, and srcQueueFamilyIndex and dstQueueFamilyIndex are not equal, srcQueueFamilyIndex and dstQueueFamilyIndex must be valid queue families", "1.0"}, + {"VUID-VkBufferMemoryBarrier-buffer-04088", "If buffer was created with a sharing mode of VK_SHARING_MODE_CONCURRENT, srcQueueFamilyIndex and dstQueueFamilyIndex are not equal, and one of srcQueueFamilyIndex and dstQueueFamilyIndex is a special queue family values reserved for external memory transfers, the other must be VK_QUEUE_FAMILY_IGNORED", "1.2-extensions"}, + {"VUID-VkBufferMemoryBarrier-buffer-04089", "If buffer was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE, and srcQueueFamilyIndex and dstQueueFamilyIndex are not equal, srcQueueFamilyIndex and dstQueueFamilyIndex must both be valid queue families, or one of the special queue family values reserved for external memory transfers, as described in Queue Family Ownership Transfer", "1.2-extensions"}, {"VUID-VkBufferMemoryBarrier-buffer-parameter", "buffer must be a valid VkBuffer handle", "1.2-extensions"}, {"VUID-VkBufferMemoryBarrier-offset-01187", "offset must be less than the size of buffer", "1.2-extensions"}, {"VUID-VkBufferMemoryBarrier-pNext-pNext", "pNext must be NULL", "1.2-extensions"}, {"VUID-VkBufferMemoryBarrier-sType-sType", "sType must be VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER", "1.2-extensions"}, {"VUID-VkBufferMemoryBarrier-size-01188", "If size is not equal to VK_WHOLE_SIZE, size must be greater than 0", "1.2-extensions"}, {"VUID-VkBufferMemoryBarrier-size-01189", "If size is not equal to VK_WHOLE_SIZE, size must be less than or equal to than the size of buffer minus offset", "1.2-extensions"}, + {"VUID-VkBufferMemoryBarrier-srcQueueFamilyIndex-04087", "If srcQueueFamilyIndex is not equal to dstQueueFamilyIndex, at least one must not be a special queue family reserved for external memory ownership transfers, as described in Queue Family Ownership Transfer", "1.2-extensions"}, {"VUID-VkBufferMemoryRequirementsInfo2-buffer-04005", "If buffer was created with the VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID external memory handle type, then buffer must be bound to memory", "1.2-extensions"}, {"VUID-VkBufferMemoryRequirementsInfo2-buffer-parameter", "buffer must be a valid VkBuffer handle", "1.2-extensions"}, {"VUID-VkBufferMemoryRequirementsInfo2-pNext-pNext", "pNext must be NULL", "1.2-extensions"}, @@ -462,7 +457,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkBufferViewCreateInfo-pNext-pNext", "pNext must be NULL", "1.2-extensions"}, {"VUID-VkBufferViewCreateInfo-range-00928", "If range is not equal to VK_WHOLE_SIZE, range must be greater than 0", "1.2-extensions"}, {"VUID-VkBufferViewCreateInfo-range-00929", "If range is not equal to VK_WHOLE_SIZE, range must be an integer multiple of the texel block size of format", "1.2-extensions"}, - {"VUID-VkBufferViewCreateInfo-range-00930", "If range is not equal to VK_WHOLE_SIZE, range divided by the texel block size of format, multiplied by the number of texels per texel block for that format (as defined in the Compatible Formats table), must be less than or equal to VkPhysicalDeviceLimits::maxTexelBufferElements", "1.2-extensions"}, + {"VUID-VkBufferViewCreateInfo-range-00930", "If range is not equal to VK_WHOLE_SIZE, the number of texel buffer elements given by ({lfloor}range / (texel block size){rfloor} {times} (texels per block)) where texel block size and texels per block are as defined in the Compatible Formats table for format, must be less than or equal to VkPhysicalDeviceLimits::maxTexelBufferElements", "1.2-extensions"}, + {"VUID-VkBufferViewCreateInfo-range-04059", "If range is equal to VK_WHOLE_SIZE, the number of texel buffer elements given by ({lfloor}(size - offset) / (texel block size){rfloor} {times} (texels per block)) where size is the size of buffer, and texel block size and texels per block are as defined in the Compatible Formats table for format, must be less than or equal to VkPhysicalDeviceLimits::maxTexelBufferElements", "1.2-extensions"}, {"VUID-VkBufferViewCreateInfo-sType-sType", "sType must be VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO", "1.2-extensions"}, {"VUID-VkCalibratedTimestampInfoEXT-pNext-pNext", "pNext must be NULL", "1.2-extensions"}, {"VUID-VkCalibratedTimestampInfoEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT", "1.2-extensions"}, @@ -776,7 +772,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkDeviceCreateInfo-pNext-00373", "If the pNext chain includes a VkPhysicalDeviceFeatures2 structure, then pEnabledFeatures must be NULL", "1.2-extensions"}, {"VUID-VkDeviceCreateInfo-pNext-02829", "If the pNext chain includes a VkPhysicalDeviceVulkan11Features structure, then it must not include a VkPhysicalDevice16BitStorageFeatures, VkPhysicalDeviceMultiviewFeatures, VkPhysicalDeviceVariablePointersFeatures, VkPhysicalDeviceProtectedMemoryFeatures, VkPhysicalDeviceSamplerYcbcrConversionFeatures, or VkPhysicalDeviceShaderDrawParametersFeatures structure", "1.2-extensions"}, {"VUID-VkDeviceCreateInfo-pNext-02830", "If the pNext chain includes a VkPhysicalDeviceVulkan12Features structure, then it must not include a VkPhysicalDevice8BitStorageFeatures, VkPhysicalDeviceShaderAtomicInt64Features, VkPhysicalDeviceShaderFloat16Int8Features, VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceScalarBlockLayoutFeatures, VkPhysicalDeviceImagelessFramebufferFeatures, VkPhysicalDeviceUniformBufferStandardLayoutFeatures, VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures, VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures, VkPhysicalDeviceHostQueryResetFeatures, VkPhysicalDeviceTimelineSemaphoreFeatures, VkPhysicalDeviceBufferDeviceAddressFeatures, or VkPhysicalDeviceVulkanMemoryModelFeatures structure", "1.2-extensions"}, - {"VUID-VkDeviceCreateInfo-pNext-pNext", "Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkDeviceDiagnosticsConfigCreateInfoNV, VkDeviceGroupDeviceCreateInfo, VkDeviceMemoryOverallocationCreateInfoAMD, VkPhysicalDevice16BitStorageFeatures, VkPhysicalDevice8BitStorageFeatures, VkPhysicalDeviceASTCDecodeFeaturesEXT, VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, VkPhysicalDeviceBufferDeviceAddressFeatures, VkPhysicalDeviceBufferDeviceAddressFeaturesEXT, VkPhysicalDeviceCoherentMemoryFeaturesAMD, VkPhysicalDeviceComputeShaderDerivativesFeaturesNV, VkPhysicalDeviceConditionalRenderingFeaturesEXT, VkPhysicalDeviceCooperativeMatrixFeaturesNV, VkPhysicalDeviceCornerSampledImageFeaturesNV, VkPhysicalDeviceCoverageReductionModeFeaturesNV, VkPhysicalDeviceCustomBorderColorFeaturesEXT, VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV, VkPhysicalDeviceDepthClipEnableFeaturesEXT, VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV, VkPhysicalDeviceDiagnosticsConfigFeaturesNV, VkPhysicalDeviceExclusiveScissorFeaturesNV, VkPhysicalDeviceFeatures2, VkPhysicalDeviceFragmentDensityMapFeaturesEXT, VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV, VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT, VkPhysicalDeviceHostQueryResetFeatures, VkPhysicalDeviceImagelessFramebufferFeatures, VkPhysicalDeviceIndexTypeUint8FeaturesEXT, VkPhysicalDeviceInlineUniformBlockFeaturesEXT, VkPhysicalDeviceLineRasterizationFeaturesEXT, VkPhysicalDeviceMemoryPriorityFeaturesEXT, VkPhysicalDeviceMeshShaderFeaturesNV, VkPhysicalDeviceMultiviewFeatures, VkPhysicalDevicePerformanceQueryFeaturesKHR, VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT, VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR, VkPhysicalDeviceProtectedMemoryFeatures, VkPhysicalDeviceRayTracingFeaturesKHR, VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV, VkPhysicalDeviceRobustness2FeaturesEXT, VkPhysicalDeviceSamplerYcbcrConversionFeatures, VkPhysicalDeviceScalarBlockLayoutFeatures, VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures, VkPhysicalDeviceShaderAtomicInt64Features, VkPhysicalDeviceShaderClockFeaturesKHR, VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT, VkPhysicalDeviceShaderDrawParametersFeatures, VkPhysicalDeviceShaderFloat16Int8Features, VkPhysicalDeviceShaderImageFootprintFeaturesNV, VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL, VkPhysicalDeviceShaderSMBuiltinsFeaturesNV, VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures, VkPhysicalDeviceShadingRateImageFeaturesNV, VkPhysicalDeviceSubgroupSizeControlFeaturesEXT, VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT, VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT, VkPhysicalDeviceTimelineSemaphoreFeatures, VkPhysicalDeviceTransformFeedbackFeaturesEXT, VkPhysicalDeviceUniformBufferStandardLayoutFeatures, VkPhysicalDeviceVariablePointersFeatures, VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT, VkPhysicalDeviceVulkan11Features, VkPhysicalDeviceVulkan12Features, VkPhysicalDeviceVulkanMemoryModelFeatures, or VkPhysicalDeviceYcbcrImageArraysFeaturesEXT", "1.2-extensions"}, + {"VUID-VkDeviceCreateInfo-pNext-pNext", "Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkDeviceDiagnosticsConfigCreateInfoNV, VkDeviceGroupDeviceCreateInfo, VkDeviceMemoryOverallocationCreateInfoAMD, VkDevicePrivateDataCreateInfoEXT, VkPhysicalDevice16BitStorageFeatures, VkPhysicalDevice8BitStorageFeatures, VkPhysicalDeviceASTCDecodeFeaturesEXT, VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT, VkPhysicalDeviceBufferDeviceAddressFeatures, VkPhysicalDeviceBufferDeviceAddressFeaturesEXT, VkPhysicalDeviceCoherentMemoryFeaturesAMD, VkPhysicalDeviceComputeShaderDerivativesFeaturesNV, VkPhysicalDeviceConditionalRenderingFeaturesEXT, VkPhysicalDeviceCooperativeMatrixFeaturesNV, VkPhysicalDeviceCornerSampledImageFeaturesNV, VkPhysicalDeviceCoverageReductionModeFeaturesNV, VkPhysicalDeviceCustomBorderColorFeaturesEXT, VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV, VkPhysicalDeviceDepthClipEnableFeaturesEXT, VkPhysicalDeviceDescriptorIndexingFeatures, VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV, VkPhysicalDeviceDiagnosticsConfigFeaturesNV, VkPhysicalDeviceExclusiveScissorFeaturesNV, VkPhysicalDeviceFeatures2, VkPhysicalDeviceFragmentDensityMapFeaturesEXT, VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV, VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT, VkPhysicalDeviceHostQueryResetFeatures, VkPhysicalDeviceImagelessFramebufferFeatures, VkPhysicalDeviceIndexTypeUint8FeaturesEXT, VkPhysicalDeviceInlineUniformBlockFeaturesEXT, VkPhysicalDeviceLineRasterizationFeaturesEXT, VkPhysicalDeviceMemoryPriorityFeaturesEXT, VkPhysicalDeviceMeshShaderFeaturesNV, VkPhysicalDeviceMultiviewFeatures, VkPhysicalDevicePerformanceQueryFeaturesKHR, VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT, VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR, VkPhysicalDevicePrivateDataFeaturesEXT, VkPhysicalDeviceProtectedMemoryFeatures, VkPhysicalDeviceRayTracingFeaturesKHR, VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV, VkPhysicalDeviceRobustness2FeaturesEXT, VkPhysicalDeviceSamplerYcbcrConversionFeatures, VkPhysicalDeviceScalarBlockLayoutFeatures, VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures, VkPhysicalDeviceShaderAtomicInt64Features, VkPhysicalDeviceShaderClockFeaturesKHR, VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT, VkPhysicalDeviceShaderDrawParametersFeatures, VkPhysicalDeviceShaderFloat16Int8Features, VkPhysicalDeviceShaderImageFootprintFeaturesNV, VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL, VkPhysicalDeviceShaderSMBuiltinsFeaturesNV, VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures, VkPhysicalDeviceShadingRateImageFeaturesNV, VkPhysicalDeviceSubgroupSizeControlFeaturesEXT, VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT, VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT, VkPhysicalDeviceTimelineSemaphoreFeatures, VkPhysicalDeviceTransformFeedbackFeaturesEXT, VkPhysicalDeviceUniformBufferStandardLayoutFeatures, VkPhysicalDeviceVariablePointersFeatures, VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT, VkPhysicalDeviceVulkan11Features, VkPhysicalDeviceVulkan12Features, VkPhysicalDeviceVulkanMemoryModelFeatures, or VkPhysicalDeviceYcbcrImageArraysFeaturesEXT", "1.2-extensions"}, {"VUID-VkDeviceCreateInfo-pQueueCreateInfos-parameter", "pQueueCreateInfos must be a valid pointer to an array of queueCreateInfoCount valid VkDeviceQueueCreateInfo structures", "1.2-extensions"}, {"VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-00374", "ppEnabledExtensionNames must not contain both VK_KHR_maintenance1 and VK_AMD_negative_viewport_height", "1.0-extensions"}, {"VUID-VkDeviceCreateInfo-ppEnabledExtensionNames-01840", "ppEnabledExtensionNames must not contain VK_AMD_negative_viewport_height", "1.2-extensions"}, @@ -792,7 +788,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkDeviceCreateInfo-queueFamilyIndex-00372", "The queueFamilyIndex member of each element of pQueueCreateInfos must be unique within pQueueCreateInfos", "1.0-extensions"}, {"VUID-VkDeviceCreateInfo-queueFamilyIndex-02802", "The queueFamilyIndex member of each element of pQueueCreateInfos must be unique within pQueueCreateInfos, except that two members can share the same queueFamilyIndex if one is a protected-capable queue and one is not a protected-capable queue", "1.2-extensions"}, {"VUID-VkDeviceCreateInfo-sType-sType", "sType must be VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO", "1.2-extensions"}, - {"VUID-VkDeviceCreateInfo-sType-unique", "The sType value of each struct in the pNext chain must be unique", "1.2-extensions"}, + {"VUID-VkDeviceCreateInfo-sType-unique", "The sType value of each struct in the pNext chain must be unique, with the exception of structures of type VkDevicePrivateDataCreateInfoEXT", "1.2-extensions"}, {"VUID-VkDeviceDiagnosticsConfigCreateInfoNV-flags-parameter", "flags must be a valid combination of VkDeviceDiagnosticsConfigFlagBitsNV values", "1.2-extensions"}, {"VUID-VkDeviceDiagnosticsConfigCreateInfoNV-sType-sType", "sType must be VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV", "1.2-extensions"}, {"VUID-VkDeviceEventInfoEXT-deviceEvent-parameter", "deviceEvent must be a valid VkDeviceEventTypeEXT value", "1.2-extensions"}, @@ -845,7 +841,6 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkDeviceMemoryOpaqueCaptureAddressInfo-sType-sType", "sType must be VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO", "1.2-extensions"}, {"VUID-VkDeviceMemoryOverallocationCreateInfoAMD-overallocationBehavior-parameter", "overallocationBehavior must be a valid VkMemoryOverallocationBehaviorAMD value", "1.2-extensions"}, {"VUID-VkDeviceMemoryOverallocationCreateInfoAMD-sType-sType", "sType must be VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD", "1.2-extensions"}, - {"VUID-VkDevicePrivateDataCreateInfoEXT-pNext-pNext", "pNext must be NULL", "1.2-extensions"}, {"VUID-VkDevicePrivateDataCreateInfoEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT", "1.2-extensions"}, {"VUID-VkDeviceQueueCreateInfo-flags-02861", "If the protected memory feature is not enabled, the VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT bit of flags must not be set", "1.2-extensions"}, {"VUID-VkDeviceQueueCreateInfo-flags-parameter", "flags must be a valid combination of VkDeviceQueueCreateFlagBits values", "1.2-extensions"}, @@ -909,7 +904,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkDisplaySurfaceCreateInfoKHR-width-01256", "The width and height members of imageExtent must be less than the maxImageDimensions2D member of VkPhysicalDeviceLimits", "1.2-extensions"}, {"VUID-VkDrawIndexedIndirectCommand-None-00552", "For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Vertex Input Description", "1.2-extensions"}, {"VUID-VkDrawIndexedIndirectCommand-firstInstance-00554", "If the drawIndirectFirstInstance feature is not enabled, firstInstance must be 0", "1.2-extensions"}, - {"VUID-VkDrawIndexedIndirectCommand-indexSize-00553", "(indexSize * (firstIndex + indexCount) + offset) must be less than or equal to the size of the bound index buffer, with indexSize being based on the type specified by indexType, where the index buffer, indexType, and offset are specified via vkCmdBindIndexBuffer", "1.2-extensions"}, + {"VUID-VkDrawIndexedIndirectCommand-indexSize-00553", "(indexSize {times} (firstIndex + indexCount) + offset) must be less than or equal to the size of the bound index buffer, with indexSize being based on the type specified by indexType, where the index buffer, indexType, and offset are specified via vkCmdBindIndexBuffer", "1.2-extensions"}, {"VUID-VkDrawIndirectCommand-None-00500", "For a given vertex buffer binding, any attribute data fetched must be entirely contained within the corresponding vertex buffer binding, as described in Vertex Input Description", "1.2-extensions"}, {"VUID-VkDrawIndirectCommand-firstInstance-00501", "If the drawIndirectFirstInstance feature is not enabled, firstInstance must be 0", "1.2-extensions"}, {"VUID-VkDrawMeshTasksIndirectCommandNV-taskCount-02175", "taskCount must be less than or equal to VkPhysicalDeviceMeshShaderPropertiesNV::maxDrawMeshTasksCount", "1.2-extensions"}, @@ -1149,6 +1144,9 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01523", "If no element of the pDynamicStates member of pDynamicState is VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT, and the sampleLocationsEnable member of a VkPipelineSampleLocationsStateCreateInfoEXT structure included in the pNext chain of pMultisampleState is VK_TRUE, sampleLocationsInfo.sampleLocationsPerPixel must equal rasterizationSamples", "1.2-extensions"}, {"VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-01715", "If no element of the pDynamicStates member of pDynamicState is VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV, and the viewportWScalingEnable member of a VkPipelineViewportWScalingStateCreateInfoNV structure, included in the pNext chain of pViewportState, is VK_TRUE, the pViewportWScalings member of the VkPipelineViewportWScalingStateCreateInfoNV must be a pointer to an array of VkPipelineViewportWScalingStateCreateInfoNV::viewportCount valid VkViewportWScalingNV structures", "1.2-extensions"}, {"VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-02510", "If the VK_EXT_depth_range_unrestricted extension is not enabled and no element of the pDynamicStates member of pDynamicState is VK_DYNAMIC_STATE_DEPTH_BOUNDS, and the depthBoundsTestEnable member of pDepthStencilState is VK_TRUE, the minDepthBounds and maxDepthBounds members of pDepthStencilState must be between 0.0 and 1.0, inclusive", "1.2-extensions"}, + {"VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04056", "If no element of the pDynamicStates member of pDynamicState is VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV, and if pViewportState->pNext chain includes a VkPipelineViewportExclusiveScissorStateCreateInfoNV structure, and if its exclusiveScissorCount member is not 0, then its pExclusiveScissors member must be a valid pointer to an array of exclusiveScissorCount VkRect2D structures", "1.2-extensions"}, + {"VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04057", "If no element of the pDynamicStates member of pDynamicState is VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV, and if pViewportState->pNext chain includes a VkPipelineViewportShadingRateImageStateCreateInfoNV structure, then its pShadingRatePalettes member must be a valid pointer to an array of viewportCount valid VkShadingRatePaletteNV structures", "1.2-extensions"}, + {"VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04058", "If no element of the pDynamicStates member of pDynamicState is VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT, and if pNext chain includes a VkPipelineDiscardRectangleStateCreateInfoEXT structure, and if its discardRectangleCount member is not 0, then its pDiscardRectangles member must be a valid pointer to an array of discardRectangleCount VkRect2D structures", "1.2-extensions"}, {"VUID-VkGraphicsPipelineCreateInfo-pNext-pNext", "Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkGraphicsPipelineShaderGroupsCreateInfoNV, VkPipelineCompilerControlCreateInfoAMD, VkPipelineCreationFeedbackCreateInfoEXT, VkPipelineDiscardRectangleStateCreateInfoEXT, or VkPipelineRepresentativeFragmentTestStateCreateInfoNV", "1.2-extensions"}, {"VUID-VkGraphicsPipelineCreateInfo-pRasterizationState-parameter", "pRasterizationState must be a valid pointer to a valid VkPipelineRasterizationStateCreateInfo structure", "1.2-extensions"}, {"VUID-VkGraphicsPipelineCreateInfo-pStages-00729", "If pStages includes a tessellation control shader stage, it must include a tessellation evaluation shader stage", "1.2-extensions"}, @@ -1415,47 +1413,46 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkImageDrmFormatModifierListCreateInfoEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT", "1.2-extensions"}, {"VUID-VkImageDrmFormatModifierPropertiesEXT-pNext-pNext", "pNext must be NULL", "1.2-extensions"}, {"VUID-VkImageDrmFormatModifierPropertiesEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT", "1.2-extensions"}, - {"VUID-VkImageFormatListCreateInfo-flags-01579", "If VkImageCreateInfo::flags does not contain VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT, viewFormatCount must be 0 or 1", "1.2-extensions"}, {"VUID-VkImageFormatListCreateInfo-pViewFormats-parameter", "If viewFormatCount is not 0, pViewFormats must be a valid pointer to an array of viewFormatCount valid VkFormat values", "1.2-extensions"}, {"VUID-VkImageFormatListCreateInfo-sType-sType", "sType must be VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO", "1.2-extensions"}, - {"VUID-VkImageFormatListCreateInfo-viewFormatCount-01578", "If viewFormatCount is not 0, all of the formats in the pViewFormats array must be compatible with the format specified in the format field of VkImageCreateInfo, as described in the compatibility table", "1.2-extensions"}, - {"VUID-VkImageFormatListCreateInfo-viewFormatCount-01580", "If viewFormatCount is not 0, VkImageCreateInfo::format must be in pViewFormats", "1.2-extensions"}, {"VUID-VkImageFormatProperties2-pNext-pNext", "Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkAndroidHardwareBufferUsageANDROID, VkExternalImageFormatProperties, VkFilterCubicImageViewImageFormatPropertiesEXT, VkSamplerYcbcrConversionImageFormatProperties, or VkTextureLODGatherFormatPropertiesAMD", "1.2-extensions"}, {"VUID-VkImageFormatProperties2-sType-sType", "sType must be VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2", "1.2-extensions"}, {"VUID-VkImageFormatProperties2-sType-unique", "The sType value of each struct in the pNext chain must be unique", "1.2-extensions"}, {"VUID-VkImageMemoryBarrier-image-01199", "If image was created with a sharing mode of VK_SHARING_MODE_CONCURRENT, srcQueueFamilyIndex and dstQueueFamilyIndex must both be VK_QUEUE_FAMILY_IGNORED", "1.0"}, - {"VUID-VkImageMemoryBarrier-image-01200", "If image was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE, srcQueueFamilyIndex and dstQueueFamilyIndex must either both be VK_QUEUE_FAMILY_IGNORED, or both be a valid queue family (see Queue Family Properties)", "1.0"}, - {"VUID-VkImageMemoryBarrier-image-01201", "If image was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE and srcQueueFamilyIndex is VK_QUEUE_FAMILY_IGNORED, dstQueueFamilyIndex must also be VK_QUEUE_FAMILY_IGNORED", "1.2-extensions"}, - {"VUID-VkImageMemoryBarrier-image-01205", "If image was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE, and srcQueueFamilyIndex and dstQueueFamilyIndex are not VK_QUEUE_FAMILY_IGNORED, at least one of them must be the same as the family of the queue that will execute this barrier", "1.2-extensions"}, {"VUID-VkImageMemoryBarrier-image-01207", "If image has a depth/stencil format with both depth and stencil components, then the aspectMask member of subresourceRange must include both VK_IMAGE_ASPECT_DEPTH_BIT and VK_IMAGE_ASPECT_STENCIL_BIT", "1.1"}, {"VUID-VkImageMemoryBarrier-image-01381", "If image was created with a sharing mode of VK_SHARING_MODE_CONCURRENT, at least one of srcQueueFamilyIndex and dstQueueFamilyIndex must be VK_QUEUE_FAMILY_IGNORED", "1.2-extensions"}, - {"VUID-VkImageMemoryBarrier-image-01671", "If image has a color format and either the format is single-plane or the image is not disjoint then the aspectMask member of subresourceRange must only include VK_IMAGE_ASPECT_COLOR_BIT", "1.2-extensions"}, + {"VUID-VkImageMemoryBarrier-image-01671", "If image has a single-plane color format or is not disjoint, then the aspectMask member of subresourceRange must be VK_IMAGE_ASPECT_COLOR_BIT", "1.2-extensions"}, {"VUID-VkImageMemoryBarrier-image-01672", "If image has a multi-planar format and the image is disjoint, then the aspectMask member of subresourceRange must include either at least one of VK_IMAGE_ASPECT_PLANE_0_BIT, VK_IMAGE_ASPECT_PLANE_1_BIT, and VK_IMAGE_ASPECT_PLANE_2_BIT; or must include VK_IMAGE_ASPECT_COLOR_BIT", "1.2-extensions"}, {"VUID-VkImageMemoryBarrier-image-01673", "If image has a multi-planar format with only two planes, then the aspectMask member of subresourceRange must not include VK_IMAGE_ASPECT_PLANE_2_BIT", "1.2-extensions"}, - {"VUID-VkImageMemoryBarrier-image-01766", "If image was created with a sharing mode of VK_SHARING_MODE_CONCURRENT, and one of srcQueueFamilyIndex and dstQueueFamilyIndex is VK_QUEUE_FAMILY_IGNORED, the other must be VK_QUEUE_FAMILY_IGNORED or a special queue family reserved for external memory transfers, as described in Queue Family Ownership Transfer", "1.2-extensions"}, - {"VUID-VkImageMemoryBarrier-image-01767", "If image was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE and srcQueueFamilyIndex is not VK_QUEUE_FAMILY_IGNORED, it must be a valid queue family or a special queue family reserved for external memory transfers, as described in Queue Family Ownership Transfer", "1.2-extensions"}, - {"VUID-VkImageMemoryBarrier-image-01768", "If image was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE and dstQueueFamilyIndex is not VK_QUEUE_FAMILY_IGNORED, it must be a valid queue family or a special queue family reserved for external memory transfers, as described in Queue Family Ownership Transfer", "1.2-extensions"}, {"VUID-VkImageMemoryBarrier-image-01932", "If image is non-sparse then it must be bound completely and contiguously to a single VkDeviceMemory object", "1.2-extensions"}, - {"VUID-VkImageMemoryBarrier-image-02902", "If image has a color format, then the aspectMask member of subresourceRange must only include VK_IMAGE_ASPECT_COLOR_BIT", "1.0"}, + {"VUID-VkImageMemoryBarrier-image-02902", "If image has a color format, then the aspectMask member of subresourceRange must be VK_IMAGE_ASPECT_COLOR_BIT", "1.0"}, {"VUID-VkImageMemoryBarrier-image-03319", "If image has a depth/stencil format with both depth and stencil and the separateDepthStencilLayouts feature is enabled, then the aspectMask member of subresourceRange must include either or both VK_IMAGE_ASPECT_DEPTH_BIT and VK_IMAGE_ASPECT_STENCIL_BIT", "1.2-extensions"}, {"VUID-VkImageMemoryBarrier-image-03320", "If image has a depth/stencil format with both depth and stencil and the separateDepthStencilLayouts feature is not enabled, then the aspectMask member of subresourceRange must include both VK_IMAGE_ASPECT_DEPTH_BIT and VK_IMAGE_ASPECT_STENCIL_BIT", "1.2-extensions"}, + {"VUID-VkImageMemoryBarrier-image-04069", "If image was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE, and srcQueueFamilyIndex and dstQueueFamilyIndex are not equal, srcQueueFamilyIndex and dstQueueFamilyIndex must be valid queue families", "1.0"}, + {"VUID-VkImageMemoryBarrier-image-04071", "If image was created with a sharing mode of VK_SHARING_MODE_CONCURRENT, srcQueueFamilyIndex and dstQueueFamilyIndex are not equal, and one of srcQueueFamilyIndex and dstQueueFamilyIndex is a special queue family values reserved for external memory transfers, the other must be VK_QUEUE_FAMILY_IGNORED", "1.2-extensions"}, + {"VUID-VkImageMemoryBarrier-image-04072", "If image was created with a sharing mode of VK_SHARING_MODE_EXCLUSIVE, and srcQueueFamilyIndex and dstQueueFamilyIndex are not equal, srcQueueFamilyIndex and dstQueueFamilyIndex must both be valid queue families, or one of the special queue family values reserved for external memory transfers, as described in Queue Family Ownership Transfer", "1.2-extensions"}, {"VUID-VkImageMemoryBarrier-image-parameter", "image must be a valid VkImage handle", "1.2-extensions"}, - {"VUID-VkImageMemoryBarrier-newLayout-01198", "newLayout must not be VK_IMAGE_LAYOUT_UNDEFINED or VK_IMAGE_LAYOUT_PREINITIALIZED", "1.2-extensions"}, + {"VUID-VkImageMemoryBarrier-newLayout-01198", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define a image layout transition, newLayout must not be VK_IMAGE_LAYOUT_UNDEFINED or VK_IMAGE_LAYOUT_PREINITIALIZED", "1.2-extensions"}, {"VUID-VkImageMemoryBarrier-newLayout-parameter", "newLayout must be a valid VkImageLayout value", "1.2-extensions"}, - {"VUID-VkImageMemoryBarrier-oldLayout-01197", "oldLayout must be VK_IMAGE_LAYOUT_UNDEFINED or the current layout of the image subresources affected by the barrier", "1.2-extensions"}, - {"VUID-VkImageMemoryBarrier-oldLayout-01208", "If either oldLayout or newLayout is VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL then image must have been created with VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT set", "1.2-extensions"}, - {"VUID-VkImageMemoryBarrier-oldLayout-01209", "If either oldLayout or newLayout is VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL then image must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set", "1.2-extensions"}, - {"VUID-VkImageMemoryBarrier-oldLayout-01210", "If either oldLayout or newLayout is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL then image must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set", "1.2-extensions"}, - {"VUID-VkImageMemoryBarrier-oldLayout-01211", "If either oldLayout or newLayout is VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL then image must have been created with VK_IMAGE_USAGE_SAMPLED_BIT or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT set", "1.2-extensions"}, - {"VUID-VkImageMemoryBarrier-oldLayout-01212", "If either oldLayout or newLayout is VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL then image must have been created with VK_IMAGE_USAGE_TRANSFER_SRC_BIT set", "1.2-extensions"}, - {"VUID-VkImageMemoryBarrier-oldLayout-01213", "If either oldLayout or newLayout is VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL then image must have been created with VK_IMAGE_USAGE_TRANSFER_DST_BIT set", "1.2-extensions"}, - {"VUID-VkImageMemoryBarrier-oldLayout-01658", "If either oldLayout or newLayout is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL then image must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set", "1.2-extensions"}, - {"VUID-VkImageMemoryBarrier-oldLayout-01659", "If either oldLayout or newLayout is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL then image must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set", "1.2-extensions"}, - {"VUID-VkImageMemoryBarrier-oldLayout-02088", "If either oldLayout or newLayout is VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV then image must have been created with VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV set", "1.2-extensions"}, + {"VUID-VkImageMemoryBarrier-oldLayout-01197", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define a image layout transition, oldLayout must be VK_IMAGE_LAYOUT_UNDEFINED or the current layout of the image subresources affected by the barrier", "1.2-extensions"}, + {"VUID-VkImageMemoryBarrier-oldLayout-01208", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define a image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL then image must have been created with VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT set", "1.2-extensions"}, + {"VUID-VkImageMemoryBarrier-oldLayout-01209", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define a image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL then image must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set", "1.2-extensions"}, + {"VUID-VkImageMemoryBarrier-oldLayout-01210", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define a image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL then image must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set", "1.2-extensions"}, + {"VUID-VkImageMemoryBarrier-oldLayout-01211", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define a image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL then image must have been created with VK_IMAGE_USAGE_SAMPLED_BIT or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT set", "1.2-extensions"}, + {"VUID-VkImageMemoryBarrier-oldLayout-01212", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define a image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL then image must have been created with VK_IMAGE_USAGE_TRANSFER_SRC_BIT set", "1.2-extensions"}, + {"VUID-VkImageMemoryBarrier-oldLayout-01213", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define a image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL then image must have been created with VK_IMAGE_USAGE_TRANSFER_DST_BIT set", "1.2-extensions"}, + {"VUID-VkImageMemoryBarrier-oldLayout-01658", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define a image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL then image must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set", "1.2-extensions"}, + {"VUID-VkImageMemoryBarrier-oldLayout-01659", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define a image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL then image must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set", "1.2-extensions"}, + {"VUID-VkImageMemoryBarrier-oldLayout-02088", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define a image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV then image must have been created with VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV set", "1.2-extensions"}, {"VUID-VkImageMemoryBarrier-oldLayout-parameter", "oldLayout must be a valid VkImageLayout value", "1.2-extensions"}, {"VUID-VkImageMemoryBarrier-pNext-pNext", "pNext must be NULL or a pointer to a valid instance of VkSampleLocationsInfoEXT", "1.2-extensions"}, {"VUID-VkImageMemoryBarrier-sType-sType", "sType must be VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER", "1.2-extensions"}, {"VUID-VkImageMemoryBarrier-sType-unique", "The sType value of each struct in the pNext chain must be unique", "1.2-extensions"}, + {"VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04065", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define a image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR then image must have been created with at least one of VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, VK_IMAGE_USAGE_SAMPLED_BIT, or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT set", "1.2-extensions"}, + {"VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04066", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define a image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR then image must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set", "1.2-extensions"}, + {"VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04067", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define a image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR then image must have been created with at least one of VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, VK_IMAGE_USAGE_SAMPLED_BIT, or VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT set", "1.2-extensions"}, + {"VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04068", "If srcQueueFamilyIndex and dstQueueFamilyIndex define a queue family ownership transfer or oldLayout and newLayout define a image layout transition, and oldLayout or newLayout is VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR then image must have been created with VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT set", "1.2-extensions"}, + {"VUID-VkImageMemoryBarrier-srcQueueFamilyIndex-04070", "If srcQueueFamilyIndex is not equal to dstQueueFamilyIndex, at least one must not be a special queue family reserved for external memory ownership transfers, as described in Queue Family Ownership Transfer", "1.2-extensions"}, {"VUID-VkImageMemoryBarrier-subresourceRange-01486", "subresourceRange.baseMipLevel must be less than the mipLevels specified in VkImageCreateInfo when image was created", "1.2-extensions"}, {"VUID-VkImageMemoryBarrier-subresourceRange-01488", "subresourceRange.baseArrayLayer must be less than the arrayLayers specified in VkImageCreateInfo when image was created", "1.2-extensions"}, {"VUID-VkImageMemoryBarrier-subresourceRange-01724", "If subresourceRange.levelCount is not VK_REMAINING_MIP_LEVELS, subresourceRange.baseMipLevel + subresourceRange.levelCount must be less than or equal to the mipLevels specified in VkImageCreateInfo when image was created", "1.2-extensions"}, @@ -1522,13 +1519,14 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02231", "If the decodeModeSharedExponent feature is not enabled, decodeMode must not be VK_FORMAT_E5B9G9R9_UFLOAT_PACK32", "1.2-extensions"}, {"VUID-VkImageViewASTCDecodeModeEXT-decodeMode-02232", "If decodeMode is VK_FORMAT_R8G8B8A8_UNORM the image view must not include blocks using any of the ASTC HDR modes", "1.2-extensions"}, {"VUID-VkImageViewASTCDecodeModeEXT-decodeMode-parameter", "decodeMode must be a valid VkFormat value", "1.2-extensions"}, - {"VUID-VkImageViewASTCDecodeModeEXT-format-02233", "format of the image view must be one of VK_FORMAT_ASTC_4x4_UNORM_BLOCK, VK_FORMAT_ASTC_4x4_SRGB_BLOCK, VK_FORMAT_ASTC_5x4_UNORM_BLOCK, VK_FORMAT_ASTC_5x4_SRGB_BLOCK, VK_FORMAT_ASTC_5x5_UNORM_BLOCK, VK_FORMAT_ASTC_5x5_SRGB_BLOCK, VK_FORMAT_ASTC_6x5_UNORM_BLOCK, VK_FORMAT_ASTC_6x5_SRGB_BLOCK, VK_FORMAT_ASTC_6x6_UNORM_BLOCK, VK_FORMAT_ASTC_6x6_SRGB_BLOCK, VK_FORMAT_ASTC_8x5_UNORM_BLOCK, VK_FORMAT_ASTC_8x5_SRGB_BLOCK, VK_FORMAT_ASTC_8x6_UNORM_BLOCK, VK_FORMAT_ASTC_8x6_SRGB_BLOCK, VK_FORMAT_ASTC_8x8_UNORM_BLOCK, VK_FORMAT_ASTC_8x8_SRGB_BLOCK, VK_FORMAT_ASTC_10x5_UNORM_BLOCK, VK_FORMAT_ASTC_10x5_SRGB_BLOCK, VK_FORMAT_ASTC_10x6_UNORM_BLOCK, VK_FORMAT_ASTC_10x6_SRGB_BLOCK, VK_FORMAT_ASTC_10x8_UNORM_BLOCK, VK_FORMAT_ASTC_10x8_SRGB_BLOCK, VK_FORMAT_ASTC_10x10_UNORM_BLOCK, VK_FORMAT_ASTC_10x10_SRGB_BLOCK, VK_FORMAT_ASTC_12x10_UNORM_BLOCK, VK_FORMAT_ASTC_12x10_SRGB_BLOCK, VK_FORMAT_ASTC_12x12_UNORM_BLOCK, or VK_FORMAT_ASTC_12x12_SRGB_BLOCK", "1.2-extensions"}, + {"VUID-VkImageViewASTCDecodeModeEXT-format-04084", "format of the image view must be one of the ASTC Compressed Image Formats", "1.2-extensions"}, {"VUID-VkImageViewASTCDecodeModeEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT", "1.2-extensions"}, {"VUID-VkImageViewAddressPropertiesNVX-pNext-pNext", "pNext must be NULL", "1.2-extensions"}, {"VUID-VkImageViewAddressPropertiesNVX-sType-sType", "sType must be VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX", "1.2-extensions"}, {"VUID-VkImageViewCreateInfo-None-02273", "The format features of the resultant image view must contain at least one bit", "1.2-extensions"}, {"VUID-VkImageViewCreateInfo-components-parameter", "components must be a valid VkComponentMapping structure", "1.2-extensions"}, {"VUID-VkImageViewCreateInfo-flags-02572", "If dynamic fragment density map feature is not enabled, flags must not contain VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT", "1.2-extensions"}, + {"VUID-VkImageViewCreateInfo-flags-04083", "If flags dose not contain VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT and the pNext chain include a VkImageFormatListCreateInfo structure then VkImageFormatListCreateInfo::viewFormatCount must be 0 or 1", "1.2-extensions"}, {"VUID-VkImageViewCreateInfo-flags-parameter", "flags must be a valid combination of VkImageViewCreateFlagBits values", "1.2-extensions"}, {"VUID-VkImageViewCreateInfo-format-parameter", "format must be a valid VkFormat value", "1.2-extensions"}, {"VUID-VkImageViewCreateInfo-image-01003", "If image was not created with VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT then viewType must not be VK_IMAGE_VIEW_TYPE_CUBE or VK_IMAGE_VIEW_TYPE_CUBE_ARRAY", "1.2-extensions"}, @@ -1550,19 +1548,20 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkImageViewCreateInfo-image-02087", "If image was created with usage containing VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV, format must be VK_FORMAT_R8_UINT", "1.2-extensions"}, {"VUID-VkImageViewCreateInfo-image-02399", "If image has an external format, format must be VK_FORMAT_UNDEFINED", "1.2-extensions"}, {"VUID-VkImageViewCreateInfo-image-02400", "If image has an external format, the pNext chain must include a VkSamplerYcbcrConversionInfo structure with a conversion object created with the same external format as image", "1.2-extensions"}, - {"VUID-VkImageViewCreateInfo-image-02401", "If image has an external format, all members of components must be VK_COMPONENT_SWIZZLE_IDENTITY", "1.2-extensions"}, + {"VUID-VkImageViewCreateInfo-image-02401", "If image has an external format, all members of components must be the identity swizzle", "1.2-extensions"}, {"VUID-VkImageViewCreateInfo-image-02569", "image must have been created with a usage value containing at least one of VK_IMAGE_USAGE_SAMPLED_BIT, VK_IMAGE_USAGE_STORAGE_BIT, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, or VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT", "default"}, {"VUID-VkImageViewCreateInfo-image-02570", "image must have been created with a usage value containing at least one of VK_IMAGE_USAGE_SAMPLED_BIT, VK_IMAGE_USAGE_STORAGE_BIT, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT, VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT, VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV, or VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT", "1.2-extensions"}, {"VUID-VkImageViewCreateInfo-image-02571", "If image was created with usage containing VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT, subresourceRange.levelCount must be 1", "1.2-extensions"}, {"VUID-VkImageViewCreateInfo-image-02573", "If dynamic fragment density map feature is not enabled and image was created with usage containing VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT, flags must not contain any of VK_IMAGE_CREATE_PROTECTED_BIT, VK_IMAGE_CREATE_SPARSE_BINDING_BIT, VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT, or VK_IMAGE_CREATE_SPARSE_ALIASED_BIT", "1.2-extensions"}, {"VUID-VkImageViewCreateInfo-image-02724", "If image is a 3D image created with VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT set, and viewType is VK_IMAGE_VIEW_TYPE_2D or VK_IMAGE_VIEW_TYPE_2D_ARRAY, subresourceRange.baseArrayLayer must be less than the depth computed from baseMipLevel and extent.depth specified in VkImageCreateInfo when image was created, according to the formula defined in Image Miplevel Sizing", "1.2-extensions"}, {"VUID-VkImageViewCreateInfo-image-parameter", "image must be a valid VkImage handle", "1.2-extensions"}, - {"VUID-VkImageViewCreateInfo-pNext-01585", "If a VkImageFormatListCreateInfo structure was included in the pNext chain of the VkImageCreateInfo structure used when creating image and the viewFormatCount field of VkImageFormatListCreateInfo is not zero then format must be one of the formats in VkImageFormatListCreateInfo::pViewFormats", "1.2-extensions"}, - {"VUID-VkImageViewCreateInfo-pNext-01970", "If the pNext chain includes a VkSamplerYcbcrConversionInfo structure with a conversion value other than VK_NULL_HANDLE, all members of components must have the value VK_COMPONENT_SWIZZLE_IDENTITY", "1.2-extensions"}, + {"VUID-VkImageViewCreateInfo-pNext-01585", "If a VkImageFormatListCreateInfo structure was included in the pNext chain of the VkImageCreateInfo structure used when creating image and VkImageFormatListCreateInfo::viewFormatCount is not zero then format must be one of the formats in VkImageFormatListCreateInfo::pViewFormats", "1.2-extensions"}, + {"VUID-VkImageViewCreateInfo-pNext-01970", "If the pNext chain includes a VkSamplerYcbcrConversionInfo structure with a conversion value other than VK_NULL_HANDLE, all members of components must have the identity swizzle", "1.2-extensions"}, {"VUID-VkImageViewCreateInfo-pNext-02661", "If the pNext chain includes a VkImageViewUsageCreateInfo structure, its usage member must not include any bits that were not set in the usage member of the VkImageCreateInfo structure used to create image", "1.2-khr-extensions"}, {"VUID-VkImageViewCreateInfo-pNext-02662", "If the pNext chain includes a VkImageViewUsageCreateInfo structure, and image was not created with a VkImageStencilUsageCreateInfo structure included in the pNext chain of VkImageCreateInfo, its usage member must not include any bits that were not set in the usage member of the VkImageCreateInfo structure used to create image", "1.2-extensions"}, {"VUID-VkImageViewCreateInfo-pNext-02663", "If the pNext chain includes a VkImageViewUsageCreateInfo structure, image was created with a VkImageStencilUsageCreateInfo structure included in the pNext chain of VkImageCreateInfo, and subResourceRange.aspectMask includes VK_IMAGE_ASPECT_STENCIL_BIT, the usage member of the VkImageViewUsageCreateInfo instance must not include any bits that were not set in the usage member of the VkImageStencilUsageCreateInfo structure used to create image", "1.2-extensions"}, {"VUID-VkImageViewCreateInfo-pNext-02664", "If the pNext chain includes a VkImageViewUsageCreateInfo structure, image was created with a VkImageStencilUsageCreateInfo structure included in the pNext chain of VkImageCreateInfo, and subResourceRange.aspectMask includes bits other than VK_IMAGE_ASPECT_STENCIL_BIT, the usage member of the VkImageViewUsageCreateInfo structure must not include any bits that were not set in the usage member of the VkImageCreateInfo structure used to create image", "1.2-extensions"}, + {"VUID-VkImageViewCreateInfo-pNext-04082", "If a VkImageFormatListCreateInfo structure was included in the pNext chain of the VkImageCreateInfo structure used when creating image and VkImageFormatListCreateInfo::viewFormatCount is not zero then all of the formats in VkImageFormatListCreateInfo::pViewFormats must be compatible with the format as described in the compatibility table", "1.2-extensions"}, {"VUID-VkImageViewCreateInfo-pNext-pNext", "Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkImageViewASTCDecodeModeEXT, VkImageViewUsageCreateInfo, or VkSamplerYcbcrConversionInfo", "1.2-extensions"}, {"VUID-VkImageViewCreateInfo-sType-sType", "sType must be VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO", "1.2-extensions"}, {"VUID-VkImageViewCreateInfo-sType-unique", "The sType value of each struct in the pNext chain must be unique", "1.2-extensions"}, @@ -1769,7 +1768,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkMemoryAllocateInfo-pNext-00641", "If the pNext chain includes a VkImportMemoryWin32HandleInfoKHR structure, it must not include a VkImportMemoryWin32HandleInfoNV structure", "1.2-extensions"}, {"VUID-VkMemoryAllocateInfo-pNext-01874", "If the parameters do not define an import operation, and the pNext chain includes a VkExportMemoryAllocateInfo structure with VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID included in its handleTypes member, and the pNext chain includes a VkMemoryDedicatedAllocateInfo structure with image not equal to VK_NULL_HANDLE, then allocationSize must be 0, otherwise allocationSize must be greater than 0", "1.2-extensions"}, {"VUID-VkMemoryAllocateInfo-pNext-02384", "If the parameters define an import operation and the external handle type is VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID, and the pNext chain does not include a VkMemoryDedicatedAllocateInfo structure or VkMemoryDedicatedAllocateInfo::image is VK_NULL_HANDLE, the Android hardware buffer must have a AHardwareBuffer_Desc::format of AHARDWAREBUFFER_FORMAT_BLOB and a AHardwareBuffer_Desc::usage that includes AHARDWAREBUFFER_USAGE_GPU_DATA_BUFFER", "1.2-extensions"}, - {"VUID-VkMemoryAllocateInfo-pNext-02386", "If the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext chain includes a VkMemoryDedicatedAllocateInfo with image that is not VK_NULL_HANDLE, the Android hardware buffer's AHardwareBuffer::usage must include at least one of AHARDWAREBUFFER_USAGE_GPU_COLOR_OUTPUT or AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE", "1.2-extensions"}, + {"VUID-VkMemoryAllocateInfo-pNext-02386", "If the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext chain includes a VkMemoryDedicatedAllocateInfo with image that is not VK_NULL_HANDLE, the Android hardware buffer's AHardwareBuffer::usage must include at least one of AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER or AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE", "1.2-extensions"}, {"VUID-VkMemoryAllocateInfo-pNext-02387", "If the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext chain includes a VkMemoryDedicatedAllocateInfo with image that is not VK_NULL_HANDLE, the format of image must be VK_FORMAT_UNDEFINED or the format returned by vkGetAndroidHardwareBufferPropertiesANDROID in VkAndroidHardwareBufferFormatPropertiesANDROID::format for the Android hardware buffer", "1.2-extensions"}, {"VUID-VkMemoryAllocateInfo-pNext-02388", "If the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext chain includes a VkMemoryDedicatedAllocateInfo structure with image that is not VK_NULL_HANDLE, the width, height, and array layer dimensions of image and the Android hardware buffer's AHardwareBuffer_Desc must be identical", "1.2-extensions"}, {"VUID-VkMemoryAllocateInfo-pNext-02389", "If the parameters define an import operation, the external handle is an Android hardware buffer, and the pNext chain includes a VkMemoryDedicatedAllocateInfo structure with image that is not VK_NULL_HANDLE, and the Android hardware buffer's AHardwareBuffer::usage includes AHARDWAREBUFFER_USAGE_GPU_MIPMAP_COMPLETE, the image must have a complete mipmap chain", "1.2-extensions"}, @@ -1854,9 +1853,8 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkPerformanceStreamMarkerInfoINTEL-marker-02735", "The value written by the application into marker must only used the valid bits as reported by vkGetPerformanceParameterINTEL with the VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL", "1.2-extensions"}, {"VUID-VkPerformanceStreamMarkerInfoINTEL-pNext-pNext", "pNext must be NULL", "1.2-extensions"}, {"VUID-VkPerformanceStreamMarkerInfoINTEL-sType-sType", "sType must be VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL", "1.2-extensions"}, - {"VUID-VkPerformanceValueDataINTEL-valueString-parameter", "valueString must be a null-terminated UTF-8 string", "1.2-extensions"}, - {"VUID-VkPerformanceValueINTEL-data-parameter", "data must be a valid VkPerformanceValueDataINTEL union", "1.2-extensions"}, {"VUID-VkPerformanceValueINTEL-type-parameter", "type must be a valid VkPerformanceValueTypeINTEL value", "1.2-extensions"}, + {"VUID-VkPerformanceValueINTEL-valueString-parameter", "If type is VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL, the valueString member of data must be a null-terminated UTF-8 string", "1.2-extensions"}, {"VUID-VkPhysicalDevice16BitStorageFeatures-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES", "1.2-extensions"}, {"VUID-VkPhysicalDevice8BitStorageFeatures-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES", "1.2-extensions"}, {"VUID-VkPhysicalDeviceASTCDecodeFeaturesEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT", "1.2-extensions"}, @@ -1954,7 +1952,6 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT", "1.2-extensions"}, {"VUID-VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR", "1.2-extensions"}, {"VUID-VkPhysicalDevicePointClippingProperties-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES", "1.2-extensions"}, - {"VUID-VkPhysicalDevicePrivateDataFeaturesEXT-pNext-pNext", "pNext must be NULL", "1.2-extensions"}, {"VUID-VkPhysicalDevicePrivateDataFeaturesEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT", "1.2-extensions"}, {"VUID-VkPhysicalDeviceProperties2-pNext-pNext", "Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT, VkPhysicalDeviceConservativeRasterizationPropertiesEXT, VkPhysicalDeviceCooperativeMatrixPropertiesNV, VkPhysicalDeviceCustomBorderColorPropertiesEXT, VkPhysicalDeviceDepthStencilResolveProperties, VkPhysicalDeviceDescriptorIndexingProperties, VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV, VkPhysicalDeviceDiscardRectanglePropertiesEXT, VkPhysicalDeviceDriverProperties, VkPhysicalDeviceExternalMemoryHostPropertiesEXT, VkPhysicalDeviceFloatControlsProperties, VkPhysicalDeviceFragmentDensityMapPropertiesEXT, VkPhysicalDeviceIDProperties, VkPhysicalDeviceInlineUniformBlockPropertiesEXT, VkPhysicalDeviceLineRasterizationPropertiesEXT, VkPhysicalDeviceMaintenance3Properties, VkPhysicalDeviceMeshShaderPropertiesNV, VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX, VkPhysicalDeviceMultiviewProperties, VkPhysicalDevicePCIBusInfoPropertiesEXT, VkPhysicalDevicePerformanceQueryPropertiesKHR, VkPhysicalDevicePointClippingProperties, VkPhysicalDeviceProtectedMemoryProperties, VkPhysicalDevicePushDescriptorPropertiesKHR, VkPhysicalDeviceRayTracingPropertiesKHR, VkPhysicalDeviceRayTracingPropertiesNV, VkPhysicalDeviceRobustness2PropertiesEXT, VkPhysicalDeviceSampleLocationsPropertiesEXT, VkPhysicalDeviceSamplerFilterMinmaxProperties, VkPhysicalDeviceShaderCoreProperties2AMD, VkPhysicalDeviceShaderCorePropertiesAMD, VkPhysicalDeviceShaderSMBuiltinsPropertiesNV, VkPhysicalDeviceShadingRateImagePropertiesNV, VkPhysicalDeviceSubgroupProperties, VkPhysicalDeviceSubgroupSizeControlPropertiesEXT, VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT, VkPhysicalDeviceTimelineSemaphoreProperties, VkPhysicalDeviceTransformFeedbackPropertiesEXT, VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT, VkPhysicalDeviceVulkan11Properties, or VkPhysicalDeviceVulkan12Properties", "1.2-extensions"}, {"VUID-VkPhysicalDeviceProperties2-sType-sType", "sType must be VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2", "1.2-extensions"}, @@ -2295,15 +2292,12 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02027", "If the multiple viewports feature is not enabled, exclusiveScissorCount must be 0 or 1", "1.2-extensions"}, {"VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02028", "exclusiveScissorCount must be less than or equal to VkPhysicalDeviceLimits::maxViewports", "1.2-extensions"}, {"VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02029", "exclusiveScissorCount must be 0 or identical to the viewportCount member of VkPipelineViewportStateCreateInfo", "1.2-extensions"}, - {"VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-pDynamicStates-02030", "If no element of the pDynamicStates member of pDynamicState is VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV and exclusiveScissorCount is not 0, pExclusiveScissors must be a valid pointer to an array of exclusiveScissorCount VkRect2D structures", "1.2-extensions"}, - {"VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-pExclusiveScissors-parameter", "If exclusiveScissorCount is not 0, and pExclusiveScissors is not NULL, pExclusiveScissors must be a valid pointer to an array of exclusiveScissorCount VkRect2D structures", "1.2-extensions"}, {"VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-sType-sType", "sType must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV", "1.2-extensions"}, - {"VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-pDynamicStates-02057", "If no element of the pDynamicStates member of pDynamicState is VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV, pShadingRatePalettes must be a valid pointer to an array of viewportCount VkShadingRatePaletteNV structures", "1.2-extensions"}, - {"VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-pShadingRatePalettes-parameter", "If viewportCount is not 0, and pShadingRatePalettes is not NULL, pShadingRatePalettes must be a valid pointer to an array of viewportCount valid VkShadingRatePaletteNV structures", "1.2-extensions"}, {"VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-sType-sType", "sType must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV", "1.2-extensions"}, {"VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-shadingRateImageEnable-02056", "If shadingRateImageEnable is VK_TRUE, viewportCount must be equal to the viewportCount member of VkPipelineViewportStateCreateInfo", "1.2-extensions"}, {"VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02054", "If the multiple viewports feature is not enabled, viewportCount must be 0 or 1", "1.2-extensions"}, {"VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-02055", "viewportCount must be less than or equal to VkPhysicalDeviceLimits::maxViewports", "1.2-extensions"}, + {"VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-viewportCount-arraylength", "viewportCount must be greater than 0", "1.2-extensions"}, {"VUID-VkPipelineViewportStateCreateInfo-flags-zerobitmask", "flags must be 0", "1.2-extensions"}, {"VUID-VkPipelineViewportStateCreateInfo-offset-02822", "Evaluation of (offset.x + extent.width) must not cause a signed integer addition overflow for any element of pScissors", "1.2-extensions"}, {"VUID-VkPipelineViewportStateCreateInfo-offset-02823", "Evaluation of (offset.y + extent.height) must not cause a signed integer addition overflow for any element of pScissors", "1.2-extensions"}, @@ -2601,6 +2595,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkSamplerCreateInfo-borderColor-04011", "If borderColor is set to one of VK_BORDER_COLOR_FLOAT_CUSTOM_EXT or VK_BORDER_COLOR_INT_CUSTOM_EXT, then a VkSamplerCustomBorderColorCreateInfoEXT must be present in the pNext chain", "1.2-extensions"}, {"VUID-VkSamplerCreateInfo-compareEnable-01080", "If compareEnable is VK_TRUE, compareOp must be a valid VkCompareOp value", "1.2-extensions"}, {"VUID-VkSamplerCreateInfo-compareEnable-01423", "If compareEnable is VK_TRUE, the reductionMode member of VkSamplerReductionModeCreateInfo must be VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE", "1.2-extensions"}, + {"VUID-VkSamplerCreateInfo-customBorderColors-04085", "If the customBorderColors feature is not enabled, borderColor must not be set to VK_BORDER_COLOR_FLOAT_CUSTOM_EXT or VK_BORDER_COLOR_INT_CUSTOM_EXT", "1.2-extensions"}, {"VUID-VkSamplerCreateInfo-flags-02574", "If flags includes VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT, then minFilter and magFilter must be equal", "1.2-extensions"}, {"VUID-VkSamplerCreateInfo-flags-02575", "If flags includes VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT, then mipmapMode must be VK_SAMPLER_MIPMAP_MODE_NEAREST", "1.2-extensions"}, {"VUID-VkSamplerCreateInfo-flags-02576", "If flags includes VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT, then minLod and maxLod must be zero", "1.2-extensions"}, @@ -2613,7 +2608,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkSamplerCreateInfo-magFilter-01422", "If either magFilter or minFilter is VK_FILTER_CUBIC_EXT, the reductionMode member of VkSamplerReductionModeCreateInfo must be VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE", "default"}, {"VUID-VkSamplerCreateInfo-magFilter-parameter", "magFilter must be a valid VkFilter value", "1.2-extensions"}, {"VUID-VkSamplerCreateInfo-maxLod-01973", "maxLod must be greater than or equal to minLod", "1.2-extensions"}, - {"VUID-VkSamplerCreateInfo-minFilter-01645", "If sampler {YCbCr} conversion is enabled and the sampler {YCbCr} conversion's features do not support VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT, minFilter and magFilter must be equal to the sampler {YCbCr} conversion's chromaFilter", "1.2-extensions"}, + {"VUID-VkSamplerCreateInfo-minFilter-01645", "If sampler {YCbCr} conversion is enabled and the potential format features of the sampler {YCbCr} conversion do not support VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT, minFilter and magFilter must be equal to the sampler {YCbCr} conversion's chromaFilter", "1.2-extensions"}, {"VUID-VkSamplerCreateInfo-minFilter-parameter", "minFilter must be a valid VkFilter value", "1.2-extensions"}, {"VUID-VkSamplerCreateInfo-mipLodBias-01069", "The absolute value of mipLodBias must be less than or equal to VkPhysicalDeviceLimits::maxSamplerLodBias", "1.2-extensions"}, {"VUID-VkSamplerCreateInfo-mipmapMode-parameter", "mipmapMode must be a valid VkSamplerMipmapMode value", "1.2-extensions"}, @@ -2633,25 +2628,25 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkSamplerCustomBorderColorCreateInfoEXT-sType-sType", "sType must be VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT", "1.2-extensions"}, {"VUID-VkSamplerReductionModeCreateInfo-reductionMode-parameter", "reductionMode must be a valid VkSamplerReductionMode value", "1.2-extensions"}, {"VUID-VkSamplerReductionModeCreateInfo-sType-sType", "sType must be VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO", "1.2-extensions"}, - {"VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-01657", "If the sampler {YCbCr} conversion's features do not support VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT, chromaFilter must not be VK_FILTER_LINEAR", "1.2-extensions"}, + {"VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-01657", "If the potential format features of the sampler {YCbCr} conversion do not support VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT, chromaFilter must not be VK_FILTER_LINEAR", "1.2-extensions"}, {"VUID-VkSamplerYcbcrConversionCreateInfo-chromaFilter-parameter", "chromaFilter must be a valid VkFilter value", "1.2-extensions"}, - {"VUID-VkSamplerYcbcrConversionCreateInfo-components-02581", "If the format has a _422 or _420 suffix, then components.g must be VK_COMPONENT_SWIZZLE_IDENTITY", "1.2-extensions"}, - {"VUID-VkSamplerYcbcrConversionCreateInfo-components-02582", "If the format has a _422 or _420 suffix, then components.a must be VK_COMPONENT_SWIZZLE_IDENTITY, VK_COMPONENT_SWIZZLE_ONE, or VK_COMPONENT_SWIZZLE_ZERO", "1.2-extensions"}, - {"VUID-VkSamplerYcbcrConversionCreateInfo-components-02583", "If the format has a _422 or _420 suffix, then components.r must be VK_COMPONENT_SWIZZLE_IDENTITY or VK_COMPONENT_SWIZZLE_B", "1.2-extensions"}, - {"VUID-VkSamplerYcbcrConversionCreateInfo-components-02584", "If the format has a _422 or _420 suffix, then components.b must be VK_COMPONENT_SWIZZLE_IDENTITY or VK_COMPONENT_SWIZZLE_R", "1.2-extensions"}, - {"VUID-VkSamplerYcbcrConversionCreateInfo-components-02585", "If the format has a _422 or _420 suffix, and if either components.r or components.b is VK_COMPONENT_SWIZZLE_IDENTITY, both values must be VK_COMPONENT_SWIZZLE_IDENTITY", "1.2-extensions"}, + {"VUID-VkSamplerYcbcrConversionCreateInfo-components-02581", "If the format has a _422 or _420 suffix, then components.g must be the identity swizzle", "1.2-extensions"}, + {"VUID-VkSamplerYcbcrConversionCreateInfo-components-02582", "If the format has a _422 or _420 suffix, then components.a must be the identity swizzle, VK_COMPONENT_SWIZZLE_ONE, or VK_COMPONENT_SWIZZLE_ZERO", "1.2-extensions"}, + {"VUID-VkSamplerYcbcrConversionCreateInfo-components-02583", "If the format has a _422 or _420 suffix, then components.r must be the identity swizzle or VK_COMPONENT_SWIZZLE_B", "1.2-extensions"}, + {"VUID-VkSamplerYcbcrConversionCreateInfo-components-02584", "If the format has a _422 or _420 suffix, then components.b must be the identity swizzle or VK_COMPONENT_SWIZZLE_R", "1.2-extensions"}, + {"VUID-VkSamplerYcbcrConversionCreateInfo-components-02585", "If the format has a _422 or _420 suffix, and if either components.r or components.b is the identity swizzle, both values must be the identity swizzle", "1.2-extensions"}, {"VUID-VkSamplerYcbcrConversionCreateInfo-components-parameter", "components must be a valid VkComponentMapping structure", "1.2-extensions"}, - {"VUID-VkSamplerYcbcrConversionCreateInfo-forceExplicitReconstruction-01656", "If the sampler {YCbCr} conversion's features do not support VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT forceExplicitReconstruction must be VK_FALSE", "1.2-extensions"}, - {"VUID-VkSamplerYcbcrConversionCreateInfo-format-01649", "format must not be VK_FORMAT_UNDEFINED", "1.2-khr-extensions"}, - {"VUID-VkSamplerYcbcrConversionCreateInfo-format-01650", "The sampler {YCbCr} conversion's features must support VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT or VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT", "1.2-extensions"}, - {"VUID-VkSamplerYcbcrConversionCreateInfo-format-01653", "If an external format conversion is not being created, format must represent unsigned normalized values (i.e. the format must be a UNORM format)", "1.2-khr-extensions"}, - {"VUID-VkSamplerYcbcrConversionCreateInfo-format-01904", "If an external format conversion is being created, format must be VK_FORMAT_UNDEFINED, otherwise it must not be VK_FORMAT_UNDEFINED", "1.2-extensions"}, + {"VUID-VkSamplerYcbcrConversionCreateInfo-forceExplicitReconstruction-01656", "If the potential format features of the sampler {YCbCr} conversion do not support VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT forceExplicitReconstruction must be VK_FALSE", "1.2-extensions"}, + {"VUID-VkSamplerYcbcrConversionCreateInfo-format-01650", "The potential format features of the sampler {YCbCr} conversion must support VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT or VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT", "1.2-extensions"}, + {"VUID-VkSamplerYcbcrConversionCreateInfo-format-01904", "If an external format conversion is being created, format must be VK_FORMAT_UNDEFINED", "1.2-extensions"}, + {"VUID-VkSamplerYcbcrConversionCreateInfo-format-04060", "format must represent unsigned normalized values (i.e. the format must be a UNORM format)", "1.2-khr-extensions"}, + {"VUID-VkSamplerYcbcrConversionCreateInfo-format-04061", "If an external format conversion is not being created, format must represent unsigned normalized values (i.e. the format must be a UNORM format)", "1.2-extensions"}, {"VUID-VkSamplerYcbcrConversionCreateInfo-format-parameter", "format must be a valid VkFormat value", "1.2-extensions"}, {"VUID-VkSamplerYcbcrConversionCreateInfo-pNext-pNext", "pNext must be NULL or a pointer to a valid instance of VkExternalFormatANDROID", "1.2-extensions"}, {"VUID-VkSamplerYcbcrConversionCreateInfo-sType-sType", "sType must be VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO", "1.2-extensions"}, {"VUID-VkSamplerYcbcrConversionCreateInfo-sType-unique", "The sType value of each struct in the pNext chain must be unique", "1.2-extensions"}, - {"VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01651", "If the sampler {YCbCr} conversion's features do not support VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT, xChromaOffset and yChromaOffset must not be VK_CHROMA_LOCATION_COSITED_EVEN", "1.2-extensions"}, - {"VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01652", "If the sampler {YCbCr} conversion's features do not support VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT, xChromaOffset and yChromaOffset must not be VK_CHROMA_LOCATION_MIDPOINT", "1.2-extensions"}, + {"VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01651", "If the potential format features of the sampler {YCbCr} conversion do not support VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT, xChromaOffset and yChromaOffset must not be VK_CHROMA_LOCATION_COSITED_EVEN", "1.2-extensions"}, + {"VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-01652", "If the potential format features of the sampler {YCbCr} conversion do not support VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT, xChromaOffset and yChromaOffset must not be VK_CHROMA_LOCATION_MIDPOINT", "1.2-extensions"}, {"VUID-VkSamplerYcbcrConversionCreateInfo-xChromaOffset-parameter", "xChromaOffset must be a valid VkChromaLocation value", "1.2-extensions"}, {"VUID-VkSamplerYcbcrConversionCreateInfo-yChromaOffset-parameter", "yChromaOffset must be a valid VkChromaLocation value", "1.2-extensions"}, {"VUID-VkSamplerYcbcrConversionCreateInfo-ycbcrModel-01655", "If ycbcrModel is not VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY, then components.r, components.g, and components.b must correspond to channels of the format; that is, components.r, components.g, and components.b must not be VK_COMPONENT_SWIZZLE_ZERO or VK_COMPONENT_SWIZZLE_ONE, and must not correspond to a channel which contains zero or one as a consequence of conversion to RGBA", "1.2-extensions"}, @@ -2871,12 +2866,12 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkSubpassDescription-loadOp-00846", "If the first use of an attachment in this render pass is as an input attachment, and the attachment is not also used as a color or depth/stencil attachment in the same subpass, then loadOp must not be VK_ATTACHMENT_LOAD_OP_CLEAR", "1.2-extensions"}, {"VUID-VkSubpassDescription-pColorAttachments-01417", "All attachments in pColorAttachments that are not VK_ATTACHMENT_UNUSED must have the same sample count", "1.2-extensions"}, {"VUID-VkSubpassDescription-pColorAttachments-01506", "If the VK_AMD_mixed_attachment_samples extension is enabled, and all attachments in pColorAttachments that are not VK_ATTACHMENT_UNUSED must have a sample count that is smaller than or equal to the sample count of pDepthStencilAttachment if it is not VK_ATTACHMENT_UNUSED", "1.2-extensions"}, - {"VUID-VkSubpassDescription-pColorAttachments-02648", "All attachments in pColorAttachments that are not VK_ATTACHMENT_UNUSED must have formats whose features contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", "1.2-extensions"}, + {"VUID-VkSubpassDescription-pColorAttachments-02648", "All attachments in pColorAttachments that are not VK_ATTACHMENT_UNUSED must have image formats whose potential format features contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", "1.2-extensions"}, {"VUID-VkSubpassDescription-pColorAttachments-parameter", "If colorAttachmentCount is not 0, pColorAttachments must be a valid pointer to an array of colorAttachmentCount valid VkAttachmentReference structures", "1.2-extensions"}, {"VUID-VkSubpassDescription-pDepthStencilAttachment-01418", "If neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples extensions are enabled, and if pDepthStencilAttachment is not VK_ATTACHMENT_UNUSED and any attachments in pColorAttachments are not VK_ATTACHMENT_UNUSED, they must have the same sample count", "1.2-extensions"}, - {"VUID-VkSubpassDescription-pDepthStencilAttachment-02650", "If pDepthStencilAttachment is not NULL and the attachment is not VK_ATTACHMENT_UNUSED then it must have a format whose features contain VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT", "1.2-extensions"}, + {"VUID-VkSubpassDescription-pDepthStencilAttachment-02650", "If pDepthStencilAttachment is not NULL and the attachment is not VK_ATTACHMENT_UNUSED then it must have a image format whose potential format features contain VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT", "1.2-extensions"}, {"VUID-VkSubpassDescription-pDepthStencilAttachment-parameter", "If pDepthStencilAttachment is not NULL, pDepthStencilAttachment must be a valid pointer to a valid VkAttachmentReference structure", "1.2-extensions"}, - {"VUID-VkSubpassDescription-pInputAttachments-02647", "All attachments in pInputAttachments that are not VK_ATTACHMENT_UNUSED must have formats whose features contain at least one of VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT or VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT", "1.2-extensions"}, + {"VUID-VkSubpassDescription-pInputAttachments-02647", "All attachments in pInputAttachments that are not VK_ATTACHMENT_UNUSED must have image formats whose potential format features contain at least VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT or VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT", "1.2-extensions"}, {"VUID-VkSubpassDescription-pInputAttachments-02868", "If the render pass is created with VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM each of the elements of pInputAttachments must be VK_ATTACHMENT_UNUSED", "1.2-extensions"}, {"VUID-VkSubpassDescription-pInputAttachments-parameter", "If inputAttachmentCount is not 0, pInputAttachments must be a valid pointer to an array of inputAttachmentCount valid VkAttachmentReference structures", "1.2-extensions"}, {"VUID-VkSubpassDescription-pPreserveAttachments-00854", "Each element of pPreserveAttachments must not also be an element of any other member of the subpass description", "1.2-extensions"}, @@ -2885,7 +2880,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkSubpassDescription-pResolveAttachments-00848", "If pResolveAttachments is not NULL, for each resolve attachment that is not VK_ATTACHMENT_UNUSED, the corresponding color attachment must not have a sample count of VK_SAMPLE_COUNT_1_BIT", "1.2-extensions"}, {"VUID-VkSubpassDescription-pResolveAttachments-00849", "If pResolveAttachments is not NULL, each resolve attachment that is not VK_ATTACHMENT_UNUSED must have a sample count of VK_SAMPLE_COUNT_1_BIT", "1.2-extensions"}, {"VUID-VkSubpassDescription-pResolveAttachments-00850", "If pResolveAttachments is not NULL, each resolve attachment that is not VK_ATTACHMENT_UNUSED must have the same VkFormat as its corresponding color attachment", "1.2-extensions"}, - {"VUID-VkSubpassDescription-pResolveAttachments-02649", "All attachments in pResolveAttachments that are not VK_ATTACHMENT_UNUSED must have formats whose features contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", "1.2-extensions"}, + {"VUID-VkSubpassDescription-pResolveAttachments-02649", "All attachments in pResolveAttachments that are not VK_ATTACHMENT_UNUSED must have image formats whose potential format features contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", "1.2-extensions"}, {"VUID-VkSubpassDescription-pResolveAttachments-parameter", "If colorAttachmentCount is not 0, and pResolveAttachments is not NULL, pResolveAttachments must be a valid pointer to an array of colorAttachmentCount valid VkAttachmentReference structures", "1.2-extensions"}, {"VUID-VkSubpassDescription-pipelineBindPoint-00844", "pipelineBindPoint must be VK_PIPELINE_BIND_POINT_GRAPHICS", "1.2-extensions"}, {"VUID-VkSubpassDescription-pipelineBindPoint-parameter", "pipelineBindPoint must be a valid VkPipelineBindPoint value", "1.2-extensions"}, @@ -2898,18 +2893,18 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkSubpassDescription2-flags-parameter", "flags must be a valid combination of VkSubpassDescriptionFlagBits values", "1.2-extensions"}, {"VUID-VkSubpassDescription2-layout-02528", "If any attachment is used by more than one VkAttachmentReference member, then each use must use the same layout", "1.2-extensions"}, {"VUID-VkSubpassDescription2-loadOp-03064", "If the first use of an attachment in this render pass is as an input attachment, and the attachment is not also used as a color or depth/stencil attachment in the same subpass, then loadOp must not be VK_ATTACHMENT_LOAD_OP_CLEAR", "1.2-extensions"}, - {"VUID-VkSubpassDescription2-pColorAttachments-02898", "All attachments in pColorAttachments that are not VK_ATTACHMENT_UNUSED must have formats whose features contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", "1.2-extensions"}, + {"VUID-VkSubpassDescription2-pColorAttachments-02898", "All attachments in pColorAttachments that are not VK_ATTACHMENT_UNUSED must have image formats whose potential format features contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", "1.2-extensions"}, {"VUID-VkSubpassDescription2-pColorAttachments-03069", "All attachments in pColorAttachments that are not VK_ATTACHMENT_UNUSED must have the same sample count", "1.2-extensions"}, {"VUID-VkSubpassDescription2-pColorAttachments-03070", "If the VK_AMD_mixed_attachment_samples extension is enabled, all attachments in pColorAttachments that are not VK_ATTACHMENT_UNUSED must have a sample count that is smaller than or equal to the sample count of pDepthStencilAttachment if it is not VK_ATTACHMENT_UNUSED", "1.2-extensions"}, {"VUID-VkSubpassDescription2-pColorAttachments-parameter", "If colorAttachmentCount is not 0, pColorAttachments must be a valid pointer to an array of colorAttachmentCount valid VkAttachmentReference2 structures", "1.2-extensions"}, - {"VUID-VkSubpassDescription2-pDepthStencilAttachment-02900", "If pDepthStencilAttachment is not NULL and the attachment is not VK_ATTACHMENT_UNUSED then it must have a format whose features contain VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT", "1.2-extensions"}, + {"VUID-VkSubpassDescription2-pDepthStencilAttachment-02900", "If pDepthStencilAttachment is not NULL and the attachment is not VK_ATTACHMENT_UNUSED then it must have a image format whose potential format features contain VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT", "1.2-extensions"}, {"VUID-VkSubpassDescription2-pDepthStencilAttachment-03071", "If neither the VK_AMD_mixed_attachment_samples nor the VK_NV_framebuffer_mixed_samples extensions are enabled, and if pDepthStencilAttachment is not VK_ATTACHMENT_UNUSED and any attachments in pColorAttachments are not VK_ATTACHMENT_UNUSED, they must have the same sample count", "1.2-extensions"}, {"VUID-VkSubpassDescription2-pDepthStencilAttachment-parameter", "If pDepthStencilAttachment is not NULL, pDepthStencilAttachment must be a valid pointer to a valid VkAttachmentReference2 structure", "1.2-extensions"}, - {"VUID-VkSubpassDescription2-pInputAttachments-02897", "All attachments in pInputAttachments that are not VK_ATTACHMENT_UNUSED must have formats whose features contain at least one of VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT or VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT", "1.2-extensions"}, + {"VUID-VkSubpassDescription2-pInputAttachments-02897", "All attachments in pInputAttachments that are not VK_ATTACHMENT_UNUSED must have image formats whose potential format features contain at least VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT or VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT", "1.2-extensions"}, {"VUID-VkSubpassDescription2-pInputAttachments-parameter", "If inputAttachmentCount is not 0, pInputAttachments must be a valid pointer to an array of inputAttachmentCount valid VkAttachmentReference2 structures", "1.2-extensions"}, {"VUID-VkSubpassDescription2-pPreserveAttachments-03074", "Any given element of pPreserveAttachments must not also be an element of any other member of the subpass description", "1.2-extensions"}, {"VUID-VkSubpassDescription2-pPreserveAttachments-parameter", "If preserveAttachmentCount is not 0, pPreserveAttachments must be a valid pointer to an array of preserveAttachmentCount uint32_t values", "1.2-extensions"}, - {"VUID-VkSubpassDescription2-pResolveAttachments-02899", "All attachments in pResolveAttachments that are not VK_ATTACHMENT_UNUSED must have formats whose features contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", "1.2-extensions"}, + {"VUID-VkSubpassDescription2-pResolveAttachments-02899", "All attachments in pResolveAttachments that are not VK_ATTACHMENT_UNUSED must have image formats whose potential format features contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", "1.2-extensions"}, {"VUID-VkSubpassDescription2-pResolveAttachments-03065", "If pResolveAttachments is not NULL, for each resolve attachment that does not have the value VK_ATTACHMENT_UNUSED, the corresponding color attachment must not have the value VK_ATTACHMENT_UNUSED", "1.2-extensions"}, {"VUID-VkSubpassDescription2-pResolveAttachments-03066", "If pResolveAttachments is not NULL, for each resolve attachment that is not VK_ATTACHMENT_UNUSED, the corresponding color attachment must not have a sample count of VK_SAMPLE_COUNT_1_BIT", "1.2-extensions"}, {"VUID-VkSubpassDescription2-pResolveAttachments-03067", "If pResolveAttachments is not NULL, each resolve attachment that is not VK_ATTACHMENT_UNUSED must have a sample count of VK_SAMPLE_COUNT_1_BIT", "1.2-extensions"}, @@ -2959,6 +2954,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkSwapchainCreateInfoKHR-compositeAlpha-parameter", "compositeAlpha must be a valid VkCompositeAlphaFlagBitsKHR value", "1.2-extensions"}, {"VUID-VkSwapchainCreateInfoKHR-flags-03168", "If flags contains VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR then the pNext chain must include a VkImageFormatListCreateInfo structure with a viewFormatCount greater than zero and pViewFormats must have an element equal to imageFormat", "1.2-extensions"}, {"VUID-VkSwapchainCreateInfoKHR-flags-03187", "If flags contains VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR, then VkSurfaceProtectedCapabilitiesKHR::supportsProtected must be VK_TRUE in the VkSurfaceProtectedCapabilitiesKHR structure returned by vkGetPhysicalDeviceSurfaceCapabilities2KHR for surface", "1.2-extensions"}, + {"VUID-VkSwapchainCreateInfoKHR-flags-04100", "If flags dose not contain VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR and the pNext chain include a VkImageFormatListCreateInfo structure then VkImageFormatListCreateInfo::viewFormatCount must be 0 or 1", "1.2-extensions"}, {"VUID-VkSwapchainCreateInfoKHR-flags-parameter", "flags must be a valid combination of VkSwapchainCreateFlagBitsKHR values", "1.2-extensions"}, {"VUID-VkSwapchainCreateInfoKHR-imageArrayLayers-01275", "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", "1.2-extensions"}, {"VUID-VkSwapchainCreateInfoKHR-imageColorSpace-parameter", "imageColorSpace must be a valid VkColorSpaceKHR value", "1.2-extensions"}, @@ -2983,6 +2979,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parameter", "If oldSwapchain is not VK_NULL_HANDLE, oldSwapchain must be a valid VkSwapchainKHR handle", "1.2-extensions"}, {"VUID-VkSwapchainCreateInfoKHR-oldSwapchain-parent", "If oldSwapchain is a valid handle, it must have been created, allocated, or retrieved from surface", "1.2-extensions"}, {"VUID-VkSwapchainCreateInfoKHR-pNext-02679", "If the pNext chain includes a VkSurfaceFullScreenExclusiveInfoEXT structure with its fullScreenExclusive member set to VK_FULL_SCREEN_EXCLUSIVE_APPLICATION_CONTROLLED_EXT, and surface was created using vkCreateWin32SurfaceKHR, a VkSurfaceFullScreenExclusiveWin32InfoEXT structure must be included in the pNext chain", "1.2-extensions"}, + {"VUID-VkSwapchainCreateInfoKHR-pNext-04099", "If a VkImageFormatListCreateInfo structure was included in the pNext chain and VkImageFormatListCreateInfo::viewFormatCount is not zero then all of the formats in VkImageFormatListCreateInfo::pViewFormats must be compatible with the format as described in the compatibility table", "1.2-extensions"}, {"VUID-VkSwapchainCreateInfoKHR-pNext-pNext", "Each pNext member of any structure (including this one) in the pNext chain must be either NULL or a pointer to a valid instance of VkDeviceGroupSwapchainCreateInfoKHR, VkImageFormatListCreateInfo, VkSurfaceFullScreenExclusiveInfoEXT, VkSurfaceFullScreenExclusiveWin32InfoEXT, VkSwapchainCounterCreateInfoEXT, or VkSwapchainDisplayNativeHdrCreateInfoAMD", "1.2-extensions"}, {"VUID-VkSwapchainCreateInfoKHR-physicalDeviceCount-01429", "If the logical device was created with VkDeviceGroupDeviceCreateInfo::physicalDeviceCount equal to 1, flags must not contain VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR", "1.2-extensions"}, {"VUID-VkSwapchainCreateInfoKHR-preTransform-01279", "preTransform must be one of the bits present in the supportedTransforms member of the VkSurfaceCapabilitiesKHR structure returned by vkGetPhysicalDeviceSurfaceCapabilitiesKHR for the surface", "1.2-extensions"}, @@ -3185,6 +3182,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkAllocateDescriptorSets-pDescriptorSets-parameter", "pDescriptorSets must be a valid pointer to an array of pAllocateInfo->descriptorSetCount VkDescriptorSet handles", "1.2-extensions"}, {"VUID-vkAllocateMemory-device-parameter", "device must be a valid VkDevice handle", "1.2-extensions"}, {"VUID-vkAllocateMemory-deviceCoherentMemory-02790", "If the deviceCoherentMemory feature is not enabled, pAllocateInfo->memoryTypeIndex must not identify a memory type supporting VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD", "1.2-extensions"}, + {"VUID-vkAllocateMemory-maxMemoryAllocationCount-04101", "There must be less than VkPhysicalDeviceLimits::maxMemoryAllocationCount device memory allocations currently allocated on the device.", "1.2-extensions"}, {"VUID-vkAllocateMemory-pAllocateInfo-01713", "pAllocateInfo->allocationSize must be less than or equal to VkPhysicalDeviceMemoryProperties::memoryHeaps[memindex].size where memindex = VkPhysicalDeviceMemoryProperties::memoryTypes[pAllocateInfo->memoryTypeIndex].heapIndex as returned by vkGetPhysicalDeviceMemoryProperties for the VkPhysicalDevice that device was created from", "1.2-extensions"}, {"VUID-vkAllocateMemory-pAllocateInfo-01714", "pAllocateInfo->memoryTypeIndex must be less than VkPhysicalDeviceMemoryProperties::memoryTypeCount as returned by vkGetPhysicalDeviceMemoryProperties for the VkPhysicalDevice that device was created from", "1.2-extensions"}, {"VUID-vkAllocateMemory-pAllocateInfo-parameter", "pAllocateInfo must be a valid pointer to a valid VkMemoryAllocateInfo structure", "1.2-extensions"}, @@ -3340,6 +3338,10 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdBeginRenderPass-initialLayout-00900", "If any of the initialLayout members of the VkAttachmentDescription structures specified when creating the render pass specified in the renderPass member of pRenderPassBegin is not VK_IMAGE_LAYOUT_UNDEFINED, then each such initialLayout must be equal to the current layout of the corresponding attachment image subresource of the framebuffer specified in the framebuffer member of pRenderPassBegin", "1.2-extensions"}, {"VUID-vkCmdBeginRenderPass-initialLayout-01758", "If any of the initialLayout or finalLayout member of the VkAttachmentDescription structures or the layout member of the VkAttachmentReference structures specified when creating the render pass specified in the renderPass member of pRenderPassBegin is VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL, or VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL then the corresponding attachment image view of the framebuffer specified in the framebuffer member of pRenderPassBegin must have been created with a usage value including VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT", "1.2-extensions"}, {"VUID-vkCmdBeginRenderPass-initialLayout-02842", "If any of the initialLayout or finalLayout member of the VkAttachmentDescription structures or the layout member of the VkAttachmentReference structures specified when creating the render pass specified in the renderPass member of pRenderPassBegin is VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL, or VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL, VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL, or VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL then the corresponding attachment image view of the framebuffer specified in the framebuffer member of pRenderPassBegin must have been created with a usage value including VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT", "1.2-extensions"}, + {"VUID-vkCmdBeginRenderPass-pAttachments-04102", "Each element of the pAttachments of framebuffer that is referenced by any element of the pInputAttachments of any element of pSubpasses of renderPass must have image view format features containing at least VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT or VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT", "1.2-extensions"}, + {"VUID-vkCmdBeginRenderPass-pAttachments-04103", "Each element of the pAttachments of framebuffer that is referenced by any element of the pColorAttachments of any element of pSubpasses of renderPass must have image view format features containing VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", "1.2-extensions"}, + {"VUID-vkCmdBeginRenderPass-pAttachments-04104", "Each element of the pAttachments of framebuffer that is referenced by any element of the pResolveAttachments of any element of pSubpasses of renderPass must have image view format features containing VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", "1.2-extensions"}, + {"VUID-vkCmdBeginRenderPass-pAttachments-04105", "Each element of the pAttachments of framebuffer that is referenced by any element of the pDepthStencilAttachment of any element of pSubpasses of renderPass must have image view format features containing VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT", "1.2-extensions"}, {"VUID-vkCmdBeginRenderPass-pRenderPassBegin-parameter", "pRenderPassBegin must be a valid pointer to a valid VkRenderPassBeginInfo structure", "1.2-extensions"}, {"VUID-vkCmdBeginRenderPass-renderpass", "This command must only be called outside of a render pass instance", "1.2-extensions"}, {"VUID-vkCmdBeginRenderPass-srcStageMask-00901", "The srcStageMask and dstStageMask members of any element of the pDependencies member of VkRenderPassCreateInfo used to create renderPass must be supported by the capabilities of the queue family identified by the queueFamilyIndex member of the VkCommandPoolCreateInfo used to create the command pool which commandBuffer was allocated from", "1.2-extensions"}, @@ -3357,6 +3359,10 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdBeginRenderPass2-initialLayout-03098", "If any of the initialLayout or finalLayout member of the VkAttachmentDescription structures or the layout member of the VkAttachmentReference structures specified when creating the render pass specified in the renderPass member of pRenderPassBegin is VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL then the corresponding attachment image view of the framebuffer specified in the framebuffer member of pRenderPassBegin must have been created with a usage value including VK_IMAGE_USAGE_TRANSFER_SRC_BIT", "1.2-extensions"}, {"VUID-vkCmdBeginRenderPass2-initialLayout-03099", "If any of the initialLayout or finalLayout member of the VkAttachmentDescription structures or the layout member of the VkAttachmentReference structures specified when creating the render pass specified in the renderPass member of pRenderPassBegin is VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL then the corresponding attachment image view of the framebuffer specified in the framebuffer member of pRenderPassBegin must have been created with a usage value including VK_IMAGE_USAGE_TRANSFER_DST_BIT", "1.2-extensions"}, {"VUID-vkCmdBeginRenderPass2-initialLayout-03100", "If any of the initialLayout members of the VkAttachmentDescription structures specified when creating the render pass specified in the renderPass member of pRenderPassBegin is not VK_IMAGE_LAYOUT_UNDEFINED, then each such initialLayout must be equal to the current layout of the corresponding attachment image subresource of the framebuffer specified in the framebuffer member of pRenderPassBegin", "1.2-extensions"}, + {"VUID-vkCmdBeginRenderPass2-pAttachments-04106", "Each element of the pAttachments of framebuffer that is referenced by any element of the pInputAttachments of any element of pSubpasses of renderPass must have image view format features contain at least VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT or VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT", "1.2-extensions"}, + {"VUID-vkCmdBeginRenderPass2-pAttachments-04107", "Each element of the pAttachments of framebuffer that is referenced by any element of the pColorAttachments of any element of pSubpasses of renderPass must have image view format features contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", "1.2-extensions"}, + {"VUID-vkCmdBeginRenderPass2-pAttachments-04108", "Each element of the pAttachments of framebuffer that is referenced by any element of the pResolveAttachments of any element of pSubpasses of renderPass must have image view format features contain VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT", "1.2-extensions"}, + {"VUID-vkCmdBeginRenderPass2-pAttachments-04109", "Each element of the pAttachments of framebuffer that is referenced by any element of the pDepthStencilAttachment of any element of pSubpasses of renderPass must have image view format features contain VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT", "1.2-extensions"}, {"VUID-vkCmdBeginRenderPass2-pRenderPassBegin-parameter", "pRenderPassBegin must be a valid pointer to a valid VkRenderPassBeginInfo structure", "1.2-extensions"}, {"VUID-vkCmdBeginRenderPass2-pSubpassBeginInfo-parameter", "pSubpassBeginInfo must be a valid pointer to a valid VkSubpassBeginInfo structure", "1.2-extensions"}, {"VUID-vkCmdBeginRenderPass2-renderpass", "This command must only be called outside of a render pass instance", "1.2-extensions"}, @@ -3696,6 +3702,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdCopyBufferToImage-commandBuffer-01828", "If commandBuffer is an unprotected command buffer, then srcBuffer must not be a protected buffer", "1.2-extensions"}, {"VUID-vkCmdCopyBufferToImage-commandBuffer-01829", "If commandBuffer is an unprotected command buffer, then dstImage must not be a protected image", "1.2-extensions"}, {"VUID-vkCmdCopyBufferToImage-commandBuffer-01830", "If commandBuffer is a protected command buffer, then dstImage must not be an unprotected image", "1.2-extensions"}, + {"VUID-vkCmdCopyBufferToImage-commandBuffer-04052", "If the queue family used to create the VkCommandPool which commandBuffer was allocated from does not support VK_QUEUE_GRAPHICS_BIT or VK_QUEUE_COMPUTE_BIT, the bufferOffset member of any element of pRegions must be a multiple of 4", "1.2-extensions"}, {"VUID-vkCmdCopyBufferToImage-commandBuffer-cmdpool", "The VkCommandPool that commandBuffer was allocated from must support transfer, graphics, or compute operations", "1.2-extensions"}, {"VUID-vkCmdCopyBufferToImage-commandBuffer-parameter", "commandBuffer must be a valid VkCommandBuffer handle", "1.2-extensions"}, {"VUID-vkCmdCopyBufferToImage-commandBuffer-recording", "commandBuffer must be in the recording state", "1.2-extensions"}, @@ -3705,6 +3712,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdCopyBufferToImage-dstImage-00179", "dstImage must have a sample count equal to VK_SAMPLE_COUNT_1_BIT", "1.2-extensions"}, {"VUID-vkCmdCopyBufferToImage-dstImage-01997", "The format features of dstImage must contain VK_FORMAT_FEATURE_TRANSFER_DST_BIT", "1.2-extensions"}, {"VUID-vkCmdCopyBufferToImage-dstImage-02543", "dstImage must not have been created with flags containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT", "1.2-extensions"}, + {"VUID-vkCmdCopyBufferToImage-dstImage-04053", "If dstImage has a depth/stencil format, the bufferOffset member of any element of pRegions must be a multiple of 4", "1.2-extensions"}, {"VUID-vkCmdCopyBufferToImage-dstImage-parameter", "dstImage must be a valid VkImage handle", "1.2-extensions"}, {"VUID-vkCmdCopyBufferToImage-dstImageLayout-00180", "dstImageLayout must specify the layout of the image subresources of dstImage specified in pRegions at the time this command is executed on a VkDevice", "1.2-extensions"}, {"VUID-vkCmdCopyBufferToImage-dstImageLayout-00181", "dstImageLayout must be VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL", "1.2"}, @@ -3765,6 +3773,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdCopyImageToBuffer-commandBuffer-01831", "If commandBuffer is an unprotected command buffer, then srcImage must not be a protected image", "1.2-extensions"}, {"VUID-vkCmdCopyImageToBuffer-commandBuffer-01832", "If commandBuffer is an unprotected command buffer, then dstBuffer must not be a protected buffer", "1.2-extensions"}, {"VUID-vkCmdCopyImageToBuffer-commandBuffer-01833", "If commandBuffer is a protected command buffer, then dstBuffer must not be an unprotected buffer", "1.2-extensions"}, + {"VUID-vkCmdCopyImageToBuffer-commandBuffer-04054", "If the queue family used to create the VkCommandPool which commandBuffer was allocated from does not support VK_QUEUE_GRAPHICS_BIT or VK_QUEUE_COMPUTE_BIT, the bufferOffset member of any element of pRegions must be a multiple of 4", "1.2-extensions"}, {"VUID-vkCmdCopyImageToBuffer-commandBuffer-cmdpool", "The VkCommandPool that commandBuffer was allocated from must support transfer, graphics, or compute operations", "1.2-extensions"}, {"VUID-vkCmdCopyImageToBuffer-commandBuffer-parameter", "commandBuffer must be a valid VkCommandBuffer handle", "1.2-extensions"}, {"VUID-vkCmdCopyImageToBuffer-commandBuffer-recording", "commandBuffer must be in the recording state", "1.2-extensions"}, @@ -3786,6 +3795,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdCopyImageToBuffer-srcImage-00188", "srcImage must have a sample count equal to VK_SAMPLE_COUNT_1_BIT", "1.2-extensions"}, {"VUID-vkCmdCopyImageToBuffer-srcImage-01998", "The format features of srcImage must contain VK_FORMAT_FEATURE_TRANSFER_SRC_BIT", "1.2-extensions"}, {"VUID-vkCmdCopyImageToBuffer-srcImage-02544", "srcImage must not have been created with flags containing VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT", "1.2-extensions"}, + {"VUID-vkCmdCopyImageToBuffer-srcImage-04055", "If srcImage has a depth/stencil format, the bufferOffset member of any element of pRegions must be a multiple of 4", "1.2-extensions"}, {"VUID-vkCmdCopyImageToBuffer-srcImage-parameter", "srcImage must be a valid VkImage handle", "1.2-extensions"}, {"VUID-vkCmdCopyImageToBuffer-srcImageLayout-00189", "srcImageLayout must specify the layout of the image subresources of srcImage specified in pRegions at the time this command is executed on a VkDevice", "1.2-extensions"}, {"VUID-vkCmdCopyImageToBuffer-srcImageLayout-00190", "srcImageLayout must be VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL or VK_IMAGE_LAYOUT_GENERAL", "1.2"}, @@ -3986,7 +3996,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdDrawIndexed-filterCubic-02694", "Any VkImageView being sampled with VK_FILTER_CUBIC_EXT as a result of this command must have a VkImageViewType and format that supports cubic filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubic returned by vkGetPhysicalDeviceImageFormatProperties2", "1.2-extensions"}, {"VUID-vkCmdDrawIndexed-filterCubicMinmax-02695", "Any VkImageView being sampled with VK_FILTER_CUBIC_EXT with a reduction mode of either VK_SAMPLER_REDUCTION_MODE_MIN or VK_SAMPLER_REDUCTION_MODE_MAX as a result of this command must have a VkImageViewType and format that supports cubic filtering together with minmax filtering, as specified by VkFilterCubicImageViewImageFormatPropertiesEXT::filterCubicMinmax returned by vkGetPhysicalDeviceImageFormatProperties2", "1.2-extensions"}, {"VUID-vkCmdDrawIndexed-flags-02696", "Any VkImage created with a VkImageCreateInfo::flags containing VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV sampled as a result of this command must only be sampled using a VkSamplerAddressMode of VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE", "1.2-extensions"}, - {"VUID-vkCmdDrawIndexed-indexSize-00463", "(indexSize * (firstIndex + indexCount) + offset) must be less than or equal to the size of the bound index buffer, with indexSize being based on the type specified by indexType, where the index buffer, indexType, and offset are specified via vkCmdBindIndexBuffer", "1.2-extensions"}, + {"VUID-vkCmdDrawIndexed-indexSize-00463", "(indexSize {times} (firstIndex + indexCount) + offset) must be less than or equal to the size of the bound index buffer, with indexSize being based on the type specified by indexType, where the index buffer, indexType, and offset are specified via vkCmdBindIndexBuffer", "1.2-extensions"}, {"VUID-vkCmdDrawIndexed-maxMultiviewInstanceIndex-02688", "If the draw is recorded in a render pass instance with multiview enabled, the maximum instance index must be less than or equal to VkPhysicalDeviceMultiviewProperties::maxMultiviewInstanceIndex", "1.2-extensions"}, {"VUID-vkCmdDrawIndexed-renderPass-02684", "The current render pass must be compatible with the renderPass member of the VkGraphicsPipelineCreateInfo structure specified when creating the VkPipeline bound to VK_PIPELINE_BIND_POINT_GRAPHICS", "1.2-extensions"}, {"VUID-vkCmdDrawIndexed-renderpass", "This command must only be called inside of a render pass instance", "1.2-extensions"}, @@ -4497,39 +4507,45 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdNextSubpass2-pSubpassBeginInfo-parameter", "pSubpassBeginInfo must be a valid pointer to a valid VkSubpassBeginInfo structure", "1.2-extensions"}, {"VUID-vkCmdNextSubpass2-pSubpassEndInfo-parameter", "pSubpassEndInfo must be a valid pointer to a valid VkSubpassEndInfo structure", "1.2-extensions"}, {"VUID-vkCmdNextSubpass2-renderpass", "This command must only be called inside of a render pass instance", "1.2-extensions"}, - {"VUID-vkCmdPipelineBarrier-bufferMemoryBarrierCount-01178", "If vkCmdPipelineBarrier is called within a render pass instance, bufferMemoryBarrierCount must be 0", "1.2-extensions"}, + {"VUID-vkCmdPipelineBarrier-bufferMemoryBarrierCount-01178", "If fname:vkCmdPipelineBarrier is called within a render pass instance, it must not include any buffer memory barriers", "1.2-extensions"}, {"VUID-vkCmdPipelineBarrier-commandBuffer-cmdpool", "The VkCommandPool that commandBuffer was allocated from must support transfer, graphics, or compute operations", "1.2-extensions"}, {"VUID-vkCmdPipelineBarrier-commandBuffer-parameter", "commandBuffer must be a valid VkCommandBuffer handle", "1.2-extensions"}, {"VUID-vkCmdPipelineBarrier-commandBuffer-recording", "commandBuffer must be in the recording state", "1.2-extensions"}, - {"VUID-vkCmdPipelineBarrier-dependencyFlags-01186", "If vkCmdPipelineBarrier is called outside of a render pass instance, dependencyFlags must not include VK_DEPENDENCY_VIEW_LOCAL_BIT", "1.2-extensions"}, + {"VUID-vkCmdPipelineBarrier-dependencyFlags-01186", "If fname:vkCmdPipelineBarrier is called outside of a render pass instance, VK_DEPENDENCY_VIEW_LOCAL_BIT must not be included in the dependency flags", "1.2-extensions"}, {"VUID-vkCmdPipelineBarrier-dependencyFlags-parameter", "dependencyFlags must be a valid combination of VkDependencyFlagBits values", "1.2-extensions"}, {"VUID-vkCmdPipelineBarrier-dstAccessMask-02816", "The dstAccessMask member of each element of pMemoryBarriers must only include access flags that are supported by one or more of the pipeline stages in dstStageMask, as specified in the table of supported access types", "1.2-extensions"}, - {"VUID-vkCmdPipelineBarrier-dstStageMask-01169", "If the geometry shaders feature is not enabled, dstStageMask must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT", "1.2-extensions"}, - {"VUID-vkCmdPipelineBarrier-dstStageMask-01171", "If the tessellation shaders feature is not enabled, dstStageMask must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT", "1.2-extensions"}, - {"VUID-vkCmdPipelineBarrier-dstStageMask-02117", "If the mesh shaders feature is not enabled, dstStageMask must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV", "1.2-extensions"}, - {"VUID-vkCmdPipelineBarrier-dstStageMask-02118", "If the task shaders feature is not enabled, dstStageMask must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV", "1.2-extensions"}, + {"VUID-vkCmdPipelineBarrier-dstStageMask-04090", "If the geometry shaders feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT", "1.2-extensions"}, + {"VUID-vkCmdPipelineBarrier-dstStageMask-04091", "If the tessellation shaders feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT", "1.2-extensions"}, + {"VUID-vkCmdPipelineBarrier-dstStageMask-04092", "If the conditional rendering feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT", "1.2-extensions"}, + {"VUID-vkCmdPipelineBarrier-dstStageMask-04093", "If the fragment density map feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT", "1.2-extensions"}, + {"VUID-vkCmdPipelineBarrier-dstStageMask-04094", "If the transform feedback feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT", "1.2-extensions"}, + {"VUID-vkCmdPipelineBarrier-dstStageMask-04095", "If the mesh shaders feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV", "1.2-extensions"}, + {"VUID-vkCmdPipelineBarrier-dstStageMask-04096", "If the task shaders feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV", "1.2-extensions"}, + {"VUID-vkCmdPipelineBarrier-dstStageMask-04097", "If the shading rate image feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV", "1.2-extensions"}, + {"VUID-vkCmdPipelineBarrier-dstStageMask-4098", "Any pipeline stage included in pname:dstStageMask must be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the VkCommandPoolCreateInfo structure that was used to create the VkCommandPool that commandBuffer was allocated from, as specified in the table of supported pipeline stages", "1.2-extensions"}, {"VUID-vkCmdPipelineBarrier-dstStageMask-parameter", "dstStageMask must be a valid combination of VkPipelineStageFlagBits values", "1.2-extensions"}, {"VUID-vkCmdPipelineBarrier-dstStageMask-requiredbitmask", "dstStageMask must not be 0", "1.2-extensions"}, - {"VUID-vkCmdPipelineBarrier-image-02635", "If vkCmdPipelineBarrier is called within a render pass instance, the image member of any element of pImageMemoryBarriers must be equal to one of the elements of pAttachments that the current framebuffer was created with, that is also referred to by one of the elements of the pColorAttachments, pResolveAttachments or pDepthStencilAttachment members of the VkSubpassDescription instance or by the pDepthStencilResolveAttachment member of the VkSubpassDescriptionDepthStencilResolve structure that the current subpass was created with", "1.2-extensions"}, - {"VUID-vkCmdPipelineBarrier-image-02637", "If vkCmdPipelineBarrier is called within a render pass instance, the image member of any element of pImageMemoryBarriers must be equal to one of the elements of pAttachments that the current framebuffer was created with, that is also referred to by one of the elements of the pColorAttachments, pResolveAttachments or pDepthStencilAttachment members of the VkSubpassDescription instance that the current subpass was created with", "1.1"}, - {"VUID-vkCmdPipelineBarrier-oldLayout-01181", "If vkCmdPipelineBarrier is called within a render pass instance, the oldLayout and newLayout members of an element of pImageMemoryBarriers must be equal", "1.2-extensions"}, - {"VUID-vkCmdPipelineBarrier-oldLayout-02636", "If vkCmdPipelineBarrier is called within a render pass instance, the oldLayout and newLayout members of any element of pImageMemoryBarriers must be equal to the layout member of an element of the pColorAttachments, pResolveAttachments or pDepthStencilAttachment members of the VkSubpassDescription instance or by the pDepthStencilResolveAttachment member of the VkSubpassDescriptionDepthStencilResolve structure that the current subpass was created with, that refers to the same image", "1.2-extensions"}, - {"VUID-vkCmdPipelineBarrier-oldLayout-02638", "If vkCmdPipelineBarrier is called within a render pass instance, the oldLayout and newLayout members of any element of pImageMemoryBarriers must be equal to the layout member of an element of the pColorAttachments, pResolveAttachments or pDepthStencilAttachment members of the VkSubpassDescription instance that the current subpass was created with, that refers to the same image", "1.1"}, + {"VUID-vkCmdPipelineBarrier-image-04073", "If fname:vkCmdPipelineBarrier is called within a render pass instance, the image member of any image memory barrier included in this command must be an attachment used in the current subpass both as an input attachment, and as either a color or depth/stencil attachment", "1.2-extensions"}, + {"VUID-vkCmdPipelineBarrier-oldLayout-01181", "If fname:vkCmdPipelineBarrier is called within a render pass instance, the oldLayout and newLayout members of any image memory barrier included in this command must be equal", "1.2-extensions"}, {"VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-02817", "For any element of pBufferMemoryBarriers, if its srcQueueFamilyIndex and dstQueueFamilyIndex members are equal, or if its srcQueueFamilyIndex is the queue family index that was used to create the command pool that commandBuffer was allocated from, then its srcAccessMask member must only contain access flags that are supported by one or more of the pipeline stages in srcStageMask, as specified in the table of supported access types", "1.2-extensions"}, {"VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-02818", "For any element of pBufferMemoryBarriers, if its srcQueueFamilyIndex and dstQueueFamilyIndex members are equal, or if its dstQueueFamilyIndex is the queue family index that was used to create the command pool that commandBuffer was allocated from, then its dstAccessMask member must only contain access flags that are supported by one or more of the pipeline stages in dstStageMask, as specified in the table of supported access types", "1.2-extensions"}, {"VUID-vkCmdPipelineBarrier-pBufferMemoryBarriers-parameter", "If bufferMemoryBarrierCount is not 0, pBufferMemoryBarriers must be a valid pointer to an array of bufferMemoryBarrierCount valid VkBufferMemoryBarrier structures", "1.2-extensions"}, - {"VUID-vkCmdPipelineBarrier-pDependencies-02285", "If vkCmdPipelineBarrier is called within a render pass instance, the render pass must have been created with at least one VkSubpassDependency instance in VkRenderPassCreateInfo::pDependencies that expresses a dependency from the current subpass to itself, and for which srcStageMask contains a subset of the bit values in VkSubpassDependency::srcStageMask, dstStageMask contains a subset of the bit values in VkSubpassDependency::dstStageMask, dependencyFlags is equal to VkSubpassDependency::dependencyFlags, srcAccessMask member of each element of pMemoryBarriers and pImageMemoryBarriers contains a subset of the bit values in VkSubpassDependency::srcAccessMask, and dstAccessMask member of each element of pMemoryBarriers and pImageMemoryBarriers contains a subset of the bit values in VkSubpassDependency::dstAccessMask", "1.2-extensions"}, + {"VUID-vkCmdPipelineBarrier-pDependencies-02285", "If fname:vkCmdPipelineBarrier is called within a render pass instance, the render pass must have been created with at least one VkSubpassDependency instance in VkRenderPassCreateInfo::pDependencies that expresses a dependency from the current subpass to itself, with synchronization scopes and access scopes that are all supersets of the scopes defined in this command", "1.2-extensions"}, {"VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-02819", "For any element of pImageMemoryBarriers, if its srcQueueFamilyIndex and dstQueueFamilyIndex members are equal, or if its srcQueueFamilyIndex is the queue family index that was used to create the command pool that commandBuffer was allocated from, then its srcAccessMask member must only contain access flags that are supported by one or more of the pipeline stages in srcStageMask, as specified in the table of supported access types", "1.2-extensions"}, {"VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-02820", "For any element of pImageMemoryBarriers, if its srcQueueFamilyIndex and dstQueueFamilyIndex members are equal, or if its dstQueueFamilyIndex is the queue family index that was used to create the command pool that commandBuffer was allocated from, then its dstAccessMask member must only contain access flags that are supported by one or more of the pipeline stages in dstStageMask, as specified in the table of supported access types", "1.2-extensions"}, {"VUID-vkCmdPipelineBarrier-pImageMemoryBarriers-parameter", "If imageMemoryBarrierCount is not 0, pImageMemoryBarriers must be a valid pointer to an array of imageMemoryBarrierCount valid VkImageMemoryBarrier structures", "1.2-extensions"}, {"VUID-vkCmdPipelineBarrier-pMemoryBarriers-parameter", "If memoryBarrierCount is not 0, pMemoryBarriers must be a valid pointer to an array of memoryBarrierCount valid VkMemoryBarrier structures", "1.2-extensions"}, {"VUID-vkCmdPipelineBarrier-srcAccessMask-02815", "The srcAccessMask member of each element of pMemoryBarriers must only include access flags that are supported by one or more of the pipeline stages in srcStageMask, as specified in the table of supported access types", "1.2-extensions"}, - {"VUID-vkCmdPipelineBarrier-srcQueueFamilyIndex-01182", "If vkCmdPipelineBarrier is called within a render pass instance, the srcQueueFamilyIndex and dstQueueFamilyIndex members of any element of pImageMemoryBarriers must be VK_QUEUE_FAMILY_IGNORED", "1.2-extensions"}, - {"VUID-vkCmdPipelineBarrier-srcStageMask-01168", "If the geometry shaders feature is not enabled, srcStageMask must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT", "1.2-extensions"}, - {"VUID-vkCmdPipelineBarrier-srcStageMask-01170", "If the tessellation shaders feature is not enabled, srcStageMask must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT", "1.2-extensions"}, - {"VUID-vkCmdPipelineBarrier-srcStageMask-01183", "Any pipeline stage included in srcStageMask or dstStageMask must be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the VkCommandPoolCreateInfo structure that was used to create the VkCommandPool that commandBuffer was allocated from, as specified in the table of supported pipeline stages", "1.2-extensions"}, - {"VUID-vkCmdPipelineBarrier-srcStageMask-02115", "If the mesh shaders feature is not enabled, srcStageMask must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV", "1.2-extensions"}, - {"VUID-vkCmdPipelineBarrier-srcStageMask-02116", "If the task shaders feature is not enabled, srcStageMask must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV", "1.2-extensions"}, + {"VUID-vkCmdPipelineBarrier-srcQueueFamilyIndex-01182", "If fname:vkCmdPipelineBarrier is called within a render pass instance, the srcQueueFamilyIndex and dstQueueFamilyIndex members of any image memory barrier included in this command must be equal", "1.2-extensions"}, + {"VUID-vkCmdPipelineBarrier-srcStageMask-04090", "If the geometry shaders feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT", "1.2-extensions"}, + {"VUID-vkCmdPipelineBarrier-srcStageMask-04091", "If the tessellation shaders feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT", "1.2-extensions"}, + {"VUID-vkCmdPipelineBarrier-srcStageMask-04092", "If the conditional rendering feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT", "1.2-extensions"}, + {"VUID-vkCmdPipelineBarrier-srcStageMask-04093", "If the fragment density map feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT", "1.2-extensions"}, + {"VUID-vkCmdPipelineBarrier-srcStageMask-04094", "If the transform feedback feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT", "1.2-extensions"}, + {"VUID-vkCmdPipelineBarrier-srcStageMask-04095", "If the mesh shaders feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV", "1.2-extensions"}, + {"VUID-vkCmdPipelineBarrier-srcStageMask-04096", "If the task shaders feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV", "1.2-extensions"}, + {"VUID-vkCmdPipelineBarrier-srcStageMask-04097", "If the shading rate image feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV", "1.2-extensions"}, + {"VUID-vkCmdPipelineBarrier-srcStageMask-4098", "Any pipeline stage included in pname:srcStageMask must be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the VkCommandPoolCreateInfo structure that was used to create the VkCommandPool that commandBuffer was allocated from, as specified in the table of supported pipeline stages", "1.2-extensions"}, {"VUID-vkCmdPipelineBarrier-srcStageMask-parameter", "srcStageMask must be a valid combination of VkPipelineStageFlagBits values", "1.2-extensions"}, {"VUID-vkCmdPipelineBarrier-srcStageMask-requiredbitmask", "srcStageMask must not be 0", "1.2-extensions"}, {"VUID-vkCmdPreprocessGeneratedCommandsNV-commandBuffer-02974", "commandBuffer must not be a protected command buffer", "1.2-extensions"}, @@ -4583,10 +4599,15 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdResetEvent-event-parameter", "event must be a valid VkEvent handle", "1.2-extensions"}, {"VUID-vkCmdResetEvent-renderpass", "This command must only be called outside of a render pass instance", "1.2-extensions"}, {"VUID-vkCmdResetEvent-stageMask-01153", "stageMask must not include VK_PIPELINE_STAGE_HOST_BIT", "1.2-extensions"}, - {"VUID-vkCmdResetEvent-stageMask-01154", "If the geometry shaders feature is not enabled, stageMask must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT", "1.2-extensions"}, - {"VUID-vkCmdResetEvent-stageMask-01155", "If the tessellation shaders feature is not enabled, stageMask must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT", "1.2-extensions"}, - {"VUID-vkCmdResetEvent-stageMask-02109", "If the mesh shaders feature is not enabled, stageMask must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV", "1.2-extensions"}, - {"VUID-vkCmdResetEvent-stageMask-02110", "If the task shaders feature is not enabled, stageMask must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV", "1.2-extensions"}, + {"VUID-vkCmdResetEvent-stageMask-04090", "If the geometry shaders feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT", "1.2-extensions"}, + {"VUID-vkCmdResetEvent-stageMask-04091", "If the tessellation shaders feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT", "1.2-extensions"}, + {"VUID-vkCmdResetEvent-stageMask-04092", "If the conditional rendering feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT", "1.2-extensions"}, + {"VUID-vkCmdResetEvent-stageMask-04093", "If the fragment density map feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT", "1.2-extensions"}, + {"VUID-vkCmdResetEvent-stageMask-04094", "If the transform feedback feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT", "1.2-extensions"}, + {"VUID-vkCmdResetEvent-stageMask-04095", "If the mesh shaders feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV", "1.2-extensions"}, + {"VUID-vkCmdResetEvent-stageMask-04096", "If the task shaders feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV", "1.2-extensions"}, + {"VUID-vkCmdResetEvent-stageMask-04097", "If the shading rate image feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV", "1.2-extensions"}, + {"VUID-vkCmdResetEvent-stageMask-4098", "Any pipeline stage included in pname:stageMask must be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the VkCommandPoolCreateInfo structure that was used to create the VkCommandPool that commandBuffer was allocated from, as specified in the table of supported pipeline stages", "1.2-extensions"}, {"VUID-vkCmdResetEvent-stageMask-parameter", "stageMask must be a valid combination of VkPipelineStageFlagBits values", "1.2-extensions"}, {"VUID-vkCmdResetEvent-stageMask-requiredbitmask", "stageMask must not be 0", "1.2-extensions"}, {"VUID-vkCmdResetQueryPool-None-02841", "All queries used by the command must not be active", "1.2-extensions"}, @@ -4617,8 +4638,6 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdResolveImage-dstImageLayout-parameter", "dstImageLayout must be a valid VkImageLayout value", "1.2-extensions"}, {"VUID-vkCmdResolveImage-dstSubresource-01710", "The dstSubresource.mipLevel member of each element of pRegions must be less than the mipLevels specified in VkImageCreateInfo when dstImage was created", "1.2-extensions"}, {"VUID-vkCmdResolveImage-dstSubresource-01712", "The dstSubresource.baseArrayLayer + dstSubresource.layerCount of each element of pRegions must be less than or equal to the arrayLayers specified in VkImageCreateInfo when dstImage was created", "1.2-extensions"}, - {"VUID-vkCmdResolveImage-pRegions-00253", "The source region specified by each element of pRegions must be a region that is contained within srcImage", "1.2-extensions"}, - {"VUID-vkCmdResolveImage-pRegions-00254", "The destination region specified by each element of pRegions must be a region that is contained within dstImage", "1.2-extensions"}, {"VUID-vkCmdResolveImage-pRegions-00255", "The union of all source regions, and the union of all destination regions, specified by the elements of pRegions, must not overlap in memory", "1.2-extensions"}, {"VUID-vkCmdResolveImage-pRegions-parameter", "pRegions must be a valid pointer to an array of regionCount valid VkImageResolve structures", "1.2-extensions"}, {"VUID-vkCmdResolveImage-regionCount-arraylength", "regionCount must be greater than 0", "1.2-extensions"}, @@ -4681,10 +4700,15 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdSetEvent-event-parameter", "event must be a valid VkEvent handle", "1.2-extensions"}, {"VUID-vkCmdSetEvent-renderpass", "This command must only be called outside of a render pass instance", "1.2-extensions"}, {"VUID-vkCmdSetEvent-stageMask-01149", "stageMask must not include VK_PIPELINE_STAGE_HOST_BIT", "1.2-extensions"}, - {"VUID-vkCmdSetEvent-stageMask-01150", "If the geometry shaders feature is not enabled, stageMask must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT", "1.2-extensions"}, - {"VUID-vkCmdSetEvent-stageMask-01151", "If the tessellation shaders feature is not enabled, stageMask must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT", "1.2-extensions"}, - {"VUID-vkCmdSetEvent-stageMask-02107", "If the mesh shaders feature is not enabled, stageMask must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV", "1.2-extensions"}, - {"VUID-vkCmdSetEvent-stageMask-02108", "If the task shaders feature is not enabled, stageMask must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV", "1.2-extensions"}, + {"VUID-vkCmdSetEvent-stageMask-04090", "If the geometry shaders feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT", "1.2-extensions"}, + {"VUID-vkCmdSetEvent-stageMask-04091", "If the tessellation shaders feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT", "1.2-extensions"}, + {"VUID-vkCmdSetEvent-stageMask-04092", "If the conditional rendering feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT", "1.2-extensions"}, + {"VUID-vkCmdSetEvent-stageMask-04093", "If the fragment density map feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT", "1.2-extensions"}, + {"VUID-vkCmdSetEvent-stageMask-04094", "If the transform feedback feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT", "1.2-extensions"}, + {"VUID-vkCmdSetEvent-stageMask-04095", "If the mesh shaders feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV", "1.2-extensions"}, + {"VUID-vkCmdSetEvent-stageMask-04096", "If the task shaders feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV", "1.2-extensions"}, + {"VUID-vkCmdSetEvent-stageMask-04097", "If the shading rate image feature is not enabled, pname:stageMask must not contain VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV", "1.2-extensions"}, + {"VUID-vkCmdSetEvent-stageMask-4098", "Any pipeline stage included in pname:stageMask must be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the VkCommandPoolCreateInfo structure that was used to create the VkCommandPool that commandBuffer was allocated from, as specified in the table of supported pipeline stages", "1.2-extensions"}, {"VUID-vkCmdSetEvent-stageMask-parameter", "stageMask must be a valid combination of VkPipelineStageFlagBits values", "1.2-extensions"}, {"VUID-vkCmdSetEvent-stageMask-requiredbitmask", "stageMask must not be 0", "1.2-extensions"}, {"VUID-vkCmdSetExclusiveScissorNV-None-02031", "The exclusive scissor feature must be enabled", "1.2-extensions"}, @@ -4986,33 +5010,40 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdWaitEvents-commandBuffer-parameter", "commandBuffer must be a valid VkCommandBuffer handle", "1.2-extensions"}, {"VUID-vkCmdWaitEvents-commandBuffer-recording", "commandBuffer must be in the recording state", "1.2-extensions"}, {"VUID-vkCmdWaitEvents-commonparent", "Both of commandBuffer, and the elements of pEvents must have been created, allocated, or retrieved from the same VkDevice", "1.2-extensions"}, - {"VUID-vkCmdWaitEvents-dstAccessMask-02810", "The dstAccessMask member of each element of pMemoryBarriers must only include access flags that are supported by one or more of the pipeline stages in dstStageMask, as specified in the table of supported access types", "1.2-extensions"}, - {"VUID-vkCmdWaitEvents-dstAccessMask-02812", "The dstAccessMask member of each element of pBufferMemoryBarriers must only include access flags that are supported by one or more of the pipeline stages in dstStageMask, as specified in the table of supported access types", "1.2-extensions"}, - {"VUID-vkCmdWaitEvents-dstAccessMask-02814", "The dstAccessMask member of any element of pImageMemoryBarriers must only include access flags that are supported by one or more of the pipeline stages in dstStageMask, as specified in the table of supported access types", "1.2-extensions"}, - {"VUID-vkCmdWaitEvents-dstStageMask-01160", "If the geometry shaders feature is not enabled, dstStageMask must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT", "1.2-extensions"}, - {"VUID-vkCmdWaitEvents-dstStageMask-01162", "If the tessellation shaders feature is not enabled, dstStageMask must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT", "1.2-extensions"}, - {"VUID-vkCmdWaitEvents-dstStageMask-02113", "If the mesh shaders feature is not enabled, dstStageMask must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV", "1.2-extensions"}, - {"VUID-vkCmdWaitEvents-dstStageMask-02114", "If the task shaders feature is not enabled, dstStageMask must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV", "1.2-extensions"}, + {"VUID-vkCmdWaitEvents-dstAccessMask-02816", "The dstAccessMask member of each element of pMemoryBarriers must only include access flags that are supported by one or more of the pipeline stages in dstStageMask, as specified in the table of supported access types", "1.2-extensions"}, + {"VUID-vkCmdWaitEvents-dstStageMask-04090", "If the geometry shaders feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT", "1.2-extensions"}, + {"VUID-vkCmdWaitEvents-dstStageMask-04091", "If the tessellation shaders feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT", "1.2-extensions"}, + {"VUID-vkCmdWaitEvents-dstStageMask-04092", "If the conditional rendering feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT", "1.2-extensions"}, + {"VUID-vkCmdWaitEvents-dstStageMask-04093", "If the fragment density map feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT", "1.2-extensions"}, + {"VUID-vkCmdWaitEvents-dstStageMask-04094", "If the transform feedback feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT", "1.2-extensions"}, + {"VUID-vkCmdWaitEvents-dstStageMask-04095", "If the mesh shaders feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV", "1.2-extensions"}, + {"VUID-vkCmdWaitEvents-dstStageMask-04096", "If the task shaders feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV", "1.2-extensions"}, + {"VUID-vkCmdWaitEvents-dstStageMask-04097", "If the shading rate image feature is not enabled, pname:dstStageMask must not contain VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV", "1.2-extensions"}, + {"VUID-vkCmdWaitEvents-dstStageMask-4098", "Any pipeline stage included in pname:dstStageMask must be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the VkCommandPoolCreateInfo structure that was used to create the VkCommandPool that commandBuffer was allocated from, as specified in the table of supported pipeline stages", "1.2-extensions"}, {"VUID-vkCmdWaitEvents-dstStageMask-parameter", "dstStageMask must be a valid combination of VkPipelineStageFlagBits values", "1.2-extensions"}, {"VUID-vkCmdWaitEvents-dstStageMask-requiredbitmask", "dstStageMask must not be 0", "1.2-extensions"}, {"VUID-vkCmdWaitEvents-eventCount-arraylength", "eventCount must be greater than 0", "1.2-extensions"}, + {"VUID-vkCmdWaitEvents-pBufferMemoryBarriers-02817", "For any element of pBufferMemoryBarriers, if its srcQueueFamilyIndex and dstQueueFamilyIndex members are equal, or if its srcQueueFamilyIndex is the queue family index that was used to create the command pool that commandBuffer was allocated from, then its srcAccessMask member must only contain access flags that are supported by one or more of the pipeline stages in srcStageMask, as specified in the table of supported access types", "1.2-extensions"}, + {"VUID-vkCmdWaitEvents-pBufferMemoryBarriers-02818", "For any element of pBufferMemoryBarriers, if its srcQueueFamilyIndex and dstQueueFamilyIndex members are equal, or if its dstQueueFamilyIndex is the queue family index that was used to create the command pool that commandBuffer was allocated from, then its dstAccessMask member must only contain access flags that are supported by one or more of the pipeline stages in dstStageMask, as specified in the table of supported access types", "1.2-extensions"}, {"VUID-vkCmdWaitEvents-pBufferMemoryBarriers-parameter", "If bufferMemoryBarrierCount is not 0, pBufferMemoryBarriers must be a valid pointer to an array of bufferMemoryBarrierCount valid VkBufferMemoryBarrier structures", "1.2-extensions"}, {"VUID-vkCmdWaitEvents-pEvents-01163", "If pEvents includes one or more events that will be signaled by vkSetEvent after commandBuffer has been submitted to a queue, then vkCmdWaitEvents must not be called inside a render pass instance", "1.2-extensions"}, {"VUID-vkCmdWaitEvents-pEvents-parameter", "pEvents must be a valid pointer to an array of eventCount valid VkEvent handles", "1.2-extensions"}, + {"VUID-vkCmdWaitEvents-pImageMemoryBarriers-02819", "For any element of pImageMemoryBarriers, if its srcQueueFamilyIndex and dstQueueFamilyIndex members are equal, or if its srcQueueFamilyIndex is the queue family index that was used to create the command pool that commandBuffer was allocated from, then its srcAccessMask member must only contain access flags that are supported by one or more of the pipeline stages in srcStageMask, as specified in the table of supported access types", "1.2-extensions"}, + {"VUID-vkCmdWaitEvents-pImageMemoryBarriers-02820", "For any element of pImageMemoryBarriers, if its srcQueueFamilyIndex and dstQueueFamilyIndex members are equal, or if its dstQueueFamilyIndex is the queue family index that was used to create the command pool that commandBuffer was allocated from, then its dstAccessMask member must only contain access flags that are supported by one or more of the pipeline stages in dstStageMask, as specified in the table of supported access types", "1.2-extensions"}, {"VUID-vkCmdWaitEvents-pImageMemoryBarriers-parameter", "If imageMemoryBarrierCount is not 0, pImageMemoryBarriers must be a valid pointer to an array of imageMemoryBarrierCount valid VkImageMemoryBarrier structures", "1.2-extensions"}, - {"VUID-vkCmdWaitEvents-pMemoryBarriers-01165", "Each element of pMemoryBarriers, pBufferMemoryBarriers or pImageMemoryBarriers must not have any access flag included in its srcAccessMask member if that bit is not supported by any of the pipeline stages in srcStageMask, as specified in the table of supported access types", "1.2-extensions"}, - {"VUID-vkCmdWaitEvents-pMemoryBarriers-01166", "Each element of pMemoryBarriers, pBufferMemoryBarriers or pImageMemoryBarriers must not have any access flag included in its dstAccessMask member if that bit is not supported by any of the pipeline stages in dstStageMask, as specified in the table of supported access types", "1.2-extensions"}, {"VUID-vkCmdWaitEvents-pMemoryBarriers-parameter", "If memoryBarrierCount is not 0, pMemoryBarriers must be a valid pointer to an array of memoryBarrierCount valid VkMemoryBarrier structures", "1.2-extensions"}, - {"VUID-vkCmdWaitEvents-srcAccessMask-02809", "The srcAccessMask member of each element of pMemoryBarriers must only include access flags that are supported by one or more of the pipeline stages in srcStageMask, as specified in the table of supported access types", "1.2-extensions"}, - {"VUID-vkCmdWaitEvents-srcAccessMask-02811", "The srcAccessMask member of each element of pBufferMemoryBarriers must only include access flags that are supported by one or more of the pipeline stages in srcStageMask, as specified in the table of supported access types", "1.2-extensions"}, - {"VUID-vkCmdWaitEvents-srcAccessMask-02813", "The srcAccessMask member of each element of pImageMemoryBarriers must only include access flags that are supported by one or more of the pipeline stages in srcStageMask, as specified in the table of supported access types", "1.2-extensions"}, + {"VUID-vkCmdWaitEvents-srcAccessMask-02815", "The srcAccessMask member of each element of pMemoryBarriers must only include access flags that are supported by one or more of the pipeline stages in srcStageMask, as specified in the table of supported access types", "1.2-extensions"}, {"VUID-vkCmdWaitEvents-srcQueueFamilyIndex-02803", "The srcQueueFamilyIndex and dstQueueFamilyIndex members of any element of pBufferMemoryBarriers or pImageMemoryBarriers must be equal", "1.2-extensions"}, {"VUID-vkCmdWaitEvents-srcStageMask-01158", "srcStageMask must be the bitwise OR of the stageMask parameter used in previous calls to vkCmdSetEvent with any of the members of pEvents and VK_PIPELINE_STAGE_HOST_BIT if any of the members of pEvents was set using vkSetEvent", "1.2-extensions"}, - {"VUID-vkCmdWaitEvents-srcStageMask-01159", "If the geometry shaders feature is not enabled, srcStageMask must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT", "1.2-extensions"}, - {"VUID-vkCmdWaitEvents-srcStageMask-01161", "If the tessellation shaders feature is not enabled, srcStageMask must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT", "1.2-extensions"}, - {"VUID-vkCmdWaitEvents-srcStageMask-01164", "Any pipeline stage included in srcStageMask or dstStageMask must be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the VkCommandPoolCreateInfo structure that was used to create the VkCommandPool that commandBuffer was allocated from, as specified in the table of supported pipeline stages", "1.2-extensions"}, - {"VUID-vkCmdWaitEvents-srcStageMask-02111", "If the mesh shaders feature is not enabled, srcStageMask must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV", "1.2-extensions"}, - {"VUID-vkCmdWaitEvents-srcStageMask-02112", "If the task shaders feature is not enabled, srcStageMask must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV", "1.2-extensions"}, + {"VUID-vkCmdWaitEvents-srcStageMask-04090", "If the geometry shaders feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT", "1.2-extensions"}, + {"VUID-vkCmdWaitEvents-srcStageMask-04091", "If the tessellation shaders feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT", "1.2-extensions"}, + {"VUID-vkCmdWaitEvents-srcStageMask-04092", "If the conditional rendering feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT", "1.2-extensions"}, + {"VUID-vkCmdWaitEvents-srcStageMask-04093", "If the fragment density map feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT", "1.2-extensions"}, + {"VUID-vkCmdWaitEvents-srcStageMask-04094", "If the transform feedback feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT", "1.2-extensions"}, + {"VUID-vkCmdWaitEvents-srcStageMask-04095", "If the mesh shaders feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV", "1.2-extensions"}, + {"VUID-vkCmdWaitEvents-srcStageMask-04096", "If the task shaders feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV", "1.2-extensions"}, + {"VUID-vkCmdWaitEvents-srcStageMask-04097", "If the shading rate image feature is not enabled, pname:srcStageMask must not contain VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV", "1.2-extensions"}, + {"VUID-vkCmdWaitEvents-srcStageMask-4098", "Any pipeline stage included in pname:srcStageMask must be supported by the capabilities of the queue family specified by the queueFamilyIndex member of the VkCommandPoolCreateInfo structure that was used to create the VkCommandPool that commandBuffer was allocated from, as specified in the table of supported pipeline stages", "1.2-extensions"}, {"VUID-vkCmdWaitEvents-srcStageMask-parameter", "srcStageMask must be a valid combination of VkPipelineStageFlagBits values", "1.2-extensions"}, {"VUID-vkCmdWaitEvents-srcStageMask-requiredbitmask", "srcStageMask must not be 0", "1.2-extensions"}, {"VUID-vkCmdWriteAccelerationStructuresPropertiesKHR-accelerationStructureCount-arraylength", "accelerationStructureCount must be greater than 0", "1.2-extensions"}, @@ -5037,12 +5068,28 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCmdWriteBufferMarkerAMD-dstBuffer-parameter", "dstBuffer must be a valid VkBuffer handle", "1.2-extensions"}, {"VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01798", "dstOffset must be less than or equal to the size of dstBuffer minus 4", "1.2-extensions"}, {"VUID-vkCmdWriteBufferMarkerAMD-dstOffset-01801", "dstOffset must be a multiple of 4", "1.2-extensions"}, + {"VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04074", "pipelineStage must be a valid stage for the queue family that was used to create the command pool that commandBuffer was allocated from", "1.2-extensions"}, + {"VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04075", "If the geometry shaders feature is not enabled, pipelineStage must not be VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT", "1.2-extensions"}, + {"VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04076", "If the tessellation shaders feature is not enabled, pipelineStage must not be VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT", "1.2-extensions"}, + {"VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04077", "If the conditional rendering feature is not enabled, pipelineStage must not be VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT", "1.2-extensions"}, + {"VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04078", "If the fragment density map feature is not enabled, pipelineStage must not be VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT", "1.2-extensions"}, + {"VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04079", "If the transform feedback feature is not enabled, pipelineStage must not be VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT", "1.2-extensions"}, + {"VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04080", "If the mesh shaders feature is not enabled, pipelineStage must not be VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV or VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV", "1.2-extensions"}, + {"VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-04081", "If the shading rate image feature is not enabled, pipelineStage must not be VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV", "1.2-extensions"}, {"VUID-vkCmdWriteBufferMarkerAMD-pipelineStage-parameter", "pipelineStage must be a valid VkPipelineStageFlagBits value", "1.2-extensions"}, {"VUID-vkCmdWriteTimestamp-None-00830", "All queries used by the command must be unavailable", "1.2-extensions"}, {"VUID-vkCmdWriteTimestamp-commandBuffer-cmdpool", "The VkCommandPool that commandBuffer was allocated from must support transfer, graphics, or compute operations", "1.2-extensions"}, {"VUID-vkCmdWriteTimestamp-commandBuffer-parameter", "commandBuffer must be a valid VkCommandBuffer handle", "1.2-extensions"}, {"VUID-vkCmdWriteTimestamp-commandBuffer-recording", "commandBuffer must be in the recording state", "1.2-extensions"}, {"VUID-vkCmdWriteTimestamp-commonparent", "Both of commandBuffer, and queryPool must have been created, allocated, or retrieved from the same VkDevice", "1.2-extensions"}, + {"VUID-vkCmdWriteTimestamp-pipelineStage-04074", "pipelineStage must be a valid stage for the queue family that was used to create the command pool that commandBuffer was allocated from", "1.2-extensions"}, + {"VUID-vkCmdWriteTimestamp-pipelineStage-04075", "If the geometry shaders feature is not enabled, pipelineStage must not be VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT", "1.2-extensions"}, + {"VUID-vkCmdWriteTimestamp-pipelineStage-04076", "If the tessellation shaders feature is not enabled, pipelineStage must not be VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT", "1.2-extensions"}, + {"VUID-vkCmdWriteTimestamp-pipelineStage-04077", "If the conditional rendering feature is not enabled, pipelineStage must not be VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT", "1.2-extensions"}, + {"VUID-vkCmdWriteTimestamp-pipelineStage-04078", "If the fragment density map feature is not enabled, pipelineStage must not be VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT", "1.2-extensions"}, + {"VUID-vkCmdWriteTimestamp-pipelineStage-04079", "If the transform feedback feature is not enabled, pipelineStage must not be VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT", "1.2-extensions"}, + {"VUID-vkCmdWriteTimestamp-pipelineStage-04080", "If the mesh shaders feature is not enabled, pipelineStage must not be VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV or VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV", "1.2-extensions"}, + {"VUID-vkCmdWriteTimestamp-pipelineStage-04081", "If the shading rate image feature is not enabled, pipelineStage must not be VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV", "1.2-extensions"}, {"VUID-vkCmdWriteTimestamp-pipelineStage-parameter", "pipelineStage must be a valid VkPipelineStageFlagBits value", "1.2-extensions"}, {"VUID-vkCmdWriteTimestamp-query-00831", "If vkCmdWriteTimestamp is called within a render pass instance, the sum of query and the number of bits set in the current subpass's view mask must be less than or equal to the number of queries in queryPool", "1.2-extensions"}, {"VUID-vkCmdWriteTimestamp-queryPool-00828", "The query identified by queryPool and query must be unavailable", "1.2-extensions"}, @@ -5252,6 +5299,7 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkCreateRenderPass2-pCreateInfo-parameter", "pCreateInfo must be a valid pointer to a valid VkRenderPassCreateInfo2 structure", "1.2-extensions"}, {"VUID-vkCreateRenderPass2-pRenderPass-parameter", "pRenderPass must be a valid pointer to a VkRenderPass handle", "1.2-extensions"}, {"VUID-vkCreateSampler-device-parameter", "device must be a valid VkDevice handle", "1.2-extensions"}, + {"VUID-vkCreateSampler-maxSamplerAllocationCount-04110", "There must be less than VkPhysicalDeviceLimits::maxSamplerAllocationCount VkSampler objects currently created on the device.", "1.2-extensions"}, {"VUID-vkCreateSampler-pAllocator-parameter", "If pAllocator is not NULL, pAllocator must be a valid pointer to a valid VkAllocationCallbacks structure", "1.2-extensions"}, {"VUID-vkCreateSampler-pCreateInfo-parameter", "pCreateInfo must be a valid pointer to a valid VkSamplerCreateInfo structure", "1.2-extensions"}, {"VUID-vkCreateSampler-pSampler-parameter", "pSampler must be a valid pointer to a VkSampler handle", "1.2-extensions"}, @@ -5459,6 +5507,12 @@ static const vuid_spec_text_pair vuid_spec_text[] = { {"VUID-vkDestroyPipelineLayout-pipelineLayout-02004", "pipelineLayout must not have been passed to any vkCmd* command for any command buffers that are still in the recording state when vkDestroyPipelineLayout is called", "1.2-extensions"}, {"VUID-vkDestroyPipelineLayout-pipelineLayout-parameter", "If pipelineLayout is not VK_NULL_HANDLE, pipelineLayout must be a valid VkPipelineLayout handle", "1.2-extensions"}, {"VUID-vkDestroyPipelineLayout-pipelineLayout-parent", "If pipelineLayout is a valid handle, it must have been created, allocated, or retrieved from device", "1.2-extensions"}, + {"VUID-vkDestroyPrivateDataSlotEXT-device-parameter", "device must be a valid VkDevice handle", "1.2-extensions"}, + {"VUID-vkDestroyPrivateDataSlotEXT-pAllocator-parameter", "If pAllocator is not NULL, pAllocator must be a valid pointer to a valid VkAllocationCallbacks structure", "1.2-extensions"}, + {"VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-04062", "If VkAllocationCallbacks were provided when privateDataSlot was created, a compatible set of callbacks must be provided here", "1.2-extensions"}, + {"VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-04063", "If no VkAllocationCallbacks were provided when privateDataSlot was created, pAllocator must be NULL", "1.2-extensions"}, + {"VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-parameter", "If privateDataSlot is not VK_NULL_HANDLE, privateDataSlot must be a valid VkPrivateDataSlotEXT handle", "1.2-extensions"}, + {"VUID-vkDestroyPrivateDataSlotEXT-privateDataSlot-parent", "If privateDataSlot is a valid handle, it must have been created, allocated, or retrieved from device", "1.2-extensions"}, {"VUID-vkDestroyQueryPool-device-parameter", "device must be a valid VkDevice handle", "1.2-extensions"}, {"VUID-vkDestroyQueryPool-pAllocator-parameter", "If pAllocator is not NULL, pAllocator must be a valid pointer to a valid VkAllocationCallbacks structure", "1.2-extensions"}, {"VUID-vkDestroyQueryPool-queryPool-00793", "All submitted commands that refer to queryPool must have completed execution", "1.2-extensions"}, diff --git a/layers/parameter_validation_utils.cpp b/layers/parameter_validation_utils.cpp index 38ee8ce28ae..829df629a96 100644 --- a/layers/parameter_validation_utils.cpp +++ b/layers/parameter_validation_utils.cpp @@ -1877,7 +1877,7 @@ bool StatelessValidation::manual_PreCallValidateCreateGraphicsPipelines(VkDevice exclusive_scissor_struct->exclusiveScissorCount > 0 && exclusive_scissor_struct->pExclusiveScissors == nullptr) { skip |= - LogError(device, "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-pDynamicStates-02030", + LogError(device, "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04056", "vkCreateGraphicsPipelines: The exclusive scissor state is static (pCreateInfos[%" PRIu32 "].pDynamicState->pDynamicStates does not contain VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV), but " "pCreateInfos[%" PRIu32 "] pExclusiveScissors (=NULL) is an invalid pointer.", @@ -1888,7 +1888,7 @@ bool StatelessValidation::manual_PreCallValidateCreateGraphicsPipelines(VkDevice shading_rate_image_struct->viewportCount > 0 && shading_rate_image_struct->pShadingRatePalettes == nullptr) { skip |= LogError( - device, "VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-pDynamicStates-02057", + device, "VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04057", "vkCreateGraphicsPipelines: The shading rate palette state is static (pCreateInfos[%" PRIu32 "].pDynamicState->pDynamicStates does not contain VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV), " "but pCreateInfos[%" PRIu32 "] pShadingRatePalettes (=NULL) is an invalid pointer.", @@ -4188,7 +4188,7 @@ bool StatelessValidation::ValidateAccelerationStructureInfoNV(const VkAccelerati } skip |= validate_flags(func_name, "info.flags", "VkBuildAccelerationStructureFlagBitsNV", AllVkBuildAccelerationStructureFlagBitsNV, - info.flags, kOptionalFlags, "VUID-VkAccelerationStructureInfoNV-flags-03486"); + info.flags, kOptionalFlags, "VUID-VkAccelerationStructureInfoNV-flags-parameter"); return skip; } diff --git a/scripts/best_practices_generator.py b/scripts/best_practices_generator.py index 4f4fe9b326a..c003872a134 100644 --- a/scripts/best_practices_generator.py +++ b/scripts/best_practices_generator.py @@ -32,6 +32,7 @@ def __init__(self, conventions = None, filename = None, directory = '.', + genpath = None, apiname = None, profile = None, versions = '.*', @@ -56,6 +57,7 @@ def __init__(self, conventions = conventions, filename = filename, directory = directory, + genpath = genpath, apiname = apiname, profile = profile, versions = versions, diff --git a/scripts/command_counter_generator.py b/scripts/command_counter_generator.py index dcda26a8b65..dcb3ccff361 100644 --- a/scripts/command_counter_generator.py +++ b/scripts/command_counter_generator.py @@ -33,6 +33,7 @@ def __init__(self, conventions = None, filename = None, directory = '.', + genpath = None, apiname = None, profile = None, versions = '.*', @@ -54,6 +55,7 @@ def __init__(self, conventions = conventions, filename = filename, directory = directory, + genpath = genpath, apiname = apiname, profile = profile, versions = versions, diff --git a/scripts/dispatch_table_helper_generator.py b/scripts/dispatch_table_helper_generator.py index 59f9c069d47..9166bd46ba7 100644 --- a/scripts/dispatch_table_helper_generator.py +++ b/scripts/dispatch_table_helper_generator.py @@ -32,6 +32,7 @@ def __init__(self, conventions = None, filename = None, directory = '.', + genpath = None, apiname = None, profile = None, versions = '.*', @@ -52,6 +53,7 @@ def __init__(self, conventions = conventions, filename = filename, directory = directory, + genpath = genpath, apiname = apiname, profile = profile, versions = versions, diff --git a/scripts/helper_file_generator.py b/scripts/helper_file_generator.py index 4c16dfc46d4..6c4049e5fb0 100644 --- a/scripts/helper_file_generator.py +++ b/scripts/helper_file_generator.py @@ -34,6 +34,7 @@ def __init__(self, conventions = None, filename = None, directory = '.', + genpath = None, apiname = None, profile = None, versions = '.*', @@ -58,6 +59,7 @@ def __init__(self, conventions = conventions, filename = filename, directory = directory, + genpath = genpath, apiname = apiname, profile = profile, versions = versions, diff --git a/scripts/known_good.json b/scripts/known_good.json index 5aff8c7f5bf..e36269499ed 100755 --- a/scripts/known_good.json +++ b/scripts/known_good.json @@ -20,7 +20,7 @@ "sub_dir": "Vulkan-Headers", "build_dir": "Vulkan-Headers/build", "install_dir": "Vulkan-Headers/build/install", - "commit": "v1.2.141" + "commit": "v1.2.144" }, { "name": "SPIRV-Headers", diff --git a/scripts/layer_chassis_dispatch_generator.py b/scripts/layer_chassis_dispatch_generator.py index a50c61343f9..2cd4fba99a8 100644 --- a/scripts/layer_chassis_dispatch_generator.py +++ b/scripts/layer_chassis_dispatch_generator.py @@ -64,6 +64,7 @@ def __init__(self, conventions = None, filename = None, directory = '.', + genpath = None, apiname = None, profile = None, versions = '.*', @@ -88,6 +89,7 @@ def __init__(self, conventions = conventions, filename = filename, directory = directory, + genpath = genpath, apiname = apiname, profile = profile, versions = versions, diff --git a/scripts/layer_chassis_generator.py b/scripts/layer_chassis_generator.py index daa2e6504aa..c8e59bb17f2 100644 --- a/scripts/layer_chassis_generator.py +++ b/scripts/layer_chassis_generator.py @@ -65,6 +65,7 @@ def __init__(self, conventions = None, filename = None, directory = '.', + genpath = None, apiname = None, profile = None, versions = '.*', @@ -90,6 +91,7 @@ def __init__(self, conventions = conventions, filename = filename, directory = directory, + genpath = genpath, apiname = apiname, profile = profile, versions = versions, diff --git a/scripts/layer_dispatch_table_generator.py b/scripts/layer_dispatch_table_generator.py index 5b76db7f14f..e5ea4a51ced 100644 --- a/scripts/layer_dispatch_table_generator.py +++ b/scripts/layer_dispatch_table_generator.py @@ -38,6 +38,7 @@ def __init__(self, conventions = None, filename = None, directory = '.', + genpath = None, apiname = None, profile = None, versions = '.*', @@ -62,6 +63,7 @@ def __init__(self, conventions = conventions, filename = filename, directory = directory, + genpath = genpath, apiname = apiname, profile = profile, versions = versions, diff --git a/scripts/lvl_genvk.py b/scripts/lvl_genvk.py index a295aa91610..ff0e2b4e130 100644 --- a/scripts/lvl_genvk.py +++ b/scripts/lvl_genvk.py @@ -68,6 +68,9 @@ def makeGenOpts(args): # Output target directory directory = args.directory + # Path to generated files, particularly api.py + genpath = args.genpath + # Descriptive names for various regexp patterns used to select # versions and extensions allFeatures = allExtensions = '.*' @@ -122,6 +125,7 @@ def makeGenOpts(args): conventions = conventions, filename = 'thread_safety.h', directory = directory, + genpath = None, apiname = 'vulkan', profile = None, versions = featuresPat, @@ -146,6 +150,7 @@ def makeGenOpts(args): conventions = conventions, filename = 'thread_safety.cpp', directory = directory, + genpath = None, apiname = 'vulkan', profile = None, versions = featuresPat, @@ -170,6 +175,7 @@ def makeGenOpts(args): conventions = conventions, filename = 'parameter_validation.cpp', directory = directory, + genpath = None, apiname = 'vulkan', profile = None, versions = featuresPat, @@ -194,6 +200,7 @@ def makeGenOpts(args): conventions = conventions, filename = 'parameter_validation.h', directory = directory, + genpath = None, apiname = 'vulkan', profile = None, versions = featuresPat, @@ -218,6 +225,7 @@ def makeGenOpts(args): conventions = conventions, filename = 'object_tracker.cpp', directory = directory, + genpath = None, apiname = 'vulkan', profile = None, versions = featuresPat, @@ -243,6 +251,7 @@ def makeGenOpts(args): conventions = conventions, filename = 'object_tracker.h', directory = directory, + genpath = None, apiname = 'vulkan', profile = None, versions = featuresPat, @@ -268,6 +277,7 @@ def makeGenOpts(args): conventions = conventions, filename = 'vk_dispatch_table_helper.h', directory = directory, + genpath = None, apiname = 'vulkan', profile = None, versions = featuresPat, @@ -291,6 +301,7 @@ def makeGenOpts(args): conventions = conventions, filename = 'lvt_function_pointers.h', directory = directory, + genpath = None, apiname = 'vulkan', profile = None, versions = featuresPat, @@ -315,6 +326,7 @@ def makeGenOpts(args): conventions = conventions, filename = 'lvt_function_pointers.cpp', directory = directory, + genpath = None, apiname = 'vulkan', profile = None, versions = featuresPat, @@ -339,6 +351,7 @@ def makeGenOpts(args): conventions = conventions, filename = 'vk_layer_dispatch_table.h', directory = directory, + genpath = None, apiname = 'vulkan', profile = None, versions = featuresPat, @@ -362,6 +375,7 @@ def makeGenOpts(args): conventions = conventions, filename = 'vk_enum_string_helper.h', directory = directory, + genpath = None, apiname = 'vulkan', profile = None, versions = featuresPat, @@ -386,6 +400,7 @@ def makeGenOpts(args): conventions = conventions, filename = 'vk_safe_struct.h', directory = directory, + genpath = None, apiname = 'vulkan', profile = None, versions = featuresPat, @@ -410,6 +425,7 @@ def makeGenOpts(args): conventions = conventions, filename = 'vk_safe_struct.cpp', directory = directory, + genpath = None, apiname = 'vulkan', profile = None, versions = featuresPat, @@ -434,6 +450,7 @@ def makeGenOpts(args): conventions = conventions, filename = 'vk_object_types.h', directory = directory, + genpath = None, apiname = 'vulkan', profile = None, versions = featuresPat, @@ -458,6 +475,7 @@ def makeGenOpts(args): conventions = conventions, filename = 'vk_extension_helper.h', directory = directory, + genpath = None, apiname = 'vulkan', profile = None, versions = featuresPat, @@ -482,6 +500,7 @@ def makeGenOpts(args): conventions = conventions, filename = 'vk_typemap_helper.h', directory = directory, + genpath = None, apiname = 'vulkan', profile = None, versions = featuresPat, @@ -508,6 +527,7 @@ def makeGenOpts(args): conventions = conventions, filename = 'chassis.h', directory = directory, + genpath = None, apiname = 'vulkan', profile = None, versions = featuresPat, @@ -532,6 +552,7 @@ def makeGenOpts(args): conventions = conventions, filename = 'chassis.cpp', directory = directory, + genpath = None, apiname = 'vulkan', profile = None, versions = featuresPat, @@ -556,6 +577,7 @@ def makeGenOpts(args): conventions = conventions, filename = 'layer_chassis_dispatch.cpp', directory = directory, + genpath = None, apiname = 'vulkan', profile = None, versions = featuresPat, @@ -580,6 +602,7 @@ def makeGenOpts(args): conventions = conventions, filename = 'layer_chassis_dispatch.h', directory = directory, + genpath = None, apiname = 'vulkan', profile = None, versions = featuresPat, @@ -604,6 +627,7 @@ def makeGenOpts(args): conventions = conventions, filename = 'command_counter_helper.h', directory = directory, + genpath = None, apiname = 'vulkan', profile = None, versions = featuresPat, @@ -628,6 +652,7 @@ def makeGenOpts(args): conventions = conventions, filename = 'command_counter_helper.cpp', directory = directory, + genpath = None, apiname = 'vulkan', profile = None, versions = featuresPat, @@ -652,6 +677,7 @@ def makeGenOpts(args): conventions = conventions, filename = 'best_practices.cpp', directory = directory, + genpath = None, apiname = 'vulkan', profile = None, versions = featuresPat, @@ -676,6 +702,7 @@ def makeGenOpts(args): conventions = conventions, filename = 'best_practices.h', directory = directory, + genpath = None, apiname = 'vulkan', profile = None, versions = featuresPat, @@ -775,7 +802,9 @@ def genTarget(args): parser.add_argument('-time', action='store_true', help='Enable timing') parser.add_argument('-validate', action='store_true', - help='Enable group validation') + help='Enable XML group validation') + parser.add_argument('-genpath', action='store', default='gen', + help='Path to generated files') parser.add_argument('-o', action='store', dest='directory', default='.', help='Create target and related files in specified directory') diff --git a/scripts/lvt_file_generator.py b/scripts/lvt_file_generator.py index 97e4766a83e..dc054b9c518 100644 --- a/scripts/lvt_file_generator.py +++ b/scripts/lvt_file_generator.py @@ -47,6 +47,7 @@ def __init__(self, conventions = None, filename = None, directory = '.', + genpath = None, apiname = None, profile = None, versions = '.*', @@ -68,6 +69,7 @@ def __init__(self, conventions = conventions, filename = filename, directory = directory, + genpath = genpath, apiname = apiname, profile = profile, versions = versions, diff --git a/scripts/object_tracker_generator.py b/scripts/object_tracker_generator.py index 026f1980188..f7808469984 100644 --- a/scripts/object_tracker_generator.py +++ b/scripts/object_tracker_generator.py @@ -67,6 +67,7 @@ def __init__(self, conventions = None, filename = None, directory = '.', + genpath = None, apiname = None, profile = None, versions = '.*', @@ -92,6 +93,7 @@ def __init__(self, conventions = conventions, filename = filename, directory = directory, + genpath = genpath, apiname = apiname, profile = profile, versions = versions, diff --git a/scripts/parameter_validation_generator.py b/scripts/parameter_validation_generator.py index ee9aca56b13..6e3310dd5de 100644 --- a/scripts/parameter_validation_generator.py +++ b/scripts/parameter_validation_generator.py @@ -67,6 +67,7 @@ def __init__(self, conventions = None, filename = None, directory = '.', + genpath = None, apiname = None, profile = None, versions = '.*', @@ -89,6 +90,7 @@ def __init__(self, conventions = conventions, filename = filename, directory = directory, + genpath = genpath, apiname = apiname, profile = profile, versions = versions, diff --git a/scripts/thread_safety_generator.py b/scripts/thread_safety_generator.py index 24a6c1fe43b..0bc90b1b4f8 100644 --- a/scripts/thread_safety_generator.py +++ b/scripts/thread_safety_generator.py @@ -63,6 +63,7 @@ def __init__(self, conventions = None, filename = None, directory = '.', + genpath = None, apiname = None, profile = None, versions = '.*', @@ -87,6 +88,7 @@ def __init__(self, conventions = conventions, filename = filename, directory = directory, + genpath = genpath, apiname = apiname, profile = profile, versions = versions, diff --git a/scripts/vk_validation_stats.py b/scripts/vk_validation_stats.py index effa72883fd..c439a66e160 100755 --- a/scripts/vk_validation_stats.py +++ b/scripts/vk_validation_stats.py @@ -116,11 +116,11 @@ def __init__(self, filename): self.regex_dict = {} self.regex_dict[re.compile('<.*?>|&(amp;)+lt;|&(amp;)+gt;')] = "" self.regex_dict[re.compile(r'\\\(codeSize \\over 4\\\)')] = "(codeSize/4)" - self.regex_dict[re.compile(r'\\\(\\lceil{\\frac{height}{maxFragmentDensityTexelSize_{height}}}\\rceil\\\)')] = "the ceiling of height/maxFragmentDensityTexelSize.height" - self.regex_dict[re.compile(r'\\\(\\lceil{\\frac{width}{maxFragmentDensityTexelSize_{width}}}\\rceil\\\)')] = "the ceiling of width/maxFragmentDensityTexelSize.width" - self.regex_dict[re.compile(r'\\\(\\lceil{\\frac{maxFramebufferHeight}{minFragmentDensityTexelSize_{height}}}\\rceil\\\)')] = "the ceiling of maxFramebufferHeight/minFragmentDensityTexelSize.height" - self.regex_dict[re.compile(r'\\\(\\lceil{\\frac{maxFramebufferWidth}{minFragmentDensityTexelSize_{width}}}\\rceil\\\)')] = "the ceiling of maxFramebufferWidth/minFragmentDensityTexelSize.width" self.regex_dict[re.compile(r'\\\(\\lceil\{\\mathit\{rasterizationSamples} \\over 32}\\rceil\\\)')] = "(rasterizationSamples/32)" + self.regex_dict[re.compile(r'\\\(\\left\\lceil{\\frac{maxFramebufferWidth}{minFragmentDensityTexelSize_{width}}}\\right\\rceil\\\)')] = "the ceiling of maxFramebufferWidth/minFragmentDensityTexelSize.width" + self.regex_dict[re.compile(r'\\\(\\left\\lceil{\\frac{maxFramebufferHeight}{minFragmentDensityTexelSize_{height}}}\\right\\rceil\\\)')] = "the ceiling of maxFramebufferHeight/minFragmentDensityTexelSize.height" + self.regex_dict[re.compile(r'\\\(\\left\\lceil{\\frac{width}{maxFragmentDensityTexelSize_{width}}}\\right\\rceil\\\)')] = "the ceiling of width/maxFragmentDensityTexelSize.width" + self.regex_dict[re.compile(r'\\\(\\left\\lceil{\\frac{height}{maxFragmentDensityTexelSize_{height}}}\\right\\rceil\\\)')] = "the ceiling of height/maxFragmentDensityTexelSize.height" self.regex_dict[re.compile(r'\\\(\\textrm\{codeSize} \\over 4\\\)')] = "(codeSize/4)" # Regular expression for characters outside ascii range diff --git a/tests/vklayertests_buffer_image_memory_sampler.cpp b/tests/vklayertests_buffer_image_memory_sampler.cpp index fb5533806f7..bc7ffa54c17 100644 --- a/tests/vklayertests_buffer_image_memory_sampler.cpp +++ b/tests/vklayertests_buffer_image_memory_sampler.cpp @@ -3825,7 +3825,7 @@ TEST_F(VkLayerTest, ImageBarrierSubpassConflicts) { VkImageObj lone_image(m_device); lone_image.InitNoLayout(32, 32, 1, VK_FORMAT_R8G8B8A8_UNORM, VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT, VK_IMAGE_TILING_OPTIMAL, 0); img_barrier.image = lone_image.handle(); - m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdPipelineBarrier-image-02635"); + m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdPipelineBarrier-image-04073"); vk::CmdPipelineBarrier(m_commandBuffer->handle(), VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_DEPENDENCY_BY_REGION_BIT, 0, nullptr, 0, nullptr, 1, &img_barrier); @@ -3841,7 +3841,7 @@ TEST_F(VkLayerTest, ImageBarrierSubpassConflicts) { img_barrier.oldLayout = VK_IMAGE_LAYOUT_GENERAL; img_barrier.newLayout = VK_IMAGE_LAYOUT_GENERAL; - m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdPipelineBarrier-oldLayout-02636"); + m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdPipelineBarrier-oldLayout-01181"); vk::CmdPipelineBarrier(m_commandBuffer->handle(), VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_DEPENDENCY_BY_REGION_BIT, 0, nullptr, 0, nullptr, 1, &img_barrier); @@ -5708,7 +5708,7 @@ TEST_F(VkLayerTest, InvalidBarriers) { buf_barrier.offset = 0; buf_barrier.size = VK_WHOLE_SIZE; - m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdPipelineBarrier-srcStageMask-01183"); + m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdPipelineBarrier-srcStageMask-4098"); VkCommandPoolObj command_pool(m_device, queue_family_index, VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT); VkCommandBufferObj bad_command_buffer(m_device, &command_pool); @@ -5723,7 +5723,7 @@ TEST_F(VkLayerTest, InvalidBarriers) { // Check for error for trying to wait on pipeline stage not supported by this queue. Specifically since our queue is not a // compute queue, vk::CmdWaitEvents cannot have it's source stage mask be VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT - m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdWaitEvents-srcStageMask-01164"); + m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdWaitEvents-srcStageMask-4098"); VkEvent event; VkEventCreateInfo event_create_info{}; event_create_info.sType = VK_STRUCTURE_TYPE_EVENT_CREATE_INFO; @@ -5781,15 +5781,15 @@ TEST_F(VkLayerTest, InvalidBarrierQueueFamily) { BarrierQueueFamilyTestHelper excl_test(&test_context); excl_test.Init(nullptr); // no queue families means *exclusive* sharing mode. - // core_validation::barrier_queue_families::kBothIgnoreOrBothValid - excl_test("VUID-VkImageMemoryBarrier-image-01200", "VUID-VkBufferMemoryBarrier-buffer-01192", VK_QUEUE_FAMILY_IGNORED, + // core_validation::barrier_queue_families::kSrcAndDstBothValid + excl_test("VUID-VkImageMemoryBarrier-image-04069", "VUID-VkBufferMemoryBarrier-buffer-04086", VK_QUEUE_FAMILY_IGNORED, submit_family); - excl_test("VUID-VkImageMemoryBarrier-image-01200", "VUID-VkBufferMemoryBarrier-buffer-01192", submit_family, + excl_test("VUID-VkImageMemoryBarrier-image-04069", "VUID-VkBufferMemoryBarrier-buffer-04086", submit_family, VK_QUEUE_FAMILY_IGNORED); // true -> positive test - excl_test("VUID-VkImageMemoryBarrier-image-01200", "VUID-VkBufferMemoryBarrier-buffer-01192", submit_family, submit_family, + excl_test("VUID-VkImageMemoryBarrier-image-04069", "VUID-VkBufferMemoryBarrier-buffer-04086", submit_family, submit_family, true); - excl_test("VUID-VkImageMemoryBarrier-image-01200", "VUID-VkBufferMemoryBarrier-buffer-01192", VK_QUEUE_FAMILY_IGNORED, + excl_test("VUID-VkImageMemoryBarrier-image-04069", "VUID-VkBufferMemoryBarrier-buffer-04086", VK_QUEUE_FAMILY_IGNORED, VK_QUEUE_FAMILY_IGNORED, true); } @@ -5800,7 +5800,8 @@ TEST_F(VkLayerTest, InvalidBarrierQueueFamily) { excl_test.Init(nullptr); // core_validation::barrier_queue_families::kSubmitQueueMustMatchSrcOrDst - excl_test("VUID-VkImageMemoryBarrier-image-01205", "VUID-VkBufferMemoryBarrier-buffer-01196", other_family, other_family, + excl_test("UNASSIGNED-CoreValidation-vkImageMemoryBarrier-sharing-mode-exclusive-same-family", + "UNASSIGNED-CoreValidation-vkBufferMemoryBarrier-sharing-mode-exclusive-same-family", other_family, other_family, false, submit_family); // true -> positive test (testing both the index logic and the QFO transfer tracking. @@ -5886,48 +5887,30 @@ TEST_F(VkLayerTest, InvalidBarrierQueueFamilyWithMemExt) { VK_QUEUE_FAMILY_IGNORED, true); // core_validation::barrier_queue_families::kSpecialOrIgnoreOnly - conc_test("VUID-VkImageMemoryBarrier-image-01766", "VUID-VkBufferMemoryBarrier-buffer-01763", submit_family, + conc_test("VUID-VkImageMemoryBarrier-image-04071", "VUID-VkBufferMemoryBarrier-buffer-04088", submit_family, VK_QUEUE_FAMILY_IGNORED); - conc_test("VUID-VkImageMemoryBarrier-image-01766", "VUID-VkBufferMemoryBarrier-buffer-01763", VK_QUEUE_FAMILY_IGNORED, + conc_test("VUID-VkImageMemoryBarrier-image-04071", "VUID-VkBufferMemoryBarrier-buffer-04088", VK_QUEUE_FAMILY_IGNORED, submit_family); // This is to flag the errors that would be considered only "unexpected" in the parallel case above // true -> positive test - conc_test("VUID-VkImageMemoryBarrier-image-01766", "VUID-VkBufferMemoryBarrier-buffer-01763", VK_QUEUE_FAMILY_IGNORED, + conc_test("VUID-VkImageMemoryBarrier-image-04071", "VUID-VkBufferMemoryBarrier-buffer-04088", VK_QUEUE_FAMILY_IGNORED, VK_QUEUE_FAMILY_EXTERNAL_KHR, true); - conc_test("VUID-VkImageMemoryBarrier-image-01766", "VUID-VkBufferMemoryBarrier-buffer-01763", VK_QUEUE_FAMILY_EXTERNAL_KHR, + conc_test("VUID-VkImageMemoryBarrier-image-04071", "VUID-VkBufferMemoryBarrier-buffer-04088", VK_QUEUE_FAMILY_EXTERNAL_KHR, VK_QUEUE_FAMILY_IGNORED, true); } BarrierQueueFamilyTestHelper excl_test(&test_context); excl_test.Init(nullptr); // no queue families means *exclusive* sharing mode. - // core_validation::barrier_queue_families::kSrcIgnoreRequiresDstIgnore - excl_test("VUID-VkImageMemoryBarrier-image-01201", "VUID-VkBufferMemoryBarrier-buffer-01193", VK_QUEUE_FAMILY_IGNORED, - submit_family); - excl_test("VUID-VkImageMemoryBarrier-image-01201", "VUID-VkBufferMemoryBarrier-buffer-01193", VK_QUEUE_FAMILY_IGNORED, - VK_QUEUE_FAMILY_EXTERNAL_KHR); - // true -> positive test - excl_test("VUID-VkImageMemoryBarrier-image-01201", "VUID-VkBufferMemoryBarrier-buffer-01193", VK_QUEUE_FAMILY_IGNORED, - VK_QUEUE_FAMILY_IGNORED, true); - - // core_validation::barrier_queue_families::kDstValidOrSpecialIfNotIgnore - excl_test("VUID-VkImageMemoryBarrier-image-01768", "VUID-VkBufferMemoryBarrier-buffer-01765", submit_family, invalid); + // core_validation::barrier_queue_families::kSrcAndDstValidOrSpecial + excl_test("VUID-VkImageMemoryBarrier-image-04072", "VUID-VkBufferMemoryBarrier-buffer-04089", submit_family, invalid); + excl_test("VUID-VkImageMemoryBarrier-image-04072", "VUID-VkBufferMemoryBarrier-buffer-04089", invalid, submit_family); // true -> positive test - excl_test("VUID-VkImageMemoryBarrier-image-01768", "VUID-VkBufferMemoryBarrier-buffer-01765", submit_family, submit_family, + excl_test("VUID-VkImageMemoryBarrier-image-04072", "VUID-VkBufferMemoryBarrier-buffer-04089", submit_family, submit_family, true); - excl_test("VUID-VkImageMemoryBarrier-image-01768", "VUID-VkBufferMemoryBarrier-buffer-01765", submit_family, - VK_QUEUE_FAMILY_IGNORED, true); - excl_test("VUID-VkImageMemoryBarrier-image-01768", "VUID-VkBufferMemoryBarrier-buffer-01765", submit_family, + excl_test("VUID-VkImageMemoryBarrier-image-04072", "VUID-VkBufferMemoryBarrier-buffer-04089", submit_family, VK_QUEUE_FAMILY_EXTERNAL_KHR, true); - - // core_validation::barrier_queue_families::kSrcValidOrSpecialIfNotIgnore - excl_test("VUID-VkImageMemoryBarrier-image-01767", "VUID-VkBufferMemoryBarrier-buffer-01764", invalid, submit_family); - // true -> positive test - excl_test("VUID-VkImageMemoryBarrier-image-01767", "VUID-VkBufferMemoryBarrier-buffer-01764", submit_family, submit_family, - true); - excl_test("VUID-VkImageMemoryBarrier-image-01767", "VUID-VkBufferMemoryBarrier-buffer-01764", VK_QUEUE_FAMILY_IGNORED, - VK_QUEUE_FAMILY_IGNORED, true); - excl_test("VUID-VkImageMemoryBarrier-image-01767", "VUID-VkBufferMemoryBarrier-buffer-01764", VK_QUEUE_FAMILY_EXTERNAL_KHR, + excl_test("VUID-VkImageMemoryBarrier-image-04072", "VUID-VkBufferMemoryBarrier-buffer-04089", VK_QUEUE_FAMILY_EXTERNAL_KHR, submit_family, true); } @@ -9378,7 +9361,7 @@ TEST_F(VkLayerTest, CreateYCbCrSampler) { sycci.yChromaOffset = VK_CHROMA_LOCATION_COSITED_EVEN; // test non external conversion with a VK_FORMAT_UNDEFINED - m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-VkSamplerYcbcrConversionCreateInfo-format-01649"); + m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-VkSamplerYcbcrConversionCreateInfo-format-04060"); vkCreateSamplerYcbcrConversionFunction(device(), &sycci, NULL, &ycbcr_conv); m_errorMonitor->VerifyFound(); diff --git a/tests/vklayertests_command.cpp b/tests/vklayertests_command.cpp index df60a12aa53..71d7a240b8f 100644 --- a/tests/vklayertests_command.cpp +++ b/tests/vklayertests_command.cpp @@ -149,7 +149,7 @@ TEST_F(VkLayerTest, InvalidSecondaryCommandBufferBarrier) { VK_DEPENDENCY_BY_REGION_BIT, 0, nullptr, 0, nullptr, 1, &img_barrier); secondary.end(); - m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdPipelineBarrier-image-02635"); + m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdPipelineBarrier-image-04073"); vk::CmdExecuteCommands(m_commandBuffer->handle(), 1, &secondary.handle()); m_errorMonitor->VerifyFound(); @@ -2130,7 +2130,6 @@ TEST_F(VkLayerTest, ImageBufferCopyTests) { // buffer offset must be a multiple of texel block size for VK_FORMAT_R8G8_UNORM (2) m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-VkBufferImageCopy-bufferOffset-01559"); - m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-VkBufferImageCopy-bufferOffset-00194"); mp_region.imageSubresource.aspectMask = VK_IMAGE_ASPECT_PLANE_1_BIT; mp_region.bufferOffset = 5; mp_region.imageExtent = {8, 8, 1}; @@ -2169,15 +2168,6 @@ TEST_F(VkLayerTest, MiscImageLayerTests) { VkBufferObj buffer2; VkMemoryPropertyFlags reqs2 = 0; buffer2.init_as_src(*m_device, 128 * 128 * 2, reqs2); - VkBufferImageCopy region2 = {}; - region2.bufferRowLength = 128; - region2.bufferImageHeight = 128; - region2.imageSubresource.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; - // layerCount can't be 0 - Expect MISMATCHED_IMAGE_ASPECT - region2.imageSubresource.layerCount = 1; - region2.imageExtent.height = 4; - region2.imageExtent.width = 4; - region2.imageExtent.depth = 1; m_commandBuffer->begin(); // Image must have offset.z of 0 and extent.depth of 1 @@ -2210,14 +2200,6 @@ TEST_F(VkLayerTest, MiscImageLayerTests) { ®ion); m_errorMonitor->VerifyFound(); - // BufferOffset must be a multiple of 4 - // Introduce failure by setting bufferOffset to a value not divisible by 4 - region2.bufferOffset = 6; - m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-VkBufferImageCopy-bufferOffset-00194"); - vk::CmdCopyBufferToImage(m_commandBuffer->handle(), buffer2.handle(), image2.handle(), VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, 1, - ®ion2); - m_errorMonitor->VerifyFound(); - // BufferRowLength must be 0, or greater than or equal to the width member of imageExtent region.bufferOffset = 0; region.imageExtent.height = 128; @@ -5421,13 +5403,7 @@ TEST_F(VkLayerTest, ExclusiveScissorNV) { {"VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02027", "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02028", "VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-exclusiveScissorCount-02029"}}, - {1, - viewports, - 1, - scissors, - 1, - nullptr, - {"VUID-VkPipelineViewportExclusiveScissorStateCreateInfoNV-pDynamicStates-02030"}}, + {1, viewports, 1, scissors, 1, nullptr, {"VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04056"}}, }; for (const auto &test_case : test_cases) { @@ -5642,42 +5618,42 @@ TEST_F(VkLayerTest, MeshShaderDisabledNV) { m_commandBuffer->begin(); - m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdSetEvent-stageMask-02107"); + m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdSetEvent-stageMask-04095"); vk::CmdSetEvent(m_commandBuffer->handle(), event, VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV); m_errorMonitor->VerifyFound(); - m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdSetEvent-stageMask-02108"); + m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdSetEvent-stageMask-04096"); vk::CmdSetEvent(m_commandBuffer->handle(), event, VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV); m_errorMonitor->VerifyFound(); - m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdResetEvent-stageMask-02109"); + m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdResetEvent-stageMask-04095"); vk::CmdResetEvent(m_commandBuffer->handle(), event, VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV); m_errorMonitor->VerifyFound(); - m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdResetEvent-stageMask-02110"); + m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdResetEvent-stageMask-04096"); vk::CmdResetEvent(m_commandBuffer->handle(), event, VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV); m_errorMonitor->VerifyFound(); - m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdWaitEvents-srcStageMask-02111"); - m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdWaitEvents-dstStageMask-02113"); + m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdWaitEvents-srcStageMask-04095"); + m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdWaitEvents-dstStageMask-04095"); vk::CmdWaitEvents(m_commandBuffer->handle(), 1, &event, VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV, VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV, 0, nullptr, 0, nullptr, 0, nullptr); m_errorMonitor->VerifyFound(); - m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdWaitEvents-srcStageMask-02112"); - m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdWaitEvents-dstStageMask-02114"); + m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdWaitEvents-srcStageMask-04096"); + m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdWaitEvents-dstStageMask-04096"); vk::CmdWaitEvents(m_commandBuffer->handle(), 1, &event, VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV, VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV, 0, nullptr, 0, nullptr, 0, nullptr); m_errorMonitor->VerifyFound(); - m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdPipelineBarrier-srcStageMask-02115"); - m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdPipelineBarrier-dstStageMask-02117"); + m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdPipelineBarrier-srcStageMask-04095"); + m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdPipelineBarrier-dstStageMask-04095"); vk::CmdPipelineBarrier(m_commandBuffer->handle(), VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV, VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV, 0, 0, nullptr, 0, nullptr, 0, nullptr); m_errorMonitor->VerifyFound(); - m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdPipelineBarrier-srcStageMask-02116"); - m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdPipelineBarrier-dstStageMask-02118"); + m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdPipelineBarrier-srcStageMask-04096"); + m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdPipelineBarrier-dstStageMask-04096"); vk::CmdPipelineBarrier(m_commandBuffer->handle(), VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV, VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV, 0, 0, nullptr, 0, nullptr, 0, nullptr); m_errorMonitor->VerifyFound(); diff --git a/tests/vklayertests_descriptor_renderpass_framebuffer.cpp b/tests/vklayertests_descriptor_renderpass_framebuffer.cpp index 827d4e84bf0..b7dc00dc960 100644 --- a/tests/vklayertests_descriptor_renderpass_framebuffer.cpp +++ b/tests/vklayertests_descriptor_renderpass_framebuffer.cpp @@ -292,7 +292,7 @@ TEST_F(VkLayerTest, ImageBarrierSubpassConflict) { img_barrier.subresourceRange.levelCount = 1; m_commandBuffer->begin(); vk::CmdBeginRenderPass(m_commandBuffer->handle(), &rpbi, VK_SUBPASS_CONTENTS_INLINE); - m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdPipelineBarrier-image-02635"); + m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdPipelineBarrier-image-04073"); vk::CmdPipelineBarrier(m_commandBuffer->handle(), VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, VK_DEPENDENCY_BY_REGION_BIT, 0, nullptr, 0, nullptr, 1, &img_barrier); diff --git a/tests/vklayertests_others.cpp b/tests/vklayertests_others.cpp index 45d27fff98c..edbff7d8b87 100644 --- a/tests/vklayertests_others.cpp +++ b/tests/vklayertests_others.cpp @@ -2739,11 +2739,11 @@ TEST_F(VkLayerTest, StageMaskGsTsEnabled) { VkCommandBufferBeginInfo cbbi = {}; cbbi.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO; vk::BeginCommandBuffer(cmd_buffer, &cbbi); - m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdSetEvent-stageMask-01150"); + m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdSetEvent-stageMask-04090"); vk::CmdSetEvent(cmd_buffer, event, VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT); m_errorMonitor->VerifyFound(); - m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdSetEvent-stageMask-01151"); + m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdSetEvent-stageMask-04091"); vk::CmdSetEvent(cmd_buffer, event, VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT); m_errorMonitor->VerifyFound(); @@ -4366,9 +4366,8 @@ TEST_F(VkLayerTest, ShadingRateImageNV) { vsrisci.shadingRateImageEnable = VK_TRUE; vsrisci.viewportCount = 1; }; - CreatePipelineHelper::OneshotTest( - *this, break_vp, kErrorBit, - vector({"VUID-VkPipelineViewportShadingRateImageStateCreateInfoNV-pDynamicStates-02057"})); + CreatePipelineHelper::OneshotTest(*this, break_vp, kErrorBit, + vector({"VUID-VkGraphicsPipelineCreateInfo-pDynamicStates-04057"})); } // Create an image without the SRI bit diff --git a/tests/vklayertests_pipeline_shader.cpp b/tests/vklayertests_pipeline_shader.cpp index 22b815c728c..98cb1ad6195 100644 --- a/tests/vklayertests_pipeline_shader.cpp +++ b/tests/vklayertests_pipeline_shader.cpp @@ -8157,8 +8157,8 @@ TEST_F(VkLayerTest, PipelineStageConditionalRenderingWithWrongQueue) { imb.subresourceRange.baseArrayLayer = 0; imb.subresourceRange.layerCount = 1; - m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdPipelineBarrier-srcStageMask-01183"); - m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdPipelineBarrier-srcStageMask-01183"); + m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdPipelineBarrier-srcStageMask-4098"); + m_errorMonitor->SetDesiredFailureMsg(kErrorBit, "VUID-vkCmdPipelineBarrier-srcStageMask-4098"); vk::CmdPipelineBarrier(commandBuffer.handle(), VK_PIPELINE_STAGE_VERTEX_SHADER_BIT, VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT, 0, 0, nullptr, 0, nullptr, 1, &imb); m_errorMonitor->VerifyFound();