diff --git a/.pick_status.json b/.pick_status.json index bf40278577a..20c0fe7170c 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -553,7 +553,7 @@ "description": "gallium/auxiliary/vl: Add additional deinterlace enum and tracking", "nominated": false, "nomination_type": null, - "resolution": 4, + "resolution": 1, "main_sha": null, "because_sha": null }, diff --git a/src/gallium/auxiliary/vl/vl_compositor.c b/src/gallium/auxiliary/vl/vl_compositor.c index a6ace353273..554d6aa5865 100644 --- a/src/gallium/auxiliary/vl/vl_compositor.c +++ b/src/gallium/auxiliary/vl/vl_compositor.c @@ -571,6 +571,8 @@ vl_compositor_set_buffer_layer(struct vl_compositor_state *s, if (buffer->interlaced) { float half_a_line = 0.5f / s->layers[layer].zw.y; switch(deinterlace) { + case VL_COMPOSITOR_NONE: + case VL_COMPOSITOR_MOTION_ADAPTIVE: case VL_COMPOSITOR_WEAVE: if (c->pipe_cs_composit_supported) s->layers[layer].cs = c->cs_weave_rgb; @@ -777,6 +779,8 @@ vl_compositor_init(struct vl_compositor *c, struct pipe_context *pipe) c->pipe_gfx_supported = pipe->screen->get_param(pipe->screen, PIPE_CAP_GRAPHICS); c->pipe = pipe; + c->deinterlace = VL_COMPOSITOR_NONE; + if (!init_pipe_state(c)) { return false; } diff --git a/src/gallium/auxiliary/vl/vl_compositor.h b/src/gallium/auxiliary/vl/vl_compositor.h index cccee01623b..32ce82f7320 100644 --- a/src/gallium/auxiliary/vl/vl_compositor.h +++ b/src/gallium/auxiliary/vl/vl_compositor.h @@ -50,9 +50,11 @@ struct pipe_context; /* deinterlace allgorithem */ enum vl_compositor_deinterlace { + VL_COMPOSITOR_NONE, VL_COMPOSITOR_WEAVE, VL_COMPOSITOR_BOB_TOP, - VL_COMPOSITOR_BOB_BOTTOM + VL_COMPOSITOR_BOB_BOTTOM, + VL_COMPOSITOR_MOTION_ADAPTIVE }; /* clockwise degree */ @@ -125,6 +127,8 @@ struct vl_compositor bool pipe_cs_composit_supported; bool pipe_gfx_supported; + enum vl_compositor_deinterlace deinterlace; + struct { struct { void *y;