diff --git a/src/broadcom/vulkan/v3dv_formats.c b/src/broadcom/vulkan/v3dv_formats.c index ccaf8f27566..6c0589a9020 100644 --- a/src/broadcom/vulkan/v3dv_formats.c +++ b/src/broadcom/vulkan/v3dv_formats.c @@ -175,6 +175,7 @@ image_format_plane_features(struct v3dv_physical_device *pdevice, } else if (vk_format == VK_FORMAT_A2B10G10R10_UNORM_PACK32 || vk_format == VK_FORMAT_A2R10G10B10_UNORM_PACK32 || vk_format == VK_FORMAT_A2B10G10R10_UINT_PACK32 || + vk_format == VK_FORMAT_A2R10G10B10_UINT_PACK32 || vk_format == VK_FORMAT_B10G11R11_UFLOAT_PACK32) { /* To comply with shaderStorageImageExtendedFormats */ flags |= VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT | @@ -302,6 +303,7 @@ buffer_format_features(VkFormat vk_format, const struct v3dv_format *v3dv_format VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT | VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT; } else if (vk_format == VK_FORMAT_A2B10G10R10_UINT_PACK32 || + vk_format == VK_FORMAT_A2R10G10B10_UINT_PACK32 || vk_format == VK_FORMAT_B10G11R11_UFLOAT_PACK32) { flags |= VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT | VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT; diff --git a/src/broadcom/vulkan/v3dv_pipeline.c b/src/broadcom/vulkan/v3dv_pipeline.c index 6a05e0a7041..fabc1c5607d 100644 --- a/src/broadcom/vulkan/v3dv_pipeline.c +++ b/src/broadcom/vulkan/v3dv_pipeline.c @@ -1394,6 +1394,7 @@ pipeline_populate_v3d_vs_key(struct v3d_vs_key *key, &vi_info->pVertexAttributeDescriptions[i]; assert(desc->location < MAX_VERTEX_ATTRIBS); if (desc->format == VK_FORMAT_B8G8R8A8_UNORM || + desc->format == VK_FORMAT_A2R10G10B10_UINT_PACK32 || desc->format == VK_FORMAT_A2R10G10B10_UNORM_PACK32) { key->va_swap_rb_mask |= 1 << (VERT_ATTRIB_GENERIC0 + desc->location); } @@ -2096,6 +2097,7 @@ pipeline_populate_graphics_key(struct v3dv_pipeline *pipeline, &vi_info->pVertexAttributeDescriptions[i]; assert(desc->location < MAX_VERTEX_ATTRIBS); if (desc->format == VK_FORMAT_B8G8R8A8_UNORM || + desc->format == VK_FORMAT_A2R10G10B10_UINT_PACK32 || desc->format == VK_FORMAT_A2R10G10B10_UNORM_PACK32) { key->va_swap_rb_mask |= 1 << (VERT_ATTRIB_GENERIC0 + desc->location); } diff --git a/src/broadcom/vulkan/v3dvx_formats.c b/src/broadcom/vulkan/v3dvx_formats.c index e8990b885e7..d5bb3cc3632 100644 --- a/src/broadcom/vulkan/v3dvx_formats.c +++ b/src/broadcom/vulkan/v3dvx_formats.c @@ -189,6 +189,7 @@ static const struct v3dv_format format_table[] = { FORMAT(A2B10G10R10_UNORM_PACK32,RGB10_A2, RGB10_A2, SWIZ_XYZW, 16, true), FORMAT(A2B10G10R10_UINT_PACK32, RGB10_A2UI, RGB10_A2UI, SWIZ_XYZW, 16, false), FORMAT(A2R10G10B10_UNORM_PACK32,RGB10_A2, RGB10_A2, SWIZ_ZYXW, 16, true), + FORMAT(A2R10G10B10_UINT_PACK32, RGB10_A2UI, RGB10_A2UI, SWIZ_ZYXW, 16, false), FORMAT(E5B9G9R9_UFLOAT_PACK32, NO, RGB9_E5, SWIZ_XYZ1, 16, true), FORMAT(B10G11R11_UFLOAT_PACK32, R11F_G11F_B10F,R11F_G11F_B10F, SWIZ_XYZ1, 16, true),