X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fauxiliary%2Fvl%2Fvl_compositor.h;h=0e4badb65d2374b1a24d11a6ca462c247a8d691a;hb=e5f78a74f8294ee02015552db664dae1e7da9f47;hp=59e60ac69f327472fd2fae86985bcda90078f474;hpb=133add9c508f9e94e04c45a6cfa3a9dd6a2518d0;p=mesa.git diff --git a/src/gallium/auxiliary/vl/vl_compositor.h b/src/gallium/auxiliary/vl/vl_compositor.h index 59e60ac69f3..0e4badb65d2 100644 --- a/src/gallium/auxiliary/vl/vl_compositor.h +++ b/src/gallium/auxiliary/vl/vl_compositor.h @@ -28,59 +28,46 @@ #ifndef vl_compositor_h #define vl_compositor_h -#include #include +#include #include -#include "vl_types.h" struct pipe_context; -struct keymap; #define VL_COMPOSITOR_MAX_LAYERS 16 +struct vl_compositor_layer +{ + void *fs; + struct pipe_sampler_view *sampler_views[3]; + struct pipe_video_rect src_rect; + struct pipe_video_rect dst_rect; +}; + struct vl_compositor { + struct pipe_video_compositor base; struct pipe_context *pipe; struct pipe_framebuffer_state fb_state; - struct vertex2f fb_inv_size; - void *sampler; - struct pipe_sampler_view *sampler_view; - void *vertex_shader; - struct - { - void *ycbcr_2_rgb; - void *rgb_2_rgb; - } fragment_shader; struct pipe_viewport_state viewport; struct pipe_vertex_buffer vertex_buf; - void *vertex_elems_state; - struct pipe_resource *fs_const_buf; + struct pipe_resource *csc_matrix; - struct pipe_sampler_view *layers[VL_COMPOSITOR_MAX_LAYERS]; - struct pipe_video_rect layer_src_rects[VL_COMPOSITOR_MAX_LAYERS]; - struct pipe_video_rect layer_dst_rects[VL_COMPOSITOR_MAX_LAYERS]; - unsigned dirty_layers; -}; - -bool vl_compositor_init(struct vl_compositor *compositor, struct pipe_context *pipe); - -void vl_compositor_cleanup(struct vl_compositor *compositor); + void *sampler; + void *blend; + void *vertex_elems_state; -void vl_compositor_set_layers(struct vl_compositor *compositor, - struct pipe_sampler_view *layers[], - struct pipe_video_rect *src_rects[], - struct pipe_video_rect *dst_rects[], - unsigned num_layers); + void *vs; + void *fs_video_buffer; + void *fs_palette; + void *fs_rgba; -void vl_compositor_render(struct vl_compositor *compositor, - struct pipe_sampler_view *src_surface, - enum pipe_mpeg12_picture_type picture_type, - struct pipe_video_rect *src_area, - struct pipe_surface *dst_surface, - struct pipe_video_rect *dst_area, - struct pipe_fence_handle **fence); + unsigned used_layers:VL_COMPOSITOR_MAX_LAYERS; + struct vl_compositor_layer layers[VL_COMPOSITOR_MAX_LAYERS]; +}; -void vl_compositor_set_csc_matrix(struct vl_compositor *compositor, const float *mat); +struct pipe_video_compositor *vl_compositor_init(struct pipe_video_context *vpipe, + struct pipe_context *pipe); #endif /* vl_compositor_h */