gallium: rename pipe_buffer_handle to pipe_buffer, rework pipebuffer/ code
[mesa.git] / src / mesa / pipe / p_defines.h
index 7212040b3629ab5399f50574bf22c3c25bfbc255..90eebd5e6c64a16767f6ecdf83f1014aaa6d4c4b 100644 (file)
@@ -28,6 +28,8 @@
 #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 */
+enum pipe_texture_target {
+   PIPE_TEXTURE_1D   = 0,
+   PIPE_TEXTURE_2D   = 1,
+   PIPE_TEXTURE_3D   = 2,
+   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
+
+/**
+ * Surfaces, textures, etc. (others may be added)
+ */
+#define PIPE_TEXTURE        1
+#define PIPE_SURFACE        2  /**< user-created surfaces */
+
+
+/**
+ * Surface status
+ */
+#define PIPE_SURFACE_STATUS_UNDEFINED  0
+#define PIPE_SURFACE_STATUS_DEFINED    1
+#define PIPE_SURFACE_STATUS_CLEAR      2
+
+
 /**
- * Texture/surface image formats
+ * Buffer usage 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_BUFFER_USAGE_CPU_READ  (1 << 0)
+#define PIPE_BUFFER_USAGE_CPU_WRITE (1 << 1)
+#define PIPE_BUFFER_USAGE_GPU_READ  (1 << 2)
+#define PIPE_BUFFER_USAGE_GPU_WRITE (1 << 3)
+#define PIPE_BUFFER_USAGE_PIXEL     (1 << 4)
+#define PIPE_BUFFER_USAGE_VERTEX    (1 << 5)
+#define PIPE_BUFFER_USAGE_INDEX     (1 << 6)
+#define PIPE_BUFFER_USAGE_CONSTANT  (1 << 7)
+/** 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
+#define PIPE_FLUSH_WAIT           0x4
+
+
+/**
+ * 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
+
 
 /**
- * Texture typess
+ * Query object types
  */
-#define PIPE_TEXTURE_1D   0
-#define PIPE_TEXTURE_2D   1
-#define PIPE_TEXTURE_3D   2
-#define PIPE_TEXTURE_CUBE 3
+#define PIPE_QUERY_OCCLUSION_COUNTER     0
+#define PIPE_QUERY_PRIMITIVES_GENERATED  1
+#define PIPE_QUERY_PRIMITIVES_EMITTED    2
+#define PIPE_QUERY_TYPES                 3
+
 
 /**
- * Buffer mapping access modes
+ * Point sprite coord modes
  */
-#define PIPE_MAP_READ         1
-#define PIPE_MAP_WRITE        2
-#define PIPE_MAP_READ_WRITE   3
+#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
+#define PIPE_CAP_MAX_LINE_WIDTH          14
+#define PIPE_CAP_MAX_LINE_WIDTH_AA       15
+#define PIPE_CAP_MAX_POINT_WIDTH         16
+#define PIPE_CAP_MAX_POINT_WIDTH_AA      17
+#define PIPE_CAP_MAX_TEXTURE_ANISOTROPY  18
+#define PIPE_CAP_MAX_TEXTURE_LOD_BIAS    19
+
 
 #endif