xorg_renderer.h revision e521bf7706a5527ad5750baef78feaa961f73ecc
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 int num_attributes; 31}; 32 33struct xorg_renderer *renderer_create(struct pipe_context *pipe); 34void renderer_destroy(struct xorg_renderer *renderer); 35 36void renderer_bind_framebuffer(struct xorg_renderer *r, 37 struct exa_pixmap_priv *priv); 38void renderer_bind_viewport(struct xorg_renderer *r, 39 struct exa_pixmap_priv *dst); 40void renderer_bind_rasterizer(struct xorg_renderer *r); 41void renderer_set_constants(struct xorg_renderer *r, 42 int shader_type, 43 const float *buffer, 44 int size); 45void renderer_copy_pixmap(struct xorg_renderer *r, 46 struct exa_pixmap_priv *dst_priv, int dx, int dy, 47 struct exa_pixmap_priv *src_priv, int sx, int sy, 48 int width, int height); 49 50 51void renderer_draw_yuv(struct xorg_renderer *r, 52 int src_x, int src_y, int src_w, int src_h, 53 int dst_x, int dst_y, int dst_w, int dst_h, 54 struct pipe_texture **textures); 55 56void renderer_begin_solid(struct xorg_renderer *r); 57void renderer_solid(struct xorg_renderer *r, 58 int x0, int y0, 59 int x1, int y1, 60 float *color); 61 62void renderer_begin_textures(struct xorg_renderer *r, 63 struct pipe_texture **textures, 64 int num_textures); 65void renderer_texture(struct xorg_renderer *r, 66 int *pos, 67 int width, int height, 68 struct pipe_texture **textures, 69 int num_textures, 70 float *src_matrix, 71 float *mask_matrix); 72 73void renderer_draw_flush(struct xorg_renderer *r); 74 75 76void renderer_draw_textures(struct xorg_renderer *r, 77 int *pos, 78 int width, int height, 79 struct pipe_texture **textures, 80 int num_textures, 81 float *src_matrix, float *mask_matrix); 82 83 84#endif 85