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@amd.com> Reviewed-by: James Zhu <James.Zhu@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10751>
This commit is contained in:
@@ -615,10 +615,16 @@ surface_from_external_memory(VADriverContextP ctx, vlVaSurface *surface,
|
|||||||
// Create a resource for each plane.
|
// Create a resource for each plane.
|
||||||
memset(resources, 0, sizeof resources);
|
memset(resources, 0, sizeof resources);
|
||||||
for (i = 0; i < memory_attribute->num_planes; i++) {
|
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];
|
res_templ.format = resource_formats[i];
|
||||||
if (res_templ.format == PIPE_FORMAT_NONE) {
|
if (res_templ.format == PIPE_FORMAT_NONE) {
|
||||||
result = VA_STATUS_ERROR_INVALID_PARAMETER;
|
if (i < num_planes) {
|
||||||
goto fail;
|
result = VA_STATUS_ERROR_INVALID_PARAMETER;
|
||||||
|
goto fail;
|
||||||
|
} else {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
res_templ.width0 = util_format_get_plane_width(templat->buffer_format, i,
|
res_templ.width0 = util_format_get_plane_width(templat->buffer_format, i,
|
||||||
|
Reference in New Issue
Block a user