pan/bi: add support for I420 and YV12 sampling
authorItalo Nicola <italonicola@collabora.com>
Thu, 20 Jul 2023 17:20:58 +0000 (17:20 +0000)
committerMarge Bot <emma+marge@anholt.net>
Fri, 11 Aug 2023 18:43:38 +0000 (18:43 +0000)
These formats can be directly sampled, and they have a lower stride
alignment requirement.

Signed-off-by: Italo Nicola <italonicola@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24266>

src/panfrost/lib/pan_format.c
src/panfrost/lib/pan_layout.c

index ee47c36..00dc8a7 100644 (file)
@@ -194,6 +194,8 @@ const struct panfrost_format GENX(panfrost_pipe_format)[PIPE_FORMAT_COUNT] = {
    FMT_YUV(B8R8_G8R8_UNORM, VYUY8, VUYA, SWAP,    CO_SITED, _T__),
    FMT_YUV(R8_G8B8_420_UNORM, Y8_UV8_420, YUVA, NO_SWAP, CO_SITED, _T__),
    FMT_YUV(G8_B8R8_420_UNORM, Y8_UV8_420, YVUA, NO_SWAP, CO_SITED, _T__),
+   FMT_YUV(R8_G8_B8_420_UNORM, Y8_U8_V8_420, YUVA, NO_SWAP, CO_SITED, _T__),
+   FMT_YUV(R8_B8_G8_420_UNORM, Y8_U8_V8_420, YVUA, NO_SWAP, CO_SITED, _T__),
 #endif
 
 #if PAN_ARCH <= 7
index abe654e..e0dfb1f 100644 (file)
@@ -195,9 +195,11 @@ format_minimum_alignment(const struct panfrost_device *dev,
       return 63;
 
    switch (format) {
-   /* For v7+, NV12 and NV21 have a looser alignment requirement of 16 bytes */
+   /* For v7+, NV12/NV21/I420 have a looser alignment requirement of 16 bytes */
    case PIPE_FORMAT_R8_G8B8_420_UNORM:
    case PIPE_FORMAT_G8_B8R8_420_UNORM:
+   case PIPE_FORMAT_R8_G8_B8_420_UNORM:
+   case PIPE_FORMAT_R8_B8_G8_420_UNORM:
       return 16;
    default:
       return 64;