Subversion Repositories Kolibri OS

Rev

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 32
  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. /** Maximun number of viewports supported with ARB_viewport_array */
  141. #define MAX_VIEWPORTS 16
  142.  
  143. /** Maxmimum size for CVA.  May be overridden by the drivers.  */
  144. #define MAX_ARRAY_LOCK_SIZE 3000
  145.  
  146. /** Subpixel precision for antialiasing, window coordinate snapping */
  147. #define SUB_PIXEL_BITS 4
  148.  
  149. /** For GL_ARB_texture_compression */
  150. #define MAX_COMPRESSED_TEXTURE_FORMATS 25
  151.  
  152. /** For GL_EXT_texture_filter_anisotropic */
  153. #define MAX_TEXTURE_MAX_ANISOTROPY 16.0
  154.  
  155. /** For GL_EXT_texture_lod_bias (typically MAX_TEXTURE_LEVELS - 1) */
  156. #define MAX_TEXTURE_LOD_BIAS 14.0
  157.  
  158. /** For any program target/extension */
  159. /*@{*/
  160. #define MAX_PROGRAM_INSTRUCTIONS       (16 * 1024)
  161.  
  162. /**
  163.  * Per-program constants (power of two)
  164.  *
  165.  * \c MAX_PROGRAM_LOCAL_PARAMS and \c MAX_UNIFORMS are just the assembly shader
  166.  * and GLSL shader names for the same thing.  They should \b always have the
  167.  * same value.  Each refers to the number of vec4 values supplied as
  168.  * per-program parameters.
  169.  */
  170. /*@{*/
  171. #define MAX_PROGRAM_LOCAL_PARAMS       4096
  172. #define MAX_UNIFORMS                   4096
  173. #define MAX_UNIFORM_BUFFERS            15 /* + 1 default uniform buffer */
  174. /* 6 is for vertex, hull, domain, geometry, fragment, and compute shader. */
  175. #define MAX_COMBINED_UNIFORM_BUFFERS   (MAX_UNIFORM_BUFFERS * 6)
  176. #define MAX_ATOMIC_COUNTERS            4096
  177. /* 6 is for vertex, hull, domain, geometry, fragment, and compute shader. */
  178. #define MAX_COMBINED_ATOMIC_BUFFERS    (MAX_UNIFORM_BUFFERS * 6)
  179. /* Size of an atomic counter in bytes according to ARB_shader_atomic_counters */
  180. #define ATOMIC_COUNTER_SIZE            4
  181. #define MAX_IMAGE_UNIFORMS             32
  182. /* 6 is for vertex, hull, domain, geometry, fragment, and compute shader. */
  183. #define MAX_IMAGE_UNITS                (MAX_IMAGE_UNIFORMS * 6)
  184. /*@}*/
  185.  
  186. /**
  187.  * Per-context constants (power of two)
  188.  *
  189.  * \note
  190.  * This value should always be less than or equal to \c MAX_PROGRAM_LOCAL_PARAMS
  191.  * and \c MAX_VERTEX_PROGRAM_PARAMS.  Otherwise some applications will make
  192.  * incorrect assumptions.
  193.  */
  194. #define MAX_PROGRAM_ENV_PARAMS         256
  195.  
  196. #define MAX_PROGRAM_MATRICES           8
  197. #define MAX_PROGRAM_MATRIX_STACK_DEPTH 4
  198. #define MAX_PROGRAM_CALL_DEPTH         8
  199. #define MAX_PROGRAM_TEMPS              256
  200. #define MAX_PROGRAM_ADDRESS_REGS       1
  201. #define MAX_VARYING                    32    /**< number of float[4] vectors */
  202. #define MAX_SAMPLERS                   MAX_TEXTURE_IMAGE_UNITS
  203. #define MAX_PROGRAM_INPUTS             32
  204. #define MAX_PROGRAM_OUTPUTS            64
  205. /*@}*/
  206.  
  207. /** For GL_ARB_vertex_program */
  208. /*@{*/
  209. #define MAX_VERTEX_PROGRAM_ADDRESS_REGS 1
  210. #define MAX_VERTEX_PROGRAM_PARAMS       MAX_UNIFORMS
  211. /*@}*/
  212.  
  213. /** For GL_ARB_fragment_program */
  214. /*@{*/
  215. #define MAX_FRAGMENT_PROGRAM_ADDRESS_REGS 0
  216. /*@}*/
  217.  
  218. /** For GL_NV_fragment_program */
  219. /*@{*/
  220. #define MAX_NV_FRAGMENT_PROGRAM_INSTRUCTIONS 1024 /* 72 for GL_ARB_f_p */
  221. #define MAX_NV_FRAGMENT_PROGRAM_TEMPS         96
  222. #define MAX_NV_FRAGMENT_PROGRAM_PARAMS        64
  223. #define MAX_NV_FRAGMENT_PROGRAM_INPUTS        12
  224. #define MAX_NV_FRAGMENT_PROGRAM_OUTPUTS        3
  225. #define MAX_NV_FRAGMENT_PROGRAM_WRITE_ONLYS    2
  226. /*@}*/
  227.  
  228.  
  229. /** For GL_ARB_vertex_shader */
  230. /*@{*/
  231. #define MAX_VERTEX_GENERIC_ATTRIBS 16
  232. /* 6 is for vertex, hull, domain, geometry, fragment, and compute shader. */
  233. #define MAX_COMBINED_TEXTURE_IMAGE_UNITS (MAX_TEXTURE_IMAGE_UNITS * 6)
  234. /*@}*/
  235.  
  236.  
  237. /** For GL_ARB_draw_buffers */
  238. /*@{*/
  239. #define MAX_DRAW_BUFFERS 8
  240. /*@}*/
  241.  
  242.  
  243. /** For GL_EXT_framebuffer_object */
  244. /*@{*/
  245. #define MAX_COLOR_ATTACHMENTS 8
  246. #define MAX_RENDERBUFFER_SIZE 16384
  247. /*@}*/
  248.  
  249. /** For GL_ATI_envmap_bump - support bump mapping on first 8 units */
  250. #define SUPPORTED_ATI_BUMP_UNITS 0xff
  251.  
  252. /** For GL_EXT_transform_feedback */
  253. #define MAX_FEEDBACK_BUFFERS 4
  254. #define MAX_FEEDBACK_ATTRIBS 32
  255.  
  256. /** For GL_ARB_geometry_shader4 */
  257. /*@{*/
  258. #define MAX_GEOMETRY_UNIFORM_COMPONENTS              512
  259. #define MAX_GEOMETRY_OUTPUT_VERTICES                 256
  260. #define MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS         1024
  261. /*@}*/
  262.  
  263. /** For GL_ARB_debug_output and GL_KHR_debug */
  264. /*@{*/
  265. #define MAX_DEBUG_LOGGED_MESSAGES   10
  266. #define MAX_DEBUG_MESSAGE_LENGTH    4096
  267. /*@}*/
  268.  
  269. /** For GL_KHR_debug */
  270. /*@{*/
  271. #define MAX_LABEL_LENGTH 256
  272. #define MAX_DEBUG_GROUP_STACK_DEPTH 64
  273. /*@}*/
  274.  
  275. /** For GL_ARB_gpu_shader5 */
  276. /*@{*/
  277. #define MAX_GEOMETRY_SHADER_INVOCATIONS     32
  278. #define MIN_FRAGMENT_INTERPOLATION_OFFSET   -0.5
  279. #define MAX_FRAGMENT_INTERPOLATION_OFFSET   0.5
  280. #define FRAGMENT_INTERPOLATION_OFFSET_BITS  4
  281. #define MAX_VERTEX_STREAMS                  4
  282. /*@}*/
  283.  
  284. /** For GL_INTEL_performance_query */
  285. /*@{*/
  286. #define MAX_PERFQUERY_QUERY_NAME_LENGTH     256
  287. #define MAX_PERFQUERY_COUNTER_NAME_LENGTH   256
  288. #define MAX_PERFQUERY_COUNTER_DESC_LENGTH   1024
  289. #define PERFQUERY_HAVE_GPA_EXTENDED_COUNTERS 0
  290. /*@}*/
  291.  
  292. /** For GL_ARB_compute_shader */
  293. /*@{*/
  294. #define MAX_COMPUTE_UNIFORM_BLOCKS          12
  295. #define MAX_COMPUTE_TEXTURE_IMAGE_UNITS     16
  296. #define MAX_COMPUTE_ATOMIC_COUNTER_BUFFERS  8
  297. #define MAX_COMPUTE_ATOMIC_COUNTERS         8
  298. #define MAX_COMPUTE_SHARED_MEMORY_SIZE      32768
  299. #define MAX_COMPUTE_UNIFORM_COMPONENTS      512
  300. #define MAX_COMPUTE_IMAGE_UNIFORMS          8
  301. /*@}*/
  302.  
  303. /** For GL_ARB_pipeline_statistics_query */
  304. #define MAX_PIPELINE_STATISTICS             11
  305.  
  306. /*
  307.  * Color channel component order
  308.  *
  309.  * \note Changes will almost certainly cause problems at this time.
  310.  */
  311. #define RCOMP 0
  312. #define GCOMP 1
  313. #define BCOMP 2
  314. #define ACOMP 3
  315.  
  316.  
  317. /**
  318.  * Maximum number of temporary vertices required for clipping.  
  319.  *
  320.  * Used in array_cache and tnl modules.
  321.  */
  322. #define MAX_CLIPPED_VERTICES ((2 * (6 + MAX_CLIP_PLANES))+1)
  323.  
  324.  
  325. #endif /* MESA_CONFIG_H_INCLUDED */
  326.