summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSathishkumar S <sathishkumar.sundararaju@amd.com>2022-12-02 12:01:03 +0530
committerEric Engestrom <eric@engestrom.ch>2022-12-14 20:56:53 +0000
commit74d17cba5c5c560bf09ce1faca56bacda455e46c (patch)
tree454e57d60e855f621a4e5b352de71490c2002dc7
parent0565b834b6475744d176761876e1070a09c0605d (diff)
downloadmesa-74d17cba5c5c560bf09ce1faca56bacda455e46c.tar.gz
radeonsi/vcn: fix regression in yuv422 jpeg decode
- 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> (cherry picked from commit 7ad4a5079e8ad0b9f3ab7924cc3dfec5f74ea88d)
-rw-r--r--.pick_status.json2
-rw-r--r--src/gallium/drivers/radeonsi/si_get.c20
2 files changed, 15 insertions, 7 deletions
diff --git a/.pick_status.json b/.pick_status.json
index f80dc8b4a56..64677a17e91 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -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"
},
diff --git a/src/gallium/drivers/radeonsi/si_get.c b/src/gallium/drivers/radeonsi/si_get.c
index 31063323832..7a362de3ce6 100644
--- a/src/gallium/drivers/radeonsi/si_get.c
+++ b/src/gallium/drivers/radeonsi/si_get.c
@@ -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 */