From 675508dd81da8d77f179c6cc7831caaa2cbde094 Mon Sep 17 00:00:00 2001 From: Thong Thai Date: Fri, 6 Aug 2021 14:32:40 -0400 Subject: [PATCH] gallium/auxiliary/vl: Add additional deinterlace enum and tracking Add additional deinterlace enums and a deinterlace field to the vl_compositor struct, so we can keep track of which deinterlacing algorithm is currently being used, if any. Signed-off-by: Thong Thai Reviewed-by: Leo Liu Part-of: --- src/gallium/auxiliary/vl/vl_compositor.c | 4 ++++ src/gallium/auxiliary/vl/vl_compositor.h | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/gallium/auxiliary/vl/vl_compositor.c b/src/gallium/auxiliary/vl/vl_compositor.c index d312768d8a4..66abf7325b8 100644 --- a/src/gallium/auxiliary/vl/vl_compositor.c +++ b/src/gallium/auxiliary/vl/vl_compositor.c @@ -572,6 +572,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; @@ -778,6 +780,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;