From: Leo Liu Date: Tue, 29 Aug 2017 02:59:56 +0000 (-0400) Subject: st/va: reallocate the buffer if the layout isn't supported X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=cadeb73f6bb5f33877f3bbd6536594f22e20d580;p=mesa.git st/va: reallocate the buffer if the layout isn't supported 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 --- 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; }