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:
parent
2d32248f49
commit
3f31c54842
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue