From 0ad77cbf98c3e218fc918ee9eeff7d5bb2c46c56 Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Mon, 4 Dec 2023 21:12:58 -0600 Subject: [PATCH] nvk: Don't disable non-texturable formats We're about to add int64 formats and those aren't texturable but you can use them as storage images. Part-of: --- src/nouveau/vulkan/nvk_image.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/nouveau/vulkan/nvk_image.c b/src/nouveau/vulkan/nvk_image.c index 6448d90c013..6ac99d78d49 100644 --- a/src/nouveau/vulkan/nvk_image.c +++ b/src/nouveau/vulkan/nvk_image.c @@ -26,17 +26,14 @@ nvk_get_image_plane_format_features(struct nvk_physical_device *pdev, if (p_format == PIPE_FORMAT_NONE) return 0; - if (!nil_format_supports_texturing(&pdev->info, p_format)) - return 0; - /* You can't tile a non-power-of-two */ if (!util_is_power_of_two_nonzero(util_format_get_blocksize(p_format))) return 0; - features |= VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT; - features |= VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT; - features |= VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT; - features |= VK_FORMAT_FEATURE_2_BLIT_SRC_BIT; + if (nil_format_supports_texturing(&pdev->info, p_format)) { + features |= VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT; + features |= VK_FORMAT_FEATURE_2_BLIT_SRC_BIT; + } if (nil_format_supports_filtering(&pdev->info, p_format)) { features |= VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT; @@ -75,6 +72,11 @@ nvk_get_image_plane_format_features(struct nvk_physical_device *pdev, if (p_format == PIPE_FORMAT_R32_UINT || p_format == PIPE_FORMAT_R32_SINT) features |= VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT; + if (features != 0) { + features |= VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT; + features |= VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT; + } + return features; }