diff options
Diffstat (limited to 'src/gallium/state_trackers/xorg/xorg_renderer.h')
-rw-r--r-- | src/gallium/state_trackers/xorg/xorg_renderer.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/gallium/state_trackers/xorg/xorg_renderer.h b/src/gallium/state_trackers/xorg/xorg_renderer.h new file mode 100644 index 0000000000..b6296d5fd6 --- /dev/null +++ b/src/gallium/state_trackers/xorg/xorg_renderer.h @@ -0,0 +1,53 @@ +#ifndef XORG_RENDERER_H +#define XORG_RENDERER_H + +#include "pipe/p_context.h" +#include "pipe/p_state.h" + +struct xorg_shaders; +struct exa_pixmap_priv; + +struct xorg_renderer { + struct pipe_context *pipe; + + struct cso_context *cso; + struct xorg_shaders *shaders; + + struct pipe_constant_buffer vs_const_buffer; + struct pipe_constant_buffer fs_const_buffer; + + /* we should combine these two */ + float vertices2[4][2][4]; + float vertices3[4][3][4]; +}; + +struct xorg_renderer *renderer_create(struct pipe_context *pipe); +void renderer_destroy(struct xorg_renderer *renderer); + +void renderer_bind_framebuffer(struct xorg_renderer *r, + struct exa_pixmap_priv *priv); +void renderer_bind_viewport(struct xorg_renderer *r, + struct exa_pixmap_priv *dst); +void renderer_bind_rasterizer(struct xorg_renderer *r); +void renderer_set_constants(struct xorg_renderer *r, + int shader_type, + const float *buffer, + int size); +void renderer_copy_pixmap(struct xorg_renderer *r, + struct exa_pixmap_priv *dst_priv, int dx, int dy, + struct exa_pixmap_priv *src_priv, int sx, int sy, + int width, int height); + +void renderer_draw_solid_rect(struct xorg_renderer *r, + int x0, int y0, + int x1, int y1, + float *color); + +void renderer_draw_textures(struct xorg_renderer *r, + int *pos, + int width, int height, + struct pipe_texture **textures, + int num_textures); + + +#endif |