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 <thong.thai@amd.com>
Reviewed-by: Leo Liu <leo.liu@amd.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4001>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4001>
This commit is contained in:
Thong Thai 2020-02-28 10:56:49 -05:00 committed by Marge Bot
parent 2d32248f49
commit 3f31c54842
1 changed files with 1 additions and 4 deletions

View File

@ -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);