VK_EXT_image_compression_control_swapchain

This commit is contained in:
Cam Mannett
2025-03-29 08:36:55 +00:00
committed by Baldur Karlsson
parent 8d340d5fe4
commit c3c1afbfdd
7 changed files with 43 additions and 8 deletions
+1 -1
View File
@@ -65,6 +65,7 @@ Maintainers can update this file by updating vk.xml in this folder and running `
* `VK_EXT_host_query_reset`
* `VK_EXT_image_2d_view_of_3d`
* `VK_EXT_image_compression_control`
* `VK_EXT_image_compression_control_swapchain`
* `VK_EXT_image_robustness`
* `VK_EXT_image_view_min_lod`
* `VK_EXT_index_type_uint8`
@@ -285,7 +286,6 @@ The portability subset is only relevant on mac, which is not a supported platfor
* `VK_EXT_external_memory_host`
* `VK_EXT_external_memory_metal`
* `VK_EXT_host_image_copy`
* `VK_EXT_image_compression_control_swapchain`
* `VK_EXT_image_drm_format_modifier`
* `VK_EXT_image_sliced_view_of_3d`
* `VK_EXT_layer_settings`
+2
View File
@@ -1484,6 +1484,7 @@ DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceHostQueryResetFeatures);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceIDProperties);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceImage2DViewOf3DFeaturesEXT);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceImageCompressionControlFeaturesEXT);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceImageFormatInfo2);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceImagelessFramebufferFeatures);
DECLARE_REFLECTION_STRUCT(VkPhysicalDeviceImageRobustnessFeatures);
@@ -1946,6 +1947,7 @@ DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceHostQueryResetFeatures);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceIDProperties);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceImage2DViewOf3DFeaturesEXT);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceImageCompressionControlFeaturesEXT);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceImageFormatInfo2);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceImagelessFramebufferFeatures);
DECLARE_DESERIALISE_TYPE(VkPhysicalDeviceImageRobustnessFeatures);
+4
View File
@@ -1156,6 +1156,10 @@ static const VkExtensionProperties supportedExtensions[] = {
VK_EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME,
VK_EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION,
},
{
VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME,
VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_SPEC_VERSION,
},
{
VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME,
VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION,
+4 -2
View File
@@ -547,7 +547,8 @@
DeclExt(KHR_shader_subgroup_uniform_control_flow); \
DeclExt(KHR_ray_tracing_maintenance1); \
DeclExt(KHR_maintenance5); \
DeclExt(EXT_image_compression_control);
DeclExt(EXT_image_compression_control); \
DeclExt(EXT_image_compression_control_swapchain);
// for simplicity and since the check itself is platform agnostic,
// these aren't protected in platform defines
@@ -684,7 +685,8 @@
CheckExt(KHR_shader_subgroup_uniform_control_flow, VKXX); \
CheckExt(KHR_ray_tracing_maintenance1, VKXX); \
CheckExt(KHR_maintenance5, VKXX); \
CheckExt(EXT_image_compression_control, VKXX);
CheckExt(EXT_image_compression_control, VKXX); \
CheckExt(EXT_image_compression_control_swapchain, VKXX);
#define HookInitVulkanInstanceExts_PhysDev() \
HookInitExtension(KHR_surface, GetPhysicalDeviceSurfaceSupportKHR); \
+2 -1
View File
@@ -335,6 +335,8 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
VkPhysicalDeviceImage2DViewOf3DFeaturesEXT); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT, \
VkPhysicalDeviceImageCompressionControlFeaturesEXT); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT, \
VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2, \
VkPhysicalDeviceImageFormatInfo2); \
COPY_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT, \
@@ -1093,7 +1095,6 @@ static void AppendModifiedChainedStruct(byte *&tempMem, VkStruct *outputStruct,
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_FEATURES_MESA: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ALIGNMENT_CONTROL_PROPERTIES_MESA: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM: \
case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM: \
+22 -4
View File
@@ -723,6 +723,10 @@ SERIALISE_VK_HANDLES();
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT, \
VkPhysicalDeviceImageCompressionControlFeaturesEXT) \
\
/* VK_EXT_image_compression_control_swapchain */ \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT, \
VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT) \
\
/* VK_EXT_image_robustness */ \
PNEXT_STRUCT(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES, \
VkPhysicalDeviceImageRobustnessFeatures) \
@@ -1679,10 +1683,6 @@ SERIALISE_VK_HANDLES();
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT) \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT) \
\
/* VK_EXT_image_compression_control_swapchain */ \
PNEXT_UNSUPPORTED( \
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT) \
\
/* VK_EXT_image_drm_format_modifier */ \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT) \
PNEXT_UNSUPPORTED(VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT) \
@@ -13008,6 +13008,23 @@ void Deserialise(const VkPhysicalDeviceImageCompressionControlFeaturesEXT &el)
DeserialiseNext(el.pNext);
}
template <typename SerialiserType>
void DoSerialise(SerialiserType &ser, VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT &el)
{
RDCASSERT(ser.IsReading() ||
el.sType ==
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT);
SerialiseNext(ser, el.sType, el.pNext);
SERIALISE_MEMBER(imageCompressionControlSwapchain);
}
template <>
void Deserialise(const VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT &el)
{
DeserialiseNext(el.pNext);
}
// pNext structs - always have deserialise for the next chain
INSTANTIATE_SERIALISE_TYPE(VkAccelerationStructureBuildGeometryInfoKHR);
INSTANTIATE_SERIALISE_TYPE(VkAccelerationStructureBuildSizesInfoKHR);
@@ -13239,6 +13256,7 @@ INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceHostQueryResetFeatures);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceIDProperties);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceImage2DViewOf3DFeaturesEXT);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceImageCompressionControlFeaturesEXT);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceImageFormatInfo2);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceImagelessFramebufferFeatures);
INSTANTIATE_SERIALISE_TYPE(VkPhysicalDeviceImageRobustnessFeatures);
@@ -3480,6 +3480,14 @@ bool WrappedVulkan::Serialise_vkCreateDevice(SerialiserType &ser, VkPhysicalDevi
CHECK_PHYS_EXT_FEATURE(imageCompressionControl);
}
END_PHYS_EXT_CHECK();
BEGIN_PHYS_EXT_CHECK(
VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT,
VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT);
{
CHECK_PHYS_EXT_FEATURE(imageCompressionControlSwapchain);
}
END_PHYS_EXT_CHECK();
}
if(availFeatures.depthClamp)