diff --git a/CMakeLists.txt b/CMakeLists.txt index 87766581e..b4059b2c6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,7 @@ cmake_minimum_required(VERSION 3.22.1) # The VERSION field is generated with the "--generated-version" flag in the generate_source.py script -project(Vulkan-Tools VERSION 1.4.326) +project(Vulkan-Tools VERSION 1.4.327) # This variable enables downstream users to customize the target API # variant (e.g. Vulkan SC) diff --git a/icd/VkICD_mock_icd.json.in b/icd/VkICD_mock_icd.json.in index ed64e857b..5b86cb3e3 100644 --- a/icd/VkICD_mock_icd.json.in +++ b/icd/VkICD_mock_icd.json.in @@ -2,6 +2,6 @@ "file_format_version": "1.0.1", "ICD": { "library_path": "@JSON_LIBRARY_PATH@", - "api_version": "1.4.326" + "api_version": "1.4.327" } } \ No newline at end of file diff --git a/icd/generated/function_declarations.h b/icd/generated/function_declarations.h index ebfd4ffa6..5b6818e1b 100644 --- a/icd/generated/function_declarations.h +++ b/icd/generated/function_declarations.h @@ -336,6 +336,7 @@ static const std::unordered_map device_extension_map = { {"VK_KHR_ray_tracing_maintenance1", 1}, {"VK_KHR_shader_untyped_pointers", 1}, {"VK_EXT_global_priority_query", 1}, + {"VK_VALVE_video_encode_rgb_conversion", 1}, {"VK_EXT_image_view_min_lod", 1}, {"VK_EXT_multi_draw", 1}, {"VK_EXT_image_2d_view_of_3d", 1}, @@ -4115,6 +4116,7 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetColor + static VKAPI_ATTR void VKAPI_CALL CmdDrawMultiEXT( VkCommandBuffer commandBuffer, uint32_t drawCount, diff --git a/icd/generated/function_definitions.h b/icd/generated/function_definitions.h index b106bca4d..6c63bc209 100644 --- a/icd/generated/function_definitions.h +++ b/icd/generated/function_definitions.h @@ -6669,6 +6669,7 @@ static VKAPI_ATTR void VKAPI_CALL CmdSetColor + static VKAPI_ATTR void VKAPI_CALL CmdDrawMultiEXT( VkCommandBuffer commandBuffer, uint32_t drawCount, diff --git a/icd/generated/vk_typemap_helper.h b/icd/generated/vk_typemap_helper.h index 9f8dbbf0b..ff74424d8 100644 --- a/icd/generated/vk_typemap_helper.h +++ b/icd/generated/vk_typemap_helper.h @@ -7521,6 +7521,42 @@ template <> struct LvlSTypeMap struct LvlTypeMap { + static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_RGB_CONVERSION_FEATURES_VALVE; +}; + +template <> struct LvlSTypeMap { + typedef VkPhysicalDeviceVideoEncodeRgbConversionFeaturesVALVE Type; +}; + +// Map type VkVideoEncodeRgbConversionCapabilitiesVALVE to id VK_STRUCTURE_TYPE_VIDEO_ENCODE_RGB_CONVERSION_CAPABILITIES_VALVE +template <> struct LvlTypeMap { + static const VkStructureType kSType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_RGB_CONVERSION_CAPABILITIES_VALVE; +}; + +template <> struct LvlSTypeMap { + typedef VkVideoEncodeRgbConversionCapabilitiesVALVE Type; +}; + +// Map type VkVideoEncodeProfileRgbConversionInfoVALVE to id VK_STRUCTURE_TYPE_VIDEO_ENCODE_PROFILE_RGB_CONVERSION_INFO_VALVE +template <> struct LvlTypeMap { + static const VkStructureType kSType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_PROFILE_RGB_CONVERSION_INFO_VALVE; +}; + +template <> struct LvlSTypeMap { + typedef VkVideoEncodeProfileRgbConversionInfoVALVE Type; +}; + +// Map type VkVideoEncodeSessionRgbConversionCreateInfoVALVE to id VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_RGB_CONVERSION_CREATE_INFO_VALVE +template <> struct LvlTypeMap { + static const VkStructureType kSType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_RGB_CONVERSION_CREATE_INFO_VALVE; +}; + +template <> struct LvlSTypeMap { + typedef VkVideoEncodeSessionRgbConversionCreateInfoVALVE Type; +}; + // Map type VkPhysicalDeviceImageViewMinLodFeaturesEXT to id VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT template <> struct LvlTypeMap { static const VkStructureType kSType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT; diff --git a/scripts/known_good.json b/scripts/known_good.json index fedc04e6d..d13eaf652 100644 --- a/scripts/known_good.json +++ b/scripts/known_good.json @@ -7,7 +7,7 @@ "sub_dir": "Vulkan-Headers", "build_dir": "Vulkan-Headers/build", "install_dir": "Vulkan-Headers/build/install", - "commit": "v1.4.326" + "commit": "v1.4.327" }, { "name": "MoltenVK", @@ -56,7 +56,7 @@ "cmake_options": [ "-DLOADER_USE_UNSAFE_FILE_SEARCH=ON" ], - "commit": "v1.4.326", + "commit": "v1.4.327", "build_platforms": [ "windows", "linux", diff --git a/scripts/vulkaninfo_generator.py b/scripts/vulkaninfo_generator.py index 8d84a3169..20e408e4a 100644 --- a/scripts/vulkaninfo_generator.py +++ b/scripts/vulkaninfo_generator.py @@ -119,56 +119,65 @@ 'type': EXTENSION_TYPE_BOTH, 'holder_type': 'VkPhysicalDeviceProperties2', 'print_iterator': True, - 'can_show_promoted_structs': True}), + 'can_show_promoted_structs': True, + 'ignore_vendor_exclusion': False}), ('phys_device_mem_props2', {'extends': 'VkPhysicalDeviceMemoryProperties2', 'type': EXTENSION_TYPE_DEVICE, 'holder_type':'VkPhysicalDeviceMemoryProperties2', 'print_iterator': False, - 'can_show_promoted_structs': False}), + 'can_show_promoted_structs': False, + 'ignore_vendor_exclusion': False}), ('phys_device_features2', {'extends': 'VkPhysicalDeviceFeatures2,VkDeviceCreateInfo', 'type': EXTENSION_TYPE_DEVICE, 'holder_type': 'VkPhysicalDeviceFeatures2', 'print_iterator': True, - 'can_show_promoted_structs': True}), + 'can_show_promoted_structs': True, + 'ignore_vendor_exclusion': False}), ('surface_capabilities2', {'extends': 'VkSurfaceCapabilities2KHR', 'type': EXTENSION_TYPE_BOTH, 'holder_type': 'VkSurfaceCapabilities2KHR', 'print_iterator': True, 'can_show_promoted_structs': False, + 'ignore_vendor_exclusion': False, 'exclude': ['VkSurfacePresentScalingCapabilitiesKHR', 'VkSurfacePresentModeCompatibilityKHR']}), ('format_properties2', {'extends': 'VkFormatProperties2', 'type': EXTENSION_TYPE_DEVICE, 'holder_type':'VkFormatProperties2', 'print_iterator': True, - 'can_show_promoted_structs': False}), + 'can_show_promoted_structs': False, + 'ignore_vendor_exclusion': False}), ('queue_properties2', {'extends': 'VkQueueFamilyProperties2', 'type': EXTENSION_TYPE_DEVICE, 'holder_type': 'VkQueueFamilyProperties2', 'print_iterator': True, - 'can_show_promoted_structs': False}), + 'can_show_promoted_structs': False, + 'ignore_vendor_exclusion': False}), ('video_profile_info', {'extends': 'VkVideoProfileInfoKHR', 'type': EXTENSION_TYPE_DEVICE, 'holder_type': 'VkVideoProfileInfoKHR', 'print_iterator': True, - 'can_show_promoted_structs': False}), + 'can_show_promoted_structs': False, + 'ignore_vendor_exclusion': True}), ('video_capabilities', {'extends': 'VkVideoCapabilitiesKHR', 'type': EXTENSION_TYPE_DEVICE, 'holder_type': 'VkVideoCapabilitiesKHR', 'print_iterator': True, - 'can_show_promoted_structs': False}), + 'can_show_promoted_structs': False, + 'ignore_vendor_exclusion': True,}), ('video_format_properties', {'extends': 'VkVideoFormatPropertiesKHR', 'type': EXTENSION_TYPE_DEVICE, 'holder_type': 'VkVideoFormatPropertiesKHR', 'print_iterator': True, - 'can_show_promoted_structs': False}) + 'can_show_promoted_structs': False, + 'ignore_vendor_exclusion': True}) )) class VulkanInfoGeneratorOptions(GeneratorOptions): def __init__(self, @@ -856,16 +865,21 @@ def genType(self, typeinfo, name, alias): self.all_structures.append(VulkanStructure( name, typeinfo.elem, self.constants, self.extTypes)) + is_vendor_type = False for vendor in self.vendor_abbreviations: for node in typeinfo.elem.findall('member'): if node.get('values') is not None: if node.get('values').find(vendor) != -1: - return + is_vendor_type = True + break + if is_vendor_type: + break for key, value in EXTENSION_CATEGORIES.items(): if str(typeinfo.elem.get('structextends')).find(value.get('extends')) != -1: if value.get('exclude') is None or name not in value.get('exclude'): - self.extension_sets[key].add(name) + if not is_vendor_type or value.get('ignore_vendor_exclusion'): + self.extension_sets[key].add(name) # finds all the ranges of formats from core (1.0), core versions (1.1+), and extensions def findFormatRanges(self): diff --git a/vulkaninfo/generated/vulkaninfo.hpp b/vulkaninfo/generated/vulkaninfo.hpp index 67b47de34..750b8e32f 100644 --- a/vulkaninfo/generated/vulkaninfo.hpp +++ b/vulkaninfo/generated/vulkaninfo.hpp @@ -2910,6 +2910,108 @@ void DumpVkVideoEncodeRateControlModeFlagBitsKHR(Printer &p, std::string name, V } } +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; } @@ -5370,10 +5472,22 @@ void DumpVkVideoEncodeIntraRefreshCapabilitiesKHR(Printer &p, std::string name, 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); @@ -7894,6 +8008,7 @@ struct video_profile_info_chain { 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; @@ -7904,6 +8019,7 @@ struct video_profile_info_chain { 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)) @@ -7922,6 +8038,8 @@ struct video_profile_info_chain { 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)); @@ -7983,6 +8101,11 @@ void chain_iterator_video_profile_info(Printer &p, AppGpu &gpu, const void * pla DumpVkVideoEncodeH265ProfileInfoKHR(p, "VkVideoEncodeH265ProfileInfoKHR", *props); p.AddNewline(); } + if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_PROFILE_RGB_CONVERSION_INFO_VALVE) { + const VkVideoEncodeProfileRgbConversionInfoVALVE* props = (const VkVideoEncodeProfileRgbConversionInfoVALVE*)structure; + DumpVkVideoEncodeProfileRgbConversionInfoVALVE(p, "VkVideoEncodeProfileRgbConversionInfoVALVE", *props); + p.AddNewline(); + } if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR) { const VkVideoEncodeUsageInfoKHR* props = (const VkVideoEncodeUsageInfoKHR*)structure; DumpVkVideoEncodeUsageInfoKHR(p, "VkVideoEncodeUsageInfoKHR", *props); @@ -8017,6 +8140,7 @@ struct video_capabilities_chain { 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; @@ -8032,6 +8156,7 @@ struct video_capabilities_chain { 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)); @@ -8061,6 +8186,8 @@ struct video_capabilities_chain { 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++){ @@ -8150,6 +8277,11 @@ void chain_iterator_video_capabilities(Printer &p, AppGpu &gpu, const void * pla DumpVkVideoEncodeQuantizationMapCapabilitiesKHR(p, "VkVideoEncodeQuantizationMapCapabilitiesKHR", *props); p.AddNewline(); } + if (structure->sType == VK_STRUCTURE_TYPE_VIDEO_ENCODE_RGB_CONVERSION_CAPABILITIES_VALVE) { + const VkVideoEncodeRgbConversionCapabilitiesVALVE* props = (const VkVideoEncodeRgbConversionCapabilitiesVALVE*)structure; + DumpVkVideoEncodeRgbConversionCapabilitiesVALVE(p, "VkVideoEncodeRgbConversionCapabilitiesVALVE", *props); + p.AddNewline(); + } place = structure->pNext; } } @@ -8975,6 +9107,14 @@ std::vector> enumerate_supported_video_profiles 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; @@ -9168,6 +9308,14 @@ std::vector> enumerate_supported_video_profiles 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; @@ -9383,6 +9531,14 @@ std::vector> enumerate_supported_video_profiles 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;