xorg_renderer.h revision e1730632aa5ca1dbb0edd484e2357246ec537abb
1#ifndef XORG_RENDERER_H
2#define XORG_RENDERER_H
3
4#include "pipe/p_context.h"
5#include "pipe/p_state.h"
6
7struct xorg_shaders;
8struct exa_pixmap_priv;
9
10/* max number of vertices *
11 * max number of attributes per vertex *
12 * max number of components per attribute
13 *
14 * currently the max is 5 quads
15 */
16#define BUF_SIZE (20 * 3 * 4)
17
18struct xorg_renderer {
19   struct pipe_context *pipe;
20
21   struct cso_context *cso;
22   struct xorg_shaders *shaders;
23
24   struct pipe_constant_buffer vs_const_buffer;
25   struct pipe_constant_buffer fs_const_buffer;
26
27   float vertices[BUF_SIZE];
28   int num_vertices;
29};
30
31struct xorg_renderer *renderer_create(struct pipe_context *pipe);
32void renderer_destroy(struct xorg_renderer *renderer);
33
34void renderer_bind_framebuffer(struct xorg_renderer *r,
35                               struct exa_pixmap_priv *priv);
36void renderer_bind_viewport(struct xorg_renderer *r,
37                            struct exa_pixmap_priv *dst);
38void renderer_bind_rasterizer(struct xorg_renderer *r);
39void renderer_set_constants(struct xorg_renderer *r,
40                            int shader_type,
41                            const float *buffer,
42                            int size);
43void renderer_copy_pixmap(struct xorg_renderer *r,
44                          struct exa_pixmap_priv *dst_priv, int dx, int dy,
45                          struct exa_pixmap_priv *src_priv, int sx, int sy,
46                          int width, int height);
47
48void renderer_draw_solid_rect(struct xorg_renderer *r,
49                              int x0, int y0,
50                              int x1, int y1,
51                              float *color);
52
53void renderer_draw_textures(struct xorg_renderer *r,
54                            int *pos,
55                            int width, int height,
56                            struct pipe_texture **textures,
57                            int num_textures,
58                            float *src_matrix,
59                            float *mask_matrix);
60
61void renderer_draw_yuv(struct xorg_renderer *r,
62                       int src_x, int src_y, int src_w, int src_h,
63                       int dst_x, int dst_y, int dst_w, int dst_h,
64                       struct pipe_texture **textures);
65
66void renderer_begin_solid(struct xorg_renderer *r,
67                          float *color);
68void renderer_solid(struct xorg_renderer *r,
69                    int x0, int y0,
70                    int x1, int y1);
71void renderer_end_solid(struct xorg_renderer *r);
72
73
74#endif
75