radeonsi/vcn: fix regression in yuv422 jpeg decode

- yuv422 decode was blocked in 12acee17fa, 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: 12acee17fa (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>
(cherry picked from commit 7ad4a5079e)
This commit is contained in:
Sathishkumar S 2022-12-02 12:01:03 +05:30 committed by Eric Engestrom
parent 0565b834b6
commit 74d17cba5c
2 changed files with 15 additions and 7 deletions

View file

@ -562,7 +562,7 @@
"description": "radeonsi/vcn: fix regression in yuv422 jpeg decode",
"nominated": true,
"nomination_type": 1,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "12acee17fad5e939a4fa6ac9ce3bd4753fd0326c"
},

View file

@ -854,12 +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)
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 */