summaryrefslogtreecommitdiffstats
path: root/src/VBox/GuestHost/OpenGL/include/state/cr_limits.h
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-06 03:01:46 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-06 03:01:46 +0000
commitf8fe689a81f906d1b91bb3220acde2a4ecb14c5b (patch)
tree26484e9d7e2c67806c2d1760196ff01aaa858e8c /src/VBox/GuestHost/OpenGL/include/state/cr_limits.h
parentInitial commit. (diff)
downloadvirtualbox-upstream.tar.xz
virtualbox-upstream.zip
Adding upstream version 6.0.4-dfsg.upstream/6.0.4-dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/VBox/GuestHost/OpenGL/include/state/cr_limits.h')
-rw-r--r--src/VBox/GuestHost/OpenGL/include/state/cr_limits.h285
1 files changed, 285 insertions, 0 deletions
diff --git a/src/VBox/GuestHost/OpenGL/include/state/cr_limits.h b/src/VBox/GuestHost/OpenGL/include/state/cr_limits.h
new file mode 100644
index 00000000..0378ff07
--- /dev/null
+++ b/src/VBox/GuestHost/OpenGL/include/state/cr_limits.h
@@ -0,0 +1,285 @@
+/* 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"
+
+#include <iprt/cdefs.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 256
+#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_ENV_PARAMS 256 /* for GL_NV_vertex_program2 */
+#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 {
+ GLuint maxTextureUnits;
+ GLuint maxTextureSize;
+ GLuint max3DTextureSize; /* OpenGL 1.2 */
+#ifdef CR_ARB_texture_cube_map
+ GLuint maxCubeMapTextureSize;
+#endif
+ GLuint maxLights;
+ GLuint maxClipPlanes;
+ GLuint maxProjectionStackDepth;
+ GLuint maxModelviewStackDepth;
+ GLuint maxTextureStackDepth;
+ GLuint maxColorStackDepth; /* OpenGL 1.2 */
+ GLuint maxAttribStackDepth;
+ GLuint maxClientAttribStackDepth;
+ GLuint maxNameStackDepth;
+ GLuint maxElementsIndices;
+ GLuint maxElementsVertices;
+ GLuint maxEvalOrder;
+ GLuint maxListNesting;
+ GLuint maxPixelMapTable;
+ GLint maxViewportDims[2];
+ GLuint subpixelBits;
+ GLfloat aliasedPointSizeRange[2];
+ GLfloat smoothPointSizeRange[2];
+ GLfloat pointSizeGranularity;
+ GLfloat aliasedLineWidthRange[2];
+ GLfloat smoothLineWidthRange[2];
+ GLfloat lineWidthGranularity;
+#ifdef CR_EXT_texture_lod_bias
+ GLfloat maxTextureLodBias;
+#endif
+#ifdef CR_EXT_texture_filter_anisotropic
+ GLfloat maxTextureAnisotropy;
+#endif
+#ifdef CR_ARB_texture_compression
+ GLuint numCompressedFormats;
+ GLenum compressedFormats[10];
+#endif
+#ifdef CR_NV_register_combiners
+ GLuint maxGeneralCombiners;
+#endif
+#ifdef CR_NV_texture_rectangle
+ GLuint maxRectTextureSize;
+#endif
+#ifdef CR_NV_fragment_program
+ GLuint maxTextureCoords;
+ GLuint maxTextureImageUnits;
+ /*GLuint maxFragmentProgramLocalParams;*/
+#endif
+#ifdef CR_NV_vertex_program
+ GLuint maxProgramMatrixStackDepth;
+ GLuint maxProgramMatrices;
+#endif
+#ifdef CR_ARB_fragment_program
+ GLuint maxFragmentProgramInstructions;
+ GLuint maxFragmentProgramLocalParams;
+ GLuint maxFragmentProgramEnvParams;
+ GLuint maxFragmentProgramTemps;
+ GLuint maxFragmentProgramAttribs;
+ GLuint maxFragmentProgramAddressRegs;
+ GLuint maxFragmentProgramAluInstructions;
+ GLuint maxFragmentProgramTexInstructions;
+ GLuint maxFragmentProgramTexIndirections;
+#endif
+#ifdef CR_ARB_vertex_program
+ GLuint maxVertexProgramInstructions;
+ GLuint maxVertexProgramLocalParams;
+ GLuint maxVertexProgramEnvParams;
+ GLuint maxVertexProgramTemps;
+ GLuint maxVertexProgramAttribs;
+ GLuint maxVertexProgramAddressRegs;
+#endif
+ const GLubyte *extensions;
+
+ /* Framebuffer/visual attributes */
+ GLuint redBits, greenBits, blueBits, alphaBits;
+ GLuint depthBits, stencilBits, indexBits;
+ GLuint accumRedBits, accumGreenBits, accumBlueBits, accumAlphaBits;
+ GLuint auxBuffers;
+ GLboolean rgbaMode;
+ GLboolean doubleBuffer;
+ GLboolean stereo;
+ GLuint sampleBuffers;
+ GLuint samples;
+ GLuint level;
+
+} CRLimitsState;
+
+
+/* Booleans to indicate which OpenGL extensions are supported at runtime.
+ * XXX might merge this into the above structure someday.
+ */
+typedef struct {
+ GLboolean ARB_depth_texture;
+ GLboolean ARB_fragment_program;
+ GLboolean ARB_imaging;
+ GLboolean ARB_multisample;
+ GLboolean ARB_multitexture;
+ GLboolean ARB_occlusion_query;
+ GLboolean ARB_point_parameters;
+ GLboolean ARB_point_sprite;
+ GLboolean ARB_shadow;
+ GLboolean ARB_shadow_ambient;
+ GLboolean ARB_texture_border_clamp; /* or SGIS_texture_border_clamp */
+ GLboolean ARB_texture_compression;
+ GLboolean ARB_texture_cube_map; /* or EXT_texture_cube_map */
+ GLboolean ARB_texture_env_add; /* standard in OpenGL 1.3 */
+ GLboolean ARB_texture_env_combine; /* standard in OpenGL 1.3 */
+ GLboolean ARB_texture_env_crossbar; /* standard in OpenGL 1.4 */
+ GLboolean ARB_texture_env_dot3; /* standard in OpenGL 1.3 */
+ GLboolean ARB_texture_mirrored_repeat;
+ GLboolean ARB_texture_non_power_of_two; /* standard in 1.5 */
+ GLboolean ARB_transpose_matrix;
+ GLboolean ARB_vertex_buffer_object;
+ GLboolean ARB_pixel_buffer_object;
+ GLboolean ARB_vertex_program;
+ GLboolean ARB_window_pos;
+ GLboolean EXT_blend_color;
+ GLboolean EXT_blend_logic_op;
+ GLboolean EXT_blend_func_separate;
+ GLboolean EXT_blend_minmax;
+ GLboolean EXT_blend_subtract;
+ GLboolean EXT_clip_volume_hint;
+ GLboolean EXT_fog_coord;
+ GLboolean EXT_multi_draw_arrays;
+ GLboolean EXT_secondary_color;
+ GLboolean EXT_separate_specular_color;
+ GLboolean EXT_shadow_funcs;
+ GLboolean EXT_stencil_wrap;
+ GLboolean EXT_texture_edge_clamp; /* or SGIS_texture_edge_clamp */
+ GLboolean EXT_texture_filter_anisotropic;
+ GLboolean EXT_texture_lod_bias;
+ GLboolean EXT_texture3D;
+ GLboolean IBM_rasterpos_clip;
+ GLboolean NV_fog_distance;
+ GLboolean NV_fragment_program;
+ GLboolean NV_register_combiners;
+ GLboolean NV_register_combiners2;
+ GLboolean NV_texgen_reflection;
+ GLboolean NV_texture_rectangle;
+ GLboolean NV_vertex_program;
+ GLboolean NV_vertex_program1_1;
+ GLboolean NV_vertex_program2;
+ GLboolean SGIS_generate_mipmap;
+ GLboolean EXT_texture_from_pixmap;
+ GLboolean ATI_texture_mirror_once;
+
+ /* derived from above */
+ GLboolean any_vertex_program; /* NV or ARB */
+ GLboolean any_fragment_program; /* NV or ARB */
+ GLboolean any_program; /* vertex or fragment */
+} CRExtensionState;
+
+extern DECLEXPORT(void) crStateLimitsInit(CRLimitsState *limits);
+extern DECLEXPORT(void) crStateLimitsDestroy(CRLimitsState *limits);
+
+extern DECLEXPORT(void) crStateLimitsPrint(const CRLimitsState *limits);
+
+extern DECLEXPORT(GLfloat) crStateComputeVersion(float minVersion);
+
+extern DECLEXPORT(GLubyte *) crStateMergeExtensions(GLuint n, const GLubyte **extensions);
+
+extern DECLEXPORT(void) crStateExtensionsInit( CRLimitsState *limits, CRExtensionState *extensions );
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* CR_STATE_FOG_H */