geode_blend.h revision f29dbc25
1#ifndef AMD_BLEND_H_
2#define AMD_BLEND_H_
3
4#define GEODEPTR_FROM_PIXMAP(x)		\
5		GEODEPTR(xf86Screens[(x)->drawable.pScreen->myNum])
6#define GEODEPTR_FROM_SCREEN(x)		\
7		GEODEPTR(xf86Screens[(x)->myNum])
8#define GEODEPTR_FROM_PICTURE(x)	\
9		GEODEPTR(xf86Screens[(x)->pDrawable->pScreen->myNum])
10
11#define usesPasses(op) (((		\
12   ( 1 << PictOpAtop ) | 		\
13   ( 1 << PictOpAtopReverse ) | \
14   ( 1 << PictOpXor ) | 		\
15   0 ) >> (op)) & 1)
16
17/* pass1 or pass2 */
18#define usesSrcAlpha(op) ((( 		\
19   ( 1 << PictOpOver ) | 			\
20   ( 1 << PictOpInReverse  ) | 		\
21   ( 1 << PictOpOutReverse  ) | 	\
22   ( 1 << PictOpAtop ) | 			\
23   ( 1 << PictOpAtopReverse ) | 	\
24   ( 1 << PictOpXor ) | 			\
25   0 ) >> (op)) & 1)
26
27/* pass1 or pass2 */
28#define usesDstAlpha(op) ((( 		\
29   ( 1 << PictOpOverReverse ) | 	\
30   ( 1 << PictOpIn ) | 				\
31   ( 1 << PictOpOut ) | 			\
32   ( 1 << PictOpAtop ) | 			\
33   ( 1 << PictOpAtopReverse ) | 	\
34   ( 1 << PictOpXor ) | 			\
35   0 ) >> (op)) & 1)
36
37/* non 2 pass ops */
38#define usesChanB0(op) ((( 			\
39   ( 1 << PictOpOver ) | 			\
40   ( 1 << PictOpOverReverse ) | 	\
41   ( 1 << PictOpIn ) | 				\
42   ( 1 << PictOpInReverse ) | 		\
43   ( 1 << PictOpOut ) | 			\
44   ( 1 << PictOpOutReverse ) | 		\
45   ( 1 << PictOpAdd ) | 			\
46   0 ) >> (op)) & 1)
47
48/* pass 1 ops */
49#define usesChanB1(op) ((( 			\
50   ( 1 << PictOpAtop ) | 			\
51   ( 1 << PictOpAtopReverse ) | 	\
52   ( 1 << PictOpXor ) | 			\
53   0 ) >> (op)) & 1)
54
55/* pass 2 ops */
56#define usesChanB2(op) ((( 			\
57   ( 1 << PictOpAtop ) | 			\
58   ( 1 << PictOpAtopReverse ) | 	\
59   ( 1 << PictOpXor ) | 			\
60   0 ) >> (op)) & 1)
61
62#endif
63