Clone of mesa.
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

p_defines.h 8.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278
  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. #ifndef PIPE_DEFINES_H
  28. #define PIPE_DEFINES_H
  29. #include "p_format.h"
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif
  33. #define PIPE_BLENDFACTOR_ONE 0x1
  34. #define PIPE_BLENDFACTOR_SRC_COLOR 0x2
  35. #define PIPE_BLENDFACTOR_SRC_ALPHA 0x3
  36. #define PIPE_BLENDFACTOR_DST_ALPHA 0x4
  37. #define PIPE_BLENDFACTOR_DST_COLOR 0x5
  38. #define PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE 0x6
  39. #define PIPE_BLENDFACTOR_CONST_COLOR 0x7
  40. #define PIPE_BLENDFACTOR_CONST_ALPHA 0x8
  41. #define PIPE_BLENDFACTOR_SRC1_COLOR 0x9
  42. #define PIPE_BLENDFACTOR_SRC1_ALPHA 0x0A
  43. #define PIPE_BLENDFACTOR_ZERO 0x11
  44. #define PIPE_BLENDFACTOR_INV_SRC_COLOR 0x12
  45. #define PIPE_BLENDFACTOR_INV_SRC_ALPHA 0x13
  46. #define PIPE_BLENDFACTOR_INV_DST_ALPHA 0x14
  47. #define PIPE_BLENDFACTOR_INV_DST_COLOR 0x15
  48. #define PIPE_BLENDFACTOR_INV_CONST_COLOR 0x17
  49. #define PIPE_BLENDFACTOR_INV_CONST_ALPHA 0x18
  50. #define PIPE_BLENDFACTOR_INV_SRC1_COLOR 0x19
  51. #define PIPE_BLENDFACTOR_INV_SRC1_ALPHA 0x1A
  52. #define PIPE_BLEND_ADD 0
  53. #define PIPE_BLEND_SUBTRACT 1
  54. #define PIPE_BLEND_REVERSE_SUBTRACT 2
  55. #define PIPE_BLEND_MIN 3
  56. #define PIPE_BLEND_MAX 4
  57. #define PIPE_LOGICOP_CLEAR 0
  58. #define PIPE_LOGICOP_NOR 1
  59. #define PIPE_LOGICOP_AND_INVERTED 2
  60. #define PIPE_LOGICOP_COPY_INVERTED 3
  61. #define PIPE_LOGICOP_AND_REVERSE 4
  62. #define PIPE_LOGICOP_INVERT 5
  63. #define PIPE_LOGICOP_XOR 6
  64. #define PIPE_LOGICOP_NAND 7
  65. #define PIPE_LOGICOP_AND 8
  66. #define PIPE_LOGICOP_EQUIV 9
  67. #define PIPE_LOGICOP_NOOP 10
  68. #define PIPE_LOGICOP_OR_INVERTED 11
  69. #define PIPE_LOGICOP_COPY 12
  70. #define PIPE_LOGICOP_OR_REVERSE 13
  71. #define PIPE_LOGICOP_OR 14
  72. #define PIPE_LOGICOP_SET 15
  73. #define PIPE_MASK_R 0x1
  74. #define PIPE_MASK_G 0x2
  75. #define PIPE_MASK_B 0x4
  76. #define PIPE_MASK_A 0x8
  77. #define PIPE_MASK_RGBA 0xf
  78. /**
  79. * Inequality functions. Used for depth test, stencil compare, alpha
  80. * test, shadow compare, etc.
  81. */
  82. #define PIPE_FUNC_NEVER 0
  83. #define PIPE_FUNC_LESS 1
  84. #define PIPE_FUNC_EQUAL 2
  85. #define PIPE_FUNC_LEQUAL 3
  86. #define PIPE_FUNC_GREATER 4
  87. #define PIPE_FUNC_NOTEQUAL 5
  88. #define PIPE_FUNC_GEQUAL 6
  89. #define PIPE_FUNC_ALWAYS 7
  90. /** Polygon fill mode */
  91. #define PIPE_POLYGON_MODE_FILL 0
  92. #define PIPE_POLYGON_MODE_LINE 1
  93. #define PIPE_POLYGON_MODE_POINT 2
  94. /** Polygon front/back window, also for culling */
  95. #define PIPE_WINDING_NONE 0
  96. #define PIPE_WINDING_CW 1
  97. #define PIPE_WINDING_CCW 2
  98. #define PIPE_WINDING_BOTH (PIPE_WINDING_CW | PIPE_WINDING_CCW)
  99. /** Stencil ops */
  100. #define PIPE_STENCIL_OP_KEEP 0
  101. #define PIPE_STENCIL_OP_ZERO 1
  102. #define PIPE_STENCIL_OP_REPLACE 2
  103. #define PIPE_STENCIL_OP_INCR 3
  104. #define PIPE_STENCIL_OP_DECR 4
  105. #define PIPE_STENCIL_OP_INCR_WRAP 5
  106. #define PIPE_STENCIL_OP_DECR_WRAP 6
  107. #define PIPE_STENCIL_OP_INVERT 7
  108. /** Texture types */
  109. enum pipe_texture_target {
  110. PIPE_TEXTURE_1D = 0,
  111. PIPE_TEXTURE_2D = 1,
  112. PIPE_TEXTURE_3D = 2,
  113. PIPE_TEXTURE_CUBE = 3
  114. };
  115. #define PIPE_TEX_FACE_POS_X 0
  116. #define PIPE_TEX_FACE_NEG_X 1
  117. #define PIPE_TEX_FACE_POS_Y 2
  118. #define PIPE_TEX_FACE_NEG_Y 3
  119. #define PIPE_TEX_FACE_POS_Z 4
  120. #define PIPE_TEX_FACE_NEG_Z 5
  121. #define PIPE_TEX_WRAP_REPEAT 0
  122. #define PIPE_TEX_WRAP_CLAMP 1
  123. #define PIPE_TEX_WRAP_CLAMP_TO_EDGE 2
  124. #define PIPE_TEX_WRAP_CLAMP_TO_BORDER 3
  125. #define PIPE_TEX_WRAP_MIRROR_REPEAT 4
  126. #define PIPE_TEX_WRAP_MIRROR_CLAMP 5
  127. #define PIPE_TEX_WRAP_MIRROR_CLAMP_TO_EDGE 6
  128. #define PIPE_TEX_WRAP_MIRROR_CLAMP_TO_BORDER 7
  129. /* Between mipmaps, ie mipfilter
  130. */
  131. #define PIPE_TEX_MIPFILTER_NEAREST 0
  132. #define PIPE_TEX_MIPFILTER_LINEAR 1
  133. #define PIPE_TEX_MIPFILTER_NONE 2
  134. /* Within a mipmap, ie min/mag filter
  135. */
  136. #define PIPE_TEX_FILTER_NEAREST 0
  137. #define PIPE_TEX_FILTER_LINEAR 1
  138. //#define PIPE_TEX_FILTER_ANISO 2
  139. #define PIPE_TEX_COMPARE_NONE 0
  140. #define PIPE_TEX_COMPARE_R_TO_TEXTURE 1
  141. #define PIPE_TEX_FACE_POS_X 0
  142. #define PIPE_TEX_FACE_NEG_X 1
  143. #define PIPE_TEX_FACE_POS_Y 2
  144. #define PIPE_TEX_FACE_NEG_Y 3
  145. #define PIPE_TEX_FACE_POS_Z 4
  146. #define PIPE_TEX_FACE_NEG_Z 5
  147. #define PIPE_TEX_FACE_MAX 6
  148. /**
  149. * Surfaces, textures, etc. (others may be added)
  150. */
  151. #define PIPE_TEXTURE 1
  152. #define PIPE_SURFACE 2 /**< user-created surfaces */
  153. /**
  154. * Surface status
  155. */
  156. #define PIPE_SURFACE_STATUS_UNDEFINED 0
  157. #define PIPE_SURFACE_STATUS_DEFINED 1
  158. #define PIPE_SURFACE_STATUS_CLEAR 2
  159. /**
  160. * Buffer usage flags
  161. */
  162. #define PIPE_BUFFER_USAGE_CPU_READ (1 << 0)
  163. #define PIPE_BUFFER_USAGE_CPU_WRITE (1 << 1)
  164. #define PIPE_BUFFER_USAGE_GPU_READ (1 << 2)
  165. #define PIPE_BUFFER_USAGE_GPU_WRITE (1 << 3)
  166. #define PIPE_BUFFER_USAGE_PIXEL (1 << 4)
  167. #define PIPE_BUFFER_USAGE_VERTEX (1 << 5)
  168. #define PIPE_BUFFER_USAGE_INDEX (1 << 6)
  169. #define PIPE_BUFFER_USAGE_CONSTANT (1 << 7)
  170. /** Pipe driver custam usage flags should be greater or equal to this value */
  171. #define PIPE_BUFFER_USAGE_CUSTOM (1 << 16)
  172. /**
  173. * Flush types:
  174. */
  175. #define PIPE_FLUSH_RENDER_CACHE 0x1
  176. #define PIPE_FLUSH_TEXTURE_CACHE 0x2
  177. #define PIPE_FLUSH_WAIT 0x4
  178. #define PIPE_FLUSH_SWAPBUFFERS 0x8
  179. /**
  180. * Shaders
  181. */
  182. #define PIPE_SHADER_VERTEX 0
  183. #define PIPE_SHADER_FRAGMENT 1
  184. #define PIPE_SHADER_TYPES 2
  185. /**
  186. * Primitive types:
  187. */
  188. #define PIPE_PRIM_POINTS 0
  189. #define PIPE_PRIM_LINES 1
  190. #define PIPE_PRIM_LINE_LOOP 2
  191. #define PIPE_PRIM_LINE_STRIP 3
  192. #define PIPE_PRIM_TRIANGLES 4
  193. #define PIPE_PRIM_TRIANGLE_STRIP 5
  194. #define PIPE_PRIM_TRIANGLE_FAN 6
  195. #define PIPE_PRIM_QUADS 7
  196. #define PIPE_PRIM_QUAD_STRIP 8
  197. #define PIPE_PRIM_POLYGON 9
  198. /**
  199. * Query object types
  200. */
  201. #define PIPE_QUERY_OCCLUSION_COUNTER 0
  202. #define PIPE_QUERY_PRIMITIVES_GENERATED 1
  203. #define PIPE_QUERY_PRIMITIVES_EMITTED 2
  204. #define PIPE_QUERY_TYPES 3
  205. /**
  206. * Point sprite coord modes
  207. */
  208. #define PIPE_SPRITE_COORD_NONE 0
  209. #define PIPE_SPRITE_COORD_UPPER_LEFT 1
  210. #define PIPE_SPRITE_COORD_LOWER_LEFT 2
  211. /**
  212. * Implementation capabilities/limits
  213. * Passed to pipe->get_param()
  214. * XXX this will need some fine tuning...
  215. */
  216. #define PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS 1
  217. #define PIPE_CAP_NPOT_TEXTURES 2
  218. #define PIPE_CAP_TWO_SIDED_STENCIL 3
  219. #define PIPE_CAP_GLSL 4 /* XXX need something better */
  220. #define PIPE_CAP_S3TC 5
  221. #define PIPE_CAP_ANISOTROPIC_FILTER 6
  222. #define PIPE_CAP_POINT_SPRITE 7
  223. #define PIPE_CAP_MAX_RENDER_TARGETS 8
  224. #define PIPE_CAP_OCCLUSION_QUERY 9
  225. #define PIPE_CAP_TEXTURE_SHADOW_MAP 10
  226. #define PIPE_CAP_MAX_TEXTURE_2D_LEVELS 11
  227. #define PIPE_CAP_MAX_TEXTURE_3D_LEVELS 12
  228. #define PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS 13
  229. #define PIPE_CAP_MAX_LINE_WIDTH 14
  230. #define PIPE_CAP_MAX_LINE_WIDTH_AA 15
  231. #define PIPE_CAP_MAX_POINT_WIDTH 16
  232. #define PIPE_CAP_MAX_POINT_WIDTH_AA 17
  233. #define PIPE_CAP_MAX_TEXTURE_ANISOTROPY 18
  234. #define PIPE_CAP_MAX_TEXTURE_LOD_BIAS 19
  235. #define PIPE_CAP_BITMAP_TEXCOORD_BIAS 20
  236. #ifdef __cplusplus
  237. }
  238. #endif
  239. #endif