From 9696df413275a40aa55d904cad557d2d9588c85b Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 4 Sep 2024 12:22:25 -0400 Subject: [PATCH] zink: store compression rate info for formats Reviewed-by: Dave Airlie Part-of: --- src/gallium/drivers/zink/zink_screen.c | 19 +++++++++++++++++++ src/gallium/drivers/zink/zink_types.h | 1 + 2 files changed, 20 insertions(+) diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c index 6c99be9e753..27972d0a2fb 100644 --- a/src/gallium/drivers/zink/zink_screen.c +++ b/src/gallium/drivers/zink/zink_screen.c @@ -2287,6 +2287,14 @@ retry: mod_props.pDrmFormatModifierProperties = mods; props.pNext = &mod_props; } + VkImageCompressionPropertiesEXT comp; + if (screen->info.have_EXT_image_compression_control) { + comp.sType = VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT; + comp.pNext = props.pNext; + comp.imageCompressionFlags = 0; + comp.imageCompressionFixedRateFlags = 0; + props.pNext = ∁ + } VkFormatProperties3 props3 = {0}; if (screen->info.have_KHR_format_feature_flags2 || screen->info.have_vulkan13) { props3.sType = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3; @@ -2310,6 +2318,17 @@ retry: screen->format_props[i].bufferFeatures = props.formatProperties.bufferFeatures; } + if (screen->info.have_EXT_image_compression_control) { + switch (comp.imageCompressionFlags) { + case VK_IMAGE_COMPRESSION_DISABLED_EXT: + screen->format_props[i].compressionRates = 0; + break; + default: + screen->format_props[i].compressionRates = comp.imageCompressionFixedRateFlags; + break; + } + } + if (screen->info.have_EXT_image_drm_format_modifier && mod_props.drmFormatModifierCount) { screen->modifier_props[i].drmFormatModifierCount = mod_props.drmFormatModifierCount; screen->modifier_props[i].pDrmFormatModifierProperties = ralloc_array(screen, VkDrmFormatModifierPropertiesEXT, mod_props.drmFormatModifierCount); diff --git a/src/gallium/drivers/zink/zink_types.h b/src/gallium/drivers/zink/zink_types.h index 7cfe0476fbe..4f1338c96b0 100644 --- a/src/gallium/drivers/zink/zink_types.h +++ b/src/gallium/drivers/zink/zink_types.h @@ -1380,6 +1380,7 @@ struct zink_format_props { VkFormatFeatureFlags2 linearTilingFeatures; VkFormatFeatureFlags2 optimalTilingFeatures; VkFormatFeatureFlags2 bufferFeatures; + VkImageCompressionFixedRateFlagsEXT compressionRates; }; struct zink_screen {