diff --git a/renderdoc/driver/vulkan/extension_support.md b/renderdoc/driver/vulkan/extension_support.md index b15198661..887a41e1f 100644 --- a/renderdoc/driver/vulkan/extension_support.md +++ b/renderdoc/driver/vulkan/extension_support.md @@ -63,6 +63,7 @@ Maintainers can update this file by updating vk.xml in this folder and running ` * `VK_EXT_post_depth_coverage` * `VK_EXT_private_data` * `VK_EXT_queue_family_foreign` +* `VK_EXT_rgba10x6_formats` * `VK_EXT_robustness2` * `VK_EXT_sample_locations` * `VK_EXT_sampler_filter_minmax` @@ -230,7 +231,6 @@ Ray tracing extensions are now standard and will likely be supported at some poi * `VK_EXT_physical_device_drm` * `VK_EXT_primitive_topology_list_restart` * `VK_EXT_provoking_vertex` -* `VK_EXT_rgba10x6_formats` * `VK_EXT_texture_compression_astc_hdr` * `VK_EXT_vertex_input_dynamic_state` diff --git a/renderdoc/driver/vulkan/vk_common.h b/renderdoc/driver/vulkan/vk_common.h index b50a98c1a..8053cf72a 100644 --- a/renderdoc/driver/vulkan/vk_common.h +++ b/renderdoc/driver/vulkan/vk_common.h @@ -974,6 +974,7 @@ DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceProperties2); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceProtectedMemoryFeatures); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceProtectedMemoryProperties); DECLARE_REFLECTION_STRUCT(VkPhysicalDevicePushDescriptorPropertiesKHR); +DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceRobustness2FeaturesEXT); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceRobustness2PropertiesEXT); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceSampleLocationsPropertiesEXT); @@ -1316,6 +1317,7 @@ DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceProperties2); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceProtectedMemoryFeatures); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceProtectedMemoryProperties); DECLARE_DESERIALISE_TYPE(VkPhysicalDevicePushDescriptorPropertiesKHR); +DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceRobustness2FeaturesEXT); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceRobustness2PropertiesEXT); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceSampleLocationsPropertiesEXT); diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index 5b7cf1aae..58659f1a4 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -996,6 +996,9 @@ static const VkExtensionProperties supportedExtensions[] = { { VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME, VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION, }, + { + VK_EXT_RGBA10X6_FORMATS_EXTENSION_NAME, VK_EXT_RGBA10X6_FORMATS_SPEC_VERSION, + }, { VK_EXT_ROBUSTNESS_2_EXTENSION_NAME, VK_EXT_ROBUSTNESS_2_SPEC_VERSION, }, diff --git a/renderdoc/driver/vulkan/vk_next_chains.cpp b/renderdoc/driver/vulkan/vk_next_chains.cpp index 7f14b2253..fe0c47ce6 100644 --- a/renderdoc/driver/vulkan/vk_next_chains.cpp +++ b/renderdoc/driver/vulkan/vk_next_chains.cpp @@ -315,6 +315,8 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct, VkPhysicalDeviceProtectedMemoryProperties); \ COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR, \ VkPhysicalDevicePushDescriptorPropertiesKHR); \ + COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT, \ + VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT); \ COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT, \ VkPhysicalDeviceRobustness2FeaturesEXT); \ COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT, \ @@ -759,7 +761,6 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct, case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR: \ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV: \ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV: \ - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT: \ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD: \ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL: \ case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV: \ diff --git a/renderdoc/driver/vulkan/vk_serialise.cpp b/renderdoc/driver/vulkan/vk_serialise.cpp index 5802dd145..1e24fe5f6 100644 --- a/renderdoc/driver/vulkan/vk_serialise.cpp +++ b/renderdoc/driver/vulkan/vk_serialise.cpp @@ -722,6 +722,10 @@ SERIALISE_VK_HANDLES(); VkDevicePrivateDataCreateInfoEXT) \ PNEXT_STRUCT(VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT, VkPrivateDataSlotCreateInfoEXT) \ \ + /* VK_EXT_rgba10x6_formats */ \ + PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT, \ + VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT) \ + \ /* VK_EXT_robustness2 */ \ PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT, \ VkPhysicalDeviceRobustness2FeaturesEXT) \ @@ -1296,9 +1300,6 @@ SERIALISE_VK_HANDLES(); PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT) \ PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT) \ \ - /* VK_EXT_rgba10x6_formats */ \ - PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT) \ - \ /* VK_EXT_texture_compression_astc_hdr */ \ PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT) \ \ @@ -6279,6 +6280,22 @@ void Deserialise(const VkPrivateDataSlotCreateInfoEXT &el) DeserialiseNext(el.pNext); } +template +void DoSerialise(SerialiserType &ser, VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT &el) +{ + RDCASSERT(ser.IsReading() || + el.sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT); + SerialiseNext(ser, el.sType, el.pNext); + + SERIALISE_MEMBER(formatRgba10x6WithoutYCbCrSampler); +} + +template <> +void Deserialise(const VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT &el) +{ + DeserialiseNext(el.pNext); +} + template void DoSerialise(SerialiserType &ser, VkPhysicalDeviceRobustness2FeaturesEXT &el) { @@ -9734,6 +9751,7 @@ INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceProperties2); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceProtectedMemoryFeatures); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceProtectedMemoryProperties); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDevicePushDescriptorPropertiesKHR); +INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceRobustness2FeaturesEXT); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceRobustness2PropertiesEXT); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceSampleLocationsPropertiesEXT); diff --git a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp index ac88080f4..2e2f113d6 100644 --- a/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp +++ b/renderdoc/driver/vulkan/wrappers/vk_device_funcs.cpp @@ -2785,6 +2785,13 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi CHECK_PHYS_EXT_FEATURE(ycbcr2plane444Formats); } END_PHYS_EXT_CHECK(); + + BEGIN_PHYS_EXT_CHECK(VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT, + VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT); + { + CHECK_PHYS_EXT_FEATURE(formatRgba10x6WithoutYCbCrSampler); + } + END_PHYS_EXT_CHECK(); } if(availFeatures.depthClamp)