/* * 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 * */ /* * This file is generated from the Khronos Vulkan XML API Registry. */ #include "vulkaninfo.h" #include "outputprinter.h" template 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 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 VkCompositeAlphaFlagBitsKHRGetStrings(VkCompositeAlphaFlagBitsKHR value) { std::vector 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(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(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 VkDeviceGroupPresentModeFlagBitsKHRGetStrings(VkDeviceGroupPresentModeFlagBitsKHR value) { std::vector 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(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(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 VkDisplayPlaneAlphaFlagBitsKHRGetStrings(VkDisplayPlaneAlphaFlagBitsKHR value) { std::vector 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(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(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 VkFormatFeatureFlagBitsGetStrings(VkFormatFeatureFlagBits value) { std::vector 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(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(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 VkFormatFeatureFlagBits2GetStrings(VkFormatFeatureFlagBits2 value) { std::vector 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(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(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 VkImageCreateFlagBitsGetStrings(VkImageCreateFlagBits value) { std::vector 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(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(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 VkImageUsageFlagBitsGetStrings(VkImageUsageFlagBits value) { std::vector 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(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(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 VkIndirectCommandsInputModeFlagBitsEXTGetStrings(VkIndirectCommandsInputModeFlagBitsEXT value) { std::vector 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(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(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 VkMemoryDecompressionMethodFlagBitsEXTGetStrings(VkMemoryDecompressionMethodFlagBitsEXT value) { std::vector 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(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(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 VkMemoryHeapFlagBitsGetStrings(VkMemoryHeapFlagBits value) { std::vector 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(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(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 VkMemoryPropertyFlagBitsGetStrings(VkMemoryPropertyFlagBits value) { std::vector 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(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(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 VkPresentGravityFlagBitsKHRGetStrings(VkPresentGravityFlagBitsKHR value) { std::vector 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(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(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 VkPresentScalingFlagBitsKHRGetStrings(VkPresentScalingFlagBitsKHR value) { std::vector 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(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(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 VkPresentStageFlagBitsEXTGetStrings(VkPresentStageFlagBitsEXT value) { std::vector 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(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(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 VkQueueFlagBitsGetStrings(VkQueueFlagBits value) { std::vector 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(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(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 VkResolveModeFlagBitsGetStrings(VkResolveModeFlagBits value) { std::vector 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(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(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 VkSampleCountFlagBitsGetStrings(VkSampleCountFlagBits value) { std::vector 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(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(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 VkShaderStageFlagBitsGetStrings(VkShaderStageFlagBits value) { std::vector 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(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(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 VkSubgroupFeatureFlagBitsGetStrings(VkSubgroupFeatureFlagBits value) { std::vector 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(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(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 VkSurfaceCounterFlagBitsEXTGetStrings(VkSurfaceCounterFlagBitsEXT value) { std::vector 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(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(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 VkSurfaceTransformFlagBitsKHRGetStrings(VkSurfaceTransformFlagBitsKHR value) { std::vector 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(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(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 VkToolPurposeFlagBitsGetStrings(VkToolPurposeFlagBits value) { std::vector 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(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(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 VkVideoCapabilityFlagBitsKHRGetStrings(VkVideoCapabilityFlagBitsKHR value) { std::vector 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(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(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 VkVideoChromaSubsamplingFlagBitsKHRGetStrings(VkVideoChromaSubsamplingFlagBitsKHR value) { std::vector 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(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(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 VkVideoCodecOperationFlagBitsKHRGetStrings(VkVideoCodecOperationFlagBitsKHR value) { std::vector 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(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(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 VkVideoComponentBitDepthFlagBitsKHRGetStrings(VkVideoComponentBitDepthFlagBitsKHR value) { std::vector 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(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(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 VkVideoDecodeCapabilityFlagBitsKHRGetStrings(VkVideoDecodeCapabilityFlagBitsKHR value) { std::vector 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(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(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 VkVideoDecodeH264PictureLayoutFlagBitsKHRGetStrings(VkVideoDecodeH264PictureLayoutFlagBitsKHR value) { std::vector 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(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(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 VkVideoDecodeUsageFlagBitsKHRGetStrings(VkVideoDecodeUsageFlagBitsKHR value) { std::vector 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(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(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 VkVideoEncodeAV1CapabilityFlagBitsKHRGetStrings(VkVideoEncodeAV1CapabilityFlagBitsKHR value) { std::vector 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(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(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 VkVideoEncodeAV1StdFlagBitsKHRGetStrings(VkVideoEncodeAV1StdFlagBitsKHR value) { std::vector 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(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(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 VkVideoEncodeAV1SuperblockSizeFlagBitsKHRGetStrings(VkVideoEncodeAV1SuperblockSizeFlagBitsKHR value) { std::vector 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(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(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 VkVideoEncodeCapabilityFlagBitsKHRGetStrings(VkVideoEncodeCapabilityFlagBitsKHR value) { std::vector 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(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(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 VkVideoEncodeContentFlagBitsKHRGetStrings(VkVideoEncodeContentFlagBitsKHR value) { std::vector 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(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(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 VkVideoEncodeFeedbackFlagBitsKHRGetStrings(VkVideoEncodeFeedbackFlagBitsKHR value) { std::vector 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(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(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 VkVideoEncodeH264CapabilityFlagBitsKHRGetStrings(VkVideoEncodeH264CapabilityFlagBitsKHR value) { std::vector 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(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(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 VkVideoEncodeH264StdFlagBitsKHRGetStrings(VkVideoEncodeH264StdFlagBitsKHR value) { std::vector 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(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(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 VkVideoEncodeH265CapabilityFlagBitsKHRGetStrings(VkVideoEncodeH265CapabilityFlagBitsKHR value) { std::vector 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(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(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 VkVideoEncodeH265CtbSizeFlagBitsKHRGetStrings(VkVideoEncodeH265CtbSizeFlagBitsKHR value) { std::vector 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(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(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 VkVideoEncodeH265StdFlagBitsKHRGetStrings(VkVideoEncodeH265StdFlagBitsKHR value) { std::vector 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(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(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 VkVideoEncodeH265TransformBlockSizeFlagBitsKHRGetStrings( VkVideoEncodeH265TransformBlockSizeFlagBitsKHR value) { std::vector 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(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(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 VkVideoEncodeIntraRefreshModeFlagBitsKHRGetStrings(VkVideoEncodeIntraRefreshModeFlagBitsKHR value) { std::vector 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(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(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 VkVideoEncodeRateControlModeFlagBitsKHRGetStrings(VkVideoEncodeRateControlModeFlagBitsKHR value) { std::vector 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(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(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 VkVideoEncodeRgbChromaOffsetFlagBitsVALVEGetStrings(VkVideoEncodeRgbChromaOffsetFlagBitsVALVE value) { std::vector 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(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(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 VkVideoEncodeRgbModelConversionFlagBitsVALVEGetStrings( VkVideoEncodeRgbModelConversionFlagBitsVALVE value) { std::vector 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(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(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 VkVideoEncodeRgbRangeCompressionFlagBitsVALVEGetStrings( VkVideoEncodeRgbRangeCompressionFlagBitsVALVE value) { std::vector 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(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(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 VkVideoEncodeUsageFlagBitsKHRGetStrings(VkVideoEncodeUsageFlagBitsKHR value) { std::vector 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(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(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(obj.major)); p.PrintKeyValue("minor", static_cast(obj.minor)); p.PrintKeyValue("subminor", static_cast(obj.subminor)); p.PrintKeyValue("patch", static_cast(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(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(obj.planeReorderPossible)); p.PrintKeyBool("persistentContent", static_cast(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(obj.storageBuffer16BitAccess)); p.PrintKeyBool("uniformAndStorageBuffer16BitAccess", static_cast(obj.uniformAndStorageBuffer16BitAccess)); p.PrintKeyBool("storagePushConstant16", static_cast(obj.storagePushConstant16)); p.PrintKeyBool("storageInputOutput16", static_cast(obj.storageInputOutput16)); } void DumpVkPhysicalDevice4444FormatsFeaturesEXT(Printer &p, std::string name, const VkPhysicalDevice4444FormatsFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(14); p.PrintKeyBool("formatA4R4G4B4", static_cast(obj.formatA4R4G4B4)); p.PrintKeyBool("formatA4B4G4R4", static_cast(obj.formatA4B4G4R4)); } void DumpVkPhysicalDevice8BitStorageFeatures(Printer &p, std::string name, const VkPhysicalDevice8BitStorageFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(33); p.PrintKeyBool("storageBuffer8BitAccess", static_cast(obj.storageBuffer8BitAccess)); p.PrintKeyBool("uniformAndStorageBuffer8BitAccess", static_cast(obj.uniformAndStorageBuffer8BitAccess)); p.PrintKeyBool("storagePushConstant8", static_cast(obj.storagePushConstant8)); } void DumpVkPhysicalDeviceASTCDecodeFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceASTCDecodeFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(24); p.PrintKeyBool("decodeModeSharedExponent", static_cast(obj.decodeModeSharedExponent)); } void DumpVkPhysicalDeviceAccelerationStructureFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceAccelerationStructureFeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(53); p.PrintKeyBool("accelerationStructure", static_cast(obj.accelerationStructure)); p.PrintKeyBool("accelerationStructureCaptureReplay", static_cast(obj.accelerationStructureCaptureReplay)); p.PrintKeyBool("accelerationStructureIndirectBuild", static_cast(obj.accelerationStructureIndirectBuild)); p.PrintKeyBool("accelerationStructureHostCommands", static_cast(obj.accelerationStructureHostCommands)); p.PrintKeyBool("descriptorBindingAccelerationStructureUpdateAfterBind", static_cast(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(obj.reportAddressBinding)); } void DumpVkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT( Printer &p, std::string name, const VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(34); p.PrintKeyBool("attachmentFeedbackLoopDynamicState", static_cast(obj.attachmentFeedbackLoopDynamicState)); } void DumpVkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT( Printer &p, std::string name, const VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(28); p.PrintKeyBool("attachmentFeedbackLoopLayout", static_cast(obj.attachmentFeedbackLoopLayout)); } void DumpVkPhysicalDeviceBlendOperationAdvancedFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(31); p.PrintKeyBool("advancedBlendCoherentOperations", static_cast(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(obj.advancedBlendIndependentBlend)); p.PrintKeyBool("advancedBlendNonPremultipliedSrcColor", static_cast(obj.advancedBlendNonPremultipliedSrcColor)); p.PrintKeyBool("advancedBlendNonPremultipliedDstColor", static_cast(obj.advancedBlendNonPremultipliedDstColor)); p.PrintKeyBool("advancedBlendCorrelatedOverlap", static_cast(obj.advancedBlendCorrelatedOverlap)); p.PrintKeyBool("advancedBlendAllOperations", static_cast(obj.advancedBlendAllOperations)); } void DumpVkPhysicalDeviceBorderColorSwizzleFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceBorderColorSwizzleFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(27); p.PrintKeyBool("borderColorSwizzle", static_cast(obj.borderColorSwizzle)); p.PrintKeyBool("borderColorSwizzleFromImage", static_cast(obj.borderColorSwizzleFromImage)); } void DumpVkPhysicalDeviceBufferDeviceAddressFeatures(Printer &p, std::string name, const VkPhysicalDeviceBufferDeviceAddressFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(32); p.PrintKeyBool("bufferDeviceAddress", static_cast(obj.bufferDeviceAddress)); p.PrintKeyBool("bufferDeviceAddressCaptureReplay", static_cast(obj.bufferDeviceAddressCaptureReplay)); p.PrintKeyBool("bufferDeviceAddressMultiDevice", static_cast(obj.bufferDeviceAddressMultiDevice)); } void DumpVkPhysicalDeviceBufferDeviceAddressFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceBufferDeviceAddressFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(32); p.PrintKeyBool("bufferDeviceAddress", static_cast(obj.bufferDeviceAddress)); p.PrintKeyBool("bufferDeviceAddressCaptureReplay", static_cast(obj.bufferDeviceAddressCaptureReplay)); p.PrintKeyBool("bufferDeviceAddressMultiDevice", static_cast(obj.bufferDeviceAddressMultiDevice)); } void DumpVkPhysicalDeviceColorWriteEnableFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceColorWriteEnableFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(16); p.PrintKeyBool("colorWriteEnable", static_cast(obj.colorWriteEnable)); } void DumpVkPhysicalDeviceComputeShaderDerivativesFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceComputeShaderDerivativesFeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(28); p.PrintKeyBool("computeDerivativeGroupQuads", static_cast(obj.computeDerivativeGroupQuads)); p.PrintKeyBool("computeDerivativeGroupLinear", static_cast(obj.computeDerivativeGroupLinear)); } void DumpVkPhysicalDeviceComputeShaderDerivativesPropertiesKHR(Printer &p, std::string name, const VkPhysicalDeviceComputeShaderDerivativesPropertiesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(28); p.PrintKeyBool("meshAndTaskShaderDerivatives", static_cast(obj.meshAndTaskShaderDerivatives)); } void DumpVkPhysicalDeviceConditionalRenderingFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceConditionalRenderingFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(29); p.PrintKeyBool("conditionalRendering", static_cast(obj.conditionalRendering)); p.PrintKeyBool("inheritedConditionalRendering", static_cast(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(obj.primitiveUnderestimation)); p.PrintKeyBool("conservativePointAndLineRasterization", static_cast(obj.conservativePointAndLineRasterization)); p.PrintKeyBool("degenerateTrianglesRasterized", static_cast(obj.degenerateTrianglesRasterized)); p.PrintKeyBool("degenerateLinesRasterized", static_cast(obj.degenerateLinesRasterized)); p.PrintKeyBool("fullyCoveredFragmentShaderInputVariable", static_cast(obj.fullyCoveredFragmentShaderInputVariable)); p.PrintKeyBool("conservativeRasterizationPostDepthCoverage", static_cast(obj.conservativeRasterizationPostDepthCoverage)); } void DumpVkPhysicalDeviceCooperativeMatrixFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceCooperativeMatrixFeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(35); p.PrintKeyBool("cooperativeMatrix", static_cast(obj.cooperativeMatrix)); p.PrintKeyBool("cooperativeMatrixRobustBufferAccess", static_cast(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(obj.indirectMemoryCopy)); p.PrintKeyBool("indirectMemoryToImageCopy", static_cast(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(obj.customBorderColors)); p.PrintKeyBool("customBorderColorWithoutFormat", static_cast(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(obj.customResolve)); } void DumpVkPhysicalDeviceDepthBiasControlFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceDepthBiasControlFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(47); p.PrintKeyBool("depthBiasControl", static_cast(obj.depthBiasControl)); p.PrintKeyBool("leastRepresentableValueForceUnormRepresentation", static_cast(obj.leastRepresentableValueForceUnormRepresentation)); p.PrintKeyBool("floatRepresentation", static_cast(obj.floatRepresentation)); p.PrintKeyBool("depthBiasExact", static_cast(obj.depthBiasExact)); } void DumpVkPhysicalDeviceDepthClampControlFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceDepthClampControlFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(17); p.PrintKeyBool("depthClampControl", static_cast(obj.depthClampControl)); } void DumpVkPhysicalDeviceDepthClampZeroOneFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceDepthClampZeroOneFeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(17); p.PrintKeyBool("depthClampZeroOne", static_cast(obj.depthClampZeroOne)); } void DumpVkPhysicalDeviceDepthClipControlFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceDepthClipControlFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(16); p.PrintKeyBool("depthClipControl", static_cast(obj.depthClipControl)); } void DumpVkPhysicalDeviceDepthClipEnableFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceDepthClipEnableFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(15); p.PrintKeyBool("depthClipEnable", static_cast(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(obj.independentResolveNone)); p.PrintKeyBool("independentResolve", static_cast(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(obj.descriptorBuffer)); p.PrintKeyBool("descriptorBufferCaptureReplay", static_cast(obj.descriptorBufferCaptureReplay)); p.PrintKeyBool("descriptorBufferImageLayoutIgnored", static_cast(obj.descriptorBufferImageLayoutIgnored)); p.PrintKeyBool("descriptorBufferPushDescriptors", static_cast(obj.descriptorBufferPushDescriptors)); } void DumpVkPhysicalDeviceDescriptorBufferPropertiesEXT(Printer &p, std::string name, const VkPhysicalDeviceDescriptorBufferPropertiesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(52); p.PrintKeyBool("combinedImageSamplerDescriptorSingleArray", static_cast(obj.combinedImageSamplerDescriptorSingleArray)); p.PrintKeyBool("bufferlessPushDescriptors", static_cast(obj.bufferlessPushDescriptors)); p.PrintKeyBool("allowSamplerImageViewPostSubmitCreation", static_cast(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(obj.descriptorHeap)); p.PrintKeyBool("descriptorHeapCaptureReplay", static_cast(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(obj.sparseDescriptorHeaps)); p.PrintKeyBool("protectedDescriptorHeaps", static_cast(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(obj.shaderInputAttachmentArrayDynamicIndexing)); p.PrintKeyBool("shaderUniformTexelBufferArrayDynamicIndexing", static_cast(obj.shaderUniformTexelBufferArrayDynamicIndexing)); p.PrintKeyBool("shaderStorageTexelBufferArrayDynamicIndexing", static_cast(obj.shaderStorageTexelBufferArrayDynamicIndexing)); p.PrintKeyBool("shaderUniformBufferArrayNonUniformIndexing", static_cast(obj.shaderUniformBufferArrayNonUniformIndexing)); p.PrintKeyBool("shaderSampledImageArrayNonUniformIndexing", static_cast(obj.shaderSampledImageArrayNonUniformIndexing)); p.PrintKeyBool("shaderStorageBufferArrayNonUniformIndexing", static_cast(obj.shaderStorageBufferArrayNonUniformIndexing)); p.PrintKeyBool("shaderStorageImageArrayNonUniformIndexing", static_cast(obj.shaderStorageImageArrayNonUniformIndexing)); p.PrintKeyBool("shaderInputAttachmentArrayNonUniformIndexing", static_cast(obj.shaderInputAttachmentArrayNonUniformIndexing)); p.PrintKeyBool("shaderUniformTexelBufferArrayNonUniformIndexing", static_cast(obj.shaderUniformTexelBufferArrayNonUniformIndexing)); p.PrintKeyBool("shaderStorageTexelBufferArrayNonUniformIndexing", static_cast(obj.shaderStorageTexelBufferArrayNonUniformIndexing)); p.PrintKeyBool("descriptorBindingUniformBufferUpdateAfterBind", static_cast(obj.descriptorBindingUniformBufferUpdateAfterBind)); p.PrintKeyBool("descriptorBindingSampledImageUpdateAfterBind", static_cast(obj.descriptorBindingSampledImageUpdateAfterBind)); p.PrintKeyBool("descriptorBindingStorageImageUpdateAfterBind", static_cast(obj.descriptorBindingStorageImageUpdateAfterBind)); p.PrintKeyBool("descriptorBindingStorageBufferUpdateAfterBind", static_cast(obj.descriptorBindingStorageBufferUpdateAfterBind)); p.PrintKeyBool("descriptorBindingUniformTexelBufferUpdateAfterBind", static_cast(obj.descriptorBindingUniformTexelBufferUpdateAfterBind)); p.PrintKeyBool("descriptorBindingStorageTexelBufferUpdateAfterBind", static_cast(obj.descriptorBindingStorageTexelBufferUpdateAfterBind)); p.PrintKeyBool("descriptorBindingUpdateUnusedWhilePending", static_cast(obj.descriptorBindingUpdateUnusedWhilePending)); p.PrintKeyBool("descriptorBindingPartiallyBound", static_cast(obj.descriptorBindingPartiallyBound)); p.PrintKeyBool("descriptorBindingVariableDescriptorCount", static_cast(obj.descriptorBindingVariableDescriptorCount)); p.PrintKeyBool("runtimeDescriptorArray", static_cast(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(obj.shaderUniformBufferArrayNonUniformIndexingNative)); p.PrintKeyBool("shaderSampledImageArrayNonUniformIndexingNative", static_cast(obj.shaderSampledImageArrayNonUniformIndexingNative)); p.PrintKeyBool("shaderStorageBufferArrayNonUniformIndexingNative", static_cast(obj.shaderStorageBufferArrayNonUniformIndexingNative)); p.PrintKeyBool("shaderStorageImageArrayNonUniformIndexingNative", static_cast(obj.shaderStorageImageArrayNonUniformIndexingNative)); p.PrintKeyBool("shaderInputAttachmentArrayNonUniformIndexingNative", static_cast(obj.shaderInputAttachmentArrayNonUniformIndexingNative)); p.PrintKeyBool("robustBufferAccessUpdateAfterBind", static_cast(obj.robustBufferAccessUpdateAfterBind)); p.PrintKeyBool("quadDivergentImplicitLod", static_cast(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(obj.deviceAddressCommands)); } void DumpVkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceDeviceGeneratedCommandsFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(30); p.PrintKeyBool("deviceGeneratedCommands", static_cast(obj.deviceGeneratedCommands)); p.PrintKeyBool("dynamicGeneratedPipelineLayout", static_cast(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(obj.deviceGeneratedCommandsTransformFeedback)); p.PrintKeyBool("deviceGeneratedCommandsMultiDrawIndirectCount", static_cast(obj.deviceGeneratedCommandsMultiDrawIndirectCount)); } void DumpVkPhysicalDeviceDeviceMemoryReportFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceDeviceMemoryReportFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(18); p.PrintKeyBool("deviceMemoryReport", static_cast(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(obj.hasPrimary)); p.PrintKeyBool("hasRender", static_cast(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(obj.dynamicRendering)); } void DumpVkPhysicalDeviceDynamicRenderingLocalReadFeatures(Printer &p, std::string name, const VkPhysicalDeviceDynamicRenderingLocalReadFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(25); p.PrintKeyBool("dynamicRenderingLocalRead", static_cast(obj.dynamicRenderingLocalRead)); } void DumpVkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT( Printer &p, std::string name, const VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(33); p.PrintKeyBool("dynamicRenderingUnusedAttachments", static_cast(obj.dynamicRenderingUnusedAttachments)); } void DumpVkPhysicalDeviceExtendedDynamicState2FeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceExtendedDynamicState2FeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(39); p.PrintKeyBool("extendedDynamicState2", static_cast(obj.extendedDynamicState2)); p.PrintKeyBool("extendedDynamicState2LogicOp", static_cast(obj.extendedDynamicState2LogicOp)); p.PrintKeyBool("extendedDynamicState2PatchControlPoints", static_cast(obj.extendedDynamicState2PatchControlPoints)); } void DumpVkPhysicalDeviceExtendedDynamicState3FeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceExtendedDynamicState3FeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(53); p.PrintKeyBool("extendedDynamicState3TessellationDomainOrigin", static_cast(obj.extendedDynamicState3TessellationDomainOrigin)); p.PrintKeyBool("extendedDynamicState3DepthClampEnable", static_cast(obj.extendedDynamicState3DepthClampEnable)); p.PrintKeyBool("extendedDynamicState3PolygonMode", static_cast(obj.extendedDynamicState3PolygonMode)); p.PrintKeyBool("extendedDynamicState3RasterizationSamples", static_cast(obj.extendedDynamicState3RasterizationSamples)); p.PrintKeyBool("extendedDynamicState3SampleMask", static_cast(obj.extendedDynamicState3SampleMask)); p.PrintKeyBool("extendedDynamicState3AlphaToCoverageEnable", static_cast(obj.extendedDynamicState3AlphaToCoverageEnable)); p.PrintKeyBool("extendedDynamicState3AlphaToOneEnable", static_cast(obj.extendedDynamicState3AlphaToOneEnable)); p.PrintKeyBool("extendedDynamicState3LogicOpEnable", static_cast(obj.extendedDynamicState3LogicOpEnable)); p.PrintKeyBool("extendedDynamicState3ColorBlendEnable", static_cast(obj.extendedDynamicState3ColorBlendEnable)); p.PrintKeyBool("extendedDynamicState3ColorBlendEquation", static_cast(obj.extendedDynamicState3ColorBlendEquation)); p.PrintKeyBool("extendedDynamicState3ColorWriteMask", static_cast(obj.extendedDynamicState3ColorWriteMask)); p.PrintKeyBool("extendedDynamicState3RasterizationStream", static_cast(obj.extendedDynamicState3RasterizationStream)); p.PrintKeyBool("extendedDynamicState3ConservativeRasterizationMode", static_cast(obj.extendedDynamicState3ConservativeRasterizationMode)); p.PrintKeyBool("extendedDynamicState3ExtraPrimitiveOverestimationSize", static_cast(obj.extendedDynamicState3ExtraPrimitiveOverestimationSize)); p.PrintKeyBool("extendedDynamicState3DepthClipEnable", static_cast(obj.extendedDynamicState3DepthClipEnable)); p.PrintKeyBool("extendedDynamicState3SampleLocationsEnable", static_cast(obj.extendedDynamicState3SampleLocationsEnable)); p.PrintKeyBool("extendedDynamicState3ColorBlendAdvanced", static_cast(obj.extendedDynamicState3ColorBlendAdvanced)); p.PrintKeyBool("extendedDynamicState3ProvokingVertexMode", static_cast(obj.extendedDynamicState3ProvokingVertexMode)); p.PrintKeyBool("extendedDynamicState3LineRasterizationMode", static_cast(obj.extendedDynamicState3LineRasterizationMode)); p.PrintKeyBool("extendedDynamicState3LineStippleEnable", static_cast(obj.extendedDynamicState3LineStippleEnable)); p.PrintKeyBool("extendedDynamicState3DepthClipNegativeOneToOne", static_cast(obj.extendedDynamicState3DepthClipNegativeOneToOne)); p.PrintKeyBool("extendedDynamicState3ViewportWScalingEnable", static_cast(obj.extendedDynamicState3ViewportWScalingEnable)); p.PrintKeyBool("extendedDynamicState3ViewportSwizzle", static_cast(obj.extendedDynamicState3ViewportSwizzle)); p.PrintKeyBool("extendedDynamicState3CoverageToColorEnable", static_cast(obj.extendedDynamicState3CoverageToColorEnable)); p.PrintKeyBool("extendedDynamicState3CoverageToColorLocation", static_cast(obj.extendedDynamicState3CoverageToColorLocation)); p.PrintKeyBool("extendedDynamicState3CoverageModulationMode", static_cast(obj.extendedDynamicState3CoverageModulationMode)); p.PrintKeyBool("extendedDynamicState3CoverageModulationTableEnable", static_cast(obj.extendedDynamicState3CoverageModulationTableEnable)); p.PrintKeyBool("extendedDynamicState3CoverageModulationTable", static_cast(obj.extendedDynamicState3CoverageModulationTable)); p.PrintKeyBool("extendedDynamicState3CoverageReductionMode", static_cast(obj.extendedDynamicState3CoverageReductionMode)); p.PrintKeyBool("extendedDynamicState3RepresentativeFragmentTestEnable", static_cast(obj.extendedDynamicState3RepresentativeFragmentTestEnable)); p.PrintKeyBool("extendedDynamicState3ShadingRateImageEnable", static_cast(obj.extendedDynamicState3ShadingRateImageEnable)); } void DumpVkPhysicalDeviceExtendedDynamicState3PropertiesEXT(Printer &p, std::string name, const VkPhysicalDeviceExtendedDynamicState3PropertiesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(36); p.PrintKeyBool("dynamicPrimitiveTopologyUnrestricted", static_cast(obj.dynamicPrimitiveTopologyUnrestricted)); } void DumpVkPhysicalDeviceExtendedDynamicStateFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceExtendedDynamicStateFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(20); p.PrintKeyBool("extendedDynamicState", static_cast(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(obj.deviceFault)); p.PrintKeyBool("deviceFaultVendorBinary", static_cast(obj.deviceFaultVendorBinary)); } void DumpVkPhysicalDeviceFaultFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceFaultFeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(29); p.PrintKeyBool("deviceFault", static_cast(obj.deviceFault)); p.PrintKeyBool("deviceFaultVendorBinary", static_cast(obj.deviceFaultVendorBinary)); p.PrintKeyBool("deviceFaultReportMasked", static_cast(obj.deviceFaultReportMasked)); p.PrintKeyBool("deviceFaultDeviceLostOnMasked", static_cast(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(obj.robustBufferAccess)); p.PrintKeyBool("fullDrawIndexUint32", static_cast(obj.fullDrawIndexUint32)); p.PrintKeyBool("imageCubeArray", static_cast(obj.imageCubeArray)); p.PrintKeyBool("independentBlend", static_cast(obj.independentBlend)); p.PrintKeyBool("geometryShader", static_cast(obj.geometryShader)); p.PrintKeyBool("tessellationShader", static_cast(obj.tessellationShader)); p.PrintKeyBool("sampleRateShading", static_cast(obj.sampleRateShading)); p.PrintKeyBool("dualSrcBlend", static_cast(obj.dualSrcBlend)); p.PrintKeyBool("logicOp", static_cast(obj.logicOp)); p.PrintKeyBool("multiDrawIndirect", static_cast(obj.multiDrawIndirect)); p.PrintKeyBool("drawIndirectFirstInstance", static_cast(obj.drawIndirectFirstInstance)); p.PrintKeyBool("depthClamp", static_cast(obj.depthClamp)); p.PrintKeyBool("depthBiasClamp", static_cast(obj.depthBiasClamp)); p.PrintKeyBool("fillModeNonSolid", static_cast(obj.fillModeNonSolid)); p.PrintKeyBool("depthBounds", static_cast(obj.depthBounds)); p.PrintKeyBool("wideLines", static_cast(obj.wideLines)); p.PrintKeyBool("largePoints", static_cast(obj.largePoints)); p.PrintKeyBool("alphaToOne", static_cast(obj.alphaToOne)); p.PrintKeyBool("multiViewport", static_cast(obj.multiViewport)); p.PrintKeyBool("samplerAnisotropy", static_cast(obj.samplerAnisotropy)); p.PrintKeyBool("textureCompressionETC2", static_cast(obj.textureCompressionETC2)); p.PrintKeyBool("textureCompressionASTC_LDR", static_cast(obj.textureCompressionASTC_LDR)); p.PrintKeyBool("textureCompressionBC", static_cast(obj.textureCompressionBC)); p.PrintKeyBool("occlusionQueryPrecise", static_cast(obj.occlusionQueryPrecise)); p.PrintKeyBool("pipelineStatisticsQuery", static_cast(obj.pipelineStatisticsQuery)); p.PrintKeyBool("vertexPipelineStoresAndAtomics", static_cast(obj.vertexPipelineStoresAndAtomics)); p.PrintKeyBool("fragmentStoresAndAtomics", static_cast(obj.fragmentStoresAndAtomics)); p.PrintKeyBool("shaderTessellationAndGeometryPointSize", static_cast(obj.shaderTessellationAndGeometryPointSize)); p.PrintKeyBool("shaderImageGatherExtended", static_cast(obj.shaderImageGatherExtended)); p.PrintKeyBool("shaderStorageImageExtendedFormats", static_cast(obj.shaderStorageImageExtendedFormats)); p.PrintKeyBool("shaderStorageImageMultisample", static_cast(obj.shaderStorageImageMultisample)); p.PrintKeyBool("shaderStorageImageReadWithoutFormat", static_cast(obj.shaderStorageImageReadWithoutFormat)); p.PrintKeyBool("shaderStorageImageWriteWithoutFormat", static_cast(obj.shaderStorageImageWriteWithoutFormat)); p.PrintKeyBool("shaderUniformBufferArrayDynamicIndexing", static_cast(obj.shaderUniformBufferArrayDynamicIndexing)); p.PrintKeyBool("shaderSampledImageArrayDynamicIndexing", static_cast(obj.shaderSampledImageArrayDynamicIndexing)); p.PrintKeyBool("shaderStorageBufferArrayDynamicIndexing", static_cast(obj.shaderStorageBufferArrayDynamicIndexing)); p.PrintKeyBool("shaderStorageImageArrayDynamicIndexing", static_cast(obj.shaderStorageImageArrayDynamicIndexing)); p.PrintKeyBool("shaderClipDistance", static_cast(obj.shaderClipDistance)); p.PrintKeyBool("shaderCullDistance", static_cast(obj.shaderCullDistance)); p.PrintKeyBool("shaderFloat64", static_cast(obj.shaderFloat64)); p.PrintKeyBool("shaderInt64", static_cast(obj.shaderInt64)); p.PrintKeyBool("shaderInt16", static_cast(obj.shaderInt16)); p.PrintKeyBool("shaderResourceResidency", static_cast(obj.shaderResourceResidency)); p.PrintKeyBool("shaderResourceMinLod", static_cast(obj.shaderResourceMinLod)); p.PrintKeyBool("sparseBinding", static_cast(obj.sparseBinding)); p.PrintKeyBool("sparseResidencyBuffer", static_cast(obj.sparseResidencyBuffer)); p.PrintKeyBool("sparseResidencyImage2D", static_cast(obj.sparseResidencyImage2D)); p.PrintKeyBool("sparseResidencyImage3D", static_cast(obj.sparseResidencyImage3D)); p.PrintKeyBool("sparseResidency2Samples", static_cast(obj.sparseResidency2Samples)); p.PrintKeyBool("sparseResidency4Samples", static_cast(obj.sparseResidency4Samples)); p.PrintKeyBool("sparseResidency8Samples", static_cast(obj.sparseResidency8Samples)); p.PrintKeyBool("sparseResidency16Samples", static_cast(obj.sparseResidency16Samples)); p.PrintKeyBool("sparseResidencyAliased", static_cast(obj.sparseResidencyAliased)); p.PrintKeyBool("variableMultisampleRate", static_cast(obj.variableMultisampleRate)); p.PrintKeyBool("inheritedQueries", static_cast(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(obj.shaderSignedZeroInfNanPreserveFloat16)); p.PrintKeyBool("shaderSignedZeroInfNanPreserveFloat32", static_cast(obj.shaderSignedZeroInfNanPreserveFloat32)); p.PrintKeyBool("shaderSignedZeroInfNanPreserveFloat64", static_cast(obj.shaderSignedZeroInfNanPreserveFloat64)); p.PrintKeyBool("shaderDenormPreserveFloat16", static_cast(obj.shaderDenormPreserveFloat16)); p.PrintKeyBool("shaderDenormPreserveFloat32", static_cast(obj.shaderDenormPreserveFloat32)); p.PrintKeyBool("shaderDenormPreserveFloat64", static_cast(obj.shaderDenormPreserveFloat64)); p.PrintKeyBool("shaderDenormFlushToZeroFloat16", static_cast(obj.shaderDenormFlushToZeroFloat16)); p.PrintKeyBool("shaderDenormFlushToZeroFloat32", static_cast(obj.shaderDenormFlushToZeroFloat32)); p.PrintKeyBool("shaderDenormFlushToZeroFloat64", static_cast(obj.shaderDenormFlushToZeroFloat64)); p.PrintKeyBool("shaderRoundingModeRTEFloat16", static_cast(obj.shaderRoundingModeRTEFloat16)); p.PrintKeyBool("shaderRoundingModeRTEFloat32", static_cast(obj.shaderRoundingModeRTEFloat32)); p.PrintKeyBool("shaderRoundingModeRTEFloat64", static_cast(obj.shaderRoundingModeRTEFloat64)); p.PrintKeyBool("shaderRoundingModeRTZFloat16", static_cast(obj.shaderRoundingModeRTZFloat16)); p.PrintKeyBool("shaderRoundingModeRTZFloat32", static_cast(obj.shaderRoundingModeRTZFloat32)); p.PrintKeyBool("shaderRoundingModeRTZFloat64", static_cast(obj.shaderRoundingModeRTZFloat64)); } void DumpVkPhysicalDeviceFragmentDensityMap2FeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceFragmentDensityMap2FeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(26); p.PrintKeyBool("fragmentDensityMapDeferred", static_cast(obj.fragmentDensityMapDeferred)); } void DumpVkPhysicalDeviceFragmentDensityMap2PropertiesEXT(Printer &p, std::string name, const VkPhysicalDeviceFragmentDensityMap2PropertiesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(41); p.PrintKeyBool("subsampledLoads", static_cast(obj.subsampledLoads)); p.PrintKeyBool("subsampledCoarseReconstructionEarlyAccess", static_cast(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(obj.fragmentDensityMap)); p.PrintKeyBool("fragmentDensityMapDynamic", static_cast(obj.fragmentDensityMapDynamic)); p.PrintKeyBool("fragmentDensityMapNonSubsampledImages", static_cast(obj.fragmentDensityMapNonSubsampledImages)); } void DumpVkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceFragmentDensityMapOffsetFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(24); p.PrintKeyBool("fragmentDensityMapOffset", static_cast(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(obj.fragmentDensityInvocations)); } void DumpVkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(25); p.PrintKeyBool("fragmentShaderBarycentric", static_cast(obj.fragmentShaderBarycentric)); } void DumpVkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR(Printer &p, std::string name, const VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(47); p.PrintKeyBool("triStripVertexOrderIndependentOfProvokingVertex", static_cast(obj.triStripVertexOrderIndependentOfProvokingVertex)); } void DumpVkPhysicalDeviceFragmentShaderInterlockFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(34); p.PrintKeyBool("fragmentShaderSampleInterlock", static_cast(obj.fragmentShaderSampleInterlock)); p.PrintKeyBool("fragmentShaderPixelInterlock", static_cast(obj.fragmentShaderPixelInterlock)); p.PrintKeyBool("fragmentShaderShadingRateInterlock", static_cast(obj.fragmentShaderShadingRateInterlock)); } void DumpVkPhysicalDeviceFragmentShadingRateFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceFragmentShadingRateFeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(29); p.PrintKeyBool("pipelineFragmentShadingRate", static_cast(obj.pipelineFragmentShadingRate)); p.PrintKeyBool("primitiveFragmentShadingRate", static_cast(obj.primitiveFragmentShadingRate)); p.PrintKeyBool("attachmentFragmentShadingRate", static_cast(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(obj.primitiveFragmentShadingRateWithMultipleViewports)); p.PrintKeyBool("layeredShadingRateAttachments", static_cast(obj.layeredShadingRateAttachments)); p.PrintKeyBool("fragmentShadingRateNonTrivialCombinerOps", static_cast(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(obj.fragmentShadingRateWithShaderDepthStencilWrites)); p.PrintKeyBool("fragmentShadingRateWithSampleMask", static_cast(obj.fragmentShadingRateWithSampleMask)); p.PrintKeyBool("fragmentShadingRateWithShaderSampleMask", static_cast(obj.fragmentShadingRateWithShaderSampleMask)); p.PrintKeyBool("fragmentShadingRateWithConservativeRasterization", static_cast(obj.fragmentShadingRateWithConservativeRasterization)); p.PrintKeyBool("fragmentShadingRateWithFragmentShaderInterlock", static_cast(obj.fragmentShadingRateWithFragmentShaderInterlock)); p.PrintKeyBool("fragmentShadingRateWithCustomSampleLocations", static_cast(obj.fragmentShadingRateWithCustomSampleLocations)); p.PrintKeyBool("fragmentShadingRateStrictMultiplyCombiner", static_cast(obj.fragmentShadingRateStrictMultiplyCombiner)); } void DumpVkPhysicalDeviceFrameBoundaryFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceFrameBoundaryFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(13); p.PrintKeyBool("frameBoundary", static_cast(obj.frameBoundary)); } void DumpVkPhysicalDeviceGlobalPriorityQueryFeatures(Printer &p, std::string name, const VkPhysicalDeviceGlobalPriorityQueryFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(19); p.PrintKeyBool("globalPriorityQuery", static_cast(obj.globalPriorityQuery)); } void DumpVkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(23); p.PrintKeyBool("graphicsPipelineLibrary", static_cast(obj.graphicsPipelineLibrary)); } void DumpVkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT(Printer &p, std::string name, const VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(57); p.PrintKeyBool("graphicsPipelineLibraryFastLinking", static_cast(obj.graphicsPipelineLibraryFastLinking)); p.PrintKeyBool("graphicsPipelineLibraryIndependentInterpolationDecoration", static_cast(obj.graphicsPipelineLibraryIndependentInterpolationDecoration)); } void DumpVkPhysicalDeviceHostImageCopyFeatures(Printer &p, std::string name, const VkPhysicalDeviceHostImageCopyFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(13); p.PrintKeyBool("hostImageCopy", static_cast(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(obj.identicalMemoryTypeRequirements)); } void DumpVkPhysicalDeviceHostQueryResetFeatures(Printer &p, std::string name, const VkPhysicalDeviceHostQueryResetFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(14); p.PrintKeyBool("hostQueryReset", static_cast(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(obj.deviceLUIDValid)); } void DumpVkPhysicalDeviceImage2DViewOf3DFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceImage2DViewOf3DFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(17); p.PrintKeyBool("image2DViewOf3D", static_cast(obj.image2DViewOf3D)); p.PrintKeyBool("sampler2DViewOf3D", static_cast(obj.sampler2DViewOf3D)); } void DumpVkPhysicalDeviceImageCompressionControlFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceImageCompressionControlFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(23); p.PrintKeyBool("imageCompressionControl", static_cast(obj.imageCompressionControl)); } void DumpVkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT( Printer &p, std::string name, const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(32); p.PrintKeyBool("imageCompressionControlSwapchain", static_cast(obj.imageCompressionControlSwapchain)); } void DumpVkPhysicalDeviceImageRobustnessFeatures(Printer &p, std::string name, const VkPhysicalDeviceImageRobustnessFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(17); p.PrintKeyBool("robustImageAccess", static_cast(obj.robustImageAccess)); } void DumpVkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(19); p.PrintKeyBool("imageSlicedViewOf3D", static_cast(obj.imageSlicedViewOf3D)); } void DumpVkPhysicalDeviceImageViewMinLodFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceImageViewMinLodFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(6); p.PrintKeyBool("minLod", static_cast(obj.minLod)); } void DumpVkPhysicalDeviceImagelessFramebufferFeatures(Printer &p, std::string name, const VkPhysicalDeviceImagelessFramebufferFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(20); p.PrintKeyBool("imagelessFramebuffer", static_cast(obj.imagelessFramebuffer)); } void DumpVkPhysicalDeviceIndexTypeUint8Features(Printer &p, std::string name, const VkPhysicalDeviceIndexTypeUint8Features &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(14); p.PrintKeyBool("indexTypeUint8", static_cast(obj.indexTypeUint8)); } void DumpVkPhysicalDeviceInlineUniformBlockFeatures(Printer &p, std::string name, const VkPhysicalDeviceInlineUniformBlockFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(50); p.PrintKeyBool("inlineUniformBlock", static_cast(obj.inlineUniformBlock)); p.PrintKeyBool("descriptorBindingInlineUniformBlockUpdateAfterBind", static_cast(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(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(obj.legacyDithering)); } void DumpVkPhysicalDeviceLegacyVertexAttributesFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceLegacyVertexAttributesFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(22); p.PrintKeyBool("legacyVertexAttributes", static_cast(obj.legacyVertexAttributes)); } void DumpVkPhysicalDeviceLegacyVertexAttributesPropertiesEXT(Printer &p, std::string name, const VkPhysicalDeviceLegacyVertexAttributesPropertiesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(26); p.PrintKeyBool("nativeUnalignedPerformance", static_cast(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(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(obj.strictLines)); p.PrintKeyBool("standardSampleLocations", static_cast(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(obj.rectangularLines)); p.PrintKeyBool("bresenhamLines", static_cast(obj.bresenhamLines)); p.PrintKeyBool("smoothLines", static_cast(obj.smoothLines)); p.PrintKeyBool("stippledRectangularLines", static_cast(obj.stippledRectangularLines)); p.PrintKeyBool("stippledBresenhamLines", static_cast(obj.stippledBresenhamLines)); p.PrintKeyBool("stippledSmoothLines", static_cast(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(obj.maintenance10)); } void DumpVkPhysicalDeviceMaintenance10PropertiesKHR(Printer &p, std::string name, const VkPhysicalDeviceMaintenance10PropertiesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(48); p.PrintKeyBool("rgba4OpaqueBlackSwizzled", static_cast(obj.rgba4OpaqueBlackSwizzled)); p.PrintKeyBool("resolveSrgbFormatAppliesTransferFunction", static_cast(obj.resolveSrgbFormatAppliesTransferFunction)); p.PrintKeyBool("resolveSrgbFormatSupportsTransferFunctionControl", static_cast(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(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(obj.maintenance5)); } void DumpVkPhysicalDeviceMaintenance5Properties(Printer &p, std::string name, const VkPhysicalDeviceMaintenance5Properties &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(51); p.PrintKeyBool("earlyFragmentMultisampleCoverageAfterSampleCounting", static_cast(obj.earlyFragmentMultisampleCoverageAfterSampleCounting)); p.PrintKeyBool("earlyFragmentSampleMaskTestBeforeSampleCounting", static_cast(obj.earlyFragmentSampleMaskTestBeforeSampleCounting)); p.PrintKeyBool("depthStencilSwizzleOneSupport", static_cast(obj.depthStencilSwizzleOneSupport)); p.PrintKeyBool("polygonModePointSize", static_cast(obj.polygonModePointSize)); p.PrintKeyBool("nonStrictSinglePixelWideLinesUseParallelogram", static_cast(obj.nonStrictSinglePixelWideLinesUseParallelogram)); p.PrintKeyBool("nonStrictWideLinesUseParallelogram", static_cast(obj.nonStrictWideLinesUseParallelogram)); } void DumpVkPhysicalDeviceMaintenance6Features(Printer &p, std::string name, const VkPhysicalDeviceMaintenance6Features &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(12); p.PrintKeyBool("maintenance6", static_cast(obj.maintenance6)); } void DumpVkPhysicalDeviceMaintenance6Properties(Printer &p, std::string name, const VkPhysicalDeviceMaintenance6Properties &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(38); p.PrintKeyBool("blockTexelViewCompatibleMultipleLayers", static_cast(obj.blockTexelViewCompatibleMultipleLayers)); p.PrintKeyValue("maxCombinedImageSamplerDescriptorCount", obj.maxCombinedImageSamplerDescriptorCount); p.PrintKeyBool("fragmentShadingRateClampCombinerInputs", static_cast(obj.fragmentShadingRateClampCombinerInputs)); } void DumpVkPhysicalDeviceMaintenance7FeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceMaintenance7FeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(12); p.PrintKeyBool("maintenance7", static_cast(obj.maintenance7)); } void DumpVkPhysicalDeviceMaintenance7PropertiesKHR(Printer &p, std::string name, const VkPhysicalDeviceMaintenance7PropertiesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(57); p.PrintKeyBool("robustFragmentShadingRateAttachmentAccess", static_cast(obj.robustFragmentShadingRateAttachmentAccess)); p.PrintKeyBool("separateDepthStencilAttachmentAccess", static_cast(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(obj.maintenance8)); } void DumpVkPhysicalDeviceMaintenance9FeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceMaintenance9FeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(12); p.PrintKeyBool("maintenance9", static_cast(obj.maintenance9)); } void DumpVkPhysicalDeviceMaintenance9PropertiesKHR(Printer &p, std::string name, const VkPhysicalDeviceMaintenance9PropertiesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(21); p.PrintKeyBool("image2DViewOf3DSparse", static_cast(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(obj.memoryMapPlaced)); p.PrintKeyBool("memoryMapRangePlaced", static_cast(obj.memoryMapRangePlaced)); p.PrintKeyBool("memoryUnmapReserve", static_cast(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(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(obj.memoryPriority)); } void DumpVkPhysicalDeviceMeshShaderFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceMeshShaderFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(38); p.PrintKeyBool("taskShader", static_cast(obj.taskShader)); p.PrintKeyBool("meshShader", static_cast(obj.meshShader)); p.PrintKeyBool("multiviewMeshShader", static_cast(obj.multiviewMeshShader)); p.PrintKeyBool("primitiveFragmentShadingRateMeshShader", static_cast(obj.primitiveFragmentShadingRateMeshShader)); p.PrintKeyBool("meshShaderQueries", static_cast(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(obj.prefersLocalInvocationVertexOutput)); p.PrintKeyBool("prefersLocalInvocationPrimitiveOutput", static_cast(obj.prefersLocalInvocationPrimitiveOutput)); p.PrintKeyBool("prefersCompactVertexOutput", static_cast(obj.prefersCompactVertexOutput)); p.PrintKeyBool("prefersCompactPrimitiveOutput", static_cast(obj.prefersCompactPrimitiveOutput)); } void DumpVkPhysicalDeviceMultiDrawFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceMultiDrawFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(9); p.PrintKeyBool("multiDraw", static_cast(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(obj.multisampledRenderToSingleSampled)); } void DumpVkPhysicalDeviceMultiviewFeatures(Printer &p, std::string name, const VkPhysicalDeviceMultiviewFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(27); p.PrintKeyBool("multiview", static_cast(obj.multiview)); p.PrintKeyBool("multiviewGeometryShader", static_cast(obj.multiviewGeometryShader)); p.PrintKeyBool("multiviewTessellationShader", static_cast(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(obj.mutableDescriptorType)); } void DumpVkPhysicalDeviceNestedCommandBufferFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceNestedCommandBufferFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(34); p.PrintKeyBool("nestedCommandBuffer", static_cast(obj.nestedCommandBuffer)); p.PrintKeyBool("nestedCommandBufferRendering", static_cast(obj.nestedCommandBufferRendering)); p.PrintKeyBool("nestedCommandBufferSimultaneousUse", static_cast(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(obj.nonSeamlessCubeMap)); } void DumpVkPhysicalDeviceOpacityMicromapFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceOpacityMicromapFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(21); p.PrintKeyBool("micromap", static_cast(obj.micromap)); p.PrintKeyBool("micromapCaptureReplay", static_cast(obj.micromapCaptureReplay)); p.PrintKeyBool("micromapHostCommands", static_cast(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(obj.pageableDeviceLocalMemory)); } void DumpVkPhysicalDevicePerformanceQueryFeaturesKHR(Printer &p, std::string name, const VkPhysicalDevicePerformanceQueryFeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(36); p.PrintKeyBool("performanceCounterQueryPools", static_cast(obj.performanceCounterQueryPools)); p.PrintKeyBool("performanceCounterMultipleQueryPools", static_cast(obj.performanceCounterMultipleQueryPools)); } void DumpVkPhysicalDevicePerformanceQueryPropertiesKHR(Printer &p, std::string name, const VkPhysicalDevicePerformanceQueryPropertiesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(29); p.PrintKeyBool("allowCommandBufferQueryCopies", static_cast(obj.allowCommandBufferQueryCopies)); } void DumpVkPhysicalDevicePipelineBinaryFeaturesKHR(Printer &p, std::string name, const VkPhysicalDevicePipelineBinaryFeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(16); p.PrintKeyBool("pipelineBinaries", static_cast(obj.pipelineBinaries)); } void DumpVkPhysicalDevicePipelineBinaryPropertiesKHR(Printer &p, std::string name, const VkPhysicalDevicePipelineBinaryPropertiesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(38); p.PrintKeyBool("pipelineBinaryInternalCache", static_cast(obj.pipelineBinaryInternalCache)); p.PrintKeyBool("pipelineBinaryInternalCacheControl", static_cast(obj.pipelineBinaryInternalCacheControl)); p.PrintKeyBool("pipelineBinaryPrefersInternalCache", static_cast(obj.pipelineBinaryPrefersInternalCache)); p.PrintKeyBool("pipelineBinaryPrecompiledInternalCache", static_cast(obj.pipelineBinaryPrecompiledInternalCache)); p.PrintKeyBool("pipelineBinaryCompressedData", static_cast(obj.pipelineBinaryCompressedData)); } void DumpVkPhysicalDevicePipelineCreationCacheControlFeatures(Printer &p, std::string name, const VkPhysicalDevicePipelineCreationCacheControlFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(28); p.PrintKeyBool("pipelineCreationCacheControl", static_cast(obj.pipelineCreationCacheControl)); } void DumpVkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR( Printer &p, std::string name, const VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(22); p.PrintKeyBool("pipelineExecutableInfo", static_cast(obj.pipelineExecutableInfo)); } void DumpVkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT(Printer &p, std::string name, const VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(27); p.PrintKeyBool("pipelineLibraryGroupHandles", static_cast(obj.pipelineLibraryGroupHandles)); } void DumpVkPhysicalDevicePipelinePropertiesFeaturesEXT(Printer &p, std::string name, const VkPhysicalDevicePipelinePropertiesFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(28); p.PrintKeyBool("pipelinePropertiesIdentifier", static_cast(obj.pipelinePropertiesIdentifier)); } void DumpVkPhysicalDevicePipelineProtectedAccessFeatures(Printer &p, std::string name, const VkPhysicalDevicePipelineProtectedAccessFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(23); p.PrintKeyBool("pipelineProtectedAccess", static_cast(obj.pipelineProtectedAccess)); } void DumpVkPhysicalDevicePipelineRobustnessFeatures(Printer &p, std::string name, const VkPhysicalDevicePipelineRobustnessFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(18); p.PrintKeyBool("pipelineRobustness", static_cast(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(obj.constantAlphaColorBlendFactors)); p.PrintKeyBool("events", static_cast(obj.events)); p.PrintKeyBool("imageViewFormatReinterpretation", static_cast(obj.imageViewFormatReinterpretation)); p.PrintKeyBool("imageViewFormatSwizzle", static_cast(obj.imageViewFormatSwizzle)); p.PrintKeyBool("imageView2DOn3DImage", static_cast(obj.imageView2DOn3DImage)); p.PrintKeyBool("multisampleArrayImage", static_cast(obj.multisampleArrayImage)); p.PrintKeyBool("mutableComparisonSamplers", static_cast(obj.mutableComparisonSamplers)); p.PrintKeyBool("pointPolygons", static_cast(obj.pointPolygons)); p.PrintKeyBool("samplerMipLodBias", static_cast(obj.samplerMipLodBias)); p.PrintKeyBool("separateStencilMaskRef", static_cast(obj.separateStencilMaskRef)); p.PrintKeyBool("shaderSampleRateInterpolationFunctions", static_cast(obj.shaderSampleRateInterpolationFunctions)); p.PrintKeyBool("tessellationIsolines", static_cast(obj.tessellationIsolines)); p.PrintKeyBool("tessellationPointMode", static_cast(obj.tessellationPointMode)); p.PrintKeyBool("triangleFans", static_cast(obj.triangleFans)); p.PrintKeyBool("vertexAttributeAccessBeyondStride", static_cast(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(obj.presentId2)); } void DumpVkPhysicalDevicePresentIdFeaturesKHR(Printer &p, std::string name, const VkPhysicalDevicePresentIdFeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(9); p.PrintKeyBool("presentId", static_cast(obj.presentId)); } void DumpVkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR(Printer &p, std::string name, const VkPhysicalDevicePresentModeFifoLatestReadyFeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(26); p.PrintKeyBool("presentModeFifoLatestReady", static_cast(obj.presentModeFifoLatestReady)); } void DumpVkPhysicalDevicePresentTimingFeaturesEXT(Printer &p, std::string name, const VkPhysicalDevicePresentTimingFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(21); p.PrintKeyBool("presentTiming", static_cast(obj.presentTiming)); p.PrintKeyBool("presentAtAbsoluteTime", static_cast(obj.presentAtAbsoluteTime)); p.PrintKeyBool("presentAtRelativeTime", static_cast(obj.presentAtRelativeTime)); } void DumpVkPhysicalDevicePresentWait2FeaturesKHR(Printer &p, std::string name, const VkPhysicalDevicePresentWait2FeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(12); p.PrintKeyBool("presentWait2", static_cast(obj.presentWait2)); } void DumpVkPhysicalDevicePresentWaitFeaturesKHR(Printer &p, std::string name, const VkPhysicalDevicePresentWaitFeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(11); p.PrintKeyBool("presentWait", static_cast(obj.presentWait)); } void DumpVkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT( Printer &p, std::string name, const VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(33); p.PrintKeyBool("primitiveTopologyListRestart", static_cast(obj.primitiveTopologyListRestart)); p.PrintKeyBool("primitiveTopologyPatchListRestart", static_cast(obj.primitiveTopologyPatchListRestart)); } void DumpVkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT(Printer &p, std::string name, const VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(45); p.PrintKeyBool("primitivesGeneratedQuery", static_cast(obj.primitivesGeneratedQuery)); p.PrintKeyBool("primitivesGeneratedQueryWithRasterizerDiscard", static_cast(obj.primitivesGeneratedQueryWithRasterizerDiscard)); p.PrintKeyBool("primitivesGeneratedQueryWithNonZeroStreams", static_cast(obj.primitivesGeneratedQueryWithNonZeroStreams)); } void DumpVkPhysicalDevicePrivateDataFeatures(Printer &p, std::string name, const VkPhysicalDevicePrivateDataFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(11); p.PrintKeyBool("privateData", static_cast(obj.privateData)); } void DumpVkPhysicalDeviceProtectedMemoryFeatures(Printer &p, std::string name, const VkPhysicalDeviceProtectedMemoryFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(15); p.PrintKeyBool("protectedMemory", static_cast(obj.protectedMemory)); } void DumpVkPhysicalDeviceProtectedMemoryProperties(Printer &p, std::string name, const VkPhysicalDeviceProtectedMemoryProperties &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(16); p.PrintKeyBool("protectedNoFault", static_cast(obj.protectedNoFault)); } void DumpVkPhysicalDeviceProvokingVertexFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceProvokingVertexFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(41); p.PrintKeyBool("provokingVertexLast", static_cast(obj.provokingVertexLast)); p.PrintKeyBool("transformFeedbackPreservesProvokingVertex", static_cast(obj.transformFeedbackPreservesProvokingVertex)); } void DumpVkPhysicalDeviceProvokingVertexPropertiesEXT(Printer &p, std::string name, const VkPhysicalDeviceProvokingVertexPropertiesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(52); p.PrintKeyBool("provokingVertexModePerPipeline", static_cast(obj.provokingVertexModePerPipeline)); p.PrintKeyBool("transformFeedbackPreservesTriangleFanProvokingVertex", static_cast(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(obj.formatRgba10x6WithoutYCbCrSampler)); } void DumpVkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT( Printer &p, std::string name, const VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(41); p.PrintKeyBool("rasterizationOrderColorAttachmentAccess", static_cast(obj.rasterizationOrderColorAttachmentAccess)); p.PrintKeyBool("rasterizationOrderDepthAttachmentAccess", static_cast(obj.rasterizationOrderDepthAttachmentAccess)); p.PrintKeyBool("rasterizationOrderStencilAttachmentAccess", static_cast(obj.rasterizationOrderStencilAttachmentAccess)); } void DumpVkPhysicalDeviceRayQueryFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceRayQueryFeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(8); p.PrintKeyBool("rayQuery", static_cast(obj.rayQuery)); } void DumpVkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceRayTracingInvocationReorderFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(27); p.PrintKeyBool("rayTracingInvocationReorder", static_cast(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(obj.rayTracingMaintenance1)); p.PrintKeyBool("rayTracingPipelineTraceRaysIndirect2", static_cast(obj.rayTracingPipelineTraceRaysIndirect2)); } void DumpVkPhysicalDeviceRayTracingPipelineFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceRayTracingPipelineFeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(53); p.PrintKeyBool("rayTracingPipeline", static_cast(obj.rayTracingPipeline)); p.PrintKeyBool("rayTracingPipelineShaderGroupHandleCaptureReplay", static_cast(obj.rayTracingPipelineShaderGroupHandleCaptureReplay)); p.PrintKeyBool("rayTracingPipelineShaderGroupHandleCaptureReplayMixed", static_cast(obj.rayTracingPipelineShaderGroupHandleCaptureReplayMixed)); p.PrintKeyBool("rayTracingPipelineTraceRaysIndirect", static_cast(obj.rayTracingPipelineTraceRaysIndirect)); p.PrintKeyBool("rayTraversalPrimitiveCulling", static_cast(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(obj.rayTracingPositionFetch)); } void DumpVkPhysicalDeviceRobustness2FeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceRobustness2FeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(19); p.PrintKeyBool("robustBufferAccess2", static_cast(obj.robustBufferAccess2)); p.PrintKeyBool("robustImageAccess2", static_cast(obj.robustImageAccess2)); p.PrintKeyBool("nullDescriptor", static_cast(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(obj.variableSampleLocations)); } void DumpVkPhysicalDeviceSamplerFilterMinmaxProperties(Printer &p, std::string name, const VkPhysicalDeviceSamplerFilterMinmaxProperties &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(34); p.PrintKeyBool("filterMinmaxSingleComponentFormats", static_cast(obj.filterMinmaxSingleComponentFormats)); p.PrintKeyBool("filterMinmaxImageComponentMapping", static_cast(obj.filterMinmaxImageComponentMapping)); } void DumpVkPhysicalDeviceSamplerYcbcrConversionFeatures(Printer &p, std::string name, const VkPhysicalDeviceSamplerYcbcrConversionFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(22); p.PrintKeyBool("samplerYcbcrConversion", static_cast(obj.samplerYcbcrConversion)); } void DumpVkPhysicalDeviceScalarBlockLayoutFeatures(Printer &p, std::string name, const VkPhysicalDeviceScalarBlockLayoutFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(17); p.PrintKeyBool("scalarBlockLayout", static_cast(obj.scalarBlockLayout)); } void DumpVkPhysicalDeviceSeparateDepthStencilLayoutsFeatures(Printer &p, std::string name, const VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(27); p.PrintKeyBool("separateDepthStencilLayouts", static_cast(obj.separateDepthStencilLayouts)); } void DumpVkPhysicalDeviceShader64BitIndexingFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceShader64BitIndexingFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(19); p.PrintKeyBool("shader64BitIndexing", static_cast(obj.shader64BitIndexing)); } void DumpVkPhysicalDeviceShaderAbortFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceShaderAbortFeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(11); p.PrintKeyBool("shaderAbort", static_cast(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(obj.shaderBufferFloat16Atomics)); p.PrintKeyBool("shaderBufferFloat16AtomicAdd", static_cast(obj.shaderBufferFloat16AtomicAdd)); p.PrintKeyBool("shaderBufferFloat16AtomicMinMax", static_cast(obj.shaderBufferFloat16AtomicMinMax)); p.PrintKeyBool("shaderBufferFloat32AtomicMinMax", static_cast(obj.shaderBufferFloat32AtomicMinMax)); p.PrintKeyBool("shaderBufferFloat64AtomicMinMax", static_cast(obj.shaderBufferFloat64AtomicMinMax)); p.PrintKeyBool("shaderSharedFloat16Atomics", static_cast(obj.shaderSharedFloat16Atomics)); p.PrintKeyBool("shaderSharedFloat16AtomicAdd", static_cast(obj.shaderSharedFloat16AtomicAdd)); p.PrintKeyBool("shaderSharedFloat16AtomicMinMax", static_cast(obj.shaderSharedFloat16AtomicMinMax)); p.PrintKeyBool("shaderSharedFloat32AtomicMinMax", static_cast(obj.shaderSharedFloat32AtomicMinMax)); p.PrintKeyBool("shaderSharedFloat64AtomicMinMax", static_cast(obj.shaderSharedFloat64AtomicMinMax)); p.PrintKeyBool("shaderImageFloat32AtomicMinMax", static_cast(obj.shaderImageFloat32AtomicMinMax)); p.PrintKeyBool("sparseImageFloat32AtomicMinMax", static_cast(obj.sparseImageFloat32AtomicMinMax)); } void DumpVkPhysicalDeviceShaderAtomicFloatFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceShaderAtomicFloatFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(28); p.PrintKeyBool("shaderBufferFloat32Atomics", static_cast(obj.shaderBufferFloat32Atomics)); p.PrintKeyBool("shaderBufferFloat32AtomicAdd", static_cast(obj.shaderBufferFloat32AtomicAdd)); p.PrintKeyBool("shaderBufferFloat64Atomics", static_cast(obj.shaderBufferFloat64Atomics)); p.PrintKeyBool("shaderBufferFloat64AtomicAdd", static_cast(obj.shaderBufferFloat64AtomicAdd)); p.PrintKeyBool("shaderSharedFloat32Atomics", static_cast(obj.shaderSharedFloat32Atomics)); p.PrintKeyBool("shaderSharedFloat32AtomicAdd", static_cast(obj.shaderSharedFloat32AtomicAdd)); p.PrintKeyBool("shaderSharedFloat64Atomics", static_cast(obj.shaderSharedFloat64Atomics)); p.PrintKeyBool("shaderSharedFloat64AtomicAdd", static_cast(obj.shaderSharedFloat64AtomicAdd)); p.PrintKeyBool("shaderImageFloat32Atomics", static_cast(obj.shaderImageFloat32Atomics)); p.PrintKeyBool("shaderImageFloat32AtomicAdd", static_cast(obj.shaderImageFloat32AtomicAdd)); p.PrintKeyBool("sparseImageFloat32Atomics", static_cast(obj.sparseImageFloat32Atomics)); p.PrintKeyBool("sparseImageFloat32AtomicAdd", static_cast(obj.sparseImageFloat32AtomicAdd)); } void DumpVkPhysicalDeviceShaderAtomicInt64Features(Printer &p, std::string name, const VkPhysicalDeviceShaderAtomicInt64Features &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(24); p.PrintKeyBool("shaderBufferInt64Atomics", static_cast(obj.shaderBufferInt64Atomics)); p.PrintKeyBool("shaderSharedInt64Atomics", static_cast(obj.shaderSharedInt64Atomics)); } void DumpVkPhysicalDeviceShaderBfloat16FeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceShaderBfloat16FeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(31); p.PrintKeyBool("shaderBFloat16Type", static_cast(obj.shaderBFloat16Type)); p.PrintKeyBool("shaderBFloat16DotProduct", static_cast(obj.shaderBFloat16DotProduct)); p.PrintKeyBool("shaderBFloat16CooperativeMatrix", static_cast(obj.shaderBFloat16CooperativeMatrix)); } void DumpVkPhysicalDeviceShaderClockFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceShaderClockFeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(19); p.PrintKeyBool("shaderSubgroupClock", static_cast(obj.shaderSubgroupClock)); p.PrintKeyBool("shaderDeviceClock", static_cast(obj.shaderDeviceClock)); } void DumpVkPhysicalDeviceShaderConstantDataFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceShaderConstantDataFeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(18); p.PrintKeyBool("shaderConstantData", static_cast(obj.shaderConstantData)); } void DumpVkPhysicalDeviceShaderDemoteToHelperInvocationFeatures(Printer &p, std::string name, const VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(30); p.PrintKeyBool("shaderDemoteToHelperInvocation", static_cast(obj.shaderDemoteToHelperInvocation)); } void DumpVkPhysicalDeviceShaderDrawParametersFeatures(Printer &p, std::string name, const VkPhysicalDeviceShaderDrawParametersFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(20); p.PrintKeyBool("shaderDrawParameters", static_cast(obj.shaderDrawParameters)); } void DumpVkPhysicalDeviceShaderExpectAssumeFeatures(Printer &p, std::string name, const VkPhysicalDeviceShaderExpectAssumeFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(18); p.PrintKeyBool("shaderExpectAssume", static_cast(obj.shaderExpectAssume)); } void DumpVkPhysicalDeviceShaderFloat16Int8Features(Printer &p, std::string name, const VkPhysicalDeviceShaderFloat16Int8Features &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(13); p.PrintKeyBool("shaderFloat16", static_cast(obj.shaderFloat16)); p.PrintKeyBool("shaderInt8", static_cast(obj.shaderInt8)); } void DumpVkPhysicalDeviceShaderFloat8FeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceShaderFloat8FeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(29); p.PrintKeyBool("shaderFloat8", static_cast(obj.shaderFloat8)); p.PrintKeyBool("shaderFloat8CooperativeMatrix", static_cast(obj.shaderFloat8CooperativeMatrix)); } void DumpVkPhysicalDeviceShaderFloatControls2Features(Printer &p, std::string name, const VkPhysicalDeviceShaderFloatControls2Features &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(20); p.PrintKeyBool("shaderFloatControls2", static_cast(obj.shaderFloatControls2)); } void DumpVkPhysicalDeviceShaderFmaFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceShaderFmaFeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(16); p.PrintKeyBool("shaderFmaFloat16", static_cast(obj.shaderFmaFloat16)); p.PrintKeyBool("shaderFmaFloat32", static_cast(obj.shaderFmaFloat32)); p.PrintKeyBool("shaderFmaFloat64", static_cast(obj.shaderFmaFloat64)); } void DumpVkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(23); p.PrintKeyBool("shaderImageInt64Atomics", static_cast(obj.shaderImageInt64Atomics)); p.PrintKeyBool("sparseImageInt64Atomics", static_cast(obj.sparseImageInt64Atomics)); } void DumpVkPhysicalDeviceShaderIntegerDotProductFeatures(Printer &p, std::string name, const VkPhysicalDeviceShaderIntegerDotProductFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(23); p.PrintKeyBool("shaderIntegerDotProduct", static_cast(obj.shaderIntegerDotProduct)); } void DumpVkPhysicalDeviceShaderIntegerDotProductProperties(Printer &p, std::string name, const VkPhysicalDeviceShaderIntegerDotProductProperties &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(77); p.PrintKeyBool("integerDotProduct8BitUnsignedAccelerated", static_cast(obj.integerDotProduct8BitUnsignedAccelerated)); p.PrintKeyBool("integerDotProduct8BitSignedAccelerated", static_cast(obj.integerDotProduct8BitSignedAccelerated)); p.PrintKeyBool("integerDotProduct8BitMixedSignednessAccelerated", static_cast(obj.integerDotProduct8BitMixedSignednessAccelerated)); p.PrintKeyBool("integerDotProduct4x8BitPackedUnsignedAccelerated", static_cast(obj.integerDotProduct4x8BitPackedUnsignedAccelerated)); p.PrintKeyBool("integerDotProduct4x8BitPackedSignedAccelerated", static_cast(obj.integerDotProduct4x8BitPackedSignedAccelerated)); p.PrintKeyBool("integerDotProduct4x8BitPackedMixedSignednessAccelerated", static_cast(obj.integerDotProduct4x8BitPackedMixedSignednessAccelerated)); p.PrintKeyBool("integerDotProduct16BitUnsignedAccelerated", static_cast(obj.integerDotProduct16BitUnsignedAccelerated)); p.PrintKeyBool("integerDotProduct16BitSignedAccelerated", static_cast(obj.integerDotProduct16BitSignedAccelerated)); p.PrintKeyBool("integerDotProduct16BitMixedSignednessAccelerated", static_cast(obj.integerDotProduct16BitMixedSignednessAccelerated)); p.PrintKeyBool("integerDotProduct32BitUnsignedAccelerated", static_cast(obj.integerDotProduct32BitUnsignedAccelerated)); p.PrintKeyBool("integerDotProduct32BitSignedAccelerated", static_cast(obj.integerDotProduct32BitSignedAccelerated)); p.PrintKeyBool("integerDotProduct32BitMixedSignednessAccelerated", static_cast(obj.integerDotProduct32BitMixedSignednessAccelerated)); p.PrintKeyBool("integerDotProduct64BitUnsignedAccelerated", static_cast(obj.integerDotProduct64BitUnsignedAccelerated)); p.PrintKeyBool("integerDotProduct64BitSignedAccelerated", static_cast(obj.integerDotProduct64BitSignedAccelerated)); p.PrintKeyBool("integerDotProduct64BitMixedSignednessAccelerated", static_cast(obj.integerDotProduct64BitMixedSignednessAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating8BitUnsignedAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating8BitUnsignedAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating8BitSignedAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating8BitSignedAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating16BitUnsignedAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating16BitUnsignedAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating16BitSignedAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating16BitSignedAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating32BitUnsignedAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating32BitUnsignedAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating32BitSignedAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating32BitSignedAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating64BitUnsignedAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating64BitUnsignedAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating64BitSignedAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating64BitSignedAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated)); } void DumpVkPhysicalDeviceShaderLongVectorFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceShaderLongVectorFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(10); p.PrintKeyBool("longVector", static_cast(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(obj.shaderMaximalReconvergence)); } void DumpVkPhysicalDeviceShaderModuleIdentifierFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(22); p.PrintKeyBool("shaderModuleIdentifier", static_cast(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(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(obj.shaderQuadControl)); } void DumpVkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR( Printer &p, std::string name, const VkPhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(32); p.PrintKeyBool("shaderRelaxedExtendedInstruction", static_cast(obj.shaderRelaxedExtendedInstruction)); } void DumpVkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceShaderReplicatedCompositesFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(26); p.PrintKeyBool("shaderReplicatedComposites", static_cast(obj.shaderReplicatedComposites)); } void DumpVkPhysicalDeviceShaderSubgroupExtendedTypesFeatures(Printer &p, std::string name, const VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(27); p.PrintKeyBool("shaderSubgroupExtendedTypes", static_cast(obj.shaderSubgroupExtendedTypes)); } void DumpVkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceShaderSubgroupPartitionedFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(25); p.PrintKeyBool("shaderSubgroupPartitioned", static_cast(obj.shaderSubgroupPartitioned)); } void DumpVkPhysicalDeviceShaderSubgroupRotateFeatures(Printer &p, std::string name, const VkPhysicalDeviceShaderSubgroupRotateFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(29); p.PrintKeyBool("shaderSubgroupRotate", static_cast(obj.shaderSubgroupRotate)); p.PrintKeyBool("shaderSubgroupRotateClustered", static_cast(obj.shaderSubgroupRotateClustered)); } void DumpVkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR( Printer &p, std::string name, const VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(32); p.PrintKeyBool("shaderSubgroupUniformControlFlow", static_cast(obj.shaderSubgroupUniformControlFlow)); } void DumpVkPhysicalDeviceShaderTerminateInvocationFeatures(Printer &p, std::string name, const VkPhysicalDeviceShaderTerminateInvocationFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(25); p.PrintKeyBool("shaderTerminateInvocation", static_cast(obj.shaderTerminateInvocation)); } void DumpVkPhysicalDeviceShaderTileImageFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceShaderTileImageFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(32); p.PrintKeyBool("shaderTileImageColorReadAccess", static_cast(obj.shaderTileImageColorReadAccess)); p.PrintKeyBool("shaderTileImageDepthReadAccess", static_cast(obj.shaderTileImageDepthReadAccess)); p.PrintKeyBool("shaderTileImageStencilReadAccess", static_cast(obj.shaderTileImageStencilReadAccess)); } void DumpVkPhysicalDeviceShaderTileImagePropertiesEXT(Printer &p, std::string name, const VkPhysicalDeviceShaderTileImagePropertiesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(48); p.PrintKeyBool("shaderTileImageCoherentReadAccelerated", static_cast(obj.shaderTileImageCoherentReadAccelerated)); p.PrintKeyBool("shaderTileImageReadSampleFromPixelRateInvocation", static_cast(obj.shaderTileImageReadSampleFromPixelRateInvocation)); p.PrintKeyBool("shaderTileImageReadFromHelperInvocation", static_cast(obj.shaderTileImageReadFromHelperInvocation)); } void DumpVkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT( Printer &p, std::string name, const VkPhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(31); p.PrintKeyBool("shaderUniformBufferUnsizedArray", static_cast(obj.shaderUniformBufferUnsizedArray)); } void DumpVkPhysicalDeviceShaderUntypedPointersFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceShaderUntypedPointersFeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(21); p.PrintKeyBool("shaderUntypedPointers", static_cast(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(obj.residencyStandard2DBlockShape)); p.PrintKeyBool("residencyStandard2DMultisampleBlockShape", static_cast(obj.residencyStandard2DMultisampleBlockShape)); p.PrintKeyBool("residencyStandard3DBlockShape", static_cast(obj.residencyStandard3DBlockShape)); p.PrintKeyBool("residencyAlignedMipSize", static_cast(obj.residencyAlignedMipSize)); p.PrintKeyBool("residencyNonResidentStrict", static_cast(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(obj.quadOperationsInAllStages)); } void DumpVkPhysicalDeviceSubgroupSizeControlFeatures(Printer &p, std::string name, const VkPhysicalDeviceSubgroupSizeControlFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(20); p.PrintKeyBool("subgroupSizeControl", static_cast(obj.subgroupSizeControl)); p.PrintKeyBool("computeFullSubgroups", static_cast(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(obj.subpassMergeFeedback)); } void DumpVkPhysicalDeviceSwapchainMaintenance1FeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceSwapchainMaintenance1FeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(21); p.PrintKeyBool("swapchainMaintenance1", static_cast(obj.swapchainMaintenance1)); } void DumpVkPhysicalDeviceSynchronization2Features(Printer &p, std::string name, const VkPhysicalDeviceSynchronization2Features &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(16); p.PrintKeyBool("synchronization2", static_cast(obj.synchronization2)); } void DumpVkPhysicalDeviceTexelBufferAlignmentFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(20); p.PrintKeyBool("texelBufferAlignment", static_cast(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(obj.storageTexelBufferOffsetSingleTexelAlignment)); p.PrintKeyValue("uniformTexelBufferOffsetAlignmentBytes", to_hex_str(p, obj.uniformTexelBufferOffsetAlignmentBytes)); p.PrintKeyBool("uniformTexelBufferOffsetSingleTexelAlignment", static_cast(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(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(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(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(obj.transformFeedback)); p.PrintKeyBool("geometryStreams", static_cast(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(obj.transformFeedbackQueries)); p.PrintKeyBool("transformFeedbackStreamsLinesTriangles", static_cast(obj.transformFeedbackStreamsLinesTriangles)); p.PrintKeyBool("transformFeedbackRasterizationStreamSelect", static_cast(obj.transformFeedbackRasterizationStreamSelect)); p.PrintKeyBool("transformFeedbackDraw", static_cast(obj.transformFeedbackDraw)); } void DumpVkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceUnifiedImageLayoutsFeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(24); p.PrintKeyBool("unifiedImageLayouts", static_cast(obj.unifiedImageLayouts)); p.PrintKeyBool("unifiedImageLayoutsVideo", static_cast(obj.unifiedImageLayoutsVideo)); } void DumpVkPhysicalDeviceUniformBufferStandardLayoutFeatures(Printer &p, std::string name, const VkPhysicalDeviceUniformBufferStandardLayoutFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(27); p.PrintKeyBool("uniformBufferStandardLayout", static_cast(obj.uniformBufferStandardLayout)); } void DumpVkPhysicalDeviceVariablePointersFeatures(Printer &p, std::string name, const VkPhysicalDeviceVariablePointersFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(29); p.PrintKeyBool("variablePointersStorageBuffer", static_cast(obj.variablePointersStorageBuffer)); p.PrintKeyBool("variablePointers", static_cast(obj.variablePointers)); } void DumpVkPhysicalDeviceVertexAttributeDivisorFeatures(Printer &p, std::string name, const VkPhysicalDeviceVertexAttributeDivisorFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(38); p.PrintKeyBool("vertexAttributeInstanceRateDivisor", static_cast(obj.vertexAttributeInstanceRateDivisor)); p.PrintKeyBool("vertexAttributeInstanceRateZeroDivisor", static_cast(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(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(obj.vertexAttributeRobustness)); } void DumpVkPhysicalDeviceVertexInputDynamicStateFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(23); p.PrintKeyBool("vertexInputDynamicState", static_cast(obj.vertexInputDynamicState)); } void DumpVkPhysicalDeviceVideoDecodeVP9FeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceVideoDecodeVP9FeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(14); p.PrintKeyBool("videoDecodeVP9", static_cast(obj.videoDecodeVP9)); } void DumpVkPhysicalDeviceVideoEncodeAV1FeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceVideoEncodeAV1FeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(14); p.PrintKeyBool("videoEncodeAV1", static_cast(obj.videoEncodeAV1)); } void DumpVkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(23); p.PrintKeyBool("videoEncodeIntraRefresh", static_cast(obj.videoEncodeIntraRefresh)); } void DumpVkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(26); p.PrintKeyBool("videoEncodeQuantizationMap", static_cast(obj.videoEncodeQuantizationMap)); } void DumpVkPhysicalDeviceVideoMaintenance1FeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceVideoMaintenance1FeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(17); p.PrintKeyBool("videoMaintenance1", static_cast(obj.videoMaintenance1)); } void DumpVkPhysicalDeviceVideoMaintenance2FeaturesKHR(Printer &p, std::string name, const VkPhysicalDeviceVideoMaintenance2FeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(17); p.PrintKeyBool("videoMaintenance2", static_cast(obj.videoMaintenance2)); } void DumpVkPhysicalDeviceVulkan11Features(Printer &p, std::string name, const VkPhysicalDeviceVulkan11Features &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(34); p.PrintKeyBool("storageBuffer16BitAccess", static_cast(obj.storageBuffer16BitAccess)); p.PrintKeyBool("uniformAndStorageBuffer16BitAccess", static_cast(obj.uniformAndStorageBuffer16BitAccess)); p.PrintKeyBool("storagePushConstant16", static_cast(obj.storagePushConstant16)); p.PrintKeyBool("storageInputOutput16", static_cast(obj.storageInputOutput16)); p.PrintKeyBool("multiview", static_cast(obj.multiview)); p.PrintKeyBool("multiviewGeometryShader", static_cast(obj.multiviewGeometryShader)); p.PrintKeyBool("multiviewTessellationShader", static_cast(obj.multiviewTessellationShader)); p.PrintKeyBool("variablePointersStorageBuffer", static_cast(obj.variablePointersStorageBuffer)); p.PrintKeyBool("variablePointers", static_cast(obj.variablePointers)); p.PrintKeyBool("protectedMemory", static_cast(obj.protectedMemory)); p.PrintKeyBool("samplerYcbcrConversion", static_cast(obj.samplerYcbcrConversion)); p.PrintKeyBool("shaderDrawParameters", static_cast(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(obj.deviceLUIDValid)); p.PrintKeyValue("subgroupSize", obj.subgroupSize); DumpVkShaderStageFlags(p, "subgroupSupportedStages", obj.subgroupSupportedStages); DumpVkSubgroupFeatureFlags(p, "subgroupSupportedOperations", obj.subgroupSupportedOperations); p.PrintKeyBool("subgroupQuadOperationsInAllStages", static_cast(obj.subgroupQuadOperationsInAllStages)); DumpVkPointClippingBehavior(p, "pointClippingBehavior", obj.pointClippingBehavior); p.PrintKeyValue("maxMultiviewViewCount", obj.maxMultiviewViewCount); p.PrintKeyValue("maxMultiviewInstanceIndex", obj.maxMultiviewInstanceIndex); p.PrintKeyBool("protectedNoFault", static_cast(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(obj.samplerMirrorClampToEdge)); p.PrintKeyBool("drawIndirectCount", static_cast(obj.drawIndirectCount)); p.PrintKeyBool("storageBuffer8BitAccess", static_cast(obj.storageBuffer8BitAccess)); p.PrintKeyBool("uniformAndStorageBuffer8BitAccess", static_cast(obj.uniformAndStorageBuffer8BitAccess)); p.PrintKeyBool("storagePushConstant8", static_cast(obj.storagePushConstant8)); p.PrintKeyBool("shaderBufferInt64Atomics", static_cast(obj.shaderBufferInt64Atomics)); p.PrintKeyBool("shaderSharedInt64Atomics", static_cast(obj.shaderSharedInt64Atomics)); p.PrintKeyBool("shaderFloat16", static_cast(obj.shaderFloat16)); p.PrintKeyBool("shaderInt8", static_cast(obj.shaderInt8)); p.PrintKeyBool("descriptorIndexing", static_cast(obj.descriptorIndexing)); p.PrintKeyBool("shaderInputAttachmentArrayDynamicIndexing", static_cast(obj.shaderInputAttachmentArrayDynamicIndexing)); p.PrintKeyBool("shaderUniformTexelBufferArrayDynamicIndexing", static_cast(obj.shaderUniformTexelBufferArrayDynamicIndexing)); p.PrintKeyBool("shaderStorageTexelBufferArrayDynamicIndexing", static_cast(obj.shaderStorageTexelBufferArrayDynamicIndexing)); p.PrintKeyBool("shaderUniformBufferArrayNonUniformIndexing", static_cast(obj.shaderUniformBufferArrayNonUniformIndexing)); p.PrintKeyBool("shaderSampledImageArrayNonUniformIndexing", static_cast(obj.shaderSampledImageArrayNonUniformIndexing)); p.PrintKeyBool("shaderStorageBufferArrayNonUniformIndexing", static_cast(obj.shaderStorageBufferArrayNonUniformIndexing)); p.PrintKeyBool("shaderStorageImageArrayNonUniformIndexing", static_cast(obj.shaderStorageImageArrayNonUniformIndexing)); p.PrintKeyBool("shaderInputAttachmentArrayNonUniformIndexing", static_cast(obj.shaderInputAttachmentArrayNonUniformIndexing)); p.PrintKeyBool("shaderUniformTexelBufferArrayNonUniformIndexing", static_cast(obj.shaderUniformTexelBufferArrayNonUniformIndexing)); p.PrintKeyBool("shaderStorageTexelBufferArrayNonUniformIndexing", static_cast(obj.shaderStorageTexelBufferArrayNonUniformIndexing)); p.PrintKeyBool("descriptorBindingUniformBufferUpdateAfterBind", static_cast(obj.descriptorBindingUniformBufferUpdateAfterBind)); p.PrintKeyBool("descriptorBindingSampledImageUpdateAfterBind", static_cast(obj.descriptorBindingSampledImageUpdateAfterBind)); p.PrintKeyBool("descriptorBindingStorageImageUpdateAfterBind", static_cast(obj.descriptorBindingStorageImageUpdateAfterBind)); p.PrintKeyBool("descriptorBindingStorageBufferUpdateAfterBind", static_cast(obj.descriptorBindingStorageBufferUpdateAfterBind)); p.PrintKeyBool("descriptorBindingUniformTexelBufferUpdateAfterBind", static_cast(obj.descriptorBindingUniformTexelBufferUpdateAfterBind)); p.PrintKeyBool("descriptorBindingStorageTexelBufferUpdateAfterBind", static_cast(obj.descriptorBindingStorageTexelBufferUpdateAfterBind)); p.PrintKeyBool("descriptorBindingUpdateUnusedWhilePending", static_cast(obj.descriptorBindingUpdateUnusedWhilePending)); p.PrintKeyBool("descriptorBindingPartiallyBound", static_cast(obj.descriptorBindingPartiallyBound)); p.PrintKeyBool("descriptorBindingVariableDescriptorCount", static_cast(obj.descriptorBindingVariableDescriptorCount)); p.PrintKeyBool("runtimeDescriptorArray", static_cast(obj.runtimeDescriptorArray)); p.PrintKeyBool("samplerFilterMinmax", static_cast(obj.samplerFilterMinmax)); p.PrintKeyBool("scalarBlockLayout", static_cast(obj.scalarBlockLayout)); p.PrintKeyBool("imagelessFramebuffer", static_cast(obj.imagelessFramebuffer)); p.PrintKeyBool("uniformBufferStandardLayout", static_cast(obj.uniformBufferStandardLayout)); p.PrintKeyBool("shaderSubgroupExtendedTypes", static_cast(obj.shaderSubgroupExtendedTypes)); p.PrintKeyBool("separateDepthStencilLayouts", static_cast(obj.separateDepthStencilLayouts)); p.PrintKeyBool("hostQueryReset", static_cast(obj.hostQueryReset)); p.PrintKeyBool("timelineSemaphore", static_cast(obj.timelineSemaphore)); p.PrintKeyBool("bufferDeviceAddress", static_cast(obj.bufferDeviceAddress)); p.PrintKeyBool("bufferDeviceAddressCaptureReplay", static_cast(obj.bufferDeviceAddressCaptureReplay)); p.PrintKeyBool("bufferDeviceAddressMultiDevice", static_cast(obj.bufferDeviceAddressMultiDevice)); p.PrintKeyBool("vulkanMemoryModel", static_cast(obj.vulkanMemoryModel)); p.PrintKeyBool("vulkanMemoryModelDeviceScope", static_cast(obj.vulkanMemoryModelDeviceScope)); p.PrintKeyBool("vulkanMemoryModelAvailabilityVisibilityChains", static_cast(obj.vulkanMemoryModelAvailabilityVisibilityChains)); p.PrintKeyBool("shaderOutputViewportIndex", static_cast(obj.shaderOutputViewportIndex)); p.PrintKeyBool("shaderOutputLayer", static_cast(obj.shaderOutputLayer)); p.PrintKeyBool("subgroupBroadcastDynamicId", static_cast(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(obj.shaderSignedZeroInfNanPreserveFloat16)); p.PrintKeyBool("shaderSignedZeroInfNanPreserveFloat32", static_cast(obj.shaderSignedZeroInfNanPreserveFloat32)); p.PrintKeyBool("shaderSignedZeroInfNanPreserveFloat64", static_cast(obj.shaderSignedZeroInfNanPreserveFloat64)); p.PrintKeyBool("shaderDenormPreserveFloat16", static_cast(obj.shaderDenormPreserveFloat16)); p.PrintKeyBool("shaderDenormPreserveFloat32", static_cast(obj.shaderDenormPreserveFloat32)); p.PrintKeyBool("shaderDenormPreserveFloat64", static_cast(obj.shaderDenormPreserveFloat64)); p.PrintKeyBool("shaderDenormFlushToZeroFloat16", static_cast(obj.shaderDenormFlushToZeroFloat16)); p.PrintKeyBool("shaderDenormFlushToZeroFloat32", static_cast(obj.shaderDenormFlushToZeroFloat32)); p.PrintKeyBool("shaderDenormFlushToZeroFloat64", static_cast(obj.shaderDenormFlushToZeroFloat64)); p.PrintKeyBool("shaderRoundingModeRTEFloat16", static_cast(obj.shaderRoundingModeRTEFloat16)); p.PrintKeyBool("shaderRoundingModeRTEFloat32", static_cast(obj.shaderRoundingModeRTEFloat32)); p.PrintKeyBool("shaderRoundingModeRTEFloat64", static_cast(obj.shaderRoundingModeRTEFloat64)); p.PrintKeyBool("shaderRoundingModeRTZFloat16", static_cast(obj.shaderRoundingModeRTZFloat16)); p.PrintKeyBool("shaderRoundingModeRTZFloat32", static_cast(obj.shaderRoundingModeRTZFloat32)); p.PrintKeyBool("shaderRoundingModeRTZFloat64", static_cast(obj.shaderRoundingModeRTZFloat64)); p.PrintKeyValue("maxUpdateAfterBindDescriptorsInAllPools", obj.maxUpdateAfterBindDescriptorsInAllPools); p.PrintKeyBool("shaderUniformBufferArrayNonUniformIndexingNative", static_cast(obj.shaderUniformBufferArrayNonUniformIndexingNative)); p.PrintKeyBool("shaderSampledImageArrayNonUniformIndexingNative", static_cast(obj.shaderSampledImageArrayNonUniformIndexingNative)); p.PrintKeyBool("shaderStorageBufferArrayNonUniformIndexingNative", static_cast(obj.shaderStorageBufferArrayNonUniformIndexingNative)); p.PrintKeyBool("shaderStorageImageArrayNonUniformIndexingNative", static_cast(obj.shaderStorageImageArrayNonUniformIndexingNative)); p.PrintKeyBool("shaderInputAttachmentArrayNonUniformIndexingNative", static_cast(obj.shaderInputAttachmentArrayNonUniformIndexingNative)); p.PrintKeyBool("robustBufferAccessUpdateAfterBind", static_cast(obj.robustBufferAccessUpdateAfterBind)); p.PrintKeyBool("quadDivergentImplicitLod", static_cast(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(obj.independentResolveNone)); p.PrintKeyBool("independentResolve", static_cast(obj.independentResolve)); p.PrintKeyBool("filterMinmaxSingleComponentFormats", static_cast(obj.filterMinmaxSingleComponentFormats)); p.PrintKeyBool("filterMinmaxImageComponentMapping", static_cast(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(obj.robustImageAccess)); p.PrintKeyBool("inlineUniformBlock", static_cast(obj.inlineUniformBlock)); p.PrintKeyBool("descriptorBindingInlineUniformBlockUpdateAfterBind", static_cast(obj.descriptorBindingInlineUniformBlockUpdateAfterBind)); p.PrintKeyBool("pipelineCreationCacheControl", static_cast(obj.pipelineCreationCacheControl)); p.PrintKeyBool("privateData", static_cast(obj.privateData)); p.PrintKeyBool("shaderDemoteToHelperInvocation", static_cast(obj.shaderDemoteToHelperInvocation)); p.PrintKeyBool("shaderTerminateInvocation", static_cast(obj.shaderTerminateInvocation)); p.PrintKeyBool("subgroupSizeControl", static_cast(obj.subgroupSizeControl)); p.PrintKeyBool("computeFullSubgroups", static_cast(obj.computeFullSubgroups)); p.PrintKeyBool("synchronization2", static_cast(obj.synchronization2)); p.PrintKeyBool("textureCompressionASTC_HDR", static_cast(obj.textureCompressionASTC_HDR)); p.PrintKeyBool("shaderZeroInitializeWorkgroupMemory", static_cast(obj.shaderZeroInitializeWorkgroupMemory)); p.PrintKeyBool("dynamicRendering", static_cast(obj.dynamicRendering)); p.PrintKeyBool("shaderIntegerDotProduct", static_cast(obj.shaderIntegerDotProduct)); p.PrintKeyBool("maintenance4", static_cast(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(obj.integerDotProduct8BitUnsignedAccelerated)); p.PrintKeyBool("integerDotProduct8BitSignedAccelerated", static_cast(obj.integerDotProduct8BitSignedAccelerated)); p.PrintKeyBool("integerDotProduct8BitMixedSignednessAccelerated", static_cast(obj.integerDotProduct8BitMixedSignednessAccelerated)); p.PrintKeyBool("integerDotProduct4x8BitPackedUnsignedAccelerated", static_cast(obj.integerDotProduct4x8BitPackedUnsignedAccelerated)); p.PrintKeyBool("integerDotProduct4x8BitPackedSignedAccelerated", static_cast(obj.integerDotProduct4x8BitPackedSignedAccelerated)); p.PrintKeyBool("integerDotProduct4x8BitPackedMixedSignednessAccelerated", static_cast(obj.integerDotProduct4x8BitPackedMixedSignednessAccelerated)); p.PrintKeyBool("integerDotProduct16BitUnsignedAccelerated", static_cast(obj.integerDotProduct16BitUnsignedAccelerated)); p.PrintKeyBool("integerDotProduct16BitSignedAccelerated", static_cast(obj.integerDotProduct16BitSignedAccelerated)); p.PrintKeyBool("integerDotProduct16BitMixedSignednessAccelerated", static_cast(obj.integerDotProduct16BitMixedSignednessAccelerated)); p.PrintKeyBool("integerDotProduct32BitUnsignedAccelerated", static_cast(obj.integerDotProduct32BitUnsignedAccelerated)); p.PrintKeyBool("integerDotProduct32BitSignedAccelerated", static_cast(obj.integerDotProduct32BitSignedAccelerated)); p.PrintKeyBool("integerDotProduct32BitMixedSignednessAccelerated", static_cast(obj.integerDotProduct32BitMixedSignednessAccelerated)); p.PrintKeyBool("integerDotProduct64BitUnsignedAccelerated", static_cast(obj.integerDotProduct64BitUnsignedAccelerated)); p.PrintKeyBool("integerDotProduct64BitSignedAccelerated", static_cast(obj.integerDotProduct64BitSignedAccelerated)); p.PrintKeyBool("integerDotProduct64BitMixedSignednessAccelerated", static_cast(obj.integerDotProduct64BitMixedSignednessAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating8BitUnsignedAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating8BitUnsignedAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating8BitSignedAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating8BitSignedAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating16BitUnsignedAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating16BitUnsignedAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating16BitSignedAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating16BitSignedAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating32BitUnsignedAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating32BitUnsignedAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating32BitSignedAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating32BitSignedAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating64BitUnsignedAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating64BitUnsignedAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating64BitSignedAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating64BitSignedAccelerated)); p.PrintKeyBool("integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated", static_cast(obj.integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated)); p.PrintKeyValue("storageTexelBufferOffsetAlignmentBytes", to_hex_str(p, obj.storageTexelBufferOffsetAlignmentBytes)); p.PrintKeyBool("storageTexelBufferOffsetSingleTexelAlignment", static_cast(obj.storageTexelBufferOffsetSingleTexelAlignment)); p.PrintKeyValue("uniformTexelBufferOffsetAlignmentBytes", to_hex_str(p, obj.uniformTexelBufferOffsetAlignmentBytes)); p.PrintKeyBool("uniformTexelBufferOffsetSingleTexelAlignment", static_cast(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(obj.globalPriorityQuery)); p.PrintKeyBool("shaderSubgroupRotate", static_cast(obj.shaderSubgroupRotate)); p.PrintKeyBool("shaderSubgroupRotateClustered", static_cast(obj.shaderSubgroupRotateClustered)); p.PrintKeyBool("shaderFloatControls2", static_cast(obj.shaderFloatControls2)); p.PrintKeyBool("shaderExpectAssume", static_cast(obj.shaderExpectAssume)); p.PrintKeyBool("rectangularLines", static_cast(obj.rectangularLines)); p.PrintKeyBool("bresenhamLines", static_cast(obj.bresenhamLines)); p.PrintKeyBool("smoothLines", static_cast(obj.smoothLines)); p.PrintKeyBool("stippledRectangularLines", static_cast(obj.stippledRectangularLines)); p.PrintKeyBool("stippledBresenhamLines", static_cast(obj.stippledBresenhamLines)); p.PrintKeyBool("stippledSmoothLines", static_cast(obj.stippledSmoothLines)); p.PrintKeyBool("vertexAttributeInstanceRateDivisor", static_cast(obj.vertexAttributeInstanceRateDivisor)); p.PrintKeyBool("vertexAttributeInstanceRateZeroDivisor", static_cast(obj.vertexAttributeInstanceRateZeroDivisor)); p.PrintKeyBool("indexTypeUint8", static_cast(obj.indexTypeUint8)); p.PrintKeyBool("dynamicRenderingLocalRead", static_cast(obj.dynamicRenderingLocalRead)); p.PrintKeyBool("maintenance5", static_cast(obj.maintenance5)); p.PrintKeyBool("maintenance6", static_cast(obj.maintenance6)); p.PrintKeyBool("pipelineProtectedAccess", static_cast(obj.pipelineProtectedAccess)); p.PrintKeyBool("pipelineRobustness", static_cast(obj.pipelineRobustness)); p.PrintKeyBool("hostImageCopy", static_cast(obj.hostImageCopy)); p.PrintKeyBool("pushDescriptor", static_cast(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(obj.supportsNonZeroFirstInstance)); p.PrintKeyValue("maxPushDescriptors", obj.maxPushDescriptors); p.PrintKeyBool("dynamicRenderingLocalReadDepthStencilAttachments", static_cast(obj.dynamicRenderingLocalReadDepthStencilAttachments)); p.PrintKeyBool("dynamicRenderingLocalReadMultisampledAttachments", static_cast(obj.dynamicRenderingLocalReadMultisampledAttachments)); p.PrintKeyBool("earlyFragmentMultisampleCoverageAfterSampleCounting", static_cast(obj.earlyFragmentMultisampleCoverageAfterSampleCounting)); p.PrintKeyBool("earlyFragmentSampleMaskTestBeforeSampleCounting", static_cast(obj.earlyFragmentSampleMaskTestBeforeSampleCounting)); p.PrintKeyBool("depthStencilSwizzleOneSupport", static_cast(obj.depthStencilSwizzleOneSupport)); p.PrintKeyBool("polygonModePointSize", static_cast(obj.polygonModePointSize)); p.PrintKeyBool("nonStrictSinglePixelWideLinesUseParallelogram", static_cast(obj.nonStrictSinglePixelWideLinesUseParallelogram)); p.PrintKeyBool("nonStrictWideLinesUseParallelogram", static_cast(obj.nonStrictWideLinesUseParallelogram)); p.PrintKeyBool("blockTexelViewCompatibleMultipleLayers", static_cast(obj.blockTexelViewCompatibleMultipleLayers)); p.PrintKeyValue("maxCombinedImageSamplerDescriptorCount", obj.maxCombinedImageSamplerDescriptorCount); p.PrintKeyBool("fragmentShadingRateClampCombinerInputs", static_cast(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(obj.identicalMemoryTypeRequirements)); } void DumpVkPhysicalDeviceVulkanMemoryModelFeatures(Printer &p, std::string name, const VkPhysicalDeviceVulkanMemoryModelFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(45); p.PrintKeyBool("vulkanMemoryModel", static_cast(obj.vulkanMemoryModel)); p.PrintKeyBool("vulkanMemoryModelDeviceScope", static_cast(obj.vulkanMemoryModelDeviceScope)); p.PrintKeyBool("vulkanMemoryModelAvailabilityVisibilityChains", static_cast(obj.vulkanMemoryModelAvailabilityVisibilityChains)); } void DumpVkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR( Printer &p, std::string name, const VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(46); p.PrintKeyBool("workgroupMemoryExplicitLayout", static_cast(obj.workgroupMemoryExplicitLayout)); p.PrintKeyBool("workgroupMemoryExplicitLayoutScalarBlockLayout", static_cast(obj.workgroupMemoryExplicitLayoutScalarBlockLayout)); p.PrintKeyBool("workgroupMemoryExplicitLayout8BitAccess", static_cast(obj.workgroupMemoryExplicitLayout8BitAccess)); p.PrintKeyBool("workgroupMemoryExplicitLayout16BitAccess", static_cast(obj.workgroupMemoryExplicitLayout16BitAccess)); } void DumpVkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(21); p.PrintKeyBool("ycbcr2plane444Formats", static_cast(obj.ycbcr2plane444Formats)); } void DumpVkPhysicalDeviceYcbcrImageArraysFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceYcbcrImageArraysFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(16); p.PrintKeyBool("ycbcrImageArrays", static_cast(obj.ycbcrImageArrays)); } void DumpVkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT(Printer &p, std::string name, const VkPhysicalDeviceZeroInitializeDeviceMemoryFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(26); p.PrintKeyBool("zeroInitializeDeviceMemory", static_cast(obj.zeroInitializeDeviceMemory)); } void DumpVkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures(Printer &p, std::string name, const VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(35); p.PrintKeyBool("shaderZeroInitializeWorkgroupMemory", static_cast(obj.shaderZeroInitializeWorkgroupMemory)); } void DumpVkPresentTimingSurfaceCapabilitiesEXT(Printer &p, std::string name, const VkPresentTimingSurfaceCapabilitiesEXT &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(30); p.PrintKeyBool("presentTimingSupported", static_cast(obj.presentTimingSupported)); p.PrintKeyBool("presentAtAbsoluteTimeSupported", static_cast(obj.presentAtAbsoluteTimeSupported)); p.PrintKeyBool("presentAtRelativeTimeSupported", static_cast(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(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(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(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(obj.presentId2Supported)); } void DumpVkSurfaceCapabilitiesPresentWait2KHR(Printer &p, std::string name, const VkSurfaceCapabilitiesPresentWait2KHR &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(21); p.PrintKeyBool("presentWait2Supported", static_cast(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(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(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(obj.prefersGopRemainingFrames)); p.PrintKeyBool("requiresGopRemainingFrames", static_cast(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(obj.expectDyadicTemporalLayerPattern)); p.PrintKeyValue("minQp", obj.minQp); p.PrintKeyValue("maxQp", obj.maxQp); p.PrintKeyBool("prefersGopRemainingFrames", static_cast(obj.prefersGopRemainingFrames)); p.PrintKeyBool("requiresGopRemainingFrames", static_cast(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(obj.expectDyadicTemporalSubLayerPattern)); p.PrintKeyValue("minQp", obj.minQp); p.PrintKeyValue("maxQp", obj.maxQp); p.PrintKeyBool("prefersGopRemainingFrames", static_cast(obj.prefersGopRemainingFrames)); p.PrintKeyBool("requiresGopRemainingFrames", static_cast(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(obj.partitionIndependentIntraRefreshRegions)); p.PrintKeyBool("nonRectangularIntraRefreshRegions", static_cast(obj.nonRectangularIntraRefreshRegions)); } void DumpVkVideoEncodeProfileRgbConversionInfoVALVE(Printer &p, std::string name, const VkVideoEncodeProfileRgbConversionInfoVALVE &obj) { ObjectWrapper object{p, name}; p.SetMinKeyWidth(26); p.PrintKeyBool("performEncodeRgbConversion", static_cast(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 VkPhysicalDeviceHostImageCopyProperties_pCopySrcLayouts; std::vector VkPhysicalDeviceHostImageCopyProperties_pCopyDstLayouts; VkPhysicalDeviceIDProperties PhysicalDeviceIDProperties{}; VkPhysicalDeviceInlineUniformBlockProperties PhysicalDeviceInlineUniformBlockProperties{}; VkPhysicalDeviceLayeredApiPropertiesListKHR PhysicalDeviceLayeredApiPropertiesListKHR{}; std::vector 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 VkPhysicalDeviceVulkan14Properties_pCopySrcLayouts; std::vector 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 chain_members{}; if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceAccelerationStructurePropertiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceBlendOperationAdvancedPropertiesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceComputeShaderDerivativesPropertiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceConservativeRasterizationPropertiesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDeviceCopyMemoryIndirectPropertiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDeviceDepthStencilResolveProperties)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceDescriptorBufferDensityMapPropertiesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceDescriptorBufferPropertiesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DESCRIPTOR_HEAP_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceDescriptorHeapPropertiesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DESCRIPTOR_HEAP_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDeviceDescriptorIndexingProperties)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceDeviceGeneratedCommandsPropertiesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDeviceDriverProperties)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceDrmPropertiesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceExtendedDynamicState3PropertiesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceExternalMemoryHostPropertiesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_DEVICE_FAULT_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDeviceFloatControlsProperties)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDeviceFragmentDensityMapOffsetPropertiesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceFragmentDensityMapPropertiesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceFragmentShaderBarycentricPropertiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceFragmentShadingRatePropertiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&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(&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(&PhysicalDeviceInlineUniformBlockProperties)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_7_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceLayeredApiPropertiesListKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_LEGACY_VERTEX_ATTRIBUTES_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDeviceLineRasterizationProperties)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_10_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&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(&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(&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(&PhysicalDeviceMaintenance6Properties)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_7_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceMaintenance7PropertiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_9_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceMaintenance9PropertiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MAP_MEMORY_PLACED_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceMapMemoryPlacedPropertiesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME) || gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MEMORY_DECOMPRESSION_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceMemoryDecompressionPropertiesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MESH_SHADER_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceMeshShaderPropertiesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MULTI_DRAW_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDeviceMultiviewProperties)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_NESTED_COMMAND_BUFFER_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceNestedCommandBufferPropertiesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_OPACITY_MICROMAP_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceOpacityMicromapPropertiesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PCI_BUS_INFO_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDevicePCIBusInfoPropertiesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDevicePerformanceQueryPropertiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PIPELINE_BINARY_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&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(&PhysicalDevicePointClippingProperties)); #ifdef VK_ENABLE_BETA_EXTENSIONS if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDevicePortabilitySubsetPropertiesKHR)); #endif // VK_ENABLE_BETA_EXTENSIONS if (gpu.api_version == VK_API_VERSION_1_1 || show_promoted_structs) chain_members.push_back(reinterpret_cast(&PhysicalDeviceProtectedMemoryProperties)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDevicePushDescriptorProperties)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME)) chain_members.push_back( reinterpret_cast(&PhysicalDeviceRayTracingInvocationReorderPropertiesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceRayTracingPipelinePropertiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_ROBUSTNESS_2_EXTENSION_NAME) || gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_ROBUSTNESS_2_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceRobustness2PropertiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDeviceSamplerFilterMinmaxProperties)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_ABORT_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDeviceShaderIntegerDotProductProperties)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_LONG_VECTOR_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceShaderLongVectorPropertiesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_MODULE_IDENTIFIER_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceShaderModuleIdentifierPropertiesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_OBJECT_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceShaderObjectPropertiesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceShaderTileImagePropertiesEXT)); if (gpu.api_version == VK_API_VERSION_1_1 || show_promoted_structs) chain_members.push_back(reinterpret_cast(&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(&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(&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(&PhysicalDeviceTimelineSemaphoreProperties)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDeviceVertexAttributeDivisorProperties)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceVertexAttributeDivisorPropertiesEXT)); if ((gpu.api_version >= VK_API_VERSION_1_2)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceVulkan11Properties)); if ((gpu.api_version >= VK_API_VERSION_1_2)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceVulkan12Properties)); if ((gpu.api_version >= VK_API_VERSION_1_3)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceVulkan13Properties)); if ((gpu.api_version >= VK_API_VERSION_1_4)) chain_members.push_back(reinterpret_cast(&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 &chain, AppInstance &inst, AppGpu &gpu, bool show_promoted_structs) { chain = std::unique_ptr(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 &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 chain_members{}; if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MEMORY_BUDGET_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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 &chain, AppGpu &gpu) { chain = std::unique_ptr(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 &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 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(&PhysicalDevice16BitStorageFeatures)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_4444_FORMATS_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDevice8BitStorageFeatures)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceASTCDecodeFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceAccelerationStructureFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DEVICE_ADDRESS_BINDING_REPORT_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceAddressBindingReportFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_EXTENSION_NAME)) chain_members.push_back( reinterpret_cast(&PhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceBlendOperationAdvancedFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_BORDER_COLOR_SWIZZLE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDeviceBufferDeviceAddressFeatures)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceBufferDeviceAddressFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDeviceComputeShaderDerivativesFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceConditionalRenderingFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceCooperativeMatrixFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_COPY_MEMORY_INDIRECT_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceCopyMemoryIndirectFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceCustomBorderColorFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_CUSTOM_RESOLVE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceCustomResolveFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DEPTH_BIAS_CONTROL_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceDepthBiasControlFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DEPTH_CLAMP_CONTROL_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDeviceDepthClampZeroOneFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceDepthClipControlFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceDepthClipEnableFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceDescriptorBufferFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DESCRIPTOR_HEAP_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDeviceDescriptorIndexingFeatures)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_DEVICE_ADDRESS_COMMANDS_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceDeviceAddressCommandsFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceDeviceGeneratedCommandsFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&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(&PhysicalDeviceDynamicRenderingLocalReadFeatures)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME)) chain_members.push_back( reinterpret_cast(&PhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceExtendedDynamicState2FeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceExtendedDynamicState3FeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceExtendedDynamicStateFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_DEVICE_FAULT_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceFaultFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_DEVICE_FAULT_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceFaultFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceFragmentDensityMap2FeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&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(&PhysicalDeviceFragmentShaderBarycentricFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceFragmentShaderInterlockFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceFragmentShadingRateFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_FRAME_BOUNDARY_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDeviceGlobalPriorityQueryFeatures)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&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(&PhysicalDeviceHostQueryResetFeatures)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceImage2DViewOf3DFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceImageCompressionControlFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME)) chain_members.push_back( reinterpret_cast(&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(&PhysicalDeviceImageRobustnessFeatures)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_IMAGE_SLICED_VIEW_OF_3D_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceImageSlicedViewOf3DFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_IMAGE_VIEW_MIN_LOD_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&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(&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(&PhysicalDeviceInlineUniformBlockFeatures)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_INTERNALLY_SYNCHRONIZED_QUEUES_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceInternallySynchronizedQueuesFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_LEGACY_DITHERING_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceLegacyDitheringFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_LEGACY_VERTEX_ATTRIBUTES_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDeviceLineRasterizationFeatures)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_10_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&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(&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(&PhysicalDeviceMaintenance6Features)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_7_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceMaintenance7FeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_8_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceMaintenance8FeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_9_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceMaintenance9FeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MAP_MEMORY_PLACED_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceMapMemoryPlacedFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME) || gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MEMORY_DECOMPRESSION_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceMemoryDecompressionFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceMemoryPriorityFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MESH_SHADER_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceMeshShaderFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MULTI_DRAW_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceMultiDrawFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_EXTENSION_NAME)) chain_members.push_back( reinterpret_cast(&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(&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(&PhysicalDeviceMutableDescriptorTypeFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_NESTED_COMMAND_BUFFER_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceNestedCommandBufferFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceNonSeamlessCubeMapFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_OPACITY_MICROMAP_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceOpacityMicromapFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDevicePageableDeviceLocalMemoryFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDevicePerformanceQueryFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PIPELINE_BINARY_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDevicePipelineCreationCacheControlFeatures)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDevicePipelineExecutablePropertiesFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&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(&PhysicalDevicePipelineRobustnessFeatures)); #ifdef VK_ENABLE_BETA_EXTENSIONS if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PORTABILITY_SUBSET_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDevicePortabilitySubsetFeaturesKHR)); #endif // VK_ENABLE_BETA_EXTENSIONS if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PRESENT_ID_2_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDevicePresentId2FeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PRESENT_ID_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDevicePresentModeFifoLatestReadyFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PRESENT_TIMING_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDevicePresentTimingFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PRESENT_WAIT_2_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDevicePresentWait2FeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PRESENT_WAIT_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDevicePresentWaitFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDevicePrimitiveTopologyListRestartFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDevicePrivateDataFeatures)); if (gpu.api_version == VK_API_VERSION_1_1 || show_promoted_structs) chain_members.push_back(reinterpret_cast(&PhysicalDeviceProtectedMemoryFeatures)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceProvokingVertexFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_RGBA10X6_FORMATS_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_RAY_QUERY_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceRayQueryFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceRayTracingInvocationReorderFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceRayTracingMaintenance1FeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceRayTracingPipelineFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceRayTracingPositionFetchFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_ROBUSTNESS_2_EXTENSION_NAME) || gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_ROBUSTNESS_2_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&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(&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(&PhysicalDeviceSeparateDepthStencilLayoutsFeatures)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_64BIT_INDEXING_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceShader64BitIndexingFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_ABORT_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceShaderAbortFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceShaderAtomicFloat2FeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDeviceShaderAtomicInt64Features)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_BFLOAT16_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceShaderBfloat16FeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_CLOCK_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceShaderClockFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_CONSTANT_DATA_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDeviceShaderDemoteToHelperInvocationFeatures)); if (gpu.api_version == VK_API_VERSION_1_1 || show_promoted_structs) chain_members.push_back(reinterpret_cast(&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(&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(&PhysicalDeviceShaderFloat16Int8Features)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_FLOAT8_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDeviceShaderFloatControls2Features)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_FMA_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceShaderFmaFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDeviceShaderIntegerDotProductFeatures)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_LONG_VECTOR_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceShaderLongVectorFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_MAXIMAL_RECONVERGENCE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceShaderMaximalReconvergenceFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_MODULE_IDENTIFIER_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceShaderModuleIdentifierFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_OBJECT_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceShaderObjectFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_QUAD_CONTROL_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceShaderQuadControlFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_RELAXED_EXTENDED_INSTRUCTION_EXTENSION_NAME)) chain_members.push_back( reinterpret_cast(&PhysicalDeviceShaderRelaxedExtendedInstructionFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_REPLICATED_COMPOSITES_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDeviceShaderSubgroupExtendedTypesFeatures)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDeviceShaderSubgroupRotateFeatures)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME)) chain_members.push_back( reinterpret_cast(&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(&PhysicalDeviceShaderTerminateInvocationFeatures)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceShaderTileImageFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SHADER_UNIFORM_BUFFER_UNSIZED_ARRAY_EXTENSION_NAME)) chain_members.push_back( reinterpret_cast(&PhysicalDeviceShaderUniformBufferUnsizedArrayFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHADER_UNTYPED_POINTERS_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDeviceSubgroupSizeControlFeatures)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_SUBPASS_MERGE_FEEDBACK_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&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(&PhysicalDeviceSynchronization2Features)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceTexelBufferAlignmentFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_TEXTURE_COMPRESSION_ASTC_3D_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&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(&PhysicalDeviceTimelineSemaphoreFeatures)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceTransformFeedbackFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_UNIFIED_IMAGE_LAYOUTS_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&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(&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(&PhysicalDeviceVertexAttributeDivisorFeatures)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_VERTEX_ATTRIBUTE_ROBUSTNESS_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceVertexAttributeRobustnessFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceVertexInputDynamicStateFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_VP9_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceVideoDecodeVP9FeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_AV1_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceVideoEncodeAV1FeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceVideoEncodeIntraRefreshFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceVideoEncodeQuantizationMapFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_MAINTENANCE_1_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceVideoMaintenance1FeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_MAINTENANCE_2_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceVideoMaintenance2FeaturesKHR)); if ((gpu.api_version >= VK_API_VERSION_1_2)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceVulkan11Features)); if ((gpu.api_version >= VK_API_VERSION_1_2)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceVulkan12Features)); if ((gpu.api_version >= VK_API_VERSION_1_3)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceVulkan13Features)); if ((gpu.api_version >= VK_API_VERSION_1_4)) chain_members.push_back(reinterpret_cast(&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(&PhysicalDeviceVulkanMemoryModelFeatures)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME)) chain_members.push_back( reinterpret_cast(&PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PhysicalDeviceYcbcrImageArraysFeaturesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_ZERO_INITIALIZE_DEVICE_MEMORY_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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(&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 &chain, AppGpu &gpu, bool show_promoted_structs) { chain = std::unique_ptr(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 &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 chain_members{}; if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_PRESENT_TIMING_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&PresentTimingSurfaceCapabilitiesEXT)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&SharedPresentSurfaceCapabilitiesKHR)); #ifdef VK_USE_PLATFORM_WIN32_KHR if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_FULL_SCREEN_EXCLUSIVE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&SurfaceCapabilitiesFullScreenExclusiveEXT)); #endif // VK_USE_PLATFORM_WIN32_KHR if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PRESENT_ID_2_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&SurfaceCapabilitiesPresentId2KHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_PRESENT_WAIT_2_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&SurfaceCapabilitiesPresentWait2KHR)); if (inst.CheckExtensionEnabled(VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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 &chain, AppInstance &inst, AppGpu &gpu) { chain = std::unique_ptr(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 &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 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(&FormatProperties3)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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 &chain, AppGpu &gpu) { chain = std::unique_ptr(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 &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 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(&QueueFamilyGlobalPriorityProperties)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_MAINTENANCE_9_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&QueueFamilyOwnershipTransferPropertiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_QUEUE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&QueueFamilyQueryResultStatusPropertiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_QUEUE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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 &chain, AppGpu &gpu) { chain = std::unique_ptr(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 &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 chain_members{}; if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&VideoDecodeAV1ProfileInfoKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&VideoDecodeH264ProfileInfoKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&VideoDecodeH265ProfileInfoKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&VideoDecodeUsageInfoKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_VP9_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&VideoDecodeVP9ProfileInfoKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_AV1_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&VideoEncodeAV1ProfileInfoKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_H264_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&VideoEncodeH264ProfileInfoKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_H265_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&VideoEncodeH265ProfileInfoKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_VALVE_VIDEO_ENCODE_RGB_CONVERSION_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&VideoEncodeProfileRgbConversionInfoVALVE)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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 &chain, AppGpu &gpu) { chain = std::unique_ptr(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 &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 chain_members{}; if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&VideoDecodeAV1CapabilitiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&VideoDecodeCapabilitiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&VideoDecodeH264CapabilitiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&VideoDecodeH265CapabilitiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_DECODE_VP9_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&VideoDecodeVP9CapabilitiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_AV1_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&VideoEncodeAV1CapabilitiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&VideoEncodeAV1QuantizationMapCapabilitiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&VideoEncodeCapabilitiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_H264_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&VideoEncodeH264CapabilitiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&VideoEncodeH264QuantizationMapCapabilitiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_H265_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&VideoEncodeH265CapabilitiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&VideoEncodeH265QuantizationMapCapabilitiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_INTRA_REFRESH_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&VideoEncodeIntraRefreshCapabilitiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&VideoEncodeQuantizationMapCapabilitiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_VALVE_VIDEO_ENCODE_RGB_CONVERSION_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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 &chain, AppGpu &gpu) { chain = std::unique_ptr(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 &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 chain_members{}; if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&VideoFormatAV1QuantizationMapPropertiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&VideoFormatH265QuantizationMapPropertiesKHR)); if (gpu.CheckPhysicalDeviceExtensionIncluded(VK_KHR_VIDEO_ENCODE_QUANTIZATION_MAP_EXTENSION_NAME)) chain_members.push_back(reinterpret_cast(&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 &chain, AppGpu &gpu) { chain = std::unique_ptr(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 &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(0), static_cast(184)}, FormatRange{VK_API_VERSION_1_1, nullptr, static_cast(1000156000), static_cast(1000156033)}, FormatRange{0, VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME, static_cast(1000156000), static_cast(1000156033)}, FormatRange{VK_API_VERSION_1_3, nullptr, static_cast(1000330000), static_cast(1000330003)}, FormatRange{0, VK_EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME, static_cast(1000330000), static_cast(1000330003)}, FormatRange{VK_API_VERSION_1_3, nullptr, static_cast(1000340000), static_cast(1000340001)}, FormatRange{0, VK_EXT_4444_FORMATS_EXTENSION_NAME, static_cast(1000340000), static_cast(1000340001)}, FormatRange{VK_API_VERSION_1_3, nullptr, static_cast(1000066000), static_cast(1000066013)}, FormatRange{0, VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME, static_cast(1000066000), static_cast(1000066013)}, FormatRange{VK_API_VERSION_1_4, nullptr, static_cast(1000470000), static_cast(1000470001)}, FormatRange{0, VK_KHR_MAINTENANCE_5_EXTENSION_NAME, static_cast(1000470000), static_cast(1000470001)}, FormatRange{0, VK_IMG_FORMAT_PVRTC_EXTENSION_NAME, static_cast(1000054000), static_cast(1000054007)}, FormatRange{0, VK_EXT_TEXTURE_COMPRESSION_ASTC_3D_EXTENSION_NAME, static_cast(1000288000), static_cast(1000288029)}, FormatRange{0, VK_ARM_TENSORS_EXTENSION_NAME, static_cast(1000460000), static_cast(1000460003)}, FormatRange{0, VK_NV_OPTICAL_FLOW_EXTENSION_NAME, static_cast(1000464000), static_cast(1000464000)}, FormatRange{0, VK_ARM_FORMAT_PACK_EXTENSION_NAME, static_cast(1000609000), static_cast(1000609013)}, }; bool is_video_format_same(const VkVideoFormatPropertiesKHR &format_a, const VkVideoFormatPropertiesKHR &format_b) { auto a = reinterpret_cast(&format_a); auto b = reinterpret_cast(&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(a) + sizeof(VkBaseInStructure), reinterpret_cast(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(a) + sizeof(VkBaseInStructure), reinterpret_cast(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(a) + sizeof(VkBaseInStructure), reinterpret_cast(b) + sizeof(VkBaseInStructure), sizeof(VkVideoFormatH265QuantizationMapPropertiesKHR) - sizeof(VkBaseInStructure)) == 0; break; case VK_STRUCTURE_TYPE_VIDEO_FORMAT_QUANTIZATION_MAP_PROPERTIES_KHR: same = same && memcmp(reinterpret_cast(a) + sizeof(VkBaseInStructure), reinterpret_cast(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> enumerate_supported_video_profiles(AppGpu &gpu) { std::vector> result{}; struct ChromaSubsamplingInfo { VkVideoChromaSubsamplingFlagsKHR value; const char *name; }; const std::vector 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 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(&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(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 { auto profile_info_chain = std::make_unique(); 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 { auto capabilities_chain = std::make_unique(); 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 { auto format_properties_chain = std::make_unique(); 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 { auto format_properties_chain = std::make_unique(); 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 { auto profile_info_chain = std::make_unique(); 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 { auto capabilities_chain = std::make_unique(); 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 { auto format_properties_chain = std::make_unique(); 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 { auto format_properties_chain = std::make_unique(); 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 { auto profile_info_chain = std::make_unique(); 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 { auto capabilities_chain = std::make_unique(); 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 { auto format_properties_chain = std::make_unique(); 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 { auto format_properties_chain = std::make_unique(); 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 { auto profile_info_chain = std::make_unique(); 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 { auto capabilities_chain = std::make_unique(); 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 { auto format_properties_chain = std::make_unique(); 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 { auto format_properties_chain = std::make_unique(); 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 { auto profile_info_chain = std::make_unique(); 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 { auto capabilities_chain = std::make_unique(); 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 { auto format_properties_chain = std::make_unique(); 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 { auto format_properties_chain = std::make_unique(); 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( 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 { auto format_properties_chain = std::make_unique(); 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( 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 { auto format_properties_chain = std::make_unique(); 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 { auto profile_info_chain = std::make_unique(); 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 { auto capabilities_chain = std::make_unique(); 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 { auto format_properties_chain = std::make_unique(); 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 { auto format_properties_chain = std::make_unique(); 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( 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 { auto format_properties_chain = std::make_unique(); 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( 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 { auto format_properties_chain = std::make_unique(); 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 { auto profile_info_chain = std::make_unique(); 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 { auto capabilities_chain = std::make_unique(); 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 { auto format_properties_chain = std::make_unique(); 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 { auto format_properties_chain = std::make_unique(); 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( 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 { auto format_properties_chain = std::make_unique(); 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( 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 { auto format_properties_chain = std::make_unique(); 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; }