Brian | 7234550 | 2007-05-24 16:49:27 -0600 | [diff] [blame] | 1 | /************************************************************************** |
| 2 | * |
| 3 | * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas. |
| 4 | * All Rights Reserved. |
| 5 | * |
| 6 | * Permission is hereby granted, free of charge, to any person obtaining a |
| 7 | * copy of this software and associated documentation files (the |
| 8 | * "Software"), to deal in the Software without restriction, including |
| 9 | * without limitation the rights to use, copy, modify, merge, publish, |
| 10 | * distribute, sub license, and/or sell copies of the Software, and to |
| 11 | * permit persons to whom the Software is furnished to do so, subject to |
| 12 | * the following conditions: |
| 13 | * |
| 14 | * The above copyright notice and this permission notice (including the |
| 15 | * next paragraph) shall be included in all copies or substantial portions |
| 16 | * of the Software. |
| 17 | * |
| 18 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
| 19 | * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
| 20 | * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. |
| 21 | * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR |
| 22 | * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, |
| 23 | * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE |
| 24 | * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
| 25 | * |
| 26 | **************************************************************************/ |
| 27 | |
Keith Whitwell | 943964a | 2007-06-14 18:23:43 +0100 | [diff] [blame] | 28 | #ifndef PIPE_DEFINES_H |
| 29 | #define PIPE_DEFINES_H |
Keith Whitwell | 8e4a95a | 2007-05-24 10:41:34 +0100 | [diff] [blame] | 30 | |
michal | 26df9d1 | 2007-10-26 17:17:52 +0100 | [diff] [blame] | 31 | #include "p_format.h" |
| 32 | |
José Fonseca | e4e3008 | 2008-02-25 20:05:41 +0900 | [diff] [blame] | 33 | #ifdef __cplusplus |
| 34 | extern "C" { |
| 35 | #endif |
| 36 | |
Keith Whitwell | 943964a | 2007-06-14 18:23:43 +0100 | [diff] [blame] | 37 | #define PIPE_BLENDFACTOR_ONE 0x1 |
| 38 | #define PIPE_BLENDFACTOR_SRC_COLOR 0x2 |
| 39 | #define PIPE_BLENDFACTOR_SRC_ALPHA 0x3 |
| 40 | #define PIPE_BLENDFACTOR_DST_ALPHA 0x4 |
| 41 | #define PIPE_BLENDFACTOR_DST_COLOR 0x5 |
| 42 | #define PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE 0x6 |
| 43 | #define PIPE_BLENDFACTOR_CONST_COLOR 0x7 |
| 44 | #define PIPE_BLENDFACTOR_CONST_ALPHA 0x8 |
| 45 | #define PIPE_BLENDFACTOR_SRC1_COLOR 0x9 |
| 46 | #define PIPE_BLENDFACTOR_SRC1_ALPHA 0x0A |
| 47 | #define PIPE_BLENDFACTOR_ZERO 0x11 |
| 48 | #define PIPE_BLENDFACTOR_INV_SRC_COLOR 0x12 |
| 49 | #define PIPE_BLENDFACTOR_INV_SRC_ALPHA 0x13 |
| 50 | #define PIPE_BLENDFACTOR_INV_DST_ALPHA 0x14 |
| 51 | #define PIPE_BLENDFACTOR_INV_DST_COLOR 0x15 |
| 52 | #define PIPE_BLENDFACTOR_INV_CONST_COLOR 0x17 |
| 53 | #define PIPE_BLENDFACTOR_INV_CONST_ALPHA 0x18 |
| 54 | #define PIPE_BLENDFACTOR_INV_SRC1_COLOR 0x19 |
| 55 | #define PIPE_BLENDFACTOR_INV_SRC1_ALPHA 0x1A |
Keith Whitwell | 8e4a95a | 2007-05-24 10:41:34 +0100 | [diff] [blame] | 56 | |
Keith Whitwell | 943964a | 2007-06-14 18:23:43 +0100 | [diff] [blame] | 57 | #define PIPE_BLEND_ADD 0 |
| 58 | #define PIPE_BLEND_SUBTRACT 1 |
| 59 | #define PIPE_BLEND_REVERSE_SUBTRACT 2 |
| 60 | #define PIPE_BLEND_MIN 3 |
| 61 | #define PIPE_BLEND_MAX 4 |
Keith Whitwell | 8e4a95a | 2007-05-24 10:41:34 +0100 | [diff] [blame] | 62 | |
Keith Whitwell | 943964a | 2007-06-14 18:23:43 +0100 | [diff] [blame] | 63 | #define PIPE_LOGICOP_CLEAR 0 |
| 64 | #define PIPE_LOGICOP_NOR 1 |
| 65 | #define PIPE_LOGICOP_AND_INVERTED 2 |
| 66 | #define PIPE_LOGICOP_COPY_INVERTED 3 |
| 67 | #define PIPE_LOGICOP_AND_REVERSE 4 |
| 68 | #define PIPE_LOGICOP_INVERT 5 |
| 69 | #define PIPE_LOGICOP_XOR 6 |
| 70 | #define PIPE_LOGICOP_NAND 7 |
| 71 | #define PIPE_LOGICOP_AND 8 |
| 72 | #define PIPE_LOGICOP_EQUIV 9 |
| 73 | #define PIPE_LOGICOP_NOOP 10 |
| 74 | #define PIPE_LOGICOP_OR_INVERTED 11 |
| 75 | #define PIPE_LOGICOP_COPY 12 |
| 76 | #define PIPE_LOGICOP_OR_REVERSE 13 |
| 77 | #define PIPE_LOGICOP_OR 14 |
| 78 | #define PIPE_LOGICOP_SET 15 |
Keith Whitwell | 8e4a95a | 2007-05-24 10:41:34 +0100 | [diff] [blame] | 79 | |
Brian | 86352ff | 2007-07-12 12:20:14 -0600 | [diff] [blame] | 80 | #define PIPE_MASK_R 0x1 |
| 81 | #define PIPE_MASK_G 0x2 |
| 82 | #define PIPE_MASK_B 0x4 |
| 83 | #define PIPE_MASK_A 0x8 |
Brian | 5936b439 | 2007-08-02 10:29:04 -0600 | [diff] [blame] | 84 | #define PIPE_MASK_RGBA 0xf |
| 85 | |
Brian | 86352ff | 2007-07-12 12:20:14 -0600 | [diff] [blame] | 86 | |
Brian | efe6c50 | 2007-06-18 17:53:09 -0600 | [diff] [blame] | 87 | /** |
| 88 | * Inequality functions. Used for depth test, stencil compare, alpha |
| 89 | * test, shadow compare, etc. |
| 90 | */ |
| 91 | #define PIPE_FUNC_NEVER 0 |
| 92 | #define PIPE_FUNC_LESS 1 |
| 93 | #define PIPE_FUNC_EQUAL 2 |
| 94 | #define PIPE_FUNC_LEQUAL 3 |
| 95 | #define PIPE_FUNC_GREATER 4 |
| 96 | #define PIPE_FUNC_NOTEQUAL 5 |
| 97 | #define PIPE_FUNC_GEQUAL 6 |
| 98 | #define PIPE_FUNC_ALWAYS 7 |
Brian | 008fb50 | 2007-05-24 17:37:36 -0600 | [diff] [blame] | 99 | |
Brian | 2137e30 | 2007-06-19 08:43:05 -0600 | [diff] [blame] | 100 | /** Polygon fill mode */ |
| 101 | #define PIPE_POLYGON_MODE_FILL 0 |
| 102 | #define PIPE_POLYGON_MODE_LINE 1 |
| 103 | #define PIPE_POLYGON_MODE_POINT 2 |
| 104 | |
Brian | f79c225 | 2007-06-22 12:47:04 -0600 | [diff] [blame] | 105 | /** Polygon front/back window, also for culling */ |
| 106 | #define PIPE_WINDING_NONE 0 |
| 107 | #define PIPE_WINDING_CW 1 |
| 108 | #define PIPE_WINDING_CCW 2 |
| 109 | #define PIPE_WINDING_BOTH (PIPE_WINDING_CW | PIPE_WINDING_CCW) |
Brian | 2137e30 | 2007-06-19 08:43:05 -0600 | [diff] [blame] | 110 | |
Brian | f79c225 | 2007-06-22 12:47:04 -0600 | [diff] [blame] | 111 | /** Stencil ops */ |
Keith Whitwell | 943964a | 2007-06-14 18:23:43 +0100 | [diff] [blame] | 112 | #define PIPE_STENCIL_OP_KEEP 0 |
| 113 | #define PIPE_STENCIL_OP_ZERO 1 |
| 114 | #define PIPE_STENCIL_OP_REPLACE 2 |
| 115 | #define PIPE_STENCIL_OP_INCR 3 |
| 116 | #define PIPE_STENCIL_OP_DECR 4 |
| 117 | #define PIPE_STENCIL_OP_INCR_WRAP 5 |
| 118 | #define PIPE_STENCIL_OP_DECR_WRAP 6 |
| 119 | #define PIPE_STENCIL_OP_INVERT 7 |
Brian | 008fb50 | 2007-05-24 17:37:36 -0600 | [diff] [blame] | 120 | |
Brian | eb147ed | 2007-08-08 10:26:16 -0600 | [diff] [blame] | 121 | /** Texture types */ |
Michel Dänzer | 1c5f27a | 2008-01-04 17:06:55 +0100 | [diff] [blame] | 122 | enum pipe_texture_target { |
| 123 | PIPE_TEXTURE_1D = 0, |
| 124 | PIPE_TEXTURE_2D = 1, |
| 125 | PIPE_TEXTURE_3D = 2, |
| 126 | PIPE_TEXTURE_CUBE = 3 |
| 127 | }; |
Brian | eb147ed | 2007-08-08 10:26:16 -0600 | [diff] [blame] | 128 | |
| 129 | #define PIPE_TEX_FACE_POS_X 0 |
| 130 | #define PIPE_TEX_FACE_NEG_X 1 |
| 131 | #define PIPE_TEX_FACE_POS_Y 2 |
| 132 | #define PIPE_TEX_FACE_NEG_Y 3 |
| 133 | #define PIPE_TEX_FACE_POS_Z 4 |
| 134 | #define PIPE_TEX_FACE_NEG_Z 5 |
| 135 | |
Keith Whitwell | 943964a | 2007-06-14 18:23:43 +0100 | [diff] [blame] | 136 | #define PIPE_TEX_WRAP_REPEAT 0 |
| 137 | #define PIPE_TEX_WRAP_CLAMP 1 |
| 138 | #define PIPE_TEX_WRAP_CLAMP_TO_EDGE 2 |
| 139 | #define PIPE_TEX_WRAP_CLAMP_TO_BORDER 3 |
| 140 | #define PIPE_TEX_WRAP_MIRROR_REPEAT 4 |
| 141 | #define PIPE_TEX_WRAP_MIRROR_CLAMP 5 |
| 142 | #define PIPE_TEX_WRAP_MIRROR_CLAMP_TO_EDGE 6 |
| 143 | #define PIPE_TEX_WRAP_MIRROR_CLAMP_TO_BORDER 7 |
Brian | 02a4754 | 2007-05-30 16:26:55 -0600 | [diff] [blame] | 144 | |
Keith Whitwell | 78b1a29 | 2007-08-09 19:09:19 +0100 | [diff] [blame] | 145 | /* Between mipmaps, ie mipfilter |
| 146 | */ |
| 147 | #define PIPE_TEX_MIPFILTER_NEAREST 0 |
| 148 | #define PIPE_TEX_MIPFILTER_LINEAR 1 |
| 149 | #define PIPE_TEX_MIPFILTER_NONE 2 |
| 150 | |
| 151 | /* Within a mipmap, ie min/mag filter |
| 152 | */ |
| 153 | #define PIPE_TEX_FILTER_NEAREST 0 |
| 154 | #define PIPE_TEX_FILTER_LINEAR 1 |
Keith Whitwell | 98ae83d | 2008-03-12 10:39:25 +0000 | [diff] [blame] | 155 | #define PIPE_TEX_FILTER_ANISO 2 |
Keith Whitwell | 78b1a29 | 2007-08-09 19:09:19 +0100 | [diff] [blame] | 156 | |
Brian | 02a4754 | 2007-05-30 16:26:55 -0600 | [diff] [blame] | 157 | |
Keith Whitwell | 943964a | 2007-06-14 18:23:43 +0100 | [diff] [blame] | 158 | #define PIPE_TEX_COMPARE_NONE 0 |
| 159 | #define PIPE_TEX_COMPARE_R_TO_TEXTURE 1 |
Brian | 8f28887 | 2007-05-30 16:07:39 -0600 | [diff] [blame] | 160 | |
Keith Whitwell | 40a86b2 | 2007-08-13 16:07:11 +0100 | [diff] [blame] | 161 | #define PIPE_TEX_FACE_POS_X 0 |
| 162 | #define PIPE_TEX_FACE_NEG_X 1 |
| 163 | #define PIPE_TEX_FACE_POS_Y 2 |
| 164 | #define PIPE_TEX_FACE_NEG_Y 3 |
| 165 | #define PIPE_TEX_FACE_POS_Z 4 |
| 166 | #define PIPE_TEX_FACE_NEG_Z 5 |
| 167 | #define PIPE_TEX_FACE_MAX 6 |
| 168 | |
Brian | 48076dc | 2007-06-29 12:59:58 -0600 | [diff] [blame] | 169 | /** |
Brian | 4f58d9a | 2007-12-10 13:48:09 -0700 | [diff] [blame] | 170 | * Surfaces, textures, etc. (others may be added) |
Brian | 48076dc | 2007-06-29 12:59:58 -0600 | [diff] [blame] | 171 | */ |
Brian | 4f58d9a | 2007-12-10 13:48:09 -0700 | [diff] [blame] | 172 | #define PIPE_TEXTURE 1 |
| 173 | #define PIPE_SURFACE 2 /**< user-created surfaces */ |
Brian | 9ac1a8d | 2007-08-10 12:13:48 -0600 | [diff] [blame] | 174 | |
| 175 | |
| 176 | /** |
Brian | dd5a8d2 | 2008-01-15 14:18:17 -0700 | [diff] [blame] | 177 | * Surface status |
| 178 | */ |
| 179 | #define PIPE_SURFACE_STATUS_UNDEFINED 0 |
| 180 | #define PIPE_SURFACE_STATUS_DEFINED 1 |
| 181 | #define PIPE_SURFACE_STATUS_CLEAR 2 |
| 182 | |
| 183 | |
| 184 | /** |
José Fonseca | fa1a66d | 2007-11-05 18:04:35 +0000 | [diff] [blame] | 185 | * Buffer usage flags |
| 186 | */ |
Michel Dänzer | 756d52e | 2008-01-25 17:01:01 +0100 | [diff] [blame] | 187 | #define PIPE_BUFFER_USAGE_CPU_READ (1 << 0) |
| 188 | #define PIPE_BUFFER_USAGE_CPU_WRITE (1 << 1) |
| 189 | #define PIPE_BUFFER_USAGE_GPU_READ (1 << 2) |
| 190 | #define PIPE_BUFFER_USAGE_GPU_WRITE (1 << 3) |
| 191 | #define PIPE_BUFFER_USAGE_PIXEL (1 << 4) |
| 192 | #define PIPE_BUFFER_USAGE_VERTEX (1 << 5) |
| 193 | #define PIPE_BUFFER_USAGE_INDEX (1 << 6) |
| 194 | #define PIPE_BUFFER_USAGE_CONSTANT (1 << 7) |
Brian Paul | bd5b99d | 2008-04-30 13:24:35 -0600 | [diff] [blame^] | 195 | /** Pipe driver custom usage flags should be greater or equal to this value */ |
Michel Dänzer | 756d52e | 2008-01-25 17:01:01 +0100 | [diff] [blame] | 196 | #define PIPE_BUFFER_USAGE_CUSTOM (1 << 16) |
| 197 | |
Keith Whitwell | 93d5cfd | 2007-08-08 16:42:01 +0100 | [diff] [blame] | 198 | |
| 199 | /** |
| 200 | * Flush types: |
| 201 | */ |
Brian | ae44a81 | 2007-11-07 16:59:37 -0700 | [diff] [blame] | 202 | #define PIPE_FLUSH_RENDER_CACHE 0x1 |
Keith Whitwell | 93d5cfd | 2007-08-08 16:42:01 +0100 | [diff] [blame] | 203 | #define PIPE_FLUSH_TEXTURE_CACHE 0x2 |
Michel Dänzer | 4abe1eb | 2008-03-26 09:36:40 +0000 | [diff] [blame] | 204 | #define PIPE_FLUSH_SWAPBUFFERS 0x4 |
Keith Whitwell | 93d5cfd | 2007-08-08 16:42:01 +0100 | [diff] [blame] | 205 | |
Keith Whitwell | 40a86b2 | 2007-08-13 16:07:11 +0100 | [diff] [blame] | 206 | |
Brian | 94a4910 | 2007-08-15 19:13:03 -0600 | [diff] [blame] | 207 | /** |
Brian | c0bb4ba | 2007-08-22 12:24:51 -0600 | [diff] [blame] | 208 | * Shaders |
| 209 | */ |
| 210 | #define PIPE_SHADER_VERTEX 0 |
| 211 | #define PIPE_SHADER_FRAGMENT 1 |
| 212 | #define PIPE_SHADER_TYPES 2 |
| 213 | |
| 214 | |
| 215 | /** |
Brian | 94a4910 | 2007-08-15 19:13:03 -0600 | [diff] [blame] | 216 | * Primitive types: |
| 217 | */ |
| 218 | #define PIPE_PRIM_POINTS 0 |
| 219 | #define PIPE_PRIM_LINES 1 |
| 220 | #define PIPE_PRIM_LINE_LOOP 2 |
| 221 | #define PIPE_PRIM_LINE_STRIP 3 |
| 222 | #define PIPE_PRIM_TRIANGLES 4 |
| 223 | #define PIPE_PRIM_TRIANGLE_STRIP 5 |
| 224 | #define PIPE_PRIM_TRIANGLE_FAN 6 |
| 225 | #define PIPE_PRIM_QUADS 7 |
| 226 | #define PIPE_PRIM_QUAD_STRIP 8 |
| 227 | #define PIPE_PRIM_POLYGON 9 |
| 228 | |
Keith Whitwell | 40a86b2 | 2007-08-13 16:07:11 +0100 | [diff] [blame] | 229 | |
Brian | 09fbb38 | 2007-09-11 16:01:17 -0600 | [diff] [blame] | 230 | /** |
| 231 | * Query object types |
| 232 | */ |
| 233 | #define PIPE_QUERY_OCCLUSION_COUNTER 0 |
| 234 | #define PIPE_QUERY_PRIMITIVES_GENERATED 1 |
| 235 | #define PIPE_QUERY_PRIMITIVES_EMITTED 2 |
| 236 | #define PIPE_QUERY_TYPES 3 |
| 237 | |
Brian | 37cf13e | 2007-09-19 18:53:36 -0600 | [diff] [blame] | 238 | |
Brian | 1b48523 | 2007-10-22 12:10:30 -0600 | [diff] [blame] | 239 | /** |
| 240 | * Point sprite coord modes |
| 241 | */ |
| 242 | #define PIPE_SPRITE_COORD_NONE 0 |
| 243 | #define PIPE_SPRITE_COORD_UPPER_LEFT 1 |
| 244 | #define PIPE_SPRITE_COORD_LOWER_LEFT 2 |
| 245 | |
Brian | c6499a7 | 2007-11-05 18:04:30 -0700 | [diff] [blame] | 246 | |
| 247 | /** |
| 248 | * Implementation capabilities/limits |
| 249 | * Passed to pipe->get_param() |
| 250 | * XXX this will need some fine tuning... |
| 251 | */ |
| 252 | #define PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS 1 |
| 253 | #define PIPE_CAP_NPOT_TEXTURES 2 |
| 254 | #define PIPE_CAP_TWO_SIDED_STENCIL 3 |
| 255 | #define PIPE_CAP_GLSL 4 /* XXX need something better */ |
| 256 | #define PIPE_CAP_S3TC 5 |
| 257 | #define PIPE_CAP_ANISOTROPIC_FILTER 6 |
| 258 | #define PIPE_CAP_POINT_SPRITE 7 |
| 259 | #define PIPE_CAP_MAX_RENDER_TARGETS 8 |
| 260 | #define PIPE_CAP_OCCLUSION_QUERY 9 |
Brian | e2feb80 | 2007-11-06 09:41:45 -0700 | [diff] [blame] | 261 | #define PIPE_CAP_TEXTURE_SHADOW_MAP 10 |
| 262 | #define PIPE_CAP_MAX_TEXTURE_2D_LEVELS 11 |
| 263 | #define PIPE_CAP_MAX_TEXTURE_3D_LEVELS 12 |
| 264 | #define PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS 13 |
Brian | 44254b9 | 2007-11-08 08:22:42 -0700 | [diff] [blame] | 265 | #define PIPE_CAP_MAX_LINE_WIDTH 14 |
| 266 | #define PIPE_CAP_MAX_LINE_WIDTH_AA 15 |
| 267 | #define PIPE_CAP_MAX_POINT_WIDTH 16 |
| 268 | #define PIPE_CAP_MAX_POINT_WIDTH_AA 17 |
| 269 | #define PIPE_CAP_MAX_TEXTURE_ANISOTROPY 18 |
| 270 | #define PIPE_CAP_MAX_TEXTURE_LOD_BIAS 19 |
Brian | 4650b35 | 2008-02-05 16:32:15 -0700 | [diff] [blame] | 271 | #define PIPE_CAP_BITMAP_TEXCOORD_BIAS 20 |
Brian | c6499a7 | 2007-11-05 18:04:30 -0700 | [diff] [blame] | 272 | |
José Fonseca | e4e3008 | 2008-02-25 20:05:41 +0900 | [diff] [blame] | 273 | #ifdef __cplusplus |
| 274 | } |
| 275 | #endif |
| 276 | |
Brian | 7234550 | 2007-05-24 16:49:27 -0600 | [diff] [blame] | 277 | #endif |