aboutsummaryrefslogtreecommitdiff
path: root/tools/Vulkan-Tools/vulkaninfo/generated
diff options
context:
space:
mode:
Diffstat (limited to 'tools/Vulkan-Tools/vulkaninfo/generated')
-rw-r--r--tools/Vulkan-Tools/vulkaninfo/generated/.clang-format5
-rw-r--r--tools/Vulkan-Tools/vulkaninfo/generated/vulkaninfo.hpp13708
2 files changed, 13713 insertions, 0 deletions
diff --git a/tools/Vulkan-Tools/vulkaninfo/generated/.clang-format b/tools/Vulkan-Tools/vulkaninfo/generated/.clang-format
new file mode 100644
index 00000000..3bb983a4
--- /dev/null
+++ b/tools/Vulkan-Tools/vulkaninfo/generated/.clang-format
@@ -0,0 +1,5 @@
+---
+# Disable clang-format for generated code
+DisableFormat: true
+SortIncludes: false
+...
diff --git a/tools/Vulkan-Tools/vulkaninfo/generated/vulkaninfo.hpp b/tools/Vulkan-Tools/vulkaninfo/generated/vulkaninfo.hpp
new file mode 100644
index 00000000..2aaa17bb
--- /dev/null
+++ b/tools/Vulkan-Tools/vulkaninfo/generated/vulkaninfo.hpp
@@ -0,0 +1,13708 @@
+
+/*
+ * Copyright (c) 2019-2026 The Khronos Group Inc.
+ * Copyright (c) 2019-2026 Valve Corporation
+ * Copyright (c) 2019-2026 LunarG, Inc.
+ * Copyright (c) 2023-2024 RasterGrid Kft.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * Author: Charles Giessen <charles@lunarg.com>
+ *
+ */
+
+/*
+ * This file is generated from the Khronos Vulkan XML API Registry.
+ */
+
+#include "vulkaninfo.h"
+#include "outputprinter.h"
+
+template <typename T>
+std::string to_hex_str(const T i) {
+ std::stringstream stream;
+ stream << "0x" << std::setfill('0') << std::setw(sizeof(T)) << std::hex << i;
+ return stream.str();
+}
+
+template <typename T>
+std::string to_hex_str(Printer &p, const T i) {
+ if (p.Type() == OutputType::json)
+ return std::to_string(i);
+ else if (p.Type() == OutputType::vkconfig_output)
+ return std::string("\"") + to_hex_str(i) + std::string("\"");
+ else
+ return to_hex_str(i);
+}
+
+std::string StdVideoH264ChromaFormatIdcString(StdVideoH264ChromaFormatIdc value) {
+ switch (value) {
+ case STD_VIDEO_H264_CHROMA_FORMAT_IDC_MONOCHROME:
+ return "STD_VIDEO_H264_CHROMA_FORMAT_IDC_MONOCHROME";
+ case STD_VIDEO_H264_CHROMA_FORMAT_IDC_420:
+ return "STD_VIDEO_H264_CHROMA_FORMAT_IDC_420";
+ case STD_VIDEO_H264_CHROMA_FORMAT_IDC_422:
+ return "STD_VIDEO_H264_CHROMA_FORMAT_IDC_422";
+ case STD_VIDEO_H264_CHROMA_FORMAT_IDC_444:
+ return "STD_VIDEO_H264_CHROMA_FORMAT_IDC_444";
+ case STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID:
+ return "STD_VIDEO_H264_CHROMA_FORMAT_IDC_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoH264ChromaFormatIdc_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoH264ChromaFormatIdc(Printer &p, std::string name, StdVideoH264ChromaFormatIdc value) {
+ p.PrintKeyString(name, StdVideoH264ChromaFormatIdcString(value));
+}
+std::string StdVideoH264ProfileIdcString(StdVideoH264ProfileIdc value) {
+ switch (value) {
+ case STD_VIDEO_H264_PROFILE_IDC_BASELINE:
+ return "STD_VIDEO_H264_PROFILE_IDC_BASELINE";
+ case STD_VIDEO_H264_PROFILE_IDC_MAIN:
+ return "STD_VIDEO_H264_PROFILE_IDC_MAIN";
+ case STD_VIDEO_H264_PROFILE_IDC_HIGH:
+ return "STD_VIDEO_H264_PROFILE_IDC_HIGH";
+ case STD_VIDEO_H264_PROFILE_IDC_HIGH_444_PREDICTIVE:
+ return "STD_VIDEO_H264_PROFILE_IDC_HIGH_444_PREDICTIVE";
+ case STD_VIDEO_H264_PROFILE_IDC_INVALID:
+ return "STD_VIDEO_H264_PROFILE_IDC_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoH264ProfileIdc_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoH264ProfileIdc(Printer &p, std::string name, StdVideoH264ProfileIdc value) {
+ p.PrintKeyString(name, StdVideoH264ProfileIdcString(value));
+}
+std::string StdVideoH264LevelIdcString(StdVideoH264LevelIdc value) {
+ switch (value) {
+ case STD_VIDEO_H264_LEVEL_IDC_1_0:
+ return "STD_VIDEO_H264_LEVEL_IDC_1_0";
+ case STD_VIDEO_H264_LEVEL_IDC_1_1:
+ return "STD_VIDEO_H264_LEVEL_IDC_1_1";
+ case STD_VIDEO_H264_LEVEL_IDC_1_2:
+ return "STD_VIDEO_H264_LEVEL_IDC_1_2";
+ case STD_VIDEO_H264_LEVEL_IDC_1_3:
+ return "STD_VIDEO_H264_LEVEL_IDC_1_3";
+ case STD_VIDEO_H264_LEVEL_IDC_2_0:
+ return "STD_VIDEO_H264_LEVEL_IDC_2_0";
+ case STD_VIDEO_H264_LEVEL_IDC_2_1:
+ return "STD_VIDEO_H264_LEVEL_IDC_2_1";
+ case STD_VIDEO_H264_LEVEL_IDC_2_2:
+ return "STD_VIDEO_H264_LEVEL_IDC_2_2";
+ case STD_VIDEO_H264_LEVEL_IDC_3_0:
+ return "STD_VIDEO_H264_LEVEL_IDC_3_0";
+ case STD_VIDEO_H264_LEVEL_IDC_3_1:
+ return "STD_VIDEO_H264_LEVEL_IDC_3_1";
+ case STD_VIDEO_H264_LEVEL_IDC_3_2:
+ return "STD_VIDEO_H264_LEVEL_IDC_3_2";
+ case STD_VIDEO_H264_LEVEL_IDC_4_0:
+ return "STD_VIDEO_H264_LEVEL_IDC_4_0";
+ case STD_VIDEO_H264_LEVEL_IDC_4_1:
+ return "STD_VIDEO_H264_LEVEL_IDC_4_1";
+ case STD_VIDEO_H264_LEVEL_IDC_4_2:
+ return "STD_VIDEO_H264_LEVEL_IDC_4_2";
+ case STD_VIDEO_H264_LEVEL_IDC_5_0:
+ return "STD_VIDEO_H264_LEVEL_IDC_5_0";
+ case STD_VIDEO_H264_LEVEL_IDC_5_1:
+ return "STD_VIDEO_H264_LEVEL_IDC_5_1";
+ case STD_VIDEO_H264_LEVEL_IDC_5_2:
+ return "STD_VIDEO_H264_LEVEL_IDC_5_2";
+ case STD_VIDEO_H264_LEVEL_IDC_6_0:
+ return "STD_VIDEO_H264_LEVEL_IDC_6_0";
+ case STD_VIDEO_H264_LEVEL_IDC_6_1:
+ return "STD_VIDEO_H264_LEVEL_IDC_6_1";
+ case STD_VIDEO_H264_LEVEL_IDC_6_2:
+ return "STD_VIDEO_H264_LEVEL_IDC_6_2";
+ case STD_VIDEO_H264_LEVEL_IDC_INVALID:
+ return "STD_VIDEO_H264_LEVEL_IDC_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoH264LevelIdc_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoH264LevelIdc(Printer &p, std::string name, StdVideoH264LevelIdc value) {
+ p.PrintKeyString(name, StdVideoH264LevelIdcString(value));
+}
+std::string StdVideoH264PocTypeString(StdVideoH264PocType value) {
+ switch (value) {
+ case STD_VIDEO_H264_POC_TYPE_0:
+ return "STD_VIDEO_H264_POC_TYPE_0";
+ case STD_VIDEO_H264_POC_TYPE_1:
+ return "STD_VIDEO_H264_POC_TYPE_1";
+ case STD_VIDEO_H264_POC_TYPE_2:
+ return "STD_VIDEO_H264_POC_TYPE_2";
+ case STD_VIDEO_H264_POC_TYPE_INVALID:
+ return "STD_VIDEO_H264_POC_TYPE_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoH264PocType_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoH264PocType(Printer &p, std::string name, StdVideoH264PocType value) {
+ p.PrintKeyString(name, StdVideoH264PocTypeString(value));
+}
+std::string StdVideoH264AspectRatioIdcString(StdVideoH264AspectRatioIdc value) {
+ switch (value) {
+ case STD_VIDEO_H264_ASPECT_RATIO_IDC_UNSPECIFIED:
+ return "STD_VIDEO_H264_ASPECT_RATIO_IDC_UNSPECIFIED";
+ case STD_VIDEO_H264_ASPECT_RATIO_IDC_SQUARE:
+ return "STD_VIDEO_H264_ASPECT_RATIO_IDC_SQUARE";
+ case STD_VIDEO_H264_ASPECT_RATIO_IDC_12_11:
+ return "STD_VIDEO_H264_ASPECT_RATIO_IDC_12_11";
+ case STD_VIDEO_H264_ASPECT_RATIO_IDC_10_11:
+ return "STD_VIDEO_H264_ASPECT_RATIO_IDC_10_11";
+ case STD_VIDEO_H264_ASPECT_RATIO_IDC_16_11:
+ return "STD_VIDEO_H264_ASPECT_RATIO_IDC_16_11";
+ case STD_VIDEO_H264_ASPECT_RATIO_IDC_40_33:
+ return "STD_VIDEO_H264_ASPECT_RATIO_IDC_40_33";
+ case STD_VIDEO_H264_ASPECT_RATIO_IDC_24_11:
+ return "STD_VIDEO_H264_ASPECT_RATIO_IDC_24_11";
+ case STD_VIDEO_H264_ASPECT_RATIO_IDC_20_11:
+ return "STD_VIDEO_H264_ASPECT_RATIO_IDC_20_11";
+ case STD_VIDEO_H264_ASPECT_RATIO_IDC_32_11:
+ return "STD_VIDEO_H264_ASPECT_RATIO_IDC_32_11";
+ case STD_VIDEO_H264_ASPECT_RATIO_IDC_80_33:
+ return "STD_VIDEO_H264_ASPECT_RATIO_IDC_80_33";
+ case STD_VIDEO_H264_ASPECT_RATIO_IDC_18_11:
+ return "STD_VIDEO_H264_ASPECT_RATIO_IDC_18_11";
+ case STD_VIDEO_H264_ASPECT_RATIO_IDC_15_11:
+ return "STD_VIDEO_H264_ASPECT_RATIO_IDC_15_11";
+ case STD_VIDEO_H264_ASPECT_RATIO_IDC_64_33:
+ return "STD_VIDEO_H264_ASPECT_RATIO_IDC_64_33";
+ case STD_VIDEO_H264_ASPECT_RATIO_IDC_160_99:
+ return "STD_VIDEO_H264_ASPECT_RATIO_IDC_160_99";
+ case STD_VIDEO_H264_ASPECT_RATIO_IDC_4_3:
+ return "STD_VIDEO_H264_ASPECT_RATIO_IDC_4_3";
+ case STD_VIDEO_H264_ASPECT_RATIO_IDC_3_2:
+ return "STD_VIDEO_H264_ASPECT_RATIO_IDC_3_2";
+ case STD_VIDEO_H264_ASPECT_RATIO_IDC_2_1:
+ return "STD_VIDEO_H264_ASPECT_RATIO_IDC_2_1";
+ case STD_VIDEO_H264_ASPECT_RATIO_IDC_EXTENDED_SAR:
+ return "STD_VIDEO_H264_ASPECT_RATIO_IDC_EXTENDED_SAR";
+ case STD_VIDEO_H264_ASPECT_RATIO_IDC_INVALID:
+ return "STD_VIDEO_H264_ASPECT_RATIO_IDC_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoH264AspectRatioIdc_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoH264AspectRatioIdc(Printer &p, std::string name, StdVideoH264AspectRatioIdc value) {
+ p.PrintKeyString(name, StdVideoH264AspectRatioIdcString(value));
+}
+std::string StdVideoH264WeightedBipredIdcString(StdVideoH264WeightedBipredIdc value) {
+ switch (value) {
+ case STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT:
+ return "STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_DEFAULT";
+ case STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT:
+ return "STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT";
+ case STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT:
+ return "STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT";
+ case STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID:
+ return "STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoH264WeightedBipredIdc_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoH264WeightedBipredIdc(Printer &p, std::string name, StdVideoH264WeightedBipredIdc value) {
+ p.PrintKeyString(name, StdVideoH264WeightedBipredIdcString(value));
+}
+std::string StdVideoH264ModificationOfPicNumsIdcString(StdVideoH264ModificationOfPicNumsIdc value) {
+ switch (value) {
+ case STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_SHORT_TERM_SUBTRACT:
+ return "STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_SHORT_TERM_SUBTRACT";
+ case STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_SHORT_TERM_ADD:
+ return "STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_SHORT_TERM_ADD";
+ case STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_LONG_TERM:
+ return "STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_LONG_TERM";
+ case STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_END:
+ return "STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_END";
+ case STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_INVALID:
+ return "STD_VIDEO_H264_MODIFICATION_OF_PIC_NUMS_IDC_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoH264ModificationOfPicNumsIdc_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoH264ModificationOfPicNumsIdc(Printer &p, std::string name, StdVideoH264ModificationOfPicNumsIdc value) {
+ p.PrintKeyString(name, StdVideoH264ModificationOfPicNumsIdcString(value));
+}
+std::string StdVideoH264MemMgmtControlOpString(StdVideoH264MemMgmtControlOp value) {
+ switch (value) {
+ case STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_END:
+ return "STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_END";
+ case STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_SHORT_TERM:
+ return "STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_SHORT_TERM";
+ case STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_LONG_TERM:
+ return "STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_LONG_TERM";
+ case STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MARK_LONG_TERM:
+ return "STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MARK_LONG_TERM";
+ case STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_SET_MAX_LONG_TERM_INDEX:
+ return "STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_SET_MAX_LONG_TERM_INDEX";
+ case STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_ALL:
+ return "STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_UNMARK_ALL";
+ case STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MARK_CURRENT_AS_LONG_TERM:
+ return "STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_MARK_CURRENT_AS_LONG_TERM";
+ case STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_INVALID:
+ return "STD_VIDEO_H264_MEM_MGMT_CONTROL_OP_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoH264MemMgmtControlOp_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoH264MemMgmtControlOp(Printer &p, std::string name, StdVideoH264MemMgmtControlOp value) {
+ p.PrintKeyString(name, StdVideoH264MemMgmtControlOpString(value));
+}
+std::string StdVideoH264CabacInitIdcString(StdVideoH264CabacInitIdc value) {
+ switch (value) {
+ case STD_VIDEO_H264_CABAC_INIT_IDC_0:
+ return "STD_VIDEO_H264_CABAC_INIT_IDC_0";
+ case STD_VIDEO_H264_CABAC_INIT_IDC_1:
+ return "STD_VIDEO_H264_CABAC_INIT_IDC_1";
+ case STD_VIDEO_H264_CABAC_INIT_IDC_2:
+ return "STD_VIDEO_H264_CABAC_INIT_IDC_2";
+ case STD_VIDEO_H264_CABAC_INIT_IDC_INVALID:
+ return "STD_VIDEO_H264_CABAC_INIT_IDC_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoH264CabacInitIdc_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoH264CabacInitIdc(Printer &p, std::string name, StdVideoH264CabacInitIdc value) {
+ p.PrintKeyString(name, StdVideoH264CabacInitIdcString(value));
+}
+std::string StdVideoH264DisableDeblockingFilterIdcString(StdVideoH264DisableDeblockingFilterIdc value) {
+ switch (value) {
+ case STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_DISABLED:
+ return "STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_DISABLED";
+ case STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_ENABLED:
+ return "STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_ENABLED";
+ case STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_PARTIAL:
+ return "STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_PARTIAL";
+ case STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_INVALID:
+ return "STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoH264DisableDeblockingFilterIdc_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoH264DisableDeblockingFilterIdc(Printer &p, std::string name, StdVideoH264DisableDeblockingFilterIdc value) {
+ p.PrintKeyString(name, StdVideoH264DisableDeblockingFilterIdcString(value));
+}
+std::string StdVideoH264SliceTypeString(StdVideoH264SliceType value) {
+ switch (value) {
+ case STD_VIDEO_H264_SLICE_TYPE_P:
+ return "STD_VIDEO_H264_SLICE_TYPE_P";
+ case STD_VIDEO_H264_SLICE_TYPE_B:
+ return "STD_VIDEO_H264_SLICE_TYPE_B";
+ case STD_VIDEO_H264_SLICE_TYPE_I:
+ return "STD_VIDEO_H264_SLICE_TYPE_I";
+ case STD_VIDEO_H264_SLICE_TYPE_INVALID:
+ return "STD_VIDEO_H264_SLICE_TYPE_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoH264SliceType_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoH264SliceType(Printer &p, std::string name, StdVideoH264SliceType value) {
+ p.PrintKeyString(name, StdVideoH264SliceTypeString(value));
+}
+std::string StdVideoH264PictureTypeString(StdVideoH264PictureType value) {
+ switch (value) {
+ case STD_VIDEO_H264_PICTURE_TYPE_P:
+ return "STD_VIDEO_H264_PICTURE_TYPE_P";
+ case STD_VIDEO_H264_PICTURE_TYPE_B:
+ return "STD_VIDEO_H264_PICTURE_TYPE_B";
+ case STD_VIDEO_H264_PICTURE_TYPE_I:
+ return "STD_VIDEO_H264_PICTURE_TYPE_I";
+ case STD_VIDEO_H264_PICTURE_TYPE_IDR:
+ return "STD_VIDEO_H264_PICTURE_TYPE_IDR";
+ case STD_VIDEO_H264_PICTURE_TYPE_INVALID:
+ return "STD_VIDEO_H264_PICTURE_TYPE_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoH264PictureType_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoH264PictureType(Printer &p, std::string name, StdVideoH264PictureType value) {
+ p.PrintKeyString(name, StdVideoH264PictureTypeString(value));
+}
+std::string StdVideoH264NonVclNaluTypeString(StdVideoH264NonVclNaluType value) {
+ switch (value) {
+ case STD_VIDEO_H264_NON_VCL_NALU_TYPE_SPS:
+ return "STD_VIDEO_H264_NON_VCL_NALU_TYPE_SPS";
+ case STD_VIDEO_H264_NON_VCL_NALU_TYPE_PPS:
+ return "STD_VIDEO_H264_NON_VCL_NALU_TYPE_PPS";
+ case STD_VIDEO_H264_NON_VCL_NALU_TYPE_AUD:
+ return "STD_VIDEO_H264_NON_VCL_NALU_TYPE_AUD";
+ case STD_VIDEO_H264_NON_VCL_NALU_TYPE_PREFIX:
+ return "STD_VIDEO_H264_NON_VCL_NALU_TYPE_PREFIX";
+ case STD_VIDEO_H264_NON_VCL_NALU_TYPE_END_OF_SEQUENCE:
+ return "STD_VIDEO_H264_NON_VCL_NALU_TYPE_END_OF_SEQUENCE";
+ case STD_VIDEO_H264_NON_VCL_NALU_TYPE_END_OF_STREAM:
+ return "STD_VIDEO_H264_NON_VCL_NALU_TYPE_END_OF_STREAM";
+ case STD_VIDEO_H264_NON_VCL_NALU_TYPE_PRECODED:
+ return "STD_VIDEO_H264_NON_VCL_NALU_TYPE_PRECODED";
+ case STD_VIDEO_H264_NON_VCL_NALU_TYPE_INVALID:
+ return "STD_VIDEO_H264_NON_VCL_NALU_TYPE_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoH264NonVclNaluType_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoH264NonVclNaluType(Printer &p, std::string name, StdVideoH264NonVclNaluType value) {
+ p.PrintKeyString(name, StdVideoH264NonVclNaluTypeString(value));
+}
+std::string StdVideoDecodeH264FieldOrderCountString(StdVideoDecodeH264FieldOrderCount value) {
+ switch (value) {
+ case STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP:
+ return "STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_TOP";
+ case STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM:
+ return "STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_BOTTOM";
+ case STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID:
+ return "STD_VIDEO_DECODE_H264_FIELD_ORDER_COUNT_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoDecodeH264FieldOrderCount_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoDecodeH264FieldOrderCount(Printer &p, std::string name, StdVideoDecodeH264FieldOrderCount value) {
+ p.PrintKeyString(name, StdVideoDecodeH264FieldOrderCountString(value));
+}
+std::string StdVideoH265ChromaFormatIdcString(StdVideoH265ChromaFormatIdc value) {
+ switch (value) {
+ case STD_VIDEO_H265_CHROMA_FORMAT_IDC_MONOCHROME:
+ return "STD_VIDEO_H265_CHROMA_FORMAT_IDC_MONOCHROME";
+ case STD_VIDEO_H265_CHROMA_FORMAT_IDC_420:
+ return "STD_VIDEO_H265_CHROMA_FORMAT_IDC_420";
+ case STD_VIDEO_H265_CHROMA_FORMAT_IDC_422:
+ return "STD_VIDEO_H265_CHROMA_FORMAT_IDC_422";
+ case STD_VIDEO_H265_CHROMA_FORMAT_IDC_444:
+ return "STD_VIDEO_H265_CHROMA_FORMAT_IDC_444";
+ case STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID:
+ return "STD_VIDEO_H265_CHROMA_FORMAT_IDC_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoH265ChromaFormatIdc_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoH265ChromaFormatIdc(Printer &p, std::string name, StdVideoH265ChromaFormatIdc value) {
+ p.PrintKeyString(name, StdVideoH265ChromaFormatIdcString(value));
+}
+std::string StdVideoH265ProfileIdcString(StdVideoH265ProfileIdc value) {
+ switch (value) {
+ case STD_VIDEO_H265_PROFILE_IDC_MAIN:
+ return "STD_VIDEO_H265_PROFILE_IDC_MAIN";
+ case STD_VIDEO_H265_PROFILE_IDC_MAIN_10:
+ return "STD_VIDEO_H265_PROFILE_IDC_MAIN_10";
+ case STD_VIDEO_H265_PROFILE_IDC_MAIN_STILL_PICTURE:
+ return "STD_VIDEO_H265_PROFILE_IDC_MAIN_STILL_PICTURE";
+ case STD_VIDEO_H265_PROFILE_IDC_FORMAT_RANGE_EXTENSIONS:
+ return "STD_VIDEO_H265_PROFILE_IDC_FORMAT_RANGE_EXTENSIONS";
+ case STD_VIDEO_H265_PROFILE_IDC_SCC_EXTENSIONS:
+ return "STD_VIDEO_H265_PROFILE_IDC_SCC_EXTENSIONS";
+ case STD_VIDEO_H265_PROFILE_IDC_INVALID:
+ return "STD_VIDEO_H265_PROFILE_IDC_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoH265ProfileIdc_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoH265ProfileIdc(Printer &p, std::string name, StdVideoH265ProfileIdc value) {
+ p.PrintKeyString(name, StdVideoH265ProfileIdcString(value));
+}
+std::string StdVideoH265LevelIdcString(StdVideoH265LevelIdc value) {
+ switch (value) {
+ case STD_VIDEO_H265_LEVEL_IDC_1_0:
+ return "STD_VIDEO_H265_LEVEL_IDC_1_0";
+ case STD_VIDEO_H265_LEVEL_IDC_2_0:
+ return "STD_VIDEO_H265_LEVEL_IDC_2_0";
+ case STD_VIDEO_H265_LEVEL_IDC_2_1:
+ return "STD_VIDEO_H265_LEVEL_IDC_2_1";
+ case STD_VIDEO_H265_LEVEL_IDC_3_0:
+ return "STD_VIDEO_H265_LEVEL_IDC_3_0";
+ case STD_VIDEO_H265_LEVEL_IDC_3_1:
+ return "STD_VIDEO_H265_LEVEL_IDC_3_1";
+ case STD_VIDEO_H265_LEVEL_IDC_4_0:
+ return "STD_VIDEO_H265_LEVEL_IDC_4_0";
+ case STD_VIDEO_H265_LEVEL_IDC_4_1:
+ return "STD_VIDEO_H265_LEVEL_IDC_4_1";
+ case STD_VIDEO_H265_LEVEL_IDC_5_0:
+ return "STD_VIDEO_H265_LEVEL_IDC_5_0";
+ case STD_VIDEO_H265_LEVEL_IDC_5_1:
+ return "STD_VIDEO_H265_LEVEL_IDC_5_1";
+ case STD_VIDEO_H265_LEVEL_IDC_5_2:
+ return "STD_VIDEO_H265_LEVEL_IDC_5_2";
+ case STD_VIDEO_H265_LEVEL_IDC_6_0:
+ return "STD_VIDEO_H265_LEVEL_IDC_6_0";
+ case STD_VIDEO_H265_LEVEL_IDC_6_1:
+ return "STD_VIDEO_H265_LEVEL_IDC_6_1";
+ case STD_VIDEO_H265_LEVEL_IDC_6_2:
+ return "STD_VIDEO_H265_LEVEL_IDC_6_2";
+ case STD_VIDEO_H265_LEVEL_IDC_INVALID:
+ return "STD_VIDEO_H265_LEVEL_IDC_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoH265LevelIdc_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoH265LevelIdc(Printer &p, std::string name, StdVideoH265LevelIdc value) {
+ p.PrintKeyString(name, StdVideoH265LevelIdcString(value));
+}
+std::string StdVideoH265SliceTypeString(StdVideoH265SliceType value) {
+ switch (value) {
+ case STD_VIDEO_H265_SLICE_TYPE_B:
+ return "STD_VIDEO_H265_SLICE_TYPE_B";
+ case STD_VIDEO_H265_SLICE_TYPE_P:
+ return "STD_VIDEO_H265_SLICE_TYPE_P";
+ case STD_VIDEO_H265_SLICE_TYPE_I:
+ return "STD_VIDEO_H265_SLICE_TYPE_I";
+ case STD_VIDEO_H265_SLICE_TYPE_INVALID:
+ return "STD_VIDEO_H265_SLICE_TYPE_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoH265SliceType_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoH265SliceType(Printer &p, std::string name, StdVideoH265SliceType value) {
+ p.PrintKeyString(name, StdVideoH265SliceTypeString(value));
+}
+std::string StdVideoH265PictureTypeString(StdVideoH265PictureType value) {
+ switch (value) {
+ case STD_VIDEO_H265_PICTURE_TYPE_P:
+ return "STD_VIDEO_H265_PICTURE_TYPE_P";
+ case STD_VIDEO_H265_PICTURE_TYPE_B:
+ return "STD_VIDEO_H265_PICTURE_TYPE_B";
+ case STD_VIDEO_H265_PICTURE_TYPE_I:
+ return "STD_VIDEO_H265_PICTURE_TYPE_I";
+ case STD_VIDEO_H265_PICTURE_TYPE_IDR:
+ return "STD_VIDEO_H265_PICTURE_TYPE_IDR";
+ case STD_VIDEO_H265_PICTURE_TYPE_INVALID:
+ return "STD_VIDEO_H265_PICTURE_TYPE_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoH265PictureType_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoH265PictureType(Printer &p, std::string name, StdVideoH265PictureType value) {
+ p.PrintKeyString(name, StdVideoH265PictureTypeString(value));
+}
+std::string StdVideoH265AspectRatioIdcString(StdVideoH265AspectRatioIdc value) {
+ switch (value) {
+ case STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED:
+ return "STD_VIDEO_H265_ASPECT_RATIO_IDC_UNSPECIFIED";
+ case STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE:
+ return "STD_VIDEO_H265_ASPECT_RATIO_IDC_SQUARE";
+ case STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11:
+ return "STD_VIDEO_H265_ASPECT_RATIO_IDC_12_11";
+ case STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11:
+ return "STD_VIDEO_H265_ASPECT_RATIO_IDC_10_11";
+ case STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11:
+ return "STD_VIDEO_H265_ASPECT_RATIO_IDC_16_11";
+ case STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33:
+ return "STD_VIDEO_H265_ASPECT_RATIO_IDC_40_33";
+ case STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11:
+ return "STD_VIDEO_H265_ASPECT_RATIO_IDC_24_11";
+ case STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11:
+ return "STD_VIDEO_H265_ASPECT_RATIO_IDC_20_11";
+ case STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11:
+ return "STD_VIDEO_H265_ASPECT_RATIO_IDC_32_11";
+ case STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33:
+ return "STD_VIDEO_H265_ASPECT_RATIO_IDC_80_33";
+ case STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11:
+ return "STD_VIDEO_H265_ASPECT_RATIO_IDC_18_11";
+ case STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11:
+ return "STD_VIDEO_H265_ASPECT_RATIO_IDC_15_11";
+ case STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33:
+ return "STD_VIDEO_H265_ASPECT_RATIO_IDC_64_33";
+ case STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99:
+ return "STD_VIDEO_H265_ASPECT_RATIO_IDC_160_99";
+ case STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3:
+ return "STD_VIDEO_H265_ASPECT_RATIO_IDC_4_3";
+ case STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2:
+ return "STD_VIDEO_H265_ASPECT_RATIO_IDC_3_2";
+ case STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1:
+ return "STD_VIDEO_H265_ASPECT_RATIO_IDC_2_1";
+ case STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR:
+ return "STD_VIDEO_H265_ASPECT_RATIO_IDC_EXTENDED_SAR";
+ case STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID:
+ return "STD_VIDEO_H265_ASPECT_RATIO_IDC_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoH265AspectRatioIdc_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoH265AspectRatioIdc(Printer &p, std::string name, StdVideoH265AspectRatioIdc value) {
+ p.PrintKeyString(name, StdVideoH265AspectRatioIdcString(value));
+}
+std::string StdVideoAV1ProfileString(StdVideoAV1Profile value) {
+ switch (value) {
+ case STD_VIDEO_AV1_PROFILE_MAIN:
+ return "STD_VIDEO_AV1_PROFILE_MAIN";
+ case STD_VIDEO_AV1_PROFILE_HIGH:
+ return "STD_VIDEO_AV1_PROFILE_HIGH";
+ case STD_VIDEO_AV1_PROFILE_PROFESSIONAL:
+ return "STD_VIDEO_AV1_PROFILE_PROFESSIONAL";
+ case STD_VIDEO_AV1_PROFILE_INVALID:
+ return "STD_VIDEO_AV1_PROFILE_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoAV1Profile_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoAV1Profile(Printer &p, std::string name, StdVideoAV1Profile value) {
+ p.PrintKeyString(name, StdVideoAV1ProfileString(value));
+}
+std::string StdVideoAV1LevelString(StdVideoAV1Level value) {
+ switch (value) {
+ case STD_VIDEO_AV1_LEVEL_2_0:
+ return "STD_VIDEO_AV1_LEVEL_2_0";
+ case STD_VIDEO_AV1_LEVEL_2_1:
+ return "STD_VIDEO_AV1_LEVEL_2_1";
+ case STD_VIDEO_AV1_LEVEL_2_2:
+ return "STD_VIDEO_AV1_LEVEL_2_2";
+ case STD_VIDEO_AV1_LEVEL_2_3:
+ return "STD_VIDEO_AV1_LEVEL_2_3";
+ case STD_VIDEO_AV1_LEVEL_3_0:
+ return "STD_VIDEO_AV1_LEVEL_3_0";
+ case STD_VIDEO_AV1_LEVEL_3_1:
+ return "STD_VIDEO_AV1_LEVEL_3_1";
+ case STD_VIDEO_AV1_LEVEL_3_2:
+ return "STD_VIDEO_AV1_LEVEL_3_2";
+ case STD_VIDEO_AV1_LEVEL_3_3:
+ return "STD_VIDEO_AV1_LEVEL_3_3";
+ case STD_VIDEO_AV1_LEVEL_4_0:
+ return "STD_VIDEO_AV1_LEVEL_4_0";
+ case STD_VIDEO_AV1_LEVEL_4_1:
+ return "STD_VIDEO_AV1_LEVEL_4_1";
+ case STD_VIDEO_AV1_LEVEL_4_2:
+ return "STD_VIDEO_AV1_LEVEL_4_2";
+ case STD_VIDEO_AV1_LEVEL_4_3:
+ return "STD_VIDEO_AV1_LEVEL_4_3";
+ case STD_VIDEO_AV1_LEVEL_5_0:
+ return "STD_VIDEO_AV1_LEVEL_5_0";
+ case STD_VIDEO_AV1_LEVEL_5_1:
+ return "STD_VIDEO_AV1_LEVEL_5_1";
+ case STD_VIDEO_AV1_LEVEL_5_2:
+ return "STD_VIDEO_AV1_LEVEL_5_2";
+ case STD_VIDEO_AV1_LEVEL_5_3:
+ return "STD_VIDEO_AV1_LEVEL_5_3";
+ case STD_VIDEO_AV1_LEVEL_6_0:
+ return "STD_VIDEO_AV1_LEVEL_6_0";
+ case STD_VIDEO_AV1_LEVEL_6_1:
+ return "STD_VIDEO_AV1_LEVEL_6_1";
+ case STD_VIDEO_AV1_LEVEL_6_2:
+ return "STD_VIDEO_AV1_LEVEL_6_2";
+ case STD_VIDEO_AV1_LEVEL_6_3:
+ return "STD_VIDEO_AV1_LEVEL_6_3";
+ case STD_VIDEO_AV1_LEVEL_7_0:
+ return "STD_VIDEO_AV1_LEVEL_7_0";
+ case STD_VIDEO_AV1_LEVEL_7_1:
+ return "STD_VIDEO_AV1_LEVEL_7_1";
+ case STD_VIDEO_AV1_LEVEL_7_2:
+ return "STD_VIDEO_AV1_LEVEL_7_2";
+ case STD_VIDEO_AV1_LEVEL_7_3:
+ return "STD_VIDEO_AV1_LEVEL_7_3";
+ case STD_VIDEO_AV1_LEVEL_INVALID:
+ return "STD_VIDEO_AV1_LEVEL_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoAV1Level_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoAV1Level(Printer &p, std::string name, StdVideoAV1Level value) {
+ p.PrintKeyString(name, StdVideoAV1LevelString(value));
+}
+std::string StdVideoAV1FrameTypeString(StdVideoAV1FrameType value) {
+ switch (value) {
+ case STD_VIDEO_AV1_FRAME_TYPE_KEY:
+ return "STD_VIDEO_AV1_FRAME_TYPE_KEY";
+ case STD_VIDEO_AV1_FRAME_TYPE_INTER:
+ return "STD_VIDEO_AV1_FRAME_TYPE_INTER";
+ case STD_VIDEO_AV1_FRAME_TYPE_INTRA_ONLY:
+ return "STD_VIDEO_AV1_FRAME_TYPE_INTRA_ONLY";
+ case STD_VIDEO_AV1_FRAME_TYPE_SWITCH:
+ return "STD_VIDEO_AV1_FRAME_TYPE_SWITCH";
+ case STD_VIDEO_AV1_FRAME_TYPE_INVALID:
+ return "STD_VIDEO_AV1_FRAME_TYPE_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoAV1FrameType_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoAV1FrameType(Printer &p, std::string name, StdVideoAV1FrameType value) {
+ p.PrintKeyString(name, StdVideoAV1FrameTypeString(value));
+}
+std::string StdVideoAV1ReferenceNameString(StdVideoAV1ReferenceName value) {
+ switch (value) {
+ case STD_VIDEO_AV1_REFERENCE_NAME_INTRA_FRAME:
+ return "STD_VIDEO_AV1_REFERENCE_NAME_INTRA_FRAME";
+ case STD_VIDEO_AV1_REFERENCE_NAME_LAST_FRAME:
+ return "STD_VIDEO_AV1_REFERENCE_NAME_LAST_FRAME";
+ case STD_VIDEO_AV1_REFERENCE_NAME_LAST2_FRAME:
+ return "STD_VIDEO_AV1_REFERENCE_NAME_LAST2_FRAME";
+ case STD_VIDEO_AV1_REFERENCE_NAME_LAST3_FRAME:
+ return "STD_VIDEO_AV1_REFERENCE_NAME_LAST3_FRAME";
+ case STD_VIDEO_AV1_REFERENCE_NAME_GOLDEN_FRAME:
+ return "STD_VIDEO_AV1_REFERENCE_NAME_GOLDEN_FRAME";
+ case STD_VIDEO_AV1_REFERENCE_NAME_BWDREF_FRAME:
+ return "STD_VIDEO_AV1_REFERENCE_NAME_BWDREF_FRAME";
+ case STD_VIDEO_AV1_REFERENCE_NAME_ALTREF2_FRAME:
+ return "STD_VIDEO_AV1_REFERENCE_NAME_ALTREF2_FRAME";
+ case STD_VIDEO_AV1_REFERENCE_NAME_ALTREF_FRAME:
+ return "STD_VIDEO_AV1_REFERENCE_NAME_ALTREF_FRAME";
+ case STD_VIDEO_AV1_REFERENCE_NAME_INVALID:
+ return "STD_VIDEO_AV1_REFERENCE_NAME_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoAV1ReferenceName_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoAV1ReferenceName(Printer &p, std::string name, StdVideoAV1ReferenceName value) {
+ p.PrintKeyString(name, StdVideoAV1ReferenceNameString(value));
+}
+std::string StdVideoAV1InterpolationFilterString(StdVideoAV1InterpolationFilter value) {
+ switch (value) {
+ case STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP:
+ return "STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP";
+ case STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH:
+ return "STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH";
+ case STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP:
+ return "STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP";
+ case STD_VIDEO_AV1_INTERPOLATION_FILTER_BILINEAR:
+ return "STD_VIDEO_AV1_INTERPOLATION_FILTER_BILINEAR";
+ case STD_VIDEO_AV1_INTERPOLATION_FILTER_SWITCHABLE:
+ return "STD_VIDEO_AV1_INTERPOLATION_FILTER_SWITCHABLE";
+ case STD_VIDEO_AV1_INTERPOLATION_FILTER_INVALID:
+ return "STD_VIDEO_AV1_INTERPOLATION_FILTER_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoAV1InterpolationFilter_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoAV1InterpolationFilter(Printer &p, std::string name, StdVideoAV1InterpolationFilter value) {
+ p.PrintKeyString(name, StdVideoAV1InterpolationFilterString(value));
+}
+std::string StdVideoAV1TxModeString(StdVideoAV1TxMode value) {
+ switch (value) {
+ case STD_VIDEO_AV1_TX_MODE_ONLY_4X4:
+ return "STD_VIDEO_AV1_TX_MODE_ONLY_4X4";
+ case STD_VIDEO_AV1_TX_MODE_LARGEST:
+ return "STD_VIDEO_AV1_TX_MODE_LARGEST";
+ case STD_VIDEO_AV1_TX_MODE_SELECT:
+ return "STD_VIDEO_AV1_TX_MODE_SELECT";
+ case STD_VIDEO_AV1_TX_MODE_INVALID:
+ return "STD_VIDEO_AV1_TX_MODE_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoAV1TxMode_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoAV1TxMode(Printer &p, std::string name, StdVideoAV1TxMode value) {
+ p.PrintKeyString(name, StdVideoAV1TxModeString(value));
+}
+std::string StdVideoAV1FrameRestorationTypeString(StdVideoAV1FrameRestorationType value) {
+ switch (value) {
+ case STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_NONE:
+ return "STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_NONE";
+ case STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_WIENER:
+ return "STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_WIENER";
+ case STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SGRPROJ:
+ return "STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SGRPROJ";
+ case STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SWITCHABLE:
+ return "STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SWITCHABLE";
+ case STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_INVALID:
+ return "STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoAV1FrameRestorationType_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoAV1FrameRestorationType(Printer &p, std::string name, StdVideoAV1FrameRestorationType value) {
+ p.PrintKeyString(name, StdVideoAV1FrameRestorationTypeString(value));
+}
+std::string StdVideoAV1ColorPrimariesString(StdVideoAV1ColorPrimaries value) {
+ switch (value) {
+ case STD_VIDEO_AV1_COLOR_PRIMARIES_BT_709:
+ return "STD_VIDEO_AV1_COLOR_PRIMARIES_BT_709";
+ case STD_VIDEO_AV1_COLOR_PRIMARIES_UNSPECIFIED:
+ return "STD_VIDEO_AV1_COLOR_PRIMARIES_UNSPECIFIED";
+ case STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_M:
+ return "STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_M";
+ case STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_B_G:
+ return "STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_B_G";
+ case STD_VIDEO_AV1_COLOR_PRIMARIES_BT_601:
+ return "STD_VIDEO_AV1_COLOR_PRIMARIES_BT_601";
+ case STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_240:
+ return "STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_240";
+ case STD_VIDEO_AV1_COLOR_PRIMARIES_GENERIC_FILM:
+ return "STD_VIDEO_AV1_COLOR_PRIMARIES_GENERIC_FILM";
+ case STD_VIDEO_AV1_COLOR_PRIMARIES_BT_2020:
+ return "STD_VIDEO_AV1_COLOR_PRIMARIES_BT_2020";
+ case STD_VIDEO_AV1_COLOR_PRIMARIES_XYZ:
+ return "STD_VIDEO_AV1_COLOR_PRIMARIES_XYZ";
+ case STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_431:
+ return "STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_431";
+ case STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_432:
+ return "STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_432";
+ case STD_VIDEO_AV1_COLOR_PRIMARIES_EBU_3213:
+ return "STD_VIDEO_AV1_COLOR_PRIMARIES_EBU_3213";
+ case STD_VIDEO_AV1_COLOR_PRIMARIES_INVALID:
+ return "STD_VIDEO_AV1_COLOR_PRIMARIES_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoAV1ColorPrimaries_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoAV1ColorPrimaries(Printer &p, std::string name, StdVideoAV1ColorPrimaries value) {
+ p.PrintKeyString(name, StdVideoAV1ColorPrimariesString(value));
+}
+std::string StdVideoAV1TransferCharacteristicsString(StdVideoAV1TransferCharacteristics value) {
+ switch (value) {
+ case STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_0:
+ return "STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_0";
+ case STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_709:
+ return "STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_709";
+ case STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_UNSPECIFIED:
+ return "STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_UNSPECIFIED";
+ case STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_3:
+ return "STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_3";
+ case STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_M:
+ return "STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_M";
+ case STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_B_G:
+ return "STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_B_G";
+ case STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_601:
+ return "STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_601";
+ case STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_240:
+ return "STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_240";
+ case STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LINEAR:
+ return "STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LINEAR";
+ case STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100:
+ return "STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100";
+ case STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100_SQRT10:
+ return "STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100_SQRT10";
+ case STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_IEC_61966:
+ return "STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_IEC_61966";
+ case STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_1361:
+ return "STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_1361";
+ case STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SRGB:
+ return "STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SRGB";
+ case STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_10_BIT:
+ return "STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_10_BIT";
+ case STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_12_BIT:
+ return "STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_12_BIT";
+ case STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_2084:
+ return "STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_2084";
+ case STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_428:
+ return "STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_428";
+ case STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_HLG:
+ return "STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_HLG";
+ case STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_INVALID:
+ return "STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoAV1TransferCharacteristics_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoAV1TransferCharacteristics(Printer &p, std::string name, StdVideoAV1TransferCharacteristics value) {
+ p.PrintKeyString(name, StdVideoAV1TransferCharacteristicsString(value));
+}
+std::string StdVideoAV1MatrixCoefficientsString(StdVideoAV1MatrixCoefficients value) {
+ switch (value) {
+ case STD_VIDEO_AV1_MATRIX_COEFFICIENTS_IDENTITY:
+ return "STD_VIDEO_AV1_MATRIX_COEFFICIENTS_IDENTITY";
+ case STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_709:
+ return "STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_709";
+ case STD_VIDEO_AV1_MATRIX_COEFFICIENTS_UNSPECIFIED:
+ return "STD_VIDEO_AV1_MATRIX_COEFFICIENTS_UNSPECIFIED";
+ case STD_VIDEO_AV1_MATRIX_COEFFICIENTS_RESERVED_3:
+ return "STD_VIDEO_AV1_MATRIX_COEFFICIENTS_RESERVED_3";
+ case STD_VIDEO_AV1_MATRIX_COEFFICIENTS_FCC:
+ return "STD_VIDEO_AV1_MATRIX_COEFFICIENTS_FCC";
+ case STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_470_B_G:
+ return "STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_470_B_G";
+ case STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_601:
+ return "STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_601";
+ case STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_240:
+ return "STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_240";
+ case STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_YCGCO:
+ return "STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_YCGCO";
+ case STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_NCL:
+ return "STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_NCL";
+ case STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_CL:
+ return "STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_CL";
+ case STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_2085:
+ return "STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_2085";
+ case STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_NCL:
+ return "STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_NCL";
+ case STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_CL:
+ return "STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_CL";
+ case STD_VIDEO_AV1_MATRIX_COEFFICIENTS_ICTCP:
+ return "STD_VIDEO_AV1_MATRIX_COEFFICIENTS_ICTCP";
+ case STD_VIDEO_AV1_MATRIX_COEFFICIENTS_INVALID:
+ return "STD_VIDEO_AV1_MATRIX_COEFFICIENTS_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoAV1MatrixCoefficients_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoAV1MatrixCoefficients(Printer &p, std::string name, StdVideoAV1MatrixCoefficients value) {
+ p.PrintKeyString(name, StdVideoAV1MatrixCoefficientsString(value));
+}
+std::string StdVideoAV1ChromaSamplePositionString(StdVideoAV1ChromaSamplePosition value) {
+ switch (value) {
+ case STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_UNKNOWN:
+ return "STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_UNKNOWN";
+ case STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_VERTICAL:
+ return "STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_VERTICAL";
+ case STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_COLOCATED:
+ return "STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_COLOCATED";
+ case STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_RESERVED:
+ return "STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_RESERVED";
+ case STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_INVALID:
+ return "STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoAV1ChromaSamplePosition_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoAV1ChromaSamplePosition(Printer &p, std::string name, StdVideoAV1ChromaSamplePosition value) {
+ p.PrintKeyString(name, StdVideoAV1ChromaSamplePositionString(value));
+}
+std::string StdVideoVP9ProfileString(StdVideoVP9Profile value) {
+ switch (value) {
+ case STD_VIDEO_VP9_PROFILE_0:
+ return "STD_VIDEO_VP9_PROFILE_0";
+ case STD_VIDEO_VP9_PROFILE_1:
+ return "STD_VIDEO_VP9_PROFILE_1";
+ case STD_VIDEO_VP9_PROFILE_2:
+ return "STD_VIDEO_VP9_PROFILE_2";
+ case STD_VIDEO_VP9_PROFILE_3:
+ return "STD_VIDEO_VP9_PROFILE_3";
+ case STD_VIDEO_VP9_PROFILE_INVALID:
+ return "STD_VIDEO_VP9_PROFILE_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoVP9Profile_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoVP9Profile(Printer &p, std::string name, StdVideoVP9Profile value) {
+ p.PrintKeyString(name, StdVideoVP9ProfileString(value));
+}
+std::string StdVideoVP9LevelString(StdVideoVP9Level value) {
+ switch (value) {
+ case STD_VIDEO_VP9_LEVEL_1_0:
+ return "STD_VIDEO_VP9_LEVEL_1_0";
+ case STD_VIDEO_VP9_LEVEL_1_1:
+ return "STD_VIDEO_VP9_LEVEL_1_1";
+ case STD_VIDEO_VP9_LEVEL_2_0:
+ return "STD_VIDEO_VP9_LEVEL_2_0";
+ case STD_VIDEO_VP9_LEVEL_2_1:
+ return "STD_VIDEO_VP9_LEVEL_2_1";
+ case STD_VIDEO_VP9_LEVEL_3_0:
+ return "STD_VIDEO_VP9_LEVEL_3_0";
+ case STD_VIDEO_VP9_LEVEL_3_1:
+ return "STD_VIDEO_VP9_LEVEL_3_1";
+ case STD_VIDEO_VP9_LEVEL_4_0:
+ return "STD_VIDEO_VP9_LEVEL_4_0";
+ case STD_VIDEO_VP9_LEVEL_4_1:
+ return "STD_VIDEO_VP9_LEVEL_4_1";
+ case STD_VIDEO_VP9_LEVEL_5_0:
+ return "STD_VIDEO_VP9_LEVEL_5_0";
+ case STD_VIDEO_VP9_LEVEL_5_1:
+ return "STD_VIDEO_VP9_LEVEL_5_1";
+ case STD_VIDEO_VP9_LEVEL_5_2:
+ return "STD_VIDEO_VP9_LEVEL_5_2";
+ case STD_VIDEO_VP9_LEVEL_6_0:
+ return "STD_VIDEO_VP9_LEVEL_6_0";
+ case STD_VIDEO_VP9_LEVEL_6_1:
+ return "STD_VIDEO_VP9_LEVEL_6_1";
+ case STD_VIDEO_VP9_LEVEL_6_2:
+ return "STD_VIDEO_VP9_LEVEL_6_2";
+ case STD_VIDEO_VP9_LEVEL_INVALID:
+ return "STD_VIDEO_VP9_LEVEL_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoVP9Level_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoVP9Level(Printer &p, std::string name, StdVideoVP9Level value) {
+ p.PrintKeyString(name, StdVideoVP9LevelString(value));
+}
+std::string StdVideoVP9FrameTypeString(StdVideoVP9FrameType value) {
+ switch (value) {
+ case STD_VIDEO_VP9_FRAME_TYPE_KEY:
+ return "STD_VIDEO_VP9_FRAME_TYPE_KEY";
+ case STD_VIDEO_VP9_FRAME_TYPE_NON_KEY:
+ return "STD_VIDEO_VP9_FRAME_TYPE_NON_KEY";
+ case STD_VIDEO_VP9_FRAME_TYPE_INVALID:
+ return "STD_VIDEO_VP9_FRAME_TYPE_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoVP9FrameType_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoVP9FrameType(Printer &p, std::string name, StdVideoVP9FrameType value) {
+ p.PrintKeyString(name, StdVideoVP9FrameTypeString(value));
+}
+std::string StdVideoVP9ReferenceNameString(StdVideoVP9ReferenceName value) {
+ switch (value) {
+ case STD_VIDEO_VP9_REFERENCE_NAME_INTRA_FRAME:
+ return "STD_VIDEO_VP9_REFERENCE_NAME_INTRA_FRAME";
+ case STD_VIDEO_VP9_REFERENCE_NAME_LAST_FRAME:
+ return "STD_VIDEO_VP9_REFERENCE_NAME_LAST_FRAME";
+ case STD_VIDEO_VP9_REFERENCE_NAME_GOLDEN_FRAME:
+ return "STD_VIDEO_VP9_REFERENCE_NAME_GOLDEN_FRAME";
+ case STD_VIDEO_VP9_REFERENCE_NAME_ALTREF_FRAME:
+ return "STD_VIDEO_VP9_REFERENCE_NAME_ALTREF_FRAME";
+ case STD_VIDEO_VP9_REFERENCE_NAME_INVALID:
+ return "STD_VIDEO_VP9_REFERENCE_NAME_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoVP9ReferenceName_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoVP9ReferenceName(Printer &p, std::string name, StdVideoVP9ReferenceName value) {
+ p.PrintKeyString(name, StdVideoVP9ReferenceNameString(value));
+}
+std::string StdVideoVP9InterpolationFilterString(StdVideoVP9InterpolationFilter value) {
+ switch (value) {
+ case STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP:
+ return "STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP";
+ case STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH:
+ return "STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH";
+ case STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP:
+ return "STD_VIDEO_VP9_INTERPOLATION_FILTER_EIGHTTAP_SHARP";
+ case STD_VIDEO_VP9_INTERPOLATION_FILTER_BILINEAR:
+ return "STD_VIDEO_VP9_INTERPOLATION_FILTER_BILINEAR";
+ case STD_VIDEO_VP9_INTERPOLATION_FILTER_SWITCHABLE:
+ return "STD_VIDEO_VP9_INTERPOLATION_FILTER_SWITCHABLE";
+ case STD_VIDEO_VP9_INTERPOLATION_FILTER_INVALID:
+ return "STD_VIDEO_VP9_INTERPOLATION_FILTER_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoVP9InterpolationFilter_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoVP9InterpolationFilter(Printer &p, std::string name, StdVideoVP9InterpolationFilter value) {
+ p.PrintKeyString(name, StdVideoVP9InterpolationFilterString(value));
+}
+std::string StdVideoVP9ColorSpaceString(StdVideoVP9ColorSpace value) {
+ switch (value) {
+ case STD_VIDEO_VP9_COLOR_SPACE_UNKNOWN:
+ return "STD_VIDEO_VP9_COLOR_SPACE_UNKNOWN";
+ case STD_VIDEO_VP9_COLOR_SPACE_BT_601:
+ return "STD_VIDEO_VP9_COLOR_SPACE_BT_601";
+ case STD_VIDEO_VP9_COLOR_SPACE_BT_709:
+ return "STD_VIDEO_VP9_COLOR_SPACE_BT_709";
+ case STD_VIDEO_VP9_COLOR_SPACE_SMPTE_170:
+ return "STD_VIDEO_VP9_COLOR_SPACE_SMPTE_170";
+ case STD_VIDEO_VP9_COLOR_SPACE_SMPTE_240:
+ return "STD_VIDEO_VP9_COLOR_SPACE_SMPTE_240";
+ case STD_VIDEO_VP9_COLOR_SPACE_BT_2020:
+ return "STD_VIDEO_VP9_COLOR_SPACE_BT_2020";
+ case STD_VIDEO_VP9_COLOR_SPACE_RESERVED:
+ return "STD_VIDEO_VP9_COLOR_SPACE_RESERVED";
+ case STD_VIDEO_VP9_COLOR_SPACE_RGB:
+ return "STD_VIDEO_VP9_COLOR_SPACE_RGB";
+ case STD_VIDEO_VP9_COLOR_SPACE_INVALID:
+ return "STD_VIDEO_VP9_COLOR_SPACE_INVALID";
+ default:
+ return std::string("UNKNOWN_StdVideoVP9ColorSpace_value") + std::to_string(value);
+ }
+}
+void DumpStdVideoVP9ColorSpace(Printer &p, std::string name, StdVideoVP9ColorSpace value) {
+ p.PrintKeyString(name, StdVideoVP9ColorSpaceString(value));
+}
+std::string VkColorSpaceKHRString(VkColorSpaceKHR value) {
+ switch (value) {
+ case (VK_COLOR_SPACE_SRGB_NONLINEAR_KHR):
+ return "COLOR_SPACE_SRGB_NONLINEAR_KHR";
+ case (VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT):
+ return "COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT";
+ case (VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT):
+ return "COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT";
+ case (VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT):
+ return "COLOR_SPACE_DISPLAY_P3_LINEAR_EXT";
+ case (VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT):
+ return "COLOR_SPACE_DCI_P3_NONLINEAR_EXT";
+ case (VK_COLOR_SPACE_BT709_LINEAR_EXT):
+ return "COLOR_SPACE_BT709_LINEAR_EXT";
+ case (VK_COLOR_SPACE_BT709_NONLINEAR_EXT):
+ return "COLOR_SPACE_BT709_NONLINEAR_EXT";
+ case (VK_COLOR_SPACE_BT2020_LINEAR_EXT):
+ return "COLOR_SPACE_BT2020_LINEAR_EXT";
+ case (VK_COLOR_SPACE_HDR10_ST2084_EXT):
+ return "COLOR_SPACE_HDR10_ST2084_EXT";
+ case (VK_COLOR_SPACE_DOLBYVISION_EXT):
+ return "COLOR_SPACE_DOLBYVISION_EXT";
+ case (VK_COLOR_SPACE_HDR10_HLG_EXT):
+ return "COLOR_SPACE_HDR10_HLG_EXT";
+ case (VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT):
+ return "COLOR_SPACE_ADOBERGB_LINEAR_EXT";
+ case (VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT):
+ return "COLOR_SPACE_ADOBERGB_NONLINEAR_EXT";
+ case (VK_COLOR_SPACE_PASS_THROUGH_EXT):
+ return "COLOR_SPACE_PASS_THROUGH_EXT";
+ case (VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT):
+ return "COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT";
+ case (VK_COLOR_SPACE_DISPLAY_NATIVE_AMD):
+ return "COLOR_SPACE_DISPLAY_NATIVE_AMD";
+ default:
+ return std::string("UNKNOWN_VkColorSpaceKHR_value") + std::to_string(value);
+ }
+}
+void DumpVkColorSpaceKHR(Printer &p, std::string name, VkColorSpaceKHR value) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + VkColorSpaceKHRString(value));
+ else
+ p.PrintKeyString(name, VkColorSpaceKHRString(value));
+}
+std::string VkComponentSwizzleString(VkComponentSwizzle value) {
+ switch (value) {
+ case (VK_COMPONENT_SWIZZLE_IDENTITY):
+ return "COMPONENT_SWIZZLE_IDENTITY";
+ case (VK_COMPONENT_SWIZZLE_ZERO):
+ return "COMPONENT_SWIZZLE_ZERO";
+ case (VK_COMPONENT_SWIZZLE_ONE):
+ return "COMPONENT_SWIZZLE_ONE";
+ case (VK_COMPONENT_SWIZZLE_R):
+ return "COMPONENT_SWIZZLE_R";
+ case (VK_COMPONENT_SWIZZLE_G):
+ return "COMPONENT_SWIZZLE_G";
+ case (VK_COMPONENT_SWIZZLE_B):
+ return "COMPONENT_SWIZZLE_B";
+ case (VK_COMPONENT_SWIZZLE_A):
+ return "COMPONENT_SWIZZLE_A";
+ default:
+ return std::string("UNKNOWN_VkComponentSwizzle_value") + std::to_string(value);
+ }
+}
+void DumpVkComponentSwizzle(Printer &p, std::string name, VkComponentSwizzle value) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + VkComponentSwizzleString(value));
+ else
+ p.PrintKeyString(name, VkComponentSwizzleString(value));
+}
+std::string VkComponentTypeKHRString(VkComponentTypeKHR value) {
+ switch (value) {
+ case (VK_COMPONENT_TYPE_FLOAT16_KHR):
+ return "COMPONENT_TYPE_FLOAT16_KHR";
+ case (VK_COMPONENT_TYPE_FLOAT32_KHR):
+ return "COMPONENT_TYPE_FLOAT32_KHR";
+ case (VK_COMPONENT_TYPE_FLOAT64_KHR):
+ return "COMPONENT_TYPE_FLOAT64_KHR";
+ case (VK_COMPONENT_TYPE_SINT8_KHR):
+ return "COMPONENT_TYPE_SINT8_KHR";
+ case (VK_COMPONENT_TYPE_SINT16_KHR):
+ return "COMPONENT_TYPE_SINT16_KHR";
+ case (VK_COMPONENT_TYPE_SINT32_KHR):
+ return "COMPONENT_TYPE_SINT32_KHR";
+ case (VK_COMPONENT_TYPE_SINT64_KHR):
+ return "COMPONENT_TYPE_SINT64_KHR";
+ case (VK_COMPONENT_TYPE_UINT8_KHR):
+ return "COMPONENT_TYPE_UINT8_KHR";
+ case (VK_COMPONENT_TYPE_UINT16_KHR):
+ return "COMPONENT_TYPE_UINT16_KHR";
+ case (VK_COMPONENT_TYPE_UINT32_KHR):
+ return "COMPONENT_TYPE_UINT32_KHR";
+ case (VK_COMPONENT_TYPE_UINT64_KHR):
+ return "COMPONENT_TYPE_UINT64_KHR";
+ case (VK_COMPONENT_TYPE_BFLOAT16_KHR):
+ return "COMPONENT_TYPE_BFLOAT16_KHR";
+ case (VK_COMPONENT_TYPE_SINT8_PACKED_NV):
+ return "COMPONENT_TYPE_SINT8_PACKED_NV";
+ case (VK_COMPONENT_TYPE_UINT8_PACKED_NV):
+ return "COMPONENT_TYPE_UINT8_PACKED_NV";
+ case (VK_COMPONENT_TYPE_FLOAT8_E4M3_EXT):
+ return "COMPONENT_TYPE_FLOAT8_E4M3_EXT";
+ case (VK_COMPONENT_TYPE_FLOAT8_E5M2_EXT):
+ return "COMPONENT_TYPE_FLOAT8_E5M2_EXT";
+ default:
+ return std::string("UNKNOWN_VkComponentTypeKHR_value") + std::to_string(value);
+ }
+}
+void DumpVkComponentTypeKHR(Printer &p, std::string name, VkComponentTypeKHR value) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + VkComponentTypeKHRString(value));
+ else
+ p.PrintKeyString(name, VkComponentTypeKHRString(value));
+}
+std::string VkDefaultVertexAttributeValueKHRString(VkDefaultVertexAttributeValueKHR value) {
+ switch (value) {
+ case (VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR):
+ return "DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ZERO_KHR";
+ case (VK_DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR):
+ return "DEFAULT_VERTEX_ATTRIBUTE_VALUE_ZERO_ZERO_ZERO_ONE_KHR";
+ default:
+ return std::string("UNKNOWN_VkDefaultVertexAttributeValueKHR_value") + std::to_string(value);
+ }
+}
+void DumpVkDefaultVertexAttributeValueKHR(Printer &p, std::string name, VkDefaultVertexAttributeValueKHR value) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + VkDefaultVertexAttributeValueKHRString(value));
+ else
+ p.PrintKeyString(name, VkDefaultVertexAttributeValueKHRString(value));
+}
+std::string VkDriverIdString(VkDriverId value) {
+ switch (value) {
+ case (VK_DRIVER_ID_AMD_PROPRIETARY):
+ return "DRIVER_ID_AMD_PROPRIETARY";
+ case (VK_DRIVER_ID_AMD_OPEN_SOURCE):
+ return "DRIVER_ID_AMD_OPEN_SOURCE";
+ case (VK_DRIVER_ID_MESA_RADV):
+ return "DRIVER_ID_MESA_RADV";
+ case (VK_DRIVER_ID_NVIDIA_PROPRIETARY):
+ return "DRIVER_ID_NVIDIA_PROPRIETARY";
+ case (VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS):
+ return "DRIVER_ID_INTEL_PROPRIETARY_WINDOWS";
+ case (VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA):
+ return "DRIVER_ID_INTEL_OPEN_SOURCE_MESA";
+ case (VK_DRIVER_ID_IMAGINATION_PROPRIETARY):
+ return "DRIVER_ID_IMAGINATION_PROPRIETARY";
+ case (VK_DRIVER_ID_QUALCOMM_PROPRIETARY):
+ return "DRIVER_ID_QUALCOMM_PROPRIETARY";
+ case (VK_DRIVER_ID_ARM_PROPRIETARY):
+ return "DRIVER_ID_ARM_PROPRIETARY";
+ case (VK_DRIVER_ID_GOOGLE_SWIFTSHADER):
+ return "DRIVER_ID_GOOGLE_SWIFTSHADER";
+ case (VK_DRIVER_ID_GGP_PROPRIETARY):
+ return "DRIVER_ID_GGP_PROPRIETARY";
+ case (VK_DRIVER_ID_BROADCOM_PROPRIETARY):
+ return "DRIVER_ID_BROADCOM_PROPRIETARY";
+ case (VK_DRIVER_ID_MESA_LLVMPIPE):
+ return "DRIVER_ID_MESA_LLVMPIPE";
+ case (VK_DRIVER_ID_MOLTENVK):
+ return "DRIVER_ID_MOLTENVK";
+ case (VK_DRIVER_ID_COREAVI_PROPRIETARY):
+ return "DRIVER_ID_COREAVI_PROPRIETARY";
+ case (VK_DRIVER_ID_JUICE_PROPRIETARY):
+ return "DRIVER_ID_JUICE_PROPRIETARY";
+ case (VK_DRIVER_ID_VERISILICON_PROPRIETARY):
+ return "DRIVER_ID_VERISILICON_PROPRIETARY";
+ case (VK_DRIVER_ID_MESA_TURNIP):
+ return "DRIVER_ID_MESA_TURNIP";
+ case (VK_DRIVER_ID_MESA_V3DV):
+ return "DRIVER_ID_MESA_V3DV";
+ case (VK_DRIVER_ID_MESA_PANVK):
+ return "DRIVER_ID_MESA_PANVK";
+ case (VK_DRIVER_ID_SAMSUNG_PROPRIETARY):
+ return "DRIVER_ID_SAMSUNG_PROPRIETARY";
+ case (VK_DRIVER_ID_MESA_VENUS):
+ return "DRIVER_ID_MESA_VENUS";
+ case (VK_DRIVER_ID_MESA_DOZEN):
+ return "DRIVER_ID_MESA_DOZEN";
+ case (VK_DRIVER_ID_MESA_NVK):
+ return "DRIVER_ID_MESA_NVK";
+ case (VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA):
+ return "DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA";
+ case (VK_DRIVER_ID_MESA_HONEYKRISP):
+ return "DRIVER_ID_MESA_HONEYKRISP";
+ case (VK_DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN):
+ return "DRIVER_ID_VULKAN_SC_EMULATION_ON_VULKAN";
+ case (VK_DRIVER_ID_MESA_KOSMICKRISP):
+ return "DRIVER_ID_MESA_KOSMICKRISP";
+ default:
+ return std::string("UNKNOWN_VkDriverId_value") + std::to_string(value);
+ }
+}
+void DumpVkDriverId(Printer &p, std::string name, VkDriverId value) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + VkDriverIdString(value));
+ else
+ p.PrintKeyString(name, VkDriverIdString(value));
+}
+std::string VkFormatString(VkFormat value) {
+ switch (value) {
+ case (VK_FORMAT_UNDEFINED):
+ return "FORMAT_UNDEFINED";
+ case (VK_FORMAT_R4G4_UNORM_PACK8):
+ return "FORMAT_R4G4_UNORM_PACK8";
+ case (VK_FORMAT_R4G4B4A4_UNORM_PACK16):
+ return "FORMAT_R4G4B4A4_UNORM_PACK16";
+ case (VK_FORMAT_B4G4R4A4_UNORM_PACK16):
+ return "FORMAT_B4G4R4A4_UNORM_PACK16";
+ case (VK_FORMAT_R5G6B5_UNORM_PACK16):
+ return "FORMAT_R5G6B5_UNORM_PACK16";
+ case (VK_FORMAT_B5G6R5_UNORM_PACK16):
+ return "FORMAT_B5G6R5_UNORM_PACK16";
+ case (VK_FORMAT_R5G5B5A1_UNORM_PACK16):
+ return "FORMAT_R5G5B5A1_UNORM_PACK16";
+ case (VK_FORMAT_B5G5R5A1_UNORM_PACK16):
+ return "FORMAT_B5G5R5A1_UNORM_PACK16";
+ case (VK_FORMAT_A1R5G5B5_UNORM_PACK16):
+ return "FORMAT_A1R5G5B5_UNORM_PACK16";
+ case (VK_FORMAT_R8_UNORM):
+ return "FORMAT_R8_UNORM";
+ case (VK_FORMAT_R8_SNORM):
+ return "FORMAT_R8_SNORM";
+ case (VK_FORMAT_R8_USCALED):
+ return "FORMAT_R8_USCALED";
+ case (VK_FORMAT_R8_SSCALED):
+ return "FORMAT_R8_SSCALED";
+ case (VK_FORMAT_R8_UINT):
+ return "FORMAT_R8_UINT";
+ case (VK_FORMAT_R8_SINT):
+ return "FORMAT_R8_SINT";
+ case (VK_FORMAT_R8_SRGB):
+ return "FORMAT_R8_SRGB";
+ case (VK_FORMAT_R8G8_UNORM):
+ return "FORMAT_R8G8_UNORM";
+ case (VK_FORMAT_R8G8_SNORM):
+ return "FORMAT_R8G8_SNORM";
+ case (VK_FORMAT_R8G8_USCALED):
+ return "FORMAT_R8G8_USCALED";
+ case (VK_FORMAT_R8G8_SSCALED):
+ return "FORMAT_R8G8_SSCALED";
+ case (VK_FORMAT_R8G8_UINT):
+ return "FORMAT_R8G8_UINT";
+ case (VK_FORMAT_R8G8_SINT):
+ return "FORMAT_R8G8_SINT";
+ case (VK_FORMAT_R8G8_SRGB):
+ return "FORMAT_R8G8_SRGB";
+ case (VK_FORMAT_R8G8B8_UNORM):
+ return "FORMAT_R8G8B8_UNORM";
+ case (VK_FORMAT_R8G8B8_SNORM):
+ return "FORMAT_R8G8B8_SNORM";
+ case (VK_FORMAT_R8G8B8_USCALED):
+ return "FORMAT_R8G8B8_USCALED";
+ case (VK_FORMAT_R8G8B8_SSCALED):
+ return "FORMAT_R8G8B8_SSCALED";
+ case (VK_FORMAT_R8G8B8_UINT):
+ return "FORMAT_R8G8B8_UINT";
+ case (VK_FORMAT_R8G8B8_SINT):
+ return "FORMAT_R8G8B8_SINT";
+ case (VK_FORMAT_R8G8B8_SRGB):
+ return "FORMAT_R8G8B8_SRGB";
+ case (VK_FORMAT_B8G8R8_UNORM):
+ return "FORMAT_B8G8R8_UNORM";
+ case (VK_FORMAT_B8G8R8_SNORM):
+ return "FORMAT_B8G8R8_SNORM";
+ case (VK_FORMAT_B8G8R8_USCALED):
+ return "FORMAT_B8G8R8_USCALED";
+ case (VK_FORMAT_B8G8R8_SSCALED):
+ return "FORMAT_B8G8R8_SSCALED";
+ case (VK_FORMAT_B8G8R8_UINT):
+ return "FORMAT_B8G8R8_UINT";
+ case (VK_FORMAT_B8G8R8_SINT):
+ return "FORMAT_B8G8R8_SINT";
+ case (VK_FORMAT_B8G8R8_SRGB):
+ return "FORMAT_B8G8R8_SRGB";
+ case (VK_FORMAT_R8G8B8A8_UNORM):
+ return "FORMAT_R8G8B8A8_UNORM";
+ case (VK_FORMAT_R8G8B8A8_SNORM):
+ return "FORMAT_R8G8B8A8_SNORM";
+ case (VK_FORMAT_R8G8B8A8_USCALED):
+ return "FORMAT_R8G8B8A8_USCALED";
+ case (VK_FORMAT_R8G8B8A8_SSCALED):
+ return "FORMAT_R8G8B8A8_SSCALED";
+ case (VK_FORMAT_R8G8B8A8_UINT):
+ return "FORMAT_R8G8B8A8_UINT";
+ case (VK_FORMAT_R8G8B8A8_SINT):
+ return "FORMAT_R8G8B8A8_SINT";
+ case (VK_FORMAT_R8G8B8A8_SRGB):
+ return "FORMAT_R8G8B8A8_SRGB";
+ case (VK_FORMAT_B8G8R8A8_UNORM):
+ return "FORMAT_B8G8R8A8_UNORM";
+ case (VK_FORMAT_B8G8R8A8_SNORM):
+ return "FORMAT_B8G8R8A8_SNORM";
+ case (VK_FORMAT_B8G8R8A8_USCALED):
+ return "FORMAT_B8G8R8A8_USCALED";
+ case (VK_FORMAT_B8G8R8A8_SSCALED):
+ return "FORMAT_B8G8R8A8_SSCALED";
+ case (VK_FORMAT_B8G8R8A8_UINT):
+ return "FORMAT_B8G8R8A8_UINT";
+ case (VK_FORMAT_B8G8R8A8_SINT):
+ return "FORMAT_B8G8R8A8_SINT";
+ case (VK_FORMAT_B8G8R8A8_SRGB):
+ return "FORMAT_B8G8R8A8_SRGB";
+ case (VK_FORMAT_A8B8G8R8_UNORM_PACK32):
+ return "FORMAT_A8B8G8R8_UNORM_PACK32";
+ case (VK_FORMAT_A8B8G8R8_SNORM_PACK32):
+ return "FORMAT_A8B8G8R8_SNORM_PACK32";
+ case (VK_FORMAT_A8B8G8R8_USCALED_PACK32):
+ return "FORMAT_A8B8G8R8_USCALED_PACK32";
+ case (VK_FORMAT_A8B8G8R8_SSCALED_PACK32):
+ return "FORMAT_A8B8G8R8_SSCALED_PACK32";
+ case (VK_FORMAT_A8B8G8R8_UINT_PACK32):
+ return "FORMAT_A8B8G8R8_UINT_PACK32";
+ case (VK_FORMAT_A8B8G8R8_SINT_PACK32):
+ return "FORMAT_A8B8G8R8_SINT_PACK32";
+ case (VK_FORMAT_A8B8G8R8_SRGB_PACK32):
+ return "FORMAT_A8B8G8R8_SRGB_PACK32";
+ case (VK_FORMAT_A2R10G10B10_UNORM_PACK32):
+ return "FORMAT_A2R10G10B10_UNORM_PACK32";
+ case (VK_FORMAT_A2R10G10B10_SNORM_PACK32):
+ return "FORMAT_A2R10G10B10_SNORM_PACK32";
+ case (VK_FORMAT_A2R10G10B10_USCALED_PACK32):
+ return "FORMAT_A2R10G10B10_USCALED_PACK32";
+ case (VK_FORMAT_A2R10G10B10_SSCALED_PACK32):
+ return "FORMAT_A2R10G10B10_SSCALED_PACK32";
+ case (VK_FORMAT_A2R10G10B10_UINT_PACK32):
+ return "FORMAT_A2R10G10B10_UINT_PACK32";
+ case (VK_FORMAT_A2R10G10B10_SINT_PACK32):
+ return "FORMAT_A2R10G10B10_SINT_PACK32";
+ case (VK_FORMAT_A2B10G10R10_UNORM_PACK32):
+ return "FORMAT_A2B10G10R10_UNORM_PACK32";
+ case (VK_FORMAT_A2B10G10R10_SNORM_PACK32):
+ return "FORMAT_A2B10G10R10_SNORM_PACK32";
+ case (VK_FORMAT_A2B10G10R10_USCALED_PACK32):
+ return "FORMAT_A2B10G10R10_USCALED_PACK32";
+ case (VK_FORMAT_A2B10G10R10_SSCALED_PACK32):
+ return "FORMAT_A2B10G10R10_SSCALED_PACK32";
+ case (VK_FORMAT_A2B10G10R10_UINT_PACK32):
+ return "FORMAT_A2B10G10R10_UINT_PACK32";
+ case (VK_FORMAT_A2B10G10R10_SINT_PACK32):
+ return "FORMAT_A2B10G10R10_SINT_PACK32";
+ case (VK_FORMAT_R16_UNORM):
+ return "FORMAT_R16_UNORM";
+ case (VK_FORMAT_R16_SNORM):
+ return "FORMAT_R16_SNORM";
+ case (VK_FORMAT_R16_USCALED):
+ return "FORMAT_R16_USCALED";
+ case (VK_FORMAT_R16_SSCALED):
+ return "FORMAT_R16_SSCALED";
+ case (VK_FORMAT_R16_UINT):
+ return "FORMAT_R16_UINT";
+ case (VK_FORMAT_R16_SINT):
+ return "FORMAT_R16_SINT";
+ case (VK_FORMAT_R16_SFLOAT):
+ return "FORMAT_R16_SFLOAT";
+ case (VK_FORMAT_R16G16_UNORM):
+ return "FORMAT_R16G16_UNORM";
+ case (VK_FORMAT_R16G16_SNORM):
+ return "FORMAT_R16G16_SNORM";
+ case (VK_FORMAT_R16G16_USCALED):
+ return "FORMAT_R16G16_USCALED";
+ case (VK_FORMAT_R16G16_SSCALED):
+ return "FORMAT_R16G16_SSCALED";
+ case (VK_FORMAT_R16G16_UINT):
+ return "FORMAT_R16G16_UINT";
+ case (VK_FORMAT_R16G16_SINT):
+ return "FORMAT_R16G16_SINT";
+ case (VK_FORMAT_R16G16_SFLOAT):
+ return "FORMAT_R16G16_SFLOAT";
+ case (VK_FORMAT_R16G16B16_UNORM):
+ return "FORMAT_R16G16B16_UNORM";
+ case (VK_FORMAT_R16G16B16_SNORM):
+ return "FORMAT_R16G16B16_SNORM";
+ case (VK_FORMAT_R16G16B16_USCALED):
+ return "FORMAT_R16G16B16_USCALED";
+ case (VK_FORMAT_R16G16B16_SSCALED):
+ return "FORMAT_R16G16B16_SSCALED";
+ case (VK_FORMAT_R16G16B16_UINT):
+ return "FORMAT_R16G16B16_UINT";
+ case (VK_FORMAT_R16G16B16_SINT):
+ return "FORMAT_R16G16B16_SINT";
+ case (VK_FORMAT_R16G16B16_SFLOAT):
+ return "FORMAT_R16G16B16_SFLOAT";
+ case (VK_FORMAT_R16G16B16A16_UNORM):
+ return "FORMAT_R16G16B16A16_UNORM";
+ case (VK_FORMAT_R16G16B16A16_SNORM):
+ return "FORMAT_R16G16B16A16_SNORM";
+ case (VK_FORMAT_R16G16B16A16_USCALED):
+ return "FORMAT_R16G16B16A16_USCALED";
+ case (VK_FORMAT_R16G16B16A16_SSCALED):
+ return "FORMAT_R16G16B16A16_SSCALED";
+ case (VK_FORMAT_R16G16B16A16_UINT):
+ return "FORMAT_R16G16B16A16_UINT";
+ case (VK_FORMAT_R16G16B16A16_SINT):
+ return "FORMAT_R16G16B16A16_SINT";
+ case (VK_FORMAT_R16G16B16A16_SFLOAT):
+ return "FORMAT_R16G16B16A16_SFLOAT";
+ case (VK_FORMAT_R32_UINT):
+ return "FORMAT_R32_UINT";
+ case (VK_FORMAT_R32_SINT):
+ return "FORMAT_R32_SINT";
+ case (VK_FORMAT_R32_SFLOAT):
+ return "FORMAT_R32_SFLOAT";
+ case (VK_FORMAT_R32G32_UINT):
+ return "FORMAT_R32G32_UINT";
+ case (VK_FORMAT_R32G32_SINT):
+ return "FORMAT_R32G32_SINT";
+ case (VK_FORMAT_R32G32_SFLOAT):
+ return "FORMAT_R32G32_SFLOAT";
+ case (VK_FORMAT_R32G32B32_UINT):
+ return "FORMAT_R32G32B32_UINT";
+ case (VK_FORMAT_R32G32B32_SINT):
+ return "FORMAT_R32G32B32_SINT";
+ case (VK_FORMAT_R32G32B32_SFLOAT):
+ return "FORMAT_R32G32B32_SFLOAT";
+ case (VK_FORMAT_R32G32B32A32_UINT):
+ return "FORMAT_R32G32B32A32_UINT";
+ case (VK_FORMAT_R32G32B32A32_SINT):
+ return "FORMAT_R32G32B32A32_SINT";
+ case (VK_FORMAT_R32G32B32A32_SFLOAT):
+ return "FORMAT_R32G32B32A32_SFLOAT";
+ case (VK_FORMAT_R64_UINT):
+ return "FORMAT_R64_UINT";
+ case (VK_FORMAT_R64_SINT):
+ return "FORMAT_R64_SINT";
+ case (VK_FORMAT_R64_SFLOAT):
+ return "FORMAT_R64_SFLOAT";
+ case (VK_FORMAT_R64G64_UINT):
+ return "FORMAT_R64G64_UINT";
+ case (VK_FORMAT_R64G64_SINT):
+ return "FORMAT_R64G64_SINT";
+ case (VK_FORMAT_R64G64_SFLOAT):
+ return "FORMAT_R64G64_SFLOAT";
+ case (VK_FORMAT_R64G64B64_UINT):
+ return "FORMAT_R64G64B64_UINT";
+ case (VK_FORMAT_R64G64B64_SINT):
+ return "FORMAT_R64G64B64_SINT";
+ case (VK_FORMAT_R64G64B64_SFLOAT):
+ return "FORMAT_R64G64B64_SFLOAT";
+ case (VK_FORMAT_R64G64B64A64_UINT):
+ return "FORMAT_R64G64B64A64_UINT";
+ case (VK_FORMAT_R64G64B64A64_SINT):
+ return "FORMAT_R64G64B64A64_SINT";
+ case (VK_FORMAT_R64G64B64A64_SFLOAT):
+ return "FORMAT_R64G64B64A64_SFLOAT";
+ case (VK_FORMAT_B10G11R11_UFLOAT_PACK32):
+ return "FORMAT_B10G11R11_UFLOAT_PACK32";
+ case (VK_FORMAT_E5B9G9R9_UFLOAT_PACK32):
+ return "FORMAT_E5B9G9R9_UFLOAT_PACK32";
+ case (VK_FORMAT_D16_UNORM):
+ return "FORMAT_D16_UNORM";
+ case (VK_FORMAT_X8_D24_UNORM_PACK32):
+ return "FORMAT_X8_D24_UNORM_PACK32";
+ case (VK_FORMAT_D32_SFLOAT):
+ return "FORMAT_D32_SFLOAT";
+ case (VK_FORMAT_S8_UINT):
+ return "FORMAT_S8_UINT";
+ case (VK_FORMAT_D16_UNORM_S8_UINT):
+ return "FORMAT_D16_UNORM_S8_UINT";
+ case (VK_FORMAT_D24_UNORM_S8_UINT):
+ return "FORMAT_D24_UNORM_S8_UINT";
+ case (VK_FORMAT_D32_SFLOAT_S8_UINT):
+ return "FORMAT_D32_SFLOAT_S8_UINT";
+ case (VK_FORMAT_BC1_RGB_UNORM_BLOCK):
+ return "FORMAT_BC1_RGB_UNORM_BLOCK";
+ case (VK_FORMAT_BC1_RGB_SRGB_BLOCK):
+ return "FORMAT_BC1_RGB_SRGB_BLOCK";
+ case (VK_FORMAT_BC1_RGBA_UNORM_BLOCK):
+ return "FORMAT_BC1_RGBA_UNORM_BLOCK";
+ case (VK_FORMAT_BC1_RGBA_SRGB_BLOCK):
+ return "FORMAT_BC1_RGBA_SRGB_BLOCK";
+ case (VK_FORMAT_BC2_UNORM_BLOCK):
+ return "FORMAT_BC2_UNORM_BLOCK";
+ case (VK_FORMAT_BC2_SRGB_BLOCK):
+ return "FORMAT_BC2_SRGB_BLOCK";
+ case (VK_FORMAT_BC3_UNORM_BLOCK):
+ return "FORMAT_BC3_UNORM_BLOCK";
+ case (VK_FORMAT_BC3_SRGB_BLOCK):
+ return "FORMAT_BC3_SRGB_BLOCK";
+ case (VK_FORMAT_BC4_UNORM_BLOCK):
+ return "FORMAT_BC4_UNORM_BLOCK";
+ case (VK_FORMAT_BC4_SNORM_BLOCK):
+ return "FORMAT_BC4_SNORM_BLOCK";
+ case (VK_FORMAT_BC5_UNORM_BLOCK):
+ return "FORMAT_BC5_UNORM_BLOCK";
+ case (VK_FORMAT_BC5_SNORM_BLOCK):
+ return "FORMAT_BC5_SNORM_BLOCK";
+ case (VK_FORMAT_BC6H_UFLOAT_BLOCK):
+ return "FORMAT_BC6H_UFLOAT_BLOCK";
+ case (VK_FORMAT_BC6H_SFLOAT_BLOCK):
+ return "FORMAT_BC6H_SFLOAT_BLOCK";
+ case (VK_FORMAT_BC7_UNORM_BLOCK):
+ return "FORMAT_BC7_UNORM_BLOCK";
+ case (VK_FORMAT_BC7_SRGB_BLOCK):
+ return "FORMAT_BC7_SRGB_BLOCK";
+ case (VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK):
+ return "FORMAT_ETC2_R8G8B8_UNORM_BLOCK";
+ case (VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK):
+ return "FORMAT_ETC2_R8G8B8_SRGB_BLOCK";
+ case (VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK):
+ return "FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK";
+ case (VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK):
+ return "FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK";
+ case (VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK):
+ return "FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK";
+ case (VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK):
+ return "FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK";
+ case (VK_FORMAT_EAC_R11_UNORM_BLOCK):
+ return "FORMAT_EAC_R11_UNORM_BLOCK";
+ case (VK_FORMAT_EAC_R11_SNORM_BLOCK):
+ return "FORMAT_EAC_R11_SNORM_BLOCK";
+ case (VK_FORMAT_EAC_R11G11_UNORM_BLOCK):
+ return "FORMAT_EAC_R11G11_UNORM_BLOCK";
+ case (VK_FORMAT_EAC_R11G11_SNORM_BLOCK):
+ return "FORMAT_EAC_R11G11_SNORM_BLOCK";
+ case (VK_FORMAT_ASTC_4x4_UNORM_BLOCK):
+ return "FORMAT_ASTC_4x4_UNORM_BLOCK";
+ case (VK_FORMAT_ASTC_4x4_SRGB_BLOCK):
+ return "FORMAT_ASTC_4x4_SRGB_BLOCK";
+ case (VK_FORMAT_ASTC_5x4_UNORM_BLOCK):
+ return "FORMAT_ASTC_5x4_UNORM_BLOCK";
+ case (VK_FORMAT_ASTC_5x4_SRGB_BLOCK):
+ return "FORMAT_ASTC_5x4_SRGB_BLOCK";
+ case (VK_FORMAT_ASTC_5x5_UNORM_BLOCK):
+ return "FORMAT_ASTC_5x5_UNORM_BLOCK";
+ case (VK_FORMAT_ASTC_5x5_SRGB_BLOCK):
+ return "FORMAT_ASTC_5x5_SRGB_BLOCK";
+ case (VK_FORMAT_ASTC_6x5_UNORM_BLOCK):
+ return "FORMAT_ASTC_6x5_UNORM_BLOCK";
+ case (VK_FORMAT_ASTC_6x5_SRGB_BLOCK):
+ return "FORMAT_ASTC_6x5_SRGB_BLOCK";
+ case (VK_FORMAT_ASTC_6x6_UNORM_BLOCK):
+ return "FORMAT_ASTC_6x6_UNORM_BLOCK";
+ case (VK_FORMAT_ASTC_6x6_SRGB_BLOCK):
+ return "FORMAT_ASTC_6x6_SRGB_BLOCK";
+ case (VK_FORMAT_ASTC_8x5_UNORM_BLOCK):
+ return "FORMAT_ASTC_8x5_UNORM_BLOCK";
+ case (VK_FORMAT_ASTC_8x5_SRGB_BLOCK):
+ return "FORMAT_ASTC_8x5_SRGB_BLOCK";
+ case (VK_FORMAT_ASTC_8x6_UNORM_BLOCK):
+ return "FORMAT_ASTC_8x6_UNORM_BLOCK";
+ case (VK_FORMAT_ASTC_8x6_SRGB_BLOCK):
+ return "FORMAT_ASTC_8x6_SRGB_BLOCK";
+ case (VK_FORMAT_ASTC_8x8_UNORM_BLOCK):
+ return "FORMAT_ASTC_8x8_UNORM_BLOCK";
+ case (VK_FORMAT_ASTC_8x8_SRGB_BLOCK):
+ return "FORMAT_ASTC_8x8_SRGB_BLOCK";
+ case (VK_FORMAT_ASTC_10x5_UNORM_BLOCK):
+ return "FORMAT_ASTC_10x5_UNORM_BLOCK";
+ case (VK_FORMAT_ASTC_10x5_SRGB_BLOCK):
+ return "FORMAT_ASTC_10x5_SRGB_BLOCK";
+ case (VK_FORMAT_ASTC_10x6_UNORM_BLOCK):
+ return "FORMAT_ASTC_10x6_UNORM_BLOCK";
+ case (VK_FORMAT_ASTC_10x6_SRGB_BLOCK):
+ return "FORMAT_ASTC_10x6_SRGB_BLOCK";
+ case (VK_FORMAT_ASTC_10x8_UNORM_BLOCK):
+ return "FORMAT_ASTC_10x8_UNORM_BLOCK";
+ case (VK_FORMAT_ASTC_10x8_SRGB_BLOCK):
+ return "FORMAT_ASTC_10x8_SRGB_BLOCK";
+ case (VK_FORMAT_ASTC_10x10_UNORM_BLOCK):
+ return "FORMAT_ASTC_10x10_UNORM_BLOCK";
+ case (VK_FORMAT_ASTC_10x10_SRGB_BLOCK):
+ return "FORMAT_ASTC_10x10_SRGB_BLOCK";
+ case (VK_FORMAT_ASTC_12x10_UNORM_BLOCK):
+ return "FORMAT_ASTC_12x10_UNORM_BLOCK";
+ case (VK_FORMAT_ASTC_12x10_SRGB_BLOCK):
+ return "FORMAT_ASTC_12x10_SRGB_BLOCK";
+ case (VK_FORMAT_ASTC_12x12_UNORM_BLOCK):
+ return "FORMAT_ASTC_12x12_UNORM_BLOCK";
+ case (VK_FORMAT_ASTC_12x12_SRGB_BLOCK):
+ return "FORMAT_ASTC_12x12_SRGB_BLOCK";
+ case (VK_FORMAT_G8B8G8R8_422_UNORM):
+ return "FORMAT_G8B8G8R8_422_UNORM";
+ case (VK_FORMAT_B8G8R8G8_422_UNORM):
+ return "FORMAT_B8G8R8G8_422_UNORM";
+ case (VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM):
+ return "FORMAT_G8_B8_R8_3PLANE_420_UNORM";
+ case (VK_FORMAT_G8_B8R8_2PLANE_420_UNORM):
+ return "FORMAT_G8_B8R8_2PLANE_420_UNORM";
+ case (VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM):
+ return "FORMAT_G8_B8_R8_3PLANE_422_UNORM";
+ case (VK_FORMAT_G8_B8R8_2PLANE_422_UNORM):
+ return "FORMAT_G8_B8R8_2PLANE_422_UNORM";
+ case (VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM):
+ return "FORMAT_G8_B8_R8_3PLANE_444_UNORM";
+ case (VK_FORMAT_R10X6_UNORM_PACK16):
+ return "FORMAT_R10X6_UNORM_PACK16";
+ case (VK_FORMAT_R10X6G10X6_UNORM_2PACK16):
+ return "FORMAT_R10X6G10X6_UNORM_2PACK16";
+ case (VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16):
+ return "FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16";
+ case (VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16):
+ return "FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16";
+ case (VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16):
+ return "FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16";
+ case (VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16):
+ return "FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16";
+ case (VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16):
+ return "FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16";
+ case (VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16):
+ return "FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16";
+ case (VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16):
+ return "FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16";
+ case (VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16):
+ return "FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16";
+ case (VK_FORMAT_R12X4_UNORM_PACK16):
+ return "FORMAT_R12X4_UNORM_PACK16";
+ case (VK_FORMAT_R12X4G12X4_UNORM_2PACK16):
+ return "FORMAT_R12X4G12X4_UNORM_2PACK16";
+ case (VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16):
+ return "FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16";
+ case (VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16):
+ return "FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16";
+ case (VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16):
+ return "FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16";
+ case (VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16):
+ return "FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16";
+ case (VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16):
+ return "FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16";
+ case (VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16):
+ return "FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16";
+ case (VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16):
+ return "FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16";
+ case (VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16):
+ return "FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16";
+ case (VK_FORMAT_G16B16G16R16_422_UNORM):
+ return "FORMAT_G16B16G16R16_422_UNORM";
+ case (VK_FORMAT_B16G16R16G16_422_UNORM):
+ return "FORMAT_B16G16R16G16_422_UNORM";
+ case (VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM):
+ return "FORMAT_G16_B16_R16_3PLANE_420_UNORM";
+ case (VK_FORMAT_G16_B16R16_2PLANE_420_UNORM):
+ return "FORMAT_G16_B16R16_2PLANE_420_UNORM";
+ case (VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM):
+ return "FORMAT_G16_B16_R16_3PLANE_422_UNORM";
+ case (VK_FORMAT_G16_B16R16_2PLANE_422_UNORM):
+ return "FORMAT_G16_B16R16_2PLANE_422_UNORM";
+ case (VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM):
+ return "FORMAT_G16_B16_R16_3PLANE_444_UNORM";
+ case (VK_FORMAT_G8_B8R8_2PLANE_444_UNORM):
+ return "FORMAT_G8_B8R8_2PLANE_444_UNORM";
+ case (VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16):
+ return "FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16";
+ case (VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16):
+ return "FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16";
+ case (VK_FORMAT_G16_B16R16_2PLANE_444_UNORM):
+ return "FORMAT_G16_B16R16_2PLANE_444_UNORM";
+ case (VK_FORMAT_A4R4G4B4_UNORM_PACK16):
+ return "FORMAT_A4R4G4B4_UNORM_PACK16";
+ case (VK_FORMAT_A4B4G4R4_UNORM_PACK16):
+ return "FORMAT_A4B4G4R4_UNORM_PACK16";
+ case (VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK):
+ return "FORMAT_ASTC_4x4_SFLOAT_BLOCK";
+ case (VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK):
+ return "FORMAT_ASTC_5x4_SFLOAT_BLOCK";
+ case (VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK):
+ return "FORMAT_ASTC_5x5_SFLOAT_BLOCK";
+ case (VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK):
+ return "FORMAT_ASTC_6x5_SFLOAT_BLOCK";
+ case (VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK):
+ return "FORMAT_ASTC_6x6_SFLOAT_BLOCK";
+ case (VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK):
+ return "FORMAT_ASTC_8x5_SFLOAT_BLOCK";
+ case (VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK):
+ return "FORMAT_ASTC_8x6_SFLOAT_BLOCK";
+ case (VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK):
+ return "FORMAT_ASTC_8x8_SFLOAT_BLOCK";
+ case (VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK):
+ return "FORMAT_ASTC_10x5_SFLOAT_BLOCK";
+ case (VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK):
+ return "FORMAT_ASTC_10x6_SFLOAT_BLOCK";
+ case (VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK):
+ return "FORMAT_ASTC_10x8_SFLOAT_BLOCK";
+ case (VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK):
+ return "FORMAT_ASTC_10x10_SFLOAT_BLOCK";
+ case (VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK):
+ return "FORMAT_ASTC_12x10_SFLOAT_BLOCK";
+ case (VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK):
+ return "FORMAT_ASTC_12x12_SFLOAT_BLOCK";
+ case (VK_FORMAT_A1B5G5R5_UNORM_PACK16):
+ return "FORMAT_A1B5G5R5_UNORM_PACK16";
+ case (VK_FORMAT_A8_UNORM):
+ return "FORMAT_A8_UNORM";
+ case (VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG):
+ return "FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG";
+ case (VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG):
+ return "FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG";
+ case (VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG):
+ return "FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG";
+ case (VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG):
+ return "FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG";
+ case (VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG):
+ return "FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG";
+ case (VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG):
+ return "FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG";
+ case (VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG):
+ return "FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG";
+ case (VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG):
+ return "FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG";
+ case (VK_FORMAT_ASTC_3x3x3_UNORM_BLOCK_EXT):
+ return "FORMAT_ASTC_3x3x3_UNORM_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_3x3x3_SRGB_BLOCK_EXT):
+ return "FORMAT_ASTC_3x3x3_SRGB_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_3x3x3_SFLOAT_BLOCK_EXT):
+ return "FORMAT_ASTC_3x3x3_SFLOAT_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_4x3x3_UNORM_BLOCK_EXT):
+ return "FORMAT_ASTC_4x3x3_UNORM_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_4x3x3_SRGB_BLOCK_EXT):
+ return "FORMAT_ASTC_4x3x3_SRGB_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_4x3x3_SFLOAT_BLOCK_EXT):
+ return "FORMAT_ASTC_4x3x3_SFLOAT_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_4x4x3_UNORM_BLOCK_EXT):
+ return "FORMAT_ASTC_4x4x3_UNORM_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_4x4x3_SRGB_BLOCK_EXT):
+ return "FORMAT_ASTC_4x4x3_SRGB_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_4x4x3_SFLOAT_BLOCK_EXT):
+ return "FORMAT_ASTC_4x4x3_SFLOAT_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_4x4x4_UNORM_BLOCK_EXT):
+ return "FORMAT_ASTC_4x4x4_UNORM_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_4x4x4_SRGB_BLOCK_EXT):
+ return "FORMAT_ASTC_4x4x4_SRGB_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_4x4x4_SFLOAT_BLOCK_EXT):
+ return "FORMAT_ASTC_4x4x4_SFLOAT_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_5x4x4_UNORM_BLOCK_EXT):
+ return "FORMAT_ASTC_5x4x4_UNORM_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_5x4x4_SRGB_BLOCK_EXT):
+ return "FORMAT_ASTC_5x4x4_SRGB_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_5x4x4_SFLOAT_BLOCK_EXT):
+ return "FORMAT_ASTC_5x4x4_SFLOAT_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_5x5x4_UNORM_BLOCK_EXT):
+ return "FORMAT_ASTC_5x5x4_UNORM_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_5x5x4_SRGB_BLOCK_EXT):
+ return "FORMAT_ASTC_5x5x4_SRGB_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_5x5x4_SFLOAT_BLOCK_EXT):
+ return "FORMAT_ASTC_5x5x4_SFLOAT_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_5x5x5_UNORM_BLOCK_EXT):
+ return "FORMAT_ASTC_5x5x5_UNORM_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_5x5x5_SRGB_BLOCK_EXT):
+ return "FORMAT_ASTC_5x5x5_SRGB_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_5x5x5_SFLOAT_BLOCK_EXT):
+ return "FORMAT_ASTC_5x5x5_SFLOAT_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_6x5x5_UNORM_BLOCK_EXT):
+ return "FORMAT_ASTC_6x5x5_UNORM_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_6x5x5_SRGB_BLOCK_EXT):
+ return "FORMAT_ASTC_6x5x5_SRGB_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_6x5x5_SFLOAT_BLOCK_EXT):
+ return "FORMAT_ASTC_6x5x5_SFLOAT_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_6x6x5_UNORM_BLOCK_EXT):
+ return "FORMAT_ASTC_6x6x5_UNORM_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_6x6x5_SRGB_BLOCK_EXT):
+ return "FORMAT_ASTC_6x6x5_SRGB_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_6x6x5_SFLOAT_BLOCK_EXT):
+ return "FORMAT_ASTC_6x6x5_SFLOAT_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_6x6x6_UNORM_BLOCK_EXT):
+ return "FORMAT_ASTC_6x6x6_UNORM_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_6x6x6_SRGB_BLOCK_EXT):
+ return "FORMAT_ASTC_6x6x6_SRGB_BLOCK_EXT";
+ case (VK_FORMAT_ASTC_6x6x6_SFLOAT_BLOCK_EXT):
+ return "FORMAT_ASTC_6x6x6_SFLOAT_BLOCK_EXT";
+ case (VK_FORMAT_R8_BOOL_ARM):
+ return "FORMAT_R8_BOOL_ARM";
+ case (VK_FORMAT_R16_SFLOAT_FPENCODING_BFLOAT16_ARM):
+ return "FORMAT_R16_SFLOAT_FPENCODING_BFLOAT16_ARM";
+ case (VK_FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E4M3_ARM):
+ return "FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E4M3_ARM";
+ case (VK_FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E5M2_ARM):
+ return "FORMAT_R8_SFLOAT_FPENCODING_FLOAT8E5M2_ARM";
+ case (VK_FORMAT_R16G16_SFIXED5_NV):
+ return "FORMAT_R16G16_SFIXED5_NV";
+ case (VK_FORMAT_R10X6_UINT_PACK16_ARM):
+ return "FORMAT_R10X6_UINT_PACK16_ARM";
+ case (VK_FORMAT_R10X6G10X6_UINT_2PACK16_ARM):
+ return "FORMAT_R10X6G10X6_UINT_2PACK16_ARM";
+ case (VK_FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM):
+ return "FORMAT_R10X6G10X6B10X6A10X6_UINT_4PACK16_ARM";
+ case (VK_FORMAT_R12X4_UINT_PACK16_ARM):
+ return "FORMAT_R12X4_UINT_PACK16_ARM";
+ case (VK_FORMAT_R12X4G12X4_UINT_2PACK16_ARM):
+ return "FORMAT_R12X4G12X4_UINT_2PACK16_ARM";
+ case (VK_FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM):
+ return "FORMAT_R12X4G12X4B12X4A12X4_UINT_4PACK16_ARM";
+ case (VK_FORMAT_R14X2_UINT_PACK16_ARM):
+ return "FORMAT_R14X2_UINT_PACK16_ARM";
+ case (VK_FORMAT_R14X2G14X2_UINT_2PACK16_ARM):
+ return "FORMAT_R14X2G14X2_UINT_2PACK16_ARM";
+ case (VK_FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM):
+ return "FORMAT_R14X2G14X2B14X2A14X2_UINT_4PACK16_ARM";
+ case (VK_FORMAT_R14X2_UNORM_PACK16_ARM):
+ return "FORMAT_R14X2_UNORM_PACK16_ARM";
+ case (VK_FORMAT_R14X2G14X2_UNORM_2PACK16_ARM):
+ return "FORMAT_R14X2G14X2_UNORM_2PACK16_ARM";
+ case (VK_FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM):
+ return "FORMAT_R14X2G14X2B14X2A14X2_UNORM_4PACK16_ARM";
+ case (VK_FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM):
+ return "FORMAT_G14X2_B14X2R14X2_2PLANE_420_UNORM_3PACK16_ARM";
+ case (VK_FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM):
+ return "FORMAT_G14X2_B14X2R14X2_2PLANE_422_UNORM_3PACK16_ARM";
+ default:
+ return std::string("UNKNOWN_VkFormat_value") + std::to_string(value);
+ }
+}
+void DumpVkFormat(Printer &p, std::string name, VkFormat value) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + VkFormatString(value));
+ else
+ p.PrintKeyString(name, VkFormatString(value));
+}
+std::string VkImageLayoutString(VkImageLayout value) {
+ switch (value) {
+ case (VK_IMAGE_LAYOUT_UNDEFINED):
+ return "IMAGE_LAYOUT_UNDEFINED";
+ case (VK_IMAGE_LAYOUT_GENERAL):
+ return "IMAGE_LAYOUT_GENERAL";
+ case (VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL):
+ return "IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL";
+ case (VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL):
+ return "IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL";
+ case (VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL):
+ return "IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL";
+ case (VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL):
+ return "IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL";
+ case (VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL):
+ return "IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL";
+ case (VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL):
+ return "IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL";
+ case (VK_IMAGE_LAYOUT_PREINITIALIZED):
+ return "IMAGE_LAYOUT_PREINITIALIZED";
+ case (VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL):
+ return "IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL";
+ case (VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL):
+ return "IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL";
+ case (VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL):
+ return "IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL";
+ case (VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL):
+ return "IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL";
+ case (VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL):
+ return "IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL";
+ case (VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL):
+ return "IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL";
+ case (VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL):
+ return "IMAGE_LAYOUT_READ_ONLY_OPTIMAL";
+ case (VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL):
+ return "IMAGE_LAYOUT_ATTACHMENT_OPTIMAL";
+ case (VK_IMAGE_LAYOUT_RENDERING_LOCAL_READ):
+ return "IMAGE_LAYOUT_RENDERING_LOCAL_READ";
+ case (VK_IMAGE_LAYOUT_PRESENT_SRC_KHR):
+ return "IMAGE_LAYOUT_PRESENT_SRC_KHR";
+ case (VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR):
+ return "IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR";
+ case (VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR):
+ return "IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR";
+ case (VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR):
+ return "IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR";
+ case (VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR):
+ return "IMAGE_LAYOUT_SHARED_PRESENT_KHR";
+ case (VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT):
+ return "IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT";
+ case (VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR):
+ return "IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR";
+ case (VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR):
+ return "IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR";
+ case (VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR):
+ return "IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR";
+ case (VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR):
+ return "IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR";
+ case (VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT):
+ return "IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT";
+ case (VK_IMAGE_LAYOUT_TENSOR_ALIASING_ARM):
+ return "IMAGE_LAYOUT_TENSOR_ALIASING_ARM";
+ case (VK_IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR):
+ return "IMAGE_LAYOUT_VIDEO_ENCODE_QUANTIZATION_MAP_KHR";
+ case (VK_IMAGE_LAYOUT_ZERO_INITIALIZED_EXT):
+ return "IMAGE_LAYOUT_ZERO_INITIALIZED_EXT";
+ default:
+ return std::string("UNKNOWN_VkImageLayout_value") + std::to_string(value);
+ }
+}
+void DumpVkImageLayout(Printer &p, std::string name, VkImageLayout value) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + VkImageLayoutString(value));
+ else
+ p.PrintKeyString(name, VkImageLayoutString(value));
+}
+std::string VkImageTilingString(VkImageTiling value) {
+ switch (value) {
+ case (VK_IMAGE_TILING_OPTIMAL):
+ return "IMAGE_TILING_OPTIMAL";
+ case (VK_IMAGE_TILING_LINEAR):
+ return "IMAGE_TILING_LINEAR";
+ case (VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT):
+ return "IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT";
+ default:
+ return std::string("UNKNOWN_VkImageTiling_value") + std::to_string(value);
+ }
+}
+void DumpVkImageTiling(Printer &p, std::string name, VkImageTiling value) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + VkImageTilingString(value));
+ else
+ p.PrintKeyString(name, VkImageTilingString(value));
+}
+std::string VkImageTypeString(VkImageType value) {
+ switch (value) {
+ case (VK_IMAGE_TYPE_1D):
+ return "IMAGE_TYPE_1D";
+ case (VK_IMAGE_TYPE_2D):
+ return "IMAGE_TYPE_2D";
+ case (VK_IMAGE_TYPE_3D):
+ return "IMAGE_TYPE_3D";
+ default:
+ return std::string("UNKNOWN_VkImageType_value") + std::to_string(value);
+ }
+}
+void DumpVkImageType(Printer &p, std::string name, VkImageType value) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + VkImageTypeString(value));
+ else
+ p.PrintKeyString(name, VkImageTypeString(value));
+}
+std::string VkPhysicalDeviceLayeredApiKHRString(VkPhysicalDeviceLayeredApiKHR value) {
+ switch (value) {
+ case (VK_PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR):
+ return "PHYSICAL_DEVICE_LAYERED_API_VULKAN_KHR";
+ case (VK_PHYSICAL_DEVICE_LAYERED_API_D3D12_KHR):
+ return "PHYSICAL_DEVICE_LAYERED_API_D3D12_KHR";
+ case (VK_PHYSICAL_DEVICE_LAYERED_API_METAL_KHR):
+ return "PHYSICAL_DEVICE_LAYERED_API_METAL_KHR";
+ case (VK_PHYSICAL_DEVICE_LAYERED_API_OPENGL_KHR):
+ return "PHYSICAL_DEVICE_LAYERED_API_OPENGL_KHR";
+ case (VK_PHYSICAL_DEVICE_LAYERED_API_OPENGLES_KHR):
+ return "PHYSICAL_DEVICE_LAYERED_API_OPENGLES_KHR";
+ default:
+ return std::string("UNKNOWN_VkPhysicalDeviceLayeredApiKHR_value") + std::to_string(value);
+ }
+}
+void DumpVkPhysicalDeviceLayeredApiKHR(Printer &p, std::string name, VkPhysicalDeviceLayeredApiKHR value) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + VkPhysicalDeviceLayeredApiKHRString(value));
+ else
+ p.PrintKeyString(name, VkPhysicalDeviceLayeredApiKHRString(value));
+}
+std::string VkPhysicalDeviceTypeString(VkPhysicalDeviceType value) {
+ switch (value) {
+ case (VK_PHYSICAL_DEVICE_TYPE_OTHER):
+ return "PHYSICAL_DEVICE_TYPE_OTHER";
+ case (VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU):
+ return "PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU";
+ case (VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU):
+ return "PHYSICAL_DEVICE_TYPE_DISCRETE_GPU";
+ case (VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU):
+ return "PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU";
+ case (VK_PHYSICAL_DEVICE_TYPE_CPU):
+ return "PHYSICAL_DEVICE_TYPE_CPU";
+ default:
+ return std::string("UNKNOWN_VkPhysicalDeviceType_value") + std::to_string(value);
+ }
+}
+void DumpVkPhysicalDeviceType(Printer &p, std::string name, VkPhysicalDeviceType value) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + VkPhysicalDeviceTypeString(value));
+ else
+ p.PrintKeyString(name, VkPhysicalDeviceTypeString(value));
+}
+std::string VkPipelineRobustnessBufferBehaviorString(VkPipelineRobustnessBufferBehavior value) {
+ switch (value) {
+ case (VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT):
+ return "PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT";
+ case (VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED):
+ return "PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED";
+ case (VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS):
+ return "PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS";
+ case (VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2):
+ return "PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2";
+ default:
+ return std::string("UNKNOWN_VkPipelineRobustnessBufferBehavior_value") + std::to_string(value);
+ }
+}
+void DumpVkPipelineRobustnessBufferBehavior(Printer &p, std::string name, VkPipelineRobustnessBufferBehavior value) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + VkPipelineRobustnessBufferBehaviorString(value));
+ else
+ p.PrintKeyString(name, VkPipelineRobustnessBufferBehaviorString(value));
+}
+std::string VkPipelineRobustnessImageBehaviorString(VkPipelineRobustnessImageBehavior value) {
+ switch (value) {
+ case (VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT):
+ return "PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT";
+ case (VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED):
+ return "PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED";
+ case (VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS):
+ return "PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS";
+ case (VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2):
+ return "PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2";
+ default:
+ return std::string("UNKNOWN_VkPipelineRobustnessImageBehavior_value") + std::to_string(value);
+ }
+}
+void DumpVkPipelineRobustnessImageBehavior(Printer &p, std::string name, VkPipelineRobustnessImageBehavior value) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + VkPipelineRobustnessImageBehaviorString(value));
+ else
+ p.PrintKeyString(name, VkPipelineRobustnessImageBehaviorString(value));
+}
+std::string VkPointClippingBehaviorString(VkPointClippingBehavior value) {
+ switch (value) {
+ case (VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES):
+ return "POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES";
+ case (VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY):
+ return "POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY";
+ default:
+ return std::string("UNKNOWN_VkPointClippingBehavior_value") + std::to_string(value);
+ }
+}
+void DumpVkPointClippingBehavior(Printer &p, std::string name, VkPointClippingBehavior value) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + VkPointClippingBehaviorString(value));
+ else
+ p.PrintKeyString(name, VkPointClippingBehaviorString(value));
+}
+std::string VkPresentModeKHRString(VkPresentModeKHR value) {
+ switch (value) {
+ case (VK_PRESENT_MODE_IMMEDIATE_KHR):
+ return "PRESENT_MODE_IMMEDIATE_KHR";
+ case (VK_PRESENT_MODE_MAILBOX_KHR):
+ return "PRESENT_MODE_MAILBOX_KHR";
+ case (VK_PRESENT_MODE_FIFO_KHR):
+ return "PRESENT_MODE_FIFO_KHR";
+ case (VK_PRESENT_MODE_FIFO_RELAXED_KHR):
+ return "PRESENT_MODE_FIFO_RELAXED_KHR";
+ case (VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR):
+ return "PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR";
+ case (VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR):
+ return "PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR";
+ case (VK_PRESENT_MODE_FIFO_LATEST_READY_KHR):
+ return "PRESENT_MODE_FIFO_LATEST_READY_KHR";
+ default:
+ return std::string("UNKNOWN_VkPresentModeKHR_value") + std::to_string(value);
+ }
+}
+void DumpVkPresentModeKHR(Printer &p, std::string name, VkPresentModeKHR value) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + VkPresentModeKHRString(value));
+ else
+ p.PrintKeyString(name, VkPresentModeKHRString(value));
+}
+std::string VkQueueGlobalPriorityString(VkQueueGlobalPriority value) {
+ switch (value) {
+ case (VK_QUEUE_GLOBAL_PRIORITY_LOW):
+ return "QUEUE_GLOBAL_PRIORITY_LOW";
+ case (VK_QUEUE_GLOBAL_PRIORITY_MEDIUM):
+ return "QUEUE_GLOBAL_PRIORITY_MEDIUM";
+ case (VK_QUEUE_GLOBAL_PRIORITY_HIGH):
+ return "QUEUE_GLOBAL_PRIORITY_HIGH";
+ case (VK_QUEUE_GLOBAL_PRIORITY_REALTIME):
+ return "QUEUE_GLOBAL_PRIORITY_REALTIME";
+ default:
+ return std::string("UNKNOWN_VkQueueGlobalPriority_value") + std::to_string(value);
+ }
+}
+void DumpVkQueueGlobalPriority(Printer &p, std::string name, VkQueueGlobalPriority value) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + VkQueueGlobalPriorityString(value));
+ else
+ p.PrintKeyString(name, VkQueueGlobalPriorityString(value));
+}
+std::string VkRayTracingInvocationReorderModeEXTString(VkRayTracingInvocationReorderModeEXT value) {
+ switch (value) {
+ case (VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_EXT):
+ return "RAY_TRACING_INVOCATION_REORDER_MODE_NONE_EXT";
+ case (VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_EXT):
+ return "RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_EXT";
+ default:
+ return std::string("UNKNOWN_VkRayTracingInvocationReorderModeEXT_value") + std::to_string(value);
+ }
+}
+void DumpVkRayTracingInvocationReorderModeEXT(Printer &p, std::string name, VkRayTracingInvocationReorderModeEXT value) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + VkRayTracingInvocationReorderModeEXTString(value));
+ else
+ p.PrintKeyString(name, VkRayTracingInvocationReorderModeEXTString(value));
+}
+std::string VkResultString(VkResult value) {
+ switch (value) {
+ case (VK_SUCCESS):
+ return "SUCCESS";
+ case (VK_NOT_READY):
+ return "NOT_READY";
+ case (VK_TIMEOUT):
+ return "TIMEOUT";
+ case (VK_EVENT_SET):
+ return "EVENT_SET";
+ case (VK_EVENT_RESET):
+ return "EVENT_RESET";
+ case (VK_INCOMPLETE):
+ return "INCOMPLETE";
+ case (VK_ERROR_OUT_OF_HOST_MEMORY):
+ return "ERROR_OUT_OF_HOST_MEMORY";
+ case (VK_ERROR_OUT_OF_DEVICE_MEMORY):
+ return "ERROR_OUT_OF_DEVICE_MEMORY";
+ case (VK_ERROR_INITIALIZATION_FAILED):
+ return "ERROR_INITIALIZATION_FAILED";
+ case (VK_ERROR_DEVICE_LOST):
+ return "ERROR_DEVICE_LOST";
+ case (VK_ERROR_MEMORY_MAP_FAILED):
+ return "ERROR_MEMORY_MAP_FAILED";
+ case (VK_ERROR_LAYER_NOT_PRESENT):
+ return "ERROR_LAYER_NOT_PRESENT";
+ case (VK_ERROR_EXTENSION_NOT_PRESENT):
+ return "ERROR_EXTENSION_NOT_PRESENT";
+ case (VK_ERROR_FEATURE_NOT_PRESENT):
+ return "ERROR_FEATURE_NOT_PRESENT";
+ case (VK_ERROR_INCOMPATIBLE_DRIVER):
+ return "ERROR_INCOMPATIBLE_DRIVER";
+ case (VK_ERROR_TOO_MANY_OBJECTS):
+ return "ERROR_TOO_MANY_OBJECTS";
+ case (VK_ERROR_FORMAT_NOT_SUPPORTED):
+ return "ERROR_FORMAT_NOT_SUPPORTED";
+ case (VK_ERROR_FRAGMENTED_POOL):
+ return "ERROR_FRAGMENTED_POOL";
+ case (VK_ERROR_UNKNOWN):
+ return "ERROR_UNKNOWN";
+ case (VK_ERROR_VALIDATION_FAILED):
+ return "ERROR_VALIDATION_FAILED";
+ case (VK_ERROR_OUT_OF_POOL_MEMORY):
+ return "ERROR_OUT_OF_POOL_MEMORY";
+ case (VK_ERROR_INVALID_EXTERNAL_HANDLE):
+ return "ERROR_INVALID_EXTERNAL_HANDLE";
+ case (VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS):
+ return "ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS";
+ case (VK_ERROR_FRAGMENTATION):
+ return "ERROR_FRAGMENTATION";
+ case (VK_PIPELINE_COMPILE_REQUIRED):
+ return "PIPELINE_COMPILE_REQUIRED";
+ case (VK_ERROR_NOT_PERMITTED):
+ return "ERROR_NOT_PERMITTED";
+ case (VK_ERROR_SURFACE_LOST_KHR):
+ return "ERROR_SURFACE_LOST_KHR";
+ case (VK_ERROR_NATIVE_WINDOW_IN_USE_KHR):
+ return "ERROR_NATIVE_WINDOW_IN_USE_KHR";
+ case (VK_SUBOPTIMAL_KHR):
+ return "SUBOPTIMAL_KHR";
+ case (VK_ERROR_OUT_OF_DATE_KHR):
+ return "ERROR_OUT_OF_DATE_KHR";
+ case (VK_ERROR_INCOMPATIBLE_DISPLAY_KHR):
+ return "ERROR_INCOMPATIBLE_DISPLAY_KHR";
+ case (VK_ERROR_INVALID_SHADER_NV):
+ return "ERROR_INVALID_SHADER_NV";
+ case (VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR):
+ return "ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR";
+ case (VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR):
+ return "ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR";
+ case (VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR):
+ return "ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR";
+ case (VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR):
+ return "ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR";
+ case (VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR):
+ return "ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR";
+ case (VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR):
+ return "ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR";
+ case (VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT):
+ return "ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT";
+ case (VK_ERROR_PRESENT_TIMING_QUEUE_FULL_EXT):
+ return "ERROR_PRESENT_TIMING_QUEUE_FULL_EXT";
+ case (VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT):
+ return "ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT";
+ case (VK_THREAD_IDLE_KHR):
+ return "THREAD_IDLE_KHR";
+ case (VK_THREAD_DONE_KHR):
+ return "THREAD_DONE_KHR";
+ case (VK_OPERATION_DEFERRED_KHR):
+ return "OPERATION_DEFERRED_KHR";
+ case (VK_OPERATION_NOT_DEFERRED_KHR):
+ return "OPERATION_NOT_DEFERRED_KHR";
+ case (VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR):
+ return "ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR";
+ case (VK_ERROR_COMPRESSION_EXHAUSTED_EXT):
+ return "ERROR_COMPRESSION_EXHAUSTED_EXT";
+ case (VK_INCOMPATIBLE_SHADER_BINARY_EXT):
+ return "INCOMPATIBLE_SHADER_BINARY_EXT";
+ case (VK_PIPELINE_BINARY_MISSING_KHR):
+ return "PIPELINE_BINARY_MISSING_KHR";
+ case (VK_ERROR_NOT_ENOUGH_SPACE_KHR):
+ return "ERROR_NOT_ENOUGH_SPACE_KHR";
+ default:
+ return std::string("UNKNOWN_VkResult_value") + std::to_string(value);
+ }
+}
+void DumpVkResult(Printer &p, std::string name, VkResult value) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + VkResultString(value));
+ else
+ p.PrintKeyString(name, VkResultString(value));
+}
+std::string VkScopeKHRString(VkScopeKHR value) {
+ switch (value) {
+ case (VK_SCOPE_DEVICE_KHR):
+ return "SCOPE_DEVICE_KHR";
+ case (VK_SCOPE_WORKGROUP_KHR):
+ return "SCOPE_WORKGROUP_KHR";
+ case (VK_SCOPE_SUBGROUP_KHR):
+ return "SCOPE_SUBGROUP_KHR";
+ case (VK_SCOPE_QUEUE_FAMILY_KHR):
+ return "SCOPE_QUEUE_FAMILY_KHR";
+ default:
+ return std::string("UNKNOWN_VkScopeKHR_value") + std::to_string(value);
+ }
+}
+void DumpVkScopeKHR(Printer &p, std::string name, VkScopeKHR value) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + VkScopeKHRString(value));
+ else
+ p.PrintKeyString(name, VkScopeKHRString(value));
+}
+std::string VkShaderFloatControlsIndependenceString(VkShaderFloatControlsIndependence value) {
+ switch (value) {
+ case (VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY):
+ return "SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY";
+ case (VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL):
+ return "SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL";
+ case (VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE):
+ return "SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE";
+ default:
+ return std::string("UNKNOWN_VkShaderFloatControlsIndependence_value") + std::to_string(value);
+ }
+}
+void DumpVkShaderFloatControlsIndependence(Printer &p, std::string name, VkShaderFloatControlsIndependence value) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + VkShaderFloatControlsIndependenceString(value));
+ else
+ p.PrintKeyString(name, VkShaderFloatControlsIndependenceString(value));
+}
+std::string VkTimeDomainKHRString(VkTimeDomainKHR value) {
+ switch (value) {
+ case (VK_TIME_DOMAIN_DEVICE_KHR):
+ return "TIME_DOMAIN_DEVICE_KHR";
+ case (VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR):
+ return "TIME_DOMAIN_CLOCK_MONOTONIC_KHR";
+ case (VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR):
+ return "TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR";
+ case (VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR):
+ return "TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR";
+ case (VK_TIME_DOMAIN_PRESENT_STAGE_LOCAL_EXT):
+ return "TIME_DOMAIN_PRESENT_STAGE_LOCAL_EXT";
+ case (VK_TIME_DOMAIN_SWAPCHAIN_LOCAL_EXT):
+ return "TIME_DOMAIN_SWAPCHAIN_LOCAL_EXT";
+ default:
+ return std::string("UNKNOWN_VkTimeDomainKHR_value") + std::to_string(value);
+ }
+}
+void DumpVkTimeDomainKHR(Printer &p, std::string name, VkTimeDomainKHR value) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + VkTimeDomainKHRString(value));
+ else
+ p.PrintKeyString(name, VkTimeDomainKHRString(value));
+}
+std::string VkVideoEncodeTuningModeKHRString(VkVideoEncodeTuningModeKHR value) {
+ switch (value) {
+ case (VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR):
+ return "VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR";
+ case (VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR):
+ return "VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR";
+ case (VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR):
+ return "VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR";
+ case (VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR):
+ return "VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR";
+ case (VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR):
+ return "VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR";
+ default:
+ return std::string("UNKNOWN_VkVideoEncodeTuningModeKHR_value") + std::to_string(value);
+ }
+}
+void DumpVkVideoEncodeTuningModeKHR(Printer &p, std::string name, VkVideoEncodeTuningModeKHR value) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + VkVideoEncodeTuningModeKHRString(value));
+ else
+ p.PrintKeyString(name, VkVideoEncodeTuningModeKHRString(value));
+}
+std::vector<const char *> VkCompositeAlphaFlagBitsKHRGetStrings(VkCompositeAlphaFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR & value) strings.push_back("COMPOSITE_ALPHA_OPAQUE_BIT_KHR");
+ if (VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR & value) strings.push_back("COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR");
+ if (VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR & value) strings.push_back("COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR");
+ if (VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR & value) strings.push_back("COMPOSITE_ALPHA_INHERIT_BIT_KHR");
+ return strings;
+}
+void DumpVkCompositeAlphaFlagsKHR(Printer &p, std::string name, VkCompositeAlphaFlagsKHR value) {
+ if (static_cast<VkCompositeAlphaFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkCompositeAlphaFlagBitsKHRGetStrings(static_cast<VkCompositeAlphaFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkCompositeAlphaFlagBitsKHR(Printer &p, std::string name, VkCompositeAlphaFlagBitsKHR value) {
+ auto strings = VkCompositeAlphaFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkDeviceGroupPresentModeFlagBitsKHRGetStrings(VkDeviceGroupPresentModeFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR & value) strings.push_back("DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR");
+ if (VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR & value) strings.push_back("DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR");
+ if (VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR & value) strings.push_back("DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR");
+ if (VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR & value)
+ strings.push_back("DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR");
+ return strings;
+}
+void DumpVkDeviceGroupPresentModeFlagsKHR(Printer &p, std::string name, VkDeviceGroupPresentModeFlagsKHR value) {
+ if (static_cast<VkDeviceGroupPresentModeFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkDeviceGroupPresentModeFlagBitsKHRGetStrings(static_cast<VkDeviceGroupPresentModeFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkDeviceGroupPresentModeFlagBitsKHR(Printer &p, std::string name, VkDeviceGroupPresentModeFlagBitsKHR value) {
+ auto strings = VkDeviceGroupPresentModeFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkDisplayPlaneAlphaFlagBitsKHRGetStrings(VkDisplayPlaneAlphaFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR & value) strings.push_back("DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR");
+ if (VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR & value) strings.push_back("DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR");
+ if (VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR & value) strings.push_back("DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR");
+ if (VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR & value)
+ strings.push_back("DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR");
+ return strings;
+}
+void DumpVkDisplayPlaneAlphaFlagsKHR(Printer &p, std::string name, VkDisplayPlaneAlphaFlagsKHR value) {
+ if (static_cast<VkDisplayPlaneAlphaFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkDisplayPlaneAlphaFlagBitsKHRGetStrings(static_cast<VkDisplayPlaneAlphaFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkDisplayPlaneAlphaFlagBitsKHR(Printer &p, std::string name, VkDisplayPlaneAlphaFlagBitsKHR value) {
+ auto strings = VkDisplayPlaneAlphaFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkFormatFeatureFlagBitsGetStrings(VkFormatFeatureFlagBits value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT & value) strings.push_back("FORMAT_FEATURE_SAMPLED_IMAGE_BIT");
+ if (VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT & value) strings.push_back("FORMAT_FEATURE_STORAGE_IMAGE_BIT");
+ if (VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT & value) strings.push_back("FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT");
+ if (VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT & value) strings.push_back("FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT");
+ if (VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT & value) strings.push_back("FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT");
+ if (VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT & value)
+ strings.push_back("FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT");
+ if (VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT & value) strings.push_back("FORMAT_FEATURE_VERTEX_BUFFER_BIT");
+ if (VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT & value) strings.push_back("FORMAT_FEATURE_COLOR_ATTACHMENT_BIT");
+ if (VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT & value) strings.push_back("FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT");
+ if (VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT & value) strings.push_back("FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT");
+ if (VK_FORMAT_FEATURE_BLIT_SRC_BIT & value) strings.push_back("FORMAT_FEATURE_BLIT_SRC_BIT");
+ if (VK_FORMAT_FEATURE_BLIT_DST_BIT & value) strings.push_back("FORMAT_FEATURE_BLIT_DST_BIT");
+ if (VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT & value)
+ strings.push_back("FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT");
+ if (VK_FORMAT_FEATURE_TRANSFER_SRC_BIT & value) strings.push_back("FORMAT_FEATURE_TRANSFER_SRC_BIT");
+ if (VK_FORMAT_FEATURE_TRANSFER_DST_BIT & value) strings.push_back("FORMAT_FEATURE_TRANSFER_DST_BIT");
+ if (VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT & value) strings.push_back("FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT");
+ if (VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT & value)
+ strings.push_back("FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT");
+ if (VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT & value)
+ strings.push_back("FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT");
+ if (VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT & value)
+ strings.push_back("FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT");
+ if (VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT & value)
+ strings.push_back("FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT");
+ if (VK_FORMAT_FEATURE_DISJOINT_BIT & value) strings.push_back("FORMAT_FEATURE_DISJOINT_BIT");
+ if (VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT & value) strings.push_back("FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT");
+ if (VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT & value)
+ strings.push_back("FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT");
+ if (VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR & value) strings.push_back("FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR");
+ if (VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR & value) strings.push_back("FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR");
+ if (VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR & value)
+ strings.push_back("FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR");
+ if (VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT & value)
+ strings.push_back("FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT");
+ if (VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT & value) strings.push_back("FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT");
+ if (VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR & value)
+ strings.push_back("FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR");
+ if (VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR & value) strings.push_back("FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR");
+ if (VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR & value) strings.push_back("FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR");
+ return strings;
+}
+void DumpVkFormatFeatureFlags(Printer &p, std::string name, VkFormatFeatureFlags value) {
+ if (static_cast<VkFormatFeatureFlagBits>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkFormatFeatureFlagBitsGetStrings(static_cast<VkFormatFeatureFlagBits>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkFormatFeatureFlagBits(Printer &p, std::string name, VkFormatFeatureFlagBits value) {
+ auto strings = VkFormatFeatureFlagBitsGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkFormatFeatureFlagBits2GetStrings(VkFormatFeatureFlagBits2 value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT & value) strings.push_back("FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT");
+ if (VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT & value) strings.push_back("FORMAT_FEATURE_2_STORAGE_IMAGE_BIT");
+ if (VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT & value) strings.push_back("FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT");
+ if (VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT & value) strings.push_back("FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT");
+ if (VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT & value) strings.push_back("FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT");
+ if (VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT & value)
+ strings.push_back("FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT");
+ if (VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT & value) strings.push_back("FORMAT_FEATURE_2_VERTEX_BUFFER_BIT");
+ if (VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT & value) strings.push_back("FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT");
+ if (VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT & value) strings.push_back("FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT");
+ if (VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT & value)
+ strings.push_back("FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT");
+ if (VK_FORMAT_FEATURE_2_BLIT_SRC_BIT & value) strings.push_back("FORMAT_FEATURE_2_BLIT_SRC_BIT");
+ if (VK_FORMAT_FEATURE_2_BLIT_DST_BIT & value) strings.push_back("FORMAT_FEATURE_2_BLIT_DST_BIT");
+ if (VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT & value)
+ strings.push_back("FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT");
+ if (VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT & value) strings.push_back("FORMAT_FEATURE_2_TRANSFER_SRC_BIT");
+ if (VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT & value) strings.push_back("FORMAT_FEATURE_2_TRANSFER_DST_BIT");
+ if (VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT & value)
+ strings.push_back("FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT");
+ if (VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT & value) strings.push_back("FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT");
+ if (VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT & value)
+ strings.push_back("FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT");
+ if (VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT & value)
+ strings.push_back("FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT");
+ if (VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT & value)
+ strings.push_back("FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT");
+ if (VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT & value)
+ strings.push_back("FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT");
+ if (VK_FORMAT_FEATURE_2_DISJOINT_BIT & value) strings.push_back("FORMAT_FEATURE_2_DISJOINT_BIT");
+ if (VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT & value) strings.push_back("FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT");
+ if (VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT & value)
+ strings.push_back("FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT");
+ if (VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT & value)
+ strings.push_back("FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT");
+ if (VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT & value)
+ strings.push_back("FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT");
+ if (VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT & value)
+ strings.push_back("FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT");
+ if (VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT & value) strings.push_back("FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT");
+ if (VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR & value) strings.push_back("FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR");
+ if (VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR & value) strings.push_back("FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR");
+ if (VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR & value)
+ strings.push_back("FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR");
+ if (VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT & value)
+ strings.push_back("FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT");
+ if (VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR & value)
+ strings.push_back("FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR");
+ if (VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR & value) strings.push_back("FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR");
+ if (VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR & value) strings.push_back("FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR");
+ if (VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_RADIUS_BUFFER_BIT_NV & value)
+ strings.push_back("FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_RADIUS_BUFFER_BIT_NV");
+ if (VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV & value)
+ strings.push_back("FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV");
+ if (VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM & value) strings.push_back("FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM");
+ if (VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM & value)
+ strings.push_back("FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM");
+ if (VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM & value) strings.push_back("FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM");
+ if (VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM & value) strings.push_back("FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM");
+ if (VK_FORMAT_FEATURE_2_TENSOR_SHADER_BIT_ARM & value) strings.push_back("FORMAT_FEATURE_2_TENSOR_SHADER_BIT_ARM");
+ if (VK_FORMAT_FEATURE_2_TENSOR_IMAGE_ALIASING_BIT_ARM & value)
+ strings.push_back("FORMAT_FEATURE_2_TENSOR_IMAGE_ALIASING_BIT_ARM");
+ if (VK_FORMAT_FEATURE_2_OPTICAL_FLOW_IMAGE_BIT_NV & value) strings.push_back("FORMAT_FEATURE_2_OPTICAL_FLOW_IMAGE_BIT_NV");
+ if (VK_FORMAT_FEATURE_2_OPTICAL_FLOW_VECTOR_BIT_NV & value) strings.push_back("FORMAT_FEATURE_2_OPTICAL_FLOW_VECTOR_BIT_NV");
+ if (VK_FORMAT_FEATURE_2_OPTICAL_FLOW_COST_BIT_NV & value) strings.push_back("FORMAT_FEATURE_2_OPTICAL_FLOW_COST_BIT_NV");
+ if (VK_FORMAT_FEATURE_2_TENSOR_DATA_GRAPH_BIT_ARM & value) strings.push_back("FORMAT_FEATURE_2_TENSOR_DATA_GRAPH_BIT_ARM");
+ if (VK_FORMAT_FEATURE_2_COPY_IMAGE_INDIRECT_DST_BIT_KHR & value)
+ strings.push_back("FORMAT_FEATURE_2_COPY_IMAGE_INDIRECT_DST_BIT_KHR");
+ if (VK_FORMAT_FEATURE_2_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR & value)
+ strings.push_back("FORMAT_FEATURE_2_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR");
+ if (VK_FORMAT_FEATURE_2_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR & value)
+ strings.push_back("FORMAT_FEATURE_2_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR");
+ if (VK_FORMAT_FEATURE_2_DEPTH_COPY_ON_COMPUTE_QUEUE_BIT_KHR & value)
+ strings.push_back("FORMAT_FEATURE_2_DEPTH_COPY_ON_COMPUTE_QUEUE_BIT_KHR");
+ if (VK_FORMAT_FEATURE_2_DEPTH_COPY_ON_TRANSFER_QUEUE_BIT_KHR & value)
+ strings.push_back("FORMAT_FEATURE_2_DEPTH_COPY_ON_TRANSFER_QUEUE_BIT_KHR");
+ if (VK_FORMAT_FEATURE_2_STENCIL_COPY_ON_COMPUTE_QUEUE_BIT_KHR & value)
+ strings.push_back("FORMAT_FEATURE_2_STENCIL_COPY_ON_COMPUTE_QUEUE_BIT_KHR");
+ if (VK_FORMAT_FEATURE_2_STENCIL_COPY_ON_TRANSFER_QUEUE_BIT_KHR & value)
+ strings.push_back("FORMAT_FEATURE_2_STENCIL_COPY_ON_TRANSFER_QUEUE_BIT_KHR");
+ return strings;
+}
+void DumpVkFormatFeatureFlags2(Printer &p, std::string name, VkFormatFeatureFlags2 value) {
+ if (static_cast<VkFormatFeatureFlagBits2>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkFormatFeatureFlagBits2GetStrings(static_cast<VkFormatFeatureFlagBits2>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkFormatFeatureFlagBits2(Printer &p, std::string name, VkFormatFeatureFlagBits2 value) {
+ auto strings = VkFormatFeatureFlagBits2GetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkImageCreateFlagBitsGetStrings(VkImageCreateFlagBits value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_IMAGE_CREATE_SPARSE_BINDING_BIT & value) strings.push_back("IMAGE_CREATE_SPARSE_BINDING_BIT");
+ if (VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT & value) strings.push_back("IMAGE_CREATE_SPARSE_RESIDENCY_BIT");
+ if (VK_IMAGE_CREATE_SPARSE_ALIASED_BIT & value) strings.push_back("IMAGE_CREATE_SPARSE_ALIASED_BIT");
+ if (VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT & value) strings.push_back("IMAGE_CREATE_MUTABLE_FORMAT_BIT");
+ if (VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT & value) strings.push_back("IMAGE_CREATE_CUBE_COMPATIBLE_BIT");
+ if (VK_IMAGE_CREATE_ALIAS_BIT & value) strings.push_back("IMAGE_CREATE_ALIAS_BIT");
+ if (VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT & value) strings.push_back("IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT");
+ if (VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT & value) strings.push_back("IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT");
+ if (VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT & value) strings.push_back("IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT");
+ if (VK_IMAGE_CREATE_EXTENDED_USAGE_BIT & value) strings.push_back("IMAGE_CREATE_EXTENDED_USAGE_BIT");
+ if (VK_IMAGE_CREATE_PROTECTED_BIT & value) strings.push_back("IMAGE_CREATE_PROTECTED_BIT");
+ if (VK_IMAGE_CREATE_DISJOINT_BIT & value) strings.push_back("IMAGE_CREATE_DISJOINT_BIT");
+ if (VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV & value) strings.push_back("IMAGE_CREATE_CORNER_SAMPLED_BIT_NV");
+ if (VK_IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT & value)
+ strings.push_back("IMAGE_CREATE_DESCRIPTOR_HEAP_CAPTURE_REPLAY_BIT_EXT");
+ if (VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT & value)
+ strings.push_back("IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT");
+ if (VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT & value) strings.push_back("IMAGE_CREATE_SUBSAMPLED_BIT_EXT");
+ if (VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT & value)
+ strings.push_back("IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT");
+ if (VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT & value) strings.push_back("IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT");
+ if (VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR & value)
+ strings.push_back("IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR");
+ if (VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT & value)
+ strings.push_back("IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_EXT");
+ return strings;
+}
+void DumpVkImageCreateFlags(Printer &p, std::string name, VkImageCreateFlags value) {
+ if (static_cast<VkImageCreateFlagBits>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkImageCreateFlagBitsGetStrings(static_cast<VkImageCreateFlagBits>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkImageCreateFlagBits(Printer &p, std::string name, VkImageCreateFlagBits value) {
+ auto strings = VkImageCreateFlagBitsGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkImageUsageFlagBitsGetStrings(VkImageUsageFlagBits value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_IMAGE_USAGE_TRANSFER_SRC_BIT & value) strings.push_back("IMAGE_USAGE_TRANSFER_SRC_BIT");
+ if (VK_IMAGE_USAGE_TRANSFER_DST_BIT & value) strings.push_back("IMAGE_USAGE_TRANSFER_DST_BIT");
+ if (VK_IMAGE_USAGE_SAMPLED_BIT & value) strings.push_back("IMAGE_USAGE_SAMPLED_BIT");
+ if (VK_IMAGE_USAGE_STORAGE_BIT & value) strings.push_back("IMAGE_USAGE_STORAGE_BIT");
+ if (VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT & value) strings.push_back("IMAGE_USAGE_COLOR_ATTACHMENT_BIT");
+ if (VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT & value) strings.push_back("IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT");
+ if (VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT & value) strings.push_back("IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT");
+ if (VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT & value) strings.push_back("IMAGE_USAGE_INPUT_ATTACHMENT_BIT");
+ if (VK_IMAGE_USAGE_HOST_TRANSFER_BIT & value) strings.push_back("IMAGE_USAGE_HOST_TRANSFER_BIT");
+ if (VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR & value) strings.push_back("IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR");
+ if (VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR & value) strings.push_back("IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR");
+ if (VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR & value) strings.push_back("IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR");
+ if (VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT & value) strings.push_back("IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT");
+ if (VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR & value)
+ strings.push_back("IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR");
+ if (VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR & value) strings.push_back("IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR");
+ if (VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR & value) strings.push_back("IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR");
+ if (VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR & value) strings.push_back("IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR");
+ if (VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT & value) strings.push_back("IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT");
+ if (VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI & value) strings.push_back("IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI");
+ if (VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM & value) strings.push_back("IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM");
+ if (VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM & value) strings.push_back("IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM");
+ if (VK_IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM & value) strings.push_back("IMAGE_USAGE_TENSOR_ALIASING_BIT_ARM");
+ if (VK_IMAGE_USAGE_TILE_MEMORY_BIT_QCOM & value) strings.push_back("IMAGE_USAGE_TILE_MEMORY_BIT_QCOM");
+ if (VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR & value)
+ strings.push_back("IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR");
+ if (VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR & value)
+ strings.push_back("IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR");
+ return strings;
+}
+void DumpVkImageUsageFlags(Printer &p, std::string name, VkImageUsageFlags value) {
+ if (static_cast<VkImageUsageFlagBits>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkImageUsageFlagBitsGetStrings(static_cast<VkImageUsageFlagBits>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkImageUsageFlagBits(Printer &p, std::string name, VkImageUsageFlagBits value) {
+ auto strings = VkImageUsageFlagBitsGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkIndirectCommandsInputModeFlagBitsEXTGetStrings(VkIndirectCommandsInputModeFlagBitsEXT value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT & value)
+ strings.push_back("INDIRECT_COMMANDS_INPUT_MODE_VULKAN_INDEX_BUFFER_EXT");
+ if (VK_INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT & value)
+ strings.push_back("INDIRECT_COMMANDS_INPUT_MODE_DXGI_INDEX_BUFFER_EXT");
+ return strings;
+}
+void DumpVkIndirectCommandsInputModeFlagsEXT(Printer &p, std::string name, VkIndirectCommandsInputModeFlagsEXT value) {
+ if (static_cast<VkIndirectCommandsInputModeFlagBitsEXT>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkIndirectCommandsInputModeFlagBitsEXTGetStrings(static_cast<VkIndirectCommandsInputModeFlagBitsEXT>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkIndirectCommandsInputModeFlagBitsEXT(Printer &p, std::string name, VkIndirectCommandsInputModeFlagBitsEXT value) {
+ auto strings = VkIndirectCommandsInputModeFlagBitsEXTGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkMemoryDecompressionMethodFlagBitsEXTGetStrings(VkMemoryDecompressionMethodFlagBitsEXT value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_EXT & value)
+ strings.push_back("MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_EXT");
+ return strings;
+}
+void DumpVkMemoryDecompressionMethodFlagsEXT(Printer &p, std::string name, VkMemoryDecompressionMethodFlagsEXT value) {
+ if (static_cast<VkMemoryDecompressionMethodFlagBitsEXT>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkMemoryDecompressionMethodFlagBitsEXTGetStrings(static_cast<VkMemoryDecompressionMethodFlagBitsEXT>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkMemoryDecompressionMethodFlagBitsEXT(Printer &p, std::string name, VkMemoryDecompressionMethodFlagBitsEXT value) {
+ auto strings = VkMemoryDecompressionMethodFlagBitsEXTGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkMemoryHeapFlagBitsGetStrings(VkMemoryHeapFlagBits value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_MEMORY_HEAP_DEVICE_LOCAL_BIT & value) strings.push_back("MEMORY_HEAP_DEVICE_LOCAL_BIT");
+ if (VK_MEMORY_HEAP_MULTI_INSTANCE_BIT & value) strings.push_back("MEMORY_HEAP_MULTI_INSTANCE_BIT");
+ if (VK_MEMORY_HEAP_TILE_MEMORY_BIT_QCOM & value) strings.push_back("MEMORY_HEAP_TILE_MEMORY_BIT_QCOM");
+ return strings;
+}
+void DumpVkMemoryHeapFlags(Printer &p, std::string name, VkMemoryHeapFlags value) {
+ if (static_cast<VkMemoryHeapFlagBits>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkMemoryHeapFlagBitsGetStrings(static_cast<VkMemoryHeapFlagBits>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkMemoryHeapFlagBits(Printer &p, std::string name, VkMemoryHeapFlagBits value) {
+ auto strings = VkMemoryHeapFlagBitsGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkMemoryPropertyFlagBitsGetStrings(VkMemoryPropertyFlagBits value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT & value) strings.push_back("MEMORY_PROPERTY_DEVICE_LOCAL_BIT");
+ if (VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT & value) strings.push_back("MEMORY_PROPERTY_HOST_VISIBLE_BIT");
+ if (VK_MEMORY_PROPERTY_HOST_COHERENT_BIT & value) strings.push_back("MEMORY_PROPERTY_HOST_COHERENT_BIT");
+ if (VK_MEMORY_PROPERTY_HOST_CACHED_BIT & value) strings.push_back("MEMORY_PROPERTY_HOST_CACHED_BIT");
+ if (VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT & value) strings.push_back("MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT");
+ if (VK_MEMORY_PROPERTY_PROTECTED_BIT & value) strings.push_back("MEMORY_PROPERTY_PROTECTED_BIT");
+ if (VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD & value) strings.push_back("MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD");
+ if (VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD & value) strings.push_back("MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD");
+ if (VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV & value) strings.push_back("MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV");
+ return strings;
+}
+void DumpVkMemoryPropertyFlags(Printer &p, std::string name, VkMemoryPropertyFlags value) {
+ if (static_cast<VkMemoryPropertyFlagBits>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkMemoryPropertyFlagBitsGetStrings(static_cast<VkMemoryPropertyFlagBits>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkMemoryPropertyFlagBits(Printer &p, std::string name, VkMemoryPropertyFlagBits value) {
+ auto strings = VkMemoryPropertyFlagBitsGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkPresentGravityFlagBitsKHRGetStrings(VkPresentGravityFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_PRESENT_GRAVITY_MIN_BIT_KHR & value) strings.push_back("PRESENT_GRAVITY_MIN_BIT_KHR");
+ if (VK_PRESENT_GRAVITY_MAX_BIT_KHR & value) strings.push_back("PRESENT_GRAVITY_MAX_BIT_KHR");
+ if (VK_PRESENT_GRAVITY_CENTERED_BIT_KHR & value) strings.push_back("PRESENT_GRAVITY_CENTERED_BIT_KHR");
+ return strings;
+}
+void DumpVkPresentGravityFlagsKHR(Printer &p, std::string name, VkPresentGravityFlagsKHR value) {
+ if (static_cast<VkPresentGravityFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkPresentGravityFlagBitsKHRGetStrings(static_cast<VkPresentGravityFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkPresentGravityFlagBitsKHR(Printer &p, std::string name, VkPresentGravityFlagBitsKHR value) {
+ auto strings = VkPresentGravityFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkPresentScalingFlagBitsKHRGetStrings(VkPresentScalingFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_PRESENT_SCALING_ONE_TO_ONE_BIT_KHR & value) strings.push_back("PRESENT_SCALING_ONE_TO_ONE_BIT_KHR");
+ if (VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR & value) strings.push_back("PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_KHR");
+ if (VK_PRESENT_SCALING_STRETCH_BIT_KHR & value) strings.push_back("PRESENT_SCALING_STRETCH_BIT_KHR");
+ return strings;
+}
+void DumpVkPresentScalingFlagsKHR(Printer &p, std::string name, VkPresentScalingFlagsKHR value) {
+ if (static_cast<VkPresentScalingFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkPresentScalingFlagBitsKHRGetStrings(static_cast<VkPresentScalingFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkPresentScalingFlagBitsKHR(Printer &p, std::string name, VkPresentScalingFlagBitsKHR value) {
+ auto strings = VkPresentScalingFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkPresentStageFlagBitsEXTGetStrings(VkPresentStageFlagBitsEXT value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_PRESENT_STAGE_QUEUE_OPERATIONS_END_BIT_EXT & value) strings.push_back("PRESENT_STAGE_QUEUE_OPERATIONS_END_BIT_EXT");
+ if (VK_PRESENT_STAGE_REQUEST_DEQUEUED_BIT_EXT & value) strings.push_back("PRESENT_STAGE_REQUEST_DEQUEUED_BIT_EXT");
+ if (VK_PRESENT_STAGE_IMAGE_FIRST_PIXEL_OUT_BIT_EXT & value) strings.push_back("PRESENT_STAGE_IMAGE_FIRST_PIXEL_OUT_BIT_EXT");
+ if (VK_PRESENT_STAGE_IMAGE_FIRST_PIXEL_VISIBLE_BIT_EXT & value)
+ strings.push_back("PRESENT_STAGE_IMAGE_FIRST_PIXEL_VISIBLE_BIT_EXT");
+ return strings;
+}
+void DumpVkPresentStageFlagsEXT(Printer &p, std::string name, VkPresentStageFlagsEXT value) {
+ if (static_cast<VkPresentStageFlagBitsEXT>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkPresentStageFlagBitsEXTGetStrings(static_cast<VkPresentStageFlagBitsEXT>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkPresentStageFlagBitsEXT(Printer &p, std::string name, VkPresentStageFlagBitsEXT value) {
+ auto strings = VkPresentStageFlagBitsEXTGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkQueueFlagBitsGetStrings(VkQueueFlagBits value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_QUEUE_GRAPHICS_BIT & value) strings.push_back("QUEUE_GRAPHICS_BIT");
+ if (VK_QUEUE_COMPUTE_BIT & value) strings.push_back("QUEUE_COMPUTE_BIT");
+ if (VK_QUEUE_TRANSFER_BIT & value) strings.push_back("QUEUE_TRANSFER_BIT");
+ if (VK_QUEUE_SPARSE_BINDING_BIT & value) strings.push_back("QUEUE_SPARSE_BINDING_BIT");
+ if (VK_QUEUE_PROTECTED_BIT & value) strings.push_back("QUEUE_PROTECTED_BIT");
+ if (VK_QUEUE_VIDEO_DECODE_BIT_KHR & value) strings.push_back("QUEUE_VIDEO_DECODE_BIT_KHR");
+ if (VK_QUEUE_VIDEO_ENCODE_BIT_KHR & value) strings.push_back("QUEUE_VIDEO_ENCODE_BIT_KHR");
+ if (VK_QUEUE_OPTICAL_FLOW_BIT_NV & value) strings.push_back("QUEUE_OPTICAL_FLOW_BIT_NV");
+ if (VK_QUEUE_DATA_GRAPH_BIT_ARM & value) strings.push_back("QUEUE_DATA_GRAPH_BIT_ARM");
+ return strings;
+}
+void DumpVkQueueFlags(Printer &p, std::string name, VkQueueFlags value) {
+ if (static_cast<VkQueueFlagBits>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkQueueFlagBitsGetStrings(static_cast<VkQueueFlagBits>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkQueueFlagBits(Printer &p, std::string name, VkQueueFlagBits value) {
+ auto strings = VkQueueFlagBitsGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::string VkQueueFlagsString(VkQueueFlags value) {
+ std::string out;
+ bool is_first = true;
+ if (VK_QUEUE_GRAPHICS_BIT & value) {
+ if (is_first) {
+ is_first = false;
+ } else {
+ out += " | ";
+ }
+ out += "QUEUE_GRAPHICS_BIT";
+ }
+ if (VK_QUEUE_COMPUTE_BIT & value) {
+ if (is_first) {
+ is_first = false;
+ } else {
+ out += " | ";
+ }
+ out += "QUEUE_COMPUTE_BIT";
+ }
+ if (VK_QUEUE_TRANSFER_BIT & value) {
+ if (is_first) {
+ is_first = false;
+ } else {
+ out += " | ";
+ }
+ out += "QUEUE_TRANSFER_BIT";
+ }
+ if (VK_QUEUE_SPARSE_BINDING_BIT & value) {
+ if (is_first) {
+ is_first = false;
+ } else {
+ out += " | ";
+ }
+ out += "QUEUE_SPARSE_BINDING_BIT";
+ }
+ if (VK_QUEUE_PROTECTED_BIT & value) {
+ if (is_first) {
+ is_first = false;
+ } else {
+ out += " | ";
+ }
+ out += "QUEUE_PROTECTED_BIT";
+ }
+ if (VK_QUEUE_VIDEO_DECODE_BIT_KHR & value) {
+ if (is_first) {
+ is_first = false;
+ } else {
+ out += " | ";
+ }
+ out += "QUEUE_VIDEO_DECODE_BIT_KHR";
+ }
+ if (VK_QUEUE_VIDEO_ENCODE_BIT_KHR & value) {
+ if (is_first) {
+ is_first = false;
+ } else {
+ out += " | ";
+ }
+ out += "QUEUE_VIDEO_ENCODE_BIT_KHR";
+ }
+ if (VK_QUEUE_OPTICAL_FLOW_BIT_NV & value) {
+ if (is_first) {
+ is_first = false;
+ } else {
+ out += " | ";
+ }
+ out += "QUEUE_OPTICAL_FLOW_BIT_NV";
+ }
+ if (VK_QUEUE_DATA_GRAPH_BIT_ARM & value) {
+ if (is_first) {
+ is_first = false;
+ } else {
+ out += " | ";
+ }
+ out += "QUEUE_DATA_GRAPH_BIT_ARM";
+ }
+ return out;
+}
+std::vector<const char *> VkResolveModeFlagBitsGetStrings(VkResolveModeFlagBits value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("RESOLVE_MODE_NONE");
+ return strings;
+ }
+ if (VK_RESOLVE_MODE_SAMPLE_ZERO_BIT & value) strings.push_back("RESOLVE_MODE_SAMPLE_ZERO_BIT");
+ if (VK_RESOLVE_MODE_AVERAGE_BIT & value) strings.push_back("RESOLVE_MODE_AVERAGE_BIT");
+ if (VK_RESOLVE_MODE_MIN_BIT & value) strings.push_back("RESOLVE_MODE_MIN_BIT");
+ if (VK_RESOLVE_MODE_MAX_BIT & value) strings.push_back("RESOLVE_MODE_MAX_BIT");
+ if (VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID & value)
+ strings.push_back("RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_BIT_ANDROID");
+ if (VK_RESOLVE_MODE_CUSTOM_BIT_EXT & value) strings.push_back("RESOLVE_MODE_CUSTOM_BIT_EXT");
+ return strings;
+}
+void DumpVkResolveModeFlags(Printer &p, std::string name, VkResolveModeFlags value) {
+ if (static_cast<VkResolveModeFlagBits>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkResolveModeFlagBitsGetStrings(static_cast<VkResolveModeFlagBits>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkResolveModeFlagBits(Printer &p, std::string name, VkResolveModeFlagBits value) {
+ auto strings = VkResolveModeFlagBitsGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkSampleCountFlagBitsGetStrings(VkSampleCountFlagBits value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_SAMPLE_COUNT_1_BIT & value) strings.push_back("SAMPLE_COUNT_1_BIT");
+ if (VK_SAMPLE_COUNT_2_BIT & value) strings.push_back("SAMPLE_COUNT_2_BIT");
+ if (VK_SAMPLE_COUNT_4_BIT & value) strings.push_back("SAMPLE_COUNT_4_BIT");
+ if (VK_SAMPLE_COUNT_8_BIT & value) strings.push_back("SAMPLE_COUNT_8_BIT");
+ if (VK_SAMPLE_COUNT_16_BIT & value) strings.push_back("SAMPLE_COUNT_16_BIT");
+ if (VK_SAMPLE_COUNT_32_BIT & value) strings.push_back("SAMPLE_COUNT_32_BIT");
+ if (VK_SAMPLE_COUNT_64_BIT & value) strings.push_back("SAMPLE_COUNT_64_BIT");
+ return strings;
+}
+void DumpVkSampleCountFlags(Printer &p, std::string name, VkSampleCountFlags value) {
+ if (static_cast<VkSampleCountFlagBits>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkSampleCountFlagBitsGetStrings(static_cast<VkSampleCountFlagBits>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkSampleCountFlagBits(Printer &p, std::string name, VkSampleCountFlagBits value) {
+ auto strings = VkSampleCountFlagBitsGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkShaderStageFlagBitsGetStrings(VkShaderStageFlagBits value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_SHADER_STAGE_VERTEX_BIT & value) strings.push_back("SHADER_STAGE_VERTEX_BIT");
+ if (VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT & value) strings.push_back("SHADER_STAGE_TESSELLATION_CONTROL_BIT");
+ if (VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT & value) strings.push_back("SHADER_STAGE_TESSELLATION_EVALUATION_BIT");
+ if (VK_SHADER_STAGE_GEOMETRY_BIT & value) strings.push_back("SHADER_STAGE_GEOMETRY_BIT");
+ if (VK_SHADER_STAGE_FRAGMENT_BIT & value) strings.push_back("SHADER_STAGE_FRAGMENT_BIT");
+ if (VK_SHADER_STAGE_COMPUTE_BIT & value) strings.push_back("SHADER_STAGE_COMPUTE_BIT");
+ if (VK_SHADER_STAGE_RAYGEN_BIT_KHR & value) strings.push_back("SHADER_STAGE_RAYGEN_BIT_KHR");
+ if (VK_SHADER_STAGE_ANY_HIT_BIT_KHR & value) strings.push_back("SHADER_STAGE_ANY_HIT_BIT_KHR");
+ if (VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR & value) strings.push_back("SHADER_STAGE_CLOSEST_HIT_BIT_KHR");
+ if (VK_SHADER_STAGE_MISS_BIT_KHR & value) strings.push_back("SHADER_STAGE_MISS_BIT_KHR");
+ if (VK_SHADER_STAGE_INTERSECTION_BIT_KHR & value) strings.push_back("SHADER_STAGE_INTERSECTION_BIT_KHR");
+ if (VK_SHADER_STAGE_CALLABLE_BIT_KHR & value) strings.push_back("SHADER_STAGE_CALLABLE_BIT_KHR");
+ if (VK_SHADER_STAGE_TASK_BIT_EXT & value) strings.push_back("SHADER_STAGE_TASK_BIT_EXT");
+ if (VK_SHADER_STAGE_MESH_BIT_EXT & value) strings.push_back("SHADER_STAGE_MESH_BIT_EXT");
+ if (VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI & value) strings.push_back("SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI");
+ if (VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI & value) strings.push_back("SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI");
+ return strings;
+}
+void DumpVkShaderStageFlags(Printer &p, std::string name, VkShaderStageFlags value) {
+ if (static_cast<VkShaderStageFlagBits>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkShaderStageFlagBitsGetStrings(static_cast<VkShaderStageFlagBits>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkShaderStageFlagBits(Printer &p, std::string name, VkShaderStageFlagBits value) {
+ auto strings = VkShaderStageFlagBitsGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkSubgroupFeatureFlagBitsGetStrings(VkSubgroupFeatureFlagBits value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_SUBGROUP_FEATURE_BASIC_BIT & value) strings.push_back("SUBGROUP_FEATURE_BASIC_BIT");
+ if (VK_SUBGROUP_FEATURE_VOTE_BIT & value) strings.push_back("SUBGROUP_FEATURE_VOTE_BIT");
+ if (VK_SUBGROUP_FEATURE_ARITHMETIC_BIT & value) strings.push_back("SUBGROUP_FEATURE_ARITHMETIC_BIT");
+ if (VK_SUBGROUP_FEATURE_BALLOT_BIT & value) strings.push_back("SUBGROUP_FEATURE_BALLOT_BIT");
+ if (VK_SUBGROUP_FEATURE_SHUFFLE_BIT & value) strings.push_back("SUBGROUP_FEATURE_SHUFFLE_BIT");
+ if (VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT & value) strings.push_back("SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT");
+ if (VK_SUBGROUP_FEATURE_CLUSTERED_BIT & value) strings.push_back("SUBGROUP_FEATURE_CLUSTERED_BIT");
+ if (VK_SUBGROUP_FEATURE_QUAD_BIT & value) strings.push_back("SUBGROUP_FEATURE_QUAD_BIT");
+ if (VK_SUBGROUP_FEATURE_ROTATE_BIT & value) strings.push_back("SUBGROUP_FEATURE_ROTATE_BIT");
+ if (VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT & value) strings.push_back("SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT");
+ if (VK_SUBGROUP_FEATURE_PARTITIONED_BIT_EXT & value) strings.push_back("SUBGROUP_FEATURE_PARTITIONED_BIT_EXT");
+ return strings;
+}
+void DumpVkSubgroupFeatureFlags(Printer &p, std::string name, VkSubgroupFeatureFlags value) {
+ if (static_cast<VkSubgroupFeatureFlagBits>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkSubgroupFeatureFlagBitsGetStrings(static_cast<VkSubgroupFeatureFlagBits>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkSubgroupFeatureFlagBits(Printer &p, std::string name, VkSubgroupFeatureFlagBits value) {
+ auto strings = VkSubgroupFeatureFlagBitsGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkSurfaceCounterFlagBitsEXTGetStrings(VkSurfaceCounterFlagBitsEXT value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_SURFACE_COUNTER_VBLANK_BIT_EXT & value) strings.push_back("SURFACE_COUNTER_VBLANK_BIT_EXT");
+ return strings;
+}
+void DumpVkSurfaceCounterFlagsEXT(Printer &p, std::string name, VkSurfaceCounterFlagsEXT value) {
+ if (static_cast<VkSurfaceCounterFlagBitsEXT>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkSurfaceCounterFlagBitsEXTGetStrings(static_cast<VkSurfaceCounterFlagBitsEXT>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkSurfaceCounterFlagBitsEXT(Printer &p, std::string name, VkSurfaceCounterFlagBitsEXT value) {
+ auto strings = VkSurfaceCounterFlagBitsEXTGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkSurfaceTransformFlagBitsKHRGetStrings(VkSurfaceTransformFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR & value) strings.push_back("SURFACE_TRANSFORM_IDENTITY_BIT_KHR");
+ if (VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR & value) strings.push_back("SURFACE_TRANSFORM_ROTATE_90_BIT_KHR");
+ if (VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR & value) strings.push_back("SURFACE_TRANSFORM_ROTATE_180_BIT_KHR");
+ if (VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR & value) strings.push_back("SURFACE_TRANSFORM_ROTATE_270_BIT_KHR");
+ if (VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR & value) strings.push_back("SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR");
+ if (VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR & value)
+ strings.push_back("SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR");
+ if (VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR & value)
+ strings.push_back("SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR");
+ if (VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR & value)
+ strings.push_back("SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR");
+ if (VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR & value) strings.push_back("SURFACE_TRANSFORM_INHERIT_BIT_KHR");
+ return strings;
+}
+void DumpVkSurfaceTransformFlagsKHR(Printer &p, std::string name, VkSurfaceTransformFlagsKHR value) {
+ if (static_cast<VkSurfaceTransformFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkSurfaceTransformFlagBitsKHRGetStrings(static_cast<VkSurfaceTransformFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkSurfaceTransformFlagBitsKHR(Printer &p, std::string name, VkSurfaceTransformFlagBitsKHR value) {
+ auto strings = VkSurfaceTransformFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkToolPurposeFlagBitsGetStrings(VkToolPurposeFlagBits value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_TOOL_PURPOSE_VALIDATION_BIT & value) strings.push_back("TOOL_PURPOSE_VALIDATION_BIT");
+ if (VK_TOOL_PURPOSE_PROFILING_BIT & value) strings.push_back("TOOL_PURPOSE_PROFILING_BIT");
+ if (VK_TOOL_PURPOSE_TRACING_BIT & value) strings.push_back("TOOL_PURPOSE_TRACING_BIT");
+ if (VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT & value) strings.push_back("TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT");
+ if (VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT & value) strings.push_back("TOOL_PURPOSE_MODIFYING_FEATURES_BIT");
+ if (VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT & value) strings.push_back("TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT");
+ if (VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT & value) strings.push_back("TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT");
+ return strings;
+}
+void DumpVkToolPurposeFlags(Printer &p, std::string name, VkToolPurposeFlags value) {
+ if (static_cast<VkToolPurposeFlagBits>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkToolPurposeFlagBitsGetStrings(static_cast<VkToolPurposeFlagBits>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkToolPurposeFlagBits(Printer &p, std::string name, VkToolPurposeFlagBits value) {
+ auto strings = VkToolPurposeFlagBitsGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkVideoCapabilityFlagBitsKHRGetStrings(VkVideoCapabilityFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR & value) strings.push_back("VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR");
+ if (VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR & value)
+ strings.push_back("VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR");
+ return strings;
+}
+void DumpVkVideoCapabilityFlagsKHR(Printer &p, std::string name, VkVideoCapabilityFlagsKHR value) {
+ if (static_cast<VkVideoCapabilityFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkVideoCapabilityFlagBitsKHRGetStrings(static_cast<VkVideoCapabilityFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkVideoCapabilityFlagBitsKHR(Printer &p, std::string name, VkVideoCapabilityFlagBitsKHR value) {
+ auto strings = VkVideoCapabilityFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkVideoChromaSubsamplingFlagBitsKHRGetStrings(VkVideoChromaSubsamplingFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("VIDEO_CHROMA_SUBSAMPLING_INVALID_KHR");
+ return strings;
+ }
+ if (VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR & value) strings.push_back("VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR");
+ if (VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR & value) strings.push_back("VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR");
+ if (VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR & value) strings.push_back("VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR");
+ if (VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR & value) strings.push_back("VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR");
+ return strings;
+}
+void DumpVkVideoChromaSubsamplingFlagsKHR(Printer &p, std::string name, VkVideoChromaSubsamplingFlagsKHR value) {
+ if (static_cast<VkVideoChromaSubsamplingFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkVideoChromaSubsamplingFlagBitsKHRGetStrings(static_cast<VkVideoChromaSubsamplingFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkVideoChromaSubsamplingFlagBitsKHR(Printer &p, std::string name, VkVideoChromaSubsamplingFlagBitsKHR value) {
+ auto strings = VkVideoChromaSubsamplingFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkVideoCodecOperationFlagBitsKHRGetStrings(VkVideoCodecOperationFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("VIDEO_CODEC_OPERATION_NONE_KHR");
+ return strings;
+ }
+ if (VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR & value) strings.push_back("VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR");
+ if (VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR & value) strings.push_back("VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR");
+ if (VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR & value) strings.push_back("VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR");
+ if (VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR & value) strings.push_back("VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR");
+ if (VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR & value) strings.push_back("VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR");
+ if (VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR & value) strings.push_back("VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR");
+ if (VK_VIDEO_CODEC_OPERATION_DECODE_VP9_BIT_KHR & value) strings.push_back("VIDEO_CODEC_OPERATION_DECODE_VP9_BIT_KHR");
+ return strings;
+}
+void DumpVkVideoCodecOperationFlagsKHR(Printer &p, std::string name, VkVideoCodecOperationFlagsKHR value) {
+ if (static_cast<VkVideoCodecOperationFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkVideoCodecOperationFlagBitsKHRGetStrings(static_cast<VkVideoCodecOperationFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkVideoCodecOperationFlagBitsKHR(Printer &p, std::string name, VkVideoCodecOperationFlagBitsKHR value) {
+ auto strings = VkVideoCodecOperationFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkVideoComponentBitDepthFlagBitsKHRGetStrings(VkVideoComponentBitDepthFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR");
+ return strings;
+ }
+ if (VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR & value) strings.push_back("VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR");
+ if (VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR & value) strings.push_back("VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR");
+ if (VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR & value) strings.push_back("VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR");
+ return strings;
+}
+void DumpVkVideoComponentBitDepthFlagsKHR(Printer &p, std::string name, VkVideoComponentBitDepthFlagsKHR value) {
+ if (static_cast<VkVideoComponentBitDepthFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkVideoComponentBitDepthFlagBitsKHRGetStrings(static_cast<VkVideoComponentBitDepthFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkVideoComponentBitDepthFlagBitsKHR(Printer &p, std::string name, VkVideoComponentBitDepthFlagBitsKHR value) {
+ auto strings = VkVideoComponentBitDepthFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkVideoDecodeCapabilityFlagBitsKHRGetStrings(VkVideoDecodeCapabilityFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR & value)
+ strings.push_back("VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR");
+ if (VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR & value)
+ strings.push_back("VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR");
+ return strings;
+}
+void DumpVkVideoDecodeCapabilityFlagsKHR(Printer &p, std::string name, VkVideoDecodeCapabilityFlagsKHR value) {
+ if (static_cast<VkVideoDecodeCapabilityFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkVideoDecodeCapabilityFlagBitsKHRGetStrings(static_cast<VkVideoDecodeCapabilityFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkVideoDecodeCapabilityFlagBitsKHR(Printer &p, std::string name, VkVideoDecodeCapabilityFlagBitsKHR value) {
+ auto strings = VkVideoDecodeCapabilityFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkVideoDecodeH264PictureLayoutFlagBitsKHRGetStrings(VkVideoDecodeH264PictureLayoutFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR");
+ return strings;
+ }
+ if (VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR & value)
+ strings.push_back("VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR");
+ if (VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR & value)
+ strings.push_back("VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR");
+ return strings;
+}
+void DumpVkVideoDecodeH264PictureLayoutFlagsKHR(Printer &p, std::string name, VkVideoDecodeH264PictureLayoutFlagsKHR value) {
+ if (static_cast<VkVideoDecodeH264PictureLayoutFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings =
+ VkVideoDecodeH264PictureLayoutFlagBitsKHRGetStrings(static_cast<VkVideoDecodeH264PictureLayoutFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkVideoDecodeH264PictureLayoutFlagBitsKHR(Printer &p, std::string name, VkVideoDecodeH264PictureLayoutFlagBitsKHR value) {
+ auto strings = VkVideoDecodeH264PictureLayoutFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkVideoDecodeUsageFlagBitsKHRGetStrings(VkVideoDecodeUsageFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("VIDEO_DECODE_USAGE_DEFAULT_KHR");
+ return strings;
+ }
+ if (VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR & value) strings.push_back("VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR");
+ if (VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR & value) strings.push_back("VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR");
+ if (VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR & value) strings.push_back("VIDEO_DECODE_USAGE_STREAMING_BIT_KHR");
+ return strings;
+}
+void DumpVkVideoDecodeUsageFlagsKHR(Printer &p, std::string name, VkVideoDecodeUsageFlagsKHR value) {
+ if (static_cast<VkVideoDecodeUsageFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkVideoDecodeUsageFlagBitsKHRGetStrings(static_cast<VkVideoDecodeUsageFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkVideoDecodeUsageFlagBitsKHR(Printer &p, std::string name, VkVideoDecodeUsageFlagBitsKHR value) {
+ auto strings = VkVideoDecodeUsageFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkVideoEncodeAV1CapabilityFlagBitsKHRGetStrings(VkVideoEncodeAV1CapabilityFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_VIDEO_ENCODE_AV1_CAPABILITY_PER_RATE_CONTROL_GROUP_MIN_MAX_Q_INDEX_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_AV1_CAPABILITY_PER_RATE_CONTROL_GROUP_MIN_MAX_Q_INDEX_BIT_KHR");
+ if (VK_VIDEO_ENCODE_AV1_CAPABILITY_GENERATE_OBU_EXTENSION_HEADER_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_AV1_CAPABILITY_GENERATE_OBU_EXTENSION_HEADER_BIT_KHR");
+ if (VK_VIDEO_ENCODE_AV1_CAPABILITY_PRIMARY_REFERENCE_CDF_ONLY_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_AV1_CAPABILITY_PRIMARY_REFERENCE_CDF_ONLY_BIT_KHR");
+ if (VK_VIDEO_ENCODE_AV1_CAPABILITY_FRAME_SIZE_OVERRIDE_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_AV1_CAPABILITY_FRAME_SIZE_OVERRIDE_BIT_KHR");
+ if (VK_VIDEO_ENCODE_AV1_CAPABILITY_MOTION_VECTOR_SCALING_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_AV1_CAPABILITY_MOTION_VECTOR_SCALING_BIT_KHR");
+ if (VK_VIDEO_ENCODE_AV1_CAPABILITY_COMPOUND_PREDICTION_INTRA_REFRESH_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_AV1_CAPABILITY_COMPOUND_PREDICTION_INTRA_REFRESH_BIT_KHR");
+ return strings;
+}
+void DumpVkVideoEncodeAV1CapabilityFlagsKHR(Printer &p, std::string name, VkVideoEncodeAV1CapabilityFlagsKHR value) {
+ if (static_cast<VkVideoEncodeAV1CapabilityFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkVideoEncodeAV1CapabilityFlagBitsKHRGetStrings(static_cast<VkVideoEncodeAV1CapabilityFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkVideoEncodeAV1CapabilityFlagBitsKHR(Printer &p, std::string name, VkVideoEncodeAV1CapabilityFlagBitsKHR value) {
+ auto strings = VkVideoEncodeAV1CapabilityFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkVideoEncodeAV1StdFlagBitsKHRGetStrings(VkVideoEncodeAV1StdFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_VIDEO_ENCODE_AV1_STD_UNIFORM_TILE_SPACING_FLAG_SET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_AV1_STD_UNIFORM_TILE_SPACING_FLAG_SET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_AV1_STD_SKIP_MODE_PRESENT_UNSET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_AV1_STD_SKIP_MODE_PRESENT_UNSET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_AV1_STD_PRIMARY_REF_FRAME_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_AV1_STD_PRIMARY_REF_FRAME_BIT_KHR");
+ if (VK_VIDEO_ENCODE_AV1_STD_DELTA_Q_BIT_KHR & value) strings.push_back("VIDEO_ENCODE_AV1_STD_DELTA_Q_BIT_KHR");
+ return strings;
+}
+void DumpVkVideoEncodeAV1StdFlagsKHR(Printer &p, std::string name, VkVideoEncodeAV1StdFlagsKHR value) {
+ if (static_cast<VkVideoEncodeAV1StdFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkVideoEncodeAV1StdFlagBitsKHRGetStrings(static_cast<VkVideoEncodeAV1StdFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkVideoEncodeAV1StdFlagBitsKHR(Printer &p, std::string name, VkVideoEncodeAV1StdFlagBitsKHR value) {
+ auto strings = VkVideoEncodeAV1StdFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkVideoEncodeAV1SuperblockSizeFlagBitsKHRGetStrings(VkVideoEncodeAV1SuperblockSizeFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_64_BIT_KHR & value) strings.push_back("VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_64_BIT_KHR");
+ if (VK_VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_128_BIT_KHR & value) strings.push_back("VIDEO_ENCODE_AV1_SUPERBLOCK_SIZE_128_BIT_KHR");
+ return strings;
+}
+void DumpVkVideoEncodeAV1SuperblockSizeFlagsKHR(Printer &p, std::string name, VkVideoEncodeAV1SuperblockSizeFlagsKHR value) {
+ if (static_cast<VkVideoEncodeAV1SuperblockSizeFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings =
+ VkVideoEncodeAV1SuperblockSizeFlagBitsKHRGetStrings(static_cast<VkVideoEncodeAV1SuperblockSizeFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkVideoEncodeAV1SuperblockSizeFlagBitsKHR(Printer &p, std::string name, VkVideoEncodeAV1SuperblockSizeFlagBitsKHR value) {
+ auto strings = VkVideoEncodeAV1SuperblockSizeFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkVideoEncodeCapabilityFlagBitsKHRGetStrings(VkVideoEncodeCapabilityFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR");
+ if (VK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR");
+ if (VK_VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR");
+ if (VK_VIDEO_ENCODE_CAPABILITY_EMPHASIS_MAP_BIT_KHR & value) strings.push_back("VIDEO_ENCODE_CAPABILITY_EMPHASIS_MAP_BIT_KHR");
+ return strings;
+}
+void DumpVkVideoEncodeCapabilityFlagsKHR(Printer &p, std::string name, VkVideoEncodeCapabilityFlagsKHR value) {
+ if (static_cast<VkVideoEncodeCapabilityFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkVideoEncodeCapabilityFlagBitsKHRGetStrings(static_cast<VkVideoEncodeCapabilityFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkVideoEncodeCapabilityFlagBitsKHR(Printer &p, std::string name, VkVideoEncodeCapabilityFlagBitsKHR value) {
+ auto strings = VkVideoEncodeCapabilityFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkVideoEncodeContentFlagBitsKHRGetStrings(VkVideoEncodeContentFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("VIDEO_ENCODE_CONTENT_DEFAULT_KHR");
+ return strings;
+ }
+ if (VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR & value) strings.push_back("VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR");
+ if (VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR & value) strings.push_back("VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR");
+ if (VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR & value) strings.push_back("VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR");
+ return strings;
+}
+void DumpVkVideoEncodeContentFlagsKHR(Printer &p, std::string name, VkVideoEncodeContentFlagsKHR value) {
+ if (static_cast<VkVideoEncodeContentFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkVideoEncodeContentFlagBitsKHRGetStrings(static_cast<VkVideoEncodeContentFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkVideoEncodeContentFlagBitsKHR(Printer &p, std::string name, VkVideoEncodeContentFlagBitsKHR value) {
+ auto strings = VkVideoEncodeContentFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkVideoEncodeFeedbackFlagBitsKHRGetStrings(VkVideoEncodeFeedbackFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR");
+ if (VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR");
+ return strings;
+}
+void DumpVkVideoEncodeFeedbackFlagsKHR(Printer &p, std::string name, VkVideoEncodeFeedbackFlagsKHR value) {
+ if (static_cast<VkVideoEncodeFeedbackFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkVideoEncodeFeedbackFlagBitsKHRGetStrings(static_cast<VkVideoEncodeFeedbackFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkVideoEncodeFeedbackFlagBitsKHR(Printer &p, std::string name, VkVideoEncodeFeedbackFlagBitsKHR value) {
+ auto strings = VkVideoEncodeFeedbackFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkVideoEncodeH264CapabilityFlagBitsKHRGetStrings(VkVideoEncodeH264CapabilityFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_CAPABILITY_MB_QP_DIFF_WRAPAROUND_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_CAPABILITY_MB_QP_DIFF_WRAPAROUND_BIT_KHR");
+ return strings;
+}
+void DumpVkVideoEncodeH264CapabilityFlagsKHR(Printer &p, std::string name, VkVideoEncodeH264CapabilityFlagsKHR value) {
+ if (static_cast<VkVideoEncodeH264CapabilityFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkVideoEncodeH264CapabilityFlagBitsKHRGetStrings(static_cast<VkVideoEncodeH264CapabilityFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkVideoEncodeH264CapabilityFlagBitsKHR(Printer &p, std::string name, VkVideoEncodeH264CapabilityFlagBitsKHR value) {
+ auto strings = VkVideoEncodeH264CapabilityFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkVideoEncodeH264StdFlagBitsKHRGetStrings(VkVideoEncodeH264StdFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_DISABLED_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_DISABLED_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_ENABLED_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_ENABLED_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_PARTIAL_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_PARTIAL_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_STD_SLICE_QP_DELTA_BIT_KHR & value) strings.push_back("VIDEO_ENCODE_H264_STD_SLICE_QP_DELTA_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR");
+ return strings;
+}
+void DumpVkVideoEncodeH264StdFlagsKHR(Printer &p, std::string name, VkVideoEncodeH264StdFlagsKHR value) {
+ if (static_cast<VkVideoEncodeH264StdFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkVideoEncodeH264StdFlagBitsKHRGetStrings(static_cast<VkVideoEncodeH264StdFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkVideoEncodeH264StdFlagBitsKHR(Printer &p, std::string name, VkVideoEncodeH264StdFlagBitsKHR value) {
+ auto strings = VkVideoEncodeH264StdFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkVideoEncodeH265CapabilityFlagBitsKHRGetStrings(VkVideoEncodeH265CapabilityFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_CAPABILITY_CU_QP_DIFF_WRAPAROUND_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_CAPABILITY_CU_QP_DIFF_WRAPAROUND_BIT_KHR");
+ return strings;
+}
+void DumpVkVideoEncodeH265CapabilityFlagsKHR(Printer &p, std::string name, VkVideoEncodeH265CapabilityFlagsKHR value) {
+ if (static_cast<VkVideoEncodeH265CapabilityFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkVideoEncodeH265CapabilityFlagBitsKHRGetStrings(static_cast<VkVideoEncodeH265CapabilityFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkVideoEncodeH265CapabilityFlagBitsKHR(Printer &p, std::string name, VkVideoEncodeH265CapabilityFlagBitsKHR value) {
+ auto strings = VkVideoEncodeH265CapabilityFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkVideoEncodeH265CtbSizeFlagBitsKHRGetStrings(VkVideoEncodeH265CtbSizeFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_KHR & value) strings.push_back("VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_KHR & value) strings.push_back("VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_KHR & value) strings.push_back("VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_KHR");
+ return strings;
+}
+void DumpVkVideoEncodeH265CtbSizeFlagsKHR(Printer &p, std::string name, VkVideoEncodeH265CtbSizeFlagsKHR value) {
+ if (static_cast<VkVideoEncodeH265CtbSizeFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkVideoEncodeH265CtbSizeFlagBitsKHRGetStrings(static_cast<VkVideoEncodeH265CtbSizeFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkVideoEncodeH265CtbSizeFlagBitsKHR(Printer &p, std::string name, VkVideoEncodeH265CtbSizeFlagBitsKHR value) {
+ auto strings = VkVideoEncodeH265CtbSizeFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkVideoEncodeH265StdFlagBitsKHRGetStrings(VkVideoEncodeH265StdFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_STD_ENTROPY_CODING_SYNC_ENABLED_FLAG_SET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_STD_ENTROPY_CODING_SYNC_ENABLED_FLAG_SET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_STD_DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_STD_DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENT_FLAG_SET_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENT_FLAG_SET_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_KHR & value) strings.push_back("VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR");
+ return strings;
+}
+void DumpVkVideoEncodeH265StdFlagsKHR(Printer &p, std::string name, VkVideoEncodeH265StdFlagsKHR value) {
+ if (static_cast<VkVideoEncodeH265StdFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkVideoEncodeH265StdFlagBitsKHRGetStrings(static_cast<VkVideoEncodeH265StdFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkVideoEncodeH265StdFlagBitsKHR(Printer &p, std::string name, VkVideoEncodeH265StdFlagBitsKHR value) {
+ auto strings = VkVideoEncodeH265StdFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkVideoEncodeH265TransformBlockSizeFlagBitsKHRGetStrings(
+ VkVideoEncodeH265TransformBlockSizeFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_KHR");
+ if (VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_KHR");
+ return strings;
+}
+void DumpVkVideoEncodeH265TransformBlockSizeFlagsKHR(Printer &p, std::string name,
+ VkVideoEncodeH265TransformBlockSizeFlagsKHR value) {
+ if (static_cast<VkVideoEncodeH265TransformBlockSizeFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkVideoEncodeH265TransformBlockSizeFlagBitsKHRGetStrings(
+ static_cast<VkVideoEncodeH265TransformBlockSizeFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkVideoEncodeH265TransformBlockSizeFlagBitsKHR(Printer &p, std::string name,
+ VkVideoEncodeH265TransformBlockSizeFlagBitsKHR value) {
+ auto strings = VkVideoEncodeH265TransformBlockSizeFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkVideoEncodeIntraRefreshModeFlagBitsKHRGetStrings(VkVideoEncodeIntraRefreshModeFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("VIDEO_ENCODE_INTRA_REFRESH_MODE_NONE_KHR");
+ return strings;
+ }
+ if (VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_PER_PICTURE_PARTITION_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_INTRA_REFRESH_MODE_PER_PICTURE_PARTITION_BIT_KHR");
+ if (VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_BASED_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_BASED_BIT_KHR");
+ if (VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_ROW_BASED_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_ROW_BASED_BIT_KHR");
+ if (VK_VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_COLUMN_BASED_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_INTRA_REFRESH_MODE_BLOCK_COLUMN_BASED_BIT_KHR");
+ return strings;
+}
+void DumpVkVideoEncodeIntraRefreshModeFlagsKHR(Printer &p, std::string name, VkVideoEncodeIntraRefreshModeFlagsKHR value) {
+ if (static_cast<VkVideoEncodeIntraRefreshModeFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkVideoEncodeIntraRefreshModeFlagBitsKHRGetStrings(static_cast<VkVideoEncodeIntraRefreshModeFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkVideoEncodeIntraRefreshModeFlagBitsKHR(Printer &p, std::string name, VkVideoEncodeIntraRefreshModeFlagBitsKHR value) {
+ auto strings = VkVideoEncodeIntraRefreshModeFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkVideoEncodeRateControlModeFlagBitsKHRGetStrings(VkVideoEncodeRateControlModeFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR");
+ return strings;
+ }
+ if (VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR & value)
+ strings.push_back("VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR");
+ if (VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR & value) strings.push_back("VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR");
+ if (VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR & value) strings.push_back("VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR");
+ return strings;
+}
+void DumpVkVideoEncodeRateControlModeFlagsKHR(Printer &p, std::string name, VkVideoEncodeRateControlModeFlagsKHR value) {
+ if (static_cast<VkVideoEncodeRateControlModeFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkVideoEncodeRateControlModeFlagBitsKHRGetStrings(static_cast<VkVideoEncodeRateControlModeFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkVideoEncodeRateControlModeFlagBitsKHR(Printer &p, std::string name, VkVideoEncodeRateControlModeFlagBitsKHR value) {
+ auto strings = VkVideoEncodeRateControlModeFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkVideoEncodeRgbChromaOffsetFlagBitsVALVEGetStrings(VkVideoEncodeRgbChromaOffsetFlagBitsVALVE value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_VIDEO_ENCODE_RGB_CHROMA_OFFSET_COSITED_EVEN_BIT_VALVE & value)
+ strings.push_back("VIDEO_ENCODE_RGB_CHROMA_OFFSET_COSITED_EVEN_BIT_VALVE");
+ if (VK_VIDEO_ENCODE_RGB_CHROMA_OFFSET_MIDPOINT_BIT_VALVE & value)
+ strings.push_back("VIDEO_ENCODE_RGB_CHROMA_OFFSET_MIDPOINT_BIT_VALVE");
+ return strings;
+}
+void DumpVkVideoEncodeRgbChromaOffsetFlagsVALVE(Printer &p, std::string name, VkVideoEncodeRgbChromaOffsetFlagsVALVE value) {
+ if (static_cast<VkVideoEncodeRgbChromaOffsetFlagBitsVALVE>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings =
+ VkVideoEncodeRgbChromaOffsetFlagBitsVALVEGetStrings(static_cast<VkVideoEncodeRgbChromaOffsetFlagBitsVALVE>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkVideoEncodeRgbChromaOffsetFlagBitsVALVE(Printer &p, std::string name, VkVideoEncodeRgbChromaOffsetFlagBitsVALVE value) {
+ auto strings = VkVideoEncodeRgbChromaOffsetFlagBitsVALVEGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkVideoEncodeRgbModelConversionFlagBitsVALVEGetStrings(
+ VkVideoEncodeRgbModelConversionFlagBitsVALVE value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_VIDEO_ENCODE_RGB_MODEL_CONVERSION_RGB_IDENTITY_BIT_VALVE & value)
+ strings.push_back("VIDEO_ENCODE_RGB_MODEL_CONVERSION_RGB_IDENTITY_BIT_VALVE");
+ if (VK_VIDEO_ENCODE_RGB_MODEL_CONVERSION_YCBCR_IDENTITY_BIT_VALVE & value)
+ strings.push_back("VIDEO_ENCODE_RGB_MODEL_CONVERSION_YCBCR_IDENTITY_BIT_VALVE");
+ if (VK_VIDEO_ENCODE_RGB_MODEL_CONVERSION_YCBCR_709_BIT_VALVE & value)
+ strings.push_back("VIDEO_ENCODE_RGB_MODEL_CONVERSION_YCBCR_709_BIT_VALVE");
+ if (VK_VIDEO_ENCODE_RGB_MODEL_CONVERSION_YCBCR_601_BIT_VALVE & value)
+ strings.push_back("VIDEO_ENCODE_RGB_MODEL_CONVERSION_YCBCR_601_BIT_VALVE");
+ if (VK_VIDEO_ENCODE_RGB_MODEL_CONVERSION_YCBCR_2020_BIT_VALVE & value)
+ strings.push_back("VIDEO_ENCODE_RGB_MODEL_CONVERSION_YCBCR_2020_BIT_VALVE");
+ return strings;
+}
+void DumpVkVideoEncodeRgbModelConversionFlagsVALVE(Printer &p, std::string name, VkVideoEncodeRgbModelConversionFlagsVALVE value) {
+ if (static_cast<VkVideoEncodeRgbModelConversionFlagBitsVALVE>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings =
+ VkVideoEncodeRgbModelConversionFlagBitsVALVEGetStrings(static_cast<VkVideoEncodeRgbModelConversionFlagBitsVALVE>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkVideoEncodeRgbModelConversionFlagBitsVALVE(Printer &p, std::string name,
+ VkVideoEncodeRgbModelConversionFlagBitsVALVE value) {
+ auto strings = VkVideoEncodeRgbModelConversionFlagBitsVALVEGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkVideoEncodeRgbRangeCompressionFlagBitsVALVEGetStrings(
+ VkVideoEncodeRgbRangeCompressionFlagBitsVALVE value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("None");
+ return strings;
+ }
+ if (VK_VIDEO_ENCODE_RGB_RANGE_COMPRESSION_FULL_RANGE_BIT_VALVE & value)
+ strings.push_back("VIDEO_ENCODE_RGB_RANGE_COMPRESSION_FULL_RANGE_BIT_VALVE");
+ if (VK_VIDEO_ENCODE_RGB_RANGE_COMPRESSION_NARROW_RANGE_BIT_VALVE & value)
+ strings.push_back("VIDEO_ENCODE_RGB_RANGE_COMPRESSION_NARROW_RANGE_BIT_VALVE");
+ return strings;
+}
+void DumpVkVideoEncodeRgbRangeCompressionFlagsVALVE(Printer &p, std::string name,
+ VkVideoEncodeRgbRangeCompressionFlagsVALVE value) {
+ if (static_cast<VkVideoEncodeRgbRangeCompressionFlagBitsVALVE>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings =
+ VkVideoEncodeRgbRangeCompressionFlagBitsVALVEGetStrings(static_cast<VkVideoEncodeRgbRangeCompressionFlagBitsVALVE>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkVideoEncodeRgbRangeCompressionFlagBitsVALVE(Printer &p, std::string name,
+ VkVideoEncodeRgbRangeCompressionFlagBitsVALVE value) {
+ auto strings = VkVideoEncodeRgbRangeCompressionFlagBitsVALVEGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+std::vector<const char *> VkVideoEncodeUsageFlagBitsKHRGetStrings(VkVideoEncodeUsageFlagBitsKHR value) {
+ std::vector<const char *> strings;
+ if (value == 0) {
+ strings.push_back("VIDEO_ENCODE_USAGE_DEFAULT_KHR");
+ return strings;
+ }
+ if (VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR & value) strings.push_back("VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR");
+ if (VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR & value) strings.push_back("VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR");
+ if (VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR & value) strings.push_back("VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR");
+ if (VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR & value) strings.push_back("VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR");
+ return strings;
+}
+void DumpVkVideoEncodeUsageFlagsKHR(Printer &p, std::string name, VkVideoEncodeUsageFlagsKHR value) {
+ if (static_cast<VkVideoEncodeUsageFlagBitsKHR>(value) == 0) {
+ ArrayWrapper arr(p, name, 0);
+ if (p.Type() != OutputType::json && p.Type() != OutputType::vkconfig_output) p.SetAsType().PrintString("None");
+ return;
+ }
+ auto strings = VkVideoEncodeUsageFlagBitsKHRGetStrings(static_cast<VkVideoEncodeUsageFlagBitsKHR>(value));
+ ArrayWrapper arr(p, name, strings.size());
+ for (auto &str : strings) {
+ if (p.Type() == OutputType::json)
+ p.SetAsType().PrintString(std::string("VK_") + str);
+ else
+ p.SetAsType().PrintString(str);
+ }
+}
+void DumpVkVideoEncodeUsageFlagBitsKHR(Printer &p, std::string name, VkVideoEncodeUsageFlagBitsKHR value) {
+ auto strings = VkVideoEncodeUsageFlagBitsKHRGetStrings(value);
+ if (strings.size() > 0) {
+ if (p.Type() == OutputType::json)
+ p.PrintKeyString(name, std::string("VK_") + strings.at(0));
+ else
+ p.PrintKeyString(name, strings.at(0));
+ }
+}
+
+void DumpVkComponentMapping(Printer &p, std::string name, const VkComponentMapping &obj);
+void DumpVkConformanceVersion(Printer &p, std::string name, const VkConformanceVersion &obj);
+void DumpVkCooperativeMatrixPropertiesKHR(Printer &p, std::string name, const VkCooperativeMatrixPropertiesKHR &obj);
+void DumpVkDisplayModeParametersKHR(Printer &p, std::string name, const VkDisplayModeParametersKHR &obj);
+void DumpVkDisplayModePropertiesKHR(Printer &p, std::string name, const VkDisplayModePropertiesKHR &obj);
+void DumpVkDisplayPlaneCapabilitiesKHR(Printer &p, std::string name, const VkDisplayPlaneCapabilitiesKHR &obj);
+void DumpVkDisplayPlanePropertiesKHR(Printer &p, std::string name, const VkDisplayPlanePropertiesKHR &obj);
+void DumpVkDisplayPropertiesKHR(Printer &p, std::string name, const VkDisplayPropertiesKHR &obj);
+void DumpVkDrmFormatModifierProperties2EXT(Printer &p, std::string name, const VkDrmFormatModifierProperties2EXT &obj);
+void DumpVkExtensionProperties(Printer &p, std::string name, const VkExtensionProperties &obj);
+void DumpVkExtent2D(Printer &p, std::string name, const VkExtent2D &obj);
+void DumpVkExtent3D(Printer &p, std::string name, const VkExtent3D &obj);
+void DumpVkFormatProperties(Printer &p, std::string name, const VkFormatProperties &obj);
+void DumpVkFormatProperties3(Printer &p, std::string name, const VkFormatProperties3 &obj);
+void DumpVkLayerProperties(Printer &p, std::string name, const VkLayerProperties &obj);
+void DumpVkMultisamplePropertiesEXT(Printer &p, std::string name, const VkMultisamplePropertiesEXT &obj);
+void DumpVkOffset2D(Printer &p, std::string name, const VkOffset2D &obj);
+void DumpVkPhysicalDevice16BitStorageFeatures(Printer &p, std::string name, const VkPhysicalDevice16BitStorageFeatures &obj);
+void DumpVkPhysicalDevice4444FormatsFeaturesEXT(Printer &p, std::string name, const VkPhysicalDevice4444FormatsFeaturesEXT &obj);
+void DumpVkPhysicalDevice8BitStorageFeatures(Printer &p, std::string name, const VkPhysicalDevice8BitStorageFeatures &obj);
+void DumpVkPhysicalDeviceASTCDecodeFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceASTCDecodeFeaturesEXT &obj);
+void DumpVkPhysicalDeviceAccelerationStructureFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceAccelerationStructureFeaturesKHR &obj);
+void DumpVkPhysicalDeviceAccelerationStructurePropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceAccelerationStructurePropertiesKHR &obj);
+void DumpVkPhysicalDeviceAddressBindingReportFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceAddressBindingReportFeaturesEXT &obj);
+void DumpVkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT(
+ Printer &p, std::string name, const VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT &obj);
+void DumpVkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT(
+ Printer &p, std::string name, const VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT &obj);
+void DumpVkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT &obj);
+void DumpVkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT &obj);
+void DumpVkPhysicalDeviceBorderColorSwizzleFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT &obj);
+void DumpVkPhysicalDeviceBufferDeviceAddressFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceBufferDeviceAddressFeatures &obj);
+void DumpVkPhysicalDeviceBufferDeviceAddressFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT &obj);
+void DumpVkPhysicalDeviceColorWriteEnableFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceColorWriteEnableFeaturesEXT &obj);
+void DumpVkPhysicalDeviceComputeShaderDerivativesFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR &obj);
+void DumpVkPhysicalDeviceComputeShaderDerivativesPropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR &obj);
+void DumpVkPhysicalDeviceConditionalRenderingFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceConditionalRenderingFeaturesEXT &obj);
+void DumpVkPhysicalDeviceConservativeRasterizationPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceConservativeRasterizationPropertiesEXT &obj);
+void DumpVkPhysicalDeviceCooperativeMatrixFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceCooperativeMatrixFeaturesKHR &obj);
+void DumpVkPhysicalDeviceCooperativeMatrixPropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceCooperativeMatrixPropertiesKHR &obj);
+void DumpVkPhysicalDeviceCopyMemoryIndirectFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR &obj);
+void DumpVkPhysicalDeviceCopyMemoryIndirectPropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR &obj);
+void DumpVkPhysicalDeviceCustomBorderColorFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceCustomBorderColorFeaturesEXT &obj);
+void DumpVkPhysicalDeviceCustomBorderColorPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceCustomBorderColorPropertiesEXT &obj);
+void DumpVkPhysicalDeviceCustomResolveFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceCustomResolveFeaturesEXT &obj);
+void DumpVkPhysicalDeviceDepthBiasControlFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceDepthBiasControlFeaturesEXT &obj);
+void DumpVkPhysicalDeviceDepthClampControlFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceDepthClampControlFeaturesEXT &obj);
+void DumpVkPhysicalDeviceDepthClampZeroOneFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceDepthClampZeroOneFeaturesKHR &obj);
+void DumpVkPhysicalDeviceDepthClipControlFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceDepthClipControlFeaturesEXT &obj);
+void DumpVkPhysicalDeviceDepthClipEnableFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceDepthClipEnableFeaturesEXT &obj);
+void DumpVkPhysicalDeviceDepthStencilResolveProperties(Printer &p, std::string name,
+ const VkPhysicalDeviceDepthStencilResolveProperties &obj);
+void DumpVkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT(
+ Printer &p, std::string name, const VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT &obj);
+void DumpVkPhysicalDeviceDescriptorBufferFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceDescriptorBufferFeaturesEXT &obj);
+void DumpVkPhysicalDeviceDescriptorBufferPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceDescriptorBufferPropertiesEXT &obj);
+void DumpVkPhysicalDeviceDescriptorHeapFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceDescriptorHeapFeaturesEXT &obj);
+void DumpVkPhysicalDeviceDescriptorHeapPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceDescriptorHeapPropertiesEXT &obj);
+void DumpVkPhysicalDeviceDescriptorHeapTensorPropertiesARM(Printer &p, std::string name,
+ const VkPhysicalDeviceDescriptorHeapTensorPropertiesARM &obj);
+void DumpVkPhysicalDeviceDescriptorIndexingFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceDescriptorIndexingFeatures &obj);
+void DumpVkPhysicalDeviceDescriptorIndexingProperties(Printer &p, std::string name,
+ const VkPhysicalDeviceDescriptorIndexingProperties &obj);
+void DumpVkPhysicalDeviceDeviceAddressCommandsFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR &obj);
+void DumpVkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT &obj);
+void DumpVkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT &obj);
+void DumpVkPhysicalDeviceDeviceMemoryReportFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT &obj);
+void DumpVkPhysicalDeviceDiscardRectanglePropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceDiscardRectanglePropertiesEXT &obj);
+void DumpVkPhysicalDeviceDriverProperties(Printer &p, std::string name, const VkPhysicalDeviceDriverProperties &obj);
+void DumpVkPhysicalDeviceDrmPropertiesEXT(Printer &p, std::string name, const VkPhysicalDeviceDrmPropertiesEXT &obj);
+void DumpVkPhysicalDeviceDynamicRenderingFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceDynamicRenderingFeatures &obj);
+void DumpVkPhysicalDeviceDynamicRenderingLocalReadFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceDynamicRenderingLocalReadFeatures &obj);
+void DumpVkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT(
+ Printer &p, std::string name, const VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT &obj);
+void DumpVkPhysicalDeviceExtendedDynamicState2FeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT &obj);
+void DumpVkPhysicalDeviceExtendedDynamicState3FeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceExtendedDynamicState3FeaturesEXT &obj);
+void DumpVkPhysicalDeviceExtendedDynamicState3PropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceExtendedDynamicState3PropertiesEXT &obj);
+void DumpVkPhysicalDeviceExtendedDynamicStateFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT &obj);
+void DumpVkPhysicalDeviceExternalMemoryHostPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceExternalMemoryHostPropertiesEXT &obj);
+void DumpVkPhysicalDeviceFaultFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceFaultFeaturesEXT &obj);
+void DumpVkPhysicalDeviceFaultFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceFaultFeaturesKHR &obj);
+void DumpVkPhysicalDeviceFaultPropertiesKHR(Printer &p, std::string name, const VkPhysicalDeviceFaultPropertiesKHR &obj);
+void DumpVkPhysicalDeviceFeatures(Printer &p, std::string name, const VkPhysicalDeviceFeatures &obj);
+void DumpVkPhysicalDeviceFloatControlsProperties(Printer &p, std::string name, const VkPhysicalDeviceFloatControlsProperties &obj);
+void DumpVkPhysicalDeviceFragmentDensityMap2FeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT &obj);
+void DumpVkPhysicalDeviceFragmentDensityMap2PropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceFragmentDensityMap2PropertiesEXT &obj);
+void DumpVkPhysicalDeviceFragmentDensityMapFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceFragmentDensityMapFeaturesEXT &obj);
+void DumpVkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT &obj);
+void DumpVkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT &obj);
+void DumpVkPhysicalDeviceFragmentDensityMapPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceFragmentDensityMapPropertiesEXT &obj);
+void DumpVkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR &obj);
+void DumpVkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR &obj);
+void DumpVkPhysicalDeviceFragmentShaderInterlockFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT &obj);
+void DumpVkPhysicalDeviceFragmentShadingRateFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceFragmentShadingRateFeaturesKHR &obj);
+void DumpVkPhysicalDeviceFragmentShadingRateKHR(Printer &p, std::string name, const VkPhysicalDeviceFragmentShadingRateKHR &obj);
+void DumpVkPhysicalDeviceFragmentShadingRatePropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceFragmentShadingRatePropertiesKHR &obj);
+void DumpVkPhysicalDeviceFrameBoundaryFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceFrameBoundaryFeaturesEXT &obj);
+void DumpVkPhysicalDeviceGlobalPriorityQueryFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceGlobalPriorityQueryFeatures &obj);
+void DumpVkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT &obj);
+void DumpVkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT &obj);
+void DumpVkPhysicalDeviceHostImageCopyFeatures(Printer &p, std::string name, const VkPhysicalDeviceHostImageCopyFeatures &obj);
+void DumpVkPhysicalDeviceHostImageCopyProperties(Printer &p, std::string name, const VkPhysicalDeviceHostImageCopyProperties &obj);
+void DumpVkPhysicalDeviceHostQueryResetFeatures(Printer &p, std::string name, const VkPhysicalDeviceHostQueryResetFeatures &obj);
+void DumpVkPhysicalDeviceIDProperties(Printer &p, std::string name, const VkPhysicalDeviceIDProperties &obj);
+void DumpVkPhysicalDeviceImage2DViewOf3DFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceImage2DViewOf3DFeaturesEXT &obj);
+void DumpVkPhysicalDeviceImageCompressionControlFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceImageCompressionControlFeaturesEXT &obj);
+void DumpVkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT(
+ Printer &p, std::string name, const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT &obj);
+void DumpVkPhysicalDeviceImageRobustnessFeatures(Printer &p, std::string name, const VkPhysicalDeviceImageRobustnessFeatures &obj);
+void DumpVkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT &obj);
+void DumpVkPhysicalDeviceImageViewMinLodFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceImageViewMinLodFeaturesEXT &obj);
+void DumpVkPhysicalDeviceImagelessFramebufferFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceImagelessFramebufferFeatures &obj);
+void DumpVkPhysicalDeviceIndexTypeUint8Features(Printer &p, std::string name, const VkPhysicalDeviceIndexTypeUint8Features &obj);
+void DumpVkPhysicalDeviceInlineUniformBlockFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceInlineUniformBlockFeatures &obj);
+void DumpVkPhysicalDeviceInlineUniformBlockProperties(Printer &p, std::string name,
+ const VkPhysicalDeviceInlineUniformBlockProperties &obj);
+void DumpVkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR(
+ Printer &p, std::string name, const VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR &obj);
+void DumpVkPhysicalDeviceLayeredApiPropertiesKHR(Printer &p, std::string name, const VkPhysicalDeviceLayeredApiPropertiesKHR &obj);
+void DumpVkPhysicalDeviceLayeredApiPropertiesListKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceLayeredApiPropertiesListKHR &obj);
+void DumpVkPhysicalDeviceLegacyDitheringFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceLegacyDitheringFeaturesEXT &obj);
+void DumpVkPhysicalDeviceLegacyVertexAttributesFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT &obj);
+void DumpVkPhysicalDeviceLegacyVertexAttributesPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT &obj);
+void DumpVkPhysicalDeviceLimits(Printer &p, std::string name, const VkPhysicalDeviceLimits &obj);
+void DumpVkPhysicalDeviceLineRasterizationFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceLineRasterizationFeatures &obj);
+void DumpVkPhysicalDeviceLineRasterizationProperties(Printer &p, std::string name,
+ const VkPhysicalDeviceLineRasterizationProperties &obj);
+void DumpVkPhysicalDeviceMaintenance10FeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceMaintenance10FeaturesKHR &obj);
+void DumpVkPhysicalDeviceMaintenance10PropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceMaintenance10PropertiesKHR &obj);
+void DumpVkPhysicalDeviceMaintenance3Properties(Printer &p, std::string name, const VkPhysicalDeviceMaintenance3Properties &obj);
+void DumpVkPhysicalDeviceMaintenance4Features(Printer &p, std::string name, const VkPhysicalDeviceMaintenance4Features &obj);
+void DumpVkPhysicalDeviceMaintenance4Properties(Printer &p, std::string name, const VkPhysicalDeviceMaintenance4Properties &obj);
+void DumpVkPhysicalDeviceMaintenance5Features(Printer &p, std::string name, const VkPhysicalDeviceMaintenance5Features &obj);
+void DumpVkPhysicalDeviceMaintenance5Properties(Printer &p, std::string name, const VkPhysicalDeviceMaintenance5Properties &obj);
+void DumpVkPhysicalDeviceMaintenance6Features(Printer &p, std::string name, const VkPhysicalDeviceMaintenance6Features &obj);
+void DumpVkPhysicalDeviceMaintenance6Properties(Printer &p, std::string name, const VkPhysicalDeviceMaintenance6Properties &obj);
+void DumpVkPhysicalDeviceMaintenance7FeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceMaintenance7FeaturesKHR &obj);
+void DumpVkPhysicalDeviceMaintenance7PropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceMaintenance7PropertiesKHR &obj);
+void DumpVkPhysicalDeviceMaintenance8FeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceMaintenance8FeaturesKHR &obj);
+void DumpVkPhysicalDeviceMaintenance9FeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceMaintenance9FeaturesKHR &obj);
+void DumpVkPhysicalDeviceMaintenance9PropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceMaintenance9PropertiesKHR &obj);
+void DumpVkPhysicalDeviceMapMemoryPlacedFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceMapMemoryPlacedFeaturesEXT &obj);
+void DumpVkPhysicalDeviceMapMemoryPlacedPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceMapMemoryPlacedPropertiesEXT &obj);
+void DumpVkPhysicalDeviceMemoryBudgetPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceMemoryBudgetPropertiesEXT &obj);
+void DumpVkPhysicalDeviceMemoryDecompressionFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceMemoryDecompressionFeaturesEXT &obj);
+void DumpVkPhysicalDeviceMemoryDecompressionPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceMemoryDecompressionPropertiesEXT &obj);
+void DumpVkPhysicalDeviceMemoryPriorityFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceMemoryPriorityFeaturesEXT &obj);
+void DumpVkPhysicalDeviceMeshShaderFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceMeshShaderFeaturesEXT &obj);
+void DumpVkPhysicalDeviceMeshShaderPropertiesEXT(Printer &p, std::string name, const VkPhysicalDeviceMeshShaderPropertiesEXT &obj);
+void DumpVkPhysicalDeviceMultiDrawFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceMultiDrawFeaturesEXT &obj);
+void DumpVkPhysicalDeviceMultiDrawPropertiesEXT(Printer &p, std::string name, const VkPhysicalDeviceMultiDrawPropertiesEXT &obj);
+void DumpVkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT(
+ Printer &p, std::string name, const VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT &obj);
+void DumpVkPhysicalDeviceMultiviewFeatures(Printer &p, std::string name, const VkPhysicalDeviceMultiviewFeatures &obj);
+void DumpVkPhysicalDeviceMultiviewProperties(Printer &p, std::string name, const VkPhysicalDeviceMultiviewProperties &obj);
+void DumpVkPhysicalDeviceMutableDescriptorTypeFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT &obj);
+void DumpVkPhysicalDeviceNestedCommandBufferFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceNestedCommandBufferFeaturesEXT &obj);
+void DumpVkPhysicalDeviceNestedCommandBufferPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceNestedCommandBufferPropertiesEXT &obj);
+void DumpVkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT &obj);
+void DumpVkPhysicalDeviceOpacityMicromapFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceOpacityMicromapFeaturesEXT &obj);
+void DumpVkPhysicalDeviceOpacityMicromapPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceOpacityMicromapPropertiesEXT &obj);
+void DumpVkPhysicalDevicePCIBusInfoPropertiesEXT(Printer &p, std::string name, const VkPhysicalDevicePCIBusInfoPropertiesEXT &obj);
+void DumpVkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT &obj);
+void DumpVkPhysicalDevicePerformanceQueryFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDevicePerformanceQueryFeaturesKHR &obj);
+void DumpVkPhysicalDevicePerformanceQueryPropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDevicePerformanceQueryPropertiesKHR &obj);
+void DumpVkPhysicalDevicePipelineBinaryFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDevicePipelineBinaryFeaturesKHR &obj);
+void DumpVkPhysicalDevicePipelineBinaryPropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDevicePipelineBinaryPropertiesKHR &obj);
+void DumpVkPhysicalDevicePipelineCreationCacheControlFeatures(Printer &p, std::string name,
+ const VkPhysicalDevicePipelineCreationCacheControlFeatures &obj);
+void DumpVkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR(
+ Printer &p, std::string name, const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR &obj);
+void DumpVkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT &obj);
+void DumpVkPhysicalDevicePipelinePropertiesFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDevicePipelinePropertiesFeaturesEXT &obj);
+void DumpVkPhysicalDevicePipelineProtectedAccessFeatures(Printer &p, std::string name,
+ const VkPhysicalDevicePipelineProtectedAccessFeatures &obj);
+void DumpVkPhysicalDevicePipelineRobustnessFeatures(Printer &p, std::string name,
+ const VkPhysicalDevicePipelineRobustnessFeatures &obj);
+void DumpVkPhysicalDevicePipelineRobustnessProperties(Printer &p, std::string name,
+ const VkPhysicalDevicePipelineRobustnessProperties &obj);
+void DumpVkPhysicalDevicePointClippingProperties(Printer &p, std::string name, const VkPhysicalDevicePointClippingProperties &obj);
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+void DumpVkPhysicalDevicePortabilitySubsetFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDevicePortabilitySubsetFeaturesKHR &obj);
+#endif // VK_ENABLE_BETA_EXTENSIONS
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+void DumpVkPhysicalDevicePortabilitySubsetPropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDevicePortabilitySubsetPropertiesKHR &obj);
+#endif // VK_ENABLE_BETA_EXTENSIONS
+void DumpVkPhysicalDevicePresentId2FeaturesKHR(Printer &p, std::string name, const VkPhysicalDevicePresentId2FeaturesKHR &obj);
+void DumpVkPhysicalDevicePresentIdFeaturesKHR(Printer &p, std::string name, const VkPhysicalDevicePresentIdFeaturesKHR &obj);
+void DumpVkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR &obj);
+void DumpVkPhysicalDevicePresentTimingFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDevicePresentTimingFeaturesEXT &obj);
+void DumpVkPhysicalDevicePresentWait2FeaturesKHR(Printer &p, std::string name, const VkPhysicalDevicePresentWait2FeaturesKHR &obj);
+void DumpVkPhysicalDevicePresentWaitFeaturesKHR(Printer &p, std::string name, const VkPhysicalDevicePresentWaitFeaturesKHR &obj);
+void DumpVkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT(
+ Printer &p, std::string name, const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT &obj);
+void DumpVkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT &obj);
+void DumpVkPhysicalDevicePrivateDataFeatures(Printer &p, std::string name, const VkPhysicalDevicePrivateDataFeatures &obj);
+void DumpVkPhysicalDeviceProtectedMemoryFeatures(Printer &p, std::string name, const VkPhysicalDeviceProtectedMemoryFeatures &obj);
+void DumpVkPhysicalDeviceProtectedMemoryProperties(Printer &p, std::string name,
+ const VkPhysicalDeviceProtectedMemoryProperties &obj);
+void DumpVkPhysicalDeviceProvokingVertexFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceProvokingVertexFeaturesEXT &obj);
+void DumpVkPhysicalDeviceProvokingVertexPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceProvokingVertexPropertiesEXT &obj);
+void DumpVkPhysicalDevicePushDescriptorProperties(Printer &p, std::string name,
+ const VkPhysicalDevicePushDescriptorProperties &obj);
+void DumpVkPhysicalDeviceRGBA10X6FormatsFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT &obj);
+void DumpVkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT(
+ Printer &p, std::string name, const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT &obj);
+void DumpVkPhysicalDeviceRayQueryFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceRayQueryFeaturesKHR &obj);
+void DumpVkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT &obj);
+void DumpVkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT(
+ Printer &p, std::string name, const VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT &obj);
+void DumpVkPhysicalDeviceRayTracingMaintenance1FeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR &obj);
+void DumpVkPhysicalDeviceRayTracingPipelineFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceRayTracingPipelineFeaturesKHR &obj);
+void DumpVkPhysicalDeviceRayTracingPipelinePropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceRayTracingPipelinePropertiesKHR &obj);
+void DumpVkPhysicalDeviceRayTracingPositionFetchFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR &obj);
+void DumpVkPhysicalDeviceRobustness2FeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceRobustness2FeaturesKHR &obj);
+void DumpVkPhysicalDeviceRobustness2PropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceRobustness2PropertiesKHR &obj);
+void DumpVkPhysicalDeviceSampleLocationsPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceSampleLocationsPropertiesEXT &obj);
+void DumpVkPhysicalDeviceSamplerFilterMinmaxProperties(Printer &p, std::string name,
+ const VkPhysicalDeviceSamplerFilterMinmaxProperties &obj);
+void DumpVkPhysicalDeviceSamplerYcbcrConversionFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceSamplerYcbcrConversionFeatures &obj);
+void DumpVkPhysicalDeviceScalarBlockLayoutFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceScalarBlockLayoutFeatures &obj);
+void DumpVkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures &obj);
+void DumpVkPhysicalDeviceShader64BitIndexingFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceShader64BitIndexingFeaturesEXT &obj);
+void DumpVkPhysicalDeviceShaderAbortFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceShaderAbortFeaturesKHR &obj);
+void DumpVkPhysicalDeviceShaderAbortPropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderAbortPropertiesKHR &obj);
+void DumpVkPhysicalDeviceShaderAtomicFloat2FeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT &obj);
+void DumpVkPhysicalDeviceShaderAtomicFloatFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT &obj);
+void DumpVkPhysicalDeviceShaderAtomicInt64Features(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderAtomicInt64Features &obj);
+void DumpVkPhysicalDeviceShaderBfloat16FeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderBfloat16FeaturesKHR &obj);
+void DumpVkPhysicalDeviceShaderClockFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceShaderClockFeaturesKHR &obj);
+void DumpVkPhysicalDeviceShaderConstantDataFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderConstantDataFeaturesKHR &obj);
+void DumpVkPhysicalDeviceShaderDemoteToHelperInvocationFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures &obj);
+void DumpVkPhysicalDeviceShaderDrawParametersFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderDrawParametersFeatures &obj);
+void DumpVkPhysicalDeviceShaderExpectAssumeFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderExpectAssumeFeatures &obj);
+void DumpVkPhysicalDeviceShaderFloat16Int8Features(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderFloat16Int8Features &obj);
+void DumpVkPhysicalDeviceShaderFloat8FeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceShaderFloat8FeaturesEXT &obj);
+void DumpVkPhysicalDeviceShaderFloatControls2Features(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderFloatControls2Features &obj);
+void DumpVkPhysicalDeviceShaderFmaFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceShaderFmaFeaturesKHR &obj);
+void DumpVkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT &obj);
+void DumpVkPhysicalDeviceShaderIntegerDotProductFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderIntegerDotProductFeatures &obj);
+void DumpVkPhysicalDeviceShaderIntegerDotProductProperties(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderIntegerDotProductProperties &obj);
+void DumpVkPhysicalDeviceShaderLongVectorFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderLongVectorFeaturesEXT &obj);
+void DumpVkPhysicalDeviceShaderLongVectorPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderLongVectorPropertiesEXT &obj);
+void DumpVkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR &obj);
+void DumpVkPhysicalDeviceShaderModuleIdentifierFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT &obj);
+void DumpVkPhysicalDeviceShaderModuleIdentifierPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT &obj);
+void DumpVkPhysicalDeviceShaderObjectFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceShaderObjectFeaturesEXT &obj);
+void DumpVkPhysicalDeviceShaderObjectPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderObjectPropertiesEXT &obj);
+void DumpVkPhysicalDeviceShaderQuadControlFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderQuadControlFeaturesKHR &obj);
+void DumpVkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR(
+ Printer &p, std::string name, const VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR &obj);
+void DumpVkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT &obj);
+void DumpVkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures &obj);
+void DumpVkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT &obj);
+void DumpVkPhysicalDeviceShaderSubgroupRotateFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderSubgroupRotateFeatures &obj);
+void DumpVkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR(
+ Printer &p, std::string name, const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR &obj);
+void DumpVkPhysicalDeviceShaderTerminateInvocationFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderTerminateInvocationFeatures &obj);
+void DumpVkPhysicalDeviceShaderTileImageFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderTileImageFeaturesEXT &obj);
+void DumpVkPhysicalDeviceShaderTileImagePropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderTileImagePropertiesEXT &obj);
+void DumpVkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT(
+ Printer &p, std::string name, const VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT &obj);
+void DumpVkPhysicalDeviceShaderUntypedPointersFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderUntypedPointersFeaturesKHR &obj);
+void DumpVkPhysicalDeviceSparseProperties(Printer &p, std::string name, const VkPhysicalDeviceSparseProperties &obj);
+void DumpVkPhysicalDeviceSubgroupProperties(Printer &p, std::string name, const VkPhysicalDeviceSubgroupProperties &obj);
+void DumpVkPhysicalDeviceSubgroupSizeControlFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceSubgroupSizeControlFeatures &obj);
+void DumpVkPhysicalDeviceSubgroupSizeControlProperties(Printer &p, std::string name,
+ const VkPhysicalDeviceSubgroupSizeControlProperties &obj);
+void DumpVkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT &obj);
+void DumpVkPhysicalDeviceSwapchainMaintenance1FeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR &obj);
+void DumpVkPhysicalDeviceSynchronization2Features(Printer &p, std::string name,
+ const VkPhysicalDeviceSynchronization2Features &obj);
+void DumpVkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT &obj);
+void DumpVkPhysicalDeviceTexelBufferAlignmentProperties(Printer &p, std::string name,
+ const VkPhysicalDeviceTexelBufferAlignmentProperties &obj);
+void DumpVkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT &obj);
+void DumpVkPhysicalDeviceTextureCompressionASTCHDRFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceTextureCompressionASTCHDRFeatures &obj);
+void DumpVkPhysicalDeviceTimelineSemaphoreFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceTimelineSemaphoreFeatures &obj);
+void DumpVkPhysicalDeviceTimelineSemaphoreProperties(Printer &p, std::string name,
+ const VkPhysicalDeviceTimelineSemaphoreProperties &obj);
+void DumpVkPhysicalDeviceToolProperties(Printer &p, std::string name, const VkPhysicalDeviceToolProperties &obj);
+void DumpVkPhysicalDeviceTransformFeedbackFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceTransformFeedbackFeaturesEXT &obj);
+void DumpVkPhysicalDeviceTransformFeedbackPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceTransformFeedbackPropertiesEXT &obj);
+void DumpVkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR &obj);
+void DumpVkPhysicalDeviceUniformBufferStandardLayoutFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceUniformBufferStandardLayoutFeatures &obj);
+void DumpVkPhysicalDeviceVariablePointersFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceVariablePointersFeatures &obj);
+void DumpVkPhysicalDeviceVertexAttributeDivisorFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceVertexAttributeDivisorFeatures &obj);
+void DumpVkPhysicalDeviceVertexAttributeDivisorProperties(Printer &p, std::string name,
+ const VkPhysicalDeviceVertexAttributeDivisorProperties &obj);
+void DumpVkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT &obj);
+void DumpVkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT &obj);
+void DumpVkPhysicalDeviceVertexInputDynamicStateFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT &obj);
+void DumpVkPhysicalDeviceVideoDecodeVP9FeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceVideoDecodeVP9FeaturesKHR &obj);
+void DumpVkPhysicalDeviceVideoEncodeAV1FeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceVideoEncodeAV1FeaturesKHR &obj);
+void DumpVkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR &obj);
+void DumpVkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR &obj);
+void DumpVkPhysicalDeviceVideoMaintenance1FeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceVideoMaintenance1FeaturesKHR &obj);
+void DumpVkPhysicalDeviceVideoMaintenance2FeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceVideoMaintenance2FeaturesKHR &obj);
+void DumpVkPhysicalDeviceVulkan11Features(Printer &p, std::string name, const VkPhysicalDeviceVulkan11Features &obj);
+void DumpVkPhysicalDeviceVulkan11Properties(Printer &p, std::string name, const VkPhysicalDeviceVulkan11Properties &obj);
+void DumpVkPhysicalDeviceVulkan12Features(Printer &p, std::string name, const VkPhysicalDeviceVulkan12Features &obj);
+void DumpVkPhysicalDeviceVulkan12Properties(Printer &p, std::string name, const VkPhysicalDeviceVulkan12Properties &obj);
+void DumpVkPhysicalDeviceVulkan13Features(Printer &p, std::string name, const VkPhysicalDeviceVulkan13Features &obj);
+void DumpVkPhysicalDeviceVulkan13Properties(Printer &p, std::string name, const VkPhysicalDeviceVulkan13Properties &obj);
+void DumpVkPhysicalDeviceVulkan14Features(Printer &p, std::string name, const VkPhysicalDeviceVulkan14Features &obj);
+void DumpVkPhysicalDeviceVulkan14Properties(Printer &p, std::string name, const VkPhysicalDeviceVulkan14Properties &obj);
+void DumpVkPhysicalDeviceVulkanMemoryModelFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceVulkanMemoryModelFeatures &obj);
+void DumpVkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR(
+ Printer &p, std::string name, const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR &obj);
+void DumpVkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT &obj);
+void DumpVkPhysicalDeviceYcbcrImageArraysFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT &obj);
+void DumpVkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT &obj);
+void DumpVkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures &obj);
+void DumpVkPresentTimingSurfaceCapabilitiesEXT(Printer &p, std::string name, const VkPresentTimingSurfaceCapabilitiesEXT &obj);
+void DumpVkQueueFamilyGlobalPriorityProperties(Printer &p, std::string name, const VkQueueFamilyGlobalPriorityProperties &obj);
+void DumpVkQueueFamilyOwnershipTransferPropertiesKHR(Printer &p, std::string name,
+ const VkQueueFamilyOwnershipTransferPropertiesKHR &obj);
+void DumpVkQueueFamilyQueryResultStatusPropertiesKHR(Printer &p, std::string name,
+ const VkQueueFamilyQueryResultStatusPropertiesKHR &obj);
+void DumpVkQueueFamilyVideoPropertiesKHR(Printer &p, std::string name, const VkQueueFamilyVideoPropertiesKHR &obj);
+void DumpVkSharedPresentSurfaceCapabilitiesKHR(Printer &p, std::string name, const VkSharedPresentSurfaceCapabilitiesKHR &obj);
+void DumpVkSubpassResolvePerformanceQueryEXT(Printer &p, std::string name, const VkSubpassResolvePerformanceQueryEXT &obj);
+#ifdef VK_USE_PLATFORM_WIN32_KHR
+void DumpVkSurfaceCapabilitiesFullScreenExclusiveEXT(Printer &p, std::string name,
+ const VkSurfaceCapabilitiesFullScreenExclusiveEXT &obj);
+#endif // VK_USE_PLATFORM_WIN32_KHR
+void DumpVkSurfaceCapabilitiesKHR(Printer &p, std::string name, const VkSurfaceCapabilitiesKHR &obj);
+void DumpVkSurfaceCapabilitiesPresentId2KHR(Printer &p, std::string name, const VkSurfaceCapabilitiesPresentId2KHR &obj);
+void DumpVkSurfaceCapabilitiesPresentWait2KHR(Printer &p, std::string name, const VkSurfaceCapabilitiesPresentWait2KHR &obj);
+void DumpVkSurfaceFormatKHR(Printer &p, std::string name, const VkSurfaceFormatKHR &obj);
+void DumpVkSurfacePresentModeCompatibilityKHR(Printer &p, std::string name, const VkSurfacePresentModeCompatibilityKHR &obj);
+void DumpVkSurfacePresentScalingCapabilitiesKHR(Printer &p, std::string name, const VkSurfacePresentScalingCapabilitiesKHR &obj);
+void DumpVkSurfaceProtectedCapabilitiesKHR(Printer &p, std::string name, const VkSurfaceProtectedCapabilitiesKHR &obj);
+void DumpVkVideoCapabilitiesKHR(Printer &p, std::string name, const VkVideoCapabilitiesKHR &obj);
+void DumpVkVideoDecodeAV1CapabilitiesKHR(Printer &p, std::string name, const VkVideoDecodeAV1CapabilitiesKHR &obj);
+void DumpVkVideoDecodeAV1ProfileInfoKHR(Printer &p, std::string name, const VkVideoDecodeAV1ProfileInfoKHR &obj);
+void DumpVkVideoDecodeCapabilitiesKHR(Printer &p, std::string name, const VkVideoDecodeCapabilitiesKHR &obj);
+void DumpVkVideoDecodeH264CapabilitiesKHR(Printer &p, std::string name, const VkVideoDecodeH264CapabilitiesKHR &obj);
+void DumpVkVideoDecodeH264ProfileInfoKHR(Printer &p, std::string name, const VkVideoDecodeH264ProfileInfoKHR &obj);
+void DumpVkVideoDecodeH265CapabilitiesKHR(Printer &p, std::string name, const VkVideoDecodeH265CapabilitiesKHR &obj);
+void DumpVkVideoDecodeH265ProfileInfoKHR(Printer &p, std::string name, const VkVideoDecodeH265ProfileInfoKHR &obj);
+void DumpVkVideoDecodeUsageInfoKHR(Printer &p, std::string name, const VkVideoDecodeUsageInfoKHR &obj);
+void DumpVkVideoDecodeVP9CapabilitiesKHR(Printer &p, std::string name, const VkVideoDecodeVP9CapabilitiesKHR &obj);
+void DumpVkVideoDecodeVP9ProfileInfoKHR(Printer &p, std::string name, const VkVideoDecodeVP9ProfileInfoKHR &obj);
+void DumpVkVideoEncodeAV1CapabilitiesKHR(Printer &p, std::string name, const VkVideoEncodeAV1CapabilitiesKHR &obj);
+void DumpVkVideoEncodeAV1ProfileInfoKHR(Printer &p, std::string name, const VkVideoEncodeAV1ProfileInfoKHR &obj);
+void DumpVkVideoEncodeAV1QuantizationMapCapabilitiesKHR(Printer &p, std::string name,
+ const VkVideoEncodeAV1QuantizationMapCapabilitiesKHR &obj);
+void DumpVkVideoEncodeCapabilitiesKHR(Printer &p, std::string name, const VkVideoEncodeCapabilitiesKHR &obj);
+void DumpVkVideoEncodeH264CapabilitiesKHR(Printer &p, std::string name, const VkVideoEncodeH264CapabilitiesKHR &obj);
+void DumpVkVideoEncodeH264ProfileInfoKHR(Printer &p, std::string name, const VkVideoEncodeH264ProfileInfoKHR &obj);
+void DumpVkVideoEncodeH264QuantizationMapCapabilitiesKHR(Printer &p, std::string name,
+ const VkVideoEncodeH264QuantizationMapCapabilitiesKHR &obj);
+void DumpVkVideoEncodeH265CapabilitiesKHR(Printer &p, std::string name, const VkVideoEncodeH265CapabilitiesKHR &obj);
+void DumpVkVideoEncodeH265ProfileInfoKHR(Printer &p, std::string name, const VkVideoEncodeH265ProfileInfoKHR &obj);
+void DumpVkVideoEncodeH265QuantizationMapCapabilitiesKHR(Printer &p, std::string name,
+ const VkVideoEncodeH265QuantizationMapCapabilitiesKHR &obj);
+void DumpVkVideoEncodeIntraRefreshCapabilitiesKHR(Printer &p, std::string name,
+ const VkVideoEncodeIntraRefreshCapabilitiesKHR &obj);
+void DumpVkVideoEncodeProfileRgbConversionInfoVALVE(Printer &p, std::string name,
+ const VkVideoEncodeProfileRgbConversionInfoVALVE &obj);
+void DumpVkVideoEncodeQuantizationMapCapabilitiesKHR(Printer &p, std::string name,
+ const VkVideoEncodeQuantizationMapCapabilitiesKHR &obj);
+void DumpVkVideoEncodeRgbConversionCapabilitiesVALVE(Printer &p, std::string name,
+ const VkVideoEncodeRgbConversionCapabilitiesVALVE &obj);
+void DumpVkVideoEncodeUsageInfoKHR(Printer &p, std::string name, const VkVideoEncodeUsageInfoKHR &obj);
+void DumpVkVideoFormatAV1QuantizationMapPropertiesKHR(Printer &p, std::string name,
+ const VkVideoFormatAV1QuantizationMapPropertiesKHR &obj);
+void DumpVkVideoFormatH265QuantizationMapPropertiesKHR(Printer &p, std::string name,
+ const VkVideoFormatH265QuantizationMapPropertiesKHR &obj);
+void DumpVkVideoFormatPropertiesKHR(Printer &p, std::string name, const VkVideoFormatPropertiesKHR &obj);
+void DumpVkVideoFormatQuantizationMapPropertiesKHR(Printer &p, std::string name,
+ const VkVideoFormatQuantizationMapPropertiesKHR &obj);
+void DumpVkVideoProfileInfoKHR(Printer &p, std::string name, const VkVideoProfileInfoKHR &obj);
+void DumpVkComponentMapping(Printer &p, std::string name, const VkComponentMapping &obj) {
+ ObjectWrapper object{p, name};
+ DumpVkComponentSwizzle(p, "r", obj.r);
+ DumpVkComponentSwizzle(p, "g", obj.g);
+ DumpVkComponentSwizzle(p, "b", obj.b);
+ DumpVkComponentSwizzle(p, "a", obj.a);
+}
+void DumpVkConformanceVersion(Printer &p, std::string name, const VkConformanceVersion &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(8);
+ p.PrintKeyValue("major", static_cast<uint32_t>(obj.major));
+ p.PrintKeyValue("minor", static_cast<uint32_t>(obj.minor));
+ p.PrintKeyValue("subminor", static_cast<uint32_t>(obj.subminor));
+ p.PrintKeyValue("patch", static_cast<uint32_t>(obj.patch));
+}
+void DumpVkCooperativeMatrixPropertiesKHR(Printer &p, std::string name, const VkCooperativeMatrixPropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(22);
+ p.PrintKeyValue("MSize", obj.MSize);
+ p.PrintKeyValue("NSize", obj.NSize);
+ p.PrintKeyValue("KSize", obj.KSize);
+ DumpVkComponentTypeKHR(p, "AType", obj.AType);
+ DumpVkComponentTypeKHR(p, "BType", obj.BType);
+ DumpVkComponentTypeKHR(p, "CType", obj.CType);
+ DumpVkComponentTypeKHR(p, "ResultType", obj.ResultType);
+ p.PrintKeyBool("saturatingAccumulation", static_cast<bool>(obj.saturatingAccumulation));
+ DumpVkScopeKHR(p, "scope", obj.scope);
+}
+void DumpVkDisplayModeParametersKHR(Printer &p, std::string name, const VkDisplayModeParametersKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(11);
+ DumpVkExtent2D(p, "visibleRegion", obj.visibleRegion);
+ p.PrintKeyValue("refreshRate", obj.refreshRate);
+}
+void DumpVkDisplayModePropertiesKHR(Printer &p, std::string name, const VkDisplayModePropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpVkDisplayModeParametersKHR(p, "parameters", obj.parameters);
+}
+void DumpVkDisplayPlaneCapabilitiesKHR(Printer &p, std::string name, const VkDisplayPlaneCapabilitiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpVkDisplayPlaneAlphaFlagsKHR(p, "supportedAlpha", obj.supportedAlpha);
+ DumpVkOffset2D(p, "minSrcPosition", obj.minSrcPosition);
+ DumpVkOffset2D(p, "maxSrcPosition", obj.maxSrcPosition);
+ DumpVkExtent2D(p, "minSrcExtent", obj.minSrcExtent);
+ DumpVkExtent2D(p, "maxSrcExtent", obj.maxSrcExtent);
+ DumpVkOffset2D(p, "minDstPosition", obj.minDstPosition);
+ DumpVkOffset2D(p, "maxDstPosition", obj.maxDstPosition);
+ DumpVkExtent2D(p, "minDstExtent", obj.minDstExtent);
+ DumpVkExtent2D(p, "maxDstExtent", obj.maxDstExtent);
+}
+void DumpVkDisplayPlanePropertiesKHR(Printer &p, std::string name, const VkDisplayPlanePropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(17);
+ p.PrintKeyValue("currentStackIndex", obj.currentStackIndex);
+}
+void DumpVkDisplayPropertiesKHR(Printer &p, std::string name, const VkDisplayPropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(20);
+ if (obj.displayName == nullptr) {
+ p.PrintKeyString("displayName", "NULL");
+ } else {
+ p.PrintKeyString("displayName", obj.displayName);
+ }
+ DumpVkExtent2D(p, "physicalDimensions", obj.physicalDimensions);
+ DumpVkExtent2D(p, "physicalResolution", obj.physicalResolution);
+ DumpVkSurfaceTransformFlagsKHR(p, "supportedTransforms", obj.supportedTransforms);
+ p.PrintKeyBool("planeReorderPossible", static_cast<bool>(obj.planeReorderPossible));
+ p.PrintKeyBool("persistentContent", static_cast<bool>(obj.persistentContent));
+}
+void DumpVkDrmFormatModifierProperties2EXT(Printer &p, std::string name, const VkDrmFormatModifierProperties2EXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(27);
+ p.PrintKeyValue("drmFormatModifier", obj.drmFormatModifier);
+ p.PrintKeyValue("drmFormatModifierPlaneCount", obj.drmFormatModifierPlaneCount);
+ p.SetOpenDetails();
+ DumpVkFormatFeatureFlags2(p, "drmFormatModifierTilingFeatures", obj.drmFormatModifierTilingFeatures);
+}
+void DumpVkExtensionProperties(Printer &p, std::string name, const VkExtensionProperties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(13);
+ p.PrintKeyString("extensionName", obj.extensionName);
+ p.PrintKeyValue("specVersion", obj.specVersion);
+}
+void DumpVkExtent2D(Printer &p, std::string name, const VkExtent2D &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(6);
+ p.PrintKeyValue("width", obj.width);
+ p.PrintKeyValue("height", obj.height);
+}
+void DumpVkExtent3D(Printer &p, std::string name, const VkExtent3D &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(6);
+ p.PrintKeyValue("width", obj.width);
+ p.PrintKeyValue("height", obj.height);
+ p.PrintKeyValue("depth", obj.depth);
+}
+void DumpVkFormatProperties(Printer &p, std::string name, const VkFormatProperties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetOpenDetails();
+ DumpVkFormatFeatureFlags(p, "linearTilingFeatures", obj.linearTilingFeatures);
+ p.SetOpenDetails();
+ DumpVkFormatFeatureFlags(p, "optimalTilingFeatures", obj.optimalTilingFeatures);
+ p.SetOpenDetails();
+ DumpVkFormatFeatureFlags(p, "bufferFeatures", obj.bufferFeatures);
+}
+void DumpVkFormatProperties3(Printer &p, std::string name, const VkFormatProperties3 &obj) {
+ ObjectWrapper object{p, name};
+ p.SetOpenDetails();
+ DumpVkFormatFeatureFlags2(p, "linearTilingFeatures", obj.linearTilingFeatures);
+ p.SetOpenDetails();
+ DumpVkFormatFeatureFlags2(p, "optimalTilingFeatures", obj.optimalTilingFeatures);
+ p.SetOpenDetails();
+ DumpVkFormatFeatureFlags2(p, "bufferFeatures", obj.bufferFeatures);
+}
+void DumpVkLayerProperties(Printer &p, std::string name, const VkLayerProperties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(21);
+ p.PrintKeyString("layerName", obj.layerName);
+ p.PrintKeyValue("specVersion", obj.specVersion);
+ p.PrintKeyValue("implementationVersion", obj.implementationVersion);
+ p.PrintKeyString("description", obj.description);
+}
+void DumpVkMultisamplePropertiesEXT(Printer &p, std::string name, const VkMultisamplePropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ DumpVkExtent2D(p, "maxSampleLocationGridSize", obj.maxSampleLocationGridSize);
+}
+void DumpVkOffset2D(Printer &p, std::string name, const VkOffset2D &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(1);
+ p.PrintKeyValue("x", obj.x);
+ p.PrintKeyValue("y", obj.y);
+}
+void DumpVkPhysicalDevice16BitStorageFeatures(Printer &p, std::string name, const VkPhysicalDevice16BitStorageFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(34);
+ p.PrintKeyBool("storageBuffer16BitAccess", static_cast<bool>(obj.storageBuffer16BitAccess));
+ p.PrintKeyBool("uniformAndStorageBuffer16BitAccess", static_cast<bool>(obj.uniformAndStorageBuffer16BitAccess));
+ p.PrintKeyBool("storagePushConstant16", static_cast<bool>(obj.storagePushConstant16));
+ p.PrintKeyBool("storageInputOutput16", static_cast<bool>(obj.storageInputOutput16));
+}
+void DumpVkPhysicalDevice4444FormatsFeaturesEXT(Printer &p, std::string name, const VkPhysicalDevice4444FormatsFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(14);
+ p.PrintKeyBool("formatA4R4G4B4", static_cast<bool>(obj.formatA4R4G4B4));
+ p.PrintKeyBool("formatA4B4G4R4", static_cast<bool>(obj.formatA4B4G4R4));
+}
+void DumpVkPhysicalDevice8BitStorageFeatures(Printer &p, std::string name, const VkPhysicalDevice8BitStorageFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(33);
+ p.PrintKeyBool("storageBuffer8BitAccess", static_cast<bool>(obj.storageBuffer8BitAccess));
+ p.PrintKeyBool("uniformAndStorageBuffer8BitAccess", static_cast<bool>(obj.uniformAndStorageBuffer8BitAccess));
+ p.PrintKeyBool("storagePushConstant8", static_cast<bool>(obj.storagePushConstant8));
+}
+void DumpVkPhysicalDeviceASTCDecodeFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceASTCDecodeFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(24);
+ p.PrintKeyBool("decodeModeSharedExponent", static_cast<bool>(obj.decodeModeSharedExponent));
+}
+void DumpVkPhysicalDeviceAccelerationStructureFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceAccelerationStructureFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(53);
+ p.PrintKeyBool("accelerationStructure", static_cast<bool>(obj.accelerationStructure));
+ p.PrintKeyBool("accelerationStructureCaptureReplay", static_cast<bool>(obj.accelerationStructureCaptureReplay));
+ p.PrintKeyBool("accelerationStructureIndirectBuild", static_cast<bool>(obj.accelerationStructureIndirectBuild));
+ p.PrintKeyBool("accelerationStructureHostCommands", static_cast<bool>(obj.accelerationStructureHostCommands));
+ p.PrintKeyBool("descriptorBindingAccelerationStructureUpdateAfterBind",
+ static_cast<bool>(obj.descriptorBindingAccelerationStructureUpdateAfterBind));
+}
+void DumpVkPhysicalDeviceAccelerationStructurePropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceAccelerationStructurePropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(58);
+ p.PrintKeyValue("maxGeometryCount", obj.maxGeometryCount);
+ p.PrintKeyValue("maxInstanceCount", obj.maxInstanceCount);
+ p.PrintKeyValue("maxPrimitiveCount", obj.maxPrimitiveCount);
+ p.PrintKeyValue("maxPerStageDescriptorAccelerationStructures", obj.maxPerStageDescriptorAccelerationStructures);
+ p.PrintKeyValue("maxPerStageDescriptorUpdateAfterBindAccelerationStructures",
+ obj.maxPerStageDescriptorUpdateAfterBindAccelerationStructures);
+ p.PrintKeyValue("maxDescriptorSetAccelerationStructures", obj.maxDescriptorSetAccelerationStructures);
+ p.PrintKeyValue("maxDescriptorSetUpdateAfterBindAccelerationStructures",
+ obj.maxDescriptorSetUpdateAfterBindAccelerationStructures);
+ p.PrintKeyValue("minAccelerationStructureScratchOffsetAlignment", obj.minAccelerationStructureScratchOffsetAlignment);
+}
+void DumpVkPhysicalDeviceAddressBindingReportFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceAddressBindingReportFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(20);
+ p.PrintKeyBool("reportAddressBinding", static_cast<bool>(obj.reportAddressBinding));
+}
+void DumpVkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT(
+ Printer &p, std::string name, const VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(34);
+ p.PrintKeyBool("attachmentFeedbackLoopDynamicState", static_cast<bool>(obj.attachmentFeedbackLoopDynamicState));
+}
+void DumpVkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT(
+ Printer &p, std::string name, const VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(28);
+ p.PrintKeyBool("attachmentFeedbackLoopLayout", static_cast<bool>(obj.attachmentFeedbackLoopLayout));
+}
+void DumpVkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(31);
+ p.PrintKeyBool("advancedBlendCoherentOperations", static_cast<bool>(obj.advancedBlendCoherentOperations));
+}
+void DumpVkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(37);
+ p.PrintKeyValue("advancedBlendMaxColorAttachments", obj.advancedBlendMaxColorAttachments);
+ p.PrintKeyBool("advancedBlendIndependentBlend", static_cast<bool>(obj.advancedBlendIndependentBlend));
+ p.PrintKeyBool("advancedBlendNonPremultipliedSrcColor", static_cast<bool>(obj.advancedBlendNonPremultipliedSrcColor));
+ p.PrintKeyBool("advancedBlendNonPremultipliedDstColor", static_cast<bool>(obj.advancedBlendNonPremultipliedDstColor));
+ p.PrintKeyBool("advancedBlendCorrelatedOverlap", static_cast<bool>(obj.advancedBlendCorrelatedOverlap));
+ p.PrintKeyBool("advancedBlendAllOperations", static_cast<bool>(obj.advancedBlendAllOperations));
+}
+void DumpVkPhysicalDeviceBorderColorSwizzleFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(27);
+ p.PrintKeyBool("borderColorSwizzle", static_cast<bool>(obj.borderColorSwizzle));
+ p.PrintKeyBool("borderColorSwizzleFromImage", static_cast<bool>(obj.borderColorSwizzleFromImage));
+}
+void DumpVkPhysicalDeviceBufferDeviceAddressFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceBufferDeviceAddressFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(32);
+ p.PrintKeyBool("bufferDeviceAddress", static_cast<bool>(obj.bufferDeviceAddress));
+ p.PrintKeyBool("bufferDeviceAddressCaptureReplay", static_cast<bool>(obj.bufferDeviceAddressCaptureReplay));
+ p.PrintKeyBool("bufferDeviceAddressMultiDevice", static_cast<bool>(obj.bufferDeviceAddressMultiDevice));
+}
+void DumpVkPhysicalDeviceBufferDeviceAddressFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(32);
+ p.PrintKeyBool("bufferDeviceAddress", static_cast<bool>(obj.bufferDeviceAddress));
+ p.PrintKeyBool("bufferDeviceAddressCaptureReplay", static_cast<bool>(obj.bufferDeviceAddressCaptureReplay));
+ p.PrintKeyBool("bufferDeviceAddressMultiDevice", static_cast<bool>(obj.bufferDeviceAddressMultiDevice));
+}
+void DumpVkPhysicalDeviceColorWriteEnableFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceColorWriteEnableFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(16);
+ p.PrintKeyBool("colorWriteEnable", static_cast<bool>(obj.colorWriteEnable));
+}
+void DumpVkPhysicalDeviceComputeShaderDerivativesFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(28);
+ p.PrintKeyBool("computeDerivativeGroupQuads", static_cast<bool>(obj.computeDerivativeGroupQuads));
+ p.PrintKeyBool("computeDerivativeGroupLinear", static_cast<bool>(obj.computeDerivativeGroupLinear));
+}
+void DumpVkPhysicalDeviceComputeShaderDerivativesPropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(28);
+ p.PrintKeyBool("meshAndTaskShaderDerivatives", static_cast<bool>(obj.meshAndTaskShaderDerivatives));
+}
+void DumpVkPhysicalDeviceConditionalRenderingFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceConditionalRenderingFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(29);
+ p.PrintKeyBool("conditionalRendering", static_cast<bool>(obj.conditionalRendering));
+ p.PrintKeyBool("inheritedConditionalRendering", static_cast<bool>(obj.inheritedConditionalRendering));
+}
+void DumpVkPhysicalDeviceConservativeRasterizationPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceConservativeRasterizationPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(43);
+ p.PrintKeyValue("primitiveOverestimationSize", obj.primitiveOverestimationSize);
+ p.PrintKeyValue("maxExtraPrimitiveOverestimationSize", obj.maxExtraPrimitiveOverestimationSize);
+ p.PrintKeyValue("extraPrimitiveOverestimationSizeGranularity", obj.extraPrimitiveOverestimationSizeGranularity);
+ p.PrintKeyBool("primitiveUnderestimation", static_cast<bool>(obj.primitiveUnderestimation));
+ p.PrintKeyBool("conservativePointAndLineRasterization", static_cast<bool>(obj.conservativePointAndLineRasterization));
+ p.PrintKeyBool("degenerateTrianglesRasterized", static_cast<bool>(obj.degenerateTrianglesRasterized));
+ p.PrintKeyBool("degenerateLinesRasterized", static_cast<bool>(obj.degenerateLinesRasterized));
+ p.PrintKeyBool("fullyCoveredFragmentShaderInputVariable", static_cast<bool>(obj.fullyCoveredFragmentShaderInputVariable));
+ p.PrintKeyBool("conservativeRasterizationPostDepthCoverage", static_cast<bool>(obj.conservativeRasterizationPostDepthCoverage));
+}
+void DumpVkPhysicalDeviceCooperativeMatrixFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceCooperativeMatrixFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(35);
+ p.PrintKeyBool("cooperativeMatrix", static_cast<bool>(obj.cooperativeMatrix));
+ p.PrintKeyBool("cooperativeMatrixRobustBufferAccess", static_cast<bool>(obj.cooperativeMatrixRobustBufferAccess));
+}
+void DumpVkPhysicalDeviceCooperativeMatrixPropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceCooperativeMatrixPropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpVkShaderStageFlags(p, "cooperativeMatrixSupportedStages", obj.cooperativeMatrixSupportedStages);
+}
+void DumpVkPhysicalDeviceCopyMemoryIndirectFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(25);
+ p.PrintKeyBool("indirectMemoryCopy", static_cast<bool>(obj.indirectMemoryCopy));
+ p.PrintKeyBool("indirectMemoryToImageCopy", static_cast<bool>(obj.indirectMemoryToImageCopy));
+}
+void DumpVkPhysicalDeviceCopyMemoryIndirectPropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpVkQueueFlags(p, "supportedQueues", obj.supportedQueues);
+}
+void DumpVkPhysicalDeviceCustomBorderColorFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceCustomBorderColorFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(30);
+ p.PrintKeyBool("customBorderColors", static_cast<bool>(obj.customBorderColors));
+ p.PrintKeyBool("customBorderColorWithoutFormat", static_cast<bool>(obj.customBorderColorWithoutFormat));
+}
+void DumpVkPhysicalDeviceCustomBorderColorPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceCustomBorderColorPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(28);
+ p.PrintKeyValue("maxCustomBorderColorSamplers", obj.maxCustomBorderColorSamplers);
+}
+void DumpVkPhysicalDeviceCustomResolveFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceCustomResolveFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(13);
+ p.PrintKeyBool("customResolve", static_cast<bool>(obj.customResolve));
+}
+void DumpVkPhysicalDeviceDepthBiasControlFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceDepthBiasControlFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(47);
+ p.PrintKeyBool("depthBiasControl", static_cast<bool>(obj.depthBiasControl));
+ p.PrintKeyBool("leastRepresentableValueForceUnormRepresentation",
+ static_cast<bool>(obj.leastRepresentableValueForceUnormRepresentation));
+ p.PrintKeyBool("floatRepresentation", static_cast<bool>(obj.floatRepresentation));
+ p.PrintKeyBool("depthBiasExact", static_cast<bool>(obj.depthBiasExact));
+}
+void DumpVkPhysicalDeviceDepthClampControlFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceDepthClampControlFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(17);
+ p.PrintKeyBool("depthClampControl", static_cast<bool>(obj.depthClampControl));
+}
+void DumpVkPhysicalDeviceDepthClampZeroOneFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceDepthClampZeroOneFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(17);
+ p.PrintKeyBool("depthClampZeroOne", static_cast<bool>(obj.depthClampZeroOne));
+}
+void DumpVkPhysicalDeviceDepthClipControlFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceDepthClipControlFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(16);
+ p.PrintKeyBool("depthClipControl", static_cast<bool>(obj.depthClipControl));
+}
+void DumpVkPhysicalDeviceDepthClipEnableFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceDepthClipEnableFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(15);
+ p.PrintKeyBool("depthClipEnable", static_cast<bool>(obj.depthClipEnable));
+}
+void DumpVkPhysicalDeviceDepthStencilResolveProperties(Printer &p, std::string name,
+ const VkPhysicalDeviceDepthStencilResolveProperties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(22);
+ DumpVkResolveModeFlags(p, "supportedDepthResolveModes", obj.supportedDepthResolveModes);
+ DumpVkResolveModeFlags(p, "supportedStencilResolveModes", obj.supportedStencilResolveModes);
+ p.PrintKeyBool("independentResolveNone", static_cast<bool>(obj.independentResolveNone));
+ p.PrintKeyBool("independentResolve", static_cast<bool>(obj.independentResolve));
+}
+void DumpVkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT(
+ Printer &p, std::string name, const VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(44);
+ p.PrintKeyValue("combinedImageSamplerDensityMapDescriptorSize", obj.combinedImageSamplerDensityMapDescriptorSize);
+}
+void DumpVkPhysicalDeviceDescriptorBufferFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceDescriptorBufferFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(34);
+ p.PrintKeyBool("descriptorBuffer", static_cast<bool>(obj.descriptorBuffer));
+ p.PrintKeyBool("descriptorBufferCaptureReplay", static_cast<bool>(obj.descriptorBufferCaptureReplay));
+ p.PrintKeyBool("descriptorBufferImageLayoutIgnored", static_cast<bool>(obj.descriptorBufferImageLayoutIgnored));
+ p.PrintKeyBool("descriptorBufferPushDescriptors", static_cast<bool>(obj.descriptorBufferPushDescriptors));
+}
+void DumpVkPhysicalDeviceDescriptorBufferPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceDescriptorBufferPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(52);
+ p.PrintKeyBool("combinedImageSamplerDescriptorSingleArray", static_cast<bool>(obj.combinedImageSamplerDescriptorSingleArray));
+ p.PrintKeyBool("bufferlessPushDescriptors", static_cast<bool>(obj.bufferlessPushDescriptors));
+ p.PrintKeyBool("allowSamplerImageViewPostSubmitCreation", static_cast<bool>(obj.allowSamplerImageViewPostSubmitCreation));
+ p.PrintKeyValue("descriptorBufferOffsetAlignment", to_hex_str(p, obj.descriptorBufferOffsetAlignment));
+ p.PrintKeyValue("maxDescriptorBufferBindings", obj.maxDescriptorBufferBindings);
+ p.PrintKeyValue("maxResourceDescriptorBufferBindings", obj.maxResourceDescriptorBufferBindings);
+ p.PrintKeyValue("maxSamplerDescriptorBufferBindings", obj.maxSamplerDescriptorBufferBindings);
+ p.PrintKeyValue("maxEmbeddedImmutableSamplerBindings", obj.maxEmbeddedImmutableSamplerBindings);
+ p.PrintKeyValue("maxEmbeddedImmutableSamplers", obj.maxEmbeddedImmutableSamplers);
+ p.PrintKeyValue("bufferCaptureReplayDescriptorDataSize", obj.bufferCaptureReplayDescriptorDataSize);
+ p.PrintKeyValue("imageCaptureReplayDescriptorDataSize", obj.imageCaptureReplayDescriptorDataSize);
+ p.PrintKeyValue("imageViewCaptureReplayDescriptorDataSize", obj.imageViewCaptureReplayDescriptorDataSize);
+ p.PrintKeyValue("samplerCaptureReplayDescriptorDataSize", obj.samplerCaptureReplayDescriptorDataSize);
+ p.PrintKeyValue("accelerationStructureCaptureReplayDescriptorDataSize",
+ obj.accelerationStructureCaptureReplayDescriptorDataSize);
+ p.PrintKeyValue("samplerDescriptorSize", obj.samplerDescriptorSize);
+ p.PrintKeyValue("combinedImageSamplerDescriptorSize", obj.combinedImageSamplerDescriptorSize);
+ p.PrintKeyValue("sampledImageDescriptorSize", obj.sampledImageDescriptorSize);
+ p.PrintKeyValue("storageImageDescriptorSize", obj.storageImageDescriptorSize);
+ p.PrintKeyValue("uniformTexelBufferDescriptorSize", obj.uniformTexelBufferDescriptorSize);
+ p.PrintKeyValue("robustUniformTexelBufferDescriptorSize", obj.robustUniformTexelBufferDescriptorSize);
+ p.PrintKeyValue("storageTexelBufferDescriptorSize", obj.storageTexelBufferDescriptorSize);
+ p.PrintKeyValue("robustStorageTexelBufferDescriptorSize", obj.robustStorageTexelBufferDescriptorSize);
+ p.PrintKeyValue("uniformBufferDescriptorSize", obj.uniformBufferDescriptorSize);
+ p.PrintKeyValue("robustUniformBufferDescriptorSize", obj.robustUniformBufferDescriptorSize);
+ p.PrintKeyValue("storageBufferDescriptorSize", obj.storageBufferDescriptorSize);
+ p.PrintKeyValue("robustStorageBufferDescriptorSize", obj.robustStorageBufferDescriptorSize);
+ p.PrintKeyValue("inputAttachmentDescriptorSize", obj.inputAttachmentDescriptorSize);
+ p.PrintKeyValue("accelerationStructureDescriptorSize", obj.accelerationStructureDescriptorSize);
+ p.PrintKeyValue("maxSamplerDescriptorBufferRange", to_hex_str(p, obj.maxSamplerDescriptorBufferRange));
+ p.PrintKeyValue("maxResourceDescriptorBufferRange", to_hex_str(p, obj.maxResourceDescriptorBufferRange));
+ p.PrintKeyValue("samplerDescriptorBufferAddressSpaceSize", to_hex_str(p, obj.samplerDescriptorBufferAddressSpaceSize));
+ p.PrintKeyValue("resourceDescriptorBufferAddressSpaceSize", to_hex_str(p, obj.resourceDescriptorBufferAddressSpaceSize));
+ p.PrintKeyValue("descriptorBufferAddressSpaceSize", to_hex_str(p, obj.descriptorBufferAddressSpaceSize));
+}
+void DumpVkPhysicalDeviceDescriptorHeapFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceDescriptorHeapFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(27);
+ p.PrintKeyBool("descriptorHeap", static_cast<bool>(obj.descriptorHeap));
+ p.PrintKeyBool("descriptorHeapCaptureReplay", static_cast<bool>(obj.descriptorHeapCaptureReplay));
+}
+void DumpVkPhysicalDeviceDescriptorHeapPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceDescriptorHeapPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(39);
+ p.PrintKeyValue("samplerHeapAlignment", to_hex_str(p, obj.samplerHeapAlignment));
+ p.PrintKeyValue("resourceHeapAlignment", to_hex_str(p, obj.resourceHeapAlignment));
+ p.PrintKeyValue("maxSamplerHeapSize", to_hex_str(p, obj.maxSamplerHeapSize));
+ p.PrintKeyValue("maxResourceHeapSize", to_hex_str(p, obj.maxResourceHeapSize));
+ p.PrintKeyValue("minSamplerHeapReservedRange", to_hex_str(p, obj.minSamplerHeapReservedRange));
+ p.PrintKeyValue("minSamplerHeapReservedRangeWithEmbedded", to_hex_str(p, obj.minSamplerHeapReservedRangeWithEmbedded));
+ p.PrintKeyValue("minResourceHeapReservedRange", to_hex_str(p, obj.minResourceHeapReservedRange));
+ p.PrintKeyValue("samplerDescriptorSize", to_hex_str(p, obj.samplerDescriptorSize));
+ p.PrintKeyValue("imageDescriptorSize", to_hex_str(p, obj.imageDescriptorSize));
+ p.PrintKeyValue("bufferDescriptorSize", to_hex_str(p, obj.bufferDescriptorSize));
+ p.PrintKeyValue("samplerDescriptorAlignment", to_hex_str(p, obj.samplerDescriptorAlignment));
+ p.PrintKeyValue("imageDescriptorAlignment", to_hex_str(p, obj.imageDescriptorAlignment));
+ p.PrintKeyValue("bufferDescriptorAlignment", to_hex_str(p, obj.bufferDescriptorAlignment));
+ p.PrintKeyValue("maxPushDataSize", to_hex_str(p, obj.maxPushDataSize));
+ p.PrintKeyValue("imageCaptureReplayOpaqueDataSize", obj.imageCaptureReplayOpaqueDataSize);
+ p.PrintKeyValue("maxDescriptorHeapEmbeddedSamplers", obj.maxDescriptorHeapEmbeddedSamplers);
+ p.PrintKeyValue("samplerYcbcrConversionCount", obj.samplerYcbcrConversionCount);
+ p.PrintKeyBool("sparseDescriptorHeaps", static_cast<bool>(obj.sparseDescriptorHeaps));
+ p.PrintKeyBool("protectedDescriptorHeaps", static_cast<bool>(obj.protectedDescriptorHeaps));
+}
+void DumpVkPhysicalDeviceDescriptorHeapTensorPropertiesARM(Printer &p, std::string name,
+ const VkPhysicalDeviceDescriptorHeapTensorPropertiesARM &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(33);
+ p.PrintKeyValue("tensorDescriptorSize", to_hex_str(p, obj.tensorDescriptorSize));
+ p.PrintKeyValue("tensorDescriptorAlignment", to_hex_str(p, obj.tensorDescriptorAlignment));
+ p.PrintKeyValue("tensorCaptureReplayOpaqueDataSize", obj.tensorCaptureReplayOpaqueDataSize);
+}
+void DumpVkPhysicalDeviceDescriptorIndexingFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceDescriptorIndexingFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(50);
+ p.PrintKeyBool("shaderInputAttachmentArrayDynamicIndexing", static_cast<bool>(obj.shaderInputAttachmentArrayDynamicIndexing));
+ p.PrintKeyBool("shaderUniformTexelBufferArrayDynamicIndexing",
+ static_cast<bool>(obj.shaderUniformTexelBufferArrayDynamicIndexing));
+ p.PrintKeyBool("shaderStorageTexelBufferArrayDynamicIndexing",
+ static_cast<bool>(obj.shaderStorageTexelBufferArrayDynamicIndexing));
+ p.PrintKeyBool("shaderUniformBufferArrayNonUniformIndexing", static_cast<bool>(obj.shaderUniformBufferArrayNonUniformIndexing));
+ p.PrintKeyBool("shaderSampledImageArrayNonUniformIndexing", static_cast<bool>(obj.shaderSampledImageArrayNonUniformIndexing));
+ p.PrintKeyBool("shaderStorageBufferArrayNonUniformIndexing", static_cast<bool>(obj.shaderStorageBufferArrayNonUniformIndexing));
+ p.PrintKeyBool("shaderStorageImageArrayNonUniformIndexing", static_cast<bool>(obj.shaderStorageImageArrayNonUniformIndexing));
+ p.PrintKeyBool("shaderInputAttachmentArrayNonUniformIndexing",
+ static_cast<bool>(obj.shaderInputAttachmentArrayNonUniformIndexing));
+ p.PrintKeyBool("shaderUniformTexelBufferArrayNonUniformIndexing",
+ static_cast<bool>(obj.shaderUniformTexelBufferArrayNonUniformIndexing));
+ p.PrintKeyBool("shaderStorageTexelBufferArrayNonUniformIndexing",
+ static_cast<bool>(obj.shaderStorageTexelBufferArrayNonUniformIndexing));
+ p.PrintKeyBool("descriptorBindingUniformBufferUpdateAfterBind",
+ static_cast<bool>(obj.descriptorBindingUniformBufferUpdateAfterBind));
+ p.PrintKeyBool("descriptorBindingSampledImageUpdateAfterBind",
+ static_cast<bool>(obj.descriptorBindingSampledImageUpdateAfterBind));
+ p.PrintKeyBool("descriptorBindingStorageImageUpdateAfterBind",
+ static_cast<bool>(obj.descriptorBindingStorageImageUpdateAfterBind));
+ p.PrintKeyBool("descriptorBindingStorageBufferUpdateAfterBind",
+ static_cast<bool>(obj.descriptorBindingStorageBufferUpdateAfterBind));
+ p.PrintKeyBool("descriptorBindingUniformTexelBufferUpdateAfterBind",
+ static_cast<bool>(obj.descriptorBindingUniformTexelBufferUpdateAfterBind));
+ p.PrintKeyBool("descriptorBindingStorageTexelBufferUpdateAfterBind",
+ static_cast<bool>(obj.descriptorBindingStorageTexelBufferUpdateAfterBind));
+ p.PrintKeyBool("descriptorBindingUpdateUnusedWhilePending", static_cast<bool>(obj.descriptorBindingUpdateUnusedWhilePending));
+ p.PrintKeyBool("descriptorBindingPartiallyBound", static_cast<bool>(obj.descriptorBindingPartiallyBound));
+ p.PrintKeyBool("descriptorBindingVariableDescriptorCount", static_cast<bool>(obj.descriptorBindingVariableDescriptorCount));
+ p.PrintKeyBool("runtimeDescriptorArray", static_cast<bool>(obj.runtimeDescriptorArray));
+}
+void DumpVkPhysicalDeviceDescriptorIndexingProperties(Printer &p, std::string name,
+ const VkPhysicalDeviceDescriptorIndexingProperties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(52);
+ p.PrintKeyValue("maxUpdateAfterBindDescriptorsInAllPools", obj.maxUpdateAfterBindDescriptorsInAllPools);
+ p.PrintKeyBool("shaderUniformBufferArrayNonUniformIndexingNative",
+ static_cast<bool>(obj.shaderUniformBufferArrayNonUniformIndexingNative));
+ p.PrintKeyBool("shaderSampledImageArrayNonUniformIndexingNative",
+ static_cast<bool>(obj.shaderSampledImageArrayNonUniformIndexingNative));
+ p.PrintKeyBool("shaderStorageBufferArrayNonUniformIndexingNative",
+ static_cast<bool>(obj.shaderStorageBufferArrayNonUniformIndexingNative));
+ p.PrintKeyBool("shaderStorageImageArrayNonUniformIndexingNative",
+ static_cast<bool>(obj.shaderStorageImageArrayNonUniformIndexingNative));
+ p.PrintKeyBool("shaderInputAttachmentArrayNonUniformIndexingNative",
+ static_cast<bool>(obj.shaderInputAttachmentArrayNonUniformIndexingNative));
+ p.PrintKeyBool("robustBufferAccessUpdateAfterBind", static_cast<bool>(obj.robustBufferAccessUpdateAfterBind));
+ p.PrintKeyBool("quadDivergentImplicitLod", static_cast<bool>(obj.quadDivergentImplicitLod));
+ p.PrintKeyValue("maxPerStageDescriptorUpdateAfterBindSamplers", obj.maxPerStageDescriptorUpdateAfterBindSamplers);
+ p.PrintKeyValue("maxPerStageDescriptorUpdateAfterBindUniformBuffers", obj.maxPerStageDescriptorUpdateAfterBindUniformBuffers);
+ p.PrintKeyValue("maxPerStageDescriptorUpdateAfterBindStorageBuffers", obj.maxPerStageDescriptorUpdateAfterBindStorageBuffers);
+ p.PrintKeyValue("maxPerStageDescriptorUpdateAfterBindSampledImages", obj.maxPerStageDescriptorUpdateAfterBindSampledImages);
+ p.PrintKeyValue("maxPerStageDescriptorUpdateAfterBindStorageImages", obj.maxPerStageDescriptorUpdateAfterBindStorageImages);
+ p.PrintKeyValue("maxPerStageDescriptorUpdateAfterBindInputAttachments",
+ obj.maxPerStageDescriptorUpdateAfterBindInputAttachments);
+ p.PrintKeyValue("maxPerStageUpdateAfterBindResources", obj.maxPerStageUpdateAfterBindResources);
+ p.PrintKeyValue("maxDescriptorSetUpdateAfterBindSamplers", obj.maxDescriptorSetUpdateAfterBindSamplers);
+ p.PrintKeyValue("maxDescriptorSetUpdateAfterBindUniformBuffers", obj.maxDescriptorSetUpdateAfterBindUniformBuffers);
+ p.PrintKeyValue("maxDescriptorSetUpdateAfterBindUniformBuffersDynamic",
+ obj.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic);
+ p.PrintKeyValue("maxDescriptorSetUpdateAfterBindStorageBuffers", obj.maxDescriptorSetUpdateAfterBindStorageBuffers);
+ p.PrintKeyValue("maxDescriptorSetUpdateAfterBindStorageBuffersDynamic",
+ obj.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic);
+ p.PrintKeyValue("maxDescriptorSetUpdateAfterBindSampledImages", obj.maxDescriptorSetUpdateAfterBindSampledImages);
+ p.PrintKeyValue("maxDescriptorSetUpdateAfterBindStorageImages", obj.maxDescriptorSetUpdateAfterBindStorageImages);
+ p.PrintKeyValue("maxDescriptorSetUpdateAfterBindInputAttachments", obj.maxDescriptorSetUpdateAfterBindInputAttachments);
+}
+void DumpVkPhysicalDeviceDeviceAddressCommandsFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(21);
+ p.PrintKeyBool("deviceAddressCommands", static_cast<bool>(obj.deviceAddressCommands));
+}
+void DumpVkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(30);
+ p.PrintKeyBool("deviceGeneratedCommands", static_cast<bool>(obj.deviceGeneratedCommands));
+ p.PrintKeyBool("dynamicGeneratedPipelineLayout", static_cast<bool>(obj.dynamicGeneratedPipelineLayout));
+}
+void DumpVkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(45);
+ p.PrintKeyValue("maxIndirectPipelineCount", obj.maxIndirectPipelineCount);
+ p.PrintKeyValue("maxIndirectShaderObjectCount", obj.maxIndirectShaderObjectCount);
+ p.PrintKeyValue("maxIndirectSequenceCount", obj.maxIndirectSequenceCount);
+ p.PrintKeyValue("maxIndirectCommandsTokenCount", obj.maxIndirectCommandsTokenCount);
+ p.PrintKeyValue("maxIndirectCommandsTokenOffset", obj.maxIndirectCommandsTokenOffset);
+ p.PrintKeyValue("maxIndirectCommandsIndirectStride", obj.maxIndirectCommandsIndirectStride);
+ DumpVkIndirectCommandsInputModeFlagsEXT(p, "supportedIndirectCommandsInputModes", obj.supportedIndirectCommandsInputModes);
+ DumpVkShaderStageFlags(p, "supportedIndirectCommandsShaderStages", obj.supportedIndirectCommandsShaderStages);
+ DumpVkShaderStageFlags(p, "supportedIndirectCommandsShaderStagesPipelineBinding",
+ obj.supportedIndirectCommandsShaderStagesPipelineBinding);
+ DumpVkShaderStageFlags(p, "supportedIndirectCommandsShaderStagesShaderBinding",
+ obj.supportedIndirectCommandsShaderStagesShaderBinding);
+ p.PrintKeyBool("deviceGeneratedCommandsTransformFeedback", static_cast<bool>(obj.deviceGeneratedCommandsTransformFeedback));
+ p.PrintKeyBool("deviceGeneratedCommandsMultiDrawIndirectCount",
+ static_cast<bool>(obj.deviceGeneratedCommandsMultiDrawIndirectCount));
+}
+void DumpVkPhysicalDeviceDeviceMemoryReportFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(18);
+ p.PrintKeyBool("deviceMemoryReport", static_cast<bool>(obj.deviceMemoryReport));
+}
+void DumpVkPhysicalDeviceDiscardRectanglePropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceDiscardRectanglePropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(20);
+ p.PrintKeyValue("maxDiscardRectangles", obj.maxDiscardRectangles);
+}
+void DumpVkPhysicalDeviceDriverProperties(Printer &p, std::string name, const VkPhysicalDeviceDriverProperties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(10);
+ DumpVkDriverId(p, "driverID", obj.driverID);
+ p.PrintKeyString("driverName", obj.driverName);
+ p.PrintKeyString("driverInfo", obj.driverInfo);
+ DumpVkConformanceVersion(p, "conformanceVersion", obj.conformanceVersion);
+}
+void DumpVkPhysicalDeviceDrmPropertiesEXT(Printer &p, std::string name, const VkPhysicalDeviceDrmPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(12);
+ p.PrintKeyBool("hasPrimary", static_cast<bool>(obj.hasPrimary));
+ p.PrintKeyBool("hasRender", static_cast<bool>(obj.hasRender));
+ p.PrintKeyValue("primaryMajor", obj.primaryMajor);
+ p.PrintKeyValue("primaryMinor", obj.primaryMinor);
+ p.PrintKeyValue("renderMajor", obj.renderMajor);
+ p.PrintKeyValue("renderMinor", obj.renderMinor);
+}
+void DumpVkPhysicalDeviceDynamicRenderingFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceDynamicRenderingFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(16);
+ p.PrintKeyBool("dynamicRendering", static_cast<bool>(obj.dynamicRendering));
+}
+void DumpVkPhysicalDeviceDynamicRenderingLocalReadFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceDynamicRenderingLocalReadFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(25);
+ p.PrintKeyBool("dynamicRenderingLocalRead", static_cast<bool>(obj.dynamicRenderingLocalRead));
+}
+void DumpVkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT(
+ Printer &p, std::string name, const VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(33);
+ p.PrintKeyBool("dynamicRenderingUnusedAttachments", static_cast<bool>(obj.dynamicRenderingUnusedAttachments));
+}
+void DumpVkPhysicalDeviceExtendedDynamicState2FeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(39);
+ p.PrintKeyBool("extendedDynamicState2", static_cast<bool>(obj.extendedDynamicState2));
+ p.PrintKeyBool("extendedDynamicState2LogicOp", static_cast<bool>(obj.extendedDynamicState2LogicOp));
+ p.PrintKeyBool("extendedDynamicState2PatchControlPoints", static_cast<bool>(obj.extendedDynamicState2PatchControlPoints));
+}
+void DumpVkPhysicalDeviceExtendedDynamicState3FeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceExtendedDynamicState3FeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(53);
+ p.PrintKeyBool("extendedDynamicState3TessellationDomainOrigin",
+ static_cast<bool>(obj.extendedDynamicState3TessellationDomainOrigin));
+ p.PrintKeyBool("extendedDynamicState3DepthClampEnable", static_cast<bool>(obj.extendedDynamicState3DepthClampEnable));
+ p.PrintKeyBool("extendedDynamicState3PolygonMode", static_cast<bool>(obj.extendedDynamicState3PolygonMode));
+ p.PrintKeyBool("extendedDynamicState3RasterizationSamples", static_cast<bool>(obj.extendedDynamicState3RasterizationSamples));
+ p.PrintKeyBool("extendedDynamicState3SampleMask", static_cast<bool>(obj.extendedDynamicState3SampleMask));
+ p.PrintKeyBool("extendedDynamicState3AlphaToCoverageEnable", static_cast<bool>(obj.extendedDynamicState3AlphaToCoverageEnable));
+ p.PrintKeyBool("extendedDynamicState3AlphaToOneEnable", static_cast<bool>(obj.extendedDynamicState3AlphaToOneEnable));
+ p.PrintKeyBool("extendedDynamicState3LogicOpEnable", static_cast<bool>(obj.extendedDynamicState3LogicOpEnable));
+ p.PrintKeyBool("extendedDynamicState3ColorBlendEnable", static_cast<bool>(obj.extendedDynamicState3ColorBlendEnable));
+ p.PrintKeyBool("extendedDynamicState3ColorBlendEquation", static_cast<bool>(obj.extendedDynamicState3ColorBlendEquation));
+ p.PrintKeyBool("extendedDynamicState3ColorWriteMask", static_cast<bool>(obj.extendedDynamicState3ColorWriteMask));
+ p.PrintKeyBool("extendedDynamicState3RasterizationStream", static_cast<bool>(obj.extendedDynamicState3RasterizationStream));
+ p.PrintKeyBool("extendedDynamicState3ConservativeRasterizationMode",
+ static_cast<bool>(obj.extendedDynamicState3ConservativeRasterizationMode));
+ p.PrintKeyBool("extendedDynamicState3ExtraPrimitiveOverestimationSize",
+ static_cast<bool>(obj.extendedDynamicState3ExtraPrimitiveOverestimationSize));
+ p.PrintKeyBool("extendedDynamicState3DepthClipEnable", static_cast<bool>(obj.extendedDynamicState3DepthClipEnable));
+ p.PrintKeyBool("extendedDynamicState3SampleLocationsEnable", static_cast<bool>(obj.extendedDynamicState3SampleLocationsEnable));
+ p.PrintKeyBool("extendedDynamicState3ColorBlendAdvanced", static_cast<bool>(obj.extendedDynamicState3ColorBlendAdvanced));
+ p.PrintKeyBool("extendedDynamicState3ProvokingVertexMode", static_cast<bool>(obj.extendedDynamicState3ProvokingVertexMode));
+ p.PrintKeyBool("extendedDynamicState3LineRasterizationMode", static_cast<bool>(obj.extendedDynamicState3LineRasterizationMode));
+ p.PrintKeyBool("extendedDynamicState3LineStippleEnable", static_cast<bool>(obj.extendedDynamicState3LineStippleEnable));
+ p.PrintKeyBool("extendedDynamicState3DepthClipNegativeOneToOne",
+ static_cast<bool>(obj.extendedDynamicState3DepthClipNegativeOneToOne));
+ p.PrintKeyBool("extendedDynamicState3ViewportWScalingEnable",
+ static_cast<bool>(obj.extendedDynamicState3ViewportWScalingEnable));
+ p.PrintKeyBool("extendedDynamicState3ViewportSwizzle", static_cast<bool>(obj.extendedDynamicState3ViewportSwizzle));
+ p.PrintKeyBool("extendedDynamicState3CoverageToColorEnable", static_cast<bool>(obj.extendedDynamicState3CoverageToColorEnable));
+ p.PrintKeyBool("extendedDynamicState3CoverageToColorLocation",
+ static_cast<bool>(obj.extendedDynamicState3CoverageToColorLocation));
+ p.PrintKeyBool("extendedDynamicState3CoverageModulationMode",
+ static_cast<bool>(obj.extendedDynamicState3CoverageModulationMode));
+ p.PrintKeyBool("extendedDynamicState3CoverageModulationTableEnable",
+ static_cast<bool>(obj.extendedDynamicState3CoverageModulationTableEnable));
+ p.PrintKeyBool("extendedDynamicState3CoverageModulationTable",
+ static_cast<bool>(obj.extendedDynamicState3CoverageModulationTable));
+ p.PrintKeyBool("extendedDynamicState3CoverageReductionMode", static_cast<bool>(obj.extendedDynamicState3CoverageReductionMode));
+ p.PrintKeyBool("extendedDynamicState3RepresentativeFragmentTestEnable",
+ static_cast<bool>(obj.extendedDynamicState3RepresentativeFragmentTestEnable));
+ p.PrintKeyBool("extendedDynamicState3ShadingRateImageEnable",
+ static_cast<bool>(obj.extendedDynamicState3ShadingRateImageEnable));
+}
+void DumpVkPhysicalDeviceExtendedDynamicState3PropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceExtendedDynamicState3PropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(36);
+ p.PrintKeyBool("dynamicPrimitiveTopologyUnrestricted", static_cast<bool>(obj.dynamicPrimitiveTopologyUnrestricted));
+}
+void DumpVkPhysicalDeviceExtendedDynamicStateFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(20);
+ p.PrintKeyBool("extendedDynamicState", static_cast<bool>(obj.extendedDynamicState));
+}
+void DumpVkPhysicalDeviceExternalMemoryHostPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceExternalMemoryHostPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(31);
+ p.PrintKeyValue("minImportedHostPointerAlignment", to_hex_str(p, obj.minImportedHostPointerAlignment));
+}
+void DumpVkPhysicalDeviceFaultFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceFaultFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(23);
+ p.PrintKeyBool("deviceFault", static_cast<bool>(obj.deviceFault));
+ p.PrintKeyBool("deviceFaultVendorBinary", static_cast<bool>(obj.deviceFaultVendorBinary));
+}
+void DumpVkPhysicalDeviceFaultFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceFaultFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(29);
+ p.PrintKeyBool("deviceFault", static_cast<bool>(obj.deviceFault));
+ p.PrintKeyBool("deviceFaultVendorBinary", static_cast<bool>(obj.deviceFaultVendorBinary));
+ p.PrintKeyBool("deviceFaultReportMasked", static_cast<bool>(obj.deviceFaultReportMasked));
+ p.PrintKeyBool("deviceFaultDeviceLostOnMasked", static_cast<bool>(obj.deviceFaultDeviceLostOnMasked));
+}
+void DumpVkPhysicalDeviceFaultPropertiesKHR(Printer &p, std::string name, const VkPhysicalDeviceFaultPropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(19);
+ p.PrintKeyValue("maxDeviceFaultCount", obj.maxDeviceFaultCount);
+}
+void DumpVkPhysicalDeviceFeatures(Printer &p, std::string name, const VkPhysicalDeviceFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(39);
+ p.PrintKeyBool("robustBufferAccess", static_cast<bool>(obj.robustBufferAccess));
+ p.PrintKeyBool("fullDrawIndexUint32", static_cast<bool>(obj.fullDrawIndexUint32));
+ p.PrintKeyBool("imageCubeArray", static_cast<bool>(obj.imageCubeArray));
+ p.PrintKeyBool("independentBlend", static_cast<bool>(obj.independentBlend));
+ p.PrintKeyBool("geometryShader", static_cast<bool>(obj.geometryShader));
+ p.PrintKeyBool("tessellationShader", static_cast<bool>(obj.tessellationShader));
+ p.PrintKeyBool("sampleRateShading", static_cast<bool>(obj.sampleRateShading));
+ p.PrintKeyBool("dualSrcBlend", static_cast<bool>(obj.dualSrcBlend));
+ p.PrintKeyBool("logicOp", static_cast<bool>(obj.logicOp));
+ p.PrintKeyBool("multiDrawIndirect", static_cast<bool>(obj.multiDrawIndirect));
+ p.PrintKeyBool("drawIndirectFirstInstance", static_cast<bool>(obj.drawIndirectFirstInstance));
+ p.PrintKeyBool("depthClamp", static_cast<bool>(obj.depthClamp));
+ p.PrintKeyBool("depthBiasClamp", static_cast<bool>(obj.depthBiasClamp));
+ p.PrintKeyBool("fillModeNonSolid", static_cast<bool>(obj.fillModeNonSolid));
+ p.PrintKeyBool("depthBounds", static_cast<bool>(obj.depthBounds));
+ p.PrintKeyBool("wideLines", static_cast<bool>(obj.wideLines));
+ p.PrintKeyBool("largePoints", static_cast<bool>(obj.largePoints));
+ p.PrintKeyBool("alphaToOne", static_cast<bool>(obj.alphaToOne));
+ p.PrintKeyBool("multiViewport", static_cast<bool>(obj.multiViewport));
+ p.PrintKeyBool("samplerAnisotropy", static_cast<bool>(obj.samplerAnisotropy));
+ p.PrintKeyBool("textureCompressionETC2", static_cast<bool>(obj.textureCompressionETC2));
+ p.PrintKeyBool("textureCompressionASTC_LDR", static_cast<bool>(obj.textureCompressionASTC_LDR));
+ p.PrintKeyBool("textureCompressionBC", static_cast<bool>(obj.textureCompressionBC));
+ p.PrintKeyBool("occlusionQueryPrecise", static_cast<bool>(obj.occlusionQueryPrecise));
+ p.PrintKeyBool("pipelineStatisticsQuery", static_cast<bool>(obj.pipelineStatisticsQuery));
+ p.PrintKeyBool("vertexPipelineStoresAndAtomics", static_cast<bool>(obj.vertexPipelineStoresAndAtomics));
+ p.PrintKeyBool("fragmentStoresAndAtomics", static_cast<bool>(obj.fragmentStoresAndAtomics));
+ p.PrintKeyBool("shaderTessellationAndGeometryPointSize", static_cast<bool>(obj.shaderTessellationAndGeometryPointSize));
+ p.PrintKeyBool("shaderImageGatherExtended", static_cast<bool>(obj.shaderImageGatherExtended));
+ p.PrintKeyBool("shaderStorageImageExtendedFormats", static_cast<bool>(obj.shaderStorageImageExtendedFormats));
+ p.PrintKeyBool("shaderStorageImageMultisample", static_cast<bool>(obj.shaderStorageImageMultisample));
+ p.PrintKeyBool("shaderStorageImageReadWithoutFormat", static_cast<bool>(obj.shaderStorageImageReadWithoutFormat));
+ p.PrintKeyBool("shaderStorageImageWriteWithoutFormat", static_cast<bool>(obj.shaderStorageImageWriteWithoutFormat));
+ p.PrintKeyBool("shaderUniformBufferArrayDynamicIndexing", static_cast<bool>(obj.shaderUniformBufferArrayDynamicIndexing));
+ p.PrintKeyBool("shaderSampledImageArrayDynamicIndexing", static_cast<bool>(obj.shaderSampledImageArrayDynamicIndexing));
+ p.PrintKeyBool("shaderStorageBufferArrayDynamicIndexing", static_cast<bool>(obj.shaderStorageBufferArrayDynamicIndexing));
+ p.PrintKeyBool("shaderStorageImageArrayDynamicIndexing", static_cast<bool>(obj.shaderStorageImageArrayDynamicIndexing));
+ p.PrintKeyBool("shaderClipDistance", static_cast<bool>(obj.shaderClipDistance));
+ p.PrintKeyBool("shaderCullDistance", static_cast<bool>(obj.shaderCullDistance));
+ p.PrintKeyBool("shaderFloat64", static_cast<bool>(obj.shaderFloat64));
+ p.PrintKeyBool("shaderInt64", static_cast<bool>(obj.shaderInt64));
+ p.PrintKeyBool("shaderInt16", static_cast<bool>(obj.shaderInt16));
+ p.PrintKeyBool("shaderResourceResidency", static_cast<bool>(obj.shaderResourceResidency));
+ p.PrintKeyBool("shaderResourceMinLod", static_cast<bool>(obj.shaderResourceMinLod));
+ p.PrintKeyBool("sparseBinding", static_cast<bool>(obj.sparseBinding));
+ p.PrintKeyBool("sparseResidencyBuffer", static_cast<bool>(obj.sparseResidencyBuffer));
+ p.PrintKeyBool("sparseResidencyImage2D", static_cast<bool>(obj.sparseResidencyImage2D));
+ p.PrintKeyBool("sparseResidencyImage3D", static_cast<bool>(obj.sparseResidencyImage3D));
+ p.PrintKeyBool("sparseResidency2Samples", static_cast<bool>(obj.sparseResidency2Samples));
+ p.PrintKeyBool("sparseResidency4Samples", static_cast<bool>(obj.sparseResidency4Samples));
+ p.PrintKeyBool("sparseResidency8Samples", static_cast<bool>(obj.sparseResidency8Samples));
+ p.PrintKeyBool("sparseResidency16Samples", static_cast<bool>(obj.sparseResidency16Samples));
+ p.PrintKeyBool("sparseResidencyAliased", static_cast<bool>(obj.sparseResidencyAliased));
+ p.PrintKeyBool("variableMultisampleRate", static_cast<bool>(obj.variableMultisampleRate));
+ p.PrintKeyBool("inheritedQueries", static_cast<bool>(obj.inheritedQueries));
+}
+void DumpVkPhysicalDeviceFloatControlsProperties(Printer &p, std::string name, const VkPhysicalDeviceFloatControlsProperties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(37);
+ DumpVkShaderFloatControlsIndependence(p, "denormBehaviorIndependence", obj.denormBehaviorIndependence);
+ DumpVkShaderFloatControlsIndependence(p, "roundingModeIndependence", obj.roundingModeIndependence);
+ p.PrintKeyBool("shaderSignedZeroInfNanPreserveFloat16", static_cast<bool>(obj.shaderSignedZeroInfNanPreserveFloat16));
+ p.PrintKeyBool("shaderSignedZeroInfNanPreserveFloat32", static_cast<bool>(obj.shaderSignedZeroInfNanPreserveFloat32));
+ p.PrintKeyBool("shaderSignedZeroInfNanPreserveFloat64", static_cast<bool>(obj.shaderSignedZeroInfNanPreserveFloat64));
+ p.PrintKeyBool("shaderDenormPreserveFloat16", static_cast<bool>(obj.shaderDenormPreserveFloat16));
+ p.PrintKeyBool("shaderDenormPreserveFloat32", static_cast<bool>(obj.shaderDenormPreserveFloat32));
+ p.PrintKeyBool("shaderDenormPreserveFloat64", static_cast<bool>(obj.shaderDenormPreserveFloat64));
+ p.PrintKeyBool("shaderDenormFlushToZeroFloat16", static_cast<bool>(obj.shaderDenormFlushToZeroFloat16));
+ p.PrintKeyBool("shaderDenormFlushToZeroFloat32", static_cast<bool>(obj.shaderDenormFlushToZeroFloat32));
+ p.PrintKeyBool("shaderDenormFlushToZeroFloat64", static_cast<bool>(obj.shaderDenormFlushToZeroFloat64));
+ p.PrintKeyBool("shaderRoundingModeRTEFloat16", static_cast<bool>(obj.shaderRoundingModeRTEFloat16));
+ p.PrintKeyBool("shaderRoundingModeRTEFloat32", static_cast<bool>(obj.shaderRoundingModeRTEFloat32));
+ p.PrintKeyBool("shaderRoundingModeRTEFloat64", static_cast<bool>(obj.shaderRoundingModeRTEFloat64));
+ p.PrintKeyBool("shaderRoundingModeRTZFloat16", static_cast<bool>(obj.shaderRoundingModeRTZFloat16));
+ p.PrintKeyBool("shaderRoundingModeRTZFloat32", static_cast<bool>(obj.shaderRoundingModeRTZFloat32));
+ p.PrintKeyBool("shaderRoundingModeRTZFloat64", static_cast<bool>(obj.shaderRoundingModeRTZFloat64));
+}
+void DumpVkPhysicalDeviceFragmentDensityMap2FeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(26);
+ p.PrintKeyBool("fragmentDensityMapDeferred", static_cast<bool>(obj.fragmentDensityMapDeferred));
+}
+void DumpVkPhysicalDeviceFragmentDensityMap2PropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceFragmentDensityMap2PropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(41);
+ p.PrintKeyBool("subsampledLoads", static_cast<bool>(obj.subsampledLoads));
+ p.PrintKeyBool("subsampledCoarseReconstructionEarlyAccess", static_cast<bool>(obj.subsampledCoarseReconstructionEarlyAccess));
+ p.PrintKeyValue("maxSubsampledArrayLayers", obj.maxSubsampledArrayLayers);
+ p.PrintKeyValue("maxDescriptorSetSubsampledSamplers", obj.maxDescriptorSetSubsampledSamplers);
+}
+void DumpVkPhysicalDeviceFragmentDensityMapFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceFragmentDensityMapFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(37);
+ p.PrintKeyBool("fragmentDensityMap", static_cast<bool>(obj.fragmentDensityMap));
+ p.PrintKeyBool("fragmentDensityMapDynamic", static_cast<bool>(obj.fragmentDensityMapDynamic));
+ p.PrintKeyBool("fragmentDensityMapNonSubsampledImages", static_cast<bool>(obj.fragmentDensityMapNonSubsampledImages));
+}
+void DumpVkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(24);
+ p.PrintKeyBool("fragmentDensityMapOffset", static_cast<bool>(obj.fragmentDensityMapOffset));
+}
+void DumpVkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ DumpVkExtent2D(p, "fragmentDensityOffsetGranularity", obj.fragmentDensityOffsetGranularity);
+}
+void DumpVkPhysicalDeviceFragmentDensityMapPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceFragmentDensityMapPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(26);
+ DumpVkExtent2D(p, "minFragmentDensityTexelSize", obj.minFragmentDensityTexelSize);
+ DumpVkExtent2D(p, "maxFragmentDensityTexelSize", obj.maxFragmentDensityTexelSize);
+ p.PrintKeyBool("fragmentDensityInvocations", static_cast<bool>(obj.fragmentDensityInvocations));
+}
+void DumpVkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(25);
+ p.PrintKeyBool("fragmentShaderBarycentric", static_cast<bool>(obj.fragmentShaderBarycentric));
+}
+void DumpVkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(47);
+ p.PrintKeyBool("triStripVertexOrderIndependentOfProvokingVertex",
+ static_cast<bool>(obj.triStripVertexOrderIndependentOfProvokingVertex));
+}
+void DumpVkPhysicalDeviceFragmentShaderInterlockFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(34);
+ p.PrintKeyBool("fragmentShaderSampleInterlock", static_cast<bool>(obj.fragmentShaderSampleInterlock));
+ p.PrintKeyBool("fragmentShaderPixelInterlock", static_cast<bool>(obj.fragmentShaderPixelInterlock));
+ p.PrintKeyBool("fragmentShaderShadingRateInterlock", static_cast<bool>(obj.fragmentShaderShadingRateInterlock));
+}
+void DumpVkPhysicalDeviceFragmentShadingRateFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceFragmentShadingRateFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(29);
+ p.PrintKeyBool("pipelineFragmentShadingRate", static_cast<bool>(obj.pipelineFragmentShadingRate));
+ p.PrintKeyBool("primitiveFragmentShadingRate", static_cast<bool>(obj.primitiveFragmentShadingRate));
+ p.PrintKeyBool("attachmentFragmentShadingRate", static_cast<bool>(obj.attachmentFragmentShadingRate));
+}
+void DumpVkPhysicalDeviceFragmentShadingRateKHR(Printer &p, std::string name, const VkPhysicalDeviceFragmentShadingRateKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpVkSampleCountFlags(p, "sampleCounts", obj.sampleCounts);
+ DumpVkExtent2D(p, "fragmentSize", obj.fragmentSize);
+}
+void DumpVkPhysicalDeviceFragmentShadingRatePropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceFragmentShadingRatePropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(52);
+ DumpVkExtent2D(p, "minFragmentShadingRateAttachmentTexelSize", obj.minFragmentShadingRateAttachmentTexelSize);
+ DumpVkExtent2D(p, "maxFragmentShadingRateAttachmentTexelSize", obj.maxFragmentShadingRateAttachmentTexelSize);
+ p.PrintKeyValue("maxFragmentShadingRateAttachmentTexelSizeAspectRatio",
+ obj.maxFragmentShadingRateAttachmentTexelSizeAspectRatio);
+ p.PrintKeyBool("primitiveFragmentShadingRateWithMultipleViewports",
+ static_cast<bool>(obj.primitiveFragmentShadingRateWithMultipleViewports));
+ p.PrintKeyBool("layeredShadingRateAttachments", static_cast<bool>(obj.layeredShadingRateAttachments));
+ p.PrintKeyBool("fragmentShadingRateNonTrivialCombinerOps", static_cast<bool>(obj.fragmentShadingRateNonTrivialCombinerOps));
+ DumpVkExtent2D(p, "maxFragmentSize", obj.maxFragmentSize);
+ p.PrintKeyValue("maxFragmentSizeAspectRatio", obj.maxFragmentSizeAspectRatio);
+ p.PrintKeyValue("maxFragmentShadingRateCoverageSamples", obj.maxFragmentShadingRateCoverageSamples);
+ DumpVkSampleCountFlagBits(p, "maxFragmentShadingRateRasterizationSamples", obj.maxFragmentShadingRateRasterizationSamples);
+ p.PrintKeyBool("fragmentShadingRateWithShaderDepthStencilWrites",
+ static_cast<bool>(obj.fragmentShadingRateWithShaderDepthStencilWrites));
+ p.PrintKeyBool("fragmentShadingRateWithSampleMask", static_cast<bool>(obj.fragmentShadingRateWithSampleMask));
+ p.PrintKeyBool("fragmentShadingRateWithShaderSampleMask", static_cast<bool>(obj.fragmentShadingRateWithShaderSampleMask));
+ p.PrintKeyBool("fragmentShadingRateWithConservativeRasterization",
+ static_cast<bool>(obj.fragmentShadingRateWithConservativeRasterization));
+ p.PrintKeyBool("fragmentShadingRateWithFragmentShaderInterlock",
+ static_cast<bool>(obj.fragmentShadingRateWithFragmentShaderInterlock));
+ p.PrintKeyBool("fragmentShadingRateWithCustomSampleLocations",
+ static_cast<bool>(obj.fragmentShadingRateWithCustomSampleLocations));
+ p.PrintKeyBool("fragmentShadingRateStrictMultiplyCombiner", static_cast<bool>(obj.fragmentShadingRateStrictMultiplyCombiner));
+}
+void DumpVkPhysicalDeviceFrameBoundaryFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceFrameBoundaryFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(13);
+ p.PrintKeyBool("frameBoundary", static_cast<bool>(obj.frameBoundary));
+}
+void DumpVkPhysicalDeviceGlobalPriorityQueryFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceGlobalPriorityQueryFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(19);
+ p.PrintKeyBool("globalPriorityQuery", static_cast<bool>(obj.globalPriorityQuery));
+}
+void DumpVkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(23);
+ p.PrintKeyBool("graphicsPipelineLibrary", static_cast<bool>(obj.graphicsPipelineLibrary));
+}
+void DumpVkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(57);
+ p.PrintKeyBool("graphicsPipelineLibraryFastLinking", static_cast<bool>(obj.graphicsPipelineLibraryFastLinking));
+ p.PrintKeyBool("graphicsPipelineLibraryIndependentInterpolationDecoration",
+ static_cast<bool>(obj.graphicsPipelineLibraryIndependentInterpolationDecoration));
+}
+void DumpVkPhysicalDeviceHostImageCopyFeatures(Printer &p, std::string name, const VkPhysicalDeviceHostImageCopyFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(13);
+ p.PrintKeyBool("hostImageCopy", static_cast<bool>(obj.hostImageCopy));
+}
+void DumpVkPhysicalDeviceHostImageCopyProperties(Printer &p, std::string name, const VkPhysicalDeviceHostImageCopyProperties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(31);
+ p.PrintKeyValue("copySrcLayoutCount", obj.copySrcLayoutCount);
+ if (obj.copySrcLayoutCount == 0 || obj.pCopySrcLayouts == nullptr) {
+ p.PrintKeyString("pCopySrcLayouts", "NULL");
+ } else {
+ ArrayWrapper arr(p, "pCopySrcLayouts", obj.copySrcLayoutCount);
+ for (uint32_t i = 0; i < obj.copySrcLayoutCount; i++) {
+ DumpVkImageLayout(p, std::to_string(i), obj.pCopySrcLayouts[i]);
+ }
+ }
+ p.PrintKeyValue("copyDstLayoutCount", obj.copyDstLayoutCount);
+ if (obj.copyDstLayoutCount == 0 || obj.pCopyDstLayouts == nullptr) {
+ p.PrintKeyString("pCopyDstLayouts", "NULL");
+ } else {
+ ArrayWrapper arr(p, "pCopyDstLayouts", obj.copyDstLayoutCount);
+ for (uint32_t i = 0; i < obj.copyDstLayoutCount; i++) {
+ DumpVkImageLayout(p, std::to_string(i), obj.pCopyDstLayouts[i]);
+ }
+ }
+ p.PrintKeyValue("optimalTilingLayoutUUID", obj.optimalTilingLayoutUUID);
+ p.PrintKeyBool("identicalMemoryTypeRequirements", static_cast<bool>(obj.identicalMemoryTypeRequirements));
+}
+void DumpVkPhysicalDeviceHostQueryResetFeatures(Printer &p, std::string name, const VkPhysicalDeviceHostQueryResetFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(14);
+ p.PrintKeyBool("hostQueryReset", static_cast<bool>(obj.hostQueryReset));
+}
+void DumpVkPhysicalDeviceIDProperties(Printer &p, std::string name, const VkPhysicalDeviceIDProperties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(15);
+ p.PrintKeyValue("deviceUUID", obj.deviceUUID);
+ p.PrintKeyValue("driverUUID", obj.driverUUID);
+ if (obj.deviceLUIDValid) { // special case
+ p.PrintKeyValue("deviceLUID", obj.deviceLUID);
+ }
+ p.PrintKeyValue("deviceNodeMask", obj.deviceNodeMask);
+ p.PrintKeyBool("deviceLUIDValid", static_cast<bool>(obj.deviceLUIDValid));
+}
+void DumpVkPhysicalDeviceImage2DViewOf3DFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceImage2DViewOf3DFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(17);
+ p.PrintKeyBool("image2DViewOf3D", static_cast<bool>(obj.image2DViewOf3D));
+ p.PrintKeyBool("sampler2DViewOf3D", static_cast<bool>(obj.sampler2DViewOf3D));
+}
+void DumpVkPhysicalDeviceImageCompressionControlFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceImageCompressionControlFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(23);
+ p.PrintKeyBool("imageCompressionControl", static_cast<bool>(obj.imageCompressionControl));
+}
+void DumpVkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT(
+ Printer &p, std::string name, const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(32);
+ p.PrintKeyBool("imageCompressionControlSwapchain", static_cast<bool>(obj.imageCompressionControlSwapchain));
+}
+void DumpVkPhysicalDeviceImageRobustnessFeatures(Printer &p, std::string name, const VkPhysicalDeviceImageRobustnessFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(17);
+ p.PrintKeyBool("robustImageAccess", static_cast<bool>(obj.robustImageAccess));
+}
+void DumpVkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(19);
+ p.PrintKeyBool("imageSlicedViewOf3D", static_cast<bool>(obj.imageSlicedViewOf3D));
+}
+void DumpVkPhysicalDeviceImageViewMinLodFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceImageViewMinLodFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(6);
+ p.PrintKeyBool("minLod", static_cast<bool>(obj.minLod));
+}
+void DumpVkPhysicalDeviceImagelessFramebufferFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceImagelessFramebufferFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(20);
+ p.PrintKeyBool("imagelessFramebuffer", static_cast<bool>(obj.imagelessFramebuffer));
+}
+void DumpVkPhysicalDeviceIndexTypeUint8Features(Printer &p, std::string name, const VkPhysicalDeviceIndexTypeUint8Features &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(14);
+ p.PrintKeyBool("indexTypeUint8", static_cast<bool>(obj.indexTypeUint8));
+}
+void DumpVkPhysicalDeviceInlineUniformBlockFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceInlineUniformBlockFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(50);
+ p.PrintKeyBool("inlineUniformBlock", static_cast<bool>(obj.inlineUniformBlock));
+ p.PrintKeyBool("descriptorBindingInlineUniformBlockUpdateAfterBind",
+ static_cast<bool>(obj.descriptorBindingInlineUniformBlockUpdateAfterBind));
+}
+void DumpVkPhysicalDeviceInlineUniformBlockProperties(Printer &p, std::string name,
+ const VkPhysicalDeviceInlineUniformBlockProperties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(55);
+ p.PrintKeyValue("maxInlineUniformBlockSize", obj.maxInlineUniformBlockSize);
+ p.PrintKeyValue("maxPerStageDescriptorInlineUniformBlocks", obj.maxPerStageDescriptorInlineUniformBlocks);
+ p.PrintKeyValue("maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks",
+ obj.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks);
+ p.PrintKeyValue("maxDescriptorSetInlineUniformBlocks", obj.maxDescriptorSetInlineUniformBlocks);
+ p.PrintKeyValue("maxDescriptorSetUpdateAfterBindInlineUniformBlocks", obj.maxDescriptorSetUpdateAfterBindInlineUniformBlocks);
+}
+void DumpVkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR(
+ Printer &p, std::string name, const VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(28);
+ p.PrintKeyBool("internallySynchronizedQueues", static_cast<bool>(obj.internallySynchronizedQueues));
+}
+void DumpVkPhysicalDeviceLayeredApiPropertiesKHR(Printer &p, std::string name, const VkPhysicalDeviceLayeredApiPropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(10);
+ p.PrintKeyValue("vendorID", to_hex_str(p, obj.vendorID));
+ p.PrintKeyValue("deviceID", to_hex_str(p, obj.deviceID));
+ DumpVkPhysicalDeviceLayeredApiKHR(p, "layeredAPI", obj.layeredAPI);
+ p.PrintKeyString("deviceName", obj.deviceName);
+}
+void DumpVkPhysicalDeviceLayeredApiPropertiesListKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceLayeredApiPropertiesListKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(15);
+ p.PrintKeyValue("layeredApiCount", obj.layeredApiCount);
+ if (obj.layeredApiCount == 0 || obj.pLayeredApis == nullptr) {
+ p.PrintKeyString("pLayeredApis", "NULL");
+ } else {
+ ArrayWrapper arr(p, "pLayeredApis", obj.layeredApiCount);
+ for (uint32_t i = 0; i < obj.layeredApiCount; i++) {
+ DumpVkPhysicalDeviceLayeredApiPropertiesKHR(p, std::to_string(i), obj.pLayeredApis[i]);
+ }
+ }
+}
+void DumpVkPhysicalDeviceLegacyDitheringFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceLegacyDitheringFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(15);
+ p.PrintKeyBool("legacyDithering", static_cast<bool>(obj.legacyDithering));
+}
+void DumpVkPhysicalDeviceLegacyVertexAttributesFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(22);
+ p.PrintKeyBool("legacyVertexAttributes", static_cast<bool>(obj.legacyVertexAttributes));
+}
+void DumpVkPhysicalDeviceLegacyVertexAttributesPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(26);
+ p.PrintKeyBool("nativeUnalignedPerformance", static_cast<bool>(obj.nativeUnalignedPerformance));
+}
+void DumpVkPhysicalDeviceLimits(Printer &p, std::string name, const VkPhysicalDeviceLimits &obj) {
+ if (p.Type() == OutputType::json)
+ p.ObjectStart("limits");
+ else
+ p.SetSubHeader().ObjectStart(name);
+ p.SetMinKeyWidth(47);
+ p.PrintKeyValue("maxImageDimension1D", obj.maxImageDimension1D);
+ p.PrintKeyValue("maxImageDimension2D", obj.maxImageDimension2D);
+ p.PrintKeyValue("maxImageDimension3D", obj.maxImageDimension3D);
+ p.PrintKeyValue("maxImageDimensionCube", obj.maxImageDimensionCube);
+ p.PrintKeyValue("maxImageArrayLayers", obj.maxImageArrayLayers);
+ p.PrintKeyValue("maxTexelBufferElements", obj.maxTexelBufferElements);
+ p.PrintKeyValue("maxUniformBufferRange", obj.maxUniformBufferRange);
+ p.PrintKeyValue("maxStorageBufferRange", obj.maxStorageBufferRange);
+ p.PrintKeyValue("maxPushConstantsSize", obj.maxPushConstantsSize);
+ p.PrintKeyValue("maxMemoryAllocationCount", obj.maxMemoryAllocationCount);
+ p.PrintKeyValue("maxSamplerAllocationCount", obj.maxSamplerAllocationCount);
+ p.PrintKeyValue("bufferImageGranularity", to_hex_str(p, obj.bufferImageGranularity));
+ p.PrintKeyValue("sparseAddressSpaceSize", to_hex_str(p, obj.sparseAddressSpaceSize));
+ p.PrintKeyValue("maxBoundDescriptorSets", obj.maxBoundDescriptorSets);
+ p.PrintKeyValue("maxPerStageDescriptorSamplers", obj.maxPerStageDescriptorSamplers);
+ p.PrintKeyValue("maxPerStageDescriptorUniformBuffers", obj.maxPerStageDescriptorUniformBuffers);
+ p.PrintKeyValue("maxPerStageDescriptorStorageBuffers", obj.maxPerStageDescriptorStorageBuffers);
+ p.PrintKeyValue("maxPerStageDescriptorSampledImages", obj.maxPerStageDescriptorSampledImages);
+ p.PrintKeyValue("maxPerStageDescriptorStorageImages", obj.maxPerStageDescriptorStorageImages);
+ p.PrintKeyValue("maxPerStageDescriptorInputAttachments", obj.maxPerStageDescriptorInputAttachments);
+ p.PrintKeyValue("maxPerStageResources", obj.maxPerStageResources);
+ p.PrintKeyValue("maxDescriptorSetSamplers", obj.maxDescriptorSetSamplers);
+ p.PrintKeyValue("maxDescriptorSetUniformBuffers", obj.maxDescriptorSetUniformBuffers);
+ p.PrintKeyValue("maxDescriptorSetUniformBuffersDynamic", obj.maxDescriptorSetUniformBuffersDynamic);
+ p.PrintKeyValue("maxDescriptorSetStorageBuffers", obj.maxDescriptorSetStorageBuffers);
+ p.PrintKeyValue("maxDescriptorSetStorageBuffersDynamic", obj.maxDescriptorSetStorageBuffersDynamic);
+ p.PrintKeyValue("maxDescriptorSetSampledImages", obj.maxDescriptorSetSampledImages);
+ p.PrintKeyValue("maxDescriptorSetStorageImages", obj.maxDescriptorSetStorageImages);
+ p.PrintKeyValue("maxDescriptorSetInputAttachments", obj.maxDescriptorSetInputAttachments);
+ p.PrintKeyValue("maxVertexInputAttributes", obj.maxVertexInputAttributes);
+ p.PrintKeyValue("maxVertexInputBindings", obj.maxVertexInputBindings);
+ p.PrintKeyValue("maxVertexInputAttributeOffset", obj.maxVertexInputAttributeOffset);
+ p.PrintKeyValue("maxVertexInputBindingStride", obj.maxVertexInputBindingStride);
+ p.PrintKeyValue("maxVertexOutputComponents", obj.maxVertexOutputComponents);
+ p.PrintKeyValue("maxTessellationGenerationLevel", obj.maxTessellationGenerationLevel);
+ p.PrintKeyValue("maxTessellationPatchSize", obj.maxTessellationPatchSize);
+ p.PrintKeyValue("maxTessellationControlPerVertexInputComponents", obj.maxTessellationControlPerVertexInputComponents);
+ p.PrintKeyValue("maxTessellationControlPerVertexOutputComponents", obj.maxTessellationControlPerVertexOutputComponents);
+ p.PrintKeyValue("maxTessellationControlPerPatchOutputComponents", obj.maxTessellationControlPerPatchOutputComponents);
+ p.PrintKeyValue("maxTessellationControlTotalOutputComponents", obj.maxTessellationControlTotalOutputComponents);
+ p.PrintKeyValue("maxTessellationEvaluationInputComponents", obj.maxTessellationEvaluationInputComponents);
+ p.PrintKeyValue("maxTessellationEvaluationOutputComponents", obj.maxTessellationEvaluationOutputComponents);
+ p.PrintKeyValue("maxGeometryShaderInvocations", obj.maxGeometryShaderInvocations);
+ p.PrintKeyValue("maxGeometryInputComponents", obj.maxGeometryInputComponents);
+ p.PrintKeyValue("maxGeometryOutputComponents", obj.maxGeometryOutputComponents);
+ p.PrintKeyValue("maxGeometryOutputVertices", obj.maxGeometryOutputVertices);
+ p.PrintKeyValue("maxGeometryTotalOutputComponents", obj.maxGeometryTotalOutputComponents);
+ p.PrintKeyValue("maxFragmentInputComponents", obj.maxFragmentInputComponents);
+ p.PrintKeyValue("maxFragmentOutputAttachments", obj.maxFragmentOutputAttachments);
+ p.PrintKeyValue("maxFragmentDualSrcAttachments", obj.maxFragmentDualSrcAttachments);
+ p.PrintKeyValue("maxFragmentCombinedOutputResources", obj.maxFragmentCombinedOutputResources);
+ p.PrintKeyValue("maxComputeSharedMemorySize", obj.maxComputeSharedMemorySize);
+ {
+ ArrayWrapper arr(p, "maxComputeWorkGroupCount", 3);
+ for (uint32_t i = 0; i < 3; i++) {
+ p.PrintElement(obj.maxComputeWorkGroupCount[i]);
+ }
+ }
+ p.PrintKeyValue("maxComputeWorkGroupInvocations", obj.maxComputeWorkGroupInvocations);
+ {
+ ArrayWrapper arr(p, "maxComputeWorkGroupSize", 3);
+ for (uint32_t i = 0; i < 3; i++) {
+ p.PrintElement(obj.maxComputeWorkGroupSize[i]);
+ }
+ }
+ p.PrintKeyValue("subPixelPrecisionBits", obj.subPixelPrecisionBits);
+ p.PrintKeyValue("subTexelPrecisionBits", obj.subTexelPrecisionBits);
+ p.PrintKeyValue("mipmapPrecisionBits", obj.mipmapPrecisionBits);
+ p.PrintKeyValue("maxDrawIndexedIndexValue", obj.maxDrawIndexedIndexValue);
+ p.PrintKeyValue("maxDrawIndirectCount", obj.maxDrawIndirectCount);
+ p.PrintKeyValue("maxSamplerLodBias", obj.maxSamplerLodBias);
+ p.PrintKeyValue("maxSamplerAnisotropy", obj.maxSamplerAnisotropy);
+ p.PrintKeyValue("maxViewports", obj.maxViewports);
+ {
+ ArrayWrapper arr(p, "maxViewportDimensions", 2);
+ for (uint32_t i = 0; i < 2; i++) {
+ p.PrintElement(obj.maxViewportDimensions[i]);
+ }
+ }
+ {
+ ArrayWrapper arr(p, "viewportBoundsRange", 2);
+ for (uint32_t i = 0; i < 2; i++) {
+ p.PrintElement(obj.viewportBoundsRange[i]);
+ }
+ }
+ p.PrintKeyValue("viewportSubPixelBits", obj.viewportSubPixelBits);
+ p.PrintKeyValue("minMemoryMapAlignment", obj.minMemoryMapAlignment);
+ p.PrintKeyValue("minTexelBufferOffsetAlignment", to_hex_str(p, obj.minTexelBufferOffsetAlignment));
+ p.PrintKeyValue("minUniformBufferOffsetAlignment", to_hex_str(p, obj.minUniformBufferOffsetAlignment));
+ p.PrintKeyValue("minStorageBufferOffsetAlignment", to_hex_str(p, obj.minStorageBufferOffsetAlignment));
+ p.PrintKeyValue("minTexelOffset", obj.minTexelOffset);
+ p.PrintKeyValue("maxTexelOffset", obj.maxTexelOffset);
+ p.PrintKeyValue("minTexelGatherOffset", obj.minTexelGatherOffset);
+ p.PrintKeyValue("maxTexelGatherOffset", obj.maxTexelGatherOffset);
+ p.PrintKeyValue("minInterpolationOffset", obj.minInterpolationOffset);
+ p.PrintKeyValue("maxInterpolationOffset", obj.maxInterpolationOffset);
+ p.PrintKeyValue("subPixelInterpolationOffsetBits", obj.subPixelInterpolationOffsetBits);
+ p.PrintKeyValue("maxFramebufferWidth", obj.maxFramebufferWidth);
+ p.PrintKeyValue("maxFramebufferHeight", obj.maxFramebufferHeight);
+ p.PrintKeyValue("maxFramebufferLayers", obj.maxFramebufferLayers);
+ DumpVkSampleCountFlags(p, "framebufferColorSampleCounts", obj.framebufferColorSampleCounts);
+ DumpVkSampleCountFlags(p, "framebufferDepthSampleCounts", obj.framebufferDepthSampleCounts);
+ DumpVkSampleCountFlags(p, "framebufferStencilSampleCounts", obj.framebufferStencilSampleCounts);
+ DumpVkSampleCountFlags(p, "framebufferNoAttachmentsSampleCounts", obj.framebufferNoAttachmentsSampleCounts);
+ p.PrintKeyValue("maxColorAttachments", obj.maxColorAttachments);
+ DumpVkSampleCountFlags(p, "sampledImageColorSampleCounts", obj.sampledImageColorSampleCounts);
+ DumpVkSampleCountFlags(p, "sampledImageIntegerSampleCounts", obj.sampledImageIntegerSampleCounts);
+ DumpVkSampleCountFlags(p, "sampledImageDepthSampleCounts", obj.sampledImageDepthSampleCounts);
+ DumpVkSampleCountFlags(p, "sampledImageStencilSampleCounts", obj.sampledImageStencilSampleCounts);
+ DumpVkSampleCountFlags(p, "storageImageSampleCounts", obj.storageImageSampleCounts);
+ p.PrintKeyValue("maxSampleMaskWords", obj.maxSampleMaskWords);
+ p.PrintKeyBool("timestampComputeAndGraphics", static_cast<bool>(obj.timestampComputeAndGraphics));
+ p.PrintKeyValue("timestampPeriod", obj.timestampPeriod);
+ p.PrintKeyValue("maxClipDistances", obj.maxClipDistances);
+ p.PrintKeyValue("maxCullDistances", obj.maxCullDistances);
+ p.PrintKeyValue("maxCombinedClipAndCullDistances", obj.maxCombinedClipAndCullDistances);
+ p.PrintKeyValue("discreteQueuePriorities", obj.discreteQueuePriorities);
+ {
+ ArrayWrapper arr(p, "pointSizeRange", 2);
+ for (uint32_t i = 0; i < 2; i++) {
+ p.PrintElement(obj.pointSizeRange[i]);
+ }
+ }
+ {
+ ArrayWrapper arr(p, "lineWidthRange", 2);
+ for (uint32_t i = 0; i < 2; i++) {
+ p.PrintElement(obj.lineWidthRange[i]);
+ }
+ }
+ p.PrintKeyValue("pointSizeGranularity", obj.pointSizeGranularity);
+ p.PrintKeyValue("lineWidthGranularity", obj.lineWidthGranularity);
+ p.PrintKeyBool("strictLines", static_cast<bool>(obj.strictLines));
+ p.PrintKeyBool("standardSampleLocations", static_cast<bool>(obj.standardSampleLocations));
+ p.PrintKeyValue("optimalBufferCopyOffsetAlignment", to_hex_str(p, obj.optimalBufferCopyOffsetAlignment));
+ p.PrintKeyValue("optimalBufferCopyRowPitchAlignment", to_hex_str(p, obj.optimalBufferCopyRowPitchAlignment));
+ p.PrintKeyValue("nonCoherentAtomSize", to_hex_str(p, obj.nonCoherentAtomSize));
+ p.ObjectEnd();
+}
+void DumpVkPhysicalDeviceLineRasterizationFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceLineRasterizationFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(24);
+ p.PrintKeyBool("rectangularLines", static_cast<bool>(obj.rectangularLines));
+ p.PrintKeyBool("bresenhamLines", static_cast<bool>(obj.bresenhamLines));
+ p.PrintKeyBool("smoothLines", static_cast<bool>(obj.smoothLines));
+ p.PrintKeyBool("stippledRectangularLines", static_cast<bool>(obj.stippledRectangularLines));
+ p.PrintKeyBool("stippledBresenhamLines", static_cast<bool>(obj.stippledBresenhamLines));
+ p.PrintKeyBool("stippledSmoothLines", static_cast<bool>(obj.stippledSmoothLines));
+}
+void DumpVkPhysicalDeviceLineRasterizationProperties(Printer &p, std::string name,
+ const VkPhysicalDeviceLineRasterizationProperties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(25);
+ p.PrintKeyValue("lineSubPixelPrecisionBits", obj.lineSubPixelPrecisionBits);
+}
+void DumpVkPhysicalDeviceMaintenance10FeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceMaintenance10FeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(13);
+ p.PrintKeyBool("maintenance10", static_cast<bool>(obj.maintenance10));
+}
+void DumpVkPhysicalDeviceMaintenance10PropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceMaintenance10PropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(48);
+ p.PrintKeyBool("rgba4OpaqueBlackSwizzled", static_cast<bool>(obj.rgba4OpaqueBlackSwizzled));
+ p.PrintKeyBool("resolveSrgbFormatAppliesTransferFunction", static_cast<bool>(obj.resolveSrgbFormatAppliesTransferFunction));
+ p.PrintKeyBool("resolveSrgbFormatSupportsTransferFunctionControl",
+ static_cast<bool>(obj.resolveSrgbFormatSupportsTransferFunctionControl));
+}
+void DumpVkPhysicalDeviceMaintenance3Properties(Printer &p, std::string name, const VkPhysicalDeviceMaintenance3Properties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(23);
+ p.PrintKeyValue("maxPerSetDescriptors", obj.maxPerSetDescriptors);
+ p.PrintKeyValue("maxMemoryAllocationSize", to_hex_str(p, obj.maxMemoryAllocationSize));
+}
+void DumpVkPhysicalDeviceMaintenance4Features(Printer &p, std::string name, const VkPhysicalDeviceMaintenance4Features &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(12);
+ p.PrintKeyBool("maintenance4", static_cast<bool>(obj.maintenance4));
+}
+void DumpVkPhysicalDeviceMaintenance4Properties(Printer &p, std::string name, const VkPhysicalDeviceMaintenance4Properties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(13);
+ p.PrintKeyValue("maxBufferSize", to_hex_str(p, obj.maxBufferSize));
+}
+void DumpVkPhysicalDeviceMaintenance5Features(Printer &p, std::string name, const VkPhysicalDeviceMaintenance5Features &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(12);
+ p.PrintKeyBool("maintenance5", static_cast<bool>(obj.maintenance5));
+}
+void DumpVkPhysicalDeviceMaintenance5Properties(Printer &p, std::string name, const VkPhysicalDeviceMaintenance5Properties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(51);
+ p.PrintKeyBool("earlyFragmentMultisampleCoverageAfterSampleCounting",
+ static_cast<bool>(obj.earlyFragmentMultisampleCoverageAfterSampleCounting));
+ p.PrintKeyBool("earlyFragmentSampleMaskTestBeforeSampleCounting",
+ static_cast<bool>(obj.earlyFragmentSampleMaskTestBeforeSampleCounting));
+ p.PrintKeyBool("depthStencilSwizzleOneSupport", static_cast<bool>(obj.depthStencilSwizzleOneSupport));
+ p.PrintKeyBool("polygonModePointSize", static_cast<bool>(obj.polygonModePointSize));
+ p.PrintKeyBool("nonStrictSinglePixelWideLinesUseParallelogram",
+ static_cast<bool>(obj.nonStrictSinglePixelWideLinesUseParallelogram));
+ p.PrintKeyBool("nonStrictWideLinesUseParallelogram", static_cast<bool>(obj.nonStrictWideLinesUseParallelogram));
+}
+void DumpVkPhysicalDeviceMaintenance6Features(Printer &p, std::string name, const VkPhysicalDeviceMaintenance6Features &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(12);
+ p.PrintKeyBool("maintenance6", static_cast<bool>(obj.maintenance6));
+}
+void DumpVkPhysicalDeviceMaintenance6Properties(Printer &p, std::string name, const VkPhysicalDeviceMaintenance6Properties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(38);
+ p.PrintKeyBool("blockTexelViewCompatibleMultipleLayers", static_cast<bool>(obj.blockTexelViewCompatibleMultipleLayers));
+ p.PrintKeyValue("maxCombinedImageSamplerDescriptorCount", obj.maxCombinedImageSamplerDescriptorCount);
+ p.PrintKeyBool("fragmentShadingRateClampCombinerInputs", static_cast<bool>(obj.fragmentShadingRateClampCombinerInputs));
+}
+void DumpVkPhysicalDeviceMaintenance7FeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceMaintenance7FeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(12);
+ p.PrintKeyBool("maintenance7", static_cast<bool>(obj.maintenance7));
+}
+void DumpVkPhysicalDeviceMaintenance7PropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceMaintenance7PropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(57);
+ p.PrintKeyBool("robustFragmentShadingRateAttachmentAccess", static_cast<bool>(obj.robustFragmentShadingRateAttachmentAccess));
+ p.PrintKeyBool("separateDepthStencilAttachmentAccess", static_cast<bool>(obj.separateDepthStencilAttachmentAccess));
+ p.PrintKeyValue("maxDescriptorSetTotalUniformBuffersDynamic", obj.maxDescriptorSetTotalUniformBuffersDynamic);
+ p.PrintKeyValue("maxDescriptorSetTotalStorageBuffersDynamic", obj.maxDescriptorSetTotalStorageBuffersDynamic);
+ p.PrintKeyValue("maxDescriptorSetTotalBuffersDynamic", obj.maxDescriptorSetTotalBuffersDynamic);
+ p.PrintKeyValue("maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic",
+ obj.maxDescriptorSetUpdateAfterBindTotalUniformBuffersDynamic);
+ p.PrintKeyValue("maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic",
+ obj.maxDescriptorSetUpdateAfterBindTotalStorageBuffersDynamic);
+ p.PrintKeyValue("maxDescriptorSetUpdateAfterBindTotalBuffersDynamic", obj.maxDescriptorSetUpdateAfterBindTotalBuffersDynamic);
+}
+void DumpVkPhysicalDeviceMaintenance8FeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceMaintenance8FeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(12);
+ p.PrintKeyBool("maintenance8", static_cast<bool>(obj.maintenance8));
+}
+void DumpVkPhysicalDeviceMaintenance9FeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceMaintenance9FeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(12);
+ p.PrintKeyBool("maintenance9", static_cast<bool>(obj.maintenance9));
+}
+void DumpVkPhysicalDeviceMaintenance9PropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceMaintenance9PropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(21);
+ p.PrintKeyBool("image2DViewOf3DSparse", static_cast<bool>(obj.image2DViewOf3DSparse));
+ DumpVkDefaultVertexAttributeValueKHR(p, "defaultVertexAttributeValue", obj.defaultVertexAttributeValue);
+}
+void DumpVkPhysicalDeviceMapMemoryPlacedFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceMapMemoryPlacedFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(20);
+ p.PrintKeyBool("memoryMapPlaced", static_cast<bool>(obj.memoryMapPlaced));
+ p.PrintKeyBool("memoryMapRangePlaced", static_cast<bool>(obj.memoryMapRangePlaced));
+ p.PrintKeyBool("memoryUnmapReserve", static_cast<bool>(obj.memoryUnmapReserve));
+}
+void DumpVkPhysicalDeviceMapMemoryPlacedPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceMapMemoryPlacedPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(27);
+ p.PrintKeyValue("minPlacedMemoryMapAlignment", to_hex_str(p, obj.minPlacedMemoryMapAlignment));
+}
+void DumpVkPhysicalDeviceMemoryBudgetPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceMemoryBudgetPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ {
+ ArrayWrapper arr(p, "heapBudget", VK_MAX_MEMORY_HEAPS);
+ for (uint32_t i = 0; i < VK_MAX_MEMORY_HEAPS; i++) {
+ p.PrintElement(obj.heapBudget[i]);
+ }
+ }
+ {
+ ArrayWrapper arr(p, "heapUsage", VK_MAX_MEMORY_HEAPS);
+ for (uint32_t i = 0; i < VK_MAX_MEMORY_HEAPS; i++) {
+ p.PrintElement(obj.heapUsage[i]);
+ }
+ }
+}
+void DumpVkPhysicalDeviceMemoryDecompressionFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceMemoryDecompressionFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(19);
+ p.PrintKeyBool("memoryDecompression", static_cast<bool>(obj.memoryDecompression));
+}
+void DumpVkPhysicalDeviceMemoryDecompressionPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceMemoryDecompressionPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(29);
+ DumpVkMemoryDecompressionMethodFlagsEXT(p, "decompressionMethods", obj.decompressionMethods);
+ p.PrintKeyValue("maxDecompressionIndirectCount", obj.maxDecompressionIndirectCount);
+}
+void DumpVkPhysicalDeviceMemoryPriorityFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceMemoryPriorityFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(14);
+ p.PrintKeyBool("memoryPriority", static_cast<bool>(obj.memoryPriority));
+}
+void DumpVkPhysicalDeviceMeshShaderFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceMeshShaderFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(38);
+ p.PrintKeyBool("taskShader", static_cast<bool>(obj.taskShader));
+ p.PrintKeyBool("meshShader", static_cast<bool>(obj.meshShader));
+ p.PrintKeyBool("multiviewMeshShader", static_cast<bool>(obj.multiviewMeshShader));
+ p.PrintKeyBool("primitiveFragmentShadingRateMeshShader", static_cast<bool>(obj.primitiveFragmentShadingRateMeshShader));
+ p.PrintKeyBool("meshShaderQueries", static_cast<bool>(obj.meshShaderQueries));
+}
+void DumpVkPhysicalDeviceMeshShaderPropertiesEXT(Printer &p, std::string name, const VkPhysicalDeviceMeshShaderPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(37);
+ p.PrintKeyValue("maxTaskWorkGroupTotalCount", obj.maxTaskWorkGroupTotalCount);
+ {
+ ArrayWrapper arr(p, "maxTaskWorkGroupCount", 3);
+ for (uint32_t i = 0; i < 3; i++) {
+ p.PrintElement(obj.maxTaskWorkGroupCount[i]);
+ }
+ }
+ p.PrintKeyValue("maxTaskWorkGroupInvocations", obj.maxTaskWorkGroupInvocations);
+ {
+ ArrayWrapper arr(p, "maxTaskWorkGroupSize", 3);
+ for (uint32_t i = 0; i < 3; i++) {
+ p.PrintElement(obj.maxTaskWorkGroupSize[i]);
+ }
+ }
+ p.PrintKeyValue("maxTaskPayloadSize", obj.maxTaskPayloadSize);
+ p.PrintKeyValue("maxTaskSharedMemorySize", obj.maxTaskSharedMemorySize);
+ p.PrintKeyValue("maxTaskPayloadAndSharedMemorySize", obj.maxTaskPayloadAndSharedMemorySize);
+ p.PrintKeyValue("maxMeshWorkGroupTotalCount", obj.maxMeshWorkGroupTotalCount);
+ {
+ ArrayWrapper arr(p, "maxMeshWorkGroupCount", 3);
+ for (uint32_t i = 0; i < 3; i++) {
+ p.PrintElement(obj.maxMeshWorkGroupCount[i]);
+ }
+ }
+ p.PrintKeyValue("maxMeshWorkGroupInvocations", obj.maxMeshWorkGroupInvocations);
+ {
+ ArrayWrapper arr(p, "maxMeshWorkGroupSize", 3);
+ for (uint32_t i = 0; i < 3; i++) {
+ p.PrintElement(obj.maxMeshWorkGroupSize[i]);
+ }
+ }
+ p.PrintKeyValue("maxMeshSharedMemorySize", obj.maxMeshSharedMemorySize);
+ p.PrintKeyValue("maxMeshPayloadAndSharedMemorySize", obj.maxMeshPayloadAndSharedMemorySize);
+ p.PrintKeyValue("maxMeshOutputMemorySize", obj.maxMeshOutputMemorySize);
+ p.PrintKeyValue("maxMeshPayloadAndOutputMemorySize", obj.maxMeshPayloadAndOutputMemorySize);
+ p.PrintKeyValue("maxMeshOutputComponents", obj.maxMeshOutputComponents);
+ p.PrintKeyValue("maxMeshOutputVertices", obj.maxMeshOutputVertices);
+ p.PrintKeyValue("maxMeshOutputPrimitives", obj.maxMeshOutputPrimitives);
+ p.PrintKeyValue("maxMeshOutputLayers", obj.maxMeshOutputLayers);
+ p.PrintKeyValue("maxMeshMultiviewViewCount", obj.maxMeshMultiviewViewCount);
+ p.PrintKeyValue("meshOutputPerVertexGranularity", obj.meshOutputPerVertexGranularity);
+ p.PrintKeyValue("meshOutputPerPrimitiveGranularity", obj.meshOutputPerPrimitiveGranularity);
+ p.PrintKeyValue("maxPreferredTaskWorkGroupInvocations", obj.maxPreferredTaskWorkGroupInvocations);
+ p.PrintKeyValue("maxPreferredMeshWorkGroupInvocations", obj.maxPreferredMeshWorkGroupInvocations);
+ p.PrintKeyBool("prefersLocalInvocationVertexOutput", static_cast<bool>(obj.prefersLocalInvocationVertexOutput));
+ p.PrintKeyBool("prefersLocalInvocationPrimitiveOutput", static_cast<bool>(obj.prefersLocalInvocationPrimitiveOutput));
+ p.PrintKeyBool("prefersCompactVertexOutput", static_cast<bool>(obj.prefersCompactVertexOutput));
+ p.PrintKeyBool("prefersCompactPrimitiveOutput", static_cast<bool>(obj.prefersCompactPrimitiveOutput));
+}
+void DumpVkPhysicalDeviceMultiDrawFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceMultiDrawFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(9);
+ p.PrintKeyBool("multiDraw", static_cast<bool>(obj.multiDraw));
+}
+void DumpVkPhysicalDeviceMultiDrawPropertiesEXT(Printer &p, std::string name, const VkPhysicalDeviceMultiDrawPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(17);
+ p.PrintKeyValue("maxMultiDrawCount", obj.maxMultiDrawCount);
+}
+void DumpVkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT(
+ Printer &p, std::string name, const VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(33);
+ p.PrintKeyBool("multisampledRenderToSingleSampled", static_cast<bool>(obj.multisampledRenderToSingleSampled));
+}
+void DumpVkPhysicalDeviceMultiviewFeatures(Printer &p, std::string name, const VkPhysicalDeviceMultiviewFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(27);
+ p.PrintKeyBool("multiview", static_cast<bool>(obj.multiview));
+ p.PrintKeyBool("multiviewGeometryShader", static_cast<bool>(obj.multiviewGeometryShader));
+ p.PrintKeyBool("multiviewTessellationShader", static_cast<bool>(obj.multiviewTessellationShader));
+}
+void DumpVkPhysicalDeviceMultiviewProperties(Printer &p, std::string name, const VkPhysicalDeviceMultiviewProperties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(25);
+ p.PrintKeyValue("maxMultiviewViewCount", obj.maxMultiviewViewCount);
+ p.PrintKeyValue("maxMultiviewInstanceIndex", obj.maxMultiviewInstanceIndex);
+}
+void DumpVkPhysicalDeviceMutableDescriptorTypeFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(21);
+ p.PrintKeyBool("mutableDescriptorType", static_cast<bool>(obj.mutableDescriptorType));
+}
+void DumpVkPhysicalDeviceNestedCommandBufferFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceNestedCommandBufferFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(34);
+ p.PrintKeyBool("nestedCommandBuffer", static_cast<bool>(obj.nestedCommandBuffer));
+ p.PrintKeyBool("nestedCommandBufferRendering", static_cast<bool>(obj.nestedCommandBufferRendering));
+ p.PrintKeyBool("nestedCommandBufferSimultaneousUse", static_cast<bool>(obj.nestedCommandBufferSimultaneousUse));
+}
+void DumpVkPhysicalDeviceNestedCommandBufferPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceNestedCommandBufferPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(28);
+ p.PrintKeyValue("maxCommandBufferNestingLevel", obj.maxCommandBufferNestingLevel);
+}
+void DumpVkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(18);
+ p.PrintKeyBool("nonSeamlessCubeMap", static_cast<bool>(obj.nonSeamlessCubeMap));
+}
+void DumpVkPhysicalDeviceOpacityMicromapFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceOpacityMicromapFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(21);
+ p.PrintKeyBool("micromap", static_cast<bool>(obj.micromap));
+ p.PrintKeyBool("micromapCaptureReplay", static_cast<bool>(obj.micromapCaptureReplay));
+ p.PrintKeyBool("micromapHostCommands", static_cast<bool>(obj.micromapHostCommands));
+}
+void DumpVkPhysicalDeviceOpacityMicromapPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceOpacityMicromapPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(32);
+ p.PrintKeyValue("maxOpacity2StateSubdivisionLevel", obj.maxOpacity2StateSubdivisionLevel);
+ p.PrintKeyValue("maxOpacity4StateSubdivisionLevel", obj.maxOpacity4StateSubdivisionLevel);
+}
+void DumpVkPhysicalDevicePCIBusInfoPropertiesEXT(Printer &p, std::string name, const VkPhysicalDevicePCIBusInfoPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(11);
+ p.PrintKeyValue("pciDomain", obj.pciDomain);
+ p.PrintKeyValue("pciBus", obj.pciBus);
+ p.PrintKeyValue("pciDevice", obj.pciDevice);
+ p.PrintKeyValue("pciFunction", obj.pciFunction);
+}
+void DumpVkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(25);
+ p.PrintKeyBool("pageableDeviceLocalMemory", static_cast<bool>(obj.pageableDeviceLocalMemory));
+}
+void DumpVkPhysicalDevicePerformanceQueryFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDevicePerformanceQueryFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(36);
+ p.PrintKeyBool("performanceCounterQueryPools", static_cast<bool>(obj.performanceCounterQueryPools));
+ p.PrintKeyBool("performanceCounterMultipleQueryPools", static_cast<bool>(obj.performanceCounterMultipleQueryPools));
+}
+void DumpVkPhysicalDevicePerformanceQueryPropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDevicePerformanceQueryPropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(29);
+ p.PrintKeyBool("allowCommandBufferQueryCopies", static_cast<bool>(obj.allowCommandBufferQueryCopies));
+}
+void DumpVkPhysicalDevicePipelineBinaryFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDevicePipelineBinaryFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(16);
+ p.PrintKeyBool("pipelineBinaries", static_cast<bool>(obj.pipelineBinaries));
+}
+void DumpVkPhysicalDevicePipelineBinaryPropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDevicePipelineBinaryPropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(38);
+ p.PrintKeyBool("pipelineBinaryInternalCache", static_cast<bool>(obj.pipelineBinaryInternalCache));
+ p.PrintKeyBool("pipelineBinaryInternalCacheControl", static_cast<bool>(obj.pipelineBinaryInternalCacheControl));
+ p.PrintKeyBool("pipelineBinaryPrefersInternalCache", static_cast<bool>(obj.pipelineBinaryPrefersInternalCache));
+ p.PrintKeyBool("pipelineBinaryPrecompiledInternalCache", static_cast<bool>(obj.pipelineBinaryPrecompiledInternalCache));
+ p.PrintKeyBool("pipelineBinaryCompressedData", static_cast<bool>(obj.pipelineBinaryCompressedData));
+}
+void DumpVkPhysicalDevicePipelineCreationCacheControlFeatures(Printer &p, std::string name,
+ const VkPhysicalDevicePipelineCreationCacheControlFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(28);
+ p.PrintKeyBool("pipelineCreationCacheControl", static_cast<bool>(obj.pipelineCreationCacheControl));
+}
+void DumpVkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR(
+ Printer &p, std::string name, const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(22);
+ p.PrintKeyBool("pipelineExecutableInfo", static_cast<bool>(obj.pipelineExecutableInfo));
+}
+void DumpVkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(27);
+ p.PrintKeyBool("pipelineLibraryGroupHandles", static_cast<bool>(obj.pipelineLibraryGroupHandles));
+}
+void DumpVkPhysicalDevicePipelinePropertiesFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDevicePipelinePropertiesFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(28);
+ p.PrintKeyBool("pipelinePropertiesIdentifier", static_cast<bool>(obj.pipelinePropertiesIdentifier));
+}
+void DumpVkPhysicalDevicePipelineProtectedAccessFeatures(Printer &p, std::string name,
+ const VkPhysicalDevicePipelineProtectedAccessFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(23);
+ p.PrintKeyBool("pipelineProtectedAccess", static_cast<bool>(obj.pipelineProtectedAccess));
+}
+void DumpVkPhysicalDevicePipelineRobustnessFeatures(Printer &p, std::string name,
+ const VkPhysicalDevicePipelineRobustnessFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(18);
+ p.PrintKeyBool("pipelineRobustness", static_cast<bool>(obj.pipelineRobustness));
+}
+void DumpVkPhysicalDevicePipelineRobustnessProperties(Printer &p, std::string name,
+ const VkPhysicalDevicePipelineRobustnessProperties &obj) {
+ ObjectWrapper object{p, name};
+ DumpVkPipelineRobustnessBufferBehavior(p, "defaultRobustnessStorageBuffers", obj.defaultRobustnessStorageBuffers);
+ DumpVkPipelineRobustnessBufferBehavior(p, "defaultRobustnessUniformBuffers", obj.defaultRobustnessUniformBuffers);
+ DumpVkPipelineRobustnessBufferBehavior(p, "defaultRobustnessVertexInputs", obj.defaultRobustnessVertexInputs);
+ DumpVkPipelineRobustnessImageBehavior(p, "defaultRobustnessImages", obj.defaultRobustnessImages);
+}
+void DumpVkPhysicalDevicePointClippingProperties(Printer &p, std::string name, const VkPhysicalDevicePointClippingProperties &obj) {
+ ObjectWrapper object{p, name};
+ DumpVkPointClippingBehavior(p, "pointClippingBehavior", obj.pointClippingBehavior);
+}
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+void DumpVkPhysicalDevicePortabilitySubsetFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDevicePortabilitySubsetFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(38);
+ p.PrintKeyBool("constantAlphaColorBlendFactors", static_cast<bool>(obj.constantAlphaColorBlendFactors));
+ p.PrintKeyBool("events", static_cast<bool>(obj.events));
+ p.PrintKeyBool("imageViewFormatReinterpretation", static_cast<bool>(obj.imageViewFormatReinterpretation));
+ p.PrintKeyBool("imageViewFormatSwizzle", static_cast<bool>(obj.imageViewFormatSwizzle));
+ p.PrintKeyBool("imageView2DOn3DImage", static_cast<bool>(obj.imageView2DOn3DImage));
+ p.PrintKeyBool("multisampleArrayImage", static_cast<bool>(obj.multisampleArrayImage));
+ p.PrintKeyBool("mutableComparisonSamplers", static_cast<bool>(obj.mutableComparisonSamplers));
+ p.PrintKeyBool("pointPolygons", static_cast<bool>(obj.pointPolygons));
+ p.PrintKeyBool("samplerMipLodBias", static_cast<bool>(obj.samplerMipLodBias));
+ p.PrintKeyBool("separateStencilMaskRef", static_cast<bool>(obj.separateStencilMaskRef));
+ p.PrintKeyBool("shaderSampleRateInterpolationFunctions", static_cast<bool>(obj.shaderSampleRateInterpolationFunctions));
+ p.PrintKeyBool("tessellationIsolines", static_cast<bool>(obj.tessellationIsolines));
+ p.PrintKeyBool("tessellationPointMode", static_cast<bool>(obj.tessellationPointMode));
+ p.PrintKeyBool("triangleFans", static_cast<bool>(obj.triangleFans));
+ p.PrintKeyBool("vertexAttributeAccessBeyondStride", static_cast<bool>(obj.vertexAttributeAccessBeyondStride));
+}
+#endif // VK_ENABLE_BETA_EXTENSIONS
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+void DumpVkPhysicalDevicePortabilitySubsetPropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDevicePortabilitySubsetPropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(36);
+ p.PrintKeyValue("minVertexInputBindingStrideAlignment", obj.minVertexInputBindingStrideAlignment);
+}
+#endif // VK_ENABLE_BETA_EXTENSIONS
+void DumpVkPhysicalDevicePresentId2FeaturesKHR(Printer &p, std::string name, const VkPhysicalDevicePresentId2FeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(10);
+ p.PrintKeyBool("presentId2", static_cast<bool>(obj.presentId2));
+}
+void DumpVkPhysicalDevicePresentIdFeaturesKHR(Printer &p, std::string name, const VkPhysicalDevicePresentIdFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(9);
+ p.PrintKeyBool("presentId", static_cast<bool>(obj.presentId));
+}
+void DumpVkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(26);
+ p.PrintKeyBool("presentModeFifoLatestReady", static_cast<bool>(obj.presentModeFifoLatestReady));
+}
+void DumpVkPhysicalDevicePresentTimingFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDevicePresentTimingFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(21);
+ p.PrintKeyBool("presentTiming", static_cast<bool>(obj.presentTiming));
+ p.PrintKeyBool("presentAtAbsoluteTime", static_cast<bool>(obj.presentAtAbsoluteTime));
+ p.PrintKeyBool("presentAtRelativeTime", static_cast<bool>(obj.presentAtRelativeTime));
+}
+void DumpVkPhysicalDevicePresentWait2FeaturesKHR(Printer &p, std::string name, const VkPhysicalDevicePresentWait2FeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(12);
+ p.PrintKeyBool("presentWait2", static_cast<bool>(obj.presentWait2));
+}
+void DumpVkPhysicalDevicePresentWaitFeaturesKHR(Printer &p, std::string name, const VkPhysicalDevicePresentWaitFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(11);
+ p.PrintKeyBool("presentWait", static_cast<bool>(obj.presentWait));
+}
+void DumpVkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT(
+ Printer &p, std::string name, const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(33);
+ p.PrintKeyBool("primitiveTopologyListRestart", static_cast<bool>(obj.primitiveTopologyListRestart));
+ p.PrintKeyBool("primitiveTopologyPatchListRestart", static_cast<bool>(obj.primitiveTopologyPatchListRestart));
+}
+void DumpVkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(45);
+ p.PrintKeyBool("primitivesGeneratedQuery", static_cast<bool>(obj.primitivesGeneratedQuery));
+ p.PrintKeyBool("primitivesGeneratedQueryWithRasterizerDiscard",
+ static_cast<bool>(obj.primitivesGeneratedQueryWithRasterizerDiscard));
+ p.PrintKeyBool("primitivesGeneratedQueryWithNonZeroStreams", static_cast<bool>(obj.primitivesGeneratedQueryWithNonZeroStreams));
+}
+void DumpVkPhysicalDevicePrivateDataFeatures(Printer &p, std::string name, const VkPhysicalDevicePrivateDataFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(11);
+ p.PrintKeyBool("privateData", static_cast<bool>(obj.privateData));
+}
+void DumpVkPhysicalDeviceProtectedMemoryFeatures(Printer &p, std::string name, const VkPhysicalDeviceProtectedMemoryFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(15);
+ p.PrintKeyBool("protectedMemory", static_cast<bool>(obj.protectedMemory));
+}
+void DumpVkPhysicalDeviceProtectedMemoryProperties(Printer &p, std::string name,
+ const VkPhysicalDeviceProtectedMemoryProperties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(16);
+ p.PrintKeyBool("protectedNoFault", static_cast<bool>(obj.protectedNoFault));
+}
+void DumpVkPhysicalDeviceProvokingVertexFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceProvokingVertexFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(41);
+ p.PrintKeyBool("provokingVertexLast", static_cast<bool>(obj.provokingVertexLast));
+ p.PrintKeyBool("transformFeedbackPreservesProvokingVertex", static_cast<bool>(obj.transformFeedbackPreservesProvokingVertex));
+}
+void DumpVkPhysicalDeviceProvokingVertexPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceProvokingVertexPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(52);
+ p.PrintKeyBool("provokingVertexModePerPipeline", static_cast<bool>(obj.provokingVertexModePerPipeline));
+ p.PrintKeyBool("transformFeedbackPreservesTriangleFanProvokingVertex",
+ static_cast<bool>(obj.transformFeedbackPreservesTriangleFanProvokingVertex));
+}
+void DumpVkPhysicalDevicePushDescriptorProperties(Printer &p, std::string name,
+ const VkPhysicalDevicePushDescriptorProperties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(18);
+ p.PrintKeyValue("maxPushDescriptors", obj.maxPushDescriptors);
+}
+void DumpVkPhysicalDeviceRGBA10X6FormatsFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(33);
+ p.PrintKeyBool("formatRgba10x6WithoutYCbCrSampler", static_cast<bool>(obj.formatRgba10x6WithoutYCbCrSampler));
+}
+void DumpVkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT(
+ Printer &p, std::string name, const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(41);
+ p.PrintKeyBool("rasterizationOrderColorAttachmentAccess", static_cast<bool>(obj.rasterizationOrderColorAttachmentAccess));
+ p.PrintKeyBool("rasterizationOrderDepthAttachmentAccess", static_cast<bool>(obj.rasterizationOrderDepthAttachmentAccess));
+ p.PrintKeyBool("rasterizationOrderStencilAttachmentAccess", static_cast<bool>(obj.rasterizationOrderStencilAttachmentAccess));
+}
+void DumpVkPhysicalDeviceRayQueryFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceRayQueryFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(8);
+ p.PrintKeyBool("rayQuery", static_cast<bool>(obj.rayQuery));
+}
+void DumpVkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(27);
+ p.PrintKeyBool("rayTracingInvocationReorder", static_cast<bool>(obj.rayTracingInvocationReorder));
+}
+void DumpVkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT(
+ Printer &p, std::string name, const VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(32);
+ DumpVkRayTracingInvocationReorderModeEXT(p, "rayTracingInvocationReorderReorderingHint",
+ obj.rayTracingInvocationReorderReorderingHint);
+ p.PrintKeyValue("maxShaderBindingTableRecordIndex", obj.maxShaderBindingTableRecordIndex);
+}
+void DumpVkPhysicalDeviceRayTracingMaintenance1FeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(36);
+ p.PrintKeyBool("rayTracingMaintenance1", static_cast<bool>(obj.rayTracingMaintenance1));
+ p.PrintKeyBool("rayTracingPipelineTraceRaysIndirect2", static_cast<bool>(obj.rayTracingPipelineTraceRaysIndirect2));
+}
+void DumpVkPhysicalDeviceRayTracingPipelineFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceRayTracingPipelineFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(53);
+ p.PrintKeyBool("rayTracingPipeline", static_cast<bool>(obj.rayTracingPipeline));
+ p.PrintKeyBool("rayTracingPipelineShaderGroupHandleCaptureReplay",
+ static_cast<bool>(obj.rayTracingPipelineShaderGroupHandleCaptureReplay));
+ p.PrintKeyBool("rayTracingPipelineShaderGroupHandleCaptureReplayMixed",
+ static_cast<bool>(obj.rayTracingPipelineShaderGroupHandleCaptureReplayMixed));
+ p.PrintKeyBool("rayTracingPipelineTraceRaysIndirect", static_cast<bool>(obj.rayTracingPipelineTraceRaysIndirect));
+ p.PrintKeyBool("rayTraversalPrimitiveCulling", static_cast<bool>(obj.rayTraversalPrimitiveCulling));
+}
+void DumpVkPhysicalDeviceRayTracingPipelinePropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceRayTracingPipelinePropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(34);
+ p.PrintKeyValue("shaderGroupHandleSize", obj.shaderGroupHandleSize);
+ p.PrintKeyValue("maxRayRecursionDepth", obj.maxRayRecursionDepth);
+ p.PrintKeyValue("maxShaderGroupStride", obj.maxShaderGroupStride);
+ p.PrintKeyValue("shaderGroupBaseAlignment", obj.shaderGroupBaseAlignment);
+ p.PrintKeyValue("shaderGroupHandleCaptureReplaySize", obj.shaderGroupHandleCaptureReplaySize);
+ p.PrintKeyValue("maxRayDispatchInvocationCount", obj.maxRayDispatchInvocationCount);
+ p.PrintKeyValue("shaderGroupHandleAlignment", obj.shaderGroupHandleAlignment);
+ p.PrintKeyValue("maxRayHitAttributeSize", obj.maxRayHitAttributeSize);
+}
+void DumpVkPhysicalDeviceRayTracingPositionFetchFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(23);
+ p.PrintKeyBool("rayTracingPositionFetch", static_cast<bool>(obj.rayTracingPositionFetch));
+}
+void DumpVkPhysicalDeviceRobustness2FeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceRobustness2FeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(19);
+ p.PrintKeyBool("robustBufferAccess2", static_cast<bool>(obj.robustBufferAccess2));
+ p.PrintKeyBool("robustImageAccess2", static_cast<bool>(obj.robustImageAccess2));
+ p.PrintKeyBool("nullDescriptor", static_cast<bool>(obj.nullDescriptor));
+}
+void DumpVkPhysicalDeviceRobustness2PropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceRobustness2PropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(38);
+ p.PrintKeyValue("robustStorageBufferAccessSizeAlignment", to_hex_str(p, obj.robustStorageBufferAccessSizeAlignment));
+ p.PrintKeyValue("robustUniformBufferAccessSizeAlignment", to_hex_str(p, obj.robustUniformBufferAccessSizeAlignment));
+}
+void DumpVkPhysicalDeviceSampleLocationsPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceSampleLocationsPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(26);
+ DumpVkSampleCountFlags(p, "sampleLocationSampleCounts", obj.sampleLocationSampleCounts);
+ DumpVkExtent2D(p, "maxSampleLocationGridSize", obj.maxSampleLocationGridSize);
+ {
+ ArrayWrapper arr(p, "sampleLocationCoordinateRange", 2);
+ for (uint32_t i = 0; i < 2; i++) {
+ p.PrintElement(obj.sampleLocationCoordinateRange[i]);
+ }
+ }
+ p.PrintKeyValue("sampleLocationSubPixelBits", obj.sampleLocationSubPixelBits);
+ p.PrintKeyBool("variableSampleLocations", static_cast<bool>(obj.variableSampleLocations));
+}
+void DumpVkPhysicalDeviceSamplerFilterMinmaxProperties(Printer &p, std::string name,
+ const VkPhysicalDeviceSamplerFilterMinmaxProperties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(34);
+ p.PrintKeyBool("filterMinmaxSingleComponentFormats", static_cast<bool>(obj.filterMinmaxSingleComponentFormats));
+ p.PrintKeyBool("filterMinmaxImageComponentMapping", static_cast<bool>(obj.filterMinmaxImageComponentMapping));
+}
+void DumpVkPhysicalDeviceSamplerYcbcrConversionFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceSamplerYcbcrConversionFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(22);
+ p.PrintKeyBool("samplerYcbcrConversion", static_cast<bool>(obj.samplerYcbcrConversion));
+}
+void DumpVkPhysicalDeviceScalarBlockLayoutFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceScalarBlockLayoutFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(17);
+ p.PrintKeyBool("scalarBlockLayout", static_cast<bool>(obj.scalarBlockLayout));
+}
+void DumpVkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(27);
+ p.PrintKeyBool("separateDepthStencilLayouts", static_cast<bool>(obj.separateDepthStencilLayouts));
+}
+void DumpVkPhysicalDeviceShader64BitIndexingFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceShader64BitIndexingFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(19);
+ p.PrintKeyBool("shader64BitIndexing", static_cast<bool>(obj.shader64BitIndexing));
+}
+void DumpVkPhysicalDeviceShaderAbortFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceShaderAbortFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(11);
+ p.PrintKeyBool("shaderAbort", static_cast<bool>(obj.shaderAbort));
+}
+void DumpVkPhysicalDeviceShaderAbortPropertiesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderAbortPropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(25);
+ p.PrintKeyValue("maxShaderAbortMessageSize", obj.maxShaderAbortMessageSize);
+}
+void DumpVkPhysicalDeviceShaderAtomicFloat2FeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(31);
+ p.PrintKeyBool("shaderBufferFloat16Atomics", static_cast<bool>(obj.shaderBufferFloat16Atomics));
+ p.PrintKeyBool("shaderBufferFloat16AtomicAdd", static_cast<bool>(obj.shaderBufferFloat16AtomicAdd));
+ p.PrintKeyBool("shaderBufferFloat16AtomicMinMax", static_cast<bool>(obj.shaderBufferFloat16AtomicMinMax));
+ p.PrintKeyBool("shaderBufferFloat32AtomicMinMax", static_cast<bool>(obj.shaderBufferFloat32AtomicMinMax));
+ p.PrintKeyBool("shaderBufferFloat64AtomicMinMax", static_cast<bool>(obj.shaderBufferFloat64AtomicMinMax));
+ p.PrintKeyBool("shaderSharedFloat16Atomics", static_cast<bool>(obj.shaderSharedFloat16Atomics));
+ p.PrintKeyBool("shaderSharedFloat16AtomicAdd", static_cast<bool>(obj.shaderSharedFloat16AtomicAdd));
+ p.PrintKeyBool("shaderSharedFloat16AtomicMinMax", static_cast<bool>(obj.shaderSharedFloat16AtomicMinMax));
+ p.PrintKeyBool("shaderSharedFloat32AtomicMinMax", static_cast<bool>(obj.shaderSharedFloat32AtomicMinMax));
+ p.PrintKeyBool("shaderSharedFloat64AtomicMinMax", static_cast<bool>(obj.shaderSharedFloat64AtomicMinMax));
+ p.PrintKeyBool("shaderImageFloat32AtomicMinMax", static_cast<bool>(obj.shaderImageFloat32AtomicMinMax));
+ p.PrintKeyBool("sparseImageFloat32AtomicMinMax", static_cast<bool>(obj.sparseImageFloat32AtomicMinMax));
+}
+void DumpVkPhysicalDeviceShaderAtomicFloatFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(28);
+ p.PrintKeyBool("shaderBufferFloat32Atomics", static_cast<bool>(obj.shaderBufferFloat32Atomics));
+ p.PrintKeyBool("shaderBufferFloat32AtomicAdd", static_cast<bool>(obj.shaderBufferFloat32AtomicAdd));
+ p.PrintKeyBool("shaderBufferFloat64Atomics", static_cast<bool>(obj.shaderBufferFloat64Atomics));
+ p.PrintKeyBool("shaderBufferFloat64AtomicAdd", static_cast<bool>(obj.shaderBufferFloat64AtomicAdd));
+ p.PrintKeyBool("shaderSharedFloat32Atomics", static_cast<bool>(obj.shaderSharedFloat32Atomics));
+ p.PrintKeyBool("shaderSharedFloat32AtomicAdd", static_cast<bool>(obj.shaderSharedFloat32AtomicAdd));
+ p.PrintKeyBool("shaderSharedFloat64Atomics", static_cast<bool>(obj.shaderSharedFloat64Atomics));
+ p.PrintKeyBool("shaderSharedFloat64AtomicAdd", static_cast<bool>(obj.shaderSharedFloat64AtomicAdd));
+ p.PrintKeyBool("shaderImageFloat32Atomics", static_cast<bool>(obj.shaderImageFloat32Atomics));
+ p.PrintKeyBool("shaderImageFloat32AtomicAdd", static_cast<bool>(obj.shaderImageFloat32AtomicAdd));
+ p.PrintKeyBool("sparseImageFloat32Atomics", static_cast<bool>(obj.sparseImageFloat32Atomics));
+ p.PrintKeyBool("sparseImageFloat32AtomicAdd", static_cast<bool>(obj.sparseImageFloat32AtomicAdd));
+}
+void DumpVkPhysicalDeviceShaderAtomicInt64Features(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderAtomicInt64Features &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(24);
+ p.PrintKeyBool("shaderBufferInt64Atomics", static_cast<bool>(obj.shaderBufferInt64Atomics));
+ p.PrintKeyBool("shaderSharedInt64Atomics", static_cast<bool>(obj.shaderSharedInt64Atomics));
+}
+void DumpVkPhysicalDeviceShaderBfloat16FeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderBfloat16FeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(31);
+ p.PrintKeyBool("shaderBFloat16Type", static_cast<bool>(obj.shaderBFloat16Type));
+ p.PrintKeyBool("shaderBFloat16DotProduct", static_cast<bool>(obj.shaderBFloat16DotProduct));
+ p.PrintKeyBool("shaderBFloat16CooperativeMatrix", static_cast<bool>(obj.shaderBFloat16CooperativeMatrix));
+}
+void DumpVkPhysicalDeviceShaderClockFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceShaderClockFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(19);
+ p.PrintKeyBool("shaderSubgroupClock", static_cast<bool>(obj.shaderSubgroupClock));
+ p.PrintKeyBool("shaderDeviceClock", static_cast<bool>(obj.shaderDeviceClock));
+}
+void DumpVkPhysicalDeviceShaderConstantDataFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderConstantDataFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(18);
+ p.PrintKeyBool("shaderConstantData", static_cast<bool>(obj.shaderConstantData));
+}
+void DumpVkPhysicalDeviceShaderDemoteToHelperInvocationFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(30);
+ p.PrintKeyBool("shaderDemoteToHelperInvocation", static_cast<bool>(obj.shaderDemoteToHelperInvocation));
+}
+void DumpVkPhysicalDeviceShaderDrawParametersFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderDrawParametersFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(20);
+ p.PrintKeyBool("shaderDrawParameters", static_cast<bool>(obj.shaderDrawParameters));
+}
+void DumpVkPhysicalDeviceShaderExpectAssumeFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderExpectAssumeFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(18);
+ p.PrintKeyBool("shaderExpectAssume", static_cast<bool>(obj.shaderExpectAssume));
+}
+void DumpVkPhysicalDeviceShaderFloat16Int8Features(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderFloat16Int8Features &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(13);
+ p.PrintKeyBool("shaderFloat16", static_cast<bool>(obj.shaderFloat16));
+ p.PrintKeyBool("shaderInt8", static_cast<bool>(obj.shaderInt8));
+}
+void DumpVkPhysicalDeviceShaderFloat8FeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceShaderFloat8FeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(29);
+ p.PrintKeyBool("shaderFloat8", static_cast<bool>(obj.shaderFloat8));
+ p.PrintKeyBool("shaderFloat8CooperativeMatrix", static_cast<bool>(obj.shaderFloat8CooperativeMatrix));
+}
+void DumpVkPhysicalDeviceShaderFloatControls2Features(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderFloatControls2Features &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(20);
+ p.PrintKeyBool("shaderFloatControls2", static_cast<bool>(obj.shaderFloatControls2));
+}
+void DumpVkPhysicalDeviceShaderFmaFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceShaderFmaFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(16);
+ p.PrintKeyBool("shaderFmaFloat16", static_cast<bool>(obj.shaderFmaFloat16));
+ p.PrintKeyBool("shaderFmaFloat32", static_cast<bool>(obj.shaderFmaFloat32));
+ p.PrintKeyBool("shaderFmaFloat64", static_cast<bool>(obj.shaderFmaFloat64));
+}
+void DumpVkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(23);
+ p.PrintKeyBool("shaderImageInt64Atomics", static_cast<bool>(obj.shaderImageInt64Atomics));
+ p.PrintKeyBool("sparseImageInt64Atomics", static_cast<bool>(obj.sparseImageInt64Atomics));
+}
+void DumpVkPhysicalDeviceShaderIntegerDotProductFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderIntegerDotProductFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(23);
+ p.PrintKeyBool("shaderIntegerDotProduct", static_cast<bool>(obj.shaderIntegerDotProduct));
+}
+void DumpVkPhysicalDeviceShaderIntegerDotProductProperties(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderIntegerDotProductProperties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(77);
+ p.PrintKeyBool("integerDotProduct8BitUnsignedAccelerated", static_cast<bool>(obj.integerDotProduct8BitUnsignedAccelerated));
+ p.PrintKeyBool("integerDotProduct8BitSignedAccelerated", static_cast<bool>(obj.integerDotProduct8BitSignedAccelerated));
+ p.PrintKeyBool("integerDotProduct8BitMixedSignednessAccelerated",
+ static_cast<bool>(obj.integerDotProduct8BitMixedSignednessAccelerated));
+ p.PrintKeyBool("integerDotProduct4x8BitPackedUnsignedAccelerated",
+ static_cast<bool>(obj.integerDotProduct4x8BitPackedUnsignedAccelerated));
+ p.PrintKeyBool("integerDotProduct4x8BitPackedSignedAccelerated",
+ static_cast<bool>(obj.integerDotProduct4x8BitPackedSignedAccelerated));
+ p.PrintKeyBool("integerDotProduct4x8BitPackedMixedSignednessAccelerated",
+ static_cast<bool>(obj.integerDotProduct4x8BitPackedMixedSignednessAccelerated));
+ p.PrintKeyBool("integerDotProduct16BitUnsignedAccelerated", static_cast<bool>(obj.integerDotProduct16BitUnsignedAccelerated));
+ p.PrintKeyBool("integerDotProduct16BitSignedAccelerated", static_cast<bool>(obj.integerDotProduct16BitSignedAccelerated));
+ p.PrintKeyBool("integerDotProduct16BitMixedSignednessAccelerated",
+ static_cast<bool>(obj.integerDotProduct16BitMixedSignednessAccelerated));
+ p.PrintKeyBool("integerDotProduct32BitUnsignedAccelerated", static_cast<bool>(obj.integerDotProduct32BitUnsignedAccelerated));
+ p.PrintKeyBool("integerDotProduct32BitSignedAccelerated", static_cast<bool>(obj.integerDotProduct32BitSignedAccelerated));
+ p.PrintKeyBool("integerDotProduct32BitMixedSignednessAccelerated",
+ static_cast<bool>(obj.integerDotProduct32BitMixedSignednessAccelerated));
+ p.PrintKeyBool("integerDotProduct64BitUnsignedAccelerated", static_cast<bool>(obj.integerDotProduct64BitUnsignedAccelerated));
+ p.PrintKeyBool("integerDotProduct64BitSignedAccelerated", static_cast<bool>(obj.integerDotProduct64BitSignedAccelerated));
+ p.PrintKeyBool("integerDotProduct64BitMixedSignednessAccelerated",
+ static_cast<bool>(obj.integerDotProduct64BitMixedSignednessAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating8BitUnsignedAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating8BitUnsignedAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating8BitSignedAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating8BitSignedAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating16BitUnsignedAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating16BitUnsignedAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating16BitSignedAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating16BitSignedAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating32BitUnsignedAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating32BitUnsignedAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating32BitSignedAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating32BitSignedAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating64BitUnsignedAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating64BitUnsignedAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating64BitSignedAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating64BitSignedAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated));
+}
+void DumpVkPhysicalDeviceShaderLongVectorFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderLongVectorFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(10);
+ p.PrintKeyBool("longVector", static_cast<bool>(obj.longVector));
+}
+void DumpVkPhysicalDeviceShaderLongVectorPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderLongVectorPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(19);
+ p.PrintKeyValue("maxVectorComponents", obj.maxVectorComponents);
+}
+void DumpVkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(26);
+ p.PrintKeyBool("shaderMaximalReconvergence", static_cast<bool>(obj.shaderMaximalReconvergence));
+}
+void DumpVkPhysicalDeviceShaderModuleIdentifierFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(22);
+ p.PrintKeyBool("shaderModuleIdentifier", static_cast<bool>(obj.shaderModuleIdentifier));
+}
+void DumpVkPhysicalDeviceShaderModuleIdentifierPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(35);
+ p.PrintKeyValue("shaderModuleIdentifierAlgorithmUUID", obj.shaderModuleIdentifierAlgorithmUUID);
+}
+void DumpVkPhysicalDeviceShaderObjectFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceShaderObjectFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(12);
+ p.PrintKeyBool("shaderObject", static_cast<bool>(obj.shaderObject));
+}
+void DumpVkPhysicalDeviceShaderObjectPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderObjectPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(19);
+ p.PrintKeyValue("shaderBinaryUUID", obj.shaderBinaryUUID);
+ p.PrintKeyValue("shaderBinaryVersion", obj.shaderBinaryVersion);
+}
+void DumpVkPhysicalDeviceShaderQuadControlFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderQuadControlFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(17);
+ p.PrintKeyBool("shaderQuadControl", static_cast<bool>(obj.shaderQuadControl));
+}
+void DumpVkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR(
+ Printer &p, std::string name, const VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(32);
+ p.PrintKeyBool("shaderRelaxedExtendedInstruction", static_cast<bool>(obj.shaderRelaxedExtendedInstruction));
+}
+void DumpVkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(26);
+ p.PrintKeyBool("shaderReplicatedComposites", static_cast<bool>(obj.shaderReplicatedComposites));
+}
+void DumpVkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(27);
+ p.PrintKeyBool("shaderSubgroupExtendedTypes", static_cast<bool>(obj.shaderSubgroupExtendedTypes));
+}
+void DumpVkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(25);
+ p.PrintKeyBool("shaderSubgroupPartitioned", static_cast<bool>(obj.shaderSubgroupPartitioned));
+}
+void DumpVkPhysicalDeviceShaderSubgroupRotateFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderSubgroupRotateFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(29);
+ p.PrintKeyBool("shaderSubgroupRotate", static_cast<bool>(obj.shaderSubgroupRotate));
+ p.PrintKeyBool("shaderSubgroupRotateClustered", static_cast<bool>(obj.shaderSubgroupRotateClustered));
+}
+void DumpVkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR(
+ Printer &p, std::string name, const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(32);
+ p.PrintKeyBool("shaderSubgroupUniformControlFlow", static_cast<bool>(obj.shaderSubgroupUniformControlFlow));
+}
+void DumpVkPhysicalDeviceShaderTerminateInvocationFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderTerminateInvocationFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(25);
+ p.PrintKeyBool("shaderTerminateInvocation", static_cast<bool>(obj.shaderTerminateInvocation));
+}
+void DumpVkPhysicalDeviceShaderTileImageFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderTileImageFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(32);
+ p.PrintKeyBool("shaderTileImageColorReadAccess", static_cast<bool>(obj.shaderTileImageColorReadAccess));
+ p.PrintKeyBool("shaderTileImageDepthReadAccess", static_cast<bool>(obj.shaderTileImageDepthReadAccess));
+ p.PrintKeyBool("shaderTileImageStencilReadAccess", static_cast<bool>(obj.shaderTileImageStencilReadAccess));
+}
+void DumpVkPhysicalDeviceShaderTileImagePropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderTileImagePropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(48);
+ p.PrintKeyBool("shaderTileImageCoherentReadAccelerated", static_cast<bool>(obj.shaderTileImageCoherentReadAccelerated));
+ p.PrintKeyBool("shaderTileImageReadSampleFromPixelRateInvocation",
+ static_cast<bool>(obj.shaderTileImageReadSampleFromPixelRateInvocation));
+ p.PrintKeyBool("shaderTileImageReadFromHelperInvocation", static_cast<bool>(obj.shaderTileImageReadFromHelperInvocation));
+}
+void DumpVkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT(
+ Printer &p, std::string name, const VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(31);
+ p.PrintKeyBool("shaderUniformBufferUnsizedArray", static_cast<bool>(obj.shaderUniformBufferUnsizedArray));
+}
+void DumpVkPhysicalDeviceShaderUntypedPointersFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceShaderUntypedPointersFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(21);
+ p.PrintKeyBool("shaderUntypedPointers", static_cast<bool>(obj.shaderUntypedPointers));
+}
+void DumpVkPhysicalDeviceSparseProperties(Printer &p, std::string name, const VkPhysicalDeviceSparseProperties &obj) {
+ if (p.Type() == OutputType::json)
+ p.ObjectStart("sparseProperties");
+ else
+ p.SetSubHeader().ObjectStart(name);
+ p.SetMinKeyWidth(40);
+ p.PrintKeyBool("residencyStandard2DBlockShape", static_cast<bool>(obj.residencyStandard2DBlockShape));
+ p.PrintKeyBool("residencyStandard2DMultisampleBlockShape", static_cast<bool>(obj.residencyStandard2DMultisampleBlockShape));
+ p.PrintKeyBool("residencyStandard3DBlockShape", static_cast<bool>(obj.residencyStandard3DBlockShape));
+ p.PrintKeyBool("residencyAlignedMipSize", static_cast<bool>(obj.residencyAlignedMipSize));
+ p.PrintKeyBool("residencyNonResidentStrict", static_cast<bool>(obj.residencyNonResidentStrict));
+ p.ObjectEnd();
+}
+void DumpVkPhysicalDeviceSubgroupProperties(Printer &p, std::string name, const VkPhysicalDeviceSubgroupProperties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(25);
+ p.PrintKeyValue("subgroupSize", obj.subgroupSize);
+ DumpVkShaderStageFlags(p, "supportedStages", obj.supportedStages);
+ DumpVkSubgroupFeatureFlags(p, "supportedOperations", obj.supportedOperations);
+ p.PrintKeyBool("quadOperationsInAllStages", static_cast<bool>(obj.quadOperationsInAllStages));
+}
+void DumpVkPhysicalDeviceSubgroupSizeControlFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceSubgroupSizeControlFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(20);
+ p.PrintKeyBool("subgroupSizeControl", static_cast<bool>(obj.subgroupSizeControl));
+ p.PrintKeyBool("computeFullSubgroups", static_cast<bool>(obj.computeFullSubgroups));
+}
+void DumpVkPhysicalDeviceSubgroupSizeControlProperties(Printer &p, std::string name,
+ const VkPhysicalDeviceSubgroupSizeControlProperties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(28);
+ p.PrintKeyValue("minSubgroupSize", obj.minSubgroupSize);
+ p.PrintKeyValue("maxSubgroupSize", obj.maxSubgroupSize);
+ p.PrintKeyValue("maxComputeWorkgroupSubgroups", obj.maxComputeWorkgroupSubgroups);
+ DumpVkShaderStageFlags(p, "requiredSubgroupSizeStages", obj.requiredSubgroupSizeStages);
+}
+void DumpVkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(20);
+ p.PrintKeyBool("subpassMergeFeedback", static_cast<bool>(obj.subpassMergeFeedback));
+}
+void DumpVkPhysicalDeviceSwapchainMaintenance1FeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(21);
+ p.PrintKeyBool("swapchainMaintenance1", static_cast<bool>(obj.swapchainMaintenance1));
+}
+void DumpVkPhysicalDeviceSynchronization2Features(Printer &p, std::string name,
+ const VkPhysicalDeviceSynchronization2Features &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(16);
+ p.PrintKeyBool("synchronization2", static_cast<bool>(obj.synchronization2));
+}
+void DumpVkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(20);
+ p.PrintKeyBool("texelBufferAlignment", static_cast<bool>(obj.texelBufferAlignment));
+}
+void DumpVkPhysicalDeviceTexelBufferAlignmentProperties(Printer &p, std::string name,
+ const VkPhysicalDeviceTexelBufferAlignmentProperties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(44);
+ p.PrintKeyValue("storageTexelBufferOffsetAlignmentBytes", to_hex_str(p, obj.storageTexelBufferOffsetAlignmentBytes));
+ p.PrintKeyBool("storageTexelBufferOffsetSingleTexelAlignment",
+ static_cast<bool>(obj.storageTexelBufferOffsetSingleTexelAlignment));
+ p.PrintKeyValue("uniformTexelBufferOffsetAlignmentBytes", to_hex_str(p, obj.uniformTexelBufferOffsetAlignmentBytes));
+ p.PrintKeyBool("uniformTexelBufferOffsetSingleTexelAlignment",
+ static_cast<bool>(obj.uniformTexelBufferOffsetSingleTexelAlignment));
+}
+void DumpVkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(25);
+ p.PrintKeyBool("textureCompressionASTC_3D", static_cast<bool>(obj.textureCompressionASTC_3D));
+}
+void DumpVkPhysicalDeviceTextureCompressionASTCHDRFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceTextureCompressionASTCHDRFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(26);
+ p.PrintKeyBool("textureCompressionASTC_HDR", static_cast<bool>(obj.textureCompressionASTC_HDR));
+}
+void DumpVkPhysicalDeviceTimelineSemaphoreFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceTimelineSemaphoreFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(17);
+ p.PrintKeyBool("timelineSemaphore", static_cast<bool>(obj.timelineSemaphore));
+}
+void DumpVkPhysicalDeviceTimelineSemaphoreProperties(Printer &p, std::string name,
+ const VkPhysicalDeviceTimelineSemaphoreProperties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(35);
+ p.PrintKeyValue("maxTimelineSemaphoreValueDifference", obj.maxTimelineSemaphoreValueDifference);
+}
+void DumpVkPhysicalDeviceToolProperties(Printer &p, std::string name, const VkPhysicalDeviceToolProperties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(11);
+ p.PrintKeyString("name", obj.name);
+ p.PrintKeyString("version", obj.version);
+ DumpVkToolPurposeFlags(p, "purposes", obj.purposes);
+ p.PrintKeyString("description", obj.description);
+ p.PrintKeyString("layer", obj.layer);
+}
+void DumpVkPhysicalDeviceTransformFeedbackFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceTransformFeedbackFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(17);
+ p.PrintKeyBool("transformFeedback", static_cast<bool>(obj.transformFeedback));
+ p.PrintKeyBool("geometryStreams", static_cast<bool>(obj.geometryStreams));
+}
+void DumpVkPhysicalDeviceTransformFeedbackPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceTransformFeedbackPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(42);
+ p.PrintKeyValue("maxTransformFeedbackStreams", obj.maxTransformFeedbackStreams);
+ p.PrintKeyValue("maxTransformFeedbackBuffers", obj.maxTransformFeedbackBuffers);
+ p.PrintKeyValue("maxTransformFeedbackBufferSize", to_hex_str(p, obj.maxTransformFeedbackBufferSize));
+ p.PrintKeyValue("maxTransformFeedbackStreamDataSize", obj.maxTransformFeedbackStreamDataSize);
+ p.PrintKeyValue("maxTransformFeedbackBufferDataSize", obj.maxTransformFeedbackBufferDataSize);
+ p.PrintKeyValue("maxTransformFeedbackBufferDataStride", obj.maxTransformFeedbackBufferDataStride);
+ p.PrintKeyBool("transformFeedbackQueries", static_cast<bool>(obj.transformFeedbackQueries));
+ p.PrintKeyBool("transformFeedbackStreamsLinesTriangles", static_cast<bool>(obj.transformFeedbackStreamsLinesTriangles));
+ p.PrintKeyBool("transformFeedbackRasterizationStreamSelect", static_cast<bool>(obj.transformFeedbackRasterizationStreamSelect));
+ p.PrintKeyBool("transformFeedbackDraw", static_cast<bool>(obj.transformFeedbackDraw));
+}
+void DumpVkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(24);
+ p.PrintKeyBool("unifiedImageLayouts", static_cast<bool>(obj.unifiedImageLayouts));
+ p.PrintKeyBool("unifiedImageLayoutsVideo", static_cast<bool>(obj.unifiedImageLayoutsVideo));
+}
+void DumpVkPhysicalDeviceUniformBufferStandardLayoutFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceUniformBufferStandardLayoutFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(27);
+ p.PrintKeyBool("uniformBufferStandardLayout", static_cast<bool>(obj.uniformBufferStandardLayout));
+}
+void DumpVkPhysicalDeviceVariablePointersFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceVariablePointersFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(29);
+ p.PrintKeyBool("variablePointersStorageBuffer", static_cast<bool>(obj.variablePointersStorageBuffer));
+ p.PrintKeyBool("variablePointers", static_cast<bool>(obj.variablePointers));
+}
+void DumpVkPhysicalDeviceVertexAttributeDivisorFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceVertexAttributeDivisorFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(38);
+ p.PrintKeyBool("vertexAttributeInstanceRateDivisor", static_cast<bool>(obj.vertexAttributeInstanceRateDivisor));
+ p.PrintKeyBool("vertexAttributeInstanceRateZeroDivisor", static_cast<bool>(obj.vertexAttributeInstanceRateZeroDivisor));
+}
+void DumpVkPhysicalDeviceVertexAttributeDivisorProperties(Printer &p, std::string name,
+ const VkPhysicalDeviceVertexAttributeDivisorProperties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(28);
+ p.PrintKeyValue("maxVertexAttribDivisor", obj.maxVertexAttribDivisor);
+ p.PrintKeyBool("supportsNonZeroFirstInstance", static_cast<bool>(obj.supportsNonZeroFirstInstance));
+}
+void DumpVkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(22);
+ p.PrintKeyValue("maxVertexAttribDivisor", obj.maxVertexAttribDivisor);
+}
+void DumpVkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(25);
+ p.PrintKeyBool("vertexAttributeRobustness", static_cast<bool>(obj.vertexAttributeRobustness));
+}
+void DumpVkPhysicalDeviceVertexInputDynamicStateFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(23);
+ p.PrintKeyBool("vertexInputDynamicState", static_cast<bool>(obj.vertexInputDynamicState));
+}
+void DumpVkPhysicalDeviceVideoDecodeVP9FeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceVideoDecodeVP9FeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(14);
+ p.PrintKeyBool("videoDecodeVP9", static_cast<bool>(obj.videoDecodeVP9));
+}
+void DumpVkPhysicalDeviceVideoEncodeAV1FeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceVideoEncodeAV1FeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(14);
+ p.PrintKeyBool("videoEncodeAV1", static_cast<bool>(obj.videoEncodeAV1));
+}
+void DumpVkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(23);
+ p.PrintKeyBool("videoEncodeIntraRefresh", static_cast<bool>(obj.videoEncodeIntraRefresh));
+}
+void DumpVkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(26);
+ p.PrintKeyBool("videoEncodeQuantizationMap", static_cast<bool>(obj.videoEncodeQuantizationMap));
+}
+void DumpVkPhysicalDeviceVideoMaintenance1FeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceVideoMaintenance1FeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(17);
+ p.PrintKeyBool("videoMaintenance1", static_cast<bool>(obj.videoMaintenance1));
+}
+void DumpVkPhysicalDeviceVideoMaintenance2FeaturesKHR(Printer &p, std::string name,
+ const VkPhysicalDeviceVideoMaintenance2FeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(17);
+ p.PrintKeyBool("videoMaintenance2", static_cast<bool>(obj.videoMaintenance2));
+}
+void DumpVkPhysicalDeviceVulkan11Features(Printer &p, std::string name, const VkPhysicalDeviceVulkan11Features &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(34);
+ p.PrintKeyBool("storageBuffer16BitAccess", static_cast<bool>(obj.storageBuffer16BitAccess));
+ p.PrintKeyBool("uniformAndStorageBuffer16BitAccess", static_cast<bool>(obj.uniformAndStorageBuffer16BitAccess));
+ p.PrintKeyBool("storagePushConstant16", static_cast<bool>(obj.storagePushConstant16));
+ p.PrintKeyBool("storageInputOutput16", static_cast<bool>(obj.storageInputOutput16));
+ p.PrintKeyBool("multiview", static_cast<bool>(obj.multiview));
+ p.PrintKeyBool("multiviewGeometryShader", static_cast<bool>(obj.multiviewGeometryShader));
+ p.PrintKeyBool("multiviewTessellationShader", static_cast<bool>(obj.multiviewTessellationShader));
+ p.PrintKeyBool("variablePointersStorageBuffer", static_cast<bool>(obj.variablePointersStorageBuffer));
+ p.PrintKeyBool("variablePointers", static_cast<bool>(obj.variablePointers));
+ p.PrintKeyBool("protectedMemory", static_cast<bool>(obj.protectedMemory));
+ p.PrintKeyBool("samplerYcbcrConversion", static_cast<bool>(obj.samplerYcbcrConversion));
+ p.PrintKeyBool("shaderDrawParameters", static_cast<bool>(obj.shaderDrawParameters));
+}
+void DumpVkPhysicalDeviceVulkan11Properties(Printer &p, std::string name, const VkPhysicalDeviceVulkan11Properties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(33);
+ p.PrintKeyValue("deviceUUID", obj.deviceUUID);
+ p.PrintKeyValue("driverUUID", obj.driverUUID);
+ if (obj.deviceLUIDValid) { // special case
+ p.PrintKeyValue("deviceLUID", obj.deviceLUID);
+ }
+ p.PrintKeyValue("deviceNodeMask", obj.deviceNodeMask);
+ p.PrintKeyBool("deviceLUIDValid", static_cast<bool>(obj.deviceLUIDValid));
+ p.PrintKeyValue("subgroupSize", obj.subgroupSize);
+ DumpVkShaderStageFlags(p, "subgroupSupportedStages", obj.subgroupSupportedStages);
+ DumpVkSubgroupFeatureFlags(p, "subgroupSupportedOperations", obj.subgroupSupportedOperations);
+ p.PrintKeyBool("subgroupQuadOperationsInAllStages", static_cast<bool>(obj.subgroupQuadOperationsInAllStages));
+ DumpVkPointClippingBehavior(p, "pointClippingBehavior", obj.pointClippingBehavior);
+ p.PrintKeyValue("maxMultiviewViewCount", obj.maxMultiviewViewCount);
+ p.PrintKeyValue("maxMultiviewInstanceIndex", obj.maxMultiviewInstanceIndex);
+ p.PrintKeyBool("protectedNoFault", static_cast<bool>(obj.protectedNoFault));
+ p.PrintKeyValue("maxPerSetDescriptors", obj.maxPerSetDescriptors);
+ p.PrintKeyValue("maxMemoryAllocationSize", to_hex_str(p, obj.maxMemoryAllocationSize));
+}
+void DumpVkPhysicalDeviceVulkan12Features(Printer &p, std::string name, const VkPhysicalDeviceVulkan12Features &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(50);
+ p.PrintKeyBool("samplerMirrorClampToEdge", static_cast<bool>(obj.samplerMirrorClampToEdge));
+ p.PrintKeyBool("drawIndirectCount", static_cast<bool>(obj.drawIndirectCount));
+ p.PrintKeyBool("storageBuffer8BitAccess", static_cast<bool>(obj.storageBuffer8BitAccess));
+ p.PrintKeyBool("uniformAndStorageBuffer8BitAccess", static_cast<bool>(obj.uniformAndStorageBuffer8BitAccess));
+ p.PrintKeyBool("storagePushConstant8", static_cast<bool>(obj.storagePushConstant8));
+ p.PrintKeyBool("shaderBufferInt64Atomics", static_cast<bool>(obj.shaderBufferInt64Atomics));
+ p.PrintKeyBool("shaderSharedInt64Atomics", static_cast<bool>(obj.shaderSharedInt64Atomics));
+ p.PrintKeyBool("shaderFloat16", static_cast<bool>(obj.shaderFloat16));
+ p.PrintKeyBool("shaderInt8", static_cast<bool>(obj.shaderInt8));
+ p.PrintKeyBool("descriptorIndexing", static_cast<bool>(obj.descriptorIndexing));
+ p.PrintKeyBool("shaderInputAttachmentArrayDynamicIndexing", static_cast<bool>(obj.shaderInputAttachmentArrayDynamicIndexing));
+ p.PrintKeyBool("shaderUniformTexelBufferArrayDynamicIndexing",
+ static_cast<bool>(obj.shaderUniformTexelBufferArrayDynamicIndexing));
+ p.PrintKeyBool("shaderStorageTexelBufferArrayDynamicIndexing",
+ static_cast<bool>(obj.shaderStorageTexelBufferArrayDynamicIndexing));
+ p.PrintKeyBool("shaderUniformBufferArrayNonUniformIndexing", static_cast<bool>(obj.shaderUniformBufferArrayNonUniformIndexing));
+ p.PrintKeyBool("shaderSampledImageArrayNonUniformIndexing", static_cast<bool>(obj.shaderSampledImageArrayNonUniformIndexing));
+ p.PrintKeyBool("shaderStorageBufferArrayNonUniformIndexing", static_cast<bool>(obj.shaderStorageBufferArrayNonUniformIndexing));
+ p.PrintKeyBool("shaderStorageImageArrayNonUniformIndexing", static_cast<bool>(obj.shaderStorageImageArrayNonUniformIndexing));
+ p.PrintKeyBool("shaderInputAttachmentArrayNonUniformIndexing",
+ static_cast<bool>(obj.shaderInputAttachmentArrayNonUniformIndexing));
+ p.PrintKeyBool("shaderUniformTexelBufferArrayNonUniformIndexing",
+ static_cast<bool>(obj.shaderUniformTexelBufferArrayNonUniformIndexing));
+ p.PrintKeyBool("shaderStorageTexelBufferArrayNonUniformIndexing",
+ static_cast<bool>(obj.shaderStorageTexelBufferArrayNonUniformIndexing));
+ p.PrintKeyBool("descriptorBindingUniformBufferUpdateAfterBind",
+ static_cast<bool>(obj.descriptorBindingUniformBufferUpdateAfterBind));
+ p.PrintKeyBool("descriptorBindingSampledImageUpdateAfterBind",
+ static_cast<bool>(obj.descriptorBindingSampledImageUpdateAfterBind));
+ p.PrintKeyBool("descriptorBindingStorageImageUpdateAfterBind",
+ static_cast<bool>(obj.descriptorBindingStorageImageUpdateAfterBind));
+ p.PrintKeyBool("descriptorBindingStorageBufferUpdateAfterBind",
+ static_cast<bool>(obj.descriptorBindingStorageBufferUpdateAfterBind));
+ p.PrintKeyBool("descriptorBindingUniformTexelBufferUpdateAfterBind",
+ static_cast<bool>(obj.descriptorBindingUniformTexelBufferUpdateAfterBind));
+ p.PrintKeyBool("descriptorBindingStorageTexelBufferUpdateAfterBind",
+ static_cast<bool>(obj.descriptorBindingStorageTexelBufferUpdateAfterBind));
+ p.PrintKeyBool("descriptorBindingUpdateUnusedWhilePending", static_cast<bool>(obj.descriptorBindingUpdateUnusedWhilePending));
+ p.PrintKeyBool("descriptorBindingPartiallyBound", static_cast<bool>(obj.descriptorBindingPartiallyBound));
+ p.PrintKeyBool("descriptorBindingVariableDescriptorCount", static_cast<bool>(obj.descriptorBindingVariableDescriptorCount));
+ p.PrintKeyBool("runtimeDescriptorArray", static_cast<bool>(obj.runtimeDescriptorArray));
+ p.PrintKeyBool("samplerFilterMinmax", static_cast<bool>(obj.samplerFilterMinmax));
+ p.PrintKeyBool("scalarBlockLayout", static_cast<bool>(obj.scalarBlockLayout));
+ p.PrintKeyBool("imagelessFramebuffer", static_cast<bool>(obj.imagelessFramebuffer));
+ p.PrintKeyBool("uniformBufferStandardLayout", static_cast<bool>(obj.uniformBufferStandardLayout));
+ p.PrintKeyBool("shaderSubgroupExtendedTypes", static_cast<bool>(obj.shaderSubgroupExtendedTypes));
+ p.PrintKeyBool("separateDepthStencilLayouts", static_cast<bool>(obj.separateDepthStencilLayouts));
+ p.PrintKeyBool("hostQueryReset", static_cast<bool>(obj.hostQueryReset));
+ p.PrintKeyBool("timelineSemaphore", static_cast<bool>(obj.timelineSemaphore));
+ p.PrintKeyBool("bufferDeviceAddress", static_cast<bool>(obj.bufferDeviceAddress));
+ p.PrintKeyBool("bufferDeviceAddressCaptureReplay", static_cast<bool>(obj.bufferDeviceAddressCaptureReplay));
+ p.PrintKeyBool("bufferDeviceAddressMultiDevice", static_cast<bool>(obj.bufferDeviceAddressMultiDevice));
+ p.PrintKeyBool("vulkanMemoryModel", static_cast<bool>(obj.vulkanMemoryModel));
+ p.PrintKeyBool("vulkanMemoryModelDeviceScope", static_cast<bool>(obj.vulkanMemoryModelDeviceScope));
+ p.PrintKeyBool("vulkanMemoryModelAvailabilityVisibilityChains",
+ static_cast<bool>(obj.vulkanMemoryModelAvailabilityVisibilityChains));
+ p.PrintKeyBool("shaderOutputViewportIndex", static_cast<bool>(obj.shaderOutputViewportIndex));
+ p.PrintKeyBool("shaderOutputLayer", static_cast<bool>(obj.shaderOutputLayer));
+ p.PrintKeyBool("subgroupBroadcastDynamicId", static_cast<bool>(obj.subgroupBroadcastDynamicId));
+}
+void DumpVkPhysicalDeviceVulkan12Properties(Printer &p, std::string name, const VkPhysicalDeviceVulkan12Properties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(52);
+ DumpVkDriverId(p, "driverID", obj.driverID);
+ p.PrintKeyString("driverName", obj.driverName);
+ p.PrintKeyString("driverInfo", obj.driverInfo);
+ DumpVkConformanceVersion(p, "conformanceVersion", obj.conformanceVersion);
+ DumpVkShaderFloatControlsIndependence(p, "denormBehaviorIndependence", obj.denormBehaviorIndependence);
+ DumpVkShaderFloatControlsIndependence(p, "roundingModeIndependence", obj.roundingModeIndependence);
+ p.PrintKeyBool("shaderSignedZeroInfNanPreserveFloat16", static_cast<bool>(obj.shaderSignedZeroInfNanPreserveFloat16));
+ p.PrintKeyBool("shaderSignedZeroInfNanPreserveFloat32", static_cast<bool>(obj.shaderSignedZeroInfNanPreserveFloat32));
+ p.PrintKeyBool("shaderSignedZeroInfNanPreserveFloat64", static_cast<bool>(obj.shaderSignedZeroInfNanPreserveFloat64));
+ p.PrintKeyBool("shaderDenormPreserveFloat16", static_cast<bool>(obj.shaderDenormPreserveFloat16));
+ p.PrintKeyBool("shaderDenormPreserveFloat32", static_cast<bool>(obj.shaderDenormPreserveFloat32));
+ p.PrintKeyBool("shaderDenormPreserveFloat64", static_cast<bool>(obj.shaderDenormPreserveFloat64));
+ p.PrintKeyBool("shaderDenormFlushToZeroFloat16", static_cast<bool>(obj.shaderDenormFlushToZeroFloat16));
+ p.PrintKeyBool("shaderDenormFlushToZeroFloat32", static_cast<bool>(obj.shaderDenormFlushToZeroFloat32));
+ p.PrintKeyBool("shaderDenormFlushToZeroFloat64", static_cast<bool>(obj.shaderDenormFlushToZeroFloat64));
+ p.PrintKeyBool("shaderRoundingModeRTEFloat16", static_cast<bool>(obj.shaderRoundingModeRTEFloat16));
+ p.PrintKeyBool("shaderRoundingModeRTEFloat32", static_cast<bool>(obj.shaderRoundingModeRTEFloat32));
+ p.PrintKeyBool("shaderRoundingModeRTEFloat64", static_cast<bool>(obj.shaderRoundingModeRTEFloat64));
+ p.PrintKeyBool("shaderRoundingModeRTZFloat16", static_cast<bool>(obj.shaderRoundingModeRTZFloat16));
+ p.PrintKeyBool("shaderRoundingModeRTZFloat32", static_cast<bool>(obj.shaderRoundingModeRTZFloat32));
+ p.PrintKeyBool("shaderRoundingModeRTZFloat64", static_cast<bool>(obj.shaderRoundingModeRTZFloat64));
+ p.PrintKeyValue("maxUpdateAfterBindDescriptorsInAllPools", obj.maxUpdateAfterBindDescriptorsInAllPools);
+ p.PrintKeyBool("shaderUniformBufferArrayNonUniformIndexingNative",
+ static_cast<bool>(obj.shaderUniformBufferArrayNonUniformIndexingNative));
+ p.PrintKeyBool("shaderSampledImageArrayNonUniformIndexingNative",
+ static_cast<bool>(obj.shaderSampledImageArrayNonUniformIndexingNative));
+ p.PrintKeyBool("shaderStorageBufferArrayNonUniformIndexingNative",
+ static_cast<bool>(obj.shaderStorageBufferArrayNonUniformIndexingNative));
+ p.PrintKeyBool("shaderStorageImageArrayNonUniformIndexingNative",
+ static_cast<bool>(obj.shaderStorageImageArrayNonUniformIndexingNative));
+ p.PrintKeyBool("shaderInputAttachmentArrayNonUniformIndexingNative",
+ static_cast<bool>(obj.shaderInputAttachmentArrayNonUniformIndexingNative));
+ p.PrintKeyBool("robustBufferAccessUpdateAfterBind", static_cast<bool>(obj.robustBufferAccessUpdateAfterBind));
+ p.PrintKeyBool("quadDivergentImplicitLod", static_cast<bool>(obj.quadDivergentImplicitLod));
+ p.PrintKeyValue("maxPerStageDescriptorUpdateAfterBindSamplers", obj.maxPerStageDescriptorUpdateAfterBindSamplers);
+ p.PrintKeyValue("maxPerStageDescriptorUpdateAfterBindUniformBuffers", obj.maxPerStageDescriptorUpdateAfterBindUniformBuffers);
+ p.PrintKeyValue("maxPerStageDescriptorUpdateAfterBindStorageBuffers", obj.maxPerStageDescriptorUpdateAfterBindStorageBuffers);
+ p.PrintKeyValue("maxPerStageDescriptorUpdateAfterBindSampledImages", obj.maxPerStageDescriptorUpdateAfterBindSampledImages);
+ p.PrintKeyValue("maxPerStageDescriptorUpdateAfterBindStorageImages", obj.maxPerStageDescriptorUpdateAfterBindStorageImages);
+ p.PrintKeyValue("maxPerStageDescriptorUpdateAfterBindInputAttachments",
+ obj.maxPerStageDescriptorUpdateAfterBindInputAttachments);
+ p.PrintKeyValue("maxPerStageUpdateAfterBindResources", obj.maxPerStageUpdateAfterBindResources);
+ p.PrintKeyValue("maxDescriptorSetUpdateAfterBindSamplers", obj.maxDescriptorSetUpdateAfterBindSamplers);
+ p.PrintKeyValue("maxDescriptorSetUpdateAfterBindUniformBuffers", obj.maxDescriptorSetUpdateAfterBindUniformBuffers);
+ p.PrintKeyValue("maxDescriptorSetUpdateAfterBindUniformBuffersDynamic",
+ obj.maxDescriptorSetUpdateAfterBindUniformBuffersDynamic);
+ p.PrintKeyValue("maxDescriptorSetUpdateAfterBindStorageBuffers", obj.maxDescriptorSetUpdateAfterBindStorageBuffers);
+ p.PrintKeyValue("maxDescriptorSetUpdateAfterBindStorageBuffersDynamic",
+ obj.maxDescriptorSetUpdateAfterBindStorageBuffersDynamic);
+ p.PrintKeyValue("maxDescriptorSetUpdateAfterBindSampledImages", obj.maxDescriptorSetUpdateAfterBindSampledImages);
+ p.PrintKeyValue("maxDescriptorSetUpdateAfterBindStorageImages", obj.maxDescriptorSetUpdateAfterBindStorageImages);
+ p.PrintKeyValue("maxDescriptorSetUpdateAfterBindInputAttachments", obj.maxDescriptorSetUpdateAfterBindInputAttachments);
+ DumpVkResolveModeFlags(p, "supportedDepthResolveModes", obj.supportedDepthResolveModes);
+ DumpVkResolveModeFlags(p, "supportedStencilResolveModes", obj.supportedStencilResolveModes);
+ p.PrintKeyBool("independentResolveNone", static_cast<bool>(obj.independentResolveNone));
+ p.PrintKeyBool("independentResolve", static_cast<bool>(obj.independentResolve));
+ p.PrintKeyBool("filterMinmaxSingleComponentFormats", static_cast<bool>(obj.filterMinmaxSingleComponentFormats));
+ p.PrintKeyBool("filterMinmaxImageComponentMapping", static_cast<bool>(obj.filterMinmaxImageComponentMapping));
+ p.PrintKeyValue("maxTimelineSemaphoreValueDifference", obj.maxTimelineSemaphoreValueDifference);
+ DumpVkSampleCountFlags(p, "framebufferIntegerColorSampleCounts", obj.framebufferIntegerColorSampleCounts);
+}
+void DumpVkPhysicalDeviceVulkan13Features(Printer &p, std::string name, const VkPhysicalDeviceVulkan13Features &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(50);
+ p.PrintKeyBool("robustImageAccess", static_cast<bool>(obj.robustImageAccess));
+ p.PrintKeyBool("inlineUniformBlock", static_cast<bool>(obj.inlineUniformBlock));
+ p.PrintKeyBool("descriptorBindingInlineUniformBlockUpdateAfterBind",
+ static_cast<bool>(obj.descriptorBindingInlineUniformBlockUpdateAfterBind));
+ p.PrintKeyBool("pipelineCreationCacheControl", static_cast<bool>(obj.pipelineCreationCacheControl));
+ p.PrintKeyBool("privateData", static_cast<bool>(obj.privateData));
+ p.PrintKeyBool("shaderDemoteToHelperInvocation", static_cast<bool>(obj.shaderDemoteToHelperInvocation));
+ p.PrintKeyBool("shaderTerminateInvocation", static_cast<bool>(obj.shaderTerminateInvocation));
+ p.PrintKeyBool("subgroupSizeControl", static_cast<bool>(obj.subgroupSizeControl));
+ p.PrintKeyBool("computeFullSubgroups", static_cast<bool>(obj.computeFullSubgroups));
+ p.PrintKeyBool("synchronization2", static_cast<bool>(obj.synchronization2));
+ p.PrintKeyBool("textureCompressionASTC_HDR", static_cast<bool>(obj.textureCompressionASTC_HDR));
+ p.PrintKeyBool("shaderZeroInitializeWorkgroupMemory", static_cast<bool>(obj.shaderZeroInitializeWorkgroupMemory));
+ p.PrintKeyBool("dynamicRendering", static_cast<bool>(obj.dynamicRendering));
+ p.PrintKeyBool("shaderIntegerDotProduct", static_cast<bool>(obj.shaderIntegerDotProduct));
+ p.PrintKeyBool("maintenance4", static_cast<bool>(obj.maintenance4));
+}
+void DumpVkPhysicalDeviceVulkan13Properties(Printer &p, std::string name, const VkPhysicalDeviceVulkan13Properties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(77);
+ p.PrintKeyValue("minSubgroupSize", obj.minSubgroupSize);
+ p.PrintKeyValue("maxSubgroupSize", obj.maxSubgroupSize);
+ p.PrintKeyValue("maxComputeWorkgroupSubgroups", obj.maxComputeWorkgroupSubgroups);
+ DumpVkShaderStageFlags(p, "requiredSubgroupSizeStages", obj.requiredSubgroupSizeStages);
+ p.PrintKeyValue("maxInlineUniformBlockSize", obj.maxInlineUniformBlockSize);
+ p.PrintKeyValue("maxPerStageDescriptorInlineUniformBlocks", obj.maxPerStageDescriptorInlineUniformBlocks);
+ p.PrintKeyValue("maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks",
+ obj.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks);
+ p.PrintKeyValue("maxDescriptorSetInlineUniformBlocks", obj.maxDescriptorSetInlineUniformBlocks);
+ p.PrintKeyValue("maxDescriptorSetUpdateAfterBindInlineUniformBlocks", obj.maxDescriptorSetUpdateAfterBindInlineUniformBlocks);
+ p.PrintKeyValue("maxInlineUniformTotalSize", obj.maxInlineUniformTotalSize);
+ p.PrintKeyBool("integerDotProduct8BitUnsignedAccelerated", static_cast<bool>(obj.integerDotProduct8BitUnsignedAccelerated));
+ p.PrintKeyBool("integerDotProduct8BitSignedAccelerated", static_cast<bool>(obj.integerDotProduct8BitSignedAccelerated));
+ p.PrintKeyBool("integerDotProduct8BitMixedSignednessAccelerated",
+ static_cast<bool>(obj.integerDotProduct8BitMixedSignednessAccelerated));
+ p.PrintKeyBool("integerDotProduct4x8BitPackedUnsignedAccelerated",
+ static_cast<bool>(obj.integerDotProduct4x8BitPackedUnsignedAccelerated));
+ p.PrintKeyBool("integerDotProduct4x8BitPackedSignedAccelerated",
+ static_cast<bool>(obj.integerDotProduct4x8BitPackedSignedAccelerated));
+ p.PrintKeyBool("integerDotProduct4x8BitPackedMixedSignednessAccelerated",
+ static_cast<bool>(obj.integerDotProduct4x8BitPackedMixedSignednessAccelerated));
+ p.PrintKeyBool("integerDotProduct16BitUnsignedAccelerated", static_cast<bool>(obj.integerDotProduct16BitUnsignedAccelerated));
+ p.PrintKeyBool("integerDotProduct16BitSignedAccelerated", static_cast<bool>(obj.integerDotProduct16BitSignedAccelerated));
+ p.PrintKeyBool("integerDotProduct16BitMixedSignednessAccelerated",
+ static_cast<bool>(obj.integerDotProduct16BitMixedSignednessAccelerated));
+ p.PrintKeyBool("integerDotProduct32BitUnsignedAccelerated", static_cast<bool>(obj.integerDotProduct32BitUnsignedAccelerated));
+ p.PrintKeyBool("integerDotProduct32BitSignedAccelerated", static_cast<bool>(obj.integerDotProduct32BitSignedAccelerated));
+ p.PrintKeyBool("integerDotProduct32BitMixedSignednessAccelerated",
+ static_cast<bool>(obj.integerDotProduct32BitMixedSignednessAccelerated));
+ p.PrintKeyBool("integerDotProduct64BitUnsignedAccelerated", static_cast<bool>(obj.integerDotProduct64BitUnsignedAccelerated));
+ p.PrintKeyBool("integerDotProduct64BitSignedAccelerated", static_cast<bool>(obj.integerDotProduct64BitSignedAccelerated));
+ p.PrintKeyBool("integerDotProduct64BitMixedSignednessAccelerated",
+ static_cast<bool>(obj.integerDotProduct64BitMixedSignednessAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating8BitUnsignedAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating8BitUnsignedAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating8BitSignedAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating8BitSignedAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating16BitUnsignedAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating16BitUnsignedAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating16BitSignedAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating16BitSignedAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating32BitUnsignedAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating32BitUnsignedAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating32BitSignedAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating32BitSignedAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating64BitUnsignedAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating64BitUnsignedAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating64BitSignedAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating64BitSignedAccelerated));
+ p.PrintKeyBool("integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated",
+ static_cast<bool>(obj.integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated));
+ p.PrintKeyValue("storageTexelBufferOffsetAlignmentBytes", to_hex_str(p, obj.storageTexelBufferOffsetAlignmentBytes));
+ p.PrintKeyBool("storageTexelBufferOffsetSingleTexelAlignment",
+ static_cast<bool>(obj.storageTexelBufferOffsetSingleTexelAlignment));
+ p.PrintKeyValue("uniformTexelBufferOffsetAlignmentBytes", to_hex_str(p, obj.uniformTexelBufferOffsetAlignmentBytes));
+ p.PrintKeyBool("uniformTexelBufferOffsetSingleTexelAlignment",
+ static_cast<bool>(obj.uniformTexelBufferOffsetSingleTexelAlignment));
+ p.PrintKeyValue("maxBufferSize", to_hex_str(p, obj.maxBufferSize));
+}
+void DumpVkPhysicalDeviceVulkan14Features(Printer &p, std::string name, const VkPhysicalDeviceVulkan14Features &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(38);
+ p.PrintKeyBool("globalPriorityQuery", static_cast<bool>(obj.globalPriorityQuery));
+ p.PrintKeyBool("shaderSubgroupRotate", static_cast<bool>(obj.shaderSubgroupRotate));
+ p.PrintKeyBool("shaderSubgroupRotateClustered", static_cast<bool>(obj.shaderSubgroupRotateClustered));
+ p.PrintKeyBool("shaderFloatControls2", static_cast<bool>(obj.shaderFloatControls2));
+ p.PrintKeyBool("shaderExpectAssume", static_cast<bool>(obj.shaderExpectAssume));
+ p.PrintKeyBool("rectangularLines", static_cast<bool>(obj.rectangularLines));
+ p.PrintKeyBool("bresenhamLines", static_cast<bool>(obj.bresenhamLines));
+ p.PrintKeyBool("smoothLines", static_cast<bool>(obj.smoothLines));
+ p.PrintKeyBool("stippledRectangularLines", static_cast<bool>(obj.stippledRectangularLines));
+ p.PrintKeyBool("stippledBresenhamLines", static_cast<bool>(obj.stippledBresenhamLines));
+ p.PrintKeyBool("stippledSmoothLines", static_cast<bool>(obj.stippledSmoothLines));
+ p.PrintKeyBool("vertexAttributeInstanceRateDivisor", static_cast<bool>(obj.vertexAttributeInstanceRateDivisor));
+ p.PrintKeyBool("vertexAttributeInstanceRateZeroDivisor", static_cast<bool>(obj.vertexAttributeInstanceRateZeroDivisor));
+ p.PrintKeyBool("indexTypeUint8", static_cast<bool>(obj.indexTypeUint8));
+ p.PrintKeyBool("dynamicRenderingLocalRead", static_cast<bool>(obj.dynamicRenderingLocalRead));
+ p.PrintKeyBool("maintenance5", static_cast<bool>(obj.maintenance5));
+ p.PrintKeyBool("maintenance6", static_cast<bool>(obj.maintenance6));
+ p.PrintKeyBool("pipelineProtectedAccess", static_cast<bool>(obj.pipelineProtectedAccess));
+ p.PrintKeyBool("pipelineRobustness", static_cast<bool>(obj.pipelineRobustness));
+ p.PrintKeyBool("hostImageCopy", static_cast<bool>(obj.hostImageCopy));
+ p.PrintKeyBool("pushDescriptor", static_cast<bool>(obj.pushDescriptor));
+}
+void DumpVkPhysicalDeviceVulkan14Properties(Printer &p, std::string name, const VkPhysicalDeviceVulkan14Properties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(51);
+ p.PrintKeyValue("lineSubPixelPrecisionBits", obj.lineSubPixelPrecisionBits);
+ p.PrintKeyValue("maxVertexAttribDivisor", obj.maxVertexAttribDivisor);
+ p.PrintKeyBool("supportsNonZeroFirstInstance", static_cast<bool>(obj.supportsNonZeroFirstInstance));
+ p.PrintKeyValue("maxPushDescriptors", obj.maxPushDescriptors);
+ p.PrintKeyBool("dynamicRenderingLocalReadDepthStencilAttachments",
+ static_cast<bool>(obj.dynamicRenderingLocalReadDepthStencilAttachments));
+ p.PrintKeyBool("dynamicRenderingLocalReadMultisampledAttachments",
+ static_cast<bool>(obj.dynamicRenderingLocalReadMultisampledAttachments));
+ p.PrintKeyBool("earlyFragmentMultisampleCoverageAfterSampleCounting",
+ static_cast<bool>(obj.earlyFragmentMultisampleCoverageAfterSampleCounting));
+ p.PrintKeyBool("earlyFragmentSampleMaskTestBeforeSampleCounting",
+ static_cast<bool>(obj.earlyFragmentSampleMaskTestBeforeSampleCounting));
+ p.PrintKeyBool("depthStencilSwizzleOneSupport", static_cast<bool>(obj.depthStencilSwizzleOneSupport));
+ p.PrintKeyBool("polygonModePointSize", static_cast<bool>(obj.polygonModePointSize));
+ p.PrintKeyBool("nonStrictSinglePixelWideLinesUseParallelogram",
+ static_cast<bool>(obj.nonStrictSinglePixelWideLinesUseParallelogram));
+ p.PrintKeyBool("nonStrictWideLinesUseParallelogram", static_cast<bool>(obj.nonStrictWideLinesUseParallelogram));
+ p.PrintKeyBool("blockTexelViewCompatibleMultipleLayers", static_cast<bool>(obj.blockTexelViewCompatibleMultipleLayers));
+ p.PrintKeyValue("maxCombinedImageSamplerDescriptorCount", obj.maxCombinedImageSamplerDescriptorCount);
+ p.PrintKeyBool("fragmentShadingRateClampCombinerInputs", static_cast<bool>(obj.fragmentShadingRateClampCombinerInputs));
+ DumpVkPipelineRobustnessBufferBehavior(p, "defaultRobustnessStorageBuffers", obj.defaultRobustnessStorageBuffers);
+ DumpVkPipelineRobustnessBufferBehavior(p, "defaultRobustnessUniformBuffers", obj.defaultRobustnessUniformBuffers);
+ DumpVkPipelineRobustnessBufferBehavior(p, "defaultRobustnessVertexInputs", obj.defaultRobustnessVertexInputs);
+ DumpVkPipelineRobustnessImageBehavior(p, "defaultRobustnessImages", obj.defaultRobustnessImages);
+ p.PrintKeyValue("copySrcLayoutCount", obj.copySrcLayoutCount);
+ if (obj.copySrcLayoutCount == 0 || obj.pCopySrcLayouts == nullptr) {
+ p.PrintKeyString("pCopySrcLayouts", "NULL");
+ } else {
+ ArrayWrapper arr(p, "pCopySrcLayouts", obj.copySrcLayoutCount);
+ for (uint32_t i = 0; i < obj.copySrcLayoutCount; i++) {
+ DumpVkImageLayout(p, std::to_string(i), obj.pCopySrcLayouts[i]);
+ }
+ }
+ p.PrintKeyValue("copyDstLayoutCount", obj.copyDstLayoutCount);
+ if (obj.copyDstLayoutCount == 0 || obj.pCopyDstLayouts == nullptr) {
+ p.PrintKeyString("pCopyDstLayouts", "NULL");
+ } else {
+ ArrayWrapper arr(p, "pCopyDstLayouts", obj.copyDstLayoutCount);
+ for (uint32_t i = 0; i < obj.copyDstLayoutCount; i++) {
+ DumpVkImageLayout(p, std::to_string(i), obj.pCopyDstLayouts[i]);
+ }
+ }
+ p.PrintKeyValue("optimalTilingLayoutUUID", obj.optimalTilingLayoutUUID);
+ p.PrintKeyBool("identicalMemoryTypeRequirements", static_cast<bool>(obj.identicalMemoryTypeRequirements));
+}
+void DumpVkPhysicalDeviceVulkanMemoryModelFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceVulkanMemoryModelFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(45);
+ p.PrintKeyBool("vulkanMemoryModel", static_cast<bool>(obj.vulkanMemoryModel));
+ p.PrintKeyBool("vulkanMemoryModelDeviceScope", static_cast<bool>(obj.vulkanMemoryModelDeviceScope));
+ p.PrintKeyBool("vulkanMemoryModelAvailabilityVisibilityChains",
+ static_cast<bool>(obj.vulkanMemoryModelAvailabilityVisibilityChains));
+}
+void DumpVkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR(
+ Printer &p, std::string name, const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(46);
+ p.PrintKeyBool("workgroupMemoryExplicitLayout", static_cast<bool>(obj.workgroupMemoryExplicitLayout));
+ p.PrintKeyBool("workgroupMemoryExplicitLayoutScalarBlockLayout",
+ static_cast<bool>(obj.workgroupMemoryExplicitLayoutScalarBlockLayout));
+ p.PrintKeyBool("workgroupMemoryExplicitLayout8BitAccess", static_cast<bool>(obj.workgroupMemoryExplicitLayout8BitAccess));
+ p.PrintKeyBool("workgroupMemoryExplicitLayout16BitAccess", static_cast<bool>(obj.workgroupMemoryExplicitLayout16BitAccess));
+}
+void DumpVkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(21);
+ p.PrintKeyBool("ycbcr2plane444Formats", static_cast<bool>(obj.ycbcr2plane444Formats));
+}
+void DumpVkPhysicalDeviceYcbcrImageArraysFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(16);
+ p.PrintKeyBool("ycbcrImageArrays", static_cast<bool>(obj.ycbcrImageArrays));
+}
+void DumpVkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT(Printer &p, std::string name,
+ const VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(26);
+ p.PrintKeyBool("zeroInitializeDeviceMemory", static_cast<bool>(obj.zeroInitializeDeviceMemory));
+}
+void DumpVkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures(Printer &p, std::string name,
+ const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(35);
+ p.PrintKeyBool("shaderZeroInitializeWorkgroupMemory", static_cast<bool>(obj.shaderZeroInitializeWorkgroupMemory));
+}
+void DumpVkPresentTimingSurfaceCapabilitiesEXT(Printer &p, std::string name, const VkPresentTimingSurfaceCapabilitiesEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(30);
+ p.PrintKeyBool("presentTimingSupported", static_cast<bool>(obj.presentTimingSupported));
+ p.PrintKeyBool("presentAtAbsoluteTimeSupported", static_cast<bool>(obj.presentAtAbsoluteTimeSupported));
+ p.PrintKeyBool("presentAtRelativeTimeSupported", static_cast<bool>(obj.presentAtRelativeTimeSupported));
+ DumpVkPresentStageFlagsEXT(p, "presentStageQueries", obj.presentStageQueries);
+}
+void DumpVkQueueFamilyGlobalPriorityProperties(Printer &p, std::string name, const VkQueueFamilyGlobalPriorityProperties &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(13);
+ p.PrintKeyValue("priorityCount", obj.priorityCount);
+ ArrayWrapper arr(p, "priorities", obj.priorityCount);
+ for (uint32_t i = 0; i < obj.priorityCount; i++) {
+ if (p.Type() == OutputType::json)
+ p.PrintString(std::string("VK_") + VkQueueGlobalPriorityString(obj.priorities[i]));
+ else
+ p.PrintString(VkQueueGlobalPriorityString(obj.priorities[i]));
+ }
+}
+void DumpVkQueueFamilyOwnershipTransferPropertiesKHR(Printer &p, std::string name,
+ const VkQueueFamilyOwnershipTransferPropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(35);
+ p.PrintKeyValue("optimalImageTransferToQueueFamilies", obj.optimalImageTransferToQueueFamilies);
+}
+void DumpVkQueueFamilyQueryResultStatusPropertiesKHR(Printer &p, std::string name,
+ const VkQueueFamilyQueryResultStatusPropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(24);
+ p.PrintKeyBool("queryResultStatusSupport", static_cast<bool>(obj.queryResultStatusSupport));
+}
+void DumpVkQueueFamilyVideoPropertiesKHR(Printer &p, std::string name, const VkQueueFamilyVideoPropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpVkVideoCodecOperationFlagsKHR(p, "videoCodecOperations", obj.videoCodecOperations);
+}
+void DumpVkSharedPresentSurfaceCapabilitiesKHR(Printer &p, std::string name, const VkSharedPresentSurfaceCapabilitiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpVkImageUsageFlags(p, "sharedPresentSupportedUsageFlags", obj.sharedPresentSupportedUsageFlags);
+}
+void DumpVkSubpassResolvePerformanceQueryEXT(Printer &p, std::string name, const VkSubpassResolvePerformanceQueryEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(7);
+ p.PrintKeyBool("optimal", static_cast<bool>(obj.optimal));
+}
+#ifdef VK_USE_PLATFORM_WIN32_KHR
+void DumpVkSurfaceCapabilitiesFullScreenExclusiveEXT(Printer &p, std::string name,
+ const VkSurfaceCapabilitiesFullScreenExclusiveEXT &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(28);
+ p.PrintKeyBool("fullScreenExclusiveSupported", static_cast<bool>(obj.fullScreenExclusiveSupported));
+}
+#endif // VK_USE_PLATFORM_WIN32_KHR
+void DumpVkSurfaceCapabilitiesKHR(Printer &p, std::string name, const VkSurfaceCapabilitiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(19);
+ p.PrintKeyValue("minImageCount", obj.minImageCount);
+ p.PrintKeyValue("maxImageCount", obj.maxImageCount);
+ DumpVkExtent2D(p, "currentExtent", obj.currentExtent);
+ DumpVkExtent2D(p, "minImageExtent", obj.minImageExtent);
+ DumpVkExtent2D(p, "maxImageExtent", obj.maxImageExtent);
+ p.PrintKeyValue("maxImageArrayLayers", obj.maxImageArrayLayers);
+ DumpVkSurfaceTransformFlagsKHR(p, "supportedTransforms", obj.supportedTransforms);
+ DumpVkSurfaceTransformFlagBitsKHR(p, "currentTransform", obj.currentTransform);
+ DumpVkCompositeAlphaFlagsKHR(p, "supportedCompositeAlpha", obj.supportedCompositeAlpha);
+ DumpVkImageUsageFlags(p, "supportedUsageFlags", obj.supportedUsageFlags);
+}
+void DumpVkSurfaceCapabilitiesPresentId2KHR(Printer &p, std::string name, const VkSurfaceCapabilitiesPresentId2KHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(19);
+ p.PrintKeyBool("presentId2Supported", static_cast<bool>(obj.presentId2Supported));
+}
+void DumpVkSurfaceCapabilitiesPresentWait2KHR(Printer &p, std::string name, const VkSurfaceCapabilitiesPresentWait2KHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(21);
+ p.PrintKeyBool("presentWait2Supported", static_cast<bool>(obj.presentWait2Supported));
+}
+void DumpVkSurfaceFormatKHR(Printer &p, std::string name, const VkSurfaceFormatKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpVkFormat(p, "format", obj.format);
+ DumpVkColorSpaceKHR(p, "colorSpace", obj.colorSpace);
+}
+void DumpVkSurfacePresentModeCompatibilityKHR(Printer &p, std::string name, const VkSurfacePresentModeCompatibilityKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(16);
+ p.PrintKeyValue("presentModeCount", obj.presentModeCount);
+ if (obj.presentModeCount == 0 || obj.pPresentModes == nullptr) {
+ p.PrintKeyString("pPresentModes", "NULL");
+ } else {
+ ArrayWrapper arr(p, "pPresentModes", obj.presentModeCount);
+ for (uint32_t i = 0; i < obj.presentModeCount; i++) {
+ DumpVkPresentModeKHR(p, std::to_string(i), obj.pPresentModes[i]);
+ }
+ }
+}
+void DumpVkSurfacePresentScalingCapabilitiesKHR(Printer &p, std::string name, const VkSurfacePresentScalingCapabilitiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpVkPresentScalingFlagsKHR(p, "supportedPresentScaling", obj.supportedPresentScaling);
+ DumpVkPresentGravityFlagsKHR(p, "supportedPresentGravityX", obj.supportedPresentGravityX);
+ DumpVkPresentGravityFlagsKHR(p, "supportedPresentGravityY", obj.supportedPresentGravityY);
+ DumpVkExtent2D(p, "minScaledImageExtent", obj.minScaledImageExtent);
+ DumpVkExtent2D(p, "maxScaledImageExtent", obj.maxScaledImageExtent);
+}
+void DumpVkSurfaceProtectedCapabilitiesKHR(Printer &p, std::string name, const VkSurfaceProtectedCapabilitiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(17);
+ p.PrintKeyBool("supportsProtected", static_cast<bool>(obj.supportsProtected));
+}
+void DumpVkVideoCapabilitiesKHR(Printer &p, std::string name, const VkVideoCapabilitiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(33);
+ DumpVkVideoCapabilityFlagsKHR(p, "flags", obj.flags);
+ p.PrintKeyValue("minBitstreamBufferOffsetAlignment", to_hex_str(p, obj.minBitstreamBufferOffsetAlignment));
+ p.PrintKeyValue("minBitstreamBufferSizeAlignment", to_hex_str(p, obj.minBitstreamBufferSizeAlignment));
+ DumpVkExtent2D(p, "pictureAccessGranularity", obj.pictureAccessGranularity);
+ DumpVkExtent2D(p, "minCodedExtent", obj.minCodedExtent);
+ DumpVkExtent2D(p, "maxCodedExtent", obj.maxCodedExtent);
+ p.PrintKeyValue("maxDpbSlots", obj.maxDpbSlots);
+ p.PrintKeyValue("maxActiveReferencePictures", obj.maxActiveReferencePictures);
+ DumpVkExtensionProperties(p, "stdHeaderVersion", obj.stdHeaderVersion);
+}
+void DumpVkVideoDecodeAV1CapabilitiesKHR(Printer &p, std::string name, const VkVideoDecodeAV1CapabilitiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpStdVideoAV1Level(p, "maxLevel", obj.maxLevel);
+}
+void DumpVkVideoDecodeAV1ProfileInfoKHR(Printer &p, std::string name, const VkVideoDecodeAV1ProfileInfoKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(16);
+ DumpStdVideoAV1Profile(p, "stdProfile", obj.stdProfile);
+ p.PrintKeyBool("filmGrainSupport", static_cast<bool>(obj.filmGrainSupport));
+}
+void DumpVkVideoDecodeCapabilitiesKHR(Printer &p, std::string name, const VkVideoDecodeCapabilitiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpVkVideoDecodeCapabilityFlagsKHR(p, "flags", obj.flags);
+}
+void DumpVkVideoDecodeH264CapabilitiesKHR(Printer &p, std::string name, const VkVideoDecodeH264CapabilitiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpStdVideoH264LevelIdc(p, "maxLevelIdc", obj.maxLevelIdc);
+ DumpVkOffset2D(p, "fieldOffsetGranularity", obj.fieldOffsetGranularity);
+}
+void DumpVkVideoDecodeH264ProfileInfoKHR(Printer &p, std::string name, const VkVideoDecodeH264ProfileInfoKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpStdVideoH264ProfileIdc(p, "stdProfileIdc", obj.stdProfileIdc);
+ DumpVkVideoDecodeH264PictureLayoutFlagBitsKHR(p, "pictureLayout", obj.pictureLayout);
+}
+void DumpVkVideoDecodeH265CapabilitiesKHR(Printer &p, std::string name, const VkVideoDecodeH265CapabilitiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpStdVideoH265LevelIdc(p, "maxLevelIdc", obj.maxLevelIdc);
+}
+void DumpVkVideoDecodeH265ProfileInfoKHR(Printer &p, std::string name, const VkVideoDecodeH265ProfileInfoKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpStdVideoH265ProfileIdc(p, "stdProfileIdc", obj.stdProfileIdc);
+}
+void DumpVkVideoDecodeUsageInfoKHR(Printer &p, std::string name, const VkVideoDecodeUsageInfoKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpVkVideoDecodeUsageFlagsKHR(p, "videoUsageHints", obj.videoUsageHints);
+}
+void DumpVkVideoDecodeVP9CapabilitiesKHR(Printer &p, std::string name, const VkVideoDecodeVP9CapabilitiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpStdVideoVP9Level(p, "maxLevel", obj.maxLevel);
+}
+void DumpVkVideoDecodeVP9ProfileInfoKHR(Printer &p, std::string name, const VkVideoDecodeVP9ProfileInfoKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpStdVideoVP9Profile(p, "stdProfile", obj.stdProfile);
+}
+void DumpVkVideoEncodeAV1CapabilitiesKHR(Printer &p, std::string name, const VkVideoEncodeAV1CapabilitiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(45);
+ DumpVkVideoEncodeAV1CapabilityFlagsKHR(p, "flags", obj.flags);
+ DumpStdVideoAV1Level(p, "maxLevel", obj.maxLevel);
+ DumpVkExtent2D(p, "codedPictureAlignment", obj.codedPictureAlignment);
+ DumpVkExtent2D(p, "maxTiles", obj.maxTiles);
+ DumpVkExtent2D(p, "minTileSize", obj.minTileSize);
+ DumpVkExtent2D(p, "maxTileSize", obj.maxTileSize);
+ DumpVkVideoEncodeAV1SuperblockSizeFlagsKHR(p, "superblockSizes", obj.superblockSizes);
+ p.PrintKeyValue("maxSingleReferenceCount", obj.maxSingleReferenceCount);
+ p.PrintKeyValue("singleReferenceNameMask", obj.singleReferenceNameMask);
+ p.PrintKeyValue("maxUnidirectionalCompoundReferenceCount", obj.maxUnidirectionalCompoundReferenceCount);
+ p.PrintKeyValue("maxUnidirectionalCompoundGroup1ReferenceCount", obj.maxUnidirectionalCompoundGroup1ReferenceCount);
+ p.PrintKeyValue("unidirectionalCompoundReferenceNameMask", obj.unidirectionalCompoundReferenceNameMask);
+ p.PrintKeyValue("maxBidirectionalCompoundReferenceCount", obj.maxBidirectionalCompoundReferenceCount);
+ p.PrintKeyValue("maxBidirectionalCompoundGroup1ReferenceCount", obj.maxBidirectionalCompoundGroup1ReferenceCount);
+ p.PrintKeyValue("maxBidirectionalCompoundGroup2ReferenceCount", obj.maxBidirectionalCompoundGroup2ReferenceCount);
+ p.PrintKeyValue("bidirectionalCompoundReferenceNameMask", obj.bidirectionalCompoundReferenceNameMask);
+ p.PrintKeyValue("maxTemporalLayerCount", obj.maxTemporalLayerCount);
+ p.PrintKeyValue("maxSpatialLayerCount", obj.maxSpatialLayerCount);
+ p.PrintKeyValue("maxOperatingPoints", obj.maxOperatingPoints);
+ p.PrintKeyValue("minQIndex", obj.minQIndex);
+ p.PrintKeyValue("maxQIndex", obj.maxQIndex);
+ p.PrintKeyBool("prefersGopRemainingFrames", static_cast<bool>(obj.prefersGopRemainingFrames));
+ p.PrintKeyBool("requiresGopRemainingFrames", static_cast<bool>(obj.requiresGopRemainingFrames));
+ DumpVkVideoEncodeAV1StdFlagsKHR(p, "stdSyntaxFlags", obj.stdSyntaxFlags);
+}
+void DumpVkVideoEncodeAV1ProfileInfoKHR(Printer &p, std::string name, const VkVideoEncodeAV1ProfileInfoKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpStdVideoAV1Profile(p, "stdProfile", obj.stdProfile);
+}
+void DumpVkVideoEncodeAV1QuantizationMapCapabilitiesKHR(Printer &p, std::string name,
+ const VkVideoEncodeAV1QuantizationMapCapabilitiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(14);
+ p.PrintKeyValue("minQIndexDelta", obj.minQIndexDelta);
+ p.PrintKeyValue("maxQIndexDelta", obj.maxQIndexDelta);
+}
+void DumpVkVideoEncodeCapabilitiesKHR(Printer &p, std::string name, const VkVideoEncodeCapabilitiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(20);
+ DumpVkVideoEncodeCapabilityFlagsKHR(p, "flags", obj.flags);
+ DumpVkVideoEncodeRateControlModeFlagsKHR(p, "rateControlModes", obj.rateControlModes);
+ p.PrintKeyValue("maxRateControlLayers", obj.maxRateControlLayers);
+ p.PrintKeyValue("maxBitrate", obj.maxBitrate);
+ p.PrintKeyValue("maxQualityLevels", obj.maxQualityLevels);
+ DumpVkExtent2D(p, "encodeInputPictureGranularity", obj.encodeInputPictureGranularity);
+ DumpVkVideoEncodeFeedbackFlagsKHR(p, "supportedEncodeFeedbackFlags", obj.supportedEncodeFeedbackFlags);
+}
+void DumpVkVideoEncodeH264CapabilitiesKHR(Printer &p, std::string name, const VkVideoEncodeH264CapabilitiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(32);
+ DumpVkVideoEncodeH264CapabilityFlagsKHR(p, "flags", obj.flags);
+ DumpStdVideoH264LevelIdc(p, "maxLevelIdc", obj.maxLevelIdc);
+ p.PrintKeyValue("maxSliceCount", obj.maxSliceCount);
+ p.PrintKeyValue("maxPPictureL0ReferenceCount", obj.maxPPictureL0ReferenceCount);
+ p.PrintKeyValue("maxBPictureL0ReferenceCount", obj.maxBPictureL0ReferenceCount);
+ p.PrintKeyValue("maxL1ReferenceCount", obj.maxL1ReferenceCount);
+ p.PrintKeyValue("maxTemporalLayerCount", obj.maxTemporalLayerCount);
+ p.PrintKeyBool("expectDyadicTemporalLayerPattern", static_cast<bool>(obj.expectDyadicTemporalLayerPattern));
+ p.PrintKeyValue("minQp", obj.minQp);
+ p.PrintKeyValue("maxQp", obj.maxQp);
+ p.PrintKeyBool("prefersGopRemainingFrames", static_cast<bool>(obj.prefersGopRemainingFrames));
+ p.PrintKeyBool("requiresGopRemainingFrames", static_cast<bool>(obj.requiresGopRemainingFrames));
+ DumpVkVideoEncodeH264StdFlagsKHR(p, "stdSyntaxFlags", obj.stdSyntaxFlags);
+}
+void DumpVkVideoEncodeH264ProfileInfoKHR(Printer &p, std::string name, const VkVideoEncodeH264ProfileInfoKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpStdVideoH264ProfileIdc(p, "stdProfileIdc", obj.stdProfileIdc);
+}
+void DumpVkVideoEncodeH264QuantizationMapCapabilitiesKHR(Printer &p, std::string name,
+ const VkVideoEncodeH264QuantizationMapCapabilitiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(10);
+ p.PrintKeyValue("minQpDelta", obj.minQpDelta);
+ p.PrintKeyValue("maxQpDelta", obj.maxQpDelta);
+}
+void DumpVkVideoEncodeH265CapabilitiesKHR(Printer &p, std::string name, const VkVideoEncodeH265CapabilitiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(35);
+ DumpVkVideoEncodeH265CapabilityFlagsKHR(p, "flags", obj.flags);
+ DumpStdVideoH265LevelIdc(p, "maxLevelIdc", obj.maxLevelIdc);
+ p.PrintKeyValue("maxSliceSegmentCount", obj.maxSliceSegmentCount);
+ DumpVkExtent2D(p, "maxTiles", obj.maxTiles);
+ DumpVkVideoEncodeH265CtbSizeFlagsKHR(p, "ctbSizes", obj.ctbSizes);
+ DumpVkVideoEncodeH265TransformBlockSizeFlagsKHR(p, "transformBlockSizes", obj.transformBlockSizes);
+ p.PrintKeyValue("maxPPictureL0ReferenceCount", obj.maxPPictureL0ReferenceCount);
+ p.PrintKeyValue("maxBPictureL0ReferenceCount", obj.maxBPictureL0ReferenceCount);
+ p.PrintKeyValue("maxL1ReferenceCount", obj.maxL1ReferenceCount);
+ p.PrintKeyValue("maxSubLayerCount", obj.maxSubLayerCount);
+ p.PrintKeyBool("expectDyadicTemporalSubLayerPattern", static_cast<bool>(obj.expectDyadicTemporalSubLayerPattern));
+ p.PrintKeyValue("minQp", obj.minQp);
+ p.PrintKeyValue("maxQp", obj.maxQp);
+ p.PrintKeyBool("prefersGopRemainingFrames", static_cast<bool>(obj.prefersGopRemainingFrames));
+ p.PrintKeyBool("requiresGopRemainingFrames", static_cast<bool>(obj.requiresGopRemainingFrames));
+ DumpVkVideoEncodeH265StdFlagsKHR(p, "stdSyntaxFlags", obj.stdSyntaxFlags);
+}
+void DumpVkVideoEncodeH265ProfileInfoKHR(Printer &p, std::string name, const VkVideoEncodeH265ProfileInfoKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpStdVideoH265ProfileIdc(p, "stdProfileIdc", obj.stdProfileIdc);
+}
+void DumpVkVideoEncodeH265QuantizationMapCapabilitiesKHR(Printer &p, std::string name,
+ const VkVideoEncodeH265QuantizationMapCapabilitiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(10);
+ p.PrintKeyValue("minQpDelta", obj.minQpDelta);
+ p.PrintKeyValue("maxQpDelta", obj.maxQpDelta);
+}
+void DumpVkVideoEncodeIntraRefreshCapabilitiesKHR(Printer &p, std::string name,
+ const VkVideoEncodeIntraRefreshCapabilitiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(39);
+ DumpVkVideoEncodeIntraRefreshModeFlagsKHR(p, "intraRefreshModes", obj.intraRefreshModes);
+ p.PrintKeyValue("maxIntraRefreshCycleDuration", obj.maxIntraRefreshCycleDuration);
+ p.PrintKeyValue("maxIntraRefreshActiveReferencePictures", obj.maxIntraRefreshActiveReferencePictures);
+ p.PrintKeyBool("partitionIndependentIntraRefreshRegions", static_cast<bool>(obj.partitionIndependentIntraRefreshRegions));
+ p.PrintKeyBool("nonRectangularIntraRefreshRegions", static_cast<bool>(obj.nonRectangularIntraRefreshRegions));
+}
+void DumpVkVideoEncodeProfileRgbConversionInfoVALVE(Printer &p, std::string name,
+ const VkVideoEncodeProfileRgbConversionInfoVALVE &obj) {
+ ObjectWrapper object{p, name};
+ p.SetMinKeyWidth(26);
+ p.PrintKeyBool("performEncodeRgbConversion", static_cast<bool>(obj.performEncodeRgbConversion));
+}
+void DumpVkVideoEncodeQuantizationMapCapabilitiesKHR(Printer &p, std::string name,
+ const VkVideoEncodeQuantizationMapCapabilitiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpVkExtent2D(p, "maxQuantizationMapExtent", obj.maxQuantizationMapExtent);
+}
+void DumpVkVideoEncodeRgbConversionCapabilitiesVALVE(Printer &p, std::string name,
+ const VkVideoEncodeRgbConversionCapabilitiesVALVE &obj) {
+ ObjectWrapper object{p, name};
+ DumpVkVideoEncodeRgbModelConversionFlagsVALVE(p, "rgbModels", obj.rgbModels);
+ DumpVkVideoEncodeRgbRangeCompressionFlagsVALVE(p, "rgbRanges", obj.rgbRanges);
+ DumpVkVideoEncodeRgbChromaOffsetFlagsVALVE(p, "xChromaOffsets", obj.xChromaOffsets);
+ DumpVkVideoEncodeRgbChromaOffsetFlagsVALVE(p, "yChromaOffsets", obj.yChromaOffsets);
+}
+void DumpVkVideoEncodeUsageInfoKHR(Printer &p, std::string name, const VkVideoEncodeUsageInfoKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpVkVideoEncodeUsageFlagsKHR(p, "videoUsageHints", obj.videoUsageHints);
+ DumpVkVideoEncodeContentFlagsKHR(p, "videoContentHints", obj.videoContentHints);
+ DumpVkVideoEncodeTuningModeKHR(p, "tuningMode", obj.tuningMode);
+}
+void DumpVkVideoFormatAV1QuantizationMapPropertiesKHR(Printer &p, std::string name,
+ const VkVideoFormatAV1QuantizationMapPropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpVkVideoEncodeAV1SuperblockSizeFlagsKHR(p, "compatibleSuperblockSizes", obj.compatibleSuperblockSizes);
+}
+void DumpVkVideoFormatH265QuantizationMapPropertiesKHR(Printer &p, std::string name,
+ const VkVideoFormatH265QuantizationMapPropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpVkVideoEncodeH265CtbSizeFlagsKHR(p, "compatibleCtbSizes", obj.compatibleCtbSizes);
+}
+void DumpVkVideoFormatPropertiesKHR(Printer &p, std::string name, const VkVideoFormatPropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpVkFormat(p, "format", obj.format);
+ DumpVkComponentMapping(p, "componentMapping", obj.componentMapping);
+ DumpVkImageCreateFlags(p, "imageCreateFlags", obj.imageCreateFlags);
+ DumpVkImageType(p, "imageType", obj.imageType);
+ DumpVkImageTiling(p, "imageTiling", obj.imageTiling);
+ DumpVkImageUsageFlags(p, "imageUsageFlags", obj.imageUsageFlags);
+}
+void DumpVkVideoFormatQuantizationMapPropertiesKHR(Printer &p, std::string name,
+ const VkVideoFormatQuantizationMapPropertiesKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpVkExtent2D(p, "quantizationMapTexelSize", obj.quantizationMapTexelSize);
+}
+void DumpVkVideoProfileInfoKHR(Printer &p, std::string name, const VkVideoProfileInfoKHR &obj) {
+ ObjectWrapper object{p, name};
+ DumpVkVideoCodecOperationFlagBitsKHR(p, "videoCodecOperation", obj.videoCodecOperation);
+ DumpVkVideoChromaSubsamplingFlagsKHR(p, "chromaSubsampling", obj.chromaSubsampling);
+ DumpVkVideoComponentBitDepthFlagsKHR(p, "lumaBitDepth", obj.lumaBitDepth);
+ DumpVkVideoComponentBitDepthFlagsKHR(p, "chromaBitDepth", obj.chromaBitDepth);
+}
+struct phys_device_props2_chain {
+ phys_device_props2_chain() = default;
+ phys_device_props2_chain(const phys_device_props2_chain &) = delete;
+ phys_device_props2_chain &operator=(const phys_device_props2_chain &) = delete;
+ phys_device_props2_chain(phys_device_props2_chain &&) = delete;
+ phys_device_props2_chain &operator=(phys_device_props2_chain &&) = delete;
+ void *start_of_chain = nullptr;
+ VkPhysicalDeviceAccelerationStructurePropertiesKHR PhysicalDeviceAccelerationStructurePropertiesKHR{};
+ VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT PhysicalDeviceBlendOperationAdvancedPropertiesEXT{};
+ VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR PhysicalDeviceComputeShaderDerivativesPropertiesKHR{};
+ VkPhysicalDeviceConservativeRasterizationPropertiesEXT PhysicalDeviceConservativeRasterizationPropertiesEXT{};
+ VkPhysicalDeviceCooperativeMatrixPropertiesKHR PhysicalDeviceCooperativeMatrixPropertiesKHR{};
+ VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR PhysicalDeviceCopyMemoryIndirectPropertiesKHR{};
+ VkPhysicalDeviceCustomBorderColorPropertiesEXT PhysicalDeviceCustomBorderColorPropertiesEXT{};
+ VkPhysicalDeviceDepthStencilResolveProperties PhysicalDeviceDepthStencilResolveProperties{};
+ VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT{};
+ VkPhysicalDeviceDescriptorBufferPropertiesEXT PhysicalDeviceDescriptorBufferPropertiesEXT{};
+ VkPhysicalDeviceDescriptorHeapPropertiesEXT PhysicalDeviceDescriptorHeapPropertiesEXT{};
+ VkPhysicalDeviceDescriptorHeapTensorPropertiesARM PhysicalDeviceDescriptorHeapTensorPropertiesARM{};
+ VkPhysicalDeviceDescriptorIndexingProperties PhysicalDeviceDescriptorIndexingProperties{};
+ VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT{};
+ VkPhysicalDeviceDiscardRectanglePropertiesEXT PhysicalDeviceDiscardRectanglePropertiesEXT{};
+ VkPhysicalDeviceDriverProperties PhysicalDeviceDriverProperties{};
+ VkPhysicalDeviceDrmPropertiesEXT PhysicalDeviceDrmPropertiesEXT{};
+ VkPhysicalDeviceExtendedDynamicState3PropertiesEXT PhysicalDeviceExtendedDynamicState3PropertiesEXT{};
+ VkPhysicalDeviceExternalMemoryHostPropertiesEXT PhysicalDeviceExternalMemoryHostPropertiesEXT{};
+ VkPhysicalDeviceFaultPropertiesKHR PhysicalDeviceFaultPropertiesKHR{};
+ VkPhysicalDeviceFloatControlsProperties PhysicalDeviceFloatControlsProperties{};
+ VkPhysicalDeviceFragmentDensityMap2PropertiesEXT PhysicalDeviceFragmentDensityMap2PropertiesEXT{};
+ VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT{};
+ VkPhysicalDeviceFragmentDensityMapPropertiesEXT PhysicalDeviceFragmentDensityMapPropertiesEXT{};
+ VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR PhysicalDeviceFragmentShaderBarycentricPropertiesKHR{};
+ VkPhysicalDeviceFragmentShadingRatePropertiesKHR PhysicalDeviceFragmentShadingRatePropertiesKHR{};
+ VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT{};
+ VkPhysicalDeviceHostImageCopyProperties PhysicalDeviceHostImageCopyProperties{};
+ std::vector<VkImageLayout> VkPhysicalDeviceHostImageCopyProperties_pCopySrcLayouts;
+ std::vector<VkImageLayout> VkPhysicalDeviceHostImageCopyProperties_pCopyDstLayouts;
+ VkPhysicalDeviceIDProperties PhysicalDeviceIDProperties{};
+ VkPhysicalDeviceInlineUniformBlockProperties PhysicalDeviceInlineUniformBlockProperties{};
+ VkPhysicalDeviceLayeredApiPropertiesListKHR PhysicalDeviceLayeredApiPropertiesListKHR{};
+ std::vector<VkPhysicalDeviceLayeredApiPropertiesKHR> VkPhysicalDeviceLayeredApiPropertiesListKHR_pLayeredApis;
+ VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT PhysicalDeviceLegacyVertexAttributesPropertiesEXT{};
+ VkPhysicalDeviceLineRasterizationProperties PhysicalDeviceLineRasterizationProperties{};
+ VkPhysicalDeviceMaintenance10PropertiesKHR PhysicalDeviceMaintenance10PropertiesKHR{};
+ VkPhysicalDeviceMaintenance3Properties PhysicalDeviceMaintenance3Properties{};
+ VkPhysicalDeviceMaintenance4Properties PhysicalDeviceMaintenance4Properties{};
+ VkPhysicalDeviceMaintenance5Properties PhysicalDeviceMaintenance5Properties{};
+ VkPhysicalDeviceMaintenance6Properties PhysicalDeviceMaintenance6Properties{};
+ VkPhysicalDeviceMaintenance7PropertiesKHR PhysicalDeviceMaintenance7PropertiesKHR{};
+ VkPhysicalDeviceMaintenance9PropertiesKHR PhysicalDeviceMaintenance9PropertiesKHR{};
+ VkPhysicalDeviceMapMemoryPlacedPropertiesEXT PhysicalDeviceMapMemoryPlacedPropertiesEXT{};
+ VkPhysicalDeviceMemoryDecompressionPropertiesEXT PhysicalDeviceMemoryDecompressionPropertiesEXT{};
+ VkPhysicalDeviceMeshShaderPropertiesEXT PhysicalDeviceMeshShaderPropertiesEXT{};
+ VkPhysicalDeviceMultiDrawPropertiesEXT PhysicalDeviceMultiDrawPropertiesEXT{};
+ VkPhysicalDeviceMultiviewProperties PhysicalDeviceMultiviewProperties{};
+ VkPhysicalDeviceNestedCommandBufferPropertiesEXT PhysicalDeviceNestedCommandBufferPropertiesEXT{};
+ VkPhysicalDeviceOpacityMicromapPropertiesEXT PhysicalDeviceOpacityMicromapPropertiesEXT{};
+ VkPhysicalDevicePCIBusInfoPropertiesEXT PhysicalDevicePCIBusInfoPropertiesEXT{};
+ VkPhysicalDevicePerformanceQueryPropertiesKHR PhysicalDevicePerformanceQueryPropertiesKHR{};
+ VkPhysicalDevicePipelineBinaryPropertiesKHR PhysicalDevicePipelineBinaryPropertiesKHR{};
+ VkPhysicalDevicePipelineRobustnessProperties PhysicalDevicePipelineRobustnessProperties{};
+ VkPhysicalDevicePointClippingProperties PhysicalDevicePointClippingProperties{};
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+ VkPhysicalDevicePortabilitySubsetPropertiesKHR PhysicalDevicePortabilitySubsetPropertiesKHR{};
+#endif // VK_ENABLE_BETA_EXTENSIONS
+ VkPhysicalDeviceProtectedMemoryProperties PhysicalDeviceProtectedMemoryProperties{};
+ VkPhysicalDeviceProvokingVertexPropertiesEXT PhysicalDeviceProvokingVertexPropertiesEXT{};
+ VkPhysicalDevicePushDescriptorProperties PhysicalDevicePushDescriptorProperties{};
+ VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT PhysicalDeviceRayTracingInvocationReorderPropertiesEXT{};
+ VkPhysicalDeviceRayTracingPipelinePropertiesKHR PhysicalDeviceRayTracingPipelinePropertiesKHR{};
+ VkPhysicalDeviceRobustness2PropertiesKHR PhysicalDeviceRobustness2PropertiesKHR{};
+ VkPhysicalDeviceSampleLocationsPropertiesEXT PhysicalDeviceSampleLocationsPropertiesEXT{};
+ VkPhysicalDeviceSamplerFilterMinmaxProperties PhysicalDeviceSamplerFilterMinmaxProperties{};
+ VkPhysicalDeviceShaderAbortPropertiesKHR PhysicalDeviceShaderAbortPropertiesKHR{};
+ VkPhysicalDeviceShaderIntegerDotProductProperties PhysicalDeviceShaderIntegerDotProductProperties{};
+ VkPhysicalDeviceShaderLongVectorPropertiesEXT PhysicalDeviceShaderLongVectorPropertiesEXT{};
+ VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT PhysicalDeviceShaderModuleIdentifierPropertiesEXT{};
+ VkPhysicalDeviceShaderObjectPropertiesEXT PhysicalDeviceShaderObjectPropertiesEXT{};
+ VkPhysicalDeviceShaderTileImagePropertiesEXT PhysicalDeviceShaderTileImagePropertiesEXT{};
+ VkPhysicalDeviceSubgroupProperties PhysicalDeviceSubgroupProperties{};
+ VkPhysicalDeviceSubgroupSizeControlProperties PhysicalDeviceSubgroupSizeControlProperties{};
+ VkPhysicalDeviceTexelBufferAlignmentProperties PhysicalDeviceTexelBufferAlignmentProperties{};
+ VkPhysicalDeviceTimelineSemaphoreProperties PhysicalDeviceTimelineSemaphoreProperties{};
+ VkPhysicalDeviceTransformFeedbackPropertiesEXT PhysicalDeviceTransformFeedbackPropertiesEXT{};
+ VkPhysicalDeviceVertexAttributeDivisorProperties PhysicalDeviceVertexAttributeDivisorProperties{};
+ VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT PhysicalDeviceVertexAttributeDivisorPropertiesEXT{};
+ VkPhysicalDeviceVulkan11Properties PhysicalDeviceVulkan11Properties{};
+ VkPhysicalDeviceVulkan12Properties PhysicalDeviceVulkan12Properties{};
+ VkPhysicalDeviceVulkan13Properties PhysicalDeviceVulkan13Properties{};
+ VkPhysicalDeviceVulkan14Properties PhysicalDeviceVulkan14Properties{};
+ std::vector<VkImageLayout> VkPhysicalDeviceVulkan14Properties_pCopySrcLayouts;
+ std::vector<VkImageLayout> VkPhysicalDeviceVulkan14Properties_pCopyDstLayouts;
+ void initialize_chain(AppInstance &inst, AppGpu &gpu, bool show_promoted_structs) noexcept {
+ PhysicalDeviceAccelerationStructurePropertiesKHR.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR;
+ PhysicalDeviceBlendOperationAdvancedPropertiesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT;
+ PhysicalDeviceComputeShaderDerivativesPropertiesKHR.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR;
+ PhysicalDeviceConservativeRasterizationPropertiesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT;
+ PhysicalDeviceCooperativeMatrixPropertiesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR;
+ PhysicalDeviceCopyMemoryIndirectPropertiesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR;
+ PhysicalDeviceCustomBorderColorPropertiesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT;
+ PhysicalDeviceDepthStencilResolveProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES;
+ PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT;
+ PhysicalDeviceDescriptorBufferPropertiesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT;
+ PhysicalDeviceDescriptorHeapPropertiesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_PROPERTIES_EXT;
+ PhysicalDeviceDescriptorHeapTensorPropertiesARM.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_TENSOR_PROPERTIES_ARM;
+ PhysicalDeviceDescriptorIndexingProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES;
+ PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT;
+ PhysicalDeviceDiscardRectanglePropertiesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT;
+ PhysicalDeviceDriverProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES;
+ PhysicalDeviceDrmPropertiesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT;
+ PhysicalDeviceExtendedDynamicState3PropertiesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT;
+ PhysicalDeviceExternalMemoryHostPropertiesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT;
+ PhysicalDeviceFaultPropertiesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_PROPERTIES_KHR;
+ PhysicalDeviceFloatControlsProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES;
+ PhysicalDeviceFragmentDensityMap2PropertiesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT;
+ PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT;
+ PhysicalDeviceFragmentDensityMapPropertiesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT;
+ PhysicalDeviceFragmentShaderBarycentricPropertiesKHR.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR;
+ PhysicalDeviceFragmentShadingRatePropertiesKHR.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR;
+ PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT;
+ PhysicalDeviceHostImageCopyProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES;
+ PhysicalDeviceIDProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES;
+ PhysicalDeviceInlineUniformBlockProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES;
+ PhysicalDeviceLayeredApiPropertiesListKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR;
+ PhysicalDeviceLegacyVertexAttributesPropertiesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT;
+ PhysicalDeviceLineRasterizationProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES;
+ PhysicalDeviceMaintenance10PropertiesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_PROPERTIES_KHR;
+ PhysicalDeviceMaintenance3Properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES;
+ PhysicalDeviceMaintenance4Properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES;
+ PhysicalDeviceMaintenance5Properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES;
+ PhysicalDeviceMaintenance6Properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES;
+ PhysicalDeviceMaintenance7PropertiesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR;
+ PhysicalDeviceMaintenance9PropertiesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR;
+ PhysicalDeviceMapMemoryPlacedPropertiesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT;
+ PhysicalDeviceMemoryDecompressionPropertiesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT;
+ PhysicalDeviceMeshShaderPropertiesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT;
+ PhysicalDeviceMultiDrawPropertiesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT;
+ PhysicalDeviceMultiviewProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES;
+ PhysicalDeviceNestedCommandBufferPropertiesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT;
+ PhysicalDeviceOpacityMicromapPropertiesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT;
+ PhysicalDevicePCIBusInfoPropertiesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT;
+ PhysicalDevicePerformanceQueryPropertiesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR;
+ PhysicalDevicePipelineBinaryPropertiesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR;
+ PhysicalDevicePipelineRobustnessProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES;
+ PhysicalDevicePointClippingProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES;
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+ PhysicalDevicePortabilitySubsetPropertiesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR;
+#endif // VK_ENABLE_BETA_EXTENSIONS
+ PhysicalDeviceProtectedMemoryProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES;
+ PhysicalDeviceProvokingVertexPropertiesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT;
+ PhysicalDevicePushDescriptorProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES;
+ PhysicalDeviceRayTracingInvocationReorderPropertiesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_EXT;
+ PhysicalDeviceRayTracingPipelinePropertiesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR;
+ PhysicalDeviceRobustness2PropertiesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR;
+ PhysicalDeviceSampleLocationsPropertiesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT;
+ PhysicalDeviceSamplerFilterMinmaxProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES;
+ PhysicalDeviceShaderAbortPropertiesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_PROPERTIES_KHR;
+ PhysicalDeviceShaderIntegerDotProductProperties.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES;
+ PhysicalDeviceShaderLongVectorPropertiesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_PROPERTIES_EXT;
+ PhysicalDeviceShaderModuleIdentifierPropertiesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT;
+ PhysicalDeviceShaderObjectPropertiesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT;
+ PhysicalDeviceShaderTileImagePropertiesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT;
+ PhysicalDeviceSubgroupProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES;
+ PhysicalDeviceSubgroupSizeControlProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES;
+ PhysicalDeviceTexelBufferAlignmentProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES;
+ PhysicalDeviceTimelineSemaphoreProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES;
+ PhysicalDeviceTransformFeedbackPropertiesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT;
+ PhysicalDeviceVertexAttributeDivisorProperties.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES;
+ PhysicalDeviceVertexAttributeDivisorPropertiesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT;
+ PhysicalDeviceVulkan11Properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES;
+ PhysicalDeviceVulkan12Properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES;
+ PhysicalDeviceVulkan13Properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES;
+ PhysicalDeviceVulkan14Properties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES;
+ std::vector<VkBaseOutStructure *> chain_members{};
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceAccelerationStructurePropertiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceBlendOperationAdvancedPropertiesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceComputeShaderDerivativesPropertiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceConservativeRasterizationPropertiesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceCooperativeMatrixPropertiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_COPY_MEMORY_INDIRECT_EXTENSION_NAME) ||
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceCopyMemoryIndirectPropertiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceCustomBorderColorPropertiesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_2 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceDepthStencilResolveProperties));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceDescriptorBufferPropertiesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DESCRIPTOR_HEAP_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceDescriptorHeapPropertiesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DESCRIPTOR_HEAP_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceDescriptorHeapTensorPropertiesARM));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_2 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceDescriptorIndexingProperties));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceDiscardRectanglePropertiesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_2 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceDriverProperties));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceDrmPropertiesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceExtendedDynamicState3PropertiesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceExternalMemoryHostPropertiesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_DEVICE_FAULT_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceFaultPropertiesKHR));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_2 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceFloatControlsProperties));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceFragmentDensityMap2PropertiesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME) ||
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceFragmentDensityMapPropertiesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceFragmentShaderBarycentricPropertiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceFragmentShadingRatePropertiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceGraphicsPipelineLibraryPropertiesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_4 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceHostImageCopyProperties));
+ if ((inst.CheckExtensionEnabled(VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME) ||
+ inst.CheckExtensionEnabled(VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME) ||
+ inst.CheckExtensionEnabled(VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_1 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceIDProperties));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_3 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceInlineUniformBlockProperties));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_7_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceLayeredApiPropertiesListKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_LEGACY_VERTEX_ATTRIBUTES_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceLegacyVertexAttributesPropertiesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME) ||
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_4 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceLineRasterizationProperties));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_10_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMaintenance10PropertiesKHR));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_3_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_1 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMaintenance3Properties));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_4_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_3 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMaintenance4Properties));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_5_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_4 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMaintenance5Properties));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_6_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_4 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMaintenance6Properties));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_7_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMaintenance7PropertiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_9_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMaintenance9PropertiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MAP_MEMORY_PLACED_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMapMemoryPlacedPropertiesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME) ||
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MEMORY_DECOMPRESSION_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMemoryDecompressionPropertiesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MESH_SHADER_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMeshShaderPropertiesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MULTI_DRAW_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMultiDrawPropertiesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MULTIVIEW_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_1 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMultiviewProperties));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_NESTED_COMMAND_BUFFER_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceNestedCommandBufferPropertiesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_OPACITY_MICROMAP_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceOpacityMicromapPropertiesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PCI_BUS_INFO_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevicePCIBusInfoPropertiesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevicePerformanceQueryPropertiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PIPELINE_BINARY_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevicePipelineBinaryPropertiesKHR));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_4 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevicePipelineRobustnessProperties));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_2_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_1 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevicePointClippingProperties));
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevicePortabilitySubsetPropertiesKHR));
+#endif // VK_ENABLE_BETA_EXTENSIONS
+ if (gpu.api_version == VK_API_VERSION_1_1 || show_promoted_structs)
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceProtectedMemoryProperties));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceProvokingVertexPropertiesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_4 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevicePushDescriptorProperties));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME))
+ chain_members.push_back(
+ reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceRayTracingInvocationReorderPropertiesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceRayTracingPipelinePropertiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_ROBUSTNESS_2_EXTENSION_NAME) ||
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_ROBUSTNESS_2_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceRobustness2PropertiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceSampleLocationsPropertiesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_2 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceSamplerFilterMinmaxProperties));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_ABORT_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderAbortPropertiesKHR));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_3 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderIntegerDotProductProperties));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_LONG_VECTOR_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderLongVectorPropertiesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_MODULE_IDENTIFIER_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderModuleIdentifierPropertiesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_OBJECT_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderObjectPropertiesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderTileImagePropertiesEXT));
+ if (gpu.api_version == VK_API_VERSION_1_1 || show_promoted_structs)
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceSubgroupProperties));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_3 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceSubgroupSizeControlProperties));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_3 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceTexelBufferAlignmentProperties));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_2 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceTimelineSemaphoreProperties));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceTransformFeedbackPropertiesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_4 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceVertexAttributeDivisorProperties));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceVertexAttributeDivisorPropertiesEXT));
+ if ((gpu.api_version >= VK_API_VERSION_1_2))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceVulkan11Properties));
+ if ((gpu.api_version >= VK_API_VERSION_1_2))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceVulkan12Properties));
+ if ((gpu.api_version >= VK_API_VERSION_1_3))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceVulkan13Properties));
+ if ((gpu.api_version >= VK_API_VERSION_1_4))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceVulkan14Properties));
+
+ if (!chain_members.empty()) {
+ for (size_t i = 0; i < chain_members.size() - 1; i++) {
+ chain_members[i]->pNext = chain_members[i + 1];
+ }
+ start_of_chain = chain_members[0];
+ }
+ }
+};
+void setup_phys_device_props2_chain(VkPhysicalDeviceProperties2 &start, std::unique_ptr<phys_device_props2_chain> &chain,
+ AppInstance &inst, AppGpu &gpu, bool show_promoted_structs) {
+ chain = std::unique_ptr<phys_device_props2_chain>(new phys_device_props2_chain());
+ chain->initialize_chain(inst, gpu, show_promoted_structs);
+ start.pNext = chain->start_of_chain;
+};
+
+void chain_iterator_phys_device_props2(Printer &p, AppInstance &inst, AppGpu &gpu, bool show_promoted_structs, const void *place) {
+ while (place) {
+ const VkBaseOutStructure *structure = (const VkBaseOutStructure *)place;
+ p.SetSubHeader();
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR) {
+ const VkPhysicalDeviceAccelerationStructurePropertiesKHR *props =
+ (const VkPhysicalDeviceAccelerationStructurePropertiesKHR *)structure;
+ const char *name = "VkPhysicalDeviceAccelerationStructurePropertiesKHR";
+ DumpVkPhysicalDeviceAccelerationStructurePropertiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT) {
+ const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT *props =
+ (const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT";
+ DumpVkPhysicalDeviceBlendOperationAdvancedPropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_PROPERTIES_KHR) {
+ const VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR *props =
+ (const VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR *)structure;
+ const char *name = "VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR";
+ DumpVkPhysicalDeviceComputeShaderDerivativesPropertiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT) {
+ const VkPhysicalDeviceConservativeRasterizationPropertiesEXT *props =
+ (const VkPhysicalDeviceConservativeRasterizationPropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceConservativeRasterizationPropertiesEXT";
+ DumpVkPhysicalDeviceConservativeRasterizationPropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR) {
+ const VkPhysicalDeviceCooperativeMatrixPropertiesKHR *props =
+ (const VkPhysicalDeviceCooperativeMatrixPropertiesKHR *)structure;
+ const char *name = "VkPhysicalDeviceCooperativeMatrixPropertiesKHR";
+ DumpVkPhysicalDeviceCooperativeMatrixPropertiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_KHR) {
+ const VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR *props =
+ (const VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR *)structure;
+ const char *name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_COPY_MEMORY_INDIRECT_EXTENSION_NAME)
+ ? "VkPhysicalDeviceCopyMemoryIndirectPropertiesKHR"
+ : ("VkPhysicalDeviceCopyMemoryIndirectPropertiesNV");
+ DumpVkPhysicalDeviceCopyMemoryIndirectPropertiesKHR(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceCopyMemoryIndirectPropertiesNV") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceCopyMemoryIndirectPropertiesKHR(p, "VkPhysicalDeviceCopyMemoryIndirectPropertiesNV", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT) {
+ const VkPhysicalDeviceCustomBorderColorPropertiesEXT *props =
+ (const VkPhysicalDeviceCustomBorderColorPropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceCustomBorderColorPropertiesEXT";
+ DumpVkPhysicalDeviceCustomBorderColorPropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES) {
+ const VkPhysicalDeviceDepthStencilResolveProperties *props =
+ (const VkPhysicalDeviceDepthStencilResolveProperties *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceDepthStencilResolveProperties"
+ : ("VkPhysicalDeviceDepthStencilResolvePropertiesKHR");
+ DumpVkPhysicalDeviceDepthStencilResolveProperties(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceDepthStencilResolvePropertiesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceDepthStencilResolveProperties(p, "VkPhysicalDeviceDepthStencilResolvePropertiesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT) {
+ const VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT *props =
+ (const VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT";
+ DumpVkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT) {
+ const VkPhysicalDeviceDescriptorBufferPropertiesEXT *props =
+ (const VkPhysicalDeviceDescriptorBufferPropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceDescriptorBufferPropertiesEXT";
+ DumpVkPhysicalDeviceDescriptorBufferPropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_PROPERTIES_EXT) {
+ const VkPhysicalDeviceDescriptorHeapPropertiesEXT *props =
+ (const VkPhysicalDeviceDescriptorHeapPropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceDescriptorHeapPropertiesEXT";
+ DumpVkPhysicalDeviceDescriptorHeapPropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_TENSOR_PROPERTIES_ARM) {
+ const VkPhysicalDeviceDescriptorHeapTensorPropertiesARM *props =
+ (const VkPhysicalDeviceDescriptorHeapTensorPropertiesARM *)structure;
+ const char *name = "VkPhysicalDeviceDescriptorHeapTensorPropertiesARM";
+ DumpVkPhysicalDeviceDescriptorHeapTensorPropertiesARM(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES) {
+ const VkPhysicalDeviceDescriptorIndexingProperties *props =
+ (const VkPhysicalDeviceDescriptorIndexingProperties *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceDescriptorIndexingProperties"
+ : ("VkPhysicalDeviceDescriptorIndexingPropertiesEXT");
+ DumpVkPhysicalDeviceDescriptorIndexingProperties(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceDescriptorIndexingPropertiesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceDescriptorIndexingProperties(p, "VkPhysicalDeviceDescriptorIndexingPropertiesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_EXT) {
+ const VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT *props =
+ (const VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT";
+ DumpVkPhysicalDeviceDeviceGeneratedCommandsPropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT) {
+ const VkPhysicalDeviceDiscardRectanglePropertiesEXT *props =
+ (const VkPhysicalDeviceDiscardRectanglePropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceDiscardRectanglePropertiesEXT";
+ DumpVkPhysicalDeviceDiscardRectanglePropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES) {
+ const VkPhysicalDeviceDriverProperties *props = (const VkPhysicalDeviceDriverProperties *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceDriverProperties"
+ : ("VkPhysicalDeviceDriverPropertiesKHR");
+ DumpVkPhysicalDeviceDriverProperties(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceDriverPropertiesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceDriverProperties(p, "VkPhysicalDeviceDriverPropertiesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT) {
+ const VkPhysicalDeviceDrmPropertiesEXT *props = (const VkPhysicalDeviceDrmPropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceDrmPropertiesEXT";
+ DumpVkPhysicalDeviceDrmPropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT) {
+ const VkPhysicalDeviceExtendedDynamicState3PropertiesEXT *props =
+ (const VkPhysicalDeviceExtendedDynamicState3PropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceExtendedDynamicState3PropertiesEXT";
+ DumpVkPhysicalDeviceExtendedDynamicState3PropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT) {
+ const VkPhysicalDeviceExternalMemoryHostPropertiesEXT *props =
+ (const VkPhysicalDeviceExternalMemoryHostPropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceExternalMemoryHostPropertiesEXT";
+ DumpVkPhysicalDeviceExternalMemoryHostPropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_PROPERTIES_KHR) {
+ const VkPhysicalDeviceFaultPropertiesKHR *props = (const VkPhysicalDeviceFaultPropertiesKHR *)structure;
+ const char *name = "VkPhysicalDeviceFaultPropertiesKHR";
+ DumpVkPhysicalDeviceFaultPropertiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES) {
+ const VkPhysicalDeviceFloatControlsProperties *props = (const VkPhysicalDeviceFloatControlsProperties *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceFloatControlsProperties"
+ : ("VkPhysicalDeviceFloatControlsPropertiesKHR");
+ DumpVkPhysicalDeviceFloatControlsProperties(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceFloatControlsPropertiesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceFloatControlsProperties(p, "VkPhysicalDeviceFloatControlsPropertiesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT) {
+ const VkPhysicalDeviceFragmentDensityMap2PropertiesEXT *props =
+ (const VkPhysicalDeviceFragmentDensityMap2PropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceFragmentDensityMap2PropertiesEXT";
+ DumpVkPhysicalDeviceFragmentDensityMap2PropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_EXT) {
+ const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT *props =
+ (const VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT *)structure;
+ const char *name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME)
+ ? "VkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT"
+ : ("VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM");
+ DumpVkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceFragmentDensityMapOffsetPropertiesEXT(
+ p, "VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT) {
+ const VkPhysicalDeviceFragmentDensityMapPropertiesEXT *props =
+ (const VkPhysicalDeviceFragmentDensityMapPropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceFragmentDensityMapPropertiesEXT";
+ DumpVkPhysicalDeviceFragmentDensityMapPropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR) {
+ const VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR *props =
+ (const VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR *)structure;
+ const char *name = "VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR";
+ DumpVkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR) {
+ const VkPhysicalDeviceFragmentShadingRatePropertiesKHR *props =
+ (const VkPhysicalDeviceFragmentShadingRatePropertiesKHR *)structure;
+ const char *name = "VkPhysicalDeviceFragmentShadingRatePropertiesKHR";
+ DumpVkPhysicalDeviceFragmentShadingRatePropertiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT) {
+ const VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT *props =
+ (const VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT";
+ DumpVkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES) {
+ const VkPhysicalDeviceHostImageCopyProperties *props = (const VkPhysicalDeviceHostImageCopyProperties *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceHostImageCopyProperties"
+ : ("VkPhysicalDeviceHostImageCopyPropertiesEXT");
+ DumpVkPhysicalDeviceHostImageCopyProperties(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceHostImageCopyPropertiesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceHostImageCopyProperties(p, "VkPhysicalDeviceHostImageCopyPropertiesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES) {
+ const VkPhysicalDeviceIDProperties *props = (const VkPhysicalDeviceIDProperties *)structure;
+ const char *name =
+ gpu.api_version >= VK_API_VERSION_1_1 ? "VkPhysicalDeviceIDProperties" : ("VkPhysicalDeviceIDPropertiesKHR");
+ DumpVkPhysicalDeviceIDProperties(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceIDPropertiesKHR") != 0 &&
+ inst.CheckExtensionEnabled(VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceIDProperties(p, "VkPhysicalDeviceIDPropertiesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES) {
+ const VkPhysicalDeviceInlineUniformBlockProperties *props =
+ (const VkPhysicalDeviceInlineUniformBlockProperties *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceInlineUniformBlockProperties"
+ : ("VkPhysicalDeviceInlineUniformBlockPropertiesEXT");
+ DumpVkPhysicalDeviceInlineUniformBlockProperties(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceInlineUniformBlockPropertiesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceInlineUniformBlockProperties(p, "VkPhysicalDeviceInlineUniformBlockPropertiesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_API_PROPERTIES_LIST_KHR) {
+ const VkPhysicalDeviceLayeredApiPropertiesListKHR *props =
+ (const VkPhysicalDeviceLayeredApiPropertiesListKHR *)structure;
+ const char *name = "VkPhysicalDeviceLayeredApiPropertiesListKHR";
+ DumpVkPhysicalDeviceLayeredApiPropertiesListKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_PROPERTIES_EXT) {
+ const VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT *props =
+ (const VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT";
+ DumpVkPhysicalDeviceLegacyVertexAttributesPropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES) {
+ const VkPhysicalDeviceLineRasterizationProperties *props =
+ (const VkPhysicalDeviceLineRasterizationProperties *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_4
+ ? "VkPhysicalDeviceLineRasterizationProperties"
+ : (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME)
+ ? "VkPhysicalDeviceLineRasterizationPropertiesKHR"
+ : ("VkPhysicalDeviceLineRasterizationPropertiesEXT"));
+ DumpVkPhysicalDeviceLineRasterizationProperties(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceLineRasterizationPropertiesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceLineRasterizationProperties(p, "VkPhysicalDeviceLineRasterizationPropertiesKHR", *props);
+ }
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceLineRasterizationPropertiesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceLineRasterizationProperties(p, "VkPhysicalDeviceLineRasterizationPropertiesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_PROPERTIES_KHR) {
+ const VkPhysicalDeviceMaintenance10PropertiesKHR *props = (const VkPhysicalDeviceMaintenance10PropertiesKHR *)structure;
+ const char *name = "VkPhysicalDeviceMaintenance10PropertiesKHR";
+ DumpVkPhysicalDeviceMaintenance10PropertiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES) {
+ const VkPhysicalDeviceMaintenance3Properties *props = (const VkPhysicalDeviceMaintenance3Properties *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_1 ? "VkPhysicalDeviceMaintenance3Properties"
+ : ("VkPhysicalDeviceMaintenance3PropertiesKHR");
+ DumpVkPhysicalDeviceMaintenance3Properties(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceMaintenance3PropertiesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_3_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceMaintenance3Properties(p, "VkPhysicalDeviceMaintenance3PropertiesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES) {
+ const VkPhysicalDeviceMaintenance4Properties *props = (const VkPhysicalDeviceMaintenance4Properties *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceMaintenance4Properties"
+ : ("VkPhysicalDeviceMaintenance4PropertiesKHR");
+ DumpVkPhysicalDeviceMaintenance4Properties(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceMaintenance4PropertiesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_4_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceMaintenance4Properties(p, "VkPhysicalDeviceMaintenance4PropertiesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES) {
+ const VkPhysicalDeviceMaintenance5Properties *props = (const VkPhysicalDeviceMaintenance5Properties *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceMaintenance5Properties"
+ : ("VkPhysicalDeviceMaintenance5PropertiesKHR");
+ DumpVkPhysicalDeviceMaintenance5Properties(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceMaintenance5PropertiesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_5_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceMaintenance5Properties(p, "VkPhysicalDeviceMaintenance5PropertiesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES) {
+ const VkPhysicalDeviceMaintenance6Properties *props = (const VkPhysicalDeviceMaintenance6Properties *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceMaintenance6Properties"
+ : ("VkPhysicalDeviceMaintenance6PropertiesKHR");
+ DumpVkPhysicalDeviceMaintenance6Properties(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceMaintenance6PropertiesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_6_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceMaintenance6Properties(p, "VkPhysicalDeviceMaintenance6PropertiesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_PROPERTIES_KHR) {
+ const VkPhysicalDeviceMaintenance7PropertiesKHR *props = (const VkPhysicalDeviceMaintenance7PropertiesKHR *)structure;
+ const char *name = "VkPhysicalDeviceMaintenance7PropertiesKHR";
+ DumpVkPhysicalDeviceMaintenance7PropertiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_PROPERTIES_KHR) {
+ const VkPhysicalDeviceMaintenance9PropertiesKHR *props = (const VkPhysicalDeviceMaintenance9PropertiesKHR *)structure;
+ const char *name = "VkPhysicalDeviceMaintenance9PropertiesKHR";
+ DumpVkPhysicalDeviceMaintenance9PropertiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_PROPERTIES_EXT) {
+ const VkPhysicalDeviceMapMemoryPlacedPropertiesEXT *props =
+ (const VkPhysicalDeviceMapMemoryPlacedPropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceMapMemoryPlacedPropertiesEXT";
+ DumpVkPhysicalDeviceMapMemoryPlacedPropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_EXT) {
+ const VkPhysicalDeviceMemoryDecompressionPropertiesEXT *props =
+ (const VkPhysicalDeviceMemoryDecompressionPropertiesEXT *)structure;
+ const char *name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MEMORY_DECOMPRESSION_EXTENSION_NAME)
+ ? "VkPhysicalDeviceMemoryDecompressionPropertiesEXT"
+ : ("VkPhysicalDeviceMemoryDecompressionPropertiesNV");
+ DumpVkPhysicalDeviceMemoryDecompressionPropertiesEXT(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceMemoryDecompressionPropertiesNV") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceMemoryDecompressionPropertiesEXT(p, "VkPhysicalDeviceMemoryDecompressionPropertiesNV", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT) {
+ const VkPhysicalDeviceMeshShaderPropertiesEXT *props = (const VkPhysicalDeviceMeshShaderPropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceMeshShaderPropertiesEXT";
+ DumpVkPhysicalDeviceMeshShaderPropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT) {
+ const VkPhysicalDeviceMultiDrawPropertiesEXT *props = (const VkPhysicalDeviceMultiDrawPropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceMultiDrawPropertiesEXT";
+ DumpVkPhysicalDeviceMultiDrawPropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES) {
+ const VkPhysicalDeviceMultiviewProperties *props = (const VkPhysicalDeviceMultiviewProperties *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_1 ? "VkPhysicalDeviceMultiviewProperties"
+ : ("VkPhysicalDeviceMultiviewPropertiesKHR");
+ DumpVkPhysicalDeviceMultiviewProperties(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceMultiviewPropertiesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MULTIVIEW_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceMultiviewProperties(p, "VkPhysicalDeviceMultiviewPropertiesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT) {
+ const VkPhysicalDeviceNestedCommandBufferPropertiesEXT *props =
+ (const VkPhysicalDeviceNestedCommandBufferPropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceNestedCommandBufferPropertiesEXT";
+ DumpVkPhysicalDeviceNestedCommandBufferPropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT) {
+ const VkPhysicalDeviceOpacityMicromapPropertiesEXT *props =
+ (const VkPhysicalDeviceOpacityMicromapPropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceOpacityMicromapPropertiesEXT";
+ DumpVkPhysicalDeviceOpacityMicromapPropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT) {
+ const VkPhysicalDevicePCIBusInfoPropertiesEXT *props = (const VkPhysicalDevicePCIBusInfoPropertiesEXT *)structure;
+ const char *name = "VkPhysicalDevicePCIBusInfoPropertiesEXT";
+ DumpVkPhysicalDevicePCIBusInfoPropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR) {
+ const VkPhysicalDevicePerformanceQueryPropertiesKHR *props =
+ (const VkPhysicalDevicePerformanceQueryPropertiesKHR *)structure;
+ const char *name = "VkPhysicalDevicePerformanceQueryPropertiesKHR";
+ DumpVkPhysicalDevicePerformanceQueryPropertiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_PROPERTIES_KHR) {
+ const VkPhysicalDevicePipelineBinaryPropertiesKHR *props =
+ (const VkPhysicalDevicePipelineBinaryPropertiesKHR *)structure;
+ const char *name = "VkPhysicalDevicePipelineBinaryPropertiesKHR";
+ DumpVkPhysicalDevicePipelineBinaryPropertiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES) {
+ const VkPhysicalDevicePipelineRobustnessProperties *props =
+ (const VkPhysicalDevicePipelineRobustnessProperties *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDevicePipelineRobustnessProperties"
+ : ("VkPhysicalDevicePipelineRobustnessPropertiesEXT");
+ DumpVkPhysicalDevicePipelineRobustnessProperties(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDevicePipelineRobustnessPropertiesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDevicePipelineRobustnessProperties(p, "VkPhysicalDevicePipelineRobustnessPropertiesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES) {
+ const VkPhysicalDevicePointClippingProperties *props = (const VkPhysicalDevicePointClippingProperties *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_1 ? "VkPhysicalDevicePointClippingProperties"
+ : ("VkPhysicalDevicePointClippingPropertiesKHR");
+ DumpVkPhysicalDevicePointClippingProperties(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDevicePointClippingPropertiesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_2_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDevicePointClippingProperties(p, "VkPhysicalDevicePointClippingPropertiesKHR", *props);
+ }
+ p.AddNewline();
+ }
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR &&
+ p.Type() != OutputType::json) {
+ const VkPhysicalDevicePortabilitySubsetPropertiesKHR *props =
+ (const VkPhysicalDevicePortabilitySubsetPropertiesKHR *)structure;
+ const char *name = "VkPhysicalDevicePortabilitySubsetPropertiesKHR";
+ DumpVkPhysicalDevicePortabilitySubsetPropertiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+#endif // VK_ENABLE_BETA_EXTENSIONS
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES) {
+ const VkPhysicalDeviceProtectedMemoryProperties *props = (const VkPhysicalDeviceProtectedMemoryProperties *)structure;
+ const char *name = "VkPhysicalDeviceProtectedMemoryProperties";
+ DumpVkPhysicalDeviceProtectedMemoryProperties(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT) {
+ const VkPhysicalDeviceProvokingVertexPropertiesEXT *props =
+ (const VkPhysicalDeviceProvokingVertexPropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceProvokingVertexPropertiesEXT";
+ DumpVkPhysicalDeviceProvokingVertexPropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES) {
+ const VkPhysicalDevicePushDescriptorProperties *props = (const VkPhysicalDevicePushDescriptorProperties *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDevicePushDescriptorProperties"
+ : ("VkPhysicalDevicePushDescriptorPropertiesKHR");
+ DumpVkPhysicalDevicePushDescriptorProperties(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDevicePushDescriptorPropertiesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDevicePushDescriptorProperties(p, "VkPhysicalDevicePushDescriptorPropertiesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_EXT) {
+ const VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT *props =
+ (const VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT";
+ DumpVkPhysicalDeviceRayTracingInvocationReorderPropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR) {
+ const VkPhysicalDeviceRayTracingPipelinePropertiesKHR *props =
+ (const VkPhysicalDeviceRayTracingPipelinePropertiesKHR *)structure;
+ const char *name = "VkPhysicalDeviceRayTracingPipelinePropertiesKHR";
+ DumpVkPhysicalDeviceRayTracingPipelinePropertiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_KHR) {
+ const VkPhysicalDeviceRobustness2PropertiesKHR *props = (const VkPhysicalDeviceRobustness2PropertiesKHR *)structure;
+ const char *name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_ROBUSTNESS_2_EXTENSION_NAME)
+ ? "VkPhysicalDeviceRobustness2PropertiesKHR"
+ : ("VkPhysicalDeviceRobustness2PropertiesEXT");
+ DumpVkPhysicalDeviceRobustness2PropertiesKHR(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceRobustness2PropertiesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_ROBUSTNESS_2_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceRobustness2PropertiesKHR(p, "VkPhysicalDeviceRobustness2PropertiesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT) {
+ const VkPhysicalDeviceSampleLocationsPropertiesEXT *props =
+ (const VkPhysicalDeviceSampleLocationsPropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceSampleLocationsPropertiesEXT";
+ DumpVkPhysicalDeviceSampleLocationsPropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES) {
+ const VkPhysicalDeviceSamplerFilterMinmaxProperties *props =
+ (const VkPhysicalDeviceSamplerFilterMinmaxProperties *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceSamplerFilterMinmaxProperties"
+ : ("VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT");
+ DumpVkPhysicalDeviceSamplerFilterMinmaxProperties(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceSamplerFilterMinmaxProperties(p, "VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_PROPERTIES_KHR) {
+ const VkPhysicalDeviceShaderAbortPropertiesKHR *props = (const VkPhysicalDeviceShaderAbortPropertiesKHR *)structure;
+ const char *name = "VkPhysicalDeviceShaderAbortPropertiesKHR";
+ DumpVkPhysicalDeviceShaderAbortPropertiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES) {
+ const VkPhysicalDeviceShaderIntegerDotProductProperties *props =
+ (const VkPhysicalDeviceShaderIntegerDotProductProperties *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceShaderIntegerDotProductProperties"
+ : ("VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR");
+ DumpVkPhysicalDeviceShaderIntegerDotProductProperties(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceShaderIntegerDotProductProperties(p, "VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR",
+ *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_PROPERTIES_EXT) {
+ const VkPhysicalDeviceShaderLongVectorPropertiesEXT *props =
+ (const VkPhysicalDeviceShaderLongVectorPropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceShaderLongVectorPropertiesEXT";
+ DumpVkPhysicalDeviceShaderLongVectorPropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT) {
+ const VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT *props =
+ (const VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT";
+ DumpVkPhysicalDeviceShaderModuleIdentifierPropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT) {
+ const VkPhysicalDeviceShaderObjectPropertiesEXT *props = (const VkPhysicalDeviceShaderObjectPropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceShaderObjectPropertiesEXT";
+ DumpVkPhysicalDeviceShaderObjectPropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT) {
+ const VkPhysicalDeviceShaderTileImagePropertiesEXT *props =
+ (const VkPhysicalDeviceShaderTileImagePropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceShaderTileImagePropertiesEXT";
+ DumpVkPhysicalDeviceShaderTileImagePropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES) {
+ const VkPhysicalDeviceSubgroupProperties *props = (const VkPhysicalDeviceSubgroupProperties *)structure;
+ const char *name = "VkPhysicalDeviceSubgroupProperties";
+ DumpVkPhysicalDeviceSubgroupProperties(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES) {
+ const VkPhysicalDeviceSubgroupSizeControlProperties *props =
+ (const VkPhysicalDeviceSubgroupSizeControlProperties *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceSubgroupSizeControlProperties"
+ : ("VkPhysicalDeviceSubgroupSizeControlPropertiesEXT");
+ DumpVkPhysicalDeviceSubgroupSizeControlProperties(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceSubgroupSizeControlPropertiesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceSubgroupSizeControlProperties(p, "VkPhysicalDeviceSubgroupSizeControlPropertiesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES) {
+ const VkPhysicalDeviceTexelBufferAlignmentProperties *props =
+ (const VkPhysicalDeviceTexelBufferAlignmentProperties *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceTexelBufferAlignmentProperties"
+ : ("VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT");
+ DumpVkPhysicalDeviceTexelBufferAlignmentProperties(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceTexelBufferAlignmentProperties(p, "VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES) {
+ const VkPhysicalDeviceTimelineSemaphoreProperties *props =
+ (const VkPhysicalDeviceTimelineSemaphoreProperties *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceTimelineSemaphoreProperties"
+ : ("VkPhysicalDeviceTimelineSemaphorePropertiesKHR");
+ DumpVkPhysicalDeviceTimelineSemaphoreProperties(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceTimelineSemaphorePropertiesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceTimelineSemaphoreProperties(p, "VkPhysicalDeviceTimelineSemaphorePropertiesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT) {
+ const VkPhysicalDeviceTransformFeedbackPropertiesEXT *props =
+ (const VkPhysicalDeviceTransformFeedbackPropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceTransformFeedbackPropertiesEXT";
+ DumpVkPhysicalDeviceTransformFeedbackPropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES) {
+ const VkPhysicalDeviceVertexAttributeDivisorProperties *props =
+ (const VkPhysicalDeviceVertexAttributeDivisorProperties *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceVertexAttributeDivisorProperties"
+ : ("VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR");
+ DumpVkPhysicalDeviceVertexAttributeDivisorProperties(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceVertexAttributeDivisorProperties(p, "VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR",
+ *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT) {
+ const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT *props =
+ (const VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT *)structure;
+ const char *name = "VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT";
+ DumpVkPhysicalDeviceVertexAttributeDivisorPropertiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES) {
+ const VkPhysicalDeviceVulkan11Properties *props = (const VkPhysicalDeviceVulkan11Properties *)structure;
+ const char *name = "VkPhysicalDeviceVulkan11Properties";
+ DumpVkPhysicalDeviceVulkan11Properties(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES) {
+ const VkPhysicalDeviceVulkan12Properties *props = (const VkPhysicalDeviceVulkan12Properties *)structure;
+ const char *name = "VkPhysicalDeviceVulkan12Properties";
+ DumpVkPhysicalDeviceVulkan12Properties(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES) {
+ const VkPhysicalDeviceVulkan13Properties *props = (const VkPhysicalDeviceVulkan13Properties *)structure;
+ const char *name = "VkPhysicalDeviceVulkan13Properties";
+ DumpVkPhysicalDeviceVulkan13Properties(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_PROPERTIES) {
+ const VkPhysicalDeviceVulkan14Properties *props = (const VkPhysicalDeviceVulkan14Properties *)structure;
+ const char *name = "VkPhysicalDeviceVulkan14Properties";
+ DumpVkPhysicalDeviceVulkan14Properties(p, name, *props);
+ p.AddNewline();
+ }
+ place = structure->pNext;
+ }
+}
+
+bool prepare_phys_device_props2_twocall_chain_vectors(std::unique_ptr<phys_device_props2_chain> &chain) {
+ (void)chain;
+ chain->VkPhysicalDeviceHostImageCopyProperties_pCopySrcLayouts.resize(
+ chain->PhysicalDeviceHostImageCopyProperties.copySrcLayoutCount);
+ chain->PhysicalDeviceHostImageCopyProperties.pCopySrcLayouts =
+ chain->VkPhysicalDeviceHostImageCopyProperties_pCopySrcLayouts.data();
+ chain->VkPhysicalDeviceHostImageCopyProperties_pCopyDstLayouts.resize(
+ chain->PhysicalDeviceHostImageCopyProperties.copyDstLayoutCount);
+ chain->PhysicalDeviceHostImageCopyProperties.pCopyDstLayouts =
+ chain->VkPhysicalDeviceHostImageCopyProperties_pCopyDstLayouts.data();
+ chain->VkPhysicalDeviceLayeredApiPropertiesListKHR_pLayeredApis.resize(
+ chain->PhysicalDeviceLayeredApiPropertiesListKHR.layeredApiCount);
+ chain->PhysicalDeviceLayeredApiPropertiesListKHR.pLayeredApis =
+ chain->VkPhysicalDeviceLayeredApiPropertiesListKHR_pLayeredApis.data();
+ chain->VkPhysicalDeviceVulkan14Properties_pCopySrcLayouts.resize(chain->PhysicalDeviceVulkan14Properties.copySrcLayoutCount);
+ chain->PhysicalDeviceVulkan14Properties.pCopySrcLayouts = chain->VkPhysicalDeviceVulkan14Properties_pCopySrcLayouts.data();
+ chain->VkPhysicalDeviceVulkan14Properties_pCopyDstLayouts.resize(chain->PhysicalDeviceVulkan14Properties.copyDstLayoutCount);
+ chain->PhysicalDeviceVulkan14Properties.pCopyDstLayouts = chain->VkPhysicalDeviceVulkan14Properties_pCopyDstLayouts.data();
+ return true;
+}
+struct phys_device_mem_props2_chain {
+ phys_device_mem_props2_chain() = default;
+ phys_device_mem_props2_chain(const phys_device_mem_props2_chain &) = delete;
+ phys_device_mem_props2_chain &operator=(const phys_device_mem_props2_chain &) = delete;
+ phys_device_mem_props2_chain(phys_device_mem_props2_chain &&) = delete;
+ phys_device_mem_props2_chain &operator=(phys_device_mem_props2_chain &&) = delete;
+ void *start_of_chain = nullptr;
+ VkPhysicalDeviceMemoryBudgetPropertiesEXT PhysicalDeviceMemoryBudgetPropertiesEXT{};
+ void initialize_chain(AppGpu &gpu) noexcept {
+ PhysicalDeviceMemoryBudgetPropertiesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT;
+ std::vector<VkBaseOutStructure *> chain_members{};
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MEMORY_BUDGET_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMemoryBudgetPropertiesEXT));
+
+ if (!chain_members.empty()) {
+ for (size_t i = 0; i < chain_members.size() - 1; i++) {
+ chain_members[i]->pNext = chain_members[i + 1];
+ }
+ start_of_chain = chain_members[0];
+ }
+ }
+};
+void setup_phys_device_mem_props2_chain(VkPhysicalDeviceMemoryProperties2 &start,
+ std::unique_ptr<phys_device_mem_props2_chain> &chain, AppGpu &gpu) {
+ chain = std::unique_ptr<phys_device_mem_props2_chain>(new phys_device_mem_props2_chain());
+ chain->initialize_chain(gpu);
+ start.pNext = chain->start_of_chain;
+};
+
+bool prepare_phys_device_mem_props2_twocall_chain_vectors(std::unique_ptr<phys_device_mem_props2_chain> &chain) {
+ (void)chain;
+ return false;
+}
+struct phys_device_features2_chain {
+ phys_device_features2_chain() = default;
+ phys_device_features2_chain(const phys_device_features2_chain &) = delete;
+ phys_device_features2_chain &operator=(const phys_device_features2_chain &) = delete;
+ phys_device_features2_chain(phys_device_features2_chain &&) = delete;
+ phys_device_features2_chain &operator=(phys_device_features2_chain &&) = delete;
+ void *start_of_chain = nullptr;
+ VkPhysicalDevice16BitStorageFeatures PhysicalDevice16BitStorageFeatures{};
+ VkPhysicalDevice4444FormatsFeaturesEXT PhysicalDevice4444FormatsFeaturesEXT{};
+ VkPhysicalDevice8BitStorageFeatures PhysicalDevice8BitStorageFeatures{};
+ VkPhysicalDeviceASTCDecodeFeaturesEXT PhysicalDeviceASTCDecodeFeaturesEXT{};
+ VkPhysicalDeviceAccelerationStructureFeaturesKHR PhysicalDeviceAccelerationStructureFeaturesKHR{};
+ VkPhysicalDeviceAddressBindingReportFeaturesEXT PhysicalDeviceAddressBindingReportFeaturesEXT{};
+ VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT{};
+ VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT{};
+ VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT PhysicalDeviceBlendOperationAdvancedFeaturesEXT{};
+ VkPhysicalDeviceBorderColorSwizzleFeaturesEXT PhysicalDeviceBorderColorSwizzleFeaturesEXT{};
+ VkPhysicalDeviceBufferDeviceAddressFeatures PhysicalDeviceBufferDeviceAddressFeatures{};
+ VkPhysicalDeviceBufferDeviceAddressFeaturesEXT PhysicalDeviceBufferDeviceAddressFeaturesEXT{};
+ VkPhysicalDeviceColorWriteEnableFeaturesEXT PhysicalDeviceColorWriteEnableFeaturesEXT{};
+ VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR PhysicalDeviceComputeShaderDerivativesFeaturesKHR{};
+ VkPhysicalDeviceConditionalRenderingFeaturesEXT PhysicalDeviceConditionalRenderingFeaturesEXT{};
+ VkPhysicalDeviceCooperativeMatrixFeaturesKHR PhysicalDeviceCooperativeMatrixFeaturesKHR{};
+ VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR PhysicalDeviceCopyMemoryIndirectFeaturesKHR{};
+ VkPhysicalDeviceCustomBorderColorFeaturesEXT PhysicalDeviceCustomBorderColorFeaturesEXT{};
+ VkPhysicalDeviceCustomResolveFeaturesEXT PhysicalDeviceCustomResolveFeaturesEXT{};
+ VkPhysicalDeviceDepthBiasControlFeaturesEXT PhysicalDeviceDepthBiasControlFeaturesEXT{};
+ VkPhysicalDeviceDepthClampControlFeaturesEXT PhysicalDeviceDepthClampControlFeaturesEXT{};
+ VkPhysicalDeviceDepthClampZeroOneFeaturesKHR PhysicalDeviceDepthClampZeroOneFeaturesKHR{};
+ VkPhysicalDeviceDepthClipControlFeaturesEXT PhysicalDeviceDepthClipControlFeaturesEXT{};
+ VkPhysicalDeviceDepthClipEnableFeaturesEXT PhysicalDeviceDepthClipEnableFeaturesEXT{};
+ VkPhysicalDeviceDescriptorBufferFeaturesEXT PhysicalDeviceDescriptorBufferFeaturesEXT{};
+ VkPhysicalDeviceDescriptorHeapFeaturesEXT PhysicalDeviceDescriptorHeapFeaturesEXT{};
+ VkPhysicalDeviceDescriptorIndexingFeatures PhysicalDeviceDescriptorIndexingFeatures{};
+ VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR PhysicalDeviceDeviceAddressCommandsFeaturesKHR{};
+ VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT{};
+ VkPhysicalDeviceDeviceMemoryReportFeaturesEXT PhysicalDeviceDeviceMemoryReportFeaturesEXT{};
+ VkPhysicalDeviceDynamicRenderingFeatures PhysicalDeviceDynamicRenderingFeatures{};
+ VkPhysicalDeviceDynamicRenderingLocalReadFeatures PhysicalDeviceDynamicRenderingLocalReadFeatures{};
+ VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT{};
+ VkPhysicalDeviceExtendedDynamicState2FeaturesEXT PhysicalDeviceExtendedDynamicState2FeaturesEXT{};
+ VkPhysicalDeviceExtendedDynamicState3FeaturesEXT PhysicalDeviceExtendedDynamicState3FeaturesEXT{};
+ VkPhysicalDeviceExtendedDynamicStateFeaturesEXT PhysicalDeviceExtendedDynamicStateFeaturesEXT{};
+ VkPhysicalDeviceFaultFeaturesEXT PhysicalDeviceFaultFeaturesEXT{};
+ VkPhysicalDeviceFaultFeaturesKHR PhysicalDeviceFaultFeaturesKHR{};
+ VkPhysicalDeviceFragmentDensityMap2FeaturesEXT PhysicalDeviceFragmentDensityMap2FeaturesEXT{};
+ VkPhysicalDeviceFragmentDensityMapFeaturesEXT PhysicalDeviceFragmentDensityMapFeaturesEXT{};
+ VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT{};
+ VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR PhysicalDeviceFragmentShaderBarycentricFeaturesKHR{};
+ VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT PhysicalDeviceFragmentShaderInterlockFeaturesEXT{};
+ VkPhysicalDeviceFragmentShadingRateFeaturesKHR PhysicalDeviceFragmentShadingRateFeaturesKHR{};
+ VkPhysicalDeviceFrameBoundaryFeaturesEXT PhysicalDeviceFrameBoundaryFeaturesEXT{};
+ VkPhysicalDeviceGlobalPriorityQueryFeatures PhysicalDeviceGlobalPriorityQueryFeatures{};
+ VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT{};
+ VkPhysicalDeviceHostImageCopyFeatures PhysicalDeviceHostImageCopyFeatures{};
+ VkPhysicalDeviceHostQueryResetFeatures PhysicalDeviceHostQueryResetFeatures{};
+ VkPhysicalDeviceImage2DViewOf3DFeaturesEXT PhysicalDeviceImage2DViewOf3DFeaturesEXT{};
+ VkPhysicalDeviceImageCompressionControlFeaturesEXT PhysicalDeviceImageCompressionControlFeaturesEXT{};
+ VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT{};
+ VkPhysicalDeviceImageRobustnessFeatures PhysicalDeviceImageRobustnessFeatures{};
+ VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT PhysicalDeviceImageSlicedViewOf3DFeaturesEXT{};
+ VkPhysicalDeviceImageViewMinLodFeaturesEXT PhysicalDeviceImageViewMinLodFeaturesEXT{};
+ VkPhysicalDeviceImagelessFramebufferFeatures PhysicalDeviceImagelessFramebufferFeatures{};
+ VkPhysicalDeviceIndexTypeUint8Features PhysicalDeviceIndexTypeUint8Features{};
+ VkPhysicalDeviceInlineUniformBlockFeatures PhysicalDeviceInlineUniformBlockFeatures{};
+ VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR{};
+ VkPhysicalDeviceLegacyDitheringFeaturesEXT PhysicalDeviceLegacyDitheringFeaturesEXT{};
+ VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT PhysicalDeviceLegacyVertexAttributesFeaturesEXT{};
+ VkPhysicalDeviceLineRasterizationFeatures PhysicalDeviceLineRasterizationFeatures{};
+ VkPhysicalDeviceMaintenance10FeaturesKHR PhysicalDeviceMaintenance10FeaturesKHR{};
+ VkPhysicalDeviceMaintenance4Features PhysicalDeviceMaintenance4Features{};
+ VkPhysicalDeviceMaintenance5Features PhysicalDeviceMaintenance5Features{};
+ VkPhysicalDeviceMaintenance6Features PhysicalDeviceMaintenance6Features{};
+ VkPhysicalDeviceMaintenance7FeaturesKHR PhysicalDeviceMaintenance7FeaturesKHR{};
+ VkPhysicalDeviceMaintenance8FeaturesKHR PhysicalDeviceMaintenance8FeaturesKHR{};
+ VkPhysicalDeviceMaintenance9FeaturesKHR PhysicalDeviceMaintenance9FeaturesKHR{};
+ VkPhysicalDeviceMapMemoryPlacedFeaturesEXT PhysicalDeviceMapMemoryPlacedFeaturesEXT{};
+ VkPhysicalDeviceMemoryDecompressionFeaturesEXT PhysicalDeviceMemoryDecompressionFeaturesEXT{};
+ VkPhysicalDeviceMemoryPriorityFeaturesEXT PhysicalDeviceMemoryPriorityFeaturesEXT{};
+ VkPhysicalDeviceMeshShaderFeaturesEXT PhysicalDeviceMeshShaderFeaturesEXT{};
+ VkPhysicalDeviceMultiDrawFeaturesEXT PhysicalDeviceMultiDrawFeaturesEXT{};
+ VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT{};
+ VkPhysicalDeviceMultiviewFeatures PhysicalDeviceMultiviewFeatures{};
+ VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT PhysicalDeviceMutableDescriptorTypeFeaturesEXT{};
+ VkPhysicalDeviceNestedCommandBufferFeaturesEXT PhysicalDeviceNestedCommandBufferFeaturesEXT{};
+ VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT PhysicalDeviceNonSeamlessCubeMapFeaturesEXT{};
+ VkPhysicalDeviceOpacityMicromapFeaturesEXT PhysicalDeviceOpacityMicromapFeaturesEXT{};
+ VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT{};
+ VkPhysicalDevicePerformanceQueryFeaturesKHR PhysicalDevicePerformanceQueryFeaturesKHR{};
+ VkPhysicalDevicePipelineBinaryFeaturesKHR PhysicalDevicePipelineBinaryFeaturesKHR{};
+ VkPhysicalDevicePipelineCreationCacheControlFeatures PhysicalDevicePipelineCreationCacheControlFeatures{};
+ VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR PhysicalDevicePipelineExecutablePropertiesFeaturesKHR{};
+ VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT{};
+ VkPhysicalDevicePipelinePropertiesFeaturesEXT PhysicalDevicePipelinePropertiesFeaturesEXT{};
+ VkPhysicalDevicePipelineProtectedAccessFeatures PhysicalDevicePipelineProtectedAccessFeatures{};
+ VkPhysicalDevicePipelineRobustnessFeatures PhysicalDevicePipelineRobustnessFeatures{};
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+ VkPhysicalDevicePortabilitySubsetFeaturesKHR PhysicalDevicePortabilitySubsetFeaturesKHR{};
+#endif // VK_ENABLE_BETA_EXTENSIONS
+ VkPhysicalDevicePresentId2FeaturesKHR PhysicalDevicePresentId2FeaturesKHR{};
+ VkPhysicalDevicePresentIdFeaturesKHR PhysicalDevicePresentIdFeaturesKHR{};
+ VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR{};
+ VkPhysicalDevicePresentTimingFeaturesEXT PhysicalDevicePresentTimingFeaturesEXT{};
+ VkPhysicalDevicePresentWait2FeaturesKHR PhysicalDevicePresentWait2FeaturesKHR{};
+ VkPhysicalDevicePresentWaitFeaturesKHR PhysicalDevicePresentWaitFeaturesKHR{};
+ VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT{};
+ VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT{};
+ VkPhysicalDevicePrivateDataFeatures PhysicalDevicePrivateDataFeatures{};
+ VkPhysicalDeviceProtectedMemoryFeatures PhysicalDeviceProtectedMemoryFeatures{};
+ VkPhysicalDeviceProvokingVertexFeaturesEXT PhysicalDeviceProvokingVertexFeaturesEXT{};
+ VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT PhysicalDeviceRGBA10X6FormatsFeaturesEXT{};
+ VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT{};
+ VkPhysicalDeviceRayQueryFeaturesKHR PhysicalDeviceRayQueryFeaturesKHR{};
+ VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT PhysicalDeviceRayTracingInvocationReorderFeaturesEXT{};
+ VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR PhysicalDeviceRayTracingMaintenance1FeaturesKHR{};
+ VkPhysicalDeviceRayTracingPipelineFeaturesKHR PhysicalDeviceRayTracingPipelineFeaturesKHR{};
+ VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR PhysicalDeviceRayTracingPositionFetchFeaturesKHR{};
+ VkPhysicalDeviceRobustness2FeaturesKHR PhysicalDeviceRobustness2FeaturesKHR{};
+ VkPhysicalDeviceSamplerYcbcrConversionFeatures PhysicalDeviceSamplerYcbcrConversionFeatures{};
+ VkPhysicalDeviceScalarBlockLayoutFeatures PhysicalDeviceScalarBlockLayoutFeatures{};
+ VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures PhysicalDeviceSeparateDepthStencilLayoutsFeatures{};
+ VkPhysicalDeviceShader64BitIndexingFeaturesEXT PhysicalDeviceShader64BitIndexingFeaturesEXT{};
+ VkPhysicalDeviceShaderAbortFeaturesKHR PhysicalDeviceShaderAbortFeaturesKHR{};
+ VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT PhysicalDeviceShaderAtomicFloat2FeaturesEXT{};
+ VkPhysicalDeviceShaderAtomicFloatFeaturesEXT PhysicalDeviceShaderAtomicFloatFeaturesEXT{};
+ VkPhysicalDeviceShaderAtomicInt64Features PhysicalDeviceShaderAtomicInt64Features{};
+ VkPhysicalDeviceShaderBfloat16FeaturesKHR PhysicalDeviceShaderBfloat16FeaturesKHR{};
+ VkPhysicalDeviceShaderClockFeaturesKHR PhysicalDeviceShaderClockFeaturesKHR{};
+ VkPhysicalDeviceShaderConstantDataFeaturesKHR PhysicalDeviceShaderConstantDataFeaturesKHR{};
+ VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures PhysicalDeviceShaderDemoteToHelperInvocationFeatures{};
+ VkPhysicalDeviceShaderDrawParametersFeatures PhysicalDeviceShaderDrawParametersFeatures{};
+ VkPhysicalDeviceShaderExpectAssumeFeatures PhysicalDeviceShaderExpectAssumeFeatures{};
+ VkPhysicalDeviceShaderFloat16Int8Features PhysicalDeviceShaderFloat16Int8Features{};
+ VkPhysicalDeviceShaderFloat8FeaturesEXT PhysicalDeviceShaderFloat8FeaturesEXT{};
+ VkPhysicalDeviceShaderFloatControls2Features PhysicalDeviceShaderFloatControls2Features{};
+ VkPhysicalDeviceShaderFmaFeaturesKHR PhysicalDeviceShaderFmaFeaturesKHR{};
+ VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT PhysicalDeviceShaderImageAtomicInt64FeaturesEXT{};
+ VkPhysicalDeviceShaderIntegerDotProductFeatures PhysicalDeviceShaderIntegerDotProductFeatures{};
+ char VkPhysicalDeviceShaderIntegerDotProductFeatures_padding[64];
+ VkPhysicalDeviceShaderLongVectorFeaturesEXT PhysicalDeviceShaderLongVectorFeaturesEXT{};
+ VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR{};
+ VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT PhysicalDeviceShaderModuleIdentifierFeaturesEXT{};
+ VkPhysicalDeviceShaderObjectFeaturesEXT PhysicalDeviceShaderObjectFeaturesEXT{};
+ VkPhysicalDeviceShaderQuadControlFeaturesKHR PhysicalDeviceShaderQuadControlFeaturesKHR{};
+ VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR{};
+ VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT PhysicalDeviceShaderReplicatedCompositesFeaturesEXT{};
+ VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures PhysicalDeviceShaderSubgroupExtendedTypesFeatures{};
+ VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT{};
+ VkPhysicalDeviceShaderSubgroupRotateFeatures PhysicalDeviceShaderSubgroupRotateFeatures{};
+ VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR{};
+ VkPhysicalDeviceShaderTerminateInvocationFeatures PhysicalDeviceShaderTerminateInvocationFeatures{};
+ VkPhysicalDeviceShaderTileImageFeaturesEXT PhysicalDeviceShaderTileImageFeaturesEXT{};
+ VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT{};
+ VkPhysicalDeviceShaderUntypedPointersFeaturesKHR PhysicalDeviceShaderUntypedPointersFeaturesKHR{};
+ VkPhysicalDeviceSubgroupSizeControlFeatures PhysicalDeviceSubgroupSizeControlFeatures{};
+ VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT PhysicalDeviceSubpassMergeFeedbackFeaturesEXT{};
+ VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR PhysicalDeviceSwapchainMaintenance1FeaturesKHR{};
+ VkPhysicalDeviceSynchronization2Features PhysicalDeviceSynchronization2Features{};
+ VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT PhysicalDeviceTexelBufferAlignmentFeaturesEXT{};
+ VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT PhysicalDeviceTextureCompressionASTC3DFeaturesEXT{};
+ VkPhysicalDeviceTextureCompressionASTCHDRFeatures PhysicalDeviceTextureCompressionASTCHDRFeatures{};
+ VkPhysicalDeviceTimelineSemaphoreFeatures PhysicalDeviceTimelineSemaphoreFeatures{};
+ VkPhysicalDeviceTransformFeedbackFeaturesEXT PhysicalDeviceTransformFeedbackFeaturesEXT{};
+ VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR PhysicalDeviceUnifiedImageLayoutsFeaturesKHR{};
+ VkPhysicalDeviceUniformBufferStandardLayoutFeatures PhysicalDeviceUniformBufferStandardLayoutFeatures{};
+ VkPhysicalDeviceVariablePointersFeatures PhysicalDeviceVariablePointersFeatures{};
+ VkPhysicalDeviceVertexAttributeDivisorFeatures PhysicalDeviceVertexAttributeDivisorFeatures{};
+ VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT PhysicalDeviceVertexAttributeRobustnessFeaturesEXT{};
+ VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT PhysicalDeviceVertexInputDynamicStateFeaturesEXT{};
+ VkPhysicalDeviceVideoDecodeVP9FeaturesKHR PhysicalDeviceVideoDecodeVP9FeaturesKHR{};
+ VkPhysicalDeviceVideoEncodeAV1FeaturesKHR PhysicalDeviceVideoEncodeAV1FeaturesKHR{};
+ VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR{};
+ VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR{};
+ VkPhysicalDeviceVideoMaintenance1FeaturesKHR PhysicalDeviceVideoMaintenance1FeaturesKHR{};
+ VkPhysicalDeviceVideoMaintenance2FeaturesKHR PhysicalDeviceVideoMaintenance2FeaturesKHR{};
+ VkPhysicalDeviceVulkan11Features PhysicalDeviceVulkan11Features{};
+ VkPhysicalDeviceVulkan12Features PhysicalDeviceVulkan12Features{};
+ VkPhysicalDeviceVulkan13Features PhysicalDeviceVulkan13Features{};
+ VkPhysicalDeviceVulkan14Features PhysicalDeviceVulkan14Features{};
+ VkPhysicalDeviceVulkanMemoryModelFeatures PhysicalDeviceVulkanMemoryModelFeatures{};
+ VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR{};
+ VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT{};
+ VkPhysicalDeviceYcbcrImageArraysFeaturesEXT PhysicalDeviceYcbcrImageArraysFeaturesEXT{};
+ VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT{};
+ VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures{};
+ void initialize_chain(AppGpu &gpu, bool show_promoted_structs) noexcept {
+ PhysicalDevice16BitStorageFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES;
+ PhysicalDevice4444FormatsFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT;
+ PhysicalDevice8BitStorageFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES;
+ PhysicalDeviceASTCDecodeFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT;
+ PhysicalDeviceAccelerationStructureFeaturesKHR.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR;
+ PhysicalDeviceAddressBindingReportFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT;
+ PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT;
+ PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT;
+ PhysicalDeviceBlendOperationAdvancedFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT;
+ PhysicalDeviceBorderColorSwizzleFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT;
+ PhysicalDeviceBufferDeviceAddressFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES;
+ PhysicalDeviceBufferDeviceAddressFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT;
+ PhysicalDeviceColorWriteEnableFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT;
+ PhysicalDeviceComputeShaderDerivativesFeaturesKHR.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR;
+ PhysicalDeviceConditionalRenderingFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT;
+ PhysicalDeviceCooperativeMatrixFeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR;
+ PhysicalDeviceCopyMemoryIndirectFeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR;
+ PhysicalDeviceCustomBorderColorFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT;
+ PhysicalDeviceCustomResolveFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_RESOLVE_FEATURES_EXT;
+ PhysicalDeviceDepthBiasControlFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT;
+ PhysicalDeviceDepthClampControlFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT;
+ PhysicalDeviceDepthClampZeroOneFeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR;
+ PhysicalDeviceDepthClipControlFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT;
+ PhysicalDeviceDepthClipEnableFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT;
+ PhysicalDeviceDescriptorBufferFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT;
+ PhysicalDeviceDescriptorHeapFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_FEATURES_EXT;
+ PhysicalDeviceDescriptorIndexingFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES;
+ PhysicalDeviceDeviceAddressCommandsFeaturesKHR.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_ADDRESS_COMMANDS_FEATURES_KHR;
+ PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT;
+ PhysicalDeviceDeviceMemoryReportFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT;
+ PhysicalDeviceDynamicRenderingFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES;
+ PhysicalDeviceDynamicRenderingLocalReadFeatures.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES;
+ PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT;
+ PhysicalDeviceExtendedDynamicState2FeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT;
+ PhysicalDeviceExtendedDynamicState3FeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT;
+ PhysicalDeviceExtendedDynamicStateFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT;
+ PhysicalDeviceFaultFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT;
+ PhysicalDeviceFaultFeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_KHR;
+ PhysicalDeviceFragmentDensityMap2FeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT;
+ PhysicalDeviceFragmentDensityMapFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT;
+ PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT;
+ PhysicalDeviceFragmentShaderBarycentricFeaturesKHR.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR;
+ PhysicalDeviceFragmentShaderInterlockFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT;
+ PhysicalDeviceFragmentShadingRateFeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR;
+ PhysicalDeviceFrameBoundaryFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT;
+ PhysicalDeviceGlobalPriorityQueryFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES;
+ PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT;
+ PhysicalDeviceHostImageCopyFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES;
+ PhysicalDeviceHostQueryResetFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES;
+ PhysicalDeviceImage2DViewOf3DFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT;
+ PhysicalDeviceImageCompressionControlFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT;
+ PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT;
+ PhysicalDeviceImageRobustnessFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES;
+ PhysicalDeviceImageSlicedViewOf3DFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT;
+ PhysicalDeviceImageViewMinLodFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT;
+ PhysicalDeviceImagelessFramebufferFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES;
+ PhysicalDeviceIndexTypeUint8Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES;
+ PhysicalDeviceInlineUniformBlockFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES;
+ PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INTERNALLY_SYNCHRONIZED_QUEUES_FEATURES_KHR;
+ PhysicalDeviceLegacyDitheringFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT;
+ PhysicalDeviceLegacyVertexAttributesFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT;
+ PhysicalDeviceLineRasterizationFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES;
+ PhysicalDeviceMaintenance10FeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR;
+ PhysicalDeviceMaintenance4Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES;
+ PhysicalDeviceMaintenance5Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES;
+ PhysicalDeviceMaintenance6Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES;
+ PhysicalDeviceMaintenance7FeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR;
+ PhysicalDeviceMaintenance8FeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR;
+ PhysicalDeviceMaintenance9FeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR;
+ PhysicalDeviceMapMemoryPlacedFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT;
+ PhysicalDeviceMemoryDecompressionFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT;
+ PhysicalDeviceMemoryPriorityFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT;
+ PhysicalDeviceMeshShaderFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT;
+ PhysicalDeviceMultiDrawFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT;
+ PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT;
+ PhysicalDeviceMultiviewFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES;
+ PhysicalDeviceMutableDescriptorTypeFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT;
+ PhysicalDeviceNestedCommandBufferFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT;
+ PhysicalDeviceNonSeamlessCubeMapFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT;
+ PhysicalDeviceOpacityMicromapFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT;
+ PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT;
+ PhysicalDevicePerformanceQueryFeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR;
+ PhysicalDevicePipelineBinaryFeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR;
+ PhysicalDevicePipelineCreationCacheControlFeatures.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES;
+ PhysicalDevicePipelineExecutablePropertiesFeaturesKHR.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR;
+ PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT;
+ PhysicalDevicePipelinePropertiesFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT;
+ PhysicalDevicePipelineProtectedAccessFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES;
+ PhysicalDevicePipelineRobustnessFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES;
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+ PhysicalDevicePortabilitySubsetFeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR;
+#endif // VK_ENABLE_BETA_EXTENSIONS
+ PhysicalDevicePresentId2FeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR;
+ PhysicalDevicePresentIdFeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR;
+ PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR;
+ PhysicalDevicePresentTimingFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT;
+ PhysicalDevicePresentWait2FeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR;
+ PhysicalDevicePresentWaitFeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR;
+ PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT;
+ PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT;
+ PhysicalDevicePrivateDataFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES;
+ PhysicalDeviceProtectedMemoryFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES;
+ PhysicalDeviceProvokingVertexFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT;
+ PhysicalDeviceRGBA10X6FormatsFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT;
+ PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT;
+ PhysicalDeviceRayQueryFeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR;
+ PhysicalDeviceRayTracingInvocationReorderFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_EXT;
+ PhysicalDeviceRayTracingMaintenance1FeaturesKHR.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR;
+ PhysicalDeviceRayTracingPipelineFeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR;
+ PhysicalDeviceRayTracingPositionFetchFeaturesKHR.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR;
+ PhysicalDeviceRobustness2FeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR;
+ PhysicalDeviceSamplerYcbcrConversionFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES;
+ PhysicalDeviceScalarBlockLayoutFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES;
+ PhysicalDeviceSeparateDepthStencilLayoutsFeatures.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES;
+ PhysicalDeviceShader64BitIndexingFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT;
+ PhysicalDeviceShaderAbortFeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_FEATURES_KHR;
+ PhysicalDeviceShaderAtomicFloat2FeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT;
+ PhysicalDeviceShaderAtomicFloatFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT;
+ PhysicalDeviceShaderAtomicInt64Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES;
+ PhysicalDeviceShaderBfloat16FeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR;
+ PhysicalDeviceShaderClockFeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR;
+ PhysicalDeviceShaderConstantDataFeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CONSTANT_DATA_FEATURES_KHR;
+ PhysicalDeviceShaderDemoteToHelperInvocationFeatures.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES;
+ PhysicalDeviceShaderDrawParametersFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES;
+ PhysicalDeviceShaderExpectAssumeFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES;
+ PhysicalDeviceShaderFloat16Int8Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES;
+ PhysicalDeviceShaderFloat8FeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT;
+ PhysicalDeviceShaderFloatControls2Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES;
+ PhysicalDeviceShaderFmaFeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR;
+ PhysicalDeviceShaderImageAtomicInt64FeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT;
+ PhysicalDeviceShaderIntegerDotProductFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES;
+ PhysicalDeviceShaderLongVectorFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT;
+ PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR;
+ PhysicalDeviceShaderModuleIdentifierFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT;
+ PhysicalDeviceShaderObjectFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT;
+ PhysicalDeviceShaderQuadControlFeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR;
+ PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR;
+ PhysicalDeviceShaderReplicatedCompositesFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT;
+ PhysicalDeviceShaderSubgroupExtendedTypesFeatures.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES;
+ PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT;
+ PhysicalDeviceShaderSubgroupRotateFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES;
+ PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR;
+ PhysicalDeviceShaderTerminateInvocationFeatures.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES;
+ PhysicalDeviceShaderTileImageFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT;
+ PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_FEATURES_EXT;
+ PhysicalDeviceShaderUntypedPointersFeaturesKHR.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNTYPED_POINTERS_FEATURES_KHR;
+ PhysicalDeviceSubgroupSizeControlFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES;
+ PhysicalDeviceSubpassMergeFeedbackFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT;
+ PhysicalDeviceSwapchainMaintenance1FeaturesKHR.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR;
+ PhysicalDeviceSynchronization2Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES;
+ PhysicalDeviceTexelBufferAlignmentFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT;
+ PhysicalDeviceTextureCompressionASTC3DFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_3D_FEATURES_EXT;
+ PhysicalDeviceTextureCompressionASTCHDRFeatures.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES;
+ PhysicalDeviceTimelineSemaphoreFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES;
+ PhysicalDeviceTransformFeedbackFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT;
+ PhysicalDeviceUnifiedImageLayoutsFeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR;
+ PhysicalDeviceUniformBufferStandardLayoutFeatures.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES;
+ PhysicalDeviceVariablePointersFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES;
+ PhysicalDeviceVertexAttributeDivisorFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES;
+ PhysicalDeviceVertexAttributeRobustnessFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT;
+ PhysicalDeviceVertexInputDynamicStateFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT;
+ PhysicalDeviceVideoDecodeVP9FeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR;
+ PhysicalDeviceVideoEncodeAV1FeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR;
+ PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR;
+ PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR;
+ PhysicalDeviceVideoMaintenance1FeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR;
+ PhysicalDeviceVideoMaintenance2FeaturesKHR.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR;
+ PhysicalDeviceVulkan11Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES;
+ PhysicalDeviceVulkan12Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES;
+ PhysicalDeviceVulkan13Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES;
+ PhysicalDeviceVulkan14Features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES;
+ PhysicalDeviceVulkanMemoryModelFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES;
+ PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR;
+ PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT;
+ PhysicalDeviceYcbcrImageArraysFeaturesEXT.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT;
+ PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT;
+ PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures.sType =
+ VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES;
+ std::vector<VkBaseOutStructure *> chain_members{};
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_16BIT_STORAGE_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_1 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevice16BitStorageFeatures));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_4444_FORMATS_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevice4444FormatsFeaturesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_8BIT_STORAGE_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_2 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevice8BitStorageFeatures));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceASTCDecodeFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceAccelerationStructureFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DEVICE_ADDRESS_BINDING_REPORT_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceAddressBindingReportFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_EXTENSION_NAME))
+ chain_members.push_back(
+ reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceBlendOperationAdvancedFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_BORDER_COLOR_SWIZZLE_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceBorderColorSwizzleFeaturesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_2 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceBufferDeviceAddressFeatures));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceBufferDeviceAddressFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceColorWriteEnableFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME) ||
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceComputeShaderDerivativesFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceConditionalRenderingFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceCooperativeMatrixFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_COPY_MEMORY_INDIRECT_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceCopyMemoryIndirectFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceCustomBorderColorFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_CUSTOM_RESOLVE_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceCustomResolveFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DEPTH_BIAS_CONTROL_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceDepthBiasControlFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DEPTH_CLAMP_CONTROL_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceDepthClampControlFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME) ||
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceDepthClampZeroOneFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceDepthClipControlFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceDepthClipEnableFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceDescriptorBufferFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DESCRIPTOR_HEAP_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceDescriptorHeapFeaturesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_2 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceDescriptorIndexingFeatures));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_DEVICE_ADDRESS_COMMANDS_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceDeviceAddressCommandsFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceDeviceMemoryReportFeaturesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_3 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceDynamicRenderingFeatures));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_4 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceDynamicRenderingLocalReadFeatures));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME))
+ chain_members.push_back(
+ reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceExtendedDynamicState2FeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceExtendedDynamicState3FeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceExtendedDynamicStateFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DEVICE_FAULT_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceFaultFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_DEVICE_FAULT_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceFaultFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceFragmentDensityMap2FeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceFragmentDensityMapFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME) ||
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceFragmentDensityMapOffsetFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME) ||
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceFragmentShaderBarycentricFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceFragmentShaderInterlockFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceFragmentShadingRateFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_FRAME_BOUNDARY_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceFrameBoundaryFeaturesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME) ||
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_4 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceGlobalPriorityQueryFeatures));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceGraphicsPipelineLibraryFeaturesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_4 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceHostImageCopyFeatures));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_2 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceHostQueryResetFeatures));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceImage2DViewOf3DFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceImageCompressionControlFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME))
+ chain_members.push_back(
+ reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceImageCompressionControlSwapchainFeaturesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_3 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceImageRobustnessFeatures));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_IMAGE_SLICED_VIEW_OF_3D_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceImageSlicedViewOf3DFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_IMAGE_VIEW_MIN_LOD_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceImageViewMinLodFeaturesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_2 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceImagelessFramebufferFeatures));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_INDEX_TYPE_UINT8_EXTENSION_NAME) ||
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_4 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceIndexTypeUint8Features));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_3 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceInlineUniformBlockFeatures));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_INTERNALLY_SYNCHRONIZED_QUEUES_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_LEGACY_DITHERING_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceLegacyDitheringFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_LEGACY_VERTEX_ATTRIBUTES_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceLegacyVertexAttributesFeaturesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME) ||
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_4 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceLineRasterizationFeatures));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_10_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMaintenance10FeaturesKHR));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_4_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_3 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMaintenance4Features));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_5_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_4 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMaintenance5Features));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_6_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_4 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMaintenance6Features));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_7_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMaintenance7FeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_8_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMaintenance8FeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_9_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMaintenance9FeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MAP_MEMORY_PLACED_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMapMemoryPlacedFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME) ||
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MEMORY_DECOMPRESSION_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMemoryDecompressionFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMemoryPriorityFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MESH_SHADER_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMeshShaderFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MULTI_DRAW_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMultiDrawFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_EXTENSION_NAME))
+ chain_members.push_back(
+ reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MULTIVIEW_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_1 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMultiviewFeatures));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME) ||
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceMutableDescriptorTypeFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_NESTED_COMMAND_BUFFER_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceNestedCommandBufferFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceNonSeamlessCubeMapFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_OPACITY_MICROMAP_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceOpacityMicromapFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevicePerformanceQueryFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PIPELINE_BINARY_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevicePipelineBinaryFeaturesKHR));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_3 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevicePipelineCreationCacheControlFeatures));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevicePipelineExecutablePropertiesFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevicePipelinePropertiesFeaturesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_4 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevicePipelineProtectedAccessFeatures));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_4 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevicePipelineRobustnessFeatures));
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevicePortabilitySubsetFeaturesKHR));
+#endif // VK_ENABLE_BETA_EXTENSIONS
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PRESENT_ID_2_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevicePresentId2FeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PRESENT_ID_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevicePresentIdFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME) ||
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PRESENT_TIMING_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevicePresentTimingFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PRESENT_WAIT_2_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevicePresentWait2FeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PRESENT_WAIT_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevicePresentWaitFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevicePrimitivesGeneratedQueryFeaturesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PRIVATE_DATA_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_3 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDevicePrivateDataFeatures));
+ if (gpu.api_version == VK_API_VERSION_1_1 || show_promoted_structs)
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceProtectedMemoryFeatures));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceProvokingVertexFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_RGBA10X6_FORMATS_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceRGBA10X6FormatsFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXTENSION_NAME) ||
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXTENSION_NAME))
+ chain_members.push_back(
+ reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_RAY_QUERY_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceRayQueryFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceRayTracingInvocationReorderFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceRayTracingMaintenance1FeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceRayTracingPipelineFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceRayTracingPositionFetchFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_ROBUSTNESS_2_EXTENSION_NAME) ||
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_ROBUSTNESS_2_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceRobustness2FeaturesKHR));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_1 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceSamplerYcbcrConversionFeatures));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_2 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceScalarBlockLayoutFeatures));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_2 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceSeparateDepthStencilLayoutsFeatures));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_64BIT_INDEXING_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShader64BitIndexingFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_ABORT_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderAbortFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderAtomicFloat2FeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderAtomicFloatFeaturesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_2 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderAtomicInt64Features));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_BFLOAT16_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderBfloat16FeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_CLOCK_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderClockFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_CONSTANT_DATA_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderConstantDataFeaturesKHR));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_3 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderDemoteToHelperInvocationFeatures));
+ if (gpu.api_version == VK_API_VERSION_1_1 || show_promoted_structs)
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderDrawParametersFeatures));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_4 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderExpectAssumeFeatures));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_2 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderFloat16Int8Features));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_FLOAT8_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderFloat8FeaturesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_FLOAT_CONTROLS_2_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_4 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderFloatControls2Features));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_FMA_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderFmaFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderImageAtomicInt64FeaturesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_3 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderIntegerDotProductFeatures));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_LONG_VECTOR_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderLongVectorFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_MODULE_IDENTIFIER_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderModuleIdentifierFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_OBJECT_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderObjectFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_QUAD_CONTROL_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderQuadControlFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_EXTENSION_NAME))
+ chain_members.push_back(
+ reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_REPLICATED_COMPOSITES_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderReplicatedCompositesFeaturesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_2 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderSubgroupExtendedTypesFeatures));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderSubgroupPartitionedFeaturesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_4 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderSubgroupRotateFeatures));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME))
+ chain_members.push_back(
+ reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_3 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderTerminateInvocationFeatures));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderTileImageFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_EXTENSION_NAME))
+ chain_members.push_back(
+ reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_UNTYPED_POINTERS_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceShaderUntypedPointersFeaturesKHR));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_3 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceSubgroupSizeControlFeatures));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SUBPASS_MERGE_FEEDBACK_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceSubpassMergeFeedbackFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME) ||
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceSwapchainMaintenance1FeaturesKHR));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_3 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceSynchronization2Features));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceTexelBufferAlignmentFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_TEXTURE_COMPRESSION_ASTC_3D_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceTextureCompressionASTC3DFeaturesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_3 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceTextureCompressionASTCHDRFeatures));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_2 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceTimelineSemaphoreFeatures));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceTransformFeedbackFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceUnifiedImageLayoutsFeaturesKHR));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_2 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceUniformBufferStandardLayoutFeatures));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_1 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceVariablePointersFeatures));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME) ||
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_4 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceVertexAttributeDivisorFeatures));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceVertexAttributeRobustnessFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceVertexInputDynamicStateFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_VP9_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceVideoDecodeVP9FeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_AV1_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceVideoEncodeAV1FeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_MAINTENANCE_1_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceVideoMaintenance1FeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_MAINTENANCE_2_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceVideoMaintenance2FeaturesKHR));
+ if ((gpu.api_version >= VK_API_VERSION_1_2))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceVulkan11Features));
+ if ((gpu.api_version >= VK_API_VERSION_1_2))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceVulkan12Features));
+ if ((gpu.api_version >= VK_API_VERSION_1_3))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceVulkan13Features));
+ if ((gpu.api_version >= VK_API_VERSION_1_4))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceVulkan14Features));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_2 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceVulkanMemoryModelFeatures));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME))
+ chain_members.push_back(
+ reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceYcbcrImageArraysFeaturesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT));
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_3 || show_promoted_structs))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PhysicalDeviceZeroInitializeWorkgroupMemoryFeatures));
+
+ if (!chain_members.empty()) {
+ for (size_t i = 0; i < chain_members.size() - 1; i++) {
+ chain_members[i]->pNext = chain_members[i + 1];
+ }
+ start_of_chain = chain_members[0];
+ }
+ }
+};
+void setup_phys_device_features2_chain(VkPhysicalDeviceFeatures2 &start, std::unique_ptr<phys_device_features2_chain> &chain,
+ AppGpu &gpu, bool show_promoted_structs) {
+ chain = std::unique_ptr<phys_device_features2_chain>(new phys_device_features2_chain());
+ chain->initialize_chain(gpu, show_promoted_structs);
+ start.pNext = chain->start_of_chain;
+};
+
+void chain_iterator_phys_device_features2(Printer &p, AppGpu &gpu, bool show_promoted_structs, const void *place) {
+ while (place) {
+ const VkBaseOutStructure *structure = (const VkBaseOutStructure *)place;
+ p.SetSubHeader();
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES) {
+ const VkPhysicalDevice16BitStorageFeatures *props = (const VkPhysicalDevice16BitStorageFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_1 ? "VkPhysicalDevice16BitStorageFeatures"
+ : ("VkPhysicalDevice16BitStorageFeaturesKHR");
+ DumpVkPhysicalDevice16BitStorageFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDevice16BitStorageFeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_16BIT_STORAGE_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDevice16BitStorageFeatures(p, "VkPhysicalDevice16BitStorageFeaturesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT) {
+ const VkPhysicalDevice4444FormatsFeaturesEXT *props = (const VkPhysicalDevice4444FormatsFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDevice4444FormatsFeaturesEXT";
+ DumpVkPhysicalDevice4444FormatsFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES) {
+ const VkPhysicalDevice8BitStorageFeatures *props = (const VkPhysicalDevice8BitStorageFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDevice8BitStorageFeatures"
+ : ("VkPhysicalDevice8BitStorageFeaturesKHR");
+ DumpVkPhysicalDevice8BitStorageFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDevice8BitStorageFeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_8BIT_STORAGE_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDevice8BitStorageFeatures(p, "VkPhysicalDevice8BitStorageFeaturesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT) {
+ const VkPhysicalDeviceASTCDecodeFeaturesEXT *props = (const VkPhysicalDeviceASTCDecodeFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceASTCDecodeFeaturesEXT";
+ DumpVkPhysicalDeviceASTCDecodeFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR) {
+ const VkPhysicalDeviceAccelerationStructureFeaturesKHR *props =
+ (const VkPhysicalDeviceAccelerationStructureFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceAccelerationStructureFeaturesKHR";
+ DumpVkPhysicalDeviceAccelerationStructureFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT) {
+ const VkPhysicalDeviceAddressBindingReportFeaturesEXT *props =
+ (const VkPhysicalDeviceAddressBindingReportFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceAddressBindingReportFeaturesEXT";
+ DumpVkPhysicalDeviceAddressBindingReportFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT) {
+ const VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT *props =
+ (const VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT";
+ DumpVkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT) {
+ const VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT *props =
+ (const VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT";
+ DumpVkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT) {
+ const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT *props =
+ (const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT";
+ DumpVkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT) {
+ const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT *props =
+ (const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceBorderColorSwizzleFeaturesEXT";
+ DumpVkPhysicalDeviceBorderColorSwizzleFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES) {
+ const VkPhysicalDeviceBufferDeviceAddressFeatures *props =
+ (const VkPhysicalDeviceBufferDeviceAddressFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceBufferDeviceAddressFeatures"
+ : ("VkPhysicalDeviceBufferDeviceAddressFeaturesKHR");
+ DumpVkPhysicalDeviceBufferDeviceAddressFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceBufferDeviceAddressFeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceBufferDeviceAddressFeatures(p, "VkPhysicalDeviceBufferDeviceAddressFeaturesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT) {
+ const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *props =
+ (const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT *)structure;
+ const char *name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME)
+ ? "VkPhysicalDeviceBufferDeviceAddressFeaturesEXT"
+ : ("VkPhysicalDeviceBufferAddressFeaturesEXT");
+ DumpVkPhysicalDeviceBufferDeviceAddressFeaturesEXT(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceBufferAddressFeaturesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceBufferDeviceAddressFeaturesEXT(p, "VkPhysicalDeviceBufferAddressFeaturesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT) {
+ const VkPhysicalDeviceColorWriteEnableFeaturesEXT *props =
+ (const VkPhysicalDeviceColorWriteEnableFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceColorWriteEnableFeaturesEXT";
+ DumpVkPhysicalDeviceColorWriteEnableFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_KHR) {
+ const VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR *props =
+ (const VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR *)structure;
+ const char *name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME)
+ ? "VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR"
+ : ("VkPhysicalDeviceComputeShaderDerivativesFeaturesNV");
+ DumpVkPhysicalDeviceComputeShaderDerivativesFeaturesKHR(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceComputeShaderDerivativesFeaturesNV") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceComputeShaderDerivativesFeaturesKHR(p, "VkPhysicalDeviceComputeShaderDerivativesFeaturesNV",
+ *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT) {
+ const VkPhysicalDeviceConditionalRenderingFeaturesEXT *props =
+ (const VkPhysicalDeviceConditionalRenderingFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceConditionalRenderingFeaturesEXT";
+ DumpVkPhysicalDeviceConditionalRenderingFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR) {
+ const VkPhysicalDeviceCooperativeMatrixFeaturesKHR *props =
+ (const VkPhysicalDeviceCooperativeMatrixFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceCooperativeMatrixFeaturesKHR";
+ DumpVkPhysicalDeviceCooperativeMatrixFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_KHR) {
+ const VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR *props =
+ (const VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceCopyMemoryIndirectFeaturesKHR";
+ DumpVkPhysicalDeviceCopyMemoryIndirectFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT) {
+ const VkPhysicalDeviceCustomBorderColorFeaturesEXT *props =
+ (const VkPhysicalDeviceCustomBorderColorFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceCustomBorderColorFeaturesEXT";
+ DumpVkPhysicalDeviceCustomBorderColorFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_RESOLVE_FEATURES_EXT) {
+ const VkPhysicalDeviceCustomResolveFeaturesEXT *props = (const VkPhysicalDeviceCustomResolveFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceCustomResolveFeaturesEXT";
+ DumpVkPhysicalDeviceCustomResolveFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT) {
+ const VkPhysicalDeviceDepthBiasControlFeaturesEXT *props =
+ (const VkPhysicalDeviceDepthBiasControlFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceDepthBiasControlFeaturesEXT";
+ DumpVkPhysicalDeviceDepthBiasControlFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_CONTROL_FEATURES_EXT) {
+ const VkPhysicalDeviceDepthClampControlFeaturesEXT *props =
+ (const VkPhysicalDeviceDepthClampControlFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceDepthClampControlFeaturesEXT";
+ DumpVkPhysicalDeviceDepthClampControlFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_KHR) {
+ const VkPhysicalDeviceDepthClampZeroOneFeaturesKHR *props =
+ (const VkPhysicalDeviceDepthClampZeroOneFeaturesKHR *)structure;
+ const char *name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME)
+ ? "VkPhysicalDeviceDepthClampZeroOneFeaturesKHR"
+ : ("VkPhysicalDeviceDepthClampZeroOneFeaturesEXT");
+ DumpVkPhysicalDeviceDepthClampZeroOneFeaturesKHR(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceDepthClampZeroOneFeaturesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceDepthClampZeroOneFeaturesKHR(p, "VkPhysicalDeviceDepthClampZeroOneFeaturesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT) {
+ const VkPhysicalDeviceDepthClipControlFeaturesEXT *props =
+ (const VkPhysicalDeviceDepthClipControlFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceDepthClipControlFeaturesEXT";
+ DumpVkPhysicalDeviceDepthClipControlFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT) {
+ const VkPhysicalDeviceDepthClipEnableFeaturesEXT *props = (const VkPhysicalDeviceDepthClipEnableFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceDepthClipEnableFeaturesEXT";
+ DumpVkPhysicalDeviceDepthClipEnableFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT) {
+ const VkPhysicalDeviceDescriptorBufferFeaturesEXT *props =
+ (const VkPhysicalDeviceDescriptorBufferFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceDescriptorBufferFeaturesEXT";
+ DumpVkPhysicalDeviceDescriptorBufferFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_HEAP_FEATURES_EXT) {
+ const VkPhysicalDeviceDescriptorHeapFeaturesEXT *props = (const VkPhysicalDeviceDescriptorHeapFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceDescriptorHeapFeaturesEXT";
+ DumpVkPhysicalDeviceDescriptorHeapFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES) {
+ const VkPhysicalDeviceDescriptorIndexingFeatures *props = (const VkPhysicalDeviceDescriptorIndexingFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceDescriptorIndexingFeatures"
+ : ("VkPhysicalDeviceDescriptorIndexingFeaturesEXT");
+ DumpVkPhysicalDeviceDescriptorIndexingFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceDescriptorIndexingFeaturesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceDescriptorIndexingFeatures(p, "VkPhysicalDeviceDescriptorIndexingFeaturesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_ADDRESS_COMMANDS_FEATURES_KHR) {
+ const VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR *props =
+ (const VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR";
+ DumpVkPhysicalDeviceDeviceAddressCommandsFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_EXT) {
+ const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT *props =
+ (const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT";
+ DumpVkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT) {
+ const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT *props =
+ (const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceDeviceMemoryReportFeaturesEXT";
+ DumpVkPhysicalDeviceDeviceMemoryReportFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES) {
+ const VkPhysicalDeviceDynamicRenderingFeatures *props = (const VkPhysicalDeviceDynamicRenderingFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceDynamicRenderingFeatures"
+ : ("VkPhysicalDeviceDynamicRenderingFeaturesKHR");
+ DumpVkPhysicalDeviceDynamicRenderingFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceDynamicRenderingFeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceDynamicRenderingFeatures(p, "VkPhysicalDeviceDynamicRenderingFeaturesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_LOCAL_READ_FEATURES) {
+ const VkPhysicalDeviceDynamicRenderingLocalReadFeatures *props =
+ (const VkPhysicalDeviceDynamicRenderingLocalReadFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceDynamicRenderingLocalReadFeatures"
+ : ("VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR");
+ DumpVkPhysicalDeviceDynamicRenderingLocalReadFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_DYNAMIC_RENDERING_LOCAL_READ_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceDynamicRenderingLocalReadFeatures(p, "VkPhysicalDeviceDynamicRenderingLocalReadFeaturesKHR",
+ *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT) {
+ const VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT *props =
+ (const VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT";
+ DumpVkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT) {
+ const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT *props =
+ (const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceExtendedDynamicState2FeaturesEXT";
+ DumpVkPhysicalDeviceExtendedDynamicState2FeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT) {
+ const VkPhysicalDeviceExtendedDynamicState3FeaturesEXT *props =
+ (const VkPhysicalDeviceExtendedDynamicState3FeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceExtendedDynamicState3FeaturesEXT";
+ DumpVkPhysicalDeviceExtendedDynamicState3FeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT) {
+ const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *props =
+ (const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceExtendedDynamicStateFeaturesEXT";
+ DumpVkPhysicalDeviceExtendedDynamicStateFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT) {
+ const VkPhysicalDeviceFaultFeaturesEXT *props = (const VkPhysicalDeviceFaultFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceFaultFeaturesEXT";
+ DumpVkPhysicalDeviceFaultFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_KHR) {
+ const VkPhysicalDeviceFaultFeaturesKHR *props = (const VkPhysicalDeviceFaultFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceFaultFeaturesKHR";
+ DumpVkPhysicalDeviceFaultFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT) {
+ const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT *props =
+ (const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceFragmentDensityMap2FeaturesEXT";
+ DumpVkPhysicalDeviceFragmentDensityMap2FeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT) {
+ const VkPhysicalDeviceFragmentDensityMapFeaturesEXT *props =
+ (const VkPhysicalDeviceFragmentDensityMapFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceFragmentDensityMapFeaturesEXT";
+ DumpVkPhysicalDeviceFragmentDensityMapFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_EXT) {
+ const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT *props =
+ (const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT *)structure;
+ const char *name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME)
+ ? "VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT"
+ : ("VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM");
+ DumpVkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT(p, "VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM",
+ *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR) {
+ const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR *props =
+ (const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR *)structure;
+ const char *name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME)
+ ? "VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR"
+ : ("VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV");
+ DumpVkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR(p, "VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV",
+ *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT) {
+ const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *props =
+ (const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT";
+ DumpVkPhysicalDeviceFragmentShaderInterlockFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR) {
+ const VkPhysicalDeviceFragmentShadingRateFeaturesKHR *props =
+ (const VkPhysicalDeviceFragmentShadingRateFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceFragmentShadingRateFeaturesKHR";
+ DumpVkPhysicalDeviceFragmentShadingRateFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT) {
+ const VkPhysicalDeviceFrameBoundaryFeaturesEXT *props = (const VkPhysicalDeviceFrameBoundaryFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceFrameBoundaryFeaturesEXT";
+ DumpVkPhysicalDeviceFrameBoundaryFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES) {
+ const VkPhysicalDeviceGlobalPriorityQueryFeatures *props =
+ (const VkPhysicalDeviceGlobalPriorityQueryFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_4
+ ? "VkPhysicalDeviceGlobalPriorityQueryFeatures"
+ : (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME)
+ ? "VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR"
+ : ("VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT"));
+ DumpVkPhysicalDeviceGlobalPriorityQueryFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceGlobalPriorityQueryFeatures(p, "VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR", *props);
+ }
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceGlobalPriorityQueryFeatures(p, "VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT) {
+ const VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT *props =
+ (const VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT";
+ DumpVkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES) {
+ const VkPhysicalDeviceHostImageCopyFeatures *props = (const VkPhysicalDeviceHostImageCopyFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceHostImageCopyFeatures"
+ : ("VkPhysicalDeviceHostImageCopyFeaturesEXT");
+ DumpVkPhysicalDeviceHostImageCopyFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceHostImageCopyFeaturesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceHostImageCopyFeatures(p, "VkPhysicalDeviceHostImageCopyFeaturesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES) {
+ const VkPhysicalDeviceHostQueryResetFeatures *props = (const VkPhysicalDeviceHostQueryResetFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceHostQueryResetFeatures"
+ : ("VkPhysicalDeviceHostQueryResetFeaturesEXT");
+ DumpVkPhysicalDeviceHostQueryResetFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceHostQueryResetFeaturesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceHostQueryResetFeatures(p, "VkPhysicalDeviceHostQueryResetFeaturesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT) {
+ const VkPhysicalDeviceImage2DViewOf3DFeaturesEXT *props = (const VkPhysicalDeviceImage2DViewOf3DFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceImage2DViewOf3DFeaturesEXT";
+ DumpVkPhysicalDeviceImage2DViewOf3DFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT) {
+ const VkPhysicalDeviceImageCompressionControlFeaturesEXT *props =
+ (const VkPhysicalDeviceImageCompressionControlFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceImageCompressionControlFeaturesEXT";
+ DumpVkPhysicalDeviceImageCompressionControlFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT) {
+ const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT *props =
+ (const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT";
+ DumpVkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES) {
+ const VkPhysicalDeviceImageRobustnessFeatures *props = (const VkPhysicalDeviceImageRobustnessFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceImageRobustnessFeatures"
+ : ("VkPhysicalDeviceImageRobustnessFeaturesEXT");
+ DumpVkPhysicalDeviceImageRobustnessFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceImageRobustnessFeaturesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceImageRobustnessFeatures(p, "VkPhysicalDeviceImageRobustnessFeaturesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT) {
+ const VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT *props =
+ (const VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT";
+ DumpVkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT) {
+ const VkPhysicalDeviceImageViewMinLodFeaturesEXT *props = (const VkPhysicalDeviceImageViewMinLodFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceImageViewMinLodFeaturesEXT";
+ DumpVkPhysicalDeviceImageViewMinLodFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES) {
+ const VkPhysicalDeviceImagelessFramebufferFeatures *props =
+ (const VkPhysicalDeviceImagelessFramebufferFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceImagelessFramebufferFeatures"
+ : ("VkPhysicalDeviceImagelessFramebufferFeaturesKHR");
+ DumpVkPhysicalDeviceImagelessFramebufferFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceImagelessFramebufferFeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceImagelessFramebufferFeatures(p, "VkPhysicalDeviceImagelessFramebufferFeaturesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES) {
+ const VkPhysicalDeviceIndexTypeUint8Features *props = (const VkPhysicalDeviceIndexTypeUint8Features *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_4
+ ? "VkPhysicalDeviceIndexTypeUint8Features"
+ : (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_INDEX_TYPE_UINT8_EXTENSION_NAME)
+ ? "VkPhysicalDeviceIndexTypeUint8FeaturesKHR"
+ : ("VkPhysicalDeviceIndexTypeUint8FeaturesEXT"));
+ DumpVkPhysicalDeviceIndexTypeUint8Features(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceIndexTypeUint8FeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_INDEX_TYPE_UINT8_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceIndexTypeUint8Features(p, "VkPhysicalDeviceIndexTypeUint8FeaturesKHR", *props);
+ }
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceIndexTypeUint8FeaturesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceIndexTypeUint8Features(p, "VkPhysicalDeviceIndexTypeUint8FeaturesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES) {
+ const VkPhysicalDeviceInlineUniformBlockFeatures *props = (const VkPhysicalDeviceInlineUniformBlockFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceInlineUniformBlockFeatures"
+ : ("VkPhysicalDeviceInlineUniformBlockFeaturesEXT");
+ DumpVkPhysicalDeviceInlineUniformBlockFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceInlineUniformBlockFeaturesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceInlineUniformBlockFeatures(p, "VkPhysicalDeviceInlineUniformBlockFeaturesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INTERNALLY_SYNCHRONIZED_QUEUES_FEATURES_KHR) {
+ const VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR *props =
+ (const VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR";
+ DumpVkPhysicalDeviceInternallySynchronizedQueuesFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT) {
+ const VkPhysicalDeviceLegacyDitheringFeaturesEXT *props = (const VkPhysicalDeviceLegacyDitheringFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceLegacyDitheringFeaturesEXT";
+ DumpVkPhysicalDeviceLegacyDitheringFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_VERTEX_ATTRIBUTES_FEATURES_EXT) {
+ const VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT *props =
+ (const VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT";
+ DumpVkPhysicalDeviceLegacyVertexAttributesFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES) {
+ const VkPhysicalDeviceLineRasterizationFeatures *props = (const VkPhysicalDeviceLineRasterizationFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_4
+ ? "VkPhysicalDeviceLineRasterizationFeatures"
+ : (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME)
+ ? "VkPhysicalDeviceLineRasterizationFeaturesKHR"
+ : ("VkPhysicalDeviceLineRasterizationFeaturesEXT"));
+ DumpVkPhysicalDeviceLineRasterizationFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceLineRasterizationFeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_LINE_RASTERIZATION_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceLineRasterizationFeatures(p, "VkPhysicalDeviceLineRasterizationFeaturesKHR", *props);
+ }
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceLineRasterizationFeaturesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceLineRasterizationFeatures(p, "VkPhysicalDeviceLineRasterizationFeaturesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_10_FEATURES_KHR) {
+ const VkPhysicalDeviceMaintenance10FeaturesKHR *props = (const VkPhysicalDeviceMaintenance10FeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceMaintenance10FeaturesKHR";
+ DumpVkPhysicalDeviceMaintenance10FeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES) {
+ const VkPhysicalDeviceMaintenance4Features *props = (const VkPhysicalDeviceMaintenance4Features *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceMaintenance4Features"
+ : ("VkPhysicalDeviceMaintenance4FeaturesKHR");
+ DumpVkPhysicalDeviceMaintenance4Features(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceMaintenance4FeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_4_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceMaintenance4Features(p, "VkPhysicalDeviceMaintenance4FeaturesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES) {
+ const VkPhysicalDeviceMaintenance5Features *props = (const VkPhysicalDeviceMaintenance5Features *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceMaintenance5Features"
+ : ("VkPhysicalDeviceMaintenance5FeaturesKHR");
+ DumpVkPhysicalDeviceMaintenance5Features(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceMaintenance5FeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_5_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceMaintenance5Features(p, "VkPhysicalDeviceMaintenance5FeaturesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES) {
+ const VkPhysicalDeviceMaintenance6Features *props = (const VkPhysicalDeviceMaintenance6Features *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceMaintenance6Features"
+ : ("VkPhysicalDeviceMaintenance6FeaturesKHR");
+ DumpVkPhysicalDeviceMaintenance6Features(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceMaintenance6FeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_6_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceMaintenance6Features(p, "VkPhysicalDeviceMaintenance6FeaturesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_7_FEATURES_KHR) {
+ const VkPhysicalDeviceMaintenance7FeaturesKHR *props = (const VkPhysicalDeviceMaintenance7FeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceMaintenance7FeaturesKHR";
+ DumpVkPhysicalDeviceMaintenance7FeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_8_FEATURES_KHR) {
+ const VkPhysicalDeviceMaintenance8FeaturesKHR *props = (const VkPhysicalDeviceMaintenance8FeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceMaintenance8FeaturesKHR";
+ DumpVkPhysicalDeviceMaintenance8FeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_9_FEATURES_KHR) {
+ const VkPhysicalDeviceMaintenance9FeaturesKHR *props = (const VkPhysicalDeviceMaintenance9FeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceMaintenance9FeaturesKHR";
+ DumpVkPhysicalDeviceMaintenance9FeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAP_MEMORY_PLACED_FEATURES_EXT) {
+ const VkPhysicalDeviceMapMemoryPlacedFeaturesEXT *props = (const VkPhysicalDeviceMapMemoryPlacedFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceMapMemoryPlacedFeaturesEXT";
+ DumpVkPhysicalDeviceMapMemoryPlacedFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_EXT) {
+ const VkPhysicalDeviceMemoryDecompressionFeaturesEXT *props =
+ (const VkPhysicalDeviceMemoryDecompressionFeaturesEXT *)structure;
+ const char *name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MEMORY_DECOMPRESSION_EXTENSION_NAME)
+ ? "VkPhysicalDeviceMemoryDecompressionFeaturesEXT"
+ : ("VkPhysicalDeviceMemoryDecompressionFeaturesNV");
+ DumpVkPhysicalDeviceMemoryDecompressionFeaturesEXT(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceMemoryDecompressionFeaturesNV") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceMemoryDecompressionFeaturesEXT(p, "VkPhysicalDeviceMemoryDecompressionFeaturesNV", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT) {
+ const VkPhysicalDeviceMemoryPriorityFeaturesEXT *props = (const VkPhysicalDeviceMemoryPriorityFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceMemoryPriorityFeaturesEXT";
+ DumpVkPhysicalDeviceMemoryPriorityFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT) {
+ const VkPhysicalDeviceMeshShaderFeaturesEXT *props = (const VkPhysicalDeviceMeshShaderFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceMeshShaderFeaturesEXT";
+ DumpVkPhysicalDeviceMeshShaderFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT) {
+ const VkPhysicalDeviceMultiDrawFeaturesEXT *props = (const VkPhysicalDeviceMultiDrawFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceMultiDrawFeaturesEXT";
+ DumpVkPhysicalDeviceMultiDrawFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT) {
+ const VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT *props =
+ (const VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT";
+ DumpVkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES) {
+ const VkPhysicalDeviceMultiviewFeatures *props = (const VkPhysicalDeviceMultiviewFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_1 ? "VkPhysicalDeviceMultiviewFeatures"
+ : ("VkPhysicalDeviceMultiviewFeaturesKHR");
+ DumpVkPhysicalDeviceMultiviewFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceMultiviewFeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MULTIVIEW_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceMultiviewFeatures(p, "VkPhysicalDeviceMultiviewFeaturesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT) {
+ const VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT *props =
+ (const VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT *)structure;
+ const char *name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME)
+ ? "VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT"
+ : ("VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE");
+ DumpVkPhysicalDeviceMutableDescriptorTypeFeaturesEXT(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceMutableDescriptorTypeFeaturesEXT(p, "VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE",
+ *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT) {
+ const VkPhysicalDeviceNestedCommandBufferFeaturesEXT *props =
+ (const VkPhysicalDeviceNestedCommandBufferFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceNestedCommandBufferFeaturesEXT";
+ DumpVkPhysicalDeviceNestedCommandBufferFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT) {
+ const VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT *props =
+ (const VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT";
+ DumpVkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT) {
+ const VkPhysicalDeviceOpacityMicromapFeaturesEXT *props = (const VkPhysicalDeviceOpacityMicromapFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceOpacityMicromapFeaturesEXT";
+ DumpVkPhysicalDeviceOpacityMicromapFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT) {
+ const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT *props =
+ (const VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT";
+ DumpVkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR) {
+ const VkPhysicalDevicePerformanceQueryFeaturesKHR *props =
+ (const VkPhysicalDevicePerformanceQueryFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDevicePerformanceQueryFeaturesKHR";
+ DumpVkPhysicalDevicePerformanceQueryFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_BINARY_FEATURES_KHR) {
+ const VkPhysicalDevicePipelineBinaryFeaturesKHR *props = (const VkPhysicalDevicePipelineBinaryFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDevicePipelineBinaryFeaturesKHR";
+ DumpVkPhysicalDevicePipelineBinaryFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES) {
+ const VkPhysicalDevicePipelineCreationCacheControlFeatures *props =
+ (const VkPhysicalDevicePipelineCreationCacheControlFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDevicePipelineCreationCacheControlFeatures"
+ : ("VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT");
+ DumpVkPhysicalDevicePipelineCreationCacheControlFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDevicePipelineCreationCacheControlFeatures(
+ p, "VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR) {
+ const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR *props =
+ (const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR";
+ DumpVkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT) {
+ const VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT *props =
+ (const VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT";
+ DumpVkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT) {
+ const VkPhysicalDevicePipelinePropertiesFeaturesEXT *props =
+ (const VkPhysicalDevicePipelinePropertiesFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDevicePipelinePropertiesFeaturesEXT";
+ DumpVkPhysicalDevicePipelinePropertiesFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES) {
+ const VkPhysicalDevicePipelineProtectedAccessFeatures *props =
+ (const VkPhysicalDevicePipelineProtectedAccessFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDevicePipelineProtectedAccessFeatures"
+ : ("VkPhysicalDevicePipelineProtectedAccessFeaturesEXT");
+ DumpVkPhysicalDevicePipelineProtectedAccessFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDevicePipelineProtectedAccessFeaturesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDevicePipelineProtectedAccessFeatures(p, "VkPhysicalDevicePipelineProtectedAccessFeaturesEXT",
+ *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES) {
+ const VkPhysicalDevicePipelineRobustnessFeatures *props = (const VkPhysicalDevicePipelineRobustnessFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDevicePipelineRobustnessFeatures"
+ : ("VkPhysicalDevicePipelineRobustnessFeaturesEXT");
+ DumpVkPhysicalDevicePipelineRobustnessFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDevicePipelineRobustnessFeaturesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDevicePipelineRobustnessFeatures(p, "VkPhysicalDevicePipelineRobustnessFeaturesEXT", *props);
+ }
+ p.AddNewline();
+ }
+#ifdef VK_ENABLE_BETA_EXTENSIONS
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR && p.Type() != OutputType::json) {
+ const VkPhysicalDevicePortabilitySubsetFeaturesKHR *props =
+ (const VkPhysicalDevicePortabilitySubsetFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDevicePortabilitySubsetFeaturesKHR";
+ DumpVkPhysicalDevicePortabilitySubsetFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+#endif // VK_ENABLE_BETA_EXTENSIONS
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_2_FEATURES_KHR) {
+ const VkPhysicalDevicePresentId2FeaturesKHR *props = (const VkPhysicalDevicePresentId2FeaturesKHR *)structure;
+ const char *name = "VkPhysicalDevicePresentId2FeaturesKHR";
+ DumpVkPhysicalDevicePresentId2FeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR) {
+ const VkPhysicalDevicePresentIdFeaturesKHR *props = (const VkPhysicalDevicePresentIdFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDevicePresentIdFeaturesKHR";
+ DumpVkPhysicalDevicePresentIdFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_MODE_FIFO_LATEST_READY_FEATURES_KHR) {
+ const VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR *props =
+ (const VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR *)structure;
+ const char *name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME)
+ ? "VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR"
+ : ("VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT");
+ DumpVkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PRESENT_MODE_FIFO_LATEST_READY_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR(
+ p, "VkPhysicalDevicePresentModeFifoLatestReadyFeaturesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_TIMING_FEATURES_EXT) {
+ const VkPhysicalDevicePresentTimingFeaturesEXT *props = (const VkPhysicalDevicePresentTimingFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDevicePresentTimingFeaturesEXT";
+ DumpVkPhysicalDevicePresentTimingFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_2_FEATURES_KHR) {
+ const VkPhysicalDevicePresentWait2FeaturesKHR *props = (const VkPhysicalDevicePresentWait2FeaturesKHR *)structure;
+ const char *name = "VkPhysicalDevicePresentWait2FeaturesKHR";
+ DumpVkPhysicalDevicePresentWait2FeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR) {
+ const VkPhysicalDevicePresentWaitFeaturesKHR *props = (const VkPhysicalDevicePresentWaitFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDevicePresentWaitFeaturesKHR";
+ DumpVkPhysicalDevicePresentWaitFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT) {
+ const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT *props =
+ (const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT";
+ DumpVkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT) {
+ const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *props =
+ (const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT";
+ DumpVkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES) {
+ const VkPhysicalDevicePrivateDataFeatures *props = (const VkPhysicalDevicePrivateDataFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDevicePrivateDataFeatures"
+ : ("VkPhysicalDevicePrivateDataFeaturesEXT");
+ DumpVkPhysicalDevicePrivateDataFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDevicePrivateDataFeaturesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PRIVATE_DATA_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDevicePrivateDataFeatures(p, "VkPhysicalDevicePrivateDataFeaturesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES) {
+ const VkPhysicalDeviceProtectedMemoryFeatures *props = (const VkPhysicalDeviceProtectedMemoryFeatures *)structure;
+ const char *name = "VkPhysicalDeviceProtectedMemoryFeatures";
+ DumpVkPhysicalDeviceProtectedMemoryFeatures(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT) {
+ const VkPhysicalDeviceProvokingVertexFeaturesEXT *props = (const VkPhysicalDeviceProvokingVertexFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceProvokingVertexFeaturesEXT";
+ DumpVkPhysicalDeviceProvokingVertexFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT) {
+ const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT *props = (const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT";
+ DumpVkPhysicalDeviceRGBA10X6FormatsFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT) {
+ const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT *props =
+ (const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT *)structure;
+ const char *name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXTENSION_NAME)
+ ? "VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT"
+ : ("VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM");
+ DumpVkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT(
+ p, "VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR) {
+ const VkPhysicalDeviceRayQueryFeaturesKHR *props = (const VkPhysicalDeviceRayQueryFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceRayQueryFeaturesKHR";
+ DumpVkPhysicalDeviceRayQueryFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_EXT) {
+ const VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT *props =
+ (const VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT";
+ DumpVkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR) {
+ const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR *props =
+ (const VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR";
+ DumpVkPhysicalDeviceRayTracingMaintenance1FeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR) {
+ const VkPhysicalDeviceRayTracingPipelineFeaturesKHR *props =
+ (const VkPhysicalDeviceRayTracingPipelineFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceRayTracingPipelineFeaturesKHR";
+ DumpVkPhysicalDeviceRayTracingPipelineFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR) {
+ const VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR *props =
+ (const VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR";
+ DumpVkPhysicalDeviceRayTracingPositionFetchFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_KHR) {
+ const VkPhysicalDeviceRobustness2FeaturesKHR *props = (const VkPhysicalDeviceRobustness2FeaturesKHR *)structure;
+ const char *name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_ROBUSTNESS_2_EXTENSION_NAME)
+ ? "VkPhysicalDeviceRobustness2FeaturesKHR"
+ : ("VkPhysicalDeviceRobustness2FeaturesEXT");
+ DumpVkPhysicalDeviceRobustness2FeaturesKHR(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceRobustness2FeaturesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_ROBUSTNESS_2_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceRobustness2FeaturesKHR(p, "VkPhysicalDeviceRobustness2FeaturesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES) {
+ const VkPhysicalDeviceSamplerYcbcrConversionFeatures *props =
+ (const VkPhysicalDeviceSamplerYcbcrConversionFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_1 ? "VkPhysicalDeviceSamplerYcbcrConversionFeatures"
+ : ("VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR");
+ DumpVkPhysicalDeviceSamplerYcbcrConversionFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceSamplerYcbcrConversionFeatures(p, "VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES) {
+ const VkPhysicalDeviceScalarBlockLayoutFeatures *props = (const VkPhysicalDeviceScalarBlockLayoutFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceScalarBlockLayoutFeatures"
+ : ("VkPhysicalDeviceScalarBlockLayoutFeaturesEXT");
+ DumpVkPhysicalDeviceScalarBlockLayoutFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceScalarBlockLayoutFeaturesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceScalarBlockLayoutFeatures(p, "VkPhysicalDeviceScalarBlockLayoutFeaturesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES) {
+ const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures *props =
+ (const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures"
+ : ("VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR");
+ DumpVkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(p, "VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR",
+ *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_64_BIT_INDEXING_FEATURES_EXT) {
+ const VkPhysicalDeviceShader64BitIndexingFeaturesEXT *props =
+ (const VkPhysicalDeviceShader64BitIndexingFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceShader64BitIndexingFeaturesEXT";
+ DumpVkPhysicalDeviceShader64BitIndexingFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ABORT_FEATURES_KHR) {
+ const VkPhysicalDeviceShaderAbortFeaturesKHR *props = (const VkPhysicalDeviceShaderAbortFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceShaderAbortFeaturesKHR";
+ DumpVkPhysicalDeviceShaderAbortFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT) {
+ const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT *props =
+ (const VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT";
+ DumpVkPhysicalDeviceShaderAtomicFloat2FeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT) {
+ const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT *props =
+ (const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceShaderAtomicFloatFeaturesEXT";
+ DumpVkPhysicalDeviceShaderAtomicFloatFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES) {
+ const VkPhysicalDeviceShaderAtomicInt64Features *props = (const VkPhysicalDeviceShaderAtomicInt64Features *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceShaderAtomicInt64Features"
+ : ("VkPhysicalDeviceShaderAtomicInt64FeaturesKHR");
+ DumpVkPhysicalDeviceShaderAtomicInt64Features(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceShaderAtomicInt64FeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceShaderAtomicInt64Features(p, "VkPhysicalDeviceShaderAtomicInt64FeaturesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_BFLOAT16_FEATURES_KHR) {
+ const VkPhysicalDeviceShaderBfloat16FeaturesKHR *props = (const VkPhysicalDeviceShaderBfloat16FeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceShaderBfloat16FeaturesKHR";
+ DumpVkPhysicalDeviceShaderBfloat16FeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR) {
+ const VkPhysicalDeviceShaderClockFeaturesKHR *props = (const VkPhysicalDeviceShaderClockFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceShaderClockFeaturesKHR";
+ DumpVkPhysicalDeviceShaderClockFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CONSTANT_DATA_FEATURES_KHR) {
+ const VkPhysicalDeviceShaderConstantDataFeaturesKHR *props =
+ (const VkPhysicalDeviceShaderConstantDataFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceShaderConstantDataFeaturesKHR";
+ DumpVkPhysicalDeviceShaderConstantDataFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES) {
+ const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures *props =
+ (const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_3
+ ? "VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures"
+ : ("VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT");
+ DumpVkPhysicalDeviceShaderDemoteToHelperInvocationFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceShaderDemoteToHelperInvocationFeatures(
+ p, "VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES) {
+ const VkPhysicalDeviceShaderDrawParametersFeatures *props =
+ (const VkPhysicalDeviceShaderDrawParametersFeatures *)structure;
+ const char *name = "VkPhysicalDeviceShaderDrawParametersFeatures";
+ DumpVkPhysicalDeviceShaderDrawParametersFeatures(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EXPECT_ASSUME_FEATURES) {
+ const VkPhysicalDeviceShaderExpectAssumeFeatures *props = (const VkPhysicalDeviceShaderExpectAssumeFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceShaderExpectAssumeFeatures"
+ : ("VkPhysicalDeviceShaderExpectAssumeFeaturesKHR");
+ DumpVkPhysicalDeviceShaderExpectAssumeFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceShaderExpectAssumeFeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_EXPECT_ASSUME_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceShaderExpectAssumeFeatures(p, "VkPhysicalDeviceShaderExpectAssumeFeaturesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES) {
+ const VkPhysicalDeviceShaderFloat16Int8Features *props = (const VkPhysicalDeviceShaderFloat16Int8Features *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_2
+ ? "VkPhysicalDeviceShaderFloat16Int8Features"
+ : (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME)
+ ? "VkPhysicalDeviceShaderFloat16Int8FeaturesKHR"
+ : ("VkPhysicalDeviceFloat16Int8FeaturesKHR"));
+ DumpVkPhysicalDeviceShaderFloat16Int8Features(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceShaderFloat16Int8FeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceShaderFloat16Int8Features(p, "VkPhysicalDeviceShaderFloat16Int8FeaturesKHR", *props);
+ }
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceFloat16Int8FeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceShaderFloat16Int8Features(p, "VkPhysicalDeviceFloat16Int8FeaturesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT8_FEATURES_EXT) {
+ const VkPhysicalDeviceShaderFloat8FeaturesEXT *props = (const VkPhysicalDeviceShaderFloat8FeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceShaderFloat8FeaturesEXT";
+ DumpVkPhysicalDeviceShaderFloat8FeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT_CONTROLS_2_FEATURES) {
+ const VkPhysicalDeviceShaderFloatControls2Features *props =
+ (const VkPhysicalDeviceShaderFloatControls2Features *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceShaderFloatControls2Features"
+ : ("VkPhysicalDeviceShaderFloatControls2FeaturesKHR");
+ DumpVkPhysicalDeviceShaderFloatControls2Features(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceShaderFloatControls2FeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_FLOAT_CONTROLS_2_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceShaderFloatControls2Features(p, "VkPhysicalDeviceShaderFloatControls2FeaturesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FMA_FEATURES_KHR) {
+ const VkPhysicalDeviceShaderFmaFeaturesKHR *props = (const VkPhysicalDeviceShaderFmaFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceShaderFmaFeaturesKHR";
+ DumpVkPhysicalDeviceShaderFmaFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT) {
+ const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT *props =
+ (const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT";
+ DumpVkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES) {
+ const VkPhysicalDeviceShaderIntegerDotProductFeatures *props =
+ (const VkPhysicalDeviceShaderIntegerDotProductFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceShaderIntegerDotProductFeatures"
+ : ("VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR");
+ DumpVkPhysicalDeviceShaderIntegerDotProductFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceShaderIntegerDotProductFeatures(p, "VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR",
+ *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_LONG_VECTOR_FEATURES_EXT) {
+ const VkPhysicalDeviceShaderLongVectorFeaturesEXT *props =
+ (const VkPhysicalDeviceShaderLongVectorFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceShaderLongVectorFeaturesEXT";
+ DumpVkPhysicalDeviceShaderLongVectorFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MAXIMAL_RECONVERGENCE_FEATURES_KHR) {
+ const VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR *props =
+ (const VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR";
+ DumpVkPhysicalDeviceShaderMaximalReconvergenceFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT) {
+ const VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT *props =
+ (const VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT";
+ DumpVkPhysicalDeviceShaderModuleIdentifierFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT) {
+ const VkPhysicalDeviceShaderObjectFeaturesEXT *props = (const VkPhysicalDeviceShaderObjectFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceShaderObjectFeaturesEXT";
+ DumpVkPhysicalDeviceShaderObjectFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_QUAD_CONTROL_FEATURES_KHR) {
+ const VkPhysicalDeviceShaderQuadControlFeaturesKHR *props =
+ (const VkPhysicalDeviceShaderQuadControlFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceShaderQuadControlFeaturesKHR";
+ DumpVkPhysicalDeviceShaderQuadControlFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_RELAXED_EXTENDED_INSTRUCTION_FEATURES_KHR) {
+ const VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR *props =
+ (const VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR";
+ DumpVkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_REPLICATED_COMPOSITES_FEATURES_EXT) {
+ const VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT *props =
+ (const VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT";
+ DumpVkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES) {
+ const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures *props =
+ (const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures"
+ : ("VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR");
+ DumpVkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(p, "VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR",
+ *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_PARTITIONED_FEATURES_EXT) {
+ const VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT *props =
+ (const VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT";
+ DumpVkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_ROTATE_FEATURES) {
+ const VkPhysicalDeviceShaderSubgroupRotateFeatures *props =
+ (const VkPhysicalDeviceShaderSubgroupRotateFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_4 ? "VkPhysicalDeviceShaderSubgroupRotateFeatures"
+ : ("VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR");
+ DumpVkPhysicalDeviceShaderSubgroupRotateFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceShaderSubgroupRotateFeatures(p, "VkPhysicalDeviceShaderSubgroupRotateFeaturesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR) {
+ const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR *props =
+ (const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR";
+ DumpVkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES) {
+ const VkPhysicalDeviceShaderTerminateInvocationFeatures *props =
+ (const VkPhysicalDeviceShaderTerminateInvocationFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceShaderTerminateInvocationFeatures"
+ : ("VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR");
+ DumpVkPhysicalDeviceShaderTerminateInvocationFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceShaderTerminateInvocationFeatures(p, "VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR",
+ *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT) {
+ const VkPhysicalDeviceShaderTileImageFeaturesEXT *props = (const VkPhysicalDeviceShaderTileImageFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceShaderTileImageFeaturesEXT";
+ DumpVkPhysicalDeviceShaderTileImageFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_FEATURES_EXT) {
+ const VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT *props =
+ (const VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT";
+ DumpVkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_UNTYPED_POINTERS_FEATURES_KHR) {
+ const VkPhysicalDeviceShaderUntypedPointersFeaturesKHR *props =
+ (const VkPhysicalDeviceShaderUntypedPointersFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceShaderUntypedPointersFeaturesKHR";
+ DumpVkPhysicalDeviceShaderUntypedPointersFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES) {
+ const VkPhysicalDeviceSubgroupSizeControlFeatures *props =
+ (const VkPhysicalDeviceSubgroupSizeControlFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceSubgroupSizeControlFeatures"
+ : ("VkPhysicalDeviceSubgroupSizeControlFeaturesEXT");
+ DumpVkPhysicalDeviceSubgroupSizeControlFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceSubgroupSizeControlFeaturesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceSubgroupSizeControlFeatures(p, "VkPhysicalDeviceSubgroupSizeControlFeaturesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT) {
+ const VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT *props =
+ (const VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT";
+ DumpVkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_KHR) {
+ const VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR *props =
+ (const VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR *)structure;
+ const char *name = gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME)
+ ? "VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR"
+ : ("VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT");
+ DumpVkPhysicalDeviceSwapchainMaintenance1FeaturesKHR(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceSwapchainMaintenance1FeaturesKHR(p, "VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES) {
+ const VkPhysicalDeviceSynchronization2Features *props = (const VkPhysicalDeviceSynchronization2Features *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceSynchronization2Features"
+ : ("VkPhysicalDeviceSynchronization2FeaturesKHR");
+ DumpVkPhysicalDeviceSynchronization2Features(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceSynchronization2FeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceSynchronization2Features(p, "VkPhysicalDeviceSynchronization2FeaturesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT) {
+ const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *props =
+ (const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT";
+ DumpVkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_3D_FEATURES_EXT) {
+ const VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT *props =
+ (const VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT";
+ DumpVkPhysicalDeviceTextureCompressionASTC3DFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES) {
+ const VkPhysicalDeviceTextureCompressionASTCHDRFeatures *props =
+ (const VkPhysicalDeviceTextureCompressionASTCHDRFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceTextureCompressionASTCHDRFeatures"
+ : ("VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT");
+ DumpVkPhysicalDeviceTextureCompressionASTCHDRFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceTextureCompressionASTCHDRFeatures(p, "VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT",
+ *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES) {
+ const VkPhysicalDeviceTimelineSemaphoreFeatures *props = (const VkPhysicalDeviceTimelineSemaphoreFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceTimelineSemaphoreFeatures"
+ : ("VkPhysicalDeviceTimelineSemaphoreFeaturesKHR");
+ DumpVkPhysicalDeviceTimelineSemaphoreFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceTimelineSemaphoreFeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceTimelineSemaphoreFeatures(p, "VkPhysicalDeviceTimelineSemaphoreFeaturesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT) {
+ const VkPhysicalDeviceTransformFeedbackFeaturesEXT *props =
+ (const VkPhysicalDeviceTransformFeedbackFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceTransformFeedbackFeaturesEXT";
+ DumpVkPhysicalDeviceTransformFeedbackFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFIED_IMAGE_LAYOUTS_FEATURES_KHR) {
+ const VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR *props =
+ (const VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR";
+ DumpVkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES) {
+ const VkPhysicalDeviceUniformBufferStandardLayoutFeatures *props =
+ (const VkPhysicalDeviceUniformBufferStandardLayoutFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceUniformBufferStandardLayoutFeatures"
+ : ("VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR");
+ DumpVkPhysicalDeviceUniformBufferStandardLayoutFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceUniformBufferStandardLayoutFeatures(p, "VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR",
+ *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES) {
+ const VkPhysicalDeviceVariablePointersFeatures *props = (const VkPhysicalDeviceVariablePointersFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_1
+ ? "VkPhysicalDeviceVariablePointersFeatures"
+ : (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME)
+ ? "VkPhysicalDeviceVariablePointerFeaturesKHR"
+ : ("VkPhysicalDeviceVariablePointersFeaturesKHR"));
+ DumpVkPhysicalDeviceVariablePointersFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceVariablePointerFeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceVariablePointersFeatures(p, "VkPhysicalDeviceVariablePointerFeaturesKHR", *props);
+ }
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceVariablePointersFeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceVariablePointersFeatures(p, "VkPhysicalDeviceVariablePointersFeaturesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES) {
+ const VkPhysicalDeviceVertexAttributeDivisorFeatures *props =
+ (const VkPhysicalDeviceVertexAttributeDivisorFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_4
+ ? "VkPhysicalDeviceVertexAttributeDivisorFeatures"
+ : (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME)
+ ? "VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR"
+ : ("VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT"));
+ DumpVkPhysicalDeviceVertexAttributeDivisorFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceVertexAttributeDivisorFeatures(p, "VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR", *props);
+ }
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceVertexAttributeDivisorFeatures(p, "VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_ROBUSTNESS_FEATURES_EXT) {
+ const VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT *props =
+ (const VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT";
+ DumpVkPhysicalDeviceVertexAttributeRobustnessFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT) {
+ const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT *props =
+ (const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT";
+ DumpVkPhysicalDeviceVertexInputDynamicStateFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_DECODE_VP9_FEATURES_KHR) {
+ const VkPhysicalDeviceVideoDecodeVP9FeaturesKHR *props = (const VkPhysicalDeviceVideoDecodeVP9FeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceVideoDecodeVP9FeaturesKHR";
+ DumpVkPhysicalDeviceVideoDecodeVP9FeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_AV1_FEATURES_KHR) {
+ const VkPhysicalDeviceVideoEncodeAV1FeaturesKHR *props = (const VkPhysicalDeviceVideoEncodeAV1FeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceVideoEncodeAV1FeaturesKHR";
+ DumpVkPhysicalDeviceVideoEncodeAV1FeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_INTRA_REFRESH_FEATURES_KHR) {
+ const VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR *props =
+ (const VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR";
+ DumpVkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUANTIZATION_MAP_FEATURES_KHR) {
+ const VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR *props =
+ (const VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR";
+ DumpVkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR) {
+ const VkPhysicalDeviceVideoMaintenance1FeaturesKHR *props =
+ (const VkPhysicalDeviceVideoMaintenance1FeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceVideoMaintenance1FeaturesKHR";
+ DumpVkPhysicalDeviceVideoMaintenance1FeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_2_FEATURES_KHR) {
+ const VkPhysicalDeviceVideoMaintenance2FeaturesKHR *props =
+ (const VkPhysicalDeviceVideoMaintenance2FeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceVideoMaintenance2FeaturesKHR";
+ DumpVkPhysicalDeviceVideoMaintenance2FeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES) {
+ const VkPhysicalDeviceVulkan11Features *props = (const VkPhysicalDeviceVulkan11Features *)structure;
+ const char *name = "VkPhysicalDeviceVulkan11Features";
+ DumpVkPhysicalDeviceVulkan11Features(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES) {
+ const VkPhysicalDeviceVulkan12Features *props = (const VkPhysicalDeviceVulkan12Features *)structure;
+ const char *name = "VkPhysicalDeviceVulkan12Features";
+ DumpVkPhysicalDeviceVulkan12Features(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES) {
+ const VkPhysicalDeviceVulkan13Features *props = (const VkPhysicalDeviceVulkan13Features *)structure;
+ const char *name = "VkPhysicalDeviceVulkan13Features";
+ DumpVkPhysicalDeviceVulkan13Features(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES) {
+ const VkPhysicalDeviceVulkan14Features *props = (const VkPhysicalDeviceVulkan14Features *)structure;
+ const char *name = "VkPhysicalDeviceVulkan14Features";
+ DumpVkPhysicalDeviceVulkan14Features(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES) {
+ const VkPhysicalDeviceVulkanMemoryModelFeatures *props = (const VkPhysicalDeviceVulkanMemoryModelFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_2 ? "VkPhysicalDeviceVulkanMemoryModelFeatures"
+ : ("VkPhysicalDeviceVulkanMemoryModelFeaturesKHR");
+ DumpVkPhysicalDeviceVulkanMemoryModelFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceVulkanMemoryModelFeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceVulkanMemoryModelFeatures(p, "VkPhysicalDeviceVulkanMemoryModelFeaturesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR) {
+ const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR *props =
+ (const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR *)structure;
+ const char *name = "VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR";
+ DumpVkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT) {
+ const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT *props =
+ (const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT";
+ DumpVkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT) {
+ const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *props =
+ (const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceYcbcrImageArraysFeaturesEXT";
+ DumpVkPhysicalDeviceYcbcrImageArraysFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_DEVICE_MEMORY_FEATURES_EXT) {
+ const VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT *props =
+ (const VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT *)structure;
+ const char *name = "VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT";
+ DumpVkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES) {
+ const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures *props =
+ (const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures"
+ : ("VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR");
+ DumpVkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures(p, name, *props);
+ if (show_promoted_structs && strcmp(name, "VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR") != 0 &&
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME)) {
+ p.AddNewline();
+ p.SetSubHeader();
+ DumpVkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures(
+ p, "VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR", *props);
+ }
+ p.AddNewline();
+ }
+ place = structure->pNext;
+ }
+}
+
+bool prepare_phys_device_features2_twocall_chain_vectors(std::unique_ptr<phys_device_features2_chain> &chain) {
+ (void)chain;
+ return false;
+}
+struct surface_capabilities2_chain {
+ surface_capabilities2_chain() = default;
+ surface_capabilities2_chain(const surface_capabilities2_chain &) = delete;
+ surface_capabilities2_chain &operator=(const surface_capabilities2_chain &) = delete;
+ surface_capabilities2_chain(surface_capabilities2_chain &&) = delete;
+ surface_capabilities2_chain &operator=(surface_capabilities2_chain &&) = delete;
+ void *start_of_chain = nullptr;
+ VkPresentTimingSurfaceCapabilitiesEXT PresentTimingSurfaceCapabilitiesEXT{};
+ VkSharedPresentSurfaceCapabilitiesKHR SharedPresentSurfaceCapabilitiesKHR{};
+#ifdef VK_USE_PLATFORM_WIN32_KHR
+ VkSurfaceCapabilitiesFullScreenExclusiveEXT SurfaceCapabilitiesFullScreenExclusiveEXT{};
+#endif // VK_USE_PLATFORM_WIN32_KHR
+ VkSurfaceCapabilitiesPresentId2KHR SurfaceCapabilitiesPresentId2KHR{};
+ VkSurfaceCapabilitiesPresentWait2KHR SurfaceCapabilitiesPresentWait2KHR{};
+ VkSurfaceProtectedCapabilitiesKHR SurfaceProtectedCapabilitiesKHR{};
+ void initialize_chain(AppInstance &inst, AppGpu &gpu) noexcept {
+ PresentTimingSurfaceCapabilitiesEXT.sType = VK_STRUCTURE_TYPE_PRESENT_TIMING_SURFACE_CAPABILITIES_EXT;
+ SharedPresentSurfaceCapabilitiesKHR.sType = VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR;
+#ifdef VK_USE_PLATFORM_WIN32_KHR
+ SurfaceCapabilitiesFullScreenExclusiveEXT.sType = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT;
+#endif // VK_USE_PLATFORM_WIN32_KHR
+ SurfaceCapabilitiesPresentId2KHR.sType = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR;
+ SurfaceCapabilitiesPresentWait2KHR.sType = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR;
+ SurfaceProtectedCapabilitiesKHR.sType = VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR;
+ std::vector<VkBaseOutStructure *> chain_members{};
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PRESENT_TIMING_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&PresentTimingSurfaceCapabilitiesEXT));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&SharedPresentSurfaceCapabilitiesKHR));
+#ifdef VK_USE_PLATFORM_WIN32_KHR
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&SurfaceCapabilitiesFullScreenExclusiveEXT));
+#endif // VK_USE_PLATFORM_WIN32_KHR
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PRESENT_ID_2_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&SurfaceCapabilitiesPresentId2KHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PRESENT_WAIT_2_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&SurfaceCapabilitiesPresentWait2KHR));
+ if (inst.CheckExtensionEnabled(VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&SurfaceProtectedCapabilitiesKHR));
+
+ if (!chain_members.empty()) {
+ for (size_t i = 0; i < chain_members.size() - 1; i++) {
+ chain_members[i]->pNext = chain_members[i + 1];
+ }
+ start_of_chain = chain_members[0];
+ }
+ }
+};
+void setup_surface_capabilities2_chain(VkSurfaceCapabilities2KHR &start, std::unique_ptr<surface_capabilities2_chain> &chain,
+ AppInstance &inst, AppGpu &gpu) {
+ chain = std::unique_ptr<surface_capabilities2_chain>(new surface_capabilities2_chain());
+ chain->initialize_chain(inst, gpu);
+ start.pNext = chain->start_of_chain;
+};
+
+void chain_iterator_surface_capabilities2(Printer &p, AppInstance &inst, AppGpu &gpu, const void *place) {
+ while (place) {
+ const VkBaseOutStructure *structure = (const VkBaseOutStructure *)place;
+ p.SetSubHeader();
+ if (structure->sType == VK_STRUCTURE_TYPE_PRESENT_TIMING_SURFACE_CAPABILITIES_EXT) {
+ const VkPresentTimingSurfaceCapabilitiesEXT *props = (const VkPresentTimingSurfaceCapabilitiesEXT *)structure;
+ const char *name = "VkPresentTimingSurfaceCapabilitiesEXT";
+ DumpVkPresentTimingSurfaceCapabilitiesEXT(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR) {
+ const VkSharedPresentSurfaceCapabilitiesKHR *props = (const VkSharedPresentSurfaceCapabilitiesKHR *)structure;
+ const char *name = "VkSharedPresentSurfaceCapabilitiesKHR";
+ DumpVkSharedPresentSurfaceCapabilitiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+#ifdef VK_USE_PLATFORM_WIN32_KHR
+ if (structure->sType == VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT) {
+ const VkSurfaceCapabilitiesFullScreenExclusiveEXT *props =
+ (const VkSurfaceCapabilitiesFullScreenExclusiveEXT *)structure;
+ const char *name = "VkSurfaceCapabilitiesFullScreenExclusiveEXT";
+ DumpVkSurfaceCapabilitiesFullScreenExclusiveEXT(p, name, *props);
+ p.AddNewline();
+ }
+#endif // VK_USE_PLATFORM_WIN32_KHR
+ if (structure->sType == VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_ID_2_KHR) {
+ const VkSurfaceCapabilitiesPresentId2KHR *props = (const VkSurfaceCapabilitiesPresentId2KHR *)structure;
+ const char *name = "VkSurfaceCapabilitiesPresentId2KHR";
+ DumpVkSurfaceCapabilitiesPresentId2KHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_WAIT_2_KHR) {
+ const VkSurfaceCapabilitiesPresentWait2KHR *props = (const VkSurfaceCapabilitiesPresentWait2KHR *)structure;
+ const char *name = "VkSurfaceCapabilitiesPresentWait2KHR";
+ DumpVkSurfaceCapabilitiesPresentWait2KHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR) {
+ const VkSurfaceProtectedCapabilitiesKHR *props = (const VkSurfaceProtectedCapabilitiesKHR *)structure;
+ const char *name = "VkSurfaceProtectedCapabilitiesKHR";
+ DumpVkSurfaceProtectedCapabilitiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ place = structure->pNext;
+ }
+}
+
+bool prepare_surface_capabilities2_twocall_chain_vectors(std::unique_ptr<surface_capabilities2_chain> &chain) {
+ (void)chain;
+ return false;
+}
+struct format_properties2_chain {
+ format_properties2_chain() = default;
+ format_properties2_chain(const format_properties2_chain &) = delete;
+ format_properties2_chain &operator=(const format_properties2_chain &) = delete;
+ format_properties2_chain(format_properties2_chain &&) = delete;
+ format_properties2_chain &operator=(format_properties2_chain &&) = delete;
+ void *start_of_chain = nullptr;
+ VkFormatProperties3 FormatProperties3{};
+ VkSubpassResolvePerformanceQueryEXT SubpassResolvePerformanceQueryEXT{};
+ void initialize_chain(AppGpu &gpu) noexcept {
+ FormatProperties3.sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3;
+ SubpassResolvePerformanceQueryEXT.sType = VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT;
+ std::vector<VkBaseOutStructure *> chain_members{};
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_3))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&FormatProperties3));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&SubpassResolvePerformanceQueryEXT));
+
+ if (!chain_members.empty()) {
+ for (size_t i = 0; i < chain_members.size() - 1; i++) {
+ chain_members[i]->pNext = chain_members[i + 1];
+ }
+ start_of_chain = chain_members[0];
+ }
+ }
+};
+void setup_format_properties2_chain(VkFormatProperties2 &start, std::unique_ptr<format_properties2_chain> &chain, AppGpu &gpu) {
+ chain = std::unique_ptr<format_properties2_chain>(new format_properties2_chain());
+ chain->initialize_chain(gpu);
+ start.pNext = chain->start_of_chain;
+};
+
+void chain_iterator_format_properties2(Printer &p, AppGpu &gpu, const void *place) {
+ while (place) {
+ const VkBaseOutStructure *structure = (const VkBaseOutStructure *)place;
+ p.SetSubHeader();
+ if (structure->sType == VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3) {
+ const VkFormatProperties3 *props = (const VkFormatProperties3 *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_3 ? "VkFormatProperties3" : ("VkFormatProperties3KHR");
+ DumpVkFormatProperties3(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT) {
+ const VkSubpassResolvePerformanceQueryEXT *props = (const VkSubpassResolvePerformanceQueryEXT *)structure;
+ const char *name = "VkSubpassResolvePerformanceQueryEXT";
+ DumpVkSubpassResolvePerformanceQueryEXT(p, name, *props);
+ p.AddNewline();
+ }
+ place = structure->pNext;
+ }
+}
+
+bool prepare_format_properties2_twocall_chain_vectors(std::unique_ptr<format_properties2_chain> &chain) {
+ (void)chain;
+ return false;
+}
+struct queue_properties2_chain {
+ queue_properties2_chain() = default;
+ queue_properties2_chain(const queue_properties2_chain &) = delete;
+ queue_properties2_chain &operator=(const queue_properties2_chain &) = delete;
+ queue_properties2_chain(queue_properties2_chain &&) = delete;
+ queue_properties2_chain &operator=(queue_properties2_chain &&) = delete;
+ void *start_of_chain = nullptr;
+ VkQueueFamilyGlobalPriorityProperties QueueFamilyGlobalPriorityProperties{};
+ VkQueueFamilyOwnershipTransferPropertiesKHR QueueFamilyOwnershipTransferPropertiesKHR{};
+ VkQueueFamilyQueryResultStatusPropertiesKHR QueueFamilyQueryResultStatusPropertiesKHR{};
+ VkQueueFamilyVideoPropertiesKHR QueueFamilyVideoPropertiesKHR{};
+ void initialize_chain(AppGpu &gpu) noexcept {
+ QueueFamilyGlobalPriorityProperties.sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES;
+ QueueFamilyOwnershipTransferPropertiesKHR.sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR;
+ QueueFamilyQueryResultStatusPropertiesKHR.sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR;
+ QueueFamilyVideoPropertiesKHR.sType = VK_STRUCTURE_TYPE_QUEUE_FAMILY_VIDEO_PROPERTIES_KHR;
+ std::vector<VkBaseOutStructure *> chain_members{};
+ if ((gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME) ||
+ gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME)) &&
+ (gpu.api_version < VK_API_VERSION_1_4))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&QueueFamilyGlobalPriorityProperties));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_9_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&QueueFamilyOwnershipTransferPropertiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_QUEUE_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&QueueFamilyQueryResultStatusPropertiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_QUEUE_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&QueueFamilyVideoPropertiesKHR));
+
+ if (!chain_members.empty()) {
+ for (size_t i = 0; i < chain_members.size() - 1; i++) {
+ chain_members[i]->pNext = chain_members[i + 1];
+ }
+ start_of_chain = chain_members[0];
+ }
+ }
+};
+void setup_queue_properties2_chain(VkQueueFamilyProperties2 &start, std::unique_ptr<queue_properties2_chain> &chain, AppGpu &gpu) {
+ chain = std::unique_ptr<queue_properties2_chain>(new queue_properties2_chain());
+ chain->initialize_chain(gpu);
+ start.pNext = chain->start_of_chain;
+};
+
+void chain_iterator_queue_properties2(Printer &p, AppGpu &gpu, const void *place) {
+ while (place) {
+ const VkBaseOutStructure *structure = (const VkBaseOutStructure *)place;
+ p.SetSubHeader();
+ if (structure->sType == VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES) {
+ const VkQueueFamilyGlobalPriorityProperties *props = (const VkQueueFamilyGlobalPriorityProperties *)structure;
+ const char *name = gpu.api_version >= VK_API_VERSION_1_4
+ ? "VkQueueFamilyGlobalPriorityProperties"
+ : (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME)
+ ? "VkQueueFamilyGlobalPriorityPropertiesKHR"
+ : ("VkQueueFamilyGlobalPriorityPropertiesEXT"));
+ DumpVkQueueFamilyGlobalPriorityProperties(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_QUEUE_FAMILY_OWNERSHIP_TRANSFER_PROPERTIES_KHR) {
+ const VkQueueFamilyOwnershipTransferPropertiesKHR *props =
+ (const VkQueueFamilyOwnershipTransferPropertiesKHR *)structure;
+ const char *name = "VkQueueFamilyOwnershipTransferPropertiesKHR";
+ DumpVkQueueFamilyOwnershipTransferPropertiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR) {
+ const VkQueueFamilyQueryResultStatusPropertiesKHR *props =
+ (const VkQueueFamilyQueryResultStatusPropertiesKHR *)structure;
+ const char *name = "VkQueueFamilyQueryResultStatusPropertiesKHR";
+ DumpVkQueueFamilyQueryResultStatusPropertiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_QUEUE_FAMILY_VIDEO_PROPERTIES_KHR) {
+ const VkQueueFamilyVideoPropertiesKHR *props = (const VkQueueFamilyVideoPropertiesKHR *)structure;
+ const char *name = "VkQueueFamilyVideoPropertiesKHR";
+ DumpVkQueueFamilyVideoPropertiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ place = structure->pNext;
+ }
+}
+
+bool prepare_queue_properties2_twocall_chain_vectors(std::unique_ptr<queue_properties2_chain> &chain) {
+ (void)chain;
+ return false;
+}
+struct video_profile_info_chain {
+ video_profile_info_chain() = default;
+ video_profile_info_chain(const video_profile_info_chain &) = delete;
+ video_profile_info_chain &operator=(const video_profile_info_chain &) = delete;
+ video_profile_info_chain(video_profile_info_chain &&) = delete;
+ video_profile_info_chain &operator=(video_profile_info_chain &&) = delete;
+ void *start_of_chain = nullptr;
+ VkVideoDecodeAV1ProfileInfoKHR VideoDecodeAV1ProfileInfoKHR{};
+ VkVideoDecodeH264ProfileInfoKHR VideoDecodeH264ProfileInfoKHR{};
+ VkVideoDecodeH265ProfileInfoKHR VideoDecodeH265ProfileInfoKHR{};
+ VkVideoDecodeUsageInfoKHR VideoDecodeUsageInfoKHR{};
+ VkVideoDecodeVP9ProfileInfoKHR VideoDecodeVP9ProfileInfoKHR{};
+ VkVideoEncodeAV1ProfileInfoKHR VideoEncodeAV1ProfileInfoKHR{};
+ VkVideoEncodeH264ProfileInfoKHR VideoEncodeH264ProfileInfoKHR{};
+ VkVideoEncodeH265ProfileInfoKHR VideoEncodeH265ProfileInfoKHR{};
+ VkVideoEncodeProfileRgbConversionInfoVALVE VideoEncodeProfileRgbConversionInfoVALVE{};
+ VkVideoEncodeUsageInfoKHR VideoEncodeUsageInfoKHR{};
+ void initialize_chain(AppGpu &gpu) noexcept {
+ VideoDecodeAV1ProfileInfoKHR.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR;
+ VideoDecodeH264ProfileInfoKHR.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR;
+ VideoDecodeH265ProfileInfoKHR.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR;
+ VideoDecodeUsageInfoKHR.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_USAGE_INFO_KHR;
+ VideoDecodeVP9ProfileInfoKHR.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PROFILE_INFO_KHR;
+ VideoEncodeAV1ProfileInfoKHR.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PROFILE_INFO_KHR;
+ VideoEncodeH264ProfileInfoKHR.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_KHR;
+ VideoEncodeH265ProfileInfoKHR.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_KHR;
+ VideoEncodeProfileRgbConversionInfoVALVE.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_PROFILE_RGB_CONVERSION_INFO_VALVE;
+ VideoEncodeUsageInfoKHR.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR;
+ std::vector<VkBaseOutStructure *> chain_members{};
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoDecodeAV1ProfileInfoKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoDecodeH264ProfileInfoKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoDecodeH265ProfileInfoKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoDecodeUsageInfoKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_VP9_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoDecodeVP9ProfileInfoKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_AV1_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoEncodeAV1ProfileInfoKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_H264_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoEncodeH264ProfileInfoKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_H265_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoEncodeH265ProfileInfoKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_VALVE_VIDEO_ENCODE_RGB_CONVERSION_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoEncodeProfileRgbConversionInfoVALVE));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoEncodeUsageInfoKHR));
+
+ if (!chain_members.empty()) {
+ for (size_t i = 0; i < chain_members.size() - 1; i++) {
+ chain_members[i]->pNext = chain_members[i + 1];
+ }
+ start_of_chain = chain_members[0];
+ }
+ }
+};
+void setup_video_profile_info_chain(VkVideoProfileInfoKHR &start, std::unique_ptr<video_profile_info_chain> &chain, AppGpu &gpu) {
+ chain = std::unique_ptr<video_profile_info_chain>(new video_profile_info_chain());
+ chain->initialize_chain(gpu);
+ start.pNext = chain->start_of_chain;
+};
+
+void chain_iterator_video_profile_info(Printer &p, AppGpu &gpu, const void *place) {
+ while (place) {
+ const VkBaseOutStructure *structure = (const VkBaseOutStructure *)place;
+ p.SetSubHeader();
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR) {
+ const VkVideoDecodeAV1ProfileInfoKHR *props = (const VkVideoDecodeAV1ProfileInfoKHR *)structure;
+ const char *name = "VkVideoDecodeAV1ProfileInfoKHR";
+ DumpVkVideoDecodeAV1ProfileInfoKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR) {
+ const VkVideoDecodeH264ProfileInfoKHR *props = (const VkVideoDecodeH264ProfileInfoKHR *)structure;
+ const char *name = "VkVideoDecodeH264ProfileInfoKHR";
+ DumpVkVideoDecodeH264ProfileInfoKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR) {
+ const VkVideoDecodeH265ProfileInfoKHR *props = (const VkVideoDecodeH265ProfileInfoKHR *)structure;
+ const char *name = "VkVideoDecodeH265ProfileInfoKHR";
+ DumpVkVideoDecodeH265ProfileInfoKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_DECODE_USAGE_INFO_KHR) {
+ const VkVideoDecodeUsageInfoKHR *props = (const VkVideoDecodeUsageInfoKHR *)structure;
+ const char *name = "VkVideoDecodeUsageInfoKHR";
+ DumpVkVideoDecodeUsageInfoKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PROFILE_INFO_KHR) {
+ const VkVideoDecodeVP9ProfileInfoKHR *props = (const VkVideoDecodeVP9ProfileInfoKHR *)structure;
+ const char *name = "VkVideoDecodeVP9ProfileInfoKHR";
+ DumpVkVideoDecodeVP9ProfileInfoKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PROFILE_INFO_KHR) {
+ const VkVideoEncodeAV1ProfileInfoKHR *props = (const VkVideoEncodeAV1ProfileInfoKHR *)structure;
+ const char *name = "VkVideoEncodeAV1ProfileInfoKHR";
+ DumpVkVideoEncodeAV1ProfileInfoKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_KHR) {
+ const VkVideoEncodeH264ProfileInfoKHR *props = (const VkVideoEncodeH264ProfileInfoKHR *)structure;
+ const char *name = "VkVideoEncodeH264ProfileInfoKHR";
+ DumpVkVideoEncodeH264ProfileInfoKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_KHR) {
+ const VkVideoEncodeH265ProfileInfoKHR *props = (const VkVideoEncodeH265ProfileInfoKHR *)structure;
+ const char *name = "VkVideoEncodeH265ProfileInfoKHR";
+ DumpVkVideoEncodeH265ProfileInfoKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_PROFILE_RGB_CONVERSION_INFO_VALVE) {
+ const VkVideoEncodeProfileRgbConversionInfoVALVE *props = (const VkVideoEncodeProfileRgbConversionInfoVALVE *)structure;
+ const char *name = "VkVideoEncodeProfileRgbConversionInfoVALVE";
+ DumpVkVideoEncodeProfileRgbConversionInfoVALVE(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR) {
+ const VkVideoEncodeUsageInfoKHR *props = (const VkVideoEncodeUsageInfoKHR *)structure;
+ const char *name = "VkVideoEncodeUsageInfoKHR";
+ DumpVkVideoEncodeUsageInfoKHR(p, name, *props);
+ p.AddNewline();
+ }
+ place = structure->pNext;
+ }
+}
+
+bool prepare_video_profile_info_twocall_chain_vectors(std::unique_ptr<video_profile_info_chain> &chain) {
+ (void)chain;
+ return false;
+}
+struct video_capabilities_chain {
+ video_capabilities_chain() = default;
+ video_capabilities_chain(const video_capabilities_chain &) = delete;
+ video_capabilities_chain &operator=(const video_capabilities_chain &) = delete;
+ video_capabilities_chain(video_capabilities_chain &&) = delete;
+ video_capabilities_chain &operator=(video_capabilities_chain &&) = delete;
+ void *start_of_chain = nullptr;
+ VkVideoDecodeAV1CapabilitiesKHR VideoDecodeAV1CapabilitiesKHR{};
+ VkVideoDecodeCapabilitiesKHR VideoDecodeCapabilitiesKHR{};
+ VkVideoDecodeH264CapabilitiesKHR VideoDecodeH264CapabilitiesKHR{};
+ VkVideoDecodeH265CapabilitiesKHR VideoDecodeH265CapabilitiesKHR{};
+ VkVideoDecodeVP9CapabilitiesKHR VideoDecodeVP9CapabilitiesKHR{};
+ VkVideoEncodeAV1CapabilitiesKHR VideoEncodeAV1CapabilitiesKHR{};
+ VkVideoEncodeAV1QuantizationMapCapabilitiesKHR VideoEncodeAV1QuantizationMapCapabilitiesKHR{};
+ VkVideoEncodeCapabilitiesKHR VideoEncodeCapabilitiesKHR{};
+ VkVideoEncodeH264CapabilitiesKHR VideoEncodeH264CapabilitiesKHR{};
+ VkVideoEncodeH264QuantizationMapCapabilitiesKHR VideoEncodeH264QuantizationMapCapabilitiesKHR{};
+ VkVideoEncodeH265CapabilitiesKHR VideoEncodeH265CapabilitiesKHR{};
+ VkVideoEncodeH265QuantizationMapCapabilitiesKHR VideoEncodeH265QuantizationMapCapabilitiesKHR{};
+ VkVideoEncodeIntraRefreshCapabilitiesKHR VideoEncodeIntraRefreshCapabilitiesKHR{};
+ VkVideoEncodeQuantizationMapCapabilitiesKHR VideoEncodeQuantizationMapCapabilitiesKHR{};
+ VkVideoEncodeRgbConversionCapabilitiesVALVE VideoEncodeRgbConversionCapabilitiesVALVE{};
+ void initialize_chain(AppGpu &gpu) noexcept {
+ VideoDecodeAV1CapabilitiesKHR.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR;
+ VideoDecodeCapabilitiesKHR.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR;
+ VideoDecodeH264CapabilitiesKHR.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR;
+ VideoDecodeH265CapabilitiesKHR.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR;
+ VideoDecodeVP9CapabilitiesKHR.sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_CAPABILITIES_KHR;
+ VideoEncodeAV1CapabilitiesKHR.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_CAPABILITIES_KHR;
+ VideoEncodeAV1QuantizationMapCapabilitiesKHR.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR;
+ VideoEncodeCapabilitiesKHR.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR;
+ VideoEncodeH264CapabilitiesKHR.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_KHR;
+ VideoEncodeH264QuantizationMapCapabilitiesKHR.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR;
+ VideoEncodeH265CapabilitiesKHR.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHR;
+ VideoEncodeH265QuantizationMapCapabilitiesKHR.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR;
+ VideoEncodeIntraRefreshCapabilitiesKHR.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR;
+ VideoEncodeQuantizationMapCapabilitiesKHR.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR;
+ VideoEncodeRgbConversionCapabilitiesVALVE.sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_RGB_CONVERSION_CAPABILITIES_VALVE;
+ std::vector<VkBaseOutStructure *> chain_members{};
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoDecodeAV1CapabilitiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoDecodeCapabilitiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoDecodeH264CapabilitiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoDecodeH265CapabilitiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_VP9_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoDecodeVP9CapabilitiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_AV1_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoEncodeAV1CapabilitiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoEncodeAV1QuantizationMapCapabilitiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoEncodeCapabilitiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_H264_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoEncodeH264CapabilitiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoEncodeH264QuantizationMapCapabilitiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_H265_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoEncodeH265CapabilitiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoEncodeH265QuantizationMapCapabilitiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoEncodeIntraRefreshCapabilitiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoEncodeQuantizationMapCapabilitiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_VALVE_VIDEO_ENCODE_RGB_CONVERSION_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoEncodeRgbConversionCapabilitiesVALVE));
+
+ if (!chain_members.empty()) {
+ for (size_t i = 0; i < chain_members.size() - 1; i++) {
+ chain_members[i]->pNext = chain_members[i + 1];
+ }
+ start_of_chain = chain_members[0];
+ }
+ }
+};
+void setup_video_capabilities_chain(VkVideoCapabilitiesKHR &start, std::unique_ptr<video_capabilities_chain> &chain, AppGpu &gpu) {
+ chain = std::unique_ptr<video_capabilities_chain>(new video_capabilities_chain());
+ chain->initialize_chain(gpu);
+ start.pNext = chain->start_of_chain;
+};
+
+void chain_iterator_video_capabilities(Printer &p, AppGpu &gpu, const void *place) {
+ while (place) {
+ const VkBaseOutStructure *structure = (const VkBaseOutStructure *)place;
+ p.SetSubHeader();
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR) {
+ const VkVideoDecodeAV1CapabilitiesKHR *props = (const VkVideoDecodeAV1CapabilitiesKHR *)structure;
+ const char *name = "VkVideoDecodeAV1CapabilitiesKHR";
+ DumpVkVideoDecodeAV1CapabilitiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR) {
+ const VkVideoDecodeCapabilitiesKHR *props = (const VkVideoDecodeCapabilitiesKHR *)structure;
+ const char *name = "VkVideoDecodeCapabilitiesKHR";
+ DumpVkVideoDecodeCapabilitiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR) {
+ const VkVideoDecodeH264CapabilitiesKHR *props = (const VkVideoDecodeH264CapabilitiesKHR *)structure;
+ const char *name = "VkVideoDecodeH264CapabilitiesKHR";
+ DumpVkVideoDecodeH264CapabilitiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR) {
+ const VkVideoDecodeH265CapabilitiesKHR *props = (const VkVideoDecodeH265CapabilitiesKHR *)structure;
+ const char *name = "VkVideoDecodeH265CapabilitiesKHR";
+ DumpVkVideoDecodeH265CapabilitiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_CAPABILITIES_KHR) {
+ const VkVideoDecodeVP9CapabilitiesKHR *props = (const VkVideoDecodeVP9CapabilitiesKHR *)structure;
+ const char *name = "VkVideoDecodeVP9CapabilitiesKHR";
+ DumpVkVideoDecodeVP9CapabilitiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_CAPABILITIES_KHR) {
+ const VkVideoEncodeAV1CapabilitiesKHR *props = (const VkVideoEncodeAV1CapabilitiesKHR *)structure;
+ const char *name = "VkVideoEncodeAV1CapabilitiesKHR";
+ DumpVkVideoEncodeAV1CapabilitiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_QUANTIZATION_MAP_CAPABILITIES_KHR) {
+ const VkVideoEncodeAV1QuantizationMapCapabilitiesKHR *props =
+ (const VkVideoEncodeAV1QuantizationMapCapabilitiesKHR *)structure;
+ const char *name = "VkVideoEncodeAV1QuantizationMapCapabilitiesKHR";
+ DumpVkVideoEncodeAV1QuantizationMapCapabilitiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR) {
+ const VkVideoEncodeCapabilitiesKHR *props = (const VkVideoEncodeCapabilitiesKHR *)structure;
+ const char *name = "VkVideoEncodeCapabilitiesKHR";
+ DumpVkVideoEncodeCapabilitiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_KHR) {
+ const VkVideoEncodeH264CapabilitiesKHR *props = (const VkVideoEncodeH264CapabilitiesKHR *)structure;
+ const char *name = "VkVideoEncodeH264CapabilitiesKHR";
+ DumpVkVideoEncodeH264CapabilitiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR) {
+ const VkVideoEncodeH264QuantizationMapCapabilitiesKHR *props =
+ (const VkVideoEncodeH264QuantizationMapCapabilitiesKHR *)structure;
+ const char *name = "VkVideoEncodeH264QuantizationMapCapabilitiesKHR";
+ DumpVkVideoEncodeH264QuantizationMapCapabilitiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHR) {
+ const VkVideoEncodeH265CapabilitiesKHR *props = (const VkVideoEncodeH265CapabilitiesKHR *)structure;
+ const char *name = "VkVideoEncodeH265CapabilitiesKHR";
+ DumpVkVideoEncodeH265CapabilitiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR) {
+ const VkVideoEncodeH265QuantizationMapCapabilitiesKHR *props =
+ (const VkVideoEncodeH265QuantizationMapCapabilitiesKHR *)structure;
+ const char *name = "VkVideoEncodeH265QuantizationMapCapabilitiesKHR";
+ DumpVkVideoEncodeH265QuantizationMapCapabilitiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR) {
+ const VkVideoEncodeIntraRefreshCapabilitiesKHR *props = (const VkVideoEncodeIntraRefreshCapabilitiesKHR *)structure;
+ const char *name = "VkVideoEncodeIntraRefreshCapabilitiesKHR";
+ DumpVkVideoEncodeIntraRefreshCapabilitiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR) {
+ const VkVideoEncodeQuantizationMapCapabilitiesKHR *props =
+ (const VkVideoEncodeQuantizationMapCapabilitiesKHR *)structure;
+ const char *name = "VkVideoEncodeQuantizationMapCapabilitiesKHR";
+ DumpVkVideoEncodeQuantizationMapCapabilitiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_RGB_CONVERSION_CAPABILITIES_VALVE) {
+ const VkVideoEncodeRgbConversionCapabilitiesVALVE *props =
+ (const VkVideoEncodeRgbConversionCapabilitiesVALVE *)structure;
+ const char *name = "VkVideoEncodeRgbConversionCapabilitiesVALVE";
+ DumpVkVideoEncodeRgbConversionCapabilitiesVALVE(p, name, *props);
+ p.AddNewline();
+ }
+ place = structure->pNext;
+ }
+}
+
+bool prepare_video_capabilities_twocall_chain_vectors(std::unique_ptr<video_capabilities_chain> &chain) {
+ (void)chain;
+ return false;
+}
+struct video_format_properties_chain {
+ video_format_properties_chain() = default;
+ video_format_properties_chain(const video_format_properties_chain &) = delete;
+ video_format_properties_chain &operator=(const video_format_properties_chain &) = delete;
+ video_format_properties_chain(video_format_properties_chain &&) = delete;
+ video_format_properties_chain &operator=(video_format_properties_chain &&) = delete;
+ void *start_of_chain = nullptr;
+ VkVideoFormatAV1QuantizationMapPropertiesKHR VideoFormatAV1QuantizationMapPropertiesKHR{};
+ VkVideoFormatH265QuantizationMapPropertiesKHR VideoFormatH265QuantizationMapPropertiesKHR{};
+ VkVideoFormatQuantizationMapPropertiesKHR VideoFormatQuantizationMapPropertiesKHR{};
+ void initialize_chain(AppGpu &gpu) noexcept {
+ VideoFormatAV1QuantizationMapPropertiesKHR.sType = VK_STRUCTURE_TYPE_VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR;
+ VideoFormatH265QuantizationMapPropertiesKHR.sType = VK_STRUCTURE_TYPE_VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR;
+ VideoFormatQuantizationMapPropertiesKHR.sType = VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR;
+ std::vector<VkBaseOutStructure *> chain_members{};
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoFormatAV1QuantizationMapPropertiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoFormatH265QuantizationMapPropertiesKHR));
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME))
+ chain_members.push_back(reinterpret_cast<VkBaseOutStructure *>(&VideoFormatQuantizationMapPropertiesKHR));
+
+ if (!chain_members.empty()) {
+ for (size_t i = 0; i < chain_members.size() - 1; i++) {
+ chain_members[i]->pNext = chain_members[i + 1];
+ }
+ start_of_chain = chain_members[0];
+ }
+ }
+};
+void setup_video_format_properties_chain(VkVideoFormatPropertiesKHR &start, std::unique_ptr<video_format_properties_chain> &chain,
+ AppGpu &gpu) {
+ chain = std::unique_ptr<video_format_properties_chain>(new video_format_properties_chain());
+ chain->initialize_chain(gpu);
+ start.pNext = chain->start_of_chain;
+};
+
+void chain_iterator_video_format_properties(Printer &p, AppGpu &gpu, const void *place) {
+ while (place) {
+ const VkBaseOutStructure *structure = (const VkBaseOutStructure *)place;
+ p.SetSubHeader();
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR) {
+ const VkVideoFormatAV1QuantizationMapPropertiesKHR *props =
+ (const VkVideoFormatAV1QuantizationMapPropertiesKHR *)structure;
+ const char *name = "VkVideoFormatAV1QuantizationMapPropertiesKHR";
+ DumpVkVideoFormatAV1QuantizationMapPropertiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR) {
+ const VkVideoFormatH265QuantizationMapPropertiesKHR *props =
+ (const VkVideoFormatH265QuantizationMapPropertiesKHR *)structure;
+ const char *name = "VkVideoFormatH265QuantizationMapPropertiesKHR";
+ DumpVkVideoFormatH265QuantizationMapPropertiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR) {
+ const VkVideoFormatQuantizationMapPropertiesKHR *props = (const VkVideoFormatQuantizationMapPropertiesKHR *)structure;
+ const char *name = "VkVideoFormatQuantizationMapPropertiesKHR";
+ DumpVkVideoFormatQuantizationMapPropertiesKHR(p, name, *props);
+ p.AddNewline();
+ }
+ place = structure->pNext;
+ }
+}
+
+bool prepare_video_format_properties_twocall_chain_vectors(std::unique_ptr<video_format_properties_chain> &chain) {
+ (void)chain;
+ return false;
+}
+bool operator==(const VkExtent2D &a, const VkExtent2D b);
+bool operator==(const VkSurfaceCapabilities2EXT &a, const VkSurfaceCapabilities2EXT b);
+bool operator==(const VkSurfaceCapabilities2KHR &a, const VkSurfaceCapabilities2KHR b);
+bool operator==(const VkSurfaceCapabilitiesKHR &a, const VkSurfaceCapabilitiesKHR b);
+bool operator==(const VkSurfaceFormat2KHR &a, const VkSurfaceFormat2KHR b);
+bool operator==(const VkSurfaceFormatKHR &a, const VkSurfaceFormatKHR b);
+bool operator==(const VkExtent2D &a, const VkExtent2D b) { return a.width == b.width && a.height == b.height; }
+bool operator==(const VkSurfaceCapabilities2EXT &a, const VkSurfaceCapabilities2EXT b) {
+ return a.minImageCount == b.minImageCount && a.maxImageCount == b.maxImageCount && a.currentExtent == b.currentExtent &&
+ a.minImageExtent == b.minImageExtent && a.maxImageExtent == b.maxImageExtent &&
+ a.maxImageArrayLayers == b.maxImageArrayLayers && a.supportedTransforms == b.supportedTransforms &&
+ a.currentTransform == b.currentTransform && a.supportedCompositeAlpha == b.supportedCompositeAlpha &&
+ a.supportedUsageFlags == b.supportedUsageFlags && a.supportedSurfaceCounters == b.supportedSurfaceCounters;
+}
+bool operator==(const VkSurfaceCapabilities2KHR &a, const VkSurfaceCapabilities2KHR b) {
+ return a.surfaceCapabilities == b.surfaceCapabilities;
+}
+bool operator==(const VkSurfaceCapabilitiesKHR &a, const VkSurfaceCapabilitiesKHR b) {
+ return a.minImageCount == b.minImageCount && a.maxImageCount == b.maxImageCount && a.currentExtent == b.currentExtent &&
+ a.minImageExtent == b.minImageExtent && a.maxImageExtent == b.maxImageExtent &&
+ a.maxImageArrayLayers == b.maxImageArrayLayers && a.supportedTransforms == b.supportedTransforms &&
+ a.currentTransform == b.currentTransform && a.supportedCompositeAlpha == b.supportedCompositeAlpha &&
+ a.supportedUsageFlags == b.supportedUsageFlags;
+}
+bool operator==(const VkSurfaceFormat2KHR &a, const VkSurfaceFormat2KHR b) { return a.surfaceFormat == b.surfaceFormat; }
+bool operator==(const VkSurfaceFormatKHR &a, const VkSurfaceFormatKHR b) {
+ return a.format == b.format && a.colorSpace == b.colorSpace;
+}
+std::ostream &operator<<(std::ostream &o, VkExtent2D &obj) { return o << "(" << obj.width << ',' << obj.height << ")"; }
+std::ostream &operator<<(std::ostream &o, VkExtent3D &obj) {
+ return o << "(" << obj.width << ',' << obj.height << ',' << obj.depth << ")";
+}
+auto format_ranges = std::array{
+ FormatRange{0, nullptr, static_cast<VkFormat>(0), static_cast<VkFormat>(184)},
+ FormatRange{VK_API_VERSION_1_1, nullptr, static_cast<VkFormat>(1000156000), static_cast<VkFormat>(1000156033)},
+ FormatRange{0, VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME, static_cast<VkFormat>(1000156000),
+ static_cast<VkFormat>(1000156033)},
+ FormatRange{VK_API_VERSION_1_3, nullptr, static_cast<VkFormat>(1000330000), static_cast<VkFormat>(1000330003)},
+ FormatRange{0, VK_EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME, static_cast<VkFormat>(1000330000),
+ static_cast<VkFormat>(1000330003)},
+ FormatRange{VK_API_VERSION_1_3, nullptr, static_cast<VkFormat>(1000340000), static_cast<VkFormat>(1000340001)},
+ FormatRange{0, VK_EXT_4444_FORMATS_EXTENSION_NAME, static_cast<VkFormat>(1000340000), static_cast<VkFormat>(1000340001)},
+ FormatRange{VK_API_VERSION_1_3, nullptr, static_cast<VkFormat>(1000066000), static_cast<VkFormat>(1000066013)},
+ FormatRange{0, VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME, static_cast<VkFormat>(1000066000),
+ static_cast<VkFormat>(1000066013)},
+ FormatRange{VK_API_VERSION_1_4, nullptr, static_cast<VkFormat>(1000470000), static_cast<VkFormat>(1000470001)},
+ FormatRange{0, VK_KHR_MAINTENANCE_5_EXTENSION_NAME, static_cast<VkFormat>(1000470000), static_cast<VkFormat>(1000470001)},
+ FormatRange{0, VK_IMG_FORMAT_PVRTC_EXTENSION_NAME, static_cast<VkFormat>(1000054000), static_cast<VkFormat>(1000054007)},
+ FormatRange{0, VK_EXT_TEXTURE_COMPRESSION_ASTC_3D_EXTENSION_NAME, static_cast<VkFormat>(1000288000),
+ static_cast<VkFormat>(1000288029)},
+ FormatRange{0, VK_ARM_TENSORS_EXTENSION_NAME, static_cast<VkFormat>(1000460000), static_cast<VkFormat>(1000460003)},
+ FormatRange{0, VK_NV_OPTICAL_FLOW_EXTENSION_NAME, static_cast<VkFormat>(1000464000), static_cast<VkFormat>(1000464000)},
+ FormatRange{0, VK_ARM_FORMAT_PACK_EXTENSION_NAME, static_cast<VkFormat>(1000609000), static_cast<VkFormat>(1000609013)},
+};
+
+bool is_video_format_same(const VkVideoFormatPropertiesKHR &format_a, const VkVideoFormatPropertiesKHR &format_b) {
+ auto a = reinterpret_cast<const VkBaseInStructure *>(&format_a);
+ auto b = reinterpret_cast<const VkBaseInStructure *>(&format_b);
+ bool same = true;
+ while (same && a != nullptr && b != nullptr) {
+ if (a->sType != b->sType) {
+ // Structure type mismatch (extension structures are expected to be chained in the same order)
+ same = false;
+ } else {
+ switch (a->sType) {
+ case VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR:
+ same = same && memcmp(reinterpret_cast<const char *>(a) + sizeof(VkBaseInStructure),
+ reinterpret_cast<const char *>(b) + sizeof(VkBaseInStructure),
+ sizeof(VkVideoFormatPropertiesKHR) - sizeof(VkBaseInStructure)) == 0;
+ break;
+ case VK_STRUCTURE_TYPE_VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR:
+ same = same && memcmp(reinterpret_cast<const char *>(a) + sizeof(VkBaseInStructure),
+ reinterpret_cast<const char *>(b) + sizeof(VkBaseInStructure),
+ sizeof(VkVideoFormatAV1QuantizationMapPropertiesKHR) - sizeof(VkBaseInStructure)) == 0;
+ break;
+ case VK_STRUCTURE_TYPE_VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR:
+ same = same && memcmp(reinterpret_cast<const char *>(a) + sizeof(VkBaseInStructure),
+ reinterpret_cast<const char *>(b) + sizeof(VkBaseInStructure),
+ sizeof(VkVideoFormatH265QuantizationMapPropertiesKHR) - sizeof(VkBaseInStructure)) == 0;
+ break;
+ case VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR:
+ same = same && memcmp(reinterpret_cast<const char *>(a) + sizeof(VkBaseInStructure),
+ reinterpret_cast<const char *>(b) + sizeof(VkBaseInStructure),
+ sizeof(VkVideoFormatQuantizationMapPropertiesKHR) - sizeof(VkBaseInStructure)) == 0;
+ break;
+ default:
+ // Unexpected structure type
+ same = false;
+ break;
+ }
+ }
+ a = a->pNext;
+ b = b->pNext;
+ }
+ return same;
+}
+
+std::vector<std::unique_ptr<AppVideoProfile>> enumerate_supported_video_profiles(AppGpu &gpu) {
+ std::vector<std::unique_ptr<AppVideoProfile>> result{};
+
+ struct ChromaSubsamplingInfo {
+ VkVideoChromaSubsamplingFlagsKHR value;
+ const char *name;
+ };
+ const std::vector<ChromaSubsamplingInfo> chroma_subsampling_list = {
+ {VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR, "4:2:0"},
+ {VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR, "4:2:2"},
+ {VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR, "4:4:4"},
+ {VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR, "monochrome"}};
+
+ struct BitDepthInfo {
+ VkVideoComponentBitDepthFlagsKHR value;
+ const char *name;
+ };
+ const std::vector<BitDepthInfo> bit_depth_list = {{VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR, "8"},
+ {VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR, "10"},
+ {VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR, "12"}};
+
+ auto find_caps_struct = [](const VkVideoCapabilitiesKHR &capabilities, VkStructureType stype) -> const VkBaseInStructure * {
+ auto p = reinterpret_cast<const VkBaseInStructure *>(&capabilities);
+ while (p != nullptr) {
+ if (p->sType == stype) {
+ return p;
+ }
+ p = p->pNext;
+ }
+ return nullptr;
+ };
+
+ auto base_format = [](const ChromaSubsamplingInfo &chroma_subsampling, const BitDepthInfo &luma_bit_depth,
+ const BitDepthInfo &chroma_bit_depth) {
+ std::string result{};
+ result += " (";
+ result += chroma_subsampling.name;
+ result += " ";
+ result += luma_bit_depth.name;
+ if (luma_bit_depth.value != chroma_bit_depth.value) {
+ result += ":";
+ result += chroma_bit_depth.name;
+ }
+ result += "-bit)";
+ return result;
+ };
+
+ auto add_profile = [&](const std::string &name, const VkVideoProfileInfoKHR &profile_info,
+ AppVideoProfile::CreateProfileInfoChainCb create_profile_info_chain,
+ AppVideoProfile::CreateCapabilitiesChainCb create_capabilities_chain,
+ const AppVideoProfile::CreateFormatPropertiesChainCbList &create_format_properties_chain_list,
+ AppVideoProfile::InitProfileCb init_profile) {
+ auto profile =
+ std::make_unique<AppVideoProfile>(gpu, gpu.phys_device, name, profile_info, create_profile_info_chain,
+ create_capabilities_chain, create_format_properties_chain_list, init_profile);
+ if (profile->supported) {
+ result.push_back(std::move(profile));
+ }
+ };
+
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME)) {
+ const std::string codec_name = "H.264 Decode";
+
+ for (auto chroma_subsampling : chroma_subsampling_list) {
+ for (auto luma_bit_depth : bit_depth_list) {
+ for (auto chroma_bit_depth : bit_depth_list) {
+ if (chroma_subsampling.value == VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR &&
+ luma_bit_depth.value != chroma_bit_depth.value) {
+ // Ignore the chroma bit depth dimension for monochrome
+ continue;
+ }
+
+ std::string profile_base_name = codec_name + base_format(chroma_subsampling, luma_bit_depth, chroma_bit_depth);
+ VkVideoProfileInfoKHR profile_info{VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR,
+ nullptr,
+ VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR,
+ chroma_subsampling.value,
+ luma_bit_depth.value,
+ chroma_bit_depth.value};
+
+ auto create_profile_info_chain = [&](const void **ppnext) -> std::unique_ptr<video_profile_info_chain> {
+ auto profile_info_chain = std::make_unique<video_profile_info_chain>();
+ if (profile_info_chain != nullptr) {
+ profile_info_chain->VideoDecodeH264ProfileInfoKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR;
+ profile_info_chain->VideoDecodeH264ProfileInfoKHR.pNext = nullptr;
+ *ppnext = &profile_info_chain->VideoDecodeH264ProfileInfoKHR;
+ ppnext = &profile_info_chain->VideoDecodeH264ProfileInfoKHR.pNext;
+ }
+ return profile_info_chain;
+ };
+
+ auto create_capabilities_chain = [&](void **ppnext) -> std::unique_ptr<video_capabilities_chain> {
+ auto capabilities_chain = std::make_unique<video_capabilities_chain>();
+ if (capabilities_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME)) {
+ capabilities_chain->VideoDecodeCapabilitiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR;
+ capabilities_chain->VideoDecodeCapabilitiesKHR.pNext = nullptr;
+ *ppnext = &capabilities_chain->VideoDecodeCapabilitiesKHR;
+ ppnext = &capabilities_chain->VideoDecodeCapabilitiesKHR.pNext;
+ }
+ }
+ if (capabilities_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME)) {
+ capabilities_chain->VideoDecodeH264CapabilitiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR;
+ capabilities_chain->VideoDecodeH264CapabilitiesKHR.pNext = nullptr;
+ *ppnext = &capabilities_chain->VideoDecodeH264CapabilitiesKHR;
+ ppnext = &capabilities_chain->VideoDecodeH264CapabilitiesKHR.pNext;
+ }
+ }
+ return capabilities_chain;
+ };
+
+ const AppVideoProfile::CreateFormatPropertiesChainCbList create_format_properties_chain_list = {
+ AppVideoProfile::CreateFormatPropertiesChainCb{
+ "Decode Output",
+ VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR,
+ [&](const VkVideoCapabilitiesKHR &capabilities) -> bool {
+ bool supported = true;
+ return supported;
+ },
+ [&](void **ppnext) -> std::unique_ptr<video_format_properties_chain> {
+ auto format_properties_chain = std::make_unique<video_format_properties_chain>();
+ return format_properties_chain;
+ },
+ },
+ AppVideoProfile::CreateFormatPropertiesChainCb{
+ "DPB",
+ VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR,
+ [&](const VkVideoCapabilitiesKHR &capabilities) -> bool {
+ bool supported = true;
+ return supported;
+ },
+ [&](void **ppnext) -> std::unique_ptr<video_format_properties_chain> {
+ auto format_properties_chain = std::make_unique<video_format_properties_chain>();
+ return format_properties_chain;
+ },
+ },
+ };
+
+ add_profile(profile_base_name + " Baseline progressive", profile_info, create_profile_info_chain,
+ create_capabilities_chain, create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeH264ProfileInfoKHR.stdProfileIdc =
+ STD_VIDEO_H264_PROFILE_IDC_BASELINE;
+ profile.profile_info_chain->VideoDecodeH264ProfileInfoKHR.pictureLayout =
+ VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR;
+ });
+ add_profile(profile_base_name + " Main progressive", profile_info, create_profile_info_chain,
+ create_capabilities_chain, create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeH264ProfileInfoKHR.stdProfileIdc =
+ STD_VIDEO_H264_PROFILE_IDC_MAIN;
+ profile.profile_info_chain->VideoDecodeH264ProfileInfoKHR.pictureLayout =
+ VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR;
+ });
+ add_profile(profile_base_name + " High progressive", profile_info, create_profile_info_chain,
+ create_capabilities_chain, create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeH264ProfileInfoKHR.stdProfileIdc =
+ STD_VIDEO_H264_PROFILE_IDC_HIGH;
+ profile.profile_info_chain->VideoDecodeH264ProfileInfoKHR.pictureLayout =
+ VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR;
+ });
+ add_profile(profile_base_name + " High 4:4:4 Predictive progressive", profile_info, create_profile_info_chain,
+ create_capabilities_chain, create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeH264ProfileInfoKHR.stdProfileIdc =
+ STD_VIDEO_H264_PROFILE_IDC_HIGH_444_PREDICTIVE;
+ profile.profile_info_chain->VideoDecodeH264ProfileInfoKHR.pictureLayout =
+ VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR;
+ });
+ add_profile(profile_base_name + " Baseline interlaced (interleaved lines)", profile_info,
+ create_profile_info_chain, create_capabilities_chain, create_format_properties_chain_list,
+ [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeH264ProfileInfoKHR.stdProfileIdc =
+ STD_VIDEO_H264_PROFILE_IDC_BASELINE;
+ profile.profile_info_chain->VideoDecodeH264ProfileInfoKHR.pictureLayout =
+ VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR;
+ });
+ add_profile(profile_base_name + " Main interlaced (interleaved lines)", profile_info, create_profile_info_chain,
+ create_capabilities_chain, create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeH264ProfileInfoKHR.stdProfileIdc =
+ STD_VIDEO_H264_PROFILE_IDC_MAIN;
+ profile.profile_info_chain->VideoDecodeH264ProfileInfoKHR.pictureLayout =
+ VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR;
+ });
+ add_profile(profile_base_name + " High interlaced (interleaved lines)", profile_info, create_profile_info_chain,
+ create_capabilities_chain, create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeH264ProfileInfoKHR.stdProfileIdc =
+ STD_VIDEO_H264_PROFILE_IDC_HIGH;
+ profile.profile_info_chain->VideoDecodeH264ProfileInfoKHR.pictureLayout =
+ VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR;
+ });
+ add_profile(profile_base_name + " High 4:4:4 Predictive interlaced (interleaved lines)", profile_info,
+ create_profile_info_chain, create_capabilities_chain, create_format_properties_chain_list,
+ [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeH264ProfileInfoKHR.stdProfileIdc =
+ STD_VIDEO_H264_PROFILE_IDC_HIGH_444_PREDICTIVE;
+ profile.profile_info_chain->VideoDecodeH264ProfileInfoKHR.pictureLayout =
+ VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR;
+ });
+ add_profile(profile_base_name + " Baseline interlaced (separate planes)", profile_info,
+ create_profile_info_chain, create_capabilities_chain, create_format_properties_chain_list,
+ [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeH264ProfileInfoKHR.stdProfileIdc =
+ STD_VIDEO_H264_PROFILE_IDC_BASELINE;
+ profile.profile_info_chain->VideoDecodeH264ProfileInfoKHR.pictureLayout =
+ VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR;
+ });
+ add_profile(profile_base_name + " Main interlaced (separate planes)", profile_info, create_profile_info_chain,
+ create_capabilities_chain, create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeH264ProfileInfoKHR.stdProfileIdc =
+ STD_VIDEO_H264_PROFILE_IDC_MAIN;
+ profile.profile_info_chain->VideoDecodeH264ProfileInfoKHR.pictureLayout =
+ VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR;
+ });
+ add_profile(profile_base_name + " High interlaced (separate planes)", profile_info, create_profile_info_chain,
+ create_capabilities_chain, create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeH264ProfileInfoKHR.stdProfileIdc =
+ STD_VIDEO_H264_PROFILE_IDC_HIGH;
+ profile.profile_info_chain->VideoDecodeH264ProfileInfoKHR.pictureLayout =
+ VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR;
+ });
+ add_profile(profile_base_name + " High 4:4:4 Predictive interlaced (separate planes)", profile_info,
+ create_profile_info_chain, create_capabilities_chain, create_format_properties_chain_list,
+ [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeH264ProfileInfoKHR.stdProfileIdc =
+ STD_VIDEO_H264_PROFILE_IDC_HIGH_444_PREDICTIVE;
+ profile.profile_info_chain->VideoDecodeH264ProfileInfoKHR.pictureLayout =
+ VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR;
+ });
+ }
+ }
+ }
+ }
+
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME)) {
+ const std::string codec_name = "H.265 Decode";
+
+ for (auto chroma_subsampling : chroma_subsampling_list) {
+ for (auto luma_bit_depth : bit_depth_list) {
+ for (auto chroma_bit_depth : bit_depth_list) {
+ if (chroma_subsampling.value == VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR &&
+ luma_bit_depth.value != chroma_bit_depth.value) {
+ // Ignore the chroma bit depth dimension for monochrome
+ continue;
+ }
+
+ std::string profile_base_name = codec_name + base_format(chroma_subsampling, luma_bit_depth, chroma_bit_depth);
+ VkVideoProfileInfoKHR profile_info{VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR,
+ nullptr,
+ VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR,
+ chroma_subsampling.value,
+ luma_bit_depth.value,
+ chroma_bit_depth.value};
+
+ auto create_profile_info_chain = [&](const void **ppnext) -> std::unique_ptr<video_profile_info_chain> {
+ auto profile_info_chain = std::make_unique<video_profile_info_chain>();
+ if (profile_info_chain != nullptr) {
+ profile_info_chain->VideoDecodeH265ProfileInfoKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR;
+ profile_info_chain->VideoDecodeH265ProfileInfoKHR.pNext = nullptr;
+ *ppnext = &profile_info_chain->VideoDecodeH265ProfileInfoKHR;
+ ppnext = &profile_info_chain->VideoDecodeH265ProfileInfoKHR.pNext;
+ }
+ return profile_info_chain;
+ };
+
+ auto create_capabilities_chain = [&](void **ppnext) -> std::unique_ptr<video_capabilities_chain> {
+ auto capabilities_chain = std::make_unique<video_capabilities_chain>();
+ if (capabilities_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME)) {
+ capabilities_chain->VideoDecodeCapabilitiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR;
+ capabilities_chain->VideoDecodeCapabilitiesKHR.pNext = nullptr;
+ *ppnext = &capabilities_chain->VideoDecodeCapabilitiesKHR;
+ ppnext = &capabilities_chain->VideoDecodeCapabilitiesKHR.pNext;
+ }
+ }
+ if (capabilities_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME)) {
+ capabilities_chain->VideoDecodeH265CapabilitiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR;
+ capabilities_chain->VideoDecodeH265CapabilitiesKHR.pNext = nullptr;
+ *ppnext = &capabilities_chain->VideoDecodeH265CapabilitiesKHR;
+ ppnext = &capabilities_chain->VideoDecodeH265CapabilitiesKHR.pNext;
+ }
+ }
+ return capabilities_chain;
+ };
+
+ const AppVideoProfile::CreateFormatPropertiesChainCbList create_format_properties_chain_list = {
+ AppVideoProfile::CreateFormatPropertiesChainCb{
+ "Decode Output",
+ VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR,
+ [&](const VkVideoCapabilitiesKHR &capabilities) -> bool {
+ bool supported = true;
+ return supported;
+ },
+ [&](void **ppnext) -> std::unique_ptr<video_format_properties_chain> {
+ auto format_properties_chain = std::make_unique<video_format_properties_chain>();
+ return format_properties_chain;
+ },
+ },
+ AppVideoProfile::CreateFormatPropertiesChainCb{
+ "DPB",
+ VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR,
+ [&](const VkVideoCapabilitiesKHR &capabilities) -> bool {
+ bool supported = true;
+ return supported;
+ },
+ [&](void **ppnext) -> std::unique_ptr<video_format_properties_chain> {
+ auto format_properties_chain = std::make_unique<video_format_properties_chain>();
+ return format_properties_chain;
+ },
+ },
+ };
+
+ add_profile(profile_base_name + " Main", profile_info, create_profile_info_chain, create_capabilities_chain,
+ create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeH265ProfileInfoKHR.stdProfileIdc =
+ STD_VIDEO_H265_PROFILE_IDC_MAIN;
+ });
+ add_profile(profile_base_name + " Main 10", profile_info, create_profile_info_chain, create_capabilities_chain,
+ create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeH265ProfileInfoKHR.stdProfileIdc =
+ STD_VIDEO_H265_PROFILE_IDC_MAIN_10;
+ });
+ add_profile(profile_base_name + " Main Still Picture", profile_info, create_profile_info_chain,
+ create_capabilities_chain, create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeH265ProfileInfoKHR.stdProfileIdc =
+ STD_VIDEO_H265_PROFILE_IDC_MAIN_STILL_PICTURE;
+ });
+ add_profile(profile_base_name + " Format range extensions", profile_info, create_profile_info_chain,
+ create_capabilities_chain, create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeH265ProfileInfoKHR.stdProfileIdc =
+ STD_VIDEO_H265_PROFILE_IDC_FORMAT_RANGE_EXTENSIONS;
+ });
+ add_profile(profile_base_name + " Screen content coding extensions", profile_info, create_profile_info_chain,
+ create_capabilities_chain, create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeH265ProfileInfoKHR.stdProfileIdc =
+ STD_VIDEO_H265_PROFILE_IDC_SCC_EXTENSIONS;
+ });
+ }
+ }
+ }
+ }
+
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_VP9_EXTENSION_NAME)) {
+ const std::string codec_name = "VP9 Decode";
+
+ for (auto chroma_subsampling : chroma_subsampling_list) {
+ for (auto luma_bit_depth : bit_depth_list) {
+ for (auto chroma_bit_depth : bit_depth_list) {
+ if (chroma_subsampling.value == VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR &&
+ luma_bit_depth.value != chroma_bit_depth.value) {
+ // Ignore the chroma bit depth dimension for monochrome
+ continue;
+ }
+
+ std::string profile_base_name = codec_name + base_format(chroma_subsampling, luma_bit_depth, chroma_bit_depth);
+ VkVideoProfileInfoKHR profile_info{VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR,
+ nullptr,
+ VK_VIDEO_CODEC_OPERATION_DECODE_VP9_BIT_KHR,
+ chroma_subsampling.value,
+ luma_bit_depth.value,
+ chroma_bit_depth.value};
+
+ auto create_profile_info_chain = [&](const void **ppnext) -> std::unique_ptr<video_profile_info_chain> {
+ auto profile_info_chain = std::make_unique<video_profile_info_chain>();
+ if (profile_info_chain != nullptr) {
+ profile_info_chain->VideoDecodeVP9ProfileInfoKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_PROFILE_INFO_KHR;
+ profile_info_chain->VideoDecodeVP9ProfileInfoKHR.pNext = nullptr;
+ *ppnext = &profile_info_chain->VideoDecodeVP9ProfileInfoKHR;
+ ppnext = &profile_info_chain->VideoDecodeVP9ProfileInfoKHR.pNext;
+ }
+ return profile_info_chain;
+ };
+
+ auto create_capabilities_chain = [&](void **ppnext) -> std::unique_ptr<video_capabilities_chain> {
+ auto capabilities_chain = std::make_unique<video_capabilities_chain>();
+ if (capabilities_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME)) {
+ capabilities_chain->VideoDecodeCapabilitiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR;
+ capabilities_chain->VideoDecodeCapabilitiesKHR.pNext = nullptr;
+ *ppnext = &capabilities_chain->VideoDecodeCapabilitiesKHR;
+ ppnext = &capabilities_chain->VideoDecodeCapabilitiesKHR.pNext;
+ }
+ }
+ if (capabilities_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_VP9_EXTENSION_NAME)) {
+ capabilities_chain->VideoDecodeVP9CapabilitiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_VP9_CAPABILITIES_KHR;
+ capabilities_chain->VideoDecodeVP9CapabilitiesKHR.pNext = nullptr;
+ *ppnext = &capabilities_chain->VideoDecodeVP9CapabilitiesKHR;
+ ppnext = &capabilities_chain->VideoDecodeVP9CapabilitiesKHR.pNext;
+ }
+ }
+ return capabilities_chain;
+ };
+
+ const AppVideoProfile::CreateFormatPropertiesChainCbList create_format_properties_chain_list = {
+ AppVideoProfile::CreateFormatPropertiesChainCb{
+ "Decode Output",
+ VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR,
+ [&](const VkVideoCapabilitiesKHR &capabilities) -> bool {
+ bool supported = true;
+ return supported;
+ },
+ [&](void **ppnext) -> std::unique_ptr<video_format_properties_chain> {
+ auto format_properties_chain = std::make_unique<video_format_properties_chain>();
+ return format_properties_chain;
+ },
+ },
+ AppVideoProfile::CreateFormatPropertiesChainCb{
+ "DPB",
+ VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR,
+ [&](const VkVideoCapabilitiesKHR &capabilities) -> bool {
+ bool supported = true;
+ return supported;
+ },
+ [&](void **ppnext) -> std::unique_ptr<video_format_properties_chain> {
+ auto format_properties_chain = std::make_unique<video_format_properties_chain>();
+ return format_properties_chain;
+ },
+ },
+ };
+
+ add_profile(profile_base_name + " Profile 0", profile_info, create_profile_info_chain,
+ create_capabilities_chain, create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeVP9ProfileInfoKHR.stdProfile = STD_VIDEO_VP9_PROFILE_0;
+ });
+ add_profile(profile_base_name + " Profile 1", profile_info, create_profile_info_chain,
+ create_capabilities_chain, create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeVP9ProfileInfoKHR.stdProfile = STD_VIDEO_VP9_PROFILE_1;
+ });
+ add_profile(profile_base_name + " Profile 2", profile_info, create_profile_info_chain,
+ create_capabilities_chain, create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeVP9ProfileInfoKHR.stdProfile = STD_VIDEO_VP9_PROFILE_2;
+ });
+ add_profile(profile_base_name + " Profile 3", profile_info, create_profile_info_chain,
+ create_capabilities_chain, create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeVP9ProfileInfoKHR.stdProfile = STD_VIDEO_VP9_PROFILE_3;
+ });
+ }
+ }
+ }
+ }
+
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME)) {
+ const std::string codec_name = "AV1 Decode";
+
+ for (auto chroma_subsampling : chroma_subsampling_list) {
+ for (auto luma_bit_depth : bit_depth_list) {
+ for (auto chroma_bit_depth : bit_depth_list) {
+ if (chroma_subsampling.value == VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR &&
+ luma_bit_depth.value != chroma_bit_depth.value) {
+ // Ignore the chroma bit depth dimension for monochrome
+ continue;
+ }
+
+ std::string profile_base_name = codec_name + base_format(chroma_subsampling, luma_bit_depth, chroma_bit_depth);
+ VkVideoProfileInfoKHR profile_info{VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR,
+ nullptr,
+ VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR,
+ chroma_subsampling.value,
+ luma_bit_depth.value,
+ chroma_bit_depth.value};
+
+ auto create_profile_info_chain = [&](const void **ppnext) -> std::unique_ptr<video_profile_info_chain> {
+ auto profile_info_chain = std::make_unique<video_profile_info_chain>();
+ if (profile_info_chain != nullptr) {
+ profile_info_chain->VideoDecodeAV1ProfileInfoKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR;
+ profile_info_chain->VideoDecodeAV1ProfileInfoKHR.pNext = nullptr;
+ *ppnext = &profile_info_chain->VideoDecodeAV1ProfileInfoKHR;
+ ppnext = &profile_info_chain->VideoDecodeAV1ProfileInfoKHR.pNext;
+ }
+ return profile_info_chain;
+ };
+
+ auto create_capabilities_chain = [&](void **ppnext) -> std::unique_ptr<video_capabilities_chain> {
+ auto capabilities_chain = std::make_unique<video_capabilities_chain>();
+ if (capabilities_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME)) {
+ capabilities_chain->VideoDecodeCapabilitiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR;
+ capabilities_chain->VideoDecodeCapabilitiesKHR.pNext = nullptr;
+ *ppnext = &capabilities_chain->VideoDecodeCapabilitiesKHR;
+ ppnext = &capabilities_chain->VideoDecodeCapabilitiesKHR.pNext;
+ }
+ }
+ if (capabilities_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME)) {
+ capabilities_chain->VideoDecodeAV1CapabilitiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR;
+ capabilities_chain->VideoDecodeAV1CapabilitiesKHR.pNext = nullptr;
+ *ppnext = &capabilities_chain->VideoDecodeAV1CapabilitiesKHR;
+ ppnext = &capabilities_chain->VideoDecodeAV1CapabilitiesKHR.pNext;
+ }
+ }
+ return capabilities_chain;
+ };
+
+ const AppVideoProfile::CreateFormatPropertiesChainCbList create_format_properties_chain_list = {
+ AppVideoProfile::CreateFormatPropertiesChainCb{
+ "Decode Output",
+ VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR,
+ [&](const VkVideoCapabilitiesKHR &capabilities) -> bool {
+ bool supported = true;
+ return supported;
+ },
+ [&](void **ppnext) -> std::unique_ptr<video_format_properties_chain> {
+ auto format_properties_chain = std::make_unique<video_format_properties_chain>();
+ return format_properties_chain;
+ },
+ },
+ AppVideoProfile::CreateFormatPropertiesChainCb{
+ "DPB",
+ VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR,
+ [&](const VkVideoCapabilitiesKHR &capabilities) -> bool {
+ bool supported = true;
+ return supported;
+ },
+ [&](void **ppnext) -> std::unique_ptr<video_format_properties_chain> {
+ auto format_properties_chain = std::make_unique<video_format_properties_chain>();
+ return format_properties_chain;
+ },
+ },
+ };
+
+ add_profile(profile_base_name + " Main with film grain support", profile_info, create_profile_info_chain,
+ create_capabilities_chain, create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeAV1ProfileInfoKHR.stdProfile =
+ STD_VIDEO_AV1_PROFILE_MAIN;
+ profile.profile_info_chain->VideoDecodeAV1ProfileInfoKHR.filmGrainSupport = VK_TRUE;
+ });
+ add_profile(profile_base_name + " High with film grain support", profile_info, create_profile_info_chain,
+ create_capabilities_chain, create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeAV1ProfileInfoKHR.stdProfile =
+ STD_VIDEO_AV1_PROFILE_HIGH;
+ profile.profile_info_chain->VideoDecodeAV1ProfileInfoKHR.filmGrainSupport = VK_TRUE;
+ });
+ add_profile(profile_base_name + " Professional with film grain support", profile_info,
+ create_profile_info_chain, create_capabilities_chain, create_format_properties_chain_list,
+ [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeAV1ProfileInfoKHR.stdProfile =
+ STD_VIDEO_AV1_PROFILE_PROFESSIONAL;
+ profile.profile_info_chain->VideoDecodeAV1ProfileInfoKHR.filmGrainSupport = VK_TRUE;
+ });
+ add_profile(profile_base_name + " Main without film grain support", profile_info, create_profile_info_chain,
+ create_capabilities_chain, create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeAV1ProfileInfoKHR.stdProfile =
+ STD_VIDEO_AV1_PROFILE_MAIN;
+ profile.profile_info_chain->VideoDecodeAV1ProfileInfoKHR.filmGrainSupport = VK_FALSE;
+ });
+ add_profile(profile_base_name + " High without film grain support", profile_info, create_profile_info_chain,
+ create_capabilities_chain, create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeAV1ProfileInfoKHR.stdProfile =
+ STD_VIDEO_AV1_PROFILE_HIGH;
+ profile.profile_info_chain->VideoDecodeAV1ProfileInfoKHR.filmGrainSupport = VK_FALSE;
+ });
+ add_profile(profile_base_name + " Professional without film grain support", profile_info,
+ create_profile_info_chain, create_capabilities_chain, create_format_properties_chain_list,
+ [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoDecodeAV1ProfileInfoKHR.stdProfile =
+ STD_VIDEO_AV1_PROFILE_PROFESSIONAL;
+ profile.profile_info_chain->VideoDecodeAV1ProfileInfoKHR.filmGrainSupport = VK_FALSE;
+ });
+ }
+ }
+ }
+ }
+
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_H264_EXTENSION_NAME)) {
+ const std::string codec_name = "H.264 Encode";
+
+ for (auto chroma_subsampling : chroma_subsampling_list) {
+ for (auto luma_bit_depth : bit_depth_list) {
+ for (auto chroma_bit_depth : bit_depth_list) {
+ if (chroma_subsampling.value == VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR &&
+ luma_bit_depth.value != chroma_bit_depth.value) {
+ // Ignore the chroma bit depth dimension for monochrome
+ continue;
+ }
+
+ std::string profile_base_name = codec_name + base_format(chroma_subsampling, luma_bit_depth, chroma_bit_depth);
+ VkVideoProfileInfoKHR profile_info{VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR,
+ nullptr,
+ VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR,
+ chroma_subsampling.value,
+ luma_bit_depth.value,
+ chroma_bit_depth.value};
+
+ auto create_profile_info_chain = [&](const void **ppnext) -> std::unique_ptr<video_profile_info_chain> {
+ auto profile_info_chain = std::make_unique<video_profile_info_chain>();
+ if (profile_info_chain != nullptr) {
+ profile_info_chain->VideoEncodeH264ProfileInfoKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_KHR;
+ profile_info_chain->VideoEncodeH264ProfileInfoKHR.pNext = nullptr;
+ *ppnext = &profile_info_chain->VideoEncodeH264ProfileInfoKHR;
+ ppnext = &profile_info_chain->VideoEncodeH264ProfileInfoKHR.pNext;
+ }
+ return profile_info_chain;
+ };
+
+ auto create_capabilities_chain = [&](void **ppnext) -> std::unique_ptr<video_capabilities_chain> {
+ auto capabilities_chain = std::make_unique<video_capabilities_chain>();
+ if (capabilities_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME)) {
+ capabilities_chain->VideoEncodeCapabilitiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR;
+ capabilities_chain->VideoEncodeCapabilitiesKHR.pNext = nullptr;
+ *ppnext = &capabilities_chain->VideoEncodeCapabilitiesKHR;
+ ppnext = &capabilities_chain->VideoEncodeCapabilitiesKHR.pNext;
+ }
+ }
+ if (capabilities_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME)) {
+ capabilities_chain->VideoEncodeQuantizationMapCapabilitiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR;
+ capabilities_chain->VideoEncodeQuantizationMapCapabilitiesKHR.pNext = nullptr;
+ *ppnext = &capabilities_chain->VideoEncodeQuantizationMapCapabilitiesKHR;
+ ppnext = &capabilities_chain->VideoEncodeQuantizationMapCapabilitiesKHR.pNext;
+ }
+ }
+ if (capabilities_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_EXTENSION_NAME)) {
+ capabilities_chain->VideoEncodeIntraRefreshCapabilitiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR;
+ capabilities_chain->VideoEncodeIntraRefreshCapabilitiesKHR.pNext = nullptr;
+ *ppnext = &capabilities_chain->VideoEncodeIntraRefreshCapabilitiesKHR;
+ ppnext = &capabilities_chain->VideoEncodeIntraRefreshCapabilitiesKHR.pNext;
+ }
+ }
+ if (capabilities_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_VALVE_VIDEO_ENCODE_RGB_CONVERSION_EXTENSION_NAME)) {
+ capabilities_chain->VideoEncodeRgbConversionCapabilitiesVALVE.sType =
+ VK_STRUCTURE_TYPE_VIDEO_ENCODE_RGB_CONVERSION_CAPABILITIES_VALVE;
+ capabilities_chain->VideoEncodeRgbConversionCapabilitiesVALVE.pNext = nullptr;
+ *ppnext = &capabilities_chain->VideoEncodeRgbConversionCapabilitiesVALVE;
+ ppnext = &capabilities_chain->VideoEncodeRgbConversionCapabilitiesVALVE.pNext;
+ }
+ }
+ if (capabilities_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_H264_EXTENSION_NAME)) {
+ capabilities_chain->VideoEncodeH264CapabilitiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_KHR;
+ capabilities_chain->VideoEncodeH264CapabilitiesKHR.pNext = nullptr;
+ *ppnext = &capabilities_chain->VideoEncodeH264CapabilitiesKHR;
+ ppnext = &capabilities_chain->VideoEncodeH264CapabilitiesKHR.pNext;
+ }
+ }
+ if (capabilities_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME)) {
+ capabilities_chain->VideoEncodeH264QuantizationMapCapabilitiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUANTIZATION_MAP_CAPABILITIES_KHR;
+ capabilities_chain->VideoEncodeH264QuantizationMapCapabilitiesKHR.pNext = nullptr;
+ *ppnext = &capabilities_chain->VideoEncodeH264QuantizationMapCapabilitiesKHR;
+ ppnext = &capabilities_chain->VideoEncodeH264QuantizationMapCapabilitiesKHR.pNext;
+ }
+ }
+ return capabilities_chain;
+ };
+
+ const AppVideoProfile::CreateFormatPropertiesChainCbList create_format_properties_chain_list = {
+ AppVideoProfile::CreateFormatPropertiesChainCb{
+ "Encode Input",
+ VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR,
+ [&](const VkVideoCapabilitiesKHR &capabilities) -> bool {
+ bool supported = true;
+ return supported;
+ },
+ [&](void **ppnext) -> std::unique_ptr<video_format_properties_chain> {
+ auto format_properties_chain = std::make_unique<video_format_properties_chain>();
+ return format_properties_chain;
+ },
+ },
+ AppVideoProfile::CreateFormatPropertiesChainCb{
+ "DPB",
+ VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR,
+ [&](const VkVideoCapabilitiesKHR &capabilities) -> bool {
+ bool supported = true;
+ return supported;
+ },
+ [&](void **ppnext) -> std::unique_ptr<video_format_properties_chain> {
+ auto format_properties_chain = std::make_unique<video_format_properties_chain>();
+ return format_properties_chain;
+ },
+ },
+ AppVideoProfile::CreateFormatPropertiesChainCb{
+ "Quantization Delta Map",
+ VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR,
+ [&](const VkVideoCapabilitiesKHR &capabilities) -> bool {
+ bool supported = true;
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME)) {
+ auto caps = reinterpret_cast<const VkVideoEncodeCapabilitiesKHR *>(
+ find_caps_struct(capabilities, VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR));
+ if (caps != nullptr) {
+ supported =
+ supported &&
+ ((caps->flags & VK_VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR) != 0);
+ } else {
+ supported = false;
+ }
+ } else {
+ supported = false;
+ }
+ return supported;
+ },
+ [&](void **ppnext) -> std::unique_ptr<video_format_properties_chain> {
+ auto format_properties_chain = std::make_unique<video_format_properties_chain>();
+ if (format_properties_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(
+ VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME)) {
+ format_properties_chain->VideoFormatQuantizationMapPropertiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR;
+ format_properties_chain->VideoFormatQuantizationMapPropertiesKHR.pNext = nullptr;
+ *ppnext = &format_properties_chain->VideoFormatQuantizationMapPropertiesKHR;
+ ppnext = &format_properties_chain->VideoFormatQuantizationMapPropertiesKHR.pNext;
+ }
+ }
+ return format_properties_chain;
+ },
+ },
+ AppVideoProfile::CreateFormatPropertiesChainCb{
+ "Emphasis Map",
+ VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR,
+ [&](const VkVideoCapabilitiesKHR &capabilities) -> bool {
+ bool supported = true;
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME)) {
+ auto caps = reinterpret_cast<const VkVideoEncodeCapabilitiesKHR *>(
+ find_caps_struct(capabilities, VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR));
+ if (caps != nullptr) {
+ supported =
+ supported && ((caps->flags & VK_VIDEO_ENCODE_CAPABILITY_EMPHASIS_MAP_BIT_KHR) != 0);
+ } else {
+ supported = false;
+ }
+ } else {
+ supported = false;
+ }
+ return supported;
+ },
+ [&](void **ppnext) -> std::unique_ptr<video_format_properties_chain> {
+ auto format_properties_chain = std::make_unique<video_format_properties_chain>();
+ if (format_properties_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(
+ VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME)) {
+ format_properties_chain->VideoFormatQuantizationMapPropertiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR;
+ format_properties_chain->VideoFormatQuantizationMapPropertiesKHR.pNext = nullptr;
+ *ppnext = &format_properties_chain->VideoFormatQuantizationMapPropertiesKHR;
+ ppnext = &format_properties_chain->VideoFormatQuantizationMapPropertiesKHR.pNext;
+ }
+ }
+ return format_properties_chain;
+ },
+ },
+ };
+
+ add_profile(profile_base_name + " Baseline", profile_info, create_profile_info_chain, create_capabilities_chain,
+ create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoEncodeH264ProfileInfoKHR.stdProfileIdc =
+ STD_VIDEO_H264_PROFILE_IDC_BASELINE;
+ });
+ add_profile(profile_base_name + " Main", profile_info, create_profile_info_chain, create_capabilities_chain,
+ create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoEncodeH264ProfileInfoKHR.stdProfileIdc =
+ STD_VIDEO_H264_PROFILE_IDC_MAIN;
+ });
+ add_profile(profile_base_name + " High", profile_info, create_profile_info_chain, create_capabilities_chain,
+ create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoEncodeH264ProfileInfoKHR.stdProfileIdc =
+ STD_VIDEO_H264_PROFILE_IDC_HIGH;
+ });
+ add_profile(profile_base_name + " High 4:4:4 Predictive", profile_info, create_profile_info_chain,
+ create_capabilities_chain, create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoEncodeH264ProfileInfoKHR.stdProfileIdc =
+ STD_VIDEO_H264_PROFILE_IDC_HIGH_444_PREDICTIVE;
+ });
+ }
+ }
+ }
+ }
+
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_H265_EXTENSION_NAME)) {
+ const std::string codec_name = "H.265 Encode";
+
+ for (auto chroma_subsampling : chroma_subsampling_list) {
+ for (auto luma_bit_depth : bit_depth_list) {
+ for (auto chroma_bit_depth : bit_depth_list) {
+ if (chroma_subsampling.value == VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR &&
+ luma_bit_depth.value != chroma_bit_depth.value) {
+ // Ignore the chroma bit depth dimension for monochrome
+ continue;
+ }
+
+ std::string profile_base_name = codec_name + base_format(chroma_subsampling, luma_bit_depth, chroma_bit_depth);
+ VkVideoProfileInfoKHR profile_info{VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR,
+ nullptr,
+ VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR,
+ chroma_subsampling.value,
+ luma_bit_depth.value,
+ chroma_bit_depth.value};
+
+ auto create_profile_info_chain = [&](const void **ppnext) -> std::unique_ptr<video_profile_info_chain> {
+ auto profile_info_chain = std::make_unique<video_profile_info_chain>();
+ if (profile_info_chain != nullptr) {
+ profile_info_chain->VideoEncodeH265ProfileInfoKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_KHR;
+ profile_info_chain->VideoEncodeH265ProfileInfoKHR.pNext = nullptr;
+ *ppnext = &profile_info_chain->VideoEncodeH265ProfileInfoKHR;
+ ppnext = &profile_info_chain->VideoEncodeH265ProfileInfoKHR.pNext;
+ }
+ return profile_info_chain;
+ };
+
+ auto create_capabilities_chain = [&](void **ppnext) -> std::unique_ptr<video_capabilities_chain> {
+ auto capabilities_chain = std::make_unique<video_capabilities_chain>();
+ if (capabilities_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME)) {
+ capabilities_chain->VideoEncodeCapabilitiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR;
+ capabilities_chain->VideoEncodeCapabilitiesKHR.pNext = nullptr;
+ *ppnext = &capabilities_chain->VideoEncodeCapabilitiesKHR;
+ ppnext = &capabilities_chain->VideoEncodeCapabilitiesKHR.pNext;
+ }
+ }
+ if (capabilities_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME)) {
+ capabilities_chain->VideoEncodeQuantizationMapCapabilitiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR;
+ capabilities_chain->VideoEncodeQuantizationMapCapabilitiesKHR.pNext = nullptr;
+ *ppnext = &capabilities_chain->VideoEncodeQuantizationMapCapabilitiesKHR;
+ ppnext = &capabilities_chain->VideoEncodeQuantizationMapCapabilitiesKHR.pNext;
+ }
+ }
+ if (capabilities_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_EXTENSION_NAME)) {
+ capabilities_chain->VideoEncodeIntraRefreshCapabilitiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR;
+ capabilities_chain->VideoEncodeIntraRefreshCapabilitiesKHR.pNext = nullptr;
+ *ppnext = &capabilities_chain->VideoEncodeIntraRefreshCapabilitiesKHR;
+ ppnext = &capabilities_chain->VideoEncodeIntraRefreshCapabilitiesKHR.pNext;
+ }
+ }
+ if (capabilities_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_VALVE_VIDEO_ENCODE_RGB_CONVERSION_EXTENSION_NAME)) {
+ capabilities_chain->VideoEncodeRgbConversionCapabilitiesVALVE.sType =
+ VK_STRUCTURE_TYPE_VIDEO_ENCODE_RGB_CONVERSION_CAPABILITIES_VALVE;
+ capabilities_chain->VideoEncodeRgbConversionCapabilitiesVALVE.pNext = nullptr;
+ *ppnext = &capabilities_chain->VideoEncodeRgbConversionCapabilitiesVALVE;
+ ppnext = &capabilities_chain->VideoEncodeRgbConversionCapabilitiesVALVE.pNext;
+ }
+ }
+ if (capabilities_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_H265_EXTENSION_NAME)) {
+ capabilities_chain->VideoEncodeH265CapabilitiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHR;
+ capabilities_chain->VideoEncodeH265CapabilitiesKHR.pNext = nullptr;
+ *ppnext = &capabilities_chain->VideoEncodeH265CapabilitiesKHR;
+ ppnext = &capabilities_chain->VideoEncodeH265CapabilitiesKHR.pNext;
+ }
+ }
+ if (capabilities_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME)) {
+ capabilities_chain->VideoEncodeH265QuantizationMapCapabilitiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUANTIZATION_MAP_CAPABILITIES_KHR;
+ capabilities_chain->VideoEncodeH265QuantizationMapCapabilitiesKHR.pNext = nullptr;
+ *ppnext = &capabilities_chain->VideoEncodeH265QuantizationMapCapabilitiesKHR;
+ ppnext = &capabilities_chain->VideoEncodeH265QuantizationMapCapabilitiesKHR.pNext;
+ }
+ }
+ return capabilities_chain;
+ };
+
+ const AppVideoProfile::CreateFormatPropertiesChainCbList create_format_properties_chain_list = {
+ AppVideoProfile::CreateFormatPropertiesChainCb{
+ "Encode Input",
+ VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR,
+ [&](const VkVideoCapabilitiesKHR &capabilities) -> bool {
+ bool supported = true;
+ return supported;
+ },
+ [&](void **ppnext) -> std::unique_ptr<video_format_properties_chain> {
+ auto format_properties_chain = std::make_unique<video_format_properties_chain>();
+ return format_properties_chain;
+ },
+ },
+ AppVideoProfile::CreateFormatPropertiesChainCb{
+ "DPB",
+ VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR,
+ [&](const VkVideoCapabilitiesKHR &capabilities) -> bool {
+ bool supported = true;
+ return supported;
+ },
+ [&](void **ppnext) -> std::unique_ptr<video_format_properties_chain> {
+ auto format_properties_chain = std::make_unique<video_format_properties_chain>();
+ return format_properties_chain;
+ },
+ },
+ AppVideoProfile::CreateFormatPropertiesChainCb{
+ "Quantization Delta Map",
+ VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR,
+ [&](const VkVideoCapabilitiesKHR &capabilities) -> bool {
+ bool supported = true;
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME)) {
+ auto caps = reinterpret_cast<const VkVideoEncodeCapabilitiesKHR *>(
+ find_caps_struct(capabilities, VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR));
+ if (caps != nullptr) {
+ supported =
+ supported &&
+ ((caps->flags & VK_VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR) != 0);
+ } else {
+ supported = false;
+ }
+ } else {
+ supported = false;
+ }
+ return supported;
+ },
+ [&](void **ppnext) -> std::unique_ptr<video_format_properties_chain> {
+ auto format_properties_chain = std::make_unique<video_format_properties_chain>();
+ if (format_properties_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(
+ VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME)) {
+ format_properties_chain->VideoFormatQuantizationMapPropertiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR;
+ format_properties_chain->VideoFormatQuantizationMapPropertiesKHR.pNext = nullptr;
+ *ppnext = &format_properties_chain->VideoFormatQuantizationMapPropertiesKHR;
+ ppnext = &format_properties_chain->VideoFormatQuantizationMapPropertiesKHR.pNext;
+ }
+ }
+ if (format_properties_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(
+ VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME)) {
+ format_properties_chain->VideoFormatH265QuantizationMapPropertiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR;
+ format_properties_chain->VideoFormatH265QuantizationMapPropertiesKHR.pNext = nullptr;
+ *ppnext = &format_properties_chain->VideoFormatH265QuantizationMapPropertiesKHR;
+ ppnext = &format_properties_chain->VideoFormatH265QuantizationMapPropertiesKHR.pNext;
+ }
+ }
+ return format_properties_chain;
+ },
+ },
+ AppVideoProfile::CreateFormatPropertiesChainCb{
+ "Emphasis Map",
+ VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR,
+ [&](const VkVideoCapabilitiesKHR &capabilities) -> bool {
+ bool supported = true;
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME)) {
+ auto caps = reinterpret_cast<const VkVideoEncodeCapabilitiesKHR *>(
+ find_caps_struct(capabilities, VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR));
+ if (caps != nullptr) {
+ supported =
+ supported && ((caps->flags & VK_VIDEO_ENCODE_CAPABILITY_EMPHASIS_MAP_BIT_KHR) != 0);
+ } else {
+ supported = false;
+ }
+ } else {
+ supported = false;
+ }
+ return supported;
+ },
+ [&](void **ppnext) -> std::unique_ptr<video_format_properties_chain> {
+ auto format_properties_chain = std::make_unique<video_format_properties_chain>();
+ if (format_properties_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(
+ VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME)) {
+ format_properties_chain->VideoFormatQuantizationMapPropertiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR;
+ format_properties_chain->VideoFormatQuantizationMapPropertiesKHR.pNext = nullptr;
+ *ppnext = &format_properties_chain->VideoFormatQuantizationMapPropertiesKHR;
+ ppnext = &format_properties_chain->VideoFormatQuantizationMapPropertiesKHR.pNext;
+ }
+ }
+ if (format_properties_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(
+ VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME)) {
+ format_properties_chain->VideoFormatH265QuantizationMapPropertiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_FORMAT_H265_QUANTIZATION_MAP_PROPERTIES_KHR;
+ format_properties_chain->VideoFormatH265QuantizationMapPropertiesKHR.pNext = nullptr;
+ *ppnext = &format_properties_chain->VideoFormatH265QuantizationMapPropertiesKHR;
+ ppnext = &format_properties_chain->VideoFormatH265QuantizationMapPropertiesKHR.pNext;
+ }
+ }
+ return format_properties_chain;
+ },
+ },
+ };
+
+ add_profile(profile_base_name + " Main", profile_info, create_profile_info_chain, create_capabilities_chain,
+ create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoEncodeH265ProfileInfoKHR.stdProfileIdc =
+ STD_VIDEO_H265_PROFILE_IDC_MAIN;
+ });
+ add_profile(profile_base_name + " Main 10", profile_info, create_profile_info_chain, create_capabilities_chain,
+ create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoEncodeH265ProfileInfoKHR.stdProfileIdc =
+ STD_VIDEO_H265_PROFILE_IDC_MAIN_10;
+ });
+ add_profile(profile_base_name + " Main Still Picture", profile_info, create_profile_info_chain,
+ create_capabilities_chain, create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoEncodeH265ProfileInfoKHR.stdProfileIdc =
+ STD_VIDEO_H265_PROFILE_IDC_MAIN_STILL_PICTURE;
+ });
+ add_profile(profile_base_name + " Format range extensions", profile_info, create_profile_info_chain,
+ create_capabilities_chain, create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoEncodeH265ProfileInfoKHR.stdProfileIdc =
+ STD_VIDEO_H265_PROFILE_IDC_FORMAT_RANGE_EXTENSIONS;
+ });
+ add_profile(profile_base_name + " Screen content coding extensions", profile_info, create_profile_info_chain,
+ create_capabilities_chain, create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoEncodeH265ProfileInfoKHR.stdProfileIdc =
+ STD_VIDEO_H265_PROFILE_IDC_SCC_EXTENSIONS;
+ });
+ }
+ }
+ }
+ }
+
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_AV1_EXTENSION_NAME)) {
+ const std::string codec_name = "AV1 Encode";
+
+ for (auto chroma_subsampling : chroma_subsampling_list) {
+ for (auto luma_bit_depth : bit_depth_list) {
+ for (auto chroma_bit_depth : bit_depth_list) {
+ if (chroma_subsampling.value == VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR &&
+ luma_bit_depth.value != chroma_bit_depth.value) {
+ // Ignore the chroma bit depth dimension for monochrome
+ continue;
+ }
+
+ std::string profile_base_name = codec_name + base_format(chroma_subsampling, luma_bit_depth, chroma_bit_depth);
+ VkVideoProfileInfoKHR profile_info{VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR,
+ nullptr,
+ VK_VIDEO_CODEC_OPERATION_ENCODE_AV1_BIT_KHR,
+ chroma_subsampling.value,
+ luma_bit_depth.value,
+ chroma_bit_depth.value};
+
+ auto create_profile_info_chain = [&](const void **ppnext) -> std::unique_ptr<video_profile_info_chain> {
+ auto profile_info_chain = std::make_unique<video_profile_info_chain>();
+ if (profile_info_chain != nullptr) {
+ profile_info_chain->VideoEncodeAV1ProfileInfoKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_PROFILE_INFO_KHR;
+ profile_info_chain->VideoEncodeAV1ProfileInfoKHR.pNext = nullptr;
+ *ppnext = &profile_info_chain->VideoEncodeAV1ProfileInfoKHR;
+ ppnext = &profile_info_chain->VideoEncodeAV1ProfileInfoKHR.pNext;
+ }
+ return profile_info_chain;
+ };
+
+ auto create_capabilities_chain = [&](void **ppnext) -> std::unique_ptr<video_capabilities_chain> {
+ auto capabilities_chain = std::make_unique<video_capabilities_chain>();
+ if (capabilities_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME)) {
+ capabilities_chain->VideoEncodeCapabilitiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR;
+ capabilities_chain->VideoEncodeCapabilitiesKHR.pNext = nullptr;
+ *ppnext = &capabilities_chain->VideoEncodeCapabilitiesKHR;
+ ppnext = &capabilities_chain->VideoEncodeCapabilitiesKHR.pNext;
+ }
+ }
+ if (capabilities_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME)) {
+ capabilities_chain->VideoEncodeQuantizationMapCapabilitiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUANTIZATION_MAP_CAPABILITIES_KHR;
+ capabilities_chain->VideoEncodeQuantizationMapCapabilitiesKHR.pNext = nullptr;
+ *ppnext = &capabilities_chain->VideoEncodeQuantizationMapCapabilitiesKHR;
+ ppnext = &capabilities_chain->VideoEncodeQuantizationMapCapabilitiesKHR.pNext;
+ }
+ }
+ if (capabilities_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_EXTENSION_NAME)) {
+ capabilities_chain->VideoEncodeIntraRefreshCapabilitiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_ENCODE_INTRA_REFRESH_CAPABILITIES_KHR;
+ capabilities_chain->VideoEncodeIntraRefreshCapabilitiesKHR.pNext = nullptr;
+ *ppnext = &capabilities_chain->VideoEncodeIntraRefreshCapabilitiesKHR;
+ ppnext = &capabilities_chain->VideoEncodeIntraRefreshCapabilitiesKHR.pNext;
+ }
+ }
+ if (capabilities_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_VALVE_VIDEO_ENCODE_RGB_CONVERSION_EXTENSION_NAME)) {
+ capabilities_chain->VideoEncodeRgbConversionCapabilitiesVALVE.sType =
+ VK_STRUCTURE_TYPE_VIDEO_ENCODE_RGB_CONVERSION_CAPABILITIES_VALVE;
+ capabilities_chain->VideoEncodeRgbConversionCapabilitiesVALVE.pNext = nullptr;
+ *ppnext = &capabilities_chain->VideoEncodeRgbConversionCapabilitiesVALVE;
+ ppnext = &capabilities_chain->VideoEncodeRgbConversionCapabilitiesVALVE.pNext;
+ }
+ }
+ if (capabilities_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_AV1_EXTENSION_NAME)) {
+ capabilities_chain->VideoEncodeAV1CapabilitiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_CAPABILITIES_KHR;
+ capabilities_chain->VideoEncodeAV1CapabilitiesKHR.pNext = nullptr;
+ *ppnext = &capabilities_chain->VideoEncodeAV1CapabilitiesKHR;
+ ppnext = &capabilities_chain->VideoEncodeAV1CapabilitiesKHR.pNext;
+ }
+ }
+ return capabilities_chain;
+ };
+
+ const AppVideoProfile::CreateFormatPropertiesChainCbList create_format_properties_chain_list = {
+ AppVideoProfile::CreateFormatPropertiesChainCb{
+ "Encode Input",
+ VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR,
+ [&](const VkVideoCapabilitiesKHR &capabilities) -> bool {
+ bool supported = true;
+ return supported;
+ },
+ [&](void **ppnext) -> std::unique_ptr<video_format_properties_chain> {
+ auto format_properties_chain = std::make_unique<video_format_properties_chain>();
+ return format_properties_chain;
+ },
+ },
+ AppVideoProfile::CreateFormatPropertiesChainCb{
+ "DPB",
+ VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR,
+ [&](const VkVideoCapabilitiesKHR &capabilities) -> bool {
+ bool supported = true;
+ return supported;
+ },
+ [&](void **ppnext) -> std::unique_ptr<video_format_properties_chain> {
+ auto format_properties_chain = std::make_unique<video_format_properties_chain>();
+ return format_properties_chain;
+ },
+ },
+ AppVideoProfile::CreateFormatPropertiesChainCb{
+ "Quantization Delta Map",
+ VK_IMAGE_USAGE_VIDEO_ENCODE_QUANTIZATION_DELTA_MAP_BIT_KHR,
+ [&](const VkVideoCapabilitiesKHR &capabilities) -> bool {
+ bool supported = true;
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME)) {
+ auto caps = reinterpret_cast<const VkVideoEncodeCapabilitiesKHR *>(
+ find_caps_struct(capabilities, VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR));
+ if (caps != nullptr) {
+ supported =
+ supported &&
+ ((caps->flags & VK_VIDEO_ENCODE_CAPABILITY_QUANTIZATION_DELTA_MAP_BIT_KHR) != 0);
+ } else {
+ supported = false;
+ }
+ } else {
+ supported = false;
+ }
+ return supported;
+ },
+ [&](void **ppnext) -> std::unique_ptr<video_format_properties_chain> {
+ auto format_properties_chain = std::make_unique<video_format_properties_chain>();
+ if (format_properties_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(
+ VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME)) {
+ format_properties_chain->VideoFormatQuantizationMapPropertiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR;
+ format_properties_chain->VideoFormatQuantizationMapPropertiesKHR.pNext = nullptr;
+ *ppnext = &format_properties_chain->VideoFormatQuantizationMapPropertiesKHR;
+ ppnext = &format_properties_chain->VideoFormatQuantizationMapPropertiesKHR.pNext;
+ }
+ }
+ if (format_properties_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(
+ VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME)) {
+ format_properties_chain->VideoFormatAV1QuantizationMapPropertiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR;
+ format_properties_chain->VideoFormatAV1QuantizationMapPropertiesKHR.pNext = nullptr;
+ *ppnext = &format_properties_chain->VideoFormatAV1QuantizationMapPropertiesKHR;
+ ppnext = &format_properties_chain->VideoFormatAV1QuantizationMapPropertiesKHR.pNext;
+ }
+ }
+ return format_properties_chain;
+ },
+ },
+ AppVideoProfile::CreateFormatPropertiesChainCb{
+ "Emphasis Map",
+ VK_IMAGE_USAGE_VIDEO_ENCODE_EMPHASIS_MAP_BIT_KHR,
+ [&](const VkVideoCapabilitiesKHR &capabilities) -> bool {
+ bool supported = true;
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME)) {
+ auto caps = reinterpret_cast<const VkVideoEncodeCapabilitiesKHR *>(
+ find_caps_struct(capabilities, VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR));
+ if (caps != nullptr) {
+ supported =
+ supported && ((caps->flags & VK_VIDEO_ENCODE_CAPABILITY_EMPHASIS_MAP_BIT_KHR) != 0);
+ } else {
+ supported = false;
+ }
+ } else {
+ supported = false;
+ }
+ return supported;
+ },
+ [&](void **ppnext) -> std::unique_ptr<video_format_properties_chain> {
+ auto format_properties_chain = std::make_unique<video_format_properties_chain>();
+ if (format_properties_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(
+ VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME)) {
+ format_properties_chain->VideoFormatQuantizationMapPropertiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR;
+ format_properties_chain->VideoFormatQuantizationMapPropertiesKHR.pNext = nullptr;
+ *ppnext = &format_properties_chain->VideoFormatQuantizationMapPropertiesKHR;
+ ppnext = &format_properties_chain->VideoFormatQuantizationMapPropertiesKHR.pNext;
+ }
+ }
+ if (format_properties_chain != nullptr) {
+ if (gpu.CheckPhysicalDeviceExtensionIncluded(
+ VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME)) {
+ format_properties_chain->VideoFormatAV1QuantizationMapPropertiesKHR.sType =
+ VK_STRUCTURE_TYPE_VIDEO_FORMAT_AV1_QUANTIZATION_MAP_PROPERTIES_KHR;
+ format_properties_chain->VideoFormatAV1QuantizationMapPropertiesKHR.pNext = nullptr;
+ *ppnext = &format_properties_chain->VideoFormatAV1QuantizationMapPropertiesKHR;
+ ppnext = &format_properties_chain->VideoFormatAV1QuantizationMapPropertiesKHR.pNext;
+ }
+ }
+ return format_properties_chain;
+ },
+ },
+ };
+
+ add_profile(profile_base_name + " Main", profile_info, create_profile_info_chain, create_capabilities_chain,
+ create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoEncodeAV1ProfileInfoKHR.stdProfile =
+ STD_VIDEO_AV1_PROFILE_MAIN;
+ });
+ add_profile(profile_base_name + " High", profile_info, create_profile_info_chain, create_capabilities_chain,
+ create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoEncodeAV1ProfileInfoKHR.stdProfile =
+ STD_VIDEO_AV1_PROFILE_HIGH;
+ });
+ add_profile(profile_base_name + " Professional", profile_info, create_profile_info_chain,
+ create_capabilities_chain, create_format_properties_chain_list, [](AppVideoProfile &profile) {
+ profile.profile_info_chain->VideoEncodeAV1ProfileInfoKHR.stdProfile =
+ STD_VIDEO_AV1_PROFILE_PROFESSIONAL;
+ });
+ }
+ }
+ }
+ }
+ return result;
+}