radeonsi/vcn: fix regression in yuv422 jpeg decode
authorSathishkumar S <sathishkumar.sundararaju@amd.com>
Fri, 2 Dec 2022 06:31:03 +0000 (12:01 +0530)
committerMarge Bot <emma+marge@anholt.net>
Tue, 13 Dec 2022 15:37:18 +0000 (15:37 +0000)
- yuv422 decode was blocked in 12acee17fad5, enable it back.
- nv12 yuv422 and grayscale decode is supported on all versions.
- JPEG2 and higher versions supports 444p decode.
- add l8_unorm to supported formats, can be used for grayscale.

Fixes: 12acee17fad5 (frontends/va: reallocate surface for yuv400/yuv444 picture)

v2: indent the switch case correctly (Thong Thai)

Signed-off-by: Sathishkumar S <sathishkumar.sundararaju@amd.com>
Reviewed-by: Thong Thai <thong.thai@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20165>

src/gallium/drivers/radeonsi/si_get.c

index 5ea86b8..6c6f225 100644 (file)
@@ -854,13 +854,20 @@ static bool si_vid_is_format_supported(struct pipe_screen *screen, enum pipe_for
 
    /* JPEG supports YUV400 and YUV444 */
    if (profile == PIPE_VIDEO_PROFILE_JPEG_BASELINE) {
-      if (sscreen->info.family >= CHIP_NAVI21 || sscreen->info.family == CHIP_MI100 ||
-          sscreen->info.family == CHIP_MI200)
-         return (format == PIPE_FORMAT_NV12 || format == PIPE_FORMAT_Y8_400_UNORM ||
-                 format == PIPE_FORMAT_Y8_U8_V8_444_UNORM || format == PIPE_FORMAT_YUYV);
-      else
-         return (format == PIPE_FORMAT_NV12);
-
+      switch (format) {
+      case PIPE_FORMAT_NV12:
+      case PIPE_FORMAT_YUYV:
+      case PIPE_FORMAT_L8_UNORM:
+      case PIPE_FORMAT_Y8_400_UNORM:
+         return true;
+      case PIPE_FORMAT_Y8_U8_V8_444_UNORM:
+         if (sscreen->info.family >= CHIP_RENOIR)
+            return true;
+         else
+            return false;
+      default:
+         return false;
+      }
    }
 
    /* we can only handle this one with UVD */