From c5577bed0e8577c49abde9c51806dd77387a101a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Manuel=20J=C3=A1quez=20Leal?= Date: Sun, 6 Dec 2020 14:56:58 +0100 Subject: [PATCH] frontends/va/context: don't set max_references with num_render_targets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For HEVC and VP9 template's max_references are tied to the number of surfaces associated with context. Later, the decoder is created if max_references is different to zero. But vaCreateContext() doesn't really need an array of VASurfaceIDs (see https://lists.01.org/pipermail/intel-vaapi-media/2017-July/000052.html and https://github.com/intel/libva/issues/251). This patch removes the validation of the max_references at decoder creation and also remove the assignation of num_render_targets to max_references. Signed-off-by: Víctor Manuel Jáquez Leal Reviewed-by: Leo Liu Part-of: (cherry picked from commit 925d701014c2ba084061eae131f4b5c75e595f29) --- .pick_status.json | 2 +- src/gallium/frontends/va/context.c | 2 -- src/gallium/frontends/va/picture.c | 4 ---- 3 files changed, 1 insertion(+), 7 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 74dbd9169b6..c46e6cd37d8 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -193,7 +193,7 @@ "description": "frontends/va/context: don't set max_references with num_render_targets", "nominated": false, "nomination_type": null, - "resolution": 4, + "resolution": 1, "master_sha": null, "because_sha": null }, diff --git a/src/gallium/frontends/va/context.c b/src/gallium/frontends/va/context.c index 0c596f3f811..ca2fcde38bd 100644 --- a/src/gallium/frontends/va/context.c +++ b/src/gallium/frontends/va/context.c @@ -271,7 +271,6 @@ vlVaCreateContext(VADriverContextP ctx, VAConfigID config_id, int picture_width, break; case PIPE_VIDEO_FORMAT_HEVC: - context->templat.max_references = num_render_targets; if (config->entrypoint != PIPE_VIDEO_ENTRYPOINT_ENCODE) { context->desc.h265.pps = CALLOC_STRUCT(pipe_h265_pps); if (!context->desc.h265.pps) { @@ -288,7 +287,6 @@ vlVaCreateContext(VADriverContextP ctx, VAConfigID config_id, int picture_width, break; case PIPE_VIDEO_FORMAT_VP9: - context->templat.max_references = num_render_targets; break; default: diff --git a/src/gallium/frontends/va/picture.c b/src/gallium/frontends/va/picture.c index b4706665d3b..bcfb79e75f2 100644 --- a/src/gallium/frontends/va/picture.c +++ b/src/gallium/frontends/va/picture.c @@ -151,10 +151,6 @@ handlePictureParameterBuffer(vlVaDriver *drv, vlVaContext *context, vlVaBuffer * if (!context->target) return VA_STATUS_ERROR_INVALID_CONTEXT; - if (context->templat.max_references == 0 && - format != PIPE_VIDEO_FORMAT_JPEG) - return VA_STATUS_ERROR_INVALID_BUFFER; - if (format == PIPE_VIDEO_FORMAT_MPEG4_AVC) context->templat.level = u_get_h264_level(context->templat.width, context->templat.height, &context->templat.max_references);