#ifndef PIPE_DEFINES_H
#define PIPE_DEFINES_H
+#include "p_format.h"
+
#define PIPE_BLENDFACTOR_ONE 0x1
#define PIPE_BLENDFACTOR_SRC_COLOR 0x2
#define PIPE_BLENDFACTOR_SRC_ALPHA 0x3
#define PIPE_LOGICOP_OR 14
#define PIPE_LOGICOP_SET 15
+#define PIPE_MASK_R 0x1
+#define PIPE_MASK_G 0x2
+#define PIPE_MASK_B 0x4
+#define PIPE_MASK_A 0x8
+#define PIPE_MASK_RGBA 0xf
+
+
/**
* Inequality functions. Used for depth test, stencil compare, alpha
* test, shadow compare, etc.
#define PIPE_STENCIL_OP_DECR_WRAP 6
#define PIPE_STENCIL_OP_INVERT 7
+/** Texture types */
+#define PIPE_TEXTURE_1D 0
+#define PIPE_TEXTURE_2D 1
+#define PIPE_TEXTURE_3D 2
+#define PIPE_TEXTURE_CUBE 3
+
+#define PIPE_TEX_FACE_POS_X 0
+#define PIPE_TEX_FACE_NEG_X 1
+#define PIPE_TEX_FACE_POS_Y 2
+#define PIPE_TEX_FACE_NEG_Y 3
+#define PIPE_TEX_FACE_POS_Z 4
+#define PIPE_TEX_FACE_NEG_Z 5
+
#define PIPE_TEX_WRAP_REPEAT 0
#define PIPE_TEX_WRAP_CLAMP 1
#define PIPE_TEX_WRAP_CLAMP_TO_EDGE 2
#define PIPE_TEX_WRAP_MIRROR_CLAMP_TO_EDGE 6
#define PIPE_TEX_WRAP_MIRROR_CLAMP_TO_BORDER 7
-#define PIPE_TEX_FILTER_NEAREST 0
-#define PIPE_TEX_FILTER_LINEAR 1
-#define PIPE_TEX_FILTER_NEAREST_MIPMAP_NEAREST 2
-#define PIPE_TEX_FILTER_NEAREST_MIPMAP_LINEAR 3
-#define PIPE_TEX_FILTER_LINEAR_MIPMAP_NEAREST 4
-#define PIPE_TEX_FILTER_LINEAR_MIPMAP_LINEAR 5
+/* Between mipmaps, ie mipfilter
+ */
+#define PIPE_TEX_MIPFILTER_NEAREST 0
+#define PIPE_TEX_MIPFILTER_LINEAR 1
+#define PIPE_TEX_MIPFILTER_NONE 2
+
+/* Within a mipmap, ie min/mag filter
+ */
+#define PIPE_TEX_FILTER_NEAREST 0
+#define PIPE_TEX_FILTER_LINEAR 1
+//#define PIPE_TEX_FILTER_ANISO 2
+
#define PIPE_TEX_COMPARE_NONE 0
#define PIPE_TEX_COMPARE_R_TO_TEXTURE 1
+#define PIPE_TEX_FACE_POS_X 0
+#define PIPE_TEX_FACE_NEG_X 1
+#define PIPE_TEX_FACE_POS_Y 2
+#define PIPE_TEX_FACE_NEG_Y 3
+#define PIPE_TEX_FACE_POS_Z 4
+#define PIPE_TEX_FACE_NEG_Z 5
+#define PIPE_TEX_FACE_MAX 6
+
/**
- * Texture/surface image formats
+ * Surface flags
*/
-#define PIPE_FORMAT_U_R8_G8_B8_A8 0 /**< ubyte[4] RGBA */
-#define PIPE_FORMAT_U_A8_R8_G8_B8 1 /**< ubyte[4] ARGB */
-#define PIPE_FORMAT_U_R5_G6_B5 2 /**< 5/6/5 RGB */
-#define PIPE_FORMAT_U_L8 3 /**< ubyte luminance */
-#define PIPE_FORMAT_U_A8 4 /**< ubyte alpha */
-#define PIPE_FORMAT_U_I8 5 /**< ubyte intensity */
-#define PIPE_FORMAT_U_L8_A8 6 /**< ubyte luminance, alpha */
-#define PIPE_FORMAT_U_Z16 7 /**< ushort Z/depth */
-#define PIPE_FORMAT_F_Z32 8 /**< float Z/depth */
-#define PIPE_FORMAT_YCBCR 9
-#define PIPE_FORMAT_YCBCR_REV 10
+#define PIPE_SURFACE_FLAG_TEXTURE 0x1
+#define PIPE_SURFACE_FLAG_RENDER 0x2
+
/**
- * Texture typess
+ * Buffer access flags
*/
-#define PIPE_TEXTURE_1D 0
-#define PIPE_TEXTURE_2D 1
-#define PIPE_TEXTURE_3D 2
-#define PIPE_TEXTURE_CUBE 3
+#define PIPE_BUFFER_FLAG_READ 0x1
+#define PIPE_BUFFER_FLAG_WRITE 0x2
+
+
+/**
+ * Buffer usage flags
+ */
+#define PIPE_BUFFER_USAGE_PIXEL (1 << 0)
+#define PIPE_BUFFER_USAGE_VERTEX (1 << 1)
+#define PIPE_BUFFER_USAGE_INDEX (1 << 2)
+#define PIPE_BUFFER_USAGE_CONSTANT (1 << 3)
+/** Pipe driver custam usage flags should be greater or equal to this value */
+#define PIPE_BUFFER_USAGE_CUSTOM (1 << 16)
+
+/**
+ * Flush types:
+ */
+#define PIPE_FLUSH_RENDER_CACHE 0x1
+#define PIPE_FLUSH_TEXTURE_CACHE 0x2
+
+
+/**
+ * Shaders
+ */
+#define PIPE_SHADER_VERTEX 0
+#define PIPE_SHADER_FRAGMENT 1
+#define PIPE_SHADER_TYPES 2
+
+
+/**
+ * Primitive types:
+ */
+#define PIPE_PRIM_POINTS 0
+#define PIPE_PRIM_LINES 1
+#define PIPE_PRIM_LINE_LOOP 2
+#define PIPE_PRIM_LINE_STRIP 3
+#define PIPE_PRIM_TRIANGLES 4
+#define PIPE_PRIM_TRIANGLE_STRIP 5
+#define PIPE_PRIM_TRIANGLE_FAN 6
+#define PIPE_PRIM_QUADS 7
+#define PIPE_PRIM_QUAD_STRIP 8
+#define PIPE_PRIM_POLYGON 9
+
+
+/**
+ * Query object types
+ */
+#define PIPE_QUERY_OCCLUSION_COUNTER 0
+#define PIPE_QUERY_PRIMITIVES_GENERATED 1
+#define PIPE_QUERY_PRIMITIVES_EMITTED 2
+#define PIPE_QUERY_TYPES 3
+
+
+/**
+ * Point sprite coord modes
+ */
+#define PIPE_SPRITE_COORD_NONE 0
+#define PIPE_SPRITE_COORD_UPPER_LEFT 1
+#define PIPE_SPRITE_COORD_LOWER_LEFT 2
+
/**
- * Buffer mapping access modes
+ * Implementation capabilities/limits
+ * Passed to pipe->get_param()
+ * XXX this will need some fine tuning...
*/
-#define PIPE_MAP_READ 1
-#define PIPE_MAP_WRITE 2
-#define PIPE_MAP_READ_WRITE 3
+#define PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS 1
+#define PIPE_CAP_NPOT_TEXTURES 2
+#define PIPE_CAP_TWO_SIDED_STENCIL 3
+#define PIPE_CAP_GLSL 4 /* XXX need something better */
+#define PIPE_CAP_S3TC 5
+#define PIPE_CAP_ANISOTROPIC_FILTER 6
+#define PIPE_CAP_POINT_SPRITE 7
+#define PIPE_CAP_MAX_RENDER_TARGETS 8
+#define PIPE_CAP_OCCLUSION_QUERY 9
+#define PIPE_CAP_TEXTURE_SHADOW_MAP 10
+#define PIPE_CAP_MAX_TEXTURE_2D_LEVELS 11
+#define PIPE_CAP_MAX_TEXTURE_3D_LEVELS 12
+#define PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS 13
#endif