Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4358 | Serge | 1 | #ifndef XORG_EXA_H |
2 | #define XORG_EXA_H |
||
3 | |||
4 | #include "xorg_tracker.h" |
||
5 | |||
6 | #include "pipe/p_state.h" |
||
7 | |||
8 | struct cso_context; |
||
9 | struct xorg_shaders; |
||
10 | |||
11 | /* src + mask + dst */ |
||
12 | #define MAX_EXA_SAMPLERS 3 |
||
13 | |||
14 | struct 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 | struct exa_pixmap_priv *src; |
||
39 | struct exa_pixmap_priv *dst; |
||
40 | PixmapPtr tmp_pix; |
||
41 | } copy; |
||
42 | }; |
||
43 | |||
44 | struct exa_pixmap_priv |
||
45 | { |
||
46 | int width, height; |
||
47 | |||
48 | int flags; |
||
49 | int tex_flags; |
||
50 | |||
51 | int picture_format; |
||
52 | |||
53 | struct pipe_resource *tex; |
||
54 | struct pipe_resource *depth_stencil_tex; |
||
55 | |||
56 | struct pipe_transfer *map_transfer; |
||
57 | unsigned map_count; |
||
58 | }; |
||
59 | |||
60 | #define XORG_FALLBACK(s, arg...) \ |
||
61 | do { \ |
||
62 | if (ms->debug_fallback) { \ |
||
63 | xf86DrvMsg(pScrn->scrnIndex, X_INFO, \ |
||
64 | "%s fallback " s "\n", __FUNCTION__, ##arg); \ |
||
65 | } \ |
||
66 | return FALSE; \ |
||
67 | } while(0) |
||
68 | |||
69 | struct pipe_surface * |
||
70 | xorg_gpu_surface(struct pipe_context *pipe, struct exa_pixmap_priv *priv); |
||
71 | |||
72 | void xorg_exa_flush(struct exa_context *exa, |
||
73 | struct pipe_fence_handle **fence); |
||
74 | void xorg_exa_finish(struct exa_context *exa); |
||
75 | |||
76 | #endif |