Home | History | Annotate | Download | only in main
      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 /** Maximum number of viewports supported with ARB_viewport_array */
    136 #define MAX_VIEWPORTS 16
    137 
    138 /** Maximum number of window rectangles supported with EXT_window_rectangles */
    139 #define MAX_WINDOW_RECTANGLES 8
    140 
    141 /** Maximum size for CVA.  May be overridden by the drivers.  */
    142 #define MAX_ARRAY_LOCK_SIZE 3000
    143 
    144 /** Subpixel precision for antialiasing, window coordinate snapping */
    145 #define SUB_PIXEL_BITS 4
    146 
    147 /** For GL_ARB_texture_compression */
    148 #define MAX_COMPRESSED_TEXTURE_FORMATS 25
    149 
    150 /** For GL_EXT_texture_filter_anisotropic */
    151 #define MAX_TEXTURE_MAX_ANISOTROPY 16.0
    152 
    153 /** For GL_EXT_texture_lod_bias (typically MAX_TEXTURE_LEVELS - 1) */
    154 #define MAX_TEXTURE_LOD_BIAS 14.0
    155 
    156 /** For any program target/extension */
    157 /*@{*/
    158 #define MAX_PROGRAM_INSTRUCTIONS       (16 * 1024)
    159 
    160 /**
    161  * Per-program constants (power of two)
    162  *
    163  * \c MAX_PROGRAM_LOCAL_PARAMS and \c MAX_UNIFORMS are just the assembly shader
    164  * and GLSL shader names for the same thing.  They should \b always have the
    165  * same value.  Each refers to the number of vec4 values supplied as
    166  * per-program parameters.
    167  */
    168 /*@{*/
    169 #define MAX_PROGRAM_LOCAL_PARAMS       4096
    170 #define MAX_UNIFORMS                   4096
    171 #define MAX_UNIFORM_BUFFERS            15 /* + 1 default uniform buffer */
    172 #define MAX_SHADER_STORAGE_BUFFERS     16
    173 /* 6 is for vertex, hull, domain, geometry, fragment, and compute shader. */
    174 #define MAX_COMBINED_UNIFORM_BUFFERS   (MAX_UNIFORM_BUFFERS * 6)
    175 #define MAX_COMBINED_SHADER_STORAGE_BUFFERS   (MAX_SHADER_STORAGE_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_SAMPLERS                   MAX_TEXTURE_IMAGE_UNITS
    202 #define MAX_PROGRAM_INPUTS             32
    203 #define MAX_PROGRAM_OUTPUTS            64
    204 /*@}*/
    205 
    206 /** For GL_ARB_vertex_program */
    207 /*@{*/
    208 #define MAX_VERTEX_PROGRAM_ADDRESS_REGS 1
    209 #define MAX_VERTEX_PROGRAM_PARAMS       MAX_UNIFORMS
    210 /*@}*/
    211 
    212 /** For GL_ARB_fragment_program */
    213 /*@{*/
    214 #define MAX_FRAGMENT_PROGRAM_ADDRESS_REGS 0
    215 #define MAX_FRAGMENT_PROGRAM_PARAMS       64
    216 #define MAX_FRAGMENT_PROGRAM_INPUTS       12
    217 /*@}*/
    218 
    219 /** For GL_ARB_vertex_shader */
    220 /*@{*/
    221 #define MAX_VERTEX_GENERIC_ATTRIBS 16
    222 /* 6 is for vertex, hull, domain, geometry, fragment, and compute shader. */
    223 #define MAX_COMBINED_TEXTURE_IMAGE_UNITS (MAX_TEXTURE_IMAGE_UNITS * 6)
    224 /*@}*/
    225 
    226 
    227 /** For GL_ARB_draw_buffers */
    228 /*@{*/
    229 #define MAX_DRAW_BUFFERS 8
    230 /*@}*/
    231 
    232 
    233 /** For GL_EXT_framebuffer_object */
    234 /*@{*/
    235 #define MAX_COLOR_ATTACHMENTS 8
    236 #define MAX_RENDERBUFFER_SIZE 16384
    237 /*@}*/
    238 
    239 /** For GL_ATI_envmap_bump - support bump mapping on first 8 units */
    240 #define SUPPORTED_ATI_BUMP_UNITS 0xff
    241 
    242 /** For GL_EXT_transform_feedback */
    243 #define MAX_FEEDBACK_BUFFERS 4
    244 #define MAX_FEEDBACK_ATTRIBS 32
    245 
    246 /** For geometry shader */
    247 /*@{*/
    248 #define MAX_GEOMETRY_UNIFORM_COMPONENTS              512
    249 #define MAX_GEOMETRY_OUTPUT_VERTICES                 256
    250 #define MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS         1024
    251 /*@}*/
    252 
    253 /** For GL_ARB_debug_output and GL_KHR_debug */
    254 /*@{*/
    255 #define MAX_DEBUG_LOGGED_MESSAGES   10
    256 #define MAX_DEBUG_MESSAGE_LENGTH    4096
    257 /*@}*/
    258 
    259 /** For GL_KHR_debug */
    260 /*@{*/
    261 #define MAX_LABEL_LENGTH 256
    262 #define MAX_DEBUG_GROUP_STACK_DEPTH 64
    263 /*@}*/
    264 
    265 /** For GL_ARB_gpu_shader5 */
    266 /*@{*/
    267 #define MAX_GEOMETRY_SHADER_INVOCATIONS     32
    268 #define MIN_FRAGMENT_INTERPOLATION_OFFSET   -0.5
    269 #define MAX_FRAGMENT_INTERPOLATION_OFFSET   0.5
    270 #define FRAGMENT_INTERPOLATION_OFFSET_BITS  4
    271 #define MAX_VERTEX_STREAMS                  4
    272 /*@}*/
    273 
    274 /** For GL_ARB_shader_subroutine */
    275 /*@{*/
    276 #define MAX_SUBROUTINES                   256
    277 #define MAX_SUBROUTINE_UNIFORM_LOCATIONS  1024
    278 /*@}*/
    279 
    280 /** For GL_INTEL_performance_query */
    281 /*@{*/
    282 #define MAX_PERFQUERY_QUERY_NAME_LENGTH     256
    283 #define MAX_PERFQUERY_COUNTER_NAME_LENGTH   256
    284 #define MAX_PERFQUERY_COUNTER_DESC_LENGTH   1024
    285 #define PERFQUERY_HAVE_GPA_EXTENDED_COUNTERS 0
    286 /*@}*/
    287 
    288 /** For GL_ARB_pipeline_statistics_query */
    289 #define MAX_PIPELINE_STATISTICS             11
    290 
    291 /** For GL_ARB_tessellation_shader */
    292 /*@{*/
    293 #define MAX_TESS_GEN_LEVEL 64
    294 #define MAX_PATCH_VERTICES 32
    295 #define MAX_TESS_PATCH_COMPONENTS 120
    296 #define MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 4096
    297 /*@}*/
    298 
    299 /*
    300  * Color channel component order
    301  *
    302  * \note Changes will almost certainly cause problems at this time.
    303  */
    304 #define RCOMP 0
    305 #define GCOMP 1
    306 #define BCOMP 2
    307 #define ACOMP 3
    308 
    309 
    310 /**
    311  * Maximum number of temporary vertices required for clipping.
    312  *
    313  * Used in array_cache and tnl modules.
    314  */
    315 #define MAX_CLIPPED_VERTICES ((2 * (6 + MAX_CLIP_PLANES))+1)
    316 
    317 
    318 #endif /* MESA_CONFIG_H_INCLUDED */
    319