summaryrefslogtreecommitdiff
path: root/src/amd_blend.h
diff options
context:
space:
mode:
authorJordan Crouse <jordan.crouse@amd.com>2007-03-07 18:14:34 -0700
committerJordan Crouse <jordan.crouse@amd.com>2007-03-07 18:18:09 -0700
commitb59bfdde9341ca9014e00795e344ac64b5b91b8c (patch)
tree1d85f4420e42e2f55500872e8cde05ebcdf5ef9e /src/amd_blend.h
parentd2f53b7c576c91f07f55b62b0020be1d0ab358dc (diff)
[MAJOR UPDATE] Geode LX driver
This is a major re-vamping of the Geode LX driver to support EXA, RandR, and advanced xserver features. The GX and LX drivers now share the similar streamlined infrastructure, and acceleration. The LX driver also adds features the GX does not have, such as accelerated rotations and far better composite support. This provides the basis for the rotation and acceleration enhancements.
Diffstat (limited to 'src/amd_blend.h')
-rw-r--r--src/amd_blend.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/amd_blend.h b/src/amd_blend.h
new file mode 100644
index 0000000..6748ec0
--- /dev/null
+++ b/src/amd_blend.h
@@ -0,0 +1,62 @@
+#ifndef AMD_BLEND_H_
+#define AMD_BLEND_H_
+
+#define GEODEPTR_FROM_PIXMAP(x) \
+ GEODEPTR(xf86Screens[(x)->drawable.pScreen->myNum])
+#define GEODEPTR_FROM_SCREEN(x) \
+ GEODEPTR(xf86Screens[(x)->myNum])
+#define GEODEPTR_FROM_PICTURE(x) \
+ GEODEPTR(xf86Screens[(x)->pDrawable->pScreen->myNum])
+
+#define usesPasses(op) ((( \
+ ( 1 << PictOpAtop ) | \
+ ( 1 << PictOpAtopReverse ) | \
+ ( 1 << PictOpXor ) | \
+ 0 ) >> (op)) & 1)
+
+/* pass1 or pass2 */
+#define usesSrcAlpha(op) ((( \
+ ( 1 << PictOpOver ) | \
+ ( 1 << PictOpInReverse ) | \
+ ( 1 << PictOpOutReverse ) | \
+ ( 1 << PictOpAtop ) | \
+ ( 1 << PictOpAtopReverse ) | \
+ ( 1 << PictOpXor ) | \
+ 0 ) >> (op)) & 1)
+
+/* pass1 or pass2 */
+#define usesDstAlpha(op) ((( \
+ ( 1 << PictOpOverReverse ) | \
+ ( 1 << PictOpIn ) | \
+ ( 1 << PictOpOut ) | \
+ ( 1 << PictOpAtop ) | \
+ ( 1 << PictOpAtopReverse ) | \
+ ( 1 << PictOpXor ) | \
+ 0 ) >> (op)) & 1)
+
+/* non 2 pass ops */
+#define usesChanB0(op) ((( \
+ ( 1 << PictOpOver ) | \
+ ( 1 << PictOpOverReverse ) | \
+ ( 1 << PictOpIn ) | \
+ ( 1 << PictOpInReverse ) | \
+ ( 1 << PictOpOut ) | \
+ ( 1 << PictOpOutReverse ) | \
+ ( 1 << PictOpAdd ) | \
+ 0 ) >> (op)) & 1)
+
+/* pass 1 ops */
+#define usesChanB1(op) ((( \
+ ( 1 << PictOpAtop ) | \
+ ( 1 << PictOpAtopReverse ) | \
+ ( 1 << PictOpXor ) | \
+ 0 ) >> (op)) & 1)
+
+/* pass 2 ops */
+#define usesChanB2(op) ((( \
+ ( 1 << PictOpAtop ) | \
+ ( 1 << PictOpAtopReverse ) | \
+ ( 1 << PictOpXor ) | \
+ 0 ) >> (op)) & 1)
+
+#endif