diff --git a/vulkan/context.cpp b/vulkan/context.cpp index 544a6461..f990bcde 100644 --- a/vulkan/context.cpp +++ b/vulkan/context.cpp @@ -1417,6 +1417,18 @@ bool Context::create_device(VkPhysicalDevice gpu_, VkSurfaceKHR surface, ext.supports_push_descriptor = true; } + if (has_extension(VK_EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME)) + { + enabled_extensions.push_back(VK_EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME); + ADD_CHAIN(ext.image_compression_control_features, IMAGE_COMPRESSION_CONTROL_FEATURES_EXT); + } + + if (has_extension(VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME)) + { + enabled_extensions.push_back(VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME); + ADD_CHAIN(ext.image_compression_control_swapchain_features, IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT); + } + if (ext.device_api_core_version >= VK_API_VERSION_1_3) { ext.supports_store_op_none = true; diff --git a/vulkan/context.hpp b/vulkan/context.hpp index 6f2e8eb0..6025074d 100644 --- a/vulkan/context.hpp +++ b/vulkan/context.hpp @@ -101,6 +101,8 @@ struct DeviceFeatures VkPhysicalDeviceMeshShaderPropertiesEXT mesh_shader_properties = {}; VkPhysicalDeviceIndexTypeUint8FeaturesEXT index_type_uint8_features = {}; VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT rgba10x6_formats_features = {}; + VkPhysicalDeviceImageCompressionControlFeaturesEXT image_compression_control_features = {}; + VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT image_compression_control_swapchain_features = {}; // Vendor VkPhysicalDeviceComputeShaderDerivativesFeaturesNV compute_shader_derivative_features = {};