xorg_exa.h revision 48780ec9f99d7af4e98614be597adc3534d6918c
1#ifndef XORG_EXA_H 2#define XORG_EXA_H 3 4#include "xorg_tracker.h" 5 6#include <pipe/p_state.h> 7 8struct cso_context; 9struct xorg_shaders; 10 11/* src + mask + dst */ 12#define MAX_EXA_SAMPLERS 3 13 14struct exa_context 15{ 16 ExaDriverPtr pExa; 17 struct pipe_context *pipe; 18 struct pipe_screen *scrn; 19 struct xorg_renderer *renderer; 20 21 struct pipe_sampler_view *bound_sampler_views[MAX_EXA_SAMPLERS]; 22 int num_bound_samplers; 23 24 float solid_color[4]; 25 boolean has_solid_color; 26 27 boolean accel; 28 29 /* float[9] projective matrix bound to pictures */ 30 struct { 31 float src[9]; 32 float mask[9]; 33 boolean has_src; 34 boolean has_mask; 35 } transform; 36 37 struct { 38 boolean use_surface_copy; 39 40 struct exa_pixmap_priv *src; 41 struct exa_pixmap_priv *dst; 42 43 struct pipe_surface *dst_surface; 44 45 struct pipe_resource *src_texture; 46 } copy; 47}; 48 49struct exa_pixmap_priv 50{ 51 int width, height; 52 53 int flags; 54 int tex_flags; 55 56 int picture_format; 57 58 struct pipe_resource *tex; 59 struct pipe_resource *depth_stencil_tex; 60 61 struct pipe_transfer *map_transfer; 62 unsigned map_count; 63}; 64 65#define XORG_FALLBACK(s, arg...) \ 66do { \ 67 if (ms->debug_fallback) { \ 68 xf86DrvMsg(pScrn->scrnIndex, X_INFO, \ 69 "%s fallback " s "\n", __FUNCTION__, ##arg); \ 70 } \ 71 return FALSE; \ 72} while(0) 73 74struct pipe_surface * 75xorg_gpu_surface(struct pipe_screen *scrn, struct exa_pixmap_priv *priv); 76 77void xorg_exa_flush(struct exa_context *exa, uint pipeFlushFlags, 78 struct pipe_fence_handle **fence); 79void xorg_exa_finish(struct exa_context *exa); 80 81#endif 82