From cadeb73f6bb5f33877f3bbd6536594f22e20d580 Mon Sep 17 00:00:00 2001 From: Leo Liu Date: Mon, 28 Aug 2017 22:59:56 -0400 Subject: st/va: reallocate the buffer if the layout isn't supported MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit So that it makes more clear for buffer reallocation based on buffers layout for both decoder and encoder. Signed-off-by: Leo Liu Reviewed-by: Christian König --- src/gallium/state_trackers/va/picture.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/gallium/state_trackers/va/picture.c b/src/gallium/state_trackers/va/picture.c index 47e63d3b30c..ee099fad6ee 100644 --- a/src/gallium/state_trackers/va/picture.c +++ b/src/gallium/state_trackers/va/picture.c @@ -591,7 +591,7 @@ vlVaEndPicture(VADriverContextP ctx, VAContextID context_id) vlVaSurface *surf; void *feedback; struct pipe_screen *screen; - bool interlaced; + bool supported; bool realloc = false; enum pipe_format format; @@ -621,14 +621,17 @@ vlVaEndPicture(VADriverContextP ctx, VAContextID context_id) context->mpeg4.frame_num++; screen = context->decoder->context->screen; - interlaced = screen->get_video_param(screen, context->decoder->profile, - context->decoder->entrypoint, - PIPE_VIDEO_CAP_SUPPORTS_INTERLACED); - - if (surf->buffer->interlaced != interlaced) { - surf->templat.interlaced = screen->get_video_param(screen, context->decoder->profile, - PIPE_VIDEO_ENTRYPOINT_BITSTREAM, - PIPE_VIDEO_CAP_PREFERS_INTERLACED); + supported = screen->get_video_param(screen, context->decoder->profile, + context->decoder->entrypoint, + surf->buffer->interlaced ? + PIPE_VIDEO_CAP_SUPPORTS_INTERLACED : + PIPE_VIDEO_CAP_SUPPORTS_PROGRESSIVE); + + if (!supported) { + surf->templat.interlaced = screen->get_video_param(screen, + context->decoder->profile, + context->decoder->entrypoint, + PIPE_VIDEO_CAP_PREFERS_INTERLACED); realloc = true; } -- cgit v1.2.3