st/xorg: add yuv vertex shader
[mesa.git] / src / gallium / state_trackers / xorg / xorg_exa_tgsi.h
1 #ifndef XORG_EXA_TGSI_H
2 #define XORG_EXA_TGSI_H
3
4 #include "xorg_renderer.h"
5
6 enum xorg_vs_traits {
7 VS_COMPOSITE = 1 << 0,
8 VS_MASK = 1 << 1,
9 VS_SOLID_FILL = 1 << 2,
10 VS_LINGRAD_FILL = 1 << 3,
11 VS_RADGRAD_FILL = 1 << 4,
12 VS_YUV = 1 << 5,
13
14
15 VS_FILL = (VS_SOLID_FILL |
16 VS_LINGRAD_FILL |
17 VS_RADGRAD_FILL)
18 };
19
20 enum xorg_fs_traits {
21 FS_COMPOSITE = 1 << 0,
22 FS_MASK = 1 << 1,
23 FS_SOLID_FILL = 1 << 2,
24 FS_LINGRAD_FILL = 1 << 3,
25 FS_RADGRAD_FILL = 1 << 4,
26 FS_CA_FULL = 1 << 5, /* src.rgba * mask.rgba */
27 FS_CA_SRCALPHA = 1 << 6, /* src.aaaa * mask.rgba */
28 FS_YUV = 1<< 7,
29
30 FS_FILL = (FS_SOLID_FILL |
31 FS_LINGRAD_FILL |
32 FS_RADGRAD_FILL),
33 FS_COMPONENT_ALPHA = (FS_CA_FULL |
34 FS_CA_SRCALPHA)
35 };
36
37 struct xorg_shader {
38 void *fs;
39 void *vs;
40 };
41
42 struct xorg_shaders;
43
44 struct xorg_shaders *xorg_shaders_create(struct xorg_renderer *renderer);
45 void xorg_shaders_destroy(struct xorg_shaders *shaders);
46
47 struct xorg_shader xorg_shaders_get(struct xorg_shaders *shaders,
48 unsigned vs_traits,
49 unsigned fs_traits);
50
51 #endif