From b7ca46762f23709def04ee23cca569da2c801fae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Pi=C3=B1eiro?= Date: Sun, 2 Aug 2020 02:23:16 +0200 Subject: [PATCH] v3dv/formats: fix exposing FEATURE_UNIFORM/STORAGE_TEXEL_BUFFER_BIT If the formats are not suitable as texture type, then they can't be used as texel buffers. Gets tests like the following one: dEQP-VK.image.load_store.without_format.buffer.r32g32b32_sfloat_minalign_uniform to be properly skipped (instead of Crash on the simulator) Part-of: --- src/broadcom/vulkan/v3dv_formats.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/broadcom/vulkan/v3dv_formats.c b/src/broadcom/vulkan/v3dv_formats.c index 167d0d28350..08c27e9f26a 100644 --- a/src/broadcom/vulkan/v3dv_formats.c +++ b/src/broadcom/vulkan/v3dv_formats.c @@ -475,9 +475,11 @@ buffer_format_features(VkFormat vk_format, const struct v3dv_format *v3dv_format if (desc->layout == UTIL_FORMAT_LAYOUT_PLAIN && desc->colorspace == UTIL_FORMAT_COLORSPACE_RGB && desc->is_array) { - flags |= VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | - VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT | - VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT; + flags |= VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT; + if (v3dv_format->tex_type != TEXTURE_DATA_FORMAT_NO) { + flags |= VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT | + VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT; + } } else if (vk_format == VK_FORMAT_A2B10G10R10_UNORM_PACK32) { flags |= VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT;