cr_limits.h revision e5b524bea3bf5696ac477024be18f9be46e3e5a0
/* Copyright (c) 2001, Stanford University
* All rights reserved.
*
* See the file LICENSE.txt for information on redistributing this software.
*/
#ifndef CR_LIMITS_H
#define CR_LIMITS_H
#include "chromium.h"
#include "cr_version.h"
#ifdef __cplusplus
extern "C" {
#endif
/* glGetString strings */
#define CR_RENDERER "Chromium"
#define CR_VENDOR "Humper"
#define CR_MAX_TEXTURE_UNITS 8
#define CR_MAX_GENERAL_COMBINERS 8
#define CR_MAX_TEXTURE_SIZE 8192
#define CR_MAX_3D_TEXTURE_SIZE 512
#define CR_MAX_CUBE_TEXTURE_SIZE 4096
#define CR_MAX_RECTANGLE_TEXTURE_SIZE 4096
#define CR_MAX_TEXTURE_ANISOTROPY 8.0
#define CR_MAX_LIGHTS 8
#define CR_MAX_CLIP_PLANES 8
#define CR_MAX_PROJECTION_STACK_DEPTH 32
#define CR_MAX_MODELVIEW_STACK_DEPTH 32
#define CR_MAX_TEXTURE_STACK_DEPTH 10
#define CR_MAX_COLOR_STACK_DEPTH 2
#define CR_MAX_ATTRIB_STACK_DEPTH 16
#define CR_MAX_CLIENT_ATTRIB_STACK_DEPTH 16
#define CR_MAX_NAME_STACK_DEPTH 64
#define CR_MAX_ELEMENTS_INDICES 16384
#define CR_MAX_ELEMENTS_VERTICES 16384
#define CR_MAX_EVAL_ORDER 8
#define CR_MAX_LIST_NESTING 64
#define CR_MAX_PIXEL_MAP_TABLE 256
#define CR_MAX_VIEWPORT_DIM 16384
#define CR_SUBPIXEL_BITS 8
#define CR_ALIASED_POINT_SIZE_MIN 1.0
#define CR_ALIASED_POINT_SIZE_MAX 64.0
#define CR_SMOOTH_POINT_SIZE_MIN 1.0
#define CR_SMOOTH_POINT_SIZE_MAX 64.0
#define CR_POINT_SIZE_GRANULARITY 0.5
#define CR_ALIASED_LINE_WIDTH_MIN 1.0
#define CR_ALIASED_LINE_WIDTH_MAX 64.0
#define CR_SMOOTH_LINE_WIDTH_MIN 1.0
#define CR_SMOOTH_LINE_WIDTH_MAX 64.0
#define CR_LINE_WIDTH_GRANULARITY 0.5
#define CR_MAX_VERTEX_ATTRIBS 16
#define CR_MAX_TEXTURE_LOD_BIAS 8.0
#ifdef CR_NV_fragment_program
#define CR_MAX_TEXTURE_COORDS 2
#define CR_MAX_TEXTURE_IMAGE_UNITS 2
#define CR_MAX_FRAGMENT_LOCAL_PARAMS 64
#endif
#ifdef CR_NV_vertex_program
#define CR_MAX_PROGRAM_MATRICES 8
#define CR_MAX_PROGRAM_MATRIX_STACK_DEPTH 4
#endif
#ifdef CR_ARB_fragment_program
#define CR_MAX_FRAGMENT_PROGRAM_INSTRUCTIONS 72
#define CR_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMS 24
#define CR_MAX_FRAGMENT_PROGRAM_ENV_PARAMS 24
#define CR_MAX_FRAGMENT_PROGRAM_TEMPS 16
#define CR_MAX_FRAGMENT_PROGRAM_ATTRIBS 10
#define CR_MAX_FRAGMENT_PROGRAM_ADDRESS_REGS 1
#define CR_MAX_FRAGMENT_PROGRAM_ALU_INSTRUCTIONS 48
#define CR_MAX_FRAGMENT_PROGRAM_TEX_INSTRUCTIONS 24
#define CR_MAX_FRAGMENT_PROGRAM_TEX_INDIRECTIONS 4
#endif
#ifdef CR_ARB_vertex_program
#define CR_MAX_VERTEX_PROGRAM_INSTRUCTIONS 128
#define CR_MAX_VERTEX_PROGRAM_LOCAL_PARAMS 96
#define CR_MAX_VERTEX_PROGRAM_TEMPS 12
#define CR_MAX_VERTEX_PROGRAM_ATTRIBS 16
#define CR_MAX_VERTEX_PROGRAM_ADDRESS_REGS 1
#endif
#if defined(CR_ARB_vertex_program) || defined(CR_ARB_fragment_program)
/* These must be the max of the fragment and vertex program limits */
#define CR_MAX_PROGRAM_LOCAL_PARAMS (CR_MAX_VERTEX_PROGRAM_LOCAL_PARAMS > CR_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMS ? CR_MAX_VERTEX_PROGRAM_LOCAL_PARAMS : CR_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMS)
#define CR_MAX_PROGRAM_ENV_PARAMS (CR_MAX_VERTEX_PROGRAM_ENV_PARAMS > CR_MAX_FRAGMENT_PROGRAM_ENV_PARAMS ? CR_MAX_VERTEX_PROGRAM_ENV_PARAMS : CR_MAX_FRAGMENT_PROGRAM_ENV_PARAMS)
#endif
/* Just need these for autogenerated code in state_get.c, etc */
#if defined(CR_ARB_vertex_program) || defined(CR_NV_vertex_program)
#define CR_any_vertex_program 1
#endif
#if defined(CR_ARB_fragment_program) || defined(CR_NV_fragment_program)
#define CR_any_fragment_program 1
#endif
#if defined(CR_any_vertex_program) || defined(CR_any_fragment_program)
#define CR_any_program 1
#endif
/*
* OpenGL's implementation-dependent values (not part of any attribute group).
*/
typedef struct {
#ifdef CR_ARB_texture_cube_map
#endif
#ifdef CR_EXT_texture_lod_bias
#endif
#endif
#ifdef CR_ARB_texture_compression
#endif
#ifdef CR_NV_register_combiners
#endif
#ifdef CR_NV_texture_rectangle
#endif
#ifdef CR_NV_fragment_program
/*GLuint maxFragmentProgramLocalParams;*/
#endif
#ifdef CR_NV_vertex_program
#endif
#ifdef CR_ARB_fragment_program
#endif
#ifdef CR_ARB_vertex_program
#endif
const GLubyte *extensions;
/* Framebuffer/visual attributes */
/* Booleans to indicate which OpenGL extensions are supported at runtime.
* XXX might merge this into the above structure someday.
*/
typedef struct {
/* derived from above */
extern DECLEXPORT(void) crStateExtensionsInit( CRLimitsState *limits, CRExtensionState *extensions );
#ifdef __cplusplus
}
#endif
#endif /* CR_STATE_FOG_H */