radeonsi: Report multi-plane formats as unsupported
authorDrew Davenport <ddavenport@google.com>
Tue, 9 Mar 2021 23:49:47 +0000 (16:49 -0700)
committerMarge Bot <eric+marge@anholt.net>
Mon, 19 Apr 2021 17:42:33 +0000 (17:42 +0000)
https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6693 added
NV12 lowering to PIPE_FORMAT_R8_G8B8_420_UNORM, which regressed some
video decode use cases in radeonsi, for example CtsDecodeTestCases in
android CTS. There are also discolored frames in video playback use
cases (i.e. youtube).

https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3632
previously fixed similar issues in radeonsi. This change takes that a
step further to report any multi-plane format as unsupported.

Fixes: 826a10255f5 ("st/mesa: Add NV12 lowering to PIPE_FORMAT_R8_G8B8_420_UNORM")
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
Tested-by: Simon Ser <contact@emersion.fr>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9490>

src/gallium/drivers/radeonsi/si_state.c

index e10a3e8..2653fa9 100644 (file)
@@ -2169,6 +2169,9 @@ static bool si_is_format_supported(struct pipe_screen *screen, enum pipe_format
         !sscreen->info.has_3d_cube_border_color_mipmap)
       return false;
 
+   if (util_format_get_num_planes(format) >= 2)
+      return false;
+
    if (MAX2(1, sample_count) < MAX2(1, storage_sample_count))
       return false;