diff --git a/renderdoc/driver/vulkan/vk_common.cpp b/renderdoc/driver/vulkan/vk_common.cpp index 3ece8db83..970eec887 100644 --- a/renderdoc/driver/vulkan/vk_common.cpp +++ b/renderdoc/driver/vulkan/vk_common.cpp @@ -575,7 +575,7 @@ FilterMode MakeFilterMode(VkFilter f) { case VK_FILTER_NEAREST: return FilterMode::Point; case VK_FILTER_LINEAR: return FilterMode::Linear; - case VK_FILTER_CUBIC_IMG: return FilterMode::Cubic; + case VK_FILTER_CUBIC_EXT: return FilterMode::Cubic; default: break; } diff --git a/renderdoc/driver/vulkan/vk_common.h b/renderdoc/driver/vulkan/vk_common.h index af9681ce8..139d061b6 100644 --- a/renderdoc/driver/vulkan/vk_common.h +++ b/renderdoc/driver/vulkan/vk_common.h @@ -716,6 +716,7 @@ DECLARE_REFLECTION_STRUCT(VkExternalMemoryImageCreateInfoNV); DECLARE_REFLECTION_STRUCT(VkExternalSemaphoreProperties); DECLARE_REFLECTION_STRUCT(VkFenceCreateInfo); DECLARE_REFLECTION_STRUCT(VkFenceGetFdInfoKHR); +DECLARE_REFLECTION_STRUCT(VkFilterCubicImageViewImageFormatPropertiesEXT); DECLARE_REFLECTION_STRUCT(VkFormatProperties2); DECLARE_REFLECTION_STRUCT(VkFramebufferAttachmentImageInfoKHR); DECLARE_REFLECTION_STRUCT(VkFramebufferAttachmentsCreateInfoKHR); @@ -777,6 +778,7 @@ DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceHostQueryResetFeaturesEXT); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceIDProperties); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceImageFormatInfo2); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceImagelessFramebufferFeaturesKHR); +DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceImageViewImageFormatInfoEXT); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceIndexTypeUint8FeaturesEXT); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceLineRasterizationFeaturesEXT); DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceLineRasterizationPropertiesEXT); @@ -973,6 +975,7 @@ DECLARE_DESERIALISE_TYPE(VkExternalMemoryImageCreateInfoNV); DECLARE_DESERIALISE_TYPE(VkExternalSemaphoreProperties); DECLARE_DESERIALISE_TYPE(VkFenceCreateInfo); DECLARE_DESERIALISE_TYPE(VkFenceGetFdInfoKHR); +DECLARE_DESERIALISE_TYPE(VkFilterCubicImageViewImageFormatPropertiesEXT); DECLARE_DESERIALISE_TYPE(VkFormatProperties2); DECLARE_DESERIALISE_TYPE(VkFramebufferAttachmentImageInfoKHR); DECLARE_DESERIALISE_TYPE(VkFramebufferAttachmentsCreateInfoKHR); @@ -1032,6 +1035,7 @@ DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceHostQueryResetFeaturesEXT); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceIDProperties); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceImageFormatInfo2); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceImagelessFramebufferFeaturesKHR); +DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceImageViewImageFormatInfoEXT); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceIndexTypeUint8FeaturesEXT); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceLineRasterizationFeaturesEXT); DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceLineRasterizationPropertiesEXT); diff --git a/renderdoc/driver/vulkan/vk_core.cpp b/renderdoc/driver/vulkan/vk_core.cpp index 90f1a323b..e09286830 100644 --- a/renderdoc/driver/vulkan/vk_core.cpp +++ b/renderdoc/driver/vulkan/vk_core.cpp @@ -682,6 +682,9 @@ static const VkExtensionProperties supportedExtensions[] = { { VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME, VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION, }, + { + VK_EXT_FILTER_CUBIC_EXTENSION_NAME, VK_EXT_FILTER_CUBIC_SPEC_VERSION, + }, { VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME, VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION, }, @@ -810,11 +813,12 @@ static const VkExtensionProperties supportedExtensions[] = { { VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME, VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION, }, -#ifdef VK_IMG_format_pvrtc + { + VK_IMG_FILTER_CUBIC_EXTENSION_NAME, VK_IMG_FILTER_CUBIC_SPEC_VERSION, + }, { VK_IMG_FORMAT_PVRTC_EXTENSION_NAME, VK_IMG_FORMAT_PVRTC_SPEC_VERSION, }, -#endif { VK_KHR_16BIT_STORAGE_EXTENSION_NAME, VK_KHR_16BIT_STORAGE_SPEC_VERSION, }, diff --git a/renderdoc/driver/vulkan/vk_serialise.cpp b/renderdoc/driver/vulkan/vk_serialise.cpp index 99ca17f0a..30e868ec7 100644 --- a/renderdoc/driver/vulkan/vk_serialise.cpp +++ b/renderdoc/driver/vulkan/vk_serialise.cpp @@ -515,6 +515,12 @@ SERIALISE_VK_HANDLES(); /* VK_EXT_display_surface_counter */ \ PNEXT_STRUCT(VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT, VkSurfaceCapabilities2EXT) \ \ + /* VK_EXT_filter_cubic */ \ + PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT, \ + VkPhysicalDeviceImageViewImageFormatInfoEXT) \ + PNEXT_STRUCT(VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT, \ + VkFilterCubicImageViewImageFormatPropertiesEXT) \ + \ /* VK_EXT_fragment_density_map */ \ PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT, \ VkPhysicalDeviceFragmentDensityMapFeaturesEXT) \ @@ -962,10 +968,6 @@ SERIALISE_VK_HANDLES(); PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT) \ PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT) \ \ - /* VK_EXT_filter_cubic */ \ - PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT) \ - PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT) \ - \ /* VK_EXT_texture_compression_astc_hdr */ \ PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT) \ \ @@ -4105,6 +4107,39 @@ void Deserialise(const VkRenderPassSampleLocationsBeginInfoEXT &el) delete[] el.pPostSubpassSampleLocations; } +template +void DoSerialise(SerialiserType &ser, VkPhysicalDeviceImageViewImageFormatInfoEXT &el) +{ + RDCASSERT(ser.IsReading() || + el.sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT); + SerialiseNext(ser, el.sType, el.pNext); + + SERIALISE_MEMBER(imageViewType); +} + +template <> +void Deserialise(const VkPhysicalDeviceImageViewImageFormatInfoEXT &el) +{ + DeserialiseNext(el.pNext); +} + +template +void DoSerialise(SerialiserType &ser, VkFilterCubicImageViewImageFormatPropertiesEXT &el) +{ + RDCASSERT(ser.IsReading() || + el.sType == VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT); + SerialiseNext(ser, el.sType, el.pNext); + + SERIALISE_MEMBER(filterCubic); + SERIALISE_MEMBER(filterCubicMinmax); +} + +template <> +void Deserialise(const VkFilterCubicImageViewImageFormatPropertiesEXT &el) +{ + DeserialiseNext(el.pNext); +} + template void DoSerialise(SerialiserType &ser, VkPhysicalDeviceFragmentDensityMapFeaturesEXT &el) { @@ -7262,6 +7297,7 @@ INSTANTIATE_SERIALISE_TYPE(VkExternalMemoryImageCreateInfoNV); INSTANTIATE_SERIALISE_TYPE(VkExternalSemaphoreProperties); INSTANTIATE_SERIALISE_TYPE(VkFenceCreateInfo); INSTANTIATE_SERIALISE_TYPE(VkFenceGetFdInfoKHR); +INSTANTIATE_SERIALISE_TYPE(VkFilterCubicImageViewImageFormatPropertiesEXT); INSTANTIATE_SERIALISE_TYPE(VkFormatProperties2); INSTANTIATE_SERIALISE_TYPE(VkFramebufferAttachmentImageInfoKHR); INSTANTIATE_SERIALISE_TYPE(VkFramebufferAttachmentsCreateInfoKHR); @@ -7322,6 +7358,7 @@ INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceHostQueryResetFeaturesEXT); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceIDProperties); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceImageFormatInfo2); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceImagelessFramebufferFeaturesKHR); +INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceImageViewImageFormatInfoEXT); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceIndexTypeUint8FeaturesEXT); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceLineRasterizationFeaturesEXT); INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceLineRasterizationPropertiesEXT);