From ca8647e29b77fe77c3ef5dc38b7f82e09031f5ce Mon Sep 17 00:00:00 2001 From: David Rosca Date: Wed, 2 Aug 2023 09:58:51 +0200 Subject: [PATCH] frontends/va: Don't allow multi-plane derive without driver support Mapping multi-plane surfaces won't work correctly without driver supporting PIPE_VIDEO_CAP_SUPPORTS_CONTIGUOUS_PLANES_MAP. Remove the check for ffmpeg process and instead check for multi-plane format and driver support only. Reviewed-by: Leo Liu Part-of: --- src/gallium/frontends/va/image.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/gallium/frontends/va/image.c b/src/gallium/frontends/va/image.c index e902798f5c9..b16183a0d56 100644 --- a/src/gallium/frontends/va/image.c +++ b/src/gallium/frontends/va/image.c @@ -248,10 +248,6 @@ vlVaDeriveImage(VADriverContextP ctx, VASurfaceID surface, VAImage *image) "hevcencode" }; - const char *derive_progressive_disallowlist[] = { - "ffmpeg" - }; - if (!ctx) return VA_STATUS_ERROR_INVALID_CONTEXT; @@ -280,13 +276,11 @@ vlVaDeriveImage(VADriverContextP ctx, VASurfaceID surface, VAImage *image) PIPE_VIDEO_ENTRYPOINT_BITSTREAM, PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE)) return VA_STATUS_ERROR_OPERATION_FAILED; - } else { - if(!screen->get_video_param(screen, PIPE_VIDEO_PROFILE_UNKNOWN, - PIPE_VIDEO_ENTRYPOINT_BITSTREAM, - PIPE_VIDEO_CAP_SUPPORTS_CONTIGUOUS_PLANES_MAP)) - for (i = 0; i < ARRAY_SIZE(derive_progressive_disallowlist); i++) - if ((strcmp(derive_progressive_disallowlist[i], proc) == 0)) - return VA_STATUS_ERROR_OPERATION_FAILED; + } else if (util_format_get_num_planes(surf->buffer->buffer_format) >= 2 && + !screen->get_video_param(screen, PIPE_VIDEO_PROFILE_UNKNOWN, + PIPE_VIDEO_ENTRYPOINT_BITSTREAM, + PIPE_VIDEO_CAP_SUPPORTS_CONTIGUOUS_PLANES_MAP)) { + return VA_STATUS_ERROR_OPERATION_FAILED; } surfaces = surf->buffer->get_surfaces(surf->buffer);