util/format: Use correct pipe format for VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM.
authorBas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Sun, 24 May 2020 20:57:28 +0000 (22:57 +0200)
committerMarge Bot <eric+marge@anholt.net>
Sat, 30 May 2020 01:22:51 +0000 (01:22 +0000)
NV12 is UVUVUV (https://wiki.videolan.org/YUV#NV12) and in Vulkan is
VK_FORMAT_G8_B8R8_2PLANE_420_UNORM. So U=B and V=R. So plane order in
VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM is YUV, which is PIPE_FORMAT_IYUV.

Further confirmation: https://fourcc.org/yuv.php U=Cb V=Cr. From the nir
ycbcr conversion, B=Cb and R=Cr.

Fixes: 75d7ee80291 "util/format: translate 422_UNORM and 420_UNORM vulkan formats"
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Jonathan Marek <jonathan@marek.ca>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5195>

src/vulkan/util/vk_format.c

index c74e2047a730a36a501d5bab164dc062f5e40659..2b89e0bdeeaedccb1878e727c22a45c58d60958d 100644 (file)
@@ -251,7 +251,7 @@ vk_format_to_pipe_format(enum VkFormat vkformat)
       case VK_FORMAT_B8G8R8G8_422_UNORM:
          return PIPE_FORMAT_UYVY;
       case VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM:
-         return PIPE_FORMAT_YV12;
+         return PIPE_FORMAT_IYUV;
       case VK_FORMAT_G8_B8R8_2PLANE_420_UNORM:
          return PIPE_FORMAT_NV12;
       default: