Mesa (main): frontends/va: fix multi planes for external memeory type
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed May 12 19:01:23 UTC 2021
Module: Mesa
Branch: main
Commit: 052335a180bfc07f18cdf4dd5b56936f3e5bd279
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=052335a180bfc07f18cdf4dd5b56936f3e5bd279
Author: Leo Liu <leo.liu at amd.com>
Date: Sun May 9 11:58:55 2021 -0400
frontends/va: fix multi planes for external memeory type
For the multi planes case, only the first plane is required with the
template buffer formats, and shouldn't fail for other planes.
Signed-off-by: Leo Liu <leo.liu at amd.com>
Reviewed-by: James Zhu <James.Zhu at amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10751>
---
src/gallium/frontends/va/surface.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/src/gallium/frontends/va/surface.c b/src/gallium/frontends/va/surface.c
index 574299dc166..ecfae5a6bf6 100644
--- a/src/gallium/frontends/va/surface.c
+++ b/src/gallium/frontends/va/surface.c
@@ -615,10 +615,16 @@ surface_from_external_memory(VADriverContextP ctx, vlVaSurface *surface,
// Create a resource for each plane.
memset(resources, 0, sizeof resources);
for (i = 0; i < memory_attribute->num_planes; i++) {
+ unsigned num_planes = util_format_get_num_planes(templat->buffer_format);
+
res_templ.format = resource_formats[i];
if (res_templ.format == PIPE_FORMAT_NONE) {
- result = VA_STATUS_ERROR_INVALID_PARAMETER;
- goto fail;
+ if (i < num_planes) {
+ result = VA_STATUS_ERROR_INVALID_PARAMETER;
+ goto fail;
+ } else {
+ continue;
+ }
}
res_templ.width0 = util_format_get_plane_width(templat->buffer_format, i,
More information about the mesa-commit
mailing list