From: Thong Thai Date: Fri, 28 Feb 2020 15:56:49 +0000 (-0500) Subject: st/va/postproc: reallocate interlaced destination buffer X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3f31c54842d4d2e1e78dad6cab57e45cb616b344;p=mesa.git st/va/postproc: reallocate interlaced destination buffer When the source buffer is progressive source, re-allocate the destination buffer as progressive if it isn't already - otherwise transcoding will fail. Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/1418 Signed-off-by: Thong Thai Reviewed-by: Leo Liu Tested-by: Marge Bot Part-of: --- diff --git a/src/gallium/state_trackers/va/postproc.c b/src/gallium/state_trackers/va/postproc.c index 83293c8343f..18458832844 100644 --- a/src/gallium/state_trackers/va/postproc.c +++ b/src/gallium/state_trackers/va/postproc.c @@ -130,9 +130,6 @@ static VAStatus vlVaPostProcBlit(vlVaDriver *drv, vlVaContext *context, !src->interlaced) grab = true; - if (src->interlaced != dst->interlaced && dst->interlaced && !grab) - return VA_STATUS_ERROR_INVALID_SURFACE; - if ((src->width != dst->width || src->height != dst->height) && (src->interlaced && dst->interlaced)) scale = true; @@ -141,7 +138,7 @@ static VAStatus vlVaPostProcBlit(vlVaDriver *drv, vlVaContext *context, if (!src_surfaces || !src_surfaces[0]) return VA_STATUS_ERROR_INVALID_SURFACE; - if (scale || (grab && dst->interlaced)) { + if (scale || (src->interlaced != dst->interlaced && dst->interlaced)) { vlVaSurface *surf; surf = handle_table_get(drv->htab, context->target_id);