#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_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 (preliminary)
+ * Surface flags
*/
-#define PIPE_FORMAT_NONE 0 /**< unstructured */
-#define PIPE_FORMAT_U_R8_G8_B8_A8 1 /**< ubyte[4] RGBA */
-#define PIPE_FORMAT_U_A8_R8_G8_B8 2 /**< ubyte[4] ARGB */
-#define PIPE_FORMAT_U_A1_R5_G5_B5 3 /**< 16-bit packed RGBA */
-#define PIPE_FORMAT_U_A4_R4_G4_B4 4 /**< 16-bit packed RGBA */
-#define PIPE_FORMAT_U_R5_G6_B5 5 /**< 16-bit packed RGB */
-#define PIPE_FORMAT_U_L8 6 /**< ubyte luminance */
-#define PIPE_FORMAT_U_A8 7 /**< ubyte alpha */
-#define PIPE_FORMAT_U_I8 8 /**< ubyte intensity */
-#define PIPE_FORMAT_U_L8_A8 9 /**< ubyte luminance, alpha */
-#define PIPE_FORMAT_S_R16_G16_B16_A16 10 /**< signed 16-bit RGBA (accum) */
-#define PIPE_FORMAT_YCBCR 11
-#define PIPE_FORMAT_YCBCR_REV 12
-#define PIPE_FORMAT_U_Z16 13 /**< ushort Z/depth */
-#define PIPE_FORMAT_U_Z32 14 /**< uint Z/depth */
-#define PIPE_FORMAT_F_Z32 15 /**< float Z/depth */
-#define PIPE_FORMAT_S8_Z24 16 /**< 8-bit stencil + 24-bit Z */
-#define PIPE_FORMAT_U_S8 17 /**< 8-bit stencil */
-#define PIPE_FORMAT_COUNT 18 /**< number of formats */
+#define PIPE_SURFACE_FLAG_TEXTURE 0x1
+#define PIPE_SURFACE_FLAG_RENDER 0x2
/**
- * Buffer mapping access modes
+ * Buffer access flags
*/
-#define PIPE_MAP_READ 1
-#define PIPE_MAP_WRITE 2
-#define PIPE_MAP_READ_WRITE 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
+
+
+/**
+ * Implementation capabilities/limits
+ * Passed to pipe->get_param()
+ * XXX this will need some fine tuning...
+ */
+#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