summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDrew Davenport <ddavenport@google.com>2021-03-09 16:49:47 -0700
committerDylan Baker <dylan.c.baker@intel.com>2021-04-21 09:53:37 -0700
commit477708ef8bc6e2af009b6059f0f1c7ad3d1cc5db (patch)
tree45f12ae8c86aef9bd4410ce520512c1508bc4210
parent9785e6c268950db9ee50074e3c64761c685a544f (diff)
radeonsi: Report multi-plane formats as unsupported
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> (cherry picked from commit 9b7814779b2d3226ee8c3ed145e30f301ff4b2e5) Conflicts: src/gallium/drivers/radeonsi/si_state.c
-rw-r--r--.pick_status.json2
-rw-r--r--src/gallium/drivers/radeonsi/si_state.c3
2 files changed, 4 insertions, 1 deletions
diff --git a/.pick_status.json b/.pick_status.json
index a3172b42211..1780bd551cf 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -769,7 +769,7 @@
"description": "radeonsi: Report multi-plane formats as unsupported",
"nominated": true,
"nomination_type": 1,
- "resolution": 0,
+ "resolution": 1,
"master_sha": null,
"because_sha": "826a10255f5f8d444f0318f3e36ff616b41b5d15"
},
diff --git a/src/gallium/drivers/radeonsi/si_state.c b/src/gallium/drivers/radeonsi/si_state.c
index 5aedc003e37..cd571fb5bd2 100644
--- a/src/gallium/drivers/radeonsi/si_state.c
+++ b/src/gallium/drivers/radeonsi/si_state.c
@@ -2151,6 +2151,9 @@ static bool si_is_format_supported(struct pipe_screen *screen, enum pipe_format
return false;
}
+ if (util_format_get_num_planes(format) >= 2)
+ return false;
+
if (MAX2(1, sample_count) < MAX2(1, storage_sample_count))
return false;