Subversion Repositories Kolibri OS

Rev

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

  1. /*
  2.  * Mesa 3-D graphics library
  3.  *
  4.  * Copyright (C) 1999-2007  Brian Paul   All Rights Reserved.
  5.  * Copyright (C) 2008  VMware, Inc.  All Rights Reserved.
  6.  *
  7.  * Permission is hereby granted, free of charge, to any person obtaining a
  8.  * copy of this software and associated documentation files (the "Software"),
  9.  * to deal in the Software without restriction, including without limitation
  10.  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  11.  * and/or sell copies of the Software, and to permit persons to whom the
  12.  * Software is furnished to do so, subject to the following conditions:
  13.  *
  14.  * The above copyright notice and this permission notice shall be included
  15.  * in all copies or substantial portions of the Software.
  16.  *
  17.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  18.  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  19.  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  20.  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
  21.  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
  22.  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  23.  * 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 attribute stack depth */
  50. #define MAX_ATTRIB_STACK_DEPTH 16
  51.  
  52. /** Maximum client attribute stack depth */
  53. #define MAX_CLIENT_ATTRIB_STACK_DEPTH 16
  54.  
  55. /** Maximum recursion depth of display list calls */
  56. #define MAX_LIST_NESTING 64
  57.  
  58. /** Maximum number of lights */
  59. #define MAX_LIGHTS 8
  60.  
  61. /**
  62.  * Maximum number of user-defined clipping planes supported by any driver in
  63.  * Mesa.  This is used to size arrays.
  64.  */
  65. #define MAX_CLIP_PLANES 8
  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. #define MAX_EVAL_ORDER 30
  75.  
  76. /** Maximum Name stack depth */
  77. #define MAX_NAME_STACK_DEPTH 64
  78.  
  79. /** Minimum point size */
  80. #define MIN_POINT_SIZE 1.0
  81. /** Maximum point size */
  82. #define MAX_POINT_SIZE 60.0
  83. /** Point size granularity */
  84. #define POINT_SIZE_GRANULARITY 0.1
  85.  
  86. /** Minimum line width */
  87. #define MIN_LINE_WIDTH 1.0
  88. /** Maximum line width */
  89. #define MAX_LINE_WIDTH 10.0
  90. /** Line width granularity */
  91. #define LINE_WIDTH_GRANULARITY 0.1
  92.  
  93. /** Max memory to allow for a single texture image (in megabytes) */
  94. #define MAX_TEXTURE_MBYTES 1024
  95.  
  96. /** Number of 1D/2D texture mipmap levels */
  97. #define MAX_TEXTURE_LEVELS 15
  98.  
  99. /** Number of 3D texture mipmap levels */
  100. #define MAX_3D_TEXTURE_LEVELS 15
  101.  
  102. /** Number of cube texture mipmap levels - GL_ARB_texture_cube_map */
  103. #define MAX_CUBE_TEXTURE_LEVELS 15
  104.  
  105. /** Maximum rectangular texture size - GL_NV_texture_rectangle */
  106. #define MAX_TEXTURE_RECT_SIZE 16384
  107.  
  108. /**
  109.  * Maximum number of layers in a 1D or 2D array texture - GL_MESA_texture_array
  110.  */
  111. #define MAX_ARRAY_TEXTURE_LAYERS 64
  112.  
  113. /**
  114.  * Max number of texture coordinate units.  This mainly just applies to
  115.  * the fixed-function vertex code.  This will be difficult to raise above
  116.  * eight because of various vertex attribute bitvectors.
  117.  */
  118. #define MAX_TEXTURE_COORD_UNITS 8
  119.  
  120. /**
  121.  * Max number of texture image units.  Also determines number of texture
  122.  * samplers in shaders.
  123.  */
  124. #define MAX_TEXTURE_IMAGE_UNITS 16
  125.  
  126. /**
  127.  * Larger of MAX_TEXTURE_COORD_UNITS and MAX_TEXTURE_IMAGE_UNITS.
  128.  * This value is only used for dimensioning arrays.
  129.  * Either MAX_TEXTURE_COORD_UNITS or MAX_TEXTURE_IMAGE_UNITS (or the
  130.  * corresponding ctx->Const.MaxTextureCoord/ImageUnits fields) should be
  131.  * used almost everywhere else.
  132.  */
  133. #define MAX_TEXTURE_UNITS ((MAX_TEXTURE_COORD_UNITS > MAX_TEXTURE_IMAGE_UNITS) ? MAX_TEXTURE_COORD_UNITS : MAX_TEXTURE_IMAGE_UNITS)
  134.  
  135.  
  136. /** Maximum viewport size */
  137. #define MAX_VIEWPORT_WIDTH 16384
  138. #define MAX_VIEWPORT_HEIGHT 16384
  139.  
  140. /** Maxmimum size for CVA.  May be overridden by the drivers.  */
  141. #define MAX_ARRAY_LOCK_SIZE 3000
  142.  
  143. /** Subpixel precision for antialiasing, window coordinate snapping */
  144. #define SUB_PIXEL_BITS 4
  145.  
  146. /** For GL_ARB_texture_compression */
  147. #define MAX_COMPRESSED_TEXTURE_FORMATS 25
  148.  
  149. /** For GL_EXT_texture_filter_anisotropic */
  150. #define MAX_TEXTURE_MAX_ANISOTROPY 16.0
  151.  
  152. /** For GL_EXT_texture_lod_bias (typically MAX_TEXTURE_LEVELS - 1) */
  153. #define MAX_TEXTURE_LOD_BIAS 14.0
  154.  
  155. /** For any program target/extension */
  156. /*@{*/
  157. #define MAX_PROGRAM_INSTRUCTIONS       (16 * 1024)
  158.  
  159. /**
  160.  * Per-program constants (power of two)
  161.  *
  162.  * \c MAX_PROGRAM_LOCAL_PARAMS and \c MAX_UNIFORMS are just the assembly shader
  163.  * and GLSL shader names for the same thing.  They should \b always have the
  164.  * same value.  Each refers to the number of vec4 values supplied as
  165.  * per-program parameters.
  166.  */
  167. /*@{*/
  168. #define MAX_PROGRAM_LOCAL_PARAMS       4096
  169. #define MAX_UNIFORMS                   4096
  170. #define MAX_UNIFORM_BUFFERS            15 /* + 1 default uniform buffer */
  171. /* 6 is for vertex, hull, domain, geometry, fragment, and compute shader. */
  172. #define MAX_COMBINED_UNIFORM_BUFFERS   (MAX_UNIFORM_BUFFERS * 6)
  173. /*@}*/
  174.  
  175. /**
  176.  * Per-context constants (power of two)
  177.  *
  178.  * \note
  179.  * This value should always be less than or equal to \c MAX_PROGRAM_LOCAL_PARAMS
  180.  * and \c MAX_VERTEX_PROGRAM_PARAMS.  Otherwise some applications will make
  181.  * incorrect assumptions.
  182.  */
  183. #define MAX_PROGRAM_ENV_PARAMS         256
  184.  
  185. #define MAX_PROGRAM_MATRICES           8
  186. #define MAX_PROGRAM_MATRIX_STACK_DEPTH 4
  187. #define MAX_PROGRAM_CALL_DEPTH         8
  188. #define MAX_PROGRAM_TEMPS              256
  189. #define MAX_PROGRAM_ADDRESS_REGS       1
  190. #define MAX_VARYING                    32    /**< number of float[4] vectors */
  191. #define MAX_SAMPLERS                   MAX_TEXTURE_IMAGE_UNITS
  192. #define MAX_PROGRAM_INPUTS             32
  193. #define MAX_PROGRAM_OUTPUTS            64
  194. /*@}*/
  195.  
  196. /** For GL_ARB_vertex_program */
  197. /*@{*/
  198. #define MAX_VERTEX_PROGRAM_ADDRESS_REGS 1
  199. #define MAX_VERTEX_PROGRAM_PARAMS       MAX_UNIFORMS
  200. /*@}*/
  201.  
  202. /** For GL_ARB_fragment_program */
  203. /*@{*/
  204. #define MAX_FRAGMENT_PROGRAM_ADDRESS_REGS 0
  205. /*@}*/
  206.  
  207. /** For GL_NV_fragment_program */
  208. /*@{*/
  209. #define MAX_NV_FRAGMENT_PROGRAM_INSTRUCTIONS 1024 /* 72 for GL_ARB_f_p */
  210. #define MAX_NV_FRAGMENT_PROGRAM_TEMPS         96
  211. #define MAX_NV_FRAGMENT_PROGRAM_PARAMS        64
  212. #define MAX_NV_FRAGMENT_PROGRAM_INPUTS        12
  213. #define MAX_NV_FRAGMENT_PROGRAM_OUTPUTS        3
  214. #define MAX_NV_FRAGMENT_PROGRAM_WRITE_ONLYS    2
  215. /*@}*/
  216.  
  217.  
  218. /** For GL_ARB_vertex_shader */
  219. /*@{*/
  220. #define MAX_VERTEX_GENERIC_ATTRIBS 16
  221. /* 6 is for vertex, hull, domain, geometry, fragment, and compute shader. */
  222. #define MAX_COMBINED_TEXTURE_IMAGE_UNITS (MAX_TEXTURE_IMAGE_UNITS * 6)
  223. /*@}*/
  224.  
  225.  
  226. /** For GL_ARB_draw_buffers */
  227. /*@{*/
  228. #define MAX_DRAW_BUFFERS 8
  229. /*@}*/
  230.  
  231.  
  232. /** For GL_EXT_framebuffer_object */
  233. /*@{*/
  234. #define MAX_COLOR_ATTACHMENTS 8
  235. #define MAX_RENDERBUFFER_SIZE 16384
  236. /*@}*/
  237.  
  238. /** For GL_ATI_envmap_bump - support bump mapping on first 8 units */
  239. #define SUPPORTED_ATI_BUMP_UNITS 0xff
  240.  
  241. /** For GL_EXT_transform_feedback */
  242. #define MAX_FEEDBACK_BUFFERS 4
  243. #define MAX_FEEDBACK_ATTRIBS 32
  244.  
  245. /** For GL_ARB_geometry_shader4 */
  246. /*@{*/
  247. #define MAX_GEOMETRY_UNIFORM_COMPONENTS              512
  248. #define MAX_GEOMETRY_OUTPUT_VERTICES                 256
  249. #define MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS         1024
  250. /*@}*/
  251.  
  252. /** For GL_ARB_debug_output */
  253. /*@{*/
  254. #define MAX_DEBUG_LOGGED_MESSAGES   10
  255. #define MAX_DEBUG_MESSAGE_LENGTH    4096
  256. /*@}*/
  257.  
  258.  
  259. /*
  260.  * Color channel component order
  261.  *
  262.  * \note Changes will almost certainly cause problems at this time.
  263.  */
  264. #define RCOMP 0
  265. #define GCOMP 1
  266. #define BCOMP 2
  267. #define ACOMP 3
  268.  
  269.  
  270. /**
  271.  * Maximum number of temporary vertices required for clipping.  
  272.  *
  273.  * Used in array_cache and tnl modules.
  274.  */
  275. #define MAX_CLIPPED_VERTICES ((2 * (6 + MAX_CLIP_PLANES))+1)
  276.  
  277.  
  278. #endif /* MESA_CONFIG_H_INCLUDED */
  279.