0,0 → 1,76 |
#ifndef XORG_EXA_H |
#define XORG_EXA_H |
|
#include "xorg_tracker.h" |
|
#include "pipe/p_state.h" |
|
struct cso_context; |
struct xorg_shaders; |
|
/* src + mask + dst */ |
#define MAX_EXA_SAMPLERS 3 |
|
struct exa_context |
{ |
ExaDriverPtr pExa; |
struct pipe_context *pipe; |
struct pipe_screen *scrn; |
struct xorg_renderer *renderer; |
|
struct pipe_sampler_view *bound_sampler_views[MAX_EXA_SAMPLERS]; |
int num_bound_samplers; |
|
float solid_color[4]; |
boolean has_solid_color; |
|
boolean accel; |
|
/* float[9] projective matrix bound to pictures */ |
struct { |
float src[9]; |
float mask[9]; |
boolean has_src; |
boolean has_mask; |
} transform; |
|
struct { |
struct exa_pixmap_priv *src; |
struct exa_pixmap_priv *dst; |
PixmapPtr tmp_pix; |
} copy; |
}; |
|
struct exa_pixmap_priv |
{ |
int width, height; |
|
int flags; |
int tex_flags; |
|
int picture_format; |
|
struct pipe_resource *tex; |
struct pipe_resource *depth_stencil_tex; |
|
struct pipe_transfer *map_transfer; |
unsigned map_count; |
}; |
|
#define XORG_FALLBACK(s, arg...) \ |
do { \ |
if (ms->debug_fallback) { \ |
xf86DrvMsg(pScrn->scrnIndex, X_INFO, \ |
"%s fallback " s "\n", __FUNCTION__, ##arg); \ |
} \ |
return FALSE; \ |
} while(0) |
|
struct pipe_surface * |
xorg_gpu_surface(struct pipe_context *pipe, struct exa_pixmap_priv *priv); |
|
void xorg_exa_flush(struct exa_context *exa, |
struct pipe_fence_handle **fence); |
void xorg_exa_finish(struct exa_context *exa); |
|
#endif |