diff --git a/.pick_status.json b/.pick_status.json index 614c013b2ce..8f7631ded90 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -535,7 +535,7 @@ "description": "frontends/va/postproc: Keep track of deinterlacing method being used", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "c5088b497290ba1207085899ec635ef851635267" }, diff --git a/src/gallium/frontends/va/postproc.c b/src/gallium/frontends/va/postproc.c index 162994d88fd..88d7d81619d 100644 --- a/src/gallium/frontends/va/postproc.c +++ b/src/gallium/frontends/va/postproc.c @@ -222,7 +222,7 @@ static VAStatus vlVaPostProcBlit(vlVaDriver *drv, vlVaContext *context, if (drv->pipe->screen->get_param(drv->pipe->screen, PIPE_CAP_PREFER_COMPUTE_FOR_MULTIMEDIA)) - util_compute_blit(drv->pipe, &blit, &context->blit_cs); + util_compute_blit(drv->pipe, &blit, &context->blit_cs, !drv->compositor.deinterlace); else drv->pipe->blit(drv->pipe, &blit); } @@ -281,7 +281,7 @@ vlVaApplyDeint(vlVaDriver *drv, vlVaContext *context, VAStatus vlVaHandleVAProcPipelineParameterBufferType(vlVaDriver *drv, vlVaContext *context, vlVaBuffer *buf) { - enum vl_compositor_deinterlace deinterlace = VL_COMPOSITOR_WEAVE; + enum vl_compositor_deinterlace deinterlace = VL_COMPOSITOR_NONE; VARectangle def_src_region, def_dst_region; const VARectangle *src_region, *dst_region; VAProcPipelineParameterBuffer *param; @@ -349,12 +349,13 @@ vlVaHandleVAProcPipelineParameterBufferType(vlVaDriver *drv, vlVaContext *contex case VAProcDeinterlacingMotionAdaptive: src = vlVaApplyDeint(drv, context, param, src, !!(deint->flags & VA_DEINTERLACING_BOTTOM_FIELD)); + deinterlace = VL_COMPOSITOR_MOTION_ADAPTIVE; break; default: return VA_STATUS_ERROR_UNIMPLEMENTED; } - + drv->compositor.deinterlace = deinterlace; break; }