From f7025b4baa1ba35ee796785641f04eac5bedb0a6 Mon Sep 17 00:00:00 2001 From: marha Date: Wed, 5 Oct 2011 17:37:34 +0200 Subject: mkfontscale pixman xserver xtrans libX11 libXdmcp libxcb libXmu mesa git update 5 oct 2011 --- mesalib/src/mesa/SConscript | 2 + mesalib/src/mesa/drivers/common/driverfuncs.c | 2 - mesalib/src/mesa/drivers/common/meta.c | 31 +- mesalib/src/mesa/drivers/common/meta.h | 3 +- mesalib/src/mesa/drivers/dri/swrast/swrast.c | 1 - mesalib/src/mesa/main/APIspec.xml | 93 +- mesalib/src/mesa/main/accum.c | 3 + mesalib/src/mesa/main/accum.h | 150 +- mesalib/src/mesa/main/api_arrayelt.h | 168 +- mesalib/src/mesa/main/api_loopback.h | 96 +- mesalib/src/mesa/main/arrayobj.c | 1104 ++-- mesalib/src/mesa/main/atifragshader.h | 308 +- mesalib/src/mesa/main/attrib.c | 106 +- mesalib/src/mesa/main/attrib.h | 160 +- mesalib/src/mesa/main/bitset.h | 2 +- mesalib/src/mesa/main/bufferobj.c | 4 +- mesalib/src/mesa/main/bufferobj.h | 6 +- mesalib/src/mesa/main/clear.c | 16 +- mesalib/src/mesa/main/colortab.h | 6 +- mesalib/src/mesa/main/convolve.h | 102 +- mesalib/src/mesa/main/dd.h | 22 +- mesalib/src/mesa/main/debug.c | 4 +- mesalib/src/mesa/main/dlist.c | 8 +- mesalib/src/mesa/main/dlist.h | 208 +- mesalib/src/mesa/main/drawpix.c | 11 + mesalib/src/mesa/main/drawpix.h | 100 +- mesalib/src/mesa/main/enums.c | 6292 ++++++++++---------- mesalib/src/mesa/main/eval.h | 222 +- mesalib/src/mesa/main/extensions.c | 9 +- mesalib/src/mesa/main/fbobject.c | 85 +- mesalib/src/mesa/main/fbobject.h | 390 +- mesalib/src/mesa/main/feedback.c | 2 +- mesalib/src/mesa/main/feedback.h | 198 +- mesalib/src/mesa/main/format_unpack.c | 2 +- mesalib/src/mesa/main/formats.c | 518 +- mesalib/src/mesa/main/formats.h | 46 + mesalib/src/mesa/main/framebuffer.h | 2 +- mesalib/src/mesa/main/get.c | 48 +- mesalib/src/mesa/main/hash.c | 1094 ++-- mesalib/src/mesa/main/histogram.h | 116 +- mesalib/src/mesa/main/image.c | 4 +- mesalib/src/mesa/main/imports.h | 48 +- mesalib/src/mesa/main/mipmap.c | 356 +- mesalib/src/mesa/main/mipmap.h | 4 +- mesalib/src/mesa/main/mm.c | 2 +- mesalib/src/mesa/main/mtypes.h | 20 +- mesalib/src/mesa/main/pack.c | 10 +- mesalib/src/mesa/main/pixel.c | 2 +- mesalib/src/mesa/main/pixel.h | 153 +- mesalib/src/mesa/main/queryobj.h | 8 +- mesalib/src/mesa/main/rastpos.h | 120 +- mesalib/src/mesa/main/remap.h | 196 +- mesalib/src/mesa/main/remap_helper.h | 443 +- mesalib/src/mesa/main/renderbuffer.h | 2 +- mesalib/src/mesa/main/samplerobj.c | 2 +- mesalib/src/mesa/main/samplerobj.h | 2 +- mesalib/src/mesa/main/shader_query.cpp | 239 + mesalib/src/mesa/main/shaderapi.c | 145 +- mesalib/src/mesa/main/shaderapi.h | 390 +- mesalib/src/mesa/main/shaderobj.c | 11 +- mesalib/src/mesa/main/shaderobj.h | 274 +- mesalib/src/mesa/main/state.h | 2 +- mesalib/src/mesa/main/syncobj.h | 238 +- mesalib/src/mesa/main/texcompress_s3tc.c | 2 +- mesalib/src/mesa/main/texcompress_s3tc.h | 2 +- mesalib/src/mesa/main/texformat.c | 83 +- mesalib/src/mesa/main/texgen.h | 170 +- mesalib/src/mesa/main/texgetimage.c | 24 +- mesalib/src/mesa/main/texgetimage.h | 3 +- mesalib/src/mesa/main/teximage.c | 2 +- mesalib/src/mesa/main/teximage.h | 4 +- mesalib/src/mesa/main/texobj.h | 2 +- mesalib/src/mesa/main/texparam.c | 4 +- mesalib/src/mesa/main/texstate.h | 184 +- mesalib/src/mesa/main/texstore.c | 441 +- mesalib/src/mesa/main/transformfeedback.h | 274 +- mesalib/src/mesa/main/varray.h | 2 +- mesalib/src/mesa/main/version.c | 1 - mesalib/src/mesa/main/vtxfmt.h | 118 +- mesalib/src/mesa/program/hash_table.c | 39 +- mesalib/src/mesa/program/hash_table.h | 99 +- mesalib/src/mesa/program/ir_to_mesa.cpp | 16 +- mesalib/src/mesa/program/prog_execute.c | 14 +- mesalib/src/mesa/program/prog_parameter.c | 22 - mesalib/src/mesa/program/prog_parameter.h | 6 +- mesalib/src/mesa/program/prog_statevars.c | 7 +- mesalib/src/mesa/program/program.c | 10 - mesalib/src/mesa/program/program.h | 18 +- mesalib/src/mesa/program/sampler.cpp | 17 +- mesalib/src/mesa/program/string_to_uint_map.cpp | 42 + mesalib/src/mesa/sources.mak | 6 +- mesalib/src/mesa/state_tracker/st_cb_texture.c | 102 +- mesalib/src/mesa/state_tracker/st_extensions.c | 14 +- mesalib/src/mesa/state_tracker/st_gen_mipmap.c | 205 +- mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 14 - mesalib/src/mesa/swrast/s_aaline.c | 984 +-- mesalib/src/mesa/swrast/s_aatriangle.c | 624 +- mesalib/src/mesa/swrast/s_blit.c | 2 +- mesalib/src/mesa/swrast/s_context.c | 11 - mesalib/src/mesa/swrast/s_context.h | 12 +- mesalib/src/mesa/swrast/s_fragprog.c | 2 +- mesalib/src/mesa/swrast/s_logic.c | 438 +- mesalib/src/mesa/swrast/s_points.c | 1144 ++-- mesalib/src/mesa/swrast/s_span.c | 22 +- mesalib/src/mesa/swrast/s_stencil.c | 2 +- mesalib/src/mesa/swrast/s_texcombine.c | 22 +- mesalib/src/mesa/swrast/s_texfetch.c | 2 +- mesalib/src/mesa/swrast/s_texfilter.c | 52 +- mesalib/src/mesa/swrast/s_texture.c | 7 + mesalib/src/mesa/swrast/s_triangle.c | 8 +- mesalib/src/mesa/swrast/s_zoom.c | 866 +-- mesalib/src/mesa/tnl/t_vb_program.c | 1146 ++-- mesalib/src/mesa/tnl/t_vertex_generic.c | 98 +- mesalib/src/mesa/vbo/vbo_attrib_tmp.h | 12 +- mesalib/src/mesa/vbo/vbo_context.h | 226 +- mesalib/src/mesa/vbo/vbo_exec.h | 4 +- mesalib/src/mesa/vbo/vbo_rebase.c | 3 +- mesalib/src/mesa/vbo/vbo_save.h | 4 +- 118 files changed, 11410 insertions(+), 10639 deletions(-) create mode 100644 mesalib/src/mesa/main/shader_query.cpp create mode 100644 mesalib/src/mesa/program/string_to_uint_map.cpp (limited to 'mesalib/src/mesa') diff --git a/mesalib/src/mesa/SConscript b/mesalib/src/mesa/SConscript index abcce4133..9f142bf08 100644 --- a/mesalib/src/mesa/SConscript +++ b/mesalib/src/mesa/SConscript @@ -108,6 +108,7 @@ main_sources = [ 'main/scissor.c', 'main/shaderapi.c', 'main/shaderobj.c', + 'main/shader_query.cpp', 'main/shared.c', 'main/state.c', 'main/stencil.c', @@ -307,6 +308,7 @@ program_sources = [ 'program/programopt.c', 'program/sampler.cpp', 'program/symbol_table.c', + 'program/string_to_uint_map.cpp', program_lex, program_parse[0], ] diff --git a/mesalib/src/mesa/drivers/common/driverfuncs.c b/mesalib/src/mesa/drivers/common/driverfuncs.c index 3e2896980..33da9346c 100644 --- a/mesalib/src/mesa/drivers/common/driverfuncs.c +++ b/mesalib/src/mesa/drivers/common/driverfuncs.c @@ -200,8 +200,6 @@ _mesa_init_driver_functions(struct dd_function_table *driver) _mesa_init_sampler_object_functions(driver); /* T&L stuff */ - driver->NeedValidate = GL_FALSE; - driver->ValidateTnlModule = NULL; driver->CurrentExecPrimitive = 0; driver->CurrentSavePrimitive = 0; driver->NeedFlush = 0; diff --git a/mesalib/src/mesa/drivers/common/meta.c b/mesalib/src/mesa/drivers/common/meta.c index b6e80d70a..4d645e200 100644 --- a/mesalib/src/mesa/drivers/common/meta.c +++ b/mesalib/src/mesa/drivers/common/meta.c @@ -49,6 +49,7 @@ #include "main/macros.h" #include "main/matrix.h" #include "main/mipmap.h" +#include "main/pixel.h" #include "main/pbo.h" #include "main/polygon.h" #include "main/readpix.h" @@ -3235,8 +3236,27 @@ decompress_texture_image(struct gl_context *ctx, } /* read pixels from renderbuffer */ - ctx->Pack.RowLength = destRowLength; - _mesa_ReadPixels(0, 0, width, height, destFormat, destType, dest); + { + GLenum baseTexFormat = texImage->_BaseFormat; + + /* The pixel transfer state will be set to default values at this point + * (see MESA_META_PIXEL_TRANSFER) so pixel transfer ops are effectively + * turned off (as required by glGetTexImage) but we need to handle some + * special cases. In particular, single-channel texture values are + * returned as red and two-channel texture values are returned as + * red/alpha. + */ + if (baseTexFormat == GL_LUMINANCE || + baseTexFormat == GL_LUMINANCE_ALPHA || + baseTexFormat == GL_INTENSITY) { + /* Green and blue must be zero */ + _mesa_PixelTransferf(GL_GREEN_SCALE, 0.0f); + _mesa_PixelTransferf(GL_BLUE_SCALE, 0.0f); + } + + ctx->Pack.RowLength = destRowLength; + _mesa_ReadPixels(0, 0, width, height, destFormat, destType, dest); + } /* disable texture unit */ _mesa_set_enable(ctx, target, GL_FALSE); @@ -3260,9 +3280,8 @@ decompress_texture_image(struct gl_context *ctx, * from core Mesa. */ void -_mesa_meta_GetTexImage(struct gl_context *ctx, GLenum target, GLint level, +_mesa_meta_GetTexImage(struct gl_context *ctx, GLenum format, GLenum type, GLvoid *pixels, - struct gl_texture_object *texObj, struct gl_texture_image *texImage) { /* We can only use the decompress-with-blit method here if the texels are @@ -3272,6 +3291,7 @@ _mesa_meta_GetTexImage(struct gl_context *ctx, GLenum target, GLint level, if (_mesa_is_format_compressed(texImage->TexFormat) && _mesa_get_format_datatype(texImage->TexFormat) == GL_UNSIGNED_NORMALIZED) { + struct gl_texture_object *texObj = texImage->TexObject; const GLuint slice = 0; /* only 2D compressed textures for now */ /* Need to unlock the texture here to prevent deadlock... */ _mesa_unlock_texture(ctx, texObj); @@ -3281,7 +3301,6 @@ _mesa_meta_GetTexImage(struct gl_context *ctx, GLenum target, GLint level, _mesa_lock_texture(ctx, texObj); } else { - _mesa_get_teximage(ctx, target, level, format, type, pixels, - texObj, texImage); + _mesa_get_teximage(ctx, format, type, pixels, texImage); } } diff --git a/mesalib/src/mesa/drivers/common/meta.h b/mesalib/src/mesa/drivers/common/meta.h index 3c917924a..7ec568388 100644 --- a/mesalib/src/mesa/drivers/common/meta.h +++ b/mesalib/src/mesa/drivers/common/meta.h @@ -124,9 +124,8 @@ _mesa_meta_CopyTexSubImage3D(struct gl_context *ctx, GLenum target, GLint level, GLsizei width, GLsizei height); extern void -_mesa_meta_GetTexImage(struct gl_context *ctx, GLenum target, GLint level, +_mesa_meta_GetTexImage(struct gl_context *ctx, GLenum format, GLenum type, GLvoid *pixels, - struct gl_texture_object *texObj, struct gl_texture_image *texImage); diff --git a/mesalib/src/mesa/drivers/dri/swrast/swrast.c b/mesalib/src/mesa/drivers/dri/swrast/swrast.c index 8665ad099..d2c74b91d 100644 --- a/mesalib/src/mesa/drivers/dri/swrast/swrast.c +++ b/mesalib/src/mesa/drivers/dri/swrast/swrast.c @@ -577,7 +577,6 @@ swrast_init_driver_functions(struct dd_function_table *driver) static const char *es2_extensions[] = { /* Used by mesa internally (cf all_mesa_extensions in ../common/utils.c) */ - "GL_ARB_draw_buffers", "GL_ARB_transpose_matrix", "GL_ARB_window_pos", "GL_EXT_blend_func_separate", diff --git a/mesalib/src/mesa/main/APIspec.xml b/mesalib/src/mesa/main/APIspec.xml index 0f82d0a38..5d5fc03be 100644 --- a/mesalib/src/mesa/main/APIspec.xml +++ b/mesalib/src/mesa/main/APIspec.xml @@ -3114,11 +3114,6 @@ - - - - - - - - - + @@ -3868,6 +3794,8 @@ + + @@ -4199,6 +4127,9 @@ + + + diff --git a/mesalib/src/mesa/main/accum.c b/mesalib/src/mesa/main/accum.c index 6a83930a1..d7ed3a849 100644 --- a/mesalib/src/mesa/main/accum.c +++ b/mesalib/src/mesa/main/accum.c @@ -97,6 +97,9 @@ _mesa_Accum( GLenum op, GLfloat value ) return; } + if (ctx->TransformFeedback.RasterDiscard) + return; + if (ctx->RenderMode == GL_RENDER) { ctx->Driver.Accum(ctx, op, value); } diff --git a/mesalib/src/mesa/main/accum.h b/mesalib/src/mesa/main/accum.h index bcd91bd53..f16378cc1 100644 --- a/mesalib/src/mesa/main/accum.h +++ b/mesalib/src/mesa/main/accum.h @@ -1,75 +1,75 @@ -/** - * \file accum.h - * Accumulation buffer operations. - * - * \if subset - * (No-op) - * - * \endif - */ - -/* - * Mesa 3-D graphics library - * Version: 3.5 - * - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - - -#ifndef ACCUM_H -#define ACCUM_H - -#include "main/glheader.h" -#include "main/mfeatures.h" - -struct _glapi_table; -struct gl_context; - -#if FEATURE_accum - -extern void GLAPIENTRY -_mesa_ClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ); - -extern void -_mesa_init_accum_dispatch(struct _glapi_table *disp); - -#else /* FEATURE_accum */ - -#include "main/compiler.h" - -static INLINE void -_mesa_ClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ) -{ - /* this is used in _mesa_PopAttrib */ - ASSERT_NO_FEATURE(); -} - -static INLINE void -_mesa_init_accum_dispatch(struct _glapi_table *disp) -{ -} - -#endif /* FEATURE_accum */ - -extern void -_mesa_init_accum( struct gl_context *ctx ); - -#endif /* ACCUM_H */ +/** + * \file accum.h + * Accumulation buffer operations. + * + * \if subset + * (No-op) + * + * \endif + */ + +/* + * Mesa 3-D graphics library + * Version: 3.5 + * + * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + + +#ifndef ACCUM_H +#define ACCUM_H + +#include "main/glheader.h" +#include "main/mfeatures.h" + +struct _glapi_table; +struct gl_context; + +#if FEATURE_accum + +extern void GLAPIENTRY +_mesa_ClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ); + +extern void +_mesa_init_accum_dispatch(struct _glapi_table *disp); + +#else /* FEATURE_accum */ + +#include "main/compiler.h" + +static inline void +_mesa_ClearAccum( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha ) +{ + /* this is used in _mesa_PopAttrib */ + ASSERT_NO_FEATURE(); +} + +static inline void +_mesa_init_accum_dispatch(struct _glapi_table *disp) +{ +} + +#endif /* FEATURE_accum */ + +extern void +_mesa_init_accum( struct gl_context *ctx ); + +#endif /* ACCUM_H */ diff --git a/mesalib/src/mesa/main/api_arrayelt.h b/mesalib/src/mesa/main/api_arrayelt.h index 16e938fd0..03810c69b 100644 --- a/mesalib/src/mesa/main/api_arrayelt.h +++ b/mesalib/src/mesa/main/api_arrayelt.h @@ -1,84 +1,84 @@ - -/* - * Mesa 3-D graphics library - * Version: 3.5 - * - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -#ifndef API_ARRAYELT_H -#define API_ARRAYELT_H - - -#include "main/mfeatures.h" -#include "main/mtypes.h" - -#if FEATURE_arrayelt - -#define _MESA_INIT_ARRAYELT_VTXFMT(vfmt, impl) \ - do { \ - (vfmt)->ArrayElement = impl ## ArrayElement; \ - } while (0) - -extern GLboolean _ae_create_context( struct gl_context *ctx ); -extern void _ae_destroy_context( struct gl_context *ctx ); -extern void _ae_invalidate_state( struct gl_context *ctx, GLuint new_state ); -extern void GLAPIENTRY _ae_ArrayElement( GLint elt ); - -/* May optionally be called before a batch of element calls: - */ -extern void _ae_map_vbos( struct gl_context *ctx ); -extern void _ae_unmap_vbos( struct gl_context *ctx ); - -extern void -_mesa_install_arrayelt_vtxfmt(struct _glapi_table *disp, - const GLvertexformat *vfmt); - -#else /* FEATURE_arrayelt */ - -#define _MESA_INIT_ARRAYELT_VTXFMT(vfmt, impl) do { } while (0) - -static INLINE GLboolean -_ae_create_context( struct gl_context *ctx ) -{ - return GL_TRUE; -} - -static INLINE void -_ae_destroy_context( struct gl_context *ctx ) -{ -} - -static INLINE void -_ae_invalidate_state( struct gl_context *ctx, GLuint new_state ) -{ -} - -static INLINE void -_mesa_install_arrayelt_vtxfmt(struct _glapi_table *disp, - const GLvertexformat *vfmt) -{ -} - -#endif /* FEATURE_arrayelt */ - - -#endif /* API_ARRAYELT_H */ + +/* + * Mesa 3-D graphics library + * Version: 3.5 + * + * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +#ifndef API_ARRAYELT_H +#define API_ARRAYELT_H + + +#include "main/mfeatures.h" +#include "main/mtypes.h" + +#if FEATURE_arrayelt + +#define _MESA_INIT_ARRAYELT_VTXFMT(vfmt, impl) \ + do { \ + (vfmt)->ArrayElement = impl ## ArrayElement; \ + } while (0) + +extern GLboolean _ae_create_context( struct gl_context *ctx ); +extern void _ae_destroy_context( struct gl_context *ctx ); +extern void _ae_invalidate_state( struct gl_context *ctx, GLuint new_state ); +extern void GLAPIENTRY _ae_ArrayElement( GLint elt ); + +/* May optionally be called before a batch of element calls: + */ +extern void _ae_map_vbos( struct gl_context *ctx ); +extern void _ae_unmap_vbos( struct gl_context *ctx ); + +extern void +_mesa_install_arrayelt_vtxfmt(struct _glapi_table *disp, + const GLvertexformat *vfmt); + +#else /* FEATURE_arrayelt */ + +#define _MESA_INIT_ARRAYELT_VTXFMT(vfmt, impl) do { } while (0) + +static inline GLboolean +_ae_create_context( struct gl_context *ctx ) +{ + return GL_TRUE; +} + +static inline void +_ae_destroy_context( struct gl_context *ctx ) +{ +} + +static inline void +_ae_invalidate_state( struct gl_context *ctx, GLuint new_state ) +{ +} + +static inline void +_mesa_install_arrayelt_vtxfmt(struct _glapi_table *disp, + const GLvertexformat *vfmt) +{ +} + +#endif /* FEATURE_arrayelt */ + + +#endif /* API_ARRAYELT_H */ diff --git a/mesalib/src/mesa/main/api_loopback.h b/mesalib/src/mesa/main/api_loopback.h index 921637641..f53b90280 100644 --- a/mesalib/src/mesa/main/api_loopback.h +++ b/mesalib/src/mesa/main/api_loopback.h @@ -1,48 +1,48 @@ -/* - * Mesa 3-D graphics library - * Version: 3.5 - * - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - - -#ifndef API_LOOPBACK_H -#define API_LOOPBACK_H - -#include "main/compiler.h" -#include "main/mfeatures.h" - -struct _glapi_table; - -#if FEATURE_beginend - -extern void _mesa_loopback_init_api_table( struct _glapi_table *dest ); - -#else /* FEATURE_beginend */ - -static INLINE void -_mesa_loopback_init_api_table( struct _glapi_table *dest ) -{ -} - -#endif /* FEATURE_beginend */ - -#endif /* API_LOOPBACK_H */ +/* + * Mesa 3-D graphics library + * Version: 3.5 + * + * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + + +#ifndef API_LOOPBACK_H +#define API_LOOPBACK_H + +#include "main/compiler.h" +#include "main/mfeatures.h" + +struct _glapi_table; + +#if FEATURE_beginend + +extern void _mesa_loopback_init_api_table( struct _glapi_table *dest ); + +#else /* FEATURE_beginend */ + +static inline void +_mesa_loopback_init_api_table( struct _glapi_table *dest ) +{ +} + +#endif /* FEATURE_beginend */ + +#endif /* API_LOOPBACK_H */ diff --git a/mesalib/src/mesa/main/arrayobj.c b/mesalib/src/mesa/main/arrayobj.c index 8d53186c8..78f56ab00 100644 --- a/mesalib/src/mesa/main/arrayobj.c +++ b/mesalib/src/mesa/main/arrayobj.c @@ -1,552 +1,552 @@ -/* - * Mesa 3-D graphics library - * Version: 7.6 - * - * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. - * (C) Copyright IBM Corporation 2006 - * Copyright (C) 2009 VMware, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL OR IBM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF - * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - - -/** - * \file arrayobj.c - * Functions for the GL_APPLE_vertex_array_object extension. - * - * \todo - * The code in this file borrows a lot from bufferobj.c. There's a certain - * amount of cruft left over from that origin that may be unnecessary. - * - * \author Ian Romanick - * \author Brian Paul - */ - - -#include "glheader.h" -#include "hash.h" -#include "image.h" -#include "imports.h" -#include "context.h" -#include "mfeatures.h" -#if FEATURE_ARB_vertex_buffer_object -#include "bufferobj.h" -#endif -#include "arrayobj.h" -#include "macros.h" -#include "mtypes.h" -#include "varray.h" -#include "main/dispatch.h" - - -/** - * Look up the array object for the given ID. - * - * \returns - * Either a pointer to the array object with the specified ID or \c NULL for - * a non-existent ID. The spec defines ID 0 as being technically - * non-existent. - */ - -static INLINE struct gl_array_object * -lookup_arrayobj(struct gl_context *ctx, GLuint id) -{ - if (id == 0) - return NULL; - else - return (struct gl_array_object *) - _mesa_HashLookup(ctx->Array.Objects, id); -} - - -/** - * For all the vertex arrays in the array object, unbind any pointers - * to any buffer objects (VBOs). - * This is done just prior to array object destruction. - */ -static void -unbind_array_object_vbos(struct gl_context *ctx, struct gl_array_object *obj) -{ - GLuint i; - - _mesa_reference_buffer_object(ctx, &obj->Vertex.BufferObj, NULL); - _mesa_reference_buffer_object(ctx, &obj->Weight.BufferObj, NULL); - _mesa_reference_buffer_object(ctx, &obj->Normal.BufferObj, NULL); - _mesa_reference_buffer_object(ctx, &obj->Color.BufferObj, NULL); - _mesa_reference_buffer_object(ctx, &obj->SecondaryColor.BufferObj, NULL); - _mesa_reference_buffer_object(ctx, &obj->FogCoord.BufferObj, NULL); - _mesa_reference_buffer_object(ctx, &obj->Index.BufferObj, NULL); - _mesa_reference_buffer_object(ctx, &obj->EdgeFlag.BufferObj, NULL); - - for (i = 0; i < Elements(obj->TexCoord); i++) - _mesa_reference_buffer_object(ctx, &obj->TexCoord[i].BufferObj, NULL); - - for (i = 0; i < Elements(obj->VertexAttrib); i++) - _mesa_reference_buffer_object(ctx, &obj->VertexAttrib[i].BufferObj,NULL); - -#if FEATURE_point_size_array - _mesa_reference_buffer_object(ctx, &obj->PointSize.BufferObj, NULL); -#endif -} - - -/** - * Allocate and initialize a new vertex array object. - * - * This function is intended to be called via - * \c dd_function_table::NewArrayObject. - */ -struct gl_array_object * -_mesa_new_array_object( struct gl_context *ctx, GLuint name ) -{ - struct gl_array_object *obj = CALLOC_STRUCT(gl_array_object); - if (obj) - _mesa_initialize_array_object(ctx, obj, name); - return obj; -} - - -/** - * Delete an array object. - * - * This function is intended to be called via - * \c dd_function_table::DeleteArrayObject. - */ -void -_mesa_delete_array_object( struct gl_context *ctx, struct gl_array_object *obj ) -{ - (void) ctx; - unbind_array_object_vbos(ctx, obj); - _glthread_DESTROY_MUTEX(obj->Mutex); - free(obj); -} - - -/** - * Set ptr to arrayObj w/ reference counting. - */ -void -_mesa_reference_array_object(struct gl_context *ctx, - struct gl_array_object **ptr, - struct gl_array_object *arrayObj) -{ - if (*ptr == arrayObj) - return; - - if (*ptr) { - /* Unreference the old array object */ - GLboolean deleteFlag = GL_FALSE; - struct gl_array_object *oldObj = *ptr; - - _glthread_LOCK_MUTEX(oldObj->Mutex); - ASSERT(oldObj->RefCount > 0); - oldObj->RefCount--; -#if 0 - printf("ArrayObj %p %d DECR to %d\n", - (void *) oldObj, oldObj->Name, oldObj->RefCount); -#endif - deleteFlag = (oldObj->RefCount == 0); - _glthread_UNLOCK_MUTEX(oldObj->Mutex); - - if (deleteFlag) { - ASSERT(ctx->Driver.DeleteArrayObject); - ctx->Driver.DeleteArrayObject(ctx, oldObj); - } - - *ptr = NULL; - } - ASSERT(!*ptr); - - if (arrayObj) { - /* reference new array object */ - _glthread_LOCK_MUTEX(arrayObj->Mutex); - if (arrayObj->RefCount == 0) { - /* this array's being deleted (look just above) */ - /* Not sure this can every really happen. Warn if it does. */ - _mesa_problem(NULL, "referencing deleted array object"); - *ptr = NULL; - } - else { - arrayObj->RefCount++; -#if 0 - printf("ArrayObj %p %d INCR to %d\n", - (void *) arrayObj, arrayObj->Name, arrayObj->RefCount); -#endif - *ptr = arrayObj; - } - _glthread_UNLOCK_MUTEX(arrayObj->Mutex); - } -} - - - -static void -init_array(struct gl_context *ctx, - struct gl_client_array *array, GLint size, GLint type) -{ - array->Size = size; - array->Type = type; - array->Format = GL_RGBA; /* only significant for GL_EXT_vertex_array_bgra */ - array->Stride = 0; - array->StrideB = 0; - array->Ptr = NULL; - array->Enabled = GL_FALSE; - array->Normalized = GL_FALSE; - array->_ElementSize = size * _mesa_sizeof_type(type); -#if FEATURE_ARB_vertex_buffer_object - /* Vertex array buffers */ - _mesa_reference_buffer_object(ctx, &array->BufferObj, - ctx->Shared->NullBufferObj); -#endif -} - - -/** - * Initialize a gl_array_object's arrays. - */ -void -_mesa_initialize_array_object( struct gl_context *ctx, - struct gl_array_object *obj, - GLuint name ) -{ - GLuint i; - - obj->Name = name; - - _glthread_INIT_MUTEX(obj->Mutex); - obj->RefCount = 1; - - /* Init the individual arrays */ - init_array(ctx, &obj->Vertex, 4, GL_FLOAT); - init_array(ctx, &obj->Weight, 1, GL_FLOAT); - init_array(ctx, &obj->Normal, 3, GL_FLOAT); - init_array(ctx, &obj->Color, 4, GL_FLOAT); - init_array(ctx, &obj->SecondaryColor, 3, GL_FLOAT); - init_array(ctx, &obj->FogCoord, 1, GL_FLOAT); - init_array(ctx, &obj->Index, 1, GL_FLOAT); - for (i = 0; i < Elements(obj->TexCoord); i++) { - init_array(ctx, &obj->TexCoord[i], 4, GL_FLOAT); - } - init_array(ctx, &obj->EdgeFlag, 1, GL_BOOL); - for (i = 0; i < Elements(obj->VertexAttrib); i++) { - init_array(ctx, &obj->VertexAttrib[i], 4, GL_FLOAT); - } - -#if FEATURE_point_size_array - init_array(ctx, &obj->PointSize, 1, GL_FLOAT); -#endif -} - - -/** - * Add the given array object to the array object pool. - */ -static void -save_array_object( struct gl_context *ctx, struct gl_array_object *obj ) -{ - if (obj->Name > 0) { - /* insert into hash table */ - _mesa_HashInsert(ctx->Array.Objects, obj->Name, obj); - } -} - - -/** - * Remove the given array object from the array object pool. - * Do not deallocate the array object though. - */ -static void -remove_array_object( struct gl_context *ctx, struct gl_array_object *obj ) -{ - if (obj->Name > 0) { - /* remove from hash table */ - _mesa_HashRemove(ctx->Array.Objects, obj->Name); - } -} - - - -/** - * Helper for update_arrays(). - * \return min(current min, array->_MaxElement). - */ -static GLuint -update_min(GLuint min, struct gl_client_array *array) -{ - if (array->Enabled) { - _mesa_update_array_max_element(array); - return MIN2(min, array->_MaxElement); - } - else - return min; -} - - -/** - * Examine vertex arrays to update the gl_array_object::_MaxElement field. - */ -void -_mesa_update_array_object_max_element(struct gl_context *ctx, - struct gl_array_object *arrayObj) -{ - GLuint i, min = ~0; - - min = update_min(min, &arrayObj->Vertex); - min = update_min(min, &arrayObj->Weight); - min = update_min(min, &arrayObj->Normal); - min = update_min(min, &arrayObj->Color); - min = update_min(min, &arrayObj->SecondaryColor); - min = update_min(min, &arrayObj->FogCoord); - min = update_min(min, &arrayObj->Index); - min = update_min(min, &arrayObj->EdgeFlag); -#if FEATURE_point_size_array - min = update_min(min, &arrayObj->PointSize); -#endif - for (i = 0; i < ctx->Const.MaxTextureCoordUnits; i++) - min = update_min(min, &arrayObj->TexCoord[i]); - for (i = 0; i < Elements(arrayObj->VertexAttrib); i++) - min = update_min(min, &arrayObj->VertexAttrib[i]); - - /* _MaxElement is one past the last legal array element */ - arrayObj->_MaxElement = min; -} - - -/**********************************************************************/ -/* API Functions */ -/**********************************************************************/ - - -/** - * Helper for _mesa_BindVertexArray() and _mesa_BindVertexArrayAPPLE(). - * \param genRequired specifies behavour when id was not generated with - * glGenVertexArrays(). - */ -static void -bind_vertex_array(struct gl_context *ctx, GLuint id, GLboolean genRequired) -{ - struct gl_array_object * const oldObj = ctx->Array.ArrayObj; - struct gl_array_object *newObj = NULL; - ASSERT_OUTSIDE_BEGIN_END(ctx); - - ASSERT(oldObj != NULL); - - if ( oldObj->Name == id ) - return; /* rebinding the same array object- no change */ - - /* - * Get pointer to new array object (newObj) - */ - if (id == 0) { - /* The spec says there is no array object named 0, but we use - * one internally because it simplifies things. - */ - newObj = ctx->Array.DefaultArrayObj; - } - else { - /* non-default array object */ - newObj = lookup_arrayobj(ctx, id); - if (!newObj) { - if (genRequired) { - _mesa_error(ctx, GL_INVALID_OPERATION, "glBindVertexArray(id)"); - return; - } - - /* For APPLE version, generate a new array object now */ - newObj = (*ctx->Driver.NewArrayObject)(ctx, id); - if (!newObj) { - _mesa_error(ctx, GL_OUT_OF_MEMORY, "glBindVertexArrayAPPLE"); - return; - } - save_array_object(ctx, newObj); - } - } - - ctx->NewState |= _NEW_ARRAY; - ctx->Array.NewState |= _NEW_ARRAY_ALL; - _mesa_reference_array_object(ctx, &ctx->Array.ArrayObj, newObj); - - /* Pass BindVertexArray call to device driver */ - if (ctx->Driver.BindArrayObject && newObj) - ctx->Driver.BindArrayObject(ctx, newObj); -} - - -/** - * ARB version of glBindVertexArray() - * This function behaves differently from glBindVertexArrayAPPLE() in - * that this function requires all ids to have been previously generated - * by glGenVertexArrays[APPLE](). - */ -void GLAPIENTRY -_mesa_BindVertexArray( GLuint id ) -{ - GET_CURRENT_CONTEXT(ctx); - bind_vertex_array(ctx, id, GL_TRUE); -} - - -/** - * Bind a new array. - * - * \todo - * The binding could be done more efficiently by comparing the non-NULL - * pointers in the old and new objects. The only arrays that are "dirty" are - * the ones that are non-NULL in either object. - */ -void GLAPIENTRY -_mesa_BindVertexArrayAPPLE( GLuint id ) -{ - GET_CURRENT_CONTEXT(ctx); - bind_vertex_array(ctx, id, GL_FALSE); -} - - -/** - * Delete a set of array objects. - * - * \param n Number of array objects to delete. - * \param ids Array of \c n array object IDs. - */ -void GLAPIENTRY -_mesa_DeleteVertexArraysAPPLE(GLsizei n, const GLuint *ids) -{ - GET_CURRENT_CONTEXT(ctx); - GLsizei i; - ASSERT_OUTSIDE_BEGIN_END(ctx); - - if (n < 0) { - _mesa_error(ctx, GL_INVALID_VALUE, "glDeleteVertexArrayAPPLE(n)"); - return; - } - - for (i = 0; i < n; i++) { - struct gl_array_object *obj = lookup_arrayobj(ctx, ids[i]); - - if ( obj != NULL ) { - ASSERT( obj->Name == ids[i] ); - - /* If the array object is currently bound, the spec says "the binding - * for that object reverts to zero and the default vertex array - * becomes current." - */ - if ( obj == ctx->Array.ArrayObj ) { - CALL_BindVertexArrayAPPLE( ctx->Exec, (0) ); - } - - /* The ID is immediately freed for re-use */ - remove_array_object(ctx, obj); - - /* Unreference the array object. - * If refcount hits zero, the object will be deleted. - */ - _mesa_reference_array_object(ctx, &obj, NULL); - } - } -} - - -/** - * Generate a set of unique array object IDs and store them in \c arrays. - * Helper for _mesa_GenVertexArrays[APPLE]() functions below. - * \param n Number of IDs to generate. - * \param arrays Array of \c n locations to store the IDs. - * \param vboOnly Will arrays have to reside in VBOs? - */ -static void -gen_vertex_arrays(struct gl_context *ctx, GLsizei n, GLuint *arrays, - GLboolean vboOnly) -{ - GLuint first; - GLint i; - ASSERT_OUTSIDE_BEGIN_END(ctx); - - if (n < 0) { - _mesa_error(ctx, GL_INVALID_VALUE, "glGenVertexArraysAPPLE"); - return; - } - - if (!arrays) { - return; - } - - first = _mesa_HashFindFreeKeyBlock(ctx->Array.Objects, n); - - /* Allocate new, empty array objects and return identifiers */ - for (i = 0; i < n; i++) { - struct gl_array_object *obj; - GLuint name = first + i; - - obj = (*ctx->Driver.NewArrayObject)( ctx, name ); - if (!obj) { - _mesa_error(ctx, GL_OUT_OF_MEMORY, "glGenVertexArraysAPPLE"); - return; - } - obj->VBOonly = vboOnly; - save_array_object(ctx, obj); - arrays[i] = first + i; - } -} - - -/** - * ARB version of glGenVertexArrays() - * All arrays will be required to live in VBOs. - */ -void GLAPIENTRY -_mesa_GenVertexArrays(GLsizei n, GLuint *arrays) -{ - GET_CURRENT_CONTEXT(ctx); - gen_vertex_arrays(ctx, n, arrays, GL_TRUE); -} - - -/** - * APPLE version of glGenVertexArraysAPPLE() - * Arrays may live in VBOs or ordinary memory. - */ -void GLAPIENTRY -_mesa_GenVertexArraysAPPLE(GLsizei n, GLuint *arrays) -{ - GET_CURRENT_CONTEXT(ctx); - gen_vertex_arrays(ctx, n, arrays, GL_FALSE); -} - - -/** - * Determine if ID is the name of an array object. - * - * \param id ID of the potential array object. - * \return \c GL_TRUE if \c id is the name of a array object, - * \c GL_FALSE otherwise. - */ -GLboolean GLAPIENTRY -_mesa_IsVertexArrayAPPLE( GLuint id ) -{ - struct gl_array_object * obj; - GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_FALSE); - - if (id == 0) - return GL_FALSE; - - obj = lookup_arrayobj(ctx, id); - - return (obj != NULL) ? GL_TRUE : GL_FALSE; -} +/* + * Mesa 3-D graphics library + * Version: 7.6 + * + * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. + * (C) Copyright IBM Corporation 2006 + * Copyright (C) 2009 VMware, Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL OR IBM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF + * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + + +/** + * \file arrayobj.c + * Functions for the GL_APPLE_vertex_array_object extension. + * + * \todo + * The code in this file borrows a lot from bufferobj.c. There's a certain + * amount of cruft left over from that origin that may be unnecessary. + * + * \author Ian Romanick + * \author Brian Paul + */ + + +#include "glheader.h" +#include "hash.h" +#include "image.h" +#include "imports.h" +#include "context.h" +#include "mfeatures.h" +#if FEATURE_ARB_vertex_buffer_object +#include "bufferobj.h" +#endif +#include "arrayobj.h" +#include "macros.h" +#include "mtypes.h" +#include "varray.h" +#include "main/dispatch.h" + + +/** + * Look up the array object for the given ID. + * + * \returns + * Either a pointer to the array object with the specified ID or \c NULL for + * a non-existent ID. The spec defines ID 0 as being technically + * non-existent. + */ + +static inline struct gl_array_object * +lookup_arrayobj(struct gl_context *ctx, GLuint id) +{ + if (id == 0) + return NULL; + else + return (struct gl_array_object *) + _mesa_HashLookup(ctx->Array.Objects, id); +} + + +/** + * For all the vertex arrays in the array object, unbind any pointers + * to any buffer objects (VBOs). + * This is done just prior to array object destruction. + */ +static void +unbind_array_object_vbos(struct gl_context *ctx, struct gl_array_object *obj) +{ + GLuint i; + + _mesa_reference_buffer_object(ctx, &obj->Vertex.BufferObj, NULL); + _mesa_reference_buffer_object(ctx, &obj->Weight.BufferObj, NULL); + _mesa_reference_buffer_object(ctx, &obj->Normal.BufferObj, NULL); + _mesa_reference_buffer_object(ctx, &obj->Color.BufferObj, NULL); + _mesa_reference_buffer_object(ctx, &obj->SecondaryColor.BufferObj, NULL); + _mesa_reference_buffer_object(ctx, &obj->FogCoord.BufferObj, NULL); + _mesa_reference_buffer_object(ctx, &obj->Index.BufferObj, NULL); + _mesa_reference_buffer_object(ctx, &obj->EdgeFlag.BufferObj, NULL); + + for (i = 0; i < Elements(obj->TexCoord); i++) + _mesa_reference_buffer_object(ctx, &obj->TexCoord[i].BufferObj, NULL); + + for (i = 0; i < Elements(obj->VertexAttrib); i++) + _mesa_reference_buffer_object(ctx, &obj->VertexAttrib[i].BufferObj,NULL); + +#if FEATURE_point_size_array + _mesa_reference_buffer_object(ctx, &obj->PointSize.BufferObj, NULL); +#endif +} + + +/** + * Allocate and initialize a new vertex array object. + * + * This function is intended to be called via + * \c dd_function_table::NewArrayObject. + */ +struct gl_array_object * +_mesa_new_array_object( struct gl_context *ctx, GLuint name ) +{ + struct gl_array_object *obj = CALLOC_STRUCT(gl_array_object); + if (obj) + _mesa_initialize_array_object(ctx, obj, name); + return obj; +} + + +/** + * Delete an array object. + * + * This function is intended to be called via + * \c dd_function_table::DeleteArrayObject. + */ +void +_mesa_delete_array_object( struct gl_context *ctx, struct gl_array_object *obj ) +{ + (void) ctx; + unbind_array_object_vbos(ctx, obj); + _glthread_DESTROY_MUTEX(obj->Mutex); + free(obj); +} + + +/** + * Set ptr to arrayObj w/ reference counting. + */ +void +_mesa_reference_array_object(struct gl_context *ctx, + struct gl_array_object **ptr, + struct gl_array_object *arrayObj) +{ + if (*ptr == arrayObj) + return; + + if (*ptr) { + /* Unreference the old array object */ + GLboolean deleteFlag = GL_FALSE; + struct gl_array_object *oldObj = *ptr; + + _glthread_LOCK_MUTEX(oldObj->Mutex); + ASSERT(oldObj->RefCount > 0); + oldObj->RefCount--; +#if 0 + printf("ArrayObj %p %d DECR to %d\n", + (void *) oldObj, oldObj->Name, oldObj->RefCount); +#endif + deleteFlag = (oldObj->RefCount == 0); + _glthread_UNLOCK_MUTEX(oldObj->Mutex); + + if (deleteFlag) { + ASSERT(ctx->Driver.DeleteArrayObject); + ctx->Driver.DeleteArrayObject(ctx, oldObj); + } + + *ptr = NULL; + } + ASSERT(!*ptr); + + if (arrayObj) { + /* reference new array object */ + _glthread_LOCK_MUTEX(arrayObj->Mutex); + if (arrayObj->RefCount == 0) { + /* this array's being deleted (look just above) */ + /* Not sure this can every really happen. Warn if it does. */ + _mesa_problem(NULL, "referencing deleted array object"); + *ptr = NULL; + } + else { + arrayObj->RefCount++; +#if 0 + printf("ArrayObj %p %d INCR to %d\n", + (void *) arrayObj, arrayObj->Name, arrayObj->RefCount); +#endif + *ptr = arrayObj; + } + _glthread_UNLOCK_MUTEX(arrayObj->Mutex); + } +} + + + +static void +init_array(struct gl_context *ctx, + struct gl_client_array *array, GLint size, GLint type) +{ + array->Size = size; + array->Type = type; + array->Format = GL_RGBA; /* only significant for GL_EXT_vertex_array_bgra */ + array->Stride = 0; + array->StrideB = 0; + array->Ptr = NULL; + array->Enabled = GL_FALSE; + array->Normalized = GL_FALSE; + array->_ElementSize = size * _mesa_sizeof_type(type); +#if FEATURE_ARB_vertex_buffer_object + /* Vertex array buffers */ + _mesa_reference_buffer_object(ctx, &array->BufferObj, + ctx->Shared->NullBufferObj); +#endif +} + + +/** + * Initialize a gl_array_object's arrays. + */ +void +_mesa_initialize_array_object( struct gl_context *ctx, + struct gl_array_object *obj, + GLuint name ) +{ + GLuint i; + + obj->Name = name; + + _glthread_INIT_MUTEX(obj->Mutex); + obj->RefCount = 1; + + /* Init the individual arrays */ + init_array(ctx, &obj->Vertex, 4, GL_FLOAT); + init_array(ctx, &obj->Weight, 1, GL_FLOAT); + init_array(ctx, &obj->Normal, 3, GL_FLOAT); + init_array(ctx, &obj->Color, 4, GL_FLOAT); + init_array(ctx, &obj->SecondaryColor, 3, GL_FLOAT); + init_array(ctx, &obj->FogCoord, 1, GL_FLOAT); + init_array(ctx, &obj->Index, 1, GL_FLOAT); + for (i = 0; i < Elements(obj->TexCoord); i++) { + init_array(ctx, &obj->TexCoord[i], 4, GL_FLOAT); + } + init_array(ctx, &obj->EdgeFlag, 1, GL_BOOL); + for (i = 0; i < Elements(obj->VertexAttrib); i++) { + init_array(ctx, &obj->VertexAttrib[i], 4, GL_FLOAT); + } + +#if FEATURE_point_size_array + init_array(ctx, &obj->PointSize, 1, GL_FLOAT); +#endif +} + + +/** + * Add the given array object to the array object pool. + */ +static void +save_array_object( struct gl_context *ctx, struct gl_array_object *obj ) +{ + if (obj->Name > 0) { + /* insert into hash table */ + _mesa_HashInsert(ctx->Array.Objects, obj->Name, obj); + } +} + + +/** + * Remove the given array object from the array object pool. + * Do not deallocate the array object though. + */ +static void +remove_array_object( struct gl_context *ctx, struct gl_array_object *obj ) +{ + if (obj->Name > 0) { + /* remove from hash table */ + _mesa_HashRemove(ctx->Array.Objects, obj->Name); + } +} + + + +/** + * Helper for update_arrays(). + * \return min(current min, array->_MaxElement). + */ +static GLuint +update_min(GLuint min, struct gl_client_array *array) +{ + if (array->Enabled) { + _mesa_update_array_max_element(array); + return MIN2(min, array->_MaxElement); + } + else + return min; +} + + +/** + * Examine vertex arrays to update the gl_array_object::_MaxElement field. + */ +void +_mesa_update_array_object_max_element(struct gl_context *ctx, + struct gl_array_object *arrayObj) +{ + GLuint i, min = ~0; + + min = update_min(min, &arrayObj->Vertex); + min = update_min(min, &arrayObj->Weight); + min = update_min(min, &arrayObj->Normal); + min = update_min(min, &arrayObj->Color); + min = update_min(min, &arrayObj->SecondaryColor); + min = update_min(min, &arrayObj->FogCoord); + min = update_min(min, &arrayObj->Index); + min = update_min(min, &arrayObj->EdgeFlag); +#if FEATURE_point_size_array + min = update_min(min, &arrayObj->PointSize); +#endif + for (i = 0; i < ctx->Const.MaxTextureCoordUnits; i++) + min = update_min(min, &arrayObj->TexCoord[i]); + for (i = 0; i < Elements(arrayObj->VertexAttrib); i++) + min = update_min(min, &arrayObj->VertexAttrib[i]); + + /* _MaxElement is one past the last legal array element */ + arrayObj->_MaxElement = min; +} + + +/**********************************************************************/ +/* API Functions */ +/**********************************************************************/ + + +/** + * Helper for _mesa_BindVertexArray() and _mesa_BindVertexArrayAPPLE(). + * \param genRequired specifies behavour when id was not generated with + * glGenVertexArrays(). + */ +static void +bind_vertex_array(struct gl_context *ctx, GLuint id, GLboolean genRequired) +{ + struct gl_array_object * const oldObj = ctx->Array.ArrayObj; + struct gl_array_object *newObj = NULL; + ASSERT_OUTSIDE_BEGIN_END(ctx); + + ASSERT(oldObj != NULL); + + if ( oldObj->Name == id ) + return; /* rebinding the same array object- no change */ + + /* + * Get pointer to new array object (newObj) + */ + if (id == 0) { + /* The spec says there is no array object named 0, but we use + * one internally because it simplifies things. + */ + newObj = ctx->Array.DefaultArrayObj; + } + else { + /* non-default array object */ + newObj = lookup_arrayobj(ctx, id); + if (!newObj) { + if (genRequired) { + _mesa_error(ctx, GL_INVALID_OPERATION, "glBindVertexArray(id)"); + return; + } + + /* For APPLE version, generate a new array object now */ + newObj = (*ctx->Driver.NewArrayObject)(ctx, id); + if (!newObj) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "glBindVertexArrayAPPLE"); + return; + } + save_array_object(ctx, newObj); + } + } + + ctx->NewState |= _NEW_ARRAY; + ctx->Array.NewState |= _NEW_ARRAY_ALL; + _mesa_reference_array_object(ctx, &ctx->Array.ArrayObj, newObj); + + /* Pass BindVertexArray call to device driver */ + if (ctx->Driver.BindArrayObject && newObj) + ctx->Driver.BindArrayObject(ctx, newObj); +} + + +/** + * ARB version of glBindVertexArray() + * This function behaves differently from glBindVertexArrayAPPLE() in + * that this function requires all ids to have been previously generated + * by glGenVertexArrays[APPLE](). + */ +void GLAPIENTRY +_mesa_BindVertexArray( GLuint id ) +{ + GET_CURRENT_CONTEXT(ctx); + bind_vertex_array(ctx, id, GL_TRUE); +} + + +/** + * Bind a new array. + * + * \todo + * The binding could be done more efficiently by comparing the non-NULL + * pointers in the old and new objects. The only arrays that are "dirty" are + * the ones that are non-NULL in either object. + */ +void GLAPIENTRY +_mesa_BindVertexArrayAPPLE( GLuint id ) +{ + GET_CURRENT_CONTEXT(ctx); + bind_vertex_array(ctx, id, GL_FALSE); +} + + +/** + * Delete a set of array objects. + * + * \param n Number of array objects to delete. + * \param ids Array of \c n array object IDs. + */ +void GLAPIENTRY +_mesa_DeleteVertexArraysAPPLE(GLsizei n, const GLuint *ids) +{ + GET_CURRENT_CONTEXT(ctx); + GLsizei i; + ASSERT_OUTSIDE_BEGIN_END(ctx); + + if (n < 0) { + _mesa_error(ctx, GL_INVALID_VALUE, "glDeleteVertexArrayAPPLE(n)"); + return; + } + + for (i = 0; i < n; i++) { + struct gl_array_object *obj = lookup_arrayobj(ctx, ids[i]); + + if ( obj != NULL ) { + ASSERT( obj->Name == ids[i] ); + + /* If the array object is currently bound, the spec says "the binding + * for that object reverts to zero and the default vertex array + * becomes current." + */ + if ( obj == ctx->Array.ArrayObj ) { + CALL_BindVertexArrayAPPLE( ctx->Exec, (0) ); + } + + /* The ID is immediately freed for re-use */ + remove_array_object(ctx, obj); + + /* Unreference the array object. + * If refcount hits zero, the object will be deleted. + */ + _mesa_reference_array_object(ctx, &obj, NULL); + } + } +} + + +/** + * Generate a set of unique array object IDs and store them in \c arrays. + * Helper for _mesa_GenVertexArrays[APPLE]() functions below. + * \param n Number of IDs to generate. + * \param arrays Array of \c n locations to store the IDs. + * \param vboOnly Will arrays have to reside in VBOs? + */ +static void +gen_vertex_arrays(struct gl_context *ctx, GLsizei n, GLuint *arrays, + GLboolean vboOnly) +{ + GLuint first; + GLint i; + ASSERT_OUTSIDE_BEGIN_END(ctx); + + if (n < 0) { + _mesa_error(ctx, GL_INVALID_VALUE, "glGenVertexArraysAPPLE"); + return; + } + + if (!arrays) { + return; + } + + first = _mesa_HashFindFreeKeyBlock(ctx->Array.Objects, n); + + /* Allocate new, empty array objects and return identifiers */ + for (i = 0; i < n; i++) { + struct gl_array_object *obj; + GLuint name = first + i; + + obj = (*ctx->Driver.NewArrayObject)( ctx, name ); + if (!obj) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "glGenVertexArraysAPPLE"); + return; + } + obj->VBOonly = vboOnly; + save_array_object(ctx, obj); + arrays[i] = first + i; + } +} + + +/** + * ARB version of glGenVertexArrays() + * All arrays will be required to live in VBOs. + */ +void GLAPIENTRY +_mesa_GenVertexArrays(GLsizei n, GLuint *arrays) +{ + GET_CURRENT_CONTEXT(ctx); + gen_vertex_arrays(ctx, n, arrays, GL_TRUE); +} + + +/** + * APPLE version of glGenVertexArraysAPPLE() + * Arrays may live in VBOs or ordinary memory. + */ +void GLAPIENTRY +_mesa_GenVertexArraysAPPLE(GLsizei n, GLuint *arrays) +{ + GET_CURRENT_CONTEXT(ctx); + gen_vertex_arrays(ctx, n, arrays, GL_FALSE); +} + + +/** + * Determine if ID is the name of an array object. + * + * \param id ID of the potential array object. + * \return \c GL_TRUE if \c id is the name of a array object, + * \c GL_FALSE otherwise. + */ +GLboolean GLAPIENTRY +_mesa_IsVertexArrayAPPLE( GLuint id ) +{ + struct gl_array_object * obj; + GET_CURRENT_CONTEXT(ctx); + ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_FALSE); + + if (id == 0) + return GL_FALSE; + + obj = lookup_arrayobj(ctx, id); + + return (obj != NULL) ? GL_TRUE : GL_FALSE; +} diff --git a/mesalib/src/mesa/main/atifragshader.h b/mesalib/src/mesa/main/atifragshader.h index 838d327c0..90ada212a 100644 --- a/mesalib/src/mesa/main/atifragshader.h +++ b/mesalib/src/mesa/main/atifragshader.h @@ -1,154 +1,154 @@ -/* - * Mesa 3-D graphics library ATI Fragment Shader - * - * Copyright (C) 2004 David Airlie All Rights Reserved. - * - */ - -#ifndef ATIFRAGSHADER_H -#define ATIFRAGSHADER_H - -#include "compiler.h" -#include "glheader.h" -#include "mfeatures.h" - -struct _glapi_table; -struct gl_context; - -#define MAX_NUM_INSTRUCTIONS_PER_PASS_ATI 8 -#define MAX_NUM_PASSES_ATI 2 -#define MAX_NUM_FRAGMENT_REGISTERS_ATI 6 - -struct ati_fs_opcode_st -{ - GLenum opcode; - GLint num_src_args; -}; - -extern struct ati_fs_opcode_st ati_fs_opcodes[]; - -struct atifragshader_src_register -{ - GLuint Index; - GLuint argRep; - GLuint argMod; -}; - -struct atifragshader_dst_register -{ - GLuint Index; - GLuint dstMod; - GLuint dstMask; -}; - -#define ATI_FRAGMENT_SHADER_COLOR_OP 0 -#define ATI_FRAGMENT_SHADER_ALPHA_OP 1 -#define ATI_FRAGMENT_SHADER_PASS_OP 2 -#define ATI_FRAGMENT_SHADER_SAMPLE_OP 3 - -/* two opcodes - one for color/one for alpha */ -/* up to three source registers for most ops */ -struct atifs_instruction -{ - GLenum Opcode[2]; - GLuint ArgCount[2]; - struct atifragshader_src_register SrcReg[2][3]; - struct atifragshader_dst_register DstReg[2]; -}; - -/* different from arithmetic shader instruction */ -struct atifs_setupinst -{ - GLenum Opcode; - GLuint src; - GLenum swizzle; -}; - - -#if FEATURE_ATI_fragment_shader - -extern void -_mesa_init_ati_fragment_shader_dispatch(struct _glapi_table *disp); - -extern struct ati_fragment_shader * -_mesa_new_ati_fragment_shader(struct gl_context *ctx, GLuint id); - -extern void -_mesa_delete_ati_fragment_shader(struct gl_context *ctx, - struct ati_fragment_shader *s); - - -extern GLuint GLAPIENTRY _mesa_GenFragmentShadersATI(GLuint range); - -extern void GLAPIENTRY _mesa_BindFragmentShaderATI(GLuint id); - -extern void GLAPIENTRY _mesa_DeleteFragmentShaderATI(GLuint id); - -extern void GLAPIENTRY _mesa_BeginFragmentShaderATI(void); - -extern void GLAPIENTRY _mesa_EndFragmentShaderATI(void); - -extern void GLAPIENTRY -_mesa_PassTexCoordATI(GLuint dst, GLuint coord, GLenum swizzle); - -extern void GLAPIENTRY -_mesa_SampleMapATI(GLuint dst, GLuint interp, GLenum swizzle); - -extern void GLAPIENTRY -_mesa_ColorFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMask, - GLuint dstMod, GLuint arg1, GLuint arg1Rep, - GLuint arg1Mod); - -extern void GLAPIENTRY -_mesa_ColorFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMask, - GLuint dstMod, GLuint arg1, GLuint arg1Rep, - GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, - GLuint arg2Mod); - -extern void GLAPIENTRY -_mesa_ColorFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMask, - GLuint dstMod, GLuint arg1, GLuint arg1Rep, - GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, - GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, - GLuint arg3Mod); - -extern void GLAPIENTRY -_mesa_AlphaFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, - GLuint arg1Rep, GLuint arg1Mod); - -extern void GLAPIENTRY -_mesa_AlphaFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, - GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, - GLuint arg2Rep, GLuint arg2Mod); - -extern void GLAPIENTRY -_mesa_AlphaFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, - GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, - GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, - GLuint arg3Rep, GLuint arg3Mod); - -extern void GLAPIENTRY -_mesa_SetFragmentShaderConstantATI(GLuint dst, const GLfloat * value); - -#else /* FEATURE_ATI_fragment_shader */ - -static INLINE void -_mesa_init_ati_fragment_shader_dispatch(struct _glapi_table *disp) -{ -} - -static INLINE struct ati_fragment_shader * -_mesa_new_ati_fragment_shader(struct gl_context *ctx, GLuint id) -{ - return NULL; -} - -static INLINE void -_mesa_delete_ati_fragment_shader(struct gl_context *ctx, - struct ati_fragment_shader *s) -{ -} - -#endif /* FEATURE_ATI_fragment_shader */ - -#endif /* ATIFRAGSHADER_H */ +/* + * Mesa 3-D graphics library ATI Fragment Shader + * + * Copyright (C) 2004 David Airlie All Rights Reserved. + * + */ + +#ifndef ATIFRAGSHADER_H +#define ATIFRAGSHADER_H + +#include "compiler.h" +#include "glheader.h" +#include "mfeatures.h" + +struct _glapi_table; +struct gl_context; + +#define MAX_NUM_INSTRUCTIONS_PER_PASS_ATI 8 +#define MAX_NUM_PASSES_ATI 2 +#define MAX_NUM_FRAGMENT_REGISTERS_ATI 6 + +struct ati_fs_opcode_st +{ + GLenum opcode; + GLint num_src_args; +}; + +extern struct ati_fs_opcode_st ati_fs_opcodes[]; + +struct atifragshader_src_register +{ + GLuint Index; + GLuint argRep; + GLuint argMod; +}; + +struct atifragshader_dst_register +{ + GLuint Index; + GLuint dstMod; + GLuint dstMask; +}; + +#define ATI_FRAGMENT_SHADER_COLOR_OP 0 +#define ATI_FRAGMENT_SHADER_ALPHA_OP 1 +#define ATI_FRAGMENT_SHADER_PASS_OP 2 +#define ATI_FRAGMENT_SHADER_SAMPLE_OP 3 + +/* two opcodes - one for color/one for alpha */ +/* up to three source registers for most ops */ +struct atifs_instruction +{ + GLenum Opcode[2]; + GLuint ArgCount[2]; + struct atifragshader_src_register SrcReg[2][3]; + struct atifragshader_dst_register DstReg[2]; +}; + +/* different from arithmetic shader instruction */ +struct atifs_setupinst +{ + GLenum Opcode; + GLuint src; + GLenum swizzle; +}; + + +#if FEATURE_ATI_fragment_shader + +extern void +_mesa_init_ati_fragment_shader_dispatch(struct _glapi_table *disp); + +extern struct ati_fragment_shader * +_mesa_new_ati_fragment_shader(struct gl_context *ctx, GLuint id); + +extern void +_mesa_delete_ati_fragment_shader(struct gl_context *ctx, + struct ati_fragment_shader *s); + + +extern GLuint GLAPIENTRY _mesa_GenFragmentShadersATI(GLuint range); + +extern void GLAPIENTRY _mesa_BindFragmentShaderATI(GLuint id); + +extern void GLAPIENTRY _mesa_DeleteFragmentShaderATI(GLuint id); + +extern void GLAPIENTRY _mesa_BeginFragmentShaderATI(void); + +extern void GLAPIENTRY _mesa_EndFragmentShaderATI(void); + +extern void GLAPIENTRY +_mesa_PassTexCoordATI(GLuint dst, GLuint coord, GLenum swizzle); + +extern void GLAPIENTRY +_mesa_SampleMapATI(GLuint dst, GLuint interp, GLenum swizzle); + +extern void GLAPIENTRY +_mesa_ColorFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMask, + GLuint dstMod, GLuint arg1, GLuint arg1Rep, + GLuint arg1Mod); + +extern void GLAPIENTRY +_mesa_ColorFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMask, + GLuint dstMod, GLuint arg1, GLuint arg1Rep, + GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, + GLuint arg2Mod); + +extern void GLAPIENTRY +_mesa_ColorFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMask, + GLuint dstMod, GLuint arg1, GLuint arg1Rep, + GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, + GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, + GLuint arg3Mod); + +extern void GLAPIENTRY +_mesa_AlphaFragmentOp1ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, + GLuint arg1Rep, GLuint arg1Mod); + +extern void GLAPIENTRY +_mesa_AlphaFragmentOp2ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, + GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, + GLuint arg2Rep, GLuint arg2Mod); + +extern void GLAPIENTRY +_mesa_AlphaFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, + GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, + GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, + GLuint arg3Rep, GLuint arg3Mod); + +extern void GLAPIENTRY +_mesa_SetFragmentShaderConstantATI(GLuint dst, const GLfloat * value); + +#else /* FEATURE_ATI_fragment_shader */ + +static inline void +_mesa_init_ati_fragment_shader_dispatch(struct _glapi_table *disp) +{ +} + +static inline struct ati_fragment_shader * +_mesa_new_ati_fragment_shader(struct gl_context *ctx, GLuint id) +{ + return NULL; +} + +static inline void +_mesa_delete_ati_fragment_shader(struct gl_context *ctx, + struct ati_fragment_shader *s) +{ +} + +#endif /* FEATURE_ATI_fragment_shader */ + +#endif /* ATIFRAGSHADER_H */ diff --git a/mesalib/src/mesa/main/attrib.c b/mesalib/src/mesa/main/attrib.c index 6f427e008..e67957d4d 100644 --- a/mesalib/src/mesa/main/attrib.c +++ b/mesalib/src/mesa/main/attrib.c @@ -497,7 +497,7 @@ pop_enable_group(struct gl_context *ctx, const struct gl_enable_attrib *enable) const GLuint mask = 1 << i; if ((ctx->Transform.ClipPlanesEnabled & mask) != (enable->ClipPlanes & mask)) _mesa_set_enable(ctx, (GLenum) (GL_CLIP_PLANE0 + i), - (GLboolean) ((enable->ClipPlanes & mask) ? GL_TRUE : GL_FALSE)); + !!(enable->ClipPlanes & mask)); } TEST_AND_UPDATE(ctx->Light.ColorMaterialEnabled, enable->ColorMaterial, @@ -620,38 +620,31 @@ pop_enable_group(struct gl_context *ctx, const struct gl_enable_attrib *enable) if (ctx->Texture.Unit[i].Enabled != enabled) { _mesa_ActiveTextureARB(GL_TEXTURE0 + i); - _mesa_set_enable(ctx, GL_TEXTURE_1D, - (enabled & TEXTURE_1D_BIT) ? GL_TRUE : GL_FALSE); - _mesa_set_enable(ctx, GL_TEXTURE_2D, - (enabled & TEXTURE_2D_BIT) ? GL_TRUE : GL_FALSE); - _mesa_set_enable(ctx, GL_TEXTURE_3D, - (enabled & TEXTURE_3D_BIT) ? GL_TRUE : GL_FALSE); + _mesa_set_enable(ctx, GL_TEXTURE_1D, !!(enabled & TEXTURE_1D_BIT)); + _mesa_set_enable(ctx, GL_TEXTURE_2D, !!(enabled & TEXTURE_2D_BIT)); + _mesa_set_enable(ctx, GL_TEXTURE_3D, !!(enabled & TEXTURE_3D_BIT)); if (ctx->Extensions.NV_texture_rectangle) { _mesa_set_enable(ctx, GL_TEXTURE_RECTANGLE_ARB, - (enabled & TEXTURE_RECT_BIT) ? GL_TRUE : GL_FALSE); + !!(enabled & TEXTURE_RECT_BIT)); } if (ctx->Extensions.ARB_texture_cube_map) { _mesa_set_enable(ctx, GL_TEXTURE_CUBE_MAP, - (enabled & TEXTURE_CUBE_BIT) ? GL_TRUE : GL_FALSE); + !!(enabled & TEXTURE_CUBE_BIT)); } if (ctx->Extensions.MESA_texture_array) { _mesa_set_enable(ctx, GL_TEXTURE_1D_ARRAY_EXT, - (enabled & TEXTURE_1D_ARRAY_BIT) ? GL_TRUE : GL_FALSE); + !!(enabled & TEXTURE_1D_ARRAY_BIT)); _mesa_set_enable(ctx, GL_TEXTURE_2D_ARRAY_EXT, - (enabled & TEXTURE_2D_ARRAY_BIT) ? GL_TRUE : GL_FALSE); + !!(enabled & TEXTURE_2D_ARRAY_BIT)); } } if (ctx->Texture.Unit[i].TexGenEnabled != genEnabled) { _mesa_ActiveTextureARB(GL_TEXTURE0 + i); - _mesa_set_enable(ctx, GL_TEXTURE_GEN_S, - (genEnabled & S_BIT) ? GL_TRUE : GL_FALSE); - _mesa_set_enable(ctx, GL_TEXTURE_GEN_T, - (genEnabled & T_BIT) ? GL_TRUE : GL_FALSE); - _mesa_set_enable(ctx, GL_TEXTURE_GEN_R, - (genEnabled & R_BIT) ? GL_TRUE : GL_FALSE); - _mesa_set_enable(ctx, GL_TEXTURE_GEN_Q, - (genEnabled & Q_BIT) ? GL_TRUE : GL_FALSE); + _mesa_set_enable(ctx, GL_TEXTURE_GEN_S, !!(genEnabled & S_BIT)); + _mesa_set_enable(ctx, GL_TEXTURE_GEN_T, !!(genEnabled & T_BIT)); + _mesa_set_enable(ctx, GL_TEXTURE_GEN_R, !!(genEnabled & R_BIT)); + _mesa_set_enable(ctx, GL_TEXTURE_GEN_Q, !!(genEnabled & Q_BIT)); } } @@ -674,25 +667,22 @@ pop_texture_group(struct gl_context *ctx, struct texture_state *texstate) GLuint tgt; _mesa_ActiveTextureARB(GL_TEXTURE0_ARB + u); - _mesa_set_enable(ctx, GL_TEXTURE_1D, - (unit->Enabled & TEXTURE_1D_BIT) ? GL_TRUE : GL_FALSE); - _mesa_set_enable(ctx, GL_TEXTURE_2D, - (unit->Enabled & TEXTURE_2D_BIT) ? GL_TRUE : GL_FALSE); - _mesa_set_enable(ctx, GL_TEXTURE_3D, - (unit->Enabled & TEXTURE_3D_BIT) ? GL_TRUE : GL_FALSE); + _mesa_set_enable(ctx, GL_TEXTURE_1D, !!(unit->Enabled & TEXTURE_1D_BIT)); + _mesa_set_enable(ctx, GL_TEXTURE_2D, !!(unit->Enabled & TEXTURE_2D_BIT)); + _mesa_set_enable(ctx, GL_TEXTURE_3D, !!(unit->Enabled & TEXTURE_3D_BIT)); if (ctx->Extensions.ARB_texture_cube_map) { _mesa_set_enable(ctx, GL_TEXTURE_CUBE_MAP_ARB, - (unit->Enabled & TEXTURE_CUBE_BIT) ? GL_TRUE : GL_FALSE); + !!(unit->Enabled & TEXTURE_CUBE_BIT)); } if (ctx->Extensions.NV_texture_rectangle) { _mesa_set_enable(ctx, GL_TEXTURE_RECTANGLE_NV, - (unit->Enabled & TEXTURE_RECT_BIT) ? GL_TRUE : GL_FALSE); + !!(unit->Enabled & TEXTURE_RECT_BIT)); } if (ctx->Extensions.MESA_texture_array) { _mesa_set_enable(ctx, GL_TEXTURE_1D_ARRAY_EXT, - (unit->Enabled & TEXTURE_1D_ARRAY_BIT) ? GL_TRUE : GL_FALSE); + !!(unit->Enabled & TEXTURE_1D_ARRAY_BIT)); _mesa_set_enable(ctx, GL_TEXTURE_2D_ARRAY_EXT, - (unit->Enabled & TEXTURE_2D_ARRAY_BIT) ? GL_TRUE : GL_FALSE); + !!(unit->Enabled & TEXTURE_2D_ARRAY_BIT)); } _mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, unit->EnvMode); @@ -719,44 +709,30 @@ pop_texture_group(struct gl_context *ctx, struct texture_state *texstate) ctx->Driver.TexGen(ctx, GL_Q, GL_EYE_PLANE, unit->GenQ.EyePlane); } } - _mesa_set_enable(ctx, GL_TEXTURE_GEN_S, - ((unit->TexGenEnabled & S_BIT) ? GL_TRUE : GL_FALSE)); - _mesa_set_enable(ctx, GL_TEXTURE_GEN_T, - ((unit->TexGenEnabled & T_BIT) ? GL_TRUE : GL_FALSE)); - _mesa_set_enable(ctx, GL_TEXTURE_GEN_R, - ((unit->TexGenEnabled & R_BIT) ? GL_TRUE : GL_FALSE)); - _mesa_set_enable(ctx, GL_TEXTURE_GEN_Q, - ((unit->TexGenEnabled & Q_BIT) ? GL_TRUE : GL_FALSE)); + _mesa_set_enable(ctx, GL_TEXTURE_GEN_S, !!(unit->TexGenEnabled & S_BIT)); + _mesa_set_enable(ctx, GL_TEXTURE_GEN_T, !!(unit->TexGenEnabled & T_BIT)); + _mesa_set_enable(ctx, GL_TEXTURE_GEN_R, !!(unit->TexGenEnabled & R_BIT)); + _mesa_set_enable(ctx, GL_TEXTURE_GEN_Q, !!(unit->TexGenEnabled & Q_BIT)); _mesa_TexEnvf(GL_TEXTURE_FILTER_CONTROL, GL_TEXTURE_LOD_BIAS, unit->LodBias); _mesa_TexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, unit->Combine.ModeRGB); _mesa_TexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, unit->Combine.ModeA); - _mesa_TexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB, - unit->Combine.SourceRGB[0]); - _mesa_TexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB, - unit->Combine.SourceRGB[1]); - _mesa_TexEnvi(GL_TEXTURE_ENV, GL_SOURCE2_RGB, - unit->Combine.SourceRGB[2]); - _mesa_TexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA, - unit->Combine.SourceA[0]); - _mesa_TexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_ALPHA, - unit->Combine.SourceA[1]); - _mesa_TexEnvi(GL_TEXTURE_ENV, GL_SOURCE2_ALPHA, - unit->Combine.SourceA[2]); - _mesa_TexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, - unit->Combine.OperandRGB[0]); - _mesa_TexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB, - unit->Combine.OperandRGB[1]); - _mesa_TexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB, - unit->Combine.OperandRGB[2]); - _mesa_TexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, - unit->Combine.OperandA[0]); - _mesa_TexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_ALPHA, - unit->Combine.OperandA[1]); - _mesa_TexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_ALPHA, - unit->Combine.OperandA[2]); + { + const GLuint n = ctx->Extensions.NV_texture_env_combine4 ? 4 : 3; + GLuint i; + for (i = 0; i < n; i++) { + _mesa_TexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB + i, + unit->Combine.SourceRGB[i]); + _mesa_TexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA + i, + unit->Combine.SourceA[i]); + _mesa_TexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB + i, + unit->Combine.OperandRGB[i]); + _mesa_TexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA + i, + unit->Combine.OperandA[i]); + } + } _mesa_TexEnvi(GL_TEXTURE_ENV, GL_RGB_SCALE, 1 << unit->Combine.ScaleShiftRGB); _mesa_TexEnvi(GL_TEXTURE_ENV, GL_ALPHA_SCALE, @@ -1246,12 +1222,8 @@ _mesa_PopAttrib(void) const GLuint mask = 1 << i; const GLfloat *eyePlane = xform->EyeUserPlane[i]; COPY_4V(ctx->Transform.EyeUserPlane[i], eyePlane); - if (xform->ClipPlanesEnabled & mask) { - _mesa_set_enable(ctx, GL_CLIP_PLANE0 + i, GL_TRUE); - } - else { - _mesa_set_enable(ctx, GL_CLIP_PLANE0 + i, GL_FALSE); - } + _mesa_set_enable(ctx, GL_CLIP_PLANE0 + i, + !!(xform->ClipPlanesEnabled & mask)); if (ctx->Driver.ClipPlane) ctx->Driver.ClipPlane( ctx, GL_CLIP_PLANE0 + i, eyePlane ); } diff --git a/mesalib/src/mesa/main/attrib.h b/mesalib/src/mesa/main/attrib.h index 8e7969a65..6809311cf 100644 --- a/mesalib/src/mesa/main/attrib.h +++ b/mesalib/src/mesa/main/attrib.h @@ -1,80 +1,80 @@ -/* - * Mesa 3-D graphics library - * Version: 7.1 - * - * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#ifndef ATTRIB_H -#define ATTRIB_H - - -#include "compiler.h" -#include "glheader.h" -#include "mfeatures.h" - -struct _glapi_table; -struct gl_context; - -#if FEATURE_attrib_stack - -extern void GLAPIENTRY -_mesa_PushAttrib( GLbitfield mask ); - -extern void GLAPIENTRY -_mesa_PopAttrib( void ); - -extern void GLAPIENTRY -_mesa_PushClientAttrib( GLbitfield mask ); - -extern void GLAPIENTRY -_mesa_PopClientAttrib( void ); - -extern void -_mesa_init_attrib_dispatch(struct _glapi_table *disp); - -#else /* FEATURE_attrib_stack */ - -static INLINE void -_mesa_PushClientAttrib( GLbitfield mask ) -{ - ASSERT_NO_FEATURE(); -} - -static INLINE void -_mesa_PopClientAttrib( void ) -{ - ASSERT_NO_FEATURE(); -} - -static INLINE void -_mesa_init_attrib_dispatch(struct _glapi_table *disp) -{ -} - -#endif /* FEATURE_attrib_stack */ - -extern void -_mesa_init_attrib( struct gl_context *ctx ); - -extern void -_mesa_free_attrib_data( struct gl_context *ctx ); - -#endif /* ATTRIB_H */ +/* + * Mesa 3-D graphics library + * Version: 7.1 + * + * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef ATTRIB_H +#define ATTRIB_H + + +#include "compiler.h" +#include "glheader.h" +#include "mfeatures.h" + +struct _glapi_table; +struct gl_context; + +#if FEATURE_attrib_stack + +extern void GLAPIENTRY +_mesa_PushAttrib( GLbitfield mask ); + +extern void GLAPIENTRY +_mesa_PopAttrib( void ); + +extern void GLAPIENTRY +_mesa_PushClientAttrib( GLbitfield mask ); + +extern void GLAPIENTRY +_mesa_PopClientAttrib( void ); + +extern void +_mesa_init_attrib_dispatch(struct _glapi_table *disp); + +#else /* FEATURE_attrib_stack */ + +static inline void +_mesa_PushClientAttrib( GLbitfield mask ) +{ + ASSERT_NO_FEATURE(); +} + +static inline void +_mesa_PopClientAttrib( void ) +{ + ASSERT_NO_FEATURE(); +} + +static inline void +_mesa_init_attrib_dispatch(struct _glapi_table *disp) +{ +} + +#endif /* FEATURE_attrib_stack */ + +extern void +_mesa_init_attrib( struct gl_context *ctx ); + +extern void +_mesa_free_attrib_data( struct gl_context *ctx ); + +#endif /* ATTRIB_H */ diff --git a/mesalib/src/mesa/main/bitset.h b/mesalib/src/mesa/main/bitset.h index 9f48b3cce..7a0704b14 100644 --- a/mesalib/src/mesa/main/bitset.h +++ b/mesalib/src/mesa/main/bitset.h @@ -81,7 +81,7 @@ /* Get first bit set in a bitset. */ -static INLINE int +static inline int __bitset_ffs(const BITSET_WORD *x, int n) { int i; diff --git a/mesalib/src/mesa/main/bufferobj.c b/mesalib/src/mesa/main/bufferobj.c index 99edb1ade..431eafd38 100644 --- a/mesalib/src/mesa/main/bufferobj.c +++ b/mesalib/src/mesa/main/bufferobj.c @@ -70,7 +70,7 @@ static struct gl_buffer_object DummyBufferObject; * \return pointer to pointer to the buffer object bound to \c target in the * specified context or \c NULL if \c target is invalid. */ -static INLINE struct gl_buffer_object ** +static inline struct gl_buffer_object ** get_buffer_target(struct gl_context *ctx, GLenum target) { switch (target) { @@ -112,7 +112,7 @@ get_buffer_target(struct gl_context *ctx, GLenum target) * \return pointer to the buffer object bound to \c target in the * specified context or \c NULL if \c target is invalid. */ -static INLINE struct gl_buffer_object * +static inline struct gl_buffer_object * get_buffer(struct gl_context *ctx, GLenum target) { struct gl_buffer_object **bufObj = get_buffer_target(ctx, target); diff --git a/mesalib/src/mesa/main/bufferobj.h b/mesalib/src/mesa/main/bufferobj.h index f82e41411..b4e70f2f0 100644 --- a/mesalib/src/mesa/main/bufferobj.h +++ b/mesalib/src/mesa/main/bufferobj.h @@ -39,7 +39,7 @@ /** Is the given buffer object currently mapped? */ -static INLINE GLboolean +static inline GLboolean _mesa_bufferobj_mapped(const struct gl_buffer_object *obj) { return obj->Pointer != NULL; @@ -50,7 +50,7 @@ _mesa_bufferobj_mapped(const struct gl_buffer_object *obj) * Mesa uses default buffer objects in several places. Default buffers * always have Name==0. User created buffers have Name!=0. */ -static INLINE GLboolean +static inline GLboolean _mesa_is_bufferobj(const struct gl_buffer_object *obj) { return obj->Name != 0; @@ -79,7 +79,7 @@ _mesa_reference_buffer_object_(struct gl_context *ctx, struct gl_buffer_object **ptr, struct gl_buffer_object *bufObj); -static INLINE void +static inline void _mesa_reference_buffer_object(struct gl_context *ctx, struct gl_buffer_object **ptr, struct gl_buffer_object *bufObj) diff --git a/mesalib/src/mesa/main/clear.c b/mesalib/src/mesa/main/clear.c index 301fe694c..c35675fb4 100644 --- a/mesalib/src/mesa/main/clear.c +++ b/mesalib/src/mesa/main/clear.c @@ -200,6 +200,9 @@ _mesa_Clear( GLbitfield mask ) ctx->DrawBuffer->_Ymin >= ctx->DrawBuffer->_Ymax) return; + if (ctx->TransformFeedback.RasterDiscard) + return; + if (ctx->RenderMode == GL_RENDER) { GLbitfield bufferMask; @@ -328,7 +331,7 @@ _mesa_ClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) drawbuffer); return; } - else { + else if (!ctx->TransformFeedback.RasterDiscard) { /* Save current stencil clear value, set to 'value', do the * stencil clear and restore the clear value. * XXX in the future we may have a new ctx->Driver.ClearBuffer() @@ -352,7 +355,7 @@ _mesa_ClearBufferiv(GLenum buffer, GLint drawbuffer, const GLint *value) drawbuffer); return; } - else if (mask) { + else if (mask && !ctx->TransformFeedback.RasterDiscard) { union gl_color_union clearSave; /* save color */ @@ -403,7 +406,7 @@ _mesa_ClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) drawbuffer); return; } - else if (mask) { + else if (mask && !ctx->TransformFeedback.RasterDiscard) { union gl_color_union clearSave; /* save color */ @@ -452,7 +455,7 @@ _mesa_ClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) drawbuffer); return; } - else { + else if (!ctx->TransformFeedback.RasterDiscard) { /* Save current depth clear value, set to 'value', do the * depth clear and restore the clear value. * XXX in the future we may have a new ctx->Driver.ClearBuffer() @@ -477,7 +480,7 @@ _mesa_ClearBufferfv(GLenum buffer, GLint drawbuffer, const GLfloat *value) drawbuffer); return; } - else if (mask) { + else if (mask && !ctx->TransformFeedback.RasterDiscard) { union gl_color_union clearSave; /* save color */ @@ -528,6 +531,9 @@ _mesa_ClearBufferfi(GLenum buffer, GLint drawbuffer, return; } + if (ctx->TransformFeedback.RasterDiscard) + return; + if (ctx->NewState) { _mesa_update_state( ctx ); } diff --git a/mesalib/src/mesa/main/colortab.h b/mesalib/src/mesa/main/colortab.h index b0d2b5db8..4e225ffc9 100644 --- a/mesalib/src/mesa/main/colortab.h +++ b/mesalib/src/mesa/main/colortab.h @@ -50,7 +50,7 @@ _mesa_init_colortable_dispatch(struct _glapi_table *disp); #else /* FEATURE_colortable */ -static INLINE void GLAPIENTRY +static inline void GLAPIENTRY _mesa_ColorTable( GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table ) @@ -58,7 +58,7 @@ _mesa_ColorTable( GLenum target, GLenum internalformat, ASSERT_NO_FEATURE(); } -static INLINE void GLAPIENTRY +static inline void GLAPIENTRY _mesa_ColorSubTable( GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *table ) @@ -66,7 +66,7 @@ _mesa_ColorSubTable( GLenum target, GLsizei start, ASSERT_NO_FEATURE(); } -static INLINE void +static inline void _mesa_init_colortable_dispatch(struct _glapi_table *disp) { } diff --git a/mesalib/src/mesa/main/convolve.h b/mesalib/src/mesa/main/convolve.h index 7ecfcd6b1..952285643 100644 --- a/mesalib/src/mesa/main/convolve.h +++ b/mesalib/src/mesa/main/convolve.h @@ -1,51 +1,51 @@ - -/* - * Mesa 3-D graphics library - * Version: 3.5 - * - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -#ifndef CONVOLVE_H -#define CONVOLVE_H - - -#include "compiler.h" -#include "mfeatures.h" - -struct _glapi_table; - - -#if FEATURE_convolve - -extern void -_mesa_init_convolve_dispatch(struct _glapi_table *disp); - -#else /* FEATURE_convolve */ - -static INLINE void -_mesa_init_convolve_dispatch(struct _glapi_table *disp) -{ -} - -#endif /* FEATURE_convolve */ - -#endif /* CONVOLVE_H */ + +/* + * Mesa 3-D graphics library + * Version: 3.5 + * + * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +#ifndef CONVOLVE_H +#define CONVOLVE_H + + +#include "compiler.h" +#include "mfeatures.h" + +struct _glapi_table; + + +#if FEATURE_convolve + +extern void +_mesa_init_convolve_dispatch(struct _glapi_table *disp); + +#else /* FEATURE_convolve */ + +static inline void +_mesa_init_convolve_dispatch(struct _glapi_table *disp) +{ +} + +#endif /* FEATURE_convolve */ + +#endif /* CONVOLVE_H */ diff --git a/mesalib/src/mesa/main/dd.h b/mesalib/src/mesa/main/dd.h index 720e4f53d..787556451 100644 --- a/mesalib/src/mesa/main/dd.h +++ b/mesalib/src/mesa/main/dd.h @@ -284,9 +284,8 @@ struct dd_function_table { /** * Called by glGetTexImage(). */ - void (*GetTexImage)( struct gl_context *ctx, GLenum target, GLint level, + void (*GetTexImage)( struct gl_context *ctx, GLenum format, GLenum type, GLvoid *pixels, - struct gl_texture_object *texObj, struct gl_texture_image *texImage ); /** @@ -814,25 +813,6 @@ struct dd_function_table { */ /*@{*/ - /** - * Bitmask of state changes that require the current T&L module to be - * validated, using ValidateTnlModule() below. - */ - GLuint NeedValidate; - - /** - * Validate the current T&L module. - * - * This is called directly after UpdateState() when a state change that has - * occurred matches the dd_function_table::NeedValidate bitmask above. This - * ensures all computed values are up to date, thus allowing the driver to - * decide if the current T&L module needs to be swapped out. - * - * This must be non-NULL if a driver installs a custom T&L module and sets - * the dd_function_table::NeedValidate bitmask, but may be NULL otherwise. - */ - void (*ValidateTnlModule)( struct gl_context *ctx, GLuint new_state ); - /** * Set by the driver-supplied T&L engine. * diff --git a/mesalib/src/mesa/main/debug.c b/mesalib/src/mesa/main/debug.c index 0a393e5fa..6e695d147 100644 --- a/mesalib/src/mesa/main/debug.c +++ b/mesalib/src/mesa/main/debug.c @@ -268,9 +268,7 @@ write_texture_image(struct gl_texture_object *texObj, store = ctx->Pack; /* save */ ctx->Pack = ctx->DefaultPacking; - ctx->Driver.GetTexImage(ctx, texObj->Target, level, - GL_RGBA, GL_UNSIGNED_BYTE, - buffer, texObj, img); + ctx->Driver.GetTexImage(ctx, GL_RGBA, GL_UNSIGNED_BYTE, buffer, img); /* make filename */ _mesa_snprintf(s, sizeof(s), "/tmp/tex%u.l%u.f%u.ppm", texObj->Name, level, face); diff --git a/mesalib/src/mesa/main/dlist.c b/mesalib/src/mesa/main/dlist.c index f11dae9d0..343feec6f 100644 --- a/mesalib/src/mesa/main/dlist.c +++ b/mesalib/src/mesa/main/dlist.c @@ -560,7 +560,7 @@ make_list(GLuint name, GLuint count) /** * Lookup function to just encapsulate casting. */ -static INLINE struct gl_display_list * +static inline struct gl_display_list * lookup_list(struct gl_context *ctx, GLuint list) { return (struct gl_display_list *) @@ -569,7 +569,7 @@ lookup_list(struct gl_context *ctx, GLuint list) /** Is the given opcode an extension code? */ -static INLINE GLboolean +static inline GLboolean is_ext_opcode(OpCode opcode) { return (opcode >= OPCODE_EXT_0); @@ -1043,7 +1043,7 @@ _mesa_dlist_alloc_opcode(struct gl_context *ctx, * \param nparams number of function parameters * \return pointer to start of instruction space */ -static INLINE Node * +static inline Node * alloc_instruction(struct gl_context *ctx, OpCode opcode, GLuint nparams) { return dlist_alloc(ctx, opcode, nparams * sizeof(Node)); @@ -5672,7 +5672,7 @@ save_EdgeFlag(GLboolean x) save_Attr1fNV(VERT_ATTRIB_EDGEFLAG, x ? (GLfloat)1.0 : (GLfloat)0.0); } -static INLINE GLboolean compare4fv( const GLfloat *a, +static inline GLboolean compare4fv( const GLfloat *a, const GLfloat *b, GLuint count ) { diff --git a/mesalib/src/mesa/main/dlist.h b/mesalib/src/mesa/main/dlist.h index b954e06df..89008431a 100644 --- a/mesalib/src/mesa/main/dlist.h +++ b/mesalib/src/mesa/main/dlist.h @@ -1,104 +1,104 @@ -/** - * \file dlist.h - * Display lists management. - */ - -/* - * Mesa 3-D graphics library - * Version: 6.5.1 - * - * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - - -#ifndef DLIST_H -#define DLIST_H - - -#include "main/mfeatures.h" -#include "main/mtypes.h" - - -#if FEATURE_dlist - -#define _MESA_INIT_DLIST_VTXFMT(vfmt, impl) \ - do { \ - (vfmt)->CallList = impl ## CallList; \ - (vfmt)->CallLists = impl ## CallLists; \ - } while (0) - -extern void GLAPIENTRY _mesa_CallList( GLuint list ); - -extern void GLAPIENTRY _mesa_CallLists( GLsizei n, GLenum type, const GLvoid *lists ); - - -extern void _mesa_compile_error( struct gl_context *ctx, GLenum error, const char *s ); - -extern void *_mesa_dlist_alloc(struct gl_context *ctx, GLuint opcode, GLuint sz); - -extern GLint _mesa_dlist_alloc_opcode( struct gl_context *ctx, GLuint sz, - void (*execute)( struct gl_context *, void * ), - void (*destroy)( struct gl_context *, void * ), - void (*print)( struct gl_context *, void * ) ); - -extern void _mesa_delete_list(struct gl_context *ctx, struct gl_display_list *dlist); - -extern void _mesa_save_vtxfmt_init( GLvertexformat *vfmt ); - -extern struct _glapi_table *_mesa_create_save_table(void); - -extern void _mesa_install_dlist_vtxfmt(struct _glapi_table *disp, - const GLvertexformat *vfmt); - -extern void _mesa_init_dlist_dispatch(struct _glapi_table *disp); - -#else /* FEATURE_dlist */ - -#include "main/compiler.h" - -#define _MESA_INIT_DLIST_VTXFMT(vfmt, impl) do { } while (0) - -static INLINE void -_mesa_delete_list(struct gl_context *ctx, struct gl_display_list *dlist) -{ - /* there should be no list to delete */ - ASSERT_NO_FEATURE(); -} - -static INLINE void -_mesa_install_dlist_vtxfmt(struct _glapi_table *disp, - const GLvertexformat *vfmt) -{ -} - -static INLINE void -_mesa_init_dlist_dispatch(struct _glapi_table *disp) -{ -} - -#endif /* FEATURE_dlist */ - -extern void _mesa_init_display_list( struct gl_context * ctx ); - -extern void _mesa_free_display_list_data(struct gl_context *ctx); - - -#endif /* DLIST_H */ +/** + * \file dlist.h + * Display lists management. + */ + +/* + * Mesa 3-D graphics library + * Version: 6.5.1 + * + * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + + +#ifndef DLIST_H +#define DLIST_H + + +#include "main/mfeatures.h" +#include "main/mtypes.h" + + +#if FEATURE_dlist + +#define _MESA_INIT_DLIST_VTXFMT(vfmt, impl) \ + do { \ + (vfmt)->CallList = impl ## CallList; \ + (vfmt)->CallLists = impl ## CallLists; \ + } while (0) + +extern void GLAPIENTRY _mesa_CallList( GLuint list ); + +extern void GLAPIENTRY _mesa_CallLists( GLsizei n, GLenum type, const GLvoid *lists ); + + +extern void _mesa_compile_error( struct gl_context *ctx, GLenum error, const char *s ); + +extern void *_mesa_dlist_alloc(struct gl_context *ctx, GLuint opcode, GLuint sz); + +extern GLint _mesa_dlist_alloc_opcode( struct gl_context *ctx, GLuint sz, + void (*execute)( struct gl_context *, void * ), + void (*destroy)( struct gl_context *, void * ), + void (*print)( struct gl_context *, void * ) ); + +extern void _mesa_delete_list(struct gl_context *ctx, struct gl_display_list *dlist); + +extern void _mesa_save_vtxfmt_init( GLvertexformat *vfmt ); + +extern struct _glapi_table *_mesa_create_save_table(void); + +extern void _mesa_install_dlist_vtxfmt(struct _glapi_table *disp, + const GLvertexformat *vfmt); + +extern void _mesa_init_dlist_dispatch(struct _glapi_table *disp); + +#else /* FEATURE_dlist */ + +#include "main/compiler.h" + +#define _MESA_INIT_DLIST_VTXFMT(vfmt, impl) do { } while (0) + +static inline void +_mesa_delete_list(struct gl_context *ctx, struct gl_display_list *dlist) +{ + /* there should be no list to delete */ + ASSERT_NO_FEATURE(); +} + +static inline void +_mesa_install_dlist_vtxfmt(struct _glapi_table *disp, + const GLvertexformat *vfmt) +{ +} + +static inline void +_mesa_init_dlist_dispatch(struct _glapi_table *disp) +{ +} + +#endif /* FEATURE_dlist */ + +extern void _mesa_init_display_list( struct gl_context * ctx ); + +extern void _mesa_free_display_list_data(struct gl_context *ctx); + + +#endif /* DLIST_H */ diff --git a/mesalib/src/mesa/main/drawpix.c b/mesalib/src/mesa/main/drawpix.c index b7e2c36e1..412cc15af 100644 --- a/mesalib/src/mesa/main/drawpix.c +++ b/mesalib/src/mesa/main/drawpix.c @@ -80,6 +80,10 @@ _mesa_DrawPixels( GLsizei width, GLsizei height, goto end; /* the error code was recorded */ } + if (ctx->TransformFeedback.RasterDiscard) { + goto end; + } + if (!ctx->Current.RasterPosValid) { goto end; /* no-op, not an error */ } @@ -188,6 +192,10 @@ _mesa_CopyPixels( GLint srcx, GLint srcy, GLsizei width, GLsizei height, goto end; } + if (ctx->TransformFeedback.RasterDiscard) { + goto end; + } + if (!ctx->Current.RasterPosValid || width == 0 || height == 0) { goto end; /* no-op, not an error */ } @@ -242,6 +250,9 @@ _mesa_Bitmap( GLsizei width, GLsizei height, return; } + if (ctx->TransformFeedback.RasterDiscard) + return; + if (ctx->RenderMode == GL_RENDER) { /* Truncate, to satisfy conformance tests (matches SGI's OpenGL). */ if (width > 0 && height > 0) { diff --git a/mesalib/src/mesa/main/drawpix.h b/mesalib/src/mesa/main/drawpix.h index 88d3ecc95..13efba5f8 100644 --- a/mesalib/src/mesa/main/drawpix.h +++ b/mesalib/src/mesa/main/drawpix.h @@ -1,50 +1,50 @@ -/* - * Mesa 3-D graphics library - * Version: 7.1 - * - * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#ifndef DRAWPIX_H -#define DRAWPIX_H - - -#include "compiler.h" -#include "mfeatures.h" - -struct _glapi_table; - - -#if FEATURE_drawpix - -extern void -_mesa_init_drawpix_dispatch(struct _glapi_table *disp); - -#else /* FEATURE_drawpix */ - -static INLINE void -_mesa_init_drawpix_dispatch(struct _glapi_table *disp) -{ -} - -#endif /* FEATURE_drawpix */ - - -#endif /* DRAWPIX_H */ +/* + * Mesa 3-D graphics library + * Version: 7.1 + * + * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef DRAWPIX_H +#define DRAWPIX_H + + +#include "compiler.h" +#include "mfeatures.h" + +struct _glapi_table; + + +#if FEATURE_drawpix + +extern void +_mesa_init_drawpix_dispatch(struct _glapi_table *disp); + +#else /* FEATURE_drawpix */ + +static inline void +_mesa_init_drawpix_dispatch(struct _glapi_table *disp) +{ +} + +#endif /* FEATURE_drawpix */ + + +#endif /* DRAWPIX_H */ diff --git a/mesalib/src/mesa/main/enums.c b/mesalib/src/mesa/main/enums.c index a8962a78a..fb5ed2922 100644 --- a/mesalib/src/mesa/main/enums.c +++ b/mesalib/src/mesa/main/enums.c @@ -495,51 +495,67 @@ LONGSTRING static const char enum_string_table[] = "GL_DRAW_BUFFER0\0" "GL_DRAW_BUFFER0_ARB\0" "GL_DRAW_BUFFER0_ATI\0" + "GL_DRAW_BUFFER0_NV\0" "GL_DRAW_BUFFER1\0" "GL_DRAW_BUFFER10\0" "GL_DRAW_BUFFER10_ARB\0" "GL_DRAW_BUFFER10_ATI\0" + "GL_DRAW_BUFFER10_NV\0" "GL_DRAW_BUFFER11\0" "GL_DRAW_BUFFER11_ARB\0" "GL_DRAW_BUFFER11_ATI\0" + "GL_DRAW_BUFFER11_NV\0" "GL_DRAW_BUFFER12\0" "GL_DRAW_BUFFER12_ARB\0" "GL_DRAW_BUFFER12_ATI\0" + "GL_DRAW_BUFFER12_NV\0" "GL_DRAW_BUFFER13\0" "GL_DRAW_BUFFER13_ARB\0" "GL_DRAW_BUFFER13_ATI\0" + "GL_DRAW_BUFFER13_NV\0" "GL_DRAW_BUFFER14\0" "GL_DRAW_BUFFER14_ARB\0" "GL_DRAW_BUFFER14_ATI\0" + "GL_DRAW_BUFFER14_NV\0" "GL_DRAW_BUFFER15\0" "GL_DRAW_BUFFER15_ARB\0" "GL_DRAW_BUFFER15_ATI\0" + "GL_DRAW_BUFFER15_NV\0" "GL_DRAW_BUFFER1_ARB\0" "GL_DRAW_BUFFER1_ATI\0" + "GL_DRAW_BUFFER1_NV\0" "GL_DRAW_BUFFER2\0" "GL_DRAW_BUFFER2_ARB\0" "GL_DRAW_BUFFER2_ATI\0" + "GL_DRAW_BUFFER2_NV\0" "GL_DRAW_BUFFER3\0" "GL_DRAW_BUFFER3_ARB\0" "GL_DRAW_BUFFER3_ATI\0" + "GL_DRAW_BUFFER3_NV\0" "GL_DRAW_BUFFER4\0" "GL_DRAW_BUFFER4_ARB\0" "GL_DRAW_BUFFER4_ATI\0" + "GL_DRAW_BUFFER4_NV\0" "GL_DRAW_BUFFER5\0" "GL_DRAW_BUFFER5_ARB\0" "GL_DRAW_BUFFER5_ATI\0" + "GL_DRAW_BUFFER5_NV\0" "GL_DRAW_BUFFER6\0" "GL_DRAW_BUFFER6_ARB\0" "GL_DRAW_BUFFER6_ATI\0" + "GL_DRAW_BUFFER6_NV\0" "GL_DRAW_BUFFER7\0" "GL_DRAW_BUFFER7_ARB\0" "GL_DRAW_BUFFER7_ATI\0" + "GL_DRAW_BUFFER7_NV\0" "GL_DRAW_BUFFER8\0" "GL_DRAW_BUFFER8_ARB\0" "GL_DRAW_BUFFER8_ATI\0" + "GL_DRAW_BUFFER8_NV\0" "GL_DRAW_BUFFER9\0" "GL_DRAW_BUFFER9_ARB\0" "GL_DRAW_BUFFER9_ATI\0" + "GL_DRAW_BUFFER9_NV\0" "GL_DRAW_FRAMEBUFFER\0" "GL_DRAW_FRAMEBUFFER_BINDING\0" "GL_DRAW_FRAMEBUFFER_BINDING_EXT\0" @@ -1082,6 +1098,7 @@ LONGSTRING static const char enum_string_table[] = "GL_MAX_DRAW_BUFFERS\0" "GL_MAX_DRAW_BUFFERS_ARB\0" "GL_MAX_DRAW_BUFFERS_ATI\0" + "GL_MAX_DRAW_BUFFERS_NV\0" "GL_MAX_ELEMENTS_INDICES\0" "GL_MAX_ELEMENTS_VERTICES\0" "GL_MAX_EVAL_ORDER\0" @@ -2357,7 +2374,7 @@ LONGSTRING static const char enum_string_table[] = "GL_ZOOM_Y\0" ; -static const enum_elt all_enums[2318] = +static const enum_elt all_enums[2335] = { { 0, 0x00000600 }, /* GL_2D */ { 6, 0x00001407 }, /* GL_2_BYTES */ @@ -2817,1949 +2834,1966 @@ static const enum_elt all_enums[2318] = { 9383, 0x00008825 }, /* GL_DRAW_BUFFER0 */ { 9399, 0x00008825 }, /* GL_DRAW_BUFFER0_ARB */ { 9419, 0x00008825 }, /* GL_DRAW_BUFFER0_ATI */ - { 9439, 0x00008826 }, /* GL_DRAW_BUFFER1 */ - { 9455, 0x0000882F }, /* GL_DRAW_BUFFER10 */ - { 9472, 0x0000882F }, /* GL_DRAW_BUFFER10_ARB */ - { 9493, 0x0000882F }, /* GL_DRAW_BUFFER10_ATI */ - { 9514, 0x00008830 }, /* GL_DRAW_BUFFER11 */ - { 9531, 0x00008830 }, /* GL_DRAW_BUFFER11_ARB */ - { 9552, 0x00008830 }, /* GL_DRAW_BUFFER11_ATI */ - { 9573, 0x00008831 }, /* GL_DRAW_BUFFER12 */ - { 9590, 0x00008831 }, /* GL_DRAW_BUFFER12_ARB */ - { 9611, 0x00008831 }, /* GL_DRAW_BUFFER12_ATI */ - { 9632, 0x00008832 }, /* GL_DRAW_BUFFER13 */ - { 9649, 0x00008832 }, /* GL_DRAW_BUFFER13_ARB */ - { 9670, 0x00008832 }, /* GL_DRAW_BUFFER13_ATI */ - { 9691, 0x00008833 }, /* GL_DRAW_BUFFER14 */ - { 9708, 0x00008833 }, /* GL_DRAW_BUFFER14_ARB */ - { 9729, 0x00008833 }, /* GL_DRAW_BUFFER14_ATI */ - { 9750, 0x00008834 }, /* GL_DRAW_BUFFER15 */ - { 9767, 0x00008834 }, /* GL_DRAW_BUFFER15_ARB */ - { 9788, 0x00008834 }, /* GL_DRAW_BUFFER15_ATI */ - { 9809, 0x00008826 }, /* GL_DRAW_BUFFER1_ARB */ - { 9829, 0x00008826 }, /* GL_DRAW_BUFFER1_ATI */ - { 9849, 0x00008827 }, /* GL_DRAW_BUFFER2 */ - { 9865, 0x00008827 }, /* GL_DRAW_BUFFER2_ARB */ - { 9885, 0x00008827 }, /* GL_DRAW_BUFFER2_ATI */ - { 9905, 0x00008828 }, /* GL_DRAW_BUFFER3 */ - { 9921, 0x00008828 }, /* GL_DRAW_BUFFER3_ARB */ - { 9941, 0x00008828 }, /* GL_DRAW_BUFFER3_ATI */ - { 9961, 0x00008829 }, /* GL_DRAW_BUFFER4 */ - { 9977, 0x00008829 }, /* GL_DRAW_BUFFER4_ARB */ - { 9997, 0x00008829 }, /* GL_DRAW_BUFFER4_ATI */ - { 10017, 0x0000882A }, /* GL_DRAW_BUFFER5 */ - { 10033, 0x0000882A }, /* GL_DRAW_BUFFER5_ARB */ - { 10053, 0x0000882A }, /* GL_DRAW_BUFFER5_ATI */ - { 10073, 0x0000882B }, /* GL_DRAW_BUFFER6 */ - { 10089, 0x0000882B }, /* GL_DRAW_BUFFER6_ARB */ - { 10109, 0x0000882B }, /* GL_DRAW_BUFFER6_ATI */ - { 10129, 0x0000882C }, /* GL_DRAW_BUFFER7 */ - { 10145, 0x0000882C }, /* GL_DRAW_BUFFER7_ARB */ - { 10165, 0x0000882C }, /* GL_DRAW_BUFFER7_ATI */ - { 10185, 0x0000882D }, /* GL_DRAW_BUFFER8 */ - { 10201, 0x0000882D }, /* GL_DRAW_BUFFER8_ARB */ - { 10221, 0x0000882D }, /* GL_DRAW_BUFFER8_ATI */ - { 10241, 0x0000882E }, /* GL_DRAW_BUFFER9 */ - { 10257, 0x0000882E }, /* GL_DRAW_BUFFER9_ARB */ - { 10277, 0x0000882E }, /* GL_DRAW_BUFFER9_ATI */ - { 10297, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER */ - { 10317, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING */ - { 10345, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */ - { 10377, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER_EXT */ - { 10401, 0x00000705 }, /* GL_DRAW_PIXEL_TOKEN */ - { 10421, 0x00000304 }, /* GL_DST_ALPHA */ - { 10434, 0x00000306 }, /* GL_DST_COLOR */ - { 10447, 0x0000877A }, /* GL_DU8DV8_ATI */ - { 10461, 0x00008779 }, /* GL_DUDV_ATI */ - { 10473, 0x000088EA }, /* GL_DYNAMIC_COPY */ - { 10489, 0x000088EA }, /* GL_DYNAMIC_COPY_ARB */ - { 10509, 0x000088E8 }, /* GL_DYNAMIC_DRAW */ - { 10525, 0x000088E8 }, /* GL_DYNAMIC_DRAW_ARB */ - { 10545, 0x000088E9 }, /* GL_DYNAMIC_READ */ - { 10561, 0x000088E9 }, /* GL_DYNAMIC_READ_ARB */ - { 10581, 0x00000B43 }, /* GL_EDGE_FLAG */ - { 10594, 0x00008079 }, /* GL_EDGE_FLAG_ARRAY */ - { 10613, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ - { 10647, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB */ - { 10685, 0x00008093 }, /* GL_EDGE_FLAG_ARRAY_POINTER */ - { 10712, 0x0000808C }, /* GL_EDGE_FLAG_ARRAY_STRIDE */ - { 10738, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER */ - { 10762, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ - { 10794, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB */ - { 10830, 0x00001600 }, /* GL_EMISSION */ - { 10842, 0x00002000 }, /* GL_ENABLE_BIT */ - { 10856, 0x00000202 }, /* GL_EQUAL */ - { 10865, 0x00001509 }, /* GL_EQUIV */ - { 10874, 0x00010000 }, /* GL_EVAL_BIT */ - { 10886, 0x00000800 }, /* GL_EXP */ - { 10893, 0x00000801 }, /* GL_EXP2 */ - { 10901, 0x00001F03 }, /* GL_EXTENSIONS */ - { 10915, 0x00002400 }, /* GL_EYE_LINEAR */ - { 10929, 0x00002502 }, /* GL_EYE_PLANE */ - { 10942, 0x0000855C }, /* GL_EYE_PLANE_ABSOLUTE_NV */ - { 10967, 0x0000855B }, /* GL_EYE_RADIAL_NV */ - { 10984, 0x00000000 }, /* GL_FALSE */ - { 10993, 0x00001101 }, /* GL_FASTEST */ - { 11004, 0x00001C01 }, /* GL_FEEDBACK */ - { 11016, 0x00000DF0 }, /* GL_FEEDBACK_BUFFER_POINTER */ - { 11043, 0x00000DF1 }, /* GL_FEEDBACK_BUFFER_SIZE */ - { 11067, 0x00000DF2 }, /* GL_FEEDBACK_BUFFER_TYPE */ - { 11091, 0x00001B02 }, /* GL_FILL */ - { 11099, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION */ - { 11126, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION_EXT */ - { 11157, 0x0000140C }, /* GL_FIXED */ - { 11166, 0x0000140C }, /* GL_FIXED_OES */ - { 11179, 0x0000891D }, /* GL_FIXED_ONLY */ - { 11193, 0x0000891D }, /* GL_FIXED_ONLY_ARB */ - { 11211, 0x00001D00 }, /* GL_FLAT */ - { 11219, 0x00001406 }, /* GL_FLOAT */ - { 11228, 0x00008B5A }, /* GL_FLOAT_MAT2 */ - { 11242, 0x00008B5A }, /* GL_FLOAT_MAT2_ARB */ - { 11260, 0x00008B65 }, /* GL_FLOAT_MAT2x3 */ - { 11276, 0x00008B66 }, /* GL_FLOAT_MAT2x4 */ - { 11292, 0x00008B5B }, /* GL_FLOAT_MAT3 */ - { 11306, 0x00008B5B }, /* GL_FLOAT_MAT3_ARB */ - { 11324, 0x00008B67 }, /* GL_FLOAT_MAT3x2 */ - { 11340, 0x00008B68 }, /* GL_FLOAT_MAT3x4 */ - { 11356, 0x00008B5C }, /* GL_FLOAT_MAT4 */ - { 11370, 0x00008B5C }, /* GL_FLOAT_MAT4_ARB */ - { 11388, 0x00008B69 }, /* GL_FLOAT_MAT4x2 */ - { 11404, 0x00008B6A }, /* GL_FLOAT_MAT4x3 */ - { 11420, 0x00008B50 }, /* GL_FLOAT_VEC2 */ - { 11434, 0x00008B50 }, /* GL_FLOAT_VEC2_ARB */ - { 11452, 0x00008B51 }, /* GL_FLOAT_VEC3 */ - { 11466, 0x00008B51 }, /* GL_FLOAT_VEC3_ARB */ - { 11484, 0x00008B52 }, /* GL_FLOAT_VEC4 */ - { 11498, 0x00008B52 }, /* GL_FLOAT_VEC4_ARB */ - { 11516, 0x00000B60 }, /* GL_FOG */ - { 11523, 0x00000080 }, /* GL_FOG_BIT */ - { 11534, 0x00000B66 }, /* GL_FOG_COLOR */ - { 11547, 0x00008451 }, /* GL_FOG_COORD */ - { 11560, 0x00008451 }, /* GL_FOG_COORDINATE */ - { 11578, 0x00008457 }, /* GL_FOG_COORDINATE_ARRAY */ - { 11602, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ - { 11641, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB */ - { 11684, 0x00008456 }, /* GL_FOG_COORDINATE_ARRAY_POINTER */ - { 11716, 0x00008455 }, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ - { 11747, 0x00008454 }, /* GL_FOG_COORDINATE_ARRAY_TYPE */ - { 11776, 0x00008450 }, /* GL_FOG_COORDINATE_SOURCE */ - { 11801, 0x00008457 }, /* GL_FOG_COORD_ARRAY */ - { 11820, 0x0000889D }, /* GL_FOG_COORD_ARRAY_BUFFER_BINDING */ - { 11854, 0x00008456 }, /* GL_FOG_COORD_ARRAY_POINTER */ - { 11881, 0x00008455 }, /* GL_FOG_COORD_ARRAY_STRIDE */ - { 11907, 0x00008454 }, /* GL_FOG_COORD_ARRAY_TYPE */ - { 11931, 0x00008450 }, /* GL_FOG_COORD_SRC */ - { 11948, 0x00000B62 }, /* GL_FOG_DENSITY */ - { 11963, 0x0000855A }, /* GL_FOG_DISTANCE_MODE_NV */ - { 11987, 0x00000B64 }, /* GL_FOG_END */ - { 11998, 0x00000C54 }, /* GL_FOG_HINT */ - { 12010, 0x00000B61 }, /* GL_FOG_INDEX */ - { 12023, 0x00000B65 }, /* GL_FOG_MODE */ - { 12035, 0x00008198 }, /* GL_FOG_OFFSET_SGIX */ - { 12054, 0x00008199 }, /* GL_FOG_OFFSET_VALUE_SGIX */ - { 12079, 0x00000B63 }, /* GL_FOG_START */ - { 12092, 0x00008452 }, /* GL_FRAGMENT_DEPTH */ - { 12110, 0x00008804 }, /* GL_FRAGMENT_PROGRAM_ARB */ - { 12134, 0x00008B30 }, /* GL_FRAGMENT_SHADER */ - { 12153, 0x00008B30 }, /* GL_FRAGMENT_SHADER_ARB */ - { 12176, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ - { 12211, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES */ - { 12250, 0x00008D40 }, /* GL_FRAMEBUFFER */ - { 12265, 0x00008215 }, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ - { 12302, 0x00008214 }, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ - { 12338, 0x00008210 }, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ - { 12379, 0x00008211 }, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ - { 12420, 0x00008216 }, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ - { 12457, 0x00008213 }, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ - { 12494, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */ - { 12528, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB */ - { 12566, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ - { 12604, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */ - { 12646, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES */ - { 12688, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ - { 12726, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */ - { 12768, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES */ - { 12810, 0x00008212 }, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ - { 12845, 0x00008217 }, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ - { 12884, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */ - { 12933, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES */ - { 12982, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ - { 13030, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */ - { 13082, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES */ - { 13134, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ - { 13174, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */ - { 13218, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ - { 13258, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */ - { 13302, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES */ - { 13346, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING */ - { 13369, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_EXT */ - { 13396, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_OES */ - { 13423, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE */ - { 13447, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_EXT */ - { 13475, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_OES */ - { 13503, 0x00008218 }, /* GL_FRAMEBUFFER_DEFAULT */ - { 13526, 0x00008D40 }, /* GL_FRAMEBUFFER_EXT */ - { 13545, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ - { 13582, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */ - { 13623, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES */ - { 13664, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS */ - { 13701, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ - { 13742, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES */ - { 13783, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ - { 13821, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */ - { 13863, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES */ - { 13905, 0x00008CD8 }, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ - { 13956, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ - { 13994, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES */ - { 14032, 0x00008DA9 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */ - { 14074, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */ - { 14114, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB */ - { 14158, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ - { 14203, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */ - { 14252, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES */ - { 14301, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ - { 14339, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT */ - { 14381, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ - { 14419, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */ - { 14461, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES */ - { 14503, 0x00008D40 }, /* GL_FRAMEBUFFER_OES */ - { 14522, 0x00008CDE }, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ - { 14554, 0x00008219 }, /* GL_FRAMEBUFFER_UNDEFINED */ - { 14579, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED */ - { 14606, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */ - { 14637, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_OES */ - { 14668, 0x00000404 }, /* GL_FRONT */ - { 14677, 0x00000408 }, /* GL_FRONT_AND_BACK */ - { 14695, 0x00000B46 }, /* GL_FRONT_FACE */ - { 14709, 0x00000400 }, /* GL_FRONT_LEFT */ - { 14723, 0x00000401 }, /* GL_FRONT_RIGHT */ - { 14738, 0x00008006 }, /* GL_FUNC_ADD */ - { 14750, 0x00008006 }, /* GL_FUNC_ADD_EXT */ - { 14766, 0x00008006 }, /* GL_FUNC_ADD_OES */ - { 14782, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT */ - { 14807, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_EXT */ - { 14836, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_OES */ - { 14865, 0x0000800A }, /* GL_FUNC_SUBTRACT */ - { 14882, 0x0000800A }, /* GL_FUNC_SUBTRACT_EXT */ - { 14903, 0x0000800A }, /* GL_FUNC_SUBTRACT_OES */ - { 14924, 0x00008191 }, /* GL_GENERATE_MIPMAP */ - { 14943, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT */ - { 14967, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT_SGIS */ - { 14996, 0x00008191 }, /* GL_GENERATE_MIPMAP_SGIS */ - { 15020, 0x00008917 }, /* GL_GEOMETRY_INPUT_TYPE */ - { 15043, 0x00008DDB }, /* GL_GEOMETRY_INPUT_TYPE_ARB */ - { 15070, 0x00008918 }, /* GL_GEOMETRY_OUTPUT_TYPE */ - { 15094, 0x00008DDC }, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */ - { 15122, 0x00008DD9 }, /* GL_GEOMETRY_SHADER */ - { 15141, 0x00008DD9 }, /* GL_GEOMETRY_SHADER_ARB */ - { 15164, 0x00008916 }, /* GL_GEOMETRY_VERTICES_OUT */ - { 15189, 0x00008DDA }, /* GL_GEOMETRY_VERTICES_OUT_ARB */ - { 15218, 0x00000206 }, /* GL_GEQUAL */ - { 15228, 0x00000204 }, /* GL_GREATER */ - { 15239, 0x00001904 }, /* GL_GREEN */ - { 15248, 0x00000D19 }, /* GL_GREEN_BIAS */ - { 15262, 0x00000D53 }, /* GL_GREEN_BITS */ - { 15276, 0x00008D95 }, /* GL_GREEN_INTEGER */ - { 15293, 0x00008D95 }, /* GL_GREEN_INTEGER_EXT */ - { 15314, 0x00000D18 }, /* GL_GREEN_SCALE */ - { 15329, 0x00008253 }, /* GL_GUILTY_CONTEXT_RESET_ARB */ - { 15357, 0x0000140B }, /* GL_HALF_FLOAT */ - { 15371, 0x00008D61 }, /* GL_HALF_FLOAT_OES */ - { 15389, 0x00008DF2 }, /* GL_HIGH_FLOAT */ - { 15403, 0x00008DF5 }, /* GL_HIGH_INT */ - { 15415, 0x00008000 }, /* GL_HINT_BIT */ - { 15427, 0x00008024 }, /* GL_HISTOGRAM */ - { 15440, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE */ - { 15464, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE_EXT */ - { 15492, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE */ - { 15515, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE_EXT */ - { 15542, 0x00008024 }, /* GL_HISTOGRAM_EXT */ - { 15559, 0x00008027 }, /* GL_HISTOGRAM_FORMAT */ - { 15579, 0x00008027 }, /* GL_HISTOGRAM_FORMAT_EXT */ - { 15603, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE */ - { 15627, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE_EXT */ - { 15655, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE */ - { 15683, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE_EXT */ - { 15715, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE */ - { 15737, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE_EXT */ - { 15763, 0x0000802D }, /* GL_HISTOGRAM_SINK */ - { 15781, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */ - { 15803, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */ - { 15822, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */ - { 15845, 0x0000862A }, /* GL_IDENTITY_NV */ - { 15860, 0x00008150 }, /* GL_IGNORE_BORDER_HP */ - { 15880, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */ - { 15916, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */ - { 15956, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */ - { 15990, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */ - { 16028, 0x00001E02 }, /* GL_INCR */ - { 16036, 0x00008507 }, /* GL_INCR_WRAP */ - { 16049, 0x00008507 }, /* GL_INCR_WRAP_EXT */ - { 16066, 0x00008222 }, /* GL_INDEX */ - { 16075, 0x00008077 }, /* GL_INDEX_ARRAY */ - { 16090, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */ - { 16120, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */ - { 16154, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */ - { 16177, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */ - { 16199, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */ - { 16219, 0x00000D51 }, /* GL_INDEX_BITS */ - { 16233, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */ - { 16254, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */ - { 16272, 0x00000C30 }, /* GL_INDEX_MODE */ - { 16286, 0x00000D13 }, /* GL_INDEX_OFFSET */ - { 16302, 0x00000D12 }, /* GL_INDEX_SHIFT */ - { 16317, 0x00000C21 }, /* GL_INDEX_WRITEMASK */ - { 16336, 0x00008B84 }, /* GL_INFO_LOG_LENGTH */ - { 16355, 0x00008254 }, /* GL_INNOCENT_CONTEXT_RESET_ARB */ - { 16385, 0x00001404 }, /* GL_INT */ - { 16392, 0x00008049 }, /* GL_INTENSITY */ - { 16405, 0x0000804C }, /* GL_INTENSITY12 */ - { 16420, 0x0000804C }, /* GL_INTENSITY12_EXT */ - { 16439, 0x0000804D }, /* GL_INTENSITY16 */ - { 16454, 0x00008D8B }, /* GL_INTENSITY16I_EXT */ - { 16474, 0x00008D79 }, /* GL_INTENSITY16UI_EXT */ - { 16495, 0x0000804D }, /* GL_INTENSITY16_EXT */ - { 16514, 0x00008D85 }, /* GL_INTENSITY32I_EXT */ - { 16534, 0x00008D73 }, /* GL_INTENSITY32UI_EXT */ - { 16555, 0x0000804A }, /* GL_INTENSITY4 */ - { 16569, 0x0000804A }, /* GL_INTENSITY4_EXT */ - { 16587, 0x0000804B }, /* GL_INTENSITY8 */ - { 16601, 0x00008D91 }, /* GL_INTENSITY8I_EXT */ - { 16620, 0x00008D7F }, /* GL_INTENSITY8UI_EXT */ - { 16640, 0x0000804B }, /* GL_INTENSITY8_EXT */ - { 16658, 0x00008049 }, /* GL_INTENSITY_EXT */ - { 16675, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS */ - { 16698, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS_EXT */ - { 16725, 0x00008575 }, /* GL_INTERPOLATE */ - { 16740, 0x00008575 }, /* GL_INTERPOLATE_ARB */ - { 16759, 0x00008575 }, /* GL_INTERPOLATE_EXT */ - { 16778, 0x00008DF7 }, /* GL_INT_10_10_10_2_OES */ - { 16800, 0x00008D9F }, /* GL_INT_2_10_10_10_REV */ - { 16822, 0x00008DC9 }, /* GL_INT_SAMPLER_1D */ - { 16840, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY */ - { 16864, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY_EXT */ - { 16892, 0x00008DC9 }, /* GL_INT_SAMPLER_1D_EXT */ - { 16914, 0x00008DCA }, /* GL_INT_SAMPLER_2D */ - { 16932, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY */ - { 16956, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY_EXT */ - { 16984, 0x00008DCA }, /* GL_INT_SAMPLER_2D_EXT */ - { 17006, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT */ - { 17029, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT_EXT */ - { 17056, 0x00008DCB }, /* GL_INT_SAMPLER_3D */ - { 17074, 0x00008DCB }, /* GL_INT_SAMPLER_3D_EXT */ - { 17096, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER */ - { 17118, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER_EXT */ - { 17144, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE */ - { 17164, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE_EXT */ - { 17188, 0x00008B53 }, /* GL_INT_VEC2 */ - { 17200, 0x00008B53 }, /* GL_INT_VEC2_ARB */ - { 17216, 0x00008B54 }, /* GL_INT_VEC3 */ - { 17228, 0x00008B54 }, /* GL_INT_VEC3_ARB */ - { 17244, 0x00008B55 }, /* GL_INT_VEC4 */ - { 17256, 0x00008B55 }, /* GL_INT_VEC4_ARB */ - { 17272, 0x00000500 }, /* GL_INVALID_ENUM */ - { 17288, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION */ - { 17321, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */ - { 17358, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_OES */ - { 17395, 0x00000502 }, /* GL_INVALID_OPERATION */ - { 17416, 0x00000501 }, /* GL_INVALID_VALUE */ - { 17433, 0x0000862B }, /* GL_INVERSE_NV */ - { 17447, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */ - { 17471, 0x0000150A }, /* GL_INVERT */ - { 17481, 0x00001E00 }, /* GL_KEEP */ - { 17489, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION */ - { 17515, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION_EXT */ - { 17545, 0x00000406 }, /* GL_LEFT */ - { 17553, 0x00000203 }, /* GL_LEQUAL */ - { 17563, 0x00000201 }, /* GL_LESS */ - { 17571, 0x00004000 }, /* GL_LIGHT0 */ - { 17581, 0x00004001 }, /* GL_LIGHT1 */ - { 17591, 0x00004002 }, /* GL_LIGHT2 */ - { 17601, 0x00004003 }, /* GL_LIGHT3 */ - { 17611, 0x00004004 }, /* GL_LIGHT4 */ - { 17621, 0x00004005 }, /* GL_LIGHT5 */ - { 17631, 0x00004006 }, /* GL_LIGHT6 */ - { 17641, 0x00004007 }, /* GL_LIGHT7 */ - { 17651, 0x00000B50 }, /* GL_LIGHTING */ - { 17663, 0x00000040 }, /* GL_LIGHTING_BIT */ - { 17679, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */ - { 17702, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */ - { 17731, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */ - { 17764, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ - { 17792, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */ - { 17816, 0x00001B01 }, /* GL_LINE */ - { 17824, 0x00002601 }, /* GL_LINEAR */ - { 17834, 0x00001208 }, /* GL_LINEAR_ATTENUATION */ - { 17856, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ - { 17886, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ - { 17917, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */ - { 17941, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */ - { 17966, 0x00000001 }, /* GL_LINES */ - { 17975, 0x0000000A }, /* GL_LINES_ADJACENCY */ - { 17994, 0x0000000A }, /* GL_LINES_ADJACENCY_ARB */ - { 18017, 0x00000004 }, /* GL_LINE_BIT */ - { 18029, 0x00000002 }, /* GL_LINE_LOOP */ - { 18042, 0x00000707 }, /* GL_LINE_RESET_TOKEN */ - { 18062, 0x00000B20 }, /* GL_LINE_SMOOTH */ - { 18077, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */ - { 18097, 0x00000B24 }, /* GL_LINE_STIPPLE */ - { 18113, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */ - { 18137, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */ - { 18160, 0x00000003 }, /* GL_LINE_STRIP */ - { 18174, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY */ - { 18198, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY_ARB */ - { 18226, 0x00000702 }, /* GL_LINE_TOKEN */ - { 18240, 0x00000B21 }, /* GL_LINE_WIDTH */ - { 18254, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */ - { 18280, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */ - { 18300, 0x00008B82 }, /* GL_LINK_STATUS */ - { 18315, 0x00000B32 }, /* GL_LIST_BASE */ - { 18328, 0x00020000 }, /* GL_LIST_BIT */ - { 18340, 0x00000B33 }, /* GL_LIST_INDEX */ - { 18354, 0x00000B30 }, /* GL_LIST_MODE */ - { 18367, 0x00000101 }, /* GL_LOAD */ - { 18375, 0x00000BF1 }, /* GL_LOGIC_OP */ - { 18387, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */ - { 18404, 0x00008252 }, /* GL_LOSE_CONTEXT_ON_RESET_ARB */ - { 18433, 0x00008CA1 }, /* GL_LOWER_LEFT */ - { 18447, 0x00008DF0 }, /* GL_LOW_FLOAT */ - { 18460, 0x00008DF3 }, /* GL_LOW_INT */ - { 18471, 0x00001909 }, /* GL_LUMINANCE */ - { 18484, 0x00008041 }, /* GL_LUMINANCE12 */ - { 18499, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */ - { 18522, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */ - { 18549, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */ - { 18571, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */ - { 18597, 0x00008041 }, /* GL_LUMINANCE12_EXT */ - { 18616, 0x00008042 }, /* GL_LUMINANCE16 */ - { 18631, 0x00008D8C }, /* GL_LUMINANCE16I_EXT */ - { 18651, 0x00008D7A }, /* GL_LUMINANCE16UI_EXT */ - { 18672, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */ - { 18695, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */ - { 18722, 0x00008042 }, /* GL_LUMINANCE16_EXT */ - { 18741, 0x00008D86 }, /* GL_LUMINANCE32I_EXT */ - { 18761, 0x00008D74 }, /* GL_LUMINANCE32UI_EXT */ - { 18782, 0x0000803F }, /* GL_LUMINANCE4 */ - { 18796, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */ - { 18817, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */ - { 18842, 0x0000803F }, /* GL_LUMINANCE4_EXT */ - { 18860, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */ - { 18881, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */ - { 18906, 0x00008040 }, /* GL_LUMINANCE8 */ - { 18920, 0x00008D92 }, /* GL_LUMINANCE8I_EXT */ - { 18939, 0x00008D80 }, /* GL_LUMINANCE8UI_EXT */ - { 18959, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */ - { 18980, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */ - { 19005, 0x00008040 }, /* GL_LUMINANCE8_EXT */ - { 19023, 0x0000190A }, /* GL_LUMINANCE_ALPHA */ - { 19042, 0x00008D8D }, /* GL_LUMINANCE_ALPHA16I_EXT */ - { 19068, 0x00008D7B }, /* GL_LUMINANCE_ALPHA16UI_EXT */ - { 19095, 0x00008D87 }, /* GL_LUMINANCE_ALPHA32I_EXT */ - { 19121, 0x00008D75 }, /* GL_LUMINANCE_ALPHA32UI_EXT */ - { 19148, 0x00008D93 }, /* GL_LUMINANCE_ALPHA8I_EXT */ - { 19173, 0x00008D81 }, /* GL_LUMINANCE_ALPHA8UI_EXT */ - { 19199, 0x00008D9D }, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */ - { 19230, 0x00008D9C }, /* GL_LUMINANCE_INTEGER_EXT */ - { 19255, 0x0000821B }, /* GL_MAJOR_VERSION */ - { 19272, 0x00000D90 }, /* GL_MAP1_COLOR_4 */ - { 19288, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */ - { 19308, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */ - { 19330, 0x00000D91 }, /* GL_MAP1_INDEX */ - { 19344, 0x00000D92 }, /* GL_MAP1_NORMAL */ - { 19359, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */ - { 19383, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */ - { 19407, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */ - { 19431, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */ - { 19455, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */ - { 19472, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */ - { 19489, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ - { 19517, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ - { 19546, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ - { 19575, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ - { 19604, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ - { 19633, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ - { 19662, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ - { 19691, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ - { 19719, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ - { 19747, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ - { 19775, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ - { 19803, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ - { 19831, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ - { 19859, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ - { 19887, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ - { 19915, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ - { 19943, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */ - { 19959, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */ - { 19979, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */ - { 20001, 0x00000DB1 }, /* GL_MAP2_INDEX */ - { 20015, 0x00000DB2 }, /* GL_MAP2_NORMAL */ - { 20030, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */ - { 20054, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */ - { 20078, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */ - { 20102, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */ - { 20126, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */ - { 20143, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */ - { 20160, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ - { 20188, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ - { 20217, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ - { 20246, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ - { 20275, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ - { 20304, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ - { 20333, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ - { 20362, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ - { 20390, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ - { 20418, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ - { 20446, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ - { 20474, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ - { 20502, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ - { 20530, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */ - { 20558, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ - { 20586, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ - { 20614, 0x00000D10 }, /* GL_MAP_COLOR */ - { 20627, 0x00000010 }, /* GL_MAP_FLUSH_EXPLICIT_BIT */ - { 20653, 0x00000008 }, /* GL_MAP_INVALIDATE_BUFFER_BIT */ - { 20682, 0x00000004 }, /* GL_MAP_INVALIDATE_RANGE_BIT */ - { 20710, 0x00000001 }, /* GL_MAP_READ_BIT */ - { 20726, 0x00000D11 }, /* GL_MAP_STENCIL */ - { 20741, 0x00000020 }, /* GL_MAP_UNSYNCHRONIZED_BIT */ - { 20767, 0x00000002 }, /* GL_MAP_WRITE_BIT */ - { 20784, 0x000088C0 }, /* GL_MATRIX0_ARB */ - { 20799, 0x00008630 }, /* GL_MATRIX0_NV */ - { 20813, 0x000088CA }, /* GL_MATRIX10_ARB */ - { 20829, 0x000088CB }, /* GL_MATRIX11_ARB */ - { 20845, 0x000088CC }, /* GL_MATRIX12_ARB */ - { 20861, 0x000088CD }, /* GL_MATRIX13_ARB */ - { 20877, 0x000088CE }, /* GL_MATRIX14_ARB */ - { 20893, 0x000088CF }, /* GL_MATRIX15_ARB */ - { 20909, 0x000088D0 }, /* GL_MATRIX16_ARB */ - { 20925, 0x000088D1 }, /* GL_MATRIX17_ARB */ - { 20941, 0x000088D2 }, /* GL_MATRIX18_ARB */ - { 20957, 0x000088D3 }, /* GL_MATRIX19_ARB */ - { 20973, 0x000088C1 }, /* GL_MATRIX1_ARB */ - { 20988, 0x00008631 }, /* GL_MATRIX1_NV */ - { 21002, 0x000088D4 }, /* GL_MATRIX20_ARB */ - { 21018, 0x000088D5 }, /* GL_MATRIX21_ARB */ - { 21034, 0x000088D6 }, /* GL_MATRIX22_ARB */ - { 21050, 0x000088D7 }, /* GL_MATRIX23_ARB */ - { 21066, 0x000088D8 }, /* GL_MATRIX24_ARB */ - { 21082, 0x000088D9 }, /* GL_MATRIX25_ARB */ - { 21098, 0x000088DA }, /* GL_MATRIX26_ARB */ - { 21114, 0x000088DB }, /* GL_MATRIX27_ARB */ - { 21130, 0x000088DC }, /* GL_MATRIX28_ARB */ - { 21146, 0x000088DD }, /* GL_MATRIX29_ARB */ - { 21162, 0x000088C2 }, /* GL_MATRIX2_ARB */ - { 21177, 0x00008632 }, /* GL_MATRIX2_NV */ - { 21191, 0x000088DE }, /* GL_MATRIX30_ARB */ - { 21207, 0x000088DF }, /* GL_MATRIX31_ARB */ - { 21223, 0x000088C3 }, /* GL_MATRIX3_ARB */ - { 21238, 0x00008633 }, /* GL_MATRIX3_NV */ - { 21252, 0x000088C4 }, /* GL_MATRIX4_ARB */ - { 21267, 0x00008634 }, /* GL_MATRIX4_NV */ - { 21281, 0x000088C5 }, /* GL_MATRIX5_ARB */ - { 21296, 0x00008635 }, /* GL_MATRIX5_NV */ - { 21310, 0x000088C6 }, /* GL_MATRIX6_ARB */ - { 21325, 0x00008636 }, /* GL_MATRIX6_NV */ - { 21339, 0x000088C7 }, /* GL_MATRIX7_ARB */ - { 21354, 0x00008637 }, /* GL_MATRIX7_NV */ - { 21368, 0x000088C8 }, /* GL_MATRIX8_ARB */ - { 21383, 0x000088C9 }, /* GL_MATRIX9_ARB */ - { 21398, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */ - { 21424, 0x00008B9E }, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */ - { 21465, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_OES */ - { 21491, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ - { 21525, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_OES */ - { 21559, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ - { 21590, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_OES */ - { 21621, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ - { 21654, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_OES */ - { 21687, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ - { 21718, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_OES */ - { 21749, 0x00000BA0 }, /* GL_MATRIX_MODE */ - { 21764, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */ - { 21786, 0x00008840 }, /* GL_MATRIX_PALETTE_OES */ - { 21808, 0x00008008 }, /* GL_MAX */ - { 21815, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */ - { 21838, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE_OES */ - { 21865, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS */ - { 21893, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */ - { 21925, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */ - { 21951, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ - { 21984, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ - { 22010, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - { 22044, 0x00000D32 }, /* GL_MAX_CLIP_DISTANCES */ - { 22066, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */ - { 22085, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS */ - { 22110, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */ - { 22139, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ - { 22171, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */ - { 22207, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ - { 22243, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */ - { 22283, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */ - { 22309, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */ - { 22339, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */ - { 22364, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */ - { 22393, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ - { 22422, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */ - { 22455, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES */ - { 22488, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS */ - { 22508, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */ - { 22532, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */ - { 22556, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */ - { 22580, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */ - { 22605, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */ - { 22623, 0x00008008 }, /* GL_MAX_EXT */ - { 22634, 0x00009125 }, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */ - { 22667, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ - { 22702, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */ - { 22741, 0x00008DFD }, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */ - { 22773, 0x00009123 }, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */ - { 22806, 0x00009124 }, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */ - { 22840, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */ - { 22872, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB */ - { 22908, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */ - { 22944, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB */ - { 22984, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */ - { 23024, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB */ - { 23068, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */ - { 23103, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB */ - { 23142, 0x00008DDD }, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */ - { 23181, 0x00000D31 }, /* GL_MAX_LIGHTS */ - { 23195, 0x00000B31 }, /* GL_MAX_LIST_NESTING */ - { 23215, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ - { 23253, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */ - { 23282, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */ - { 23306, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */ - { 23334, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_OES */ - { 23362, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */ - { 23385, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ - { 23422, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ - { 23458, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ - { 23485, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ - { 23514, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ - { 23548, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */ - { 23584, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ - { 23611, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ - { 23643, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ - { 23679, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ - { 23708, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ - { 23737, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */ - { 23765, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ - { 23803, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - { 23847, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - { 23890, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ - { 23924, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - { 23963, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ - { 24000, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ - { 24038, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - { 24081, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - { 24124, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ - { 24154, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ - { 24185, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET */ - { 24213, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET_EXT */ - { 24245, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ - { 24281, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ - { 24317, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */ - { 24347, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */ - { 24377, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */ - { 24411, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */ - { 24444, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE */ - { 24469, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */ - { 24498, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_OES */ - { 24527, 0x00008D57 }, /* GL_MAX_SAMPLES */ - { 24542, 0x00008D57 }, /* GL_MAX_SAMPLES_EXT */ - { 24561, 0x00009111 }, /* GL_MAX_SERVER_WAIT_TIMEOUT */ - { 24588, 0x00008504 }, /* GL_MAX_SHININESS_NV */ - { 24608, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */ - { 24632, 0x00008C2B }, /* GL_MAX_TEXTURE_BUFFER_SIZE */ - { 24659, 0x00008C2B }, /* GL_MAX_TEXTURE_BUFFER_SIZE_ARB */ - { 24690, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS */ - { 24712, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */ - { 24738, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS */ - { 24765, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */ - { 24796, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */ - { 24820, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS_EXT */ - { 24848, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ - { 24882, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */ - { 24902, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */ - { 24929, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */ - { 24950, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */ - { 24975, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */ - { 25000, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */ - { 25035, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */ - { 25084, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */ - { 25137, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */ - { 25180, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */ - { 25227, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */ - { 25273, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */ - { 25323, 0x00008B4B }, /* GL_MAX_VARYING_COMPONENTS */ - { 25349, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS */ - { 25371, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */ - { 25397, 0x00008DFC }, /* GL_MAX_VARYING_VECTORS */ - { 25420, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS */ - { 25442, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */ - { 25468, 0x00009122 }, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */ - { 25500, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ - { 25534, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */ - { 25572, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ - { 25605, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */ - { 25642, 0x00008DFB }, /* GL_MAX_VERTEX_UNIFORM_VECTORS */ - { 25672, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */ - { 25696, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_OES */ - { 25720, 0x00008DDE }, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */ - { 25757, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */ - { 25778, 0x00008DF1 }, /* GL_MEDIUM_FLOAT */ - { 25794, 0x00008DF4 }, /* GL_MEDIUM_INT */ - { 25808, 0x00008007 }, /* GL_MIN */ - { 25815, 0x0000802E }, /* GL_MINMAX */ - { 25825, 0x0000802E }, /* GL_MINMAX_EXT */ - { 25839, 0x0000802F }, /* GL_MINMAX_FORMAT */ - { 25856, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */ - { 25877, 0x00008030 }, /* GL_MINMAX_SINK */ - { 25892, 0x00008030 }, /* GL_MINMAX_SINK_EXT */ - { 25911, 0x0000821C }, /* GL_MINOR_VERSION */ - { 25928, 0x00008007 }, /* GL_MIN_EXT */ - { 25939, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET */ - { 25967, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET_EXT */ - { 25999, 0x00008370 }, /* GL_MIRRORED_REPEAT */ - { 26018, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */ - { 26041, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */ - { 26064, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */ - { 26084, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */ - { 26104, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ - { 26134, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */ - { 26162, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ - { 26190, 0x00001700 }, /* GL_MODELVIEW */ - { 26203, 0x00001700 }, /* GL_MODELVIEW0_ARB */ - { 26221, 0x0000872A }, /* GL_MODELVIEW10_ARB */ - { 26240, 0x0000872B }, /* GL_MODELVIEW11_ARB */ - { 26259, 0x0000872C }, /* GL_MODELVIEW12_ARB */ - { 26278, 0x0000872D }, /* GL_MODELVIEW13_ARB */ - { 26297, 0x0000872E }, /* GL_MODELVIEW14_ARB */ - { 26316, 0x0000872F }, /* GL_MODELVIEW15_ARB */ - { 26335, 0x00008730 }, /* GL_MODELVIEW16_ARB */ - { 26354, 0x00008731 }, /* GL_MODELVIEW17_ARB */ - { 26373, 0x00008732 }, /* GL_MODELVIEW18_ARB */ - { 26392, 0x00008733 }, /* GL_MODELVIEW19_ARB */ - { 26411, 0x0000850A }, /* GL_MODELVIEW1_ARB */ - { 26429, 0x00008734 }, /* GL_MODELVIEW20_ARB */ - { 26448, 0x00008735 }, /* GL_MODELVIEW21_ARB */ - { 26467, 0x00008736 }, /* GL_MODELVIEW22_ARB */ - { 26486, 0x00008737 }, /* GL_MODELVIEW23_ARB */ - { 26505, 0x00008738 }, /* GL_MODELVIEW24_ARB */ - { 26524, 0x00008739 }, /* GL_MODELVIEW25_ARB */ - { 26543, 0x0000873A }, /* GL_MODELVIEW26_ARB */ - { 26562, 0x0000873B }, /* GL_MODELVIEW27_ARB */ - { 26581, 0x0000873C }, /* GL_MODELVIEW28_ARB */ - { 26600, 0x0000873D }, /* GL_MODELVIEW29_ARB */ - { 26619, 0x00008722 }, /* GL_MODELVIEW2_ARB */ - { 26637, 0x0000873E }, /* GL_MODELVIEW30_ARB */ - { 26656, 0x0000873F }, /* GL_MODELVIEW31_ARB */ - { 26675, 0x00008723 }, /* GL_MODELVIEW3_ARB */ - { 26693, 0x00008724 }, /* GL_MODELVIEW4_ARB */ - { 26711, 0x00008725 }, /* GL_MODELVIEW5_ARB */ - { 26729, 0x00008726 }, /* GL_MODELVIEW6_ARB */ - { 26747, 0x00008727 }, /* GL_MODELVIEW7_ARB */ - { 26765, 0x00008728 }, /* GL_MODELVIEW8_ARB */ - { 26783, 0x00008729 }, /* GL_MODELVIEW9_ARB */ - { 26801, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */ - { 26821, 0x0000898D }, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */ - { 26863, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */ - { 26890, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */ - { 26915, 0x00002100 }, /* GL_MODULATE */ - { 26927, 0x00008744 }, /* GL_MODULATE_ADD_ATI */ - { 26947, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */ - { 26974, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */ - { 26999, 0x00000103 }, /* GL_MULT */ - { 27007, 0x0000809D }, /* GL_MULTISAMPLE */ - { 27022, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */ - { 27042, 0x0000809D }, /* GL_MULTISAMPLE_ARB */ - { 27061, 0x20000000 }, /* GL_MULTISAMPLE_BIT */ - { 27080, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */ - { 27104, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */ - { 27127, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */ - { 27157, 0x00002A25 }, /* GL_N3F_V3F */ - { 27168, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */ - { 27188, 0x0000150E }, /* GL_NAND */ - { 27196, 0x00002600 }, /* GL_NEAREST */ - { 27207, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ - { 27238, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ - { 27270, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */ - { 27295, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */ - { 27321, 0x00000200 }, /* GL_NEVER */ - { 27330, 0x00001102 }, /* GL_NICEST */ - { 27340, 0x00000000 }, /* GL_NONE */ - { 27348, 0x00000000 }, /* GL_NONE_OES */ - { 27360, 0x00001505 }, /* GL_NOOP */ - { 27368, 0x00001508 }, /* GL_NOR */ - { 27375, 0x00000BA1 }, /* GL_NORMALIZE */ - { 27388, 0x00008075 }, /* GL_NORMAL_ARRAY */ - { 27404, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ - { 27435, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */ - { 27470, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */ - { 27494, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */ - { 27517, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */ - { 27538, 0x00008511 }, /* GL_NORMAL_MAP */ - { 27552, 0x00008511 }, /* GL_NORMAL_MAP_ARB */ - { 27570, 0x00008511 }, /* GL_NORMAL_MAP_NV */ - { 27587, 0x00008511 }, /* GL_NORMAL_MAP_OES */ - { 27605, 0x00000205 }, /* GL_NOTEQUAL */ - { 27617, 0x00000000 }, /* GL_NO_ERROR */ - { 27629, 0x00008261 }, /* GL_NO_RESET_NOTIFICATION_ARB */ - { 27658, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ - { 27692, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB */ - { 27730, 0x0000821D }, /* GL_NUM_EXTENSIONS */ - { 27748, 0x000087FE }, /* GL_NUM_PROGRAM_BINARY_FORMATS */ - { 27778, 0x000087FE }, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */ - { 27812, 0x00008DF9 }, /* GL_NUM_SHADER_BINARY_FORMATS */ - { 27841, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */ - { 27873, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */ - { 27915, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */ - { 27945, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */ - { 27985, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */ - { 28016, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */ - { 28045, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */ - { 28073, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */ - { 28103, 0x00002401 }, /* GL_OBJECT_LINEAR */ - { 28120, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */ - { 28146, 0x00002501 }, /* GL_OBJECT_PLANE */ - { 28162, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */ - { 28197, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */ - { 28219, 0x00009112 }, /* GL_OBJECT_TYPE */ - { 28234, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */ - { 28253, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */ - { 28283, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */ - { 28304, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */ - { 28332, 0x00000001 }, /* GL_ONE */ - { 28339, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */ - { 28367, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */ - { 28399, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */ - { 28427, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */ - { 28459, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */ - { 28482, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */ - { 28505, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */ - { 28528, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */ - { 28551, 0x00008598 }, /* GL_OPERAND0_ALPHA */ - { 28569, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */ - { 28591, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */ - { 28613, 0x00008590 }, /* GL_OPERAND0_RGB */ - { 28629, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */ - { 28649, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */ - { 28669, 0x00008599 }, /* GL_OPERAND1_ALPHA */ - { 28687, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */ - { 28709, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */ - { 28731, 0x00008591 }, /* GL_OPERAND1_RGB */ - { 28747, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */ - { 28767, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */ - { 28787, 0x0000859A }, /* GL_OPERAND2_ALPHA */ - { 28805, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */ - { 28827, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */ - { 28849, 0x00008592 }, /* GL_OPERAND2_RGB */ - { 28865, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */ - { 28885, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */ - { 28905, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */ - { 28926, 0x00008593 }, /* GL_OPERAND3_RGB_NV */ - { 28945, 0x00001507 }, /* GL_OR */ - { 28951, 0x00000A01 }, /* GL_ORDER */ - { 28960, 0x0000150D }, /* GL_OR_INVERTED */ - { 28975, 0x0000150B }, /* GL_OR_REVERSE */ - { 28989, 0x00000505 }, /* GL_OUT_OF_MEMORY */ - { 29006, 0x00000D05 }, /* GL_PACK_ALIGNMENT */ - { 29024, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */ - { 29045, 0x00008758 }, /* GL_PACK_INVERT_MESA */ - { 29065, 0x00000D01 }, /* GL_PACK_LSB_FIRST */ - { 29083, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */ - { 29102, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */ - { 29122, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */ - { 29142, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */ - { 29160, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */ - { 29179, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */ - { 29204, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */ - { 29228, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */ - { 29249, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */ - { 29271, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */ - { 29293, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */ - { 29318, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */ - { 29342, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */ - { 29363, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */ - { 29385, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */ - { 29407, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */ - { 29429, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */ - { 29460, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */ - { 29480, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */ - { 29505, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */ - { 29525, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */ - { 29550, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */ - { 29570, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */ - { 29595, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */ - { 29615, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */ - { 29640, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */ - { 29660, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */ - { 29685, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */ - { 29705, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */ - { 29730, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */ - { 29750, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */ - { 29775, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */ - { 29795, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */ - { 29820, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */ - { 29840, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */ - { 29865, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */ - { 29885, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */ - { 29910, 0x00000020 }, /* GL_PIXEL_MODE_BIT */ - { 29928, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER */ - { 29949, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING */ - { 29978, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */ - { 30011, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */ - { 30036, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER */ - { 30059, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING */ - { 30090, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */ - { 30125, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */ - { 30152, 0x00001B00 }, /* GL_POINT */ - { 30161, 0x00000000 }, /* GL_POINTS */ - { 30171, 0x00000002 }, /* GL_POINT_BIT */ - { 30184, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */ - { 30214, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */ - { 30248, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */ - { 30282, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */ - { 30317, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */ - { 30346, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */ - { 30379, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */ - { 30412, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */ - { 30446, 0x00000B11 }, /* GL_POINT_SIZE */ - { 30460, 0x00008B9F }, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */ - { 30499, 0x00008B9C }, /* GL_POINT_SIZE_ARRAY_OES */ - { 30523, 0x0000898C }, /* GL_POINT_SIZE_ARRAY_POINTER_OES */ - { 30555, 0x0000898B }, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */ - { 30586, 0x0000898A }, /* GL_POINT_SIZE_ARRAY_TYPE_OES */ - { 30615, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */ - { 30641, 0x00008127 }, /* GL_POINT_SIZE_MAX */ - { 30659, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */ - { 30681, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */ - { 30703, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */ - { 30726, 0x00008126 }, /* GL_POINT_SIZE_MIN */ - { 30744, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */ - { 30766, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */ - { 30788, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */ - { 30811, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */ - { 30831, 0x00000B10 }, /* GL_POINT_SMOOTH */ - { 30847, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */ - { 30868, 0x00008861 }, /* GL_POINT_SPRITE */ - { 30884, 0x00008861 }, /* GL_POINT_SPRITE_ARB */ - { 30904, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */ - { 30933, 0x00008861 }, /* GL_POINT_SPRITE_NV */ - { 30952, 0x00008861 }, /* GL_POINT_SPRITE_OES */ - { 30972, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */ - { 30998, 0x00000701 }, /* GL_POINT_TOKEN */ - { 31013, 0x00000009 }, /* GL_POLYGON */ - { 31024, 0x00000008 }, /* GL_POLYGON_BIT */ - { 31039, 0x00000B40 }, /* GL_POLYGON_MODE */ - { 31055, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */ - { 31078, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */ - { 31103, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */ - { 31126, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */ - { 31149, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */ - { 31173, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */ - { 31197, 0x00000B41 }, /* GL_POLYGON_SMOOTH */ - { 31215, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */ - { 31238, 0x00000B42 }, /* GL_POLYGON_STIPPLE */ - { 31257, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */ - { 31280, 0x00000703 }, /* GL_POLYGON_TOKEN */ - { 31297, 0x00001203 }, /* GL_POSITION */ - { 31309, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ - { 31341, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */ - { 31377, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ - { 31410, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */ - { 31447, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ - { 31478, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */ - { 31513, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ - { 31545, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */ - { 31581, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ - { 31614, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ - { 31646, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */ - { 31682, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ - { 31715, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */ - { 31752, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */ - { 31782, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */ - { 31816, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */ - { 31847, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */ - { 31882, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ - { 31913, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */ - { 31948, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ - { 31980, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */ - { 32016, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */ - { 32046, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */ - { 32080, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */ - { 32111, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */ - { 32146, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */ - { 32178, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */ - { 32209, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */ - { 32244, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */ - { 32276, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */ - { 32312, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */ - { 32341, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */ - { 32374, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */ - { 32404, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */ - { 32438, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ - { 32477, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ - { 32510, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ - { 32550, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ - { 32584, 0x00008578 }, /* GL_PREVIOUS */ - { 32596, 0x00008578 }, /* GL_PREVIOUS_ARB */ - { 32612, 0x00008578 }, /* GL_PREVIOUS_EXT */ - { 32628, 0x00008577 }, /* GL_PRIMARY_COLOR */ - { 32645, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */ - { 32666, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */ - { 32687, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED */ - { 32711, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED_EXT */ - { 32739, 0x00008F9D }, /* GL_PRIMITIVE_RESTART */ - { 32760, 0x00008F9E }, /* GL_PRIMITIVE_RESTART_INDEX */ - { 32787, 0x00008559 }, /* GL_PRIMITIVE_RESTART_INDEX_NV */ - { 32817, 0x00008558 }, /* GL_PRIMITIVE_RESTART_NV */ - { 32841, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ - { 32874, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ - { 32906, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */ - { 32929, 0x000087FF }, /* GL_PROGRAM_BINARY_FORMATS */ - { 32955, 0x000087FF }, /* GL_PROGRAM_BINARY_FORMATS_OES */ - { 32985, 0x00008741 }, /* GL_PROGRAM_BINARY_LENGTH */ - { 33010, 0x00008741 }, /* GL_PROGRAM_BINARY_LENGTH_OES */ - { 33039, 0x00008257 }, /* GL_PROGRAM_BINARY_RETRIEVABLE_HINT */ - { 33074, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */ - { 33097, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */ - { 33127, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */ - { 33156, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */ - { 33184, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */ - { 33206, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */ - { 33234, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */ - { 33262, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */ - { 33284, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */ - { 33305, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - { 33345, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - { 33384, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ - { 33414, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - { 33449, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ - { 33482, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ - { 33516, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - { 33555, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - { 33594, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */ - { 33616, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */ - { 33642, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */ - { 33666, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE */ - { 33688, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE_ARB */ - { 33714, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */ - { 33737, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */ - { 33759, 0x00008628 }, /* GL_PROGRAM_STRING_NV */ - { 33780, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */ - { 33801, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */ - { 33828, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ - { 33860, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ - { 33892, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ - { 33927, 0x00001701 }, /* GL_PROJECTION */ - { 33941, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */ - { 33962, 0x0000898E }, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */ - { 34005, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */ - { 34031, 0x00008E4F }, /* GL_PROVOKING_VERTEX */ - { 34051, 0x00008E4F }, /* GL_PROVOKING_VERTEX_EXT */ - { 34075, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */ - { 34096, 0x00008025 }, /* GL_PROXY_HISTOGRAM */ - { 34115, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */ - { 34138, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ - { 34177, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ - { 34215, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */ - { 34235, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY */ - { 34261, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */ - { 34291, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */ - { 34315, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */ - { 34335, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY */ - { 34361, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */ - { 34391, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */ - { 34415, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */ - { 34435, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ - { 34468, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */ - { 34494, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */ - { 34524, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE */ - { 34551, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */ - { 34582, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */ - { 34612, 0x00008A1D }, /* GL_PURGEABLE_APPLE */ - { 34631, 0x00002003 }, /* GL_Q */ - { 34636, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */ - { 34661, 0x00000007 }, /* GL_QUADS */ - { 34670, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ - { 34714, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT */ - { 34762, 0x00008614 }, /* GL_QUAD_MESH_SUN */ - { 34779, 0x00000008 }, /* GL_QUAD_STRIP */ - { 34793, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT */ - { 34820, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT_NV */ - { 34850, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT */ - { 34874, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT_NV */ - { 34901, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */ - { 34923, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */ - { 34949, 0x00008E14 }, /* GL_QUERY_NO_WAIT */ - { 34966, 0x00008E14 }, /* GL_QUERY_NO_WAIT_NV */ - { 34986, 0x00008866 }, /* GL_QUERY_RESULT */ - { 35002, 0x00008866 }, /* GL_QUERY_RESULT_ARB */ - { 35022, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */ - { 35048, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */ - { 35078, 0x00008E13 }, /* GL_QUERY_WAIT */ - { 35092, 0x00008E13 }, /* GL_QUERY_WAIT_NV */ - { 35109, 0x00002002 }, /* GL_R */ - { 35114, 0x00008C3A }, /* GL_R11F_G11F_B10F */ - { 35132, 0x00008F98 }, /* GL_R16_SNORM */ - { 35145, 0x00002A10 }, /* GL_R3_G3_B2 */ - { 35157, 0x00008F94 }, /* GL_R8_SNORM */ - { 35169, 0x00008C89 }, /* GL_RASTERIZER_DISCARD */ - { 35191, 0x00008C89 }, /* GL_RASTERIZER_DISCARD_EXT */ - { 35217, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ - { 35250, 0x00000C02 }, /* GL_READ_BUFFER */ - { 35265, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER */ - { 35285, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING */ - { 35313, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */ - { 35345, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */ - { 35369, 0x000088B8 }, /* GL_READ_ONLY */ - { 35382, 0x000088B8 }, /* GL_READ_ONLY_ARB */ - { 35399, 0x000088BA }, /* GL_READ_WRITE */ - { 35413, 0x000088BA }, /* GL_READ_WRITE_ARB */ - { 35431, 0x00001903 }, /* GL_RED */ - { 35438, 0x00008016 }, /* GL_REDUCE */ - { 35448, 0x00008016 }, /* GL_REDUCE_EXT */ - { 35462, 0x00000D15 }, /* GL_RED_BIAS */ - { 35474, 0x00000D52 }, /* GL_RED_BITS */ - { 35486, 0x00008D94 }, /* GL_RED_INTEGER */ - { 35501, 0x00008D94 }, /* GL_RED_INTEGER_EXT */ - { 35520, 0x00000D14 }, /* GL_RED_SCALE */ - { 35533, 0x00008F90 }, /* GL_RED_SNORM */ - { 35546, 0x00008512 }, /* GL_REFLECTION_MAP */ - { 35564, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */ - { 35586, 0x00008512 }, /* GL_REFLECTION_MAP_NV */ - { 35607, 0x00008512 }, /* GL_REFLECTION_MAP_OES */ - { 35629, 0x00008A19 }, /* GL_RELEASED_APPLE */ - { 35647, 0x00001C00 }, /* GL_RENDER */ - { 35657, 0x00008D41 }, /* GL_RENDERBUFFER */ - { 35673, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE */ - { 35700, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE_OES */ - { 35731, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING */ - { 35755, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */ - { 35783, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_OES */ - { 35811, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE */ - { 35837, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE_OES */ - { 35867, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE */ - { 35894, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE_OES */ - { 35925, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */ - { 35945, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE */ - { 35972, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE_OES */ - { 36003, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT */ - { 36026, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */ - { 36053, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_OES */ - { 36080, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT */ - { 36112, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */ - { 36148, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_OES */ - { 36184, 0x00008D41 }, /* GL_RENDERBUFFER_OES */ - { 36204, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE */ - { 36229, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE_OES */ - { 36258, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES */ - { 36282, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES_EXT */ - { 36310, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE */ - { 36339, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE_OES */ - { 36372, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH */ - { 36394, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */ - { 36420, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_OES */ - { 36446, 0x00001F01 }, /* GL_RENDERER */ - { 36458, 0x00000C40 }, /* GL_RENDER_MODE */ - { 36473, 0x00002901 }, /* GL_REPEAT */ - { 36483, 0x00001E01 }, /* GL_REPLACE */ - { 36494, 0x00008062 }, /* GL_REPLACE_EXT */ - { 36509, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */ - { 36532, 0x0000803A }, /* GL_RESCALE_NORMAL */ - { 36550, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */ - { 36572, 0x00008256 }, /* GL_RESET_NOTIFICATION_STRATEGY_ARB */ - { 36607, 0x00008A1B }, /* GL_RETAINED_APPLE */ - { 36625, 0x00000102 }, /* GL_RETURN */ - { 36635, 0x00008F99 }, /* GL_RG16_SNORM */ - { 36649, 0x00008F95 }, /* GL_RG8_SNORM */ - { 36662, 0x00001907 }, /* GL_RGB */ - { 36669, 0x00008052 }, /* GL_RGB10 */ - { 36678, 0x00008059 }, /* GL_RGB10_A2 */ - { 36690, 0x00008059 }, /* GL_RGB10_A2_EXT */ - { 36706, 0x00008052 }, /* GL_RGB10_EXT */ - { 36719, 0x00008053 }, /* GL_RGB12 */ - { 36728, 0x00008053 }, /* GL_RGB12_EXT */ - { 36741, 0x00008054 }, /* GL_RGB16 */ - { 36750, 0x0000881B }, /* GL_RGB16F */ - { 36760, 0x00008D89 }, /* GL_RGB16I */ - { 36770, 0x00008D89 }, /* GL_RGB16I_EXT */ - { 36784, 0x00008D77 }, /* GL_RGB16UI */ - { 36795, 0x00008D77 }, /* GL_RGB16UI_EXT */ - { 36810, 0x00008054 }, /* GL_RGB16_EXT */ - { 36823, 0x00008F9A }, /* GL_RGB16_SNORM */ - { 36838, 0x0000804E }, /* GL_RGB2_EXT */ - { 36850, 0x00008815 }, /* GL_RGB32F */ - { 36860, 0x00008D83 }, /* GL_RGB32I */ - { 36870, 0x00008D83 }, /* GL_RGB32I_EXT */ - { 36884, 0x00008D71 }, /* GL_RGB32UI */ - { 36895, 0x00008D71 }, /* GL_RGB32UI_EXT */ - { 36910, 0x0000804F }, /* GL_RGB4 */ - { 36918, 0x0000804F }, /* GL_RGB4_EXT */ - { 36930, 0x000083A1 }, /* GL_RGB4_S3TC */ - { 36943, 0x00008050 }, /* GL_RGB5 */ - { 36951, 0x00008D62 }, /* GL_RGB565 */ - { 36961, 0x00008D62 }, /* GL_RGB565_OES */ - { 36975, 0x00008057 }, /* GL_RGB5_A1 */ - { 36986, 0x00008057 }, /* GL_RGB5_A1_EXT */ - { 37001, 0x00008057 }, /* GL_RGB5_A1_OES */ - { 37016, 0x00008050 }, /* GL_RGB5_EXT */ - { 37028, 0x00008051 }, /* GL_RGB8 */ - { 37036, 0x00008D8F }, /* GL_RGB8I */ - { 37045, 0x00008D8F }, /* GL_RGB8I_EXT */ - { 37058, 0x00008D7D }, /* GL_RGB8UI */ - { 37068, 0x00008D7D }, /* GL_RGB8UI_EXT */ - { 37082, 0x00008051 }, /* GL_RGB8_EXT */ - { 37094, 0x00008051 }, /* GL_RGB8_OES */ - { 37106, 0x00008F96 }, /* GL_RGB8_SNORM */ - { 37120, 0x00008C3D }, /* GL_RGB9_E5 */ - { 37131, 0x00001908 }, /* GL_RGBA */ - { 37139, 0x0000805A }, /* GL_RGBA12 */ - { 37149, 0x0000805A }, /* GL_RGBA12_EXT */ - { 37163, 0x0000805B }, /* GL_RGBA16 */ - { 37173, 0x0000881A }, /* GL_RGBA16F */ - { 37184, 0x00008D88 }, /* GL_RGBA16I */ - { 37195, 0x00008D88 }, /* GL_RGBA16I_EXT */ - { 37210, 0x00008D76 }, /* GL_RGBA16UI */ - { 37222, 0x00008D76 }, /* GL_RGBA16UI_EXT */ - { 37238, 0x0000805B }, /* GL_RGBA16_EXT */ - { 37252, 0x00008F9B }, /* GL_RGBA16_SNORM */ - { 37268, 0x00008055 }, /* GL_RGBA2 */ - { 37277, 0x00008055 }, /* GL_RGBA2_EXT */ - { 37290, 0x00008814 }, /* GL_RGBA32F */ - { 37301, 0x00008D82 }, /* GL_RGBA32I */ - { 37312, 0x00008D82 }, /* GL_RGBA32I_EXT */ - { 37327, 0x00008D70 }, /* GL_RGBA32UI */ - { 37339, 0x00008D70 }, /* GL_RGBA32UI_EXT */ - { 37355, 0x00008056 }, /* GL_RGBA4 */ - { 37364, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */ - { 37383, 0x00008056 }, /* GL_RGBA4_EXT */ - { 37396, 0x00008056 }, /* GL_RGBA4_OES */ - { 37409, 0x000083A3 }, /* GL_RGBA4_S3TC */ - { 37423, 0x00008058 }, /* GL_RGBA8 */ - { 37432, 0x00008D8E }, /* GL_RGBA8I */ - { 37442, 0x00008D8E }, /* GL_RGBA8I_EXT */ - { 37456, 0x00008D7C }, /* GL_RGBA8UI */ - { 37467, 0x00008D7C }, /* GL_RGBA8UI_EXT */ - { 37482, 0x00008058 }, /* GL_RGBA8_EXT */ - { 37495, 0x00008058 }, /* GL_RGBA8_OES */ - { 37508, 0x00008F97 }, /* GL_RGBA8_SNORM */ - { 37523, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */ - { 37541, 0x00008820 }, /* GL_RGBA_FLOAT_MODE_ARB */ - { 37564, 0x00008D99 }, /* GL_RGBA_INTEGER */ - { 37580, 0x00008D99 }, /* GL_RGBA_INTEGER_EXT */ - { 37600, 0x00008D9E }, /* GL_RGBA_INTEGER_MODE_EXT */ - { 37625, 0x00000C31 }, /* GL_RGBA_MODE */ - { 37638, 0x000083A2 }, /* GL_RGBA_S3TC */ - { 37651, 0x00008F93 }, /* GL_RGBA_SNORM */ - { 37665, 0x00008D98 }, /* GL_RGB_INTEGER */ - { 37680, 0x00008D98 }, /* GL_RGB_INTEGER_EXT */ - { 37699, 0x000083A0 }, /* GL_RGB_S3TC */ - { 37711, 0x00008573 }, /* GL_RGB_SCALE */ - { 37724, 0x00008573 }, /* GL_RGB_SCALE_ARB */ - { 37741, 0x00008573 }, /* GL_RGB_SCALE_EXT */ - { 37758, 0x00008F92 }, /* GL_RGB_SNORM */ - { 37771, 0x00008F91 }, /* GL_RG_SNORM */ - { 37783, 0x00000407 }, /* GL_RIGHT */ - { 37792, 0x00002000 }, /* GL_S */ - { 37797, 0x00008B5D }, /* GL_SAMPLER_1D */ - { 37811, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY */ - { 37831, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY_EXT */ - { 37855, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW */ - { 37882, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW_EXT */ - { 37913, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */ - { 37934, 0x00008B5E }, /* GL_SAMPLER_2D */ - { 37948, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY */ - { 37968, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY_EXT */ - { 37992, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW */ - { 38019, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW_EXT */ - { 38050, 0x00008B63 }, /* GL_SAMPLER_2D_RECT */ - { 38069, 0x00008B64 }, /* GL_SAMPLER_2D_RECT_SHADOW */ - { 38095, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */ - { 38116, 0x00008B5F }, /* GL_SAMPLER_3D */ - { 38130, 0x00008B5F }, /* GL_SAMPLER_3D_OES */ - { 38148, 0x00008919 }, /* GL_SAMPLER_BINDING */ - { 38167, 0x00008DC2 }, /* GL_SAMPLER_BUFFER */ - { 38185, 0x00008DC2 }, /* GL_SAMPLER_BUFFER_EXT */ - { 38207, 0x00008B60 }, /* GL_SAMPLER_CUBE */ - { 38223, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW */ - { 38246, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW_EXT */ - { 38273, 0x000080A9 }, /* GL_SAMPLES */ - { 38284, 0x000086B4 }, /* GL_SAMPLES_3DFX */ - { 38300, 0x000080A9 }, /* GL_SAMPLES_ARB */ - { 38315, 0x00008914 }, /* GL_SAMPLES_PASSED */ - { 38333, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */ - { 38355, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ - { 38383, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */ - { 38415, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */ - { 38438, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */ - { 38465, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */ - { 38483, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */ - { 38506, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */ - { 38528, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */ - { 38547, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */ - { 38570, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */ - { 38596, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */ - { 38626, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */ - { 38651, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */ - { 38680, 0x00080000 }, /* GL_SCISSOR_BIT */ - { 38695, 0x00000C10 }, /* GL_SCISSOR_BOX */ - { 38710, 0x00000C11 }, /* GL_SCISSOR_TEST */ - { 38726, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */ - { 38751, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ - { 38791, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */ - { 38835, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ - { 38868, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ - { 38898, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ - { 38930, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ - { 38960, 0x00001C02 }, /* GL_SELECT */ - { 38970, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */ - { 38998, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */ - { 39023, 0x00008012 }, /* GL_SEPARABLE_2D */ - { 39039, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS */ - { 39059, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS_EXT */ - { 39083, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */ - { 39110, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */ - { 39141, 0x0000150F }, /* GL_SET */ - { 39148, 0x00008DF8 }, /* GL_SHADER_BINARY_FORMATS */ - { 39173, 0x00008DFA }, /* GL_SHADER_COMPILER */ - { 39192, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */ - { 39213, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */ - { 39237, 0x00008B4F }, /* GL_SHADER_TYPE */ - { 39252, 0x00000B54 }, /* GL_SHADE_MODEL */ - { 39267, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */ - { 39295, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */ - { 39318, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */ - { 39348, 0x00001601 }, /* GL_SHININESS */ - { 39361, 0x00001402 }, /* GL_SHORT */ - { 39370, 0x00009119 }, /* GL_SIGNALED */ - { 39382, 0x00008F9C }, /* GL_SIGNED_NORMALIZED */ - { 39403, 0x000081F9 }, /* GL_SINGLE_COLOR */ - { 39419, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */ - { 39439, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */ - { 39458, 0x00008C46 }, /* GL_SLUMINANCE */ - { 39472, 0x00008C47 }, /* GL_SLUMINANCE8 */ - { 39487, 0x00008C45 }, /* GL_SLUMINANCE8_ALPHA8 */ - { 39509, 0x00008C44 }, /* GL_SLUMINANCE_ALPHA */ - { 39529, 0x00001D01 }, /* GL_SMOOTH */ - { 39539, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */ - { 39572, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */ - { 39599, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */ - { 39632, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */ - { 39659, 0x00008588 }, /* GL_SOURCE0_ALPHA */ - { 39676, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */ - { 39697, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */ - { 39718, 0x00008580 }, /* GL_SOURCE0_RGB */ - { 39733, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */ - { 39752, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */ - { 39771, 0x00008589 }, /* GL_SOURCE1_ALPHA */ - { 39788, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */ - { 39809, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */ - { 39830, 0x00008581 }, /* GL_SOURCE1_RGB */ - { 39845, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */ - { 39864, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */ - { 39883, 0x0000858A }, /* GL_SOURCE2_ALPHA */ - { 39900, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */ - { 39921, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */ - { 39942, 0x00008582 }, /* GL_SOURCE2_RGB */ - { 39957, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */ - { 39976, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */ - { 39995, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */ - { 40015, 0x00008583 }, /* GL_SOURCE3_RGB_NV */ - { 40033, 0x00001202 }, /* GL_SPECULAR */ - { 40045, 0x00002402 }, /* GL_SPHERE_MAP */ - { 40059, 0x00001206 }, /* GL_SPOT_CUTOFF */ - { 40074, 0x00001204 }, /* GL_SPOT_DIRECTION */ - { 40092, 0x00001205 }, /* GL_SPOT_EXPONENT */ - { 40109, 0x00008588 }, /* GL_SRC0_ALPHA */ - { 40123, 0x00008580 }, /* GL_SRC0_RGB */ - { 40135, 0x00008589 }, /* GL_SRC1_ALPHA */ - { 40149, 0x00008581 }, /* GL_SRC1_RGB */ - { 40161, 0x0000858A }, /* GL_SRC2_ALPHA */ - { 40175, 0x00008582 }, /* GL_SRC2_RGB */ - { 40187, 0x00000302 }, /* GL_SRC_ALPHA */ - { 40200, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */ - { 40222, 0x00000300 }, /* GL_SRC_COLOR */ - { 40235, 0x00008C40 }, /* GL_SRGB */ - { 40243, 0x00008C41 }, /* GL_SRGB8 */ - { 40252, 0x00008C43 }, /* GL_SRGB8_ALPHA8 */ - { 40268, 0x00008C42 }, /* GL_SRGB_ALPHA */ - { 40282, 0x00000503 }, /* GL_STACK_OVERFLOW */ - { 40300, 0x00000504 }, /* GL_STACK_UNDERFLOW */ - { 40319, 0x000088E6 }, /* GL_STATIC_COPY */ - { 40334, 0x000088E6 }, /* GL_STATIC_COPY_ARB */ - { 40353, 0x000088E4 }, /* GL_STATIC_DRAW */ - { 40368, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */ - { 40387, 0x000088E5 }, /* GL_STATIC_READ */ - { 40402, 0x000088E5 }, /* GL_STATIC_READ_ARB */ - { 40421, 0x00001802 }, /* GL_STENCIL */ - { 40432, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT */ - { 40454, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */ - { 40480, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_OES */ - { 40506, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */ - { 40527, 0x00008801 }, /* GL_STENCIL_BACK_FAIL_ATI */ - { 40552, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */ - { 40573, 0x00008800 }, /* GL_STENCIL_BACK_FUNC_ATI */ - { 40598, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ - { 40630, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI */ - { 40666, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ - { 40698, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI */ - { 40734, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */ - { 40754, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */ - { 40781, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */ - { 40807, 0x00000D57 }, /* GL_STENCIL_BITS */ - { 40823, 0x00008224 }, /* GL_STENCIL_BUFFER */ - { 40841, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */ - { 40863, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */ - { 40886, 0x00000B94 }, /* GL_STENCIL_FAIL */ - { 40902, 0x00000B92 }, /* GL_STENCIL_FUNC */ - { 40918, 0x00001901 }, /* GL_STENCIL_INDEX */ - { 40935, 0x00008D46 }, /* GL_STENCIL_INDEX1 */ - { 40953, 0x00008D49 }, /* GL_STENCIL_INDEX16 */ - { 40972, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */ - { 40995, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */ - { 41017, 0x00008D46 }, /* GL_STENCIL_INDEX1_OES */ - { 41039, 0x00008D47 }, /* GL_STENCIL_INDEX4 */ - { 41057, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */ - { 41079, 0x00008D47 }, /* GL_STENCIL_INDEX4_OES */ - { 41101, 0x00008D48 }, /* GL_STENCIL_INDEX8 */ - { 41119, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */ - { 41141, 0x00008D48 }, /* GL_STENCIL_INDEX8_OES */ - { 41163, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */ - { 41184, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */ - { 41211, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */ - { 41238, 0x00000B97 }, /* GL_STENCIL_REF */ - { 41253, 0x00000B90 }, /* GL_STENCIL_TEST */ - { 41269, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ - { 41298, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */ - { 41320, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */ - { 41341, 0x00000C33 }, /* GL_STEREO */ - { 41351, 0x000085BE }, /* GL_STORAGE_CACHED_APPLE */ - { 41375, 0x000085BD }, /* GL_STORAGE_PRIVATE_APPLE */ - { 41400, 0x000085BF }, /* GL_STORAGE_SHARED_APPLE */ - { 41424, 0x000088E2 }, /* GL_STREAM_COPY */ - { 41439, 0x000088E2 }, /* GL_STREAM_COPY_ARB */ - { 41458, 0x000088E0 }, /* GL_STREAM_DRAW */ - { 41473, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */ - { 41492, 0x000088E1 }, /* GL_STREAM_READ */ - { 41507, 0x000088E1 }, /* GL_STREAM_READ_ARB */ - { 41526, 0x00000D50 }, /* GL_SUBPIXEL_BITS */ - { 41543, 0x000084E7 }, /* GL_SUBTRACT */ - { 41555, 0x000084E7 }, /* GL_SUBTRACT_ARB */ - { 41571, 0x00009113 }, /* GL_SYNC_CONDITION */ - { 41589, 0x00009116 }, /* GL_SYNC_FENCE */ - { 41603, 0x00009115 }, /* GL_SYNC_FLAGS */ - { 41617, 0x00000001 }, /* GL_SYNC_FLUSH_COMMANDS_BIT */ - { 41644, 0x00009117 }, /* GL_SYNC_GPU_COMMANDS_COMPLETE */ - { 41674, 0x00009114 }, /* GL_SYNC_STATUS */ - { 41689, 0x00002001 }, /* GL_T */ - { 41694, 0x00002A2A }, /* GL_T2F_C3F_V3F */ - { 41709, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */ - { 41728, 0x00002A29 }, /* GL_T2F_C4UB_V3F */ - { 41744, 0x00002A2B }, /* GL_T2F_N3F_V3F */ - { 41759, 0x00002A27 }, /* GL_T2F_V3F */ - { 41770, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */ - { 41789, 0x00002A28 }, /* GL_T4F_V4F */ - { 41800, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */ - { 41823, 0x00001702 }, /* GL_TEXTURE */ - { 41834, 0x000084C0 }, /* GL_TEXTURE0 */ - { 41846, 0x000084C0 }, /* GL_TEXTURE0_ARB */ - { 41862, 0x000084C1 }, /* GL_TEXTURE1 */ - { 41874, 0x000084CA }, /* GL_TEXTURE10 */ - { 41887, 0x000084CA }, /* GL_TEXTURE10_ARB */ - { 41904, 0x000084CB }, /* GL_TEXTURE11 */ - { 41917, 0x000084CB }, /* GL_TEXTURE11_ARB */ - { 41934, 0x000084CC }, /* GL_TEXTURE12 */ - { 41947, 0x000084CC }, /* GL_TEXTURE12_ARB */ - { 41964, 0x000084CD }, /* GL_TEXTURE13 */ - { 41977, 0x000084CD }, /* GL_TEXTURE13_ARB */ - { 41994, 0x000084CE }, /* GL_TEXTURE14 */ - { 42007, 0x000084CE }, /* GL_TEXTURE14_ARB */ - { 42024, 0x000084CF }, /* GL_TEXTURE15 */ - { 42037, 0x000084CF }, /* GL_TEXTURE15_ARB */ - { 42054, 0x000084D0 }, /* GL_TEXTURE16 */ - { 42067, 0x000084D0 }, /* GL_TEXTURE16_ARB */ - { 42084, 0x000084D1 }, /* GL_TEXTURE17 */ - { 42097, 0x000084D1 }, /* GL_TEXTURE17_ARB */ - { 42114, 0x000084D2 }, /* GL_TEXTURE18 */ - { 42127, 0x000084D2 }, /* GL_TEXTURE18_ARB */ - { 42144, 0x000084D3 }, /* GL_TEXTURE19 */ - { 42157, 0x000084D3 }, /* GL_TEXTURE19_ARB */ - { 42174, 0x000084C1 }, /* GL_TEXTURE1_ARB */ - { 42190, 0x000084C2 }, /* GL_TEXTURE2 */ - { 42202, 0x000084D4 }, /* GL_TEXTURE20 */ - { 42215, 0x000084D4 }, /* GL_TEXTURE20_ARB */ - { 42232, 0x000084D5 }, /* GL_TEXTURE21 */ - { 42245, 0x000084D5 }, /* GL_TEXTURE21_ARB */ - { 42262, 0x000084D6 }, /* GL_TEXTURE22 */ - { 42275, 0x000084D6 }, /* GL_TEXTURE22_ARB */ - { 42292, 0x000084D7 }, /* GL_TEXTURE23 */ - { 42305, 0x000084D7 }, /* GL_TEXTURE23_ARB */ - { 42322, 0x000084D8 }, /* GL_TEXTURE24 */ - { 42335, 0x000084D8 }, /* GL_TEXTURE24_ARB */ - { 42352, 0x000084D9 }, /* GL_TEXTURE25 */ - { 42365, 0x000084D9 }, /* GL_TEXTURE25_ARB */ - { 42382, 0x000084DA }, /* GL_TEXTURE26 */ - { 42395, 0x000084DA }, /* GL_TEXTURE26_ARB */ - { 42412, 0x000084DB }, /* GL_TEXTURE27 */ - { 42425, 0x000084DB }, /* GL_TEXTURE27_ARB */ - { 42442, 0x000084DC }, /* GL_TEXTURE28 */ - { 42455, 0x000084DC }, /* GL_TEXTURE28_ARB */ - { 42472, 0x000084DD }, /* GL_TEXTURE29 */ - { 42485, 0x000084DD }, /* GL_TEXTURE29_ARB */ - { 42502, 0x000084C2 }, /* GL_TEXTURE2_ARB */ - { 42518, 0x000084C3 }, /* GL_TEXTURE3 */ - { 42530, 0x000084DE }, /* GL_TEXTURE30 */ - { 42543, 0x000084DE }, /* GL_TEXTURE30_ARB */ - { 42560, 0x000084DF }, /* GL_TEXTURE31 */ - { 42573, 0x000084DF }, /* GL_TEXTURE31_ARB */ - { 42590, 0x000084C3 }, /* GL_TEXTURE3_ARB */ - { 42606, 0x000084C4 }, /* GL_TEXTURE4 */ - { 42618, 0x000084C4 }, /* GL_TEXTURE4_ARB */ - { 42634, 0x000084C5 }, /* GL_TEXTURE5 */ - { 42646, 0x000084C5 }, /* GL_TEXTURE5_ARB */ - { 42662, 0x000084C6 }, /* GL_TEXTURE6 */ - { 42674, 0x000084C6 }, /* GL_TEXTURE6_ARB */ - { 42690, 0x000084C7 }, /* GL_TEXTURE7 */ - { 42702, 0x000084C7 }, /* GL_TEXTURE7_ARB */ - { 42718, 0x000084C8 }, /* GL_TEXTURE8 */ - { 42730, 0x000084C8 }, /* GL_TEXTURE8_ARB */ - { 42746, 0x000084C9 }, /* GL_TEXTURE9 */ - { 42758, 0x000084C9 }, /* GL_TEXTURE9_ARB */ - { 42774, 0x00000DE0 }, /* GL_TEXTURE_1D */ - { 42788, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY */ - { 42808, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY_EXT */ - { 42832, 0x00000DE1 }, /* GL_TEXTURE_2D */ - { 42846, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY */ - { 42866, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY_EXT */ - { 42890, 0x0000806F }, /* GL_TEXTURE_3D */ - { 42904, 0x0000806F }, /* GL_TEXTURE_3D_OES */ - { 42922, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */ - { 42944, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */ - { 42970, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */ - { 42992, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */ - { 43014, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY */ - { 43042, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */ - { 43074, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */ - { 43096, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY */ - { 43124, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */ - { 43156, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */ - { 43178, 0x0000806A }, /* GL_TEXTURE_BINDING_3D_OES */ - { 43204, 0x00008C2C }, /* GL_TEXTURE_BINDING_BUFFER */ - { 43230, 0x00008C2C }, /* GL_TEXTURE_BINDING_BUFFER_ARB */ - { 43260, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */ - { 43288, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */ - { 43320, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_OES */ - { 43352, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE */ - { 43381, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */ - { 43414, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */ - { 43446, 0x00040000 }, /* GL_TEXTURE_BIT */ - { 43461, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */ - { 43482, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */ - { 43507, 0x00001005 }, /* GL_TEXTURE_BORDER */ - { 43525, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */ - { 43549, 0x00008C2A }, /* GL_TEXTURE_BUFFER */ - { 43567, 0x00008C2A }, /* GL_TEXTURE_BUFFER_ARB */ - { 43589, 0x00008C2D }, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */ - { 43626, 0x00008C2D }, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB */ - { 43667, 0x00008C2E }, /* GL_TEXTURE_BUFFER_FORMAT */ - { 43692, 0x00008C2E }, /* GL_TEXTURE_BUFFER_FORMAT_ARB */ - { 43721, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ - { 43752, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ - { 43782, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ - { 43812, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ - { 43847, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ - { 43878, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - { 43916, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */ - { 43943, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ - { 43975, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ - { 44009, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */ - { 44033, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */ - { 44061, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */ - { 44085, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */ - { 44113, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ - { 44146, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */ - { 44170, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */ - { 44192, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */ - { 44214, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */ - { 44240, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */ - { 44274, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ - { 44307, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */ - { 44344, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */ - { 44372, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */ - { 44404, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */ - { 44427, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ - { 44465, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */ - { 44507, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */ - { 44538, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */ - { 44566, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ - { 44596, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */ - { 44624, 0x00008B9D }, /* GL_TEXTURE_CROP_RECT_OES */ - { 44649, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */ - { 44669, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */ - { 44693, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ - { 44724, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */ - { 44759, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES */ - { 44794, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ - { 44825, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */ - { 44860, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES */ - { 44895, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ - { 44926, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */ - { 44961, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES */ - { 44996, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_OES */ - { 45020, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ - { 45051, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */ - { 45086, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES */ - { 45121, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ - { 45152, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */ - { 45187, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES */ - { 45222, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ - { 45253, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */ - { 45288, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES */ - { 45323, 0x000088F4 }, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */ - { 45352, 0x00008071 }, /* GL_TEXTURE_DEPTH */ - { 45369, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */ - { 45391, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */ - { 45417, 0x00002300 }, /* GL_TEXTURE_ENV */ - { 45432, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */ - { 45453, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */ - { 45473, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */ - { 45499, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL_EXT */ - { 45529, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */ - { 45549, 0x00002500 }, /* GL_TEXTURE_GEN_MODE_OES */ - { 45573, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */ - { 45590, 0x00000C62 }, /* GL_TEXTURE_GEN_R */ - { 45607, 0x00000C60 }, /* GL_TEXTURE_GEN_S */ - { 45624, 0x00008D60 }, /* GL_TEXTURE_GEN_STR_OES */ - { 45647, 0x00000C61 }, /* GL_TEXTURE_GEN_T */ - { 45664, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */ - { 45689, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */ - { 45711, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */ - { 45737, 0x00001001 }, /* GL_TEXTURE_HEIGHT */ - { 45755, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */ - { 45781, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */ - { 45807, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */ - { 45837, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */ - { 45864, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */ - { 45889, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */ - { 45909, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */ - { 45933, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ - { 45960, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ - { 45987, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ - { 46014, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */ - { 46040, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */ - { 46070, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */ - { 46092, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */ - { 46110, 0x0000898F }, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */ - { 46150, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ - { 46180, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ - { 46208, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ - { 46236, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ - { 46264, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */ - { 46285, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */ - { 46304, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */ - { 46326, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */ - { 46345, 0x00008066 }, /* GL_TEXTURE_PRIORITY */ - { 46365, 0x000085B7 }, /* GL_TEXTURE_RANGE_LENGTH_APPLE */ - { 46395, 0x000085B8 }, /* GL_TEXTURE_RANGE_POINTER_APPLE */ - { 46426, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE */ - { 46447, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */ - { 46472, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */ - { 46496, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */ - { 46516, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */ - { 46540, 0x00008067 }, /* GL_TEXTURE_RESIDENT */ - { 46560, 0x00008C3F }, /* GL_TEXTURE_SHARED_SIZE */ - { 46583, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */ - { 46606, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE */ - { 46630, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE_EXT */ - { 46658, 0x000085BC }, /* GL_TEXTURE_STORAGE_HINT_APPLE */ - { 46688, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */ - { 46713, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ - { 46747, 0x00001000 }, /* GL_TEXTURE_WIDTH */ - { 46764, 0x00008072 }, /* GL_TEXTURE_WRAP_R */ - { 46782, 0x00008072 }, /* GL_TEXTURE_WRAP_R_OES */ - { 46804, 0x00002802 }, /* GL_TEXTURE_WRAP_S */ - { 46822, 0x00002803 }, /* GL_TEXTURE_WRAP_T */ - { 46840, 0x0000911B }, /* GL_TIMEOUT_EXPIRED */ - { 46859, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */ - { 46879, 0x00008648 }, /* GL_TRACK_MATRIX_NV */ - { 46898, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */ - { 46927, 0x00001000 }, /* GL_TRANSFORM_BIT */ - { 46944, 0x00008E22 }, /* GL_TRANSFORM_FEEDBACK */ - { 46966, 0x00008E25 }, /* GL_TRANSFORM_FEEDBACK_BINDING */ - { 46996, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER */ - { 47025, 0x00008E24 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */ - { 47061, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */ - { 47098, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */ - { 47139, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */ - { 47172, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */ - { 47206, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */ - { 47244, 0x00008E23 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */ - { 47280, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */ - { 47314, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */ - { 47352, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */ - { 47387, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */ - { 47426, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */ - { 47467, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */ - { 47512, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS */ - { 47543, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */ - { 47578, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */ - { 47619, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */ - { 47664, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */ - { 47690, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */ - { 47720, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ - { 47752, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ - { 47782, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */ - { 47816, 0x0000862C }, /* GL_TRANSPOSE_NV */ - { 47832, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */ - { 47863, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */ - { 47898, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */ - { 47926, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */ - { 47958, 0x00000004 }, /* GL_TRIANGLES */ - { 47971, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY */ - { 47994, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY_ARB */ - { 48021, 0x00000006 }, /* GL_TRIANGLE_FAN */ - { 48037, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */ - { 48058, 0x00000005 }, /* GL_TRIANGLE_STRIP */ - { 48076, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY */ - { 48104, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY_ARB */ - { 48136, 0x00000001 }, /* GL_TRUE */ - { 48144, 0x00008A1C }, /* GL_UNDEFINED_APPLE */ - { 48163, 0x00008255 }, /* GL_UNKNOWN_CONTEXT_RESET_ARB */ - { 48192, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */ - { 48212, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */ - { 48235, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */ - { 48255, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */ - { 48276, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */ - { 48298, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */ - { 48320, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */ - { 48340, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */ - { 48361, 0x00009118 }, /* GL_UNSIGNALED */ - { 48375, 0x00001401 }, /* GL_UNSIGNED_BYTE */ - { 48392, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */ - { 48419, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */ - { 48442, 0x00001405 }, /* GL_UNSIGNED_INT */ - { 48458, 0x00008C3B }, /* GL_UNSIGNED_INT_10F_11F_11F_REV */ - { 48490, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */ - { 48517, 0x00008DF6 }, /* GL_UNSIGNED_INT_10_10_10_2_OES */ - { 48548, 0x000084FA }, /* GL_UNSIGNED_INT_24_8 */ - { 48569, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_EXT */ - { 48594, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */ - { 48618, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_OES */ - { 48643, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */ - { 48674, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV_EXT */ - { 48709, 0x00008C3E }, /* GL_UNSIGNED_INT_5_9_9_9_REV */ - { 48737, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */ - { 48761, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */ - { 48789, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D */ - { 48816, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */ - { 48849, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT */ - { 48886, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D_EXT */ - { 48917, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D */ - { 48944, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */ - { 48977, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT */ - { 49014, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D_EXT */ - { 49045, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */ - { 49077, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT */ - { 49113, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D */ - { 49140, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D_EXT */ - { 49171, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */ - { 49202, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT */ - { 49237, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE */ - { 49266, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE_EXT */ - { 49299, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2 */ - { 49320, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2_EXT */ - { 49345, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3 */ - { 49366, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3_EXT */ - { 49391, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4 */ - { 49412, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4_EXT */ - { 49437, 0x00008C17 }, /* GL_UNSIGNED_NORMALIZED */ - { 49460, 0x00001403 }, /* GL_UNSIGNED_SHORT */ - { 49478, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ - { 49508, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT */ - { 49542, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */ - { 49568, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ - { 49598, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT */ - { 49632, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */ - { 49658, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */ - { 49682, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */ - { 49710, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */ - { 49738, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */ - { 49765, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ - { 49797, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */ - { 49828, 0x00008CA2 }, /* GL_UPPER_LEFT */ - { 49842, 0x00002A20 }, /* GL_V2F */ - { 49849, 0x00002A21 }, /* GL_V3F */ - { 49856, 0x00008B83 }, /* GL_VALIDATE_STATUS */ - { 49875, 0x00001F00 }, /* GL_VENDOR */ - { 49885, 0x00001F02 }, /* GL_VERSION */ - { 49896, 0x00008074 }, /* GL_VERTEX_ARRAY */ - { 49912, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING */ - { 49936, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */ - { 49966, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ - { 49997, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */ - { 50032, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */ - { 50056, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */ - { 50077, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */ - { 50100, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */ - { 50121, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ - { 50148, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ - { 50176, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ - { 50204, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ - { 50232, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ - { 50260, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ - { 50288, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ - { 50316, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ - { 50343, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ - { 50370, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ - { 50397, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ - { 50424, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ - { 50451, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ - { 50478, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ - { 50505, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ - { 50532, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ - { 50559, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ - { 50597, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */ - { 50639, 0x000088FE }, /* GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB */ - { 50674, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ - { 50705, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */ - { 50740, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */ - { 50771, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT */ - { 50806, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ - { 50840, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */ - { 50878, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ - { 50909, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */ - { 50944, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ - { 50972, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */ - { 51004, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ - { 51034, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */ - { 51068, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ - { 51096, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */ - { 51128, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */ - { 51148, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */ - { 51170, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */ - { 51199, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */ - { 51220, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */ - { 51249, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */ - { 51282, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */ - { 51314, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */ - { 51341, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */ - { 51372, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */ - { 51402, 0x00008B31 }, /* GL_VERTEX_SHADER */ - { 51419, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */ - { 51440, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */ - { 51467, 0x00000BA2 }, /* GL_VIEWPORT */ - { 51479, 0x00000800 }, /* GL_VIEWPORT_BIT */ - { 51495, 0x00008A1A }, /* GL_VOLATILE_APPLE */ - { 51513, 0x0000911D }, /* GL_WAIT_FAILED */ - { 51528, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */ - { 51548, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ - { 51579, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */ - { 51614, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_OES */ - { 51649, 0x000086AD }, /* GL_WEIGHT_ARRAY_OES */ - { 51669, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */ - { 51697, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_OES */ - { 51725, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */ - { 51750, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_OES */ - { 51775, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ - { 51802, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_OES */ - { 51829, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */ - { 51854, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_OES */ - { 51879, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */ - { 51903, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */ - { 51922, 0x000088B9 }, /* GL_WRITE_ONLY */ - { 51936, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */ - { 51954, 0x000088B9 }, /* GL_WRITE_ONLY_OES */ - { 51972, 0x00001506 }, /* GL_XOR */ - { 51979, 0x000085B9 }, /* GL_YCBCR_422_APPLE */ - { 51998, 0x00008757 }, /* GL_YCBCR_MESA */ - { 52012, 0x00000000 }, /* GL_ZERO */ - { 52020, 0x00000D16 }, /* GL_ZOOM_X */ - { 52030, 0x00000D17 }, /* GL_ZOOM_Y */ + { 9439, 0x00008825 }, /* GL_DRAW_BUFFER0_NV */ + { 9458, 0x00008826 }, /* GL_DRAW_BUFFER1 */ + { 9474, 0x0000882F }, /* GL_DRAW_BUFFER10 */ + { 9491, 0x0000882F }, /* GL_DRAW_BUFFER10_ARB */ + { 9512, 0x0000882F }, /* GL_DRAW_BUFFER10_ATI */ + { 9533, 0x0000882F }, /* GL_DRAW_BUFFER10_NV */ + { 9553, 0x00008830 }, /* GL_DRAW_BUFFER11 */ + { 9570, 0x00008830 }, /* GL_DRAW_BUFFER11_ARB */ + { 9591, 0x00008830 }, /* GL_DRAW_BUFFER11_ATI */ + { 9612, 0x00008830 }, /* GL_DRAW_BUFFER11_NV */ + { 9632, 0x00008831 }, /* GL_DRAW_BUFFER12 */ + { 9649, 0x00008831 }, /* GL_DRAW_BUFFER12_ARB */ + { 9670, 0x00008831 }, /* GL_DRAW_BUFFER12_ATI */ + { 9691, 0x00008831 }, /* GL_DRAW_BUFFER12_NV */ + { 9711, 0x00008832 }, /* GL_DRAW_BUFFER13 */ + { 9728, 0x00008832 }, /* GL_DRAW_BUFFER13_ARB */ + { 9749, 0x00008832 }, /* GL_DRAW_BUFFER13_ATI */ + { 9770, 0x00008832 }, /* GL_DRAW_BUFFER13_NV */ + { 9790, 0x00008833 }, /* GL_DRAW_BUFFER14 */ + { 9807, 0x00008833 }, /* GL_DRAW_BUFFER14_ARB */ + { 9828, 0x00008833 }, /* GL_DRAW_BUFFER14_ATI */ + { 9849, 0x00008833 }, /* GL_DRAW_BUFFER14_NV */ + { 9869, 0x00008834 }, /* GL_DRAW_BUFFER15 */ + { 9886, 0x00008834 }, /* GL_DRAW_BUFFER15_ARB */ + { 9907, 0x00008834 }, /* GL_DRAW_BUFFER15_ATI */ + { 9928, 0x00008834 }, /* GL_DRAW_BUFFER15_NV */ + { 9948, 0x00008826 }, /* GL_DRAW_BUFFER1_ARB */ + { 9968, 0x00008826 }, /* GL_DRAW_BUFFER1_ATI */ + { 9988, 0x00008826 }, /* GL_DRAW_BUFFER1_NV */ + { 10007, 0x00008827 }, /* GL_DRAW_BUFFER2 */ + { 10023, 0x00008827 }, /* GL_DRAW_BUFFER2_ARB */ + { 10043, 0x00008827 }, /* GL_DRAW_BUFFER2_ATI */ + { 10063, 0x00008827 }, /* GL_DRAW_BUFFER2_NV */ + { 10082, 0x00008828 }, /* GL_DRAW_BUFFER3 */ + { 10098, 0x00008828 }, /* GL_DRAW_BUFFER3_ARB */ + { 10118, 0x00008828 }, /* GL_DRAW_BUFFER3_ATI */ + { 10138, 0x00008828 }, /* GL_DRAW_BUFFER3_NV */ + { 10157, 0x00008829 }, /* GL_DRAW_BUFFER4 */ + { 10173, 0x00008829 }, /* GL_DRAW_BUFFER4_ARB */ + { 10193, 0x00008829 }, /* GL_DRAW_BUFFER4_ATI */ + { 10213, 0x00008829 }, /* GL_DRAW_BUFFER4_NV */ + { 10232, 0x0000882A }, /* GL_DRAW_BUFFER5 */ + { 10248, 0x0000882A }, /* GL_DRAW_BUFFER5_ARB */ + { 10268, 0x0000882A }, /* GL_DRAW_BUFFER5_ATI */ + { 10288, 0x0000882A }, /* GL_DRAW_BUFFER5_NV */ + { 10307, 0x0000882B }, /* GL_DRAW_BUFFER6 */ + { 10323, 0x0000882B }, /* GL_DRAW_BUFFER6_ARB */ + { 10343, 0x0000882B }, /* GL_DRAW_BUFFER6_ATI */ + { 10363, 0x0000882B }, /* GL_DRAW_BUFFER6_NV */ + { 10382, 0x0000882C }, /* GL_DRAW_BUFFER7 */ + { 10398, 0x0000882C }, /* GL_DRAW_BUFFER7_ARB */ + { 10418, 0x0000882C }, /* GL_DRAW_BUFFER7_ATI */ + { 10438, 0x0000882C }, /* GL_DRAW_BUFFER7_NV */ + { 10457, 0x0000882D }, /* GL_DRAW_BUFFER8 */ + { 10473, 0x0000882D }, /* GL_DRAW_BUFFER8_ARB */ + { 10493, 0x0000882D }, /* GL_DRAW_BUFFER8_ATI */ + { 10513, 0x0000882D }, /* GL_DRAW_BUFFER8_NV */ + { 10532, 0x0000882E }, /* GL_DRAW_BUFFER9 */ + { 10548, 0x0000882E }, /* GL_DRAW_BUFFER9_ARB */ + { 10568, 0x0000882E }, /* GL_DRAW_BUFFER9_ATI */ + { 10588, 0x0000882E }, /* GL_DRAW_BUFFER9_NV */ + { 10607, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER */ + { 10627, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING */ + { 10655, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */ + { 10687, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER_EXT */ + { 10711, 0x00000705 }, /* GL_DRAW_PIXEL_TOKEN */ + { 10731, 0x00000304 }, /* GL_DST_ALPHA */ + { 10744, 0x00000306 }, /* GL_DST_COLOR */ + { 10757, 0x0000877A }, /* GL_DU8DV8_ATI */ + { 10771, 0x00008779 }, /* GL_DUDV_ATI */ + { 10783, 0x000088EA }, /* GL_DYNAMIC_COPY */ + { 10799, 0x000088EA }, /* GL_DYNAMIC_COPY_ARB */ + { 10819, 0x000088E8 }, /* GL_DYNAMIC_DRAW */ + { 10835, 0x000088E8 }, /* GL_DYNAMIC_DRAW_ARB */ + { 10855, 0x000088E9 }, /* GL_DYNAMIC_READ */ + { 10871, 0x000088E9 }, /* GL_DYNAMIC_READ_ARB */ + { 10891, 0x00000B43 }, /* GL_EDGE_FLAG */ + { 10904, 0x00008079 }, /* GL_EDGE_FLAG_ARRAY */ + { 10923, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ + { 10957, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB */ + { 10995, 0x00008093 }, /* GL_EDGE_FLAG_ARRAY_POINTER */ + { 11022, 0x0000808C }, /* GL_EDGE_FLAG_ARRAY_STRIDE */ + { 11048, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER */ + { 11072, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ + { 11104, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB */ + { 11140, 0x00001600 }, /* GL_EMISSION */ + { 11152, 0x00002000 }, /* GL_ENABLE_BIT */ + { 11166, 0x00000202 }, /* GL_EQUAL */ + { 11175, 0x00001509 }, /* GL_EQUIV */ + { 11184, 0x00010000 }, /* GL_EVAL_BIT */ + { 11196, 0x00000800 }, /* GL_EXP */ + { 11203, 0x00000801 }, /* GL_EXP2 */ + { 11211, 0x00001F03 }, /* GL_EXTENSIONS */ + { 11225, 0x00002400 }, /* GL_EYE_LINEAR */ + { 11239, 0x00002502 }, /* GL_EYE_PLANE */ + { 11252, 0x0000855C }, /* GL_EYE_PLANE_ABSOLUTE_NV */ + { 11277, 0x0000855B }, /* GL_EYE_RADIAL_NV */ + { 11294, 0x00000000 }, /* GL_FALSE */ + { 11303, 0x00001101 }, /* GL_FASTEST */ + { 11314, 0x00001C01 }, /* GL_FEEDBACK */ + { 11326, 0x00000DF0 }, /* GL_FEEDBACK_BUFFER_POINTER */ + { 11353, 0x00000DF1 }, /* GL_FEEDBACK_BUFFER_SIZE */ + { 11377, 0x00000DF2 }, /* GL_FEEDBACK_BUFFER_TYPE */ + { 11401, 0x00001B02 }, /* GL_FILL */ + { 11409, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION */ + { 11436, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION_EXT */ + { 11467, 0x0000140C }, /* GL_FIXED */ + { 11476, 0x0000140C }, /* GL_FIXED_OES */ + { 11489, 0x0000891D }, /* GL_FIXED_ONLY */ + { 11503, 0x0000891D }, /* GL_FIXED_ONLY_ARB */ + { 11521, 0x00001D00 }, /* GL_FLAT */ + { 11529, 0x00001406 }, /* GL_FLOAT */ + { 11538, 0x00008B5A }, /* GL_FLOAT_MAT2 */ + { 11552, 0x00008B5A }, /* GL_FLOAT_MAT2_ARB */ + { 11570, 0x00008B65 }, /* GL_FLOAT_MAT2x3 */ + { 11586, 0x00008B66 }, /* GL_FLOAT_MAT2x4 */ + { 11602, 0x00008B5B }, /* GL_FLOAT_MAT3 */ + { 11616, 0x00008B5B }, /* GL_FLOAT_MAT3_ARB */ + { 11634, 0x00008B67 }, /* GL_FLOAT_MAT3x2 */ + { 11650, 0x00008B68 }, /* GL_FLOAT_MAT3x4 */ + { 11666, 0x00008B5C }, /* GL_FLOAT_MAT4 */ + { 11680, 0x00008B5C }, /* GL_FLOAT_MAT4_ARB */ + { 11698, 0x00008B69 }, /* GL_FLOAT_MAT4x2 */ + { 11714, 0x00008B6A }, /* GL_FLOAT_MAT4x3 */ + { 11730, 0x00008B50 }, /* GL_FLOAT_VEC2 */ + { 11744, 0x00008B50 }, /* GL_FLOAT_VEC2_ARB */ + { 11762, 0x00008B51 }, /* GL_FLOAT_VEC3 */ + { 11776, 0x00008B51 }, /* GL_FLOAT_VEC3_ARB */ + { 11794, 0x00008B52 }, /* GL_FLOAT_VEC4 */ + { 11808, 0x00008B52 }, /* GL_FLOAT_VEC4_ARB */ + { 11826, 0x00000B60 }, /* GL_FOG */ + { 11833, 0x00000080 }, /* GL_FOG_BIT */ + { 11844, 0x00000B66 }, /* GL_FOG_COLOR */ + { 11857, 0x00008451 }, /* GL_FOG_COORD */ + { 11870, 0x00008451 }, /* GL_FOG_COORDINATE */ + { 11888, 0x00008457 }, /* GL_FOG_COORDINATE_ARRAY */ + { 11912, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ + { 11951, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB */ + { 11994, 0x00008456 }, /* GL_FOG_COORDINATE_ARRAY_POINTER */ + { 12026, 0x00008455 }, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ + { 12057, 0x00008454 }, /* GL_FOG_COORDINATE_ARRAY_TYPE */ + { 12086, 0x00008450 }, /* GL_FOG_COORDINATE_SOURCE */ + { 12111, 0x00008457 }, /* GL_FOG_COORD_ARRAY */ + { 12130, 0x0000889D }, /* GL_FOG_COORD_ARRAY_BUFFER_BINDING */ + { 12164, 0x00008456 }, /* GL_FOG_COORD_ARRAY_POINTER */ + { 12191, 0x00008455 }, /* GL_FOG_COORD_ARRAY_STRIDE */ + { 12217, 0x00008454 }, /* GL_FOG_COORD_ARRAY_TYPE */ + { 12241, 0x00008450 }, /* GL_FOG_COORD_SRC */ + { 12258, 0x00000B62 }, /* GL_FOG_DENSITY */ + { 12273, 0x0000855A }, /* GL_FOG_DISTANCE_MODE_NV */ + { 12297, 0x00000B64 }, /* GL_FOG_END */ + { 12308, 0x00000C54 }, /* GL_FOG_HINT */ + { 12320, 0x00000B61 }, /* GL_FOG_INDEX */ + { 12333, 0x00000B65 }, /* GL_FOG_MODE */ + { 12345, 0x00008198 }, /* GL_FOG_OFFSET_SGIX */ + { 12364, 0x00008199 }, /* GL_FOG_OFFSET_VALUE_SGIX */ + { 12389, 0x00000B63 }, /* GL_FOG_START */ + { 12402, 0x00008452 }, /* GL_FRAGMENT_DEPTH */ + { 12420, 0x00008804 }, /* GL_FRAGMENT_PROGRAM_ARB */ + { 12444, 0x00008B30 }, /* GL_FRAGMENT_SHADER */ + { 12463, 0x00008B30 }, /* GL_FRAGMENT_SHADER_ARB */ + { 12486, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ + { 12521, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES */ + { 12560, 0x00008D40 }, /* GL_FRAMEBUFFER */ + { 12575, 0x00008215 }, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ + { 12612, 0x00008214 }, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ + { 12648, 0x00008210 }, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ + { 12689, 0x00008211 }, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ + { 12730, 0x00008216 }, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ + { 12767, 0x00008213 }, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ + { 12804, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */ + { 12838, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB */ + { 12876, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ + { 12914, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */ + { 12956, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES */ + { 12998, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ + { 13036, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */ + { 13078, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES */ + { 13120, 0x00008212 }, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ + { 13155, 0x00008217 }, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ + { 13194, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */ + { 13243, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES */ + { 13292, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ + { 13340, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */ + { 13392, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES */ + { 13444, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ + { 13484, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */ + { 13528, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ + { 13568, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */ + { 13612, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES */ + { 13656, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING */ + { 13679, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_EXT */ + { 13706, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_OES */ + { 13733, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE */ + { 13757, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_EXT */ + { 13785, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_OES */ + { 13813, 0x00008218 }, /* GL_FRAMEBUFFER_DEFAULT */ + { 13836, 0x00008D40 }, /* GL_FRAMEBUFFER_EXT */ + { 13855, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ + { 13892, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */ + { 13933, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES */ + { 13974, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS */ + { 14011, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ + { 14052, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES */ + { 14093, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ + { 14131, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */ + { 14173, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES */ + { 14215, 0x00008CD8 }, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ + { 14266, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ + { 14304, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES */ + { 14342, 0x00008DA9 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */ + { 14384, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */ + { 14424, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB */ + { 14468, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ + { 14513, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */ + { 14562, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES */ + { 14611, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ + { 14649, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT */ + { 14691, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ + { 14729, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */ + { 14771, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES */ + { 14813, 0x00008D40 }, /* GL_FRAMEBUFFER_OES */ + { 14832, 0x00008CDE }, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ + { 14864, 0x00008219 }, /* GL_FRAMEBUFFER_UNDEFINED */ + { 14889, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED */ + { 14916, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */ + { 14947, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_OES */ + { 14978, 0x00000404 }, /* GL_FRONT */ + { 14987, 0x00000408 }, /* GL_FRONT_AND_BACK */ + { 15005, 0x00000B46 }, /* GL_FRONT_FACE */ + { 15019, 0x00000400 }, /* GL_FRONT_LEFT */ + { 15033, 0x00000401 }, /* GL_FRONT_RIGHT */ + { 15048, 0x00008006 }, /* GL_FUNC_ADD */ + { 15060, 0x00008006 }, /* GL_FUNC_ADD_EXT */ + { 15076, 0x00008006 }, /* GL_FUNC_ADD_OES */ + { 15092, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT */ + { 15117, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_EXT */ + { 15146, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_OES */ + { 15175, 0x0000800A }, /* GL_FUNC_SUBTRACT */ + { 15192, 0x0000800A }, /* GL_FUNC_SUBTRACT_EXT */ + { 15213, 0x0000800A }, /* GL_FUNC_SUBTRACT_OES */ + { 15234, 0x00008191 }, /* GL_GENERATE_MIPMAP */ + { 15253, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT */ + { 15277, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT_SGIS */ + { 15306, 0x00008191 }, /* GL_GENERATE_MIPMAP_SGIS */ + { 15330, 0x00008917 }, /* GL_GEOMETRY_INPUT_TYPE */ + { 15353, 0x00008DDB }, /* GL_GEOMETRY_INPUT_TYPE_ARB */ + { 15380, 0x00008918 }, /* GL_GEOMETRY_OUTPUT_TYPE */ + { 15404, 0x00008DDC }, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */ + { 15432, 0x00008DD9 }, /* GL_GEOMETRY_SHADER */ + { 15451, 0x00008DD9 }, /* GL_GEOMETRY_SHADER_ARB */ + { 15474, 0x00008916 }, /* GL_GEOMETRY_VERTICES_OUT */ + { 15499, 0x00008DDA }, /* GL_GEOMETRY_VERTICES_OUT_ARB */ + { 15528, 0x00000206 }, /* GL_GEQUAL */ + { 15538, 0x00000204 }, /* GL_GREATER */ + { 15549, 0x00001904 }, /* GL_GREEN */ + { 15558, 0x00000D19 }, /* GL_GREEN_BIAS */ + { 15572, 0x00000D53 }, /* GL_GREEN_BITS */ + { 15586, 0x00008D95 }, /* GL_GREEN_INTEGER */ + { 15603, 0x00008D95 }, /* GL_GREEN_INTEGER_EXT */ + { 15624, 0x00000D18 }, /* GL_GREEN_SCALE */ + { 15639, 0x00008253 }, /* GL_GUILTY_CONTEXT_RESET_ARB */ + { 15667, 0x0000140B }, /* GL_HALF_FLOAT */ + { 15681, 0x00008D61 }, /* GL_HALF_FLOAT_OES */ + { 15699, 0x00008DF2 }, /* GL_HIGH_FLOAT */ + { 15713, 0x00008DF5 }, /* GL_HIGH_INT */ + { 15725, 0x00008000 }, /* GL_HINT_BIT */ + { 15737, 0x00008024 }, /* GL_HISTOGRAM */ + { 15750, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE */ + { 15774, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE_EXT */ + { 15802, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE */ + { 15825, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE_EXT */ + { 15852, 0x00008024 }, /* GL_HISTOGRAM_EXT */ + { 15869, 0x00008027 }, /* GL_HISTOGRAM_FORMAT */ + { 15889, 0x00008027 }, /* GL_HISTOGRAM_FORMAT_EXT */ + { 15913, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE */ + { 15937, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE_EXT */ + { 15965, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE */ + { 15993, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE_EXT */ + { 16025, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE */ + { 16047, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE_EXT */ + { 16073, 0x0000802D }, /* GL_HISTOGRAM_SINK */ + { 16091, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */ + { 16113, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */ + { 16132, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */ + { 16155, 0x0000862A }, /* GL_IDENTITY_NV */ + { 16170, 0x00008150 }, /* GL_IGNORE_BORDER_HP */ + { 16190, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */ + { 16226, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */ + { 16266, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */ + { 16300, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */ + { 16338, 0x00001E02 }, /* GL_INCR */ + { 16346, 0x00008507 }, /* GL_INCR_WRAP */ + { 16359, 0x00008507 }, /* GL_INCR_WRAP_EXT */ + { 16376, 0x00008222 }, /* GL_INDEX */ + { 16385, 0x00008077 }, /* GL_INDEX_ARRAY */ + { 16400, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */ + { 16430, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */ + { 16464, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */ + { 16487, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */ + { 16509, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */ + { 16529, 0x00000D51 }, /* GL_INDEX_BITS */ + { 16543, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */ + { 16564, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */ + { 16582, 0x00000C30 }, /* GL_INDEX_MODE */ + { 16596, 0x00000D13 }, /* GL_INDEX_OFFSET */ + { 16612, 0x00000D12 }, /* GL_INDEX_SHIFT */ + { 16627, 0x00000C21 }, /* GL_INDEX_WRITEMASK */ + { 16646, 0x00008B84 }, /* GL_INFO_LOG_LENGTH */ + { 16665, 0x00008254 }, /* GL_INNOCENT_CONTEXT_RESET_ARB */ + { 16695, 0x00001404 }, /* GL_INT */ + { 16702, 0x00008049 }, /* GL_INTENSITY */ + { 16715, 0x0000804C }, /* GL_INTENSITY12 */ + { 16730, 0x0000804C }, /* GL_INTENSITY12_EXT */ + { 16749, 0x0000804D }, /* GL_INTENSITY16 */ + { 16764, 0x00008D8B }, /* GL_INTENSITY16I_EXT */ + { 16784, 0x00008D79 }, /* GL_INTENSITY16UI_EXT */ + { 16805, 0x0000804D }, /* GL_INTENSITY16_EXT */ + { 16824, 0x00008D85 }, /* GL_INTENSITY32I_EXT */ + { 16844, 0x00008D73 }, /* GL_INTENSITY32UI_EXT */ + { 16865, 0x0000804A }, /* GL_INTENSITY4 */ + { 16879, 0x0000804A }, /* GL_INTENSITY4_EXT */ + { 16897, 0x0000804B }, /* GL_INTENSITY8 */ + { 16911, 0x00008D91 }, /* GL_INTENSITY8I_EXT */ + { 16930, 0x00008D7F }, /* GL_INTENSITY8UI_EXT */ + { 16950, 0x0000804B }, /* GL_INTENSITY8_EXT */ + { 16968, 0x00008049 }, /* GL_INTENSITY_EXT */ + { 16985, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS */ + { 17008, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS_EXT */ + { 17035, 0x00008575 }, /* GL_INTERPOLATE */ + { 17050, 0x00008575 }, /* GL_INTERPOLATE_ARB */ + { 17069, 0x00008575 }, /* GL_INTERPOLATE_EXT */ + { 17088, 0x00008DF7 }, /* GL_INT_10_10_10_2_OES */ + { 17110, 0x00008D9F }, /* GL_INT_2_10_10_10_REV */ + { 17132, 0x00008DC9 }, /* GL_INT_SAMPLER_1D */ + { 17150, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY */ + { 17174, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY_EXT */ + { 17202, 0x00008DC9 }, /* GL_INT_SAMPLER_1D_EXT */ + { 17224, 0x00008DCA }, /* GL_INT_SAMPLER_2D */ + { 17242, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY */ + { 17266, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY_EXT */ + { 17294, 0x00008DCA }, /* GL_INT_SAMPLER_2D_EXT */ + { 17316, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT */ + { 17339, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT_EXT */ + { 17366, 0x00008DCB }, /* GL_INT_SAMPLER_3D */ + { 17384, 0x00008DCB }, /* GL_INT_SAMPLER_3D_EXT */ + { 17406, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER */ + { 17428, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER_EXT */ + { 17454, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE */ + { 17474, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE_EXT */ + { 17498, 0x00008B53 }, /* GL_INT_VEC2 */ + { 17510, 0x00008B53 }, /* GL_INT_VEC2_ARB */ + { 17526, 0x00008B54 }, /* GL_INT_VEC3 */ + { 17538, 0x00008B54 }, /* GL_INT_VEC3_ARB */ + { 17554, 0x00008B55 }, /* GL_INT_VEC4 */ + { 17566, 0x00008B55 }, /* GL_INT_VEC4_ARB */ + { 17582, 0x00000500 }, /* GL_INVALID_ENUM */ + { 17598, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION */ + { 17631, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */ + { 17668, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_OES */ + { 17705, 0x00000502 }, /* GL_INVALID_OPERATION */ + { 17726, 0x00000501 }, /* GL_INVALID_VALUE */ + { 17743, 0x0000862B }, /* GL_INVERSE_NV */ + { 17757, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */ + { 17781, 0x0000150A }, /* GL_INVERT */ + { 17791, 0x00001E00 }, /* GL_KEEP */ + { 17799, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION */ + { 17825, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION_EXT */ + { 17855, 0x00000406 }, /* GL_LEFT */ + { 17863, 0x00000203 }, /* GL_LEQUAL */ + { 17873, 0x00000201 }, /* GL_LESS */ + { 17881, 0x00004000 }, /* GL_LIGHT0 */ + { 17891, 0x00004001 }, /* GL_LIGHT1 */ + { 17901, 0x00004002 }, /* GL_LIGHT2 */ + { 17911, 0x00004003 }, /* GL_LIGHT3 */ + { 17921, 0x00004004 }, /* GL_LIGHT4 */ + { 17931, 0x00004005 }, /* GL_LIGHT5 */ + { 17941, 0x00004006 }, /* GL_LIGHT6 */ + { 17951, 0x00004007 }, /* GL_LIGHT7 */ + { 17961, 0x00000B50 }, /* GL_LIGHTING */ + { 17973, 0x00000040 }, /* GL_LIGHTING_BIT */ + { 17989, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */ + { 18012, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */ + { 18041, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */ + { 18074, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ + { 18102, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */ + { 18126, 0x00001B01 }, /* GL_LINE */ + { 18134, 0x00002601 }, /* GL_LINEAR */ + { 18144, 0x00001208 }, /* GL_LINEAR_ATTENUATION */ + { 18166, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ + { 18196, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ + { 18227, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */ + { 18251, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */ + { 18276, 0x00000001 }, /* GL_LINES */ + { 18285, 0x0000000A }, /* GL_LINES_ADJACENCY */ + { 18304, 0x0000000A }, /* GL_LINES_ADJACENCY_ARB */ + { 18327, 0x00000004 }, /* GL_LINE_BIT */ + { 18339, 0x00000002 }, /* GL_LINE_LOOP */ + { 18352, 0x00000707 }, /* GL_LINE_RESET_TOKEN */ + { 18372, 0x00000B20 }, /* GL_LINE_SMOOTH */ + { 18387, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */ + { 18407, 0x00000B24 }, /* GL_LINE_STIPPLE */ + { 18423, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */ + { 18447, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */ + { 18470, 0x00000003 }, /* GL_LINE_STRIP */ + { 18484, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY */ + { 18508, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY_ARB */ + { 18536, 0x00000702 }, /* GL_LINE_TOKEN */ + { 18550, 0x00000B21 }, /* GL_LINE_WIDTH */ + { 18564, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */ + { 18590, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */ + { 18610, 0x00008B82 }, /* GL_LINK_STATUS */ + { 18625, 0x00000B32 }, /* GL_LIST_BASE */ + { 18638, 0x00020000 }, /* GL_LIST_BIT */ + { 18650, 0x00000B33 }, /* GL_LIST_INDEX */ + { 18664, 0x00000B30 }, /* GL_LIST_MODE */ + { 18677, 0x00000101 }, /* GL_LOAD */ + { 18685, 0x00000BF1 }, /* GL_LOGIC_OP */ + { 18697, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */ + { 18714, 0x00008252 }, /* GL_LOSE_CONTEXT_ON_RESET_ARB */ + { 18743, 0x00008CA1 }, /* GL_LOWER_LEFT */ + { 18757, 0x00008DF0 }, /* GL_LOW_FLOAT */ + { 18770, 0x00008DF3 }, /* GL_LOW_INT */ + { 18781, 0x00001909 }, /* GL_LUMINANCE */ + { 18794, 0x00008041 }, /* GL_LUMINANCE12 */ + { 18809, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */ + { 18832, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */ + { 18859, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */ + { 18881, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */ + { 18907, 0x00008041 }, /* GL_LUMINANCE12_EXT */ + { 18926, 0x00008042 }, /* GL_LUMINANCE16 */ + { 18941, 0x00008D8C }, /* GL_LUMINANCE16I_EXT */ + { 18961, 0x00008D7A }, /* GL_LUMINANCE16UI_EXT */ + { 18982, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */ + { 19005, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */ + { 19032, 0x00008042 }, /* GL_LUMINANCE16_EXT */ + { 19051, 0x00008D86 }, /* GL_LUMINANCE32I_EXT */ + { 19071, 0x00008D74 }, /* GL_LUMINANCE32UI_EXT */ + { 19092, 0x0000803F }, /* GL_LUMINANCE4 */ + { 19106, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */ + { 19127, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */ + { 19152, 0x0000803F }, /* GL_LUMINANCE4_EXT */ + { 19170, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */ + { 19191, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */ + { 19216, 0x00008040 }, /* GL_LUMINANCE8 */ + { 19230, 0x00008D92 }, /* GL_LUMINANCE8I_EXT */ + { 19249, 0x00008D80 }, /* GL_LUMINANCE8UI_EXT */ + { 19269, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */ + { 19290, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */ + { 19315, 0x00008040 }, /* GL_LUMINANCE8_EXT */ + { 19333, 0x0000190A }, /* GL_LUMINANCE_ALPHA */ + { 19352, 0x00008D8D }, /* GL_LUMINANCE_ALPHA16I_EXT */ + { 19378, 0x00008D7B }, /* GL_LUMINANCE_ALPHA16UI_EXT */ + { 19405, 0x00008D87 }, /* GL_LUMINANCE_ALPHA32I_EXT */ + { 19431, 0x00008D75 }, /* GL_LUMINANCE_ALPHA32UI_EXT */ + { 19458, 0x00008D93 }, /* GL_LUMINANCE_ALPHA8I_EXT */ + { 19483, 0x00008D81 }, /* GL_LUMINANCE_ALPHA8UI_EXT */ + { 19509, 0x00008D9D }, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */ + { 19540, 0x00008D9C }, /* GL_LUMINANCE_INTEGER_EXT */ + { 19565, 0x0000821B }, /* GL_MAJOR_VERSION */ + { 19582, 0x00000D90 }, /* GL_MAP1_COLOR_4 */ + { 19598, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */ + { 19618, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */ + { 19640, 0x00000D91 }, /* GL_MAP1_INDEX */ + { 19654, 0x00000D92 }, /* GL_MAP1_NORMAL */ + { 19669, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */ + { 19693, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */ + { 19717, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */ + { 19741, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */ + { 19765, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */ + { 19782, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */ + { 19799, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ + { 19827, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ + { 19856, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ + { 19885, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ + { 19914, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ + { 19943, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ + { 19972, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ + { 20001, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ + { 20029, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ + { 20057, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ + { 20085, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ + { 20113, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ + { 20141, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ + { 20169, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ + { 20197, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ + { 20225, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ + { 20253, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */ + { 20269, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */ + { 20289, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */ + { 20311, 0x00000DB1 }, /* GL_MAP2_INDEX */ + { 20325, 0x00000DB2 }, /* GL_MAP2_NORMAL */ + { 20340, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */ + { 20364, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */ + { 20388, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */ + { 20412, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */ + { 20436, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */ + { 20453, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */ + { 20470, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ + { 20498, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ + { 20527, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ + { 20556, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ + { 20585, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ + { 20614, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ + { 20643, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ + { 20672, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ + { 20700, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ + { 20728, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ + { 20756, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ + { 20784, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ + { 20812, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ + { 20840, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */ + { 20868, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ + { 20896, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ + { 20924, 0x00000D10 }, /* GL_MAP_COLOR */ + { 20937, 0x00000010 }, /* GL_MAP_FLUSH_EXPLICIT_BIT */ + { 20963, 0x00000008 }, /* GL_MAP_INVALIDATE_BUFFER_BIT */ + { 20992, 0x00000004 }, /* GL_MAP_INVALIDATE_RANGE_BIT */ + { 21020, 0x00000001 }, /* GL_MAP_READ_BIT */ + { 21036, 0x00000D11 }, /* GL_MAP_STENCIL */ + { 21051, 0x00000020 }, /* GL_MAP_UNSYNCHRONIZED_BIT */ + { 21077, 0x00000002 }, /* GL_MAP_WRITE_BIT */ + { 21094, 0x000088C0 }, /* GL_MATRIX0_ARB */ + { 21109, 0x00008630 }, /* GL_MATRIX0_NV */ + { 21123, 0x000088CA }, /* GL_MATRIX10_ARB */ + { 21139, 0x000088CB }, /* GL_MATRIX11_ARB */ + { 21155, 0x000088CC }, /* GL_MATRIX12_ARB */ + { 21171, 0x000088CD }, /* GL_MATRIX13_ARB */ + { 21187, 0x000088CE }, /* GL_MATRIX14_ARB */ + { 21203, 0x000088CF }, /* GL_MATRIX15_ARB */ + { 21219, 0x000088D0 }, /* GL_MATRIX16_ARB */ + { 21235, 0x000088D1 }, /* GL_MATRIX17_ARB */ + { 21251, 0x000088D2 }, /* GL_MATRIX18_ARB */ + { 21267, 0x000088D3 }, /* GL_MATRIX19_ARB */ + { 21283, 0x000088C1 }, /* GL_MATRIX1_ARB */ + { 21298, 0x00008631 }, /* GL_MATRIX1_NV */ + { 21312, 0x000088D4 }, /* GL_MATRIX20_ARB */ + { 21328, 0x000088D5 }, /* GL_MATRIX21_ARB */ + { 21344, 0x000088D6 }, /* GL_MATRIX22_ARB */ + { 21360, 0x000088D7 }, /* GL_MATRIX23_ARB */ + { 21376, 0x000088D8 }, /* GL_MATRIX24_ARB */ + { 21392, 0x000088D9 }, /* GL_MATRIX25_ARB */ + { 21408, 0x000088DA }, /* GL_MATRIX26_ARB */ + { 21424, 0x000088DB }, /* GL_MATRIX27_ARB */ + { 21440, 0x000088DC }, /* GL_MATRIX28_ARB */ + { 21456, 0x000088DD }, /* GL_MATRIX29_ARB */ + { 21472, 0x000088C2 }, /* GL_MATRIX2_ARB */ + { 21487, 0x00008632 }, /* GL_MATRIX2_NV */ + { 21501, 0x000088DE }, /* GL_MATRIX30_ARB */ + { 21517, 0x000088DF }, /* GL_MATRIX31_ARB */ + { 21533, 0x000088C3 }, /* GL_MATRIX3_ARB */ + { 21548, 0x00008633 }, /* GL_MATRIX3_NV */ + { 21562, 0x000088C4 }, /* GL_MATRIX4_ARB */ + { 21577, 0x00008634 }, /* GL_MATRIX4_NV */ + { 21591, 0x000088C5 }, /* GL_MATRIX5_ARB */ + { 21606, 0x00008635 }, /* GL_MATRIX5_NV */ + { 21620, 0x000088C6 }, /* GL_MATRIX6_ARB */ + { 21635, 0x00008636 }, /* GL_MATRIX6_NV */ + { 21649, 0x000088C7 }, /* GL_MATRIX7_ARB */ + { 21664, 0x00008637 }, /* GL_MATRIX7_NV */ + { 21678, 0x000088C8 }, /* GL_MATRIX8_ARB */ + { 21693, 0x000088C9 }, /* GL_MATRIX9_ARB */ + { 21708, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */ + { 21734, 0x00008B9E }, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */ + { 21775, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_OES */ + { 21801, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ + { 21835, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_OES */ + { 21869, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ + { 21900, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_OES */ + { 21931, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ + { 21964, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_OES */ + { 21997, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ + { 22028, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_OES */ + { 22059, 0x00000BA0 }, /* GL_MATRIX_MODE */ + { 22074, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */ + { 22096, 0x00008840 }, /* GL_MATRIX_PALETTE_OES */ + { 22118, 0x00008008 }, /* GL_MAX */ + { 22125, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */ + { 22148, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE_OES */ + { 22175, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS */ + { 22203, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */ + { 22235, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */ + { 22261, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ + { 22294, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ + { 22320, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + { 22354, 0x00000D32 }, /* GL_MAX_CLIP_DISTANCES */ + { 22376, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */ + { 22395, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS */ + { 22420, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */ + { 22449, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ + { 22481, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */ + { 22517, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ + { 22553, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */ + { 22593, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */ + { 22619, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */ + { 22649, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */ + { 22674, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */ + { 22703, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ + { 22732, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */ + { 22765, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES */ + { 22798, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS */ + { 22818, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */ + { 22842, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */ + { 22866, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_NV */ + { 22889, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */ + { 22913, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */ + { 22938, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */ + { 22956, 0x00008008 }, /* GL_MAX_EXT */ + { 22967, 0x00009125 }, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */ + { 23000, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ + { 23035, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */ + { 23074, 0x00008DFD }, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */ + { 23106, 0x00009123 }, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */ + { 23139, 0x00009124 }, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */ + { 23173, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */ + { 23205, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB */ + { 23241, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */ + { 23277, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB */ + { 23317, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */ + { 23357, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB */ + { 23401, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */ + { 23436, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB */ + { 23475, 0x00008DDD }, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */ + { 23514, 0x00000D31 }, /* GL_MAX_LIGHTS */ + { 23528, 0x00000B31 }, /* GL_MAX_LIST_NESTING */ + { 23548, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ + { 23586, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */ + { 23615, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */ + { 23639, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */ + { 23667, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_OES */ + { 23695, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */ + { 23718, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ + { 23755, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ + { 23791, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ + { 23818, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ + { 23847, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ + { 23881, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */ + { 23917, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ + { 23944, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ + { 23976, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ + { 24012, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ + { 24041, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ + { 24070, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */ + { 24098, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ + { 24136, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + { 24180, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + { 24223, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ + { 24257, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + { 24296, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ + { 24333, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ + { 24371, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + { 24414, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + { 24457, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ + { 24487, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ + { 24518, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET */ + { 24546, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET_EXT */ + { 24578, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ + { 24614, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ + { 24650, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */ + { 24680, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */ + { 24710, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */ + { 24744, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */ + { 24777, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE */ + { 24802, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */ + { 24831, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_OES */ + { 24860, 0x00008D57 }, /* GL_MAX_SAMPLES */ + { 24875, 0x00008D57 }, /* GL_MAX_SAMPLES_EXT */ + { 24894, 0x00009111 }, /* GL_MAX_SERVER_WAIT_TIMEOUT */ + { 24921, 0x00008504 }, /* GL_MAX_SHININESS_NV */ + { 24941, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */ + { 24965, 0x00008C2B }, /* GL_MAX_TEXTURE_BUFFER_SIZE */ + { 24992, 0x00008C2B }, /* GL_MAX_TEXTURE_BUFFER_SIZE_ARB */ + { 25023, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS */ + { 25045, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */ + { 25071, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS */ + { 25098, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */ + { 25129, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */ + { 25153, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS_EXT */ + { 25181, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ + { 25215, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */ + { 25235, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */ + { 25262, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */ + { 25283, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */ + { 25308, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */ + { 25333, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */ + { 25368, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */ + { 25417, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */ + { 25470, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */ + { 25513, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */ + { 25560, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */ + { 25606, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */ + { 25656, 0x00008B4B }, /* GL_MAX_VARYING_COMPONENTS */ + { 25682, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS */ + { 25704, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */ + { 25730, 0x00008DFC }, /* GL_MAX_VARYING_VECTORS */ + { 25753, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS */ + { 25775, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */ + { 25801, 0x00009122 }, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */ + { 25833, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ + { 25867, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */ + { 25905, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ + { 25938, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */ + { 25975, 0x00008DFB }, /* GL_MAX_VERTEX_UNIFORM_VECTORS */ + { 26005, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */ + { 26029, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_OES */ + { 26053, 0x00008DDE }, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */ + { 26090, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */ + { 26111, 0x00008DF1 }, /* GL_MEDIUM_FLOAT */ + { 26127, 0x00008DF4 }, /* GL_MEDIUM_INT */ + { 26141, 0x00008007 }, /* GL_MIN */ + { 26148, 0x0000802E }, /* GL_MINMAX */ + { 26158, 0x0000802E }, /* GL_MINMAX_EXT */ + { 26172, 0x0000802F }, /* GL_MINMAX_FORMAT */ + { 26189, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */ + { 26210, 0x00008030 }, /* GL_MINMAX_SINK */ + { 26225, 0x00008030 }, /* GL_MINMAX_SINK_EXT */ + { 26244, 0x0000821C }, /* GL_MINOR_VERSION */ + { 26261, 0x00008007 }, /* GL_MIN_EXT */ + { 26272, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET */ + { 26300, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET_EXT */ + { 26332, 0x00008370 }, /* GL_MIRRORED_REPEAT */ + { 26351, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */ + { 26374, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */ + { 26397, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */ + { 26417, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */ + { 26437, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ + { 26467, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */ + { 26495, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ + { 26523, 0x00001700 }, /* GL_MODELVIEW */ + { 26536, 0x00001700 }, /* GL_MODELVIEW0_ARB */ + { 26554, 0x0000872A }, /* GL_MODELVIEW10_ARB */ + { 26573, 0x0000872B }, /* GL_MODELVIEW11_ARB */ + { 26592, 0x0000872C }, /* GL_MODELVIEW12_ARB */ + { 26611, 0x0000872D }, /* GL_MODELVIEW13_ARB */ + { 26630, 0x0000872E }, /* GL_MODELVIEW14_ARB */ + { 26649, 0x0000872F }, /* GL_MODELVIEW15_ARB */ + { 26668, 0x00008730 }, /* GL_MODELVIEW16_ARB */ + { 26687, 0x00008731 }, /* GL_MODELVIEW17_ARB */ + { 26706, 0x00008732 }, /* GL_MODELVIEW18_ARB */ + { 26725, 0x00008733 }, /* GL_MODELVIEW19_ARB */ + { 26744, 0x0000850A }, /* GL_MODELVIEW1_ARB */ + { 26762, 0x00008734 }, /* GL_MODELVIEW20_ARB */ + { 26781, 0x00008735 }, /* GL_MODELVIEW21_ARB */ + { 26800, 0x00008736 }, /* GL_MODELVIEW22_ARB */ + { 26819, 0x00008737 }, /* GL_MODELVIEW23_ARB */ + { 26838, 0x00008738 }, /* GL_MODELVIEW24_ARB */ + { 26857, 0x00008739 }, /* GL_MODELVIEW25_ARB */ + { 26876, 0x0000873A }, /* GL_MODELVIEW26_ARB */ + { 26895, 0x0000873B }, /* GL_MODELVIEW27_ARB */ + { 26914, 0x0000873C }, /* GL_MODELVIEW28_ARB */ + { 26933, 0x0000873D }, /* GL_MODELVIEW29_ARB */ + { 26952, 0x00008722 }, /* GL_MODELVIEW2_ARB */ + { 26970, 0x0000873E }, /* GL_MODELVIEW30_ARB */ + { 26989, 0x0000873F }, /* GL_MODELVIEW31_ARB */ + { 27008, 0x00008723 }, /* GL_MODELVIEW3_ARB */ + { 27026, 0x00008724 }, /* GL_MODELVIEW4_ARB */ + { 27044, 0x00008725 }, /* GL_MODELVIEW5_ARB */ + { 27062, 0x00008726 }, /* GL_MODELVIEW6_ARB */ + { 27080, 0x00008727 }, /* GL_MODELVIEW7_ARB */ + { 27098, 0x00008728 }, /* GL_MODELVIEW8_ARB */ + { 27116, 0x00008729 }, /* GL_MODELVIEW9_ARB */ + { 27134, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */ + { 27154, 0x0000898D }, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */ + { 27196, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */ + { 27223, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */ + { 27248, 0x00002100 }, /* GL_MODULATE */ + { 27260, 0x00008744 }, /* GL_MODULATE_ADD_ATI */ + { 27280, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */ + { 27307, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */ + { 27332, 0x00000103 }, /* GL_MULT */ + { 27340, 0x0000809D }, /* GL_MULTISAMPLE */ + { 27355, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */ + { 27375, 0x0000809D }, /* GL_MULTISAMPLE_ARB */ + { 27394, 0x20000000 }, /* GL_MULTISAMPLE_BIT */ + { 27413, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */ + { 27437, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */ + { 27460, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */ + { 27490, 0x00002A25 }, /* GL_N3F_V3F */ + { 27501, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */ + { 27521, 0x0000150E }, /* GL_NAND */ + { 27529, 0x00002600 }, /* GL_NEAREST */ + { 27540, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ + { 27571, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ + { 27603, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */ + { 27628, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */ + { 27654, 0x00000200 }, /* GL_NEVER */ + { 27663, 0x00001102 }, /* GL_NICEST */ + { 27673, 0x00000000 }, /* GL_NONE */ + { 27681, 0x00000000 }, /* GL_NONE_OES */ + { 27693, 0x00001505 }, /* GL_NOOP */ + { 27701, 0x00001508 }, /* GL_NOR */ + { 27708, 0x00000BA1 }, /* GL_NORMALIZE */ + { 27721, 0x00008075 }, /* GL_NORMAL_ARRAY */ + { 27737, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ + { 27768, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */ + { 27803, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */ + { 27827, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */ + { 27850, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */ + { 27871, 0x00008511 }, /* GL_NORMAL_MAP */ + { 27885, 0x00008511 }, /* GL_NORMAL_MAP_ARB */ + { 27903, 0x00008511 }, /* GL_NORMAL_MAP_NV */ + { 27920, 0x00008511 }, /* GL_NORMAL_MAP_OES */ + { 27938, 0x00000205 }, /* GL_NOTEQUAL */ + { 27950, 0x00000000 }, /* GL_NO_ERROR */ + { 27962, 0x00008261 }, /* GL_NO_RESET_NOTIFICATION_ARB */ + { 27991, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ + { 28025, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB */ + { 28063, 0x0000821D }, /* GL_NUM_EXTENSIONS */ + { 28081, 0x000087FE }, /* GL_NUM_PROGRAM_BINARY_FORMATS */ + { 28111, 0x000087FE }, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */ + { 28145, 0x00008DF9 }, /* GL_NUM_SHADER_BINARY_FORMATS */ + { 28174, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */ + { 28206, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */ + { 28248, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */ + { 28278, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */ + { 28318, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */ + { 28349, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */ + { 28378, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */ + { 28406, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */ + { 28436, 0x00002401 }, /* GL_OBJECT_LINEAR */ + { 28453, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */ + { 28479, 0x00002501 }, /* GL_OBJECT_PLANE */ + { 28495, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */ + { 28530, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */ + { 28552, 0x00009112 }, /* GL_OBJECT_TYPE */ + { 28567, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */ + { 28586, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */ + { 28616, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */ + { 28637, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */ + { 28665, 0x00000001 }, /* GL_ONE */ + { 28672, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */ + { 28700, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */ + { 28732, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */ + { 28760, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */ + { 28792, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */ + { 28815, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */ + { 28838, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */ + { 28861, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */ + { 28884, 0x00008598 }, /* GL_OPERAND0_ALPHA */ + { 28902, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */ + { 28924, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */ + { 28946, 0x00008590 }, /* GL_OPERAND0_RGB */ + { 28962, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */ + { 28982, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */ + { 29002, 0x00008599 }, /* GL_OPERAND1_ALPHA */ + { 29020, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */ + { 29042, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */ + { 29064, 0x00008591 }, /* GL_OPERAND1_RGB */ + { 29080, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */ + { 29100, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */ + { 29120, 0x0000859A }, /* GL_OPERAND2_ALPHA */ + { 29138, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */ + { 29160, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */ + { 29182, 0x00008592 }, /* GL_OPERAND2_RGB */ + { 29198, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */ + { 29218, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */ + { 29238, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */ + { 29259, 0x00008593 }, /* GL_OPERAND3_RGB_NV */ + { 29278, 0x00001507 }, /* GL_OR */ + { 29284, 0x00000A01 }, /* GL_ORDER */ + { 29293, 0x0000150D }, /* GL_OR_INVERTED */ + { 29308, 0x0000150B }, /* GL_OR_REVERSE */ + { 29322, 0x00000505 }, /* GL_OUT_OF_MEMORY */ + { 29339, 0x00000D05 }, /* GL_PACK_ALIGNMENT */ + { 29357, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */ + { 29378, 0x00008758 }, /* GL_PACK_INVERT_MESA */ + { 29398, 0x00000D01 }, /* GL_PACK_LSB_FIRST */ + { 29416, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */ + { 29435, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */ + { 29455, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */ + { 29475, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */ + { 29493, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */ + { 29512, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */ + { 29537, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */ + { 29561, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */ + { 29582, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */ + { 29604, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */ + { 29626, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */ + { 29651, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */ + { 29675, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */ + { 29696, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */ + { 29718, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */ + { 29740, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */ + { 29762, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */ + { 29793, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */ + { 29813, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */ + { 29838, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */ + { 29858, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */ + { 29883, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */ + { 29903, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */ + { 29928, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */ + { 29948, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */ + { 29973, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */ + { 29993, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */ + { 30018, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */ + { 30038, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */ + { 30063, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */ + { 30083, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */ + { 30108, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */ + { 30128, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */ + { 30153, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */ + { 30173, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */ + { 30198, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */ + { 30218, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */ + { 30243, 0x00000020 }, /* GL_PIXEL_MODE_BIT */ + { 30261, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER */ + { 30282, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING */ + { 30311, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */ + { 30344, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */ + { 30369, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER */ + { 30392, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING */ + { 30423, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */ + { 30458, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */ + { 30485, 0x00001B00 }, /* GL_POINT */ + { 30494, 0x00000000 }, /* GL_POINTS */ + { 30504, 0x00000002 }, /* GL_POINT_BIT */ + { 30517, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */ + { 30547, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */ + { 30581, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */ + { 30615, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */ + { 30650, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */ + { 30679, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */ + { 30712, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */ + { 30745, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */ + { 30779, 0x00000B11 }, /* GL_POINT_SIZE */ + { 30793, 0x00008B9F }, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */ + { 30832, 0x00008B9C }, /* GL_POINT_SIZE_ARRAY_OES */ + { 30856, 0x0000898C }, /* GL_POINT_SIZE_ARRAY_POINTER_OES */ + { 30888, 0x0000898B }, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */ + { 30919, 0x0000898A }, /* GL_POINT_SIZE_ARRAY_TYPE_OES */ + { 30948, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */ + { 30974, 0x00008127 }, /* GL_POINT_SIZE_MAX */ + { 30992, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */ + { 31014, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */ + { 31036, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */ + { 31059, 0x00008126 }, /* GL_POINT_SIZE_MIN */ + { 31077, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */ + { 31099, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */ + { 31121, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */ + { 31144, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */ + { 31164, 0x00000B10 }, /* GL_POINT_SMOOTH */ + { 31180, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */ + { 31201, 0x00008861 }, /* GL_POINT_SPRITE */ + { 31217, 0x00008861 }, /* GL_POINT_SPRITE_ARB */ + { 31237, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */ + { 31266, 0x00008861 }, /* GL_POINT_SPRITE_NV */ + { 31285, 0x00008861 }, /* GL_POINT_SPRITE_OES */ + { 31305, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */ + { 31331, 0x00000701 }, /* GL_POINT_TOKEN */ + { 31346, 0x00000009 }, /* GL_POLYGON */ + { 31357, 0x00000008 }, /* GL_POLYGON_BIT */ + { 31372, 0x00000B40 }, /* GL_POLYGON_MODE */ + { 31388, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */ + { 31411, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */ + { 31436, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */ + { 31459, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */ + { 31482, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */ + { 31506, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */ + { 31530, 0x00000B41 }, /* GL_POLYGON_SMOOTH */ + { 31548, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */ + { 31571, 0x00000B42 }, /* GL_POLYGON_STIPPLE */ + { 31590, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */ + { 31613, 0x00000703 }, /* GL_POLYGON_TOKEN */ + { 31630, 0x00001203 }, /* GL_POSITION */ + { 31642, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ + { 31674, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */ + { 31710, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ + { 31743, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */ + { 31780, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ + { 31811, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */ + { 31846, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ + { 31878, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */ + { 31914, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ + { 31947, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ + { 31979, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */ + { 32015, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ + { 32048, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */ + { 32085, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */ + { 32115, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */ + { 32149, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */ + { 32180, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */ + { 32215, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ + { 32246, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */ + { 32281, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ + { 32313, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */ + { 32349, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */ + { 32379, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */ + { 32413, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */ + { 32444, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */ + { 32479, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */ + { 32511, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */ + { 32542, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */ + { 32577, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */ + { 32609, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */ + { 32645, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */ + { 32674, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */ + { 32707, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */ + { 32737, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */ + { 32771, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ + { 32810, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ + { 32843, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ + { 32883, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ + { 32917, 0x00008578 }, /* GL_PREVIOUS */ + { 32929, 0x00008578 }, /* GL_PREVIOUS_ARB */ + { 32945, 0x00008578 }, /* GL_PREVIOUS_EXT */ + { 32961, 0x00008577 }, /* GL_PRIMARY_COLOR */ + { 32978, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */ + { 32999, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */ + { 33020, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED */ + { 33044, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED_EXT */ + { 33072, 0x00008F9D }, /* GL_PRIMITIVE_RESTART */ + { 33093, 0x00008F9E }, /* GL_PRIMITIVE_RESTART_INDEX */ + { 33120, 0x00008559 }, /* GL_PRIMITIVE_RESTART_INDEX_NV */ + { 33150, 0x00008558 }, /* GL_PRIMITIVE_RESTART_NV */ + { 33174, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ + { 33207, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ + { 33239, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */ + { 33262, 0x000087FF }, /* GL_PROGRAM_BINARY_FORMATS */ + { 33288, 0x000087FF }, /* GL_PROGRAM_BINARY_FORMATS_OES */ + { 33318, 0x00008741 }, /* GL_PROGRAM_BINARY_LENGTH */ + { 33343, 0x00008741 }, /* GL_PROGRAM_BINARY_LENGTH_OES */ + { 33372, 0x00008257 }, /* GL_PROGRAM_BINARY_RETRIEVABLE_HINT */ + { 33407, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */ + { 33430, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */ + { 33460, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */ + { 33489, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */ + { 33517, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */ + { 33539, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */ + { 33567, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */ + { 33595, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */ + { 33617, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */ + { 33638, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + { 33678, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + { 33717, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ + { 33747, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + { 33782, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ + { 33815, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ + { 33849, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + { 33888, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + { 33927, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */ + { 33949, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */ + { 33975, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */ + { 33999, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE */ + { 34021, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE_ARB */ + { 34047, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */ + { 34070, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */ + { 34092, 0x00008628 }, /* GL_PROGRAM_STRING_NV */ + { 34113, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */ + { 34134, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */ + { 34161, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ + { 34193, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ + { 34225, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ + { 34260, 0x00001701 }, /* GL_PROJECTION */ + { 34274, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */ + { 34295, 0x0000898E }, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */ + { 34338, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */ + { 34364, 0x00008E4F }, /* GL_PROVOKING_VERTEX */ + { 34384, 0x00008E4F }, /* GL_PROVOKING_VERTEX_EXT */ + { 34408, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */ + { 34429, 0x00008025 }, /* GL_PROXY_HISTOGRAM */ + { 34448, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */ + { 34471, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ + { 34510, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ + { 34548, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */ + { 34568, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY */ + { 34594, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */ + { 34624, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */ + { 34648, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */ + { 34668, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY */ + { 34694, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */ + { 34724, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */ + { 34748, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */ + { 34768, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ + { 34801, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */ + { 34827, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */ + { 34857, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE */ + { 34884, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */ + { 34915, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */ + { 34945, 0x00008A1D }, /* GL_PURGEABLE_APPLE */ + { 34964, 0x00002003 }, /* GL_Q */ + { 34969, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */ + { 34994, 0x00000007 }, /* GL_QUADS */ + { 35003, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ + { 35047, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT */ + { 35095, 0x00008614 }, /* GL_QUAD_MESH_SUN */ + { 35112, 0x00000008 }, /* GL_QUAD_STRIP */ + { 35126, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT */ + { 35153, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT_NV */ + { 35183, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT */ + { 35207, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT_NV */ + { 35234, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */ + { 35256, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */ + { 35282, 0x00008E14 }, /* GL_QUERY_NO_WAIT */ + { 35299, 0x00008E14 }, /* GL_QUERY_NO_WAIT_NV */ + { 35319, 0x00008866 }, /* GL_QUERY_RESULT */ + { 35335, 0x00008866 }, /* GL_QUERY_RESULT_ARB */ + { 35355, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */ + { 35381, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */ + { 35411, 0x00008E13 }, /* GL_QUERY_WAIT */ + { 35425, 0x00008E13 }, /* GL_QUERY_WAIT_NV */ + { 35442, 0x00002002 }, /* GL_R */ + { 35447, 0x00008C3A }, /* GL_R11F_G11F_B10F */ + { 35465, 0x00008F98 }, /* GL_R16_SNORM */ + { 35478, 0x00002A10 }, /* GL_R3_G3_B2 */ + { 35490, 0x00008F94 }, /* GL_R8_SNORM */ + { 35502, 0x00008C89 }, /* GL_RASTERIZER_DISCARD */ + { 35524, 0x00008C89 }, /* GL_RASTERIZER_DISCARD_EXT */ + { 35550, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ + { 35583, 0x00000C02 }, /* GL_READ_BUFFER */ + { 35598, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER */ + { 35618, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING */ + { 35646, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */ + { 35678, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */ + { 35702, 0x000088B8 }, /* GL_READ_ONLY */ + { 35715, 0x000088B8 }, /* GL_READ_ONLY_ARB */ + { 35732, 0x000088BA }, /* GL_READ_WRITE */ + { 35746, 0x000088BA }, /* GL_READ_WRITE_ARB */ + { 35764, 0x00001903 }, /* GL_RED */ + { 35771, 0x00008016 }, /* GL_REDUCE */ + { 35781, 0x00008016 }, /* GL_REDUCE_EXT */ + { 35795, 0x00000D15 }, /* GL_RED_BIAS */ + { 35807, 0x00000D52 }, /* GL_RED_BITS */ + { 35819, 0x00008D94 }, /* GL_RED_INTEGER */ + { 35834, 0x00008D94 }, /* GL_RED_INTEGER_EXT */ + { 35853, 0x00000D14 }, /* GL_RED_SCALE */ + { 35866, 0x00008F90 }, /* GL_RED_SNORM */ + { 35879, 0x00008512 }, /* GL_REFLECTION_MAP */ + { 35897, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */ + { 35919, 0x00008512 }, /* GL_REFLECTION_MAP_NV */ + { 35940, 0x00008512 }, /* GL_REFLECTION_MAP_OES */ + { 35962, 0x00008A19 }, /* GL_RELEASED_APPLE */ + { 35980, 0x00001C00 }, /* GL_RENDER */ + { 35990, 0x00008D41 }, /* GL_RENDERBUFFER */ + { 36006, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE */ + { 36033, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE_OES */ + { 36064, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING */ + { 36088, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */ + { 36116, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_OES */ + { 36144, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE */ + { 36170, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE_OES */ + { 36200, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE */ + { 36227, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE_OES */ + { 36258, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */ + { 36278, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE */ + { 36305, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE_OES */ + { 36336, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT */ + { 36359, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */ + { 36386, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_OES */ + { 36413, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT */ + { 36445, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */ + { 36481, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_OES */ + { 36517, 0x00008D41 }, /* GL_RENDERBUFFER_OES */ + { 36537, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE */ + { 36562, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE_OES */ + { 36591, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES */ + { 36615, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES_EXT */ + { 36643, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE */ + { 36672, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE_OES */ + { 36705, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH */ + { 36727, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */ + { 36753, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_OES */ + { 36779, 0x00001F01 }, /* GL_RENDERER */ + { 36791, 0x00000C40 }, /* GL_RENDER_MODE */ + { 36806, 0x00002901 }, /* GL_REPEAT */ + { 36816, 0x00001E01 }, /* GL_REPLACE */ + { 36827, 0x00008062 }, /* GL_REPLACE_EXT */ + { 36842, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */ + { 36865, 0x0000803A }, /* GL_RESCALE_NORMAL */ + { 36883, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */ + { 36905, 0x00008256 }, /* GL_RESET_NOTIFICATION_STRATEGY_ARB */ + { 36940, 0x00008A1B }, /* GL_RETAINED_APPLE */ + { 36958, 0x00000102 }, /* GL_RETURN */ + { 36968, 0x00008F99 }, /* GL_RG16_SNORM */ + { 36982, 0x00008F95 }, /* GL_RG8_SNORM */ + { 36995, 0x00001907 }, /* GL_RGB */ + { 37002, 0x00008052 }, /* GL_RGB10 */ + { 37011, 0x00008059 }, /* GL_RGB10_A2 */ + { 37023, 0x00008059 }, /* GL_RGB10_A2_EXT */ + { 37039, 0x00008052 }, /* GL_RGB10_EXT */ + { 37052, 0x00008053 }, /* GL_RGB12 */ + { 37061, 0x00008053 }, /* GL_RGB12_EXT */ + { 37074, 0x00008054 }, /* GL_RGB16 */ + { 37083, 0x0000881B }, /* GL_RGB16F */ + { 37093, 0x00008D89 }, /* GL_RGB16I */ + { 37103, 0x00008D89 }, /* GL_RGB16I_EXT */ + { 37117, 0x00008D77 }, /* GL_RGB16UI */ + { 37128, 0x00008D77 }, /* GL_RGB16UI_EXT */ + { 37143, 0x00008054 }, /* GL_RGB16_EXT */ + { 37156, 0x00008F9A }, /* GL_RGB16_SNORM */ + { 37171, 0x0000804E }, /* GL_RGB2_EXT */ + { 37183, 0x00008815 }, /* GL_RGB32F */ + { 37193, 0x00008D83 }, /* GL_RGB32I */ + { 37203, 0x00008D83 }, /* GL_RGB32I_EXT */ + { 37217, 0x00008D71 }, /* GL_RGB32UI */ + { 37228, 0x00008D71 }, /* GL_RGB32UI_EXT */ + { 37243, 0x0000804F }, /* GL_RGB4 */ + { 37251, 0x0000804F }, /* GL_RGB4_EXT */ + { 37263, 0x000083A1 }, /* GL_RGB4_S3TC */ + { 37276, 0x00008050 }, /* GL_RGB5 */ + { 37284, 0x00008D62 }, /* GL_RGB565 */ + { 37294, 0x00008D62 }, /* GL_RGB565_OES */ + { 37308, 0x00008057 }, /* GL_RGB5_A1 */ + { 37319, 0x00008057 }, /* GL_RGB5_A1_EXT */ + { 37334, 0x00008057 }, /* GL_RGB5_A1_OES */ + { 37349, 0x00008050 }, /* GL_RGB5_EXT */ + { 37361, 0x00008051 }, /* GL_RGB8 */ + { 37369, 0x00008D8F }, /* GL_RGB8I */ + { 37378, 0x00008D8F }, /* GL_RGB8I_EXT */ + { 37391, 0x00008D7D }, /* GL_RGB8UI */ + { 37401, 0x00008D7D }, /* GL_RGB8UI_EXT */ + { 37415, 0x00008051 }, /* GL_RGB8_EXT */ + { 37427, 0x00008051 }, /* GL_RGB8_OES */ + { 37439, 0x00008F96 }, /* GL_RGB8_SNORM */ + { 37453, 0x00008C3D }, /* GL_RGB9_E5 */ + { 37464, 0x00001908 }, /* GL_RGBA */ + { 37472, 0x0000805A }, /* GL_RGBA12 */ + { 37482, 0x0000805A }, /* GL_RGBA12_EXT */ + { 37496, 0x0000805B }, /* GL_RGBA16 */ + { 37506, 0x0000881A }, /* GL_RGBA16F */ + { 37517, 0x00008D88 }, /* GL_RGBA16I */ + { 37528, 0x00008D88 }, /* GL_RGBA16I_EXT */ + { 37543, 0x00008D76 }, /* GL_RGBA16UI */ + { 37555, 0x00008D76 }, /* GL_RGBA16UI_EXT */ + { 37571, 0x0000805B }, /* GL_RGBA16_EXT */ + { 37585, 0x00008F9B }, /* GL_RGBA16_SNORM */ + { 37601, 0x00008055 }, /* GL_RGBA2 */ + { 37610, 0x00008055 }, /* GL_RGBA2_EXT */ + { 37623, 0x00008814 }, /* GL_RGBA32F */ + { 37634, 0x00008D82 }, /* GL_RGBA32I */ + { 37645, 0x00008D82 }, /* GL_RGBA32I_EXT */ + { 37660, 0x00008D70 }, /* GL_RGBA32UI */ + { 37672, 0x00008D70 }, /* GL_RGBA32UI_EXT */ + { 37688, 0x00008056 }, /* GL_RGBA4 */ + { 37697, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */ + { 37716, 0x00008056 }, /* GL_RGBA4_EXT */ + { 37729, 0x00008056 }, /* GL_RGBA4_OES */ + { 37742, 0x000083A3 }, /* GL_RGBA4_S3TC */ + { 37756, 0x00008058 }, /* GL_RGBA8 */ + { 37765, 0x00008D8E }, /* GL_RGBA8I */ + { 37775, 0x00008D8E }, /* GL_RGBA8I_EXT */ + { 37789, 0x00008D7C }, /* GL_RGBA8UI */ + { 37800, 0x00008D7C }, /* GL_RGBA8UI_EXT */ + { 37815, 0x00008058 }, /* GL_RGBA8_EXT */ + { 37828, 0x00008058 }, /* GL_RGBA8_OES */ + { 37841, 0x00008F97 }, /* GL_RGBA8_SNORM */ + { 37856, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */ + { 37874, 0x00008820 }, /* GL_RGBA_FLOAT_MODE_ARB */ + { 37897, 0x00008D99 }, /* GL_RGBA_INTEGER */ + { 37913, 0x00008D99 }, /* GL_RGBA_INTEGER_EXT */ + { 37933, 0x00008D9E }, /* GL_RGBA_INTEGER_MODE_EXT */ + { 37958, 0x00000C31 }, /* GL_RGBA_MODE */ + { 37971, 0x000083A2 }, /* GL_RGBA_S3TC */ + { 37984, 0x00008F93 }, /* GL_RGBA_SNORM */ + { 37998, 0x00008D98 }, /* GL_RGB_INTEGER */ + { 38013, 0x00008D98 }, /* GL_RGB_INTEGER_EXT */ + { 38032, 0x000083A0 }, /* GL_RGB_S3TC */ + { 38044, 0x00008573 }, /* GL_RGB_SCALE */ + { 38057, 0x00008573 }, /* GL_RGB_SCALE_ARB */ + { 38074, 0x00008573 }, /* GL_RGB_SCALE_EXT */ + { 38091, 0x00008F92 }, /* GL_RGB_SNORM */ + { 38104, 0x00008F91 }, /* GL_RG_SNORM */ + { 38116, 0x00000407 }, /* GL_RIGHT */ + { 38125, 0x00002000 }, /* GL_S */ + { 38130, 0x00008B5D }, /* GL_SAMPLER_1D */ + { 38144, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY */ + { 38164, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY_EXT */ + { 38188, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW */ + { 38215, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW_EXT */ + { 38246, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */ + { 38267, 0x00008B5E }, /* GL_SAMPLER_2D */ + { 38281, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY */ + { 38301, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY_EXT */ + { 38325, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW */ + { 38352, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW_EXT */ + { 38383, 0x00008B63 }, /* GL_SAMPLER_2D_RECT */ + { 38402, 0x00008B64 }, /* GL_SAMPLER_2D_RECT_SHADOW */ + { 38428, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */ + { 38449, 0x00008B5F }, /* GL_SAMPLER_3D */ + { 38463, 0x00008B5F }, /* GL_SAMPLER_3D_OES */ + { 38481, 0x00008919 }, /* GL_SAMPLER_BINDING */ + { 38500, 0x00008DC2 }, /* GL_SAMPLER_BUFFER */ + { 38518, 0x00008DC2 }, /* GL_SAMPLER_BUFFER_EXT */ + { 38540, 0x00008B60 }, /* GL_SAMPLER_CUBE */ + { 38556, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW */ + { 38579, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW_EXT */ + { 38606, 0x000080A9 }, /* GL_SAMPLES */ + { 38617, 0x000086B4 }, /* GL_SAMPLES_3DFX */ + { 38633, 0x000080A9 }, /* GL_SAMPLES_ARB */ + { 38648, 0x00008914 }, /* GL_SAMPLES_PASSED */ + { 38666, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */ + { 38688, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ + { 38716, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */ + { 38748, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */ + { 38771, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */ + { 38798, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */ + { 38816, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */ + { 38839, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */ + { 38861, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */ + { 38880, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */ + { 38903, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */ + { 38929, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */ + { 38959, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */ + { 38984, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */ + { 39013, 0x00080000 }, /* GL_SCISSOR_BIT */ + { 39028, 0x00000C10 }, /* GL_SCISSOR_BOX */ + { 39043, 0x00000C11 }, /* GL_SCISSOR_TEST */ + { 39059, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */ + { 39084, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ + { 39124, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */ + { 39168, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ + { 39201, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ + { 39231, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ + { 39263, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ + { 39293, 0x00001C02 }, /* GL_SELECT */ + { 39303, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */ + { 39331, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */ + { 39356, 0x00008012 }, /* GL_SEPARABLE_2D */ + { 39372, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS */ + { 39392, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS_EXT */ + { 39416, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */ + { 39443, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */ + { 39474, 0x0000150F }, /* GL_SET */ + { 39481, 0x00008DF8 }, /* GL_SHADER_BINARY_FORMATS */ + { 39506, 0x00008DFA }, /* GL_SHADER_COMPILER */ + { 39525, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */ + { 39546, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */ + { 39570, 0x00008B4F }, /* GL_SHADER_TYPE */ + { 39585, 0x00000B54 }, /* GL_SHADE_MODEL */ + { 39600, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */ + { 39628, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */ + { 39651, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */ + { 39681, 0x00001601 }, /* GL_SHININESS */ + { 39694, 0x00001402 }, /* GL_SHORT */ + { 39703, 0x00009119 }, /* GL_SIGNALED */ + { 39715, 0x00008F9C }, /* GL_SIGNED_NORMALIZED */ + { 39736, 0x000081F9 }, /* GL_SINGLE_COLOR */ + { 39752, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */ + { 39772, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */ + { 39791, 0x00008C46 }, /* GL_SLUMINANCE */ + { 39805, 0x00008C47 }, /* GL_SLUMINANCE8 */ + { 39820, 0x00008C45 }, /* GL_SLUMINANCE8_ALPHA8 */ + { 39842, 0x00008C44 }, /* GL_SLUMINANCE_ALPHA */ + { 39862, 0x00001D01 }, /* GL_SMOOTH */ + { 39872, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */ + { 39905, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */ + { 39932, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */ + { 39965, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */ + { 39992, 0x00008588 }, /* GL_SOURCE0_ALPHA */ + { 40009, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */ + { 40030, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */ + { 40051, 0x00008580 }, /* GL_SOURCE0_RGB */ + { 40066, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */ + { 40085, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */ + { 40104, 0x00008589 }, /* GL_SOURCE1_ALPHA */ + { 40121, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */ + { 40142, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */ + { 40163, 0x00008581 }, /* GL_SOURCE1_RGB */ + { 40178, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */ + { 40197, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */ + { 40216, 0x0000858A }, /* GL_SOURCE2_ALPHA */ + { 40233, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */ + { 40254, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */ + { 40275, 0x00008582 }, /* GL_SOURCE2_RGB */ + { 40290, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */ + { 40309, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */ + { 40328, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */ + { 40348, 0x00008583 }, /* GL_SOURCE3_RGB_NV */ + { 40366, 0x00001202 }, /* GL_SPECULAR */ + { 40378, 0x00002402 }, /* GL_SPHERE_MAP */ + { 40392, 0x00001206 }, /* GL_SPOT_CUTOFF */ + { 40407, 0x00001204 }, /* GL_SPOT_DIRECTION */ + { 40425, 0x00001205 }, /* GL_SPOT_EXPONENT */ + { 40442, 0x00008588 }, /* GL_SRC0_ALPHA */ + { 40456, 0x00008580 }, /* GL_SRC0_RGB */ + { 40468, 0x00008589 }, /* GL_SRC1_ALPHA */ + { 40482, 0x00008581 }, /* GL_SRC1_RGB */ + { 40494, 0x0000858A }, /* GL_SRC2_ALPHA */ + { 40508, 0x00008582 }, /* GL_SRC2_RGB */ + { 40520, 0x00000302 }, /* GL_SRC_ALPHA */ + { 40533, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */ + { 40555, 0x00000300 }, /* GL_SRC_COLOR */ + { 40568, 0x00008C40 }, /* GL_SRGB */ + { 40576, 0x00008C41 }, /* GL_SRGB8 */ + { 40585, 0x00008C43 }, /* GL_SRGB8_ALPHA8 */ + { 40601, 0x00008C42 }, /* GL_SRGB_ALPHA */ + { 40615, 0x00000503 }, /* GL_STACK_OVERFLOW */ + { 40633, 0x00000504 }, /* GL_STACK_UNDERFLOW */ + { 40652, 0x000088E6 }, /* GL_STATIC_COPY */ + { 40667, 0x000088E6 }, /* GL_STATIC_COPY_ARB */ + { 40686, 0x000088E4 }, /* GL_STATIC_DRAW */ + { 40701, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */ + { 40720, 0x000088E5 }, /* GL_STATIC_READ */ + { 40735, 0x000088E5 }, /* GL_STATIC_READ_ARB */ + { 40754, 0x00001802 }, /* GL_STENCIL */ + { 40765, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT */ + { 40787, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */ + { 40813, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_OES */ + { 40839, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */ + { 40860, 0x00008801 }, /* GL_STENCIL_BACK_FAIL_ATI */ + { 40885, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */ + { 40906, 0x00008800 }, /* GL_STENCIL_BACK_FUNC_ATI */ + { 40931, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ + { 40963, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI */ + { 40999, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ + { 41031, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI */ + { 41067, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */ + { 41087, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */ + { 41114, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */ + { 41140, 0x00000D57 }, /* GL_STENCIL_BITS */ + { 41156, 0x00008224 }, /* GL_STENCIL_BUFFER */ + { 41174, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */ + { 41196, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */ + { 41219, 0x00000B94 }, /* GL_STENCIL_FAIL */ + { 41235, 0x00000B92 }, /* GL_STENCIL_FUNC */ + { 41251, 0x00001901 }, /* GL_STENCIL_INDEX */ + { 41268, 0x00008D46 }, /* GL_STENCIL_INDEX1 */ + { 41286, 0x00008D49 }, /* GL_STENCIL_INDEX16 */ + { 41305, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */ + { 41328, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */ + { 41350, 0x00008D46 }, /* GL_STENCIL_INDEX1_OES */ + { 41372, 0x00008D47 }, /* GL_STENCIL_INDEX4 */ + { 41390, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */ + { 41412, 0x00008D47 }, /* GL_STENCIL_INDEX4_OES */ + { 41434, 0x00008D48 }, /* GL_STENCIL_INDEX8 */ + { 41452, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */ + { 41474, 0x00008D48 }, /* GL_STENCIL_INDEX8_OES */ + { 41496, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */ + { 41517, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */ + { 41544, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */ + { 41571, 0x00000B97 }, /* GL_STENCIL_REF */ + { 41586, 0x00000B90 }, /* GL_STENCIL_TEST */ + { 41602, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ + { 41631, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */ + { 41653, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */ + { 41674, 0x00000C33 }, /* GL_STEREO */ + { 41684, 0x000085BE }, /* GL_STORAGE_CACHED_APPLE */ + { 41708, 0x000085BD }, /* GL_STORAGE_PRIVATE_APPLE */ + { 41733, 0x000085BF }, /* GL_STORAGE_SHARED_APPLE */ + { 41757, 0x000088E2 }, /* GL_STREAM_COPY */ + { 41772, 0x000088E2 }, /* GL_STREAM_COPY_ARB */ + { 41791, 0x000088E0 }, /* GL_STREAM_DRAW */ + { 41806, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */ + { 41825, 0x000088E1 }, /* GL_STREAM_READ */ + { 41840, 0x000088E1 }, /* GL_STREAM_READ_ARB */ + { 41859, 0x00000D50 }, /* GL_SUBPIXEL_BITS */ + { 41876, 0x000084E7 }, /* GL_SUBTRACT */ + { 41888, 0x000084E7 }, /* GL_SUBTRACT_ARB */ + { 41904, 0x00009113 }, /* GL_SYNC_CONDITION */ + { 41922, 0x00009116 }, /* GL_SYNC_FENCE */ + { 41936, 0x00009115 }, /* GL_SYNC_FLAGS */ + { 41950, 0x00000001 }, /* GL_SYNC_FLUSH_COMMANDS_BIT */ + { 41977, 0x00009117 }, /* GL_SYNC_GPU_COMMANDS_COMPLETE */ + { 42007, 0x00009114 }, /* GL_SYNC_STATUS */ + { 42022, 0x00002001 }, /* GL_T */ + { 42027, 0x00002A2A }, /* GL_T2F_C3F_V3F */ + { 42042, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */ + { 42061, 0x00002A29 }, /* GL_T2F_C4UB_V3F */ + { 42077, 0x00002A2B }, /* GL_T2F_N3F_V3F */ + { 42092, 0x00002A27 }, /* GL_T2F_V3F */ + { 42103, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */ + { 42122, 0x00002A28 }, /* GL_T4F_V4F */ + { 42133, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */ + { 42156, 0x00001702 }, /* GL_TEXTURE */ + { 42167, 0x000084C0 }, /* GL_TEXTURE0 */ + { 42179, 0x000084C0 }, /* GL_TEXTURE0_ARB */ + { 42195, 0x000084C1 }, /* GL_TEXTURE1 */ + { 42207, 0x000084CA }, /* GL_TEXTURE10 */ + { 42220, 0x000084CA }, /* GL_TEXTURE10_ARB */ + { 42237, 0x000084CB }, /* GL_TEXTURE11 */ + { 42250, 0x000084CB }, /* GL_TEXTURE11_ARB */ + { 42267, 0x000084CC }, /* GL_TEXTURE12 */ + { 42280, 0x000084CC }, /* GL_TEXTURE12_ARB */ + { 42297, 0x000084CD }, /* GL_TEXTURE13 */ + { 42310, 0x000084CD }, /* GL_TEXTURE13_ARB */ + { 42327, 0x000084CE }, /* GL_TEXTURE14 */ + { 42340, 0x000084CE }, /* GL_TEXTURE14_ARB */ + { 42357, 0x000084CF }, /* GL_TEXTURE15 */ + { 42370, 0x000084CF }, /* GL_TEXTURE15_ARB */ + { 42387, 0x000084D0 }, /* GL_TEXTURE16 */ + { 42400, 0x000084D0 }, /* GL_TEXTURE16_ARB */ + { 42417, 0x000084D1 }, /* GL_TEXTURE17 */ + { 42430, 0x000084D1 }, /* GL_TEXTURE17_ARB */ + { 42447, 0x000084D2 }, /* GL_TEXTURE18 */ + { 42460, 0x000084D2 }, /* GL_TEXTURE18_ARB */ + { 42477, 0x000084D3 }, /* GL_TEXTURE19 */ + { 42490, 0x000084D3 }, /* GL_TEXTURE19_ARB */ + { 42507, 0x000084C1 }, /* GL_TEXTURE1_ARB */ + { 42523, 0x000084C2 }, /* GL_TEXTURE2 */ + { 42535, 0x000084D4 }, /* GL_TEXTURE20 */ + { 42548, 0x000084D4 }, /* GL_TEXTURE20_ARB */ + { 42565, 0x000084D5 }, /* GL_TEXTURE21 */ + { 42578, 0x000084D5 }, /* GL_TEXTURE21_ARB */ + { 42595, 0x000084D6 }, /* GL_TEXTURE22 */ + { 42608, 0x000084D6 }, /* GL_TEXTURE22_ARB */ + { 42625, 0x000084D7 }, /* GL_TEXTURE23 */ + { 42638, 0x000084D7 }, /* GL_TEXTURE23_ARB */ + { 42655, 0x000084D8 }, /* GL_TEXTURE24 */ + { 42668, 0x000084D8 }, /* GL_TEXTURE24_ARB */ + { 42685, 0x000084D9 }, /* GL_TEXTURE25 */ + { 42698, 0x000084D9 }, /* GL_TEXTURE25_ARB */ + { 42715, 0x000084DA }, /* GL_TEXTURE26 */ + { 42728, 0x000084DA }, /* GL_TEXTURE26_ARB */ + { 42745, 0x000084DB }, /* GL_TEXTURE27 */ + { 42758, 0x000084DB }, /* GL_TEXTURE27_ARB */ + { 42775, 0x000084DC }, /* GL_TEXTURE28 */ + { 42788, 0x000084DC }, /* GL_TEXTURE28_ARB */ + { 42805, 0x000084DD }, /* GL_TEXTURE29 */ + { 42818, 0x000084DD }, /* GL_TEXTURE29_ARB */ + { 42835, 0x000084C2 }, /* GL_TEXTURE2_ARB */ + { 42851, 0x000084C3 }, /* GL_TEXTURE3 */ + { 42863, 0x000084DE }, /* GL_TEXTURE30 */ + { 42876, 0x000084DE }, /* GL_TEXTURE30_ARB */ + { 42893, 0x000084DF }, /* GL_TEXTURE31 */ + { 42906, 0x000084DF }, /* GL_TEXTURE31_ARB */ + { 42923, 0x000084C3 }, /* GL_TEXTURE3_ARB */ + { 42939, 0x000084C4 }, /* GL_TEXTURE4 */ + { 42951, 0x000084C4 }, /* GL_TEXTURE4_ARB */ + { 42967, 0x000084C5 }, /* GL_TEXTURE5 */ + { 42979, 0x000084C5 }, /* GL_TEXTURE5_ARB */ + { 42995, 0x000084C6 }, /* GL_TEXTURE6 */ + { 43007, 0x000084C6 }, /* GL_TEXTURE6_ARB */ + { 43023, 0x000084C7 }, /* GL_TEXTURE7 */ + { 43035, 0x000084C7 }, /* GL_TEXTURE7_ARB */ + { 43051, 0x000084C8 }, /* GL_TEXTURE8 */ + { 43063, 0x000084C8 }, /* GL_TEXTURE8_ARB */ + { 43079, 0x000084C9 }, /* GL_TEXTURE9 */ + { 43091, 0x000084C9 }, /* GL_TEXTURE9_ARB */ + { 43107, 0x00000DE0 }, /* GL_TEXTURE_1D */ + { 43121, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY */ + { 43141, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY_EXT */ + { 43165, 0x00000DE1 }, /* GL_TEXTURE_2D */ + { 43179, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY */ + { 43199, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY_EXT */ + { 43223, 0x0000806F }, /* GL_TEXTURE_3D */ + { 43237, 0x0000806F }, /* GL_TEXTURE_3D_OES */ + { 43255, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */ + { 43277, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */ + { 43303, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */ + { 43325, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */ + { 43347, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY */ + { 43375, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */ + { 43407, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */ + { 43429, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY */ + { 43457, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */ + { 43489, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */ + { 43511, 0x0000806A }, /* GL_TEXTURE_BINDING_3D_OES */ + { 43537, 0x00008C2C }, /* GL_TEXTURE_BINDING_BUFFER */ + { 43563, 0x00008C2C }, /* GL_TEXTURE_BINDING_BUFFER_ARB */ + { 43593, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */ + { 43621, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */ + { 43653, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_OES */ + { 43685, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE */ + { 43714, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */ + { 43747, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */ + { 43779, 0x00040000 }, /* GL_TEXTURE_BIT */ + { 43794, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */ + { 43815, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */ + { 43840, 0x00001005 }, /* GL_TEXTURE_BORDER */ + { 43858, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */ + { 43882, 0x00008C2A }, /* GL_TEXTURE_BUFFER */ + { 43900, 0x00008C2A }, /* GL_TEXTURE_BUFFER_ARB */ + { 43922, 0x00008C2D }, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */ + { 43959, 0x00008C2D }, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB */ + { 44000, 0x00008C2E }, /* GL_TEXTURE_BUFFER_FORMAT */ + { 44025, 0x00008C2E }, /* GL_TEXTURE_BUFFER_FORMAT_ARB */ + { 44054, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ + { 44085, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ + { 44115, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ + { 44145, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ + { 44180, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ + { 44211, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + { 44249, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */ + { 44276, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ + { 44308, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ + { 44342, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */ + { 44366, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */ + { 44394, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */ + { 44418, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */ + { 44446, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ + { 44479, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */ + { 44503, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */ + { 44525, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */ + { 44547, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */ + { 44573, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */ + { 44607, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ + { 44640, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */ + { 44677, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */ + { 44705, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */ + { 44737, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */ + { 44760, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ + { 44798, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */ + { 44840, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */ + { 44871, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */ + { 44899, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ + { 44929, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */ + { 44957, 0x00008B9D }, /* GL_TEXTURE_CROP_RECT_OES */ + { 44982, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */ + { 45002, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */ + { 45026, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ + { 45057, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */ + { 45092, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES */ + { 45127, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ + { 45158, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */ + { 45193, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES */ + { 45228, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ + { 45259, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */ + { 45294, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES */ + { 45329, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_OES */ + { 45353, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ + { 45384, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */ + { 45419, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES */ + { 45454, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ + { 45485, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */ + { 45520, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES */ + { 45555, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ + { 45586, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */ + { 45621, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES */ + { 45656, 0x000088F4 }, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */ + { 45685, 0x00008071 }, /* GL_TEXTURE_DEPTH */ + { 45702, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */ + { 45724, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */ + { 45750, 0x00002300 }, /* GL_TEXTURE_ENV */ + { 45765, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */ + { 45786, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */ + { 45806, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */ + { 45832, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL_EXT */ + { 45862, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */ + { 45882, 0x00002500 }, /* GL_TEXTURE_GEN_MODE_OES */ + { 45906, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */ + { 45923, 0x00000C62 }, /* GL_TEXTURE_GEN_R */ + { 45940, 0x00000C60 }, /* GL_TEXTURE_GEN_S */ + { 45957, 0x00008D60 }, /* GL_TEXTURE_GEN_STR_OES */ + { 45980, 0x00000C61 }, /* GL_TEXTURE_GEN_T */ + { 45997, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */ + { 46022, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */ + { 46044, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */ + { 46070, 0x00001001 }, /* GL_TEXTURE_HEIGHT */ + { 46088, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */ + { 46114, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */ + { 46140, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */ + { 46170, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */ + { 46197, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */ + { 46222, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */ + { 46242, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */ + { 46266, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ + { 46293, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ + { 46320, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ + { 46347, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */ + { 46373, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */ + { 46403, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */ + { 46425, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */ + { 46443, 0x0000898F }, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */ + { 46483, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ + { 46513, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ + { 46541, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ + { 46569, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ + { 46597, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */ + { 46618, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */ + { 46637, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */ + { 46659, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */ + { 46678, 0x00008066 }, /* GL_TEXTURE_PRIORITY */ + { 46698, 0x000085B7 }, /* GL_TEXTURE_RANGE_LENGTH_APPLE */ + { 46728, 0x000085B8 }, /* GL_TEXTURE_RANGE_POINTER_APPLE */ + { 46759, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE */ + { 46780, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */ + { 46805, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */ + { 46829, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */ + { 46849, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */ + { 46873, 0x00008067 }, /* GL_TEXTURE_RESIDENT */ + { 46893, 0x00008C3F }, /* GL_TEXTURE_SHARED_SIZE */ + { 46916, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */ + { 46939, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE */ + { 46963, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE_EXT */ + { 46991, 0x000085BC }, /* GL_TEXTURE_STORAGE_HINT_APPLE */ + { 47021, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */ + { 47046, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ + { 47080, 0x00001000 }, /* GL_TEXTURE_WIDTH */ + { 47097, 0x00008072 }, /* GL_TEXTURE_WRAP_R */ + { 47115, 0x00008072 }, /* GL_TEXTURE_WRAP_R_OES */ + { 47137, 0x00002802 }, /* GL_TEXTURE_WRAP_S */ + { 47155, 0x00002803 }, /* GL_TEXTURE_WRAP_T */ + { 47173, 0x0000911B }, /* GL_TIMEOUT_EXPIRED */ + { 47192, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */ + { 47212, 0x00008648 }, /* GL_TRACK_MATRIX_NV */ + { 47231, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */ + { 47260, 0x00001000 }, /* GL_TRANSFORM_BIT */ + { 47277, 0x00008E22 }, /* GL_TRANSFORM_FEEDBACK */ + { 47299, 0x00008E25 }, /* GL_TRANSFORM_FEEDBACK_BINDING */ + { 47329, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER */ + { 47358, 0x00008E24 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */ + { 47394, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */ + { 47431, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */ + { 47472, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */ + { 47505, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */ + { 47539, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */ + { 47577, 0x00008E23 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */ + { 47613, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */ + { 47647, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */ + { 47685, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */ + { 47720, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */ + { 47759, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */ + { 47800, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */ + { 47845, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS */ + { 47876, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */ + { 47911, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */ + { 47952, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */ + { 47997, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */ + { 48023, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */ + { 48053, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ + { 48085, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ + { 48115, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */ + { 48149, 0x0000862C }, /* GL_TRANSPOSE_NV */ + { 48165, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */ + { 48196, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */ + { 48231, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */ + { 48259, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */ + { 48291, 0x00000004 }, /* GL_TRIANGLES */ + { 48304, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY */ + { 48327, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY_ARB */ + { 48354, 0x00000006 }, /* GL_TRIANGLE_FAN */ + { 48370, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */ + { 48391, 0x00000005 }, /* GL_TRIANGLE_STRIP */ + { 48409, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY */ + { 48437, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY_ARB */ + { 48469, 0x00000001 }, /* GL_TRUE */ + { 48477, 0x00008A1C }, /* GL_UNDEFINED_APPLE */ + { 48496, 0x00008255 }, /* GL_UNKNOWN_CONTEXT_RESET_ARB */ + { 48525, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */ + { 48545, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */ + { 48568, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */ + { 48588, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */ + { 48609, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */ + { 48631, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */ + { 48653, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */ + { 48673, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */ + { 48694, 0x00009118 }, /* GL_UNSIGNALED */ + { 48708, 0x00001401 }, /* GL_UNSIGNED_BYTE */ + { 48725, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */ + { 48752, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */ + { 48775, 0x00001405 }, /* GL_UNSIGNED_INT */ + { 48791, 0x00008C3B }, /* GL_UNSIGNED_INT_10F_11F_11F_REV */ + { 48823, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */ + { 48850, 0x00008DF6 }, /* GL_UNSIGNED_INT_10_10_10_2_OES */ + { 48881, 0x000084FA }, /* GL_UNSIGNED_INT_24_8 */ + { 48902, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_EXT */ + { 48927, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */ + { 48951, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_OES */ + { 48976, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */ + { 49007, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV_EXT */ + { 49042, 0x00008C3E }, /* GL_UNSIGNED_INT_5_9_9_9_REV */ + { 49070, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */ + { 49094, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */ + { 49122, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D */ + { 49149, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */ + { 49182, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT */ + { 49219, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D_EXT */ + { 49250, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D */ + { 49277, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */ + { 49310, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT */ + { 49347, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D_EXT */ + { 49378, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */ + { 49410, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT */ + { 49446, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D */ + { 49473, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D_EXT */ + { 49504, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */ + { 49535, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT */ + { 49570, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE */ + { 49599, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE_EXT */ + { 49632, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2 */ + { 49653, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2_EXT */ + { 49678, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3 */ + { 49699, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3_EXT */ + { 49724, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4 */ + { 49745, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4_EXT */ + { 49770, 0x00008C17 }, /* GL_UNSIGNED_NORMALIZED */ + { 49793, 0x00001403 }, /* GL_UNSIGNED_SHORT */ + { 49811, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ + { 49841, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT */ + { 49875, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */ + { 49901, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ + { 49931, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT */ + { 49965, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */ + { 49991, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */ + { 50015, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */ + { 50043, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */ + { 50071, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */ + { 50098, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ + { 50130, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */ + { 50161, 0x00008CA2 }, /* GL_UPPER_LEFT */ + { 50175, 0x00002A20 }, /* GL_V2F */ + { 50182, 0x00002A21 }, /* GL_V3F */ + { 50189, 0x00008B83 }, /* GL_VALIDATE_STATUS */ + { 50208, 0x00001F00 }, /* GL_VENDOR */ + { 50218, 0x00001F02 }, /* GL_VERSION */ + { 50229, 0x00008074 }, /* GL_VERTEX_ARRAY */ + { 50245, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING */ + { 50269, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */ + { 50299, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ + { 50330, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */ + { 50365, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */ + { 50389, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */ + { 50410, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */ + { 50433, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */ + { 50454, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ + { 50481, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ + { 50509, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ + { 50537, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ + { 50565, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ + { 50593, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ + { 50621, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ + { 50649, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ + { 50676, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ + { 50703, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ + { 50730, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ + { 50757, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ + { 50784, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ + { 50811, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ + { 50838, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ + { 50865, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ + { 50892, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ + { 50930, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */ + { 50972, 0x000088FE }, /* GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB */ + { 51007, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ + { 51038, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */ + { 51073, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */ + { 51104, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT */ + { 51139, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ + { 51173, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */ + { 51211, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ + { 51242, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */ + { 51277, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ + { 51305, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */ + { 51337, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ + { 51367, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */ + { 51401, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ + { 51429, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */ + { 51461, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */ + { 51481, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */ + { 51503, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */ + { 51532, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */ + { 51553, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */ + { 51582, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */ + { 51615, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */ + { 51647, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */ + { 51674, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */ + { 51705, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */ + { 51735, 0x00008B31 }, /* GL_VERTEX_SHADER */ + { 51752, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */ + { 51773, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */ + { 51800, 0x00000BA2 }, /* GL_VIEWPORT */ + { 51812, 0x00000800 }, /* GL_VIEWPORT_BIT */ + { 51828, 0x00008A1A }, /* GL_VOLATILE_APPLE */ + { 51846, 0x0000911D }, /* GL_WAIT_FAILED */ + { 51861, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */ + { 51881, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ + { 51912, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */ + { 51947, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_OES */ + { 51982, 0x000086AD }, /* GL_WEIGHT_ARRAY_OES */ + { 52002, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */ + { 52030, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_OES */ + { 52058, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */ + { 52083, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_OES */ + { 52108, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ + { 52135, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_OES */ + { 52162, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */ + { 52187, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_OES */ + { 52212, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */ + { 52236, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */ + { 52255, 0x000088B9 }, /* GL_WRITE_ONLY */ + { 52269, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */ + { 52287, 0x000088B9 }, /* GL_WRITE_ONLY_OES */ + { 52305, 0x00001506 }, /* GL_XOR */ + { 52312, 0x000085B9 }, /* GL_YCBCR_422_APPLE */ + { 52331, 0x00008757 }, /* GL_YCBCR_MESA */ + { 52345, 0x00000000 }, /* GL_ZERO */ + { 52353, 0x00000D16 }, /* GL_ZOOM_X */ + { 52363, 0x00000D17 }, /* GL_ZOOM_Y */ }; static const unsigned reduced_enums[1564] = { - 539, /* GL_FALSE */ - 835, /* GL_LINES */ - 839, /* GL_LINE_LOOP */ - 846, /* GL_LINE_STRIP */ - 2157, /* GL_TRIANGLES */ - 2162, /* GL_TRIANGLE_STRIP */ - 2160, /* GL_TRIANGLE_FAN */ - 1522, /* GL_QUADS */ - 1526, /* GL_QUAD_STRIP */ - 1390, /* GL_POLYGON */ - 836, /* GL_LINES_ADJACENCY */ - 847, /* GL_LINE_STRIP_ADJACENCY */ - 2158, /* GL_TRIANGLES_ADJACENCY */ - 2163, /* GL_TRIANGLE_STRIP_ADJACENCY */ - 1402, /* GL_POLYGON_STIPPLE_BIT */ - 1345, /* GL_PIXEL_MODE_BIT */ - 822, /* GL_LIGHTING_BIT */ - 573, /* GL_FOG_BIT */ + 555, /* GL_FALSE */ + 851, /* GL_LINES */ + 855, /* GL_LINE_LOOP */ + 862, /* GL_LINE_STRIP */ + 2174, /* GL_TRIANGLES */ + 2179, /* GL_TRIANGLE_STRIP */ + 2177, /* GL_TRIANGLE_FAN */ + 1539, /* GL_QUADS */ + 1543, /* GL_QUAD_STRIP */ + 1407, /* GL_POLYGON */ + 852, /* GL_LINES_ADJACENCY */ + 863, /* GL_LINE_STRIP_ADJACENCY */ + 2175, /* GL_TRIANGLES_ADJACENCY */ + 2180, /* GL_TRIANGLE_STRIP_ADJACENCY */ + 1419, /* GL_POLYGON_STIPPLE_BIT */ + 1362, /* GL_PIXEL_MODE_BIT */ + 838, /* GL_LIGHTING_BIT */ + 589, /* GL_FOG_BIT */ 8, /* GL_ACCUM */ - 858, /* GL_LOAD */ - 1612, /* GL_RETURN */ - 1210, /* GL_MULT */ + 874, /* GL_LOAD */ + 1629, /* GL_RETURN */ + 1227, /* GL_MULT */ 24, /* GL_ADD */ - 1226, /* GL_NEVER */ - 812, /* GL_LESS */ - 529, /* GL_EQUAL */ - 811, /* GL_LEQUAL */ - 696, /* GL_GREATER */ - 1243, /* GL_NOTEQUAL */ - 695, /* GL_GEQUAL */ + 1243, /* GL_NEVER */ + 828, /* GL_LESS */ + 545, /* GL_EQUAL */ + 827, /* GL_LEQUAL */ + 712, /* GL_GREATER */ + 1260, /* GL_NOTEQUAL */ + 711, /* GL_GEQUAL */ 55, /* GL_ALWAYS */ - 1821, /* GL_SRC_COLOR */ - 1278, /* GL_ONE_MINUS_SRC_COLOR */ - 1819, /* GL_SRC_ALPHA */ - 1277, /* GL_ONE_MINUS_SRC_ALPHA */ - 508, /* GL_DST_ALPHA */ - 1275, /* GL_ONE_MINUS_DST_ALPHA */ - 509, /* GL_DST_COLOR */ - 1276, /* GL_ONE_MINUS_DST_COLOR */ - 1820, /* GL_SRC_ALPHA_SATURATE */ - 672, /* GL_FRONT_LEFT */ - 673, /* GL_FRONT_RIGHT */ + 1838, /* GL_SRC_COLOR */ + 1295, /* GL_ONE_MINUS_SRC_COLOR */ + 1836, /* GL_SRC_ALPHA */ + 1294, /* GL_ONE_MINUS_SRC_ALPHA */ + 524, /* GL_DST_ALPHA */ + 1292, /* GL_ONE_MINUS_DST_ALPHA */ + 525, /* GL_DST_COLOR */ + 1293, /* GL_ONE_MINUS_DST_COLOR */ + 1837, /* GL_SRC_ALPHA_SATURATE */ + 688, /* GL_FRONT_LEFT */ + 689, /* GL_FRONT_RIGHT */ 77, /* GL_BACK_LEFT */ 78, /* GL_BACK_RIGHT */ - 669, /* GL_FRONT */ + 685, /* GL_FRONT */ 76, /* GL_BACK */ - 810, /* GL_LEFT */ - 1702, /* GL_RIGHT */ - 670, /* GL_FRONT_AND_BACK */ + 826, /* GL_LEFT */ + 1719, /* GL_RIGHT */ + 686, /* GL_FRONT_AND_BACK */ 71, /* GL_AUX0 */ 72, /* GL_AUX1 */ 73, /* GL_AUX2 */ 74, /* GL_AUX3 */ - 798, /* GL_INVALID_ENUM */ - 803, /* GL_INVALID_VALUE */ - 802, /* GL_INVALID_OPERATION */ - 1826, /* GL_STACK_OVERFLOW */ - 1827, /* GL_STACK_UNDERFLOW */ - 1303, /* GL_OUT_OF_MEMORY */ - 799, /* GL_INVALID_FRAMEBUFFER_OPERATION */ + 814, /* GL_INVALID_ENUM */ + 819, /* GL_INVALID_VALUE */ + 818, /* GL_INVALID_OPERATION */ + 1843, /* GL_STACK_OVERFLOW */ + 1844, /* GL_STACK_UNDERFLOW */ + 1320, /* GL_OUT_OF_MEMORY */ + 815, /* GL_INVALID_FRAMEBUFFER_OPERATION */ 0, /* GL_2D */ 2, /* GL_3D */ 3, /* GL_3D_COLOR */ 4, /* GL_3D_COLOR_TEXTURE */ 6, /* GL_4D_COLOR_TEXTURE */ - 1323, /* GL_PASS_THROUGH_TOKEN */ - 1389, /* GL_POINT_TOKEN */ - 849, /* GL_LINE_TOKEN */ - 1403, /* GL_POLYGON_TOKEN */ + 1340, /* GL_PASS_THROUGH_TOKEN */ + 1406, /* GL_POINT_TOKEN */ + 865, /* GL_LINE_TOKEN */ + 1420, /* GL_POLYGON_TOKEN */ 87, /* GL_BITMAP_TOKEN */ - 507, /* GL_DRAW_PIXEL_TOKEN */ + 523, /* GL_DRAW_PIXEL_TOKEN */ 353, /* GL_COPY_PIXEL_TOKEN */ - 840, /* GL_LINE_RESET_TOKEN */ - 532, /* GL_EXP */ - 533, /* GL_EXP2 */ + 856, /* GL_LINE_RESET_TOKEN */ + 548, /* GL_EXP */ + 549, /* GL_EXP2 */ 390, /* GL_CW */ 154, /* GL_CCW */ 187, /* GL_COEFF */ - 1300, /* GL_ORDER */ + 1317, /* GL_ORDER */ 444, /* GL_DOMAIN */ 363, /* GL_CURRENT_COLOR */ 366, /* GL_CURRENT_INDEX */ @@ -4771,67 +4805,67 @@ static const unsigned reduced_enums[1564] = 381, /* GL_CURRENT_RASTER_POSITION */ 382, /* GL_CURRENT_RASTER_POSITION_VALID */ 379, /* GL_CURRENT_RASTER_DISTANCE */ - 1381, /* GL_POINT_SMOOTH */ - 1365, /* GL_POINT_SIZE */ - 1380, /* GL_POINT_SIZE_RANGE */ - 1371, /* GL_POINT_SIZE_GRANULARITY */ - 841, /* GL_LINE_SMOOTH */ - 850, /* GL_LINE_WIDTH */ - 852, /* GL_LINE_WIDTH_RANGE */ - 851, /* GL_LINE_WIDTH_GRANULARITY */ - 843, /* GL_LINE_STIPPLE */ - 844, /* GL_LINE_STIPPLE_PATTERN */ - 845, /* GL_LINE_STIPPLE_REPEAT */ - 857, /* GL_LIST_MODE */ - 1065, /* GL_MAX_LIST_NESTING */ - 854, /* GL_LIST_BASE */ - 856, /* GL_LIST_INDEX */ - 1392, /* GL_POLYGON_MODE */ - 1399, /* GL_POLYGON_SMOOTH */ - 1401, /* GL_POLYGON_STIPPLE */ - 518, /* GL_EDGE_FLAG */ + 1398, /* GL_POINT_SMOOTH */ + 1382, /* GL_POINT_SIZE */ + 1397, /* GL_POINT_SIZE_RANGE */ + 1388, /* GL_POINT_SIZE_GRANULARITY */ + 857, /* GL_LINE_SMOOTH */ + 866, /* GL_LINE_WIDTH */ + 868, /* GL_LINE_WIDTH_RANGE */ + 867, /* GL_LINE_WIDTH_GRANULARITY */ + 859, /* GL_LINE_STIPPLE */ + 860, /* GL_LINE_STIPPLE_PATTERN */ + 861, /* GL_LINE_STIPPLE_REPEAT */ + 873, /* GL_LIST_MODE */ + 1082, /* GL_MAX_LIST_NESTING */ + 870, /* GL_LIST_BASE */ + 872, /* GL_LIST_INDEX */ + 1409, /* GL_POLYGON_MODE */ + 1416, /* GL_POLYGON_SMOOTH */ + 1418, /* GL_POLYGON_STIPPLE */ + 534, /* GL_EDGE_FLAG */ 356, /* GL_CULL_FACE */ 357, /* GL_CULL_FACE_MODE */ - 671, /* GL_FRONT_FACE */ - 821, /* GL_LIGHTING */ - 826, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ - 827, /* GL_LIGHT_MODEL_TWO_SIDE */ - 823, /* GL_LIGHT_MODEL_AMBIENT */ - 1768, /* GL_SHADE_MODEL */ + 687, /* GL_FRONT_FACE */ + 837, /* GL_LIGHTING */ + 842, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ + 843, /* GL_LIGHT_MODEL_TWO_SIDE */ + 839, /* GL_LIGHT_MODEL_AMBIENT */ + 1785, /* GL_SHADE_MODEL */ 235, /* GL_COLOR_MATERIAL_FACE */ 236, /* GL_COLOR_MATERIAL_PARAMETER */ 234, /* GL_COLOR_MATERIAL */ - 572, /* GL_FOG */ - 594, /* GL_FOG_INDEX */ - 590, /* GL_FOG_DENSITY */ - 598, /* GL_FOG_START */ - 592, /* GL_FOG_END */ - 595, /* GL_FOG_MODE */ - 574, /* GL_FOG_COLOR */ + 588, /* GL_FOG */ + 610, /* GL_FOG_INDEX */ + 606, /* GL_FOG_DENSITY */ + 614, /* GL_FOG_START */ + 608, /* GL_FOG_END */ + 611, /* GL_FOG_MODE */ + 590, /* GL_FOG_COLOR */ 429, /* GL_DEPTH_RANGE */ 438, /* GL_DEPTH_TEST */ 441, /* GL_DEPTH_WRITEMASK */ 414, /* GL_DEPTH_CLEAR_VALUE */ 428, /* GL_DEPTH_FUNC */ 12, /* GL_ACCUM_CLEAR_VALUE */ - 1871, /* GL_STENCIL_TEST */ - 1852, /* GL_STENCIL_CLEAR_VALUE */ - 1854, /* GL_STENCIL_FUNC */ - 1873, /* GL_STENCIL_VALUE_MASK */ - 1853, /* GL_STENCIL_FAIL */ - 1868, /* GL_STENCIL_PASS_DEPTH_FAIL */ - 1869, /* GL_STENCIL_PASS_DEPTH_PASS */ - 1870, /* GL_STENCIL_REF */ - 1874, /* GL_STENCIL_WRITEMASK */ - 1015, /* GL_MATRIX_MODE */ - 1232, /* GL_NORMALIZE */ - 2290, /* GL_VIEWPORT */ - 1205, /* GL_MODELVIEW_STACK_DEPTH */ - 1496, /* GL_PROJECTION_STACK_DEPTH */ - 2111, /* GL_TEXTURE_STACK_DEPTH */ - 1202, /* GL_MODELVIEW_MATRIX */ - 1494, /* GL_PROJECTION_MATRIX */ - 2091, /* GL_TEXTURE_MATRIX */ + 1888, /* GL_STENCIL_TEST */ + 1869, /* GL_STENCIL_CLEAR_VALUE */ + 1871, /* GL_STENCIL_FUNC */ + 1890, /* GL_STENCIL_VALUE_MASK */ + 1870, /* GL_STENCIL_FAIL */ + 1885, /* GL_STENCIL_PASS_DEPTH_FAIL */ + 1886, /* GL_STENCIL_PASS_DEPTH_PASS */ + 1887, /* GL_STENCIL_REF */ + 1891, /* GL_STENCIL_WRITEMASK */ + 1031, /* GL_MATRIX_MODE */ + 1249, /* GL_NORMALIZE */ + 2307, /* GL_VIEWPORT */ + 1222, /* GL_MODELVIEW_STACK_DEPTH */ + 1513, /* GL_PROJECTION_STACK_DEPTH */ + 2128, /* GL_TEXTURE_STACK_DEPTH */ + 1219, /* GL_MODELVIEW_MATRIX */ + 1511, /* GL_PROJECTION_MATRIX */ + 2108, /* GL_TEXTURE_MATRIX */ 69, /* GL_ATTRIB_STACK_DEPTH */ 169, /* GL_CLIENT_ATTRIB_STACK_DEPTH */ 51, /* GL_ALPHA_TEST */ @@ -4841,267 +4875,267 @@ static const unsigned reduced_enums[1564] = 91, /* GL_BLEND_DST */ 105, /* GL_BLEND_SRC */ 88, /* GL_BLEND */ - 860, /* GL_LOGIC_OP_MODE */ - 745, /* GL_INDEX_LOGIC_OP */ + 876, /* GL_LOGIC_OP_MODE */ + 761, /* GL_INDEX_LOGIC_OP */ 233, /* GL_COLOR_LOGIC_OP */ 75, /* GL_AUX_BUFFERS */ 454, /* GL_DRAW_BUFFER */ - 1549, /* GL_READ_BUFFER */ - 1745, /* GL_SCISSOR_BOX */ - 1746, /* GL_SCISSOR_TEST */ - 744, /* GL_INDEX_CLEAR_VALUE */ - 749, /* GL_INDEX_WRITEMASK */ + 1566, /* GL_READ_BUFFER */ + 1762, /* GL_SCISSOR_BOX */ + 1763, /* GL_SCISSOR_TEST */ + 760, /* GL_INDEX_CLEAR_VALUE */ + 765, /* GL_INDEX_WRITEMASK */ 230, /* GL_COLOR_CLEAR_VALUE */ 272, /* GL_COLOR_WRITEMASK */ - 746, /* GL_INDEX_MODE */ - 1691, /* GL_RGBA_MODE */ + 762, /* GL_INDEX_MODE */ + 1708, /* GL_RGBA_MODE */ 453, /* GL_DOUBLEBUFFER */ - 1875, /* GL_STEREO */ - 1603, /* GL_RENDER_MODE */ - 1324, /* GL_PERSPECTIVE_CORRECTION_HINT */ - 1382, /* GL_POINT_SMOOTH_HINT */ - 842, /* GL_LINE_SMOOTH_HINT */ - 1400, /* GL_POLYGON_SMOOTH_HINT */ - 593, /* GL_FOG_HINT */ - 2071, /* GL_TEXTURE_GEN_S */ - 2073, /* GL_TEXTURE_GEN_T */ - 2070, /* GL_TEXTURE_GEN_R */ - 2069, /* GL_TEXTURE_GEN_Q */ - 1337, /* GL_PIXEL_MAP_I_TO_I */ - 1343, /* GL_PIXEL_MAP_S_TO_S */ - 1339, /* GL_PIXEL_MAP_I_TO_R */ - 1335, /* GL_PIXEL_MAP_I_TO_G */ - 1333, /* GL_PIXEL_MAP_I_TO_B */ - 1331, /* GL_PIXEL_MAP_I_TO_A */ - 1341, /* GL_PIXEL_MAP_R_TO_R */ - 1329, /* GL_PIXEL_MAP_G_TO_G */ - 1327, /* GL_PIXEL_MAP_B_TO_B */ - 1325, /* GL_PIXEL_MAP_A_TO_A */ - 1338, /* GL_PIXEL_MAP_I_TO_I_SIZE */ - 1344, /* GL_PIXEL_MAP_S_TO_S_SIZE */ - 1340, /* GL_PIXEL_MAP_I_TO_R_SIZE */ - 1336, /* GL_PIXEL_MAP_I_TO_G_SIZE */ - 1334, /* GL_PIXEL_MAP_I_TO_B_SIZE */ - 1332, /* GL_PIXEL_MAP_I_TO_A_SIZE */ - 1342, /* GL_PIXEL_MAP_R_TO_R_SIZE */ - 1330, /* GL_PIXEL_MAP_G_TO_G_SIZE */ - 1328, /* GL_PIXEL_MAP_B_TO_B_SIZE */ - 1326, /* GL_PIXEL_MAP_A_TO_A_SIZE */ - 2175, /* GL_UNPACK_SWAP_BYTES */ - 2170, /* GL_UNPACK_LSB_FIRST */ - 2171, /* GL_UNPACK_ROW_LENGTH */ - 2174, /* GL_UNPACK_SKIP_ROWS */ - 2173, /* GL_UNPACK_SKIP_PIXELS */ - 2168, /* GL_UNPACK_ALIGNMENT */ - 1312, /* GL_PACK_SWAP_BYTES */ - 1307, /* GL_PACK_LSB_FIRST */ - 1308, /* GL_PACK_ROW_LENGTH */ - 1311, /* GL_PACK_SKIP_ROWS */ - 1310, /* GL_PACK_SKIP_PIXELS */ - 1304, /* GL_PACK_ALIGNMENT */ - 956, /* GL_MAP_COLOR */ - 961, /* GL_MAP_STENCIL */ - 748, /* GL_INDEX_SHIFT */ - 747, /* GL_INDEX_OFFSET */ - 1565, /* GL_RED_SCALE */ - 1561, /* GL_RED_BIAS */ - 2316, /* GL_ZOOM_X */ - 2317, /* GL_ZOOM_Y */ - 702, /* GL_GREEN_SCALE */ - 698, /* GL_GREEN_BIAS */ + 1892, /* GL_STEREO */ + 1620, /* GL_RENDER_MODE */ + 1341, /* GL_PERSPECTIVE_CORRECTION_HINT */ + 1399, /* GL_POINT_SMOOTH_HINT */ + 858, /* GL_LINE_SMOOTH_HINT */ + 1417, /* GL_POLYGON_SMOOTH_HINT */ + 609, /* GL_FOG_HINT */ + 2088, /* GL_TEXTURE_GEN_S */ + 2090, /* GL_TEXTURE_GEN_T */ + 2087, /* GL_TEXTURE_GEN_R */ + 2086, /* GL_TEXTURE_GEN_Q */ + 1354, /* GL_PIXEL_MAP_I_TO_I */ + 1360, /* GL_PIXEL_MAP_S_TO_S */ + 1356, /* GL_PIXEL_MAP_I_TO_R */ + 1352, /* GL_PIXEL_MAP_I_TO_G */ + 1350, /* GL_PIXEL_MAP_I_TO_B */ + 1348, /* GL_PIXEL_MAP_I_TO_A */ + 1358, /* GL_PIXEL_MAP_R_TO_R */ + 1346, /* GL_PIXEL_MAP_G_TO_G */ + 1344, /* GL_PIXEL_MAP_B_TO_B */ + 1342, /* GL_PIXEL_MAP_A_TO_A */ + 1355, /* GL_PIXEL_MAP_I_TO_I_SIZE */ + 1361, /* GL_PIXEL_MAP_S_TO_S_SIZE */ + 1357, /* GL_PIXEL_MAP_I_TO_R_SIZE */ + 1353, /* GL_PIXEL_MAP_I_TO_G_SIZE */ + 1351, /* GL_PIXEL_MAP_I_TO_B_SIZE */ + 1349, /* GL_PIXEL_MAP_I_TO_A_SIZE */ + 1359, /* GL_PIXEL_MAP_R_TO_R_SIZE */ + 1347, /* GL_PIXEL_MAP_G_TO_G_SIZE */ + 1345, /* GL_PIXEL_MAP_B_TO_B_SIZE */ + 1343, /* GL_PIXEL_MAP_A_TO_A_SIZE */ + 2192, /* GL_UNPACK_SWAP_BYTES */ + 2187, /* GL_UNPACK_LSB_FIRST */ + 2188, /* GL_UNPACK_ROW_LENGTH */ + 2191, /* GL_UNPACK_SKIP_ROWS */ + 2190, /* GL_UNPACK_SKIP_PIXELS */ + 2185, /* GL_UNPACK_ALIGNMENT */ + 1329, /* GL_PACK_SWAP_BYTES */ + 1324, /* GL_PACK_LSB_FIRST */ + 1325, /* GL_PACK_ROW_LENGTH */ + 1328, /* GL_PACK_SKIP_ROWS */ + 1327, /* GL_PACK_SKIP_PIXELS */ + 1321, /* GL_PACK_ALIGNMENT */ + 972, /* GL_MAP_COLOR */ + 977, /* GL_MAP_STENCIL */ + 764, /* GL_INDEX_SHIFT */ + 763, /* GL_INDEX_OFFSET */ + 1582, /* GL_RED_SCALE */ + 1578, /* GL_RED_BIAS */ + 2333, /* GL_ZOOM_X */ + 2334, /* GL_ZOOM_Y */ + 718, /* GL_GREEN_SCALE */ + 714, /* GL_GREEN_BIAS */ 115, /* GL_BLUE_SCALE */ 111, /* GL_BLUE_BIAS */ 50, /* GL_ALPHA_SCALE */ 47, /* GL_ALPHA_BIAS */ 430, /* GL_DEPTH_SCALE */ 406, /* GL_DEPTH_BIAS */ - 1047, /* GL_MAX_EVAL_ORDER */ - 1064, /* GL_MAX_LIGHTS */ - 1027, /* GL_MAX_CLIP_DISTANCES */ - 1120, /* GL_MAX_TEXTURE_SIZE */ - 1071, /* GL_MAX_PIXEL_MAP_TABLE */ - 1023, /* GL_MAX_ATTRIB_STACK_DEPTH */ - 1067, /* GL_MAX_MODELVIEW_STACK_DEPTH */ - 1068, /* GL_MAX_NAME_STACK_DEPTH */ - 1099, /* GL_MAX_PROJECTION_STACK_DEPTH */ - 1121, /* GL_MAX_TEXTURE_STACK_DEPTH */ - 1147, /* GL_MAX_VIEWPORT_DIMS */ - 1024, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ - 1885, /* GL_SUBPIXEL_BITS */ - 743, /* GL_INDEX_BITS */ - 1562, /* GL_RED_BITS */ - 699, /* GL_GREEN_BITS */ + 1064, /* GL_MAX_EVAL_ORDER */ + 1081, /* GL_MAX_LIGHTS */ + 1043, /* GL_MAX_CLIP_DISTANCES */ + 1137, /* GL_MAX_TEXTURE_SIZE */ + 1088, /* GL_MAX_PIXEL_MAP_TABLE */ + 1039, /* GL_MAX_ATTRIB_STACK_DEPTH */ + 1084, /* GL_MAX_MODELVIEW_STACK_DEPTH */ + 1085, /* GL_MAX_NAME_STACK_DEPTH */ + 1116, /* GL_MAX_PROJECTION_STACK_DEPTH */ + 1138, /* GL_MAX_TEXTURE_STACK_DEPTH */ + 1164, /* GL_MAX_VIEWPORT_DIMS */ + 1040, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ + 1902, /* GL_SUBPIXEL_BITS */ + 759, /* GL_INDEX_BITS */ + 1579, /* GL_RED_BITS */ + 715, /* GL_GREEN_BITS */ 112, /* GL_BLUE_BITS */ 48, /* GL_ALPHA_BITS */ 407, /* GL_DEPTH_BITS */ - 1849, /* GL_STENCIL_BITS */ + 1866, /* GL_STENCIL_BITS */ 14, /* GL_ACCUM_RED_BITS */ 13, /* GL_ACCUM_GREEN_BITS */ 10, /* GL_ACCUM_BLUE_BITS */ 9, /* GL_ACCUM_ALPHA_BITS */ - 1219, /* GL_NAME_STACK_DEPTH */ + 1236, /* GL_NAME_STACK_DEPTH */ 70, /* GL_AUTO_NORMAL */ - 902, /* GL_MAP1_COLOR_4 */ - 905, /* GL_MAP1_INDEX */ - 906, /* GL_MAP1_NORMAL */ - 907, /* GL_MAP1_TEXTURE_COORD_1 */ - 908, /* GL_MAP1_TEXTURE_COORD_2 */ - 909, /* GL_MAP1_TEXTURE_COORD_3 */ - 910, /* GL_MAP1_TEXTURE_COORD_4 */ - 911, /* GL_MAP1_VERTEX_3 */ - 912, /* GL_MAP1_VERTEX_4 */ - 929, /* GL_MAP2_COLOR_4 */ - 932, /* GL_MAP2_INDEX */ - 933, /* GL_MAP2_NORMAL */ - 934, /* GL_MAP2_TEXTURE_COORD_1 */ - 935, /* GL_MAP2_TEXTURE_COORD_2 */ - 936, /* GL_MAP2_TEXTURE_COORD_3 */ - 937, /* GL_MAP2_TEXTURE_COORD_4 */ - 938, /* GL_MAP2_VERTEX_3 */ - 939, /* GL_MAP2_VERTEX_4 */ - 903, /* GL_MAP1_GRID_DOMAIN */ - 904, /* GL_MAP1_GRID_SEGMENTS */ - 930, /* GL_MAP2_GRID_DOMAIN */ - 931, /* GL_MAP2_GRID_SEGMENTS */ - 1968, /* GL_TEXTURE_1D */ - 1971, /* GL_TEXTURE_2D */ - 542, /* GL_FEEDBACK_BUFFER_POINTER */ - 543, /* GL_FEEDBACK_BUFFER_SIZE */ - 544, /* GL_FEEDBACK_BUFFER_TYPE */ - 1755, /* GL_SELECTION_BUFFER_POINTER */ - 1756, /* GL_SELECTION_BUFFER_SIZE */ - 2117, /* GL_TEXTURE_WIDTH */ - 2077, /* GL_TEXTURE_HEIGHT */ - 2021, /* GL_TEXTURE_COMPONENTS */ - 1999, /* GL_TEXTURE_BORDER_COLOR */ - 1998, /* GL_TEXTURE_BORDER */ + 918, /* GL_MAP1_COLOR_4 */ + 921, /* GL_MAP1_INDEX */ + 922, /* GL_MAP1_NORMAL */ + 923, /* GL_MAP1_TEXTURE_COORD_1 */ + 924, /* GL_MAP1_TEXTURE_COORD_2 */ + 925, /* GL_MAP1_TEXTURE_COORD_3 */ + 926, /* GL_MAP1_TEXTURE_COORD_4 */ + 927, /* GL_MAP1_VERTEX_3 */ + 928, /* GL_MAP1_VERTEX_4 */ + 945, /* GL_MAP2_COLOR_4 */ + 948, /* GL_MAP2_INDEX */ + 949, /* GL_MAP2_NORMAL */ + 950, /* GL_MAP2_TEXTURE_COORD_1 */ + 951, /* GL_MAP2_TEXTURE_COORD_2 */ + 952, /* GL_MAP2_TEXTURE_COORD_3 */ + 953, /* GL_MAP2_TEXTURE_COORD_4 */ + 954, /* GL_MAP2_VERTEX_3 */ + 955, /* GL_MAP2_VERTEX_4 */ + 919, /* GL_MAP1_GRID_DOMAIN */ + 920, /* GL_MAP1_GRID_SEGMENTS */ + 946, /* GL_MAP2_GRID_DOMAIN */ + 947, /* GL_MAP2_GRID_SEGMENTS */ + 1985, /* GL_TEXTURE_1D */ + 1988, /* GL_TEXTURE_2D */ + 558, /* GL_FEEDBACK_BUFFER_POINTER */ + 559, /* GL_FEEDBACK_BUFFER_SIZE */ + 560, /* GL_FEEDBACK_BUFFER_TYPE */ + 1772, /* GL_SELECTION_BUFFER_POINTER */ + 1773, /* GL_SELECTION_BUFFER_SIZE */ + 2134, /* GL_TEXTURE_WIDTH */ + 2094, /* GL_TEXTURE_HEIGHT */ + 2038, /* GL_TEXTURE_COMPONENTS */ + 2016, /* GL_TEXTURE_BORDER_COLOR */ + 2015, /* GL_TEXTURE_BORDER */ 445, /* GL_DONT_CARE */ - 540, /* GL_FASTEST */ - 1227, /* GL_NICEST */ + 556, /* GL_FASTEST */ + 1244, /* GL_NICEST */ 56, /* GL_AMBIENT */ 442, /* GL_DIFFUSE */ - 1808, /* GL_SPECULAR */ - 1404, /* GL_POSITION */ - 1811, /* GL_SPOT_DIRECTION */ - 1812, /* GL_SPOT_EXPONENT */ - 1810, /* GL_SPOT_CUTOFF */ + 1825, /* GL_SPECULAR */ + 1421, /* GL_POSITION */ + 1828, /* GL_SPOT_DIRECTION */ + 1829, /* GL_SPOT_EXPONENT */ + 1827, /* GL_SPOT_CUTOFF */ 320, /* GL_CONSTANT_ATTENUATION */ - 830, /* GL_LINEAR_ATTENUATION */ - 1521, /* GL_QUADRATIC_ATTENUATION */ + 846, /* GL_LINEAR_ATTENUATION */ + 1538, /* GL_QUADRATIC_ATTENUATION */ 287, /* GL_COMPILE */ 288, /* GL_COMPILE_AND_EXECUTE */ 149, /* GL_BYTE */ - 2177, /* GL_UNSIGNED_BYTE */ - 1773, /* GL_SHORT */ - 2216, /* GL_UNSIGNED_SHORT */ - 752, /* GL_INT */ - 2180, /* GL_UNSIGNED_INT */ - 553, /* GL_FLOAT */ + 2194, /* GL_UNSIGNED_BYTE */ + 1790, /* GL_SHORT */ + 2233, /* GL_UNSIGNED_SHORT */ + 768, /* GL_INT */ + 2197, /* GL_UNSIGNED_INT */ + 569, /* GL_FLOAT */ 1, /* GL_2_BYTES */ 5, /* GL_3_BYTES */ 7, /* GL_4_BYTES */ 452, /* GL_DOUBLE */ - 704, /* GL_HALF_FLOAT */ - 548, /* GL_FIXED */ + 720, /* GL_HALF_FLOAT */ + 564, /* GL_FIXED */ 165, /* GL_CLEAR */ 58, /* GL_AND */ 60, /* GL_AND_REVERSE */ 351, /* GL_COPY */ 59, /* GL_AND_INVERTED */ - 1230, /* GL_NOOP */ - 2312, /* GL_XOR */ - 1299, /* GL_OR */ - 1231, /* GL_NOR */ - 530, /* GL_EQUIV */ - 806, /* GL_INVERT */ - 1302, /* GL_OR_REVERSE */ + 1247, /* GL_NOOP */ + 2329, /* GL_XOR */ + 1316, /* GL_OR */ + 1248, /* GL_NOR */ + 546, /* GL_EQUIV */ + 822, /* GL_INVERT */ + 1319, /* GL_OR_REVERSE */ 352, /* GL_COPY_INVERTED */ - 1301, /* GL_OR_INVERTED */ - 1220, /* GL_NAND */ - 1762, /* GL_SET */ - 527, /* GL_EMISSION */ - 1772, /* GL_SHININESS */ + 1318, /* GL_OR_INVERTED */ + 1237, /* GL_NAND */ + 1779, /* GL_SET */ + 543, /* GL_EMISSION */ + 1789, /* GL_SHININESS */ 57, /* GL_AMBIENT_AND_DIFFUSE */ 232, /* GL_COLOR_INDEXES */ - 1169, /* GL_MODELVIEW */ - 1493, /* GL_PROJECTION */ - 1903, /* GL_TEXTURE */ + 1186, /* GL_MODELVIEW */ + 1510, /* GL_PROJECTION */ + 1920, /* GL_TEXTURE */ 188, /* GL_COLOR */ 399, /* GL_DEPTH */ - 1834, /* GL_STENCIL */ + 1851, /* GL_STENCIL */ 231, /* GL_COLOR_INDEX */ - 1855, /* GL_STENCIL_INDEX */ + 1872, /* GL_STENCIL_INDEX */ 415, /* GL_DEPTH_COMPONENT */ - 1558, /* GL_RED */ - 697, /* GL_GREEN */ + 1575, /* GL_RED */ + 713, /* GL_GREEN */ 110, /* GL_BLUE */ 32, /* GL_ALPHA */ - 1615, /* GL_RGB */ - 1655, /* GL_RGBA */ - 865, /* GL_LUMINANCE */ - 892, /* GL_LUMINANCE_ALPHA */ + 1632, /* GL_RGB */ + 1672, /* GL_RGBA */ + 881, /* GL_LUMINANCE */ + 908, /* GL_LUMINANCE_ALPHA */ 86, /* GL_BITMAP */ - 1354, /* GL_POINT */ - 828, /* GL_LINE */ - 545, /* GL_FILL */ - 1572, /* GL_RENDER */ - 541, /* GL_FEEDBACK */ - 1754, /* GL_SELECT */ - 552, /* GL_FLAT */ - 1783, /* GL_SMOOTH */ - 807, /* GL_KEEP */ - 1605, /* GL_REPLACE */ - 733, /* GL_INCR */ + 1371, /* GL_POINT */ + 844, /* GL_LINE */ + 561, /* GL_FILL */ + 1589, /* GL_RENDER */ + 557, /* GL_FEEDBACK */ + 1771, /* GL_SELECT */ + 568, /* GL_FLAT */ + 1800, /* GL_SMOOTH */ + 823, /* GL_KEEP */ + 1622, /* GL_REPLACE */ + 749, /* GL_INCR */ 395, /* GL_DECR */ - 2233, /* GL_VENDOR */ - 1602, /* GL_RENDERER */ - 2234, /* GL_VERSION */ - 534, /* GL_EXTENSIONS */ - 1703, /* GL_S */ - 1894, /* GL_T */ - 1541, /* GL_R */ - 1520, /* GL_Q */ - 1206, /* GL_MODULATE */ + 2250, /* GL_VENDOR */ + 1619, /* GL_RENDERER */ + 2251, /* GL_VERSION */ + 550, /* GL_EXTENSIONS */ + 1720, /* GL_S */ + 1911, /* GL_T */ + 1558, /* GL_R */ + 1537, /* GL_Q */ + 1223, /* GL_MODULATE */ 394, /* GL_DECAL */ - 2064, /* GL_TEXTURE_ENV_MODE */ - 2063, /* GL_TEXTURE_ENV_COLOR */ - 2062, /* GL_TEXTURE_ENV */ - 535, /* GL_EYE_LINEAR */ - 1260, /* GL_OBJECT_LINEAR */ - 1809, /* GL_SPHERE_MAP */ - 2067, /* GL_TEXTURE_GEN_MODE */ - 1262, /* GL_OBJECT_PLANE */ - 536, /* GL_EYE_PLANE */ - 1221, /* GL_NEAREST */ - 829, /* GL_LINEAR */ - 1225, /* GL_NEAREST_MIPMAP_NEAREST */ - 834, /* GL_LINEAR_MIPMAP_NEAREST */ - 1224, /* GL_NEAREST_MIPMAP_LINEAR */ - 833, /* GL_LINEAR_MIPMAP_LINEAR */ - 2090, /* GL_TEXTURE_MAG_FILTER */ - 2099, /* GL_TEXTURE_MIN_FILTER */ - 2120, /* GL_TEXTURE_WRAP_S */ - 2121, /* GL_TEXTURE_WRAP_T */ + 2081, /* GL_TEXTURE_ENV_MODE */ + 2080, /* GL_TEXTURE_ENV_COLOR */ + 2079, /* GL_TEXTURE_ENV */ + 551, /* GL_EYE_LINEAR */ + 1277, /* GL_OBJECT_LINEAR */ + 1826, /* GL_SPHERE_MAP */ + 2084, /* GL_TEXTURE_GEN_MODE */ + 1279, /* GL_OBJECT_PLANE */ + 552, /* GL_EYE_PLANE */ + 1238, /* GL_NEAREST */ + 845, /* GL_LINEAR */ + 1242, /* GL_NEAREST_MIPMAP_NEAREST */ + 850, /* GL_LINEAR_MIPMAP_NEAREST */ + 1241, /* GL_NEAREST_MIPMAP_LINEAR */ + 849, /* GL_LINEAR_MIPMAP_LINEAR */ + 2107, /* GL_TEXTURE_MAG_FILTER */ + 2116, /* GL_TEXTURE_MIN_FILTER */ + 2137, /* GL_TEXTURE_WRAP_S */ + 2138, /* GL_TEXTURE_WRAP_T */ 155, /* GL_CLAMP */ - 1604, /* GL_REPEAT */ - 1398, /* GL_POLYGON_OFFSET_UNITS */ - 1397, /* GL_POLYGON_OFFSET_POINT */ - 1396, /* GL_POLYGON_OFFSET_LINE */ - 1544, /* GL_R3_G3_B2 */ - 2230, /* GL_V2F */ - 2231, /* GL_V3F */ + 1621, /* GL_REPEAT */ + 1415, /* GL_POLYGON_OFFSET_UNITS */ + 1414, /* GL_POLYGON_OFFSET_POINT */ + 1413, /* GL_POLYGON_OFFSET_LINE */ + 1561, /* GL_R3_G3_B2 */ + 2247, /* GL_V2F */ + 2248, /* GL_V3F */ 152, /* GL_C4UB_V2F */ 153, /* GL_C4UB_V3F */ 150, /* GL_C3F_V3F */ - 1218, /* GL_N3F_V3F */ + 1235, /* GL_N3F_V3F */ 151, /* GL_C4F_N3F_V3F */ - 1899, /* GL_T2F_V3F */ - 1901, /* GL_T4F_V4F */ - 1897, /* GL_T2F_C4UB_V3F */ - 1895, /* GL_T2F_C3F_V3F */ - 1898, /* GL_T2F_N3F_V3F */ - 1896, /* GL_T2F_C4F_N3F_V3F */ - 1900, /* GL_T4F_C4F_N3F_V4F */ + 1916, /* GL_T2F_V3F */ + 1918, /* GL_T4F_V4F */ + 1914, /* GL_T2F_C4UB_V3F */ + 1912, /* GL_T2F_C3F_V3F */ + 1915, /* GL_T2F_N3F_V3F */ + 1913, /* GL_T2F_C4F_N3F_V3F */ + 1917, /* GL_T4F_C4F_N3F_V4F */ 172, /* GL_CLIP_DISTANCE0 */ 173, /* GL_CLIP_DISTANCE1 */ 174, /* GL_CLIP_DISTANCE2 */ @@ -5110,184 +5144,184 @@ static const unsigned reduced_enums[1564] = 177, /* GL_CLIP_DISTANCE5 */ 178, /* GL_CLIP_DISTANCE6 */ 179, /* GL_CLIP_DISTANCE7 */ - 813, /* GL_LIGHT0 */ - 814, /* GL_LIGHT1 */ - 815, /* GL_LIGHT2 */ - 816, /* GL_LIGHT3 */ - 817, /* GL_LIGHT4 */ - 818, /* GL_LIGHT5 */ - 819, /* GL_LIGHT6 */ - 820, /* GL_LIGHT7 */ - 708, /* GL_HINT_BIT */ + 829, /* GL_LIGHT0 */ + 830, /* GL_LIGHT1 */ + 831, /* GL_LIGHT2 */ + 832, /* GL_LIGHT3 */ + 833, /* GL_LIGHT4 */ + 834, /* GL_LIGHT5 */ + 835, /* GL_LIGHT6 */ + 836, /* GL_LIGHT7 */ + 724, /* GL_HINT_BIT */ 322, /* GL_CONSTANT_COLOR */ - 1273, /* GL_ONE_MINUS_CONSTANT_COLOR */ + 1290, /* GL_ONE_MINUS_CONSTANT_COLOR */ 317, /* GL_CONSTANT_ALPHA */ - 1271, /* GL_ONE_MINUS_CONSTANT_ALPHA */ + 1288, /* GL_ONE_MINUS_CONSTANT_ALPHA */ 89, /* GL_BLEND_COLOR */ - 674, /* GL_FUNC_ADD */ - 1150, /* GL_MIN */ - 1018, /* GL_MAX */ + 690, /* GL_FUNC_ADD */ + 1167, /* GL_MIN */ + 1034, /* GL_MAX */ 96, /* GL_BLEND_EQUATION */ - 680, /* GL_FUNC_SUBTRACT */ - 677, /* GL_FUNC_REVERSE_SUBTRACT */ + 696, /* GL_FUNC_SUBTRACT */ + 693, /* GL_FUNC_REVERSE_SUBTRACT */ 331, /* GL_CONVOLUTION_1D */ 332, /* GL_CONVOLUTION_2D */ - 1757, /* GL_SEPARABLE_2D */ + 1774, /* GL_SEPARABLE_2D */ 335, /* GL_CONVOLUTION_BORDER_MODE */ 339, /* GL_CONVOLUTION_FILTER_SCALE */ 337, /* GL_CONVOLUTION_FILTER_BIAS */ - 1559, /* GL_REDUCE */ + 1576, /* GL_REDUCE */ 341, /* GL_CONVOLUTION_FORMAT */ 345, /* GL_CONVOLUTION_WIDTH */ 343, /* GL_CONVOLUTION_HEIGHT */ - 1037, /* GL_MAX_CONVOLUTION_WIDTH */ - 1035, /* GL_MAX_CONVOLUTION_HEIGHT */ - 1437, /* GL_POST_CONVOLUTION_RED_SCALE */ - 1433, /* GL_POST_CONVOLUTION_GREEN_SCALE */ - 1428, /* GL_POST_CONVOLUTION_BLUE_SCALE */ - 1424, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ - 1435, /* GL_POST_CONVOLUTION_RED_BIAS */ - 1431, /* GL_POST_CONVOLUTION_GREEN_BIAS */ - 1426, /* GL_POST_CONVOLUTION_BLUE_BIAS */ - 1422, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ - 709, /* GL_HISTOGRAM */ - 1500, /* GL_PROXY_HISTOGRAM */ - 725, /* GL_HISTOGRAM_WIDTH */ - 715, /* GL_HISTOGRAM_FORMAT */ - 721, /* GL_HISTOGRAM_RED_SIZE */ - 717, /* GL_HISTOGRAM_GREEN_SIZE */ - 712, /* GL_HISTOGRAM_BLUE_SIZE */ - 710, /* GL_HISTOGRAM_ALPHA_SIZE */ - 719, /* GL_HISTOGRAM_LUMINANCE_SIZE */ - 723, /* GL_HISTOGRAM_SINK */ - 1151, /* GL_MINMAX */ - 1153, /* GL_MINMAX_FORMAT */ - 1155, /* GL_MINMAX_SINK */ - 1902, /* GL_TABLE_TOO_LARGE_EXT */ - 2179, /* GL_UNSIGNED_BYTE_3_3_2 */ - 2219, /* GL_UNSIGNED_SHORT_4_4_4_4 */ - 2222, /* GL_UNSIGNED_SHORT_5_5_5_1 */ - 2191, /* GL_UNSIGNED_INT_8_8_8_8 */ - 2182, /* GL_UNSIGNED_INT_10_10_10_2 */ - 1395, /* GL_POLYGON_OFFSET_FILL */ - 1394, /* GL_POLYGON_OFFSET_FACTOR */ - 1393, /* GL_POLYGON_OFFSET_BIAS */ - 1608, /* GL_RESCALE_NORMAL */ + 1053, /* GL_MAX_CONVOLUTION_WIDTH */ + 1051, /* GL_MAX_CONVOLUTION_HEIGHT */ + 1454, /* GL_POST_CONVOLUTION_RED_SCALE */ + 1450, /* GL_POST_CONVOLUTION_GREEN_SCALE */ + 1445, /* GL_POST_CONVOLUTION_BLUE_SCALE */ + 1441, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ + 1452, /* GL_POST_CONVOLUTION_RED_BIAS */ + 1448, /* GL_POST_CONVOLUTION_GREEN_BIAS */ + 1443, /* GL_POST_CONVOLUTION_BLUE_BIAS */ + 1439, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ + 725, /* GL_HISTOGRAM */ + 1517, /* GL_PROXY_HISTOGRAM */ + 741, /* GL_HISTOGRAM_WIDTH */ + 731, /* GL_HISTOGRAM_FORMAT */ + 737, /* GL_HISTOGRAM_RED_SIZE */ + 733, /* GL_HISTOGRAM_GREEN_SIZE */ + 728, /* GL_HISTOGRAM_BLUE_SIZE */ + 726, /* GL_HISTOGRAM_ALPHA_SIZE */ + 735, /* GL_HISTOGRAM_LUMINANCE_SIZE */ + 739, /* GL_HISTOGRAM_SINK */ + 1168, /* GL_MINMAX */ + 1170, /* GL_MINMAX_FORMAT */ + 1172, /* GL_MINMAX_SINK */ + 1919, /* GL_TABLE_TOO_LARGE_EXT */ + 2196, /* GL_UNSIGNED_BYTE_3_3_2 */ + 2236, /* GL_UNSIGNED_SHORT_4_4_4_4 */ + 2239, /* GL_UNSIGNED_SHORT_5_5_5_1 */ + 2208, /* GL_UNSIGNED_INT_8_8_8_8 */ + 2199, /* GL_UNSIGNED_INT_10_10_10_2 */ + 1412, /* GL_POLYGON_OFFSET_FILL */ + 1411, /* GL_POLYGON_OFFSET_FACTOR */ + 1410, /* GL_POLYGON_OFFSET_BIAS */ + 1625, /* GL_RESCALE_NORMAL */ 41, /* GL_ALPHA4 */ 43, /* GL_ALPHA8 */ 33, /* GL_ALPHA12 */ 35, /* GL_ALPHA16 */ - 880, /* GL_LUMINANCE4 */ - 886, /* GL_LUMINANCE8 */ - 866, /* GL_LUMINANCE12 */ - 872, /* GL_LUMINANCE16 */ - 881, /* GL_LUMINANCE4_ALPHA4 */ - 884, /* GL_LUMINANCE6_ALPHA2 */ - 889, /* GL_LUMINANCE8_ALPHA8 */ - 869, /* GL_LUMINANCE12_ALPHA4 */ - 867, /* GL_LUMINANCE12_ALPHA12 */ - 875, /* GL_LUMINANCE16_ALPHA16 */ - 753, /* GL_INTENSITY */ - 762, /* GL_INTENSITY4 */ - 764, /* GL_INTENSITY8 */ - 754, /* GL_INTENSITY12 */ - 756, /* GL_INTENSITY16 */ - 1630, /* GL_RGB2_EXT */ - 1636, /* GL_RGB4 */ - 1639, /* GL_RGB5 */ - 1646, /* GL_RGB8 */ - 1616, /* GL_RGB10 */ - 1620, /* GL_RGB12 */ - 1622, /* GL_RGB16 */ - 1666, /* GL_RGBA2 */ - 1673, /* GL_RGBA4 */ - 1642, /* GL_RGB5_A1 */ - 1678, /* GL_RGBA8 */ - 1617, /* GL_RGB10_A2 */ - 1656, /* GL_RGBA12 */ - 1658, /* GL_RGBA16 */ - 2107, /* GL_TEXTURE_RED_SIZE */ - 2075, /* GL_TEXTURE_GREEN_SIZE */ - 1996, /* GL_TEXTURE_BLUE_SIZE */ - 1976, /* GL_TEXTURE_ALPHA_SIZE */ - 2088, /* GL_TEXTURE_LUMINANCE_SIZE */ - 2079, /* GL_TEXTURE_INTENSITY_SIZE */ - 1606, /* GL_REPLACE_EXT */ - 1504, /* GL_PROXY_TEXTURE_1D */ - 1508, /* GL_PROXY_TEXTURE_2D */ - 2115, /* GL_TEXTURE_TOO_LARGE_EXT */ - 2101, /* GL_TEXTURE_PRIORITY */ - 2109, /* GL_TEXTURE_RESIDENT */ - 1979, /* GL_TEXTURE_BINDING_1D */ - 1982, /* GL_TEXTURE_BINDING_2D */ - 1985, /* GL_TEXTURE_BINDING_3D */ - 1309, /* GL_PACK_SKIP_IMAGES */ - 1305, /* GL_PACK_IMAGE_HEIGHT */ - 2172, /* GL_UNPACK_SKIP_IMAGES */ - 2169, /* GL_UNPACK_IMAGE_HEIGHT */ - 1974, /* GL_TEXTURE_3D */ - 1512, /* GL_PROXY_TEXTURE_3D */ - 2059, /* GL_TEXTURE_DEPTH */ - 2118, /* GL_TEXTURE_WRAP_R */ - 1019, /* GL_MAX_3D_TEXTURE_SIZE */ - 2235, /* GL_VERTEX_ARRAY */ - 1233, /* GL_NORMAL_ARRAY */ + 896, /* GL_LUMINANCE4 */ + 902, /* GL_LUMINANCE8 */ + 882, /* GL_LUMINANCE12 */ + 888, /* GL_LUMINANCE16 */ + 897, /* GL_LUMINANCE4_ALPHA4 */ + 900, /* GL_LUMINANCE6_ALPHA2 */ + 905, /* GL_LUMINANCE8_ALPHA8 */ + 885, /* GL_LUMINANCE12_ALPHA4 */ + 883, /* GL_LUMINANCE12_ALPHA12 */ + 891, /* GL_LUMINANCE16_ALPHA16 */ + 769, /* GL_INTENSITY */ + 778, /* GL_INTENSITY4 */ + 780, /* GL_INTENSITY8 */ + 770, /* GL_INTENSITY12 */ + 772, /* GL_INTENSITY16 */ + 1647, /* GL_RGB2_EXT */ + 1653, /* GL_RGB4 */ + 1656, /* GL_RGB5 */ + 1663, /* GL_RGB8 */ + 1633, /* GL_RGB10 */ + 1637, /* GL_RGB12 */ + 1639, /* GL_RGB16 */ + 1683, /* GL_RGBA2 */ + 1690, /* GL_RGBA4 */ + 1659, /* GL_RGB5_A1 */ + 1695, /* GL_RGBA8 */ + 1634, /* GL_RGB10_A2 */ + 1673, /* GL_RGBA12 */ + 1675, /* GL_RGBA16 */ + 2124, /* GL_TEXTURE_RED_SIZE */ + 2092, /* GL_TEXTURE_GREEN_SIZE */ + 2013, /* GL_TEXTURE_BLUE_SIZE */ + 1993, /* GL_TEXTURE_ALPHA_SIZE */ + 2105, /* GL_TEXTURE_LUMINANCE_SIZE */ + 2096, /* GL_TEXTURE_INTENSITY_SIZE */ + 1623, /* GL_REPLACE_EXT */ + 1521, /* GL_PROXY_TEXTURE_1D */ + 1525, /* GL_PROXY_TEXTURE_2D */ + 2132, /* GL_TEXTURE_TOO_LARGE_EXT */ + 2118, /* GL_TEXTURE_PRIORITY */ + 2126, /* GL_TEXTURE_RESIDENT */ + 1996, /* GL_TEXTURE_BINDING_1D */ + 1999, /* GL_TEXTURE_BINDING_2D */ + 2002, /* GL_TEXTURE_BINDING_3D */ + 1326, /* GL_PACK_SKIP_IMAGES */ + 1322, /* GL_PACK_IMAGE_HEIGHT */ + 2189, /* GL_UNPACK_SKIP_IMAGES */ + 2186, /* GL_UNPACK_IMAGE_HEIGHT */ + 1991, /* GL_TEXTURE_3D */ + 1529, /* GL_PROXY_TEXTURE_3D */ + 2076, /* GL_TEXTURE_DEPTH */ + 2135, /* GL_TEXTURE_WRAP_R */ + 1035, /* GL_MAX_3D_TEXTURE_SIZE */ + 2252, /* GL_VERTEX_ARRAY */ + 1250, /* GL_NORMAL_ARRAY */ 189, /* GL_COLOR_ARRAY */ - 737, /* GL_INDEX_ARRAY */ - 2029, /* GL_TEXTURE_COORD_ARRAY */ - 519, /* GL_EDGE_FLAG_ARRAY */ - 2241, /* GL_VERTEX_ARRAY_SIZE */ - 2243, /* GL_VERTEX_ARRAY_TYPE */ - 2242, /* GL_VERTEX_ARRAY_STRIDE */ - 1238, /* GL_NORMAL_ARRAY_TYPE */ - 1237, /* GL_NORMAL_ARRAY_STRIDE */ + 753, /* GL_INDEX_ARRAY */ + 2046, /* GL_TEXTURE_COORD_ARRAY */ + 535, /* GL_EDGE_FLAG_ARRAY */ + 2258, /* GL_VERTEX_ARRAY_SIZE */ + 2260, /* GL_VERTEX_ARRAY_TYPE */ + 2259, /* GL_VERTEX_ARRAY_STRIDE */ + 1255, /* GL_NORMAL_ARRAY_TYPE */ + 1254, /* GL_NORMAL_ARRAY_STRIDE */ 193, /* GL_COLOR_ARRAY_SIZE */ 195, /* GL_COLOR_ARRAY_TYPE */ 194, /* GL_COLOR_ARRAY_STRIDE */ - 742, /* GL_INDEX_ARRAY_TYPE */ - 741, /* GL_INDEX_ARRAY_STRIDE */ - 2033, /* GL_TEXTURE_COORD_ARRAY_SIZE */ - 2035, /* GL_TEXTURE_COORD_ARRAY_TYPE */ - 2034, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ - 523, /* GL_EDGE_FLAG_ARRAY_STRIDE */ - 2240, /* GL_VERTEX_ARRAY_POINTER */ - 1236, /* GL_NORMAL_ARRAY_POINTER */ + 758, /* GL_INDEX_ARRAY_TYPE */ + 757, /* GL_INDEX_ARRAY_STRIDE */ + 2050, /* GL_TEXTURE_COORD_ARRAY_SIZE */ + 2052, /* GL_TEXTURE_COORD_ARRAY_TYPE */ + 2051, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ + 539, /* GL_EDGE_FLAG_ARRAY_STRIDE */ + 2257, /* GL_VERTEX_ARRAY_POINTER */ + 1253, /* GL_NORMAL_ARRAY_POINTER */ 192, /* GL_COLOR_ARRAY_POINTER */ - 740, /* GL_INDEX_ARRAY_POINTER */ - 2032, /* GL_TEXTURE_COORD_ARRAY_POINTER */ - 522, /* GL_EDGE_FLAG_ARRAY_POINTER */ - 1211, /* GL_MULTISAMPLE */ - 1731, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ - 1733, /* GL_SAMPLE_ALPHA_TO_ONE */ - 1738, /* GL_SAMPLE_COVERAGE */ - 1735, /* GL_SAMPLE_BUFFERS */ - 1726, /* GL_SAMPLES */ - 1742, /* GL_SAMPLE_COVERAGE_VALUE */ - 1740, /* GL_SAMPLE_COVERAGE_INVERT */ + 756, /* GL_INDEX_ARRAY_POINTER */ + 2049, /* GL_TEXTURE_COORD_ARRAY_POINTER */ + 538, /* GL_EDGE_FLAG_ARRAY_POINTER */ + 1228, /* GL_MULTISAMPLE */ + 1748, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ + 1750, /* GL_SAMPLE_ALPHA_TO_ONE */ + 1755, /* GL_SAMPLE_COVERAGE */ + 1752, /* GL_SAMPLE_BUFFERS */ + 1743, /* GL_SAMPLES */ + 1759, /* GL_SAMPLE_COVERAGE_VALUE */ + 1757, /* GL_SAMPLE_COVERAGE_INVERT */ 237, /* GL_COLOR_MATRIX */ 239, /* GL_COLOR_MATRIX_STACK_DEPTH */ - 1031, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ - 1420, /* GL_POST_COLOR_MATRIX_RED_SCALE */ - 1416, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ - 1411, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ - 1407, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ - 1418, /* GL_POST_COLOR_MATRIX_RED_BIAS */ - 1414, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ - 1409, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ - 1405, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ - 2012, /* GL_TEXTURE_COLOR_TABLE_SGI */ - 1513, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ - 2014, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ + 1047, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ + 1437, /* GL_POST_COLOR_MATRIX_RED_SCALE */ + 1433, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ + 1428, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ + 1424, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ + 1435, /* GL_POST_COLOR_MATRIX_RED_BIAS */ + 1431, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ + 1426, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ + 1422, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ + 2029, /* GL_TEXTURE_COLOR_TABLE_SGI */ + 1530, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ + 2031, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ 94, /* GL_BLEND_DST_RGB */ 108, /* GL_BLEND_SRC_RGB */ 92, /* GL_BLEND_DST_ALPHA */ 106, /* GL_BLEND_SRC_ALPHA */ 243, /* GL_COLOR_TABLE */ - 1430, /* GL_POST_CONVOLUTION_COLOR_TABLE */ - 1413, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ - 1499, /* GL_PROXY_COLOR_TABLE */ - 1503, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ - 1502, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ + 1447, /* GL_POST_CONVOLUTION_COLOR_TABLE */ + 1430, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ + 1516, /* GL_PROXY_COLOR_TABLE */ + 1520, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ + 1519, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ 267, /* GL_COLOR_TABLE_SCALE */ 247, /* GL_COLOR_TABLE_BIAS */ 252, /* GL_COLOR_TABLE_FORMAT */ @@ -5300,398 +5334,398 @@ static const unsigned reduced_enums[1564] = 258, /* GL_COLOR_TABLE_INTENSITY_SIZE */ 79, /* GL_BGR */ 80, /* GL_BGRA */ - 1046, /* GL_MAX_ELEMENTS_VERTICES */ - 1045, /* GL_MAX_ELEMENTS_INDICES */ - 2078, /* GL_TEXTURE_INDEX_SIZE_EXT */ + 1063, /* GL_MAX_ELEMENTS_VERTICES */ + 1062, /* GL_MAX_ELEMENTS_INDICES */ + 2095, /* GL_TEXTURE_INDEX_SIZE_EXT */ 186, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */ - 1376, /* GL_POINT_SIZE_MIN */ - 1372, /* GL_POINT_SIZE_MAX */ - 1361, /* GL_POINT_FADE_THRESHOLD_SIZE */ - 1357, /* GL_POINT_DISTANCE_ATTENUATION */ + 1393, /* GL_POINT_SIZE_MIN */ + 1389, /* GL_POINT_SIZE_MAX */ + 1378, /* GL_POINT_FADE_THRESHOLD_SIZE */ + 1374, /* GL_POINT_DISTANCE_ATTENUATION */ 159, /* GL_CLAMP_TO_BORDER */ 162, /* GL_CLAMP_TO_EDGE */ - 2100, /* GL_TEXTURE_MIN_LOD */ - 2098, /* GL_TEXTURE_MAX_LOD */ - 1978, /* GL_TEXTURE_BASE_LEVEL */ - 2097, /* GL_TEXTURE_MAX_LEVEL */ - 728, /* GL_IGNORE_BORDER_HP */ + 2117, /* GL_TEXTURE_MIN_LOD */ + 2115, /* GL_TEXTURE_MAX_LOD */ + 1995, /* GL_TEXTURE_BASE_LEVEL */ + 2114, /* GL_TEXTURE_MAX_LEVEL */ + 744, /* GL_IGNORE_BORDER_HP */ 321, /* GL_CONSTANT_BORDER_HP */ - 1607, /* GL_REPLICATE_BORDER_HP */ + 1624, /* GL_REPLICATE_BORDER_HP */ 333, /* GL_CONVOLUTION_BORDER_COLOR */ - 1268, /* GL_OCCLUSION_TEST_HP */ - 1269, /* GL_OCCLUSION_TEST_RESULT_HP */ - 831, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ - 2006, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ - 2008, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ - 2010, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ - 2011, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - 2009, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ - 2007, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ - 1025, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ - 1026, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - 1440, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ - 1442, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ - 1439, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ - 1441, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ - 2086, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ - 2087, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ - 2085, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ - 683, /* GL_GENERATE_MIPMAP */ - 684, /* GL_GENERATE_MIPMAP_HINT */ - 596, /* GL_FOG_OFFSET_SGIX */ - 597, /* GL_FOG_OFFSET_VALUE_SGIX */ - 2020, /* GL_TEXTURE_COMPARE_SGIX */ - 2019, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ - 2082, /* GL_TEXTURE_LEQUAL_R_SGIX */ - 2074, /* GL_TEXTURE_GEQUAL_R_SGIX */ + 1285, /* GL_OCCLUSION_TEST_HP */ + 1286, /* GL_OCCLUSION_TEST_RESULT_HP */ + 847, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ + 2023, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ + 2025, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ + 2027, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ + 2028, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + 2026, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ + 2024, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ + 1041, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ + 1042, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + 1457, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ + 1459, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ + 1456, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ + 1458, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ + 2103, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ + 2104, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ + 2102, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ + 699, /* GL_GENERATE_MIPMAP */ + 700, /* GL_GENERATE_MIPMAP_HINT */ + 612, /* GL_FOG_OFFSET_SGIX */ + 613, /* GL_FOG_OFFSET_VALUE_SGIX */ + 2037, /* GL_TEXTURE_COMPARE_SGIX */ + 2036, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ + 2099, /* GL_TEXTURE_LEQUAL_R_SGIX */ + 2091, /* GL_TEXTURE_GEQUAL_R_SGIX */ 416, /* GL_DEPTH_COMPONENT16 */ 420, /* GL_DEPTH_COMPONENT24 */ 424, /* GL_DEPTH_COMPONENT32 */ 358, /* GL_CULL_VERTEX_EXT */ 360, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ 359, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ - 2308, /* GL_WRAP_BORDER_SUN */ - 2013, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ - 824, /* GL_LIGHT_MODEL_COLOR_CONTROL */ - 1776, /* GL_SINGLE_COLOR */ - 1760, /* GL_SEPARATE_SPECULAR_COLOR */ - 1771, /* GL_SHARED_TEXTURE_PALETTE_EXT */ - 608, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ - 609, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ - 620, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ - 611, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ - 607, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ - 606, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ - 610, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ - 621, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ - 638, /* GL_FRAMEBUFFER_DEFAULT */ - 665, /* GL_FRAMEBUFFER_UNDEFINED */ + 2325, /* GL_WRAP_BORDER_SUN */ + 2030, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ + 840, /* GL_LIGHT_MODEL_COLOR_CONTROL */ + 1793, /* GL_SINGLE_COLOR */ + 1777, /* GL_SEPARATE_SPECULAR_COLOR */ + 1788, /* GL_SHARED_TEXTURE_PALETTE_EXT */ + 624, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ + 625, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ + 636, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ + 627, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ + 623, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ + 622, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ + 626, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ + 637, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ + 654, /* GL_FRAMEBUFFER_DEFAULT */ + 681, /* GL_FRAMEBUFFER_UNDEFINED */ 432, /* GL_DEPTH_STENCIL_ATTACHMENT */ - 901, /* GL_MAJOR_VERSION */ - 1157, /* GL_MINOR_VERSION */ - 1248, /* GL_NUM_EXTENSIONS */ + 917, /* GL_MAJOR_VERSION */ + 1174, /* GL_MINOR_VERSION */ + 1265, /* GL_NUM_EXTENSIONS */ 327, /* GL_CONTEXT_FLAGS */ - 736, /* GL_INDEX */ + 752, /* GL_INDEX */ 410, /* GL_DEPTH_BUFFER */ - 1850, /* GL_STENCIL_BUFFER */ + 1867, /* GL_STENCIL_BUFFER */ 298, /* GL_COMPRESSED_RED */ 299, /* GL_COMPRESSED_RG */ - 861, /* GL_LOSE_CONTEXT_ON_RESET_ARB */ - 703, /* GL_GUILTY_CONTEXT_RESET_ARB */ - 751, /* GL_INNOCENT_CONTEXT_RESET_ARB */ - 2167, /* GL_UNKNOWN_CONTEXT_RESET_ARB */ - 1610, /* GL_RESET_NOTIFICATION_STRATEGY_ARB */ - 1462, /* GL_PROGRAM_BINARY_RETRIEVABLE_HINT */ - 1245, /* GL_NO_RESET_NOTIFICATION_ARB */ - 2178, /* GL_UNSIGNED_BYTE_2_3_3_REV */ - 2223, /* GL_UNSIGNED_SHORT_5_6_5 */ - 2224, /* GL_UNSIGNED_SHORT_5_6_5_REV */ - 2220, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ - 2217, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ - 2192, /* GL_UNSIGNED_INT_8_8_8_8_REV */ - 2188, /* GL_UNSIGNED_INT_2_10_10_10_REV */ - 2095, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ - 2096, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ - 2094, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ - 1161, /* GL_MIRRORED_REPEAT */ - 1696, /* GL_RGB_S3TC */ - 1638, /* GL_RGB4_S3TC */ - 1692, /* GL_RGBA_S3TC */ - 1677, /* GL_RGBA4_S3TC */ - 1686, /* GL_RGBA_DXT5_S3TC */ - 1674, /* GL_RGBA4_DXT5_S3TC */ + 877, /* GL_LOSE_CONTEXT_ON_RESET_ARB */ + 719, /* GL_GUILTY_CONTEXT_RESET_ARB */ + 767, /* GL_INNOCENT_CONTEXT_RESET_ARB */ + 2184, /* GL_UNKNOWN_CONTEXT_RESET_ARB */ + 1627, /* GL_RESET_NOTIFICATION_STRATEGY_ARB */ + 1479, /* GL_PROGRAM_BINARY_RETRIEVABLE_HINT */ + 1262, /* GL_NO_RESET_NOTIFICATION_ARB */ + 2195, /* GL_UNSIGNED_BYTE_2_3_3_REV */ + 2240, /* GL_UNSIGNED_SHORT_5_6_5 */ + 2241, /* GL_UNSIGNED_SHORT_5_6_5_REV */ + 2237, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ + 2234, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ + 2209, /* GL_UNSIGNED_INT_8_8_8_8_REV */ + 2205, /* GL_UNSIGNED_INT_2_10_10_10_REV */ + 2112, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ + 2113, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ + 2111, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ + 1178, /* GL_MIRRORED_REPEAT */ + 1713, /* GL_RGB_S3TC */ + 1655, /* GL_RGB4_S3TC */ + 1709, /* GL_RGBA_S3TC */ + 1694, /* GL_RGBA4_S3TC */ + 1703, /* GL_RGBA_DXT5_S3TC */ + 1691, /* GL_RGBA4_DXT5_S3TC */ 309, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */ 304, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */ 305, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */ 306, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */ - 1223, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ - 1222, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ - 832, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ - 583, /* GL_FOG_COORDINATE_SOURCE */ - 575, /* GL_FOG_COORD */ - 599, /* GL_FRAGMENT_DEPTH */ + 1240, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ + 1239, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ + 848, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ + 599, /* GL_FOG_COORDINATE_SOURCE */ + 591, /* GL_FOG_COORD */ + 615, /* GL_FRAGMENT_DEPTH */ 364, /* GL_CURRENT_FOG_COORD */ - 582, /* GL_FOG_COORDINATE_ARRAY_TYPE */ - 581, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ - 580, /* GL_FOG_COORDINATE_ARRAY_POINTER */ - 577, /* GL_FOG_COORDINATE_ARRAY */ + 598, /* GL_FOG_COORDINATE_ARRAY_TYPE */ + 597, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ + 596, /* GL_FOG_COORDINATE_ARRAY_POINTER */ + 593, /* GL_FOG_COORDINATE_ARRAY */ 241, /* GL_COLOR_SUM */ 385, /* GL_CURRENT_SECONDARY_COLOR */ - 1751, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ - 1753, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ - 1752, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ - 1750, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ - 1747, /* GL_SECONDARY_COLOR_ARRAY */ + 1768, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ + 1770, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ + 1769, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ + 1767, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ + 1764, /* GL_SECONDARY_COLOR_ARRAY */ 383, /* GL_CURRENT_RASTER_SECONDARY_COLOR */ 29, /* GL_ALIASED_POINT_SIZE_RANGE */ 28, /* GL_ALIASED_LINE_WIDTH_RANGE */ - 1904, /* GL_TEXTURE0 */ - 1906, /* GL_TEXTURE1 */ - 1928, /* GL_TEXTURE2 */ - 1950, /* GL_TEXTURE3 */ - 1956, /* GL_TEXTURE4 */ - 1958, /* GL_TEXTURE5 */ - 1960, /* GL_TEXTURE6 */ - 1962, /* GL_TEXTURE7 */ - 1964, /* GL_TEXTURE8 */ - 1966, /* GL_TEXTURE9 */ - 1907, /* GL_TEXTURE10 */ - 1909, /* GL_TEXTURE11 */ - 1911, /* GL_TEXTURE12 */ - 1913, /* GL_TEXTURE13 */ - 1915, /* GL_TEXTURE14 */ - 1917, /* GL_TEXTURE15 */ - 1919, /* GL_TEXTURE16 */ - 1921, /* GL_TEXTURE17 */ - 1923, /* GL_TEXTURE18 */ - 1925, /* GL_TEXTURE19 */ - 1929, /* GL_TEXTURE20 */ - 1931, /* GL_TEXTURE21 */ - 1933, /* GL_TEXTURE22 */ - 1935, /* GL_TEXTURE23 */ - 1937, /* GL_TEXTURE24 */ - 1939, /* GL_TEXTURE25 */ - 1941, /* GL_TEXTURE26 */ - 1943, /* GL_TEXTURE27 */ - 1945, /* GL_TEXTURE28 */ - 1947, /* GL_TEXTURE29 */ - 1951, /* GL_TEXTURE30 */ - 1953, /* GL_TEXTURE31 */ + 1921, /* GL_TEXTURE0 */ + 1923, /* GL_TEXTURE1 */ + 1945, /* GL_TEXTURE2 */ + 1967, /* GL_TEXTURE3 */ + 1973, /* GL_TEXTURE4 */ + 1975, /* GL_TEXTURE5 */ + 1977, /* GL_TEXTURE6 */ + 1979, /* GL_TEXTURE7 */ + 1981, /* GL_TEXTURE8 */ + 1983, /* GL_TEXTURE9 */ + 1924, /* GL_TEXTURE10 */ + 1926, /* GL_TEXTURE11 */ + 1928, /* GL_TEXTURE12 */ + 1930, /* GL_TEXTURE13 */ + 1932, /* GL_TEXTURE14 */ + 1934, /* GL_TEXTURE15 */ + 1936, /* GL_TEXTURE16 */ + 1938, /* GL_TEXTURE17 */ + 1940, /* GL_TEXTURE18 */ + 1942, /* GL_TEXTURE19 */ + 1946, /* GL_TEXTURE20 */ + 1948, /* GL_TEXTURE21 */ + 1950, /* GL_TEXTURE22 */ + 1952, /* GL_TEXTURE23 */ + 1954, /* GL_TEXTURE24 */ + 1956, /* GL_TEXTURE25 */ + 1958, /* GL_TEXTURE26 */ + 1960, /* GL_TEXTURE27 */ + 1962, /* GL_TEXTURE28 */ + 1964, /* GL_TEXTURE29 */ + 1968, /* GL_TEXTURE30 */ + 1970, /* GL_TEXTURE31 */ 19, /* GL_ACTIVE_TEXTURE */ 166, /* GL_CLIENT_ACTIVE_TEXTURE */ - 1122, /* GL_MAX_TEXTURE_UNITS */ - 2150, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ - 2153, /* GL_TRANSPOSE_PROJECTION_MATRIX */ - 2155, /* GL_TRANSPOSE_TEXTURE_MATRIX */ - 2147, /* GL_TRANSPOSE_COLOR_MATRIX */ - 1886, /* GL_SUBTRACT */ - 1103, /* GL_MAX_RENDERBUFFER_SIZE */ + 1139, /* GL_MAX_TEXTURE_UNITS */ + 2167, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ + 2170, /* GL_TRANSPOSE_PROJECTION_MATRIX */ + 2172, /* GL_TRANSPOSE_TEXTURE_MATRIX */ + 2164, /* GL_TRANSPOSE_COLOR_MATRIX */ + 1903, /* GL_SUBTRACT */ + 1120, /* GL_MAX_RENDERBUFFER_SIZE */ 290, /* GL_COMPRESSED_ALPHA */ 294, /* GL_COMPRESSED_LUMINANCE */ 295, /* GL_COMPRESSED_LUMINANCE_ALPHA */ 292, /* GL_COMPRESSED_INTENSITY */ 300, /* GL_COMPRESSED_RGB */ 301, /* GL_COMPRESSED_RGBA */ - 2027, /* GL_TEXTURE_COMPRESSION_HINT */ - 2104, /* GL_TEXTURE_RECTANGLE */ - 1992, /* GL_TEXTURE_BINDING_RECTANGLE */ - 1516, /* GL_PROXY_TEXTURE_RECTANGLE */ - 1100, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */ + 2044, /* GL_TEXTURE_COMPRESSION_HINT */ + 2121, /* GL_TEXTURE_RECTANGLE */ + 2009, /* GL_TEXTURE_BINDING_RECTANGLE */ + 1533, /* GL_PROXY_TEXTURE_RECTANGLE */ + 1117, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */ 431, /* GL_DEPTH_STENCIL */ - 2184, /* GL_UNSIGNED_INT_24_8 */ - 1117, /* GL_MAX_TEXTURE_LOD_BIAS */ - 2093, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ - 1119, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ - 2065, /* GL_TEXTURE_FILTER_CONTROL */ - 2083, /* GL_TEXTURE_LOD_BIAS */ + 2201, /* GL_UNSIGNED_INT_24_8 */ + 1134, /* GL_MAX_TEXTURE_LOD_BIAS */ + 2110, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ + 1136, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ + 2082, /* GL_TEXTURE_FILTER_CONTROL */ + 2100, /* GL_TEXTURE_LOD_BIAS */ 274, /* GL_COMBINE4 */ - 1109, /* GL_MAX_SHININESS_NV */ - 1110, /* GL_MAX_SPOT_EXPONENT_NV */ - 734, /* GL_INCR_WRAP */ + 1126, /* GL_MAX_SHININESS_NV */ + 1127, /* GL_MAX_SPOT_EXPONENT_NV */ + 750, /* GL_INCR_WRAP */ 396, /* GL_DECR_WRAP */ - 1181, /* GL_MODELVIEW1_ARB */ - 1239, /* GL_NORMAL_MAP */ - 1567, /* GL_REFLECTION_MAP */ - 2037, /* GL_TEXTURE_CUBE_MAP */ - 1989, /* GL_TEXTURE_BINDING_CUBE_MAP */ - 2049, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ - 2039, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ - 2052, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ - 2042, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ - 2055, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ - 2045, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ - 1514, /* GL_PROXY_TEXTURE_CUBE_MAP */ - 1039, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ - 1217, /* GL_MULTISAMPLE_FILTER_HINT_NV */ - 1454, /* GL_PRIMITIVE_RESTART_NV */ - 1453, /* GL_PRIMITIVE_RESTART_INDEX_NV */ - 591, /* GL_FOG_DISTANCE_MODE_NV */ - 538, /* GL_EYE_RADIAL_NV */ - 537, /* GL_EYE_PLANE_ABSOLUTE_NV */ + 1198, /* GL_MODELVIEW1_ARB */ + 1256, /* GL_NORMAL_MAP */ + 1584, /* GL_REFLECTION_MAP */ + 2054, /* GL_TEXTURE_CUBE_MAP */ + 2006, /* GL_TEXTURE_BINDING_CUBE_MAP */ + 2066, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ + 2056, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ + 2069, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ + 2059, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ + 2072, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ + 2062, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ + 1531, /* GL_PROXY_TEXTURE_CUBE_MAP */ + 1055, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ + 1234, /* GL_MULTISAMPLE_FILTER_HINT_NV */ + 1471, /* GL_PRIMITIVE_RESTART_NV */ + 1470, /* GL_PRIMITIVE_RESTART_INDEX_NV */ + 607, /* GL_FOG_DISTANCE_MODE_NV */ + 554, /* GL_EYE_RADIAL_NV */ + 553, /* GL_EYE_PLANE_ABSOLUTE_NV */ 273, /* GL_COMBINE */ 280, /* GL_COMBINE_RGB */ 275, /* GL_COMBINE_ALPHA */ - 1697, /* GL_RGB_SCALE */ + 1714, /* GL_RGB_SCALE */ 25, /* GL_ADD_SIGNED */ - 771, /* GL_INTERPOLATE */ + 787, /* GL_INTERPOLATE */ 316, /* GL_CONSTANT */ - 1446, /* GL_PRIMARY_COLOR */ - 1443, /* GL_PREVIOUS */ - 1791, /* GL_SOURCE0_RGB */ - 1797, /* GL_SOURCE1_RGB */ - 1803, /* GL_SOURCE2_RGB */ - 1807, /* GL_SOURCE3_RGB_NV */ - 1788, /* GL_SOURCE0_ALPHA */ - 1794, /* GL_SOURCE1_ALPHA */ - 1800, /* GL_SOURCE2_ALPHA */ - 1806, /* GL_SOURCE3_ALPHA_NV */ - 1282, /* GL_OPERAND0_RGB */ - 1288, /* GL_OPERAND1_RGB */ - 1294, /* GL_OPERAND2_RGB */ - 1298, /* GL_OPERAND3_RGB_NV */ - 1279, /* GL_OPERAND0_ALPHA */ - 1285, /* GL_OPERAND1_ALPHA */ - 1291, /* GL_OPERAND2_ALPHA */ - 1297, /* GL_OPERAND3_ALPHA_NV */ + 1463, /* GL_PRIMARY_COLOR */ + 1460, /* GL_PREVIOUS */ + 1808, /* GL_SOURCE0_RGB */ + 1814, /* GL_SOURCE1_RGB */ + 1820, /* GL_SOURCE2_RGB */ + 1824, /* GL_SOURCE3_RGB_NV */ + 1805, /* GL_SOURCE0_ALPHA */ + 1811, /* GL_SOURCE1_ALPHA */ + 1817, /* GL_SOURCE2_ALPHA */ + 1823, /* GL_SOURCE3_ALPHA_NV */ + 1299, /* GL_OPERAND0_RGB */ + 1305, /* GL_OPERAND1_RGB */ + 1311, /* GL_OPERAND2_RGB */ + 1315, /* GL_OPERAND3_RGB_NV */ + 1296, /* GL_OPERAND0_ALPHA */ + 1302, /* GL_OPERAND1_ALPHA */ + 1308, /* GL_OPERAND2_ALPHA */ + 1314, /* GL_OPERAND3_ALPHA_NV */ 137, /* GL_BUFFER_OBJECT_APPLE */ - 2236, /* GL_VERTEX_ARRAY_BINDING */ - 2102, /* GL_TEXTURE_RANGE_LENGTH_APPLE */ - 2103, /* GL_TEXTURE_RANGE_POINTER_APPLE */ - 2313, /* GL_YCBCR_422_APPLE */ - 2225, /* GL_UNSIGNED_SHORT_8_8_APPLE */ - 2227, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ - 2114, /* GL_TEXTURE_STORAGE_HINT_APPLE */ - 1877, /* GL_STORAGE_PRIVATE_APPLE */ - 1876, /* GL_STORAGE_CACHED_APPLE */ - 1878, /* GL_STORAGE_SHARED_APPLE */ - 1778, /* GL_SLICE_ACCUM_SUN */ - 1525, /* GL_QUAD_MESH_SUN */ - 2161, /* GL_TRIANGLE_MESH_SUN */ - 2278, /* GL_VERTEX_PROGRAM_ARB */ - 2289, /* GL_VERTEX_STATE_PROGRAM_NV */ - 2263, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ - 2271, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ - 2273, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ - 2275, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ + 2253, /* GL_VERTEX_ARRAY_BINDING */ + 2119, /* GL_TEXTURE_RANGE_LENGTH_APPLE */ + 2120, /* GL_TEXTURE_RANGE_POINTER_APPLE */ + 2330, /* GL_YCBCR_422_APPLE */ + 2242, /* GL_UNSIGNED_SHORT_8_8_APPLE */ + 2244, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ + 2131, /* GL_TEXTURE_STORAGE_HINT_APPLE */ + 1894, /* GL_STORAGE_PRIVATE_APPLE */ + 1893, /* GL_STORAGE_CACHED_APPLE */ + 1895, /* GL_STORAGE_SHARED_APPLE */ + 1795, /* GL_SLICE_ACCUM_SUN */ + 1542, /* GL_QUAD_MESH_SUN */ + 2178, /* GL_TRIANGLE_MESH_SUN */ + 2295, /* GL_VERTEX_PROGRAM_ARB */ + 2306, /* GL_VERTEX_STATE_PROGRAM_NV */ + 2280, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ + 2288, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ + 2290, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ + 2292, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ 387, /* GL_CURRENT_VERTEX_ATTRIB */ - 1470, /* GL_PROGRAM_LENGTH_ARB */ - 1486, /* GL_PROGRAM_STRING_ARB */ - 1204, /* GL_MODELVIEW_PROJECTION_NV */ - 727, /* GL_IDENTITY_NV */ - 804, /* GL_INVERSE_NV */ - 2152, /* GL_TRANSPOSE_NV */ - 805, /* GL_INVERSE_TRANSPOSE_NV */ - 1084, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ - 1083, /* GL_MAX_PROGRAM_MATRICES_ARB */ - 965, /* GL_MATRIX0_NV */ - 977, /* GL_MATRIX1_NV */ - 989, /* GL_MATRIX2_NV */ - 993, /* GL_MATRIX3_NV */ - 995, /* GL_MATRIX4_NV */ - 997, /* GL_MATRIX5_NV */ - 999, /* GL_MATRIX6_NV */ - 1001, /* GL_MATRIX7_NV */ + 1487, /* GL_PROGRAM_LENGTH_ARB */ + 1503, /* GL_PROGRAM_STRING_ARB */ + 1221, /* GL_MODELVIEW_PROJECTION_NV */ + 743, /* GL_IDENTITY_NV */ + 820, /* GL_INVERSE_NV */ + 2169, /* GL_TRANSPOSE_NV */ + 821, /* GL_INVERSE_TRANSPOSE_NV */ + 1101, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ + 1100, /* GL_MAX_PROGRAM_MATRICES_ARB */ + 981, /* GL_MATRIX0_NV */ + 993, /* GL_MATRIX1_NV */ + 1005, /* GL_MATRIX2_NV */ + 1009, /* GL_MATRIX3_NV */ + 1011, /* GL_MATRIX4_NV */ + 1013, /* GL_MATRIX5_NV */ + 1015, /* GL_MATRIX6_NV */ + 1017, /* GL_MATRIX7_NV */ 370, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ 367, /* GL_CURRENT_MATRIX_ARB */ - 1483, /* GL_PROGRAM_POINT_SIZE */ - 2284, /* GL_VERTEX_PROGRAM_TWO_SIDE */ - 1482, /* GL_PROGRAM_PARAMETER_NV */ - 2269, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ - 1488, /* GL_PROGRAM_TARGET_NV */ - 1485, /* GL_PROGRAM_RESIDENT_NV */ - 2124, /* GL_TRACK_MATRIX_NV */ - 2125, /* GL_TRACK_MATRIX_TRANSFORM_NV */ - 2279, /* GL_VERTEX_PROGRAM_BINDING_NV */ - 1464, /* GL_PROGRAM_ERROR_POSITION_ARB */ + 1500, /* GL_PROGRAM_POINT_SIZE */ + 2301, /* GL_VERTEX_PROGRAM_TWO_SIDE */ + 1499, /* GL_PROGRAM_PARAMETER_NV */ + 2286, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ + 1505, /* GL_PROGRAM_TARGET_NV */ + 1502, /* GL_PROGRAM_RESIDENT_NV */ + 2141, /* GL_TRACK_MATRIX_NV */ + 2142, /* GL_TRACK_MATRIX_TRANSFORM_NV */ + 2296, /* GL_VERTEX_PROGRAM_BINDING_NV */ + 1481, /* GL_PROGRAM_ERROR_POSITION_ARB */ 412, /* GL_DEPTH_CLAMP */ - 2244, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ - 2251, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ - 2252, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ - 2253, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ - 2254, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ - 2255, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ - 2256, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ - 2257, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ - 2258, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ - 2259, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ - 2245, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ - 2246, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ - 2247, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ - 2248, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ - 2249, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ - 2250, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ - 913, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ - 920, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ - 921, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ - 922, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ - 923, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ - 924, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ - 925, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ - 926, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ - 927, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ - 928, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ - 914, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ - 915, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ - 916, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ - 917, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ - 918, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ - 919, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ - 940, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ - 947, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ - 948, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ - 949, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ - 950, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ - 951, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ - 952, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ - 1463, /* GL_PROGRAM_BINDING_ARB */ - 954, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ - 955, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ - 941, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ - 942, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ - 943, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ - 944, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ - 945, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ - 946, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ - 2025, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ - 2022, /* GL_TEXTURE_COMPRESSED */ - 1246, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ + 2261, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ + 2268, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ + 2269, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ + 2270, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ + 2271, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ + 2272, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ + 2273, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ + 2274, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ + 2275, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ + 2276, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ + 2262, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ + 2263, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ + 2264, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ + 2265, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ + 2266, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ + 2267, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ + 929, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ + 936, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ + 937, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ + 938, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ + 939, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ + 940, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ + 941, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ + 942, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ + 943, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ + 944, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ + 930, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ + 931, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ + 932, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ + 933, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ + 934, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ + 935, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ + 956, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ + 963, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ + 964, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ + 965, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ + 966, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ + 967, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ + 968, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ + 1480, /* GL_PROGRAM_BINDING_ARB */ + 970, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ + 971, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ + 957, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ + 958, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ + 959, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ + 960, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ + 961, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ + 962, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ + 2042, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ + 2039, /* GL_TEXTURE_COMPRESSED */ + 1263, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ 314, /* GL_COMPRESSED_TEXTURE_FORMATS */ - 1144, /* GL_MAX_VERTEX_UNITS_ARB */ + 1161, /* GL_MAX_VERTEX_UNITS_ARB */ 23, /* GL_ACTIVE_VERTEX_UNITS_ARB */ - 2307, /* GL_WEIGHT_SUM_UNITY_ARB */ - 2277, /* GL_VERTEX_BLEND_ARB */ + 2324, /* GL_WEIGHT_SUM_UNITY_ARB */ + 2294, /* GL_VERTEX_BLEND_ARB */ 389, /* GL_CURRENT_WEIGHT_ARB */ - 2305, /* GL_WEIGHT_ARRAY_TYPE_ARB */ - 2303, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ - 2301, /* GL_WEIGHT_ARRAY_SIZE_ARB */ - 2299, /* GL_WEIGHT_ARRAY_POINTER_ARB */ - 2294, /* GL_WEIGHT_ARRAY_ARB */ + 2322, /* GL_WEIGHT_ARRAY_TYPE_ARB */ + 2320, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ + 2318, /* GL_WEIGHT_ARRAY_SIZE_ARB */ + 2316, /* GL_WEIGHT_ARRAY_POINTER_ARB */ + 2311, /* GL_WEIGHT_ARRAY_ARB */ 446, /* GL_DOT3_RGB */ 447, /* GL_DOT3_RGBA */ 308, /* GL_COMPRESSED_RGB_FXT1_3DFX */ 303, /* GL_COMPRESSED_RGBA_FXT1_3DFX */ - 1212, /* GL_MULTISAMPLE_3DFX */ - 1736, /* GL_SAMPLE_BUFFERS_3DFX */ - 1727, /* GL_SAMPLES_3DFX */ - 1192, /* GL_MODELVIEW2_ARB */ - 1195, /* GL_MODELVIEW3_ARB */ - 1196, /* GL_MODELVIEW4_ARB */ - 1197, /* GL_MODELVIEW5_ARB */ - 1198, /* GL_MODELVIEW6_ARB */ - 1199, /* GL_MODELVIEW7_ARB */ - 1200, /* GL_MODELVIEW8_ARB */ - 1201, /* GL_MODELVIEW9_ARB */ - 1171, /* GL_MODELVIEW10_ARB */ - 1172, /* GL_MODELVIEW11_ARB */ - 1173, /* GL_MODELVIEW12_ARB */ - 1174, /* GL_MODELVIEW13_ARB */ - 1175, /* GL_MODELVIEW14_ARB */ - 1176, /* GL_MODELVIEW15_ARB */ - 1177, /* GL_MODELVIEW16_ARB */ - 1178, /* GL_MODELVIEW17_ARB */ - 1179, /* GL_MODELVIEW18_ARB */ - 1180, /* GL_MODELVIEW19_ARB */ - 1182, /* GL_MODELVIEW20_ARB */ - 1183, /* GL_MODELVIEW21_ARB */ - 1184, /* GL_MODELVIEW22_ARB */ - 1185, /* GL_MODELVIEW23_ARB */ - 1186, /* GL_MODELVIEW24_ARB */ - 1187, /* GL_MODELVIEW25_ARB */ - 1188, /* GL_MODELVIEW26_ARB */ - 1189, /* GL_MODELVIEW27_ARB */ - 1190, /* GL_MODELVIEW28_ARB */ - 1191, /* GL_MODELVIEW29_ARB */ - 1193, /* GL_MODELVIEW30_ARB */ - 1194, /* GL_MODELVIEW31_ARB */ + 1229, /* GL_MULTISAMPLE_3DFX */ + 1753, /* GL_SAMPLE_BUFFERS_3DFX */ + 1744, /* GL_SAMPLES_3DFX */ + 1209, /* GL_MODELVIEW2_ARB */ + 1212, /* GL_MODELVIEW3_ARB */ + 1213, /* GL_MODELVIEW4_ARB */ + 1214, /* GL_MODELVIEW5_ARB */ + 1215, /* GL_MODELVIEW6_ARB */ + 1216, /* GL_MODELVIEW7_ARB */ + 1217, /* GL_MODELVIEW8_ARB */ + 1218, /* GL_MODELVIEW9_ARB */ + 1188, /* GL_MODELVIEW10_ARB */ + 1189, /* GL_MODELVIEW11_ARB */ + 1190, /* GL_MODELVIEW12_ARB */ + 1191, /* GL_MODELVIEW13_ARB */ + 1192, /* GL_MODELVIEW14_ARB */ + 1193, /* GL_MODELVIEW15_ARB */ + 1194, /* GL_MODELVIEW16_ARB */ + 1195, /* GL_MODELVIEW17_ARB */ + 1196, /* GL_MODELVIEW18_ARB */ + 1197, /* GL_MODELVIEW19_ARB */ + 1199, /* GL_MODELVIEW20_ARB */ + 1200, /* GL_MODELVIEW21_ARB */ + 1201, /* GL_MODELVIEW22_ARB */ + 1202, /* GL_MODELVIEW23_ARB */ + 1203, /* GL_MODELVIEW24_ARB */ + 1204, /* GL_MODELVIEW25_ARB */ + 1205, /* GL_MODELVIEW26_ARB */ + 1206, /* GL_MODELVIEW27_ARB */ + 1207, /* GL_MODELVIEW28_ARB */ + 1208, /* GL_MODELVIEW29_ARB */ + 1210, /* GL_MODELVIEW30_ARB */ + 1211, /* GL_MODELVIEW31_ARB */ 451, /* GL_DOT3_RGB_EXT */ - 1460, /* GL_PROGRAM_BINARY_LENGTH */ - 1165, /* GL_MIRROR_CLAMP_EXT */ - 1168, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ - 1207, /* GL_MODULATE_ADD_ATI */ - 1208, /* GL_MODULATE_SIGNED_ADD_ATI */ - 1209, /* GL_MODULATE_SUBTRACT_ATI */ - 2314, /* GL_YCBCR_MESA */ - 1306, /* GL_PACK_INVERT_MESA */ + 1477, /* GL_PROGRAM_BINARY_LENGTH */ + 1182, /* GL_MIRROR_CLAMP_EXT */ + 1185, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ + 1224, /* GL_MODULATE_ADD_ATI */ + 1225, /* GL_MODULATE_SIGNED_ADD_ATI */ + 1226, /* GL_MODULATE_SUBTRACT_ATI */ + 2331, /* GL_YCBCR_MESA */ + 1323, /* GL_PACK_INVERT_MESA */ 392, /* GL_DEBUG_OBJECT_MESA */ 393, /* GL_DEBUG_PRINT_MESA */ 391, /* GL_DEBUG_ASSERT_MESA */ @@ -5701,354 +5735,354 @@ static const unsigned reduced_enums[1564] = 146, /* GL_BUMP_ROT_MATRIX_SIZE_ATI */ 144, /* GL_BUMP_NUM_TEX_UNITS_ATI */ 148, /* GL_BUMP_TEX_UNITS_ATI */ - 511, /* GL_DUDV_ATI */ - 510, /* GL_DU8DV8_ATI */ + 527, /* GL_DUDV_ATI */ + 526, /* GL_DU8DV8_ATI */ 143, /* GL_BUMP_ENVMAP_ATI */ 147, /* GL_BUMP_TARGET_ATI */ - 1249, /* GL_NUM_PROGRAM_BINARY_FORMATS */ - 1458, /* GL_PROGRAM_BINARY_FORMATS */ - 1840, /* GL_STENCIL_BACK_FUNC */ - 1838, /* GL_STENCIL_BACK_FAIL */ - 1842, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ - 1844, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ - 600, /* GL_FRAGMENT_PROGRAM_ARB */ - 1456, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ - 1491, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ - 1490, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ - 1473, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - 1479, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - 1478, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - 1073, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ - 1098, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ - 1097, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ - 1086, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - 1092, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - 1091, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - 1668, /* GL_RGBA32F */ - 1631, /* GL_RGB32F */ - 1659, /* GL_RGBA16F */ - 1623, /* GL_RGB16F */ - 1687, /* GL_RGBA_FLOAT_MODE_ARB */ - 1042, /* GL_MAX_DRAW_BUFFERS */ + 1266, /* GL_NUM_PROGRAM_BINARY_FORMATS */ + 1475, /* GL_PROGRAM_BINARY_FORMATS */ + 1857, /* GL_STENCIL_BACK_FUNC */ + 1855, /* GL_STENCIL_BACK_FAIL */ + 1859, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ + 1861, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ + 616, /* GL_FRAGMENT_PROGRAM_ARB */ + 1473, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ + 1508, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ + 1507, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ + 1490, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + 1496, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + 1495, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + 1090, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ + 1115, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ + 1114, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ + 1103, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + 1109, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + 1108, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + 1685, /* GL_RGBA32F */ + 1648, /* GL_RGB32F */ + 1676, /* GL_RGBA16F */ + 1640, /* GL_RGB16F */ + 1704, /* GL_RGBA_FLOAT_MODE_ARB */ + 1058, /* GL_MAX_DRAW_BUFFERS */ 455, /* GL_DRAW_BUFFER0 */ - 458, /* GL_DRAW_BUFFER1 */ - 479, /* GL_DRAW_BUFFER2 */ - 482, /* GL_DRAW_BUFFER3 */ - 485, /* GL_DRAW_BUFFER4 */ - 488, /* GL_DRAW_BUFFER5 */ - 491, /* GL_DRAW_BUFFER6 */ - 494, /* GL_DRAW_BUFFER7 */ - 497, /* GL_DRAW_BUFFER8 */ - 500, /* GL_DRAW_BUFFER9 */ - 459, /* GL_DRAW_BUFFER10 */ - 462, /* GL_DRAW_BUFFER11 */ - 465, /* GL_DRAW_BUFFER12 */ - 468, /* GL_DRAW_BUFFER13 */ - 471, /* GL_DRAW_BUFFER14 */ - 474, /* GL_DRAW_BUFFER15 */ + 459, /* GL_DRAW_BUFFER1 */ + 487, /* GL_DRAW_BUFFER2 */ + 491, /* GL_DRAW_BUFFER3 */ + 495, /* GL_DRAW_BUFFER4 */ + 499, /* GL_DRAW_BUFFER5 */ + 503, /* GL_DRAW_BUFFER6 */ + 507, /* GL_DRAW_BUFFER7 */ + 511, /* GL_DRAW_BUFFER8 */ + 515, /* GL_DRAW_BUFFER9 */ + 460, /* GL_DRAW_BUFFER10 */ + 464, /* GL_DRAW_BUFFER11 */ + 468, /* GL_DRAW_BUFFER12 */ + 472, /* GL_DRAW_BUFFER13 */ + 476, /* GL_DRAW_BUFFER14 */ + 480, /* GL_DRAW_BUFFER15 */ 97, /* GL_BLEND_EQUATION_ALPHA */ - 1016, /* GL_MATRIX_PALETTE_ARB */ - 1066, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ - 1069, /* GL_MAX_PALETTE_MATRICES_ARB */ + 1032, /* GL_MATRIX_PALETTE_ARB */ + 1083, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ + 1086, /* GL_MAX_PALETTE_MATRICES_ARB */ 373, /* GL_CURRENT_PALETTE_MATRIX_ARB */ - 1004, /* GL_MATRIX_INDEX_ARRAY_ARB */ + 1020, /* GL_MATRIX_INDEX_ARRAY_ARB */ 368, /* GL_CURRENT_MATRIX_INDEX_ARB */ - 1009, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ - 1013, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ - 1011, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ - 1007, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ - 2060, /* GL_TEXTURE_DEPTH_SIZE */ + 1025, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ + 1029, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ + 1027, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ + 1023, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ + 2077, /* GL_TEXTURE_DEPTH_SIZE */ 439, /* GL_DEPTH_TEXTURE_MODE */ - 2017, /* GL_TEXTURE_COMPARE_MODE */ - 2015, /* GL_TEXTURE_COMPARE_FUNC */ + 2034, /* GL_TEXTURE_COMPARE_MODE */ + 2032, /* GL_TEXTURE_COMPARE_FUNC */ 284, /* GL_COMPARE_REF_TO_TEXTURE */ - 1383, /* GL_POINT_SPRITE */ + 1400, /* GL_POINT_SPRITE */ 347, /* GL_COORD_REPLACE */ - 1388, /* GL_POINT_SPRITE_R_MODE_NV */ - 1531, /* GL_QUERY_COUNTER_BITS */ + 1405, /* GL_POINT_SPRITE_R_MODE_NV */ + 1548, /* GL_QUERY_COUNTER_BITS */ 376, /* GL_CURRENT_QUERY */ - 1535, /* GL_QUERY_RESULT */ - 1537, /* GL_QUERY_RESULT_AVAILABLE */ - 1136, /* GL_MAX_VERTEX_ATTRIBS */ - 2267, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ + 1552, /* GL_QUERY_RESULT */ + 1554, /* GL_QUERY_RESULT_AVAILABLE */ + 1153, /* GL_MAX_VERTEX_ATTRIBS */ + 2284, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ 437, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ 436, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ - 1113, /* GL_MAX_TEXTURE_COORDS */ - 1115, /* GL_MAX_TEXTURE_IMAGE_UNITS */ - 1466, /* GL_PROGRAM_ERROR_STRING_ARB */ - 1468, /* GL_PROGRAM_FORMAT_ASCII_ARB */ - 1467, /* GL_PROGRAM_FORMAT_ARB */ - 2116, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ + 1130, /* GL_MAX_TEXTURE_COORDS */ + 1132, /* GL_MAX_TEXTURE_IMAGE_UNITS */ + 1483, /* GL_PROGRAM_ERROR_STRING_ARB */ + 1485, /* GL_PROGRAM_FORMAT_ASCII_ARB */ + 1484, /* GL_PROGRAM_FORMAT_ARB */ + 2133, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ 409, /* GL_DEPTH_BOUNDS_TEST_EXT */ 408, /* GL_DEPTH_BOUNDS_EXT */ 61, /* GL_ARRAY_BUFFER */ - 524, /* GL_ELEMENT_ARRAY_BUFFER */ + 540, /* GL_ELEMENT_ARRAY_BUFFER */ 62, /* GL_ARRAY_BUFFER_BINDING */ - 525, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ - 2238, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ - 1234, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ + 541, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ + 2255, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ + 1251, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ 190, /* GL_COLOR_ARRAY_BUFFER_BINDING */ - 738, /* GL_INDEX_ARRAY_BUFFER_BINDING */ - 2030, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ - 520, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ - 1748, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ - 578, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ - 2295, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ - 2260, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ - 1469, /* GL_PROGRAM_INSTRUCTIONS_ARB */ - 1079, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ - 1475, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - 1088, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - 1489, /* GL_PROGRAM_TEMPORARIES_ARB */ - 1094, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ - 1477, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ - 1090, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ - 1481, /* GL_PROGRAM_PARAMETERS_ARB */ - 1093, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ - 1476, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ - 1089, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ - 1457, /* GL_PROGRAM_ATTRIBS_ARB */ - 1074, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ - 1474, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ - 1087, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ - 1455, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ - 1072, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ - 1472, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - 1085, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - 1080, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ - 1076, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ - 1492, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ - 2149, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ - 1554, /* GL_READ_ONLY */ - 2309, /* GL_WRITE_ONLY */ - 1556, /* GL_READ_WRITE */ + 754, /* GL_INDEX_ARRAY_BUFFER_BINDING */ + 2047, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ + 536, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ + 1765, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ + 594, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ + 2312, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ + 2277, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ + 1486, /* GL_PROGRAM_INSTRUCTIONS_ARB */ + 1096, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ + 1492, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + 1105, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + 1506, /* GL_PROGRAM_TEMPORARIES_ARB */ + 1111, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ + 1494, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ + 1107, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ + 1498, /* GL_PROGRAM_PARAMETERS_ARB */ + 1110, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ + 1493, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ + 1106, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ + 1474, /* GL_PROGRAM_ATTRIBS_ARB */ + 1091, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ + 1491, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ + 1104, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ + 1472, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ + 1089, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ + 1489, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + 1102, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + 1097, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ + 1093, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ + 1509, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ + 2166, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ + 1571, /* GL_READ_ONLY */ + 2326, /* GL_WRITE_ONLY */ + 1573, /* GL_READ_WRITE */ 124, /* GL_BUFFER_ACCESS */ 129, /* GL_BUFFER_MAPPED */ 134, /* GL_BUFFER_MAP_POINTER */ - 2123, /* GL_TIME_ELAPSED_EXT */ - 964, /* GL_MATRIX0_ARB */ - 976, /* GL_MATRIX1_ARB */ - 988, /* GL_MATRIX2_ARB */ - 992, /* GL_MATRIX3_ARB */ - 994, /* GL_MATRIX4_ARB */ - 996, /* GL_MATRIX5_ARB */ - 998, /* GL_MATRIX6_ARB */ - 1000, /* GL_MATRIX7_ARB */ - 1002, /* GL_MATRIX8_ARB */ - 1003, /* GL_MATRIX9_ARB */ - 966, /* GL_MATRIX10_ARB */ - 967, /* GL_MATRIX11_ARB */ - 968, /* GL_MATRIX12_ARB */ - 969, /* GL_MATRIX13_ARB */ - 970, /* GL_MATRIX14_ARB */ - 971, /* GL_MATRIX15_ARB */ - 972, /* GL_MATRIX16_ARB */ - 973, /* GL_MATRIX17_ARB */ - 974, /* GL_MATRIX18_ARB */ - 975, /* GL_MATRIX19_ARB */ - 978, /* GL_MATRIX20_ARB */ - 979, /* GL_MATRIX21_ARB */ - 980, /* GL_MATRIX22_ARB */ - 981, /* GL_MATRIX23_ARB */ - 982, /* GL_MATRIX24_ARB */ - 983, /* GL_MATRIX25_ARB */ - 984, /* GL_MATRIX26_ARB */ - 985, /* GL_MATRIX27_ARB */ - 986, /* GL_MATRIX28_ARB */ - 987, /* GL_MATRIX29_ARB */ - 990, /* GL_MATRIX30_ARB */ - 991, /* GL_MATRIX31_ARB */ - 1881, /* GL_STREAM_DRAW */ - 1883, /* GL_STREAM_READ */ - 1879, /* GL_STREAM_COPY */ - 1830, /* GL_STATIC_DRAW */ - 1832, /* GL_STATIC_READ */ - 1828, /* GL_STATIC_COPY */ - 514, /* GL_DYNAMIC_DRAW */ - 516, /* GL_DYNAMIC_READ */ - 512, /* GL_DYNAMIC_COPY */ - 1346, /* GL_PIXEL_PACK_BUFFER */ - 1350, /* GL_PIXEL_UNPACK_BUFFER */ - 1347, /* GL_PIXEL_PACK_BUFFER_BINDING */ - 1351, /* GL_PIXEL_UNPACK_BUFFER_BINDING */ + 2140, /* GL_TIME_ELAPSED_EXT */ + 980, /* GL_MATRIX0_ARB */ + 992, /* GL_MATRIX1_ARB */ + 1004, /* GL_MATRIX2_ARB */ + 1008, /* GL_MATRIX3_ARB */ + 1010, /* GL_MATRIX4_ARB */ + 1012, /* GL_MATRIX5_ARB */ + 1014, /* GL_MATRIX6_ARB */ + 1016, /* GL_MATRIX7_ARB */ + 1018, /* GL_MATRIX8_ARB */ + 1019, /* GL_MATRIX9_ARB */ + 982, /* GL_MATRIX10_ARB */ + 983, /* GL_MATRIX11_ARB */ + 984, /* GL_MATRIX12_ARB */ + 985, /* GL_MATRIX13_ARB */ + 986, /* GL_MATRIX14_ARB */ + 987, /* GL_MATRIX15_ARB */ + 988, /* GL_MATRIX16_ARB */ + 989, /* GL_MATRIX17_ARB */ + 990, /* GL_MATRIX18_ARB */ + 991, /* GL_MATRIX19_ARB */ + 994, /* GL_MATRIX20_ARB */ + 995, /* GL_MATRIX21_ARB */ + 996, /* GL_MATRIX22_ARB */ + 997, /* GL_MATRIX23_ARB */ + 998, /* GL_MATRIX24_ARB */ + 999, /* GL_MATRIX25_ARB */ + 1000, /* GL_MATRIX26_ARB */ + 1001, /* GL_MATRIX27_ARB */ + 1002, /* GL_MATRIX28_ARB */ + 1003, /* GL_MATRIX29_ARB */ + 1006, /* GL_MATRIX30_ARB */ + 1007, /* GL_MATRIX31_ARB */ + 1898, /* GL_STREAM_DRAW */ + 1900, /* GL_STREAM_READ */ + 1896, /* GL_STREAM_COPY */ + 1847, /* GL_STATIC_DRAW */ + 1849, /* GL_STATIC_READ */ + 1845, /* GL_STATIC_COPY */ + 530, /* GL_DYNAMIC_DRAW */ + 532, /* GL_DYNAMIC_READ */ + 528, /* GL_DYNAMIC_COPY */ + 1363, /* GL_PIXEL_PACK_BUFFER */ + 1367, /* GL_PIXEL_UNPACK_BUFFER */ + 1364, /* GL_PIXEL_PACK_BUFFER_BINDING */ + 1368, /* GL_PIXEL_UNPACK_BUFFER_BINDING */ 400, /* GL_DEPTH24_STENCIL8 */ - 2112, /* GL_TEXTURE_STENCIL_SIZE */ - 2058, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */ - 1075, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ - 1078, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ - 1082, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ - 1081, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ - 2265, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */ - 2262, /* GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB */ - 1021, /* GL_MAX_ARRAY_TEXTURE_LAYERS */ - 1159, /* GL_MIN_PROGRAM_TEXEL_OFFSET */ - 1095, /* GL_MAX_PROGRAM_TEXEL_OFFSET */ - 1872, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ + 2129, /* GL_TEXTURE_STENCIL_SIZE */ + 2075, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */ + 1092, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ + 1095, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ + 1099, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ + 1098, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ + 2282, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */ + 2279, /* GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB */ + 1037, /* GL_MAX_ARRAY_TEXTURE_LAYERS */ + 1176, /* GL_MIN_PROGRAM_TEXEL_OFFSET */ + 1112, /* GL_MAX_PROGRAM_TEXEL_OFFSET */ + 1889, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ 18, /* GL_ACTIVE_STENCIL_FACE_EXT */ - 1166, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ - 1729, /* GL_SAMPLES_PASSED */ - 693, /* GL_GEOMETRY_VERTICES_OUT */ - 687, /* GL_GEOMETRY_INPUT_TYPE */ - 689, /* GL_GEOMETRY_OUTPUT_TYPE */ - 1720, /* GL_SAMPLER_BINDING */ + 1183, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ + 1746, /* GL_SAMPLES_PASSED */ + 709, /* GL_GEOMETRY_VERTICES_OUT */ + 703, /* GL_GEOMETRY_INPUT_TYPE */ + 705, /* GL_GEOMETRY_OUTPUT_TYPE */ + 1737, /* GL_SAMPLER_BINDING */ 164, /* GL_CLAMP_VERTEX_COLOR_ARB */ 156, /* GL_CLAMP_FRAGMENT_COLOR_ARB */ 157, /* GL_CLAMP_READ_COLOR */ - 550, /* GL_FIXED_ONLY */ - 1370, /* GL_POINT_SIZE_ARRAY_TYPE_OES */ - 1369, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */ - 1368, /* GL_POINT_SIZE_ARRAY_POINTER_OES */ - 1203, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */ - 1495, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */ - 2092, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */ + 566, /* GL_FIXED_ONLY */ + 1387, /* GL_POINT_SIZE_ARRAY_TYPE_OES */ + 1386, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */ + 1385, /* GL_POINT_SIZE_ARRAY_POINTER_OES */ + 1220, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */ + 1512, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */ + 2109, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */ 138, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */ 128, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */ - 1571, /* GL_RELEASED_APPLE */ - 2292, /* GL_VOLATILE_APPLE */ - 1611, /* GL_RETAINED_APPLE */ - 2166, /* GL_UNDEFINED_APPLE */ - 1519, /* GL_PURGEABLE_APPLE */ - 601, /* GL_FRAGMENT_SHADER */ - 2287, /* GL_VERTEX_SHADER */ - 1480, /* GL_PROGRAM_OBJECT_ARB */ - 1765, /* GL_SHADER_OBJECT_ARB */ - 1050, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ - 1141, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ - 1132, /* GL_MAX_VARYING_COMPONENTS */ - 1139, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ - 1033, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ - 1266, /* GL_OBJECT_TYPE_ARB */ - 1767, /* GL_SHADER_TYPE */ - 566, /* GL_FLOAT_VEC2 */ - 568, /* GL_FLOAT_VEC3 */ - 570, /* GL_FLOAT_VEC4 */ - 792, /* GL_INT_VEC2 */ - 794, /* GL_INT_VEC3 */ - 796, /* GL_INT_VEC4 */ + 1588, /* GL_RELEASED_APPLE */ + 2309, /* GL_VOLATILE_APPLE */ + 1628, /* GL_RETAINED_APPLE */ + 2183, /* GL_UNDEFINED_APPLE */ + 1536, /* GL_PURGEABLE_APPLE */ + 617, /* GL_FRAGMENT_SHADER */ + 2304, /* GL_VERTEX_SHADER */ + 1497, /* GL_PROGRAM_OBJECT_ARB */ + 1782, /* GL_SHADER_OBJECT_ARB */ + 1067, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ + 1158, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ + 1149, /* GL_MAX_VARYING_COMPONENTS */ + 1156, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ + 1049, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ + 1283, /* GL_OBJECT_TYPE_ARB */ + 1784, /* GL_SHADER_TYPE */ + 582, /* GL_FLOAT_VEC2 */ + 584, /* GL_FLOAT_VEC3 */ + 586, /* GL_FLOAT_VEC4 */ + 808, /* GL_INT_VEC2 */ + 810, /* GL_INT_VEC3 */ + 812, /* GL_INT_VEC4 */ 116, /* GL_BOOL */ 118, /* GL_BOOL_VEC2 */ 120, /* GL_BOOL_VEC3 */ 122, /* GL_BOOL_VEC4 */ - 554, /* GL_FLOAT_MAT2 */ - 558, /* GL_FLOAT_MAT3 */ - 562, /* GL_FLOAT_MAT4 */ - 1704, /* GL_SAMPLER_1D */ - 1710, /* GL_SAMPLER_2D */ - 1718, /* GL_SAMPLER_3D */ - 1723, /* GL_SAMPLER_CUBE */ - 1709, /* GL_SAMPLER_1D_SHADOW */ - 1717, /* GL_SAMPLER_2D_SHADOW */ - 1715, /* GL_SAMPLER_2D_RECT */ - 1716, /* GL_SAMPLER_2D_RECT_SHADOW */ - 556, /* GL_FLOAT_MAT2x3 */ - 557, /* GL_FLOAT_MAT2x4 */ - 560, /* GL_FLOAT_MAT3x2 */ - 561, /* GL_FLOAT_MAT3x4 */ - 564, /* GL_FLOAT_MAT4x2 */ - 565, /* GL_FLOAT_MAT4x3 */ + 570, /* GL_FLOAT_MAT2 */ + 574, /* GL_FLOAT_MAT3 */ + 578, /* GL_FLOAT_MAT4 */ + 1721, /* GL_SAMPLER_1D */ + 1727, /* GL_SAMPLER_2D */ + 1735, /* GL_SAMPLER_3D */ + 1740, /* GL_SAMPLER_CUBE */ + 1726, /* GL_SAMPLER_1D_SHADOW */ + 1734, /* GL_SAMPLER_2D_SHADOW */ + 1732, /* GL_SAMPLER_2D_RECT */ + 1733, /* GL_SAMPLER_2D_RECT_SHADOW */ + 572, /* GL_FLOAT_MAT2x3 */ + 573, /* GL_FLOAT_MAT2x4 */ + 576, /* GL_FLOAT_MAT3x2 */ + 577, /* GL_FLOAT_MAT3x4 */ + 580, /* GL_FLOAT_MAT4x2 */ + 581, /* GL_FLOAT_MAT4x3 */ 398, /* GL_DELETE_STATUS */ 289, /* GL_COMPILE_STATUS */ - 853, /* GL_LINK_STATUS */ - 2232, /* GL_VALIDATE_STATUS */ - 750, /* GL_INFO_LOG_LENGTH */ + 869, /* GL_LINK_STATUS */ + 2249, /* GL_VALIDATE_STATUS */ + 766, /* GL_INFO_LOG_LENGTH */ 64, /* GL_ATTACHED_SHADERS */ 21, /* GL_ACTIVE_UNIFORMS */ 22, /* GL_ACTIVE_UNIFORM_MAX_LENGTH */ - 1766, /* GL_SHADER_SOURCE_LENGTH */ + 1783, /* GL_SHADER_SOURCE_LENGTH */ 15, /* GL_ACTIVE_ATTRIBUTES */ 16, /* GL_ACTIVE_ATTRIBUTE_MAX_LENGTH */ - 603, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ - 1769, /* GL_SHADING_LANGUAGE_VERSION */ + 619, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ + 1786, /* GL_SHADING_LANGUAGE_VERSION */ 375, /* GL_CURRENT_PROGRAM */ - 1315, /* GL_PALETTE4_RGB8_OES */ - 1317, /* GL_PALETTE4_RGBA8_OES */ - 1313, /* GL_PALETTE4_R5_G6_B5_OES */ - 1316, /* GL_PALETTE4_RGBA4_OES */ - 1314, /* GL_PALETTE4_RGB5_A1_OES */ - 1320, /* GL_PALETTE8_RGB8_OES */ - 1322, /* GL_PALETTE8_RGBA8_OES */ - 1318, /* GL_PALETTE8_R5_G6_B5_OES */ - 1321, /* GL_PALETTE8_RGBA4_OES */ - 1319, /* GL_PALETTE8_RGB5_A1_OES */ - 731, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */ - 729, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */ - 1367, /* GL_POINT_SIZE_ARRAY_OES */ - 2036, /* GL_TEXTURE_CROP_RECT_OES */ - 1005, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */ - 1366, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */ - 2215, /* GL_UNSIGNED_NORMALIZED */ - 1969, /* GL_TEXTURE_1D_ARRAY */ - 1505, /* GL_PROXY_TEXTURE_1D_ARRAY */ - 1972, /* GL_TEXTURE_2D_ARRAY */ - 1509, /* GL_PROXY_TEXTURE_2D_ARRAY */ - 1980, /* GL_TEXTURE_BINDING_1D_ARRAY */ - 1983, /* GL_TEXTURE_BINDING_2D_ARRAY */ - 1057, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */ - 2000, /* GL_TEXTURE_BUFFER */ - 1111, /* GL_MAX_TEXTURE_BUFFER_SIZE */ - 1987, /* GL_TEXTURE_BINDING_BUFFER */ - 2002, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */ - 2004, /* GL_TEXTURE_BUFFER_FORMAT */ - 1542, /* GL_R11F_G11F_B10F */ - 2181, /* GL_UNSIGNED_INT_10F_11F_11F_REV */ - 1654, /* GL_RGB9_E5 */ - 2190, /* GL_UNSIGNED_INT_5_9_9_9_REV */ - 2110, /* GL_TEXTURE_SHARED_SIZE */ - 1822, /* GL_SRGB */ - 1823, /* GL_SRGB8 */ - 1825, /* GL_SRGB_ALPHA */ - 1824, /* GL_SRGB8_ALPHA8 */ - 1782, /* GL_SLUMINANCE_ALPHA */ - 1781, /* GL_SLUMINANCE8_ALPHA8 */ - 1779, /* GL_SLUMINANCE */ - 1780, /* GL_SLUMINANCE8 */ + 1332, /* GL_PALETTE4_RGB8_OES */ + 1334, /* GL_PALETTE4_RGBA8_OES */ + 1330, /* GL_PALETTE4_R5_G6_B5_OES */ + 1333, /* GL_PALETTE4_RGBA4_OES */ + 1331, /* GL_PALETTE4_RGB5_A1_OES */ + 1337, /* GL_PALETTE8_RGB8_OES */ + 1339, /* GL_PALETTE8_RGBA8_OES */ + 1335, /* GL_PALETTE8_R5_G6_B5_OES */ + 1338, /* GL_PALETTE8_RGBA4_OES */ + 1336, /* GL_PALETTE8_RGB5_A1_OES */ + 747, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */ + 745, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */ + 1384, /* GL_POINT_SIZE_ARRAY_OES */ + 2053, /* GL_TEXTURE_CROP_RECT_OES */ + 1021, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */ + 1383, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */ + 2232, /* GL_UNSIGNED_NORMALIZED */ + 1986, /* GL_TEXTURE_1D_ARRAY */ + 1522, /* GL_PROXY_TEXTURE_1D_ARRAY */ + 1989, /* GL_TEXTURE_2D_ARRAY */ + 1526, /* GL_PROXY_TEXTURE_2D_ARRAY */ + 1997, /* GL_TEXTURE_BINDING_1D_ARRAY */ + 2000, /* GL_TEXTURE_BINDING_2D_ARRAY */ + 1074, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */ + 2017, /* GL_TEXTURE_BUFFER */ + 1128, /* GL_MAX_TEXTURE_BUFFER_SIZE */ + 2004, /* GL_TEXTURE_BINDING_BUFFER */ + 2019, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */ + 2021, /* GL_TEXTURE_BUFFER_FORMAT */ + 1559, /* GL_R11F_G11F_B10F */ + 2198, /* GL_UNSIGNED_INT_10F_11F_11F_REV */ + 1671, /* GL_RGB9_E5 */ + 2207, /* GL_UNSIGNED_INT_5_9_9_9_REV */ + 2127, /* GL_TEXTURE_SHARED_SIZE */ + 1839, /* GL_SRGB */ + 1840, /* GL_SRGB8 */ + 1842, /* GL_SRGB_ALPHA */ + 1841, /* GL_SRGB8_ALPHA8 */ + 1799, /* GL_SLUMINANCE_ALPHA */ + 1798, /* GL_SLUMINANCE8_ALPHA8 */ + 1796, /* GL_SLUMINANCE */ + 1797, /* GL_SLUMINANCE8 */ 312, /* GL_COMPRESSED_SRGB */ 313, /* GL_COMPRESSED_SRGB_ALPHA */ 310, /* GL_COMPRESSED_SLUMINANCE */ 311, /* GL_COMPRESSED_SLUMINANCE_ALPHA */ - 2145, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */ - 2134, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */ - 1130, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */ - 2143, /* GL_TRANSFORM_FEEDBACK_VARYINGS */ - 2139, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */ - 2137, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */ - 1449, /* GL_PRIMITIVES_GENERATED */ - 2141, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */ - 1546, /* GL_RASTERIZER_DISCARD */ - 1126, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */ - 1128, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */ - 769, /* GL_INTERLEAVED_ATTRIBS */ - 1758, /* GL_SEPARATE_ATTRIBS */ - 2129, /* GL_TRANSFORM_FEEDBACK_BUFFER */ - 2131, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */ - 1385, /* GL_POINT_SPRITE_COORD_ORIGIN */ - 862, /* GL_LOWER_LEFT */ - 2229, /* GL_UPPER_LEFT */ - 1846, /* GL_STENCIL_BACK_REF */ - 1847, /* GL_STENCIL_BACK_VALUE_MASK */ - 1848, /* GL_STENCIL_BACK_WRITEMASK */ - 504, /* GL_DRAW_FRAMEBUFFER_BINDING */ - 1576, /* GL_RENDERBUFFER_BINDING */ - 1550, /* GL_READ_FRAMEBUFFER */ - 503, /* GL_DRAW_FRAMEBUFFER */ - 1551, /* GL_READ_FRAMEBUFFER_BINDING */ - 1595, /* GL_RENDERBUFFER_SAMPLES */ - 617, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ - 614, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ - 629, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ - 624, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ - 627, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ - 635, /* GL_FRAMEBUFFER_COMPLETE */ - 640, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ - 655, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ - 649, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ - 644, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ - 650, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ - 646, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ - 660, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ - 666, /* GL_FRAMEBUFFER_UNSUPPORTED */ - 664, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ - 1029, /* GL_MAX_COLOR_ATTACHMENTS */ + 2162, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */ + 2151, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */ + 1147, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */ + 2160, /* GL_TRANSFORM_FEEDBACK_VARYINGS */ + 2156, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */ + 2154, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */ + 1466, /* GL_PRIMITIVES_GENERATED */ + 2158, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */ + 1563, /* GL_RASTERIZER_DISCARD */ + 1143, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */ + 1145, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */ + 785, /* GL_INTERLEAVED_ATTRIBS */ + 1775, /* GL_SEPARATE_ATTRIBS */ + 2146, /* GL_TRANSFORM_FEEDBACK_BUFFER */ + 2148, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */ + 1402, /* GL_POINT_SPRITE_COORD_ORIGIN */ + 878, /* GL_LOWER_LEFT */ + 2246, /* GL_UPPER_LEFT */ + 1863, /* GL_STENCIL_BACK_REF */ + 1864, /* GL_STENCIL_BACK_VALUE_MASK */ + 1865, /* GL_STENCIL_BACK_WRITEMASK */ + 520, /* GL_DRAW_FRAMEBUFFER_BINDING */ + 1593, /* GL_RENDERBUFFER_BINDING */ + 1567, /* GL_READ_FRAMEBUFFER */ + 519, /* GL_DRAW_FRAMEBUFFER */ + 1568, /* GL_READ_FRAMEBUFFER_BINDING */ + 1612, /* GL_RENDERBUFFER_SAMPLES */ + 633, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ + 630, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ + 645, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ + 640, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ + 643, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ + 651, /* GL_FRAMEBUFFER_COMPLETE */ + 656, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ + 671, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ + 665, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ + 660, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ + 666, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ + 662, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ + 676, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ + 682, /* GL_FRAMEBUFFER_UNSUPPORTED */ + 680, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ + 1045, /* GL_MAX_COLOR_ATTACHMENTS */ 196, /* GL_COLOR_ATTACHMENT0 */ 199, /* GL_COLOR_ATTACHMENT1 */ 213, /* GL_COLOR_ATTACHMENT2 */ @@ -6066,184 +6100,184 @@ static const unsigned reduced_enums[1564] = 208, /* GL_COLOR_ATTACHMENT14 */ 210, /* GL_COLOR_ATTACHMENT15 */ 403, /* GL_DEPTH_ATTACHMENT */ - 1835, /* GL_STENCIL_ATTACHMENT */ - 605, /* GL_FRAMEBUFFER */ - 1573, /* GL_RENDERBUFFER */ - 1599, /* GL_RENDERBUFFER_WIDTH */ - 1586, /* GL_RENDERBUFFER_HEIGHT */ - 1589, /* GL_RENDERBUFFER_INTERNAL_FORMAT */ - 1867, /* GL_STENCIL_INDEX_EXT */ - 1856, /* GL_STENCIL_INDEX1 */ - 1861, /* GL_STENCIL_INDEX4 */ - 1864, /* GL_STENCIL_INDEX8 */ - 1857, /* GL_STENCIL_INDEX16 */ - 1593, /* GL_RENDERBUFFER_RED_SIZE */ - 1584, /* GL_RENDERBUFFER_GREEN_SIZE */ - 1579, /* GL_RENDERBUFFER_BLUE_SIZE */ - 1574, /* GL_RENDERBUFFER_ALPHA_SIZE */ - 1581, /* GL_RENDERBUFFER_DEPTH_SIZE */ - 1597, /* GL_RENDERBUFFER_STENCIL_SIZE */ - 658, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ - 1106, /* GL_MAX_SAMPLES */ - 2072, /* GL_TEXTURE_GEN_STR_OES */ - 705, /* GL_HALF_FLOAT_OES */ - 1640, /* GL_RGB565 */ - 1671, /* GL_RGBA32UI */ - 1634, /* GL_RGB32UI */ + 1852, /* GL_STENCIL_ATTACHMENT */ + 621, /* GL_FRAMEBUFFER */ + 1590, /* GL_RENDERBUFFER */ + 1616, /* GL_RENDERBUFFER_WIDTH */ + 1603, /* GL_RENDERBUFFER_HEIGHT */ + 1606, /* GL_RENDERBUFFER_INTERNAL_FORMAT */ + 1884, /* GL_STENCIL_INDEX_EXT */ + 1873, /* GL_STENCIL_INDEX1 */ + 1878, /* GL_STENCIL_INDEX4 */ + 1881, /* GL_STENCIL_INDEX8 */ + 1874, /* GL_STENCIL_INDEX16 */ + 1610, /* GL_RENDERBUFFER_RED_SIZE */ + 1601, /* GL_RENDERBUFFER_GREEN_SIZE */ + 1596, /* GL_RENDERBUFFER_BLUE_SIZE */ + 1591, /* GL_RENDERBUFFER_ALPHA_SIZE */ + 1598, /* GL_RENDERBUFFER_DEPTH_SIZE */ + 1614, /* GL_RENDERBUFFER_STENCIL_SIZE */ + 674, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ + 1123, /* GL_MAX_SAMPLES */ + 2089, /* GL_TEXTURE_GEN_STR_OES */ + 721, /* GL_HALF_FLOAT_OES */ + 1657, /* GL_RGB565 */ + 1688, /* GL_RGBA32UI */ + 1651, /* GL_RGB32UI */ 40, /* GL_ALPHA32UI_EXT */ - 761, /* GL_INTENSITY32UI_EXT */ - 879, /* GL_LUMINANCE32UI_EXT */ - 896, /* GL_LUMINANCE_ALPHA32UI_EXT */ - 1662, /* GL_RGBA16UI */ - 1626, /* GL_RGB16UI */ + 777, /* GL_INTENSITY32UI_EXT */ + 895, /* GL_LUMINANCE32UI_EXT */ + 912, /* GL_LUMINANCE_ALPHA32UI_EXT */ + 1679, /* GL_RGBA16UI */ + 1643, /* GL_RGB16UI */ 37, /* GL_ALPHA16UI_EXT */ - 758, /* GL_INTENSITY16UI_EXT */ - 874, /* GL_LUMINANCE16UI_EXT */ - 894, /* GL_LUMINANCE_ALPHA16UI_EXT */ - 1681, /* GL_RGBA8UI */ - 1649, /* GL_RGB8UI */ + 774, /* GL_INTENSITY16UI_EXT */ + 890, /* GL_LUMINANCE16UI_EXT */ + 910, /* GL_LUMINANCE_ALPHA16UI_EXT */ + 1698, /* GL_RGBA8UI */ + 1666, /* GL_RGB8UI */ 45, /* GL_ALPHA8UI_EXT */ - 766, /* GL_INTENSITY8UI_EXT */ - 888, /* GL_LUMINANCE8UI_EXT */ - 898, /* GL_LUMINANCE_ALPHA8UI_EXT */ - 1669, /* GL_RGBA32I */ - 1632, /* GL_RGB32I */ + 782, /* GL_INTENSITY8UI_EXT */ + 904, /* GL_LUMINANCE8UI_EXT */ + 914, /* GL_LUMINANCE_ALPHA8UI_EXT */ + 1686, /* GL_RGBA32I */ + 1649, /* GL_RGB32I */ 39, /* GL_ALPHA32I_EXT */ - 760, /* GL_INTENSITY32I_EXT */ - 878, /* GL_LUMINANCE32I_EXT */ - 895, /* GL_LUMINANCE_ALPHA32I_EXT */ - 1660, /* GL_RGBA16I */ - 1624, /* GL_RGB16I */ + 776, /* GL_INTENSITY32I_EXT */ + 894, /* GL_LUMINANCE32I_EXT */ + 911, /* GL_LUMINANCE_ALPHA32I_EXT */ + 1677, /* GL_RGBA16I */ + 1641, /* GL_RGB16I */ 36, /* GL_ALPHA16I_EXT */ - 757, /* GL_INTENSITY16I_EXT */ - 873, /* GL_LUMINANCE16I_EXT */ - 893, /* GL_LUMINANCE_ALPHA16I_EXT */ - 1679, /* GL_RGBA8I */ - 1647, /* GL_RGB8I */ + 773, /* GL_INTENSITY16I_EXT */ + 889, /* GL_LUMINANCE16I_EXT */ + 909, /* GL_LUMINANCE_ALPHA16I_EXT */ + 1696, /* GL_RGBA8I */ + 1664, /* GL_RGB8I */ 44, /* GL_ALPHA8I_EXT */ - 765, /* GL_INTENSITY8I_EXT */ - 887, /* GL_LUMINANCE8I_EXT */ - 897, /* GL_LUMINANCE_ALPHA8I_EXT */ - 1563, /* GL_RED_INTEGER */ - 700, /* GL_GREEN_INTEGER */ + 781, /* GL_INTENSITY8I_EXT */ + 903, /* GL_LUMINANCE8I_EXT */ + 913, /* GL_LUMINANCE_ALPHA8I_EXT */ + 1580, /* GL_RED_INTEGER */ + 716, /* GL_GREEN_INTEGER */ 113, /* GL_BLUE_INTEGER */ 49, /* GL_ALPHA_INTEGER_EXT */ - 1694, /* GL_RGB_INTEGER */ - 1688, /* GL_RGBA_INTEGER */ + 1711, /* GL_RGB_INTEGER */ + 1705, /* GL_RGBA_INTEGER */ 84, /* GL_BGR_INTEGER */ 82, /* GL_BGRA_INTEGER */ - 900, /* GL_LUMINANCE_INTEGER_EXT */ - 899, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */ - 1690, /* GL_RGBA_INTEGER_MODE_EXT */ - 775, /* GL_INT_2_10_10_10_REV */ - 612, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */ - 653, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */ - 652, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */ - 1705, /* GL_SAMPLER_1D_ARRAY */ - 1711, /* GL_SAMPLER_2D_ARRAY */ - 1721, /* GL_SAMPLER_BUFFER */ - 1707, /* GL_SAMPLER_1D_ARRAY_SHADOW */ - 1713, /* GL_SAMPLER_2D_ARRAY_SHADOW */ - 1724, /* GL_SAMPLER_CUBE_SHADOW */ - 2209, /* GL_UNSIGNED_INT_VEC2 */ - 2211, /* GL_UNSIGNED_INT_VEC3 */ - 2213, /* GL_UNSIGNED_INT_VEC4 */ - 776, /* GL_INT_SAMPLER_1D */ - 780, /* GL_INT_SAMPLER_2D */ - 786, /* GL_INT_SAMPLER_3D */ - 790, /* GL_INT_SAMPLER_CUBE */ - 784, /* GL_INT_SAMPLER_2D_RECT */ - 777, /* GL_INT_SAMPLER_1D_ARRAY */ - 781, /* GL_INT_SAMPLER_2D_ARRAY */ - 788, /* GL_INT_SAMPLER_BUFFER */ - 2193, /* GL_UNSIGNED_INT_SAMPLER_1D */ - 2197, /* GL_UNSIGNED_INT_SAMPLER_2D */ - 2203, /* GL_UNSIGNED_INT_SAMPLER_3D */ - 2207, /* GL_UNSIGNED_INT_SAMPLER_CUBE */ - 2201, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */ - 2194, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */ - 2198, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */ - 2205, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */ - 691, /* GL_GEOMETRY_SHADER */ - 694, /* GL_GEOMETRY_VERTICES_OUT_ARB */ - 688, /* GL_GEOMETRY_INPUT_TYPE_ARB */ - 690, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */ - 1063, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */ - 1146, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */ - 1061, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */ - 1055, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */ - 1059, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */ - 863, /* GL_LOW_FLOAT */ - 1148, /* GL_MEDIUM_FLOAT */ - 706, /* GL_HIGH_FLOAT */ - 864, /* GL_LOW_INT */ - 1149, /* GL_MEDIUM_INT */ - 707, /* GL_HIGH_INT */ - 2183, /* GL_UNSIGNED_INT_10_10_10_2_OES */ - 774, /* GL_INT_10_10_10_2_OES */ - 1763, /* GL_SHADER_BINARY_FORMATS */ - 1251, /* GL_NUM_SHADER_BINARY_FORMATS */ - 1764, /* GL_SHADER_COMPILER */ - 1143, /* GL_MAX_VERTEX_UNIFORM_VECTORS */ - 1135, /* GL_MAX_VARYING_VECTORS */ - 1052, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */ - 1539, /* GL_QUERY_WAIT */ - 1533, /* GL_QUERY_NO_WAIT */ - 1529, /* GL_QUERY_BY_REGION_WAIT */ - 1527, /* GL_QUERY_BY_REGION_NO_WAIT */ - 2127, /* GL_TRANSFORM_FEEDBACK */ - 2136, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */ - 2130, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */ - 2128, /* GL_TRANSFORM_FEEDBACK_BINDING */ - 1523, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ - 546, /* GL_FIRST_VERTEX_CONVENTION */ - 808, /* GL_LAST_VERTEX_CONVENTION */ - 1497, /* GL_PROVOKING_VERTEX */ + 916, /* GL_LUMINANCE_INTEGER_EXT */ + 915, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */ + 1707, /* GL_RGBA_INTEGER_MODE_EXT */ + 791, /* GL_INT_2_10_10_10_REV */ + 628, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */ + 669, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */ + 668, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */ + 1722, /* GL_SAMPLER_1D_ARRAY */ + 1728, /* GL_SAMPLER_2D_ARRAY */ + 1738, /* GL_SAMPLER_BUFFER */ + 1724, /* GL_SAMPLER_1D_ARRAY_SHADOW */ + 1730, /* GL_SAMPLER_2D_ARRAY_SHADOW */ + 1741, /* GL_SAMPLER_CUBE_SHADOW */ + 2226, /* GL_UNSIGNED_INT_VEC2 */ + 2228, /* GL_UNSIGNED_INT_VEC3 */ + 2230, /* GL_UNSIGNED_INT_VEC4 */ + 792, /* GL_INT_SAMPLER_1D */ + 796, /* GL_INT_SAMPLER_2D */ + 802, /* GL_INT_SAMPLER_3D */ + 806, /* GL_INT_SAMPLER_CUBE */ + 800, /* GL_INT_SAMPLER_2D_RECT */ + 793, /* GL_INT_SAMPLER_1D_ARRAY */ + 797, /* GL_INT_SAMPLER_2D_ARRAY */ + 804, /* GL_INT_SAMPLER_BUFFER */ + 2210, /* GL_UNSIGNED_INT_SAMPLER_1D */ + 2214, /* GL_UNSIGNED_INT_SAMPLER_2D */ + 2220, /* GL_UNSIGNED_INT_SAMPLER_3D */ + 2224, /* GL_UNSIGNED_INT_SAMPLER_CUBE */ + 2218, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */ + 2211, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */ + 2215, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */ + 2222, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */ + 707, /* GL_GEOMETRY_SHADER */ + 710, /* GL_GEOMETRY_VERTICES_OUT_ARB */ + 704, /* GL_GEOMETRY_INPUT_TYPE_ARB */ + 706, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */ + 1080, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */ + 1163, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */ + 1078, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */ + 1072, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */ + 1076, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */ + 879, /* GL_LOW_FLOAT */ + 1165, /* GL_MEDIUM_FLOAT */ + 722, /* GL_HIGH_FLOAT */ + 880, /* GL_LOW_INT */ + 1166, /* GL_MEDIUM_INT */ + 723, /* GL_HIGH_INT */ + 2200, /* GL_UNSIGNED_INT_10_10_10_2_OES */ + 790, /* GL_INT_10_10_10_2_OES */ + 1780, /* GL_SHADER_BINARY_FORMATS */ + 1268, /* GL_NUM_SHADER_BINARY_FORMATS */ + 1781, /* GL_SHADER_COMPILER */ + 1160, /* GL_MAX_VERTEX_UNIFORM_VECTORS */ + 1152, /* GL_MAX_VARYING_VECTORS */ + 1069, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */ + 1556, /* GL_QUERY_WAIT */ + 1550, /* GL_QUERY_NO_WAIT */ + 1546, /* GL_QUERY_BY_REGION_WAIT */ + 1544, /* GL_QUERY_BY_REGION_NO_WAIT */ + 2144, /* GL_TRANSFORM_FEEDBACK */ + 2153, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */ + 2147, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */ + 2145, /* GL_TRANSFORM_FEEDBACK_BINDING */ + 1540, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ + 562, /* GL_FIRST_VERTEX_CONVENTION */ + 824, /* GL_LAST_VERTEX_CONVENTION */ + 1514, /* GL_PROVOKING_VERTEX */ 354, /* GL_COPY_READ_BUFFER */ 355, /* GL_COPY_WRITE_BUFFER */ - 1566, /* GL_RED_SNORM */ - 1701, /* GL_RG_SNORM */ - 1700, /* GL_RGB_SNORM */ - 1693, /* GL_RGBA_SNORM */ - 1545, /* GL_R8_SNORM */ - 1614, /* GL_RG8_SNORM */ - 1653, /* GL_RGB8_SNORM */ - 1685, /* GL_RGBA8_SNORM */ - 1543, /* GL_R16_SNORM */ - 1613, /* GL_RG16_SNORM */ - 1629, /* GL_RGB16_SNORM */ - 1665, /* GL_RGBA16_SNORM */ - 1775, /* GL_SIGNED_NORMALIZED */ - 1451, /* GL_PRIMITIVE_RESTART */ - 1452, /* GL_PRIMITIVE_RESTART_INDEX */ - 1108, /* GL_MAX_SERVER_WAIT_TIMEOUT */ - 1265, /* GL_OBJECT_TYPE */ - 1888, /* GL_SYNC_CONDITION */ - 1893, /* GL_SYNC_STATUS */ - 1890, /* GL_SYNC_FLAGS */ - 1889, /* GL_SYNC_FENCE */ - 1892, /* GL_SYNC_GPU_COMMANDS_COMPLETE */ - 2176, /* GL_UNSIGNALED */ - 1774, /* GL_SIGNALED */ + 1583, /* GL_RED_SNORM */ + 1718, /* GL_RG_SNORM */ + 1717, /* GL_RGB_SNORM */ + 1710, /* GL_RGBA_SNORM */ + 1562, /* GL_R8_SNORM */ + 1631, /* GL_RG8_SNORM */ + 1670, /* GL_RGB8_SNORM */ + 1702, /* GL_RGBA8_SNORM */ + 1560, /* GL_R16_SNORM */ + 1630, /* GL_RG16_SNORM */ + 1646, /* GL_RGB16_SNORM */ + 1682, /* GL_RGBA16_SNORM */ + 1792, /* GL_SIGNED_NORMALIZED */ + 1468, /* GL_PRIMITIVE_RESTART */ + 1469, /* GL_PRIMITIVE_RESTART_INDEX */ + 1125, /* GL_MAX_SERVER_WAIT_TIMEOUT */ + 1282, /* GL_OBJECT_TYPE */ + 1905, /* GL_SYNC_CONDITION */ + 1910, /* GL_SYNC_STATUS */ + 1907, /* GL_SYNC_FLAGS */ + 1906, /* GL_SYNC_FENCE */ + 1909, /* GL_SYNC_GPU_COMMANDS_COMPLETE */ + 2193, /* GL_UNSIGNALED */ + 1791, /* GL_SIGNALED */ 54, /* GL_ALREADY_SIGNALED */ - 2122, /* GL_TIMEOUT_EXPIRED */ + 2139, /* GL_TIMEOUT_EXPIRED */ 315, /* GL_CONDITION_SATISFIED */ - 2293, /* GL_WAIT_FAILED */ + 2310, /* GL_WAIT_FAILED */ 126, /* GL_BUFFER_ACCESS_FLAGS */ 132, /* GL_BUFFER_MAP_LENGTH */ 133, /* GL_BUFFER_MAP_OFFSET */ - 1138, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */ - 1053, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */ - 1054, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */ - 1049, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */ + 1155, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */ + 1070, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */ + 1071, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */ + 1066, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */ 330, /* GL_CONTEXT_PROFILE_MASK */ - 531, /* GL_EVAL_BIT */ - 1548, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ - 855, /* GL_LIST_BIT */ - 1995, /* GL_TEXTURE_BIT */ - 1744, /* GL_SCISSOR_BIT */ + 547, /* GL_EVAL_BIT */ + 1565, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ + 871, /* GL_LIST_BIT */ + 2012, /* GL_TEXTURE_BIT */ + 1761, /* GL_SCISSOR_BIT */ 30, /* GL_ALL_ATTRIB_BITS */ - 1214, /* GL_MULTISAMPLE_BIT */ + 1231, /* GL_MULTISAMPLE_BIT */ 31, /* GL_ALL_CLIENT_ATTRIB_BITS */ }; diff --git a/mesalib/src/mesa/main/eval.h b/mesalib/src/mesa/main/eval.h index c6a37c135..5a4203138 100644 --- a/mesalib/src/mesa/main/eval.h +++ b/mesalib/src/mesa/main/eval.h @@ -1,111 +1,111 @@ -/** - * \file eval.h - * Eval operations. - * - * \if subset - * (No-op) - * - * \endif - */ - -/* - * Mesa 3-D graphics library - * Version: 3.5 - * - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -#ifndef EVAL_H -#define EVAL_H - - -#include "main/mfeatures.h" -#include "main/mtypes.h" - - -#if FEATURE_evaluators - -#define _MESA_INIT_EVAL_VTXFMT(vfmt, impl) \ - do { \ - (vfmt)->EvalCoord1f = impl ## EvalCoord1f; \ - (vfmt)->EvalCoord1fv = impl ## EvalCoord1fv; \ - (vfmt)->EvalCoord2f = impl ## EvalCoord2f; \ - (vfmt)->EvalCoord2fv = impl ## EvalCoord2fv; \ - (vfmt)->EvalPoint1 = impl ## EvalPoint1; \ - (vfmt)->EvalPoint2 = impl ## EvalPoint2; \ - (vfmt)->EvalMesh1 = impl ## EvalMesh1; \ - (vfmt)->EvalMesh2 = impl ## EvalMesh2; \ - } while (0) - -extern GLuint _mesa_evaluator_components( GLenum target ); - - -extern void gl_free_control_points( struct gl_context *ctx, - GLenum target, GLfloat *data ); - - -extern GLfloat *_mesa_copy_map_points1f( GLenum target, - GLint ustride, GLint uorder, - const GLfloat *points ); - -extern GLfloat *_mesa_copy_map_points1d( GLenum target, - GLint ustride, GLint uorder, - const GLdouble *points ); - -extern GLfloat *_mesa_copy_map_points2f( GLenum target, - GLint ustride, GLint uorder, - GLint vstride, GLint vorder, - const GLfloat *points ); - -extern GLfloat *_mesa_copy_map_points2d(GLenum target, - GLint ustride, GLint uorder, - GLint vstride, GLint vorder, - const GLdouble *points ); - -extern void -_mesa_install_eval_vtxfmt(struct _glapi_table *disp, - const GLvertexformat *vfmt); - -extern void -_mesa_init_eval_dispatch(struct _glapi_table *disp); - -#else /* FEATURE_evaluators */ - -#define _MESA_INIT_EVAL_VTXFMT(vfmt, impl) do { } while (0) - -static INLINE void -_mesa_install_eval_vtxfmt(struct _glapi_table *disp, - const GLvertexformat *vfmt) -{ -} - -static INLINE void -_mesa_init_eval_dispatch(struct _glapi_table *disp) -{ -} - -#endif /* FEATURE_evaluators */ - -extern void _mesa_init_eval( struct gl_context *ctx ); -extern void _mesa_free_eval_data( struct gl_context *ctx ); - - -#endif /* EVAL_H */ +/** + * \file eval.h + * Eval operations. + * + * \if subset + * (No-op) + * + * \endif + */ + +/* + * Mesa 3-D graphics library + * Version: 3.5 + * + * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +#ifndef EVAL_H +#define EVAL_H + + +#include "main/mfeatures.h" +#include "main/mtypes.h" + + +#if FEATURE_evaluators + +#define _MESA_INIT_EVAL_VTXFMT(vfmt, impl) \ + do { \ + (vfmt)->EvalCoord1f = impl ## EvalCoord1f; \ + (vfmt)->EvalCoord1fv = impl ## EvalCoord1fv; \ + (vfmt)->EvalCoord2f = impl ## EvalCoord2f; \ + (vfmt)->EvalCoord2fv = impl ## EvalCoord2fv; \ + (vfmt)->EvalPoint1 = impl ## EvalPoint1; \ + (vfmt)->EvalPoint2 = impl ## EvalPoint2; \ + (vfmt)->EvalMesh1 = impl ## EvalMesh1; \ + (vfmt)->EvalMesh2 = impl ## EvalMesh2; \ + } while (0) + +extern GLuint _mesa_evaluator_components( GLenum target ); + + +extern void gl_free_control_points( struct gl_context *ctx, + GLenum target, GLfloat *data ); + + +extern GLfloat *_mesa_copy_map_points1f( GLenum target, + GLint ustride, GLint uorder, + const GLfloat *points ); + +extern GLfloat *_mesa_copy_map_points1d( GLenum target, + GLint ustride, GLint uorder, + const GLdouble *points ); + +extern GLfloat *_mesa_copy_map_points2f( GLenum target, + GLint ustride, GLint uorder, + GLint vstride, GLint vorder, + const GLfloat *points ); + +extern GLfloat *_mesa_copy_map_points2d(GLenum target, + GLint ustride, GLint uorder, + GLint vstride, GLint vorder, + const GLdouble *points ); + +extern void +_mesa_install_eval_vtxfmt(struct _glapi_table *disp, + const GLvertexformat *vfmt); + +extern void +_mesa_init_eval_dispatch(struct _glapi_table *disp); + +#else /* FEATURE_evaluators */ + +#define _MESA_INIT_EVAL_VTXFMT(vfmt, impl) do { } while (0) + +static inline void +_mesa_install_eval_vtxfmt(struct _glapi_table *disp, + const GLvertexformat *vfmt) +{ +} + +static inline void +_mesa_init_eval_dispatch(struct _glapi_table *disp) +{ +} + +#endif /* FEATURE_evaluators */ + +extern void _mesa_init_eval( struct gl_context *ctx ); +extern void _mesa_free_eval_data( struct gl_context *ctx ); + + +#endif /* EVAL_H */ diff --git a/mesalib/src/mesa/main/extensions.c b/mesalib/src/mesa/main/extensions.c index af1a3ff85..52b928e41 100644 --- a/mesalib/src/mesa/main/extensions.c +++ b/mesalib/src/mesa/main/extensions.c @@ -85,7 +85,7 @@ static const struct extension extension_table[] = { { "GL_ARB_depth_buffer_float", o(ARB_depth_buffer_float), GL, 2008 }, { "GL_ARB_depth_clamp", o(ARB_depth_clamp), GL, 2003 }, { "GL_ARB_depth_texture", o(ARB_depth_texture), GL, 2001 }, - { "GL_ARB_draw_buffers", o(ARB_draw_buffers), GL, 2002 }, + { "GL_ARB_draw_buffers", o(dummy_true), GL, 2002 }, { "GL_ARB_draw_buffers_blend", o(ARB_draw_buffers_blend), GL, 2009 }, { "GL_ARB_draw_elements_base_vertex", o(ARB_draw_elements_base_vertex), GL, 2009 }, { "GL_ARB_draw_instanced", o(ARB_draw_instanced), GL, 2008 }, @@ -263,7 +263,7 @@ static const struct extension extension_table[] = { { "GL_APPLE_packed_pixels", o(APPLE_packed_pixels), GL, 2002 }, { "GL_APPLE_vertex_array_object", o(APPLE_vertex_array_object), GL, 2002 }, { "GL_ATI_blend_equation_separate", o(EXT_blend_equation_separate), GL, 2003 }, - { "GL_ATI_draw_buffers", o(ARB_draw_buffers), GL, 2002 }, + { "GL_ATI_draw_buffers", o(dummy_true), GL, 2002 }, { "GL_ATI_envmap_bumpmap", o(ATI_envmap_bumpmap), GL, 2001 }, { "GL_ATI_fragment_shader", o(ATI_fragment_shader), GL, 2001 }, { "GL_ATI_separate_stencil", o(ATI_separate_stencil), GL, 2006 }, @@ -284,6 +284,8 @@ static const struct extension extension_table[] = { { "GL_NV_blend_square", o(NV_blend_square), GL, 1999 }, { "GL_NV_conditional_render", o(NV_conditional_render), GL, 2008 }, { "GL_NV_depth_clamp", o(ARB_depth_clamp), GL, 2001 }, + { "GL_NV_draw_buffers", o(dummy_true), ES2, 2011 }, + { "GL_NV_fbo_color_attachments", o(EXT_framebuffer_object), ES2, 2010 }, { "GL_NV_fragment_program", o(NV_fragment_program), GL, 2001 }, { "GL_NV_fragment_program_option", o(NV_fragment_program_option), GL, 2005 }, { "GL_NV_light_max_exponent", o(NV_light_max_exponent), GL, 1999 }, @@ -341,7 +343,6 @@ name_to_offset(const char* name) */ static const size_t default_extensions[] = { o(ARB_copy_buffer), - o(ARB_draw_buffers), o(ARB_transpose_matrix), o(ARB_window_pos), @@ -376,7 +377,6 @@ _mesa_enable_sw_extensions(struct gl_context *ctx) /*ctx->Extensions.ARB_copy_buffer = GL_TRUE;*/ ctx->Extensions.ARB_depth_clamp = GL_TRUE; ctx->Extensions.ARB_depth_texture = GL_TRUE; - /*ctx->Extensions.ARB_draw_buffers = GL_TRUE;*/ ctx->Extensions.ARB_draw_elements_base_vertex = GL_TRUE; ctx->Extensions.ARB_draw_instanced = GL_TRUE; ctx->Extensions.ARB_explicit_attrib_location = GL_TRUE; @@ -575,7 +575,6 @@ _mesa_enable_1_5_extensions(struct gl_context *ctx) void _mesa_enable_2_0_extensions(struct gl_context *ctx) { - /*ctx->Extensions.ARB_draw_buffers = GL_TRUE;*/ #if FEATURE_ARB_fragment_shader ctx->Extensions.ARB_fragment_shader = GL_TRUE; #endif diff --git a/mesalib/src/mesa/main/fbobject.c b/mesalib/src/mesa/main/fbobject.c index fd371aba8..757115584 100644 --- a/mesalib/src/mesa/main/fbobject.c +++ b/mesalib/src/mesa/main/fbobject.c @@ -78,7 +78,7 @@ static struct gl_renderbuffer DummyRenderbuffer; static struct gl_framebuffer IncompleteFramebuffer; -static INLINE GLboolean +static inline GLboolean is_cube_face(GLenum target) { return (target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X && @@ -89,7 +89,7 @@ is_cube_face(GLenum target) /** * Is the given FBO a user-created FBO? */ -static INLINE GLboolean +static inline GLboolean is_user_fbo(const struct gl_framebuffer *fb) { return fb->Name != 0; @@ -99,7 +99,7 @@ is_user_fbo(const struct gl_framebuffer *fb) /** * Is the given FBO a window system FBO (like an X window)? */ -static INLINE GLboolean +static inline GLboolean is_winsys_fbo(const struct gl_framebuffer *fb) { return fb->Name == 0; @@ -194,9 +194,11 @@ get_framebuffer_target(struct gl_context *ctx, GLenum target) { switch (target) { case GL_DRAW_FRAMEBUFFER: - return ctx->Extensions.EXT_framebuffer_blit ? ctx->DrawBuffer : NULL; + return ctx->Extensions.EXT_framebuffer_blit && ctx->API == API_OPENGL + ? ctx->DrawBuffer : NULL; case GL_READ_FRAMEBUFFER: - return ctx->Extensions.EXT_framebuffer_blit ? ctx->ReadBuffer : NULL; + return ctx->Extensions.EXT_framebuffer_blit && ctx->API == API_OPENGL + ? ctx->ReadBuffer : NULL; case GL_FRAMEBUFFER_EXT: return ctx->DrawBuffer; default: @@ -238,18 +240,27 @@ _mesa_get_attachment(struct gl_context *ctx, struct gl_framebuffer *fb, case GL_COLOR_ATTACHMENT13_EXT: case GL_COLOR_ATTACHMENT14_EXT: case GL_COLOR_ATTACHMENT15_EXT: + /* Only OpenGL ES 1.x forbids color attachments other than + * GL_COLOR_ATTACHMENT0. For all other APIs the limit set by the + * hardware is used. + */ i = attachment - GL_COLOR_ATTACHMENT0_EXT; - if (i >= ctx->Const.MaxColorAttachments) { + if (i >= ctx->Const.MaxColorAttachments + || (i > 0 && ctx->API == API_OPENGLES)) { return NULL; } return &fb->Attachment[BUFFER_COLOR0 + i]; case GL_DEPTH_STENCIL_ATTACHMENT: + if (ctx->API != API_OPENGL) + return NULL; /* fall-through */ case GL_DEPTH_BUFFER: /* fall-through / new in GL 3.0 */ case GL_DEPTH_ATTACHMENT_EXT: return &fb->Attachment[BUFFER_DEPTH]; case GL_STENCIL_BUFFER: + if (ctx->API != API_OPENGL) + return NULL; /* fall-through / new in GL 3.0 */ case GL_STENCIL_ATTACHMENT_EXT: return &fb->Attachment[BUFFER_STENCIL]; @@ -1220,7 +1231,67 @@ _mesa_base_fbo_format(struct gl_context *ctx, GLenum internalFormat) return ctx->Extensions.EXT_texture_shared_exponent ? GL_RGB : 0; case GL_R11F_G11F_B10F: return ctx->Extensions.EXT_packed_float ? GL_RGB : 0; - /* XXX add integer formats eventually */ + + case GL_RGBA8UI_EXT: + case GL_RGBA16UI_EXT: + case GL_RGBA32UI_EXT: + case GL_RGBA8I_EXT: + case GL_RGBA16I_EXT: + case GL_RGBA32I_EXT: + return ctx->Extensions.EXT_texture_integer ? GL_RGBA : 0; + + case GL_RGB8UI_EXT: + case GL_RGB16UI_EXT: + case GL_RGB32UI_EXT: + case GL_RGB8I_EXT: + case GL_RGB16I_EXT: + case GL_RGB32I_EXT: + return ctx->Extensions.EXT_texture_integer ? GL_RGB : 0; + + case GL_R8UI: + case GL_R8I: + case GL_R16UI: + case GL_R16I: + case GL_R32UI: + case GL_R32I: + return ctx->Extensions.ARB_texture_rg && + ctx->Extensions.EXT_texture_integer ? GL_RED : 0; + + case GL_RG8UI: + case GL_RG8I: + case GL_RG16UI: + case GL_RG16I: + case GL_RG32UI: + case GL_RG32I: + return ctx->Extensions.ARB_texture_rg && + ctx->Extensions.EXT_texture_integer ? GL_RG : 0; + + case GL_INTENSITY8I_EXT: + case GL_INTENSITY8UI_EXT: + case GL_INTENSITY16I_EXT: + case GL_INTENSITY16UI_EXT: + case GL_INTENSITY32I_EXT: + case GL_INTENSITY32UI_EXT: + return ctx->Extensions.EXT_texture_integer && + ctx->Extensions.ARB_framebuffer_object ? GL_INTENSITY : 0; + + case GL_LUMINANCE8I_EXT: + case GL_LUMINANCE8UI_EXT: + case GL_LUMINANCE16I_EXT: + case GL_LUMINANCE16UI_EXT: + case GL_LUMINANCE32I_EXT: + case GL_LUMINANCE32UI_EXT: + return ctx->Extensions.EXT_texture_integer && + ctx->Extensions.ARB_framebuffer_object ? GL_LUMINANCE : 0; + + case GL_LUMINANCE_ALPHA8I_EXT: + case GL_LUMINANCE_ALPHA8UI_EXT: + case GL_LUMINANCE_ALPHA16I_EXT: + case GL_LUMINANCE_ALPHA16UI_EXT: + case GL_LUMINANCE_ALPHA32I_EXT: + case GL_LUMINANCE_ALPHA32UI_EXT: + return ctx->Extensions.EXT_texture_integer && + ctx->Extensions.ARB_framebuffer_object ? GL_LUMINANCE_ALPHA : 0; default: return 0; } diff --git a/mesalib/src/mesa/main/fbobject.h b/mesalib/src/mesa/main/fbobject.h index d9b06b9af..0a70a436d 100644 --- a/mesalib/src/mesa/main/fbobject.h +++ b/mesalib/src/mesa/main/fbobject.h @@ -1,195 +1,195 @@ -/* - * Mesa 3-D graphics library - * Version: 7.1 - * - * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -#ifndef FBOBJECT_H -#define FBOBJECT_H - -#include "compiler.h" -#include "glheader.h" - -struct gl_context; -struct gl_texture_object; - -extern void -_mesa_init_fbobjects(struct gl_context *ctx); - -extern struct gl_framebuffer * -_mesa_get_incomplete_framebuffer(void); - -extern struct gl_renderbuffer * -_mesa_lookup_renderbuffer(struct gl_context *ctx, GLuint id); - -extern struct gl_framebuffer * -_mesa_lookup_framebuffer(struct gl_context *ctx, GLuint id); - -extern struct gl_renderbuffer_attachment * -_mesa_get_attachment(struct gl_context *ctx, struct gl_framebuffer *fb, - GLenum attachment); - - -/** Return the texture image for a renderbuffer attachment */ -static INLINE struct gl_texture_image * -_mesa_get_attachment_teximage(struct gl_renderbuffer_attachment *att) -{ - assert(att->Type == GL_TEXTURE); - return att->Texture->Image[att->CubeMapFace][att->TextureLevel]; -} - - -/** Return the (const) texture image for a renderbuffer attachment */ -static INLINE const struct gl_texture_image * -_mesa_get_attachment_teximage_const(const struct gl_renderbuffer_attachment *att) -{ - assert(att->Type == GL_TEXTURE); - return att->Texture->Image[att->CubeMapFace][att->TextureLevel]; -} - - -extern void -_mesa_remove_attachment(struct gl_context *ctx, - struct gl_renderbuffer_attachment *att); - -extern void -_mesa_set_texture_attachment(struct gl_context *ctx, - struct gl_framebuffer *fb, - struct gl_renderbuffer_attachment *att, - struct gl_texture_object *texObj, - GLenum texTarget, GLuint level, GLuint zoffset); - -extern void -_mesa_set_renderbuffer_attachment(struct gl_context *ctx, - struct gl_renderbuffer_attachment *att, - struct gl_renderbuffer *rb); - -extern void -_mesa_framebuffer_renderbuffer(struct gl_context *ctx, - struct gl_framebuffer *fb, - GLenum attachment, struct gl_renderbuffer *rb); - -extern void -_mesa_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb); - -extern void -_mesa_test_framebuffer_completeness(struct gl_context *ctx, - struct gl_framebuffer *fb); - -extern GLboolean -_mesa_is_legal_color_format(const struct gl_context *ctx, GLenum baseFormat); - -extern GLenum -_mesa_base_fbo_format(struct gl_context *ctx, GLenum internalFormat); - -extern GLboolean GLAPIENTRY -_mesa_IsRenderbufferEXT(GLuint renderbuffer); - -extern void GLAPIENTRY -_mesa_BindRenderbufferEXT(GLenum target, GLuint renderbuffer); - -extern void GLAPIENTRY -_mesa_DeleteRenderbuffersEXT(GLsizei n, const GLuint *renderbuffers); - -extern void GLAPIENTRY -_mesa_GenRenderbuffersEXT(GLsizei n, GLuint *renderbuffers); - -extern void GLAPIENTRY -_mesa_RenderbufferStorageEXT(GLenum target, GLenum internalformat, - GLsizei width, GLsizei height); - -extern void GLAPIENTRY -_mesa_RenderbufferStorageMultisample(GLenum target, GLsizei samples, - GLenum internalformat, - GLsizei width, GLsizei height); - -extern void GLAPIENTRY -_es_RenderbufferStorageEXT(GLenum target, GLenum internalFormat, - GLsizei width, GLsizei height); - -extern void GLAPIENTRY -_mesa_EGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image); - -extern void GLAPIENTRY -_mesa_GetRenderbufferParameterivEXT(GLenum target, GLenum pname, - GLint *params); - -extern GLboolean GLAPIENTRY -_mesa_IsFramebufferEXT(GLuint framebuffer); - -extern void GLAPIENTRY -_mesa_BindFramebufferEXT(GLenum target, GLuint framebuffer); - -extern void GLAPIENTRY -_mesa_DeleteFramebuffersEXT(GLsizei n, const GLuint *framebuffers); - -extern void GLAPIENTRY -_mesa_GenFramebuffersEXT(GLsizei n, GLuint *framebuffers); - -extern GLenum GLAPIENTRY -_mesa_CheckFramebufferStatusEXT(GLenum target); - -extern void GLAPIENTRY -_mesa_FramebufferTexture1DEXT(GLenum target, GLenum attachment, - GLenum textarget, GLuint texture, GLint level); - -extern void GLAPIENTRY -_mesa_FramebufferTexture2DEXT(GLenum target, GLenum attachment, - GLenum textarget, GLuint texture, GLint level); - -extern void GLAPIENTRY -_mesa_FramebufferTexture3DEXT(GLenum target, GLenum attachment, - GLenum textarget, GLuint texture, - GLint level, GLint zoffset); - -extern void GLAPIENTRY -_mesa_FramebufferTextureLayerEXT(GLenum target, GLenum attachment, - GLuint texture, GLint level, GLint layer); - -extern void GLAPIENTRY -_mesa_FramebufferRenderbufferEXT(GLenum target, GLenum attachment, - GLenum renderbuffertarget, - GLuint renderbuffer); - -extern void GLAPIENTRY -_mesa_GetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, - GLenum pname, GLint *params); - -extern void GLAPIENTRY -_mesa_GenerateMipmapEXT(GLenum target); - - -extern void GLAPIENTRY -_mesa_BlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, - GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, - GLbitfield mask, GLenum filter); - -extern void GLAPIENTRY -_mesa_FramebufferTextureARB(GLenum target, GLenum attachment, - GLuint texture, GLint level); - -extern void GLAPIENTRY -_mesa_FramebufferTextureFaceARB(GLenum target, GLenum attachment, - GLuint texture, GLint level, GLenum face); - - -#endif /* FBOBJECT_H */ +/* + * Mesa 3-D graphics library + * Version: 7.1 + * + * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +#ifndef FBOBJECT_H +#define FBOBJECT_H + +#include "compiler.h" +#include "glheader.h" + +struct gl_context; +struct gl_texture_object; + +extern void +_mesa_init_fbobjects(struct gl_context *ctx); + +extern struct gl_framebuffer * +_mesa_get_incomplete_framebuffer(void); + +extern struct gl_renderbuffer * +_mesa_lookup_renderbuffer(struct gl_context *ctx, GLuint id); + +extern struct gl_framebuffer * +_mesa_lookup_framebuffer(struct gl_context *ctx, GLuint id); + +extern struct gl_renderbuffer_attachment * +_mesa_get_attachment(struct gl_context *ctx, struct gl_framebuffer *fb, + GLenum attachment); + + +/** Return the texture image for a renderbuffer attachment */ +static inline struct gl_texture_image * +_mesa_get_attachment_teximage(struct gl_renderbuffer_attachment *att) +{ + assert(att->Type == GL_TEXTURE); + return att->Texture->Image[att->CubeMapFace][att->TextureLevel]; +} + + +/** Return the (const) texture image for a renderbuffer attachment */ +static inline const struct gl_texture_image * +_mesa_get_attachment_teximage_const(const struct gl_renderbuffer_attachment *att) +{ + assert(att->Type == GL_TEXTURE); + return att->Texture->Image[att->CubeMapFace][att->TextureLevel]; +} + + +extern void +_mesa_remove_attachment(struct gl_context *ctx, + struct gl_renderbuffer_attachment *att); + +extern void +_mesa_set_texture_attachment(struct gl_context *ctx, + struct gl_framebuffer *fb, + struct gl_renderbuffer_attachment *att, + struct gl_texture_object *texObj, + GLenum texTarget, GLuint level, GLuint zoffset); + +extern void +_mesa_set_renderbuffer_attachment(struct gl_context *ctx, + struct gl_renderbuffer_attachment *att, + struct gl_renderbuffer *rb); + +extern void +_mesa_framebuffer_renderbuffer(struct gl_context *ctx, + struct gl_framebuffer *fb, + GLenum attachment, struct gl_renderbuffer *rb); + +extern void +_mesa_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb); + +extern void +_mesa_test_framebuffer_completeness(struct gl_context *ctx, + struct gl_framebuffer *fb); + +extern GLboolean +_mesa_is_legal_color_format(const struct gl_context *ctx, GLenum baseFormat); + +extern GLenum +_mesa_base_fbo_format(struct gl_context *ctx, GLenum internalFormat); + +extern GLboolean GLAPIENTRY +_mesa_IsRenderbufferEXT(GLuint renderbuffer); + +extern void GLAPIENTRY +_mesa_BindRenderbufferEXT(GLenum target, GLuint renderbuffer); + +extern void GLAPIENTRY +_mesa_DeleteRenderbuffersEXT(GLsizei n, const GLuint *renderbuffers); + +extern void GLAPIENTRY +_mesa_GenRenderbuffersEXT(GLsizei n, GLuint *renderbuffers); + +extern void GLAPIENTRY +_mesa_RenderbufferStorageEXT(GLenum target, GLenum internalformat, + GLsizei width, GLsizei height); + +extern void GLAPIENTRY +_mesa_RenderbufferStorageMultisample(GLenum target, GLsizei samples, + GLenum internalformat, + GLsizei width, GLsizei height); + +extern void GLAPIENTRY +_es_RenderbufferStorageEXT(GLenum target, GLenum internalFormat, + GLsizei width, GLsizei height); + +extern void GLAPIENTRY +_mesa_EGLImageTargetRenderbufferStorageOES(GLenum target, GLeglImageOES image); + +extern void GLAPIENTRY +_mesa_GetRenderbufferParameterivEXT(GLenum target, GLenum pname, + GLint *params); + +extern GLboolean GLAPIENTRY +_mesa_IsFramebufferEXT(GLuint framebuffer); + +extern void GLAPIENTRY +_mesa_BindFramebufferEXT(GLenum target, GLuint framebuffer); + +extern void GLAPIENTRY +_mesa_DeleteFramebuffersEXT(GLsizei n, const GLuint *framebuffers); + +extern void GLAPIENTRY +_mesa_GenFramebuffersEXT(GLsizei n, GLuint *framebuffers); + +extern GLenum GLAPIENTRY +_mesa_CheckFramebufferStatusEXT(GLenum target); + +extern void GLAPIENTRY +_mesa_FramebufferTexture1DEXT(GLenum target, GLenum attachment, + GLenum textarget, GLuint texture, GLint level); + +extern void GLAPIENTRY +_mesa_FramebufferTexture2DEXT(GLenum target, GLenum attachment, + GLenum textarget, GLuint texture, GLint level); + +extern void GLAPIENTRY +_mesa_FramebufferTexture3DEXT(GLenum target, GLenum attachment, + GLenum textarget, GLuint texture, + GLint level, GLint zoffset); + +extern void GLAPIENTRY +_mesa_FramebufferTextureLayerEXT(GLenum target, GLenum attachment, + GLuint texture, GLint level, GLint layer); + +extern void GLAPIENTRY +_mesa_FramebufferRenderbufferEXT(GLenum target, GLenum attachment, + GLenum renderbuffertarget, + GLuint renderbuffer); + +extern void GLAPIENTRY +_mesa_GetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, + GLenum pname, GLint *params); + +extern void GLAPIENTRY +_mesa_GenerateMipmapEXT(GLenum target); + + +extern void GLAPIENTRY +_mesa_BlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, + GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, + GLbitfield mask, GLenum filter); + +extern void GLAPIENTRY +_mesa_FramebufferTextureARB(GLenum target, GLenum attachment, + GLuint texture, GLint level); + +extern void GLAPIENTRY +_mesa_FramebufferTextureFaceARB(GLenum target, GLenum attachment, + GLuint texture, GLint level, GLenum face); + + +#endif /* FBOBJECT_H */ diff --git a/mesalib/src/mesa/main/feedback.c b/mesalib/src/mesa/main/feedback.c index d73aa08fa..cb5f49f67 100644 --- a/mesalib/src/mesa/main/feedback.c +++ b/mesalib/src/mesa/main/feedback.c @@ -197,7 +197,7 @@ _mesa_SelectBuffer( GLsizei size, GLuint *buffer ) * Verifies there is free space in the buffer to write the value and * increments the pointer. */ -static INLINE void +static inline void write_record(struct gl_context *ctx, GLuint value) { if (ctx->Select.BufferCount < ctx->Select.BufferSize) { diff --git a/mesalib/src/mesa/main/feedback.h b/mesalib/src/mesa/main/feedback.h index 24ce53af4..6d256ee8f 100644 --- a/mesalib/src/mesa/main/feedback.h +++ b/mesalib/src/mesa/main/feedback.h @@ -1,99 +1,99 @@ -/* - * Mesa 3-D graphics library - * Version: 7.5 - * - * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. - * Copyright (C) 2009 VMware, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#ifndef FEEDBACK_H -#define FEEDBACK_H - - -#include "main/mfeatures.h" -#include "main/mtypes.h" - - -#if FEATURE_feedback - -extern void -_mesa_feedback_vertex( struct gl_context *ctx, - const GLfloat win[4], - const GLfloat color[4], - const GLfloat texcoord[4] ); - - -static INLINE void -_mesa_feedback_token( struct gl_context *ctx, GLfloat token ) -{ - if (ctx->Feedback.Count < ctx->Feedback.BufferSize) { - ctx->Feedback.Buffer[ctx->Feedback.Count] = token; - } - ctx->Feedback.Count++; -} - - -extern void -_mesa_update_hitflag( struct gl_context *ctx, GLfloat z ); - - -extern void -_mesa_init_feedback_dispatch(struct _glapi_table *disp); - -#else /* FEATURE_feedback */ - -#include "main/compiler.h" - -static INLINE void -_mesa_feedback_vertex( struct gl_context *ctx, - const GLfloat win[4], - const GLfloat color[4], - const GLfloat texcoord[4] ) -{ - /* render mode is always GL_RENDER */ - ASSERT_NO_FEATURE(); -} - - -static INLINE void -_mesa_feedback_token( struct gl_context *ctx, GLfloat token ) -{ - /* render mode is always GL_RENDER */ - ASSERT_NO_FEATURE(); -} - -static INLINE void -_mesa_update_hitflag( struct gl_context *ctx, GLfloat z ) -{ - /* render mode is always GL_RENDER */ - ASSERT_NO_FEATURE(); -} - -static INLINE void -_mesa_init_feedback_dispatch(struct _glapi_table *disp) -{ -} - -#endif /* FEATURE_feedback */ - -extern void -_mesa_init_feedback( struct gl_context *ctx ); - -#endif /* FEEDBACK_H */ +/* + * Mesa 3-D graphics library + * Version: 7.5 + * + * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. + * Copyright (C) 2009 VMware, Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#ifndef FEEDBACK_H +#define FEEDBACK_H + + +#include "main/mfeatures.h" +#include "main/mtypes.h" + + +#if FEATURE_feedback + +extern void +_mesa_feedback_vertex( struct gl_context *ctx, + const GLfloat win[4], + const GLfloat color[4], + const GLfloat texcoord[4] ); + + +static inline void +_mesa_feedback_token( struct gl_context *ctx, GLfloat token ) +{ + if (ctx->Feedback.Count < ctx->Feedback.BufferSize) { + ctx->Feedback.Buffer[ctx->Feedback.Count] = token; + } + ctx->Feedback.Count++; +} + + +extern void +_mesa_update_hitflag( struct gl_context *ctx, GLfloat z ); + + +extern void +_mesa_init_feedback_dispatch(struct _glapi_table *disp); + +#else /* FEATURE_feedback */ + +#include "main/compiler.h" + +static inline void +_mesa_feedback_vertex( struct gl_context *ctx, + const GLfloat win[4], + const GLfloat color[4], + const GLfloat texcoord[4] ) +{ + /* render mode is always GL_RENDER */ + ASSERT_NO_FEATURE(); +} + + +static inline void +_mesa_feedback_token( struct gl_context *ctx, GLfloat token ) +{ + /* render mode is always GL_RENDER */ + ASSERT_NO_FEATURE(); +} + +static inline void +_mesa_update_hitflag( struct gl_context *ctx, GLfloat z ) +{ + /* render mode is always GL_RENDER */ + ASSERT_NO_FEATURE(); +} + +static inline void +_mesa_init_feedback_dispatch(struct _glapi_table *disp) +{ +} + +#endif /* FEATURE_feedback */ + +extern void +_mesa_init_feedback( struct gl_context *ctx ); + +#endif /* FEEDBACK_H */ diff --git a/mesalib/src/mesa/main/format_unpack.c b/mesalib/src/mesa/main/format_unpack.c index dadff0556..2051f68fb 100644 --- a/mesalib/src/mesa/main/format_unpack.c +++ b/mesalib/src/mesa/main/format_unpack.c @@ -34,7 +34,7 @@ * linear RGB value in [0, 1]. * Implemented with a 256-entry lookup table. */ -static INLINE GLfloat +static inline GLfloat nonlinear_to_linear(GLubyte cs8) { static GLfloat table[256]; diff --git a/mesalib/src/mesa/main/formats.c b/mesalib/src/mesa/main/formats.c index 11d670689..02b20284b 100644 --- a/mesalib/src/mesa/main/formats.c +++ b/mesalib/src/mesa/main/formats.c @@ -756,6 +756,251 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] = }, /* unnormalized signed int formats */ + /* unnormalized unsigned int formats */ + { + MESA_FORMAT_ALPHA_UINT8, + "MESA_FORMAT_ALPHA_UINT8", + GL_ALPHA, + GL_UNSIGNED_INT, + 0, 0, 0, 8, + 0, 0, 0, 0, 0, + 1, 1, 1 + }, + { + MESA_FORMAT_ALPHA_UINT16, + "MESA_FORMAT_ALPHA_UINT16", + GL_ALPHA, + GL_UNSIGNED_INT, + 0, 0, 0, 16, + 0, 0, 0, 0, 0, + 1, 1, 2 + }, + { + MESA_FORMAT_ALPHA_UINT32, + "MESA_FORMAT_ALPHA_UINT32", + GL_ALPHA, + GL_UNSIGNED_INT, + 0, 0, 0, 32, + 0, 0, 0, 0, 0, + 1, 1, 4 + }, + { + MESA_FORMAT_ALPHA_INT8, + "MESA_FORMAT_ALPHA_INT8", + GL_ALPHA, + GL_INT, + 0, 0, 0, 8, + 0, 0, 0, 0, 0, + 1, 1, 1 + }, + { + MESA_FORMAT_ALPHA_INT16, + "MESA_FORMAT_ALPHA_INT16", + GL_ALPHA, + GL_INT, + 0, 0, 0, 16, + 0, 0, 0, 0, 0, + 1, 1, 2 + }, + { + MESA_FORMAT_ALPHA_INT32, + "MESA_FORMAT_ALPHA_INT32", + GL_ALPHA, + GL_INT, + 0, 0, 0, 32, + 0, 0, 0, 0, 0, + 1, 1, 4 + }, + { + MESA_FORMAT_INTENSITY_UINT8, + "MESA_FORMAT_INTENSITY_UINT8", + GL_INTENSITY, + GL_UNSIGNED_INT, + 0, 0, 0, 0, + 0, 8, 0, 0, 0, + 1, 1, 1 + }, + { + MESA_FORMAT_INTENSITY_UINT16, + "MESA_FORMAT_INTENSITY_UINT16", + GL_INTENSITY, + GL_UNSIGNED_INT, + 0, 0, 0, 0, + 0, 16, 0, 0, 0, + 1, 1, 2 + }, + { + MESA_FORMAT_INTENSITY_UINT32, + "MESA_FORMAT_INTENSITY_UINT32", + GL_INTENSITY, + GL_UNSIGNED_INT, + 0, 0, 0, 0, + 0, 32, 0, 0, 0, + 1, 1, 4 + }, + { + MESA_FORMAT_INTENSITY_INT8, + "MESA_FORMAT_INTENSITY_INT8", + GL_INTENSITY, + GL_INT, + 0, 0, 0, 0, + 0, 8, 0, 0, 0, + 1, 1, 1 + }, + { + MESA_FORMAT_INTENSITY_INT16, + "MESA_FORMAT_INTENSITY_INT16", + GL_INTENSITY, + GL_INT, + 0, 0, 0, 0, + 0, 16, 0, 0, 0, + 1, 1, 2 + }, + { + MESA_FORMAT_INTENSITY_INT32, + "MESA_FORMAT_INTENSITY_INT32", + GL_INTENSITY, + GL_INT, + 0, 0, 0, 0, + 0, 32, 0, 0, 0, + 1, 1, 4 + }, + { + MESA_FORMAT_LUMINANCE_UINT8, + "MESA_FORMAT_LUMINANCE_UINT8", + GL_LUMINANCE, + GL_UNSIGNED_INT, + 0, 0, 0, 0, + 8, 0, 0, 0, 0, + 1, 1, 1 + }, + { + MESA_FORMAT_LUMINANCE_UINT16, + "MESA_FORMAT_LUMINANCE_UINT16", + GL_LUMINANCE, + GL_UNSIGNED_INT, + 0, 0, 0, 0, + 16, 0, 0, 0, 0, + 1, 1, 2 + }, + { + MESA_FORMAT_LUMINANCE_UINT32, + "MESA_FORMAT_LUMINANCE_UINT32", + GL_LUMINANCE, + GL_UNSIGNED_INT, + 0, 0, 0, 0, + 32, 0, 0, 0, 0, + 1, 1, 4 + }, + { + MESA_FORMAT_LUMINANCE_INT8, + "MESA_FORMAT_LUMINANCE_INT8", + GL_LUMINANCE, + GL_INT, + 0, 0, 0, 0, + 8, 0, 0, 0, 0, + 1, 1, 1 + }, + { + MESA_FORMAT_LUMINANCE_INT16, + "MESA_FORMAT_LUMINANCE_INT16", + GL_LUMINANCE, + GL_INT, + 0, 0, 0, 0, + 16, 0, 0, 0, 0, + 1, 1, 2 + }, + { + MESA_FORMAT_LUMINANCE_INT32, + "MESA_FORMAT_LUMINANCE_INT32", + GL_LUMINANCE, + GL_INT, + 0, 0, 0, 0, + 32, 0, 0, 0, 0, + 1, 1, 4 + }, + { + MESA_FORMAT_LUMINANCE_ALPHA_UINT8, + "MESA_FORMAT_LUMINANCE_ALPHA_UINT8", + GL_LUMINANCE_ALPHA, + GL_UNSIGNED_INT, + 0, 0, 0, 8, + 8, 0, 0, 0, 0, + 1, 1, 2 + }, + { + MESA_FORMAT_LUMINANCE_ALPHA_UINT16, + "MESA_FORMAT_LUMINANCE_ALPHA_UINT16", + GL_LUMINANCE_ALPHA, + GL_UNSIGNED_INT, + 0, 0, 0, 16, + 16, 0, 0, 0, 0, + 1, 1, 4 + }, + { + MESA_FORMAT_LUMINANCE_ALPHA_UINT32, + "MESA_FORMAT_LUMINANCE_ALPHA_UINT32", + GL_LUMINANCE_ALPHA, + GL_UNSIGNED_INT, + 0, 0, 0, 32, + 32, 0, 0, 0, 0, + 1, 1, 8 + }, + { + MESA_FORMAT_LUMINANCE_ALPHA_INT8, + "MESA_FORMAT_LUMINANCE_ALPHA_INT8", + GL_LUMINANCE_ALPHA, + GL_INT, + 0, 0, 0, 8, + 8, 0, 0, 0, 0, + 1, 1, 2 + }, + { + MESA_FORMAT_LUMINANCE_ALPHA_INT16, + "MESA_FORMAT_LUMINANCE_ALPHA_INT16", + GL_LUMINANCE_ALPHA, + GL_INT, + 0, 0, 0, 16, + 16, 0, 0, 0, 0, + 1, 1, 4 + }, + { + MESA_FORMAT_LUMINANCE_ALPHA_INT32, + "MESA_FORMAT_LUMINANCE_ALPHA_INT32", + GL_LUMINANCE_ALPHA, + GL_INT, + 0, 0, 0, 32, + 32, 0, 0, 0, 0, + 1, 1, 8 + }, + + { + MESA_FORMAT_R_INT8, + "MESA_FORMAT_R_INT8", + GL_RED, + GL_INT, + 8, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 1 + }, + { + MESA_FORMAT_RG_INT8, + "MESA_FORMAT_RG_INT8", + GL_RG, + GL_INT, + 8, 8, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 2 + }, + { + MESA_FORMAT_RGB_INT8, + "MESA_FORMAT_RGB_INT8", + GL_RGB, + GL_INT, + 8, 8, 8, 0, + 0, 0, 0, 0, 0, + 1, 1, 3 + }, { MESA_FORMAT_RGBA_INT8, "MESA_FORMAT_RGBA_INT8", @@ -765,6 +1010,33 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] = 0, 0, 0, 0, 0, 1, 1, 4 }, + { + MESA_FORMAT_R_INT16, + "MESA_FORMAT_R_INT16", + GL_RED, + GL_INT, + 16, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 2 + }, + { + MESA_FORMAT_RG_INT16, + "MESA_FORMAT_RG_INT16", + GL_RG, + GL_INT, + 16, 16, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 4 + }, + { + MESA_FORMAT_RGB_INT16, + "MESA_FORMAT_RGB_INT16", + GL_RGB, + GL_INT, + 16, 16, 16, 0, + 0, 0, 0, 0, 0, + 1, 1, 6 + }, { MESA_FORMAT_RGBA_INT16, "MESA_FORMAT_RGBA_INT16", @@ -774,6 +1046,33 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] = 0, 0, 0, 0, 0, 1, 1, 8 }, + { + MESA_FORMAT_R_INT32, + "MESA_FORMAT_R_INT32", + GL_RED, + GL_INT, + 32, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 4 + }, + { + MESA_FORMAT_RG_INT32, + "MESA_FORMAT_RG_INT32", + GL_RG, + GL_INT, + 32, 32, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 8 + }, + { + MESA_FORMAT_RGB_INT32, + "MESA_FORMAT_RGB_INT32", + GL_RGB, + GL_INT, + 32, 32, 32, 0, + 0, 0, 0, 0, 0, + 1, 1, 12 + }, { MESA_FORMAT_RGBA_INT32, "MESA_FORMAT_RGBA_INT32", @@ -783,8 +1082,33 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] = 0, 0, 0, 0, 0, 1, 1, 16 }, - - /* unnormalized unsigned int formats */ + { + MESA_FORMAT_R_UINT8, + "MESA_FORMAT_R_UINT8", + GL_RED, + GL_UNSIGNED_INT, + 8, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 1 + }, + { + MESA_FORMAT_RG_UINT8, + "MESA_FORMAT_RG_UINT8", + GL_RG, + GL_UNSIGNED_INT, + 8, 8, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 2 + }, + { + MESA_FORMAT_RGB_UINT8, + "MESA_FORMAT_RGB_UINT8", + GL_RGB, + GL_UNSIGNED_INT, + 8, 8, 8, 0, + 0, 0, 0, 0, 0, + 1, 1, 3 + }, { MESA_FORMAT_RGBA_UINT8, "MESA_FORMAT_RGBA_UINT8", @@ -794,6 +1118,33 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] = 0, 0, 0, 0, 0, 1, 1, 4 }, + { + MESA_FORMAT_R_UINT16, + "MESA_FORMAT_R_UINT16", + GL_RED, + GL_UNSIGNED_INT, + 16, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 2 + }, + { + MESA_FORMAT_RG_UINT16, + "MESA_FORMAT_RG_UINT16", + GL_RG, + GL_UNSIGNED_INT, + 16, 16, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 4 + }, + { + MESA_FORMAT_RGB_UINT16, + "MESA_FORMAT_RGB_UINT16", + GL_RGB, + GL_UNSIGNED_INT, + 16, 16, 16, 0, + 0, 0, 0, 0, 0, + 1, 1, 6 + }, { MESA_FORMAT_RGBA_UINT16, "MESA_FORMAT_RGBA_UINT16", @@ -803,6 +1154,33 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] = 0, 0, 0, 0, 0, 1, 1, 8 }, + { + MESA_FORMAT_R_UINT32, + "MESA_FORMAT_R_UINT32", + GL_RED, + GL_UNSIGNED_INT, + 32, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 4 + }, + { + MESA_FORMAT_RG_UINT32, + "MESA_FORMAT_RG_UINT32", + GL_RG, + GL_UNSIGNED_INT, + 32, 32, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 8 + }, + { + MESA_FORMAT_RGB_UINT32, + "MESA_FORMAT_RGB_UINT32", + GL_RGB, + GL_UNSIGNED_INT, + 32, 32, 32, 0, + 0, 0, 0, 0, 0, + 1, 1, 12 + }, { MESA_FORMAT_RGBA_UINT32, "MESA_FORMAT_RGBA_UINT32", @@ -1876,14 +2254,114 @@ _mesa_format_to_type_and_comps(gl_format format, *comps = 1; return; + case MESA_FORMAT_ALPHA_UINT8: + case MESA_FORMAT_LUMINANCE_UINT8: + case MESA_FORMAT_INTENSITY_UINT8: + *datatype = GL_UNSIGNED_BYTE; + *comps = 1; + return; + case MESA_FORMAT_LUMINANCE_ALPHA_UINT8: + *datatype = GL_UNSIGNED_BYTE; + *comps = 2; + return; + + case MESA_FORMAT_ALPHA_UINT16: + case MESA_FORMAT_LUMINANCE_UINT16: + case MESA_FORMAT_INTENSITY_UINT16: + *datatype = GL_UNSIGNED_SHORT; + *comps = 1; + return; + case MESA_FORMAT_LUMINANCE_ALPHA_UINT16: + *datatype = GL_UNSIGNED_SHORT; + *comps = 2; + return; + case MESA_FORMAT_ALPHA_UINT32: + case MESA_FORMAT_LUMINANCE_UINT32: + case MESA_FORMAT_INTENSITY_UINT32: + *datatype = GL_UNSIGNED_INT; + *comps = 1; + return; + case MESA_FORMAT_LUMINANCE_ALPHA_UINT32: + *datatype = GL_UNSIGNED_INT; + *comps = 2; + return; + case MESA_FORMAT_ALPHA_INT8: + case MESA_FORMAT_LUMINANCE_INT8: + case MESA_FORMAT_INTENSITY_INT8: + *datatype = GL_BYTE; + *comps = 1; + return; + case MESA_FORMAT_LUMINANCE_ALPHA_INT8: + *datatype = GL_BYTE; + *comps = 2; + return; + + case MESA_FORMAT_ALPHA_INT16: + case MESA_FORMAT_LUMINANCE_INT16: + case MESA_FORMAT_INTENSITY_INT16: + *datatype = GL_SHORT; + *comps = 1; + return; + case MESA_FORMAT_LUMINANCE_ALPHA_INT16: + *datatype = GL_SHORT; + *comps = 2; + return; + + case MESA_FORMAT_ALPHA_INT32: + case MESA_FORMAT_LUMINANCE_INT32: + case MESA_FORMAT_INTENSITY_INT32: + *datatype = GL_INT; + *comps = 1; + return; + case MESA_FORMAT_LUMINANCE_ALPHA_INT32: + *datatype = GL_INT; + *comps = 2; + return; + + case MESA_FORMAT_R_INT8: + *datatype = GL_BYTE; + *comps = 1; + return; + case MESA_FORMAT_RG_INT8: + *datatype = GL_BYTE; + *comps = 2; + return; + case MESA_FORMAT_RGB_INT8: + *datatype = GL_BYTE; + *comps = 3; + return; case MESA_FORMAT_RGBA_INT8: *datatype = GL_BYTE; *comps = 4; return; + case MESA_FORMAT_R_INT16: + *datatype = GL_SHORT; + *comps = 1; + return; + case MESA_FORMAT_RG_INT16: + *datatype = GL_SHORT; + *comps = 2; + return; + case MESA_FORMAT_RGB_INT16: + *datatype = GL_SHORT; + *comps = 3; + return; case MESA_FORMAT_RGBA_INT16: *datatype = GL_SHORT; *comps = 4; return; + case MESA_FORMAT_R_INT32: + *datatype = GL_INT; + *comps = 1; + return; + case MESA_FORMAT_RG_INT32: + *datatype = GL_INT; + *comps = 2; + return; + case MESA_FORMAT_RGB_INT32: + *datatype = GL_INT; + *comps = 3; + return; case MESA_FORMAT_RGBA_INT32: *datatype = GL_INT; *comps = 4; @@ -1892,14 +2370,50 @@ _mesa_format_to_type_and_comps(gl_format format, /** * \name Non-normalized unsigned integer formats. */ + case MESA_FORMAT_R_UINT8: + *datatype = GL_UNSIGNED_BYTE; + *comps = 1; + return; + case MESA_FORMAT_RG_UINT8: + *datatype = GL_UNSIGNED_BYTE; + *comps = 2; + return; + case MESA_FORMAT_RGB_UINT8: + *datatype = GL_UNSIGNED_BYTE; + *comps = 3; + return; case MESA_FORMAT_RGBA_UINT8: *datatype = GL_UNSIGNED_BYTE; *comps = 4; return; + case MESA_FORMAT_R_UINT16: + *datatype = GL_UNSIGNED_SHORT; + *comps = 1; + return; + case MESA_FORMAT_RG_UINT16: + *datatype = GL_UNSIGNED_SHORT; + *comps = 2; + return; + case MESA_FORMAT_RGB_UINT16: + *datatype = GL_UNSIGNED_SHORT; + *comps = 3; + return; case MESA_FORMAT_RGBA_UINT16: *datatype = GL_UNSIGNED_SHORT; *comps = 4; return; + case MESA_FORMAT_R_UINT32: + *datatype = GL_UNSIGNED_INT; + *comps = 1; + return; + case MESA_FORMAT_RG_UINT32: + *datatype = GL_UNSIGNED_INT; + *comps = 2; + return; + case MESA_FORMAT_RGB_UINT32: + *datatype = GL_UNSIGNED_INT; + *comps = 3; + return; case MESA_FORMAT_RGBA_UINT32: *datatype = GL_UNSIGNED_INT; *comps = 4; diff --git a/mesalib/src/mesa/main/formats.h b/mesalib/src/mesa/main/formats.h index 610204cb3..12758f03e 100644 --- a/mesalib/src/mesa/main/formats.h +++ b/mesalib/src/mesa/main/formats.h @@ -152,15 +152,61 @@ typedef enum * XXX Note: these are just stand-ins for some better hardware * formats TBD such as BGRA or ARGB. */ + MESA_FORMAT_ALPHA_UINT8, + MESA_FORMAT_ALPHA_UINT16, + MESA_FORMAT_ALPHA_UINT32, + MESA_FORMAT_ALPHA_INT8, + MESA_FORMAT_ALPHA_INT16, + MESA_FORMAT_ALPHA_INT32, + + MESA_FORMAT_INTENSITY_UINT8, + MESA_FORMAT_INTENSITY_UINT16, + MESA_FORMAT_INTENSITY_UINT32, + MESA_FORMAT_INTENSITY_INT8, + MESA_FORMAT_INTENSITY_INT16, + MESA_FORMAT_INTENSITY_INT32, + + MESA_FORMAT_LUMINANCE_UINT8, + MESA_FORMAT_LUMINANCE_UINT16, + MESA_FORMAT_LUMINANCE_UINT32, + MESA_FORMAT_LUMINANCE_INT8, + MESA_FORMAT_LUMINANCE_INT16, + MESA_FORMAT_LUMINANCE_INT32, + + MESA_FORMAT_LUMINANCE_ALPHA_UINT8, + MESA_FORMAT_LUMINANCE_ALPHA_UINT16, + MESA_FORMAT_LUMINANCE_ALPHA_UINT32, + MESA_FORMAT_LUMINANCE_ALPHA_INT8, + MESA_FORMAT_LUMINANCE_ALPHA_INT16, + MESA_FORMAT_LUMINANCE_ALPHA_INT32, + + MESA_FORMAT_R_INT8, + MESA_FORMAT_RG_INT8, + MESA_FORMAT_RGB_INT8, MESA_FORMAT_RGBA_INT8, + MESA_FORMAT_R_INT16, + MESA_FORMAT_RG_INT16, + MESA_FORMAT_RGB_INT16, MESA_FORMAT_RGBA_INT16, + MESA_FORMAT_R_INT32, + MESA_FORMAT_RG_INT32, + MESA_FORMAT_RGB_INT32, MESA_FORMAT_RGBA_INT32, /** * \name Non-normalized unsigned integer formats. */ + MESA_FORMAT_R_UINT8, + MESA_FORMAT_RG_UINT8, + MESA_FORMAT_RGB_UINT8, MESA_FORMAT_RGBA_UINT8, + MESA_FORMAT_R_UINT16, + MESA_FORMAT_RG_UINT16, + MESA_FORMAT_RGB_UINT16, MESA_FORMAT_RGBA_UINT16, + MESA_FORMAT_R_UINT32, + MESA_FORMAT_RG_UINT32, + MESA_FORMAT_RGB_UINT32, MESA_FORMAT_RGBA_UINT32, /* msb <------ TEXEL BITS -----------> lsb */ diff --git a/mesalib/src/mesa/main/framebuffer.h b/mesalib/src/mesa/main/framebuffer.h index b2b29a7a1..7aef3e02b 100644 --- a/mesalib/src/mesa/main/framebuffer.h +++ b/mesalib/src/mesa/main/framebuffer.h @@ -54,7 +54,7 @@ extern void _mesa_reference_framebuffer_(struct gl_framebuffer **ptr, struct gl_framebuffer *fb); -static INLINE void +static inline void _mesa_reference_framebuffer(struct gl_framebuffer **ptr, struct gl_framebuffer *fb) { diff --git a/mesalib/src/mesa/main/get.c b/mesalib/src/mesa/main/get.c index 9c1771e16..a869133a1 100644 --- a/mesalib/src/mesa/main/get.c +++ b/mesalib/src/mesa/main/get.c @@ -326,6 +326,7 @@ EXTRA_EXT2(ARB_fragment_program, NV_fragment_program); EXTRA_EXT2(ARB_vertex_program, NV_vertex_program); EXTRA_EXT2(ARB_vertex_program, ARB_fragment_program); EXTRA_EXT(ARB_geometry_shader4); +EXTRA_EXT(ARB_color_buffer_float); EXTRA_EXT(ARB_copy_buffer); EXTRA_EXT(EXT_framebuffer_sRGB); EXTRA_EXT(ARB_texture_buffer_object); @@ -481,6 +482,11 @@ static const struct value_desc values[] = { /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB - not supported */ { GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT, 0, NO_EXTRA }, + /* GL_ARB_color_buffer_float */ + { GL_CLAMP_VERTEX_COLOR, CONTEXT_ENUM(Light.ClampVertexColor), extra_ARB_color_buffer_float }, + { GL_CLAMP_FRAGMENT_COLOR, CONTEXT_ENUM(Color.ClampFragmentColor), extra_ARB_color_buffer_float }, + { GL_CLAMP_READ_COLOR, CONTEXT_ENUM(Color.ClampReadColor), extra_ARB_color_buffer_float }, + /* GL_ARB_copy_buffer */ { GL_COPY_READ_BUFFER, LOC_CUSTOM, TYPE_INT, 0, extra_ARB_copy_buffer }, { GL_COPY_WRITE_BUFFER, LOC_CUSTOM, TYPE_INT, 0, extra_ARB_copy_buffer }, @@ -683,6 +689,27 @@ static const struct value_desc values[] = { /* GL_ARB_draw_buffers */ { GL_MAX_DRAW_BUFFERS_ARB, CONTEXT_INT(Const.MaxDrawBuffers), NO_EXTRA }, + /* GL_EXT_framebuffer_object / GL_NV_fbo_color_attachments */ + { GL_MAX_COLOR_ATTACHMENTS, CONTEXT_INT(Const.MaxColorAttachments), + extra_EXT_framebuffer_object }, + + /* GL_ARB_draw_buffers / GL_NV_draw_buffers (for ES 2.0) */ + { GL_DRAW_BUFFER0_ARB, BUFFER_ENUM(ColorDrawBuffer[0]), NO_EXTRA }, + { GL_DRAW_BUFFER1_ARB, BUFFER_ENUM(ColorDrawBuffer[1]), + extra_valid_draw_buffer }, + { GL_DRAW_BUFFER2_ARB, BUFFER_ENUM(ColorDrawBuffer[2]), + extra_valid_draw_buffer }, + { GL_DRAW_BUFFER3_ARB, BUFFER_ENUM(ColorDrawBuffer[3]), + extra_valid_draw_buffer }, + { GL_DRAW_BUFFER4_ARB, BUFFER_ENUM(ColorDrawBuffer[4]), + extra_valid_draw_buffer }, + { GL_DRAW_BUFFER5_ARB, BUFFER_ENUM(ColorDrawBuffer[5]), + extra_valid_draw_buffer }, + { GL_DRAW_BUFFER6_ARB, BUFFER_ENUM(ColorDrawBuffer[6]), + extra_valid_draw_buffer }, + { GL_DRAW_BUFFER7_ARB, BUFFER_ENUM(ColorDrawBuffer[7]), + extra_valid_draw_buffer }, + { GL_BLEND_COLOR_EXT, LOC_CUSTOM, TYPE_FLOATN_4, 0, extra_new_frag_clamp }, /* GL_ARB_fragment_program */ { GL_MAX_TEXTURE_IMAGE_UNITS_ARB, /* == GL_MAX_TEXTURE_IMAGE_UNITS_NV */ @@ -1119,23 +1146,6 @@ static const struct value_desc values[] = { { GL_DEPTH_CLAMP, CONTEXT_BOOL(Transform.DepthClamp), extra_ARB_depth_clamp }, - /* GL_ARB_draw_buffers */ - { GL_DRAW_BUFFER0_ARB, BUFFER_ENUM(ColorDrawBuffer[0]), NO_EXTRA }, - { GL_DRAW_BUFFER1_ARB, BUFFER_ENUM(ColorDrawBuffer[1]), - extra_valid_draw_buffer }, - { GL_DRAW_BUFFER2_ARB, BUFFER_ENUM(ColorDrawBuffer[2]), - extra_valid_draw_buffer }, - { GL_DRAW_BUFFER3_ARB, BUFFER_ENUM(ColorDrawBuffer[3]), - extra_valid_draw_buffer }, - { GL_DRAW_BUFFER4_ARB, BUFFER_ENUM(ColorDrawBuffer[4]), - extra_valid_draw_buffer }, - { GL_DRAW_BUFFER5_ARB, BUFFER_ENUM(ColorDrawBuffer[5]), - extra_valid_draw_buffer }, - { GL_DRAW_BUFFER6_ARB, BUFFER_ENUM(ColorDrawBuffer[6]), - extra_valid_draw_buffer }, - { GL_DRAW_BUFFER7_ARB, BUFFER_ENUM(ColorDrawBuffer[7]), - extra_valid_draw_buffer }, - /* GL_ATI_fragment_shader */ { GL_NUM_FRAGMENT_REGISTERS_ATI, CONST(6), extra_ATI_fragment_shader }, { GL_NUM_FRAGMENT_CONSTANTS_ATI, CONST(8), extra_ATI_fragment_shader }, @@ -1147,10 +1157,6 @@ static const struct value_desc values[] = { { GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI, CONST(3), extra_ATI_fragment_shader }, - /* GL_EXT_framebuffer_object */ - { GL_MAX_COLOR_ATTACHMENTS_EXT, CONTEXT_INT(Const.MaxColorAttachments), - extra_EXT_framebuffer_object }, - /* GL_EXT_framebuffer_blit * NOTE: GL_DRAW_FRAMEBUFFER_BINDING_EXT == GL_FRAMEBUFFER_BINDING_EXT */ { GL_READ_FRAMEBUFFER_BINDING_EXT, LOC_CUSTOM, TYPE_INT, 0, diff --git a/mesalib/src/mesa/main/hash.c b/mesalib/src/mesa/main/hash.c index 63f5c90fa..4b250ad54 100644 --- a/mesalib/src/mesa/main/hash.c +++ b/mesalib/src/mesa/main/hash.c @@ -1,547 +1,547 @@ -/** - * \file hash.c - * Generic hash table. - * - * Used for display lists, texture objects, vertex/fragment programs, - * buffer objects, etc. The hash functions are thread-safe. - * - * \note key=0 is illegal. - * - * \author Brian Paul - */ - -/* - * Mesa 3-D graphics library - * Version: 6.5.1 - * - * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -#include "glheader.h" -#include "imports.h" -#include "glapi/glthread.h" -#include "hash.h" - - -#define TABLE_SIZE 1023 /**< Size of lookup table/array */ - -#define HASH_FUNC(K) ((K) % TABLE_SIZE) - - -/** - * An entry in the hash table. - */ -struct HashEntry { - GLuint Key; /**< the entry's key */ - void *Data; /**< the entry's data */ - struct HashEntry *Next; /**< pointer to next entry */ -}; - - -/** - * The hash table data structure. - */ -struct _mesa_HashTable { - struct HashEntry *Table[TABLE_SIZE]; /**< the lookup table */ - GLuint MaxKey; /**< highest key inserted so far */ - _glthread_Mutex Mutex; /**< mutual exclusion lock */ - _glthread_Mutex WalkMutex; /**< for _mesa_HashWalk() */ - GLboolean InDeleteAll; /**< Debug check */ -}; - - - -/** - * Create a new hash table. - * - * \return pointer to a new, empty hash table. - */ -struct _mesa_HashTable * -_mesa_NewHashTable(void) -{ - struct _mesa_HashTable *table = CALLOC_STRUCT(_mesa_HashTable); - if (table) { - _glthread_INIT_MUTEX(table->Mutex); - _glthread_INIT_MUTEX(table->WalkMutex); - } - return table; -} - - - -/** - * Delete a hash table. - * Frees each entry on the hash table and then the hash table structure itself. - * Note that the caller should have already traversed the table and deleted - * the objects in the table (i.e. We don't free the entries' data pointer). - * - * \param table the hash table to delete. - */ -void -_mesa_DeleteHashTable(struct _mesa_HashTable *table) -{ - GLuint pos; - assert(table); - for (pos = 0; pos < TABLE_SIZE; pos++) { - struct HashEntry *entry = table->Table[pos]; - while (entry) { - struct HashEntry *next = entry->Next; - if (entry->Data) { - _mesa_problem(NULL, - "In _mesa_DeleteHashTable, found non-freed data"); - } - free(entry); - entry = next; - } - } - _glthread_DESTROY_MUTEX(table->Mutex); - _glthread_DESTROY_MUTEX(table->WalkMutex); - free(table); -} - - - -/** - * Lookup an entry in the hash table, without locking. - * \sa _mesa_HashLookup - */ -static INLINE void * -_mesa_HashLookup_unlocked(struct _mesa_HashTable *table, GLuint key) -{ - GLuint pos; - const struct HashEntry *entry; - - assert(table); - assert(key); - - pos = HASH_FUNC(key); - entry = table->Table[pos]; - while (entry) { - if (entry->Key == key) { - return entry->Data; - } - entry = entry->Next; - } - return NULL; -} - - -/** - * Lookup an entry in the hash table. - * - * \param table the hash table. - * \param key the key. - * - * \return pointer to user's data or NULL if key not in table - */ -void * -_mesa_HashLookup(struct _mesa_HashTable *table, GLuint key) -{ - void *res; - assert(table); - _glthread_LOCK_MUTEX(table->Mutex); - res = _mesa_HashLookup_unlocked(table, key); - _glthread_UNLOCK_MUTEX(table->Mutex); - return res; -} - - -/** - * Insert a key/pointer pair into the hash table. - * If an entry with this key already exists we'll replace the existing entry. - * - * \param table the hash table. - * \param key the key (not zero). - * \param data pointer to user data. - */ -void -_mesa_HashInsert(struct _mesa_HashTable *table, GLuint key, void *data) -{ - /* search for existing entry with this key */ - GLuint pos; - struct HashEntry *entry; - - assert(table); - assert(key); - - _glthread_LOCK_MUTEX(table->Mutex); - - if (key > table->MaxKey) - table->MaxKey = key; - - pos = HASH_FUNC(key); - - /* check if replacing an existing entry with same key */ - for (entry = table->Table[pos]; entry; entry = entry->Next) { - if (entry->Key == key) { - /* replace entry's data */ -#if 0 /* not sure this check is always valid */ - if (entry->Data) { - _mesa_problem(NULL, "Memory leak detected in _mesa_HashInsert"); - } -#endif - entry->Data = data; - _glthread_UNLOCK_MUTEX(table->Mutex); - return; - } - } - - /* alloc and insert new table entry */ - entry = MALLOC_STRUCT(HashEntry); - if (entry) { - entry->Key = key; - entry->Data = data; - entry->Next = table->Table[pos]; - table->Table[pos] = entry; - } - - _glthread_UNLOCK_MUTEX(table->Mutex); -} - - - -/** - * Remove an entry from the hash table. - * - * \param table the hash table. - * \param key key of entry to remove. - * - * While holding the hash table's lock, searches the entry with the matching - * key and unlinks it. - */ -void -_mesa_HashRemove(struct _mesa_HashTable *table, GLuint key) -{ - GLuint pos; - struct HashEntry *entry, *prev; - - assert(table); - assert(key); - - /* have to check this outside of mutex lock */ - if (table->InDeleteAll) { - _mesa_problem(NULL, "_mesa_HashRemove illegally called from " - "_mesa_HashDeleteAll callback function"); - return; - } - - _glthread_LOCK_MUTEX(table->Mutex); - - pos = HASH_FUNC(key); - prev = NULL; - entry = table->Table[pos]; - while (entry) { - if (entry->Key == key) { - /* found it! */ - if (prev) { - prev->Next = entry->Next; - } - else { - table->Table[pos] = entry->Next; - } - free(entry); - _glthread_UNLOCK_MUTEX(table->Mutex); - return; - } - prev = entry; - entry = entry->Next; - } - - _glthread_UNLOCK_MUTEX(table->Mutex); -} - - - -/** - * Delete all entries in a hash table, but don't delete the table itself. - * Invoke the given callback function for each table entry. - * - * \param table the hash table to delete - * \param callback the callback function - * \param userData arbitrary pointer to pass along to the callback - * (this is typically a struct gl_context pointer) - */ -void -_mesa_HashDeleteAll(struct _mesa_HashTable *table, - void (*callback)(GLuint key, void *data, void *userData), - void *userData) -{ - GLuint pos; - ASSERT(table); - ASSERT(callback); - _glthread_LOCK_MUTEX(table->Mutex); - table->InDeleteAll = GL_TRUE; - for (pos = 0; pos < TABLE_SIZE; pos++) { - struct HashEntry *entry, *next; - for (entry = table->Table[pos]; entry; entry = next) { - callback(entry->Key, entry->Data, userData); - next = entry->Next; - free(entry); - } - table->Table[pos] = NULL; - } - table->InDeleteAll = GL_FALSE; - _glthread_UNLOCK_MUTEX(table->Mutex); -} - - -/** - * Walk over all entries in a hash table, calling callback function for each. - * Note: we use a separate mutex in this function to avoid a recursive - * locking deadlock (in case the callback calls _mesa_HashRemove()) and to - * prevent multiple threads/contexts from getting tangled up. - * A lock-less version of this function could be used when the table will - * not be modified. - * \param table the hash table to walk - * \param callback the callback function - * \param userData arbitrary pointer to pass along to the callback - * (this is typically a struct gl_context pointer) - */ -void -_mesa_HashWalk(const struct _mesa_HashTable *table, - void (*callback)(GLuint key, void *data, void *userData), - void *userData) -{ - /* cast-away const */ - struct _mesa_HashTable *table2 = (struct _mesa_HashTable *) table; - GLuint pos; - ASSERT(table); - ASSERT(callback); - _glthread_LOCK_MUTEX(table2->WalkMutex); - for (pos = 0; pos < TABLE_SIZE; pos++) { - struct HashEntry *entry, *next; - for (entry = table->Table[pos]; entry; entry = next) { - /* save 'next' pointer now in case the callback deletes the entry */ - next = entry->Next; - callback(entry->Key, entry->Data, userData); - } - } - _glthread_UNLOCK_MUTEX(table2->WalkMutex); -} - - -/** - * Return the key of the "first" entry in the hash table. - * While holding the lock, walks through all table positions until finding - * the first entry of the first non-empty one. - * - * \param table the hash table - * \return key for the "first" entry in the hash table. - */ -GLuint -_mesa_HashFirstEntry(struct _mesa_HashTable *table) -{ - GLuint pos; - assert(table); - _glthread_LOCK_MUTEX(table->Mutex); - for (pos = 0; pos < TABLE_SIZE; pos++) { - if (table->Table[pos]) { - _glthread_UNLOCK_MUTEX(table->Mutex); - return table->Table[pos]->Key; - } - } - _glthread_UNLOCK_MUTEX(table->Mutex); - return 0; -} - - -/** - * Given a hash table key, return the next key. This is used to walk - * over all entries in the table. Note that the keys returned during - * walking won't be in any particular order. - * \return next hash key or 0 if end of table. - */ -GLuint -_mesa_HashNextEntry(const struct _mesa_HashTable *table, GLuint key) -{ - const struct HashEntry *entry; - GLuint pos; - - assert(table); - assert(key); - - /* Find the entry with given key */ - pos = HASH_FUNC(key); - for (entry = table->Table[pos]; entry ; entry = entry->Next) { - if (entry->Key == key) { - break; - } - } - - if (!entry) { - /* the given key was not found, so we can't find the next entry */ - return 0; - } - - if (entry->Next) { - /* return next in linked list */ - return entry->Next->Key; - } - else { - /* look for next non-empty table slot */ - pos++; - while (pos < TABLE_SIZE) { - if (table->Table[pos]) { - return table->Table[pos]->Key; - } - pos++; - } - return 0; - } -} - - -/** - * Dump contents of hash table for debugging. - * - * \param table the hash table. - */ -void -_mesa_HashPrint(const struct _mesa_HashTable *table) -{ - GLuint pos; - assert(table); - for (pos = 0; pos < TABLE_SIZE; pos++) { - const struct HashEntry *entry = table->Table[pos]; - while (entry) { - _mesa_debug(NULL, "%u %p\n", entry->Key, entry->Data); - entry = entry->Next; - } - } -} - - - -/** - * Find a block of adjacent unused hash keys. - * - * \param table the hash table. - * \param numKeys number of keys needed. - * - * \return Starting key of free block or 0 if failure. - * - * If there are enough free keys between the maximum key existing in the table - * (_mesa_HashTable::MaxKey) and the maximum key possible, then simply return - * the adjacent key. Otherwise do a full search for a free key block in the - * allowable key range. - */ -GLuint -_mesa_HashFindFreeKeyBlock(struct _mesa_HashTable *table, GLuint numKeys) -{ - const GLuint maxKey = ~((GLuint) 0); - _glthread_LOCK_MUTEX(table->Mutex); - if (maxKey - numKeys > table->MaxKey) { - /* the quick solution */ - _glthread_UNLOCK_MUTEX(table->Mutex); - return table->MaxKey + 1; - } - else { - /* the slow solution */ - GLuint freeCount = 0; - GLuint freeStart = 1; - GLuint key; - for (key = 1; key != maxKey; key++) { - if (_mesa_HashLookup_unlocked(table, key)) { - /* darn, this key is already in use */ - freeCount = 0; - freeStart = key+1; - } - else { - /* this key not in use, check if we've found enough */ - freeCount++; - if (freeCount == numKeys) { - _glthread_UNLOCK_MUTEX(table->Mutex); - return freeStart; - } - } - } - /* cannot allocate a block of numKeys consecutive keys */ - _glthread_UNLOCK_MUTEX(table->Mutex); - return 0; - } -} - - -#if 0 /* debug only */ - -/** - * Test walking over all the entries in a hash table. - */ -static void -test_hash_walking(void) -{ - struct _mesa_HashTable *t = _mesa_NewHashTable(); - const GLuint limit = 50000; - GLuint i; - - /* create some entries */ - for (i = 0; i < limit; i++) { - GLuint dummy; - GLuint k = (rand() % (limit * 10)) + 1; - while (_mesa_HashLookup(t, k)) { - /* id already in use, try another */ - k = (rand() % (limit * 10)) + 1; - } - _mesa_HashInsert(t, k, &dummy); - } - - /* walk over all entries */ - { - GLuint k = _mesa_HashFirstEntry(t); - GLuint count = 0; - while (k) { - GLuint knext = _mesa_HashNextEntry(t, k); - assert(knext != k); - _mesa_HashRemove(t, k); - count++; - k = knext; - } - assert(count == limit); - k = _mesa_HashFirstEntry(t); - assert(k==0); - } - - _mesa_DeleteHashTable(t); -} - - -void -_mesa_test_hash_functions(void) -{ - int a, b, c; - struct _mesa_HashTable *t; - - t = _mesa_NewHashTable(); - _mesa_HashInsert(t, 501, &a); - _mesa_HashInsert(t, 10, &c); - _mesa_HashInsert(t, 0xfffffff8, &b); - /*_mesa_HashPrint(t);*/ - - assert(_mesa_HashLookup(t,501)); - assert(!_mesa_HashLookup(t,1313)); - assert(_mesa_HashFindFreeKeyBlock(t, 100)); - - _mesa_DeleteHashTable(t); - - test_hash_walking(); -} - -#endif +/** + * \file hash.c + * Generic hash table. + * + * Used for display lists, texture objects, vertex/fragment programs, + * buffer objects, etc. The hash functions are thread-safe. + * + * \note key=0 is illegal. + * + * \author Brian Paul + */ + +/* + * Mesa 3-D graphics library + * Version: 6.5.1 + * + * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +#include "glheader.h" +#include "imports.h" +#include "glapi/glthread.h" +#include "hash.h" + + +#define TABLE_SIZE 1023 /**< Size of lookup table/array */ + +#define HASH_FUNC(K) ((K) % TABLE_SIZE) + + +/** + * An entry in the hash table. + */ +struct HashEntry { + GLuint Key; /**< the entry's key */ + void *Data; /**< the entry's data */ + struct HashEntry *Next; /**< pointer to next entry */ +}; + + +/** + * The hash table data structure. + */ +struct _mesa_HashTable { + struct HashEntry *Table[TABLE_SIZE]; /**< the lookup table */ + GLuint MaxKey; /**< highest key inserted so far */ + _glthread_Mutex Mutex; /**< mutual exclusion lock */ + _glthread_Mutex WalkMutex; /**< for _mesa_HashWalk() */ + GLboolean InDeleteAll; /**< Debug check */ +}; + + + +/** + * Create a new hash table. + * + * \return pointer to a new, empty hash table. + */ +struct _mesa_HashTable * +_mesa_NewHashTable(void) +{ + struct _mesa_HashTable *table = CALLOC_STRUCT(_mesa_HashTable); + if (table) { + _glthread_INIT_MUTEX(table->Mutex); + _glthread_INIT_MUTEX(table->WalkMutex); + } + return table; +} + + + +/** + * Delete a hash table. + * Frees each entry on the hash table and then the hash table structure itself. + * Note that the caller should have already traversed the table and deleted + * the objects in the table (i.e. We don't free the entries' data pointer). + * + * \param table the hash table to delete. + */ +void +_mesa_DeleteHashTable(struct _mesa_HashTable *table) +{ + GLuint pos; + assert(table); + for (pos = 0; pos < TABLE_SIZE; pos++) { + struct HashEntry *entry = table->Table[pos]; + while (entry) { + struct HashEntry *next = entry->Next; + if (entry->Data) { + _mesa_problem(NULL, + "In _mesa_DeleteHashTable, found non-freed data"); + } + free(entry); + entry = next; + } + } + _glthread_DESTROY_MUTEX(table->Mutex); + _glthread_DESTROY_MUTEX(table->WalkMutex); + free(table); +} + + + +/** + * Lookup an entry in the hash table, without locking. + * \sa _mesa_HashLookup + */ +static inline void * +_mesa_HashLookup_unlocked(struct _mesa_HashTable *table, GLuint key) +{ + GLuint pos; + const struct HashEntry *entry; + + assert(table); + assert(key); + + pos = HASH_FUNC(key); + entry = table->Table[pos]; + while (entry) { + if (entry->Key == key) { + return entry->Data; + } + entry = entry->Next; + } + return NULL; +} + + +/** + * Lookup an entry in the hash table. + * + * \param table the hash table. + * \param key the key. + * + * \return pointer to user's data or NULL if key not in table + */ +void * +_mesa_HashLookup(struct _mesa_HashTable *table, GLuint key) +{ + void *res; + assert(table); + _glthread_LOCK_MUTEX(table->Mutex); + res = _mesa_HashLookup_unlocked(table, key); + _glthread_UNLOCK_MUTEX(table->Mutex); + return res; +} + + +/** + * Insert a key/pointer pair into the hash table. + * If an entry with this key already exists we'll replace the existing entry. + * + * \param table the hash table. + * \param key the key (not zero). + * \param data pointer to user data. + */ +void +_mesa_HashInsert(struct _mesa_HashTable *table, GLuint key, void *data) +{ + /* search for existing entry with this key */ + GLuint pos; + struct HashEntry *entry; + + assert(table); + assert(key); + + _glthread_LOCK_MUTEX(table->Mutex); + + if (key > table->MaxKey) + table->MaxKey = key; + + pos = HASH_FUNC(key); + + /* check if replacing an existing entry with same key */ + for (entry = table->Table[pos]; entry; entry = entry->Next) { + if (entry->Key == key) { + /* replace entry's data */ +#if 0 /* not sure this check is always valid */ + if (entry->Data) { + _mesa_problem(NULL, "Memory leak detected in _mesa_HashInsert"); + } +#endif + entry->Data = data; + _glthread_UNLOCK_MUTEX(table->Mutex); + return; + } + } + + /* alloc and insert new table entry */ + entry = MALLOC_STRUCT(HashEntry); + if (entry) { + entry->Key = key; + entry->Data = data; + entry->Next = table->Table[pos]; + table->Table[pos] = entry; + } + + _glthread_UNLOCK_MUTEX(table->Mutex); +} + + + +/** + * Remove an entry from the hash table. + * + * \param table the hash table. + * \param key key of entry to remove. + * + * While holding the hash table's lock, searches the entry with the matching + * key and unlinks it. + */ +void +_mesa_HashRemove(struct _mesa_HashTable *table, GLuint key) +{ + GLuint pos; + struct HashEntry *entry, *prev; + + assert(table); + assert(key); + + /* have to check this outside of mutex lock */ + if (table->InDeleteAll) { + _mesa_problem(NULL, "_mesa_HashRemove illegally called from " + "_mesa_HashDeleteAll callback function"); + return; + } + + _glthread_LOCK_MUTEX(table->Mutex); + + pos = HASH_FUNC(key); + prev = NULL; + entry = table->Table[pos]; + while (entry) { + if (entry->Key == key) { + /* found it! */ + if (prev) { + prev->Next = entry->Next; + } + else { + table->Table[pos] = entry->Next; + } + free(entry); + _glthread_UNLOCK_MUTEX(table->Mutex); + return; + } + prev = entry; + entry = entry->Next; + } + + _glthread_UNLOCK_MUTEX(table->Mutex); +} + + + +/** + * Delete all entries in a hash table, but don't delete the table itself. + * Invoke the given callback function for each table entry. + * + * \param table the hash table to delete + * \param callback the callback function + * \param userData arbitrary pointer to pass along to the callback + * (this is typically a struct gl_context pointer) + */ +void +_mesa_HashDeleteAll(struct _mesa_HashTable *table, + void (*callback)(GLuint key, void *data, void *userData), + void *userData) +{ + GLuint pos; + ASSERT(table); + ASSERT(callback); + _glthread_LOCK_MUTEX(table->Mutex); + table->InDeleteAll = GL_TRUE; + for (pos = 0; pos < TABLE_SIZE; pos++) { + struct HashEntry *entry, *next; + for (entry = table->Table[pos]; entry; entry = next) { + callback(entry->Key, entry->Data, userData); + next = entry->Next; + free(entry); + } + table->Table[pos] = NULL; + } + table->InDeleteAll = GL_FALSE; + _glthread_UNLOCK_MUTEX(table->Mutex); +} + + +/** + * Walk over all entries in a hash table, calling callback function for each. + * Note: we use a separate mutex in this function to avoid a recursive + * locking deadlock (in case the callback calls _mesa_HashRemove()) and to + * prevent multiple threads/contexts from getting tangled up. + * A lock-less version of this function could be used when the table will + * not be modified. + * \param table the hash table to walk + * \param callback the callback function + * \param userData arbitrary pointer to pass along to the callback + * (this is typically a struct gl_context pointer) + */ +void +_mesa_HashWalk(const struct _mesa_HashTable *table, + void (*callback)(GLuint key, void *data, void *userData), + void *userData) +{ + /* cast-away const */ + struct _mesa_HashTable *table2 = (struct _mesa_HashTable *) table; + GLuint pos; + ASSERT(table); + ASSERT(callback); + _glthread_LOCK_MUTEX(table2->WalkMutex); + for (pos = 0; pos < TABLE_SIZE; pos++) { + struct HashEntry *entry, *next; + for (entry = table->Table[pos]; entry; entry = next) { + /* save 'next' pointer now in case the callback deletes the entry */ + next = entry->Next; + callback(entry->Key, entry->Data, userData); + } + } + _glthread_UNLOCK_MUTEX(table2->WalkMutex); +} + + +/** + * Return the key of the "first" entry in the hash table. + * While holding the lock, walks through all table positions until finding + * the first entry of the first non-empty one. + * + * \param table the hash table + * \return key for the "first" entry in the hash table. + */ +GLuint +_mesa_HashFirstEntry(struct _mesa_HashTable *table) +{ + GLuint pos; + assert(table); + _glthread_LOCK_MUTEX(table->Mutex); + for (pos = 0; pos < TABLE_SIZE; pos++) { + if (table->Table[pos]) { + _glthread_UNLOCK_MUTEX(table->Mutex); + return table->Table[pos]->Key; + } + } + _glthread_UNLOCK_MUTEX(table->Mutex); + return 0; +} + + +/** + * Given a hash table key, return the next key. This is used to walk + * over all entries in the table. Note that the keys returned during + * walking won't be in any particular order. + * \return next hash key or 0 if end of table. + */ +GLuint +_mesa_HashNextEntry(const struct _mesa_HashTable *table, GLuint key) +{ + const struct HashEntry *entry; + GLuint pos; + + assert(table); + assert(key); + + /* Find the entry with given key */ + pos = HASH_FUNC(key); + for (entry = table->Table[pos]; entry ; entry = entry->Next) { + if (entry->Key == key) { + break; + } + } + + if (!entry) { + /* the given key was not found, so we can't find the next entry */ + return 0; + } + + if (entry->Next) { + /* return next in linked list */ + return entry->Next->Key; + } + else { + /* look for next non-empty table slot */ + pos++; + while (pos < TABLE_SIZE) { + if (table->Table[pos]) { + return table->Table[pos]->Key; + } + pos++; + } + return 0; + } +} + + +/** + * Dump contents of hash table for debugging. + * + * \param table the hash table. + */ +void +_mesa_HashPrint(const struct _mesa_HashTable *table) +{ + GLuint pos; + assert(table); + for (pos = 0; pos < TABLE_SIZE; pos++) { + const struct HashEntry *entry = table->Table[pos]; + while (entry) { + _mesa_debug(NULL, "%u %p\n", entry->Key, entry->Data); + entry = entry->Next; + } + } +} + + + +/** + * Find a block of adjacent unused hash keys. + * + * \param table the hash table. + * \param numKeys number of keys needed. + * + * \return Starting key of free block or 0 if failure. + * + * If there are enough free keys between the maximum key existing in the table + * (_mesa_HashTable::MaxKey) and the maximum key possible, then simply return + * the adjacent key. Otherwise do a full search for a free key block in the + * allowable key range. + */ +GLuint +_mesa_HashFindFreeKeyBlock(struct _mesa_HashTable *table, GLuint numKeys) +{ + const GLuint maxKey = ~((GLuint) 0); + _glthread_LOCK_MUTEX(table->Mutex); + if (maxKey - numKeys > table->MaxKey) { + /* the quick solution */ + _glthread_UNLOCK_MUTEX(table->Mutex); + return table->MaxKey + 1; + } + else { + /* the slow solution */ + GLuint freeCount = 0; + GLuint freeStart = 1; + GLuint key; + for (key = 1; key != maxKey; key++) { + if (_mesa_HashLookup_unlocked(table, key)) { + /* darn, this key is already in use */ + freeCount = 0; + freeStart = key+1; + } + else { + /* this key not in use, check if we've found enough */ + freeCount++; + if (freeCount == numKeys) { + _glthread_UNLOCK_MUTEX(table->Mutex); + return freeStart; + } + } + } + /* cannot allocate a block of numKeys consecutive keys */ + _glthread_UNLOCK_MUTEX(table->Mutex); + return 0; + } +} + + +#if 0 /* debug only */ + +/** + * Test walking over all the entries in a hash table. + */ +static void +test_hash_walking(void) +{ + struct _mesa_HashTable *t = _mesa_NewHashTable(); + const GLuint limit = 50000; + GLuint i; + + /* create some entries */ + for (i = 0; i < limit; i++) { + GLuint dummy; + GLuint k = (rand() % (limit * 10)) + 1; + while (_mesa_HashLookup(t, k)) { + /* id already in use, try another */ + k = (rand() % (limit * 10)) + 1; + } + _mesa_HashInsert(t, k, &dummy); + } + + /* walk over all entries */ + { + GLuint k = _mesa_HashFirstEntry(t); + GLuint count = 0; + while (k) { + GLuint knext = _mesa_HashNextEntry(t, k); + assert(knext != k); + _mesa_HashRemove(t, k); + count++; + k = knext; + } + assert(count == limit); + k = _mesa_HashFirstEntry(t); + assert(k==0); + } + + _mesa_DeleteHashTable(t); +} + + +void +_mesa_test_hash_functions(void) +{ + int a, b, c; + struct _mesa_HashTable *t; + + t = _mesa_NewHashTable(); + _mesa_HashInsert(t, 501, &a); + _mesa_HashInsert(t, 10, &c); + _mesa_HashInsert(t, 0xfffffff8, &b); + /*_mesa_HashPrint(t);*/ + + assert(_mesa_HashLookup(t,501)); + assert(!_mesa_HashLookup(t,1313)); + assert(_mesa_HashFindFreeKeyBlock(t, 100)); + + _mesa_DeleteHashTable(t); + + test_hash_walking(); +} + +#endif diff --git a/mesalib/src/mesa/main/histogram.h b/mesalib/src/mesa/main/histogram.h index f9c7310fe..d97e74abb 100644 --- a/mesalib/src/mesa/main/histogram.h +++ b/mesalib/src/mesa/main/histogram.h @@ -1,58 +1,58 @@ -/** - * \file histogram.h - * Histogram. - * - * \if subset - * (No-op) - * - * \endif - */ - -/* - * Mesa 3-D graphics library - * Version: 5.1 - * - * Copyright (C) 1999-2003 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -#ifndef HISTOGRAM_H -#define HISTOGRAM_H - -#include "compiler.h" -#include "mfeatures.h" - -struct _glapi_table; - -#if FEATURE_histogram - -extern void -_mesa_init_histogram_dispatch(struct _glapi_table *disp); - -#else /* FEATURE_histogram */ - -static INLINE void -_mesa_init_histogram_dispatch(struct _glapi_table *disp) -{ -} - -#endif /* FEATURE_histogram */ - -#endif /* HISTOGRAM_H */ +/** + * \file histogram.h + * Histogram. + * + * \if subset + * (No-op) + * + * \endif + */ + +/* + * Mesa 3-D graphics library + * Version: 5.1 + * + * Copyright (C) 1999-2003 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +#ifndef HISTOGRAM_H +#define HISTOGRAM_H + +#include "compiler.h" +#include "mfeatures.h" + +struct _glapi_table; + +#if FEATURE_histogram + +extern void +_mesa_init_histogram_dispatch(struct _glapi_table *disp); + +#else /* FEATURE_histogram */ + +static inline void +_mesa_init_histogram_dispatch(struct _glapi_table *disp) +{ +} + +#endif /* FEATURE_histogram */ + +#endif /* HISTOGRAM_H */ diff --git a/mesalib/src/mesa/main/image.c b/mesalib/src/mesa/main/image.c index 15f7812e6..7d95dd6be 100644 --- a/mesalib/src/mesa/main/image.c +++ b/mesalib/src/mesa/main/image.c @@ -1756,7 +1756,7 @@ _mesa_clip_to_region(GLint xmin, GLint ymin, /** * Clip dst coords against Xmax (or Ymax). */ -static INLINE void +static inline void clip_right_or_top(GLint *srcX0, GLint *srcX1, GLint *dstX0, GLint *dstX1, GLint maxValue) @@ -1789,7 +1789,7 @@ clip_right_or_top(GLint *srcX0, GLint *srcX1, /** * Clip dst coords against Xmin (or Ymin). */ -static INLINE void +static inline void clip_left_or_bottom(GLint *srcX0, GLint *srcX1, GLint *dstX0, GLint *dstX1, GLint minValue) diff --git a/mesalib/src/mesa/main/imports.h b/mesalib/src/mesa/main/imports.h index 70defdc43..5fb5581ef 100644 --- a/mesalib/src/mesa/main/imports.h +++ b/mesalib/src/mesa/main/imports.h @@ -153,13 +153,13 @@ typedef union { GLfloat f; GLint i; } fi_type; #endif #if defined(_MSC_VER) -static INLINE float truncf(float x) { return x < 0.0f ? ceilf(x) : floorf(x); } -static INLINE float exp2f(float x) { return powf(2.0f, x); } -static INLINE float log2f(float x) { return logf(x) * 1.442695041f; } -static INLINE float asinhf(float x) { return logf(x + sqrtf(x * x + 1.0f)); } -static INLINE float acoshf(float x) { return logf(x + sqrtf(x * x - 1.0f)); } -static INLINE float atanhf(float x) { return (logf(1.0f + x) - logf(1.0f - x)) / 2.0f; } -static INLINE int isblank(int ch) { return ch == ' ' || ch == '\t'; } +static inline float truncf(float x) { return x < 0.0f ? ceilf(x) : floorf(x); } +static inline float exp2f(float x) { return powf(2.0f, x); } +static inline float log2f(float x) { return logf(x) * 1.442695041f; } +static inline float asinhf(float x) { return logf(x + sqrtf(x * x + 1.0f)); } +static inline float acoshf(float x) { return logf(x + sqrtf(x * x - 1.0f)); } +static inline float atanhf(float x) { return (logf(1.0f + x) - logf(1.0f - x)) / 2.0f; } +static inline int isblank(int ch) { return ch == ' ' || ch == '\t'; } #define strtoll(p, e, b) _strtoi64(p, e, b) #endif /*@}*/ @@ -172,7 +172,7 @@ static INLINE int isblank(int ch) { return ch == ' ' || ch == '\t'; } /* This is pretty fast, but not accurate enough (only 2 fractional bits). * Based on code from http://www.stereopsis.com/log2.html */ -static INLINE GLfloat LOG2(GLfloat x) +static inline GLfloat LOG2(GLfloat x) { const GLfloat y = x * x * x * x; const GLuint ix = *((GLuint *) &y); @@ -184,7 +184,7 @@ static INLINE GLfloat LOG2(GLfloat x) /* Pretty fast, and accurate. * Based on code from http://www.flipcode.com/totd/ */ -static INLINE GLfloat LOG2(GLfloat val) +static inline GLfloat LOG2(GLfloat val) { fi_type num; GLint log_2; @@ -208,7 +208,7 @@ static INLINE GLfloat LOG2(GLfloat val) *** IS_INF_OR_NAN: test if float is infinite or NaN ***/ #ifdef USE_IEEE -static INLINE int IS_INF_OR_NAN( float x ) +static inline int IS_INF_OR_NAN( float x ) { fi_type tmp; tmp.f = x; @@ -231,7 +231,7 @@ static INLINE int IS_INF_OR_NAN( float x ) *** IS_NEGATIVE: test if float is negative ***/ #if defined(USE_IEEE) -static INLINE int GET_FLOAT_BITS( float x ) +static inline int GET_FLOAT_BITS( float x ) { fi_type fi; fi.f = x; @@ -289,7 +289,7 @@ static INLINE int GET_FLOAT_BITS( float x ) *** IROUND: return (as an integer) float rounded to nearest integer ***/ #if defined(USE_X86_ASM) && defined(__GNUC__) && defined(__i386__) -static INLINE int iround(float f) +static inline int iround(float f) { int r; __asm__ ("fistpl %0" : "=m" (r) : "t" (f) : "st"); @@ -297,7 +297,7 @@ static INLINE int iround(float f) } #define IROUND(x) iround(x) #elif defined(USE_X86_ASM) && defined(_MSC_VER) -static INLINE int iround(float f) +static inline int iround(float f) { int r; _asm { @@ -344,7 +344,7 @@ long iround(float f); * but uses some IEEE specific tricks for better speed. * Contributed by Josh Vanderhoof */ -static INLINE int ifloor(float f) +static inline int ifloor(float f) { int ai, bi; double af, bf; @@ -357,7 +357,7 @@ static INLINE int ifloor(float f) } #define IFLOOR(x) ifloor(x) #elif defined(USE_IEEE) -static INLINE int ifloor(float f) +static inline int ifloor(float f) { int ai, bi; double af, bf; @@ -371,7 +371,7 @@ static INLINE int ifloor(float f) } #define IFLOOR(x) ifloor(x) #else -static INLINE int ifloor(float f) +static inline int ifloor(float f) { int i = IROUND(f); return (i > f) ? i - 1 : i; @@ -391,7 +391,7 @@ static INLINE int ifloor(float f) * but uses some IEEE specific tricks for better speed. * Contributed by Josh Vanderhoof */ -static INLINE int iceil(float f) +static inline int iceil(float f) { int ai, bi; double af, bf; @@ -404,7 +404,7 @@ static INLINE int iceil(float f) } #define ICEIL(x) iceil(x) #elif defined(USE_IEEE) -static INLINE int iceil(float f) +static inline int iceil(float f) { int ai, bi; double af, bf; @@ -417,7 +417,7 @@ static INLINE int iceil(float f) } #define ICEIL(x) iceil(x) #else -static INLINE int iceil(float f) +static inline int iceil(float f) { int i = IROUND(f); return (i < f) ? i + 1 : i; @@ -429,7 +429,7 @@ static INLINE int iceil(float f) /** * Is x a power of two? */ -static INLINE int +static inline int _mesa_is_pow_two(int x) { return !(x & (x - 1)); @@ -449,7 +449,7 @@ _mesa_is_pow_two(int x) * results would be different depending on optimization * level used for build. */ -static INLINE int32_t +static inline int32_t _mesa_next_pow_two_32(uint32_t x) { #if defined(__GNUC__) && \ @@ -468,7 +468,7 @@ _mesa_next_pow_two_32(uint32_t x) #endif } -static INLINE int64_t +static inline int64_t _mesa_next_pow_two_64(uint64_t x) { #if defined(__GNUC__) && \ @@ -495,7 +495,7 @@ _mesa_next_pow_two_64(uint64_t x) /* * Returns the floor form of binary logarithm for a 32-bit integer. */ -static INLINE GLuint +static inline GLuint _mesa_logbase2(GLuint n) { #if defined(__GNUC__) && \ @@ -516,7 +516,7 @@ _mesa_logbase2(GLuint n) /** * Return 1 if this is a little endian machine, 0 if big endian. */ -static INLINE GLboolean +static inline GLboolean _mesa_little_endian(void) { const GLuint ui = 1; /* intentionally not static */ diff --git a/mesalib/src/mesa/main/mipmap.c b/mesalib/src/mesa/main/mipmap.c index 1ead5ee10..c2f922674 100644 --- a/mesalib/src/mesa/main/mipmap.c +++ b/mesalib/src/mesa/main/mipmap.c @@ -47,9 +47,9 @@ bytes_per_pixel(GLenum datatype, GLuint comps) assert(b >= 0); if (_mesa_type_is_packed(datatype)) - return b; + return b; else - return b * comps; + return b * comps; } @@ -1414,8 +1414,6 @@ make_2d_mipmap(GLenum datatype, GLuint comps, GLint border, const GLint srcWidthNB = srcWidth - 2 * border; /* sizes w/out border */ const GLint dstWidthNB = dstWidth - 2 * border; const GLint dstHeightNB = dstHeight - 2 * border; - const GLint srcRowBytes = bpt * srcRowStride; - const GLint dstRowBytes = bpt * dstRowStride; const GLubyte *srcA, *srcB; GLubyte *dst; GLint row, srcRowStep; @@ -1424,7 +1422,7 @@ make_2d_mipmap(GLenum datatype, GLuint comps, GLint border, srcA = srcPtr + border * ((srcWidth + 1) * bpt); if (srcHeight > 1 && srcHeight > dstHeight) { /* sample from two source rows */ - srcB = srcA + srcRowBytes; + srcB = srcA + srcRowStride; srcRowStep = 2; } else { @@ -1438,9 +1436,9 @@ make_2d_mipmap(GLenum datatype, GLuint comps, GLint border, for (row = 0; row < dstHeightNB; row++) { do_row(datatype, comps, srcWidthNB, srcA, srcB, dstWidthNB, dst); - srcA += srcRowStep * srcRowBytes; - srcB += srcRowStep * srcRowBytes; - dst += dstRowBytes; + srcA += srcRowStep * srcRowStride; + srcB += srcRowStep * srcRowStride; + dst += dstRowStride; } /* This is ugly but probably won't be used much */ @@ -1500,9 +1498,9 @@ make_2d_mipmap(GLenum datatype, GLuint comps, GLint border, static void make_3d_mipmap(GLenum datatype, GLuint comps, GLint border, GLint srcWidth, GLint srcHeight, GLint srcDepth, - const GLubyte *srcPtr, GLint srcRowStride, + const GLubyte **srcPtr, GLint srcRowStride, GLint dstWidth, GLint dstHeight, GLint dstDepth, - GLubyte *dstPtr, GLint dstRowStride) + GLubyte **dstPtr, GLint dstRowStride) { const GLint bpt = bytes_per_pixel(datatype, comps); const GLint srcWidthNB = srcWidth - 2 * border; /* sizes w/out border */ @@ -1525,7 +1523,7 @@ make_3d_mipmap(GLenum datatype, GLuint comps, GLint border, bytesPerDstRow = dstWidth * bpt; /* Offset between adjacent src images to be averaged together */ - srcImageOffset = (srcDepth == dstDepth) ? 0 : bytesPerSrcImage; + srcImageOffset = (srcDepth == dstDepth) ? 0 : 1; /* Offset between adjacent src rows to be averaged together */ srcRowOffset = (srcHeight == dstHeight) ? 0 : srcWidth * bpt; @@ -1545,15 +1543,15 @@ make_3d_mipmap(GLenum datatype, GLuint comps, GLint border, for (img = 0; img < dstDepthNB; img++) { /* first source image pointer, skipping border */ - const GLubyte *imgSrcA = srcPtr - + (bytesPerSrcImage + bytesPerSrcRow + border) * bpt * border - + img * (bytesPerSrcImage + srcImageOffset); + const GLubyte *imgSrcA = srcPtr[img * 2 + border] + + bytesPerSrcRow * border + bpt * border; /* second source image pointer, skipping border */ - const GLubyte *imgSrcB = imgSrcA + srcImageOffset; + const GLubyte *imgSrcB = srcPtr[img * 2 + srcImageOffset + border] + + bytesPerSrcRow * border + bpt * border; + /* address of the dest image, skipping border */ - GLubyte *imgDst = dstPtr - + (bytesPerDstImage + bytesPerDstRow + border) * bpt * border - + img * bytesPerDstImage; + GLubyte *imgDst = dstPtr[img + border] + + bytesPerDstRow * border + bpt * border; /* setup the four source row pointers and the dest row pointer */ const GLubyte *srcImgARowA = imgSrcA; @@ -1581,13 +1579,14 @@ make_3d_mipmap(GLenum datatype, GLuint comps, GLint border, /* Luckily we can leverage the make_2d_mipmap() function here! */ if (border > 0) { /* do front border image */ - make_2d_mipmap(datatype, comps, 1, srcWidth, srcHeight, srcPtr, srcRowStride, - dstWidth, dstHeight, dstPtr, dstRowStride); + make_2d_mipmap(datatype, comps, 1, + srcWidth, srcHeight, srcPtr[0], srcRowStride, + dstWidth, dstHeight, dstPtr[0], dstRowStride); /* do back border image */ - make_2d_mipmap(datatype, comps, 1, srcWidth, srcHeight, - srcPtr + bytesPerSrcImage * (srcDepth - 1), srcRowStride, - dstWidth, dstHeight, - dstPtr + bytesPerDstImage * (dstDepth - 1), dstRowStride); + make_2d_mipmap(datatype, comps, 1, + srcWidth, srcHeight, srcPtr[srcDepth - 1], srcRowStride, + dstWidth, dstHeight, dstPtr[dstDepth - 1], dstRowStride); + /* do four remaining border edges that span the image slices */ if (srcDepth == dstDepth) { /* just copy border pixels from src to dst */ @@ -1596,29 +1595,23 @@ make_3d_mipmap(GLenum datatype, GLuint comps, GLint border, GLubyte *dst; /* do border along [img][row=0][col=0] */ - src = srcPtr + (img + 1) * bytesPerSrcImage; - dst = dstPtr + (img + 1) * bytesPerDstImage; + src = srcPtr[img * 2]; + dst = dstPtr[img]; memcpy(dst, src, bpt); /* do border along [img][row=dstHeight-1][col=0] */ - src = srcPtr + (img * 2 + 1) * bytesPerSrcImage - + (srcHeight - 1) * bytesPerSrcRow; - dst = dstPtr + (img + 1) * bytesPerDstImage - + (dstHeight - 1) * bytesPerDstRow; + src = srcPtr[img * 2] + (srcHeight - 1) * bytesPerSrcRow; + dst = dstPtr[img] + (dstHeight - 1) * bytesPerDstRow; memcpy(dst, src, bpt); /* do border along [img][row=0][col=dstWidth-1] */ - src = srcPtr + (img * 2 + 1) * bytesPerSrcImage - + (srcWidth - 1) * bpt; - dst = dstPtr + (img + 1) * bytesPerDstImage - + (dstWidth - 1) * bpt; + src = srcPtr[img * 2] + (srcWidth - 1) * bpt; + dst = dstPtr[img] + (dstWidth - 1) * bpt; memcpy(dst, src, bpt); /* do border along [img][row=dstHeight-1][col=dstWidth-1] */ - src = srcPtr + (img * 2 + 1) * bytesPerSrcImage - + (bytesPerSrcImage - bpt); - dst = dstPtr + (img + 1) * bytesPerDstImage - + (bytesPerDstImage - bpt); + src = srcPtr[img * 2] + (bytesPerSrcImage - bpt); + dst = dstPtr[img] + (bytesPerDstImage - bpt); memcpy(dst, src, bpt); } } @@ -1626,170 +1619,34 @@ make_3d_mipmap(GLenum datatype, GLuint comps, GLint border, /* average border pixels from adjacent src image pairs */ ASSERT(srcDepthNB == 2 * dstDepthNB); for (img = 0; img < dstDepthNB; img++) { - const GLubyte *src; + const GLubyte *srcA, *srcB; GLubyte *dst; /* do border along [img][row=0][col=0] */ - src = srcPtr + (img * 2 + 1) * bytesPerSrcImage; - dst = dstPtr + (img + 1) * bytesPerDstImage; - do_row(datatype, comps, 1, src, src + srcImageOffset, 1, dst); + srcA = srcPtr[img * 2 + 0]; + srcB = srcPtr[img * 2 + srcImageOffset]; + dst = dstPtr[img]; + do_row(datatype, comps, 1, srcA, srcB, 1, dst); /* do border along [img][row=dstHeight-1][col=0] */ - src = srcPtr + (img * 2 + 1) * bytesPerSrcImage - + (srcHeight - 1) * bytesPerSrcRow; - dst = dstPtr + (img + 1) * bytesPerDstImage - + (dstHeight - 1) * bytesPerDstRow; - do_row(datatype, comps, 1, src, src + srcImageOffset, 1, dst); + srcA = srcPtr[img * 2 + 0] + + (srcHeight - 1) * bytesPerSrcRow; + srcB = srcPtr[img * 2 + srcImageOffset] + + (srcHeight - 1) * bytesPerSrcRow; + dst = dstPtr[img] + (dstHeight - 1) * bytesPerDstRow; + do_row(datatype, comps, 1, srcA, srcB, 1, dst); /* do border along [img][row=0][col=dstWidth-1] */ - src = srcPtr + (img * 2 + 1) * bytesPerSrcImage - + (srcWidth - 1) * bpt; - dst = dstPtr + (img + 1) * bytesPerDstImage - + (dstWidth - 1) * bpt; - do_row(datatype, comps, 1, src, src + srcImageOffset, 1, dst); + srcA = srcPtr[img * 2 + 0] + (srcWidth - 1) * bpt; + srcB = srcPtr[img * 2 + srcImageOffset] + (srcWidth - 1) * bpt; + dst = dstPtr[img] + (dstWidth - 1) * bpt; + do_row(datatype, comps, 1, srcA, srcB, 1, dst); /* do border along [img][row=dstHeight-1][col=dstWidth-1] */ - src = srcPtr + (img * 2 + 1) * bytesPerSrcImage - + (bytesPerSrcImage - bpt); - dst = dstPtr + (img + 1) * bytesPerDstImage - + (bytesPerDstImage - bpt); - do_row(datatype, comps, 1, src, src + srcImageOffset, 1, dst); - } - } - } -} - - -static void -make_1d_stack_mipmap(GLenum datatype, GLuint comps, GLint border, - GLint srcWidth, const GLubyte *srcPtr, GLuint srcRowStride, - GLint dstWidth, GLint dstHeight, - GLubyte *dstPtr, GLuint dstRowStride ) -{ - const GLint bpt = bytes_per_pixel(datatype, comps); - const GLint srcWidthNB = srcWidth - 2 * border; /* sizes w/out border */ - const GLint dstWidthNB = dstWidth - 2 * border; - const GLint dstHeightNB = dstHeight - 2 * border; - const GLint srcRowBytes = bpt * srcRowStride; - const GLint dstRowBytes = bpt * dstRowStride; - const GLubyte *src; - GLubyte *dst; - GLint row; - - /* Compute src and dst pointers, skipping any border */ - src = srcPtr + border * ((srcWidth + 1) * bpt); - dst = dstPtr + border * ((dstWidth + 1) * bpt); - - for (row = 0; row < dstHeightNB; row++) { - do_row(datatype, comps, srcWidthNB, src, src, - dstWidthNB, dst); - src += srcRowBytes; - dst += dstRowBytes; - } - - if (border) { - /* copy left-most pixel from source */ - assert(dstPtr); - assert(srcPtr); - memcpy(dstPtr, srcPtr, bpt); - /* copy right-most pixel from source */ - memcpy(dstPtr + (dstWidth - 1) * bpt, - srcPtr + (srcWidth - 1) * bpt, - bpt); - } -} - - -/** - * \bug - * There is quite a bit of refactoring that could be done with this function - * and \c make_2d_mipmap. - */ -static void -make_2d_stack_mipmap(GLenum datatype, GLuint comps, GLint border, - GLint srcWidth, GLint srcHeight, - const GLubyte *srcPtr, GLint srcRowStride, - GLint dstWidth, GLint dstHeight, GLint dstDepth, - GLubyte *dstPtr, GLint dstRowStride) -{ - const GLint bpt = bytes_per_pixel(datatype, comps); - const GLint srcWidthNB = srcWidth - 2 * border; /* sizes w/out border */ - const GLint dstWidthNB = dstWidth - 2 * border; - const GLint dstHeightNB = dstHeight - 2 * border; - const GLint dstDepthNB = dstDepth - 2 * border; - const GLint srcRowBytes = bpt * srcRowStride; - const GLint dstRowBytes = bpt * dstRowStride; - const GLubyte *srcA, *srcB; - GLubyte *dst; - GLint layer; - GLint row; - - /* Compute src and dst pointers, skipping any border */ - srcA = srcPtr + border * ((srcWidth + 1) * bpt); - if (srcHeight > 1) - srcB = srcA + srcRowBytes; - else - srcB = srcA; - dst = dstPtr + border * ((dstWidth + 1) * bpt); - - for (layer = 0; layer < dstDepthNB; layer++) { - for (row = 0; row < dstHeightNB; row++) { - do_row(datatype, comps, srcWidthNB, srcA, srcB, - dstWidthNB, dst); - srcA += 2 * srcRowBytes; - srcB += 2 * srcRowBytes; - dst += dstRowBytes; - } - - /* This is ugly but probably won't be used much */ - if (border > 0) { - /* fill in dest border */ - /* lower-left border pixel */ - assert(dstPtr); - assert(srcPtr); - memcpy(dstPtr, srcPtr, bpt); - /* lower-right border pixel */ - memcpy(dstPtr + (dstWidth - 1) * bpt, - srcPtr + (srcWidth - 1) * bpt, bpt); - /* upper-left border pixel */ - memcpy(dstPtr + dstWidth * (dstHeight - 1) * bpt, - srcPtr + srcWidth * (srcHeight - 1) * bpt, bpt); - /* upper-right border pixel */ - memcpy(dstPtr + (dstWidth * dstHeight - 1) * bpt, - srcPtr + (srcWidth * srcHeight - 1) * bpt, bpt); - /* lower border */ - do_row(datatype, comps, srcWidthNB, - srcPtr + bpt, - srcPtr + bpt, - dstWidthNB, dstPtr + bpt); - /* upper border */ - do_row(datatype, comps, srcWidthNB, - srcPtr + (srcWidth * (srcHeight - 1) + 1) * bpt, - srcPtr + (srcWidth * (srcHeight - 1) + 1) * bpt, - dstWidthNB, - dstPtr + (dstWidth * (dstHeight - 1) + 1) * bpt); - /* left and right borders */ - if (srcHeight == dstHeight) { - /* copy border pixel from src to dst */ - for (row = 1; row < srcHeight; row++) { - memcpy(dstPtr + dstWidth * row * bpt, - srcPtr + srcWidth * row * bpt, bpt); - memcpy(dstPtr + (dstWidth * row + dstWidth - 1) * bpt, - srcPtr + (srcWidth * row + srcWidth - 1) * bpt, bpt); - } - } - else { - /* average two src pixels each dest pixel */ - for (row = 0; row < dstHeightNB; row += 2) { - do_row(datatype, comps, 1, - srcPtr + (srcWidth * (row * 2 + 1)) * bpt, - srcPtr + (srcWidth * (row * 2 + 2)) * bpt, - 1, dstPtr + (dstWidth * row + 1) * bpt); - do_row(datatype, comps, 1, - srcPtr + (srcWidth * (row * 2 + 1) + srcWidth - 1) * bpt, - srcPtr + (srcWidth * (row * 2 + 2) + srcWidth - 1) * bpt, - 1, dstPtr + (dstWidth * row + 1 + dstWidth - 1) * bpt); - } + srcA = srcPtr[img * 2 + 0] + (bytesPerSrcImage - bpt); + srcB = srcPtr[img * 2 + srcImageOffset] + (bytesPerSrcImage - bpt); + dst = dstPtr[img] + (bytesPerDstImage - bpt); + do_row(datatype, comps, 1, srcA, srcB, 1, dst); } } } @@ -1799,28 +1656,29 @@ make_2d_stack_mipmap(GLenum datatype, GLuint comps, GLint border, /** * Down-sample a texture image to produce the next lower mipmap level. * \param comps components per texel (1, 2, 3 or 4) - * \param srcRowStride stride between source rows, in texels - * \param dstRowStride stride between destination rows, in texels + * \param srcData array[slice] of pointers to source image slices + * \param dstData array[slice] of pointers to dest image slices + * \param srcRowStride stride between source rows, in bytes + * \param dstRowStride stride between destination rows, in bytes */ void _mesa_generate_mipmap_level(GLenum target, GLenum datatype, GLuint comps, GLint border, GLint srcWidth, GLint srcHeight, GLint srcDepth, - const GLubyte *srcData, + const GLubyte **srcData, GLint srcRowStride, GLint dstWidth, GLint dstHeight, GLint dstDepth, - GLubyte *dstData, + GLubyte **dstData, GLint dstRowStride) { - /* - * We use simple 2x2 averaging to compute the next mipmap level. - */ + int i; + switch (target) { case GL_TEXTURE_1D: make_1d_mipmap(datatype, comps, border, - srcWidth, srcData, - dstWidth, dstData); + srcWidth, srcData[0], + dstWidth, dstData[0]); break; case GL_TEXTURE_2D: case GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB: @@ -1830,8 +1688,8 @@ _mesa_generate_mipmap_level(GLenum target, case GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB: case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB: make_2d_mipmap(datatype, comps, border, - srcWidth, srcHeight, srcData, srcRowStride, - dstWidth, dstHeight, dstData, dstRowStride); + srcWidth, srcHeight, srcData[0], srcRowStride, + dstWidth, dstHeight, dstData[0], dstRowStride); break; case GL_TEXTURE_3D: make_3d_mipmap(datatype, comps, border, @@ -1841,23 +1699,26 @@ _mesa_generate_mipmap_level(GLenum target, dstData, dstRowStride); break; case GL_TEXTURE_1D_ARRAY_EXT: - make_1d_stack_mipmap(datatype, comps, border, - srcWidth, srcData, srcRowStride, - dstWidth, dstHeight, - dstData, dstRowStride); + assert(srcHeight == 1); + assert(dstHeight == 1); + for (i = 0; i < dstDepth; i++) { + make_1d_mipmap(datatype, comps, border, + srcWidth, srcData[i], + dstWidth, dstData[i]); + } break; case GL_TEXTURE_2D_ARRAY_EXT: - make_2d_stack_mipmap(datatype, comps, border, - srcWidth, srcHeight, - srcData, srcRowStride, - dstWidth, dstHeight, - dstDepth, dstData, dstRowStride); + for (i = 0; i < dstDepth; i++) { + make_2d_mipmap(datatype, comps, border, + srcWidth, srcHeight, srcData[i], srcRowStride, + dstWidth, dstHeight, dstData[i], dstRowStride); + } break; case GL_TEXTURE_RECTANGLE_NV: /* no mipmaps, do nothing */ break; default: - _mesa_problem(NULL, "bad dimensions in _mesa_generate_mipmaps"); + _mesa_problem(NULL, "bad tex target in _mesa_generate_mipmaps"); return; } } @@ -1919,12 +1780,14 @@ generate_mipmap_uncompressed(struct gl_context *ctx, GLenum target, for (level = texObj->BaseLevel; level < maxLevel; level++) { /* generate image[level+1] from image[level] */ - const struct gl_texture_image *srcImage; - struct gl_texture_image *dstImage; + struct gl_texture_image *srcImage, *dstImage; + GLint srcRowStride, dstRowStride; GLint srcWidth, srcHeight, srcDepth; GLint dstWidth, dstHeight, dstDepth; GLint border; + GLint slice; GLboolean nextLevel; + GLubyte **srcMaps, **dstMaps; /* get src image parameters */ srcImage = _mesa_select_tex_image(ctx, texObj, target, level); @@ -1950,7 +1813,6 @@ generate_mipmap_uncompressed(struct gl_context *ctx, GLenum target, /* Free old image data */ ctx->Driver.FreeTextureImageBuffer(ctx, dstImage); - /* initialize new image */ _mesa_init_teximage_fields(ctx, target, dstImage, dstWidth, dstHeight, dstDepth, border, srcImage->InternalFormat, srcImage->TexFormat); @@ -1967,15 +1829,54 @@ generate_mipmap_uncompressed(struct gl_context *ctx, GLenum target, ASSERT(dstImage->TexFormat); + if (target == GL_TEXTURE_1D_ARRAY) { + srcDepth = srcHeight; + dstDepth = dstHeight; + srcHeight = 1; + dstHeight = 1; + } + + /* Map src texture image slices */ + srcMaps = (GLubyte **) malloc(srcDepth * sizeof(GLubyte *)); + for (slice = 0; slice < srcDepth; slice++) { + ctx->Driver.MapTextureImage(ctx, srcImage, slice, + 0, 0, srcWidth, srcHeight, + GL_MAP_READ_BIT, + &srcMaps[slice], &srcRowStride); + } + + /* Map dst texture image slices */ + dstMaps = (GLubyte **) malloc(dstDepth * sizeof(GLubyte *)); + for (slice = 0; slice < dstDepth; slice++) { + ctx->Driver.MapTextureImage(ctx, dstImage, slice, + 0, 0, dstWidth, dstHeight, + GL_MAP_WRITE_BIT, + &dstMaps[slice], &dstRowStride); + } + + /* generate one mipmap level (for 1D/2D/3D/array/etc texture) */ _mesa_generate_mipmap_level(target, datatype, comps, border, srcWidth, srcHeight, srcDepth, - srcImage->Data, srcImage->RowStride, + (const GLubyte **) srcMaps, srcRowStride, dstWidth, dstHeight, dstDepth, - dstImage->Data, dstImage->RowStride); + dstMaps, dstRowStride); + + /* Unmap src image slices */ + for (slice = 0; slice < srcDepth; slice++) { + ctx->Driver.UnmapTextureImage(ctx, srcImage, slice); + } + free(srcMaps); + + /* Unmap dst image slices */ + for (slice = 0; slice < dstDepth; slice++) { + ctx->Driver.UnmapTextureImage(ctx, dstImage, slice); + } + free(dstMaps); } /* loop over mipmap levels */ } + static void generate_mipmap_compressed(struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj, @@ -1985,7 +1886,7 @@ generate_mipmap_compressed(struct gl_context *ctx, GLenum target, GLint level; gl_format temp_format; GLint components; - GLuint temp_src_stride, temp_dst_stride; /* in bytes */ + GLuint temp_src_stride; /* in bytes */ GLubyte *temp_src = NULL, *temp_dst = NULL; GLenum temp_datatype; GLenum temp_base_format; @@ -2032,9 +1933,10 @@ generate_mipmap_compressed(struct gl_context *ctx, GLenum target, ctx->Pack = ctx->DefaultPacking; /* Get the uncompressed image */ - ctx->Driver.GetTexImage(ctx, target, texObj->BaseLevel, + assert(srcImage->Level == texObj->BaseLevel); + ctx->Driver.GetTexImage(ctx, temp_base_format, temp_datatype, - temp_src, texObj, srcImage); + temp_src, srcImage); /* restore packing mode */ ctx->Pack = save; } @@ -2048,6 +1950,7 @@ generate_mipmap_compressed(struct gl_context *ctx, GLenum target, GLint dstWidth, dstHeight, dstDepth; GLint border; GLboolean nextLevel; + GLuint temp_dst_stride; /* in bytes */ /* get src image parameters */ srcImage = _mesa_select_tex_image(ctx, texObj, target, level); @@ -2084,15 +1987,19 @@ generate_mipmap_compressed(struct gl_context *ctx, GLenum target, _mesa_generate_mipmap_level(target, temp_datatype, components, border, srcWidth, srcHeight, srcDepth, - temp_src, temp_src_stride / components, + (const GLubyte **) &temp_src, + temp_src_stride, dstWidth, dstHeight, dstDepth, - temp_dst, temp_dst_stride / components); + &temp_dst, temp_dst_stride); /* initialize new image */ _mesa_init_teximage_fields(ctx, target, dstImage, dstWidth, dstHeight, dstDepth, border, srcImage->InternalFormat, srcImage->TexFormat); + /* Free old dest texture image buffer */ + ctx->Driver.FreeTextureImageBuffer(ctx, dstImage); + ctx->Driver.TexImage2D(ctx, target, level + 1, srcImage->InternalFormat, dstWidth, dstHeight, border, @@ -2104,7 +2011,6 @@ generate_mipmap_compressed(struct gl_context *ctx, GLenum target, GLubyte *temp = temp_src; temp_src = temp_dst; temp_dst = temp; - temp_src_stride = temp_dst_stride; } } /* loop over mipmap levels */ diff --git a/mesalib/src/mesa/main/mipmap.h b/mesalib/src/mesa/main/mipmap.h index 478395021..8b7cd7d5a 100644 --- a/mesalib/src/mesa/main/mipmap.h +++ b/mesalib/src/mesa/main/mipmap.h @@ -34,10 +34,10 @@ _mesa_generate_mipmap_level(GLenum target, GLenum datatype, GLuint comps, GLint border, GLint srcWidth, GLint srcHeight, GLint srcDepth, - const GLubyte *srcData, + const GLubyte **srcData, GLint srcRowStride, GLint dstWidth, GLint dstHeight, GLint dstDepth, - GLubyte *dstData, + GLubyte **dstData, GLint dstRowStride); diff --git a/mesalib/src/mesa/main/mm.c b/mesalib/src/mesa/main/mm.c index 25a029370..ab32123a4 100644 --- a/mesalib/src/mesa/main/mm.c +++ b/mesalib/src/mesa/main/mm.c @@ -211,7 +211,7 @@ mmFindBlock(struct mem_block *heap, unsigned start) } -static INLINE int +static inline int Join2Blocks(struct mem_block *p) { /* XXX there should be some assertions here */ diff --git a/mesalib/src/mesa/main/mtypes.h b/mesalib/src/mesa/main/mtypes.h index be43434c8..67db4df8f 100644 --- a/mesalib/src/mesa/main/mtypes.h +++ b/mesalib/src/mesa/main/mtypes.h @@ -330,7 +330,7 @@ typedef enum * (VERT_RESULT_PSIZ, VERT_RESULT_BFC0, VERT_RESULT_BFC1, and * VERT_RESULT_EDGE) are converted to a value of -1. */ -static INLINE int +static inline int _mesa_vert_result_to_frag_attrib(gl_vert_result vert_result) { if (vert_result >= VERT_RESULT_CLIP_DIST0) @@ -350,7 +350,7 @@ _mesa_vert_result_to_frag_attrib(gl_vert_result vert_result) * gl_frag_attrib values which have no corresponding gl_vert_result * (FRAG_ATTRIB_FACE and FRAG_ATTRIB_PNTC) are converted to a value of -1. */ -static INLINE int +static inline int _mesa_frag_attrib_to_vert_result(gl_frag_attrib frag_attrib) { if (frag_attrib <= FRAG_ATTRIB_TEX7) @@ -1834,11 +1834,6 @@ struct gl_program /** Numbered local parameters */ GLfloat LocalParams[MAX_PROGRAM_LOCAL_PARAMS][4]; - /** Vertex/fragment shader varying vars */ - struct gl_program_parameter_list *Varying; - /** Vertex program user-defined attributes */ - struct gl_program_parameter_list *Attributes; - /** Map from sampler unit to texture unit (set by glUniform1i()) */ GLubyte SamplerUnits[MAX_SAMPLERS]; /** Which texture target is being sampled (TEXTURE_1D/2D/3D/etc_INDEX) */ @@ -2148,8 +2143,14 @@ struct gl_shader_program GLuint NumShaders; /**< number of attached shaders */ struct gl_shader **Shaders; /**< List of attached the shaders */ - /** User-defined attribute bindings (glBindAttribLocation) */ - struct gl_program_parameter_list *Attributes; + /** + * User-defined attribute bindings + * + * These are set via \c glBindAttribLocation and are used to direct the + * GLSL linker. These are \b not the values used in the compiled shader, + * and they are \b not the values returned by \c glGetAttribLocation. + */ + struct string_to_uint_map *AttributeBindings; /** Transform feedback varyings */ struct { @@ -2751,7 +2752,6 @@ struct gl_extensions GLboolean ARB_depth_buffer_float; GLboolean ARB_depth_clamp; GLboolean ARB_depth_texture; - GLboolean ARB_draw_buffers; GLboolean ARB_draw_buffers_blend; GLboolean ARB_draw_elements_base_vertex; GLboolean ARB_draw_instanced; diff --git a/mesalib/src/mesa/main/pack.c b/mesalib/src/mesa/main/pack.c index 6d6ae59f4..62e352f3f 100644 --- a/mesalib/src/mesa/main/pack.c +++ b/mesalib/src/mesa/main/pack.c @@ -2910,35 +2910,35 @@ extract_float_rgba(GLuint n, GLfloat rgba[][4], } -static INLINE GLuint +static inline GLuint clamp_byte_to_uint(GLbyte b) { return b < 0 ? 0 : b; } -static INLINE GLuint +static inline GLuint clamp_short_to_uint(GLshort s) { return s < 0 ? 0 : s; } -static INLINE GLuint +static inline GLuint clamp_int_to_uint(GLint i) { return i < 0 ? 0 : i; } -static INLINE GLuint +static inline GLuint clamp_float_to_uint(GLfloat f) { return f < 0.0F ? 0 : IROUND(f); } -static INLINE GLuint +static inline GLuint clamp_half_to_uint(GLhalfARB h) { GLfloat f = _mesa_half_to_float(h); diff --git a/mesalib/src/mesa/main/pixel.c b/mesalib/src/mesa/main/pixel.c index c87f5e0e9..e73c5a49a 100644 --- a/mesalib/src/mesa/main/pixel.c +++ b/mesalib/src/mesa/main/pixel.c @@ -506,7 +506,7 @@ _mesa_GetPixelMapusv( GLenum map, GLushort *values ) * Implements glPixelTransfer[fi] whether called immediately or from a * display list. */ -static void GLAPIENTRY +void GLAPIENTRY _mesa_PixelTransferf( GLenum pname, GLfloat param ) { GET_CURRENT_CONTEXT(ctx); diff --git a/mesalib/src/mesa/main/pixel.h b/mesalib/src/mesa/main/pixel.h index c54b1fc5e..797b0d9d6 100644 --- a/mesalib/src/mesa/main/pixel.h +++ b/mesalib/src/mesa/main/pixel.h @@ -1,72 +1,81 @@ -/* - * Mesa 3-D graphics library - * Version: 7.1 - * - * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -/** - * \file pixel.h - * Pixel operations. - */ - - -#ifndef PIXEL_H -#define PIXEL_H - - -#include "compiler.h" -#include "glheader.h" -#include "mfeatures.h" - -struct _glapi_table; -struct gl_context; - - -#if FEATURE_pixel_transfer - -extern void -_mesa_update_pixel( struct gl_context *ctx, GLuint newstate ); - -extern void -_mesa_init_pixel_dispatch( struct _glapi_table * disp ); - -#else /* FEATURE_pixel_transfer */ - -static INLINE void -_mesa_update_pixel(struct gl_context *ctx, GLuint newstate) -{ -} - -static INLINE void -_mesa_init_pixel_dispatch(struct _glapi_table *disp) -{ -} - -#endif /* FEATURE_pixel_transfer */ - - -extern void -_mesa_init_pixel( struct gl_context * ctx ); - -/*@}*/ - -#endif /* PIXEL_H */ +/* + * Mesa 3-D graphics library + * Version: 7.1 + * + * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +/** + * \file pixel.h + * Pixel operations. + */ + + +#ifndef PIXEL_H +#define PIXEL_H + + +#include "compiler.h" +#include "glheader.h" +#include "mfeatures.h" + +struct _glapi_table; +struct gl_context; + + +#if FEATURE_pixel_transfer + +extern void GLAPIENTRY +_mesa_PixelTransferf(GLenum pname, GLfloat param); + +extern void +_mesa_update_pixel( struct gl_context *ctx, GLuint newstate ); + +extern void +_mesa_init_pixel_dispatch( struct _glapi_table * disp ); + +#else /* FEATURE_pixel_transfer */ + +static inline void GLAPIENTRY +_mesa_PixelTransferf(GLenum pname, GLfloat param) +{ +} + + +static inline void +_mesa_update_pixel(struct gl_context *ctx, GLuint newstate) +{ +} + +static inline void +_mesa_init_pixel_dispatch(struct _glapi_table *disp) +{ +} + +#endif /* FEATURE_pixel_transfer */ + + +extern void +_mesa_init_pixel( struct gl_context * ctx ); + +/*@}*/ + +#endif /* PIXEL_H */ diff --git a/mesalib/src/mesa/main/queryobj.h b/mesalib/src/mesa/main/queryobj.h index 16962e55a..e7a133b59 100644 --- a/mesalib/src/mesa/main/queryobj.h +++ b/mesalib/src/mesa/main/queryobj.h @@ -34,7 +34,7 @@ #if FEATURE_queryobj -static INLINE struct gl_query_object * +static inline struct gl_query_object * _mesa_lookup_query_object(struct gl_context *ctx, GLuint id) { return (struct gl_query_object *) @@ -50,18 +50,18 @@ _mesa_init_queryobj_dispatch(struct _glapi_table *disp); #else /* FEATURE_queryobj */ -static INLINE struct gl_query_object * +static inline struct gl_query_object * _mesa_lookup_query_object(struct gl_context *ctx, GLuint id) { return NULL; } -static INLINE void +static inline void _mesa_init_query_object_functions(struct dd_function_table *driver) { } -static INLINE void +static inline void _mesa_init_queryobj_dispatch(struct _glapi_table *disp) { } diff --git a/mesalib/src/mesa/main/rastpos.h b/mesalib/src/mesa/main/rastpos.h index a530ddd76..cdd94a66c 100644 --- a/mesalib/src/mesa/main/rastpos.h +++ b/mesalib/src/mesa/main/rastpos.h @@ -1,60 +1,60 @@ -/** - * \file rastpos.h - * Raster position operations. - */ - -/* - * Mesa 3-D graphics library - * Version: 4.1 - * - * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -#ifndef RASTPOS_H -#define RASTPOS_H - - -#include "compiler.h" -#include "mfeatures.h" - -struct _glapi_table; -struct gl_context; - -#if FEATURE_rastpos - -extern void -_mesa_init_rastpos_dispatch(struct _glapi_table *disp); - -#else /* FEATURE_rastpos */ - -static INLINE void -_mesa_init_rastpos_dispatch(struct _glapi_table *disp) -{ -} - -#endif /* FEATURE_rastpos */ - -extern void -_mesa_init_rastpos(struct gl_context *ctx); - -/*@}*/ - -#endif /* RASTPOS_H */ +/** + * \file rastpos.h + * Raster position operations. + */ + +/* + * Mesa 3-D graphics library + * Version: 4.1 + * + * Copyright (C) 1999-2002 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +#ifndef RASTPOS_H +#define RASTPOS_H + + +#include "compiler.h" +#include "mfeatures.h" + +struct _glapi_table; +struct gl_context; + +#if FEATURE_rastpos + +extern void +_mesa_init_rastpos_dispatch(struct _glapi_table *disp); + +#else /* FEATURE_rastpos */ + +static inline void +_mesa_init_rastpos_dispatch(struct _glapi_table *disp) +{ +} + +#endif /* FEATURE_rastpos */ + +extern void +_mesa_init_rastpos(struct gl_context *ctx); + +/*@}*/ + +#endif /* RASTPOS_H */ diff --git a/mesalib/src/mesa/main/remap.h b/mesalib/src/mesa/main/remap.h index ae91a35d9..fa3172487 100644 --- a/mesalib/src/mesa/main/remap.h +++ b/mesalib/src/mesa/main/remap.h @@ -1,98 +1,98 @@ -/* - * Mesa 3-D graphics library - * Version: 7.7 - * - * Copyright (C) 2009 Chia-I Wu - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - - -#ifndef REMAP_H -#define REMAP_H - - -#include "main/compiler.h" -#include "main/mfeatures.h" - -struct gl_function_pool_remap { - int pool_index; - int remap_index; -}; - -struct gl_function_remap { - int func_index; - int dispatch_offset; /* for sanity check */ -}; - - -#if FEATURE_remap_table - -extern int -driDispatchRemapTable[]; - -extern const char * -_mesa_get_function_spec(int func_index); - -extern int -_mesa_map_function_spec(const char *spec); - -extern void -_mesa_map_function_array(const struct gl_function_remap *func_array); - -extern void -_mesa_map_static_functions(void); - -extern void -_mesa_init_remap_table(void); - -#else /* FEATURE_remap_table */ - -static INLINE const char * -_mesa_get_function_spec(int func_index) -{ - return NULL; -} - -static INLINE int -_mesa_map_function_spec(const char *spec) -{ - return -1; -} - -static INLINE void -_mesa_map_function_array(const struct gl_function_remap *func_array) -{ -} - -static INLINE void -_mesa_map_static_functions(void) -{ -} - - -static INLINE void -_mesa_init_remap_table(void) -{ -} - -#endif /* FEATURE_remap_table */ - - -#endif /* REMAP_H */ +/* + * Mesa 3-D graphics library + * Version: 7.7 + * + * Copyright (C) 2009 Chia-I Wu + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + + +#ifndef REMAP_H +#define REMAP_H + + +#include "main/compiler.h" +#include "main/mfeatures.h" + +struct gl_function_pool_remap { + int pool_index; + int remap_index; +}; + +struct gl_function_remap { + int func_index; + int dispatch_offset; /* for sanity check */ +}; + + +#if FEATURE_remap_table + +extern int +driDispatchRemapTable[]; + +extern const char * +_mesa_get_function_spec(int func_index); + +extern int +_mesa_map_function_spec(const char *spec); + +extern void +_mesa_map_function_array(const struct gl_function_remap *func_array); + +extern void +_mesa_map_static_functions(void); + +extern void +_mesa_init_remap_table(void); + +#else /* FEATURE_remap_table */ + +static inline const char * +_mesa_get_function_spec(int func_index) +{ + return NULL; +} + +static inline int +_mesa_map_function_spec(const char *spec) +{ + return -1; +} + +static inline void +_mesa_map_function_array(const struct gl_function_remap *func_array) +{ +} + +static inline void +_mesa_map_static_functions(void) +{ +} + + +static inline void +_mesa_init_remap_table(void) +{ +} + +#endif /* FEATURE_remap_table */ + + +#endif /* REMAP_H */ diff --git a/mesalib/src/mesa/main/remap_helper.h b/mesalib/src/mesa/main/remap_helper.h index 127266ea7..5ea2bb62c 100644 --- a/mesalib/src/mesa/main/remap_helper.h +++ b/mesalib/src/mesa/main/remap_helper.h @@ -4472,612 +4472,613 @@ static const char _mesa_function_pool[] = "glDrawBuffers\0" "glDrawBuffersARB\0" "glDrawBuffersATI\0" + "glDrawBuffersNV\0" "\0" - /* _mesa_function_pool[31182]: ClearBufferiv (will be remapped) */ + /* _mesa_function_pool[31198]: ClearBufferiv (will be remapped) */ "iip\0" "glClearBufferiv\0" "\0" - /* _mesa_function_pool[31203]: ProgramLocalParameter4fARB (will be remapped) */ + /* _mesa_function_pool[31219]: ProgramLocalParameter4fARB (will be remapped) */ "iiffff\0" "glProgramLocalParameter4fARB\0" "\0" - /* _mesa_function_pool[31240]: SpriteParameterivSGIX (dynamic) */ + /* _mesa_function_pool[31256]: SpriteParameterivSGIX (dynamic) */ "ip\0" "glSpriteParameterivSGIX\0" "\0" - /* _mesa_function_pool[31268]: ProvokingVertexEXT (will be remapped) */ + /* _mesa_function_pool[31284]: ProvokingVertexEXT (will be remapped) */ "i\0" "glProvokingVertexEXT\0" "glProvokingVertex\0" "\0" - /* _mesa_function_pool[31310]: MultiTexCoord1fARB (offset 378) */ + /* _mesa_function_pool[31326]: MultiTexCoord1fARB (offset 378) */ "if\0" "glMultiTexCoord1f\0" "glMultiTexCoord1fARB\0" "\0" - /* _mesa_function_pool[31353]: LoadName (offset 198) */ + /* _mesa_function_pool[31369]: LoadName (offset 198) */ "i\0" "glLoadName\0" "\0" - /* _mesa_function_pool[31367]: VertexAttribs4ubvNV (will be remapped) */ + /* _mesa_function_pool[31383]: VertexAttribs4ubvNV (will be remapped) */ "iip\0" "glVertexAttribs4ubvNV\0" "\0" - /* _mesa_function_pool[31394]: WeightsvARB (dynamic) */ + /* _mesa_function_pool[31410]: WeightsvARB (dynamic) */ "ip\0" "glWeightsvARB\0" "\0" - /* _mesa_function_pool[31412]: NormalP3ui (will be remapped) */ + /* _mesa_function_pool[31428]: NormalP3ui (will be remapped) */ "ii\0" "glNormalP3ui\0" "\0" - /* _mesa_function_pool[31429]: VertexAttribP2ui (will be remapped) */ + /* _mesa_function_pool[31445]: VertexAttribP2ui (will be remapped) */ "iiii\0" "glVertexAttribP2ui\0" "\0" - /* _mesa_function_pool[31454]: Uniform1fvARB (will be remapped) */ + /* _mesa_function_pool[31470]: Uniform1fvARB (will be remapped) */ "iip\0" "glUniform1fv\0" "glUniform1fvARB\0" "\0" - /* _mesa_function_pool[31488]: CopyTexSubImage1D (offset 325) */ + /* _mesa_function_pool[31504]: CopyTexSubImage1D (offset 325) */ "iiiiii\0" "glCopyTexSubImage1D\0" "glCopyTexSubImage1DEXT\0" "\0" - /* _mesa_function_pool[31539]: CullFace (offset 152) */ + /* _mesa_function_pool[31555]: CullFace (offset 152) */ "i\0" "glCullFace\0" "\0" - /* _mesa_function_pool[31553]: BindTexture (offset 307) */ + /* _mesa_function_pool[31569]: BindTexture (offset 307) */ "ii\0" "glBindTexture\0" "glBindTextureEXT\0" "\0" - /* _mesa_function_pool[31588]: BeginFragmentShaderATI (will be remapped) */ + /* _mesa_function_pool[31604]: BeginFragmentShaderATI (will be remapped) */ "\0" "glBeginFragmentShaderATI\0" "\0" - /* _mesa_function_pool[31615]: MultiTexCoord4fARB (offset 402) */ + /* _mesa_function_pool[31631]: MultiTexCoord4fARB (offset 402) */ "iffff\0" "glMultiTexCoord4f\0" "glMultiTexCoord4fARB\0" "\0" - /* _mesa_function_pool[31661]: VertexAttribs3svNV (will be remapped) */ + /* _mesa_function_pool[31677]: VertexAttribs3svNV (will be remapped) */ "iip\0" "glVertexAttribs3svNV\0" "\0" - /* _mesa_function_pool[31687]: StencilFunc (offset 243) */ + /* _mesa_function_pool[31703]: StencilFunc (offset 243) */ "iii\0" "glStencilFunc\0" "\0" - /* _mesa_function_pool[31706]: CopyPixels (offset 255) */ + /* _mesa_function_pool[31722]: CopyPixels (offset 255) */ "iiiii\0" "glCopyPixels\0" "\0" - /* _mesa_function_pool[31726]: Rectsv (offset 93) */ + /* _mesa_function_pool[31742]: Rectsv (offset 93) */ "pp\0" "glRectsv\0" "\0" - /* _mesa_function_pool[31739]: ReplacementCodeuivSUN (dynamic) */ + /* _mesa_function_pool[31755]: ReplacementCodeuivSUN (dynamic) */ "p\0" "glReplacementCodeuivSUN\0" "\0" - /* _mesa_function_pool[31766]: MultiTexCoordP2uiv (will be remapped) */ + /* _mesa_function_pool[31782]: MultiTexCoordP2uiv (will be remapped) */ "iip\0" "glMultiTexCoordP2uiv\0" "\0" - /* _mesa_function_pool[31792]: EnableVertexAttribArrayARB (will be remapped) */ + /* _mesa_function_pool[31808]: EnableVertexAttribArrayARB (will be remapped) */ "i\0" "glEnableVertexAttribArray\0" "glEnableVertexAttribArrayARB\0" "\0" - /* _mesa_function_pool[31850]: NormalPointervINTEL (dynamic) */ + /* _mesa_function_pool[31866]: NormalPointervINTEL (dynamic) */ "ip\0" "glNormalPointervINTEL\0" "\0" - /* _mesa_function_pool[31876]: CopyConvolutionFilter2D (offset 355) */ + /* _mesa_function_pool[31892]: CopyConvolutionFilter2D (offset 355) */ "iiiiii\0" "glCopyConvolutionFilter2D\0" "glCopyConvolutionFilter2DEXT\0" "\0" - /* _mesa_function_pool[31939]: WindowPos3ivMESA (will be remapped) */ + /* _mesa_function_pool[31955]: WindowPos3ivMESA (will be remapped) */ "p\0" "glWindowPos3iv\0" "glWindowPos3ivARB\0" "glWindowPos3ivMESA\0" "\0" - /* _mesa_function_pool[31994]: CopyBufferSubData (will be remapped) */ + /* _mesa_function_pool[32010]: CopyBufferSubData (will be remapped) */ "iiiii\0" "glCopyBufferSubData\0" "\0" - /* _mesa_function_pool[32021]: NormalPointer (offset 318) */ + /* _mesa_function_pool[32037]: NormalPointer (offset 318) */ "iip\0" "glNormalPointer\0" "\0" - /* _mesa_function_pool[32042]: TexParameterfv (offset 179) */ + /* _mesa_function_pool[32058]: TexParameterfv (offset 179) */ "iip\0" "glTexParameterfv\0" "\0" - /* _mesa_function_pool[32064]: IsBufferARB (will be remapped) */ + /* _mesa_function_pool[32080]: IsBufferARB (will be remapped) */ "i\0" "glIsBuffer\0" "glIsBufferARB\0" "\0" - /* _mesa_function_pool[32092]: WindowPos4iMESA (will be remapped) */ + /* _mesa_function_pool[32108]: WindowPos4iMESA (will be remapped) */ "iiii\0" "glWindowPos4iMESA\0" "\0" - /* _mesa_function_pool[32116]: VertexAttrib4uivARB (will be remapped) */ + /* _mesa_function_pool[32132]: VertexAttrib4uivARB (will be remapped) */ "ip\0" "glVertexAttrib4uiv\0" "glVertexAttrib4uivARB\0" "\0" - /* _mesa_function_pool[32161]: Tangent3bvEXT (dynamic) */ + /* _mesa_function_pool[32177]: Tangent3bvEXT (dynamic) */ "p\0" "glTangent3bvEXT\0" "\0" - /* _mesa_function_pool[32180]: VertexAttribI3uivEXT (will be remapped) */ + /* _mesa_function_pool[32196]: VertexAttribI3uivEXT (will be remapped) */ "ip\0" "glVertexAttribI3uivEXT\0" "glVertexAttribI3uiv\0" "\0" - /* _mesa_function_pool[32227]: UniformMatrix3x4fv (will be remapped) */ + /* _mesa_function_pool[32243]: UniformMatrix3x4fv (will be remapped) */ "iiip\0" "glUniformMatrix3x4fv\0" "\0" - /* _mesa_function_pool[32254]: ClipPlane (offset 150) */ + /* _mesa_function_pool[32270]: ClipPlane (offset 150) */ "ip\0" "glClipPlane\0" "\0" - /* _mesa_function_pool[32270]: Recti (offset 90) */ + /* _mesa_function_pool[32286]: Recti (offset 90) */ "iiii\0" "glRecti\0" "\0" - /* _mesa_function_pool[32284]: TrackMatrixNV (will be remapped) */ + /* _mesa_function_pool[32300]: TrackMatrixNV (will be remapped) */ "iiii\0" "glTrackMatrixNV\0" "\0" - /* _mesa_function_pool[32306]: DrawRangeElementsBaseVertex (will be remapped) */ + /* _mesa_function_pool[32322]: DrawRangeElementsBaseVertex (will be remapped) */ "iiiiipi\0" "glDrawRangeElementsBaseVertex\0" "\0" - /* _mesa_function_pool[32345]: SamplerParameterIuiv (will be remapped) */ + /* _mesa_function_pool[32361]: SamplerParameterIuiv (will be remapped) */ "iip\0" "glSamplerParameterIuiv\0" "\0" - /* _mesa_function_pool[32373]: TexCoordPointervINTEL (dynamic) */ + /* _mesa_function_pool[32389]: TexCoordPointervINTEL (dynamic) */ "iip\0" "glTexCoordPointervINTEL\0" "\0" - /* _mesa_function_pool[32402]: DeleteBuffersARB (will be remapped) */ + /* _mesa_function_pool[32418]: DeleteBuffersARB (will be remapped) */ "ip\0" "glDeleteBuffers\0" "glDeleteBuffersARB\0" "\0" - /* _mesa_function_pool[32441]: PixelTransformParameterfvEXT (dynamic) */ + /* _mesa_function_pool[32457]: PixelTransformParameterfvEXT (dynamic) */ "iip\0" "glPixelTransformParameterfvEXT\0" "\0" - /* _mesa_function_pool[32477]: PrimitiveRestartNV (will be remapped) */ + /* _mesa_function_pool[32493]: PrimitiveRestartNV (will be remapped) */ "\0" "glPrimitiveRestartNV\0" "\0" - /* _mesa_function_pool[32500]: WindowPos4fvMESA (will be remapped) */ + /* _mesa_function_pool[32516]: WindowPos4fvMESA (will be remapped) */ "p\0" "glWindowPos4fvMESA\0" "\0" - /* _mesa_function_pool[32522]: GetPixelMapuiv (offset 272) */ + /* _mesa_function_pool[32538]: GetPixelMapuiv (offset 272) */ "ip\0" "glGetPixelMapuiv\0" "\0" - /* _mesa_function_pool[32543]: Rectf (offset 88) */ + /* _mesa_function_pool[32559]: Rectf (offset 88) */ "ffff\0" "glRectf\0" "\0" - /* _mesa_function_pool[32557]: VertexAttrib1sNV (will be remapped) */ + /* _mesa_function_pool[32573]: VertexAttrib1sNV (will be remapped) */ "ii\0" "glVertexAttrib1sNV\0" "\0" - /* _mesa_function_pool[32580]: Indexfv (offset 47) */ + /* _mesa_function_pool[32596]: Indexfv (offset 47) */ "p\0" "glIndexfv\0" "\0" - /* _mesa_function_pool[32593]: ColorP3uiv (will be remapped) */ + /* _mesa_function_pool[32609]: ColorP3uiv (will be remapped) */ "ip\0" "glColorP3uiv\0" "\0" - /* _mesa_function_pool[32610]: SecondaryColor3svEXT (will be remapped) */ + /* _mesa_function_pool[32626]: SecondaryColor3svEXT (will be remapped) */ "p\0" "glSecondaryColor3sv\0" "glSecondaryColor3svEXT\0" "\0" - /* _mesa_function_pool[32656]: LoadTransposeMatrixfARB (will be remapped) */ + /* _mesa_function_pool[32672]: LoadTransposeMatrixfARB (will be remapped) */ "p\0" "glLoadTransposeMatrixf\0" "glLoadTransposeMatrixfARB\0" "\0" - /* _mesa_function_pool[32708]: GetPointerv (offset 329) */ + /* _mesa_function_pool[32724]: GetPointerv (offset 329) */ "ip\0" "glGetPointerv\0" "glGetPointervEXT\0" "\0" - /* _mesa_function_pool[32743]: Tangent3bEXT (dynamic) */ + /* _mesa_function_pool[32759]: Tangent3bEXT (dynamic) */ "iii\0" "glTangent3bEXT\0" "\0" - /* _mesa_function_pool[32763]: CombinerParameterfNV (will be remapped) */ + /* _mesa_function_pool[32779]: CombinerParameterfNV (will be remapped) */ "if\0" "glCombinerParameterfNV\0" "\0" - /* _mesa_function_pool[32790]: IndexMask (offset 212) */ + /* _mesa_function_pool[32806]: IndexMask (offset 212) */ "i\0" "glIndexMask\0" "\0" - /* _mesa_function_pool[32805]: BindProgramNV (will be remapped) */ + /* _mesa_function_pool[32821]: BindProgramNV (will be remapped) */ "ii\0" "glBindProgramARB\0" "glBindProgramNV\0" "\0" - /* _mesa_function_pool[32842]: VertexAttrib4svARB (will be remapped) */ + /* _mesa_function_pool[32858]: VertexAttrib4svARB (will be remapped) */ "ip\0" "glVertexAttrib4sv\0" "glVertexAttrib4svARB\0" "\0" - /* _mesa_function_pool[32885]: GetFloatv (offset 262) */ + /* _mesa_function_pool[32901]: GetFloatv (offset 262) */ "ip\0" "glGetFloatv\0" "\0" - /* _mesa_function_pool[32901]: CreateDebugObjectMESA (dynamic) */ + /* _mesa_function_pool[32917]: CreateDebugObjectMESA (dynamic) */ "\0" "glCreateDebugObjectMESA\0" "\0" - /* _mesa_function_pool[32927]: GetShaderiv (will be remapped) */ + /* _mesa_function_pool[32943]: GetShaderiv (will be remapped) */ "iip\0" "glGetShaderiv\0" "\0" - /* _mesa_function_pool[32946]: ClientWaitSync (will be remapped) */ + /* _mesa_function_pool[32962]: ClientWaitSync (will be remapped) */ "iii\0" "glClientWaitSync\0" "\0" - /* _mesa_function_pool[32968]: TexCoord4s (offset 124) */ + /* _mesa_function_pool[32984]: TexCoord4s (offset 124) */ "iiii\0" "glTexCoord4s\0" "\0" - /* _mesa_function_pool[32987]: TexCoord3sv (offset 117) */ + /* _mesa_function_pool[33003]: TexCoord3sv (offset 117) */ "p\0" "glTexCoord3sv\0" "\0" - /* _mesa_function_pool[33004]: BindFragmentShaderATI (will be remapped) */ + /* _mesa_function_pool[33020]: BindFragmentShaderATI (will be remapped) */ "i\0" "glBindFragmentShaderATI\0" "\0" - /* _mesa_function_pool[33031]: PopAttrib (offset 218) */ + /* _mesa_function_pool[33047]: PopAttrib (offset 218) */ "\0" "glPopAttrib\0" "\0" - /* _mesa_function_pool[33045]: Fogfv (offset 154) */ + /* _mesa_function_pool[33061]: Fogfv (offset 154) */ "ip\0" "glFogfv\0" "\0" - /* _mesa_function_pool[33057]: UnmapBufferARB (will be remapped) */ + /* _mesa_function_pool[33073]: UnmapBufferARB (will be remapped) */ "i\0" "glUnmapBuffer\0" "glUnmapBufferARB\0" "\0" - /* _mesa_function_pool[33091]: InitNames (offset 197) */ + /* _mesa_function_pool[33107]: InitNames (offset 197) */ "\0" "glInitNames\0" "\0" - /* _mesa_function_pool[33105]: Normal3sv (offset 61) */ + /* _mesa_function_pool[33121]: Normal3sv (offset 61) */ "p\0" "glNormal3sv\0" "\0" - /* _mesa_function_pool[33120]: Minmax (offset 368) */ + /* _mesa_function_pool[33136]: Minmax (offset 368) */ "iii\0" "glMinmax\0" "glMinmaxEXT\0" "\0" - /* _mesa_function_pool[33146]: TexCoord4d (offset 118) */ + /* _mesa_function_pool[33162]: TexCoord4d (offset 118) */ "dddd\0" "glTexCoord4d\0" "\0" - /* _mesa_function_pool[33165]: DeformationMap3dSGIX (dynamic) */ + /* _mesa_function_pool[33181]: DeformationMap3dSGIX (dynamic) */ "iddiiddiiddiip\0" "glDeformationMap3dSGIX\0" "\0" - /* _mesa_function_pool[33204]: TexCoord4f (offset 120) */ + /* _mesa_function_pool[33220]: TexCoord4f (offset 120) */ "ffff\0" "glTexCoord4f\0" "\0" - /* _mesa_function_pool[33223]: FogCoorddvEXT (will be remapped) */ + /* _mesa_function_pool[33239]: FogCoorddvEXT (will be remapped) */ "p\0" "glFogCoorddv\0" "glFogCoorddvEXT\0" "\0" - /* _mesa_function_pool[33255]: FinishTextureSUNX (dynamic) */ + /* _mesa_function_pool[33271]: FinishTextureSUNX (dynamic) */ "\0" "glFinishTextureSUNX\0" "\0" - /* _mesa_function_pool[33277]: GetFragmentLightfvSGIX (dynamic) */ + /* _mesa_function_pool[33293]: GetFragmentLightfvSGIX (dynamic) */ "iip\0" "glGetFragmentLightfvSGIX\0" "\0" - /* _mesa_function_pool[33307]: Binormal3fvEXT (dynamic) */ + /* _mesa_function_pool[33323]: Binormal3fvEXT (dynamic) */ "p\0" "glBinormal3fvEXT\0" "\0" - /* _mesa_function_pool[33327]: GetBooleanv (offset 258) */ + /* _mesa_function_pool[33343]: GetBooleanv (offset 258) */ "ip\0" "glGetBooleanv\0" "\0" - /* _mesa_function_pool[33345]: ColorFragmentOp3ATI (will be remapped) */ + /* _mesa_function_pool[33361]: ColorFragmentOp3ATI (will be remapped) */ "iiiiiiiiiiiii\0" "glColorFragmentOp3ATI\0" "\0" - /* _mesa_function_pool[33382]: Hint (offset 158) */ + /* _mesa_function_pool[33398]: Hint (offset 158) */ "ii\0" "glHint\0" "\0" - /* _mesa_function_pool[33393]: Color4dv (offset 28) */ + /* _mesa_function_pool[33409]: Color4dv (offset 28) */ "p\0" "glColor4dv\0" "\0" - /* _mesa_function_pool[33407]: VertexAttrib2svARB (will be remapped) */ + /* _mesa_function_pool[33423]: VertexAttrib2svARB (will be remapped) */ "ip\0" "glVertexAttrib2sv\0" "glVertexAttrib2svARB\0" "\0" - /* _mesa_function_pool[33450]: AreProgramsResidentNV (will be remapped) */ + /* _mesa_function_pool[33466]: AreProgramsResidentNV (will be remapped) */ "ipp\0" "glAreProgramsResidentNV\0" "\0" - /* _mesa_function_pool[33479]: WindowPos3svMESA (will be remapped) */ + /* _mesa_function_pool[33495]: WindowPos3svMESA (will be remapped) */ "p\0" "glWindowPos3sv\0" "glWindowPos3svARB\0" "glWindowPos3svMESA\0" "\0" - /* _mesa_function_pool[33534]: CopyColorSubTable (offset 347) */ + /* _mesa_function_pool[33550]: CopyColorSubTable (offset 347) */ "iiiii\0" "glCopyColorSubTable\0" "glCopyColorSubTableEXT\0" "\0" - /* _mesa_function_pool[33584]: WeightdvARB (dynamic) */ + /* _mesa_function_pool[33600]: WeightdvARB (dynamic) */ "ip\0" "glWeightdvARB\0" "\0" - /* _mesa_function_pool[33602]: DeleteRenderbuffersEXT (will be remapped) */ + /* _mesa_function_pool[33618]: DeleteRenderbuffersEXT (will be remapped) */ "ip\0" "glDeleteRenderbuffers\0" "glDeleteRenderbuffersEXT\0" "\0" - /* _mesa_function_pool[33653]: VertexAttrib4NubvARB (will be remapped) */ + /* _mesa_function_pool[33669]: VertexAttrib4NubvARB (will be remapped) */ "ip\0" "glVertexAttrib4Nubv\0" "glVertexAttrib4NubvARB\0" "\0" - /* _mesa_function_pool[33700]: VertexAttrib3dvNV (will be remapped) */ + /* _mesa_function_pool[33716]: VertexAttrib3dvNV (will be remapped) */ "ip\0" "glVertexAttrib3dvNV\0" "\0" - /* _mesa_function_pool[33724]: GetObjectParameterfvARB (will be remapped) */ + /* _mesa_function_pool[33740]: GetObjectParameterfvARB (will be remapped) */ "iip\0" "glGetObjectParameterfvARB\0" "\0" - /* _mesa_function_pool[33755]: Vertex4iv (offset 147) */ + /* _mesa_function_pool[33771]: Vertex4iv (offset 147) */ "p\0" "glVertex4iv\0" "\0" - /* _mesa_function_pool[33770]: GetProgramEnvParameterdvARB (will be remapped) */ + /* _mesa_function_pool[33786]: GetProgramEnvParameterdvARB (will be remapped) */ "iip\0" "glGetProgramEnvParameterdvARB\0" "\0" - /* _mesa_function_pool[33805]: TexCoord4dv (offset 119) */ + /* _mesa_function_pool[33821]: TexCoord4dv (offset 119) */ "p\0" "glTexCoord4dv\0" "\0" - /* _mesa_function_pool[33822]: LockArraysEXT (will be remapped) */ + /* _mesa_function_pool[33838]: LockArraysEXT (will be remapped) */ "ii\0" "glLockArraysEXT\0" "\0" - /* _mesa_function_pool[33842]: Begin (offset 7) */ + /* _mesa_function_pool[33858]: Begin (offset 7) */ "i\0" "glBegin\0" "\0" - /* _mesa_function_pool[33853]: LightModeli (offset 165) */ + /* _mesa_function_pool[33869]: LightModeli (offset 165) */ "ii\0" "glLightModeli\0" "\0" - /* _mesa_function_pool[33871]: VertexAttribI4ivEXT (will be remapped) */ + /* _mesa_function_pool[33887]: VertexAttribI4ivEXT (will be remapped) */ "ip\0" "glVertexAttribI4ivEXT\0" "glVertexAttribI4iv\0" "\0" - /* _mesa_function_pool[33916]: Rectfv (offset 89) */ + /* _mesa_function_pool[33932]: Rectfv (offset 89) */ "pp\0" "glRectfv\0" "\0" - /* _mesa_function_pool[33929]: LightModelf (offset 163) */ + /* _mesa_function_pool[33945]: LightModelf (offset 163) */ "if\0" "glLightModelf\0" "\0" - /* _mesa_function_pool[33947]: GetTexParameterfv (offset 282) */ + /* _mesa_function_pool[33963]: GetTexParameterfv (offset 282) */ "iip\0" "glGetTexParameterfv\0" "\0" - /* _mesa_function_pool[33972]: GetLightfv (offset 264) */ + /* _mesa_function_pool[33988]: GetLightfv (offset 264) */ "iip\0" "glGetLightfv\0" "\0" - /* _mesa_function_pool[33990]: PixelTransformParameterivEXT (dynamic) */ + /* _mesa_function_pool[34006]: PixelTransformParameterivEXT (dynamic) */ "iip\0" "glPixelTransformParameterivEXT\0" "\0" - /* _mesa_function_pool[34026]: BinormalPointerEXT (dynamic) */ + /* _mesa_function_pool[34042]: BinormalPointerEXT (dynamic) */ "iip\0" "glBinormalPointerEXT\0" "\0" - /* _mesa_function_pool[34052]: VertexAttrib1dNV (will be remapped) */ + /* _mesa_function_pool[34068]: VertexAttrib1dNV (will be remapped) */ "id\0" "glVertexAttrib1dNV\0" "\0" - /* _mesa_function_pool[34075]: GetCombinerInputParameterivNV (will be remapped) */ + /* _mesa_function_pool[34091]: GetCombinerInputParameterivNV (will be remapped) */ "iiiip\0" "glGetCombinerInputParameterivNV\0" "\0" - /* _mesa_function_pool[34114]: Disable (offset 214) */ + /* _mesa_function_pool[34130]: Disable (offset 214) */ "i\0" "glDisable\0" "\0" - /* _mesa_function_pool[34127]: MultiTexCoord2fvARB (offset 387) */ + /* _mesa_function_pool[34143]: MultiTexCoord2fvARB (offset 387) */ "ip\0" "glMultiTexCoord2fv\0" "glMultiTexCoord2fvARB\0" "\0" - /* _mesa_function_pool[34172]: GetRenderbufferParameterivEXT (will be remapped) */ + /* _mesa_function_pool[34188]: GetRenderbufferParameterivEXT (will be remapped) */ "iip\0" "glGetRenderbufferParameteriv\0" "glGetRenderbufferParameterivEXT\0" "\0" - /* _mesa_function_pool[34238]: CombinerParameterivNV (will be remapped) */ + /* _mesa_function_pool[34254]: CombinerParameterivNV (will be remapped) */ "ip\0" "glCombinerParameterivNV\0" "\0" - /* _mesa_function_pool[34266]: GenFragmentShadersATI (will be remapped) */ + /* _mesa_function_pool[34282]: GenFragmentShadersATI (will be remapped) */ "i\0" "glGenFragmentShadersATI\0" "\0" - /* _mesa_function_pool[34293]: DrawArrays (offset 310) */ + /* _mesa_function_pool[34309]: DrawArrays (offset 310) */ "iii\0" "glDrawArrays\0" "glDrawArraysEXT\0" "\0" - /* _mesa_function_pool[34327]: WeightuivARB (dynamic) */ + /* _mesa_function_pool[34343]: WeightuivARB (dynamic) */ "ip\0" "glWeightuivARB\0" "\0" - /* _mesa_function_pool[34346]: GetVertexAttribIivEXT (will be remapped) */ + /* _mesa_function_pool[34362]: GetVertexAttribIivEXT (will be remapped) */ "iip\0" "glGetVertexAttribIivEXT\0" "glGetVertexAttribIiv\0" "\0" - /* _mesa_function_pool[34396]: VertexAttrib2sARB (will be remapped) */ + /* _mesa_function_pool[34412]: VertexAttrib2sARB (will be remapped) */ "iii\0" "glVertexAttrib2s\0" "glVertexAttrib2sARB\0" "\0" - /* _mesa_function_pool[34438]: GetnTexImageARB (will be remapped) */ + /* _mesa_function_pool[34454]: GetnTexImageARB (will be remapped) */ "iiiiip\0" "glGetnTexImageARB\0" "\0" - /* _mesa_function_pool[34464]: ColorMask (offset 210) */ + /* _mesa_function_pool[34480]: ColorMask (offset 210) */ "iiii\0" "glColorMask\0" "\0" - /* _mesa_function_pool[34482]: GenAsyncMarkersSGIX (dynamic) */ + /* _mesa_function_pool[34498]: GenAsyncMarkersSGIX (dynamic) */ "i\0" "glGenAsyncMarkersSGIX\0" "\0" - /* _mesa_function_pool[34507]: Tangent3svEXT (dynamic) */ + /* _mesa_function_pool[34523]: Tangent3svEXT (dynamic) */ "p\0" "glTangent3svEXT\0" "\0" - /* _mesa_function_pool[34526]: GetListParameterivSGIX (dynamic) */ + /* _mesa_function_pool[34542]: GetListParameterivSGIX (dynamic) */ "iip\0" "glGetListParameterivSGIX\0" "\0" - /* _mesa_function_pool[34556]: BindBufferARB (will be remapped) */ + /* _mesa_function_pool[34572]: BindBufferARB (will be remapped) */ "ii\0" "glBindBuffer\0" "glBindBufferARB\0" "\0" - /* _mesa_function_pool[34589]: GetInfoLogARB (will be remapped) */ + /* _mesa_function_pool[34605]: GetInfoLogARB (will be remapped) */ "iipp\0" "glGetInfoLogARB\0" "\0" - /* _mesa_function_pool[34611]: RasterPos4iv (offset 83) */ + /* _mesa_function_pool[34627]: RasterPos4iv (offset 83) */ "p\0" "glRasterPos4iv\0" "\0" - /* _mesa_function_pool[34629]: Enable (offset 215) */ + /* _mesa_function_pool[34645]: Enable (offset 215) */ "i\0" "glEnable\0" "\0" - /* _mesa_function_pool[34641]: LineStipple (offset 167) */ + /* _mesa_function_pool[34657]: LineStipple (offset 167) */ "ii\0" "glLineStipple\0" "\0" - /* _mesa_function_pool[34659]: VertexAttribs4svNV (will be remapped) */ + /* _mesa_function_pool[34675]: VertexAttribs4svNV (will be remapped) */ "iip\0" "glVertexAttribs4svNV\0" "\0" - /* _mesa_function_pool[34685]: EdgeFlagPointerListIBM (dynamic) */ + /* _mesa_function_pool[34701]: EdgeFlagPointerListIBM (dynamic) */ "ipi\0" "glEdgeFlagPointerListIBM\0" "\0" - /* _mesa_function_pool[34715]: UniformMatrix3x2fv (will be remapped) */ + /* _mesa_function_pool[34731]: UniformMatrix3x2fv (will be remapped) */ "iiip\0" "glUniformMatrix3x2fv\0" "\0" - /* _mesa_function_pool[34742]: GetMinmaxParameterfv (offset 365) */ + /* _mesa_function_pool[34758]: GetMinmaxParameterfv (offset 365) */ "iip\0" "glGetMinmaxParameterfv\0" "glGetMinmaxParameterfvEXT\0" "\0" - /* _mesa_function_pool[34796]: VertexAttrib1fvARB (will be remapped) */ + /* _mesa_function_pool[34812]: VertexAttrib1fvARB (will be remapped) */ "ip\0" "glVertexAttrib1fv\0" "glVertexAttrib1fvARB\0" "\0" - /* _mesa_function_pool[34839]: GenBuffersARB (will be remapped) */ + /* _mesa_function_pool[34855]: GenBuffersARB (will be remapped) */ "ip\0" "glGenBuffers\0" "glGenBuffersARB\0" "\0" - /* _mesa_function_pool[34872]: VertexAttribs1svNV (will be remapped) */ + /* _mesa_function_pool[34888]: VertexAttribs1svNV (will be remapped) */ "iip\0" "glVertexAttribs1svNV\0" "\0" - /* _mesa_function_pool[34898]: Vertex3fv (offset 137) */ + /* _mesa_function_pool[34914]: Vertex3fv (offset 137) */ "p\0" "glVertex3fv\0" "\0" - /* _mesa_function_pool[34913]: GetTexBumpParameterivATI (will be remapped) */ + /* _mesa_function_pool[34929]: GetTexBumpParameterivATI (will be remapped) */ "ip\0" "glGetTexBumpParameterivATI\0" "\0" - /* _mesa_function_pool[34944]: Binormal3bEXT (dynamic) */ + /* _mesa_function_pool[34960]: Binormal3bEXT (dynamic) */ "iii\0" "glBinormal3bEXT\0" "\0" - /* _mesa_function_pool[34965]: FragmentMaterialivSGIX (dynamic) */ + /* _mesa_function_pool[34981]: FragmentMaterialivSGIX (dynamic) */ "iip\0" "glFragmentMaterialivSGIX\0" "\0" - /* _mesa_function_pool[34995]: IsRenderbufferEXT (will be remapped) */ + /* _mesa_function_pool[35011]: IsRenderbufferEXT (will be remapped) */ "i\0" "glIsRenderbuffer\0" "glIsRenderbufferEXT\0" "\0" - /* _mesa_function_pool[35035]: GenProgramsNV (will be remapped) */ + /* _mesa_function_pool[35051]: GenProgramsNV (will be remapped) */ "ip\0" "glGenProgramsARB\0" "glGenProgramsNV\0" "\0" - /* _mesa_function_pool[35072]: VertexAttrib4dvNV (will be remapped) */ + /* _mesa_function_pool[35088]: VertexAttrib4dvNV (will be remapped) */ "ip\0" "glVertexAttrib4dvNV\0" "\0" - /* _mesa_function_pool[35096]: EndFragmentShaderATI (will be remapped) */ + /* _mesa_function_pool[35112]: EndFragmentShaderATI (will be remapped) */ "\0" "glEndFragmentShaderATI\0" "\0" - /* _mesa_function_pool[35121]: Binormal3iEXT (dynamic) */ + /* _mesa_function_pool[35137]: Binormal3iEXT (dynamic) */ "iii\0" "glBinormal3iEXT\0" "\0" - /* _mesa_function_pool[35142]: WindowPos2fMESA (will be remapped) */ + /* _mesa_function_pool[35158]: WindowPos2fMESA (will be remapped) */ "ff\0" "glWindowPos2f\0" "glWindowPos2fARB\0" @@ -5097,7 +5098,7 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 5288, GetProgramInfoLog_remap_index }, { 425, GetProgramiv_remap_index }, { 7178, GetShaderInfoLog_remap_index }, - { 32927, GetShaderiv_remap_index }, + { 32943, GetShaderiv_remap_index }, { 14151, IsProgram_remap_index }, { 13052, IsShader_remap_index }, { 10732, StencilFuncSeparate_remap_index }, @@ -5105,14 +5106,14 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 8243, StencilOpSeparate_remap_index }, { 23832, UniformMatrix2x3fv_remap_index }, { 3040, UniformMatrix2x4fv_remap_index }, - { 34715, UniformMatrix3x2fv_remap_index }, - { 32227, UniformMatrix3x4fv_remap_index }, + { 34731, UniformMatrix3x2fv_remap_index }, + { 32243, UniformMatrix3x4fv_remap_index }, { 17280, UniformMatrix4x2fv_remap_index }, { 3531, UniformMatrix4x3fv_remap_index }, { 5511, ClampColor_remap_index }, { 19232, ClearBufferfi_remap_index }, { 18648, ClearBufferfv_remap_index }, - { 31182, ClearBufferiv_remap_index }, + { 31198, ClearBufferiv_remap_index }, { 14356, ClearBufferuiv_remap_index }, { 21354, GetStringi_remap_index }, { 2981, TexBuffer_remap_index }, @@ -5121,7 +5122,7 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 10832, GetInteger64i_v_remap_index }, { 24912, VertexAttribDivisor_remap_index }, { 10620, LoadTransposeMatrixdARB_remap_index }, - { 32656, LoadTransposeMatrixfARB_remap_index }, + { 32672, LoadTransposeMatrixfARB_remap_index }, { 6196, MultTransposeMatrixdARB_remap_index }, { 25278, MultTransposeMatrixfARB_remap_index }, { 236, SampleCoverageARB_remap_index }, @@ -5133,8 +5134,8 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 21776, CompressedTexSubImage3DARB_remap_index }, { 30288, GetCompressedTexImageARB_remap_index }, { 4123, DisableVertexAttribArrayARB_remap_index }, - { 31792, EnableVertexAttribArrayARB_remap_index }, - { 33770, GetProgramEnvParameterdvARB_remap_index }, + { 31808, EnableVertexAttribArrayARB_remap_index }, + { 33786, GetProgramEnvParameterdvARB_remap_index }, { 25158, GetProgramEnvParameterfvARB_remap_index }, { 29205, GetProgramLocalParameterdvARB_remap_index }, { 8719, GetProgramLocalParameterfvARB_remap_index }, @@ -5149,21 +5150,21 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 9594, ProgramEnvParameter4fvARB_remap_index }, { 4292, ProgramLocalParameter4dARB_remap_index }, { 13861, ProgramLocalParameter4dvARB_remap_index }, - { 31203, ProgramLocalParameter4fARB_remap_index }, + { 31219, ProgramLocalParameter4fARB_remap_index }, { 27568, ProgramLocalParameter4fvARB_remap_index }, { 30042, ProgramStringARB_remap_index }, { 21085, VertexAttrib1dARB_remap_index }, { 16689, VertexAttrib1dvARB_remap_index }, { 4488, VertexAttrib1fARB_remap_index }, - { 34796, VertexAttrib1fvARB_remap_index }, + { 34812, VertexAttrib1fvARB_remap_index }, { 7769, VertexAttrib1sARB_remap_index }, { 2361, VertexAttrib1svARB_remap_index }, { 16102, VertexAttrib2dARB_remap_index }, { 18669, VertexAttrib2dvARB_remap_index }, { 1693, VertexAttrib2fARB_remap_index }, { 18782, VertexAttrib2fvARB_remap_index }, - { 34396, VertexAttrib2sARB_remap_index }, - { 33407, VertexAttrib2svARB_remap_index }, + { 34412, VertexAttrib2sARB_remap_index }, + { 33423, VertexAttrib2svARB_remap_index }, { 12036, VertexAttrib3dARB_remap_index }, { 9261, VertexAttrib3dvARB_remap_index }, { 1780, VertexAttrib3fARB_remap_index }, @@ -5174,7 +5175,7 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 19055, VertexAttrib4NivARB_remap_index }, { 24104, VertexAttrib4NsvARB_remap_index }, { 25110, VertexAttrib4NubARB_remap_index }, - { 33653, VertexAttrib4NubvARB_remap_index }, + { 33669, VertexAttrib4NubvARB_remap_index }, { 20442, VertexAttrib4NuivARB_remap_index }, { 3361, VertexAttrib4NusvARB_remap_index }, { 11625, VertexAttrib4bvARB_remap_index }, @@ -5184,22 +5185,22 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 12594, VertexAttrib4fvARB_remap_index }, { 10975, VertexAttrib4ivARB_remap_index }, { 18462, VertexAttrib4sARB_remap_index }, - { 32842, VertexAttrib4svARB_remap_index }, + { 32858, VertexAttrib4svARB_remap_index }, { 17751, VertexAttrib4ubvARB_remap_index }, - { 32116, VertexAttrib4uivARB_remap_index }, + { 32132, VertexAttrib4uivARB_remap_index }, { 21524, VertexAttrib4usvARB_remap_index }, { 23627, VertexAttribPointerARB_remap_index }, - { 34556, BindBufferARB_remap_index }, + { 34572, BindBufferARB_remap_index }, { 7476, BufferDataARB_remap_index }, { 1531, BufferSubDataARB_remap_index }, - { 32402, DeleteBuffersARB_remap_index }, - { 34839, GenBuffersARB_remap_index }, + { 32418, DeleteBuffersARB_remap_index }, + { 34855, GenBuffersARB_remap_index }, { 18825, GetBufferParameterivARB_remap_index }, { 17898, GetBufferPointervARB_remap_index }, { 1484, GetBufferSubDataARB_remap_index }, - { 32064, IsBufferARB_remap_index }, + { 32080, IsBufferARB_remap_index }, { 28052, MapBufferARB_remap_index }, - { 33057, UnmapBufferARB_remap_index }, + { 33073, UnmapBufferARB_remap_index }, { 332, BeginQueryARB_remap_index }, { 21180, DeleteQueriesARB_remap_index }, { 12913, EndQueryARB_remap_index }, @@ -5217,8 +5218,8 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 12658, GetActiveUniformARB_remap_index }, { 10086, GetAttachedObjectsARB_remap_index }, { 10393, GetHandleARB_remap_index }, - { 34589, GetInfoLogARB_remap_index }, - { 33724, GetObjectParameterfvARB_remap_index }, + { 34605, GetInfoLogARB_remap_index }, + { 33740, GetObjectParameterfvARB_remap_index }, { 29079, GetObjectParameterivARB_remap_index }, { 30525, GetShaderSourceARB_remap_index }, { 29749, GetUniformLocationARB_remap_index }, @@ -5227,7 +5228,7 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 21569, LinkProgramARB_remap_index }, { 21627, ShaderSourceARB_remap_index }, { 8143, Uniform1fARB_remap_index }, - { 31454, Uniform1fvARB_remap_index }, + { 31470, Uniform1fvARB_remap_index }, { 23575, Uniform1iARB_remap_index }, { 22424, Uniform1ivARB_remap_index }, { 2310, Uniform2fARB_remap_index }, @@ -5264,8 +5265,8 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 29423, TexBufferARB_remap_index }, { 17418, BindVertexArray_remap_index }, { 15594, GenVertexArrays_remap_index }, - { 31994, CopyBufferSubData_remap_index }, - { 32946, ClientWaitSync_remap_index }, + { 32010, CopyBufferSubData_remap_index }, + { 32962, ClientWaitSync_remap_index }, { 2802, DeleteSync_remap_index }, { 7810, FenceSync_remap_index }, { 16161, GetInteger64v_remap_index }, @@ -5274,7 +5275,7 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 10017, WaitSync_remap_index }, { 4091, DrawElementsBaseVertex_remap_index }, { 19748, DrawElementsInstancedBaseVertex_remap_index }, - { 32306, DrawRangeElementsBaseVertex_remap_index }, + { 32322, DrawRangeElementsBaseVertex_remap_index }, { 28083, MultiDrawElementsBaseVertex_remap_index }, { 17684, BlendEquationSeparateiARB_remap_index }, { 18918, BlendEquationiARB_remap_index }, @@ -5289,24 +5290,24 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 27191, GetSamplerParameteriv_remap_index }, { 15139, IsSampler_remap_index }, { 17371, SamplerParameterIiv_remap_index }, - { 32345, SamplerParameterIuiv_remap_index }, + { 32361, SamplerParameterIuiv_remap_index }, { 23884, SamplerParameterf_remap_index }, { 17545, SamplerParameterfv_remap_index }, { 23859, SamplerParameteri_remap_index }, { 19294, SamplerParameteriv_remap_index }, { 20101, ColorP3ui_remap_index }, - { 32593, ColorP3uiv_remap_index }, + { 32609, ColorP3uiv_remap_index }, { 22530, ColorP4ui_remap_index }, { 4234, ColorP4uiv_remap_index }, { 26733, MultiTexCoordP1ui_remap_index }, { 13349, MultiTexCoordP1uiv_remap_index }, { 1668, MultiTexCoordP2ui_remap_index }, - { 31766, MultiTexCoordP2uiv_remap_index }, + { 31782, MultiTexCoordP2uiv_remap_index }, { 14751, MultiTexCoordP3ui_remap_index }, { 11051, MultiTexCoordP3uiv_remap_index }, { 23428, MultiTexCoordP4ui_remap_index }, { 3953, MultiTexCoordP4uiv_remap_index }, - { 31412, NormalP3ui_remap_index }, + { 31428, NormalP3ui_remap_index }, { 20277, NormalP3uiv_remap_index }, { 26436, SecondaryColorP3ui_remap_index }, { 20295, SecondaryColorP3uiv_remap_index }, @@ -5320,7 +5321,7 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 5780, TexCoordP4uiv_remap_index }, { 10502, VertexAttribP1ui_remap_index }, { 14938, VertexAttribP1uiv_remap_index }, - { 31429, VertexAttribP2ui_remap_index }, + { 31445, VertexAttribP2ui_remap_index }, { 5572, VertexAttribP2uiv_remap_index }, { 3426, VertexAttribP3ui_remap_index }, { 21036, VertexAttribP3uiv_remap_index }, @@ -5358,7 +5359,7 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 3153, GetnPixelMapusvARB_remap_index }, { 1364, GetnPolygonStippleARB_remap_index }, { 22614, GetnSeparableFilterARB_remap_index }, - { 34438, GetnTexImageARB_remap_index }, + { 34454, GetnTexImageARB_remap_index }, { 19723, GetnUniformdvARB_remap_index }, { 4905, GetnUniformfvARB_remap_index }, { 10527, GetnUniformivARB_remap_index }, @@ -5381,7 +5382,7 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 7599, VertexPointerEXT_remap_index }, { 3867, PointParameterfEXT_remap_index }, { 8450, PointParameterfvEXT_remap_index }, - { 33822, LockArraysEXT_remap_index }, + { 33838, LockArraysEXT_remap_index }, { 15854, UnlockArraysEXT_remap_index }, { 1272, SecondaryColor3bEXT_remap_index }, { 8643, SecondaryColor3bvEXT_remap_index }, @@ -5392,7 +5393,7 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 490, SecondaryColor3iEXT_remap_index }, { 17136, SecondaryColor3ivEXT_remap_index }, { 10760, SecondaryColor3sEXT_remap_index }, - { 32610, SecondaryColor3svEXT_remap_index }, + { 32626, SecondaryColor3svEXT_remap_index }, { 28915, SecondaryColor3ubEXT_remap_index }, { 22720, SecondaryColor3ubvEXT_remap_index }, { 13716, SecondaryColor3uiEXT_remap_index }, @@ -5404,7 +5405,7 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 22359, MultiDrawElementsEXT_remap_index }, { 22570, FogCoordPointerEXT_remap_index }, { 4956, FogCoorddEXT_remap_index }, - { 33223, FogCoorddvEXT_remap_index }, + { 33239, FogCoorddvEXT_remap_index }, { 5073, FogCoordfEXT_remap_index }, { 28838, FogCoordfvEXT_remap_index }, { 12637, PixelTexGenSGIX_remap_index }, @@ -5413,13 +5414,13 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 5898, VertexArrayRangeNV_remap_index }, { 29863, CombinerInputNV_remap_index }, { 2232, CombinerOutputNV_remap_index }, - { 32763, CombinerParameterfNV_remap_index }, + { 32779, CombinerParameterfNV_remap_index }, { 5752, CombinerParameterfvNV_remap_index }, { 23909, CombinerParameteriNV_remap_index }, - { 34238, CombinerParameterivNV_remap_index }, + { 34254, CombinerParameterivNV_remap_index }, { 7887, FinalCombinerInputNV_remap_index }, { 1629, GetCombinerInputParameterfvNV_remap_index }, - { 34075, GetCombinerInputParameterivNV_remap_index }, + { 34091, GetCombinerInputParameterivNV_remap_index }, { 14712, GetCombinerOutputParameterfvNV_remap_index }, { 14540, GetCombinerOutputParameterivNV_remap_index }, { 7273, GetFinalCombinerInputParameterfvNV_remap_index }, @@ -5427,7 +5428,7 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 13327, ResizeBuffersMESA_remap_index }, { 11863, WindowPos2dMESA_remap_index }, { 1065, WindowPos2dvMESA_remap_index }, - { 35142, WindowPos2fMESA_remap_index }, + { 35158, WindowPos2fMESA_remap_index }, { 8588, WindowPos2fvMESA_remap_index }, { 19366, WindowPos2iMESA_remap_index }, { 21844, WindowPos2ivMESA_remap_index }, @@ -5438,14 +5439,14 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 536, WindowPos3fMESA_remap_index }, { 15915, WindowPos3fvMESA_remap_index }, { 25639, WindowPos3iMESA_remap_index }, - { 31939, WindowPos3ivMESA_remap_index }, + { 31955, WindowPos3ivMESA_remap_index }, { 20164, WindowPos3sMESA_remap_index }, - { 33479, WindowPos3svMESA_remap_index }, + { 33495, WindowPos3svMESA_remap_index }, { 11814, WindowPos4dMESA_remap_index }, { 18142, WindowPos4dvMESA_remap_index }, { 14842, WindowPos4fMESA_remap_index }, - { 32500, WindowPos4fvMESA_remap_index }, - { 32092, WindowPos4iMESA_remap_index }, + { 32516, WindowPos4fvMESA_remap_index }, + { 32108, WindowPos4iMESA_remap_index }, { 13166, WindowPos4ivMESA_remap_index }, { 20392, WindowPos4sMESA_remap_index }, { 3451, WindowPos4svMESA_remap_index }, @@ -5458,11 +5459,11 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 8856, IsFenceNV_remap_index }, { 14467, SetFenceNV_remap_index }, { 4544, TestFenceNV_remap_index }, - { 33450, AreProgramsResidentNV_remap_index }, - { 32805, BindProgramNV_remap_index }, + { 33466, AreProgramsResidentNV_remap_index }, + { 32821, BindProgramNV_remap_index }, { 27603, DeleteProgramsNV_remap_index }, { 22938, ExecuteProgramNV_remap_index }, - { 35035, GenProgramsNV_remap_index }, + { 35051, GenProgramsNV_remap_index }, { 24938, GetProgramParameterdvNV_remap_index }, { 11240, GetProgramParameterfvNV_remap_index }, { 27986, GetProgramStringNV_remap_index }, @@ -5477,12 +5478,12 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 29539, ProgramParameters4dvNV_remap_index }, { 25946, ProgramParameters4fvNV_remap_index }, { 22148, RequestResidentProgramsNV_remap_index }, - { 32284, TrackMatrixNV_remap_index }, - { 34052, VertexAttrib1dNV_remap_index }, + { 32300, TrackMatrixNV_remap_index }, + { 34068, VertexAttrib1dNV_remap_index }, { 14378, VertexAttrib1dvNV_remap_index }, { 30144, VertexAttrib1fNV_remap_index }, { 2589, VertexAttrib1fvNV_remap_index }, - { 32557, VertexAttrib1sNV_remap_index }, + { 32573, VertexAttrib1sNV_remap_index }, { 15988, VertexAttrib1svNV_remap_index }, { 5264, VertexAttrib2dNV_remap_index }, { 14271, VertexAttrib2dvNV_remap_index }, @@ -5491,13 +5492,13 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 6567, VertexAttrib2sNV_remap_index }, { 20218, VertexAttrib2svNV_remap_index }, { 12011, VertexAttrib3dNV_remap_index }, - { 33700, VertexAttrib3dvNV_remap_index }, + { 33716, VertexAttrib3dvNV_remap_index }, { 11026, VertexAttrib3fNV_remap_index }, { 26338, VertexAttrib3fvNV_remap_index }, { 23682, VertexAttrib3sNV_remap_index }, { 25220, VertexAttrib3svNV_remap_index }, { 30612, VertexAttrib4dNV_remap_index }, - { 35072, VertexAttrib4dvNV_remap_index }, + { 35088, VertexAttrib4dvNV_remap_index }, { 5692, VertexAttrib4fNV_remap_index }, { 10062, VertexAttrib4fvNV_remap_index }, { 28462, VertexAttrib4sNV_remap_index }, @@ -5507,32 +5508,32 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 23118, VertexAttribPointerNV_remap_index }, { 2404, VertexAttribs1dvNV_remap_index }, { 27868, VertexAttribs1fvNV_remap_index }, - { 34872, VertexAttribs1svNV_remap_index }, + { 34888, VertexAttribs1svNV_remap_index }, { 11077, VertexAttribs2dvNV_remap_index }, { 26995, VertexAttribs2fvNV_remap_index }, { 18738, VertexAttribs2svNV_remap_index }, { 5800, VertexAttribs3dvNV_remap_index }, { 2263, VertexAttribs3fvNV_remap_index }, - { 31661, VertexAttribs3svNV_remap_index }, + { 31677, VertexAttribs3svNV_remap_index }, { 28552, VertexAttribs4dvNV_remap_index }, { 5872, VertexAttribs4fvNV_remap_index }, - { 34659, VertexAttribs4svNV_remap_index }, - { 31367, VertexAttribs4ubvNV_remap_index }, + { 34675, VertexAttribs4svNV_remap_index }, + { 31383, VertexAttribs4ubvNV_remap_index }, { 28622, GetTexBumpParameterfvATI_remap_index }, - { 34913, GetTexBumpParameterivATI_remap_index }, + { 34929, GetTexBumpParameterivATI_remap_index }, { 19846, TexBumpParameterfvATI_remap_index }, { 22019, TexBumpParameterivATI_remap_index }, { 16552, AlphaFragmentOp1ATI_remap_index }, { 27286, AlphaFragmentOp2ATI_remap_index }, { 26254, AlphaFragmentOp3ATI_remap_index }, - { 31588, BeginFragmentShaderATI_remap_index }, - { 33004, BindFragmentShaderATI_remap_index }, + { 31604, BeginFragmentShaderATI_remap_index }, + { 33020, BindFragmentShaderATI_remap_index }, { 25349, ColorFragmentOp1ATI_remap_index }, { 4711, ColorFragmentOp2ATI_remap_index }, - { 33345, ColorFragmentOp3ATI_remap_index }, + { 33361, ColorFragmentOp3ATI_remap_index }, { 6038, DeleteFragmentShaderATI_remap_index }, - { 35096, EndFragmentShaderATI_remap_index }, - { 34266, GenFragmentShadersATI_remap_index }, + { 35112, EndFragmentShaderATI_remap_index }, + { 34282, GenFragmentShadersATI_remap_index }, { 27149, PassTexCoordATI_remap_index }, { 7579, SampleMapATI_remap_index }, { 28733, SetFragmentShaderConstantATI_remap_index }, @@ -5550,14 +5551,14 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 9528, ProgramNamedParameter4fNV_remap_index }, { 12502, ProgramNamedParameter4fvNV_remap_index }, { 18053, PrimitiveRestartIndexNV_remap_index }, - { 32477, PrimitiveRestartNV_remap_index }, + { 32493, PrimitiveRestartNV_remap_index }, { 25925, DepthBoundsEXT_remap_index }, { 1164, BlendEquationSeparateEXT_remap_index }, { 15689, BindFramebufferEXT_remap_index }, { 27379, BindRenderbufferEXT_remap_index }, { 10309, CheckFramebufferStatusEXT_remap_index }, { 24254, DeleteFramebuffersEXT_remap_index }, - { 33602, DeleteRenderbuffersEXT_remap_index }, + { 33618, DeleteRenderbuffersEXT_remap_index }, { 14295, FramebufferRenderbufferEXT_remap_index }, { 14484, FramebufferTexture1DEXT_remap_index }, { 12296, FramebufferTexture2DEXT_remap_index }, @@ -5566,9 +5567,9 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 18603, GenRenderbuffersEXT_remap_index }, { 7315, GenerateMipmapEXT_remap_index }, { 23211, GetFramebufferAttachmentParameterivEXT_remap_index }, - { 34172, GetRenderbufferParameterivEXT_remap_index }, + { 34188, GetRenderbufferParameterivEXT_remap_index }, { 21899, IsFramebufferEXT_remap_index }, - { 34995, IsRenderbufferEXT_remap_index }, + { 35011, IsRenderbufferEXT_remap_index }, { 8803, RenderbufferStorageEXT_remap_index }, { 715, BlitFramebufferEXT_remap_index }, { 15255, BufferParameteriAPPLE_remap_index }, @@ -5576,7 +5577,7 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 1912, BindFragDataLocationEXT_remap_index }, { 26038, GetFragDataLocationEXT_remap_index }, { 11355, GetUniformuivEXT_remap_index }, - { 34346, GetVertexAttribIivEXT_remap_index }, + { 34362, GetVertexAttribIivEXT_remap_index }, { 4561, GetVertexAttribIuivEXT_remap_index }, { 12774, Uniform1uiEXT_remap_index }, { 29624, Uniform1uivEXT_remap_index }, @@ -5597,10 +5598,10 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 28254, VertexAttribI3iEXT_remap_index }, { 26688, VertexAttribI3ivEXT_remap_index }, { 3608, VertexAttribI3uiEXT_remap_index }, - { 32180, VertexAttribI3uivEXT_remap_index }, + { 32196, VertexAttribI3uivEXT_remap_index }, { 23487, VertexAttribI4bvEXT_remap_index }, { 15548, VertexAttribI4iEXT_remap_index }, - { 33871, VertexAttribI4ivEXT_remap_index }, + { 33887, VertexAttribI4ivEXT_remap_index }, { 14198, VertexAttribI4svEXT_remap_index }, { 17571, VertexAttribI4ubvEXT_remap_index }, { 17199, VertexAttribI4uiEXT_remap_index }, @@ -5629,7 +5630,7 @@ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { { 15170, EndTransformFeedbackEXT_remap_index }, { 11553, GetTransformFeedbackVaryingEXT_remap_index }, { 22204, TransformFeedbackVaryingsEXT_remap_index }, - { 31268, ProvokingVertexEXT_remap_index }, + { 31284, ProvokingVertexEXT_remap_index }, { 11501, GetTexParameterPointervAPPLE_remap_index }, { 5528, TextureRangeAPPLE_remap_index }, { 12368, GetObjectParameterivAPPLE_remap_index }, @@ -5657,7 +5658,7 @@ static const struct gl_function_remap MESA_alt_functions[] = { { 11973, _gloffset_BlendEquation }, /* from GL_EXT_color_subtable */ { 18164, _gloffset_ColorSubTable }, - { 33534, _gloffset_CopyColorSubTable }, + { 33550, _gloffset_CopyColorSubTable }, /* from GL_EXT_convolution */ { 277, _gloffset_ConvolutionFilter1D }, { 2628, _gloffset_CopyConvolutionFilter1D }, @@ -5671,13 +5672,13 @@ static const struct gl_function_remap MESA_alt_functions[] = { { 26774, _gloffset_ConvolutionParameterf }, { 28488, _gloffset_GetConvolutionParameterfv }, { 29345, _gloffset_GetConvolutionFilter }, - { 31876, _gloffset_CopyConvolutionFilter2D }, + { 31892, _gloffset_CopyConvolutionFilter2D }, /* from GL_EXT_copy_texture */ { 16048, _gloffset_CopyTexSubImage3D }, { 17851, _gloffset_CopyTexImage2D }, { 26164, _gloffset_CopyTexImage1D }, { 29026, _gloffset_CopyTexSubImage2D }, - { 31488, _gloffset_CopyTexSubImage1D }, + { 31504, _gloffset_CopyTexSubImage1D }, /* from GL_EXT_draw_range_elements */ { 10168, _gloffset_DrawRangeElements }, /* from GL_EXT_histogram */ @@ -5689,8 +5690,8 @@ static const struct gl_function_remap MESA_alt_functions[] = { { 28378, _gloffset_ResetMinmax }, { 29242, _gloffset_GetHistogramParameteriv }, { 30411, _gloffset_GetHistogram }, - { 33120, _gloffset_Minmax }, - { 34742, _gloffset_GetMinmaxParameterfv }, + { 33136, _gloffset_Minmax }, + { 34758, _gloffset_GetMinmaxParameterfv }, /* from GL_EXT_paletted_texture */ { 9014, _gloffset_ColorTable }, { 16228, _gloffset_GetColorTable }, @@ -5708,11 +5709,11 @@ static const struct gl_function_remap MESA_alt_functions[] = { { 14402, _gloffset_GenTextures }, { 16759, _gloffset_DeleteTextures }, { 20988, _gloffset_IsTexture }, - { 31553, _gloffset_BindTexture }, + { 31569, _gloffset_BindTexture }, /* from GL_EXT_vertex_array */ { 25865, _gloffset_ArrayElement }, - { 32708, _gloffset_GetPointerv }, - { 34293, _gloffset_DrawArrays }, + { 32724, _gloffset_GetPointerv }, + { 34309, _gloffset_DrawArrays }, /* from GL_SGI_color_table */ { 8292, _gloffset_ColorTableParameteriv }, { 9014, _gloffset_ColorTable }, @@ -5753,9 +5754,9 @@ static const struct gl_function_remap MESA_alt_functions[] = { { 28963, _gloffset_MultiTexCoord2ivARB }, { 29302, _gloffset_MultiTexCoord1iARB }, { 30686, _gloffset_MultiTexCoord4svARB }, - { 31310, _gloffset_MultiTexCoord1fARB }, - { 31615, _gloffset_MultiTexCoord4fARB }, - { 34127, _gloffset_MultiTexCoord2fvARB }, + { 31326, _gloffset_MultiTexCoord1fARB }, + { 31631, _gloffset_MultiTexCoord4fARB }, + { 34143, _gloffset_MultiTexCoord2fvARB }, { -1, -1 } }; diff --git a/mesalib/src/mesa/main/renderbuffer.h b/mesalib/src/mesa/main/renderbuffer.h index f9329d55f..de471cd6b 100644 --- a/mesalib/src/mesa/main/renderbuffer.h +++ b/mesalib/src/mesa/main/renderbuffer.h @@ -108,7 +108,7 @@ extern void _mesa_reference_renderbuffer_(struct gl_renderbuffer **ptr, struct gl_renderbuffer *rb); -static INLINE void +static inline void _mesa_reference_renderbuffer(struct gl_renderbuffer **ptr, struct gl_renderbuffer *rb) { diff --git a/mesalib/src/mesa/main/samplerobj.c b/mesalib/src/mesa/main/samplerobj.c index 3ee27fb2c..7cf0654ad 100644 --- a/mesalib/src/mesa/main/samplerobj.c +++ b/mesalib/src/mesa/main/samplerobj.c @@ -313,7 +313,7 @@ validate_texture_wrap_mode(struct gl_context *ctx, GLenum wrap) /** * This is called just prior to changing any sampler object state. */ -static INLINE void +static inline void flush(struct gl_context *ctx) { FLUSH_VERTICES(ctx, _NEW_TEXTURE); diff --git a/mesalib/src/mesa/main/samplerobj.h b/mesalib/src/mesa/main/samplerobj.h index a839010b7..fe7d5a7d3 100644 --- a/mesalib/src/mesa/main/samplerobj.h +++ b/mesalib/src/mesa/main/samplerobj.h @@ -28,7 +28,7 @@ struct dd_function_table; -static INLINE struct gl_sampler_object * +static inline struct gl_sampler_object * _mesa_get_samplerobj(struct gl_context *ctx, GLuint unit) { if (ctx->Texture.Unit[unit].Sampler) diff --git a/mesalib/src/mesa/main/shader_query.cpp b/mesalib/src/mesa/main/shader_query.cpp new file mode 100644 index 000000000..bd873a491 --- /dev/null +++ b/mesalib/src/mesa/main/shader_query.cpp @@ -0,0 +1,239 @@ +/* + * Copyright © 2011 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +/** + * \file shader_query.cpp + * C-to-C++ bridge functions to query GLSL shader data + * + * \author Ian Romanick + */ + +#include "main/core.h" +#include "glsl_symbol_table.h" +#include "ir.h" +#include "shaderobj.h" +#include "program/hash_table.h" +#include "../glsl/program.h" + +extern "C" { +#include "shaderapi.h" +} + +void GLAPIENTRY +_mesa_BindAttribLocationARB(GLhandleARB program, GLuint index, + const GLcharARB *name) +{ + GET_CURRENT_CONTEXT(ctx); + + struct gl_shader_program *const shProg = + _mesa_lookup_shader_program_err(ctx, program, "glBindAttribLocation"); + if (!shProg) + return; + + if (!name) + return; + + if (strncmp(name, "gl_", 3) == 0) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glBindAttribLocation(illegal name)"); + return; + } + + if (index >= ctx->Const.VertexProgram.MaxAttribs) { + _mesa_error(ctx, GL_INVALID_VALUE, "glBindAttribLocation(index)"); + return; + } + + /* Replace the current value if it's already in the list. Add + * VERT_ATTRIB_GENERIC0 because that's how the linker differentiates + * between built-in attributes and user-defined attributes. + */ + shProg->AttributeBindings->put(index + VERT_ATTRIB_GENERIC0, name); + + /* + * Note that this attribute binding won't go into effect until + * glLinkProgram is called again. + */ +} + +void GLAPIENTRY +_mesa_GetActiveAttribARB(GLhandleARB program, GLuint desired_index, + GLsizei maxLength, GLsizei * length, GLint * size, + GLenum * type, GLcharARB * name) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *shProg; + + shProg = _mesa_lookup_shader_program_err(ctx, program, "glGetActiveAttrib"); + if (!shProg) + return; + + if (!shProg->LinkStatus) { + _mesa_error(ctx, GL_INVALID_VALUE, + "glGetActiveAttrib(program not linked)"); + return; + } + + if (shProg->_LinkedShaders[MESA_SHADER_VERTEX] == NULL) { + _mesa_error(ctx, GL_INVALID_VALUE, "glGetActiveAttrib(no vertex shader)"); + return; + } + + exec_list *const ir = shProg->_LinkedShaders[MESA_SHADER_VERTEX]->ir; + unsigned current_index = 0; + + foreach_list(node, ir) { + const ir_variable *const var = ((ir_instruction *) node)->as_variable(); + + if (var == NULL + || var->mode != ir_var_in + || var->location == -1 + || var->location < VERT_ATTRIB_GENERIC0) + continue; + + if (current_index == desired_index) { + _mesa_copy_string(name, maxLength, length, var->name); + + if (size) + *size = (var->type->is_array()) ? var->type->length : 1; + + if (type) + *type = var->type->gl_type; + + return; + } + + current_index++; + } + + /* If the loop did not return early, the caller must have asked for + * an index that did not exit. Set an error. + */ + _mesa_error(ctx, GL_INVALID_VALUE, "glGetActiveAttrib(index)"); +} + +GLint GLAPIENTRY +_mesa_GetAttribLocationARB(GLhandleARB program, const GLcharARB * name) +{ + GET_CURRENT_CONTEXT(ctx); + struct gl_shader_program *const shProg = + _mesa_lookup_shader_program_err(ctx, program, "glGetAttribLocation"); + + if (!shProg) { + return -1; + } + + if (!shProg->LinkStatus) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glGetAttribLocation(program not linked)"); + return -1; + } + + if (!name) + return -1; + + /* Not having a vertex shader is not an error. + */ + if (shProg->_LinkedShaders[MESA_SHADER_VERTEX] == NULL) + return -1; + + exec_list *ir = shProg->_LinkedShaders[MESA_SHADER_VERTEX]->ir; + foreach_list(node, ir) { + const ir_variable *const var = ((ir_instruction *) node)->as_variable(); + + /* The extra check against VERT_ATTRIB_GENERIC0 is because + * glGetAttribLocation cannot be used on "conventional" attributes. + * + * From page 95 of the OpenGL 3.0 spec: + * + * "If name is not an active attribute, if name is a conventional + * attribute, or if an error occurs, -1 will be returned." + */ + if (var == NULL + || var->mode != ir_var_in + || var->location == -1 + || var->location < VERT_ATTRIB_GENERIC0) + continue; + + if (strcmp(var->name, name) == 0) + return var->location - VERT_ATTRIB_GENERIC0; + } + + return -1; +} + + +unsigned +_mesa_count_active_attribs(struct gl_shader_program *shProg) +{ + if (!shProg->LinkStatus + || shProg->_LinkedShaders[MESA_SHADER_VERTEX] == NULL) { + return 0; + } + + exec_list *const ir = shProg->_LinkedShaders[MESA_SHADER_VERTEX]->ir; + unsigned i = 0; + + foreach_list(node, ir) { + const ir_variable *const var = ((ir_instruction *) node)->as_variable(); + + if (var == NULL + || var->mode != ir_var_in + || var->location == -1 + || var->location < VERT_ATTRIB_GENERIC0) + continue; + + i++; + } + + return i; +} + + +size_t +_mesa_longest_attribute_name_length(struct gl_shader_program *shProg) +{ + if (!shProg->LinkStatus + || shProg->_LinkedShaders[MESA_SHADER_VERTEX] == NULL) { + return 0; + } + + exec_list *const ir = shProg->_LinkedShaders[MESA_SHADER_VERTEX]->ir; + size_t longest = 0; + + foreach_list(node, ir) { + const ir_variable *const var = ((ir_instruction *) node)->as_variable(); + + if (var == NULL + || var->mode != ir_var_in + || var->location == -1 + || var->location < VERT_ATTRIB_GENERIC0) + continue; + + const size_t len = strlen(var->name); + if (len >= longest) + longest = len + 1; + } + + return longest; +} diff --git a/mesalib/src/mesa/main/shaderapi.c b/mesalib/src/mesa/main/shaderapi.c index 3ce14d154..9e0ed9c69 100644 --- a/mesalib/src/mesa/main/shaderapi.c +++ b/mesalib/src/mesa/main/shaderapi.c @@ -324,82 +324,6 @@ attach_shader(struct gl_context *ctx, GLuint program, GLuint shader) } -static GLint -get_attrib_location(struct gl_context *ctx, GLuint program, const GLchar *name) -{ - struct gl_shader_program *shProg - = _mesa_lookup_shader_program_err(ctx, program, "glGetAttribLocation"); - - if (!shProg) { - return -1; - } - - if (!shProg->LinkStatus) { - _mesa_error(ctx, GL_INVALID_OPERATION, - "glGetAttribLocation(program not linked)"); - return -1; - } - - if (!name) - return -1; - - if (shProg->VertexProgram) { - const struct gl_program_parameter_list *attribs = - shProg->VertexProgram->Base.Attributes; - if (attribs) { - GLint i = _mesa_lookup_parameter_index(attribs, -1, name); - if (i >= 0) { - return attribs->Parameters[i].StateIndexes[0]; - } - } - } - return -1; -} - - -static void -bind_attrib_location(struct gl_context *ctx, GLuint program, GLuint index, - const GLchar *name) -{ - struct gl_shader_program *shProg; - const GLint size = -1; /* unknown size */ - GLint i; - GLenum datatype = GL_FLOAT_VEC4; - - shProg = _mesa_lookup_shader_program_err(ctx, program, - "glBindAttribLocation"); - if (!shProg) { - return; - } - - if (!name) - return; - - if (strncmp(name, "gl_", 3) == 0) { - _mesa_error(ctx, GL_INVALID_OPERATION, - "glBindAttribLocation(illegal name)"); - return; - } - - if (index >= ctx->Const.VertexProgram.MaxAttribs) { - _mesa_error(ctx, GL_INVALID_VALUE, "glBindAttribLocation(index)"); - return; - } - - /* this will replace the current value if it's already in the list */ - i = _mesa_add_attribute(shProg->Attributes, name, size, datatype, index); - if (i < 0) { - _mesa_error(ctx, GL_OUT_OF_MEMORY, "glBindAttribLocation"); - return; - } - - /* - * Note that this attribute binding won't go into effect until - * glLinkProgram is called again. - */ -} - - static void bind_frag_data_location(struct gl_context *ctx, GLuint program, GLuint colorNumber, const GLchar *name) @@ -557,38 +481,6 @@ detach_shader(struct gl_context *ctx, GLuint program, GLuint shader) } -static void -get_active_attrib(struct gl_context *ctx, GLuint program, GLuint index, - GLsizei maxLength, GLsizei *length, GLint *size, - GLenum *type, GLchar *nameOut) -{ - const struct gl_program_parameter_list *attribs = NULL; - struct gl_shader_program *shProg; - - shProg = _mesa_lookup_shader_program_err(ctx, program, "glGetActiveAttrib"); - if (!shProg) - return; - - if (shProg->VertexProgram) - attribs = shProg->VertexProgram->Base.Attributes; - - if (!attribs || index >= attribs->NumParameters) { - _mesa_error(ctx, GL_INVALID_VALUE, "glGetActiveAttrib(index)"); - return; - } - - _mesa_copy_string(nameOut, maxLength, length, - attribs->Parameters[index].Name); - - if (size) - *size = attribs->Parameters[index].Size - / _mesa_sizeof_glsl_type(attribs->Parameters[index].DataType); - - if (type) - *type = attribs->Parameters[index].DataType; -} - - /** * Return list of shaders attached to shader program. */ @@ -646,7 +538,6 @@ get_handle(struct gl_context *ctx, GLenum pname) static void get_programiv(struct gl_context *ctx, GLuint program, GLenum pname, GLint *params) { - const struct gl_program_parameter_list *attribs; struct gl_shader_program *shProg = _mesa_lookup_shader_program(ctx, program); @@ -655,11 +546,6 @@ get_programiv(struct gl_context *ctx, GLuint program, GLenum pname, GLint *param return; } - if (shProg->VertexProgram) - attribs = shProg->VertexProgram->Base.Attributes; - else - attribs = NULL; - switch (pname) { case GL_DELETE_STATUS: *params = shProg->DeletePending; @@ -677,10 +563,10 @@ get_programiv(struct gl_context *ctx, GLuint program, GLenum pname, GLint *param *params = shProg->NumShaders; break; case GL_ACTIVE_ATTRIBUTES: - *params = attribs ? attribs->NumParameters : 0; + *params = _mesa_count_active_attribs(shProg); break; case GL_ACTIVE_ATTRIBUTE_MAX_LENGTH: - *params = _mesa_longest_parameter_name(attribs, PROGRAM_INPUT) + 1; + *params = _mesa_longest_attribute_name_length(shProg); break; case GL_ACTIVE_UNIFORMS: *params = shProg->Uniforms ? shProg->Uniforms->NumUniforms : 0; @@ -1161,15 +1047,6 @@ _mesa_AttachShader(GLuint program, GLuint shader) } -void GLAPIENTRY -_mesa_BindAttribLocationARB(GLhandleARB program, GLuint index, - const GLcharARB *name) -{ - GET_CURRENT_CONTEXT(ctx); - bind_attrib_location(ctx, program, index, name); -} - - /* GL_EXT_gpu_shader4, GL3 */ void GLAPIENTRY _mesa_BindFragDataLocation(GLuint program, GLuint colorNumber, @@ -1288,16 +1165,6 @@ _mesa_DetachShader(GLuint program, GLuint shader) } -void GLAPIENTRY -_mesa_GetActiveAttribARB(GLhandleARB program, GLuint index, - GLsizei maxLength, GLsizei * length, GLint * size, - GLenum * type, GLcharARB * name) -{ - GET_CURRENT_CONTEXT(ctx); - get_active_attrib(ctx, program, index, maxLength, length, size, type, name); -} - - void GLAPIENTRY _mesa_GetAttachedObjectsARB(GLhandleARB container, GLsizei maxCount, GLsizei * count, GLhandleARB * obj) @@ -1316,14 +1183,6 @@ _mesa_GetAttachedShaders(GLuint program, GLsizei maxCount, } -GLint GLAPIENTRY -_mesa_GetAttribLocationARB(GLhandleARB program, const GLcharARB * name) -{ - GET_CURRENT_CONTEXT(ctx); - return get_attrib_location(ctx, program, name); -} - - /* GL_EXT_gpu_shader4, GL3 */ GLint GLAPIENTRY _mesa_GetFragDataLocation(GLuint program, const GLchar *name) diff --git a/mesalib/src/mesa/main/shaderapi.h b/mesalib/src/mesa/main/shaderapi.h index 15c7c7ae6..bec448dee 100644 --- a/mesalib/src/mesa/main/shaderapi.h +++ b/mesalib/src/mesa/main/shaderapi.h @@ -1,193 +1,197 @@ -/* - * Mesa 3-D graphics library - * - * Copyright (C) 2004-2007 Brian Paul All Rights Reserved. - * Copyright (C) 2010 VMware, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -#ifndef SHADERAPI_H -#define SHADERAPI_H - - -#include "glheader.h" - -struct _glapi_table; -struct gl_context; -struct gl_shader_program; - -extern GLint -_mesa_sizeof_glsl_type(GLenum type); - -extern void -_mesa_copy_string(GLchar *dst, GLsizei maxLength, - GLsizei *length, const GLchar *src); - -extern void -_mesa_use_program(struct gl_context *ctx, struct gl_shader_program *shProg); - -extern void -_mesa_active_program(struct gl_context *ctx, struct gl_shader_program *shProg, - const char *caller); - -extern void -_mesa_init_shader_dispatch(struct _glapi_table *exec); - - - -extern void GLAPIENTRY -_mesa_AttachObjectARB(GLhandleARB, GLhandleARB); - -extern void GLAPIENTRY -_mesa_CompileShaderARB(GLhandleARB); - -extern GLhandleARB GLAPIENTRY -_mesa_CreateProgramObjectARB(void); - -extern GLhandleARB GLAPIENTRY -_mesa_CreateShaderObjectARB(GLenum type); - -extern void GLAPIENTRY -_mesa_DeleteObjectARB(GLhandleARB obj); - -extern void GLAPIENTRY -_mesa_DetachObjectARB(GLhandleARB, GLhandleARB); - -extern void GLAPIENTRY -_mesa_GetAttachedObjectsARB(GLhandleARB, GLsizei, GLsizei *, GLhandleARB *); - -extern GLint GLAPIENTRY -_mesa_GetFragDataLocation(GLuint program, const GLchar *name); - -extern GLhandleARB GLAPIENTRY -_mesa_GetHandleARB(GLenum pname); - -extern void GLAPIENTRY -_mesa_GetInfoLogARB(GLhandleARB, GLsizei, GLsizei *, GLcharARB *); - -extern void GLAPIENTRY -_mesa_GetObjectParameterfvARB(GLhandleARB, GLenum, GLfloat *); - -extern void GLAPIENTRY -_mesa_GetObjectParameterivARB(GLhandleARB, GLenum, GLint *); - -extern void GLAPIENTRY -_mesa_GetShaderSourceARB(GLhandleARB, GLsizei, GLsizei *, GLcharARB *); - -extern GLboolean GLAPIENTRY -_mesa_IsProgram(GLuint name); - -extern GLboolean GLAPIENTRY -_mesa_IsShader(GLuint name); - -extern void GLAPIENTRY -_mesa_LinkProgramARB(GLhandleARB programObj); - -extern void GLAPIENTRY -_mesa_ShaderSourceARB(GLhandleARB, GLsizei, const GLcharARB* *, const GLint *); - -extern void GLAPIENTRY -_mesa_UseProgramObjectARB(GLhandleARB); - -extern void GLAPIENTRY -_mesa_ValidateProgramARB(GLhandleARB); - - -extern void GLAPIENTRY -_mesa_BindAttribLocationARB(GLhandleARB, GLuint, const GLcharARB *); - -extern void GLAPIENTRY -_mesa_BindFragDataLocation(GLuint program, GLuint colorNumber, - const GLchar *name); - -extern void GLAPIENTRY -_mesa_GetActiveAttribARB(GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, - GLenum *, GLcharARB *); - -extern GLint GLAPIENTRY -_mesa_GetAttribLocationARB(GLhandleARB, const GLcharARB *); - - - -extern void GLAPIENTRY -_mesa_AttachShader(GLuint program, GLuint shader); - -extern GLuint GLAPIENTRY -_mesa_CreateShader(GLenum); - -extern GLuint GLAPIENTRY -_mesa_CreateProgram(void); - -extern void GLAPIENTRY -_mesa_DeleteProgram(GLuint program); - -extern void GLAPIENTRY -_mesa_DeleteShader(GLuint shader); - -extern void GLAPIENTRY -_mesa_DetachShader(GLuint program, GLuint shader); - -extern void GLAPIENTRY -_mesa_GetAttachedShaders(GLuint program, GLsizei maxCount, - GLsizei *count, GLuint *obj); - -extern void GLAPIENTRY -_mesa_GetProgramiv(GLuint program, GLenum pname, GLint *params); - -extern void GLAPIENTRY -_mesa_GetProgramInfoLog(GLuint program, GLsizei bufSize, - GLsizei *length, GLchar *infoLog); - -extern void GLAPIENTRY -_mesa_GetShaderiv(GLuint shader, GLenum pname, GLint *params); - -extern void GLAPIENTRY -_mesa_GetShaderInfoLog(GLuint shader, GLsizei bufSize, - GLsizei *length, GLchar *infoLog); - - -extern void GLAPIENTRY -_mesa_GetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, - GLint *range, GLint *precision); - -extern void GLAPIENTRY -_mesa_ReleaseShaderCompiler(void); - -extern void GLAPIENTRY -_mesa_ShaderBinary(GLint n, const GLuint *shaders, GLenum binaryformat, - const void* binary, GLint length); - -extern void GLAPIENTRY -_mesa_ProgramParameteriARB(GLuint program, GLenum pname, - GLint value); -void -_mesa_use_shader_program(struct gl_context *ctx, GLenum type, - struct gl_shader_program *shProg); - -extern void GLAPIENTRY -_mesa_UseShaderProgramEXT(GLenum type, GLuint program); - -extern void GLAPIENTRY -_mesa_ActiveProgramEXT(GLuint program); - -extern GLuint GLAPIENTRY -_mesa_CreateShaderProgramEXT(GLenum type, const GLchar *string); - -#endif /* SHADERAPI_H */ +/* + * Mesa 3-D graphics library + * + * Copyright (C) 2004-2007 Brian Paul All Rights Reserved. + * Copyright (C) 2010 VMware, Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +#ifndef SHADERAPI_H +#define SHADERAPI_H + + +#include "glheader.h" + +struct _glapi_table; +struct gl_context; +struct gl_shader_program; + +extern GLint +_mesa_sizeof_glsl_type(GLenum type); + +extern void +_mesa_copy_string(GLchar *dst, GLsizei maxLength, + GLsizei *length, const GLchar *src); + +extern void +_mesa_use_program(struct gl_context *ctx, struct gl_shader_program *shProg); + +extern void +_mesa_active_program(struct gl_context *ctx, struct gl_shader_program *shProg, + const char *caller); + +extern void +_mesa_init_shader_dispatch(struct _glapi_table *exec); + +extern unsigned +_mesa_count_active_attribs(struct gl_shader_program *shProg); + +extern size_t +_mesa_longest_attribute_name_length(struct gl_shader_program *shProg); + +extern void GLAPIENTRY +_mesa_AttachObjectARB(GLhandleARB, GLhandleARB); + +extern void GLAPIENTRY +_mesa_CompileShaderARB(GLhandleARB); + +extern GLhandleARB GLAPIENTRY +_mesa_CreateProgramObjectARB(void); + +extern GLhandleARB GLAPIENTRY +_mesa_CreateShaderObjectARB(GLenum type); + +extern void GLAPIENTRY +_mesa_DeleteObjectARB(GLhandleARB obj); + +extern void GLAPIENTRY +_mesa_DetachObjectARB(GLhandleARB, GLhandleARB); + +extern void GLAPIENTRY +_mesa_GetAttachedObjectsARB(GLhandleARB, GLsizei, GLsizei *, GLhandleARB *); + +extern GLint GLAPIENTRY +_mesa_GetFragDataLocation(GLuint program, const GLchar *name); + +extern GLhandleARB GLAPIENTRY +_mesa_GetHandleARB(GLenum pname); + +extern void GLAPIENTRY +_mesa_GetInfoLogARB(GLhandleARB, GLsizei, GLsizei *, GLcharARB *); + +extern void GLAPIENTRY +_mesa_GetObjectParameterfvARB(GLhandleARB, GLenum, GLfloat *); + +extern void GLAPIENTRY +_mesa_GetObjectParameterivARB(GLhandleARB, GLenum, GLint *); + +extern void GLAPIENTRY +_mesa_GetShaderSourceARB(GLhandleARB, GLsizei, GLsizei *, GLcharARB *); + +extern GLboolean GLAPIENTRY +_mesa_IsProgram(GLuint name); + +extern GLboolean GLAPIENTRY +_mesa_IsShader(GLuint name); + +extern void GLAPIENTRY +_mesa_LinkProgramARB(GLhandleARB programObj); + +extern void GLAPIENTRY +_mesa_ShaderSourceARB(GLhandleARB, GLsizei, const GLcharARB* *, const GLint *); + +extern void GLAPIENTRY +_mesa_UseProgramObjectARB(GLhandleARB); + +extern void GLAPIENTRY +_mesa_ValidateProgramARB(GLhandleARB); + + +extern void GLAPIENTRY +_mesa_BindAttribLocationARB(GLhandleARB, GLuint, const GLcharARB *); + +extern void GLAPIENTRY +_mesa_BindFragDataLocation(GLuint program, GLuint colorNumber, + const GLchar *name); + +extern void GLAPIENTRY +_mesa_GetActiveAttribARB(GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, + GLenum *, GLcharARB *); + +extern GLint GLAPIENTRY +_mesa_GetAttribLocationARB(GLhandleARB, const GLcharARB *); + + + +extern void GLAPIENTRY +_mesa_AttachShader(GLuint program, GLuint shader); + +extern GLuint GLAPIENTRY +_mesa_CreateShader(GLenum); + +extern GLuint GLAPIENTRY +_mesa_CreateProgram(void); + +extern void GLAPIENTRY +_mesa_DeleteProgram(GLuint program); + +extern void GLAPIENTRY +_mesa_DeleteShader(GLuint shader); + +extern void GLAPIENTRY +_mesa_DetachShader(GLuint program, GLuint shader); + +extern void GLAPIENTRY +_mesa_GetAttachedShaders(GLuint program, GLsizei maxCount, + GLsizei *count, GLuint *obj); + +extern void GLAPIENTRY +_mesa_GetProgramiv(GLuint program, GLenum pname, GLint *params); + +extern void GLAPIENTRY +_mesa_GetProgramInfoLog(GLuint program, GLsizei bufSize, + GLsizei *length, GLchar *infoLog); + +extern void GLAPIENTRY +_mesa_GetShaderiv(GLuint shader, GLenum pname, GLint *params); + +extern void GLAPIENTRY +_mesa_GetShaderInfoLog(GLuint shader, GLsizei bufSize, + GLsizei *length, GLchar *infoLog); + + +extern void GLAPIENTRY +_mesa_GetShaderPrecisionFormat(GLenum shadertype, GLenum precisiontype, + GLint *range, GLint *precision); + +extern void GLAPIENTRY +_mesa_ReleaseShaderCompiler(void); + +extern void GLAPIENTRY +_mesa_ShaderBinary(GLint n, const GLuint *shaders, GLenum binaryformat, + const void* binary, GLint length); + +extern void GLAPIENTRY +_mesa_ProgramParameteriARB(GLuint program, GLenum pname, + GLint value); +void +_mesa_use_shader_program(struct gl_context *ctx, GLenum type, + struct gl_shader_program *shProg); + +extern void GLAPIENTRY +_mesa_UseShaderProgramEXT(GLenum type, GLuint program); + +extern void GLAPIENTRY +_mesa_ActiveProgramEXT(GLuint program); + +extern GLuint GLAPIENTRY +_mesa_CreateShaderProgramEXT(GLenum type, const GLchar *string); + +#endif /* SHADERAPI_H */ diff --git a/mesalib/src/mesa/main/shaderobj.c b/mesalib/src/mesa/main/shaderobj.c index f128648f4..1eba75697 100644 --- a/mesalib/src/mesa/main/shaderobj.c +++ b/mesalib/src/mesa/main/shaderobj.c @@ -38,6 +38,7 @@ #include "program/program.h" #include "program/prog_parameter.h" #include "program/prog_uniform.h" +#include "program/hash_table.h" #include "ralloc.h" /**********************************************************************/ @@ -238,7 +239,9 @@ _mesa_init_shader_program(struct gl_context *ctx, struct gl_shader_program *prog { prog->Type = GL_SHADER_PROGRAM_MESA; prog->RefCount = 1; - prog->Attributes = _mesa_new_parameter_list(); + + prog->AttributeBindings = string_to_uint_map_ctor(); + #if FEATURE_ARB_geometry_shader4 prog->Geom.VerticesOut = 0; prog->Geom.InputType = GL_TRIANGLES; @@ -307,9 +310,9 @@ _mesa_free_shader_program_data(struct gl_context *ctx, _mesa_clear_shader_program_data(ctx, shProg); - if (shProg->Attributes) { - _mesa_free_parameter_list(shProg->Attributes); - shProg->Attributes = NULL; + if (shProg->AttributeBindings) { + string_to_uint_map_dtor(shProg->AttributeBindings); + shProg->AttributeBindings = NULL; } /* detach shaders */ diff --git a/mesalib/src/mesa/main/shaderobj.h b/mesalib/src/mesa/main/shaderobj.h index 881856a02..941841d43 100644 --- a/mesalib/src/mesa/main/shaderobj.h +++ b/mesalib/src/mesa/main/shaderobj.h @@ -1,137 +1,137 @@ -/* - * Mesa 3-D graphics library - * Version: 6.5.3 - * - * Copyright (C) 2004-2007 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -#ifndef SHADEROBJ_H -#define SHADEROBJ_H - - -#include "main/compiler.h" -#include "main/glheader.h" -#include "main/mtypes.h" -#include "program/ir_to_mesa.h" - -#ifdef __cplusplus -extern "C" { -#endif -/** - * Internal functions - */ - -extern void -_mesa_init_shader_state(struct gl_context * ctx); - -extern void -_mesa_free_shader_state(struct gl_context *ctx); - - -extern void -_mesa_reference_shader(struct gl_context *ctx, struct gl_shader **ptr, - struct gl_shader *sh); - -extern struct gl_shader * -_mesa_lookup_shader(struct gl_context *ctx, GLuint name); - -extern struct gl_shader * -_mesa_lookup_shader_err(struct gl_context *ctx, GLuint name, const char *caller); - - - -extern void -_mesa_reference_shader_program(struct gl_context *ctx, - struct gl_shader_program **ptr, - struct gl_shader_program *shProg); -extern void -_mesa_init_shader(struct gl_context *ctx, struct gl_shader *shader); - -extern struct gl_shader * -_mesa_new_shader(struct gl_context *ctx, GLuint name, GLenum type); - -extern void -_mesa_init_shader_program(struct gl_context *ctx, struct gl_shader_program *prog); - -extern struct gl_shader_program * -_mesa_lookup_shader_program(struct gl_context *ctx, GLuint name); - -extern struct gl_shader_program * -_mesa_lookup_shader_program_err(struct gl_context *ctx, GLuint name, - const char *caller); - -extern void -_mesa_clear_shader_program_data(struct gl_context *ctx, - struct gl_shader_program *shProg); - -extern void -_mesa_free_shader_program_data(struct gl_context *ctx, - struct gl_shader_program *shProg); - - - -extern void -_mesa_init_shader_object_functions(struct dd_function_table *driver); - -extern void -_mesa_init_shader_state(struct gl_context *ctx); - -extern void -_mesa_free_shader_state(struct gl_context *ctx); - - -static INLINE gl_shader_type -_mesa_shader_type_to_index(GLenum v) -{ - switch (v) { - case GL_VERTEX_SHADER: - return MESA_SHADER_VERTEX; - case GL_FRAGMENT_SHADER: - return MESA_SHADER_FRAGMENT; - case GL_GEOMETRY_SHADER: - return MESA_SHADER_GEOMETRY; - default: - ASSERT(0 && "bad value in _mesa_shader_type_to_index()"); - return MESA_SHADER_TYPES; - } -} - - -static INLINE GLenum -_mesa_shader_index_to_type(GLuint i) -{ - static const GLenum enums[MESA_SHADER_TYPES] = { - GL_VERTEX_SHADER, - GL_FRAGMENT_SHADER, - GL_GEOMETRY_SHADER , - }; - if (i >= MESA_SHADER_TYPES) - return 0; - else - return enums[i]; -} - - -#ifdef __cplusplus -} -#endif - -#endif /* SHADEROBJ_H */ +/* + * Mesa 3-D graphics library + * Version: 6.5.3 + * + * Copyright (C) 2004-2007 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +#ifndef SHADEROBJ_H +#define SHADEROBJ_H + + +#include "main/compiler.h" +#include "main/glheader.h" +#include "main/mtypes.h" +#include "program/ir_to_mesa.h" + +#ifdef __cplusplus +extern "C" { +#endif +/** + * Internal functions + */ + +extern void +_mesa_init_shader_state(struct gl_context * ctx); + +extern void +_mesa_free_shader_state(struct gl_context *ctx); + + +extern void +_mesa_reference_shader(struct gl_context *ctx, struct gl_shader **ptr, + struct gl_shader *sh); + +extern struct gl_shader * +_mesa_lookup_shader(struct gl_context *ctx, GLuint name); + +extern struct gl_shader * +_mesa_lookup_shader_err(struct gl_context *ctx, GLuint name, const char *caller); + + + +extern void +_mesa_reference_shader_program(struct gl_context *ctx, + struct gl_shader_program **ptr, + struct gl_shader_program *shProg); +extern void +_mesa_init_shader(struct gl_context *ctx, struct gl_shader *shader); + +extern struct gl_shader * +_mesa_new_shader(struct gl_context *ctx, GLuint name, GLenum type); + +extern void +_mesa_init_shader_program(struct gl_context *ctx, struct gl_shader_program *prog); + +extern struct gl_shader_program * +_mesa_lookup_shader_program(struct gl_context *ctx, GLuint name); + +extern struct gl_shader_program * +_mesa_lookup_shader_program_err(struct gl_context *ctx, GLuint name, + const char *caller); + +extern void +_mesa_clear_shader_program_data(struct gl_context *ctx, + struct gl_shader_program *shProg); + +extern void +_mesa_free_shader_program_data(struct gl_context *ctx, + struct gl_shader_program *shProg); + + + +extern void +_mesa_init_shader_object_functions(struct dd_function_table *driver); + +extern void +_mesa_init_shader_state(struct gl_context *ctx); + +extern void +_mesa_free_shader_state(struct gl_context *ctx); + + +static inline gl_shader_type +_mesa_shader_type_to_index(GLenum v) +{ + switch (v) { + case GL_VERTEX_SHADER: + return MESA_SHADER_VERTEX; + case GL_FRAGMENT_SHADER: + return MESA_SHADER_FRAGMENT; + case GL_GEOMETRY_SHADER: + return MESA_SHADER_GEOMETRY; + default: + ASSERT(0 && "bad value in _mesa_shader_type_to_index()"); + return MESA_SHADER_TYPES; + } +} + + +static inline GLenum +_mesa_shader_index_to_type(GLuint i) +{ + static const GLenum enums[MESA_SHADER_TYPES] = { + GL_VERTEX_SHADER, + GL_FRAGMENT_SHADER, + GL_GEOMETRY_SHADER , + }; + if (i >= MESA_SHADER_TYPES) + return 0; + else + return enums[i]; +} + + +#ifdef __cplusplus +} +#endif + +#endif /* SHADEROBJ_H */ diff --git a/mesalib/src/mesa/main/state.h b/mesalib/src/mesa/main/state.h index 7feeb9007..2b5b3d514 100644 --- a/mesalib/src/mesa/main/state.h +++ b/mesalib/src/mesa/main/state.h @@ -49,7 +49,7 @@ _mesa_set_vp_override(struct gl_context *ctx, GLboolean flag); /** * Is the secondary color needed? */ -static INLINE GLboolean +static inline GLboolean _mesa_need_secondary_color(const struct gl_context *ctx) { if (ctx->Light.Enabled && diff --git a/mesalib/src/mesa/main/syncobj.h b/mesalib/src/mesa/main/syncobj.h index ac1384f61..50a5d1123 100644 --- a/mesalib/src/mesa/main/syncobj.h +++ b/mesalib/src/mesa/main/syncobj.h @@ -1,119 +1,119 @@ -/* - * Copyright © 2009 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - -/** - * \file syncobj.h - * Sync object management. - * - * \author Ian Romanick - */ - -#ifndef SYNCOBJ_H -#define SYNCOBJ_H - -#include "glheader.h" -#include "mfeatures.h" - -struct _glapi_table; -struct dd_function_table; -struct gl_context; -struct gl_sync_object; - -#if FEATURE_ARB_sync - -extern void -_mesa_init_sync_object_functions(struct dd_function_table *driver); - -extern void -_mesa_init_sync_dispatch(struct _glapi_table *disp); - -extern void -_mesa_init_sync(struct gl_context *); - -extern void -_mesa_free_sync_data(struct gl_context *); - -extern void -_mesa_ref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj); - -extern void -_mesa_unref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj); - -extern GLboolean GLAPIENTRY -_mesa_IsSync(GLsync sync); - -extern void GLAPIENTRY -_mesa_DeleteSync(GLsync sync); - -extern GLsync GLAPIENTRY -_mesa_FenceSync(GLenum condition, GLbitfield flags); - -extern GLenum GLAPIENTRY -_mesa_ClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); - -extern void GLAPIENTRY -_mesa_WaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); - -extern void GLAPIENTRY -_mesa_GetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, - GLint *values); - -#else /* FEATURE_ARB_sync */ - -#include "main/compiler.h" - -static INLINE void -_mesa_init_sync_object_functions(struct dd_function_table *driver) -{ -} - -static INLINE void -_mesa_init_sync_dispatch(struct _glapi_table *disp) -{ -} - -static INLINE void -_mesa_init_sync(struct gl_context *ctx) -{ -} - -static INLINE void -_mesa_free_sync_data(struct gl_context *ctx) -{ -} - -static INLINE void -_mesa_ref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj) -{ - ASSERT_NO_FEATURE(); -} - -static INLINE void -_mesa_unref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj) -{ - ASSERT_NO_FEATURE(); -} - -#endif /* FEATURE_ARB_sync */ - -#endif /* SYNCOBJ_H */ +/* + * Copyright © 2009 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +/** + * \file syncobj.h + * Sync object management. + * + * \author Ian Romanick + */ + +#ifndef SYNCOBJ_H +#define SYNCOBJ_H + +#include "glheader.h" +#include "mfeatures.h" + +struct _glapi_table; +struct dd_function_table; +struct gl_context; +struct gl_sync_object; + +#if FEATURE_ARB_sync + +extern void +_mesa_init_sync_object_functions(struct dd_function_table *driver); + +extern void +_mesa_init_sync_dispatch(struct _glapi_table *disp); + +extern void +_mesa_init_sync(struct gl_context *); + +extern void +_mesa_free_sync_data(struct gl_context *); + +extern void +_mesa_ref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj); + +extern void +_mesa_unref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj); + +extern GLboolean GLAPIENTRY +_mesa_IsSync(GLsync sync); + +extern void GLAPIENTRY +_mesa_DeleteSync(GLsync sync); + +extern GLsync GLAPIENTRY +_mesa_FenceSync(GLenum condition, GLbitfield flags); + +extern GLenum GLAPIENTRY +_mesa_ClientWaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + +extern void GLAPIENTRY +_mesa_WaitSync(GLsync sync, GLbitfield flags, GLuint64 timeout); + +extern void GLAPIENTRY +_mesa_GetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, + GLint *values); + +#else /* FEATURE_ARB_sync */ + +#include "main/compiler.h" + +static inline void +_mesa_init_sync_object_functions(struct dd_function_table *driver) +{ +} + +static inline void +_mesa_init_sync_dispatch(struct _glapi_table *disp) +{ +} + +static inline void +_mesa_init_sync(struct gl_context *ctx) +{ +} + +static inline void +_mesa_free_sync_data(struct gl_context *ctx) +{ +} + +static inline void +_mesa_ref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj) +{ + ASSERT_NO_FEATURE(); +} + +static inline void +_mesa_unref_sync_object(struct gl_context *ctx, struct gl_sync_object *syncObj) +{ + ASSERT_NO_FEATURE(); +} + +#endif /* FEATURE_ARB_sync */ + +#endif /* SYNCOBJ_H */ diff --git a/mesalib/src/mesa/main/texcompress_s3tc.c b/mesalib/src/mesa/main/texcompress_s3tc.c index 04c5b4476..8c6b1dfad 100644 --- a/mesalib/src/mesa/main/texcompress_s3tc.c +++ b/mesalib/src/mesa/main/texcompress_s3tc.c @@ -66,7 +66,7 @@ * linear RGB value in [0, 1]. * Implemented with a 256-entry lookup table. */ -static INLINE GLfloat +static inline GLfloat nonlinear_to_linear(GLubyte cs8) { static GLfloat table[256]; diff --git a/mesalib/src/mesa/main/texcompress_s3tc.h b/mesalib/src/mesa/main/texcompress_s3tc.h index 709c35ae7..23793d167 100644 --- a/mesalib/src/mesa/main/texcompress_s3tc.h +++ b/mesalib/src/mesa/main/texcompress_s3tc.h @@ -100,7 +100,7 @@ _mesa_init_texture_s3tc(struct gl_context *ctx); #define _mesa_fetch_texel_2d_f_srgba_dxt3 NULL #define _mesa_fetch_texel_2d_f_srgba_dxt5 NULL -static INLINE void +static inline void _mesa_init_texture_s3tc(struct gl_context *ctx) { } diff --git a/mesalib/src/mesa/main/texformat.c b/mesalib/src/mesa/main/texformat.c index b763a689a..ccc3c49f5 100644 --- a/mesalib/src/mesa/main/texformat.c +++ b/mesalib/src/mesa/main/texformat.c @@ -609,35 +609,67 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat, break; case GL_RGBA8UI_EXT: case GL_RGB8UI_EXT: + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_UINT8); + break; case GL_ALPHA8UI_EXT: + RETURN_IF_SUPPORTED(MESA_FORMAT_ALPHA_UINT8); + break; case GL_INTENSITY8UI_EXT: + RETURN_IF_SUPPORTED(MESA_FORMAT_INTENSITY_UINT8); + break; case GL_LUMINANCE8UI_EXT: + RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_UINT8); + break; case GL_LUMINANCE_ALPHA8UI_EXT: - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_UINT8); + RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_ALPHA_UINT8); break; case GL_RGBA32I_EXT: case GL_RGB32I_EXT: + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_INT32); + break; case GL_ALPHA32I_EXT: + RETURN_IF_SUPPORTED(MESA_FORMAT_ALPHA_INT32); + break; case GL_INTENSITY32I_EXT: + RETURN_IF_SUPPORTED(MESA_FORMAT_INTENSITY_INT32); + break; case GL_LUMINANCE32I_EXT: + RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_INT32); + break; case GL_LUMINANCE_ALPHA32I_EXT: - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_INT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_ALPHA_INT32); break; case GL_RGBA16I_EXT: case GL_RGB16I_EXT: + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_INT16); + break; case GL_ALPHA16I_EXT: + RETURN_IF_SUPPORTED(MESA_FORMAT_ALPHA_INT16); + break; case GL_INTENSITY16I_EXT: + RETURN_IF_SUPPORTED(MESA_FORMAT_INTENSITY_INT16); + break; case GL_LUMINANCE16I_EXT: + RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_INT16); + break; case GL_LUMINANCE_ALPHA16I_EXT: - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_INT16); + RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_ALPHA_INT16); break; case GL_RGBA8I_EXT: case GL_RGB8I_EXT: + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_INT8); + break; case GL_ALPHA8I_EXT: + RETURN_IF_SUPPORTED(MESA_FORMAT_ALPHA_INT8); + break; case GL_INTENSITY8I_EXT: + RETURN_IF_SUPPORTED(MESA_FORMAT_INTENSITY_INT8); + break; case GL_LUMINANCE8I_EXT: + RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_INT8); + break; case GL_LUMINANCE_ALPHA8I_EXT: - RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_INT8); + RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_ALPHA_INT8); break; } } @@ -703,6 +735,49 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat, } } + if (ctx->Extensions.ARB_texture_rg && ctx->Extensions.EXT_texture_integer) { + switch (internalFormat) { + case GL_R8UI: + RETURN_IF_SUPPORTED(MESA_FORMAT_R_UINT8); + break; + case GL_RG8UI: + RETURN_IF_SUPPORTED(MESA_FORMAT_RG_UINT8); + break; + case GL_R16UI: + RETURN_IF_SUPPORTED(MESA_FORMAT_R_UINT16); + break; + case GL_RG16UI: + RETURN_IF_SUPPORTED(MESA_FORMAT_RG_UINT16); + break; + case GL_R32UI: + RETURN_IF_SUPPORTED(MESA_FORMAT_R_UINT32); + break; + case GL_RG32UI: + RETURN_IF_SUPPORTED(MESA_FORMAT_RG_UINT32); + break; + case GL_R8I: + RETURN_IF_SUPPORTED(MESA_FORMAT_R_INT8); + break; + case GL_RG8I: + RETURN_IF_SUPPORTED(MESA_FORMAT_RG_INT8); + break; + case GL_R16I: + RETURN_IF_SUPPORTED(MESA_FORMAT_R_INT16); + break; + case GL_RG16I: + RETURN_IF_SUPPORTED(MESA_FORMAT_RG_INT16); + break; + case GL_R32I: + RETURN_IF_SUPPORTED(MESA_FORMAT_R_INT32); + break; + case GL_RG32I: + RETURN_IF_SUPPORTED(MESA_FORMAT_RG_INT32); + break; + default: + break; + } + } + /* GL_BGRA can be an internal format *only* in OpenGL ES (1.x or 2.0). */ if (ctx->API != API_OPENGL) { diff --git a/mesalib/src/mesa/main/texgen.h b/mesalib/src/mesa/main/texgen.h index 9160af002..60a9522af 100644 --- a/mesalib/src/mesa/main/texgen.h +++ b/mesalib/src/mesa/main/texgen.h @@ -1,85 +1,85 @@ -/* - * Mesa 3-D graphics library - * Version: 7.1 - * - * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -#ifndef TEXGEN_H -#define TEXGEN_H - - -#include "compiler.h" -#include "glheader.h" -#include "mfeatures.h" - -struct _glapi_table; - - -#if FEATURE_texgen - -extern void GLAPIENTRY -_mesa_TexGenfv( GLenum coord, GLenum pname, const GLfloat *params ); - -extern void GLAPIENTRY -_mesa_TexGenf( GLenum coord, GLenum pname, GLfloat param ); - -extern void GLAPIENTRY -_mesa_TexGeni( GLenum coord, GLenum pname, GLint param ); - -extern void GLAPIENTRY -_mesa_GetTexGenfv( GLenum coord, GLenum pname, GLfloat *params ); - -extern void -_mesa_init_texgen_dispatch(struct _glapi_table *disp); - - -extern void GLAPIENTRY -_es_GetTexGenfv(GLenum coord, GLenum pname, GLfloat *params); - -extern void GLAPIENTRY -_es_TexGenf(GLenum coord, GLenum pname, GLfloat param); - -extern void GLAPIENTRY -_es_TexGenfv(GLenum coord, GLenum pname, const GLfloat *params); - - -#else /* FEATURE_texgen */ - -static void -_mesa_TexGenfv( GLenum coord, GLenum pname, const GLfloat *params ) -{ -} - -static void INLINE -_mesa_TexGeni( GLenum coord, GLenum pname, GLint param ) -{ -} - -static INLINE void -_mesa_init_texgen_dispatch(struct _glapi_table *disp) -{ -} - -#endif /* FEATURE_texgen */ - - -#endif /* TEXGEN_H */ +/* + * Mesa 3-D graphics library + * Version: 7.1 + * + * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +#ifndef TEXGEN_H +#define TEXGEN_H + + +#include "compiler.h" +#include "glheader.h" +#include "mfeatures.h" + +struct _glapi_table; + + +#if FEATURE_texgen + +extern void GLAPIENTRY +_mesa_TexGenfv( GLenum coord, GLenum pname, const GLfloat *params ); + +extern void GLAPIENTRY +_mesa_TexGenf( GLenum coord, GLenum pname, GLfloat param ); + +extern void GLAPIENTRY +_mesa_TexGeni( GLenum coord, GLenum pname, GLint param ); + +extern void GLAPIENTRY +_mesa_GetTexGenfv( GLenum coord, GLenum pname, GLfloat *params ); + +extern void +_mesa_init_texgen_dispatch(struct _glapi_table *disp); + + +extern void GLAPIENTRY +_es_GetTexGenfv(GLenum coord, GLenum pname, GLfloat *params); + +extern void GLAPIENTRY +_es_TexGenf(GLenum coord, GLenum pname, GLfloat param); + +extern void GLAPIENTRY +_es_TexGenfv(GLenum coord, GLenum pname, const GLfloat *params); + + +#else /* FEATURE_texgen */ + +static void +_mesa_TexGenfv( GLenum coord, GLenum pname, const GLfloat *params ) +{ +} + +static void inline +_mesa_TexGeni( GLenum coord, GLenum pname, GLint param ) +{ +} + +static inline void +_mesa_init_texgen_dispatch(struct _glapi_table *disp) +{ +} + +#endif /* FEATURE_texgen */ + + +#endif /* TEXGEN_H */ diff --git a/mesalib/src/mesa/main/texgetimage.c b/mesalib/src/mesa/main/texgetimage.c index d2f25b9f8..f9118860b 100644 --- a/mesalib/src/mesa/main/texgetimage.c +++ b/mesalib/src/mesa/main/texgetimage.c @@ -49,7 +49,7 @@ /** * Can the given type represent negative values? */ -static INLINE GLboolean +static inline GLboolean type_with_negative_values(GLenum type) { switch (type) { @@ -373,9 +373,9 @@ get_tex_rgba(struct gl_context *ctx, GLuint dimensions, static GLboolean get_tex_memcpy(struct gl_context *ctx, GLenum format, GLenum type, GLvoid *pixels, - struct gl_texture_object *texObj, struct gl_texture_image *texImage) { + const GLenum target = texImage->TexObject->Target; GLboolean memCopy = GL_FALSE; /* @@ -384,11 +384,11 @@ get_tex_memcpy(struct gl_context *ctx, GLenum format, GLenum type, * so we don't have to worry about those. * XXX more format combinations could be supported here. */ - if ((texObj->Target == GL_TEXTURE_1D || - texObj->Target == GL_TEXTURE_2D || - texObj->Target == GL_TEXTURE_RECTANGLE || - (texObj->Target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X && - texObj->Target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z))) { + if ((target == GL_TEXTURE_1D || + target == GL_TEXTURE_2D || + target == GL_TEXTURE_RECTANGLE || + (target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X && + target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z))) { if ((texImage->TexFormat == MESA_FORMAT_ARGB8888 || texImage->TexFormat == MESA_FORMAT_SARGB8) && format == GL_BGRA && @@ -471,14 +471,13 @@ get_tex_memcpy(struct gl_context *ctx, GLenum format, GLenum type, * unmap with ctx->Driver.UnmapTextureImage(). */ void -_mesa_get_teximage(struct gl_context *ctx, GLenum target, GLint level, +_mesa_get_teximage(struct gl_context *ctx, GLenum format, GLenum type, GLvoid *pixels, - struct gl_texture_object *texObj, struct gl_texture_image *texImage) { GLuint dimensions; - switch (target) { + switch (texImage->TexObject->Target) { case GL_TEXTURE_1D: dimensions = 1; break; @@ -511,7 +510,7 @@ _mesa_get_teximage(struct gl_context *ctx, GLenum target, GLint level, pixels = ADD_POINTERS(buf, pixels); } - if (get_tex_memcpy(ctx, format, type, pixels, texObj, texImage)) { + if (get_tex_memcpy(ctx, format, type, pixels, texImage)) { /* all done */ } else if (format == GL_DEPTH_COMPONENT) { @@ -772,8 +771,7 @@ _mesa_GetnTexImageARB( GLenum target, GLint level, GLenum format, _mesa_lock_texture(ctx, texObj); { - ctx->Driver.GetTexImage(ctx, target, level, format, type, pixels, - texObj, texImage); + ctx->Driver.GetTexImage(ctx, format, type, pixels, texImage); } _mesa_unlock_texture(ctx, texObj); } diff --git a/mesalib/src/mesa/main/texgetimage.h b/mesalib/src/mesa/main/texgetimage.h index 8612705ca..02b1cf459 100644 --- a/mesalib/src/mesa/main/texgetimage.h +++ b/mesalib/src/mesa/main/texgetimage.h @@ -34,9 +34,8 @@ struct gl_texture_image; struct gl_texture_object; extern void -_mesa_get_teximage(struct gl_context *ctx, GLenum target, GLint level, +_mesa_get_teximage(struct gl_context *ctx, GLenum format, GLenum type, GLvoid *pixels, - struct gl_texture_object *texObj, struct gl_texture_image *texImage); diff --git a/mesalib/src/mesa/main/teximage.c b/mesalib/src/mesa/main/teximage.c index daa71fd7b..8efe715fe 100644 --- a/mesalib/src/mesa/main/teximage.c +++ b/mesalib/src/mesa/main/teximage.c @@ -2253,7 +2253,7 @@ update_fbo_texture(struct gl_context *ctx, struct gl_texture_object *texObj, * changed the texture base level image, regenerate the rest of the * mipmap levels now. */ -static INLINE void +static inline void check_gen_mipmap(struct gl_context *ctx, GLenum target, struct gl_texture_object *texObj, GLint level) { diff --git a/mesalib/src/mesa/main/teximage.h b/mesalib/src/mesa/main/teximage.h index 8ef1d4560..6ce0fe92c 100644 --- a/mesalib/src/mesa/main/teximage.h +++ b/mesalib/src/mesa/main/teximage.h @@ -136,7 +136,7 @@ _mesa_get_texture_dimensions(GLenum target); /** * Lock a texture for updating. See also _mesa_lock_context_textures(). */ -static INLINE void +static inline void _mesa_lock_texture(struct gl_context *ctx, struct gl_texture_object *texObj) { _glthread_LOCK_MUTEX(ctx->Shared->TexMutex); @@ -144,7 +144,7 @@ _mesa_lock_texture(struct gl_context *ctx, struct gl_texture_object *texObj) (void) texObj; } -static INLINE void +static inline void _mesa_unlock_texture(struct gl_context *ctx, struct gl_texture_object *texObj) { (void) texObj; diff --git a/mesalib/src/mesa/main/texobj.h b/mesalib/src/mesa/main/texobj.h index 1faae6f7e..9ca7a4c9e 100644 --- a/mesalib/src/mesa/main/texobj.h +++ b/mesalib/src/mesa/main/texobj.h @@ -68,7 +68,7 @@ extern void _mesa_reference_texobj_(struct gl_texture_object **ptr, struct gl_texture_object *tex); -static INLINE void +static inline void _mesa_reference_texobj(struct gl_texture_object **ptr, struct gl_texture_object *tex) { diff --git a/mesalib/src/mesa/main/texparam.c b/mesalib/src/mesa/main/texparam.c index f232cfc86..dc5ee33a2 100644 --- a/mesalib/src/mesa/main/texparam.c +++ b/mesalib/src/mesa/main/texparam.c @@ -180,7 +180,7 @@ set_swizzle_component(GLuint *swizzle, GLuint comp, GLuint swz) * This is called just prior to changing any texture object state which * will not effect texture completeness. */ -static INLINE void +static inline void flush(struct gl_context *ctx) { FLUSH_VERTICES(ctx, _NEW_TEXTURE); @@ -195,7 +195,7 @@ flush(struct gl_context *ctx) * state flag and then mark the texture object as 'incomplete' so that any * per-texture derived state gets recomputed. */ -static INLINE void +static inline void incomplete(struct gl_context *ctx, struct gl_texture_object *texObj) { FLUSH_VERTICES(ctx, _NEW_TEXTURE); diff --git a/mesalib/src/mesa/main/texstate.h b/mesalib/src/mesa/main/texstate.h index 1258a0705..7dc6dc6a2 100644 --- a/mesalib/src/mesa/main/texstate.h +++ b/mesalib/src/mesa/main/texstate.h @@ -1,92 +1,92 @@ -/** - * \file texstate.h - * Texture state management. - */ - -/* - * Mesa 3-D graphics library - * Version: 7.1 - * - * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -#ifndef TEXSTATE_H -#define TEXSTATE_H - - -#include "compiler.h" -#include "mtypes.h" - - -/** - * Return pointer to current texture unit. - * This the texture unit set by glActiveTexture(), not glClientActiveTexture(). - */ -static INLINE struct gl_texture_unit * -_mesa_get_current_tex_unit(struct gl_context *ctx) -{ - ASSERT(ctx->Texture.CurrentUnit < Elements(ctx->Texture.Unit)); - return &(ctx->Texture.Unit[ctx->Texture.CurrentUnit]); -} - - -extern void -_mesa_copy_texture_state( const struct gl_context *src, struct gl_context *dst ); - -extern void -_mesa_print_texunit_state( struct gl_context *ctx, GLuint unit ); - - - -/** - * \name Called from API - */ -/*@{*/ - -extern void GLAPIENTRY -_mesa_ActiveTextureARB( GLenum target ); - -extern void GLAPIENTRY -_mesa_ClientActiveTextureARB( GLenum target ); - -/*@}*/ - - -/** - * \name Initialization, state maintenance - */ -/*@{*/ - -extern void -_mesa_update_texture( struct gl_context *ctx, GLuint new_state ); - -extern GLboolean -_mesa_init_texture( struct gl_context *ctx ); - -extern void -_mesa_free_texture_data( struct gl_context *ctx ); - -extern void -_mesa_update_default_objects_texture(struct gl_context *ctx); - -/*@}*/ - -#endif +/** + * \file texstate.h + * Texture state management. + */ + +/* + * Mesa 3-D graphics library + * Version: 7.1 + * + * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +#ifndef TEXSTATE_H +#define TEXSTATE_H + + +#include "compiler.h" +#include "mtypes.h" + + +/** + * Return pointer to current texture unit. + * This the texture unit set by glActiveTexture(), not glClientActiveTexture(). + */ +static inline struct gl_texture_unit * +_mesa_get_current_tex_unit(struct gl_context *ctx) +{ + ASSERT(ctx->Texture.CurrentUnit < Elements(ctx->Texture.Unit)); + return &(ctx->Texture.Unit[ctx->Texture.CurrentUnit]); +} + + +extern void +_mesa_copy_texture_state( const struct gl_context *src, struct gl_context *dst ); + +extern void +_mesa_print_texunit_state( struct gl_context *ctx, GLuint unit ); + + + +/** + * \name Called from API + */ +/*@{*/ + +extern void GLAPIENTRY +_mesa_ActiveTextureARB( GLenum target ); + +extern void GLAPIENTRY +_mesa_ClientActiveTextureARB( GLenum target ); + +/*@}*/ + + +/** + * \name Initialization, state maintenance + */ +/*@{*/ + +extern void +_mesa_update_texture( struct gl_context *ctx, GLuint new_state ); + +extern GLboolean +_mesa_init_texture( struct gl_context *ctx ); + +extern void +_mesa_free_texture_data( struct gl_context *ctx ); + +extern void +_mesa_update_default_objects_texture(struct gl_context *ctx); + +/*@}*/ + +#endif diff --git a/mesalib/src/mesa/main/texstore.c b/mesalib/src/mesa/main/texstore.c index cbed26cd4..d70cb8ac7 100644 --- a/mesalib/src/mesa/main/texstore.c +++ b/mesalib/src/mesa/main/texstore.c @@ -458,6 +458,7 @@ make_temp_uint_image(struct gl_context *ctx, GLuint dims, textureBaseFormat == GL_RED || textureBaseFormat == GL_LUMINANCE_ALPHA || textureBaseFormat == GL_LUMINANCE || + textureBaseFormat == GL_INTENSITY || textureBaseFormat == GL_ALPHA); tempImage = (GLuint *) malloc(srcWidth * srcHeight * srcDepth @@ -3636,7 +3637,14 @@ _mesa_texstore_rgba_int8(TEXSTORE_PARAMS) const GLenum baseFormat = _mesa_get_format_base_format(dstFormat); const GLint components = _mesa_components_in_format(baseFormat); - ASSERT(dstFormat == MESA_FORMAT_RGBA_INT8); + ASSERT(dstFormat == MESA_FORMAT_R_INT8 || + dstFormat == MESA_FORMAT_RG_INT8 || + dstFormat == MESA_FORMAT_RGB_INT8 || + dstFormat == MESA_FORMAT_RGBA_INT8 || + dstFormat == MESA_FORMAT_ALPHA_INT8 || + dstFormat == MESA_FORMAT_INTENSITY_INT8 || + dstFormat == MESA_FORMAT_LUMINANCE_INT8 || + dstFormat == MESA_FORMAT_LUMINANCE_ALPHA_INT8); ASSERT(baseInternalFormat == GL_RGBA || baseInternalFormat == GL_RGB || baseInternalFormat == GL_ALPHA || @@ -3701,7 +3709,14 @@ _mesa_texstore_rgba_int16(TEXSTORE_PARAMS) const GLenum baseFormat = _mesa_get_format_base_format(dstFormat); const GLint components = _mesa_components_in_format(baseFormat); - ASSERT(dstFormat == MESA_FORMAT_RGBA_INT16); + ASSERT(dstFormat == MESA_FORMAT_R_INT16 || + dstFormat == MESA_FORMAT_RG_INT16 || + dstFormat == MESA_FORMAT_RGB_INT16 || + dstFormat == MESA_FORMAT_RGBA_INT16 || + dstFormat == MESA_FORMAT_ALPHA_INT16 || + dstFormat == MESA_FORMAT_LUMINANCE_INT16 || + dstFormat == MESA_FORMAT_INTENSITY_INT16 || + dstFormat == MESA_FORMAT_LUMINANCE_ALPHA_INT16); ASSERT(baseInternalFormat == GL_RGBA || baseInternalFormat == GL_RGB || baseInternalFormat == GL_ALPHA || @@ -3766,7 +3781,14 @@ _mesa_texstore_rgba_int32(TEXSTORE_PARAMS) const GLenum baseFormat = _mesa_get_format_base_format(dstFormat); const GLint components = _mesa_components_in_format(baseFormat); - ASSERT(dstFormat == MESA_FORMAT_RGBA_INT32); + ASSERT(dstFormat == MESA_FORMAT_R_INT32 || + dstFormat == MESA_FORMAT_RG_INT32 || + dstFormat == MESA_FORMAT_RGB_INT32 || + dstFormat == MESA_FORMAT_RGBA_INT32 || + dstFormat == MESA_FORMAT_ALPHA_INT32 || + dstFormat == MESA_FORMAT_INTENSITY_INT32 || + dstFormat == MESA_FORMAT_LUMINANCE_INT32 || + dstFormat == MESA_FORMAT_LUMINANCE_ALPHA_INT32); ASSERT(baseInternalFormat == GL_RGBA || baseInternalFormat == GL_RGB || baseInternalFormat == GL_ALPHA || @@ -3831,7 +3853,14 @@ _mesa_texstore_rgba_uint8(TEXSTORE_PARAMS) const GLenum baseFormat = _mesa_get_format_base_format(dstFormat); const GLint components = _mesa_components_in_format(baseFormat); - ASSERT(dstFormat == MESA_FORMAT_RGBA_UINT8); + ASSERT(dstFormat == MESA_FORMAT_R_UINT8 || + dstFormat == MESA_FORMAT_RG_UINT8 || + dstFormat == MESA_FORMAT_RGB_UINT8 || + dstFormat == MESA_FORMAT_RGBA_UINT8 || + dstFormat == MESA_FORMAT_ALPHA_UINT8 || + dstFormat == MESA_FORMAT_INTENSITY_UINT8 || + dstFormat == MESA_FORMAT_LUMINANCE_UINT8 || + dstFormat == MESA_FORMAT_LUMINANCE_ALPHA_UINT8); ASSERT(baseInternalFormat == GL_RGBA || baseInternalFormat == GL_RGB || baseInternalFormat == GL_ALPHA || @@ -3894,7 +3923,14 @@ _mesa_texstore_rgba_uint16(TEXSTORE_PARAMS) const GLenum baseFormat = _mesa_get_format_base_format(dstFormat); const GLint components = _mesa_components_in_format(baseFormat); - ASSERT(dstFormat == MESA_FORMAT_RGBA_UINT16); + ASSERT(dstFormat == MESA_FORMAT_R_UINT16 || + dstFormat == MESA_FORMAT_RG_UINT16 || + dstFormat == MESA_FORMAT_RGB_UINT16 || + dstFormat == MESA_FORMAT_RGBA_UINT16 || + dstFormat == MESA_FORMAT_ALPHA_UINT16 || + dstFormat == MESA_FORMAT_INTENSITY_UINT16 || + dstFormat == MESA_FORMAT_LUMINANCE_UINT16 || + dstFormat == MESA_FORMAT_LUMINANCE_ALPHA_UINT16); ASSERT(baseInternalFormat == GL_RGBA || baseInternalFormat == GL_RGB || baseInternalFormat == GL_ALPHA || @@ -3957,7 +3993,14 @@ _mesa_texstore_rgba_uint32(TEXSTORE_PARAMS) const GLenum baseFormat = _mesa_get_format_base_format(dstFormat); const GLint components = _mesa_components_in_format(baseFormat); - ASSERT(dstFormat == MESA_FORMAT_RGBA_UINT32); + ASSERT(dstFormat == MESA_FORMAT_R_UINT32 || + dstFormat == MESA_FORMAT_RG_UINT32 || + dstFormat == MESA_FORMAT_RGB_UINT32 || + dstFormat == MESA_FORMAT_RGBA_UINT32 || + dstFormat == MESA_FORMAT_ALPHA_UINT32 || + dstFormat == MESA_FORMAT_INTENSITY_UINT32 || + dstFormat == MESA_FORMAT_LUMINANCE_UINT32 || + dstFormat == MESA_FORMAT_LUMINANCE_ALPHA_UINT32); ASSERT(baseInternalFormat == GL_RGBA || baseInternalFormat == GL_RGB || baseInternalFormat == GL_ALPHA || @@ -4307,145 +4350,6 @@ _mesa_texstore_z32f_x24s8(TEXSTORE_PARAMS) return GL_TRUE; } - -/** - * Table mapping MESA_FORMAT_* to _mesa_texstore_*() - * XXX this is somewhat temporary. - */ -static const struct { - gl_format Name; - StoreTexImageFunc Store; -} -texstore_funcs[MESA_FORMAT_COUNT] = -{ - { MESA_FORMAT_NONE, NULL }, - { MESA_FORMAT_RGBA8888, _mesa_texstore_rgba8888 }, - { MESA_FORMAT_RGBA8888_REV, _mesa_texstore_rgba8888 }, - { MESA_FORMAT_ARGB8888, _mesa_texstore_argb8888 }, - { MESA_FORMAT_ARGB8888_REV, _mesa_texstore_argb8888 }, - { MESA_FORMAT_XRGB8888, _mesa_texstore_argb8888 }, - { MESA_FORMAT_XRGB8888_REV, _mesa_texstore_argb8888 }, - { MESA_FORMAT_RGB888, _mesa_texstore_rgb888 }, - { MESA_FORMAT_BGR888, _mesa_texstore_bgr888 }, - { MESA_FORMAT_RGB565, _mesa_texstore_rgb565 }, - { MESA_FORMAT_RGB565_REV, _mesa_texstore_rgb565 }, - { MESA_FORMAT_ARGB4444, _mesa_texstore_argb4444 }, - { MESA_FORMAT_ARGB4444_REV, _mesa_texstore_argb4444 }, - { MESA_FORMAT_RGBA5551, _mesa_texstore_rgba5551 }, - { MESA_FORMAT_ARGB1555, _mesa_texstore_argb1555 }, - { MESA_FORMAT_ARGB1555_REV, _mesa_texstore_argb1555 }, - { MESA_FORMAT_AL44, _mesa_texstore_unorm44 }, - { MESA_FORMAT_AL88, _mesa_texstore_unorm88 }, - { MESA_FORMAT_AL88_REV, _mesa_texstore_unorm88 }, - { MESA_FORMAT_AL1616, _mesa_texstore_unorm1616 }, - { MESA_FORMAT_AL1616_REV, _mesa_texstore_unorm1616 }, - { MESA_FORMAT_RGB332, _mesa_texstore_rgb332 }, - { MESA_FORMAT_A8, _mesa_texstore_unorm8 }, - { MESA_FORMAT_A16, _mesa_texstore_unorm16 }, - { MESA_FORMAT_L8, _mesa_texstore_unorm8 }, - { MESA_FORMAT_L16, _mesa_texstore_unorm16 }, - { MESA_FORMAT_I8, _mesa_texstore_unorm8 }, - { MESA_FORMAT_I16, _mesa_texstore_unorm16 }, - { MESA_FORMAT_YCBCR, _mesa_texstore_ycbcr }, - { MESA_FORMAT_YCBCR_REV, _mesa_texstore_ycbcr }, - { MESA_FORMAT_R8, _mesa_texstore_unorm8 }, - { MESA_FORMAT_RG88, _mesa_texstore_unorm88 }, - { MESA_FORMAT_RG88_REV, _mesa_texstore_unorm88 }, - { MESA_FORMAT_R16, _mesa_texstore_unorm16 }, - { MESA_FORMAT_RG1616, _mesa_texstore_unorm1616 }, - { MESA_FORMAT_RG1616_REV, _mesa_texstore_unorm1616 }, - { MESA_FORMAT_ARGB2101010, _mesa_texstore_argb2101010 }, - { MESA_FORMAT_Z24_S8, _mesa_texstore_z24_s8 }, - { MESA_FORMAT_S8_Z24, _mesa_texstore_s8_z24 }, - { MESA_FORMAT_Z16, _mesa_texstore_z16 }, - { MESA_FORMAT_X8_Z24, _mesa_texstore_x8_z24 }, - { MESA_FORMAT_Z24_X8, _mesa_texstore_z24_x8 }, - { MESA_FORMAT_Z32, _mesa_texstore_z32 }, - { MESA_FORMAT_S8, _mesa_texstore_s8 }, - { MESA_FORMAT_SRGB8, _mesa_texstore_srgb8 }, - { MESA_FORMAT_SRGBA8, _mesa_texstore_srgba8 }, - { MESA_FORMAT_SARGB8, _mesa_texstore_sargb8 }, - { MESA_FORMAT_SL8, _mesa_texstore_sl8 }, - { MESA_FORMAT_SLA8, _mesa_texstore_sla8 }, - { MESA_FORMAT_SRGB_DXT1, _mesa_texstore_rgb_dxt1 }, - { MESA_FORMAT_SRGBA_DXT1, _mesa_texstore_rgba_dxt1 }, - { MESA_FORMAT_SRGBA_DXT3, _mesa_texstore_rgba_dxt3 }, - { MESA_FORMAT_SRGBA_DXT5, _mesa_texstore_rgba_dxt5 }, - { MESA_FORMAT_RGB_FXT1, _mesa_texstore_rgb_fxt1 }, - { MESA_FORMAT_RGBA_FXT1, _mesa_texstore_rgba_fxt1 }, - { MESA_FORMAT_RGB_DXT1, _mesa_texstore_rgb_dxt1 }, - { MESA_FORMAT_RGBA_DXT1, _mesa_texstore_rgba_dxt1 }, - { MESA_FORMAT_RGBA_DXT3, _mesa_texstore_rgba_dxt3 }, - { MESA_FORMAT_RGBA_DXT5, _mesa_texstore_rgba_dxt5 }, - { MESA_FORMAT_RGBA_FLOAT32, _mesa_texstore_rgba_float32 }, - { MESA_FORMAT_RGBA_FLOAT16, _mesa_texstore_rgba_float16 }, - { MESA_FORMAT_RGB_FLOAT32, _mesa_texstore_rgba_float32 }, - { MESA_FORMAT_RGB_FLOAT16, _mesa_texstore_rgba_float16 }, - { MESA_FORMAT_ALPHA_FLOAT32, _mesa_texstore_rgba_float32 }, - { MESA_FORMAT_ALPHA_FLOAT16, _mesa_texstore_rgba_float16 }, - { MESA_FORMAT_LUMINANCE_FLOAT32, _mesa_texstore_rgba_float32 }, - { MESA_FORMAT_LUMINANCE_FLOAT16, _mesa_texstore_rgba_float16 }, - { MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32, _mesa_texstore_rgba_float32 }, - { MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16, _mesa_texstore_rgba_float16 }, - { MESA_FORMAT_INTENSITY_FLOAT32, _mesa_texstore_rgba_float32 }, - { MESA_FORMAT_INTENSITY_FLOAT16, _mesa_texstore_rgba_float16 }, - { MESA_FORMAT_R_FLOAT32, _mesa_texstore_rgba_float32 }, - { MESA_FORMAT_R_FLOAT16, _mesa_texstore_rgba_float16 }, - { MESA_FORMAT_RG_FLOAT32, _mesa_texstore_rgba_float32 }, - { MESA_FORMAT_RG_FLOAT16, _mesa_texstore_rgba_float16 }, - - { MESA_FORMAT_RGBA_INT8, _mesa_texstore_rgba_int8 }, - { MESA_FORMAT_RGBA_INT16, _mesa_texstore_rgba_int16 }, - { MESA_FORMAT_RGBA_INT32, _mesa_texstore_rgba_int32 }, - { MESA_FORMAT_RGBA_UINT8, _mesa_texstore_rgba_uint8 }, - { MESA_FORMAT_RGBA_UINT16, _mesa_texstore_rgba_uint16 }, - { MESA_FORMAT_RGBA_UINT32, _mesa_texstore_rgba_uint32 }, - - { MESA_FORMAT_DUDV8, _mesa_texstore_dudv8 }, - - { MESA_FORMAT_SIGNED_R8, _mesa_texstore_snorm8 }, - { MESA_FORMAT_SIGNED_RG88_REV, _mesa_texstore_snorm88 }, - { MESA_FORMAT_SIGNED_RGBX8888, _mesa_texstore_signed_rgbx8888 }, - - { MESA_FORMAT_SIGNED_RGBA8888, _mesa_texstore_signed_rgba8888 }, - { MESA_FORMAT_SIGNED_RGBA8888_REV, _mesa_texstore_signed_rgba8888 }, - - { MESA_FORMAT_SIGNED_R16, _mesa_texstore_snorm16 }, - { MESA_FORMAT_SIGNED_GR1616, _mesa_texstore_snorm1616 }, - { MESA_FORMAT_SIGNED_RGB_16, _mesa_texstore_signed_rgba_16 }, - { MESA_FORMAT_SIGNED_RGBA_16, _mesa_texstore_signed_rgba_16 }, - { MESA_FORMAT_RGBA_16, _mesa_texstore_rgba_16 }, - - { MESA_FORMAT_RED_RGTC1, _mesa_texstore_red_rgtc1 }, - { MESA_FORMAT_SIGNED_RED_RGTC1, _mesa_texstore_signed_red_rgtc1 }, - { MESA_FORMAT_RG_RGTC2, _mesa_texstore_rg_rgtc2 }, - { MESA_FORMAT_SIGNED_RG_RGTC2, _mesa_texstore_signed_rg_rgtc2 }, - - /* Re-use the R/RG texstore functions. - * The code is generic enough to handle LATC too. */ - { MESA_FORMAT_L_LATC1, _mesa_texstore_red_rgtc1 }, - { MESA_FORMAT_SIGNED_L_LATC1, _mesa_texstore_signed_red_rgtc1 }, - { MESA_FORMAT_LA_LATC2, _mesa_texstore_rg_rgtc2 }, - { MESA_FORMAT_SIGNED_LA_LATC2, _mesa_texstore_signed_rg_rgtc2 }, - - { MESA_FORMAT_SIGNED_A8, _mesa_texstore_snorm8 }, - { MESA_FORMAT_SIGNED_L8, _mesa_texstore_snorm8 }, - { MESA_FORMAT_SIGNED_AL88, _mesa_texstore_snorm88 }, - { MESA_FORMAT_SIGNED_I8, _mesa_texstore_snorm8 }, - - { MESA_FORMAT_SIGNED_A16, _mesa_texstore_snorm16 }, - { MESA_FORMAT_SIGNED_L16, _mesa_texstore_snorm16 }, - { MESA_FORMAT_SIGNED_AL1616, _mesa_texstore_snorm1616 }, - { MESA_FORMAT_SIGNED_I16, _mesa_texstore_snorm16 }, - - { MESA_FORMAT_RGB9_E5_FLOAT, _mesa_texstore_rgb9_e5 }, - { MESA_FORMAT_R11_G11_B10_FLOAT, _mesa_texstore_r11_g11_b10f }, - - { MESA_FORMAT_Z32_FLOAT, _mesa_texstore_z32 }, - { MESA_FORMAT_Z32_FLOAT_X24S8, _mesa_texstore_z32f_x24s8 }, -}; - - static GLboolean _mesa_texstore_null(TEXSTORE_PARAMS) { @@ -4472,18 +4376,177 @@ _mesa_texstore_null(TEXSTORE_PARAMS) static StoreTexImageFunc _mesa_get_texstore_func(gl_format format) { -#ifdef DEBUG - GLuint i; - for (i = 0; i < MESA_FORMAT_COUNT; i++) { - ASSERT(texstore_funcs[i].Name == i); + static StoreTexImageFunc table[MESA_FORMAT_COUNT]; + static GLboolean initialized = GL_FALSE; + + if (!initialized) { + table[MESA_FORMAT_NONE] = _mesa_texstore_null; + + table[MESA_FORMAT_RGBA8888] = _mesa_texstore_rgba8888; + table[MESA_FORMAT_RGBA8888_REV] = _mesa_texstore_rgba8888; + table[MESA_FORMAT_ARGB8888] = _mesa_texstore_argb8888; + table[MESA_FORMAT_ARGB8888_REV] = _mesa_texstore_argb8888; + table[MESA_FORMAT_XRGB8888] = _mesa_texstore_argb8888; + table[MESA_FORMAT_XRGB8888_REV] = _mesa_texstore_argb8888; + table[MESA_FORMAT_RGB888] = _mesa_texstore_rgb888; + table[MESA_FORMAT_BGR888] = _mesa_texstore_bgr888; + table[MESA_FORMAT_RGB565] = _mesa_texstore_rgb565; + table[MESA_FORMAT_RGB565_REV] = _mesa_texstore_rgb565; + table[MESA_FORMAT_ARGB4444] = _mesa_texstore_argb4444; + table[MESA_FORMAT_ARGB4444_REV] = _mesa_texstore_argb4444; + table[MESA_FORMAT_RGBA5551] = _mesa_texstore_rgba5551; + table[MESA_FORMAT_ARGB1555] = _mesa_texstore_argb1555; + table[MESA_FORMAT_ARGB1555_REV] = _mesa_texstore_argb1555; + table[MESA_FORMAT_AL44] = _mesa_texstore_unorm44; + table[MESA_FORMAT_AL88] = _mesa_texstore_unorm88; + table[MESA_FORMAT_AL88_REV] = _mesa_texstore_unorm88; + table[MESA_FORMAT_AL1616] = _mesa_texstore_unorm1616; + table[MESA_FORMAT_AL1616_REV] = _mesa_texstore_unorm1616; + table[MESA_FORMAT_RGB332] = _mesa_texstore_rgb332; + table[MESA_FORMAT_A8] = _mesa_texstore_unorm8; + table[MESA_FORMAT_A16] = _mesa_texstore_unorm16; + table[MESA_FORMAT_L8] = _mesa_texstore_unorm8; + table[MESA_FORMAT_L16] = _mesa_texstore_unorm16; + table[MESA_FORMAT_I8] = _mesa_texstore_unorm8; + table[MESA_FORMAT_I16] = _mesa_texstore_unorm16; + table[MESA_FORMAT_YCBCR] = _mesa_texstore_ycbcr; + table[MESA_FORMAT_YCBCR_REV] = _mesa_texstore_ycbcr; + table[MESA_FORMAT_R8] = _mesa_texstore_unorm8; + table[MESA_FORMAT_RG88] = _mesa_texstore_unorm88; + table[MESA_FORMAT_RG88_REV] = _mesa_texstore_unorm88; + table[MESA_FORMAT_R16] = _mesa_texstore_unorm16; + table[MESA_FORMAT_RG1616] = _mesa_texstore_unorm1616; + table[MESA_FORMAT_RG1616_REV] = _mesa_texstore_unorm1616; + table[MESA_FORMAT_ARGB2101010] = _mesa_texstore_argb2101010; + table[MESA_FORMAT_Z24_S8] = _mesa_texstore_z24_s8; + table[MESA_FORMAT_S8_Z24] = _mesa_texstore_s8_z24; + table[MESA_FORMAT_Z16] = _mesa_texstore_z16; + table[MESA_FORMAT_X8_Z24] = _mesa_texstore_x8_z24; + table[MESA_FORMAT_Z24_X8] = _mesa_texstore_z24_x8; + table[MESA_FORMAT_Z32] = _mesa_texstore_z32; + table[MESA_FORMAT_S8] = _mesa_texstore_s8; + table[MESA_FORMAT_SRGB8] = _mesa_texstore_srgb8; + table[MESA_FORMAT_SRGBA8] = _mesa_texstore_srgba8; + table[MESA_FORMAT_SARGB8] = _mesa_texstore_sargb8; + table[MESA_FORMAT_SL8] = _mesa_texstore_sl8; + table[MESA_FORMAT_SLA8] = _mesa_texstore_sla8; + table[MESA_FORMAT_SRGB_DXT1] = _mesa_texstore_rgb_dxt1; + table[MESA_FORMAT_SRGBA_DXT1] = _mesa_texstore_rgba_dxt1; + table[MESA_FORMAT_SRGBA_DXT3] = _mesa_texstore_rgba_dxt3; + table[MESA_FORMAT_SRGBA_DXT5] = _mesa_texstore_rgba_dxt5; + table[MESA_FORMAT_RGB_FXT1] = _mesa_texstore_rgb_fxt1; + table[MESA_FORMAT_RGBA_FXT1] = _mesa_texstore_rgba_fxt1; + table[MESA_FORMAT_RGB_DXT1] = _mesa_texstore_rgb_dxt1; + table[MESA_FORMAT_RGBA_DXT1] = _mesa_texstore_rgba_dxt1; + table[MESA_FORMAT_RGBA_DXT3] = _mesa_texstore_rgba_dxt3; + table[MESA_FORMAT_RGBA_DXT5] = _mesa_texstore_rgba_dxt5; + table[MESA_FORMAT_RGBA_FLOAT32] = _mesa_texstore_rgba_float32; + table[MESA_FORMAT_RGBA_FLOAT16] = _mesa_texstore_rgba_float16; + table[MESA_FORMAT_RGB_FLOAT32] = _mesa_texstore_rgba_float32; + table[MESA_FORMAT_RGB_FLOAT16] = _mesa_texstore_rgba_float16; + table[MESA_FORMAT_ALPHA_FLOAT32] = _mesa_texstore_rgba_float32; + table[MESA_FORMAT_ALPHA_FLOAT16] = _mesa_texstore_rgba_float16; + table[MESA_FORMAT_LUMINANCE_FLOAT32] = _mesa_texstore_rgba_float32; + table[MESA_FORMAT_LUMINANCE_FLOAT16] = _mesa_texstore_rgba_float16; + table[MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32] = _mesa_texstore_rgba_float32; + table[MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16] = _mesa_texstore_rgba_float16; + table[MESA_FORMAT_INTENSITY_FLOAT32] = _mesa_texstore_rgba_float32; + table[MESA_FORMAT_INTENSITY_FLOAT16] = _mesa_texstore_rgba_float16; + table[MESA_FORMAT_R_FLOAT32] = _mesa_texstore_rgba_float32; + table[MESA_FORMAT_R_FLOAT16] = _mesa_texstore_rgba_float16; + table[MESA_FORMAT_RG_FLOAT32] = _mesa_texstore_rgba_float32; + table[MESA_FORMAT_RG_FLOAT16] = _mesa_texstore_rgba_float16; + table[MESA_FORMAT_DUDV8] = _mesa_texstore_dudv8; + table[MESA_FORMAT_SIGNED_R8] = _mesa_texstore_snorm8; + table[MESA_FORMAT_SIGNED_RG88_REV] = _mesa_texstore_snorm88; + table[MESA_FORMAT_SIGNED_RGBX8888] = _mesa_texstore_signed_rgbx8888; + table[MESA_FORMAT_SIGNED_RGBA8888] = _mesa_texstore_signed_rgba8888; + table[MESA_FORMAT_SIGNED_RGBA8888_REV] = _mesa_texstore_signed_rgba8888; + table[MESA_FORMAT_SIGNED_R16] = _mesa_texstore_snorm16; + table[MESA_FORMAT_SIGNED_GR1616] = _mesa_texstore_snorm1616; + table[MESA_FORMAT_SIGNED_RGB_16] = _mesa_texstore_signed_rgba_16; + table[MESA_FORMAT_SIGNED_RGBA_16] = _mesa_texstore_signed_rgba_16; + table[MESA_FORMAT_RGBA_16] = _mesa_texstore_rgba_16; + table[MESA_FORMAT_RED_RGTC1] = _mesa_texstore_red_rgtc1; + table[MESA_FORMAT_SIGNED_RED_RGTC1] = _mesa_texstore_signed_red_rgtc1; + table[MESA_FORMAT_RG_RGTC2] = _mesa_texstore_rg_rgtc2; + table[MESA_FORMAT_SIGNED_RG_RGTC2] = _mesa_texstore_signed_rg_rgtc2; + table[MESA_FORMAT_L_LATC1] = _mesa_texstore_red_rgtc1; + table[MESA_FORMAT_SIGNED_L_LATC1] = _mesa_texstore_signed_red_rgtc1; + table[MESA_FORMAT_LA_LATC2] = _mesa_texstore_rg_rgtc2; + table[MESA_FORMAT_SIGNED_LA_LATC2] = _mesa_texstore_signed_rg_rgtc2; + table[MESA_FORMAT_SIGNED_A8] = _mesa_texstore_snorm8; + table[MESA_FORMAT_SIGNED_L8] = _mesa_texstore_snorm8; + table[MESA_FORMAT_SIGNED_AL88] = _mesa_texstore_snorm88; + table[MESA_FORMAT_SIGNED_I8] = _mesa_texstore_snorm8; + table[MESA_FORMAT_SIGNED_A16] = _mesa_texstore_snorm16; + table[MESA_FORMAT_SIGNED_L16] = _mesa_texstore_snorm16; + table[MESA_FORMAT_SIGNED_AL1616] = _mesa_texstore_snorm1616; + table[MESA_FORMAT_SIGNED_I16] = _mesa_texstore_snorm16; + table[MESA_FORMAT_RGB9_E5_FLOAT] = _mesa_texstore_rgb9_e5; + table[MESA_FORMAT_R11_G11_B10_FLOAT] = _mesa_texstore_r11_g11_b10f; + table[MESA_FORMAT_Z32_FLOAT] = _mesa_texstore_z32; + table[MESA_FORMAT_Z32_FLOAT_X24S8] = _mesa_texstore_z32f_x24s8; + + table[MESA_FORMAT_ALPHA_UINT8] = _mesa_texstore_rgba_uint8; + table[MESA_FORMAT_ALPHA_UINT16] = _mesa_texstore_rgba_uint16; + table[MESA_FORMAT_ALPHA_UINT32] = _mesa_texstore_rgba_uint32; + table[MESA_FORMAT_ALPHA_INT8] = _mesa_texstore_rgba_int8; + table[MESA_FORMAT_ALPHA_INT16] = _mesa_texstore_rgba_int16; + table[MESA_FORMAT_ALPHA_INT32] = _mesa_texstore_rgba_int32; + + table[MESA_FORMAT_INTENSITY_UINT8] = _mesa_texstore_rgba_uint8; + table[MESA_FORMAT_INTENSITY_UINT16] = _mesa_texstore_rgba_uint16; + table[MESA_FORMAT_INTENSITY_UINT32] = _mesa_texstore_rgba_uint32; + table[MESA_FORMAT_INTENSITY_INT8] = _mesa_texstore_rgba_int8; + table[MESA_FORMAT_INTENSITY_INT16] = _mesa_texstore_rgba_int16; + table[MESA_FORMAT_INTENSITY_INT32] = _mesa_texstore_rgba_int32; + + table[MESA_FORMAT_LUMINANCE_UINT8] = _mesa_texstore_rgba_uint8; + table[MESA_FORMAT_LUMINANCE_UINT16] = _mesa_texstore_rgba_uint16; + table[MESA_FORMAT_LUMINANCE_UINT32] = _mesa_texstore_rgba_uint32; + table[MESA_FORMAT_LUMINANCE_INT8] = _mesa_texstore_rgba_int8; + table[MESA_FORMAT_LUMINANCE_INT16] = _mesa_texstore_rgba_int16; + table[MESA_FORMAT_LUMINANCE_INT32] = _mesa_texstore_rgba_int32; + + table[MESA_FORMAT_LUMINANCE_ALPHA_UINT8] = _mesa_texstore_rgba_uint8; + table[MESA_FORMAT_LUMINANCE_ALPHA_UINT16] = _mesa_texstore_rgba_uint16; + table[MESA_FORMAT_LUMINANCE_ALPHA_UINT32] = _mesa_texstore_rgba_uint32; + table[MESA_FORMAT_LUMINANCE_ALPHA_INT8] = _mesa_texstore_rgba_int8; + table[MESA_FORMAT_LUMINANCE_ALPHA_INT16] = _mesa_texstore_rgba_int16; + table[MESA_FORMAT_LUMINANCE_ALPHA_INT32] = _mesa_texstore_rgba_int32; + + table[MESA_FORMAT_R_INT8] = _mesa_texstore_rgba_int8; + table[MESA_FORMAT_RG_INT8] = _mesa_texstore_rgba_int8; + table[MESA_FORMAT_RGB_INT8] = _mesa_texstore_rgba_int8; + table[MESA_FORMAT_RGBA_INT8] = _mesa_texstore_rgba_int8; + table[MESA_FORMAT_R_INT16] = _mesa_texstore_rgba_int16; + table[MESA_FORMAT_RG_INT16] = _mesa_texstore_rgba_int16; + table[MESA_FORMAT_RGB_INT16] = _mesa_texstore_rgba_int16; + table[MESA_FORMAT_RGBA_INT16] = _mesa_texstore_rgba_int16; + table[MESA_FORMAT_R_INT32] = _mesa_texstore_rgba_int32; + table[MESA_FORMAT_RG_INT32] = _mesa_texstore_rgba_int32; + table[MESA_FORMAT_RGB_INT32] = _mesa_texstore_rgba_int32; + table[MESA_FORMAT_RGBA_INT32] = _mesa_texstore_rgba_int32; + + table[MESA_FORMAT_R_UINT8] = _mesa_texstore_rgba_uint8; + table[MESA_FORMAT_RG_UINT8] = _mesa_texstore_rgba_uint8; + table[MESA_FORMAT_RGB_UINT8] = _mesa_texstore_rgba_uint8; + table[MESA_FORMAT_RGBA_UINT8] = _mesa_texstore_rgba_uint8; + table[MESA_FORMAT_R_UINT16] = _mesa_texstore_rgba_uint16; + table[MESA_FORMAT_RG_UINT16] = _mesa_texstore_rgba_uint16; + table[MESA_FORMAT_RGB_UINT16] = _mesa_texstore_rgba_uint16; + table[MESA_FORMAT_RGBA_UINT16] = _mesa_texstore_rgba_uint16; + table[MESA_FORMAT_R_UINT32] = _mesa_texstore_rgba_uint32; + table[MESA_FORMAT_RG_UINT32] = _mesa_texstore_rgba_uint32; + table[MESA_FORMAT_RGB_UINT32] = _mesa_texstore_rgba_uint32; + table[MESA_FORMAT_RGBA_UINT32] = _mesa_texstore_rgba_uint32; + + initialized = GL_TRUE; } -#endif - ASSERT(texstore_funcs[format].Name == format); - if (texstore_funcs[format].Store) - return texstore_funcs[format].Store; - else - return _mesa_texstore_null; + ASSERT(table[format]); + return table[format]; } @@ -4626,22 +4689,53 @@ _mesa_store_teximage2d(struct gl_context *ctx, GLenum target, GLint level, return; } - /* Map dest texture buffer (write to whole region) */ - ctx->Driver.MapTextureImage(ctx, texImage, 0, - 0, 0, width, height, - rwMode, - &dstMap, &dstRowStride); - assert(dstMap); - success = _mesa_texstore(ctx, 2, texImage->_BaseFormat, - texImage->TexFormat, - dstMap, - 0, 0, 0, /* dstX/Y/Zoffset */ - dstRowStride, - &zeroImageOffset, - width, height, 1, - format, type, pixels, packing); - - ctx->Driver.UnmapTextureImage(ctx, texImage, 0); + if (target == GL_TEXTURE_1D_ARRAY) { + const GLint srcStride = + _mesa_image_row_stride(packing, width, format, type); + int y; + + success = GL_TRUE; + + for (y = 0; y < height; y++) { + /* Map dest texture buffer (write to whole region) */ + ctx->Driver.MapTextureImage(ctx, texImage, y, + 0, 0, width, 1, + rwMode, + &dstMap, &dstRowStride); + assert(dstMap); + success = _mesa_texstore(ctx, 2, texImage->_BaseFormat, + texImage->TexFormat, + dstMap, + 0, 0, 0, /* dstX/Y/Zoffset */ + dstRowStride, + &zeroImageOffset, + width, 1, 1, + format, type, pixels, packing); + ctx->Driver.UnmapTextureImage(ctx, texImage, y); + + if (!success) + break; + + pixels = (const GLubyte *) pixels + srcStride; + } + } else { + /* Map dest texture buffer (write to whole region) */ + ctx->Driver.MapTextureImage(ctx, texImage, 0, + 0, 0, width, height, + rwMode, + &dstMap, &dstRowStride); + assert(dstMap); + success = _mesa_texstore(ctx, 2, texImage->_BaseFormat, + texImage->TexFormat, + dstMap, + 0, 0, 0, /* dstX/Y/Zoffset */ + dstRowStride, + &zeroImageOffset, + width, height, 1, + format, type, pixels, packing); + + ctx->Driver.UnmapTextureImage(ctx, texImage, 0); + } if (!success) _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage2D"); @@ -4691,6 +4785,11 @@ _mesa_store_teximage3d(struct gl_context *ctx, GLenum target, GLint level, return; } + if (target == GL_TEXTURE_1D_ARRAY) { + depth = height; + height = 1; + } + sliceMaps = (GLubyte **) malloc(depth * sizeof(GLubyte *)); dstImageOffsets = (GLuint *) malloc(depth * sizeof(GLuint)); diff --git a/mesalib/src/mesa/main/transformfeedback.h b/mesalib/src/mesa/main/transformfeedback.h index add8d22d6..9447effa9 100644 --- a/mesalib/src/mesa/main/transformfeedback.h +++ b/mesalib/src/mesa/main/transformfeedback.h @@ -1,137 +1,137 @@ -/* - * Mesa 3-D graphics library - * - * Copyright (C) 2010 VMware, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -#ifndef TRANSFORM_FEEDBACK_H -#define TRANSFORM_FEEDBACK_H - -#include "compiler.h" -#include "glheader.h" -#include "mfeatures.h" - -struct _glapi_table; -struct dd_function_table; -struct gl_context; - -extern void -_mesa_init_transform_feedback(struct gl_context *ctx); - -extern void -_mesa_free_transform_feedback(struct gl_context *ctx); - -#if FEATURE_EXT_transform_feedback - -extern GLboolean -_mesa_validate_primitive_mode(struct gl_context *ctx, GLenum mode); - -extern GLboolean -_mesa_validate_transform_feedback_buffers(struct gl_context *ctx); - - -extern void -_mesa_init_transform_feedback_functions(struct dd_function_table *driver); - -extern void -_mesa_init_transform_feedback_dispatch(struct _glapi_table *disp); - - -/*** GL_EXT_transform_feedback ***/ - -extern void GLAPIENTRY -_mesa_BeginTransformFeedback(GLenum mode); - -extern void GLAPIENTRY -_mesa_EndTransformFeedback(void); - -extern void GLAPIENTRY -_mesa_BindBufferRange(GLenum target, GLuint index, - GLuint buffer, GLintptr offset, GLsizeiptr size); - -extern void GLAPIENTRY -_mesa_BindBufferBase(GLenum target, GLuint index, GLuint buffer); - -extern void GLAPIENTRY -_mesa_BindBufferOffsetEXT(GLenum target, GLuint index, GLuint buffer, - GLintptr offset); - -extern void GLAPIENTRY -_mesa_TransformFeedbackVaryings(GLuint program, GLsizei count, - const GLchar **varyings, GLenum bufferMode); - -extern void GLAPIENTRY -_mesa_GetTransformFeedbackVarying(GLuint program, GLuint index, - GLsizei bufSize, GLsizei *length, - GLsizei *size, GLenum *type, GLchar *name); - - - -/*** GL_ARB_transform_feedback2 ***/ - -extern void GLAPIENTRY -_mesa_GenTransformFeedbacks(GLsizei n, GLuint *names); - -extern GLboolean GLAPIENTRY -_mesa_IsTransformFeedback(GLuint name); - -extern void GLAPIENTRY -_mesa_BindTransformFeedback(GLenum target, GLuint name); - -extern void GLAPIENTRY -_mesa_DeleteTransformFeedbacks(GLsizei n, const GLuint *names); - -extern void GLAPIENTRY -_mesa_PauseTransformFeedback(void); - -extern void GLAPIENTRY -_mesa_ResumeTransformFeedback(void); - -extern void GLAPIENTRY -_mesa_DrawTransformFeedback(GLenum mode, GLuint name); - -#else /* FEATURE_EXT_transform_feedback */ - -static INLINE GLboolean -_mesa_validate_primitive_mode(struct gl_context *ctx, GLenum mode) -{ - return GL_TRUE; -} - -static INLINE GLboolean -_mesa_validate_transform_feedback_buffers(struct gl_context *ctx) -{ - return GL_TRUE; -} - -static INLINE void -_mesa_init_transform_feedback_functions(struct dd_function_table *driver) -{ -} - -static INLINE void -_mesa_init_transform_feedback_dispatch(struct _glapi_table *disp) -{ -} - -#endif /* FEATURE_EXT_transform_feedback */ - -#endif /* TRANSFORM_FEEDBACK_H */ +/* + * Mesa 3-D graphics library + * + * Copyright (C) 2010 VMware, Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +#ifndef TRANSFORM_FEEDBACK_H +#define TRANSFORM_FEEDBACK_H + +#include "compiler.h" +#include "glheader.h" +#include "mfeatures.h" + +struct _glapi_table; +struct dd_function_table; +struct gl_context; + +extern void +_mesa_init_transform_feedback(struct gl_context *ctx); + +extern void +_mesa_free_transform_feedback(struct gl_context *ctx); + +#if FEATURE_EXT_transform_feedback + +extern GLboolean +_mesa_validate_primitive_mode(struct gl_context *ctx, GLenum mode); + +extern GLboolean +_mesa_validate_transform_feedback_buffers(struct gl_context *ctx); + + +extern void +_mesa_init_transform_feedback_functions(struct dd_function_table *driver); + +extern void +_mesa_init_transform_feedback_dispatch(struct _glapi_table *disp); + + +/*** GL_EXT_transform_feedback ***/ + +extern void GLAPIENTRY +_mesa_BeginTransformFeedback(GLenum mode); + +extern void GLAPIENTRY +_mesa_EndTransformFeedback(void); + +extern void GLAPIENTRY +_mesa_BindBufferRange(GLenum target, GLuint index, + GLuint buffer, GLintptr offset, GLsizeiptr size); + +extern void GLAPIENTRY +_mesa_BindBufferBase(GLenum target, GLuint index, GLuint buffer); + +extern void GLAPIENTRY +_mesa_BindBufferOffsetEXT(GLenum target, GLuint index, GLuint buffer, + GLintptr offset); + +extern void GLAPIENTRY +_mesa_TransformFeedbackVaryings(GLuint program, GLsizei count, + const GLchar **varyings, GLenum bufferMode); + +extern void GLAPIENTRY +_mesa_GetTransformFeedbackVarying(GLuint program, GLuint index, + GLsizei bufSize, GLsizei *length, + GLsizei *size, GLenum *type, GLchar *name); + + + +/*** GL_ARB_transform_feedback2 ***/ + +extern void GLAPIENTRY +_mesa_GenTransformFeedbacks(GLsizei n, GLuint *names); + +extern GLboolean GLAPIENTRY +_mesa_IsTransformFeedback(GLuint name); + +extern void GLAPIENTRY +_mesa_BindTransformFeedback(GLenum target, GLuint name); + +extern void GLAPIENTRY +_mesa_DeleteTransformFeedbacks(GLsizei n, const GLuint *names); + +extern void GLAPIENTRY +_mesa_PauseTransformFeedback(void); + +extern void GLAPIENTRY +_mesa_ResumeTransformFeedback(void); + +extern void GLAPIENTRY +_mesa_DrawTransformFeedback(GLenum mode, GLuint name); + +#else /* FEATURE_EXT_transform_feedback */ + +static inline GLboolean +_mesa_validate_primitive_mode(struct gl_context *ctx, GLenum mode) +{ + return GL_TRUE; +} + +static inline GLboolean +_mesa_validate_transform_feedback_buffers(struct gl_context *ctx) +{ + return GL_TRUE; +} + +static inline void +_mesa_init_transform_feedback_functions(struct dd_function_table *driver) +{ +} + +static inline void +_mesa_init_transform_feedback_dispatch(struct _glapi_table *disp) +{ +} + +#endif /* FEATURE_EXT_transform_feedback */ + +#endif /* TRANSFORM_FEEDBACK_H */ diff --git a/mesalib/src/mesa/main/varray.h b/mesalib/src/mesa/main/varray.h index 1c423200f..6fcc0a336 100644 --- a/mesalib/src/mesa/main/varray.h +++ b/mesalib/src/mesa/main/varray.h @@ -41,7 +41,7 @@ struct gl_context; * The array->_MaxElement field will be updated. * Later in glDrawArrays/Elements/etc we can do some bounds checking. */ -static INLINE void +static inline void _mesa_update_array_max_element(struct gl_client_array *array) { assert(array->Enabled); diff --git a/mesalib/src/mesa/main/version.c b/mesalib/src/mesa/main/version.c index a996c145b..17c060059 100644 --- a/mesalib/src/mesa/main/version.c +++ b/mesalib/src/mesa/main/version.c @@ -104,7 +104,6 @@ compute_version(struct gl_context *ctx) ctx->Extensions.ARB_occlusion_query && ctx->Extensions.EXT_shadow_funcs); const GLboolean ver_2_0 = (ver_1_5 && - ctx->Extensions.ARB_draw_buffers && ctx->Extensions.ARB_point_sprite && ctx->Extensions.ARB_shader_objects && ctx->Extensions.ARB_vertex_shader && diff --git a/mesalib/src/mesa/main/vtxfmt.h b/mesalib/src/mesa/main/vtxfmt.h index d403669c2..aac656879 100644 --- a/mesalib/src/mesa/main/vtxfmt.h +++ b/mesalib/src/mesa/main/vtxfmt.h @@ -1,59 +1,59 @@ -/** - * \file vtxfmt.h - * - * \author Keith Whitwell - * \author Gareth Hughes - */ - -/* - * Mesa 3-D graphics library - * Version: 6.1 - * - * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -#ifndef _VTXFMT_H_ -#define _VTXFMT_H_ - -#include "compiler.h" -#include "mfeatures.h" -#include "mtypes.h" - -#if FEATURE_beginend - -extern void _mesa_install_exec_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt ); -extern void _mesa_install_save_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt ); - -#else /* FEATURE_beginend */ - -static INLINE void -_mesa_install_exec_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt ) -{ -} - -static INLINE void -_mesa_install_save_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt ) -{ -} - -#endif /* FEATURE_beginend */ - -#endif /* _VTXFMT_H_ */ +/** + * \file vtxfmt.h + * + * \author Keith Whitwell + * \author Gareth Hughes + */ + +/* + * Mesa 3-D graphics library + * Version: 6.1 + * + * Copyright (C) 1999-2004 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +#ifndef _VTXFMT_H_ +#define _VTXFMT_H_ + +#include "compiler.h" +#include "mfeatures.h" +#include "mtypes.h" + +#if FEATURE_beginend + +extern void _mesa_install_exec_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt ); +extern void _mesa_install_save_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt ); + +#else /* FEATURE_beginend */ + +static inline void +_mesa_install_exec_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt ) +{ +} + +static inline void +_mesa_install_save_vtxfmt( struct gl_context *ctx, const GLvertexformat *vfmt ) +{ +} + +#endif /* FEATURE_beginend */ + +#endif /* _VTXFMT_H_ */ diff --git a/mesalib/src/mesa/program/hash_table.c b/mesalib/src/mesa/program/hash_table.c index 877a9e2ff..dc8563a33 100644 --- a/mesalib/src/mesa/program/hash_table.c +++ b/mesalib/src/mesa/program/hash_table.c @@ -108,8 +108,8 @@ hash_table_clear(struct hash_table *ht) } -void * -hash_table_find(struct hash_table *ht, const void *key) +static struct hash_node * +get_node(struct hash_table *ht, const void *key) { const unsigned hash_value = (*ht->hash)(key); const unsigned bucket = hash_value % ht->num_buckets; @@ -119,13 +119,20 @@ hash_table_find(struct hash_table *ht, const void *key) struct hash_node *hn = (struct hash_node *) node; if ((*ht->compare)(hn->key, key) == 0) { - return hn->data; + return hn; } } return NULL; } +void * +hash_table_find(struct hash_table *ht, const void *key) +{ + struct hash_node *hn = get_node(ht, key); + + return (hn == NULL) ? NULL : hn->data; +} void hash_table_insert(struct hash_table *ht, void *data, const void *key) @@ -143,21 +150,39 @@ hash_table_insert(struct hash_table *ht, void *data, const void *key) } void -hash_table_remove(struct hash_table *ht, const void *key) +hash_table_replace(struct hash_table *ht, void *data, const void *key) { const unsigned hash_value = (*ht->hash)(key); const unsigned bucket = hash_value % ht->num_buckets; struct node *node; + struct hash_node *hn; foreach(node, & ht->buckets[bucket]) { - struct hash_node *hn = (struct hash_node *) node; + hn = (struct hash_node *) node; if ((*ht->compare)(hn->key, key) == 0) { - remove_from_list(node); - free(node); + hn->data = data; return; } } + + hn = calloc(1, sizeof(*hn)); + + hn->data = data; + hn->key = key; + + insert_at_head(& ht->buckets[bucket], & hn->link); +} + +void +hash_table_remove(struct hash_table *ht, const void *key) +{ + struct node *node = (struct node *) get_node(ht, key); + if (node != NULL) { + remove_from_list(node); + free(node); + return; + } } void diff --git a/mesalib/src/mesa/program/hash_table.h b/mesalib/src/mesa/program/hash_table.h index e715bb1cc..bfe221b24 100644 --- a/mesalib/src/mesa/program/hash_table.h +++ b/mesalib/src/mesa/program/hash_table.h @@ -31,7 +31,13 @@ #ifndef HASH_TABLE_H #define HASH_TABLE_H +#include +#include +#include +#include + struct hash_table; +struct string_to_uint_map; typedef unsigned (*hash_func_t)(const void *key); typedef int (*hash_compare_func_t)(const void *key1, const void *key2); @@ -88,10 +94,30 @@ extern void *hash_table_find(struct hash_table *ht, const void *key); /** * Add an element to a hash table + * + * \warning + * If \c key is already in the hash table, it will be added again. Future + * calls to \c hash_table_find and \c hash_table_remove will return or remove, + * repsectively, the most recently added instance of \c key. + * + * \sa hash_table_replace */ extern void hash_table_insert(struct hash_table *ht, void *data, const void *key); +/** + * Add an element to a hash table with replacement + * + * \warning + * If \c key is already in the hash table, \c data will \b replace the most + * recently inserted \c data (see the warning in \c hash_table_insert) for + * that key. + * + * \sa hash_table_insert + */ +extern void hash_table_replace(struct hash_table *ht, void *data, + const void *key); + /** * Remove a specific element from a hash table. */ @@ -151,7 +177,78 @@ hash_table_call_foreach(struct hash_table *ht, void *closure), void *closure); +struct string_to_uint_map * +string_to_uint_map_ctor(); + +void +string_to_uint_map_dtor(struct string_to_uint_map *); + + #ifdef __cplusplus } -#endif + +/** + * Map from a string (name) to an unsigned integer value + * + * \note + * Because of the way this class interacts with the \c hash_table + * implementation, values of \c UINT_MAX cannot be stored in the map. + */ +struct string_to_uint_map { +public: + string_to_uint_map() + { + this->ht = hash_table_ctor(0, hash_table_string_hash, + hash_table_string_compare); + } + + ~string_to_uint_map() + { + hash_table_dtor(this->ht); + } + + /** + * Get the value associated with a particular key + * + * \return + * If \c key is found in the map, \c true is returned. Otherwise \c false + * is returned. + * + * \note + * If \c key is not found in the table, \c value is not modified. + */ + bool get(unsigned &value, const char *key) + { + const intptr_t v = + (intptr_t) hash_table_find(this->ht, (const void *) key); + + if (v == 0) + return false; + + value = (unsigned)(v - 1); + return true; + } + + void put(unsigned value, const char *key) + { + /* The low-level hash table structure returns NULL if key is not in the + * hash table. However, users of this map might want to store zero as a + * valid value in the table. Bias the value by +1 so that a + * user-specified zero is stored as 1. This enables ::get to tell the + * difference between a user-specified zero (returned as 1 by + * hash_table_find) and the key not in the table (returned as 0 by + * hash_table_find). + * + * The net effect is that we can't store UINT_MAX in the table. This is + * because UINT_MAX+1 = 0. + */ + assert(value != UINT_MAX); + hash_table_replace(ht, (void *) (intptr_t) (value + 1), key); + } + +private: + struct hash_table *ht; +}; + +#endif /* __cplusplus */ #endif /* HASH_TABLE_H */ diff --git a/mesalib/src/mesa/program/ir_to_mesa.cpp b/mesalib/src/mesa/program/ir_to_mesa.cpp index c5b71b3f0..2e1b8fba3 100644 --- a/mesalib/src/mesa/program/ir_to_mesa.cpp +++ b/mesalib/src/mesa/program/ir_to_mesa.cpp @@ -1261,8 +1261,11 @@ ir_to_mesa_visitor::visit(ir_expression *ir) break; case ir_binop_div: assert(!"not reached: should be handled by ir_div_to_mul_rcp"); + break; case ir_binop_mod: - assert(!"ir_binop_mod should have been converted to b * fract(a/b)"); + /* Floating point should be lowered by MOD_TO_FRACT in the compiler. */ + assert(ir->type->is_integer()); + emit(ir, OPCODE_MUL, result_dst, op[0], op[1]); break; case ir_binop_less: @@ -1556,14 +1559,6 @@ ir_to_mesa_visitor::visit(ir_dereference_variable *ir) entry = new(mem_ctx) variable_storage(var, PROGRAM_INPUT, var->location); - if (this->prog->Target == GL_VERTEX_PROGRAM_ARB && - var->location >= VERT_ATTRIB_GENERIC0) { - _mesa_add_attribute(this->prog->Attributes, - var->name, - _mesa_sizeof_glsl_type(var->type->gl_type), - var->type->gl_type, - var->location - VERT_ATTRIB_GENERIC0); - } break; case ir_var_out: assert(var->location != -1); @@ -3045,8 +3040,6 @@ get_mesa_program(struct gl_context *ctx, if (!prog) return NULL; prog->Parameters = _mesa_new_parameter_list(); - prog->Varying = _mesa_new_parameter_list(); - prog->Attributes = _mesa_new_parameter_list(); v.ctx = ctx; v.prog = prog; v.shader_program = shader_program; @@ -3434,7 +3427,6 @@ _mesa_glsl_link_shader(struct gl_context *ctx, struct gl_shader_program *prog) } } - prog->Varying = _mesa_new_parameter_list(); _mesa_reference_vertprog(ctx, &prog->VertexProgram, NULL); _mesa_reference_fragprog(ctx, &prog->FragmentProgram, NULL); _mesa_reference_geomprog(ctx, &prog->GeometryProgram, NULL); diff --git a/mesalib/src/mesa/program/prog_execute.c b/mesalib/src/mesa/program/prog_execute.c index 77f842a16..848c2fec1 100644 --- a/mesalib/src/mesa/program/prog_execute.c +++ b/mesalib/src/mesa/program/prog_execute.c @@ -84,7 +84,7 @@ static const GLfloat ZeroVec[4] = { 0.0F, 0.0F, 0.0F, 0.0F }; * Return TRUE for +0 and other positive values, FALSE otherwise. * Used for RCC opcode. */ -static INLINE GLboolean +static inline GLboolean positive(float x) { fi_type fi; @@ -100,7 +100,7 @@ positive(float x) * Return a pointer to the 4-element float vector specified by the given * source register. */ -static INLINE const GLfloat * +static inline const GLfloat * get_src_register_pointer(const struct prog_src_register *source, const struct gl_program_machine *machine) { @@ -176,7 +176,7 @@ get_src_register_pointer(const struct prog_src_register *source, * Return a pointer to the 4-element float vector specified by the given * destination register. */ -static INLINE GLfloat * +static inline GLfloat * get_dst_register_pointer(const struct prog_dst_register *dest, struct gl_program_machine *machine) { @@ -383,7 +383,7 @@ fetch_vector1ui(const struct prog_src_register *source, /** * Fetch texel from texture. Use partial derivatives when possible. */ -static INLINE void +static inline void fetch_texel(struct gl_context *ctx, const struct gl_program_machine *machine, const struct prog_instruction *inst, @@ -413,7 +413,7 @@ fetch_texel(struct gl_context *ctx, /** * Test value against zero and return GT, LT, EQ or UN if NaN. */ -static INLINE GLuint +static inline GLuint generate_cc(float value) { if (value != value) @@ -430,7 +430,7 @@ generate_cc(float value) * Test if the ccMaskRule is satisfied by the given condition code. * Used to mask destination writes according to the current condition code. */ -static INLINE GLboolean +static inline GLboolean test_cc(GLuint condCode, GLuint ccMaskRule) { switch (ccMaskRule) { @@ -451,7 +451,7 @@ test_cc(GLuint condCode, GLuint ccMaskRule) * Evaluate the 4 condition codes against a predicate and return GL_TRUE * or GL_FALSE to indicate result. */ -static INLINE GLboolean +static inline GLboolean eval_condition(const struct gl_program_machine *machine, const struct prog_instruction *inst) { diff --git a/mesalib/src/mesa/program/prog_parameter.c b/mesalib/src/mesa/program/prog_parameter.c index 49b3ffbdd..2018fa520 100644 --- a/mesalib/src/mesa/program/prog_parameter.c +++ b/mesalib/src/mesa/program/prog_parameter.c @@ -640,28 +640,6 @@ _mesa_combine_parameter_lists(const struct gl_program_parameter_list *listA, } - -/** - * Find longest name of all uniform parameters in list. - */ -GLuint -_mesa_longest_parameter_name(const struct gl_program_parameter_list *list, - gl_register_file type) -{ - GLuint i, maxLen = 0; - if (!list) - return 0; - for (i = 0; i < list->NumParameters; i++) { - if (list->Parameters[i].Type == type) { - GLuint len = strlen(list->Parameters[i].Name); - if (len > maxLen) - maxLen = len; - } - } - return maxLen; -} - - /** * Count the number of parameters in the last that match the given type. */ diff --git a/mesalib/src/mesa/program/prog_parameter.h b/mesalib/src/mesa/program/prog_parameter.h index 4c2773a62..a6793d0d8 100644 --- a/mesalib/src/mesa/program/prog_parameter.h +++ b/mesalib/src/mesa/program/prog_parameter.h @@ -114,7 +114,7 @@ extern struct gl_program_parameter_list * _mesa_combine_parameter_lists(const struct gl_program_parameter_list *a, const struct gl_program_parameter_list *b); -static INLINE GLuint +static inline GLuint _mesa_num_parameters(const struct gl_program_parameter_list *list) { return list ? list->NumParameters : 0; @@ -173,10 +173,6 @@ _mesa_lookup_parameter_constant(const struct gl_program_parameter_list *list, const gl_constant_value v[], GLuint vSize, GLint *posOut, GLuint *swizzleOut); -extern GLuint -_mesa_longest_parameter_name(const struct gl_program_parameter_list *list, - gl_register_file type); - extern GLuint _mesa_num_parameters_of_type(const struct gl_program_parameter_list *list, gl_register_file type); diff --git a/mesalib/src/mesa/program/prog_statevars.c b/mesalib/src/mesa/program/prog_statevars.c index 6aa2409e8..f34a6d360 100644 --- a/mesalib/src/mesa/program/prog_statevars.c +++ b/mesalib/src/mesa/program/prog_statevars.c @@ -664,10 +664,13 @@ _mesa_program_state_flags(const gl_state_index state[STATE_LENGTH]) { switch (state[0]) { case STATE_MATERIAL: + case STATE_LIGHTPROD: + case STATE_LIGHTMODEL_SCENECOLOR: + /* these can be effected by glColor when colormaterial mode is used */ + return _NEW_LIGHT | _NEW_CURRENT_ATTRIB; + case STATE_LIGHT: case STATE_LIGHTMODEL_AMBIENT: - case STATE_LIGHTMODEL_SCENECOLOR: - case STATE_LIGHTPROD: return _NEW_LIGHT; case STATE_TEXGEN: diff --git a/mesalib/src/mesa/program/program.c b/mesalib/src/mesa/program/program.c index ecff2344a..4d6c60b9d 100644 --- a/mesalib/src/mesa/program/program.c +++ b/mesalib/src/mesa/program/program.c @@ -394,12 +394,6 @@ _mesa_delete_program(struct gl_context *ctx, struct gl_program *prog) if (prog->Parameters) { _mesa_free_parameter_list(prog->Parameters); } - if (prog->Varying) { - _mesa_free_parameter_list(prog->Varying); - } - if (prog->Attributes) { - _mesa_free_parameter_list(prog->Attributes); - } free(prog); } @@ -522,10 +516,6 @@ _mesa_clone_program(struct gl_context *ctx, const struct gl_program *prog) if (prog->Parameters) clone->Parameters = _mesa_clone_parameter_list(prog->Parameters); memcpy(clone->LocalParams, prog->LocalParams, sizeof(clone->LocalParams)); - if (prog->Varying) - clone->Varying = _mesa_clone_parameter_list(prog->Varying); - if (prog->Attributes) - clone->Attributes = _mesa_clone_parameter_list(prog->Attributes); memcpy(clone->LocalParams, prog->LocalParams, sizeof(clone->LocalParams)); clone->IndirectRegisterFiles = prog->IndirectRegisterFiles; clone->NumInstructions = prog->NumInstructions; diff --git a/mesalib/src/mesa/program/program.h b/mesalib/src/mesa/program/program.h index 0f32a6af7..9cd1780b8 100644 --- a/mesalib/src/mesa/program/program.h +++ b/mesalib/src/mesa/program/program.h @@ -93,7 +93,7 @@ _mesa_reference_program_(struct gl_context *ctx, struct gl_program **ptr, struct gl_program *prog); -static INLINE void +static inline void _mesa_reference_program(struct gl_context *ctx, struct gl_program **ptr, struct gl_program *prog) @@ -102,7 +102,7 @@ _mesa_reference_program(struct gl_context *ctx, _mesa_reference_program_(ctx, ptr, prog); } -static INLINE void +static inline void _mesa_reference_vertprog(struct gl_context *ctx, struct gl_vertex_program **ptr, struct gl_vertex_program *prog) @@ -111,7 +111,7 @@ _mesa_reference_vertprog(struct gl_context *ctx, (struct gl_program *) prog); } -static INLINE void +static inline void _mesa_reference_fragprog(struct gl_context *ctx, struct gl_fragment_program **ptr, struct gl_fragment_program *prog) @@ -120,7 +120,7 @@ _mesa_reference_fragprog(struct gl_context *ctx, (struct gl_program *) prog); } -static INLINE void +static inline void _mesa_reference_geomprog(struct gl_context *ctx, struct gl_geometry_program **ptr, struct gl_geometry_program *prog) @@ -132,21 +132,21 @@ _mesa_reference_geomprog(struct gl_context *ctx, extern struct gl_program * _mesa_clone_program(struct gl_context *ctx, const struct gl_program *prog); -static INLINE struct gl_vertex_program * +static inline struct gl_vertex_program * _mesa_clone_vertex_program(struct gl_context *ctx, const struct gl_vertex_program *prog) { return (struct gl_vertex_program *) _mesa_clone_program(ctx, &prog->Base); } -static INLINE struct gl_geometry_program * +static inline struct gl_geometry_program * _mesa_clone_geometry_program(struct gl_context *ctx, const struct gl_geometry_program *prog) { return (struct gl_geometry_program *) _mesa_clone_program(ctx, &prog->Base); } -static INLINE struct gl_fragment_program * +static inline struct gl_fragment_program * _mesa_clone_fragment_program(struct gl_context *ctx, const struct gl_fragment_program *prog) { @@ -185,7 +185,7 @@ _mesa_postprocess_program(struct gl_context *ctx, struct gl_program *prog); /* keep these in the same order as TGSI_PROCESSOR_* */ -static INLINE GLuint +static inline GLuint _mesa_program_target_to_index(GLenum v) { switch(v) @@ -202,7 +202,7 @@ _mesa_program_target_to_index(GLenum v) } } -static INLINE GLenum +static inline GLenum _mesa_program_index_to_target(GLuint i) { GLenum enums[MESA_SHADER_TYPES] = { diff --git a/mesalib/src/mesa/program/sampler.cpp b/mesalib/src/mesa/program/sampler.cpp index e8d34c670..3b459d59c 100644 --- a/mesalib/src/mesa/program/sampler.cpp +++ b/mesalib/src/mesa/program/sampler.cpp @@ -26,6 +26,7 @@ #include "ir.h" #include "glsl_types.h" #include "ir_visitor.h" +#include "../glsl/program.h" extern "C" { #include "main/compiler.h" @@ -33,18 +34,6 @@ extern "C" { #include "program/prog_parameter.h" } -static void fail_link(struct gl_shader_program *prog, const char *fmt, ...) PRINTFLIKE(2, 3); - -static void fail_link(struct gl_shader_program *prog, const char *fmt, ...) -{ - va_list args; - va_start(args, fmt); - ralloc_vasprintf_append(&prog->InfoLog, fmt, args); - va_end(args); - - prog->LinkStatus = GL_FALSE; -} - class get_sampler_name : public ir_hierarchical_visitor { public: @@ -125,8 +114,8 @@ _mesa_get_sampler_uniform_value(class ir_dereference *sampler, getname.name); if (index < 0) { - fail_link(shader_program, - "failed to find sampler named %s.\n", getname.name); + linker_error(shader_program, + "failed to find sampler named %s.\n", getname.name); return 0; } diff --git a/mesalib/src/mesa/program/string_to_uint_map.cpp b/mesalib/src/mesa/program/string_to_uint_map.cpp new file mode 100644 index 000000000..cfa73abe0 --- /dev/null +++ b/mesalib/src/mesa/program/string_to_uint_map.cpp @@ -0,0 +1,42 @@ +/* + * Copyright © 2011 Intel Corporation + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +/** + * \file string_to_uint_map.cpp + * \brief Dumb wrapprs so that C code can create and destroy maps. + * + * \author Ian Romanick + */ +#include "hash_table.h" + +extern "C" struct string_to_uint_map * +string_to_uint_map_ctor() +{ + return new string_to_uint_map; +} + +extern "C" void +string_to_uint_map_dtor(struct string_to_uint_map *map) +{ + delete map; +} diff --git a/mesalib/src/mesa/sources.mak b/mesalib/src/mesa/sources.mak index da5d90ec4..f29213ec0 100644 --- a/mesalib/src/mesa/sources.mak +++ b/mesalib/src/mesa/sources.mak @@ -104,7 +104,8 @@ MAIN_SOURCES = \ $(MAIN_ES_SOURCES) MAIN_CXX_SOURCES = \ - main/ff_fragment_shader.cpp + main/ff_fragment_shader.cpp \ + main/shader_query.cpp MATH_SOURCES = \ math/m_debug_clip.c \ @@ -266,7 +267,8 @@ PROGRAM_SOURCES = \ SHADER_CXX_SOURCES = \ program/ir_to_mesa.cpp \ - program/sampler.cpp + program/sampler.cpp \ + program/string_to_uint_map.cpp ASM_C_SOURCES = \ x86/common_x86.c \ diff --git a/mesalib/src/mesa/state_tracker/st_cb_texture.c b/mesalib/src/mesa/state_tracker/st_cb_texture.c index 260df09f5..76bf78bbf 100644 --- a/mesalib/src/mesa/state_tracker/st_cb_texture.c +++ b/mesalib/src/mesa/state_tracker/st_cb_texture.c @@ -459,6 +459,91 @@ guess_and_alloc_texture(struct st_context *st, } +/** + * Called via ctx->Driver.AllocTextureImageBuffer(). + * If the texture object/buffer already has space for the indicated image, + * we're done. Otherwise, allocate memory for the new texture image. + * XXX This function and st_TexImage() have some duplicated code. That + * can be cleaned up in the future. + */ +static GLboolean +st_AllocTextureImageBuffer(struct gl_context *ctx, + struct gl_texture_image *texImage, + gl_format format, GLsizei width, + GLsizei height, GLsizei depth) +{ + struct st_context *st = st_context(ctx); + struct st_texture_image *stImage = st_texture_image(texImage); + struct st_texture_object *stObj = st_texture_object(texImage->TexObject); + const GLuint level = texImage->Level; + + DBG("%s\n", __FUNCTION__); + + assert(width > 0); + assert(height > 0); + assert(depth > 0); + assert(!texImage->Data); + assert(!stImage->pt); /* xxx this might be wrong */ + + /* Look if the parent texture object has space for this image */ + if (stObj->pt && + level <= stObj->pt->last_level && + st_texture_match_image(stObj->pt, texImage)) { + /* this image will fit in the existing texture object's memory */ + pipe_resource_reference(&stImage->pt, stObj->pt); + return GL_TRUE; + } + + /* The parent texture object does not have space for this image */ + + pipe_resource_reference(&stObj->pt, NULL); + pipe_sampler_view_reference(&stObj->sampler_view, NULL); + + if (!guess_and_alloc_texture(st, stObj, stImage)) { + /* Probably out of memory. + * Try flushing any pending rendering, then retry. + */ + st_finish(st); + if (!guess_and_alloc_texture(st, stObj, stImage)) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage"); + return GL_FALSE; + } + } + + if (stObj->pt && + st_texture_match_image(stObj->pt, texImage)) { + /* The image will live in the object's mipmap memory */ + pipe_resource_reference(&stImage->pt, stObj->pt); + assert(stImage->pt); + return GL_TRUE; + } + else { + /* Create a new, temporary texture/resource/buffer to hold this + * one texture image. + */ + enum pipe_format format = + st_mesa_format_to_pipe_format(texImage->TexFormat); + GLuint bindings = default_bindings(st, format); + GLuint ptWidth, ptHeight, ptDepth, ptLayers; + + st_gl_texture_dims_to_pipe_dims(stObj->base.Target, + width, height, depth, + &ptWidth, &ptHeight, &ptDepth, &ptLayers); + + stImage->pt = st_texture_create(st, + gl_target_to_pipe(stObj->base.Target), + format, + 0, /* lastLevel */ + ptWidth, + ptHeight, + ptDepth, + ptLayers, + bindings); + return stImage->pt != NULL; + } +} + + /** * Adjust pixel unpack params and image dimensions to strip off the * texture border. @@ -815,15 +900,14 @@ st_CompressedTexImage2D(struct gl_context *ctx, GLenum target, GLint level, * a textured quad. Store the results in the user's buffer. */ static void -decompress_with_blit(struct gl_context * ctx, GLenum target, GLint level, +decompress_with_blit(struct gl_context * ctx, GLenum format, GLenum type, GLvoid *pixels, - struct gl_texture_object *texObj, struct gl_texture_image *texImage) { struct st_context *st = st_context(ctx); struct pipe_context *pipe = st->pipe; struct st_texture_image *stImage = st_texture_image(texImage); - struct st_texture_object *stObj = st_texture_object(texObj); + struct st_texture_object *stObj = st_texture_object(texImage->TexObject); struct pipe_sampler_view *src_view = st_get_texture_sampler_view(stObj, pipe); const GLuint width = texImage->Width; @@ -848,7 +932,7 @@ decompress_with_blit(struct gl_context * ctx, GLenum target, GLint level, } /* Choose the source mipmap level */ - src_view->u.tex.first_level = src_view->u.tex.last_level = level; + src_view->u.tex.first_level = src_view->u.tex.last_level = texImage->Level; /* blit/render/decompress */ util_blit_pixels_tex(st->blit, @@ -925,9 +1009,8 @@ decompress_with_blit(struct gl_context * ctx, GLenum target, GLint level, * Called via ctx->Driver.GetTexImage() */ static void -st_GetTexImage(struct gl_context * ctx, GLenum target, GLint level, +st_GetTexImage(struct gl_context * ctx, GLenum format, GLenum type, GLvoid * pixels, - struct gl_texture_object *texObj, struct gl_texture_image *texImage) { struct st_texture_image *stImage = st_texture_image(texImage); @@ -938,12 +1021,10 @@ st_GetTexImage(struct gl_context * ctx, GLenum target, GLint level, * faster than using the fallback code in texcompress.c. * Note that we only expect RGBA formats (no Z/depth formats). */ - decompress_with_blit(ctx, target, level, format, type, pixels, - texObj, texImage); + decompress_with_blit(ctx, format, type, pixels, texImage); } else { - _mesa_get_teximage(ctx, target, level, format, type, pixels, - texObj, texImage); + _mesa_get_teximage(ctx, format, type, pixels, texImage); } } @@ -1841,6 +1922,7 @@ st_init_texture_functions(struct dd_function_table *functions) functions->NewTextureImage = st_NewTextureImage; functions->DeleteTextureImage = st_DeleteTextureImage; functions->DeleteTexture = st_DeleteTextureObject; + functions->AllocTextureImageBuffer = st_AllocTextureImageBuffer; functions->FreeTextureImageBuffer = st_FreeTextureImageBuffer; functions->MapTextureImage = st_MapTextureImage; functions->UnmapTextureImage = st_UnmapTextureImage; diff --git a/mesalib/src/mesa/state_tracker/st_extensions.c b/mesalib/src/mesa/state_tracker/st_extensions.c index 27fff39a8..6707fcae1 100644 --- a/mesalib/src/mesa/state_tracker/st_extensions.c +++ b/mesalib/src/mesa/state_tracker/st_extensions.c @@ -90,11 +90,13 @@ void st_init_limits(struct st_context *st) = screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_ARRAY_LAYERS); c->MaxTextureImageUnits - = _min(screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS), + = _min(screen->get_shader_param(screen, PIPE_SHADER_FRAGMENT, + PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS), MAX_TEXTURE_IMAGE_UNITS); c->MaxVertexTextureImageUnits - = _min(screen->get_param(screen, PIPE_CAP_MAX_VERTEX_TEXTURE_UNITS), + = _min(screen->get_shader_param(screen, PIPE_SHADER_VERTEX, + PIPE_SHADER_CAP_MAX_TEXTURE_SAMPLERS), MAX_VERTEX_TEXTURE_IMAGE_UNITS); c->MaxCombinedTextureImageUnits @@ -305,10 +307,6 @@ void st_init_extensions(struct st_context *st) /* * Extensions that depend on the driver/hardware: */ - if (screen->get_param(screen, PIPE_CAP_MAX_RENDER_TARGETS) > 0) { - ctx->Extensions.ARB_draw_buffers = GL_TRUE; - } - if (screen->get_param(screen, PIPE_CAP_TEXTURE_SWIZZLE) > 0) { ctx->Extensions.EXT_texture_swizzle = GL_TRUE; } @@ -499,7 +497,7 @@ void st_init_extensions(struct st_context *st) ctx->Extensions.ARB_framebuffer_object = GL_TRUE; } - if (st->pipe->render_condition) { + if (screen->get_param(screen, PIPE_CAP_CONDITIONAL_RENDER)) { ctx->Extensions.NV_conditional_render = GL_TRUE; } @@ -609,7 +607,7 @@ void st_init_extensions(struct st_context *st) ctx->Extensions.ARB_sync = GL_TRUE; } - if (st->pipe->texture_barrier) { + if (screen->get_param(screen, PIPE_CAP_TEXTURE_BARRIER)) { ctx->Extensions.NV_texture_barrier = GL_TRUE; } diff --git a/mesalib/src/mesa/state_tracker/st_gen_mipmap.c b/mesalib/src/mesa/state_tracker/st_gen_mipmap.c index e53da5fd4..36fea3d7f 100644 --- a/mesalib/src/mesa/state_tracker/st_gen_mipmap.c +++ b/mesalib/src/mesa/state_tracker/st_gen_mipmap.c @@ -106,209 +106,6 @@ st_render_mipmap(struct st_context *st, return TRUE; } - -/** - * Helper function to decompress an image. The result is a 32-bpp RGBA - * image with stride==width. - */ -static void -decompress_image(enum pipe_format format, int datatype, - const uint8_t *src, void *dst, - unsigned width, unsigned height, unsigned src_stride) -{ - const struct util_format_description *desc = util_format_description(format); - const uint bw = util_format_get_blockwidth(format); - const uint bh = util_format_get_blockheight(format); - uint dst_stride = 4 * MAX2(width, bw); - - if (datatype == GL_FLOAT) { - desc->unpack_rgba_float((float *)dst, dst_stride * sizeof(GLfloat), src, src_stride, width, height); - if (width < bw || height < bh) { - float *dst_p = (float *)dst; - /* We're decompressing an image smaller than the compression - * block size. We don't want garbage pixel values in the region - * outside (width x height) so replicate pixels from the (width - * x height) region to fill out the (bw x bh) block size. - */ - uint x, y; - for (y = 0; y < bh; y++) { - for (x = 0; x < bw; x++) { - if (x >= width || y >= height) { - uint p = (y * bw + x) * 4; - dst_p[p + 0] = dst_p[0]; - dst_p[p + 1] = dst_p[1]; - dst_p[p + 2] = dst_p[2]; - dst_p[p + 3] = dst_p[3]; - } - } - } - } - } else { - desc->unpack_rgba_8unorm((uint8_t *)dst, dst_stride, src, src_stride, width, height); - if (width < bw || height < bh) { - uint8_t *dst_p = (uint8_t *)dst; - /* We're decompressing an image smaller than the compression - * block size. We don't want garbage pixel values in the region - * outside (width x height) so replicate pixels from the (width - * x height) region to fill out the (bw x bh) block size. - */ - uint x, y; - for (y = 0; y < bh; y++) { - for (x = 0; x < bw; x++) { - if (x >= width || y >= height) { - uint p = (y * bw + x) * 4; - dst_p[p + 0] = dst_p[0]; - dst_p[p + 1] = dst_p[1]; - dst_p[p + 2] = dst_p[2]; - dst_p[p + 3] = dst_p[3]; - } - } - } - } - } -} - -/** - * Helper function to compress an image. The source is a 32-bpp RGBA image - * with stride==width. - */ -static void -compress_image(enum pipe_format format, int datatype, - const void *src, uint8_t *dst, - unsigned width, unsigned height, unsigned dst_stride) -{ - const struct util_format_description *desc = util_format_description(format); - const uint src_stride = 4 * width; - - if (datatype == GL_FLOAT) - desc->pack_rgba_float(dst, dst_stride, (GLfloat *)src, src_stride * sizeof(GLfloat), width, height); - else - desc->pack_rgba_8unorm(dst, dst_stride, (uint8_t *)src, src_stride, width, height); -} - - -/** - * Software fallback for generate mipmap levels. - */ -static void -fallback_generate_mipmap(struct gl_context *ctx, GLenum target, - struct gl_texture_object *texObj) -{ - struct pipe_context *pipe = st_context(ctx)->pipe; - struct pipe_resource *pt = st_get_texobj_resource(texObj); - const uint baseLevel = texObj->BaseLevel; - const uint lastLevel = pt->last_level; - const uint face = _mesa_tex_target_to_face(target); - uint dstLevel; - GLenum datatype; - GLuint comps; - GLboolean compressed; - - if (ST_DEBUG & DEBUG_FALLBACK) - debug_printf("%s: fallback processing\n", __FUNCTION__); - - assert(target != GL_TEXTURE_3D); /* not done yet */ - - compressed = - _mesa_is_format_compressed(texObj->Image[face][baseLevel]->TexFormat); - - if (compressed) { - GLenum type = - _mesa_get_format_datatype(texObj->Image[face][baseLevel]->TexFormat); - - datatype = type == GL_UNSIGNED_NORMALIZED ? GL_UNSIGNED_BYTE : GL_FLOAT; - comps = 4; - } - else { - _mesa_format_to_type_and_comps(texObj->Image[face][baseLevel]->TexFormat, - &datatype, &comps); - assert(comps > 0 && "bad texture format in fallback_generate_mipmap()"); - } - - for (dstLevel = baseLevel + 1; dstLevel <= lastLevel; dstLevel++) { - const uint srcLevel = dstLevel - 1; - const uint srcWidth = u_minify(pt->width0, srcLevel); - const uint srcHeight = u_minify(pt->height0, srcLevel); - const uint srcDepth = u_minify(pt->depth0, srcLevel); - const uint dstWidth = u_minify(pt->width0, dstLevel); - const uint dstHeight = u_minify(pt->height0, dstLevel); - const uint dstDepth = u_minify(pt->depth0, dstLevel); - struct pipe_transfer *srcTrans, *dstTrans; - const ubyte *srcData; - ubyte *dstData; - int srcStride, dstStride; - - srcTrans = pipe_get_transfer(pipe, pt, srcLevel, - face, - PIPE_TRANSFER_READ, 0, 0, - srcWidth, srcHeight); - - dstTrans = pipe_get_transfer(pipe, pt, dstLevel, - face, - PIPE_TRANSFER_WRITE, 0, 0, - dstWidth, dstHeight); - - srcData = (ubyte *) pipe_transfer_map(pipe, srcTrans); - dstData = (ubyte *) pipe_transfer_map(pipe, dstTrans); - - srcStride = srcTrans->stride / util_format_get_blocksize(srcTrans->resource->format); - dstStride = dstTrans->stride / util_format_get_blocksize(dstTrans->resource->format); - - /* this cannot work correctly for 3d since it does - not respect layerStride. */ - if (compressed) { - const enum pipe_format format = pt->format; - const uint bw = util_format_get_blockwidth(format); - const uint bh = util_format_get_blockheight(format); - const uint srcWidth2 = align(srcWidth, bw); - const uint srcHeight2 = align(srcHeight, bh); - const uint dstWidth2 = align(dstWidth, bw); - const uint dstHeight2 = align(dstHeight, bh); - uint8_t *srcTemp, *dstTemp; - - assert(comps == 4); - - srcTemp = malloc(srcWidth2 * srcHeight2 * comps * (datatype == GL_FLOAT ? 4 : 1)); - dstTemp = malloc(dstWidth2 * dstHeight2 * comps * (datatype == GL_FLOAT ? 4 : 1)); - - /* decompress the src image: srcData -> srcTemp */ - decompress_image(format, datatype, srcData, srcTemp, srcWidth2, srcHeight2, srcTrans->stride); - - _mesa_generate_mipmap_level(target, datatype, comps, - 0 /*border*/, - srcWidth2, srcHeight2, srcDepth, - srcTemp, - srcWidth2, /* stride in texels */ - dstWidth2, dstHeight2, dstDepth, - dstTemp, - dstWidth2); /* stride in texels */ - - /* compress the new image: dstTemp -> dstData */ - compress_image(format, datatype, dstTemp, dstData, dstWidth2, dstHeight2, dstTrans->stride); - - free(srcTemp); - free(dstTemp); - } - else { - _mesa_generate_mipmap_level(target, datatype, comps, - 0 /*border*/, - srcWidth, srcHeight, srcDepth, - srcData, - srcStride, /* stride in texels */ - dstWidth, dstHeight, dstDepth, - dstData, - dstStride); /* stride in texels */ - } - - pipe_transfer_unmap(pipe, srcTrans); - pipe_transfer_unmap(pipe, dstTrans); - - pipe->transfer_destroy(pipe, srcTrans); - pipe->transfer_destroy(pipe, dstTrans); - } -} - - /** * Compute the expected number of mipmap levels in the texture given * the width/height/depth of the base image and the GL_TEXTURE_BASE_LEVEL/ @@ -422,7 +219,7 @@ st_generate_mipmap(struct gl_context *ctx, GLenum target, if (!st_render_mipmap(st, target, stObj, baseLevel, lastLevel)) { /* since the util code actually also has a fallback, should probably make it never fail and kill this */ - fallback_generate_mipmap(ctx, target, texObj); + _mesa_generate_mipmap(ctx, target, texObj); } /* Fill in the Mesa gl_texture_image fields */ diff --git a/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp index f68270d0f..d8ef8a3ce 100644 --- a/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp +++ b/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp @@ -1933,14 +1933,6 @@ glsl_to_tgsi_visitor::visit(ir_dereference_variable *ir) entry = new(mem_ctx) variable_storage(var, PROGRAM_INPUT, var->location); - if (this->prog->Target == GL_VERTEX_PROGRAM_ARB && - var->location >= VERT_ATTRIB_GENERIC0) { - _mesa_add_attribute(this->prog->Attributes, - var->name, - _mesa_sizeof_glsl_type(var->type->gl_type), - var->type->gl_type, - var->location - VERT_ATTRIB_GENERIC0); - } break; case ir_var_out: assert(var->location != -1); @@ -3986,8 +3978,6 @@ get_pixel_transfer_visitor(struct st_fragment_program *fp, /* Make modifications to fragment program info. */ prog->Parameters = _mesa_combine_parameter_lists(params, original->prog->Parameters); - prog->Attributes = _mesa_clone_parameter_list(original->prog->Attributes); - prog->Varying = _mesa_clone_parameter_list(original->prog->Varying); _mesa_free_parameter_list(params); count_resources(v, prog); fp->glsl_to_tgsi = v; @@ -4062,8 +4052,6 @@ get_bitmap_visitor(struct st_fragment_program *fp, /* Make modifications to fragment program info. */ prog->Parameters = _mesa_clone_parameter_list(original->prog->Parameters); - prog->Attributes = _mesa_clone_parameter_list(original->prog->Attributes); - prog->Varying = _mesa_clone_parameter_list(original->prog->Varying); count_resources(v, prog); fp->glsl_to_tgsi = v; } @@ -4969,8 +4957,6 @@ get_mesa_program(struct gl_context *ctx, if (!prog) return NULL; prog->Parameters = _mesa_new_parameter_list(); - prog->Varying = _mesa_new_parameter_list(); - prog->Attributes = _mesa_new_parameter_list(); v->ctx = ctx; v->prog = prog; v->shader_program = shader_program; diff --git a/mesalib/src/mesa/swrast/s_aaline.c b/mesalib/src/mesa/swrast/s_aaline.c index be817f326..d4b1805d9 100644 --- a/mesalib/src/mesa/swrast/s_aaline.c +++ b/mesalib/src/mesa/swrast/s_aaline.c @@ -1,492 +1,492 @@ -/* - * Mesa 3-D graphics library - * Version: 6.5.3 - * - * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -#include "main/glheader.h" -#include "main/imports.h" -#include "main/macros.h" -#include "main/mtypes.h" -#include "swrast/s_aaline.h" -#include "swrast/s_context.h" -#include "swrast/s_span.h" -#include "swrast/swrast.h" - - -#define SUB_PIXEL 4 - - -/* - * Info about the AA line we're rendering - */ -struct LineInfo -{ - GLfloat x0, y0; /* start */ - GLfloat x1, y1; /* end */ - GLfloat dx, dy; /* direction vector */ - GLfloat len; /* length */ - GLfloat halfWidth; /* half of line width */ - GLfloat xAdj, yAdj; /* X and Y adjustment for quad corners around line */ - /* for coverage computation */ - GLfloat qx0, qy0; /* quad vertices */ - GLfloat qx1, qy1; - GLfloat qx2, qy2; - GLfloat qx3, qy3; - GLfloat ex0, ey0; /* quad edge vectors */ - GLfloat ex1, ey1; - GLfloat ex2, ey2; - GLfloat ex3, ey3; - - /* DO_Z */ - GLfloat zPlane[4]; - /* DO_RGBA - always enabled */ - GLfloat rPlane[4], gPlane[4], bPlane[4], aPlane[4]; - /* DO_ATTRIBS */ - GLfloat wPlane[4]; - GLfloat attrPlane[FRAG_ATTRIB_MAX][4][4]; - GLfloat lambda[FRAG_ATTRIB_MAX]; - GLfloat texWidth[FRAG_ATTRIB_MAX]; - GLfloat texHeight[FRAG_ATTRIB_MAX]; - - SWspan span; -}; - - - -/* - * Compute the equation of a plane used to interpolate line fragment data - * such as color, Z, texture coords, etc. - * Input: (x0, y0) and (x1,y1) are the endpoints of the line. - * z0, and z1 are the end point values to interpolate. - * Output: plane - the plane equation. - * - * Note: we don't really have enough parameters to specify a plane. - * We take the endpoints of the line and compute a plane such that - * the cross product of the line vector and the plane normal is - * parallel to the projection plane. - */ -static void -compute_plane(GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, - GLfloat z0, GLfloat z1, GLfloat plane[4]) -{ -#if 0 - /* original */ - const GLfloat px = x1 - x0; - const GLfloat py = y1 - y0; - const GLfloat pz = z1 - z0; - const GLfloat qx = -py; - const GLfloat qy = px; - const GLfloat qz = 0; - const GLfloat a = py * qz - pz * qy; - const GLfloat b = pz * qx - px * qz; - const GLfloat c = px * qy - py * qx; - const GLfloat d = -(a * x0 + b * y0 + c * z0); - plane[0] = a; - plane[1] = b; - plane[2] = c; - plane[3] = d; -#else - /* simplified */ - const GLfloat px = x1 - x0; - const GLfloat py = y1 - y0; - const GLfloat pz = z0 - z1; - const GLfloat a = pz * px; - const GLfloat b = pz * py; - const GLfloat c = px * px + py * py; - const GLfloat d = -(a * x0 + b * y0 + c * z0); - if (a == 0.0 && b == 0.0 && c == 0.0 && d == 0.0) { - plane[0] = 0.0; - plane[1] = 0.0; - plane[2] = 1.0; - plane[3] = 0.0; - } - else { - plane[0] = a; - plane[1] = b; - plane[2] = c; - plane[3] = d; - } -#endif -} - - -static INLINE void -constant_plane(GLfloat value, GLfloat plane[4]) -{ - plane[0] = 0.0; - plane[1] = 0.0; - plane[2] = -1.0; - plane[3] = value; -} - - -static INLINE GLfloat -solve_plane(GLfloat x, GLfloat y, const GLfloat plane[4]) -{ - const GLfloat z = (plane[3] + plane[0] * x + plane[1] * y) / -plane[2]; - return z; -} - -#define SOLVE_PLANE(X, Y, PLANE) \ - ((PLANE[3] + PLANE[0] * (X) + PLANE[1] * (Y)) / -PLANE[2]) - - -/* - * Return 1 / solve_plane(). - */ -static INLINE GLfloat -solve_plane_recip(GLfloat x, GLfloat y, const GLfloat plane[4]) -{ - const GLfloat denom = plane[3] + plane[0] * x + plane[1] * y; - if (denom == 0.0) - return 0.0; - else - return -plane[2] / denom; -} - - -/* - * Solve plane and return clamped GLchan value. - */ -static INLINE GLchan -solve_plane_chan(GLfloat x, GLfloat y, const GLfloat plane[4]) -{ - const GLfloat z = (plane[3] + plane[0] * x + plane[1] * y) / -plane[2]; -#if CHAN_TYPE == GL_FLOAT - return CLAMP(z, 0.0F, CHAN_MAXF); -#else - if (z < 0) - return 0; - else if (z > CHAN_MAX) - return CHAN_MAX; - return (GLchan) IROUND_POS(z); -#endif -} - - -/* - * Compute mipmap level of detail. - */ -static INLINE GLfloat -compute_lambda(const GLfloat sPlane[4], const GLfloat tPlane[4], - GLfloat invQ, GLfloat width, GLfloat height) -{ - GLfloat dudx = sPlane[0] / sPlane[2] * invQ * width; - GLfloat dudy = sPlane[1] / sPlane[2] * invQ * width; - GLfloat dvdx = tPlane[0] / tPlane[2] * invQ * height; - GLfloat dvdy = tPlane[1] / tPlane[2] * invQ * height; - GLfloat r1 = dudx * dudx + dudy * dudy; - GLfloat r2 = dvdx * dvdx + dvdy * dvdy; - GLfloat rho2 = r1 + r2; - /* return log base 2 of rho */ - if (rho2 == 0.0F) - return 0.0; - else - return (GLfloat) (LOGF(rho2) * 1.442695 * 0.5);/* 1.442695 = 1/log(2) */ -} - - - - -/* - * Fill in the samples[] array with the (x,y) subpixel positions of - * xSamples * ySamples sample positions. - * Note that the four corner samples are put into the first four - * positions of the array. This allows us to optimize for the common - * case of all samples being inside the polygon. - */ -static void -make_sample_table(GLint xSamples, GLint ySamples, GLfloat samples[][2]) -{ - const GLfloat dx = 1.0F / (GLfloat) xSamples; - const GLfloat dy = 1.0F / (GLfloat) ySamples; - GLint x, y; - GLint i; - - i = 4; - for (x = 0; x < xSamples; x++) { - for (y = 0; y < ySamples; y++) { - GLint j; - if (x == 0 && y == 0) { - /* lower left */ - j = 0; - } - else if (x == xSamples - 1 && y == 0) { - /* lower right */ - j = 1; - } - else if (x == 0 && y == ySamples - 1) { - /* upper left */ - j = 2; - } - else if (x == xSamples - 1 && y == ySamples - 1) { - /* upper right */ - j = 3; - } - else { - j = i++; - } - samples[j][0] = x * dx + 0.5F * dx; - samples[j][1] = y * dy + 0.5F * dy; - } - } -} - - - -/* - * Compute how much of the given pixel's area is inside the rectangle - * defined by vertices v0, v1, v2, v3. - * Vertices MUST be specified in counter-clockwise order. - * Return: coverage in [0, 1]. - */ -static GLfloat -compute_coveragef(const struct LineInfo *info, - GLint winx, GLint winy) -{ - static GLfloat samples[SUB_PIXEL * SUB_PIXEL][2]; - static GLboolean haveSamples = GL_FALSE; - const GLfloat x = (GLfloat) winx; - const GLfloat y = (GLfloat) winy; - GLint stop = 4, i; - GLfloat insideCount = SUB_PIXEL * SUB_PIXEL; - - if (!haveSamples) { - make_sample_table(SUB_PIXEL, SUB_PIXEL, samples); - haveSamples = GL_TRUE; - } - -#if 0 /*DEBUG*/ - { - const GLfloat area = dx0 * dy1 - dx1 * dy0; - assert(area >= 0.0); - } -#endif - - for (i = 0; i < stop; i++) { - const GLfloat sx = x + samples[i][0]; - const GLfloat sy = y + samples[i][1]; - const GLfloat fx0 = sx - info->qx0; - const GLfloat fy0 = sy - info->qy0; - const GLfloat fx1 = sx - info->qx1; - const GLfloat fy1 = sy - info->qy1; - const GLfloat fx2 = sx - info->qx2; - const GLfloat fy2 = sy - info->qy2; - const GLfloat fx3 = sx - info->qx3; - const GLfloat fy3 = sy - info->qy3; - /* cross product determines if sample is inside or outside each edge */ - GLfloat cross0 = (info->ex0 * fy0 - info->ey0 * fx0); - GLfloat cross1 = (info->ex1 * fy1 - info->ey1 * fx1); - GLfloat cross2 = (info->ex2 * fy2 - info->ey2 * fx2); - GLfloat cross3 = (info->ex3 * fy3 - info->ey3 * fx3); - /* Check if the sample is exactly on an edge. If so, let cross be a - * positive or negative value depending on the direction of the edge. - */ - if (cross0 == 0.0F) - cross0 = info->ex0 + info->ey0; - if (cross1 == 0.0F) - cross1 = info->ex1 + info->ey1; - if (cross2 == 0.0F) - cross2 = info->ex2 + info->ey2; - if (cross3 == 0.0F) - cross3 = info->ex3 + info->ey3; - if (cross0 < 0.0F || cross1 < 0.0F || cross2 < 0.0F || cross3 < 0.0F) { - /* point is outside quadrilateral */ - insideCount -= 1.0F; - stop = SUB_PIXEL * SUB_PIXEL; - } - } - if (stop == 4) - return 1.0F; - else - return insideCount * (1.0F / (SUB_PIXEL * SUB_PIXEL)); -} - - -typedef void (*plot_func)(struct gl_context *ctx, struct LineInfo *line, - int ix, int iy); - - - -/* - * Draw an AA line segment (called many times per line when stippling) - */ -static void -segment(struct gl_context *ctx, - struct LineInfo *line, - plot_func plot, - GLfloat t0, GLfloat t1) -{ - const GLfloat absDx = (line->dx < 0.0F) ? -line->dx : line->dx; - const GLfloat absDy = (line->dy < 0.0F) ? -line->dy : line->dy; - /* compute the actual segment's endpoints */ - const GLfloat x0 = line->x0 + t0 * line->dx; - const GLfloat y0 = line->y0 + t0 * line->dy; - const GLfloat x1 = line->x0 + t1 * line->dx; - const GLfloat y1 = line->y0 + t1 * line->dy; - - /* compute vertices of the line-aligned quadrilateral */ - line->qx0 = x0 - line->yAdj; - line->qy0 = y0 + line->xAdj; - line->qx1 = x0 + line->yAdj; - line->qy1 = y0 - line->xAdj; - line->qx2 = x1 + line->yAdj; - line->qy2 = y1 - line->xAdj; - line->qx3 = x1 - line->yAdj; - line->qy3 = y1 + line->xAdj; - /* compute the quad's edge vectors (for coverage calc) */ - line->ex0 = line->qx1 - line->qx0; - line->ey0 = line->qy1 - line->qy0; - line->ex1 = line->qx2 - line->qx1; - line->ey1 = line->qy2 - line->qy1; - line->ex2 = line->qx3 - line->qx2; - line->ey2 = line->qy3 - line->qy2; - line->ex3 = line->qx0 - line->qx3; - line->ey3 = line->qy0 - line->qy3; - - if (absDx > absDy) { - /* X-major line */ - GLfloat dydx = line->dy / line->dx; - GLfloat xLeft, xRight, yBot, yTop; - GLint ix, ixRight; - if (x0 < x1) { - xLeft = x0 - line->halfWidth; - xRight = x1 + line->halfWidth; - if (line->dy >= 0.0) { - yBot = y0 - 3.0F * line->halfWidth; - yTop = y0 + line->halfWidth; - } - else { - yBot = y0 - line->halfWidth; - yTop = y0 + 3.0F * line->halfWidth; - } - } - else { - xLeft = x1 - line->halfWidth; - xRight = x0 + line->halfWidth; - if (line->dy <= 0.0) { - yBot = y1 - 3.0F * line->halfWidth; - yTop = y1 + line->halfWidth; - } - else { - yBot = y1 - line->halfWidth; - yTop = y1 + 3.0F * line->halfWidth; - } - } - - /* scan along the line, left-to-right */ - ixRight = (GLint) (xRight + 1.0F); - - /*printf("avg span height: %g\n", yTop - yBot);*/ - for (ix = (GLint) xLeft; ix < ixRight; ix++) { - const GLint iyBot = (GLint) yBot; - const GLint iyTop = (GLint) (yTop + 1.0F); - GLint iy; - /* scan across the line, bottom-to-top */ - for (iy = iyBot; iy < iyTop; iy++) { - (*plot)(ctx, line, ix, iy); - } - yBot += dydx; - yTop += dydx; - } - } - else { - /* Y-major line */ - GLfloat dxdy = line->dx / line->dy; - GLfloat yBot, yTop, xLeft, xRight; - GLint iy, iyTop; - if (y0 < y1) { - yBot = y0 - line->halfWidth; - yTop = y1 + line->halfWidth; - if (line->dx >= 0.0) { - xLeft = x0 - 3.0F * line->halfWidth; - xRight = x0 + line->halfWidth; - } - else { - xLeft = x0 - line->halfWidth; - xRight = x0 + 3.0F * line->halfWidth; - } - } - else { - yBot = y1 - line->halfWidth; - yTop = y0 + line->halfWidth; - if (line->dx <= 0.0) { - xLeft = x1 - 3.0F * line->halfWidth; - xRight = x1 + line->halfWidth; - } - else { - xLeft = x1 - line->halfWidth; - xRight = x1 + 3.0F * line->halfWidth; - } - } - - /* scan along the line, bottom-to-top */ - iyTop = (GLint) (yTop + 1.0F); - - /*printf("avg span width: %g\n", xRight - xLeft);*/ - for (iy = (GLint) yBot; iy < iyTop; iy++) { - const GLint ixLeft = (GLint) xLeft; - const GLint ixRight = (GLint) (xRight + 1.0F); - GLint ix; - /* scan across the line, left-to-right */ - for (ix = ixLeft; ix < ixRight; ix++) { - (*plot)(ctx, line, ix, iy); - } - xLeft += dxdy; - xRight += dxdy; - } - } -} - - -#define NAME(x) aa_rgba_##x -#define DO_Z -#include "s_aalinetemp.h" - - -#define NAME(x) aa_general_rgba_##x -#define DO_Z -#define DO_ATTRIBS -#include "s_aalinetemp.h" - - - -void -_swrast_choose_aa_line_function(struct gl_context *ctx) -{ - SWcontext *swrast = SWRAST_CONTEXT(ctx); - - ASSERT(ctx->Line.SmoothFlag); - - if (ctx->Texture._EnabledCoordUnits != 0 - || ctx->FragmentProgram._Current - || (ctx->Light.Enabled && - ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR) - || ctx->Fog.ColorSumEnabled - || swrast->_FogEnabled) { - swrast->Line = aa_general_rgba_line; - } - else { - swrast->Line = aa_rgba_line; - } -} +/* + * Mesa 3-D graphics library + * Version: 6.5.3 + * + * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +#include "main/glheader.h" +#include "main/imports.h" +#include "main/macros.h" +#include "main/mtypes.h" +#include "swrast/s_aaline.h" +#include "swrast/s_context.h" +#include "swrast/s_span.h" +#include "swrast/swrast.h" + + +#define SUB_PIXEL 4 + + +/* + * Info about the AA line we're rendering + */ +struct LineInfo +{ + GLfloat x0, y0; /* start */ + GLfloat x1, y1; /* end */ + GLfloat dx, dy; /* direction vector */ + GLfloat len; /* length */ + GLfloat halfWidth; /* half of line width */ + GLfloat xAdj, yAdj; /* X and Y adjustment for quad corners around line */ + /* for coverage computation */ + GLfloat qx0, qy0; /* quad vertices */ + GLfloat qx1, qy1; + GLfloat qx2, qy2; + GLfloat qx3, qy3; + GLfloat ex0, ey0; /* quad edge vectors */ + GLfloat ex1, ey1; + GLfloat ex2, ey2; + GLfloat ex3, ey3; + + /* DO_Z */ + GLfloat zPlane[4]; + /* DO_RGBA - always enabled */ + GLfloat rPlane[4], gPlane[4], bPlane[4], aPlane[4]; + /* DO_ATTRIBS */ + GLfloat wPlane[4]; + GLfloat attrPlane[FRAG_ATTRIB_MAX][4][4]; + GLfloat lambda[FRAG_ATTRIB_MAX]; + GLfloat texWidth[FRAG_ATTRIB_MAX]; + GLfloat texHeight[FRAG_ATTRIB_MAX]; + + SWspan span; +}; + + + +/* + * Compute the equation of a plane used to interpolate line fragment data + * such as color, Z, texture coords, etc. + * Input: (x0, y0) and (x1,y1) are the endpoints of the line. + * z0, and z1 are the end point values to interpolate. + * Output: plane - the plane equation. + * + * Note: we don't really have enough parameters to specify a plane. + * We take the endpoints of the line and compute a plane such that + * the cross product of the line vector and the plane normal is + * parallel to the projection plane. + */ +static void +compute_plane(GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, + GLfloat z0, GLfloat z1, GLfloat plane[4]) +{ +#if 0 + /* original */ + const GLfloat px = x1 - x0; + const GLfloat py = y1 - y0; + const GLfloat pz = z1 - z0; + const GLfloat qx = -py; + const GLfloat qy = px; + const GLfloat qz = 0; + const GLfloat a = py * qz - pz * qy; + const GLfloat b = pz * qx - px * qz; + const GLfloat c = px * qy - py * qx; + const GLfloat d = -(a * x0 + b * y0 + c * z0); + plane[0] = a; + plane[1] = b; + plane[2] = c; + plane[3] = d; +#else + /* simplified */ + const GLfloat px = x1 - x0; + const GLfloat py = y1 - y0; + const GLfloat pz = z0 - z1; + const GLfloat a = pz * px; + const GLfloat b = pz * py; + const GLfloat c = px * px + py * py; + const GLfloat d = -(a * x0 + b * y0 + c * z0); + if (a == 0.0 && b == 0.0 && c == 0.0 && d == 0.0) { + plane[0] = 0.0; + plane[1] = 0.0; + plane[2] = 1.0; + plane[3] = 0.0; + } + else { + plane[0] = a; + plane[1] = b; + plane[2] = c; + plane[3] = d; + } +#endif +} + + +static inline void +constant_plane(GLfloat value, GLfloat plane[4]) +{ + plane[0] = 0.0; + plane[1] = 0.0; + plane[2] = -1.0; + plane[3] = value; +} + + +static inline GLfloat +solve_plane(GLfloat x, GLfloat y, const GLfloat plane[4]) +{ + const GLfloat z = (plane[3] + plane[0] * x + plane[1] * y) / -plane[2]; + return z; +} + +#define SOLVE_PLANE(X, Y, PLANE) \ + ((PLANE[3] + PLANE[0] * (X) + PLANE[1] * (Y)) / -PLANE[2]) + + +/* + * Return 1 / solve_plane(). + */ +static inline GLfloat +solve_plane_recip(GLfloat x, GLfloat y, const GLfloat plane[4]) +{ + const GLfloat denom = plane[3] + plane[0] * x + plane[1] * y; + if (denom == 0.0) + return 0.0; + else + return -plane[2] / denom; +} + + +/* + * Solve plane and return clamped GLchan value. + */ +static inline GLchan +solve_plane_chan(GLfloat x, GLfloat y, const GLfloat plane[4]) +{ + const GLfloat z = (plane[3] + plane[0] * x + plane[1] * y) / -plane[2]; +#if CHAN_TYPE == GL_FLOAT + return CLAMP(z, 0.0F, CHAN_MAXF); +#else + if (z < 0) + return 0; + else if (z > CHAN_MAX) + return CHAN_MAX; + return (GLchan) IROUND_POS(z); +#endif +} + + +/* + * Compute mipmap level of detail. + */ +static inline GLfloat +compute_lambda(const GLfloat sPlane[4], const GLfloat tPlane[4], + GLfloat invQ, GLfloat width, GLfloat height) +{ + GLfloat dudx = sPlane[0] / sPlane[2] * invQ * width; + GLfloat dudy = sPlane[1] / sPlane[2] * invQ * width; + GLfloat dvdx = tPlane[0] / tPlane[2] * invQ * height; + GLfloat dvdy = tPlane[1] / tPlane[2] * invQ * height; + GLfloat r1 = dudx * dudx + dudy * dudy; + GLfloat r2 = dvdx * dvdx + dvdy * dvdy; + GLfloat rho2 = r1 + r2; + /* return log base 2 of rho */ + if (rho2 == 0.0F) + return 0.0; + else + return (GLfloat) (LOGF(rho2) * 1.442695 * 0.5);/* 1.442695 = 1/log(2) */ +} + + + + +/* + * Fill in the samples[] array with the (x,y) subpixel positions of + * xSamples * ySamples sample positions. + * Note that the four corner samples are put into the first four + * positions of the array. This allows us to optimize for the common + * case of all samples being inside the polygon. + */ +static void +make_sample_table(GLint xSamples, GLint ySamples, GLfloat samples[][2]) +{ + const GLfloat dx = 1.0F / (GLfloat) xSamples; + const GLfloat dy = 1.0F / (GLfloat) ySamples; + GLint x, y; + GLint i; + + i = 4; + for (x = 0; x < xSamples; x++) { + for (y = 0; y < ySamples; y++) { + GLint j; + if (x == 0 && y == 0) { + /* lower left */ + j = 0; + } + else if (x == xSamples - 1 && y == 0) { + /* lower right */ + j = 1; + } + else if (x == 0 && y == ySamples - 1) { + /* upper left */ + j = 2; + } + else if (x == xSamples - 1 && y == ySamples - 1) { + /* upper right */ + j = 3; + } + else { + j = i++; + } + samples[j][0] = x * dx + 0.5F * dx; + samples[j][1] = y * dy + 0.5F * dy; + } + } +} + + + +/* + * Compute how much of the given pixel's area is inside the rectangle + * defined by vertices v0, v1, v2, v3. + * Vertices MUST be specified in counter-clockwise order. + * Return: coverage in [0, 1]. + */ +static GLfloat +compute_coveragef(const struct LineInfo *info, + GLint winx, GLint winy) +{ + static GLfloat samples[SUB_PIXEL * SUB_PIXEL][2]; + static GLboolean haveSamples = GL_FALSE; + const GLfloat x = (GLfloat) winx; + const GLfloat y = (GLfloat) winy; + GLint stop = 4, i; + GLfloat insideCount = SUB_PIXEL * SUB_PIXEL; + + if (!haveSamples) { + make_sample_table(SUB_PIXEL, SUB_PIXEL, samples); + haveSamples = GL_TRUE; + } + +#if 0 /*DEBUG*/ + { + const GLfloat area = dx0 * dy1 - dx1 * dy0; + assert(area >= 0.0); + } +#endif + + for (i = 0; i < stop; i++) { + const GLfloat sx = x + samples[i][0]; + const GLfloat sy = y + samples[i][1]; + const GLfloat fx0 = sx - info->qx0; + const GLfloat fy0 = sy - info->qy0; + const GLfloat fx1 = sx - info->qx1; + const GLfloat fy1 = sy - info->qy1; + const GLfloat fx2 = sx - info->qx2; + const GLfloat fy2 = sy - info->qy2; + const GLfloat fx3 = sx - info->qx3; + const GLfloat fy3 = sy - info->qy3; + /* cross product determines if sample is inside or outside each edge */ + GLfloat cross0 = (info->ex0 * fy0 - info->ey0 * fx0); + GLfloat cross1 = (info->ex1 * fy1 - info->ey1 * fx1); + GLfloat cross2 = (info->ex2 * fy2 - info->ey2 * fx2); + GLfloat cross3 = (info->ex3 * fy3 - info->ey3 * fx3); + /* Check if the sample is exactly on an edge. If so, let cross be a + * positive or negative value depending on the direction of the edge. + */ + if (cross0 == 0.0F) + cross0 = info->ex0 + info->ey0; + if (cross1 == 0.0F) + cross1 = info->ex1 + info->ey1; + if (cross2 == 0.0F) + cross2 = info->ex2 + info->ey2; + if (cross3 == 0.0F) + cross3 = info->ex3 + info->ey3; + if (cross0 < 0.0F || cross1 < 0.0F || cross2 < 0.0F || cross3 < 0.0F) { + /* point is outside quadrilateral */ + insideCount -= 1.0F; + stop = SUB_PIXEL * SUB_PIXEL; + } + } + if (stop == 4) + return 1.0F; + else + return insideCount * (1.0F / (SUB_PIXEL * SUB_PIXEL)); +} + + +typedef void (*plot_func)(struct gl_context *ctx, struct LineInfo *line, + int ix, int iy); + + + +/* + * Draw an AA line segment (called many times per line when stippling) + */ +static void +segment(struct gl_context *ctx, + struct LineInfo *line, + plot_func plot, + GLfloat t0, GLfloat t1) +{ + const GLfloat absDx = (line->dx < 0.0F) ? -line->dx : line->dx; + const GLfloat absDy = (line->dy < 0.0F) ? -line->dy : line->dy; + /* compute the actual segment's endpoints */ + const GLfloat x0 = line->x0 + t0 * line->dx; + const GLfloat y0 = line->y0 + t0 * line->dy; + const GLfloat x1 = line->x0 + t1 * line->dx; + const GLfloat y1 = line->y0 + t1 * line->dy; + + /* compute vertices of the line-aligned quadrilateral */ + line->qx0 = x0 - line->yAdj; + line->qy0 = y0 + line->xAdj; + line->qx1 = x0 + line->yAdj; + line->qy1 = y0 - line->xAdj; + line->qx2 = x1 + line->yAdj; + line->qy2 = y1 - line->xAdj; + line->qx3 = x1 - line->yAdj; + line->qy3 = y1 + line->xAdj; + /* compute the quad's edge vectors (for coverage calc) */ + line->ex0 = line->qx1 - line->qx0; + line->ey0 = line->qy1 - line->qy0; + line->ex1 = line->qx2 - line->qx1; + line->ey1 = line->qy2 - line->qy1; + line->ex2 = line->qx3 - line->qx2; + line->ey2 = line->qy3 - line->qy2; + line->ex3 = line->qx0 - line->qx3; + line->ey3 = line->qy0 - line->qy3; + + if (absDx > absDy) { + /* X-major line */ + GLfloat dydx = line->dy / line->dx; + GLfloat xLeft, xRight, yBot, yTop; + GLint ix, ixRight; + if (x0 < x1) { + xLeft = x0 - line->halfWidth; + xRight = x1 + line->halfWidth; + if (line->dy >= 0.0) { + yBot = y0 - 3.0F * line->halfWidth; + yTop = y0 + line->halfWidth; + } + else { + yBot = y0 - line->halfWidth; + yTop = y0 + 3.0F * line->halfWidth; + } + } + else { + xLeft = x1 - line->halfWidth; + xRight = x0 + line->halfWidth; + if (line->dy <= 0.0) { + yBot = y1 - 3.0F * line->halfWidth; + yTop = y1 + line->halfWidth; + } + else { + yBot = y1 - line->halfWidth; + yTop = y1 + 3.0F * line->halfWidth; + } + } + + /* scan along the line, left-to-right */ + ixRight = (GLint) (xRight + 1.0F); + + /*printf("avg span height: %g\n", yTop - yBot);*/ + for (ix = (GLint) xLeft; ix < ixRight; ix++) { + const GLint iyBot = (GLint) yBot; + const GLint iyTop = (GLint) (yTop + 1.0F); + GLint iy; + /* scan across the line, bottom-to-top */ + for (iy = iyBot; iy < iyTop; iy++) { + (*plot)(ctx, line, ix, iy); + } + yBot += dydx; + yTop += dydx; + } + } + else { + /* Y-major line */ + GLfloat dxdy = line->dx / line->dy; + GLfloat yBot, yTop, xLeft, xRight; + GLint iy, iyTop; + if (y0 < y1) { + yBot = y0 - line->halfWidth; + yTop = y1 + line->halfWidth; + if (line->dx >= 0.0) { + xLeft = x0 - 3.0F * line->halfWidth; + xRight = x0 + line->halfWidth; + } + else { + xLeft = x0 - line->halfWidth; + xRight = x0 + 3.0F * line->halfWidth; + } + } + else { + yBot = y1 - line->halfWidth; + yTop = y0 + line->halfWidth; + if (line->dx <= 0.0) { + xLeft = x1 - 3.0F * line->halfWidth; + xRight = x1 + line->halfWidth; + } + else { + xLeft = x1 - line->halfWidth; + xRight = x1 + 3.0F * line->halfWidth; + } + } + + /* scan along the line, bottom-to-top */ + iyTop = (GLint) (yTop + 1.0F); + + /*printf("avg span width: %g\n", xRight - xLeft);*/ + for (iy = (GLint) yBot; iy < iyTop; iy++) { + const GLint ixLeft = (GLint) xLeft; + const GLint ixRight = (GLint) (xRight + 1.0F); + GLint ix; + /* scan across the line, left-to-right */ + for (ix = ixLeft; ix < ixRight; ix++) { + (*plot)(ctx, line, ix, iy); + } + xLeft += dxdy; + xRight += dxdy; + } + } +} + + +#define NAME(x) aa_rgba_##x +#define DO_Z +#include "s_aalinetemp.h" + + +#define NAME(x) aa_general_rgba_##x +#define DO_Z +#define DO_ATTRIBS +#include "s_aalinetemp.h" + + + +void +_swrast_choose_aa_line_function(struct gl_context *ctx) +{ + SWcontext *swrast = SWRAST_CONTEXT(ctx); + + ASSERT(ctx->Line.SmoothFlag); + + if (ctx->Texture._EnabledCoordUnits != 0 + || ctx->FragmentProgram._Current + || (ctx->Light.Enabled && + ctx->Light.Model.ColorControl == GL_SEPARATE_SPECULAR_COLOR) + || ctx->Fog.ColorSumEnabled + || swrast->_FogEnabled) { + swrast->Line = aa_general_rgba_line; + } + else { + swrast->Line = aa_rgba_line; + } +} diff --git a/mesalib/src/mesa/swrast/s_aatriangle.c b/mesalib/src/mesa/swrast/s_aatriangle.c index ad068d0c0..c68fdf63b 100644 --- a/mesalib/src/mesa/swrast/s_aatriangle.c +++ b/mesalib/src/mesa/swrast/s_aatriangle.c @@ -1,312 +1,312 @@ -/* - * Mesa 3-D graphics library - * Version: 6.5.3 - * - * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -/* - * Antialiased Triangle rasterizers - */ - - -#include "main/glheader.h" -#include "main/context.h" -#include "main/colormac.h" -#include "main/macros.h" -#include "main/imports.h" -#include "main/state.h" -#include "s_aatriangle.h" -#include "s_context.h" -#include "s_span.h" - - -/* - * Compute coefficients of a plane using the X,Y coords of the v0, v1, v2 - * vertices and the given Z values. - * A point (x,y,z) lies on plane iff a*x+b*y+c*z+d = 0. - */ -static INLINE void -compute_plane(const GLfloat v0[], const GLfloat v1[], const GLfloat v2[], - GLfloat z0, GLfloat z1, GLfloat z2, GLfloat plane[4]) -{ - const GLfloat px = v1[0] - v0[0]; - const GLfloat py = v1[1] - v0[1]; - const GLfloat pz = z1 - z0; - - const GLfloat qx = v2[0] - v0[0]; - const GLfloat qy = v2[1] - v0[1]; - const GLfloat qz = z2 - z0; - - /* Crossproduct "(a,b,c):= dv1 x dv2" is orthogonal to plane. */ - const GLfloat a = py * qz - pz * qy; - const GLfloat b = pz * qx - px * qz; - const GLfloat c = px * qy - py * qx; - /* Point on the plane = "r*(a,b,c) + w", with fixed "r" depending - on the distance of plane from origin and arbitrary "w" parallel - to the plane. */ - /* The scalar product "(r*(a,b,c)+w)*(a,b,c)" is "r*(a^2+b^2+c^2)", - which is equal to "-d" below. */ - const GLfloat d = -(a * v0[0] + b * v0[1] + c * z0); - - plane[0] = a; - plane[1] = b; - plane[2] = c; - plane[3] = d; -} - - -/* - * Compute coefficients of a plane with a constant Z value. - */ -static INLINE void -constant_plane(GLfloat value, GLfloat plane[4]) -{ - plane[0] = 0.0; - plane[1] = 0.0; - plane[2] = -1.0; - plane[3] = value; -} - -#define CONSTANT_PLANE(VALUE, PLANE) \ -do { \ - PLANE[0] = 0.0F; \ - PLANE[1] = 0.0F; \ - PLANE[2] = -1.0F; \ - PLANE[3] = VALUE; \ -} while (0) - - - -/* - * Solve plane equation for Z at (X,Y). - */ -static INLINE GLfloat -solve_plane(GLfloat x, GLfloat y, const GLfloat plane[4]) -{ - ASSERT(plane[2] != 0.0F); - return (plane[3] + plane[0] * x + plane[1] * y) / -plane[2]; -} - - -#define SOLVE_PLANE(X, Y, PLANE) \ - ((PLANE[3] + PLANE[0] * (X) + PLANE[1] * (Y)) / -PLANE[2]) - - -/* - * Return 1 / solve_plane(). - */ -static INLINE GLfloat -solve_plane_recip(GLfloat x, GLfloat y, const GLfloat plane[4]) -{ - const GLfloat denom = plane[3] + plane[0] * x + plane[1] * y; - if (denom == 0.0F) - return 0.0F; - else - return -plane[2] / denom; -} - - -/* - * Solve plane and return clamped GLchan value. - */ -static INLINE GLchan -solve_plane_chan(GLfloat x, GLfloat y, const GLfloat plane[4]) -{ - const GLfloat z = (plane[3] + plane[0] * x + plane[1] * y) / -plane[2]; -#if CHAN_TYPE == GL_FLOAT - return CLAMP(z, 0.0F, CHAN_MAXF); -#else - if (z < 0) - return 0; - else if (z > CHAN_MAX) - return CHAN_MAX; - return (GLchan) IROUND_POS(z); -#endif -} - - -static INLINE GLfloat -plane_dx(const GLfloat plane[4]) -{ - return -plane[0] / plane[2]; -} - -static INLINE GLfloat -plane_dy(const GLfloat plane[4]) -{ - return -plane[1] / plane[2]; -} - - - -/* - * Compute how much (area) of the given pixel is inside the triangle. - * Vertices MUST be specified in counter-clockwise order. - * Return: coverage in [0, 1]. - */ -static GLfloat -compute_coveragef(const GLfloat v0[3], const GLfloat v1[3], - const GLfloat v2[3], GLint winx, GLint winy) -{ - /* Given a position [0,3]x[0,3] return the sub-pixel sample position. - * Contributed by Ray Tice. - * - * Jitter sample positions - - * - average should be .5 in x & y for each column - * - each of the 16 rows and columns should be used once - * - the rectangle formed by the first four points - * should contain the other points - * - the distrubition should be fairly even in any given direction - * - * The pattern drawn below isn't optimal, but it's better than a regular - * grid. In the drawing, the center of each subpixel is surrounded by - * four dots. The "x" marks the jittered position relative to the - * subpixel center. - */ -#define POS(a, b) (0.5+a*4+b)/16 - static const GLfloat samples[16][2] = { - /* start with the four corners */ - { POS(0, 2), POS(0, 0) }, - { POS(3, 3), POS(0, 2) }, - { POS(0, 0), POS(3, 1) }, - { POS(3, 1), POS(3, 3) }, - /* continue with interior samples */ - { POS(1, 1), POS(0, 1) }, - { POS(2, 0), POS(0, 3) }, - { POS(0, 3), POS(1, 3) }, - { POS(1, 2), POS(1, 0) }, - { POS(2, 3), POS(1, 2) }, - { POS(3, 2), POS(1, 1) }, - { POS(0, 1), POS(2, 2) }, - { POS(1, 0), POS(2, 1) }, - { POS(2, 1), POS(2, 3) }, - { POS(3, 0), POS(2, 0) }, - { POS(1, 3), POS(3, 0) }, - { POS(2, 2), POS(3, 2) } - }; - - const GLfloat x = (GLfloat) winx; - const GLfloat y = (GLfloat) winy; - const GLfloat dx0 = v1[0] - v0[0]; - const GLfloat dy0 = v1[1] - v0[1]; - const GLfloat dx1 = v2[0] - v1[0]; - const GLfloat dy1 = v2[1] - v1[1]; - const GLfloat dx2 = v0[0] - v2[0]; - const GLfloat dy2 = v0[1] - v2[1]; - GLint stop = 4, i; - GLfloat insideCount = 16.0F; - - ASSERT(dx0 * dy1 - dx1 * dy0 >= 0.0); /* area >= 0.0 */ - - for (i = 0; i < stop; i++) { - const GLfloat sx = x + samples[i][0]; - const GLfloat sy = y + samples[i][1]; - /* cross product determines if sample is inside or outside each edge */ - GLfloat cross = (dx0 * (sy - v0[1]) - dy0 * (sx - v0[0])); - /* Check if the sample is exactly on an edge. If so, let cross be a - * positive or negative value depending on the direction of the edge. - */ - if (cross == 0.0F) - cross = dx0 + dy0; - if (cross < 0.0F) { - /* sample point is outside first edge */ - insideCount -= 1.0F; - stop = 16; - } - else { - /* sample point is inside first edge */ - cross = (dx1 * (sy - v1[1]) - dy1 * (sx - v1[0])); - if (cross == 0.0F) - cross = dx1 + dy1; - if (cross < 0.0F) { - /* sample point is outside second edge */ - insideCount -= 1.0F; - stop = 16; - } - else { - /* sample point is inside first and second edges */ - cross = (dx2 * (sy - v2[1]) - dy2 * (sx - v2[0])); - if (cross == 0.0F) - cross = dx2 + dy2; - if (cross < 0.0F) { - /* sample point is outside third edge */ - insideCount -= 1.0F; - stop = 16; - } - } - } - } - if (stop == 4) - return 1.0F; - else - return insideCount * (1.0F / 16.0F); -} - - - -static void -rgba_aa_tri(struct gl_context *ctx, - const SWvertex *v0, - const SWvertex *v1, - const SWvertex *v2) -{ -#define DO_Z -#include "s_aatritemp.h" -} - - -static void -general_aa_tri(struct gl_context *ctx, - const SWvertex *v0, - const SWvertex *v1, - const SWvertex *v2) -{ -#define DO_Z -#define DO_ATTRIBS -#include "s_aatritemp.h" -} - - - -/* - * Examine GL state and set swrast->Triangle to an - * appropriate antialiased triangle rasterizer function. - */ -void -_swrast_set_aa_triangle_function(struct gl_context *ctx) -{ - SWcontext *swrast = SWRAST_CONTEXT(ctx); - - ASSERT(ctx->Polygon.SmoothFlag); - - if (ctx->Texture._EnabledCoordUnits != 0 - || ctx->FragmentProgram._Current - || swrast->_FogEnabled - || _mesa_need_secondary_color(ctx)) { - SWRAST_CONTEXT(ctx)->Triangle = general_aa_tri; - } - else { - SWRAST_CONTEXT(ctx)->Triangle = rgba_aa_tri; - } - - ASSERT(SWRAST_CONTEXT(ctx)->Triangle); -} +/* + * Mesa 3-D graphics library + * Version: 6.5.3 + * + * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +/* + * Antialiased Triangle rasterizers + */ + + +#include "main/glheader.h" +#include "main/context.h" +#include "main/colormac.h" +#include "main/macros.h" +#include "main/imports.h" +#include "main/state.h" +#include "s_aatriangle.h" +#include "s_context.h" +#include "s_span.h" + + +/* + * Compute coefficients of a plane using the X,Y coords of the v0, v1, v2 + * vertices and the given Z values. + * A point (x,y,z) lies on plane iff a*x+b*y+c*z+d = 0. + */ +static inline void +compute_plane(const GLfloat v0[], const GLfloat v1[], const GLfloat v2[], + GLfloat z0, GLfloat z1, GLfloat z2, GLfloat plane[4]) +{ + const GLfloat px = v1[0] - v0[0]; + const GLfloat py = v1[1] - v0[1]; + const GLfloat pz = z1 - z0; + + const GLfloat qx = v2[0] - v0[0]; + const GLfloat qy = v2[1] - v0[1]; + const GLfloat qz = z2 - z0; + + /* Crossproduct "(a,b,c):= dv1 x dv2" is orthogonal to plane. */ + const GLfloat a = py * qz - pz * qy; + const GLfloat b = pz * qx - px * qz; + const GLfloat c = px * qy - py * qx; + /* Point on the plane = "r*(a,b,c) + w", with fixed "r" depending + on the distance of plane from origin and arbitrary "w" parallel + to the plane. */ + /* The scalar product "(r*(a,b,c)+w)*(a,b,c)" is "r*(a^2+b^2+c^2)", + which is equal to "-d" below. */ + const GLfloat d = -(a * v0[0] + b * v0[1] + c * z0); + + plane[0] = a; + plane[1] = b; + plane[2] = c; + plane[3] = d; +} + + +/* + * Compute coefficients of a plane with a constant Z value. + */ +static inline void +constant_plane(GLfloat value, GLfloat plane[4]) +{ + plane[0] = 0.0; + plane[1] = 0.0; + plane[2] = -1.0; + plane[3] = value; +} + +#define CONSTANT_PLANE(VALUE, PLANE) \ +do { \ + PLANE[0] = 0.0F; \ + PLANE[1] = 0.0F; \ + PLANE[2] = -1.0F; \ + PLANE[3] = VALUE; \ +} while (0) + + + +/* + * Solve plane equation for Z at (X,Y). + */ +static inline GLfloat +solve_plane(GLfloat x, GLfloat y, const GLfloat plane[4]) +{ + ASSERT(plane[2] != 0.0F); + return (plane[3] + plane[0] * x + plane[1] * y) / -plane[2]; +} + + +#define SOLVE_PLANE(X, Y, PLANE) \ + ((PLANE[3] + PLANE[0] * (X) + PLANE[1] * (Y)) / -PLANE[2]) + + +/* + * Return 1 / solve_plane(). + */ +static inline GLfloat +solve_plane_recip(GLfloat x, GLfloat y, const GLfloat plane[4]) +{ + const GLfloat denom = plane[3] + plane[0] * x + plane[1] * y; + if (denom == 0.0F) + return 0.0F; + else + return -plane[2] / denom; +} + + +/* + * Solve plane and return clamped GLchan value. + */ +static inline GLchan +solve_plane_chan(GLfloat x, GLfloat y, const GLfloat plane[4]) +{ + const GLfloat z = (plane[3] + plane[0] * x + plane[1] * y) / -plane[2]; +#if CHAN_TYPE == GL_FLOAT + return CLAMP(z, 0.0F, CHAN_MAXF); +#else + if (z < 0) + return 0; + else if (z > CHAN_MAX) + return CHAN_MAX; + return (GLchan) IROUND_POS(z); +#endif +} + + +static inline GLfloat +plane_dx(const GLfloat plane[4]) +{ + return -plane[0] / plane[2]; +} + +static inline GLfloat +plane_dy(const GLfloat plane[4]) +{ + return -plane[1] / plane[2]; +} + + + +/* + * Compute how much (area) of the given pixel is inside the triangle. + * Vertices MUST be specified in counter-clockwise order. + * Return: coverage in [0, 1]. + */ +static GLfloat +compute_coveragef(const GLfloat v0[3], const GLfloat v1[3], + const GLfloat v2[3], GLint winx, GLint winy) +{ + /* Given a position [0,3]x[0,3] return the sub-pixel sample position. + * Contributed by Ray Tice. + * + * Jitter sample positions - + * - average should be .5 in x & y for each column + * - each of the 16 rows and columns should be used once + * - the rectangle formed by the first four points + * should contain the other points + * - the distrubition should be fairly even in any given direction + * + * The pattern drawn below isn't optimal, but it's better than a regular + * grid. In the drawing, the center of each subpixel is surrounded by + * four dots. The "x" marks the jittered position relative to the + * subpixel center. + */ +#define POS(a, b) (0.5+a*4+b)/16 + static const GLfloat samples[16][2] = { + /* start with the four corners */ + { POS(0, 2), POS(0, 0) }, + { POS(3, 3), POS(0, 2) }, + { POS(0, 0), POS(3, 1) }, + { POS(3, 1), POS(3, 3) }, + /* continue with interior samples */ + { POS(1, 1), POS(0, 1) }, + { POS(2, 0), POS(0, 3) }, + { POS(0, 3), POS(1, 3) }, + { POS(1, 2), POS(1, 0) }, + { POS(2, 3), POS(1, 2) }, + { POS(3, 2), POS(1, 1) }, + { POS(0, 1), POS(2, 2) }, + { POS(1, 0), POS(2, 1) }, + { POS(2, 1), POS(2, 3) }, + { POS(3, 0), POS(2, 0) }, + { POS(1, 3), POS(3, 0) }, + { POS(2, 2), POS(3, 2) } + }; + + const GLfloat x = (GLfloat) winx; + const GLfloat y = (GLfloat) winy; + const GLfloat dx0 = v1[0] - v0[0]; + const GLfloat dy0 = v1[1] - v0[1]; + const GLfloat dx1 = v2[0] - v1[0]; + const GLfloat dy1 = v2[1] - v1[1]; + const GLfloat dx2 = v0[0] - v2[0]; + const GLfloat dy2 = v0[1] - v2[1]; + GLint stop = 4, i; + GLfloat insideCount = 16.0F; + + ASSERT(dx0 * dy1 - dx1 * dy0 >= 0.0); /* area >= 0.0 */ + + for (i = 0; i < stop; i++) { + const GLfloat sx = x + samples[i][0]; + const GLfloat sy = y + samples[i][1]; + /* cross product determines if sample is inside or outside each edge */ + GLfloat cross = (dx0 * (sy - v0[1]) - dy0 * (sx - v0[0])); + /* Check if the sample is exactly on an edge. If so, let cross be a + * positive or negative value depending on the direction of the edge. + */ + if (cross == 0.0F) + cross = dx0 + dy0; + if (cross < 0.0F) { + /* sample point is outside first edge */ + insideCount -= 1.0F; + stop = 16; + } + else { + /* sample point is inside first edge */ + cross = (dx1 * (sy - v1[1]) - dy1 * (sx - v1[0])); + if (cross == 0.0F) + cross = dx1 + dy1; + if (cross < 0.0F) { + /* sample point is outside second edge */ + insideCount -= 1.0F; + stop = 16; + } + else { + /* sample point is inside first and second edges */ + cross = (dx2 * (sy - v2[1]) - dy2 * (sx - v2[0])); + if (cross == 0.0F) + cross = dx2 + dy2; + if (cross < 0.0F) { + /* sample point is outside third edge */ + insideCount -= 1.0F; + stop = 16; + } + } + } + } + if (stop == 4) + return 1.0F; + else + return insideCount * (1.0F / 16.0F); +} + + + +static void +rgba_aa_tri(struct gl_context *ctx, + const SWvertex *v0, + const SWvertex *v1, + const SWvertex *v2) +{ +#define DO_Z +#include "s_aatritemp.h" +} + + +static void +general_aa_tri(struct gl_context *ctx, + const SWvertex *v0, + const SWvertex *v1, + const SWvertex *v2) +{ +#define DO_Z +#define DO_ATTRIBS +#include "s_aatritemp.h" +} + + + +/* + * Examine GL state and set swrast->Triangle to an + * appropriate antialiased triangle rasterizer function. + */ +void +_swrast_set_aa_triangle_function(struct gl_context *ctx) +{ + SWcontext *swrast = SWRAST_CONTEXT(ctx); + + ASSERT(ctx->Polygon.SmoothFlag); + + if (ctx->Texture._EnabledCoordUnits != 0 + || ctx->FragmentProgram._Current + || swrast->_FogEnabled + || _mesa_need_secondary_color(ctx)) { + SWRAST_CONTEXT(ctx)->Triangle = general_aa_tri; + } + else { + SWRAST_CONTEXT(ctx)->Triangle = rgba_aa_tri; + } + + ASSERT(SWRAST_CONTEXT(ctx)->Triangle); +} diff --git a/mesalib/src/mesa/swrast/s_blit.c b/mesalib/src/mesa/swrast/s_blit.c index 7f53f19eb..f094be898 100644 --- a/mesalib/src/mesa/swrast/s_blit.c +++ b/mesalib/src/mesa/swrast/s_blit.c @@ -243,7 +243,7 @@ blit_nearest(struct gl_context *ctx, #define LERP(T, A, B) ( (A) + (T) * ((B) - (A)) ) -static INLINE GLfloat +static inline GLfloat lerp_2d(GLfloat a, GLfloat b, GLfloat v00, GLfloat v10, GLfloat v01, GLfloat v11) { diff --git a/mesalib/src/mesa/swrast/s_context.c b/mesalib/src/mesa/swrast/s_context.c index a4acac233..5287671d7 100644 --- a/mesalib/src/mesa/swrast/s_context.c +++ b/mesalib/src/mesa/swrast/s_context.c @@ -780,17 +780,6 @@ _swrast_CreateContext( struct gl_context *ctx ) swrast->PointSpan.facing = 0; swrast->PointSpan.array = swrast->SpanArrays; - /* TexelBuffer is also global and normally shared by all SWspan instances; - * when running with multiple threads, create one per thread. - */ - swrast->TexelBuffer = (GLfloat *) MALLOC(ctx->Const.MaxTextureImageUnits * maxThreads * - MAX_WIDTH * 4 * sizeof(GLfloat)); - if (!swrast->TexelBuffer) { - FREE(swrast->SpanArrays); - FREE(swrast); - return GL_FALSE; - } - init_program_native_limits(&ctx->Const.VertexProgram); init_program_native_limits(&ctx->Const.GeometryProgram); init_program_native_limits(&ctx->Const.FragmentProgram); diff --git a/mesalib/src/mesa/swrast/s_context.h b/mesalib/src/mesa/swrast/s_context.h index 1e0bfc0f9..12ad688b0 100644 --- a/mesalib/src/mesa/swrast/s_context.h +++ b/mesalib/src/mesa/swrast/s_context.h @@ -163,14 +163,14 @@ struct swrast_texture_image /** cast wrapper */ -static INLINE struct swrast_texture_image * +static inline struct swrast_texture_image * swrast_texture_image(struct gl_texture_image *img) { return (struct swrast_texture_image *) img; } /** cast wrapper */ -static INLINE const struct swrast_texture_image * +static inline const struct swrast_texture_image * swrast_texture_image_const(const struct gl_texture_image *img) { return (const struct swrast_texture_image *) img; @@ -308,14 +308,14 @@ _swrast_update_texture_samplers(struct gl_context *ctx); /** Return SWcontext for the given struct gl_context */ -static INLINE SWcontext * +static inline SWcontext * SWRAST_CONTEXT(struct gl_context *ctx) { return (SWcontext *) ctx->swrast_context; } /** const version of above */ -static INLINE const SWcontext * +static inline const SWcontext * CONST_SWRAST_CONTEXT(const struct gl_context *ctx) { return (const SWcontext *) ctx->swrast_context; @@ -327,7 +327,7 @@ CONST_SWRAST_CONTEXT(const struct gl_context *ctx) * For drivers that rely on swrast for fallback rendering, this is the * driver's opportunity to map renderbuffers and textures. */ -static INLINE void +static inline void swrast_render_start(struct gl_context *ctx) { SWcontext *swrast = SWRAST_CONTEXT(ctx); @@ -337,7 +337,7 @@ swrast_render_start(struct gl_context *ctx) /** Called after framebuffer reading/writing */ -static INLINE void +static inline void swrast_render_finish(struct gl_context *ctx) { SWcontext *swrast = SWRAST_CONTEXT(ctx); diff --git a/mesalib/src/mesa/swrast/s_fragprog.c b/mesalib/src/mesa/swrast/s_fragprog.c index 9513b1c46..7f205a200 100644 --- a/mesalib/src/mesa/swrast/s_fragprog.c +++ b/mesalib/src/mesa/swrast/s_fragprog.c @@ -35,7 +35,7 @@ * Apply texture object's swizzle (X/Y/Z/W/0/1) to incoming 'texel' * and return results in 'colorOut'. */ -static INLINE void +static inline void swizzle_texel(const GLfloat texel[4], GLfloat colorOut[4], GLuint swizzle) { if (swizzle == SWIZZLE_NOOP) { diff --git a/mesalib/src/mesa/swrast/s_logic.c b/mesalib/src/mesa/swrast/s_logic.c index 2f0c0ea7c..80ee46c24 100644 --- a/mesalib/src/mesa/swrast/s_logic.c +++ b/mesalib/src/mesa/swrast/s_logic.c @@ -1,219 +1,219 @@ -/* - * Mesa 3-D graphics library - * Version: 6.5.2 - * - * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -#include "main/glheader.h" -#include "main/context.h" -#include "main/imports.h" -#include "main/macros.h" - -#include "s_context.h" -#include "s_logic.h" -#include "s_span.h" - - -/** - * We do all logic ops on 4-byte GLuints. - * Depending on bytes per pixel, the mask array elements correspond to - * 1, 2 or 4 GLuints. - */ -#define LOGIC_OP_LOOP(MODE, MASKSTRIDE) \ -do { \ - GLuint i; \ - switch (MODE) { \ - case GL_CLEAR: \ - for (i = 0; i < n; i++) { \ - if (mask[i / MASKSTRIDE]) { \ - src[i] = 0; \ - } \ - } \ - break; \ - case GL_SET: \ - for (i = 0; i < n; i++) { \ - if (mask[i / MASKSTRIDE]) { \ - src[i] = ~0; \ - } \ - } \ - break; \ - case GL_COPY: \ - /* do nothing */ \ - break; \ - case GL_COPY_INVERTED: \ - for (i = 0; i < n; i++) { \ - if (mask[i / MASKSTRIDE]) { \ - src[i] = ~src[i]; \ - } \ - } \ - break; \ - case GL_NOOP: \ - for (i = 0; i < n; i++) { \ - if (mask[i / MASKSTRIDE]) { \ - src[i] = dest[i]; \ - } \ - } \ - break; \ - case GL_INVERT: \ - for (i = 0; i < n; i++) { \ - if (mask[i / MASKSTRIDE]) { \ - src[i] = ~dest[i]; \ - } \ - } \ - break; \ - case GL_AND: \ - for (i = 0; i < n; i++) { \ - if (mask[i / MASKSTRIDE]) { \ - src[i] &= dest[i]; \ - } \ - } \ - break; \ - case GL_NAND: \ - for (i = 0; i < n; i++) { \ - if (mask[i / MASKSTRIDE]) { \ - src[i] = ~(src[i] & dest[i]); \ - } \ - } \ - break; \ - case GL_OR: \ - for (i = 0; i < n; i++) { \ - if (mask[i / MASKSTRIDE]) { \ - src[i] |= dest[i]; \ - } \ - } \ - break; \ - case GL_NOR: \ - for (i = 0; i < n; i++) { \ - if (mask[i / MASKSTRIDE]) { \ - src[i] = ~(src[i] | dest[i]); \ - } \ - } \ - break; \ - case GL_XOR: \ - for (i = 0; i < n; i++) { \ - if (mask[i / MASKSTRIDE]) { \ - src[i] ^= dest[i]; \ - } \ - } \ - break; \ - case GL_EQUIV: \ - for (i = 0; i < n; i++) { \ - if (mask[i / MASKSTRIDE]) { \ - src[i] = ~(src[i] ^ dest[i]); \ - } \ - } \ - break; \ - case GL_AND_REVERSE: \ - for (i = 0; i < n; i++) { \ - if (mask[i / MASKSTRIDE]) { \ - src[i] = src[i] & ~dest[i]; \ - } \ - } \ - break; \ - case GL_AND_INVERTED: \ - for (i = 0; i < n; i++) { \ - if (mask[i / MASKSTRIDE]) { \ - src[i] = ~src[i] & dest[i]; \ - } \ - } \ - break; \ - case GL_OR_REVERSE: \ - for (i = 0; i < n; i++) { \ - if (mask[i / MASKSTRIDE]) { \ - src[i] = src[i] | ~dest[i]; \ - } \ - } \ - break; \ - case GL_OR_INVERTED: \ - for (i = 0; i < n; i++) { \ - if (mask[i / MASKSTRIDE]) { \ - src[i] = ~src[i] | dest[i]; \ - } \ - } \ - break; \ - default: \ - _mesa_problem(ctx, "bad logicop mode");\ - } \ -} while (0) - - - -static INLINE void -logicop_uint1(struct gl_context *ctx, GLuint n, GLuint src[], const GLuint dest[], - const GLubyte mask[]) -{ - LOGIC_OP_LOOP(ctx->Color.LogicOp, 1); -} - - -static INLINE void -logicop_uint2(struct gl_context *ctx, GLuint n, GLuint src[], const GLuint dest[], - const GLubyte mask[]) -{ - LOGIC_OP_LOOP(ctx->Color.LogicOp, 2); -} - - -static INLINE void -logicop_uint4(struct gl_context *ctx, GLuint n, GLuint src[], const GLuint dest[], - const GLubyte mask[]) -{ - LOGIC_OP_LOOP(ctx->Color.LogicOp, 4); -} - - - -/** - * Apply the current logic operator to a span of RGBA pixels. - * We can handle horizontal runs of pixels (spans) or arrays of x/y - * pixel coordinates. - */ -void -_swrast_logicop_rgba_span(struct gl_context *ctx, struct gl_renderbuffer *rb, - SWspan *span) -{ - void *rbPixels; - - ASSERT(span->end < MAX_WIDTH); - ASSERT(span->arrayMask & SPAN_RGBA); - ASSERT(rb->DataType == span->array->ChanType); - - rbPixels = _swrast_get_dest_rgba(ctx, rb, span); - - if (span->array->ChanType == GL_UNSIGNED_BYTE) { - /* treat 4*GLubyte as GLuint */ - logicop_uint1(ctx, span->end, - (GLuint *) span->array->rgba8, - (const GLuint *) rbPixels, span->array->mask); - } - else if (span->array->ChanType == GL_UNSIGNED_SHORT) { - /* treat 2*GLushort as GLuint */ - logicop_uint2(ctx, 2 * span->end, - (GLuint *) span->array->rgba16, - (const GLuint *) rbPixels, span->array->mask); - } - else { - logicop_uint4(ctx, 4 * span->end, - (GLuint *) span->array->attribs[FRAG_ATTRIB_COL0], - (const GLuint *) rbPixels, span->array->mask); - } -} +/* + * Mesa 3-D graphics library + * Version: 6.5.2 + * + * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +#include "main/glheader.h" +#include "main/context.h" +#include "main/imports.h" +#include "main/macros.h" + +#include "s_context.h" +#include "s_logic.h" +#include "s_span.h" + + +/** + * We do all logic ops on 4-byte GLuints. + * Depending on bytes per pixel, the mask array elements correspond to + * 1, 2 or 4 GLuints. + */ +#define LOGIC_OP_LOOP(MODE, MASKSTRIDE) \ +do { \ + GLuint i; \ + switch (MODE) { \ + case GL_CLEAR: \ + for (i = 0; i < n; i++) { \ + if (mask[i / MASKSTRIDE]) { \ + src[i] = 0; \ + } \ + } \ + break; \ + case GL_SET: \ + for (i = 0; i < n; i++) { \ + if (mask[i / MASKSTRIDE]) { \ + src[i] = ~0; \ + } \ + } \ + break; \ + case GL_COPY: \ + /* do nothing */ \ + break; \ + case GL_COPY_INVERTED: \ + for (i = 0; i < n; i++) { \ + if (mask[i / MASKSTRIDE]) { \ + src[i] = ~src[i]; \ + } \ + } \ + break; \ + case GL_NOOP: \ + for (i = 0; i < n; i++) { \ + if (mask[i / MASKSTRIDE]) { \ + src[i] = dest[i]; \ + } \ + } \ + break; \ + case GL_INVERT: \ + for (i = 0; i < n; i++) { \ + if (mask[i / MASKSTRIDE]) { \ + src[i] = ~dest[i]; \ + } \ + } \ + break; \ + case GL_AND: \ + for (i = 0; i < n; i++) { \ + if (mask[i / MASKSTRIDE]) { \ + src[i] &= dest[i]; \ + } \ + } \ + break; \ + case GL_NAND: \ + for (i = 0; i < n; i++) { \ + if (mask[i / MASKSTRIDE]) { \ + src[i] = ~(src[i] & dest[i]); \ + } \ + } \ + break; \ + case GL_OR: \ + for (i = 0; i < n; i++) { \ + if (mask[i / MASKSTRIDE]) { \ + src[i] |= dest[i]; \ + } \ + } \ + break; \ + case GL_NOR: \ + for (i = 0; i < n; i++) { \ + if (mask[i / MASKSTRIDE]) { \ + src[i] = ~(src[i] | dest[i]); \ + } \ + } \ + break; \ + case GL_XOR: \ + for (i = 0; i < n; i++) { \ + if (mask[i / MASKSTRIDE]) { \ + src[i] ^= dest[i]; \ + } \ + } \ + break; \ + case GL_EQUIV: \ + for (i = 0; i < n; i++) { \ + if (mask[i / MASKSTRIDE]) { \ + src[i] = ~(src[i] ^ dest[i]); \ + } \ + } \ + break; \ + case GL_AND_REVERSE: \ + for (i = 0; i < n; i++) { \ + if (mask[i / MASKSTRIDE]) { \ + src[i] = src[i] & ~dest[i]; \ + } \ + } \ + break; \ + case GL_AND_INVERTED: \ + for (i = 0; i < n; i++) { \ + if (mask[i / MASKSTRIDE]) { \ + src[i] = ~src[i] & dest[i]; \ + } \ + } \ + break; \ + case GL_OR_REVERSE: \ + for (i = 0; i < n; i++) { \ + if (mask[i / MASKSTRIDE]) { \ + src[i] = src[i] | ~dest[i]; \ + } \ + } \ + break; \ + case GL_OR_INVERTED: \ + for (i = 0; i < n; i++) { \ + if (mask[i / MASKSTRIDE]) { \ + src[i] = ~src[i] | dest[i]; \ + } \ + } \ + break; \ + default: \ + _mesa_problem(ctx, "bad logicop mode");\ + } \ +} while (0) + + + +static inline void +logicop_uint1(struct gl_context *ctx, GLuint n, GLuint src[], const GLuint dest[], + const GLubyte mask[]) +{ + LOGIC_OP_LOOP(ctx->Color.LogicOp, 1); +} + + +static inline void +logicop_uint2(struct gl_context *ctx, GLuint n, GLuint src[], const GLuint dest[], + const GLubyte mask[]) +{ + LOGIC_OP_LOOP(ctx->Color.LogicOp, 2); +} + + +static inline void +logicop_uint4(struct gl_context *ctx, GLuint n, GLuint src[], const GLuint dest[], + const GLubyte mask[]) +{ + LOGIC_OP_LOOP(ctx->Color.LogicOp, 4); +} + + + +/** + * Apply the current logic operator to a span of RGBA pixels. + * We can handle horizontal runs of pixels (spans) or arrays of x/y + * pixel coordinates. + */ +void +_swrast_logicop_rgba_span(struct gl_context *ctx, struct gl_renderbuffer *rb, + SWspan *span) +{ + void *rbPixels; + + ASSERT(span->end < MAX_WIDTH); + ASSERT(span->arrayMask & SPAN_RGBA); + ASSERT(rb->DataType == span->array->ChanType); + + rbPixels = _swrast_get_dest_rgba(ctx, rb, span); + + if (span->array->ChanType == GL_UNSIGNED_BYTE) { + /* treat 4*GLubyte as GLuint */ + logicop_uint1(ctx, span->end, + (GLuint *) span->array->rgba8, + (const GLuint *) rbPixels, span->array->mask); + } + else if (span->array->ChanType == GL_UNSIGNED_SHORT) { + /* treat 2*GLushort as GLuint */ + logicop_uint2(ctx, 2 * span->end, + (GLuint *) span->array->rgba16, + (const GLuint *) rbPixels, span->array->mask); + } + else { + logicop_uint4(ctx, 4 * span->end, + (GLuint *) span->array->attribs[FRAG_ATTRIB_COL0], + (const GLuint *) rbPixels, span->array->mask); + } +} diff --git a/mesalib/src/mesa/swrast/s_points.c b/mesalib/src/mesa/swrast/s_points.c index a46be8f58..11b7ef7b1 100644 --- a/mesalib/src/mesa/swrast/s_points.c +++ b/mesalib/src/mesa/swrast/s_points.c @@ -1,572 +1,572 @@ -/* - * Mesa 3-D graphics library - * Version: 7.1 - * - * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -#include "main/glheader.h" -#include "main/colormac.h" -#include "main/macros.h" -#include "s_context.h" -#include "s_feedback.h" -#include "s_points.h" -#include "s_span.h" - - -/** - * Used to cull points with invalid coords - */ -#define CULL_INVALID(V) \ - do { \ - float tmp = (V)->attrib[FRAG_ATTRIB_WPOS][0] \ - + (V)->attrib[FRAG_ATTRIB_WPOS][1]; \ - if (IS_INF_OR_NAN(tmp)) \ - return; \ - } while(0) - - - -/** - * Get/compute the point size. - * The size may come from a vertex shader, or computed with attentuation - * or just the glPointSize value. - * Must also clamp to user-defined range and implmentation limits. - */ -static INLINE GLfloat -get_size(const struct gl_context *ctx, const SWvertex *vert, GLboolean smoothed) -{ - GLfloat size; - - if (ctx->Point._Attenuated || ctx->VertexProgram.PointSizeEnabled) { - /* use vertex's point size */ - size = vert->pointSize; - } - else { - /* use constant point size */ - size = ctx->Point.Size; - } - /* always clamp to user-specified limits */ - size = CLAMP(size, ctx->Point.MinSize, ctx->Point.MaxSize); - /* clamp to implementation limits */ - if (smoothed) - size = CLAMP(size, ctx->Const.MinPointSizeAA, ctx->Const.MaxPointSizeAA); - else - size = CLAMP(size, ctx->Const.MinPointSize, ctx->Const.MaxPointSize); - - return size; -} - - -/** - * Draw a point sprite - */ -static void -sprite_point(struct gl_context *ctx, const SWvertex *vert) -{ - SWcontext *swrast = SWRAST_CONTEXT(ctx); - SWspan span; - GLfloat size; - GLuint tCoords[MAX_TEXTURE_COORD_UNITS + 1]; - GLuint numTcoords = 0; - GLfloat t0, dtdy; - - CULL_INVALID(vert); - - /* z coord */ - if (ctx->DrawBuffer->Visual.depthBits <= 16) - span.z = FloatToFixed(vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F); - else - span.z = (GLuint) (vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F); - span.zStep = 0; - - size = get_size(ctx, vert, GL_FALSE); - - /* span init */ - INIT_SPAN(span, GL_POINT); - span.interpMask = SPAN_Z | SPAN_RGBA; - - span.facing = swrast->PointLineFacing; - - span.red = ChanToFixed(vert->color[0]); - span.green = ChanToFixed(vert->color[1]); - span.blue = ChanToFixed(vert->color[2]); - span.alpha = ChanToFixed(vert->color[3]); - span.redStep = 0; - span.greenStep = 0; - span.blueStep = 0; - span.alphaStep = 0; - - /* need these for fragment programs */ - span.attrStart[FRAG_ATTRIB_WPOS][3] = 1.0F; - span.attrStepX[FRAG_ATTRIB_WPOS][3] = 0.0F; - span.attrStepY[FRAG_ATTRIB_WPOS][3] = 0.0F; - - { - GLfloat s, r, dsdx; - - /* texcoord / pointcoord interpolants */ - s = 0.0F; - dsdx = 1.0F / size; - if (ctx->Point.SpriteOrigin == GL_LOWER_LEFT) { - dtdy = 1.0F / size; - t0 = 0.5F * dtdy; - } - else { - /* GL_UPPER_LEFT */ - dtdy = -1.0F / size; - t0 = 1.0F + 0.5F * dtdy; - } - - ATTRIB_LOOP_BEGIN - if (attr >= FRAG_ATTRIB_TEX0 && attr <= FRAG_ATTRIB_TEX7) { - /* a texcoord attribute */ - const GLuint u = attr - FRAG_ATTRIB_TEX0; - ASSERT(u < Elements(ctx->Point.CoordReplace)); - if (ctx->Point.CoordReplace[u]) { - tCoords[numTcoords++] = attr; - - if (ctx->Point.SpriteRMode == GL_ZERO) - r = 0.0F; - else if (ctx->Point.SpriteRMode == GL_S) - r = vert->attrib[attr][0]; - else /* GL_R */ - r = vert->attrib[attr][2]; - - span.attrStart[attr][0] = s; - span.attrStart[attr][1] = 0.0; /* overwritten below */ - span.attrStart[attr][2] = r; - span.attrStart[attr][3] = 1.0; - - span.attrStepX[attr][0] = dsdx; - span.attrStepX[attr][1] = 0.0; - span.attrStepX[attr][2] = 0.0; - span.attrStepX[attr][3] = 0.0; - - span.attrStepY[attr][0] = 0.0; - span.attrStepY[attr][1] = dtdy; - span.attrStepY[attr][2] = 0.0; - span.attrStepY[attr][3] = 0.0; - - continue; - } - } - else if (attr == FRAG_ATTRIB_PNTC) { - /* GLSL gl_PointCoord.xy (.zw undefined) */ - span.attrStart[FRAG_ATTRIB_PNTC][0] = 0.0; - span.attrStart[FRAG_ATTRIB_PNTC][1] = 0.0; /* t0 set below */ - span.attrStepX[FRAG_ATTRIB_PNTC][0] = dsdx; - span.attrStepX[FRAG_ATTRIB_PNTC][1] = 0.0; - span.attrStepY[FRAG_ATTRIB_PNTC][0] = 0.0; - span.attrStepY[FRAG_ATTRIB_PNTC][1] = dtdy; - tCoords[numTcoords++] = FRAG_ATTRIB_PNTC; - continue; - } - /* use vertex's texcoord/attrib */ - COPY_4V(span.attrStart[attr], vert->attrib[attr]); - ASSIGN_4V(span.attrStepX[attr], 0, 0, 0, 0); - ASSIGN_4V(span.attrStepY[attr], 0, 0, 0, 0); - ATTRIB_LOOP_END; - } - - /* compute pos, bounds and render */ - { - const GLfloat x = vert->attrib[FRAG_ATTRIB_WPOS][0]; - const GLfloat y = vert->attrib[FRAG_ATTRIB_WPOS][1]; - GLint iSize = (GLint) (size + 0.5F); - GLint xmin, xmax, ymin, ymax, iy; - GLint iRadius; - GLfloat tcoord = t0; - - iSize = MAX2(1, iSize); - iRadius = iSize / 2; - - if (iSize & 1) { - /* odd size */ - xmin = (GLint) (x - iRadius); - xmax = (GLint) (x + iRadius); - ymin = (GLint) (y - iRadius); - ymax = (GLint) (y + iRadius); - } - else { - /* even size */ - /* 0.501 factor allows conformance to pass */ - xmin = (GLint) (x + 0.501) - iRadius; - xmax = xmin + iSize - 1; - ymin = (GLint) (y + 0.501) - iRadius; - ymax = ymin + iSize - 1; - } - - /* render spans */ - for (iy = ymin; iy <= ymax; iy++) { - GLuint i; - /* setup texcoord T for this row */ - for (i = 0; i < numTcoords; i++) { - span.attrStart[tCoords[i]][1] = tcoord; - } - - /* these might get changed by span clipping */ - span.x = xmin; - span.y = iy; - span.end = xmax - xmin + 1; - - _swrast_write_rgba_span(ctx, &span); - - tcoord += dtdy; - } - } -} - - -/** - * Draw smooth/antialiased point. RGB or CI mode. - */ -static void -smooth_point(struct gl_context *ctx, const SWvertex *vert) -{ - SWcontext *swrast = SWRAST_CONTEXT(ctx); - SWspan span; - GLfloat size, alphaAtten; - - CULL_INVALID(vert); - - /* z coord */ - if (ctx->DrawBuffer->Visual.depthBits <= 16) - span.z = FloatToFixed(vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F); - else - span.z = (GLuint) (vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F); - span.zStep = 0; - - size = get_size(ctx, vert, GL_TRUE); - - /* alpha attenuation / fade factor */ - if (ctx->Multisample._Enabled) { - if (vert->pointSize >= ctx->Point.Threshold) { - alphaAtten = 1.0F; - } - else { - GLfloat dsize = vert->pointSize / ctx->Point.Threshold; - alphaAtten = dsize * dsize; - } - } - else { - alphaAtten = 1.0; - } - (void) alphaAtten; /* not used */ - - /* span init */ - INIT_SPAN(span, GL_POINT); - span.interpMask = SPAN_Z | SPAN_RGBA; - span.arrayMask = SPAN_COVERAGE | SPAN_MASK; - - span.facing = swrast->PointLineFacing; - - span.red = ChanToFixed(vert->color[0]); - span.green = ChanToFixed(vert->color[1]); - span.blue = ChanToFixed(vert->color[2]); - span.alpha = ChanToFixed(vert->color[3]); - span.redStep = 0; - span.greenStep = 0; - span.blueStep = 0; - span.alphaStep = 0; - - /* need these for fragment programs */ - span.attrStart[FRAG_ATTRIB_WPOS][3] = 1.0F; - span.attrStepX[FRAG_ATTRIB_WPOS][3] = 0.0F; - span.attrStepY[FRAG_ATTRIB_WPOS][3] = 0.0F; - - ATTRIB_LOOP_BEGIN - COPY_4V(span.attrStart[attr], vert->attrib[attr]); - ASSIGN_4V(span.attrStepX[attr], 0, 0, 0, 0); - ASSIGN_4V(span.attrStepY[attr], 0, 0, 0, 0); - ATTRIB_LOOP_END - - /* compute pos, bounds and render */ - { - const GLfloat x = vert->attrib[FRAG_ATTRIB_WPOS][0]; - const GLfloat y = vert->attrib[FRAG_ATTRIB_WPOS][1]; - const GLfloat radius = 0.5F * size; - const GLfloat rmin = radius - 0.7071F; /* 0.7071 = sqrt(2)/2 */ - const GLfloat rmax = radius + 0.7071F; - const GLfloat rmin2 = MAX2(0.0F, rmin * rmin); - const GLfloat rmax2 = rmax * rmax; - const GLfloat cscale = 1.0F / (rmax2 - rmin2); - const GLint xmin = (GLint) (x - radius); - const GLint xmax = (GLint) (x + radius); - const GLint ymin = (GLint) (y - radius); - const GLint ymax = (GLint) (y + radius); - GLint ix, iy; - - for (iy = ymin; iy <= ymax; iy++) { - - /* these might get changed by span clipping */ - span.x = xmin; - span.y = iy; - span.end = xmax - xmin + 1; - - /* compute coverage for each pixel in span */ - for (ix = xmin; ix <= xmax; ix++) { - const GLfloat dx = ix - x + 0.5F; - const GLfloat dy = iy - y + 0.5F; - const GLfloat dist2 = dx * dx + dy * dy; - GLfloat coverage; - - if (dist2 < rmax2) { - if (dist2 >= rmin2) { - /* compute partial coverage */ - coverage = 1.0F - (dist2 - rmin2) * cscale; - } - else { - /* full coverage */ - coverage = 1.0F; - } - span.array->mask[ix - xmin] = 1; - } - else { - /* zero coverage - fragment outside the radius */ - coverage = 0.0; - span.array->mask[ix - xmin] = 0; - } - span.array->coverage[ix - xmin] = coverage; - } - - /* render span */ - _swrast_write_rgba_span(ctx, &span); - - } - } -} - - -/** - * Draw large (size >= 1) non-AA point. RGB or CI mode. - */ -static void -large_point(struct gl_context *ctx, const SWvertex *vert) -{ - SWcontext *swrast = SWRAST_CONTEXT(ctx); - SWspan span; - GLfloat size; - - CULL_INVALID(vert); - - /* z coord */ - if (ctx->DrawBuffer->Visual.depthBits <= 16) - span.z = FloatToFixed(vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F); - else - span.z = (GLuint) (vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F); - span.zStep = 0; - - size = get_size(ctx, vert, GL_FALSE); - - /* span init */ - INIT_SPAN(span, GL_POINT); - span.arrayMask = SPAN_XY; - span.facing = swrast->PointLineFacing; - - span.interpMask = SPAN_Z | SPAN_RGBA; - span.red = ChanToFixed(vert->color[0]); - span.green = ChanToFixed(vert->color[1]); - span.blue = ChanToFixed(vert->color[2]); - span.alpha = ChanToFixed(vert->color[3]); - span.redStep = 0; - span.greenStep = 0; - span.blueStep = 0; - span.alphaStep = 0; - - /* need these for fragment programs */ - span.attrStart[FRAG_ATTRIB_WPOS][3] = 1.0F; - span.attrStepX[FRAG_ATTRIB_WPOS][3] = 0.0F; - span.attrStepY[FRAG_ATTRIB_WPOS][3] = 0.0F; - - ATTRIB_LOOP_BEGIN - COPY_4V(span.attrStart[attr], vert->attrib[attr]); - ASSIGN_4V(span.attrStepX[attr], 0, 0, 0, 0); - ASSIGN_4V(span.attrStepY[attr], 0, 0, 0, 0); - ATTRIB_LOOP_END - - /* compute pos, bounds and render */ - { - const GLfloat x = vert->attrib[FRAG_ATTRIB_WPOS][0]; - const GLfloat y = vert->attrib[FRAG_ATTRIB_WPOS][1]; - GLint iSize = (GLint) (size + 0.5F); - GLint xmin, xmax, ymin, ymax, ix, iy; - GLint iRadius; - - iSize = MAX2(1, iSize); - iRadius = iSize / 2; - - if (iSize & 1) { - /* odd size */ - xmin = (GLint) (x - iRadius); - xmax = (GLint) (x + iRadius); - ymin = (GLint) (y - iRadius); - ymax = (GLint) (y + iRadius); - } - else { - /* even size */ - /* 0.501 factor allows conformance to pass */ - xmin = (GLint) (x + 0.501) - iRadius; - xmax = xmin + iSize - 1; - ymin = (GLint) (y + 0.501) - iRadius; - ymax = ymin + iSize - 1; - } - - /* generate fragments */ - span.end = 0; - for (iy = ymin; iy <= ymax; iy++) { - for (ix = xmin; ix <= xmax; ix++) { - span.array->x[span.end] = ix; - span.array->y[span.end] = iy; - span.end++; - } - } - assert(span.end <= MAX_WIDTH); - _swrast_write_rgba_span(ctx, &span); - } -} - - -/** - * Draw size=1, single-pixel point - */ -static void -pixel_point(struct gl_context *ctx, const SWvertex *vert) -{ - SWcontext *swrast = SWRAST_CONTEXT(ctx); - /* - * Note that unlike the other functions, we put single-pixel points - * into a special span array in order to render as many points as - * possible with a single _swrast_write_rgba_span() call. - */ - SWspan *span = &(swrast->PointSpan); - GLuint count; - - CULL_INVALID(vert); - - /* Span init */ - span->interpMask = 0; - span->arrayMask = SPAN_XY | SPAN_Z; - span->arrayMask |= SPAN_RGBA; - /*span->arrayMask |= SPAN_LAMBDA;*/ - span->arrayAttribs = swrast->_ActiveAttribMask; /* we'll produce these vals */ - - /* need these for fragment programs */ - span->attrStart[FRAG_ATTRIB_WPOS][3] = 1.0F; - span->attrStepX[FRAG_ATTRIB_WPOS][3] = 0.0F; - span->attrStepY[FRAG_ATTRIB_WPOS][3] = 0.0F; - - /* check if we need to flush */ - if (span->end >= MAX_WIDTH || - (swrast->_RasterMask & (BLEND_BIT | LOGIC_OP_BIT | MASKING_BIT)) || - span->facing != swrast->PointLineFacing) { - if (span->end > 0) { - _swrast_write_rgba_span(ctx, span); - span->end = 0; - } - } - - count = span->end; - - span->facing = swrast->PointLineFacing; - - /* fragment attributes */ - span->array->rgba[count][RCOMP] = vert->color[0]; - span->array->rgba[count][GCOMP] = vert->color[1]; - span->array->rgba[count][BCOMP] = vert->color[2]; - span->array->rgba[count][ACOMP] = vert->color[3]; - - ATTRIB_LOOP_BEGIN - COPY_4V(span->array->attribs[attr][count], vert->attrib[attr]); - ATTRIB_LOOP_END - - /* fragment position */ - span->array->x[count] = (GLint) vert->attrib[FRAG_ATTRIB_WPOS][0]; - span->array->y[count] = (GLint) vert->attrib[FRAG_ATTRIB_WPOS][1]; - span->array->z[count] = (GLint) (vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F); - - span->end = count + 1; - ASSERT(span->end <= MAX_WIDTH); -} - - -/** - * Add specular color to primary color, draw point, restore original - * primary color. - */ -void -_swrast_add_spec_terms_point(struct gl_context *ctx, const SWvertex *v0) -{ - SWvertex *ncv0 = (SWvertex *) v0; /* cast away const */ - GLfloat rSum, gSum, bSum; - GLchan cSave[4]; - - /* save */ - COPY_CHAN4(cSave, ncv0->color); - /* sum */ - rSum = CHAN_TO_FLOAT(ncv0->color[0]) + ncv0->attrib[FRAG_ATTRIB_COL1][0]; - gSum = CHAN_TO_FLOAT(ncv0->color[1]) + ncv0->attrib[FRAG_ATTRIB_COL1][1]; - bSum = CHAN_TO_FLOAT(ncv0->color[2]) + ncv0->attrib[FRAG_ATTRIB_COL1][2]; - UNCLAMPED_FLOAT_TO_CHAN(ncv0->color[0], rSum); - UNCLAMPED_FLOAT_TO_CHAN(ncv0->color[1], gSum); - UNCLAMPED_FLOAT_TO_CHAN(ncv0->color[2], bSum); - /* draw */ - SWRAST_CONTEXT(ctx)->SpecPoint(ctx, ncv0); - /* restore */ - COPY_CHAN4(ncv0->color, cSave); -} - - -/** - * Examine current state to determine which point drawing function to use. - */ -void -_swrast_choose_point(struct gl_context *ctx) -{ - SWcontext *swrast = SWRAST_CONTEXT(ctx); - const GLfloat size = CLAMP(ctx->Point.Size, - ctx->Point.MinSize, - ctx->Point.MaxSize); - - if (ctx->RenderMode == GL_RENDER) { - if (ctx->Point.PointSprite) { - swrast->Point = sprite_point; - } - else if (ctx->Point.SmoothFlag) { - swrast->Point = smooth_point; - } - else if (size > 1.0 || - ctx->Point._Attenuated || - ctx->VertexProgram.PointSizeEnabled) { - swrast->Point = large_point; - } - else { - swrast->Point = pixel_point; - } - } - else if (ctx->RenderMode == GL_FEEDBACK) { - swrast->Point = _swrast_feedback_point; - } - else { - /* GL_SELECT mode */ - swrast->Point = _swrast_select_point; - } -} +/* + * Mesa 3-D graphics library + * Version: 7.1 + * + * Copyright (C) 1999-2007 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +#include "main/glheader.h" +#include "main/colormac.h" +#include "main/macros.h" +#include "s_context.h" +#include "s_feedback.h" +#include "s_points.h" +#include "s_span.h" + + +/** + * Used to cull points with invalid coords + */ +#define CULL_INVALID(V) \ + do { \ + float tmp = (V)->attrib[FRAG_ATTRIB_WPOS][0] \ + + (V)->attrib[FRAG_ATTRIB_WPOS][1]; \ + if (IS_INF_OR_NAN(tmp)) \ + return; \ + } while(0) + + + +/** + * Get/compute the point size. + * The size may come from a vertex shader, or computed with attentuation + * or just the glPointSize value. + * Must also clamp to user-defined range and implmentation limits. + */ +static inline GLfloat +get_size(const struct gl_context *ctx, const SWvertex *vert, GLboolean smoothed) +{ + GLfloat size; + + if (ctx->Point._Attenuated || ctx->VertexProgram.PointSizeEnabled) { + /* use vertex's point size */ + size = vert->pointSize; + } + else { + /* use constant point size */ + size = ctx->Point.Size; + } + /* always clamp to user-specified limits */ + size = CLAMP(size, ctx->Point.MinSize, ctx->Point.MaxSize); + /* clamp to implementation limits */ + if (smoothed) + size = CLAMP(size, ctx->Const.MinPointSizeAA, ctx->Const.MaxPointSizeAA); + else + size = CLAMP(size, ctx->Const.MinPointSize, ctx->Const.MaxPointSize); + + return size; +} + + +/** + * Draw a point sprite + */ +static void +sprite_point(struct gl_context *ctx, const SWvertex *vert) +{ + SWcontext *swrast = SWRAST_CONTEXT(ctx); + SWspan span; + GLfloat size; + GLuint tCoords[MAX_TEXTURE_COORD_UNITS + 1]; + GLuint numTcoords = 0; + GLfloat t0, dtdy; + + CULL_INVALID(vert); + + /* z coord */ + if (ctx->DrawBuffer->Visual.depthBits <= 16) + span.z = FloatToFixed(vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F); + else + span.z = (GLuint) (vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F); + span.zStep = 0; + + size = get_size(ctx, vert, GL_FALSE); + + /* span init */ + INIT_SPAN(span, GL_POINT); + span.interpMask = SPAN_Z | SPAN_RGBA; + + span.facing = swrast->PointLineFacing; + + span.red = ChanToFixed(vert->color[0]); + span.green = ChanToFixed(vert->color[1]); + span.blue = ChanToFixed(vert->color[2]); + span.alpha = ChanToFixed(vert->color[3]); + span.redStep = 0; + span.greenStep = 0; + span.blueStep = 0; + span.alphaStep = 0; + + /* need these for fragment programs */ + span.attrStart[FRAG_ATTRIB_WPOS][3] = 1.0F; + span.attrStepX[FRAG_ATTRIB_WPOS][3] = 0.0F; + span.attrStepY[FRAG_ATTRIB_WPOS][3] = 0.0F; + + { + GLfloat s, r, dsdx; + + /* texcoord / pointcoord interpolants */ + s = 0.0F; + dsdx = 1.0F / size; + if (ctx->Point.SpriteOrigin == GL_LOWER_LEFT) { + dtdy = 1.0F / size; + t0 = 0.5F * dtdy; + } + else { + /* GL_UPPER_LEFT */ + dtdy = -1.0F / size; + t0 = 1.0F + 0.5F * dtdy; + } + + ATTRIB_LOOP_BEGIN + if (attr >= FRAG_ATTRIB_TEX0 && attr <= FRAG_ATTRIB_TEX7) { + /* a texcoord attribute */ + const GLuint u = attr - FRAG_ATTRIB_TEX0; + ASSERT(u < Elements(ctx->Point.CoordReplace)); + if (ctx->Point.CoordReplace[u]) { + tCoords[numTcoords++] = attr; + + if (ctx->Point.SpriteRMode == GL_ZERO) + r = 0.0F; + else if (ctx->Point.SpriteRMode == GL_S) + r = vert->attrib[attr][0]; + else /* GL_R */ + r = vert->attrib[attr][2]; + + span.attrStart[attr][0] = s; + span.attrStart[attr][1] = 0.0; /* overwritten below */ + span.attrStart[attr][2] = r; + span.attrStart[attr][3] = 1.0; + + span.attrStepX[attr][0] = dsdx; + span.attrStepX[attr][1] = 0.0; + span.attrStepX[attr][2] = 0.0; + span.attrStepX[attr][3] = 0.0; + + span.attrStepY[attr][0] = 0.0; + span.attrStepY[attr][1] = dtdy; + span.attrStepY[attr][2] = 0.0; + span.attrStepY[attr][3] = 0.0; + + continue; + } + } + else if (attr == FRAG_ATTRIB_PNTC) { + /* GLSL gl_PointCoord.xy (.zw undefined) */ + span.attrStart[FRAG_ATTRIB_PNTC][0] = 0.0; + span.attrStart[FRAG_ATTRIB_PNTC][1] = 0.0; /* t0 set below */ + span.attrStepX[FRAG_ATTRIB_PNTC][0] = dsdx; + span.attrStepX[FRAG_ATTRIB_PNTC][1] = 0.0; + span.attrStepY[FRAG_ATTRIB_PNTC][0] = 0.0; + span.attrStepY[FRAG_ATTRIB_PNTC][1] = dtdy; + tCoords[numTcoords++] = FRAG_ATTRIB_PNTC; + continue; + } + /* use vertex's texcoord/attrib */ + COPY_4V(span.attrStart[attr], vert->attrib[attr]); + ASSIGN_4V(span.attrStepX[attr], 0, 0, 0, 0); + ASSIGN_4V(span.attrStepY[attr], 0, 0, 0, 0); + ATTRIB_LOOP_END; + } + + /* compute pos, bounds and render */ + { + const GLfloat x = vert->attrib[FRAG_ATTRIB_WPOS][0]; + const GLfloat y = vert->attrib[FRAG_ATTRIB_WPOS][1]; + GLint iSize = (GLint) (size + 0.5F); + GLint xmin, xmax, ymin, ymax, iy; + GLint iRadius; + GLfloat tcoord = t0; + + iSize = MAX2(1, iSize); + iRadius = iSize / 2; + + if (iSize & 1) { + /* odd size */ + xmin = (GLint) (x - iRadius); + xmax = (GLint) (x + iRadius); + ymin = (GLint) (y - iRadius); + ymax = (GLint) (y + iRadius); + } + else { + /* even size */ + /* 0.501 factor allows conformance to pass */ + xmin = (GLint) (x + 0.501) - iRadius; + xmax = xmin + iSize - 1; + ymin = (GLint) (y + 0.501) - iRadius; + ymax = ymin + iSize - 1; + } + + /* render spans */ + for (iy = ymin; iy <= ymax; iy++) { + GLuint i; + /* setup texcoord T for this row */ + for (i = 0; i < numTcoords; i++) { + span.attrStart[tCoords[i]][1] = tcoord; + } + + /* these might get changed by span clipping */ + span.x = xmin; + span.y = iy; + span.end = xmax - xmin + 1; + + _swrast_write_rgba_span(ctx, &span); + + tcoord += dtdy; + } + } +} + + +/** + * Draw smooth/antialiased point. RGB or CI mode. + */ +static void +smooth_point(struct gl_context *ctx, const SWvertex *vert) +{ + SWcontext *swrast = SWRAST_CONTEXT(ctx); + SWspan span; + GLfloat size, alphaAtten; + + CULL_INVALID(vert); + + /* z coord */ + if (ctx->DrawBuffer->Visual.depthBits <= 16) + span.z = FloatToFixed(vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F); + else + span.z = (GLuint) (vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F); + span.zStep = 0; + + size = get_size(ctx, vert, GL_TRUE); + + /* alpha attenuation / fade factor */ + if (ctx->Multisample._Enabled) { + if (vert->pointSize >= ctx->Point.Threshold) { + alphaAtten = 1.0F; + } + else { + GLfloat dsize = vert->pointSize / ctx->Point.Threshold; + alphaAtten = dsize * dsize; + } + } + else { + alphaAtten = 1.0; + } + (void) alphaAtten; /* not used */ + + /* span init */ + INIT_SPAN(span, GL_POINT); + span.interpMask = SPAN_Z | SPAN_RGBA; + span.arrayMask = SPAN_COVERAGE | SPAN_MASK; + + span.facing = swrast->PointLineFacing; + + span.red = ChanToFixed(vert->color[0]); + span.green = ChanToFixed(vert->color[1]); + span.blue = ChanToFixed(vert->color[2]); + span.alpha = ChanToFixed(vert->color[3]); + span.redStep = 0; + span.greenStep = 0; + span.blueStep = 0; + span.alphaStep = 0; + + /* need these for fragment programs */ + span.attrStart[FRAG_ATTRIB_WPOS][3] = 1.0F; + span.attrStepX[FRAG_ATTRIB_WPOS][3] = 0.0F; + span.attrStepY[FRAG_ATTRIB_WPOS][3] = 0.0F; + + ATTRIB_LOOP_BEGIN + COPY_4V(span.attrStart[attr], vert->attrib[attr]); + ASSIGN_4V(span.attrStepX[attr], 0, 0, 0, 0); + ASSIGN_4V(span.attrStepY[attr], 0, 0, 0, 0); + ATTRIB_LOOP_END + + /* compute pos, bounds and render */ + { + const GLfloat x = vert->attrib[FRAG_ATTRIB_WPOS][0]; + const GLfloat y = vert->attrib[FRAG_ATTRIB_WPOS][1]; + const GLfloat radius = 0.5F * size; + const GLfloat rmin = radius - 0.7071F; /* 0.7071 = sqrt(2)/2 */ + const GLfloat rmax = radius + 0.7071F; + const GLfloat rmin2 = MAX2(0.0F, rmin * rmin); + const GLfloat rmax2 = rmax * rmax; + const GLfloat cscale = 1.0F / (rmax2 - rmin2); + const GLint xmin = (GLint) (x - radius); + const GLint xmax = (GLint) (x + radius); + const GLint ymin = (GLint) (y - radius); + const GLint ymax = (GLint) (y + radius); + GLint ix, iy; + + for (iy = ymin; iy <= ymax; iy++) { + + /* these might get changed by span clipping */ + span.x = xmin; + span.y = iy; + span.end = xmax - xmin + 1; + + /* compute coverage for each pixel in span */ + for (ix = xmin; ix <= xmax; ix++) { + const GLfloat dx = ix - x + 0.5F; + const GLfloat dy = iy - y + 0.5F; + const GLfloat dist2 = dx * dx + dy * dy; + GLfloat coverage; + + if (dist2 < rmax2) { + if (dist2 >= rmin2) { + /* compute partial coverage */ + coverage = 1.0F - (dist2 - rmin2) * cscale; + } + else { + /* full coverage */ + coverage = 1.0F; + } + span.array->mask[ix - xmin] = 1; + } + else { + /* zero coverage - fragment outside the radius */ + coverage = 0.0; + span.array->mask[ix - xmin] = 0; + } + span.array->coverage[ix - xmin] = coverage; + } + + /* render span */ + _swrast_write_rgba_span(ctx, &span); + + } + } +} + + +/** + * Draw large (size >= 1) non-AA point. RGB or CI mode. + */ +static void +large_point(struct gl_context *ctx, const SWvertex *vert) +{ + SWcontext *swrast = SWRAST_CONTEXT(ctx); + SWspan span; + GLfloat size; + + CULL_INVALID(vert); + + /* z coord */ + if (ctx->DrawBuffer->Visual.depthBits <= 16) + span.z = FloatToFixed(vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F); + else + span.z = (GLuint) (vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F); + span.zStep = 0; + + size = get_size(ctx, vert, GL_FALSE); + + /* span init */ + INIT_SPAN(span, GL_POINT); + span.arrayMask = SPAN_XY; + span.facing = swrast->PointLineFacing; + + span.interpMask = SPAN_Z | SPAN_RGBA; + span.red = ChanToFixed(vert->color[0]); + span.green = ChanToFixed(vert->color[1]); + span.blue = ChanToFixed(vert->color[2]); + span.alpha = ChanToFixed(vert->color[3]); + span.redStep = 0; + span.greenStep = 0; + span.blueStep = 0; + span.alphaStep = 0; + + /* need these for fragment programs */ + span.attrStart[FRAG_ATTRIB_WPOS][3] = 1.0F; + span.attrStepX[FRAG_ATTRIB_WPOS][3] = 0.0F; + span.attrStepY[FRAG_ATTRIB_WPOS][3] = 0.0F; + + ATTRIB_LOOP_BEGIN + COPY_4V(span.attrStart[attr], vert->attrib[attr]); + ASSIGN_4V(span.attrStepX[attr], 0, 0, 0, 0); + ASSIGN_4V(span.attrStepY[attr], 0, 0, 0, 0); + ATTRIB_LOOP_END + + /* compute pos, bounds and render */ + { + const GLfloat x = vert->attrib[FRAG_ATTRIB_WPOS][0]; + const GLfloat y = vert->attrib[FRAG_ATTRIB_WPOS][1]; + GLint iSize = (GLint) (size + 0.5F); + GLint xmin, xmax, ymin, ymax, ix, iy; + GLint iRadius; + + iSize = MAX2(1, iSize); + iRadius = iSize / 2; + + if (iSize & 1) { + /* odd size */ + xmin = (GLint) (x - iRadius); + xmax = (GLint) (x + iRadius); + ymin = (GLint) (y - iRadius); + ymax = (GLint) (y + iRadius); + } + else { + /* even size */ + /* 0.501 factor allows conformance to pass */ + xmin = (GLint) (x + 0.501) - iRadius; + xmax = xmin + iSize - 1; + ymin = (GLint) (y + 0.501) - iRadius; + ymax = ymin + iSize - 1; + } + + /* generate fragments */ + span.end = 0; + for (iy = ymin; iy <= ymax; iy++) { + for (ix = xmin; ix <= xmax; ix++) { + span.array->x[span.end] = ix; + span.array->y[span.end] = iy; + span.end++; + } + } + assert(span.end <= MAX_WIDTH); + _swrast_write_rgba_span(ctx, &span); + } +} + + +/** + * Draw size=1, single-pixel point + */ +static void +pixel_point(struct gl_context *ctx, const SWvertex *vert) +{ + SWcontext *swrast = SWRAST_CONTEXT(ctx); + /* + * Note that unlike the other functions, we put single-pixel points + * into a special span array in order to render as many points as + * possible with a single _swrast_write_rgba_span() call. + */ + SWspan *span = &(swrast->PointSpan); + GLuint count; + + CULL_INVALID(vert); + + /* Span init */ + span->interpMask = 0; + span->arrayMask = SPAN_XY | SPAN_Z; + span->arrayMask |= SPAN_RGBA; + /*span->arrayMask |= SPAN_LAMBDA;*/ + span->arrayAttribs = swrast->_ActiveAttribMask; /* we'll produce these vals */ + + /* need these for fragment programs */ + span->attrStart[FRAG_ATTRIB_WPOS][3] = 1.0F; + span->attrStepX[FRAG_ATTRIB_WPOS][3] = 0.0F; + span->attrStepY[FRAG_ATTRIB_WPOS][3] = 0.0F; + + /* check if we need to flush */ + if (span->end >= MAX_WIDTH || + (swrast->_RasterMask & (BLEND_BIT | LOGIC_OP_BIT | MASKING_BIT)) || + span->facing != swrast->PointLineFacing) { + if (span->end > 0) { + _swrast_write_rgba_span(ctx, span); + span->end = 0; + } + } + + count = span->end; + + span->facing = swrast->PointLineFacing; + + /* fragment attributes */ + span->array->rgba[count][RCOMP] = vert->color[0]; + span->array->rgba[count][GCOMP] = vert->color[1]; + span->array->rgba[count][BCOMP] = vert->color[2]; + span->array->rgba[count][ACOMP] = vert->color[3]; + + ATTRIB_LOOP_BEGIN + COPY_4V(span->array->attribs[attr][count], vert->attrib[attr]); + ATTRIB_LOOP_END + + /* fragment position */ + span->array->x[count] = (GLint) vert->attrib[FRAG_ATTRIB_WPOS][0]; + span->array->y[count] = (GLint) vert->attrib[FRAG_ATTRIB_WPOS][1]; + span->array->z[count] = (GLint) (vert->attrib[FRAG_ATTRIB_WPOS][2] + 0.5F); + + span->end = count + 1; + ASSERT(span->end <= MAX_WIDTH); +} + + +/** + * Add specular color to primary color, draw point, restore original + * primary color. + */ +void +_swrast_add_spec_terms_point(struct gl_context *ctx, const SWvertex *v0) +{ + SWvertex *ncv0 = (SWvertex *) v0; /* cast away const */ + GLfloat rSum, gSum, bSum; + GLchan cSave[4]; + + /* save */ + COPY_CHAN4(cSave, ncv0->color); + /* sum */ + rSum = CHAN_TO_FLOAT(ncv0->color[0]) + ncv0->attrib[FRAG_ATTRIB_COL1][0]; + gSum = CHAN_TO_FLOAT(ncv0->color[1]) + ncv0->attrib[FRAG_ATTRIB_COL1][1]; + bSum = CHAN_TO_FLOAT(ncv0->color[2]) + ncv0->attrib[FRAG_ATTRIB_COL1][2]; + UNCLAMPED_FLOAT_TO_CHAN(ncv0->color[0], rSum); + UNCLAMPED_FLOAT_TO_CHAN(ncv0->color[1], gSum); + UNCLAMPED_FLOAT_TO_CHAN(ncv0->color[2], bSum); + /* draw */ + SWRAST_CONTEXT(ctx)->SpecPoint(ctx, ncv0); + /* restore */ + COPY_CHAN4(ncv0->color, cSave); +} + + +/** + * Examine current state to determine which point drawing function to use. + */ +void +_swrast_choose_point(struct gl_context *ctx) +{ + SWcontext *swrast = SWRAST_CONTEXT(ctx); + const GLfloat size = CLAMP(ctx->Point.Size, + ctx->Point.MinSize, + ctx->Point.MaxSize); + + if (ctx->RenderMode == GL_RENDER) { + if (ctx->Point.PointSprite) { + swrast->Point = sprite_point; + } + else if (ctx->Point.SmoothFlag) { + swrast->Point = smooth_point; + } + else if (size > 1.0 || + ctx->Point._Attenuated || + ctx->VertexProgram.PointSizeEnabled) { + swrast->Point = large_point; + } + else { + swrast->Point = pixel_point; + } + } + else if (ctx->RenderMode == GL_FEEDBACK) { + swrast->Point = _swrast_feedback_point; + } + else { + /* GL_SELECT mode */ + swrast->Point = _swrast_select_point; + } +} diff --git a/mesalib/src/mesa/swrast/s_span.c b/mesalib/src/mesa/swrast/s_span.c index 4631ff3d5..1aa20f9d7 100644 --- a/mesalib/src/mesa/swrast/s_span.c +++ b/mesalib/src/mesa/swrast/s_span.c @@ -162,7 +162,7 @@ _swrast_span_default_attribs(struct gl_context *ctx, SWspan *span) * Perspective correction will be done. The point/line/triangle function * should have computed attrStart/Step values for FRAG_ATTRIB_WPOS[3]! */ -static INLINE void +static inline void interpolate_active_attribs(struct gl_context *ctx, SWspan *span, GLbitfield attrMask) { const SWcontext *swrast = SWRAST_CONTEXT(ctx); @@ -209,7 +209,7 @@ interpolate_active_attribs(struct gl_context *ctx, SWspan *span, GLbitfield attr * Interpolate primary colors to fill in the span->array->rgba8 (or rgb16) * color array. */ -static INLINE void +static inline void interpolate_int_colors(struct gl_context *ctx, SWspan *span) { #if CHAN_BITS != 32 @@ -309,7 +309,7 @@ interpolate_int_colors(struct gl_context *ctx, SWspan *span) /** * Populate the FRAG_ATTRIB_COL0 array. */ -static INLINE void +static inline void interpolate_float_colors(SWspan *span) { GLfloat (*col0)[4] = span->array->attribs[FRAG_ATTRIB_COL0]; @@ -611,7 +611,7 @@ interpolate_texcoords(struct gl_context *ctx, SWspan *span) /** * Fill in the arrays->attribs[FRAG_ATTRIB_WPOS] array. */ -static INLINE void +static inline void interpolate_wpos(struct gl_context *ctx, SWspan *span) { GLfloat (*wpos)[4] = span->array->attribs[FRAG_ATTRIB_WPOS]; @@ -645,7 +645,7 @@ interpolate_wpos(struct gl_context *ctx, SWspan *span) /** * Apply the current polygon stipple pattern to a span of pixels. */ -static INLINE void +static inline void stipple_polygon_span(struct gl_context *ctx, SWspan *span) { GLubyte *mask = span->array->mask; @@ -690,7 +690,7 @@ stipple_polygon_span(struct gl_context *ctx, SWspan *span) * Return: GL_TRUE some pixels still visible * GL_FALSE nothing visible */ -static INLINE GLuint +static inline GLuint clip_span( struct gl_context *ctx, SWspan *span ) { const GLint xmin = ctx->DrawBuffer->_Xmin; @@ -817,7 +817,7 @@ clip_span( struct gl_context *ctx, SWspan *span ) * Only called during fixed-function operation. * Result is float color array (FRAG_ATTRIB_COL0). */ -static INLINE void +static inline void add_specular(struct gl_context *ctx, SWspan *span) { const SWcontext *swrast = SWRAST_CONTEXT(ctx); @@ -866,7 +866,7 @@ add_specular(struct gl_context *ctx, SWspan *span) /** * Apply antialiasing coverage value to alpha values. */ -static INLINE void +static inline void apply_aa_coverage(SWspan *span) { const GLfloat *coverage = span->array->coverage; @@ -900,7 +900,7 @@ apply_aa_coverage(SWspan *span) /** * Clamp span's float colors to [0,1] */ -static INLINE void +static inline void clamp_colors(SWspan *span) { GLfloat (*rgba)[4] = span->array->attribs[FRAG_ATTRIB_COL0]; @@ -921,7 +921,7 @@ clamp_colors(SWspan *span) * program that writes to gl_FragData[1] or higher. * \param output which fragment program color output is being processed */ -static INLINE void +static inline void convert_color_type(SWspan *span, GLenum newType, GLuint output) { GLvoid *src, *dst; @@ -961,7 +961,7 @@ convert_color_type(SWspan *span, GLenum newType, GLuint output) /** * Apply fragment shader, fragment program or normal texturing to span. */ -static INLINE void +static inline void shade_texture_span(struct gl_context *ctx, SWspan *span) { if (ctx->FragmentProgram._Current || diff --git a/mesalib/src/mesa/swrast/s_stencil.c b/mesalib/src/mesa/swrast/s_stencil.c index fa5093a34..e713e2393 100644 --- a/mesalib/src/mesa/swrast/s_stencil.c +++ b/mesalib/src/mesa/swrast/s_stencil.c @@ -391,7 +391,7 @@ do_stencil_test( struct gl_context *ctx, GLuint face, GLuint n, GLstencil stenci * Compute the zpass/zfail masks by comparing the pre- and post-depth test * masks. */ -static INLINE void +static inline void compute_pass_fail_masks(GLuint n, const GLubyte origMask[], const GLubyte newMask[], GLubyte passMask[], GLubyte failMask[]) diff --git a/mesalib/src/mesa/swrast/s_texcombine.c b/mesalib/src/mesa/swrast/s_texcombine.c index 80b9dff3c..c67c356c1 100644 --- a/mesalib/src/mesa/swrast/s_texcombine.c +++ b/mesalib/src/mesa/swrast/s_texcombine.c @@ -45,7 +45,7 @@ typedef float (*float4_array)[4]; /** * Return array of texels for given unit. */ -static INLINE float4_array +static inline float4_array get_texel_array(SWcontext *swrast, GLuint unit) { #ifdef _OPENMP @@ -590,6 +590,26 @@ _swrast_texture_span( struct gl_context *ctx, SWspan *span ) float4_array primary_rgba; GLuint unit; + if (!swrast->TexelBuffer) { +#ifdef _OPENMP + const GLint maxThreads = omp_get_max_threads(); +#else + const GLint maxThreads = 1; +#endif + + /* TexelBuffer is also global and normally shared by all SWspan + * instances; when running with multiple threads, create one per + * thread. + */ + swrast->TexelBuffer = + (GLfloat *) MALLOC(ctx->Const.MaxTextureImageUnits * maxThreads * + MAX_WIDTH * 4 * sizeof(GLfloat)); + if (!swrast->TexelBuffer) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "texture_combine"); + return; + } + } + primary_rgba = (float4_array) malloc(span->end * 4 * sizeof(GLfloat)); if (!primary_rgba) { diff --git a/mesalib/src/mesa/swrast/s_texfetch.c b/mesalib/src/mesa/swrast/s_texfetch.c index ed17b4bda..73b5af319 100644 --- a/mesalib/src/mesa/swrast/s_texfetch.c +++ b/mesalib/src/mesa/swrast/s_texfetch.c @@ -51,7 +51,7 @@ * linear RGB value in [0, 1]. * Implemented with a 256-entry lookup table. */ -static INLINE GLfloat +static inline GLfloat nonlinear_to_linear(GLubyte cs8) { static GLfloat table[256]; diff --git a/mesalib/src/mesa/swrast/s_texfilter.c b/mesalib/src/mesa/swrast/s_texfilter.c index dd3761986..ca9133b21 100644 --- a/mesalib/src/mesa/swrast/s_texfilter.c +++ b/mesalib/src/mesa/swrast/s_texfilter.c @@ -57,7 +57,7 @@ * optimization! If we find that's not true on some systems, convert * to a macro. */ -static INLINE GLfloat +static inline GLfloat lerp_2d(GLfloat a, GLfloat b, GLfloat v00, GLfloat v10, GLfloat v01, GLfloat v11) { @@ -71,7 +71,7 @@ lerp_2d(GLfloat a, GLfloat b, * Do 3D/trilinear interpolation of float values. * \sa lerp_2d */ -static INLINE GLfloat +static inline GLfloat lerp_3d(GLfloat a, GLfloat b, GLfloat c, GLfloat v000, GLfloat v100, GLfloat v010, GLfloat v110, GLfloat v001, GLfloat v101, GLfloat v011, GLfloat v111) @@ -89,7 +89,7 @@ lerp_3d(GLfloat a, GLfloat b, GLfloat c, /** * Do linear interpolation of colors. */ -static INLINE void +static inline void lerp_rgba(GLfloat result[4], GLfloat t, const GLfloat a[4], const GLfloat b[4]) { result[0] = LERP(t, a[0], b[0]); @@ -102,7 +102,7 @@ lerp_rgba(GLfloat result[4], GLfloat t, const GLfloat a[4], const GLfloat b[4]) /** * Do bilinear interpolation of colors. */ -static INLINE void +static inline void lerp_rgba_2d(GLfloat result[4], GLfloat a, GLfloat b, const GLfloat t00[4], const GLfloat t10[4], const GLfloat t01[4], const GLfloat t11[4]) @@ -117,7 +117,7 @@ lerp_rgba_2d(GLfloat result[4], GLfloat a, GLfloat b, /** * Do trilinear interpolation of colors. */ -static INLINE void +static inline void lerp_rgba_3d(GLfloat result[4], GLfloat a, GLfloat b, GLfloat c, const GLfloat t000[4], const GLfloat t100[4], const GLfloat t010[4], const GLfloat t110[4], @@ -153,7 +153,7 @@ lerp_rgba_3d(GLfloat result[4], GLfloat a, GLfloat b, GLfloat c, * i0, i1 = returns two nearest texel indexes * weight = returns blend factor between texels */ -static INLINE void +static inline void linear_texel_locations(GLenum wrapMode, const struct gl_texture_image *img, GLint size, GLfloat s, @@ -281,7 +281,7 @@ linear_texel_locations(GLenum wrapMode, /** * Used to compute texel location for nearest sampling. */ -static INLINE GLint +static inline GLint nearest_texel_location(GLenum wrapMode, const struct gl_texture_image *img, GLint size, GLfloat s) @@ -406,7 +406,7 @@ nearest_texel_location(GLenum wrapMode, /* Power of two image sizes only */ -static INLINE void +static inline void linear_repeat_texel_location(GLuint size, GLfloat s, GLint *i0, GLint *i1, GLfloat *weight) { @@ -420,7 +420,7 @@ linear_repeat_texel_location(GLuint size, GLfloat s, /** * Do clamp/wrap for a texture rectangle coord, GL_NEAREST filter mode. */ -static INLINE GLint +static inline GLint clamp_rect_coord_nearest(GLenum wrapMode, GLfloat coord, GLint max) { switch (wrapMode) { @@ -440,7 +440,7 @@ clamp_rect_coord_nearest(GLenum wrapMode, GLfloat coord, GLint max) /** * As above, but GL_LINEAR filtering. */ -static INLINE void +static inline void clamp_rect_coord_linear(GLenum wrapMode, GLfloat coord, GLint max, GLint *i0out, GLint *i1out, GLfloat *weight) { @@ -481,7 +481,7 @@ clamp_rect_coord_linear(GLenum wrapMode, GLfloat coord, GLint max, /** * Compute slice/image to use for 1D or 2D array texture. */ -static INLINE GLint +static inline GLint tex_array_slice(GLfloat coord, GLsizei size) { GLint slice = IFLOOR(coord + 0.5f); @@ -494,7 +494,7 @@ tex_array_slice(GLfloat coord, GLsizei size) * Compute nearest integer texcoords for given texobj and coordinate. * NOTE: only used for depth texture sampling. */ -static INLINE void +static inline void nearest_texcoord(const struct gl_texture_object *texObj, GLuint level, const GLfloat texcoord[4], @@ -541,7 +541,7 @@ nearest_texcoord(const struct gl_texture_object *texObj, * Compute linear integer texcoords for given texobj and coordinate. * NOTE: only used for depth texture sampling. */ -static INLINE void +static inline void linear_texcoord(const struct gl_texture_object *texObj, GLuint level, const GLfloat texcoord[4], @@ -598,7 +598,7 @@ linear_texcoord(const struct gl_texture_object *texObj, * For linear interpolation between mipmap levels N and N+1, this function * computes N. */ -static INLINE GLint +static inline GLint linear_mipmap_level(const struct gl_texture_object *tObj, GLfloat lambda) { if (lambda < 0.0F) @@ -613,7 +613,7 @@ linear_mipmap_level(const struct gl_texture_object *tObj, GLfloat lambda) /** * Compute the nearest mipmap level to take texels from. */ -static INLINE GLint +static inline GLint nearest_mipmap_level(const struct gl_texture_object *tObj, GLfloat lambda) { GLfloat l; @@ -649,7 +649,7 @@ nearest_mipmap_level(const struct gl_texture_object *tObj, GLfloat lambda) * will be minified, magnified, or split between the two. This function * determines the subranges in [0, n-1] that are to be minified or magnified. */ -static INLINE void +static inline void compute_min_mag_ranges(const struct gl_texture_object *tObj, GLuint n, const GLfloat lambda[], GLuint *minStart, GLuint *minEnd, @@ -758,7 +758,7 @@ compute_min_mag_ranges(const struct gl_texture_object *tObj, * the base texture format. Ex: if the texture base format it GL_ALPHA, * we return (0,0,0,BorderAlpha). */ -static INLINE void +static inline void get_border_color(const struct gl_texture_object *tObj, const struct gl_texture_image *img, GLfloat rgba[4]) @@ -798,7 +798,7 @@ get_border_color(const struct gl_texture_object *tObj, /** * Return the texture sample for coordinate (s) using GL_NEAREST filter. */ -static INLINE void +static inline void sample_1d_nearest(struct gl_context *ctx, const struct gl_texture_object *tObj, const struct gl_texture_image *img, @@ -823,7 +823,7 @@ sample_1d_nearest(struct gl_context *ctx, /** * Return the texture sample for coordinate (s) using GL_LINEAR filter. */ -static INLINE void +static inline void sample_1d_linear(struct gl_context *ctx, const struct gl_texture_object *tObj, const struct gl_texture_image *img, @@ -1057,7 +1057,7 @@ sample_lambda_1d( struct gl_context *ctx, /** * Return the texture sample for coordinate (s,t) using GL_NEAREST filter. */ -static INLINE void +static inline void sample_2d_nearest(struct gl_context *ctx, const struct gl_texture_object *tObj, const struct gl_texture_image *img, @@ -1091,7 +1091,7 @@ sample_2d_nearest(struct gl_context *ctx, * Return the texture sample for coordinate (s,t) using GL_LINEAR filter. * New sampling code contributed by Lynn Quam . */ -static INLINE void +static inline void sample_2d_linear(struct gl_context *ctx, const struct gl_texture_object *tObj, const struct gl_texture_image *img, @@ -1156,7 +1156,7 @@ sample_2d_linear(struct gl_context *ctx, * As above, but we know WRAP_S == REPEAT and WRAP_T == REPEAT. * We don't have to worry about the texture border. */ -static INLINE void +static inline void sample_2d_linear_repeat(struct gl_context *ctx, const struct gl_texture_object *tObj, const struct gl_texture_image *img, @@ -1760,7 +1760,7 @@ sample_2d_footprint(struct gl_context *ctx, * Returns the index of the specified texture object in the * gl_context texture unit array. */ -static INLINE GLuint +static inline GLuint texture_unit_index(const struct gl_context *ctx, const struct gl_texture_object *tObj) { @@ -1941,7 +1941,7 @@ sample_lambda_2d_aniso(struct gl_context *ctx, /** * Return the texture sample for coordinate (s,t,r) using GL_NEAREST filter. */ -static INLINE void +static inline void sample_3d_nearest(struct gl_context *ctx, const struct gl_texture_object *tObj, const struct gl_texture_image *img, @@ -3282,7 +3282,7 @@ sample_lambda_1d_array(struct gl_context *ctx, /** * Compare texcoord against depth sample. Return 1.0 or the ambient value. */ -static INLINE GLfloat +static inline GLfloat shadow_compare(GLenum function, GLfloat coord, GLfloat depthSample, GLfloat ambient) { @@ -3315,7 +3315,7 @@ shadow_compare(GLenum function, GLfloat coord, GLfloat depthSample, /** * Compare texcoord against four depth samples. */ -static INLINE GLfloat +static inline GLfloat shadow_compare4(GLenum function, GLfloat coord, GLfloat depth00, GLfloat depth01, GLfloat depth10, GLfloat depth11, diff --git a/mesalib/src/mesa/swrast/s_texture.c b/mesalib/src/mesa/swrast/s_texture.c index aa073753f..36b429cfa 100644 --- a/mesalib/src/mesa/swrast/s_texture.c +++ b/mesalib/src/mesa/swrast/s_texture.c @@ -177,6 +177,13 @@ _swrast_map_teximage(struct gl_context *ctx, 1); assert(slice < texImage->Depth); map += slice * sliceSize; + } else if (texImage->TexObject->Target == GL_TEXTURE_1D_ARRAY) { + GLuint sliceSize = _mesa_format_image_size(texImage->TexFormat, + texImage->Width, + 1, + 1); + assert(slice < texImage->Height); + map += slice * sliceSize; } /* apply x/y offset to map address */ diff --git a/mesalib/src/mesa/swrast/s_triangle.c b/mesalib/src/mesa/swrast/s_triangle.c index 77bd2a359..839c4fd08 100644 --- a/mesalib/src/mesa/swrast/s_triangle.c +++ b/mesalib/src/mesa/swrast/s_triangle.c @@ -237,13 +237,13 @@ struct affine_info }; -static INLINE GLint +static inline GLint ilerp(GLint t, GLint a, GLint b) { return a + ((t * (b - a)) >> FIXED_SHIFT); } -static INLINE GLint +static inline GLint ilerp_2d(GLint ia, GLint ib, GLint v00, GLint v10, GLint v01, GLint v11) { const GLint temp0 = ilerp(ia, v00, v10); @@ -256,7 +256,7 @@ ilerp_2d(GLint ia, GLint ib, GLint v00, GLint v10, GLint v01, GLint v11) * textures with GL_REPLACE, GL_MODULATE, GL_BLEND, GL_DECAL or GL_ADD * texture env modes. */ -static INLINE void +static inline void affine_span(struct gl_context *ctx, SWspan *span, struct affine_info *info) { @@ -591,7 +591,7 @@ struct persp_info }; -static INLINE void +static inline void fast_persp_span(struct gl_context *ctx, SWspan *span, struct persp_info *info) { diff --git a/mesalib/src/mesa/swrast/s_zoom.c b/mesalib/src/mesa/swrast/s_zoom.c index 3b99bf754..3fb784847 100644 --- a/mesalib/src/mesa/swrast/s_zoom.c +++ b/mesalib/src/mesa/swrast/s_zoom.c @@ -1,433 +1,433 @@ -/* - * Mesa 3-D graphics library - * Version: 7.1 - * - * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#include "main/glheader.h" -#include "main/macros.h" -#include "main/imports.h" -#include "main/colormac.h" - -#include "s_context.h" -#include "s_span.h" -#include "s_stencil.h" -#include "s_zoom.h" - - -/** - * Compute the bounds of the region resulting from zooming a pixel span. - * The resulting region will be entirely inside the window/scissor bounds - * so no additional clipping is needed. - * \param imageX, imageY position of the mage being drawn (gl WindowPos) - * \param spanX, spanY position of span being drawing - * \param width number of pixels in span - * \param x0, x1 returned X bounds of zoomed region [x0, x1) - * \param y0, y1 returned Y bounds of zoomed region [y0, y1) - * \return GL_TRUE if any zoomed pixels visible, GL_FALSE if totally clipped - */ -static GLboolean -compute_zoomed_bounds(struct gl_context *ctx, GLint imageX, GLint imageY, - GLint spanX, GLint spanY, GLint width, - GLint *x0, GLint *x1, GLint *y0, GLint *y1) -{ - const struct gl_framebuffer *fb = ctx->DrawBuffer; - GLint c0, c1, r0, r1; - - ASSERT(spanX >= imageX); - ASSERT(spanY >= imageY); - - /* - * Compute destination columns: [c0, c1) - */ - c0 = imageX + (GLint) ((spanX - imageX) * ctx->Pixel.ZoomX); - c1 = imageX + (GLint) ((spanX + width - imageX) * ctx->Pixel.ZoomX); - if (c1 < c0) { - /* swap */ - GLint tmp = c1; - c1 = c0; - c0 = tmp; - } - c0 = CLAMP(c0, fb->_Xmin, fb->_Xmax); - c1 = CLAMP(c1, fb->_Xmin, fb->_Xmax); - if (c0 == c1) { - return GL_FALSE; /* no width */ - } - - /* - * Compute destination rows: [r0, r1) - */ - r0 = imageY + (GLint) ((spanY - imageY) * ctx->Pixel.ZoomY); - r1 = imageY + (GLint) ((spanY + 1 - imageY) * ctx->Pixel.ZoomY); - if (r1 < r0) { - /* swap */ - GLint tmp = r1; - r1 = r0; - r0 = tmp; - } - r0 = CLAMP(r0, fb->_Ymin, fb->_Ymax); - r1 = CLAMP(r1, fb->_Ymin, fb->_Ymax); - if (r0 == r1) { - return GL_FALSE; /* no height */ - } - - *x0 = c0; - *x1 = c1; - *y0 = r0; - *y1 = r1; - - return GL_TRUE; -} - - -/** - * Convert a zoomed x image coordinate back to an unzoomed x coord. - * 'zx' is screen position of a pixel in the zoomed image, who's left edge - * is at 'imageX'. - * return corresponding x coord in the original, unzoomed image. - * This can use this for unzooming X or Y values. - */ -static INLINE GLint -unzoom_x(GLfloat zoomX, GLint imageX, GLint zx) -{ - /* - zx = imageX + (x - imageX) * zoomX; - zx - imageX = (x - imageX) * zoomX; - (zx - imageX) / zoomX = x - imageX; - */ - GLint x; - if (zoomX < 0.0) - zx++; - x = imageX + (GLint) ((zx - imageX) / zoomX); - return x; -} - - - -/** - * Helper function called from _swrast_write_zoomed_rgba/rgb/ - * index/depth_span(). - */ -static void -zoom_span( struct gl_context *ctx, GLint imgX, GLint imgY, const SWspan *span, - const GLvoid *src, GLenum format ) -{ - SWcontext *swrast = SWRAST_CONTEXT(ctx); - SWspan zoomed; - GLint x0, x1, y0, y1; - GLint zoomedWidth; - - if (!compute_zoomed_bounds(ctx, imgX, imgY, span->x, span->y, span->end, - &x0, &x1, &y0, &y1)) { - return; /* totally clipped */ - } - - if (!swrast->ZoomedArrays) { - /* allocate on demand */ - swrast->ZoomedArrays = (SWspanarrays *) CALLOC(sizeof(SWspanarrays)); - if (!swrast->ZoomedArrays) - return; - } - - zoomedWidth = x1 - x0; - ASSERT(zoomedWidth > 0); - ASSERT(zoomedWidth <= MAX_WIDTH); - - /* no pixel arrays! must be horizontal spans. */ - ASSERT((span->arrayMask & SPAN_XY) == 0); - ASSERT(span->primitive == GL_BITMAP); - - INIT_SPAN(zoomed, GL_BITMAP); - zoomed.x = x0; - zoomed.end = zoomedWidth; - zoomed.array = swrast->ZoomedArrays; - zoomed.array->ChanType = span->array->ChanType; - if (zoomed.array->ChanType == GL_UNSIGNED_BYTE) - zoomed.array->rgba = (GLchan (*)[4]) zoomed.array->rgba8; - else if (zoomed.array->ChanType == GL_UNSIGNED_SHORT) - zoomed.array->rgba = (GLchan (*)[4]) zoomed.array->rgba16; - else - zoomed.array->rgba = (GLchan (*)[4]) zoomed.array->attribs[FRAG_ATTRIB_COL0]; - - COPY_4V(zoomed.attrStart[FRAG_ATTRIB_WPOS], span->attrStart[FRAG_ATTRIB_WPOS]); - COPY_4V(zoomed.attrStepX[FRAG_ATTRIB_WPOS], span->attrStepX[FRAG_ATTRIB_WPOS]); - COPY_4V(zoomed.attrStepY[FRAG_ATTRIB_WPOS], span->attrStepY[FRAG_ATTRIB_WPOS]); - - zoomed.attrStart[FRAG_ATTRIB_FOGC][0] = span->attrStart[FRAG_ATTRIB_FOGC][0]; - zoomed.attrStepX[FRAG_ATTRIB_FOGC][0] = span->attrStepX[FRAG_ATTRIB_FOGC][0]; - zoomed.attrStepY[FRAG_ATTRIB_FOGC][0] = span->attrStepY[FRAG_ATTRIB_FOGC][0]; - - if (format == GL_RGBA || format == GL_RGB) { - /* copy Z info */ - zoomed.z = span->z; - zoomed.zStep = span->zStep; - /* we'll generate an array of colorss */ - zoomed.interpMask = span->interpMask & ~SPAN_RGBA; - zoomed.arrayMask |= SPAN_RGBA; - zoomed.arrayAttribs |= FRAG_BIT_COL0; /* we'll produce these values */ - ASSERT(span->arrayMask & SPAN_RGBA); - } - else if (format == GL_DEPTH_COMPONENT) { - /* Copy color info */ - zoomed.red = span->red; - zoomed.green = span->green; - zoomed.blue = span->blue; - zoomed.alpha = span->alpha; - zoomed.redStep = span->redStep; - zoomed.greenStep = span->greenStep; - zoomed.blueStep = span->blueStep; - zoomed.alphaStep = span->alphaStep; - /* we'll generate an array of depth values */ - zoomed.interpMask = span->interpMask & ~SPAN_Z; - zoomed.arrayMask |= SPAN_Z; - ASSERT(span->arrayMask & SPAN_Z); - } - else { - _mesa_problem(ctx, "Bad format in zoom_span"); - return; - } - - /* zoom the span horizontally */ - if (format == GL_RGBA) { - if (zoomed.array->ChanType == GL_UNSIGNED_BYTE) { - const GLubyte (*rgba)[4] = (const GLubyte (*)[4]) src; - GLint i; - for (i = 0; i < zoomedWidth; i++) { - GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x; - ASSERT(j >= 0); - ASSERT(j < (GLint) span->end); - COPY_4UBV(zoomed.array->rgba8[i], rgba[j]); - } - } - else if (zoomed.array->ChanType == GL_UNSIGNED_SHORT) { - const GLushort (*rgba)[4] = (const GLushort (*)[4]) src; - GLint i; - for (i = 0; i < zoomedWidth; i++) { - GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x; - ASSERT(j >= 0); - ASSERT(j < (GLint) span->end); - COPY_4V(zoomed.array->rgba16[i], rgba[j]); - } - } - else { - const GLfloat (*rgba)[4] = (const GLfloat (*)[4]) src; - GLint i; - for (i = 0; i < zoomedWidth; i++) { - GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x; - ASSERT(j >= 0); - ASSERT(j < span->end); - COPY_4V(zoomed.array->attribs[FRAG_ATTRIB_COL0][i], rgba[j]); - } - } - } - else if (format == GL_RGB) { - if (zoomed.array->ChanType == GL_UNSIGNED_BYTE) { - const GLubyte (*rgb)[3] = (const GLubyte (*)[3]) src; - GLint i; - for (i = 0; i < zoomedWidth; i++) { - GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x; - ASSERT(j >= 0); - ASSERT(j < (GLint) span->end); - zoomed.array->rgba8[i][0] = rgb[j][0]; - zoomed.array->rgba8[i][1] = rgb[j][1]; - zoomed.array->rgba8[i][2] = rgb[j][2]; - zoomed.array->rgba8[i][3] = 0xff; - } - } - else if (zoomed.array->ChanType == GL_UNSIGNED_SHORT) { - const GLushort (*rgb)[3] = (const GLushort (*)[3]) src; - GLint i; - for (i = 0; i < zoomedWidth; i++) { - GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x; - ASSERT(j >= 0); - ASSERT(j < (GLint) span->end); - zoomed.array->rgba16[i][0] = rgb[j][0]; - zoomed.array->rgba16[i][1] = rgb[j][1]; - zoomed.array->rgba16[i][2] = rgb[j][2]; - zoomed.array->rgba16[i][3] = 0xffff; - } - } - else { - const GLfloat (*rgb)[3] = (const GLfloat (*)[3]) src; - GLint i; - for (i = 0; i < zoomedWidth; i++) { - GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x; - ASSERT(j >= 0); - ASSERT(j < span->end); - zoomed.array->attribs[FRAG_ATTRIB_COL0][i][0] = rgb[j][0]; - zoomed.array->attribs[FRAG_ATTRIB_COL0][i][1] = rgb[j][1]; - zoomed.array->attribs[FRAG_ATTRIB_COL0][i][2] = rgb[j][2]; - zoomed.array->attribs[FRAG_ATTRIB_COL0][i][3] = 1.0F; - } - } - } - else if (format == GL_DEPTH_COMPONENT) { - const GLuint *zValues = (const GLuint *) src; - GLint i; - for (i = 0; i < zoomedWidth; i++) { - GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x; - ASSERT(j >= 0); - ASSERT(j < (GLint) span->end); - zoomed.array->z[i] = zValues[j]; - } - /* Now, fall into the RGB path below */ - format = GL_RGBA; - } - - /* write the span in rows [r0, r1) */ - if (format == GL_RGBA || format == GL_RGB) { - /* Writing the span may modify the colors, so make a backup now if we're - * going to call _swrast_write_zoomed_span() more than once. - * Also, clipping may change the span end value, so store it as well. - */ - const GLint end = zoomed.end; /* save */ - GLuint rgbaSave[MAX_WIDTH][4]; - const GLint pixelSize = - (zoomed.array->ChanType == GL_UNSIGNED_BYTE) ? 4 * sizeof(GLubyte) : - ((zoomed.array->ChanType == GL_UNSIGNED_SHORT) ? 4 * sizeof(GLushort) - : 4 * sizeof(GLfloat)); - if (y1 - y0 > 1) { - memcpy(rgbaSave, zoomed.array->rgba, zoomed.end * pixelSize); - } - for (zoomed.y = y0; zoomed.y < y1; zoomed.y++) { - _swrast_write_rgba_span(ctx, &zoomed); - zoomed.end = end; /* restore */ - if (y1 - y0 > 1) { - /* restore the colors */ - memcpy(zoomed.array->rgba, rgbaSave, zoomed.end * pixelSize); - } - } - } -} - - -void -_swrast_write_zoomed_rgba_span(struct gl_context *ctx, GLint imgX, GLint imgY, - const SWspan *span, const GLvoid *rgba) -{ - zoom_span(ctx, imgX, imgY, span, rgba, GL_RGBA); -} - - -void -_swrast_write_zoomed_rgb_span(struct gl_context *ctx, GLint imgX, GLint imgY, - const SWspan *span, const GLvoid *rgb) -{ - zoom_span(ctx, imgX, imgY, span, rgb, GL_RGB); -} - - -void -_swrast_write_zoomed_depth_span(struct gl_context *ctx, GLint imgX, GLint imgY, - const SWspan *span) -{ - zoom_span(ctx, imgX, imgY, span, - (const GLvoid *) span->array->z, GL_DEPTH_COMPONENT); -} - - -/** - * Zoom/write stencil values. - * No per-fragment operations are applied. - */ -void -_swrast_write_zoomed_stencil_span(struct gl_context *ctx, GLint imgX, GLint imgY, - GLint width, GLint spanX, GLint spanY, - const GLstencil stencil[]) -{ - GLstencil zoomedVals[MAX_WIDTH]; - GLint x0, x1, y0, y1, y; - GLint i, zoomedWidth; - - if (!compute_zoomed_bounds(ctx, imgX, imgY, spanX, spanY, width, - &x0, &x1, &y0, &y1)) { - return; /* totally clipped */ - } - - zoomedWidth = x1 - x0; - ASSERT(zoomedWidth > 0); - ASSERT(zoomedWidth <= MAX_WIDTH); - - /* zoom the span horizontally */ - for (i = 0; i < zoomedWidth; i++) { - GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - spanX; - ASSERT(j >= 0); - ASSERT(j < width); - zoomedVals[i] = stencil[j]; - } - - /* write the zoomed spans */ - for (y = y0; y < y1; y++) { - _swrast_write_stencil_span(ctx, zoomedWidth, x0, y, zoomedVals); - } -} - - -/** - * Zoom/write z values (16 or 32-bit). - * No per-fragment operations are applied. - */ -void -_swrast_write_zoomed_z_span(struct gl_context *ctx, GLint imgX, GLint imgY, - GLint width, GLint spanX, GLint spanY, - const GLvoid *z) -{ - struct gl_renderbuffer *rb = ctx->DrawBuffer->_DepthBuffer; - GLushort zoomedVals16[MAX_WIDTH]; - GLuint zoomedVals32[MAX_WIDTH]; - GLint x0, x1, y0, y1, y; - GLint i, zoomedWidth; - - if (!compute_zoomed_bounds(ctx, imgX, imgY, spanX, spanY, width, - &x0, &x1, &y0, &y1)) { - return; /* totally clipped */ - } - - zoomedWidth = x1 - x0; - ASSERT(zoomedWidth > 0); - ASSERT(zoomedWidth <= MAX_WIDTH); - - /* zoom the span horizontally */ - if (rb->DataType == GL_UNSIGNED_SHORT) { - for (i = 0; i < zoomedWidth; i++) { - GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - spanX; - ASSERT(j >= 0); - ASSERT(j < width); - zoomedVals16[i] = ((GLushort *) z)[j]; - } - z = zoomedVals16; - } - else { - ASSERT(rb->DataType == GL_UNSIGNED_INT); - for (i = 0; i < zoomedWidth; i++) { - GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - spanX; - ASSERT(j >= 0); - ASSERT(j < width); - zoomedVals32[i] = ((GLuint *) z)[j]; - } - z = zoomedVals32; - } - - /* write the zoomed spans */ - for (y = y0; y < y1; y++) { - rb->PutRow(ctx, rb, zoomedWidth, x0, y, z, NULL); - } -} +/* + * Mesa 3-D graphics library + * Version: 7.1 + * + * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +#include "main/glheader.h" +#include "main/macros.h" +#include "main/imports.h" +#include "main/colormac.h" + +#include "s_context.h" +#include "s_span.h" +#include "s_stencil.h" +#include "s_zoom.h" + + +/** + * Compute the bounds of the region resulting from zooming a pixel span. + * The resulting region will be entirely inside the window/scissor bounds + * so no additional clipping is needed. + * \param imageX, imageY position of the mage being drawn (gl WindowPos) + * \param spanX, spanY position of span being drawing + * \param width number of pixels in span + * \param x0, x1 returned X bounds of zoomed region [x0, x1) + * \param y0, y1 returned Y bounds of zoomed region [y0, y1) + * \return GL_TRUE if any zoomed pixels visible, GL_FALSE if totally clipped + */ +static GLboolean +compute_zoomed_bounds(struct gl_context *ctx, GLint imageX, GLint imageY, + GLint spanX, GLint spanY, GLint width, + GLint *x0, GLint *x1, GLint *y0, GLint *y1) +{ + const struct gl_framebuffer *fb = ctx->DrawBuffer; + GLint c0, c1, r0, r1; + + ASSERT(spanX >= imageX); + ASSERT(spanY >= imageY); + + /* + * Compute destination columns: [c0, c1) + */ + c0 = imageX + (GLint) ((spanX - imageX) * ctx->Pixel.ZoomX); + c1 = imageX + (GLint) ((spanX + width - imageX) * ctx->Pixel.ZoomX); + if (c1 < c0) { + /* swap */ + GLint tmp = c1; + c1 = c0; + c0 = tmp; + } + c0 = CLAMP(c0, fb->_Xmin, fb->_Xmax); + c1 = CLAMP(c1, fb->_Xmin, fb->_Xmax); + if (c0 == c1) { + return GL_FALSE; /* no width */ + } + + /* + * Compute destination rows: [r0, r1) + */ + r0 = imageY + (GLint) ((spanY - imageY) * ctx->Pixel.ZoomY); + r1 = imageY + (GLint) ((spanY + 1 - imageY) * ctx->Pixel.ZoomY); + if (r1 < r0) { + /* swap */ + GLint tmp = r1; + r1 = r0; + r0 = tmp; + } + r0 = CLAMP(r0, fb->_Ymin, fb->_Ymax); + r1 = CLAMP(r1, fb->_Ymin, fb->_Ymax); + if (r0 == r1) { + return GL_FALSE; /* no height */ + } + + *x0 = c0; + *x1 = c1; + *y0 = r0; + *y1 = r1; + + return GL_TRUE; +} + + +/** + * Convert a zoomed x image coordinate back to an unzoomed x coord. + * 'zx' is screen position of a pixel in the zoomed image, who's left edge + * is at 'imageX'. + * return corresponding x coord in the original, unzoomed image. + * This can use this for unzooming X or Y values. + */ +static inline GLint +unzoom_x(GLfloat zoomX, GLint imageX, GLint zx) +{ + /* + zx = imageX + (x - imageX) * zoomX; + zx - imageX = (x - imageX) * zoomX; + (zx - imageX) / zoomX = x - imageX; + */ + GLint x; + if (zoomX < 0.0) + zx++; + x = imageX + (GLint) ((zx - imageX) / zoomX); + return x; +} + + + +/** + * Helper function called from _swrast_write_zoomed_rgba/rgb/ + * index/depth_span(). + */ +static void +zoom_span( struct gl_context *ctx, GLint imgX, GLint imgY, const SWspan *span, + const GLvoid *src, GLenum format ) +{ + SWcontext *swrast = SWRAST_CONTEXT(ctx); + SWspan zoomed; + GLint x0, x1, y0, y1; + GLint zoomedWidth; + + if (!compute_zoomed_bounds(ctx, imgX, imgY, span->x, span->y, span->end, + &x0, &x1, &y0, &y1)) { + return; /* totally clipped */ + } + + if (!swrast->ZoomedArrays) { + /* allocate on demand */ + swrast->ZoomedArrays = (SWspanarrays *) CALLOC(sizeof(SWspanarrays)); + if (!swrast->ZoomedArrays) + return; + } + + zoomedWidth = x1 - x0; + ASSERT(zoomedWidth > 0); + ASSERT(zoomedWidth <= MAX_WIDTH); + + /* no pixel arrays! must be horizontal spans. */ + ASSERT((span->arrayMask & SPAN_XY) == 0); + ASSERT(span->primitive == GL_BITMAP); + + INIT_SPAN(zoomed, GL_BITMAP); + zoomed.x = x0; + zoomed.end = zoomedWidth; + zoomed.array = swrast->ZoomedArrays; + zoomed.array->ChanType = span->array->ChanType; + if (zoomed.array->ChanType == GL_UNSIGNED_BYTE) + zoomed.array->rgba = (GLchan (*)[4]) zoomed.array->rgba8; + else if (zoomed.array->ChanType == GL_UNSIGNED_SHORT) + zoomed.array->rgba = (GLchan (*)[4]) zoomed.array->rgba16; + else + zoomed.array->rgba = (GLchan (*)[4]) zoomed.array->attribs[FRAG_ATTRIB_COL0]; + + COPY_4V(zoomed.attrStart[FRAG_ATTRIB_WPOS], span->attrStart[FRAG_ATTRIB_WPOS]); + COPY_4V(zoomed.attrStepX[FRAG_ATTRIB_WPOS], span->attrStepX[FRAG_ATTRIB_WPOS]); + COPY_4V(zoomed.attrStepY[FRAG_ATTRIB_WPOS], span->attrStepY[FRAG_ATTRIB_WPOS]); + + zoomed.attrStart[FRAG_ATTRIB_FOGC][0] = span->attrStart[FRAG_ATTRIB_FOGC][0]; + zoomed.attrStepX[FRAG_ATTRIB_FOGC][0] = span->attrStepX[FRAG_ATTRIB_FOGC][0]; + zoomed.attrStepY[FRAG_ATTRIB_FOGC][0] = span->attrStepY[FRAG_ATTRIB_FOGC][0]; + + if (format == GL_RGBA || format == GL_RGB) { + /* copy Z info */ + zoomed.z = span->z; + zoomed.zStep = span->zStep; + /* we'll generate an array of colorss */ + zoomed.interpMask = span->interpMask & ~SPAN_RGBA; + zoomed.arrayMask |= SPAN_RGBA; + zoomed.arrayAttribs |= FRAG_BIT_COL0; /* we'll produce these values */ + ASSERT(span->arrayMask & SPAN_RGBA); + } + else if (format == GL_DEPTH_COMPONENT) { + /* Copy color info */ + zoomed.red = span->red; + zoomed.green = span->green; + zoomed.blue = span->blue; + zoomed.alpha = span->alpha; + zoomed.redStep = span->redStep; + zoomed.greenStep = span->greenStep; + zoomed.blueStep = span->blueStep; + zoomed.alphaStep = span->alphaStep; + /* we'll generate an array of depth values */ + zoomed.interpMask = span->interpMask & ~SPAN_Z; + zoomed.arrayMask |= SPAN_Z; + ASSERT(span->arrayMask & SPAN_Z); + } + else { + _mesa_problem(ctx, "Bad format in zoom_span"); + return; + } + + /* zoom the span horizontally */ + if (format == GL_RGBA) { + if (zoomed.array->ChanType == GL_UNSIGNED_BYTE) { + const GLubyte (*rgba)[4] = (const GLubyte (*)[4]) src; + GLint i; + for (i = 0; i < zoomedWidth; i++) { + GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x; + ASSERT(j >= 0); + ASSERT(j < (GLint) span->end); + COPY_4UBV(zoomed.array->rgba8[i], rgba[j]); + } + } + else if (zoomed.array->ChanType == GL_UNSIGNED_SHORT) { + const GLushort (*rgba)[4] = (const GLushort (*)[4]) src; + GLint i; + for (i = 0; i < zoomedWidth; i++) { + GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x; + ASSERT(j >= 0); + ASSERT(j < (GLint) span->end); + COPY_4V(zoomed.array->rgba16[i], rgba[j]); + } + } + else { + const GLfloat (*rgba)[4] = (const GLfloat (*)[4]) src; + GLint i; + for (i = 0; i < zoomedWidth; i++) { + GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x; + ASSERT(j >= 0); + ASSERT(j < span->end); + COPY_4V(zoomed.array->attribs[FRAG_ATTRIB_COL0][i], rgba[j]); + } + } + } + else if (format == GL_RGB) { + if (zoomed.array->ChanType == GL_UNSIGNED_BYTE) { + const GLubyte (*rgb)[3] = (const GLubyte (*)[3]) src; + GLint i; + for (i = 0; i < zoomedWidth; i++) { + GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x; + ASSERT(j >= 0); + ASSERT(j < (GLint) span->end); + zoomed.array->rgba8[i][0] = rgb[j][0]; + zoomed.array->rgba8[i][1] = rgb[j][1]; + zoomed.array->rgba8[i][2] = rgb[j][2]; + zoomed.array->rgba8[i][3] = 0xff; + } + } + else if (zoomed.array->ChanType == GL_UNSIGNED_SHORT) { + const GLushort (*rgb)[3] = (const GLushort (*)[3]) src; + GLint i; + for (i = 0; i < zoomedWidth; i++) { + GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x; + ASSERT(j >= 0); + ASSERT(j < (GLint) span->end); + zoomed.array->rgba16[i][0] = rgb[j][0]; + zoomed.array->rgba16[i][1] = rgb[j][1]; + zoomed.array->rgba16[i][2] = rgb[j][2]; + zoomed.array->rgba16[i][3] = 0xffff; + } + } + else { + const GLfloat (*rgb)[3] = (const GLfloat (*)[3]) src; + GLint i; + for (i = 0; i < zoomedWidth; i++) { + GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x; + ASSERT(j >= 0); + ASSERT(j < span->end); + zoomed.array->attribs[FRAG_ATTRIB_COL0][i][0] = rgb[j][0]; + zoomed.array->attribs[FRAG_ATTRIB_COL0][i][1] = rgb[j][1]; + zoomed.array->attribs[FRAG_ATTRIB_COL0][i][2] = rgb[j][2]; + zoomed.array->attribs[FRAG_ATTRIB_COL0][i][3] = 1.0F; + } + } + } + else if (format == GL_DEPTH_COMPONENT) { + const GLuint *zValues = (const GLuint *) src; + GLint i; + for (i = 0; i < zoomedWidth; i++) { + GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - span->x; + ASSERT(j >= 0); + ASSERT(j < (GLint) span->end); + zoomed.array->z[i] = zValues[j]; + } + /* Now, fall into the RGB path below */ + format = GL_RGBA; + } + + /* write the span in rows [r0, r1) */ + if (format == GL_RGBA || format == GL_RGB) { + /* Writing the span may modify the colors, so make a backup now if we're + * going to call _swrast_write_zoomed_span() more than once. + * Also, clipping may change the span end value, so store it as well. + */ + const GLint end = zoomed.end; /* save */ + GLuint rgbaSave[MAX_WIDTH][4]; + const GLint pixelSize = + (zoomed.array->ChanType == GL_UNSIGNED_BYTE) ? 4 * sizeof(GLubyte) : + ((zoomed.array->ChanType == GL_UNSIGNED_SHORT) ? 4 * sizeof(GLushort) + : 4 * sizeof(GLfloat)); + if (y1 - y0 > 1) { + memcpy(rgbaSave, zoomed.array->rgba, zoomed.end * pixelSize); + } + for (zoomed.y = y0; zoomed.y < y1; zoomed.y++) { + _swrast_write_rgba_span(ctx, &zoomed); + zoomed.end = end; /* restore */ + if (y1 - y0 > 1) { + /* restore the colors */ + memcpy(zoomed.array->rgba, rgbaSave, zoomed.end * pixelSize); + } + } + } +} + + +void +_swrast_write_zoomed_rgba_span(struct gl_context *ctx, GLint imgX, GLint imgY, + const SWspan *span, const GLvoid *rgba) +{ + zoom_span(ctx, imgX, imgY, span, rgba, GL_RGBA); +} + + +void +_swrast_write_zoomed_rgb_span(struct gl_context *ctx, GLint imgX, GLint imgY, + const SWspan *span, const GLvoid *rgb) +{ + zoom_span(ctx, imgX, imgY, span, rgb, GL_RGB); +} + + +void +_swrast_write_zoomed_depth_span(struct gl_context *ctx, GLint imgX, GLint imgY, + const SWspan *span) +{ + zoom_span(ctx, imgX, imgY, span, + (const GLvoid *) span->array->z, GL_DEPTH_COMPONENT); +} + + +/** + * Zoom/write stencil values. + * No per-fragment operations are applied. + */ +void +_swrast_write_zoomed_stencil_span(struct gl_context *ctx, GLint imgX, GLint imgY, + GLint width, GLint spanX, GLint spanY, + const GLstencil stencil[]) +{ + GLstencil zoomedVals[MAX_WIDTH]; + GLint x0, x1, y0, y1, y; + GLint i, zoomedWidth; + + if (!compute_zoomed_bounds(ctx, imgX, imgY, spanX, spanY, width, + &x0, &x1, &y0, &y1)) { + return; /* totally clipped */ + } + + zoomedWidth = x1 - x0; + ASSERT(zoomedWidth > 0); + ASSERT(zoomedWidth <= MAX_WIDTH); + + /* zoom the span horizontally */ + for (i = 0; i < zoomedWidth; i++) { + GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - spanX; + ASSERT(j >= 0); + ASSERT(j < width); + zoomedVals[i] = stencil[j]; + } + + /* write the zoomed spans */ + for (y = y0; y < y1; y++) { + _swrast_write_stencil_span(ctx, zoomedWidth, x0, y, zoomedVals); + } +} + + +/** + * Zoom/write z values (16 or 32-bit). + * No per-fragment operations are applied. + */ +void +_swrast_write_zoomed_z_span(struct gl_context *ctx, GLint imgX, GLint imgY, + GLint width, GLint spanX, GLint spanY, + const GLvoid *z) +{ + struct gl_renderbuffer *rb = ctx->DrawBuffer->_DepthBuffer; + GLushort zoomedVals16[MAX_WIDTH]; + GLuint zoomedVals32[MAX_WIDTH]; + GLint x0, x1, y0, y1, y; + GLint i, zoomedWidth; + + if (!compute_zoomed_bounds(ctx, imgX, imgY, spanX, spanY, width, + &x0, &x1, &y0, &y1)) { + return; /* totally clipped */ + } + + zoomedWidth = x1 - x0; + ASSERT(zoomedWidth > 0); + ASSERT(zoomedWidth <= MAX_WIDTH); + + /* zoom the span horizontally */ + if (rb->DataType == GL_UNSIGNED_SHORT) { + for (i = 0; i < zoomedWidth; i++) { + GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - spanX; + ASSERT(j >= 0); + ASSERT(j < width); + zoomedVals16[i] = ((GLushort *) z)[j]; + } + z = zoomedVals16; + } + else { + ASSERT(rb->DataType == GL_UNSIGNED_INT); + for (i = 0; i < zoomedWidth; i++) { + GLint j = unzoom_x(ctx->Pixel.ZoomX, imgX, x0 + i) - spanX; + ASSERT(j >= 0); + ASSERT(j < width); + zoomedVals32[i] = ((GLuint *) z)[j]; + } + z = zoomedVals32; + } + + /* write the zoomed spans */ + for (y = y0; y < y1; y++) { + rb->PutRow(ctx, rb, zoomedWidth, x0, y, z, NULL); + } +} diff --git a/mesalib/src/mesa/tnl/t_vb_program.c b/mesalib/src/mesa/tnl/t_vb_program.c index 4b1a212fd..cc5e85634 100644 --- a/mesalib/src/mesa/tnl/t_vb_program.c +++ b/mesalib/src/mesa/tnl/t_vb_program.c @@ -1,574 +1,572 @@ -/* - * Mesa 3-D graphics library - * Version: 7.6 - * - * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. - * Copyright (C) 2009 VMware, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - - -/** - * \file tnl/t_vb_program.c - * \brief Pipeline stage for executing vertex programs. - * \author Brian Paul, Keith Whitwell - */ - - -#include "main/glheader.h" -#include "main/colormac.h" -#include "main/macros.h" -#include "main/imports.h" -#include "math/m_xform.h" -#include "program/prog_instruction.h" -#include "program/prog_statevars.h" -#include "program/prog_execute.h" -#include "swrast/s_context.h" - -#include "tnl/tnl.h" -#include "tnl/t_context.h" -#include "tnl/t_pipeline.h" - - -#ifdef NAN_CHECK -/** Check for NaNs and very large values */ -static INLINE void -check_float(float x) -{ - assert(!IS_INF_OR_NAN(x)); - assert(1.0e-15 <= x && x <= 1.0e15); -} -#endif - - -/*! - * Private storage for the vertex program pipeline stage. - */ -struct vp_stage_data { - /** The results of running the vertex program go into these arrays. */ - GLvector4f results[VERT_RESULT_MAX]; - - GLvector4f ndcCoords; /**< normalized device coords */ - GLubyte *clipmask; /**< clip flags */ - GLubyte ormask, andmask; /**< for clipping */ - - struct gl_program_machine machine; -}; - - -#define VP_STAGE_DATA(stage) ((struct vp_stage_data *)(stage->privatePtr)) - - -static void -userclip( struct gl_context *ctx, - GLvector4f *clip, - GLubyte *clipmask, - GLubyte *clipormask, - GLubyte *clipandmask ) -{ - GLuint p; - - for (p = 0; p < ctx->Const.MaxClipPlanes; p++) { - if (ctx->Transform.ClipPlanesEnabled & (1 << p)) { - GLuint nr, i; - const GLfloat a = ctx->Transform._ClipUserPlane[p][0]; - const GLfloat b = ctx->Transform._ClipUserPlane[p][1]; - const GLfloat c = ctx->Transform._ClipUserPlane[p][2]; - const GLfloat d = ctx->Transform._ClipUserPlane[p][3]; - GLfloat *coord = (GLfloat *)clip->data; - GLuint stride = clip->stride; - GLuint count = clip->count; - - for (nr = 0, i = 0 ; i < count ; i++) { - GLfloat dp = (coord[0] * a + - coord[1] * b + - coord[2] * c + - coord[3] * d); - - if (dp < 0) { - nr++; - clipmask[i] |= CLIP_USER_BIT; - } - - STRIDE_F(coord, stride); - } - - if (nr > 0) { - *clipormask |= CLIP_USER_BIT; - if (nr == count) { - *clipandmask |= CLIP_USER_BIT; - return; - } - } - } - } -} - - -static GLboolean -do_ndc_cliptest(struct gl_context *ctx, struct vp_stage_data *store) -{ - TNLcontext *tnl = TNL_CONTEXT(ctx); - struct vertex_buffer *VB = &tnl->vb; - /* Cliptest and perspective divide. Clip functions must clear - * the clipmask. - */ - store->ormask = 0; - store->andmask = CLIP_FRUSTUM_BITS; - - tnl_clip_prepare(ctx); - - if (tnl->NeedNdcCoords) { - VB->NdcPtr = - _mesa_clip_tab[VB->ClipPtr->size]( VB->ClipPtr, - &store->ndcCoords, - store->clipmask, - &store->ormask, - &store->andmask, - !ctx->Transform.DepthClamp ); - } - else { - VB->NdcPtr = NULL; - _mesa_clip_np_tab[VB->ClipPtr->size]( VB->ClipPtr, - NULL, - store->clipmask, - &store->ormask, - &store->andmask, - !ctx->Transform.DepthClamp ); - } - - if (store->andmask) { - /* All vertices are outside the frustum */ - return GL_FALSE; - } - - /* Test userclip planes. This contributes to VB->ClipMask. - */ - /** XXX NEW_SLANG _Enabled ??? */ - if (ctx->Transform.ClipPlanesEnabled && (!ctx->VertexProgram._Enabled || - ctx->VertexProgram.Current->IsPositionInvariant)) { - userclip( ctx, - VB->ClipPtr, - store->clipmask, - &store->ormask, - &store->andmask ); - - if (store->andmask) { - return GL_FALSE; - } - } - - VB->ClipAndMask = store->andmask; - VB->ClipOrMask = store->ormask; - VB->ClipMask = store->clipmask; - - return GL_TRUE; -} - - -/** - * XXX the texture sampling code in this module is a bit of a hack. - * The texture sampling code is in swrast, though it doesn't have any - * real dependencies on the rest of swrast. It should probably be - * moved into main/ someday. - */ -static void -vp_fetch_texel(struct gl_context *ctx, const GLfloat texcoord[4], GLfloat lambda, - GLuint unit, GLfloat color[4]) -{ - SWcontext *swrast = SWRAST_CONTEXT(ctx); - - /* XXX use a float-valued TextureSample routine here!!! */ - swrast->TextureSample[unit](ctx, ctx->Texture.Unit[unit]._Current, - 1, (const GLfloat (*)[4]) texcoord, - &lambda, (GLfloat (*)[4]) color); -} - - -/** - * Called via ctx->Driver.ProgramStringNotify() after a new vertex program - * string has been parsed. - */ -GLboolean -_tnl_program_string(struct gl_context *ctx, GLenum target, struct gl_program *program) -{ - /* No-op. - * If we had derived anything from the program that was private to this - * stage we'd recompute/validate it here. - */ - return GL_TRUE; -} - - -/** - * Initialize virtual machine state prior to executing vertex program. - */ -static void -init_machine(struct gl_context *ctx, struct gl_program_machine *machine, - GLuint instID) -{ - /* Input registers get initialized from the current vertex attribs */ - memcpy(machine->VertAttribs, ctx->Current.Attrib, - MAX_VERTEX_GENERIC_ATTRIBS * 4 * sizeof(GLfloat)); - - if (ctx->VertexProgram._Current->IsNVProgram) { - GLuint i; - /* Output/result regs are initialized to [0,0,0,1] */ - for (i = 0; i < MAX_NV_VERTEX_PROGRAM_OUTPUTS; i++) { - ASSIGN_4V(machine->Outputs[i], 0.0F, 0.0F, 0.0F, 1.0F); - } - /* Temp regs are initialized to [0,0,0,0] */ - for (i = 0; i < MAX_NV_VERTEX_PROGRAM_TEMPS; i++) { - ASSIGN_4V(machine->Temporaries[i], 0.0F, 0.0F, 0.0F, 0.0F); - } - for (i = 0; i < MAX_VERTEX_PROGRAM_ADDRESS_REGS; i++) { - ASSIGN_4V(machine->AddressReg[i], 0, 0, 0, 0); - } - } - - machine->NumDeriv = 0; - - /* init condition codes */ - machine->CondCodes[0] = COND_EQ; - machine->CondCodes[1] = COND_EQ; - machine->CondCodes[2] = COND_EQ; - machine->CondCodes[3] = COND_EQ; - - /* init call stack */ - machine->StackDepth = 0; - - machine->FetchTexelLod = vp_fetch_texel; - machine->FetchTexelDeriv = NULL; /* not used by vertex programs */ - - machine->Samplers = ctx->VertexProgram._Current->Base.SamplerUnits; - - machine->SystemValues[SYSTEM_VALUE_INSTANCE_ID][0] = (GLfloat) instID; -} - - -/** - * Map the texture images which the vertex program will access (if any). - */ -static void -map_textures(struct gl_context *ctx, const struct gl_vertex_program *vp) -{ - GLuint u; - - if (!ctx->Driver.MapTexture) - return; - - for (u = 0; u < ctx->Const.MaxVertexTextureImageUnits; u++) { - if (vp->Base.TexturesUsed[u]) { - /* Note: _Current *should* correspond to the target indicated - * in TexturesUsed[u]. - */ - ctx->Driver.MapTexture(ctx, ctx->Texture.Unit[u]._Current); - } - } -} - - -/** - * Unmap the texture images which were used by the vertex program (if any). - */ -static void -unmap_textures(struct gl_context *ctx, const struct gl_vertex_program *vp) -{ - GLuint u; - - if (!ctx->Driver.MapTexture) - return; - - for (u = 0; u < ctx->Const.MaxVertexTextureImageUnits; u++) { - if (vp->Base.TexturesUsed[u]) { - /* Note: _Current *should* correspond to the target indicated - * in TexturesUsed[u]. - */ - ctx->Driver.UnmapTexture(ctx, ctx->Texture.Unit[u]._Current); - } - } -} - - -/** - * This function executes vertex programs - */ -static GLboolean -run_vp( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) -{ - TNLcontext *tnl = TNL_CONTEXT(ctx); - struct vp_stage_data *store = VP_STAGE_DATA(stage); - struct vertex_buffer *VB = &tnl->vb; - struct gl_vertex_program *program = ctx->VertexProgram._Current; - struct gl_program_machine *machine = &store->machine; - GLuint outputs[VERT_RESULT_MAX], numOutputs; - GLuint i, j; - - if (!program) - return GL_TRUE; - - if (program->IsNVProgram) { - _mesa_load_tracked_matrices(ctx); - } - else { - /* ARB program or vertex shader */ - _mesa_load_state_parameters(ctx, program->Base.Parameters); - } - - /* make list of outputs to save some time below */ - numOutputs = 0; - for (i = 0; i < VERT_RESULT_MAX; i++) { - if (program->Base.OutputsWritten & BITFIELD64_BIT(i)) { - outputs[numOutputs++] = i; - } - } - - map_textures(ctx, program); - - for (i = 0; i < VB->Count; i++) { - GLuint attr; - - init_machine(ctx, machine, tnl->CurInstance); - -#if 0 - printf("Input %d: %f, %f, %f, %f\n", i, - VB->AttribPtr[0]->data[i][0], - VB->AttribPtr[0]->data[i][1], - VB->AttribPtr[0]->data[i][2], - VB->AttribPtr[0]->data[i][3]); - printf(" color: %f, %f, %f, %f\n", - VB->AttribPtr[3]->data[i][0], - VB->AttribPtr[3]->data[i][1], - VB->AttribPtr[3]->data[i][2], - VB->AttribPtr[3]->data[i][3]); - printf(" normal: %f, %f, %f, %f\n", - VB->AttribPtr[2]->data[i][0], - VB->AttribPtr[2]->data[i][1], - VB->AttribPtr[2]->data[i][2], - VB->AttribPtr[2]->data[i][3]); -#endif - - /* the vertex array case */ - for (attr = 0; attr < VERT_ATTRIB_MAX; attr++) { - if (program->Base.InputsRead & (1 << attr)) { - const GLubyte *ptr = (const GLubyte*) VB->AttribPtr[attr]->data; - const GLuint size = VB->AttribPtr[attr]->size; - const GLuint stride = VB->AttribPtr[attr]->stride; - const GLfloat *data = (GLfloat *) (ptr + stride * i); -#ifdef NAN_CHECK - check_float(data[0]); - check_float(data[1]); - check_float(data[2]); - check_float(data[3]); -#endif - COPY_CLEAN_4V(machine->VertAttribs[attr], size, data); - } - } - - /* execute the program */ - _mesa_execute_program(ctx, &program->Base, machine); - - /* copy the output registers into the VB->attribs arrays */ - for (j = 0; j < numOutputs; j++) { - const GLuint attr = outputs[j]; -#ifdef NAN_CHECK - check_float(machine->Outputs[attr][0]); - check_float(machine->Outputs[attr][1]); - check_float(machine->Outputs[attr][2]); - check_float(machine->Outputs[attr][3]); -#endif - COPY_4V(store->results[attr].data[i], machine->Outputs[attr]); - } - - /* FOGC is a special case. Fragment shader expects (f,0,0,1) */ - if (program->Base.OutputsWritten & BITFIELD64_BIT(VERT_RESULT_FOGC)) { - store->results[VERT_RESULT_FOGC].data[i][1] = 0.0; - store->results[VERT_RESULT_FOGC].data[i][2] = 0.0; - store->results[VERT_RESULT_FOGC].data[i][3] = 1.0; - } -#ifdef NAN_CHECK - ASSERT(machine->Outputs[0][3] != 0.0F); -#endif -#if 0 - printf("HPOS: %f %f %f %f\n", - machine->Outputs[0][0], - machine->Outputs[0][1], - machine->Outputs[0][2], - machine->Outputs[0][3]); -#endif - } - - unmap_textures(ctx, program); - - /* Fixup fog and point size results if needed */ - if (program->IsNVProgram) { - if (ctx->Fog.Enabled && - (program->Base.OutputsWritten & BITFIELD64_BIT(VERT_RESULT_FOGC)) == 0) { - for (i = 0; i < VB->Count; i++) { - store->results[VERT_RESULT_FOGC].data[i][0] = 1.0; - } - } - - if (ctx->VertexProgram.PointSizeEnabled && - (program->Base.OutputsWritten & BITFIELD64_BIT(VERT_RESULT_PSIZ)) == 0) { - for (i = 0; i < VB->Count; i++) { - store->results[VERT_RESULT_PSIZ].data[i][0] = ctx->Point.Size; - } - } - } - - if (program->IsPositionInvariant) { - /* We need the exact same transform as in the fixed function path here - * to guarantee invariance, depending on compiler optimization flags - * results could be different otherwise. - */ - VB->ClipPtr = TransformRaw( &store->results[0], - &ctx->_ModelProjectMatrix, - VB->AttribPtr[0] ); - - /* Drivers expect this to be clean to element 4... - */ - switch (VB->ClipPtr->size) { - case 1: - /* impossible */ - case 2: - _mesa_vector4f_clean_elem( VB->ClipPtr, VB->Count, 2 ); - /* fall-through */ - case 3: - _mesa_vector4f_clean_elem( VB->ClipPtr, VB->Count, 3 ); - /* fall-through */ - case 4: - break; - } - } - else { - /* Setup the VB pointers so that the next pipeline stages get - * their data from the right place (the program output arrays). - */ - VB->ClipPtr = &store->results[VERT_RESULT_HPOS]; - VB->ClipPtr->size = 4; - VB->ClipPtr->count = VB->Count; - } - - VB->AttribPtr[VERT_ATTRIB_COLOR0] = &store->results[VERT_RESULT_COL0]; - VB->AttribPtr[VERT_ATTRIB_COLOR1] = &store->results[VERT_RESULT_COL1]; - VB->AttribPtr[VERT_ATTRIB_FOG] = &store->results[VERT_RESULT_FOGC]; - VB->AttribPtr[_TNL_ATTRIB_POINTSIZE] = &store->results[VERT_RESULT_PSIZ]; - VB->BackfaceColorPtr = &store->results[VERT_RESULT_BFC0]; - VB->BackfaceSecondaryColorPtr = &store->results[VERT_RESULT_BFC1]; - - for (i = 0; i < ctx->Const.MaxTextureCoordUnits; i++) { - VB->AttribPtr[_TNL_ATTRIB_TEX0 + i] - = &store->results[VERT_RESULT_TEX0 + i]; - } - - for (i = 0; i < ctx->Const.MaxVarying; i++) { - if (program->Base.OutputsWritten & BITFIELD64_BIT(VERT_RESULT_VAR0 + i)) { - /* Note: varying results get put into the generic attributes */ - VB->AttribPtr[VERT_ATTRIB_GENERIC0+i] - = &store->results[VERT_RESULT_VAR0 + i]; - } - } - - - /* Perform NDC and cliptest operations: - */ - return do_ndc_cliptest(ctx, store); -} - - -/** - * Called the first time stage->run is called. In effect, don't - * allocate data until the first time the stage is run. - */ -static GLboolean -init_vp(struct gl_context *ctx, struct tnl_pipeline_stage *stage) -{ - TNLcontext *tnl = TNL_CONTEXT(ctx); - struct vertex_buffer *VB = &(tnl->vb); - struct vp_stage_data *store; - const GLuint size = VB->Size; - GLuint i; - - stage->privatePtr = CALLOC(sizeof(*store)); - store = VP_STAGE_DATA(stage); - if (!store) - return GL_FALSE; - - /* Allocate arrays of vertex output values */ - for (i = 0; i < VERT_RESULT_MAX; i++) { - _mesa_vector4f_alloc( &store->results[i], 0, size, 32 ); - store->results[i].size = 4; - } - - /* a few other misc allocations */ - _mesa_vector4f_alloc( &store->ndcCoords, 0, size, 32 ); - store->clipmask = (GLubyte *) _mesa_align_malloc(sizeof(GLubyte)*size, 32 ); - - return GL_TRUE; -} - - -/** - * Destructor for this pipeline stage. - */ -static void -dtr(struct tnl_pipeline_stage *stage) -{ - struct vp_stage_data *store = VP_STAGE_DATA(stage); - - if (store) { - GLuint i; - - /* free the vertex program result arrays */ - for (i = 0; i < VERT_RESULT_MAX; i++) - _mesa_vector4f_free( &store->results[i] ); - - /* free misc arrays */ - _mesa_vector4f_free( &store->ndcCoords ); - _mesa_align_free( store->clipmask ); - - FREE( store ); - stage->privatePtr = NULL; - } -} - - -static void -validate_vp_stage(struct gl_context *ctx, struct tnl_pipeline_stage *stage) -{ - if (ctx->VertexProgram._Current) { - _swrast_update_texture_samplers(ctx); - } -} - - - -/** - * Public description of this pipeline stage. - */ -const struct tnl_pipeline_stage _tnl_vertex_program_stage = -{ - "vertex-program", - NULL, /* private_data */ - init_vp, /* create */ - dtr, /* destroy */ - validate_vp_stage, /* validate */ - run_vp /* run -- initially set to ctr */ -}; +/* + * Mesa 3-D graphics library + * Version: 7.6 + * + * Copyright (C) 1999-2008 Brian Paul All Rights Reserved. + * Copyright (C) 2009 VMware, Inc. All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + + +/** + * \file tnl/t_vb_program.c + * \brief Pipeline stage for executing vertex programs. + * \author Brian Paul, Keith Whitwell + */ + + +#include "main/glheader.h" +#include "main/colormac.h" +#include "main/macros.h" +#include "main/imports.h" +#include "math/m_xform.h" +#include "program/prog_instruction.h" +#include "program/prog_statevars.h" +#include "program/prog_execute.h" +#include "swrast/s_context.h" + +#include "tnl/tnl.h" +#include "tnl/t_context.h" +#include "tnl/t_pipeline.h" + + +#ifdef NAN_CHECK +/** Check for NaNs and very large values */ +static inline void +check_float(float x) +{ + assert(!IS_INF_OR_NAN(x)); + assert(1.0e-15 <= x && x <= 1.0e15); +} +#endif + + +/*! + * Private storage for the vertex program pipeline stage. + */ +struct vp_stage_data { + /** The results of running the vertex program go into these arrays. */ + GLvector4f results[VERT_RESULT_MAX]; + + GLvector4f ndcCoords; /**< normalized device coords */ + GLubyte *clipmask; /**< clip flags */ + GLubyte ormask, andmask; /**< for clipping */ + + struct gl_program_machine machine; +}; + + +#define VP_STAGE_DATA(stage) ((struct vp_stage_data *)(stage->privatePtr)) + + +static void +userclip( struct gl_context *ctx, + GLvector4f *clip, + GLubyte *clipmask, + GLubyte *clipormask, + GLubyte *clipandmask ) +{ + GLuint p; + + for (p = 0; p < ctx->Const.MaxClipPlanes; p++) { + if (ctx->Transform.ClipPlanesEnabled & (1 << p)) { + GLuint nr, i; + const GLfloat a = ctx->Transform._ClipUserPlane[p][0]; + const GLfloat b = ctx->Transform._ClipUserPlane[p][1]; + const GLfloat c = ctx->Transform._ClipUserPlane[p][2]; + const GLfloat d = ctx->Transform._ClipUserPlane[p][3]; + GLfloat *coord = (GLfloat *)clip->data; + GLuint stride = clip->stride; + GLuint count = clip->count; + + for (nr = 0, i = 0 ; i < count ; i++) { + GLfloat dp = (coord[0] * a + + coord[1] * b + + coord[2] * c + + coord[3] * d); + + if (dp < 0) { + nr++; + clipmask[i] |= CLIP_USER_BIT; + } + + STRIDE_F(coord, stride); + } + + if (nr > 0) { + *clipormask |= CLIP_USER_BIT; + if (nr == count) { + *clipandmask |= CLIP_USER_BIT; + return; + } + } + } + } +} + + +static GLboolean +do_ndc_cliptest(struct gl_context *ctx, struct vp_stage_data *store) +{ + TNLcontext *tnl = TNL_CONTEXT(ctx); + struct vertex_buffer *VB = &tnl->vb; + /* Cliptest and perspective divide. Clip functions must clear + * the clipmask. + */ + store->ormask = 0; + store->andmask = CLIP_FRUSTUM_BITS; + + tnl_clip_prepare(ctx); + + if (tnl->NeedNdcCoords) { + VB->NdcPtr = + _mesa_clip_tab[VB->ClipPtr->size]( VB->ClipPtr, + &store->ndcCoords, + store->clipmask, + &store->ormask, + &store->andmask, + !ctx->Transform.DepthClamp ); + } + else { + VB->NdcPtr = NULL; + _mesa_clip_np_tab[VB->ClipPtr->size]( VB->ClipPtr, + NULL, + store->clipmask, + &store->ormask, + &store->andmask, + !ctx->Transform.DepthClamp ); + } + + if (store->andmask) { + /* All vertices are outside the frustum */ + return GL_FALSE; + } + + /* Test userclip planes. This contributes to VB->ClipMask. + */ + /** XXX NEW_SLANG _Enabled ??? */ + if (ctx->Transform.ClipPlanesEnabled && (!ctx->VertexProgram._Enabled || + ctx->VertexProgram.Current->IsPositionInvariant)) { + userclip( ctx, + VB->ClipPtr, + store->clipmask, + &store->ormask, + &store->andmask ); + + if (store->andmask) { + return GL_FALSE; + } + } + + VB->ClipAndMask = store->andmask; + VB->ClipOrMask = store->ormask; + VB->ClipMask = store->clipmask; + + return GL_TRUE; +} + + +/** + * XXX the texture sampling code in this module is a bit of a hack. + * The texture sampling code is in swrast, though it doesn't have any + * real dependencies on the rest of swrast. It should probably be + * moved into main/ someday. + */ +static void +vp_fetch_texel(struct gl_context *ctx, const GLfloat texcoord[4], GLfloat lambda, + GLuint unit, GLfloat color[4]) +{ + SWcontext *swrast = SWRAST_CONTEXT(ctx); + + /* XXX use a float-valued TextureSample routine here!!! */ + swrast->TextureSample[unit](ctx, ctx->Texture.Unit[unit]._Current, + 1, (const GLfloat (*)[4]) texcoord, + &lambda, (GLfloat (*)[4]) color); +} + + +/** + * Called via ctx->Driver.ProgramStringNotify() after a new vertex program + * string has been parsed. + */ +GLboolean +_tnl_program_string(struct gl_context *ctx, GLenum target, struct gl_program *program) +{ + /* No-op. + * If we had derived anything from the program that was private to this + * stage we'd recompute/validate it here. + */ + return GL_TRUE; +} + + +/** + * Initialize virtual machine state prior to executing vertex program. + */ +static void +init_machine(struct gl_context *ctx, struct gl_program_machine *machine, + GLuint instID) +{ + /* Input registers get initialized from the current vertex attribs */ + memcpy(machine->VertAttribs, ctx->Current.Attrib, + MAX_VERTEX_GENERIC_ATTRIBS * 4 * sizeof(GLfloat)); + + if (ctx->VertexProgram._Current->IsNVProgram) { + GLuint i; + /* Output/result regs are initialized to [0,0,0,1] */ + for (i = 0; i < MAX_NV_VERTEX_PROGRAM_OUTPUTS; i++) { + ASSIGN_4V(machine->Outputs[i], 0.0F, 0.0F, 0.0F, 1.0F); + } + /* Temp regs are initialized to [0,0,0,0] */ + for (i = 0; i < MAX_NV_VERTEX_PROGRAM_TEMPS; i++) { + ASSIGN_4V(machine->Temporaries[i], 0.0F, 0.0F, 0.0F, 0.0F); + } + for (i = 0; i < MAX_VERTEX_PROGRAM_ADDRESS_REGS; i++) { + ASSIGN_4V(machine->AddressReg[i], 0, 0, 0, 0); + } + } + + machine->NumDeriv = 0; + + /* init condition codes */ + machine->CondCodes[0] = COND_EQ; + machine->CondCodes[1] = COND_EQ; + machine->CondCodes[2] = COND_EQ; + machine->CondCodes[3] = COND_EQ; + + /* init call stack */ + machine->StackDepth = 0; + + machine->FetchTexelLod = vp_fetch_texel; + machine->FetchTexelDeriv = NULL; /* not used by vertex programs */ + + machine->Samplers = ctx->VertexProgram._Current->Base.SamplerUnits; + + machine->SystemValues[SYSTEM_VALUE_INSTANCE_ID][0] = (GLfloat) instID; +} + + +/** + * Map the texture images which the vertex program will access (if any). + */ +static void +map_textures(struct gl_context *ctx, const struct gl_vertex_program *vp) +{ + GLuint u; + + if (!ctx->Driver.MapTexture) + return; + + for (u = 0; u < ctx->Const.MaxVertexTextureImageUnits; u++) { + if (vp->Base.TexturesUsed[u]) { + /* Note: _Current *should* correspond to the target indicated + * in TexturesUsed[u]. + */ + ctx->Driver.MapTexture(ctx, ctx->Texture.Unit[u]._Current); + } + } +} + + +/** + * Unmap the texture images which were used by the vertex program (if any). + */ +static void +unmap_textures(struct gl_context *ctx, const struct gl_vertex_program *vp) +{ + GLuint u; + + if (!ctx->Driver.MapTexture) + return; + + for (u = 0; u < ctx->Const.MaxVertexTextureImageUnits; u++) { + if (vp->Base.TexturesUsed[u]) { + /* Note: _Current *should* correspond to the target indicated + * in TexturesUsed[u]. + */ + ctx->Driver.UnmapTexture(ctx, ctx->Texture.Unit[u]._Current); + } + } +} + + +/** + * This function executes vertex programs + */ +static GLboolean +run_vp( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) +{ + TNLcontext *tnl = TNL_CONTEXT(ctx); + struct vp_stage_data *store = VP_STAGE_DATA(stage); + struct vertex_buffer *VB = &tnl->vb; + struct gl_vertex_program *program = ctx->VertexProgram._Current; + struct gl_program_machine *machine = &store->machine; + GLuint outputs[VERT_RESULT_MAX], numOutputs; + GLuint i, j; + + if (!program) + return GL_TRUE; + + if (program->IsNVProgram) { + _mesa_load_tracked_matrices(ctx); + } + else { + /* ARB program or vertex shader */ + _mesa_load_state_parameters(ctx, program->Base.Parameters); + } + + /* make list of outputs to save some time below */ + numOutputs = 0; + for (i = 0; i < VERT_RESULT_MAX; i++) { + if (program->Base.OutputsWritten & BITFIELD64_BIT(i)) { + outputs[numOutputs++] = i; + + if (!store->results[i].data) { + _mesa_vector4f_alloc( &store->results[i], 0, VB->Size, 32 ); + store->results[i].size = 4; + } + } + } + + map_textures(ctx, program); + + for (i = 0; i < VB->Count; i++) { + GLuint attr; + + init_machine(ctx, machine, tnl->CurInstance); + +#if 0 + printf("Input %d: %f, %f, %f, %f\n", i, + VB->AttribPtr[0]->data[i][0], + VB->AttribPtr[0]->data[i][1], + VB->AttribPtr[0]->data[i][2], + VB->AttribPtr[0]->data[i][3]); + printf(" color: %f, %f, %f, %f\n", + VB->AttribPtr[3]->data[i][0], + VB->AttribPtr[3]->data[i][1], + VB->AttribPtr[3]->data[i][2], + VB->AttribPtr[3]->data[i][3]); + printf(" normal: %f, %f, %f, %f\n", + VB->AttribPtr[2]->data[i][0], + VB->AttribPtr[2]->data[i][1], + VB->AttribPtr[2]->data[i][2], + VB->AttribPtr[2]->data[i][3]); +#endif + + /* the vertex array case */ + for (attr = 0; attr < VERT_ATTRIB_MAX; attr++) { + if (program->Base.InputsRead & (1 << attr)) { + const GLubyte *ptr = (const GLubyte*) VB->AttribPtr[attr]->data; + const GLuint size = VB->AttribPtr[attr]->size; + const GLuint stride = VB->AttribPtr[attr]->stride; + const GLfloat *data = (GLfloat *) (ptr + stride * i); +#ifdef NAN_CHECK + check_float(data[0]); + check_float(data[1]); + check_float(data[2]); + check_float(data[3]); +#endif + COPY_CLEAN_4V(machine->VertAttribs[attr], size, data); + } + } + + /* execute the program */ + _mesa_execute_program(ctx, &program->Base, machine); + + /* copy the output registers into the VB->attribs arrays */ + for (j = 0; j < numOutputs; j++) { + const GLuint attr = outputs[j]; +#ifdef NAN_CHECK + check_float(machine->Outputs[attr][0]); + check_float(machine->Outputs[attr][1]); + check_float(machine->Outputs[attr][2]); + check_float(machine->Outputs[attr][3]); +#endif + COPY_4V(store->results[attr].data[i], machine->Outputs[attr]); + } + + /* FOGC is a special case. Fragment shader expects (f,0,0,1) */ + if (program->Base.OutputsWritten & BITFIELD64_BIT(VERT_RESULT_FOGC)) { + store->results[VERT_RESULT_FOGC].data[i][1] = 0.0; + store->results[VERT_RESULT_FOGC].data[i][2] = 0.0; + store->results[VERT_RESULT_FOGC].data[i][3] = 1.0; + } +#ifdef NAN_CHECK + ASSERT(machine->Outputs[0][3] != 0.0F); +#endif +#if 0 + printf("HPOS: %f %f %f %f\n", + machine->Outputs[0][0], + machine->Outputs[0][1], + machine->Outputs[0][2], + machine->Outputs[0][3]); +#endif + } + + unmap_textures(ctx, program); + + /* Fixup fog and point size results if needed */ + if (program->IsNVProgram) { + if (ctx->Fog.Enabled && + (program->Base.OutputsWritten & BITFIELD64_BIT(VERT_RESULT_FOGC)) == 0) { + for (i = 0; i < VB->Count; i++) { + store->results[VERT_RESULT_FOGC].data[i][0] = 1.0; + } + } + + if (ctx->VertexProgram.PointSizeEnabled && + (program->Base.OutputsWritten & BITFIELD64_BIT(VERT_RESULT_PSIZ)) == 0) { + for (i = 0; i < VB->Count; i++) { + store->results[VERT_RESULT_PSIZ].data[i][0] = ctx->Point.Size; + } + } + } + + if (program->IsPositionInvariant) { + /* We need the exact same transform as in the fixed function path here + * to guarantee invariance, depending on compiler optimization flags + * results could be different otherwise. + */ + VB->ClipPtr = TransformRaw( &store->results[0], + &ctx->_ModelProjectMatrix, + VB->AttribPtr[0] ); + + /* Drivers expect this to be clean to element 4... + */ + switch (VB->ClipPtr->size) { + case 1: + /* impossible */ + case 2: + _mesa_vector4f_clean_elem( VB->ClipPtr, VB->Count, 2 ); + /* fall-through */ + case 3: + _mesa_vector4f_clean_elem( VB->ClipPtr, VB->Count, 3 ); + /* fall-through */ + case 4: + break; + } + } + else { + /* Setup the VB pointers so that the next pipeline stages get + * their data from the right place (the program output arrays). + */ + VB->ClipPtr = &store->results[VERT_RESULT_HPOS]; + VB->ClipPtr->size = 4; + VB->ClipPtr->count = VB->Count; + } + + VB->AttribPtr[VERT_ATTRIB_COLOR0] = &store->results[VERT_RESULT_COL0]; + VB->AttribPtr[VERT_ATTRIB_COLOR1] = &store->results[VERT_RESULT_COL1]; + VB->AttribPtr[VERT_ATTRIB_FOG] = &store->results[VERT_RESULT_FOGC]; + VB->AttribPtr[_TNL_ATTRIB_POINTSIZE] = &store->results[VERT_RESULT_PSIZ]; + VB->BackfaceColorPtr = &store->results[VERT_RESULT_BFC0]; + VB->BackfaceSecondaryColorPtr = &store->results[VERT_RESULT_BFC1]; + + for (i = 0; i < ctx->Const.MaxTextureCoordUnits; i++) { + VB->AttribPtr[_TNL_ATTRIB_TEX0 + i] + = &store->results[VERT_RESULT_TEX0 + i]; + } + + for (i = 0; i < ctx->Const.MaxVarying; i++) { + if (program->Base.OutputsWritten & BITFIELD64_BIT(VERT_RESULT_VAR0 + i)) { + /* Note: varying results get put into the generic attributes */ + VB->AttribPtr[VERT_ATTRIB_GENERIC0+i] + = &store->results[VERT_RESULT_VAR0 + i]; + } + } + + + /* Perform NDC and cliptest operations: + */ + return do_ndc_cliptest(ctx, store); +} + + +/** + * Called the first time stage->run is called. In effect, don't + * allocate data until the first time the stage is run. + */ +static GLboolean +init_vp(struct gl_context *ctx, struct tnl_pipeline_stage *stage) +{ + TNLcontext *tnl = TNL_CONTEXT(ctx); + struct vertex_buffer *VB = &(tnl->vb); + struct vp_stage_data *store; + const GLuint size = VB->Size; + + stage->privatePtr = CALLOC(sizeof(*store)); + store = VP_STAGE_DATA(stage); + if (!store) + return GL_FALSE; + + /* a few other misc allocations */ + _mesa_vector4f_alloc( &store->ndcCoords, 0, size, 32 ); + store->clipmask = (GLubyte *) _mesa_align_malloc(sizeof(GLubyte)*size, 32 ); + + return GL_TRUE; +} + + +/** + * Destructor for this pipeline stage. + */ +static void +dtr(struct tnl_pipeline_stage *stage) +{ + struct vp_stage_data *store = VP_STAGE_DATA(stage); + + if (store) { + GLuint i; + + /* free the vertex program result arrays */ + for (i = 0; i < VERT_RESULT_MAX; i++) + _mesa_vector4f_free( &store->results[i] ); + + /* free misc arrays */ + _mesa_vector4f_free( &store->ndcCoords ); + _mesa_align_free( store->clipmask ); + + FREE( store ); + stage->privatePtr = NULL; + } +} + + +static void +validate_vp_stage(struct gl_context *ctx, struct tnl_pipeline_stage *stage) +{ + if (ctx->VertexProgram._Current) { + _swrast_update_texture_samplers(ctx); + } +} + + + +/** + * Public description of this pipeline stage. + */ +const struct tnl_pipeline_stage _tnl_vertex_program_stage = +{ + "vertex-program", + NULL, /* private_data */ + init_vp, /* create */ + dtr, /* destroy */ + validate_vp_stage, /* validate */ + run_vp /* run -- initially set to ctr */ +}; diff --git a/mesalib/src/mesa/tnl/t_vertex_generic.c b/mesalib/src/mesa/tnl/t_vertex_generic.c index 9dcecdd57..7b7f511ce 100644 --- a/mesalib/src/mesa/tnl/t_vertex_generic.c +++ b/mesalib/src/mesa/tnl/t_vertex_generic.c @@ -47,7 +47,7 @@ * NDC->Viewport mapping and store the results at 'v'. */ -static INLINE void insert_4f_viewport_4( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_4f_viewport_4( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)v; @@ -59,7 +59,7 @@ static INLINE void insert_4f_viewport_4( const struct tnl_clipspace_attr *a, GLu out[3] = in[3]; } -static INLINE void insert_4f_viewport_3( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_4f_viewport_3( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)v; @@ -71,7 +71,7 @@ static INLINE void insert_4f_viewport_3( const struct tnl_clipspace_attr *a, GLu out[3] = 1; } -static INLINE void insert_4f_viewport_2( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_4f_viewport_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)v; @@ -83,7 +83,7 @@ static INLINE void insert_4f_viewport_2( const struct tnl_clipspace_attr *a, GLu out[3] = 1; } -static INLINE void insert_4f_viewport_1( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_4f_viewport_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)v; @@ -95,7 +95,7 @@ static INLINE void insert_4f_viewport_1( const struct tnl_clipspace_attr *a, GLu out[3] = 1; } -static INLINE void insert_3f_viewport_3( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_3f_viewport_3( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)v; @@ -106,7 +106,7 @@ static INLINE void insert_3f_viewport_3( const struct tnl_clipspace_attr *a, GLu out[2] = vp[10] * in[2] + vp[14]; } -static INLINE void insert_3f_viewport_2( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_3f_viewport_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)v; @@ -117,7 +117,7 @@ static INLINE void insert_3f_viewport_2( const struct tnl_clipspace_attr *a, GLu out[2] = vp[14]; } -static INLINE void insert_3f_viewport_1( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_3f_viewport_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)v; @@ -128,7 +128,7 @@ static INLINE void insert_3f_viewport_1( const struct tnl_clipspace_attr *a, GLu out[2] = vp[14]; } -static INLINE void insert_2f_viewport_2( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_2f_viewport_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)v; @@ -138,7 +138,7 @@ static INLINE void insert_2f_viewport_2( const struct tnl_clipspace_attr *a, GLu out[1] = vp[5] * in[1] + vp[13]; } -static INLINE void insert_2f_viewport_1( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_2f_viewport_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)v; @@ -153,7 +153,7 @@ static INLINE void insert_2f_viewport_1( const struct tnl_clipspace_attr *a, GLu * These functions do the same as above, except for the viewport mapping. */ -static INLINE void insert_4f_4( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) +static inline void insert_4f_4( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)(v); (void) a; @@ -164,7 +164,7 @@ static INLINE void insert_4f_4( const struct tnl_clipspace_attr *a, GLubyte *v, out[3] = in[3]; } -static INLINE void insert_4f_3( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) +static inline void insert_4f_3( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)(v); (void) a; @@ -175,7 +175,7 @@ static INLINE void insert_4f_3( const struct tnl_clipspace_attr *a, GLubyte *v, out[3] = 1; } -static INLINE void insert_4f_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) +static inline void insert_4f_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)(v); (void) a; @@ -186,7 +186,7 @@ static INLINE void insert_4f_2( const struct tnl_clipspace_attr *a, GLubyte *v, out[3] = 1; } -static INLINE void insert_4f_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) +static inline void insert_4f_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)(v); (void) a; @@ -197,7 +197,7 @@ static INLINE void insert_4f_1( const struct tnl_clipspace_attr *a, GLubyte *v, out[3] = 1; } -static INLINE void insert_3f_xyw_4( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) +static inline void insert_3f_xyw_4( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)(v); (void) a; @@ -207,14 +207,14 @@ static INLINE void insert_3f_xyw_4( const struct tnl_clipspace_attr *a, GLubyte out[2] = in[3]; } -static INLINE void insert_3f_xyw_err( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) +static inline void insert_3f_xyw_err( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { (void) a; (void) v; (void) in; DEBUG_INSERT; exit(1); } -static INLINE void insert_3f_3( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) +static inline void insert_3f_3( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)(v); (void) a; @@ -224,7 +224,7 @@ static INLINE void insert_3f_3( const struct tnl_clipspace_attr *a, GLubyte *v, out[2] = in[2]; } -static INLINE void insert_3f_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) +static inline void insert_3f_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)(v); (void) a; @@ -234,7 +234,7 @@ static INLINE void insert_3f_2( const struct tnl_clipspace_attr *a, GLubyte *v, out[2] = 0; } -static INLINE void insert_3f_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) +static inline void insert_3f_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)(v); (void) a; @@ -245,7 +245,7 @@ static INLINE void insert_3f_1( const struct tnl_clipspace_attr *a, GLubyte *v, } -static INLINE void insert_2f_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) +static inline void insert_2f_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)(v); (void) a; @@ -254,7 +254,7 @@ static INLINE void insert_2f_2( const struct tnl_clipspace_attr *a, GLubyte *v, out[1] = in[1]; } -static INLINE void insert_2f_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) +static inline void insert_2f_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)(v); (void) a; @@ -263,7 +263,7 @@ static INLINE void insert_2f_1( const struct tnl_clipspace_attr *a, GLubyte *v, out[1] = 0; } -static INLINE void insert_1f_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) +static inline void insert_1f_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLfloat *out = (GLfloat *)(v); (void) a; @@ -271,13 +271,13 @@ static INLINE void insert_1f_1( const struct tnl_clipspace_attr *a, GLubyte *v, out[0] = in[0]; } -static INLINE void insert_null( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) +static inline void insert_null( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { DEBUG_INSERT; (void) a; (void) v; (void) in; } -static INLINE void insert_4chan_4f_rgba_4( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_4chan_4f_rgba_4( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLchan *c = (GLchan *)v; @@ -289,7 +289,7 @@ static INLINE void insert_4chan_4f_rgba_4( const struct tnl_clipspace_attr *a, G UNCLAMPED_FLOAT_TO_CHAN(c[3], in[3]); } -static INLINE void insert_4chan_4f_rgba_3( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_4chan_4f_rgba_3( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLchan *c = (GLchan *)v; @@ -301,7 +301,7 @@ static INLINE void insert_4chan_4f_rgba_3( const struct tnl_clipspace_attr *a, G c[3] = CHAN_MAX; } -static INLINE void insert_4chan_4f_rgba_2( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_4chan_4f_rgba_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLchan *c = (GLchan *)v; @@ -313,7 +313,7 @@ static INLINE void insert_4chan_4f_rgba_2( const struct tnl_clipspace_attr *a, G c[3] = CHAN_MAX; } -static INLINE void insert_4chan_4f_rgba_1( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_4chan_4f_rgba_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { GLchan *c = (GLchan *)v; @@ -325,7 +325,7 @@ static INLINE void insert_4chan_4f_rgba_1( const struct tnl_clipspace_attr *a, G c[3] = CHAN_MAX; } -static INLINE void insert_4ub_4f_rgba_4( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_4ub_4f_rgba_4( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { DEBUG_INSERT; @@ -336,7 +336,7 @@ static INLINE void insert_4ub_4f_rgba_4( const struct tnl_clipspace_attr *a, GLu UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[3]); } -static INLINE void insert_4ub_4f_rgba_3( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_4ub_4f_rgba_3( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { DEBUG_INSERT; @@ -347,7 +347,7 @@ static INLINE void insert_4ub_4f_rgba_3( const struct tnl_clipspace_attr *a, GLu v[3] = 0xff; } -static INLINE void insert_4ub_4f_rgba_2( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_4ub_4f_rgba_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { DEBUG_INSERT; @@ -358,7 +358,7 @@ static INLINE void insert_4ub_4f_rgba_2( const struct tnl_clipspace_attr *a, GLu v[3] = 0xff; } -static INLINE void insert_4ub_4f_rgba_1( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_4ub_4f_rgba_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { DEBUG_INSERT; @@ -369,7 +369,7 @@ static INLINE void insert_4ub_4f_rgba_1( const struct tnl_clipspace_attr *a, GLu v[3] = 0xff; } -static INLINE void insert_4ub_4f_bgra_4( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_4ub_4f_bgra_4( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { DEBUG_INSERT; @@ -380,7 +380,7 @@ static INLINE void insert_4ub_4f_bgra_4( const struct tnl_clipspace_attr *a, GLu UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[3]); } -static INLINE void insert_4ub_4f_bgra_3( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_4ub_4f_bgra_3( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { DEBUG_INSERT; @@ -391,7 +391,7 @@ static INLINE void insert_4ub_4f_bgra_3( const struct tnl_clipspace_attr *a, GLu v[3] = 0xff; } -static INLINE void insert_4ub_4f_bgra_2( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_4ub_4f_bgra_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { DEBUG_INSERT; @@ -402,7 +402,7 @@ static INLINE void insert_4ub_4f_bgra_2( const struct tnl_clipspace_attr *a, GLu v[3] = 0xff; } -static INLINE void insert_4ub_4f_bgra_1( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_4ub_4f_bgra_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { DEBUG_INSERT; @@ -413,7 +413,7 @@ static INLINE void insert_4ub_4f_bgra_1( const struct tnl_clipspace_attr *a, GLu v[3] = 0xff; } -static INLINE void insert_4ub_4f_argb_4( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_4ub_4f_argb_4( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { DEBUG_INSERT; @@ -424,7 +424,7 @@ static INLINE void insert_4ub_4f_argb_4( const struct tnl_clipspace_attr *a, GLu UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[3]); } -static INLINE void insert_4ub_4f_argb_3( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_4ub_4f_argb_3( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { DEBUG_INSERT; @@ -435,7 +435,7 @@ static INLINE void insert_4ub_4f_argb_3( const struct tnl_clipspace_attr *a, GLu v[0] = 0xff; } -static INLINE void insert_4ub_4f_argb_2( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_4ub_4f_argb_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { DEBUG_INSERT; @@ -446,7 +446,7 @@ static INLINE void insert_4ub_4f_argb_2( const struct tnl_clipspace_attr *a, GLu v[0] = 0xff; } -static INLINE void insert_4ub_4f_argb_1( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_4ub_4f_argb_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { DEBUG_INSERT; @@ -457,7 +457,7 @@ static INLINE void insert_4ub_4f_argb_1( const struct tnl_clipspace_attr *a, GLu v[0] = 0xff; } -static INLINE void insert_4ub_4f_abgr_4( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_4ub_4f_abgr_4( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { DEBUG_INSERT; @@ -468,7 +468,7 @@ static INLINE void insert_4ub_4f_abgr_4( const struct tnl_clipspace_attr *a, GLu UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[3]); } -static INLINE void insert_4ub_4f_abgr_3( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_4ub_4f_abgr_3( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { DEBUG_INSERT; @@ -479,7 +479,7 @@ static INLINE void insert_4ub_4f_abgr_3( const struct tnl_clipspace_attr *a, GLu v[0] = 0xff; } -static INLINE void insert_4ub_4f_abgr_2( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_4ub_4f_abgr_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { DEBUG_INSERT; @@ -490,7 +490,7 @@ static INLINE void insert_4ub_4f_abgr_2( const struct tnl_clipspace_attr *a, GLu v[0] = 0xff; } -static INLINE void insert_4ub_4f_abgr_1( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_4ub_4f_abgr_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { DEBUG_INSERT; @@ -501,7 +501,7 @@ static INLINE void insert_4ub_4f_abgr_1( const struct tnl_clipspace_attr *a, GLu v[0] = 0xff; } -static INLINE void insert_3ub_3f_rgb_3( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_3ub_3f_rgb_3( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { DEBUG_INSERT; @@ -511,7 +511,7 @@ static INLINE void insert_3ub_3f_rgb_3( const struct tnl_clipspace_attr *a, GLub UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[2]); } -static INLINE void insert_3ub_3f_rgb_2( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_3ub_3f_rgb_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { DEBUG_INSERT; @@ -521,7 +521,7 @@ static INLINE void insert_3ub_3f_rgb_2( const struct tnl_clipspace_attr *a, GLub v[2] = 0; } -static INLINE void insert_3ub_3f_rgb_1( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_3ub_3f_rgb_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { DEBUG_INSERT; @@ -531,7 +531,7 @@ static INLINE void insert_3ub_3f_rgb_1( const struct tnl_clipspace_attr *a, GLub v[2] = 0; } -static INLINE void insert_3ub_3f_bgr_3( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_3ub_3f_bgr_3( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { DEBUG_INSERT; @@ -541,7 +541,7 @@ static INLINE void insert_3ub_3f_bgr_3( const struct tnl_clipspace_attr *a, GLub UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[2]); } -static INLINE void insert_3ub_3f_bgr_2( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_3ub_3f_bgr_2( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { DEBUG_INSERT; @@ -551,7 +551,7 @@ static INLINE void insert_3ub_3f_bgr_2( const struct tnl_clipspace_attr *a, GLub v[0] = 0; } -static INLINE void insert_3ub_3f_bgr_1( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_3ub_3f_bgr_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { DEBUG_INSERT; @@ -562,7 +562,7 @@ static INLINE void insert_3ub_3f_bgr_1( const struct tnl_clipspace_attr *a, GLub } -static INLINE void insert_1ub_1f_1( const struct tnl_clipspace_attr *a, GLubyte *v, +static inline void insert_1ub_1f_1( const struct tnl_clipspace_attr *a, GLubyte *v, const GLfloat *in ) { DEBUG_INSERT; diff --git a/mesalib/src/mesa/vbo/vbo_attrib_tmp.h b/mesalib/src/mesa/vbo/vbo_attrib_tmp.h index e1023834a..0bf5c9165 100644 --- a/mesalib/src/mesa/vbo/vbo_attrib_tmp.h +++ b/mesalib/src/mesa/vbo/vbo_attrib_tmp.h @@ -59,12 +59,12 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #define MAT_ATTR( A, N, V ) ATTR( A, N, (V)[0], (V)[1], (V)[2], (V)[3] ) -static INLINE float conv_ui10_to_norm_float(unsigned ui10) +static inline float conv_ui10_to_norm_float(unsigned ui10) { return (float)(ui10) / 1023.0; } -static INLINE float conv_ui2_to_norm_float(unsigned ui2) +static inline float conv_ui2_to_norm_float(unsigned ui2) { return (float)(ui2) / 3.0; } @@ -91,28 +91,28 @@ static INLINE float conv_ui2_to_norm_float(unsigned ui2) struct attr_bits_10 {signed int x:10;}; struct attr_bits_2 {signed int x:2;}; -static INLINE float conv_i10_to_i(int i10) +static inline float conv_i10_to_i(int i10) { struct attr_bits_10 val; val.x = i10; return (float)val.x; } -static INLINE float conv_i2_to_i(int i2) +static inline float conv_i2_to_i(int i2) { struct attr_bits_2 val; val.x = i2; return (float)val.x; } -static INLINE float conv_i10_to_norm_float(int i10) +static inline float conv_i10_to_norm_float(int i10) { struct attr_bits_10 val; val.x = i10; return (2.0F * (float)val.x + 1.0F) * (1.0F / 511.0F); } -static INLINE float conv_i2_to_norm_float(int i2) +static inline float conv_i2_to_norm_float(int i2) { struct attr_bits_2 val; val.x = i2; diff --git a/mesalib/src/mesa/vbo/vbo_context.h b/mesalib/src/mesa/vbo/vbo_context.h index df1d8c041..ef8a2a2b6 100644 --- a/mesalib/src/mesa/vbo/vbo_context.h +++ b/mesalib/src/mesa/vbo/vbo_context.h @@ -1,113 +1,113 @@ -/* - * mesa 3-D graphics library - * Version: 6.5 - * - * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/** - * \file vbo_context.h - * \brief VBO builder module datatypes and definitions. - * \author Keith Whitwell - */ - - -/** - * \mainpage The VBO builder module - * - * This module hooks into the GL dispatch table and catches all vertex - * building and drawing commands, such as glVertex3f, glBegin and - * glDrawArrays. The module stores all incoming vertex data as arrays - * in GL vertex buffer objects (VBOs), and translates all drawing - * commands into calls to a driver supplied DrawPrimitives() callback. - * - * The module captures both immediate mode and display list drawing, - * and manages the allocation, reference counting and deallocation of - * vertex buffer objects itself. - * - * The DrawPrimitives() callback can be either implemented by the - * driver itself or hooked to the tnl module's _tnl_draw_primitives() - * function for hardware without tnl capablilties or during fallbacks. - */ - - -#ifndef _VBO_CONTEXT_H -#define _VBO_CONTEXT_H - -#include "main/mfeatures.h" -#include "vbo.h" -#include "vbo_attrib.h" -#include "vbo_exec.h" -#include "vbo_save.h" - - -struct vbo_context { - struct gl_client_array currval[VBO_ATTRIB_MAX]; - - /* These point into the above. TODO: remove. - */ - struct gl_client_array *legacy_currval; - struct gl_client_array *generic_currval; - struct gl_client_array *mat_currval; - - GLuint map_vp_none[VERT_ATTRIB_MAX]; - GLuint map_vp_arb[VERT_ATTRIB_MAX]; - - GLfloat *current[VBO_ATTRIB_MAX]; /* points into ctx->Current, ctx->Light.Material */ - GLfloat CurrentFloatEdgeFlag; - - - struct vbo_exec_context exec; -#if FEATURE_dlist - struct vbo_save_context save; -#endif - - /* Callback into the driver. This must always succeed, the driver - * is responsible for initiating any fallback actions required: - */ - vbo_draw_func draw_prims; -}; - - -static INLINE struct vbo_context *vbo_context(struct gl_context *ctx) -{ - return (struct vbo_context *)(ctx->swtnl_im); -} - - -/** - * Return VP_x token to indicate whether we're running fixed-function - * vertex transformation, an NV vertex program or ARB vertex program/shader. - */ -static INLINE enum vp_mode -get_program_mode( struct gl_context *ctx ) -{ - if (!ctx->VertexProgram._Current) - return VP_NONE; - else if (ctx->VertexProgram._Current == ctx->VertexProgram._TnlProgram) - return VP_NONE; - else if (ctx->VertexProgram._Current->IsNVProgram) - return VP_NV; - else - return VP_ARB; -} - - -#endif +/* + * mesa 3-D graphics library + * Version: 6.5 + * + * Copyright (C) 1999-2006 Brian Paul All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ + +/** + * \file vbo_context.h + * \brief VBO builder module datatypes and definitions. + * \author Keith Whitwell + */ + + +/** + * \mainpage The VBO builder module + * + * This module hooks into the GL dispatch table and catches all vertex + * building and drawing commands, such as glVertex3f, glBegin and + * glDrawArrays. The module stores all incoming vertex data as arrays + * in GL vertex buffer objects (VBOs), and translates all drawing + * commands into calls to a driver supplied DrawPrimitives() callback. + * + * The module captures both immediate mode and display list drawing, + * and manages the allocation, reference counting and deallocation of + * vertex buffer objects itself. + * + * The DrawPrimitives() callback can be either implemented by the + * driver itself or hooked to the tnl module's _tnl_draw_primitives() + * function for hardware without tnl capablilties or during fallbacks. + */ + + +#ifndef _VBO_CONTEXT_H +#define _VBO_CONTEXT_H + +#include "main/mfeatures.h" +#include "vbo.h" +#include "vbo_attrib.h" +#include "vbo_exec.h" +#include "vbo_save.h" + + +struct vbo_context { + struct gl_client_array currval[VBO_ATTRIB_MAX]; + + /* These point into the above. TODO: remove. + */ + struct gl_client_array *legacy_currval; + struct gl_client_array *generic_currval; + struct gl_client_array *mat_currval; + + GLuint map_vp_none[VERT_ATTRIB_MAX]; + GLuint map_vp_arb[VERT_ATTRIB_MAX]; + + GLfloat *current[VBO_ATTRIB_MAX]; /* points into ctx->Current, ctx->Light.Material */ + GLfloat CurrentFloatEdgeFlag; + + + struct vbo_exec_context exec; +#if FEATURE_dlist + struct vbo_save_context save; +#endif + + /* Callback into the driver. This must always succeed, the driver + * is responsible for initiating any fallback actions required: + */ + vbo_draw_func draw_prims; +}; + + +static inline struct vbo_context *vbo_context(struct gl_context *ctx) +{ + return (struct vbo_context *)(ctx->swtnl_im); +} + + +/** + * Return VP_x token to indicate whether we're running fixed-function + * vertex transformation, an NV vertex program or ARB vertex program/shader. + */ +static inline enum vp_mode +get_program_mode( struct gl_context *ctx ) +{ + if (!ctx->VertexProgram._Current) + return VP_NONE; + else if (ctx->VertexProgram._Current == ctx->VertexProgram._TnlProgram) + return VP_NONE; + else if (ctx->VertexProgram._Current->IsNVProgram) + return VP_NV; + else + return VP_ARB; +} + + +#endif diff --git a/mesalib/src/mesa/vbo/vbo_exec.h b/mesalib/src/mesa/vbo/vbo_exec.h index d52a557e0..9a1b5a127 100644 --- a/mesalib/src/mesa/vbo/vbo_exec.h +++ b/mesalib/src/mesa/vbo/vbo_exec.h @@ -179,12 +179,12 @@ void vbo_exec_vtx_map( struct vbo_exec_context *exec ); #else /* FEATURE_beginend */ -static INLINE void +static inline void vbo_exec_vtx_flush( struct vbo_exec_context *exec, GLboolean unmap ) { } -static INLINE void +static inline void vbo_exec_vtx_map( struct vbo_exec_context *exec ) { } diff --git a/mesalib/src/mesa/vbo/vbo_rebase.c b/mesalib/src/mesa/vbo/vbo_rebase.c index a1eab752a..97c8d1297 100644 --- a/mesalib/src/mesa/vbo/vbo_rebase.c +++ b/mesalib/src/mesa/vbo/vbo_rebase.c @@ -78,7 +78,8 @@ GLboolean vbo_all_varyings_in_vbos( const struct gl_client_array *arrays[] ) GLuint i; for (i = 0; i < VERT_ATTRIB_MAX; i++) - if (arrays[i]->BufferObj->Name == 0) + if (arrays[i]->StrideB && + arrays[i]->BufferObj->Name == 0) return GL_FALSE; return GL_TRUE; diff --git a/mesalib/src/mesa/vbo/vbo_save.h b/mesalib/src/mesa/vbo/vbo_save.h index 45cd29979..a064090cf 100644 --- a/mesalib/src/mesa/vbo/vbo_save.h +++ b/mesalib/src/mesa/vbo/vbo_save.h @@ -187,12 +187,12 @@ void vbo_save_api_init( struct vbo_save_context *save ); #else /* FEATURE_dlist */ -static INLINE void +static inline void vbo_save_init( struct gl_context *ctx ) { } -static INLINE void +static inline void vbo_save_destroy( struct gl_context *ctx ) { } -- cgit v1.2.3