Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /*
  2.  * Mesa 3-D graphics library
  3.  * Version:  7.5
  4.  *
  5.  * Copyright (C) 1999-2007  Brian Paul   All Rights Reserved.
  6.  * Copyright (C) 2008  VMware, Inc.  All Rights Reserved.
  7.  *
  8.  * Permission is hereby granted, free of charge, to any person obtaining a
  9.  * copy of this software and associated documentation files (the "Software"),
  10.  * to deal in the Software without restriction, including without limitation
  11.  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  12.  * and/or sell copies of the Software, and to permit persons to whom the
  13.  * Software is furnished to do so, subject to the following conditions:
  14.  *
  15.  * The above copyright notice and this permission notice shall be included
  16.  * in all copies or substantial portions 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 MERCHANTABILITY,
  20.  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  21.  * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
  22.  * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
  23.  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  24.  */
  25.  
  26. /**
  27.  * \file config.h
  28.  * Tunable configuration parameters.
  29.  */
  30.  
  31. #ifndef MESA_CONFIG_H_INCLUDED
  32. #define MESA_CONFIG_H_INCLUDED
  33.  
  34.  
  35. /**
  36.  * \name OpenGL implementation limits
  37.  */
  38. /*@{*/
  39.  
  40. /** Maximum modelview matrix stack depth */
  41. #define MAX_MODELVIEW_STACK_DEPTH 32
  42.  
  43. /** Maximum projection matrix stack depth */
  44. #define MAX_PROJECTION_STACK_DEPTH 32
  45.  
  46. /** Maximum texture matrix stack depth */
  47. #define MAX_TEXTURE_STACK_DEPTH 10
  48.  
  49. /** Maximum color matrix stack depth */
  50. #define MAX_COLOR_STACK_DEPTH 4
  51.  
  52. /** Maximum attribute stack depth */
  53. #define MAX_ATTRIB_STACK_DEPTH 16
  54.  
  55. /** Maximum client attribute stack depth */
  56. #define MAX_CLIENT_ATTRIB_STACK_DEPTH 16
  57.  
  58. /** Maximum recursion depth of display list calls */
  59. #define MAX_LIST_NESTING 64
  60.  
  61. /** Maximum number of lights */
  62. #define MAX_LIGHTS 8
  63.  
  64. /** Maximum user-defined clipping planes */
  65. #define MAX_CLIP_PLANES 6
  66.  
  67. /** Maximum pixel map lookup table size */
  68. #define MAX_PIXEL_MAP_TABLE 256
  69.  
  70. /** Maximum number of auxillary color buffers */
  71. #define MAX_AUX_BUFFERS 1
  72.  
  73. /** Maximum order (degree) of curves */
  74. #ifdef AMIGA
  75. #   define MAX_EVAL_ORDER 12
  76. #else
  77. #   define MAX_EVAL_ORDER 30
  78. #endif
  79.  
  80. /** Maximum Name stack depth */
  81. #define MAX_NAME_STACK_DEPTH 64
  82.  
  83. /** Minimum point size */
  84. #define MIN_POINT_SIZE 1.0
  85. /** Maximum point size */
  86. #define MAX_POINT_SIZE 60.0
  87. /** Point size granularity */
  88. #define POINT_SIZE_GRANULARITY 0.1
  89.  
  90. /** Minimum line width */
  91. #define MIN_LINE_WIDTH 1.0
  92. /** Maximum line width */
  93. #define MAX_LINE_WIDTH 10.0
  94. /** Line width granularity */
  95. #define LINE_WIDTH_GRANULARITY 0.1
  96.  
  97. /** Max texture palette / color table size */
  98. #define MAX_COLOR_TABLE_SIZE 256
  99.  
  100. /** Max memory to allow for a single texture image (in megabytes) */
  101. #define MAX_TEXTURE_MBYTES 1024
  102.  
  103. /** Number of 1D/2D texture mipmap levels */
  104. #define MAX_TEXTURE_LEVELS 15
  105.  
  106. /** Number of 3D texture mipmap levels */
  107. #define MAX_3D_TEXTURE_LEVELS 15
  108.  
  109. /** Number of cube texture mipmap levels - GL_ARB_texture_cube_map */
  110. #define MAX_CUBE_TEXTURE_LEVELS 15
  111.  
  112. /** Maximum rectangular texture size - GL_NV_texture_rectangle */
  113. #define MAX_TEXTURE_RECT_SIZE 16384
  114.  
  115. /** Maximum number of layers in a 1D or 2D array texture - GL_MESA_texture_array */
  116. #define MAX_ARRAY_TEXTURE_LAYERS 64
  117.  
  118. /**
  119.  * Max number of texture coordinate units.  This mainly just applies to
  120.  * the fixed-function vertex code.  This will be difficult to raise above
  121.  * eight because of various vertex attribute bitvectors.
  122.  */
  123. #define MAX_TEXTURE_COORD_UNITS 8
  124.  
  125. /**
  126.  * Max number of texture image units.  Also determines number of texture
  127.  * samplers in shaders.
  128.  */
  129. #define MAX_TEXTURE_IMAGE_UNITS 16
  130.  
  131. /**
  132.  * Larger of MAX_TEXTURE_COORD_UNITS and MAX_TEXTURE_IMAGE_UNITS.
  133.  * This value is only used for dimensioning arrays.
  134.  * Either MAX_TEXTURE_COORD_UNITS or MAX_TEXTURE_IMAGE_UNITS (or the
  135.  * corresponding ctx->Const.MaxTextureCoord/ImageUnits fields) should be
  136.  * used almost everywhere else.
  137.  */
  138. #define MAX_TEXTURE_UNITS ((MAX_TEXTURE_COORD_UNITS > MAX_TEXTURE_IMAGE_UNITS) ? MAX_TEXTURE_COORD_UNITS : MAX_TEXTURE_IMAGE_UNITS)
  139.  
  140.  
  141. /**
  142.  * Maximum viewport/image width. Must accomodate all texture sizes too.
  143.  */
  144.  
  145. #ifndef MAX_WIDTH
  146. #   define MAX_WIDTH 16384
  147. #endif
  148. /** Maximum viewport/image height */
  149. #ifndef MAX_HEIGHT
  150. #   define MAX_HEIGHT 16384
  151. #endif
  152.  
  153. /* XXX: hack to prevent stack overflow on windows until all temporary arrays
  154.  * [MAX_WIDTH] are allocated from the heap */
  155. #ifdef WIN32
  156. #undef MAX_TEXTURE_LEVELS
  157. #undef MAX_3D_TEXTURE_LEVELS
  158. #undef MAX_CUBE_TEXTURE_LEVELS
  159. #undef MAX_TEXTURE_RECT_SIZE
  160. #undef MAX_WIDTH
  161. #undef MAX_HEIGHT
  162. #define MAX_TEXTURE_LEVELS 13
  163. #define MAX_3D_TEXTURE_LEVELS 9
  164. #define MAX_CUBE_TEXTURE_LEVELS 13
  165. #define MAX_TEXTURE_RECT_SIZE 4096
  166. #define MAX_WIDTH 4096
  167. #define MAX_HEIGHT 4096
  168. #endif
  169.  
  170. /** Maxmimum size for CVA.  May be overridden by the drivers.  */
  171. #define MAX_ARRAY_LOCK_SIZE 3000
  172.  
  173. /** Subpixel precision for antialiasing, window coordinate snapping */
  174. #define SUB_PIXEL_BITS 4
  175.  
  176. /** Size of histogram tables */
  177. #define HISTOGRAM_TABLE_SIZE 256
  178.  
  179. /** Max convolution filter width */
  180. #define MAX_CONVOLUTION_WIDTH 9
  181. /** Max convolution filter height */
  182. #define MAX_CONVOLUTION_HEIGHT 9
  183.  
  184. /** For GL_ARB_texture_compression */
  185. #define MAX_COMPRESSED_TEXTURE_FORMATS 25
  186.  
  187. /** For GL_EXT_texture_filter_anisotropic */
  188. #define MAX_TEXTURE_MAX_ANISOTROPY 16.0
  189.  
  190. /** For GL_EXT_texture_lod_bias (typically MAX_TEXTURE_LEVELS - 1) */
  191. #define MAX_TEXTURE_LOD_BIAS 14.0
  192.  
  193. /** For any program target/extension */
  194. /*@{*/
  195. #define MAX_PROGRAM_INSTRUCTIONS       (16 * 1024)
  196.  
  197. /**
  198.  * Per-program constants (power of two)
  199.  *
  200.  * \c MAX_PROGRAM_LOCAL_PARAMS and \c MAX_UNIFORMS are just the assembly shader
  201.  * and GLSL shader names for the same thing.  They should \b always have the
  202.  * same value.  Each refers to the number of vec4 values supplied as
  203.  * per-program parameters.
  204.  */
  205. /*@{*/
  206. #define MAX_PROGRAM_LOCAL_PARAMS       1024
  207. #define MAX_UNIFORMS                   1024
  208. /*@}*/
  209.  
  210. /**
  211.  * Per-context constants (power of two)
  212.  *
  213.  * \note
  214.  * This value should always be less than or equal to \c MAX_PROGRAM_LOCAL_PARAMS
  215.  * and \c MAX_VERTEX_PROGRAM_PARAMS.  Otherwise some applications will make
  216.  * incorrect assumptions.
  217.  */
  218. #define MAX_PROGRAM_ENV_PARAMS         256
  219.  
  220. #define MAX_PROGRAM_MATRICES           8
  221. #define MAX_PROGRAM_MATRIX_STACK_DEPTH 4
  222. #define MAX_PROGRAM_CALL_DEPTH         8
  223. #define MAX_PROGRAM_TEMPS              256
  224. #define MAX_PROGRAM_ADDRESS_REGS       2
  225. #define MAX_VARYING                    16    /**< number of float[4] vectors */
  226. #define MAX_SAMPLERS                   MAX_TEXTURE_IMAGE_UNITS
  227. #define MAX_PROGRAM_INPUTS             32
  228. #define MAX_PROGRAM_OUTPUTS            64
  229. /*@}*/
  230.  
  231. /** For GL_ARB_vertex_program */
  232. /*@{*/
  233. #define MAX_VERTEX_PROGRAM_ADDRESS_REGS 1
  234. #define MAX_VERTEX_PROGRAM_PARAMS       MAX_UNIFORMS
  235. /*@}*/
  236.  
  237. /** For GL_ARB_fragment_program */
  238. /*@{*/
  239. #define MAX_FRAGMENT_PROGRAM_ADDRESS_REGS 0
  240. /*@}*/
  241.  
  242. /** For GL_NV_vertex_program */
  243. /*@{*/
  244. #define MAX_NV_VERTEX_PROGRAM_INSTRUCTIONS 128
  245. #define MAX_NV_VERTEX_PROGRAM_TEMPS         12
  246. #define MAX_NV_VERTEX_PROGRAM_PARAMS        96
  247. #define MAX_NV_VERTEX_PROGRAM_INPUTS        16
  248. #define MAX_NV_VERTEX_PROGRAM_OUTPUTS       15
  249. /*@}*/
  250.  
  251. /** For GL_NV_fragment_program */
  252. /*@{*/
  253. #define MAX_NV_FRAGMENT_PROGRAM_INSTRUCTIONS 1024 /* 72 for GL_ARB_f_p */
  254. #define MAX_NV_FRAGMENT_PROGRAM_TEMPS         96
  255. #define MAX_NV_FRAGMENT_PROGRAM_PARAMS        64
  256. #define MAX_NV_FRAGMENT_PROGRAM_INPUTS        12
  257. #define MAX_NV_FRAGMENT_PROGRAM_OUTPUTS        3
  258. #define MAX_NV_FRAGMENT_PROGRAM_WRITE_ONLYS    2
  259. /*@}*/
  260.  
  261.  
  262. /** For GL_ARB_vertex_shader */
  263. /*@{*/
  264. #define MAX_VERTEX_GENERIC_ATTRIBS 16
  265. #define MAX_VERTEX_TEXTURE_IMAGE_UNITS MAX_TEXTURE_IMAGE_UNITS
  266. #define MAX_COMBINED_TEXTURE_IMAGE_UNITS (MAX_VERTEX_TEXTURE_IMAGE_UNITS + \
  267.                                           MAX_TEXTURE_IMAGE_UNITS)
  268. /*@}*/
  269.  
  270.  
  271. /** For GL_ARB_draw_buffers */
  272. /*@{*/
  273. #define MAX_DRAW_BUFFERS 8
  274. /*@}*/
  275.  
  276.  
  277. /** For GL_EXT_framebuffer_object */
  278. /*@{*/
  279. #define MAX_COLOR_ATTACHMENTS 8
  280. /*@}*/
  281.  
  282. /** For GL_ATI_envmap_bump - support bump mapping on first 8 units */
  283. #define SUPPORTED_ATI_BUMP_UNITS 0xff
  284.  
  285. /** For GL_EXT_transform_feedback */
  286. #define MAX_FEEDBACK_ATTRIBS 32
  287.  
  288. /** For GL_ARB_geometry_shader4 */
  289. /*@{*/
  290. #define MAX_GEOMETRY_TEXTURE_IMAGE_UNITS             8
  291. #define MAX_GEOMETRY_VARYING_COMPONENTS              32
  292. #define MAX_VERTEX_VARYING_COMPONENTS                32
  293. #define MAX_GEOMETRY_UNIFORM_COMPONENTS              512
  294. #define MAX_GEOMETRY_OUTPUT_VERTICES                 256
  295. #define MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS         1024
  296. /*@}*/
  297.  
  298.  
  299. /**
  300.  * \name Mesa-specific parameters
  301.  */
  302. /*@{*/
  303.  
  304.  
  305. /**
  306.  * If non-zero use GLdouble for walking triangle edges, for better accuracy.
  307.  */
  308. #define TRIANGLE_WALK_DOUBLE 0
  309.  
  310.  
  311. /**
  312.  * Bits per depth buffer value (max is 32).
  313.  */
  314. #ifndef DEFAULT_SOFTWARE_DEPTH_BITS
  315. #define DEFAULT_SOFTWARE_DEPTH_BITS 16
  316. #endif
  317. /** Depth buffer data type */
  318. #if DEFAULT_SOFTWARE_DEPTH_BITS <= 16
  319. #define DEFAULT_SOFTWARE_DEPTH_TYPE GLushort
  320. #else
  321. #define DEFAULT_SOFTWARE_DEPTH_TYPE GLuint
  322. #endif
  323.  
  324.  
  325. /**
  326.  * Bits per stencil value: 8
  327.  */
  328. #define STENCIL_BITS 8
  329.  
  330.  
  331. /**
  332.  * Bits per color channel:  8, 16 or 32
  333.  */
  334. #ifndef CHAN_BITS
  335. #define CHAN_BITS 8
  336. #endif
  337.  
  338.  
  339. /*
  340.  * Color channel component order
  341.  *
  342.  * \note Changes will almost certainly cause problems at this time.
  343.  */
  344. #define RCOMP 0
  345. #define GCOMP 1
  346. #define BCOMP 2
  347. #define ACOMP 3
  348.  
  349.  
  350. /**
  351.  * Maximum number of temporary vertices required for clipping.  
  352.  *
  353.  * Used in array_cache and tnl modules.
  354.  */
  355. #define MAX_CLIPPED_VERTICES ((2 * (6 + MAX_CLIP_PLANES))+1)
  356.  
  357.  
  358. #endif /* MESA_CONFIG_H_INCLUDED */
  359.