Home | History | Annotate | Download | only in main
      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 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 texture palette / color table size */
     94 #define MAX_COLOR_TABLE_SIZE 256
     95 
     96 /** Max memory to allow for a single texture image (in megabytes) */
     97 #define MAX_TEXTURE_MBYTES 1024
     98 
     99 /** Number of 1D/2D texture mipmap levels */
    100 #define MAX_TEXTURE_LEVELS 15
    101 
    102 /** Number of 3D texture mipmap levels */
    103 #define MAX_3D_TEXTURE_LEVELS 15
    104 
    105 /** Number of cube texture mipmap levels - GL_ARB_texture_cube_map */
    106 #define MAX_CUBE_TEXTURE_LEVELS 15
    107 
    108 /** Maximum rectangular texture size - GL_NV_texture_rectangle */
    109 #define MAX_TEXTURE_RECT_SIZE 16384
    110 
    111 /**
    112  * Maximum number of layers in a 1D or 2D array texture - GL_MESA_texture_array
    113  */
    114 #define MAX_ARRAY_TEXTURE_LAYERS 64
    115 
    116 /**
    117  * Max number of texture coordinate units.  This mainly just applies to
    118  * the fixed-function vertex code.  This will be difficult to raise above
    119  * eight because of various vertex attribute bitvectors.
    120  */
    121 #define MAX_TEXTURE_COORD_UNITS 8
    122 
    123 /**
    124  * Max number of texture image units.  Also determines number of texture
    125  * samplers in shaders.
    126  */
    127 #define MAX_TEXTURE_IMAGE_UNITS 16
    128 
    129 /**
    130  * Larger of MAX_TEXTURE_COORD_UNITS and MAX_TEXTURE_IMAGE_UNITS.
    131  * This value is only used for dimensioning arrays.
    132  * Either MAX_TEXTURE_COORD_UNITS or MAX_TEXTURE_IMAGE_UNITS (or the
    133  * corresponding ctx->Const.MaxTextureCoord/ImageUnits fields) should be
    134  * used almost everywhere else.
    135  */
    136 #define MAX_TEXTURE_UNITS ((MAX_TEXTURE_COORD_UNITS > MAX_TEXTURE_IMAGE_UNITS) ? MAX_TEXTURE_COORD_UNITS : MAX_TEXTURE_IMAGE_UNITS)
    137 
    138 
    139 /** Maximum viewport size */
    140 #define MAX_VIEWPORT_WIDTH 16384
    141 #define MAX_VIEWPORT_HEIGHT 16384
    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 /*@}*/
    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       2
    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_vertex_program */
    208 /*@{*/
    209 #define MAX_NV_VERTEX_PROGRAM_INSTRUCTIONS 128
    210 #define MAX_NV_VERTEX_PROGRAM_TEMPS         12
    211 #define MAX_NV_VERTEX_PROGRAM_PARAMS        96
    212 #define MAX_NV_VERTEX_PROGRAM_INPUTS        16
    213 #define MAX_NV_VERTEX_PROGRAM_OUTPUTS       15
    214 /*@}*/
    215 
    216 /** For GL_NV_fragment_program */
    217 /*@{*/
    218 #define MAX_NV_FRAGMENT_PROGRAM_INSTRUCTIONS 1024 /* 72 for GL_ARB_f_p */
    219 #define MAX_NV_FRAGMENT_PROGRAM_TEMPS         96
    220 #define MAX_NV_FRAGMENT_PROGRAM_PARAMS        64
    221 #define MAX_NV_FRAGMENT_PROGRAM_INPUTS        12
    222 #define MAX_NV_FRAGMENT_PROGRAM_OUTPUTS        3
    223 #define MAX_NV_FRAGMENT_PROGRAM_WRITE_ONLYS    2
    224 /*@}*/
    225 
    226 
    227 /** For GL_ARB_vertex_shader */
    228 /*@{*/
    229 #define MAX_VERTEX_GENERIC_ATTRIBS 16
    230 #define MAX_VERTEX_TEXTURE_IMAGE_UNITS MAX_TEXTURE_IMAGE_UNITS
    231 #define MAX_COMBINED_TEXTURE_IMAGE_UNITS (MAX_VERTEX_TEXTURE_IMAGE_UNITS + \
    232 					  MAX_TEXTURE_IMAGE_UNITS)
    233 /*@}*/
    234 
    235 
    236 /** For GL_ARB_draw_buffers */
    237 /*@{*/
    238 #define MAX_DRAW_BUFFERS 8
    239 /*@}*/
    240 
    241 
    242 /** For GL_EXT_framebuffer_object */
    243 /*@{*/
    244 #define MAX_COLOR_ATTACHMENTS 8
    245 #define MAX_RENDERBUFFER_SIZE 16384
    246 /*@}*/
    247 
    248 /** For GL_ATI_envmap_bump - support bump mapping on first 8 units */
    249 #define SUPPORTED_ATI_BUMP_UNITS 0xff
    250 
    251 /** For GL_EXT_transform_feedback */
    252 #define MAX_FEEDBACK_BUFFERS 4
    253 #define MAX_FEEDBACK_ATTRIBS 32
    254 
    255 /** For GL_ARB_geometry_shader4 */
    256 /*@{*/
    257 #define MAX_GEOMETRY_TEXTURE_IMAGE_UNITS             8
    258 #define MAX_GEOMETRY_VARYING_COMPONENTS              32
    259 #define MAX_VERTEX_VARYING_COMPONENTS                32
    260 #define MAX_GEOMETRY_UNIFORM_COMPONENTS              512
    261 #define MAX_GEOMETRY_OUTPUT_VERTICES                 256
    262 #define MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS         1024
    263 /*@}*/
    264 
    265 /** For GL_ARB_debug_output */
    266 /*@{*/
    267 #define MAX_DEBUG_LOGGED_MESSAGES   10
    268 #define MAX_DEBUG_MESSAGE_LENGTH    4096
    269 /*@}*/
    270 
    271 
    272 /*
    273  * Color channel component order
    274  *
    275  * \note Changes will almost certainly cause problems at this time.
    276  */
    277 #define RCOMP 0
    278 #define GCOMP 1
    279 #define BCOMP 2
    280 #define ACOMP 3
    281 
    282 
    283 /**
    284  * Maximum number of temporary vertices required for clipping.
    285  *
    286  * Used in array_cache and tnl modules.
    287  */
    288 #define MAX_CLIPPED_VERTICES ((2 * (6 + MAX_CLIP_PLANES))+1)
    289 
    290 
    291 #endif /* MESA_CONFIG_H_INCLUDED */
    292