From 7fac4e3c79f5463ef51e3d14ac33ae6f588674c6 Mon Sep 17 00:00:00 2001 From: David Rosca Date: Sun, 5 Jan 2025 13:46:09 +0100 Subject: [PATCH] gallium/vl: Add vl compositor layer mirror Reviewed-by: Thong Thai Part-of: --- src/gallium/auxiliary/vl/vl_compositor.c | 11 +++++++++++ src/gallium/auxiliary/vl/vl_compositor.h | 16 ++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/gallium/auxiliary/vl/vl_compositor.c b/src/gallium/auxiliary/vl/vl_compositor.c index 6c8dce2b5d7..8defeb04089 100644 --- a/src/gallium/auxiliary/vl/vl_compositor.c +++ b/src/gallium/auxiliary/vl/vl_compositor.c @@ -489,6 +489,7 @@ vl_compositor_clear_layers(struct vl_compositor_state *s) s->layers[i].viewport.swizzle_z = PIPE_VIEWPORT_SWIZZLE_POSITIVE_Z; s->layers[i].viewport.swizzle_w = PIPE_VIEWPORT_SWIZZLE_POSITIVE_W; s->layers[i].rotate = VL_COMPOSITOR_ROTATE_0; + s->layers[i].mirror = VL_COMPOSITOR_MIRROR_NONE; for ( j = 0; j < 3; j++) pipe_sampler_view_reference(&s->layers[i].sampler_views[j], NULL); @@ -717,6 +718,16 @@ vl_compositor_set_layer_rotation(struct vl_compositor_state *s, s->layers[layer].rotate = rotate; } +void +vl_compositor_set_layer_mirror(struct vl_compositor_state *s, + unsigned layer, + enum vl_compositor_mirror mirror) +{ + assert(s); + assert(layer < VL_COMPOSITOR_MAX_LAYERS); + s->layers[layer].mirror = mirror; +} + void vl_compositor_yuv_deint_full(struct vl_compositor_state *s, struct vl_compositor *c, diff --git a/src/gallium/auxiliary/vl/vl_compositor.h b/src/gallium/auxiliary/vl/vl_compositor.h index 6716a0e95ce..1708d7e0470 100644 --- a/src/gallium/auxiliary/vl/vl_compositor.h +++ b/src/gallium/auxiliary/vl/vl_compositor.h @@ -68,6 +68,13 @@ enum vl_compositor_rotation VL_COMPOSITOR_ROTATE_270 }; +enum vl_compositor_mirror +{ + VL_COMPOSITOR_MIRROR_NONE, + VL_COMPOSITOR_MIRROR_HORIZONTAL, + VL_COMPOSITOR_MIRROR_VERTICAL +}; + /* chroma sample location */ enum vl_compositor_chroma_location { @@ -107,6 +114,7 @@ struct vl_compositor_layer struct vertex2f zw; struct vertex4f colors[4]; enum vl_compositor_rotation rotate; + enum vl_compositor_mirror mirror; }; struct vl_compositor_state @@ -313,6 +321,14 @@ vl_compositor_set_layer_rotation(struct vl_compositor_state *state, unsigned layer, enum vl_compositor_rotation rotate); +/** + * set the layer mirror + */ +void +vl_compositor_set_layer_mirror(struct vl_compositor_state *state, + unsigned layer, + enum vl_compositor_mirror mirror); + /** * deinterlace yuv buffer with full abilities */