diff options
Diffstat (limited to 'src/mesa')
262 files changed, 15193 insertions, 12425 deletions
diff --git a/src/mesa/SConscript b/src/mesa/SConscript index 261242f6fc9..2d8a17727c5 100644 --- a/src/mesa/SConscript +++ b/src/mesa/SConscript @@ -100,6 +100,7 @@ main_sources = [ 'main/readpix.c', 'main/remap.c', 'main/renderbuffer.c', + 'main/samplerobj.c', 'main/scissor.c', 'main/shaderapi.c', 'main/shaderobj.c', @@ -143,6 +144,65 @@ math_sources = [ 'math/m_xform.c', ] +math_xform_sources = [ + 'math/m_xform.c' +] + +swrast_sources = [ + 'swrast/s_aaline.c', + 'swrast/s_aatriangle.c', + 'swrast/s_accum.c', + 'swrast/s_alpha.c', + 'swrast/s_atifragshader.c', + 'swrast/s_bitmap.c', + 'swrast/s_blend.c', + 'swrast/s_blit.c', + 'swrast/s_clear.c', + 'swrast/s_copypix.c', + 'swrast/s_context.c', + 'swrast/s_depth.c', + 'swrast/s_drawpix.c', + 'swrast/s_feedback.c', + 'swrast/s_fog.c', + 'swrast/s_fragprog.c', + 'swrast/s_lines.c', + 'swrast/s_logic.c', + 'swrast/s_masking.c', + 'swrast/s_points.c', + 'swrast/s_readpix.c', + 'swrast/s_span.c', + 'swrast/s_stencil.c', + 'swrast/s_texcombine.c', + 'swrast/s_texfilter.c', + 'swrast/s_triangle.c', + 'swrast/s_zoom.c', +] + +swrast_setup_sources = [ + 'swrast_setup/ss_context.c', + 'swrast_setup/ss_triangle.c', +] + +tnl_sources = [ + 'tnl/t_context.c', + 'tnl/t_pipeline.c', + 'tnl/t_draw.c', + 'tnl/t_rasterpos.c', + 'tnl/t_vb_program.c', + 'tnl/t_vb_render.c', + 'tnl/t_vb_texgen.c', + 'tnl/t_vb_texmat.c', + 'tnl/t_vb_vertex.c', + 'tnl/t_vb_fog.c', + 'tnl/t_vb_light.c', + 'tnl/t_vb_normals.c', + 'tnl/t_vb_points.c', + 'tnl/t_vp_build.c', + 'tnl/t_vertex.c', + 'tnl/t_vertex_sse.c', + 'tnl/t_vertex_generic.c', +] + vbo_sources = [ 'vbo/vbo_context.c', 'vbo/vbo_exec.c', @@ -160,12 +220,6 @@ vbo_sources = [ 'vbo/vbo_save_loopback.c', ] -vf_sources = [ - 'vf/vf.c', - 'vf/vf_generic.c', - 'vf/vf_sse.c', -] - statetracker_sources = [ 'state_tracker/st_atom.c', 'state_tracker/st_atom_blend.c', @@ -250,12 +304,21 @@ program_sources = [ program_parse[0], ] +common_driver_sources = [ + 'drivers/common/driverfuncs.c', + 'drivers/common/meta.c', +] + mesa_sources = ( main_sources + math_sources + + math_xform_sources + program_sources + vbo_sources + - vf_sources + + tnl_sources + + swrast_sources + + swrast_setup_sources + + common_driver_sources + statetracker_sources ) @@ -390,6 +453,18 @@ if env['gcc'] and env['platform'] != 'windows': # build dir) to the include path env.Append(CPPPATH = [matypes[0].dir]) + +# Create the git_sha1.h file if it doesn't exist already +try: + f = open('main/git_sha1.h', 'r') + f.close() +except IOError: + f = open('main/git_sha1.h', 'w') + f.close() +# and update CPPPATH so the git_sha1.h header can be found +env.Append(CPPPATH = ["#" + env['build_dir'] + "/mesa/main"]) + + # # Libraries # @@ -402,3 +477,5 @@ mesa = env.ConvenienceLibrary( env.Alias('mesa', mesa) Export('mesa') + +SConscript('drivers/SConscript') diff --git a/src/mesa/drivers/SConscript b/src/mesa/drivers/SConscript new file mode 100644 index 00000000000..ab0f8943290 --- /dev/null +++ b/src/mesa/drivers/SConscript @@ -0,0 +1,6 @@ +Import('*') + +SConscript('osmesa/SConscript') + +if env['platform'] == 'windows': + SConscript('windows/gdi/SConscript') diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c index 2b00e8979d2..6c35fa10d8a 100644 --- a/src/mesa/drivers/common/meta.c +++ b/src/mesa/drivers/common/meta.c @@ -92,6 +92,8 @@ #define META_TEXTURE 0x1000 #define META_VERTEX 0x2000 #define META_VIEWPORT 0x4000 +#define META_CLAMP_FRAGMENT_COLOR 0x8000 +#define META_CLAMP_VERTEX_COLOR 0x10000 /*@}*/ @@ -180,6 +182,12 @@ struct save_state GLint ViewportX, ViewportY, ViewportW, ViewportH; GLclampd DepthNear, DepthFar; + /** META_CLAMP_FRAGMENT_COLOR */ + GLenum ClampFragmentColor; + + /** META_CLAMP_VERTEX_COLOR */ + GLenum ClampVertexColor; + /** Miscellaneous (always disabled) */ GLboolean Lighting; }; @@ -569,6 +577,26 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state) _mesa_DepthRange(0.0, 1.0); } + if (state & META_CLAMP_FRAGMENT_COLOR) { + save->ClampFragmentColor = ctx->Color.ClampFragmentColor; + + /* Generally in here we want to do clamping according to whether + * it's for the pixel path (ClampFragmentColor is GL_TRUE), + * regardless of the internal implementation of the metaops. + */ + if (ctx->Color.ClampFragmentColor != GL_TRUE) + _mesa_ClampColorARB(GL_CLAMP_FRAGMENT_COLOR, GL_FALSE); + } + + if (state & META_CLAMP_VERTEX_COLOR) { + save->ClampVertexColor = ctx->Light.ClampVertexColor; + + /* Generally in here we never want vertex color clamping -- + * result clamping is only dependent on fragment clamping. + */ + _mesa_ClampColorARB(GL_CLAMP_VERTEX_COLOR, GL_FALSE); + } + /* misc */ { save->Lighting = ctx->Light.Enabled; @@ -833,6 +861,14 @@ _mesa_meta_end(struct gl_context *ctx) _mesa_DepthRange(save->DepthNear, save->DepthFar); } + if (state & META_CLAMP_FRAGMENT_COLOR) { + _mesa_ClampColorARB(GL_CLAMP_FRAGMENT_COLOR, save->ClampFragmentColor); + } + + if (state & META_CLAMP_VERTEX_COLOR) { + _mesa_ClampColorARB(GL_CLAMP_VERTEX_COLOR, save->ClampVertexColor); + } + /* misc */ if (save->Lighting) { _mesa_set_enable(ctx, GL_LIGHTING, GL_TRUE); @@ -1124,12 +1160,12 @@ blitframebuffer_texture(struct gl_context *ctx, if (readAtt && readAtt->Texture) { const struct gl_texture_object *texObj = readAtt->Texture; const GLuint srcLevel = readAtt->TextureLevel; - const GLenum minFilterSave = texObj->MinFilter; - const GLenum magFilterSave = texObj->MagFilter; + const GLenum minFilterSave = texObj->Sampler.MinFilter; + const GLenum magFilterSave = texObj->Sampler.MagFilter; const GLint baseLevelSave = texObj->BaseLevel; const GLint maxLevelSave = texObj->MaxLevel; - const GLenum wrapSSave = texObj->WrapS; - const GLenum wrapTSave = texObj->WrapT; + const GLenum wrapSSave = texObj->Sampler.WrapS; + const GLenum wrapTSave = texObj->Sampler.WrapT; const GLenum target = texObj->Target; if (drawAtt->Texture == readAtt->Texture) { @@ -1441,6 +1477,9 @@ _mesa_meta_Clear(struct gl_context *ctx, GLbitfield buffers) /* GL_COLOR_BUFFER_BIT */ if (buffers & BUFFER_BITS_COLOR) { /* leave colormask, glDrawBuffer state as-is */ + + /* Clears never have the color clamped. */ + _mesa_ClampColorARB(GL_CLAMP_FRAGMENT_COLOR, GL_FALSE); } else { ASSERT(metaSave & META_COLOR_MASK); @@ -1494,10 +1533,10 @@ _mesa_meta_Clear(struct gl_context *ctx, GLbitfield buffers) /* vertex colors */ for (i = 0; i < 4; i++) { - verts[i].r = ctx->Color.ClearColor[0]; - verts[i].g = ctx->Color.ClearColor[1]; - verts[i].b = ctx->Color.ClearColor[2]; - verts[i].a = ctx->Color.ClearColor[3]; + verts[i].r = ctx->Color.ClearColorUnclamped[0]; + verts[i].g = ctx->Color.ClearColorUnclamped[1]; + verts[i].b = ctx->Color.ClearColorUnclamped[2]; + verts[i].a = ctx->Color.ClearColorUnclamped[3]; } /* upload new vertex data */ @@ -1803,6 +1842,14 @@ _mesa_meta_DrawPixels(struct gl_context *ctx, texIntFormat = format; else texIntFormat = GL_RGBA; + + /* If we're not supposed to clamp the resulting color, then just + * promote our texture to fully float. We could do better by + * just going for the matching set of channels, in floating + * point. + */ + if (ctx->Color.ClampFragmentColor != GL_TRUE) + texIntFormat = GL_RGBA32F; } else if (_mesa_is_stencil_format(format)) { if (ctx->Extensions.ARB_fragment_program && @@ -1861,6 +1908,7 @@ _mesa_meta_DrawPixels(struct gl_context *ctx, META_TRANSFORM | META_VERTEX | META_VIEWPORT | + META_CLAMP_FRAGMENT_COLOR | metaExtraSave)); newTex = alloc_texture(tex, width, height, texIntFormat); @@ -2259,13 +2307,13 @@ _mesa_meta_GenerateMipmap(struct gl_context *ctx, GLenum target, struct vertex verts[4]; const GLuint baseLevel = texObj->BaseLevel; const GLuint maxLevel = texObj->MaxLevel; - const GLenum minFilterSave = texObj->MinFilter; - const GLenum magFilterSave = texObj->MagFilter; + const GLenum minFilterSave = texObj->Sampler.MinFilter; + const GLenum magFilterSave = texObj->Sampler.MagFilter; const GLint maxLevelSave = texObj->MaxLevel; const GLboolean genMipmapSave = texObj->GenerateMipmap; - const GLenum wrapSSave = texObj->WrapS; - const GLenum wrapTSave = texObj->WrapT; - const GLenum wrapRSave = texObj->WrapR; + const GLenum wrapSSave = texObj->Sampler.WrapS; + const GLenum wrapTSave = texObj->Sampler.WrapT; + const GLenum wrapRSave = texObj->Sampler.WrapR; const GLuint fboSave = ctx->DrawBuffer->Name; const GLuint original_active_unit = ctx->Texture.CurrentUnit; GLenum faceTarget; diff --git a/src/mesa/drivers/dri/common/spantmp2.h b/src/mesa/drivers/dri/common/spantmp2.h index f436d1398c2..abd79562f98 100644 --- a/src/mesa/drivers/dri/common/spantmp2.h +++ b/src/mesa/drivers/dri/common/spantmp2.h @@ -48,15 +48,6 @@ #define HW_WRITE_CLIPLOOP() HW_CLIPLOOP() #endif -#ifdef SPANTMP_MESA_FMT -#define SPANTMP_PIXEL_FMT GL_NONE -#define SPANTMP_PIXEL_TYPE GL_NONE -#endif - -#ifndef SPANTMP_MESA_FMT -#define SPANTMP_MESA_FMT MESA_FORMAT_COUNT -#endif - #if (SPANTMP_PIXEL_FMT == GL_RGB) && (SPANTMP_PIXEL_TYPE == GL_UNSIGNED_SHORT_5_6_5) /** @@ -454,118 +445,6 @@ rgba[3] = p; \ } while (0) -#elif (SPANTMP_MESA_FMT == MESA_FORMAT_R8) - -#ifndef GET_VALUE -#ifndef GET_PTR -#define GET_PTR(_x, _y) ( buf + (_x) + (_y) * pitch) -#endif - -#define GET_VALUE(_x, _y) *(volatile GLubyte *)(GET_PTR(_x, _y)) -#define PUT_VALUE(_x, _y, _v) *(volatile GLubyte *)(GET_PTR(_x, _y)) = (_v) -#endif /* GET_VALUE */ - -# define INIT_MONO_PIXEL(p, color) \ - p = color[0] - -# define WRITE_RGBA(_x, _y, r, g, b, a) \ - PUT_VALUE(_x, _y, r) - -#define WRITE_PIXEL(_x, _y, p) PUT_VALUE(_x, _y, p) - -#define READ_RGBA( rgba, _x, _y ) \ - do { \ - GLubyte p = GET_VALUE(_x, _y); \ - rgba[0] = p; \ - rgba[1] = 0; \ - rgba[2] = 0; \ - rgba[3] = 0; \ - } while (0) - -#elif (SPANTMP_MESA_FMT == MESA_FORMAT_RG88) - -#ifndef GET_VALUE -#ifndef GET_PTR -#define GET_PTR(_x, _y) ( buf + (_x) * 2 + (_y) * pitch) -#endif - -#define GET_VALUE(_x, _y) *(volatile GLushort *)(GET_PTR(_x, _y)) -#define PUT_VALUE(_x, _y, _v) *(volatile GLushort *)(GET_PTR(_x, _y)) = (_v) -#endif /* GET_VALUE */ - -# define INIT_MONO_PIXEL(p, color) \ - PACK_COLOR_8888(color[0], color[1], 0, 0) - -# define WRITE_RGBA(_x, _y, r, g, b, a) \ - PUT_VALUE(_x, _y, r) - -#define WRITE_PIXEL(_x, _y, p) PUT_VALUE(_x, _y, p) - -#define READ_RGBA( rgba, _x, _y ) \ - do { \ - GLushort p = GET_VALUE(_x, _y); \ - rgba[0] = p & 0xff; \ - rgba[1] = (p >> 8) & 0xff; \ - rgba[2] = 0; \ - rgba[3] = 0; \ - } while (0) - -#elif (SPANTMP_MESA_FMT == MESA_FORMAT_R16) - -#ifndef GET_VALUE -#ifndef GET_PTR -#define GET_PTR(_x, _y) ( buf + (_x) * 2 + (_y) * pitch) -#endif - -#define GET_VALUE(_x, _y) *(volatile GLushort *)(GET_PTR(_x, _y)) -#define PUT_VALUE(_x, _y, _v) *(volatile GLushort *)(GET_PTR(_x, _y)) = (_v) -#endif /* GET_VALUE */ - -# define INIT_MONO_PIXEL(p, color) \ - p = color[0] - -# define WRITE_RGBA(_x, _y, r, g, b, a) \ - PUT_VALUE(_x, _y, r) - -#define WRITE_PIXEL(_x, _y, p) PUT_VALUE(_x, _y, p) - -#define READ_RGBA( rgba, _x, _y ) \ - do { \ - GLushort p = GET_VALUE(_x, _y); \ - rgba[0] = p; \ - rgba[1] = 0; \ - rgba[2] = 0; \ - rgba[3] = 0; \ - } while (0) - -#elif (SPANTMP_MESA_FMT == MESA_FORMAT_RG1616) - -#ifndef GET_VALUE -#ifndef GET_PTR -#define GET_PTR(_x, _y) ( buf + (_x) * 4 + (_y) * pitch) -#endif - -#define GET_VALUE(_x, _y) *(volatile GLuint *)(GET_PTR(_x, _y)) -#define PUT_VALUE(_x, _y, _v) *(volatile GLuint *)(GET_PTR(_x, _y)) = (_v) -#endif /* GET_VALUE */ - -# define INIT_MONO_PIXEL(p, color) \ - ((color[1] << 16) | (color[0])) - -# define WRITE_RGBA(_x, _y, r, g, b, a) \ - PUT_VALUE(_x, _y, r) - -#define WRITE_PIXEL(_x, _y, p) PUT_VALUE(_x, _y, p) - -#define READ_RGBA( rgba, _x, _y ) \ - do { \ - GLuint p = GET_VALUE(_x, _y); \ - rgba[0] = p & 0xffff; \ - rgba[1] = (p >> 16) & 0xffff; \ - rgba[2] = 0; \ - rgba[3] = 0; \ - } while (0) - #else #error SPANTMP_PIXEL_FMT must be set to a valid value! #endif @@ -1035,4 +914,3 @@ static void TAG(InitPointers)(struct gl_renderbuffer *rb) #undef GET_PTR #undef SPANTMP_PIXEL_FMT #undef SPANTMP_PIXEL_TYPE -#undef SPANTMP_MESA_FMT diff --git a/src/mesa/drivers/dri/common/texmem.c b/src/mesa/drivers/dri/common/texmem.c index 8eec07d5bcc..e927cf0addd 100644 --- a/src/mesa/drivers/dri/common/texmem.c +++ b/src/mesa/drivers/dri/common/texmem.c @@ -1264,17 +1264,18 @@ driCalculateTextureFirstLastLevel( driTextureObject * t ) case GL_TEXTURE_2D: case GL_TEXTURE_3D: case GL_TEXTURE_CUBE_MAP: - if (tObj->MinFilter == GL_NEAREST || tObj->MinFilter == GL_LINEAR) { + if (tObj->Sampler.MinFilter == GL_NEAREST || + tObj->Sampler.MinFilter == GL_LINEAR) { /* GL_NEAREST and GL_LINEAR only care about GL_TEXTURE_BASE_LEVEL. */ firstLevel = lastLevel = tObj->BaseLevel; } else { - firstLevel = tObj->BaseLevel + (GLint)(tObj->MinLod + 0.5); + firstLevel = tObj->BaseLevel + (GLint)(tObj->Sampler.MinLod + 0.5); firstLevel = MAX2(firstLevel, tObj->BaseLevel); firstLevel = MIN2(firstLevel, tObj->BaseLevel + baseImage->MaxLog2); - lastLevel = tObj->BaseLevel + (GLint)(tObj->MaxLod + 0.5); + lastLevel = tObj->BaseLevel + (GLint)(tObj->Sampler.MaxLod + 0.5); lastLevel = MAX2(lastLevel, t->tObj->BaseLevel); lastLevel = MIN2(lastLevel, t->tObj->BaseLevel + baseImage->MaxLog2); lastLevel = MIN2(lastLevel, t->tObj->MaxLevel); diff --git a/src/mesa/drivers/dri/common/utils.c b/src/mesa/drivers/dri/common/utils.c index 083edfaa9b4..d8281838233 100644 --- a/src/mesa/drivers/dri/common/utils.c +++ b/src/mesa/drivers/dri/common/utils.c @@ -96,7 +96,6 @@ driParseDebugString( const char * debug, * * \param buffer Buffer to hold the \c GL_RENDERER string. * \param hardware_name Name of the hardware. - * \param driver_date Driver date. * \param agp_mode AGP mode (speed). * * \returns @@ -105,12 +104,12 @@ driParseDebugString( const char * debug, */ unsigned driGetRendererString( char * buffer, const char * hardware_name, - const char * driver_date, GLuint agp_mode ) + GLuint agp_mode ) { unsigned offset; char *cpu; - offset = sprintf( buffer, "Mesa DRI %s %s", hardware_name, driver_date ); + offset = sprintf( buffer, "Mesa DRI %s", hardware_name ); /* Append any AGP-specific information. */ diff --git a/src/mesa/drivers/dri/common/utils.h b/src/mesa/drivers/dri/common/utils.h index 6349fb4b95c..a1c9ea604ee 100644 --- a/src/mesa/drivers/dri/common/utils.h +++ b/src/mesa/drivers/dri/common/utils.h @@ -76,7 +76,7 @@ extern unsigned driParseDebugString( const char * debug, const struct dri_debug_control * control ); extern unsigned driGetRendererString( char * buffer, - const char * hardware_name, const char * driver_date, GLuint agp_mode ); + const char * hardware_name, GLuint agp_mode ); extern void driInitExtensions( struct gl_context * ctx, const struct dri_extension * card_extensions, GLboolean enable_imaging ); diff --git a/src/mesa/drivers/dri/common/xmlconfig.c b/src/mesa/drivers/dri/common/xmlconfig.c index 0312c072437..0226b38c4fc 100644 --- a/src/mesa/drivers/dri/common/xmlconfig.c +++ b/src/mesa/drivers/dri/common/xmlconfig.c @@ -64,7 +64,25 @@ extern char *program_invocation_name, *program_invocation_short_name; the basename to match BSD getprogname() */ # include <stdlib.h> # include <libgen.h> -# define GET_PROGRAM_NAME() basename(getexecname()) + +static const char *__getProgramName () { + static const char *progname; + + if (progname == NULL) { + const char *e = getexecname(); + if (e != NULL) { + /* Have to make a copy since getexecname can return a readonly + string, but basename expects to be able to modify its arg. */ + char *n = strdup(e); + if (n != NULL) { + progname = basename(n); + } + } + } + return progname; +} + +# define GET_PROGRAM_NAME() __getProgramName() #endif #if !defined(GET_PROGRAM_NAME) diff --git a/src/mesa/drivers/dri/i810/i810context.c b/src/mesa/drivers/dri/i810/i810context.c index 90dbb6bbe80..604b1e36f97 100644 --- a/src/mesa/drivers/dri/i810/i810context.c +++ b/src/mesa/drivers/dri/i810/i810context.c @@ -67,8 +67,6 @@ int I810_DEBUG = (0); PUBLIC const char __driConfigOptions[] = { 0 }; const GLuint __driNConfigOptions = 0; -#define DRIVER_DATE "20050821" - static const GLubyte *i810GetString( struct gl_context *ctx, GLenum name ) { static char buffer[128]; @@ -88,7 +86,7 @@ static const GLubyte *i810GetString( struct gl_context *ctx, GLenum name ) default: chipset = "Unknown i810-class Chipset"; break; } - (void) driGetRendererString( buffer, chipset, DRIVER_DATE, 0 ); + (void) driGetRendererString( buffer, chipset, 0 ); return (GLubyte *) buffer; } default: diff --git a/src/mesa/drivers/dri/i810/i810tex.c b/src/mesa/drivers/dri/i810/i810tex.c index 49364aeb225..dba4ebaa5c7 100644 --- a/src/mesa/drivers/dri/i810/i810tex.c +++ b/src/mesa/drivers/dri/i810/i810tex.c @@ -204,10 +204,10 @@ i810AllocTexObj( struct gl_context *ctx, struct gl_texture_object *texObj ) make_empty_list( & t->base ); - i810SetTexWrapping( t, texObj->WrapS, texObj->WrapT ); + i810SetTexWrapping( t, texObj->Sampler.WrapS, texObj->Sampler.WrapT ); /*i830SetTexMaxAnisotropy( t, texObj->MaxAnisotropy );*/ - i810SetTexFilter( imesa, t, texObj->MinFilter, texObj->MagFilter, bias ); - i810SetTexBorderColor( t, texObj->BorderColor.f ); + i810SetTexFilter( imesa, t, texObj->Sampler.MinFilter, texObj->Sampler.MagFilter, bias ); + i810SetTexBorderColor( t, texObj->Sampler.BorderColor.f ); } return t; @@ -238,17 +238,17 @@ static void i810TexParameter( struct gl_context *ctx, GLenum target, case GL_TEXTURE_MAG_FILTER: { GLfloat bias = ctx->Texture.Unit[ctx->Texture.CurrentUnit].LodBias; - i810SetTexFilter( imesa, t, tObj->MinFilter, tObj->MagFilter, bias ); + i810SetTexFilter( imesa, t, tObj->Sampler.MinFilter, tObj->Sampler.MagFilter, bias ); } break; case GL_TEXTURE_WRAP_S: case GL_TEXTURE_WRAP_T: - i810SetTexWrapping( t, tObj->WrapS, tObj->WrapT ); + i810SetTexWrapping( t, tObj->Sampler.WrapS, tObj->Sampler.WrapT ); break; case GL_TEXTURE_BORDER_COLOR: - i810SetTexBorderColor( t, tObj->BorderColor.f ); + i810SetTexBorderColor( t, tObj->Sampler.BorderColor.f ); break; case GL_TEXTURE_BASE_LEVEL: diff --git a/src/mesa/drivers/dri/i915/i830_texstate.c b/src/mesa/drivers/dri/i915/i830_texstate.c index c35b4b5ed06..7554bd5e7b9 100644 --- a/src/mesa/drivers/dri/i915/i830_texstate.c +++ b/src/mesa/drivers/dri/i915/i830_texstate.c @@ -193,7 +193,7 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) float maxlod; uint32_t minlod_fixed, maxlod_fixed; - switch (tObj->MinFilter) { + switch (tObj->Sampler.MinFilter) { case GL_NEAREST: minFilt = FILTER_NEAREST; mipFilt = MIPFILTER_NONE; @@ -222,12 +222,12 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) return GL_FALSE; } - if (tObj->MaxAnisotropy > 1.0) { + if (tObj->Sampler.MaxAnisotropy > 1.0) { minFilt = FILTER_ANISOTROPIC; magFilt = FILTER_ANISOTROPIC; } else { - switch (tObj->MagFilter) { + switch (tObj->Sampler.MagFilter) { case GL_NEAREST: magFilt = FILTER_NEAREST; break; @@ -239,7 +239,7 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) } } - lodbias = (int) ((tUnit->LodBias + tObj->LodBias) * 16.0); + lodbias = (int) ((tUnit->LodBias + tObj->Sampler.LodBias) * 16.0); if (lodbias < -64) lodbias = -64; if (lodbias > 63) @@ -259,8 +259,8 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) * addressable (smallest resolution) LOD. Use it to cover both * MAX_LEVEL and MAX_LOD. */ - minlod_fixed = U_FIXED(CLAMP(tObj->MinLod, 0.0, 11), 4); - maxlod = MIN2(tObj->MaxLod, tObj->_MaxLevel - tObj->BaseLevel); + minlod_fixed = U_FIXED(CLAMP(tObj->Sampler.MinLod, 0.0, 11), 4); + maxlod = MIN2(tObj->Sampler.MaxLod, tObj->_MaxLevel - tObj->BaseLevel); if (intel->intelScreen->deviceID == PCI_CHIP_I855_GM || intel->intelScreen->deviceID == PCI_CHIP_I865_G) { maxlod_fixed = U_FIXED(CLAMP(maxlod, 0.0, 11.75), 2); @@ -279,8 +279,8 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) } { - GLenum ws = tObj->WrapS; - GLenum wt = tObj->WrapT; + GLenum ws = tObj->Sampler.WrapS; + GLenum wt = tObj->Sampler.WrapT; /* 3D textures not available on i830 @@ -300,10 +300,10 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) } /* convert border color from float to ubyte */ - CLAMPED_FLOAT_TO_UBYTE(border[0], tObj->BorderColor.f[0]); - CLAMPED_FLOAT_TO_UBYTE(border[1], tObj->BorderColor.f[1]); - CLAMPED_FLOAT_TO_UBYTE(border[2], tObj->BorderColor.f[2]); - CLAMPED_FLOAT_TO_UBYTE(border[3], tObj->BorderColor.f[3]); + CLAMPED_FLOAT_TO_UBYTE(border[0], tObj->Sampler.BorderColor.f[0]); + CLAMPED_FLOAT_TO_UBYTE(border[1], tObj->Sampler.BorderColor.f[1]); + CLAMPED_FLOAT_TO_UBYTE(border[2], tObj->Sampler.BorderColor.f[2]); + CLAMPED_FLOAT_TO_UBYTE(border[3], tObj->Sampler.BorderColor.f[3]); state[I830_TEXREG_TM0S4] = PACK_COLOR_8888(border[3], border[0], diff --git a/src/mesa/drivers/dri/i915/i915_context.c b/src/mesa/drivers/dri/i915/i915_context.c index 7389a1d57a9..f02f2d78267 100644 --- a/src/mesa/drivers/dri/i915/i915_context.c +++ b/src/mesa/drivers/dri/i915/i915_context.c @@ -69,8 +69,6 @@ i915InvalidateState(struct gl_context * ctx, GLuint new_state) p->params_uptodate = 0; } - if (new_state & (_NEW_FOG | _NEW_HINT | _NEW_PROGRAM | _NEW_PROGRAM_CONSTANTS)) - i915_update_fog(ctx); if (new_state & (_NEW_STENCIL | _NEW_BUFFERS | _NEW_POLYGON)) i915_update_stencil(ctx); if (new_state & (_NEW_LIGHT)) @@ -209,5 +207,11 @@ i915CreateContext(int api, i915InitState(i915); + /* Always enable pixel fog. Vertex fog using fog coord will conflict + * with fog code appended onto fragment program. + */ + _tnl_allow_vertex_fog(ctx, 0); + _tnl_allow_pixel_fog(ctx, 1); + return GL_TRUE; } diff --git a/src/mesa/drivers/dri/i915/i915_context.h b/src/mesa/drivers/dri/i915/i915_context.h index 601620275f4..577a01e290c 100644 --- a/src/mesa/drivers/dri/i915/i915_context.h +++ b/src/mesa/drivers/dri/i915/i915_context.h @@ -46,7 +46,6 @@ #define I915_UPLOAD_STIPPLE 0x4 #define I915_UPLOAD_PROGRAM 0x8 #define I915_UPLOAD_CONSTANTS 0x10 -#define I915_UPLOAD_FOG 0x20 #define I915_UPLOAD_INVARIENT 0x40 #define I915_UPLOAD_DEFAULTS 0x80 #define I915_UPLOAD_RASTER_RULES 0x100 @@ -91,13 +90,6 @@ #define I915_BLENDREG_BLENDCOLOR1 2 #define I915_BLEND_SETUP_SIZE 3 -#define I915_FOGREG_COLOR 0 -#define I915_FOGREG_MODE0 1 -#define I915_FOGREG_MODE1 2 -#define I915_FOGREG_MODE2 3 -#define I915_FOGREG_MODE3 4 -#define I915_FOG_SETUP_SIZE 5 - #define I915_STPREG_ST0 0 #define I915_STPREG_ST1 1 #define I915_STP_SETUP_SIZE 2 @@ -227,7 +219,6 @@ struct i915_hw_state GLuint Blend[I915_BLEND_SETUP_SIZE]; GLuint Buffer[I915_DEST_SETUP_SIZE]; GLuint Stipple[I915_STP_SETUP_SIZE]; - GLuint Fog[I915_FOG_SETUP_SIZE]; GLuint Defaults[I915_DEF_SETUP_SIZE]; GLuint RasterRules[I915_RASTER_RULES_SETUP_SIZE]; GLuint Tex[I915_TEX_UNITS][I915_TEX_SETUP_SIZE]; @@ -254,16 +245,11 @@ struct i915_hw_state GLuint emitted; /* I915_UPLOAD_* */ }; -#define I915_FOG_PIXEL 2 -#define I915_FOG_VERTEX 1 -#define I915_FOG_NONE 0 - struct i915_context { struct intel_context intel; GLuint last_ReallyEnabled; - GLuint vertex_fog; GLuint lodbias_ss2[MAX_TEXTURE_UNITS]; @@ -350,7 +336,6 @@ extern void i915_print_ureg(const char *msg, GLuint ureg); */ extern void i915InitStateFunctions(struct dd_function_table *functions); extern void i915InitState(struct i915_context *i915); -extern void i915_update_fog(struct gl_context * ctx); extern void i915_update_stencil(struct gl_context * ctx); extern void i915_update_provoking_vertex(struct gl_context *ctx); diff --git a/src/mesa/drivers/dri/i915/i915_fragprog.c b/src/mesa/drivers/dri/i915/i915_fragprog.c index 2bfe665cb65..b67ebb9a1ec 100644 --- a/src/mesa/drivers/dri/i915/i915_fragprog.c +++ b/src/mesa/drivers/dri/i915/i915_fragprog.c @@ -1285,15 +1285,6 @@ i915ProgramStringNotify(struct gl_context * ctx, if (target == GL_FRAGMENT_PROGRAM_ARB) { struct i915_fragment_program *p = (struct i915_fragment_program *) prog; p->translated = 0; - - /* Hack: make sure fog is correctly enabled according to this - * fragment program's fog options. - */ - if (p->FragProg.FogOption) { - /* add extra instructions to do fog, then turn off FogOption field */ - _mesa_append_fog_code(ctx, &p->FragProg); - p->FragProg.FogOption = GL_NONE; - } } (void) _tnl_program_string(ctx, target, prog); @@ -1371,7 +1362,7 @@ i915ValidateFragmentProgram(struct i915_context *i915) EMIT_ATTR(_TNL_ATTRIB_COLOR1, EMIT_4UB_4F_BGRA, S4_VFMT_SPEC_FOG, 4); } - if ((inputsRead & FRAG_BIT_FOGC) || i915->vertex_fog != I915_FOG_NONE) { + if ((inputsRead & FRAG_BIT_FOGC)) { EMIT_ATTR(_TNL_ATTRIB_FOG, EMIT_1F, S4_VFMT_FOG_PARAM, 4); } diff --git a/src/mesa/drivers/dri/i915/i915_state.c b/src/mesa/drivers/dri/i915/i915_state.c index 3b1af4c455e..99212ad4fd1 100644 --- a/src/mesa/drivers/dri/i915/i915_state.c +++ b/src/mesa/drivers/dri/i915/i915_state.c @@ -724,157 +724,17 @@ i915ShadeModel(struct gl_context * ctx, GLenum mode) /* ============================================================= * Fog + * + * This empty function remains because _mesa_init_driver_state calls + * dd_function_table::Fogfv unconditionally. We have to have some function + * there so that it doesn't try to call a NULL pointer. */ -void -i915_update_fog(struct gl_context * ctx) -{ - struct i915_context *i915 = I915_CONTEXT(ctx); - GLenum mode; - GLboolean enabled; - GLboolean try_pixel_fog; - GLuint dw; - - if (ctx->FragmentProgram._Current) { - /* Pull in static fog state from program */ - mode = ctx->FragmentProgram._Current->FogOption; - enabled = (mode != GL_NONE); - try_pixel_fog = 0; - } - else { - enabled = ctx->Fog.Enabled; - mode = ctx->Fog.Mode; -#if 0 - /* XXX - DISABLED -- Need ortho fallback */ - try_pixel_fog = (ctx->Fog.FogCoordinateSource == GL_FRAGMENT_DEPTH_EXT - && ctx->Hint.Fog == GL_NICEST); -#else - try_pixel_fog = 0; -#endif - } - - if (!enabled) { - i915->vertex_fog = I915_FOG_NONE; - } - else if (try_pixel_fog) { - I915_STATECHANGE(i915, I915_UPLOAD_FOG); - i915->state.Fog[I915_FOGREG_MODE1] &= ~FMC1_FOGFUNC_MASK; - i915->vertex_fog = I915_FOG_PIXEL; - - switch (mode) { - case GL_LINEAR: - if (ctx->Fog.End <= ctx->Fog.Start) { - /* XXX - this won't work with fragment programs. Need to - * either fallback or append fog instructions to end of - * program in the case of linear fog. - */ - printf("vertex fog!\n"); - i915->state.Fog[I915_FOGREG_MODE1] |= FMC1_FOGFUNC_VERTEX; - i915->vertex_fog = I915_FOG_VERTEX; - } - else { - GLfloat c2 = 1.0 / (ctx->Fog.End - ctx->Fog.Start); - GLfloat c1 = ctx->Fog.End * c2; - - i915->state.Fog[I915_FOGREG_MODE1] &= ~FMC1_C1_MASK; - i915->state.Fog[I915_FOGREG_MODE1] |= FMC1_FOGFUNC_PIXEL_LINEAR; - i915->state.Fog[I915_FOGREG_MODE1] |= - ((GLuint) (c1 * FMC1_C1_ONE)) & FMC1_C1_MASK; - - if (i915->state.Fog[I915_FOGREG_MODE1] & FMC1_FOGINDEX_Z) { - i915->state.Fog[I915_FOGREG_MODE2] - = (GLuint) (c2 * FMC2_C2_ONE); - } - else { - fi_type fi; - fi.f = c2; - i915->state.Fog[I915_FOGREG_MODE2] = fi.i; - } - } - break; - case GL_EXP: - i915->state.Fog[I915_FOGREG_MODE1] |= FMC1_FOGFUNC_PIXEL_EXP; - break; - case GL_EXP2: - i915->state.Fog[I915_FOGREG_MODE1] |= FMC1_FOGFUNC_PIXEL_EXP2; - break; - default: - break; - } - } - else { /* if (i915->vertex_fog != I915_FOG_VERTEX) */ - I915_STATECHANGE(i915, I915_UPLOAD_FOG); - i915->state.Fog[I915_FOGREG_MODE1] &= ~FMC1_FOGFUNC_MASK; - i915->state.Fog[I915_FOGREG_MODE1] |= FMC1_FOGFUNC_VERTEX; - i915->vertex_fog = I915_FOG_VERTEX; - } - - I915_ACTIVESTATE(i915, I915_UPLOAD_FOG, enabled); - dw = i915->state.Ctx[I915_CTXREG_LIS5]; - if (enabled) - dw |= S5_FOG_ENABLE; - else - dw &= ~S5_FOG_ENABLE; - if (dw != i915->state.Ctx[I915_CTXREG_LIS5]) { - i915->state.Ctx[I915_CTXREG_LIS5] = dw; - I915_STATECHANGE(i915, I915_UPLOAD_CTX); - } - - /* Always enable pixel fog. Vertex fog using fog coord will conflict - * with fog code appended onto fragment program. - */ - _tnl_allow_vertex_fog( ctx, 0 ); - _tnl_allow_pixel_fog( ctx, 1 ); -} - static void i915Fogfv(struct gl_context * ctx, GLenum pname, const GLfloat * param) { - struct i915_context *i915 = I915_CONTEXT(ctx); - - switch (pname) { - case GL_FOG_COORDINATE_SOURCE_EXT: - case GL_FOG_MODE: - case GL_FOG_START: - case GL_FOG_END: - break; - - case GL_FOG_DENSITY: - I915_STATECHANGE(i915, I915_UPLOAD_FOG); - - if (i915->state.Fog[I915_FOGREG_MODE1] & FMC1_FOGINDEX_Z) { - i915->state.Fog[I915_FOGREG_MODE3] = - (GLuint) (ctx->Fog.Density * FMC3_D_ONE); - } - else { - fi_type fi; - fi.f = ctx->Fog.Density; - i915->state.Fog[I915_FOGREG_MODE3] = fi.i; - } - break; - - case GL_FOG_COLOR: - I915_STATECHANGE(i915, I915_UPLOAD_FOG); - i915->state.Fog[I915_FOGREG_COLOR] = - (_3DSTATE_FOG_COLOR_CMD | - ((GLubyte) (ctx->Fog.Color[0] * 255.0F) << 16) | - ((GLubyte) (ctx->Fog.Color[1] * 255.0F) << 8) | - ((GLubyte) (ctx->Fog.Color[2] * 255.0F) << 0)); - break; - - default: - break; - } -} - -static void -i915Hint(struct gl_context * ctx, GLenum target, GLenum state) -{ - switch (target) { - case GL_FOG_HINT: - break; - default: - break; - } + (void) ctx; + (void) pname; + (void) param; } /* ============================================================= @@ -971,9 +831,6 @@ i915Enable(struct gl_context * ctx, GLenum cap, GLboolean state) } break; - case GL_FOG: - break; - case GL_CULL_FACE: i915CullFaceFrontFace(ctx, 0); break; @@ -1107,19 +964,6 @@ i915_init_packets(struct i915_context *i915) i915->state.Stipple[I915_STPREG_ST0] = _3DSTATE_STIPPLE; } - - { - I915_STATECHANGE(i915, I915_UPLOAD_FOG); - i915->state.Fog[I915_FOGREG_MODE0] = _3DSTATE_FOG_MODE_CMD; - i915->state.Fog[I915_FOGREG_MODE1] = (FMC1_FOGFUNC_MODIFY_ENABLE | - FMC1_FOGFUNC_VERTEX | - FMC1_FOGINDEX_MODIFY_ENABLE | - FMC1_FOGINDEX_W | - FMC1_C1_C2_MODIFY_ENABLE | - FMC1_DENSITY_MODIFY_ENABLE); - i915->state.Fog[I915_FOGREG_COLOR] = _3DSTATE_FOG_COLOR_CMD; - } - { i915->state.Buffer[I915_DESTREG_DV0] = _3DSTATE_DST_BUF_VARS_CMD; @@ -1202,7 +1046,6 @@ i915InitStateFunctions(struct dd_function_table *functions) functions->Enable = i915Enable; functions->Fogfv = i915Fogfv; functions->FrontFace = i915CullFaceFrontFace; - functions->Hint = i915Hint; functions->LightModelfv = i915LightModelfv; functions->LineWidth = i915LineWidth; functions->LogicOpcode = i915LogicOp; diff --git a/src/mesa/drivers/dri/i915/i915_texstate.c b/src/mesa/drivers/dri/i915/i915_texstate.c index af140c85f50..742bb994adb 100644 --- a/src/mesa/drivers/dri/i915/i915_texstate.c +++ b/src/mesa/drivers/dri/i915/i915_texstate.c @@ -164,7 +164,7 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) format = translate_texture_format(firstImage->TexFormat, firstImage->InternalFormat, - tObj->DepthMode); + tObj->Sampler.DepthMode); pitch = intelObj->mt->region->pitch * intelObj->mt->cpp; state[I915_TEXREG_MS3] = @@ -181,7 +181,7 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) * (lowest resolution) LOD. Use it to cover both MAX_LEVEL and * MAX_LOD. */ - maxlod = MIN2(tObj->MaxLod, tObj->_MaxLevel - tObj->BaseLevel); + maxlod = MIN2(tObj->Sampler.MaxLod, tObj->_MaxLevel - tObj->BaseLevel); state[I915_TEXREG_MS4] = ((((pitch / 4) - 1) << MS4_PITCH_SHIFT) | MS4_CUBE_FACE_ENA_MASK | @@ -192,7 +192,7 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) { GLuint minFilt, mipFilt, magFilt; - switch (tObj->MinFilter) { + switch (tObj->Sampler.MinFilter) { case GL_NEAREST: minFilt = FILTER_NEAREST; mipFilt = MIPFILTER_NONE; @@ -221,16 +221,16 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) return GL_FALSE; } - if (tObj->MaxAnisotropy > 1.0) { + if (tObj->Sampler.MaxAnisotropy > 1.0) { minFilt = FILTER_ANISOTROPIC; magFilt = FILTER_ANISOTROPIC; - if (tObj->MaxAnisotropy > 2.0) + if (tObj->Sampler.MaxAnisotropy > 2.0) aniso = SS2_MAX_ANISO_4; else aniso = SS2_MAX_ANISO_2; } else { - switch (tObj->MagFilter) { + switch (tObj->Sampler.MagFilter) { case GL_NEAREST: magFilt = FILTER_NEAREST; break; @@ -242,7 +242,7 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) } } - lodbias = (int) ((tUnit->LodBias + tObj->LodBias) * 16.0); + lodbias = (int) ((tUnit->LodBias + tObj->Sampler.LodBias) * 16.0); if (lodbias < -256) lodbias = -256; if (lodbias > 255) @@ -258,14 +258,14 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) /* Shadow: */ - if (tObj->CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB && + if (tObj->Sampler.CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB && tObj->Target != GL_TEXTURE_3D) { if (tObj->Target == GL_TEXTURE_1D) return GL_FALSE; state[I915_TEXREG_SS2] |= (SS2_SHADOW_ENABLE | - intel_translate_shadow_compare_func(tObj->CompareFunc)); + intel_translate_shadow_compare_func(tObj->Sampler.CompareFunc)); minFilt = FILTER_4X4_FLAT; magFilt = FILTER_4X4_FLAT; @@ -278,9 +278,9 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) } { - GLenum ws = tObj->WrapS; - GLenum wt = tObj->WrapT; - GLenum wr = tObj->WrapR; + GLenum ws = tObj->Sampler.WrapS; + GLenum wt = tObj->Sampler.WrapT; + GLenum wr = tObj->Sampler.WrapR; float minlod; /* We program 1D textures as 2D textures, so the 2D texcoord could @@ -298,8 +298,8 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) * clamp_to_border. */ if (tObj->Target == GL_TEXTURE_3D && - (tObj->MinFilter != GL_NEAREST || - tObj->MagFilter != GL_NEAREST) && + (tObj->Sampler.MinFilter != GL_NEAREST || + tObj->Sampler.MagFilter != GL_NEAREST) && (ws == GL_CLAMP || wt == GL_CLAMP || wr == GL_CLAMP || @@ -322,7 +322,7 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) (translate_wrap_mode(wt) << SS3_TCY_ADDR_MODE_SHIFT) | (translate_wrap_mode(wr) << SS3_TCZ_ADDR_MODE_SHIFT)); - minlod = MIN2(tObj->MinLod, tObj->_MaxLevel - tObj->BaseLevel); + minlod = MIN2(tObj->Sampler.MinLod, tObj->_MaxLevel - tObj->BaseLevel); state[I915_TEXREG_SS3] |= (unit << SS3_TEXTUREMAP_INDEX_SHIFT); state[I915_TEXREG_SS3] |= (U_FIXED(CLAMP(minlod, 0.0, 11.0), 4) << SS3_MIN_LOD_SHIFT); @@ -330,10 +330,10 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) } /* convert border color from float to ubyte */ - CLAMPED_FLOAT_TO_UBYTE(border[0], tObj->BorderColor.f[0]); - CLAMPED_FLOAT_TO_UBYTE(border[1], tObj->BorderColor.f[1]); - CLAMPED_FLOAT_TO_UBYTE(border[2], tObj->BorderColor.f[2]); - CLAMPED_FLOAT_TO_UBYTE(border[3], tObj->BorderColor.f[3]); + CLAMPED_FLOAT_TO_UBYTE(border[0], tObj->Sampler.BorderColor.f[0]); + CLAMPED_FLOAT_TO_UBYTE(border[1], tObj->Sampler.BorderColor.f[1]); + CLAMPED_FLOAT_TO_UBYTE(border[2], tObj->Sampler.BorderColor.f[2]); + CLAMPED_FLOAT_TO_UBYTE(border[3], tObj->Sampler.BorderColor.f[3]); if (firstImage->_BaseFormat == GL_DEPTH_COMPONENT) { /* GL specs that border color for depth textures is taken from the diff --git a/src/mesa/drivers/dri/i915/i915_vtbl.c b/src/mesa/drivers/dri/i915/i915_vtbl.c index 921183b81df..89650b618e4 100644 --- a/src/mesa/drivers/dri/i915/i915_vtbl.c +++ b/src/mesa/drivers/dri/i915/i915_vtbl.c @@ -260,9 +260,6 @@ get_state_size(struct i915_hw_state *state) if (dirty & I915_UPLOAD_STIPPLE) sz += sizeof(state->Stipple); - if (dirty & I915_UPLOAD_FOG) - sz += sizeof(state->Fog); - if (dirty & I915_UPLOAD_TEX_ALL) { int nr = 0; for (i = 0; i < I915_TEX_UNITS; i++) @@ -307,6 +304,10 @@ i915_emit_state(struct intel_context *intel) false); count = 0; again: + if (intel->batch.bo == NULL) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "i915 emit state"); + assert(0); + } aper_count = 0; dirty = get_dirty(state); @@ -425,12 +426,6 @@ i915_emit_state(struct intel_context *intel) emit(intel, state->Stipple, sizeof(state->Stipple)); } - if (dirty & I915_UPLOAD_FOG) { - if (INTEL_DEBUG & DEBUG_STATE) - fprintf(stderr, "I915_UPLOAD_FOG:\n"); - emit(intel, state->Fog, sizeof(state->Fog)); - } - /* Combine all the dirty texture state into a single command to * avoid lockups on I915 hardware. */ diff --git a/src/mesa/drivers/dri/i965/brw_cc.c b/src/mesa/drivers/dri/i965/brw_cc.c index 412d82ab3ca..74a66af31a5 100644 --- a/src/mesa/drivers/dri/i965/brw_cc.c +++ b/src/mesa/drivers/dri/i965/brw_cc.c @@ -238,10 +238,10 @@ static void upload_blend_constant_color(struct brw_context *brw) BEGIN_BATCH(5); OUT_BATCH(_3DSTATE_BLEND_CONSTANT_COLOR << 16 | (5-2)); - OUT_BATCH_F(ctx->Color.BlendColor[0]); - OUT_BATCH_F(ctx->Color.BlendColor[1]); - OUT_BATCH_F(ctx->Color.BlendColor[2]); - OUT_BATCH_F(ctx->Color.BlendColor[3]); + OUT_BATCH_F(ctx->Color.BlendColorUnclamped[0]); + OUT_BATCH_F(ctx->Color.BlendColorUnclamped[1]); + OUT_BATCH_F(ctx->Color.BlendColorUnclamped[2]); + OUT_BATCH_F(ctx->Color.BlendColorUnclamped[3]); CACHED_BATCH(); } diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index 9483ec69d96..230d326fa12 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -182,9 +182,21 @@ GLboolean brwCreateContext( int api, /* WM maximum threads is number of EUs times number of threads per EU. */ if (intel->gen >= 6) { - brw->urb.size = 1024; - brw->vs_max_threads = 60; - brw->wm_max_threads = 80; + if (IS_GT2(intel->intelScreen->deviceID)) { + /* This could possibly be 80, but is supposed to require + * disabling of WIZ hashing (bit 6 of GT_MODE, 0x20d0) and a + * GPU reset to change. + */ + brw->wm_max_threads = 40; + brw->vs_max_threads = 60; + brw->urb.size = 64; /* volume 5c.5 section 5.1 */ + brw->urb.max_vs_handles = 128; /* volume 2a (see 3DSTATE_URB) */ + } else { + brw->wm_max_threads = 40; + brw->vs_max_threads = 24; + brw->urb.size = 32; /* volume 5c.5 section 5.1 */ + brw->urb.max_vs_handles = 256; /* volume 2a (see 3DSTATE_URB) */ + } } else if (intel->gen == 5) { brw->urb.size = 1024; brw->vs_max_threads = 72; diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h index 7b0551a92bc..1daa49abfb3 100644 --- a/src/mesa/drivers/dri/i965/brw_context.h +++ b/src/mesa/drivers/dri/i965/brw_context.h @@ -139,7 +139,7 @@ struct brw_context; * by any 3D rendering. */ #define BRW_NEW_BATCH 0x10000 -/** brw->depth_region updated */ +/** \see brw.state.depth_region */ #define BRW_NEW_DEPTH_BUFFER 0x20000 #define BRW_NEW_NR_WM_SURFACES 0x40000 #define BRW_NEW_NR_VS_SURFACES 0x80000 @@ -464,8 +464,27 @@ struct brw_context struct { struct brw_state_flags dirty; + /** + * \name Cached region pointers + * + * When the draw buffer is updated, often the depth buffer is not + * changed. Caching the pointer to the buffer's region allows us to + * detect when the buffer has in fact changed, and allows us to avoid + * updating the buffer's GPU state when it has not. + * + * The original of each cached pointer is an instance of + * \c intel_renderbuffer.region. + * + * \see brw_set_draw_region() + * + * \{ + */ + + /** \see struct brw_tracked_state brw_depthbuffer */ struct intel_region *depth_region; + /** \} */ + /** * List of buffers accumulated in brw_validate_state to receive * drm_intel_bo_check_aperture treatment before exec, so we can @@ -549,18 +568,21 @@ struct brw_context GLboolean constrained; + GLuint max_vs_handles; /* Maximum number of VS handles */ + GLuint max_gs_handles; /* Maximum number of GS handles */ + GLuint nr_vs_entries; GLuint nr_gs_entries; GLuint nr_clip_entries; GLuint nr_sf_entries; GLuint nr_cs_entries; - /* gen6 */ + /* gen6: + * The length of each URB entry owned by the VS (or GS), as + * a number of 1024-bit (128-byte) rows. Should be >= 1. + */ GLuint vs_size; -/* GLuint gs_size; */ -/* GLuint clip_size; */ -/* GLuint sf_size; */ -/* GLuint cs_size; */ + GLuint gs_size; GLuint vs_start; GLuint gs_start; @@ -639,7 +661,9 @@ struct brw_context drm_intel_bo *prog_bo; drm_intel_bo *state_bo; + uint32_t state_offset; drm_intel_bo *vp_bo; + uint32_t vp_offset; } sf; struct { diff --git a/src/mesa/drivers/dri/i965/brw_defines.h b/src/mesa/drivers/dri/i965/brw_defines.h index 6c61aefd7d3..effcb6c1c4a 100644 --- a/src/mesa/drivers/dri/i965/brw_defines.h +++ b/src/mesa/drivers/dri/i965/brw_defines.h @@ -43,6 +43,12 @@ #define PIPE_CONTROL_GTTWRITE_PROCESS_LOCAL 0x00 #define PIPE_CONTROL_GTTWRITE_GLOBAL 0x01 +#define CMD_3D_PRIM 0x7b00 /* 3DPRIMITIVE */ +/* DW0 */ +# define GEN4_3DPRIM_TOPOLOGY_TYPE_SHIFT 10 +# define GEN4_3DPRIM_VERTEXBUFFER_ACCESS_SEQUENTIAL (0 << 15) +# define GEN4_3DPRIM_VERTEXBUFFER_ACCESS_RANDOM (1 << 15) + #define _3DPRIM_POINTLIST 0x01 #define _3DPRIM_LINELIST 0x02 #define _3DPRIM_LINESTRIP 0x03 @@ -65,9 +71,6 @@ #define _3DPRIM_LINESTRIP_CONT_BF 0x14 #define _3DPRIM_TRIFAN_NOSTIPPLE 0x15 -#define _3DPRIM_VERTEXBUFFER_ACCESS_SEQUENTIAL 0 -#define _3DPRIM_VERTEXBUFFER_ACCESS_RANDOM 1 - #define BRW_ANISORATIO_2 0 #define BRW_ANISORATIO_4 1 #define BRW_ANISORATIO_6 2 @@ -147,6 +150,7 @@ #define BRW_DEPTHFORMAT_D32_FLOAT_S8X24_UINT 0 #define BRW_DEPTHFORMAT_D32_FLOAT 1 #define BRW_DEPTHFORMAT_D24_UNORM_S8_UINT 2 +#define BRW_DEPTHFORMAT_D24_UNORM_X8_UINT 3 /* GEN5 */ #define BRW_DEPTHFORMAT_D16_UNORM 5 #define BRW_FLOATING_POINT_IEEE_754 0 @@ -1131,8 +1135,6 @@ #define CMD_PIPE_CONTROL 0x7a00 -#define CMD_3D_PRIM 0x7b00 - #define CMD_MI_FLUSH 0x0200 diff --git a/src/mesa/drivers/dri/i965/brw_draw.c b/src/mesa/drivers/dri/i965/brw_draw.c index f5abe021c43..2db70c543ea 100644 --- a/src/mesa/drivers/dri/i965/brw_draw.c +++ b/src/mesa/drivers/dri/i965/brw_draw.c @@ -129,30 +129,31 @@ static void brw_emit_prim(struct brw_context *brw, const struct _mesa_prim *prim, uint32_t hw_prim) { - struct brw_3d_primitive prim_packet; struct intel_context *intel = &brw->intel; + int verts_per_instance; + int vertex_access_type; + int start_vertex_location; + int base_vertex_location; DBG("PRIM: %s %d %d\n", _mesa_lookup_enum_by_nr(prim->mode), prim->start, prim->count); - prim_packet.header.opcode = CMD_3D_PRIM; - prim_packet.header.length = sizeof(prim_packet)/4 - 2; - prim_packet.header.pad = 0; - prim_packet.header.topology = hw_prim; - prim_packet.header.indexed = prim->indexed; - - prim_packet.verts_per_instance = trim(prim->mode, prim->count); - prim_packet.start_vert_location = prim->start; - if (prim->indexed) - prim_packet.start_vert_location += brw->ib.start_vertex_offset; - else - prim_packet.start_vert_location += brw->vb.start_vertex_bias; - prim_packet.instance_count = 1; - prim_packet.start_instance_location = 0; - prim_packet.base_vert_location = prim->basevertex; - if (prim->indexed) - prim_packet.base_vert_location += brw->vb.start_vertex_bias; + start_vertex_location = prim->start; + base_vertex_location = prim->basevertex; + if (prim->indexed) { + vertex_access_type = GEN4_3DPRIM_VERTEXBUFFER_ACCESS_RANDOM; + start_vertex_location += brw->ib.start_vertex_offset; + base_vertex_location += brw->vb.start_vertex_bias; + } else { + vertex_access_type = GEN4_3DPRIM_VERTEXBUFFER_ACCESS_SEQUENTIAL; + start_vertex_location += brw->vb.start_vertex_bias; + } + + verts_per_instance = trim(prim->mode, prim->count); + /* If nothing to emit, just return. */ + if (verts_per_instance == 0) + return; /* If we're set to always flush, do it before and after the primitive emit. * We want to catch both missed flushes that hurt instruction/state cache @@ -162,10 +163,18 @@ static void brw_emit_prim(struct brw_context *brw, if (intel->always_flush_cache) { intel_batchbuffer_emit_mi_flush(intel); } - if (prim_packet.verts_per_instance) { - intel_batchbuffer_data(&brw->intel, &prim_packet, - sizeof(prim_packet), false); - } + + BEGIN_BATCH(6); + OUT_BATCH(CMD_3D_PRIM << 16 | (6 - 2) | + hw_prim << GEN4_3DPRIM_TOPOLOGY_TYPE_SHIFT | + vertex_access_type); + OUT_BATCH(verts_per_instance); + OUT_BATCH(start_vertex_location); + OUT_BATCH(1); // instance count + OUT_BATCH(0); // start instance location + OUT_BATCH(base_vertex_location); + ADVANCE_BATCH(); + if (intel->always_flush_cache) { intel_batchbuffer_emit_mi_flush(intel); } @@ -271,20 +280,20 @@ static GLboolean check_fallbacks( struct brw_context *brw, struct gl_texture_unit *texUnit = &ctx->Texture.Unit[u]; if (texUnit->Enabled) { if (texUnit->Enabled & TEXTURE_1D_BIT) { - if (texUnit->CurrentTex[TEXTURE_1D_INDEX]->WrapS == GL_CLAMP) { + if (texUnit->CurrentTex[TEXTURE_1D_INDEX]->Sampler.WrapS == GL_CLAMP) { return GL_TRUE; } } if (texUnit->Enabled & TEXTURE_2D_BIT) { - if (texUnit->CurrentTex[TEXTURE_2D_INDEX]->WrapS == GL_CLAMP || - texUnit->CurrentTex[TEXTURE_2D_INDEX]->WrapT == GL_CLAMP) { + if (texUnit->CurrentTex[TEXTURE_2D_INDEX]->Sampler.WrapS == GL_CLAMP || + texUnit->CurrentTex[TEXTURE_2D_INDEX]->Sampler.WrapT == GL_CLAMP) { return GL_TRUE; } } if (texUnit->Enabled & TEXTURE_3D_BIT) { - if (texUnit->CurrentTex[TEXTURE_3D_INDEX]->WrapS == GL_CLAMP || - texUnit->CurrentTex[TEXTURE_3D_INDEX]->WrapT == GL_CLAMP || - texUnit->CurrentTex[TEXTURE_3D_INDEX]->WrapR == GL_CLAMP) { + if (texUnit->CurrentTex[TEXTURE_3D_INDEX]->Sampler.WrapS == GL_CLAMP || + texUnit->CurrentTex[TEXTURE_3D_INDEX]->Sampler.WrapT == GL_CLAMP || + texUnit->CurrentTex[TEXTURE_3D_INDEX]->Sampler.WrapR == GL_CLAMP) { return GL_TRUE; } } diff --git a/src/mesa/drivers/dri/i965/brw_draw_upload.c b/src/mesa/drivers/dri/i965/brw_draw_upload.c index f1d00693168..9389eb6733f 100644 --- a/src/mesa/drivers/dri/i965/brw_draw_upload.c +++ b/src/mesa/drivers/dri/i965/brw_draw_upload.c @@ -575,7 +575,7 @@ static void brw_emit_vertices(struct brw_context *brw) if (intel->gen >= 5) { OUT_RELOC(buffer->bo, I915_GEM_DOMAIN_VERTEX, 0, buffer->bo->size - 1); } else - OUT_BATCH(buffer->bo->size / buffer->stride); + OUT_BATCH(0); OUT_BATCH(0); /* Instance data step rate */ brw->vb.current_buffers[i].handle = buffer->bo->handle; diff --git a/src/mesa/drivers/dri/i965/brw_eu.c b/src/mesa/drivers/dri/i965/brw_eu.c index 3b5c4c071e3..7e63482d8fa 100644 --- a/src/mesa/drivers/dri/i965/brw_eu.c +++ b/src/mesa/drivers/dri/i965/brw_eu.c @@ -34,6 +34,28 @@ #include "brw_defines.h" #include "brw_eu.h" +/* Returns the corresponding conditional mod for swapping src0 and + * src1 in e.g. CMP. + */ +uint32_t +brw_swap_cmod(uint32_t cmod) +{ + switch (cmod) { + case BRW_CONDITIONAL_Z: + case BRW_CONDITIONAL_NZ: + return cmod; + case BRW_CONDITIONAL_G: + return BRW_CONDITIONAL_LE; + case BRW_CONDITIONAL_GE: + return BRW_CONDITIONAL_L; + case BRW_CONDITIONAL_L: + return BRW_CONDITIONAL_GE; + case BRW_CONDITIONAL_LE: + return BRW_CONDITIONAL_G; + default: + return ~0; + } +} /* How does predicate control work when execution_size != 8? Do I @@ -60,6 +82,11 @@ void brw_set_predicate_control( struct brw_compile *p, GLuint pc ) p->current->header.predicate_control = pc; } +void brw_set_predicate_inverse(struct brw_compile *p, bool predicate_inverse) +{ + p->current->header.predicate_inverse = predicate_inverse; +} + void brw_set_conditionalmod( struct brw_compile *p, GLuint conditional ) { p->current->header.destreg__conditionalmod = conditional; diff --git a/src/mesa/drivers/dri/i965/brw_eu.h b/src/mesa/drivers/dri/i965/brw_eu.h index 2d2ed9de985..718b3800423 100644 --- a/src/mesa/drivers/dri/i965/brw_eu.h +++ b/src/mesa/drivers/dri/i965/brw_eu.h @@ -772,6 +772,7 @@ void brw_set_access_mode( struct brw_compile *p, GLuint access_mode ); void brw_set_compression_control( struct brw_compile *p, GLboolean control ); void brw_set_predicate_control_flag_value( struct brw_compile *p, GLuint value ); void brw_set_predicate_control( struct brw_compile *p, GLuint pc ); +void brw_set_predicate_inverse(struct brw_compile *p, bool predicate_inverse); void brw_set_conditionalmod( struct brw_compile *p, GLuint conditional ); void brw_set_acc_write_control(struct brw_compile *p, GLuint value); @@ -1017,6 +1018,8 @@ void brw_set_src1( struct brw_instruction *insn, void brw_set_uip_jip(struct brw_compile *p); +uint32_t brw_swap_cmod(uint32_t cmod); + /* brw_optimize.c */ void brw_optimize(struct brw_compile *p); void brw_remove_duplicate_mrf_moves(struct brw_compile *p); diff --git a/src/mesa/drivers/dri/i965/brw_eu_emit.c b/src/mesa/drivers/dri/i965/brw_eu_emit.c index 21ce92c9173..71485cd1f71 100644 --- a/src/mesa/drivers/dri/i965/brw_eu_emit.c +++ b/src/mesa/drivers/dri/i965/brw_eu_emit.c @@ -52,6 +52,34 @@ static void guess_execution_size(struct brw_compile *p, } +/** + * Prior to Sandybridge, the SEND instruction accepted non-MRF source + * registers, implicitly moving the operand to a message register. + * + * On Sandybridge, this is no longer the case. This function performs the + * explicit move; it should be called before emitting a SEND instruction. + */ +static void +gen6_resolve_implied_move(struct brw_compile *p, + struct brw_reg *src, + GLuint msg_reg_nr) +{ + struct intel_context *intel = &p->brw->intel; + if (intel->gen != 6) + return; + + if (src->file != BRW_ARCHITECTURE_REGISTER_FILE || src->nr != BRW_ARF_NULL) { + brw_push_insn_state(p); + brw_set_mask_control(p, BRW_MASK_DISABLE); + brw_set_compression_control(p, BRW_COMPRESSION_NONE); + brw_MOV(p, retype(brw_message_reg(msg_reg_nr), BRW_REGISTER_TYPE_UD), + retype(*src, BRW_REGISTER_TYPE_UD)); + brw_pop_insn_state(p); + } + *src = brw_message_reg(msg_reg_nr); +} + + static void brw_set_dest(struct brw_compile *p, struct brw_instruction *insn, struct brw_reg dest) @@ -468,10 +496,9 @@ static void brw_set_dp_write_message( struct brw_context *brw, insn->bits3.dp_render_cache.response_length = response_length; insn->bits3.dp_render_cache.msg_length = msg_length; insn->bits3.dp_render_cache.end_of_thread = end_of_thread; + + /* We always use the render cache for write messages */ insn->header.destreg__conditionalmod = BRW_MESSAGE_TARGET_DATAPORT_WRITE; - /* XXX really need below? */ - insn->bits2.send_gen5.sfid = BRW_MESSAGE_TARGET_DATAPORT_WRITE; - insn->bits2.send_gen5.end_of_thread = end_of_thread; } else if (intel->gen == 5) { insn->bits3.dp_write_gen5.binding_table_index = binding_table_index; insn->bits3.dp_write_gen5.msg_control = msg_control; @@ -511,6 +538,13 @@ brw_set_dp_read_message(struct brw_context *brw, brw_set_src1(insn, brw_imm_d(0)); if (intel->gen >= 6) { + uint32_t target_function; + + if (target_cache == BRW_DATAPORT_READ_TARGET_DATA_CACHE) + target_function = BRW_MESSAGE_TARGET_DATAPORT_READ; /* data cache */ + else + target_function = BRW_MESSAGE_TARGET_DATAPORT_WRITE; /* render cache */ + insn->bits3.dp_render_cache.binding_table_index = binding_table_index; insn->bits3.dp_render_cache.msg_control = msg_control; insn->bits3.dp_render_cache.pixel_scoreboard_clear = 0; @@ -520,10 +554,7 @@ brw_set_dp_read_message(struct brw_context *brw, insn->bits3.dp_render_cache.response_length = response_length; insn->bits3.dp_render_cache.msg_length = msg_length; insn->bits3.dp_render_cache.end_of_thread = 0; - insn->header.destreg__conditionalmod = BRW_MESSAGE_TARGET_DATAPORT_READ; - /* XXX really need below? */ - insn->bits2.send_gen5.sfid = BRW_MESSAGE_TARGET_DATAPORT_READ; - insn->bits2.send_gen5.end_of_thread = 0; + insn->header.destreg__conditionalmod = target_function; } else if (intel->gen == 5) { insn->bits3.dp_read_gen5.binding_table_index = binding_table_index; insn->bits3.dp_read_gen5.msg_control = msg_control; @@ -1458,9 +1489,12 @@ void brw_oword_block_write_scratch(struct brw_compile *p, GLuint offset) { struct intel_context *intel = &p->brw->intel; - uint32_t msg_control; + uint32_t msg_control, msg_type; int mlen; + if (intel->gen >= 6) + offset /= 16; + mrf = retype(mrf, BRW_REGISTER_TYPE_UD); if (num_regs == 1) { @@ -1526,13 +1560,22 @@ void brw_oword_block_write_scratch(struct brw_compile *p, } brw_set_dest(p, insn, dest); - brw_set_src0(insn, brw_null_reg()); + if (intel->gen >= 6) { + brw_set_src0(insn, mrf); + } else { + brw_set_src0(insn, brw_null_reg()); + } + + if (intel->gen >= 6) + msg_type = GEN6_DATAPORT_WRITE_MESSAGE_OWORD_BLOCK_WRITE; + else + msg_type = BRW_DATAPORT_WRITE_MESSAGE_OWORD_BLOCK_WRITE; brw_set_dp_write_message(p->brw, insn, 255, /* binding table index (255=stateless) */ msg_control, - BRW_DATAPORT_WRITE_MESSAGE_OWORD_BLOCK_WRITE, /* msg_type */ + msg_type, mlen, GL_TRUE, /* header_present */ 0, /* pixel scoreboard */ @@ -1557,9 +1600,13 @@ brw_oword_block_read_scratch(struct brw_compile *p, int num_regs, GLuint offset) { + struct intel_context *intel = &p->brw->intel; uint32_t msg_control; int rlen; + if (intel->gen >= 6) + offset /= 16; + mrf = retype(mrf, BRW_REGISTER_TYPE_UD); dest = retype(dest, BRW_REGISTER_TYPE_UW); @@ -1596,14 +1643,18 @@ brw_oword_block_read_scratch(struct brw_compile *p, insn->header.destreg__conditionalmod = mrf.nr; brw_set_dest(p, insn, dest); /* UW? */ - brw_set_src0(insn, brw_null_reg()); + if (intel->gen >= 6) { + brw_set_src0(insn, mrf); + } else { + brw_set_src0(insn, brw_null_reg()); + } brw_set_dp_read_message(p->brw, insn, 255, /* binding table index (255=stateless) */ msg_control, BRW_DATAPORT_READ_MESSAGE_OWORD_BLOCK_READ, /* msg_type */ - 1, /* target cache (render/scratch) */ + BRW_DATAPORT_READ_TARGET_RENDER_CACHE, 1, /* msg_length */ rlen); } @@ -1771,6 +1822,7 @@ void brw_dp_READ_4_vs_relative(struct brw_compile *p, GLuint bind_table_index) { struct intel_context *intel = &p->brw->intel; + struct brw_reg src = brw_vec8_grf(0, 0); int msg_type; /* Setup MRF[1] with offset into const buffer */ @@ -1787,6 +1839,7 @@ void brw_dp_READ_4_vs_relative(struct brw_compile *p, addr_reg, brw_imm_d(offset)); brw_pop_insn_state(p); + gen6_resolve_implied_move(p, &src, 0); struct brw_instruction *insn = next_insn(p, BRW_OPCODE_SEND); insn->header.predicate_control = BRW_PREDICATE_NONE; @@ -1795,7 +1848,7 @@ void brw_dp_READ_4_vs_relative(struct brw_compile *p, insn->header.mask_control = BRW_MASK_DISABLE; brw_set_dest(p, insn, dest); - brw_set_src0(insn, brw_vec8_grf(0, 0)); + brw_set_src0(insn, src); if (intel->gen == 6) msg_type = GEN6_DATAPORT_READ_MESSAGE_OWORD_DUAL_BLOCK_READ; @@ -1809,7 +1862,7 @@ void brw_dp_READ_4_vs_relative(struct brw_compile *p, bind_table_index, BRW_DATAPORT_OWORD_DUAL_BLOCK_1OWORD, msg_type, - 0, /* source cache = data cache */ + BRW_DATAPORT_READ_TARGET_DATA_CACHE, 2, /* msg_length */ 1); /* response_length */ } @@ -1966,20 +2019,7 @@ void brw_SAMPLE(struct brw_compile *p, { struct brw_instruction *insn; - /* Sandybridge doesn't have the implied move for SENDs, - * and the first message register index comes from src0. - */ - if (intel->gen >= 6) { - if (src0.file != BRW_ARCHITECTURE_REGISTER_FILE || - src0.nr != BRW_ARF_NULL) { - brw_push_insn_state(p); - brw_set_mask_control( p, BRW_MASK_DISABLE ); - brw_set_compression_control(p, BRW_COMPRESSION_NONE); - brw_MOV(p, retype(brw_message_reg(msg_reg_nr), src0.type), src0); - brw_pop_insn_state(p); - } - src0 = brw_message_reg(msg_reg_nr); - } + gen6_resolve_implied_move(p, &src0, msg_reg_nr); insn = next_insn(p, BRW_OPCODE_SEND); insn->header.predicate_control = 0; /* XXX */ @@ -2034,17 +2074,7 @@ void brw_urb_WRITE(struct brw_compile *p, struct intel_context *intel = &p->brw->intel; struct brw_instruction *insn; - /* Sandybridge doesn't have the implied move for SENDs, - * and the first message register index comes from src0. - */ - if (intel->gen >= 6) { - brw_push_insn_state(p); - brw_set_mask_control( p, BRW_MASK_DISABLE ); - brw_MOV(p, retype(brw_message_reg(msg_reg_nr), BRW_REGISTER_TYPE_UD), - retype(src0, BRW_REGISTER_TYPE_UD)); - brw_pop_insn_state(p); - src0 = brw_message_reg(msg_reg_nr); - } + gen6_resolve_implied_move(p, &src0, msg_reg_nr); insn = next_insn(p, BRW_OPCODE_SEND); @@ -2154,17 +2184,7 @@ void brw_ff_sync(struct brw_compile *p, struct intel_context *intel = &p->brw->intel; struct brw_instruction *insn; - /* Sandybridge doesn't have the implied move for SENDs, - * and the first message register index comes from src0. - */ - if (intel->gen >= 6) { - brw_push_insn_state(p); - brw_set_mask_control( p, BRW_MASK_DISABLE ); - brw_MOV(p, retype(brw_message_reg(msg_reg_nr), BRW_REGISTER_TYPE_UD), - retype(src0, BRW_REGISTER_TYPE_UD)); - brw_pop_insn_state(p); - src0 = brw_message_reg(msg_reg_nr); - } + gen6_resolve_implied_move(p, &src0, msg_reg_nr); insn = next_insn(p, BRW_OPCODE_SEND); brw_set_dest(p, insn, dest); diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index 8b3f5adb9f9..5426925e372 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -177,6 +177,23 @@ type_size(const struct glsl_type *type) } } +void +fs_visitor::fail(const char *format, ...) +{ + if (!failed) { + failed = true; + + if (INTEL_DEBUG & DEBUG_WM) { + fprintf(stderr, "FS compile failed: "); + + va_list va; + va_start(va, format); + vfprintf(stderr, format, va); + va_end(va); + } + } +} + /** * Returns how many MRFs an FS opcode will write over. * @@ -382,60 +399,32 @@ fs_visitor::setup_uniform_values(int loc, const glsl_type *type) void fs_visitor::setup_builtin_uniform_values(ir_variable *ir) { - const struct gl_builtin_uniform_desc *statevar = NULL; - - for (unsigned int i = 0; _mesa_builtin_uniform_desc[i].name; i++) { - statevar = &_mesa_builtin_uniform_desc[i]; - if (strcmp(ir->name, _mesa_builtin_uniform_desc[i].name) == 0) - break; - } - - if (!statevar->name) { - this->fail = true; - printf("Failed to find builtin uniform `%s'\n", ir->name); - return; - } - - int array_count; - if (ir->type->is_array()) { - array_count = ir->type->length; - } else { - array_count = 1; - } + const ir_state_slot *const slots = ir->state_slots; + assert(ir->state_slots != NULL); - for (int a = 0; a < array_count; a++) { - for (unsigned int i = 0; i < statevar->num_elements; i++) { - struct gl_builtin_uniform_element *element = &statevar->elements[i]; - int tokens[STATE_LENGTH]; - - memcpy(tokens, element->tokens, sizeof(element->tokens)); - if (ir->type->is_array()) { - tokens[1] = a; - } - - /* This state reference has already been setup by ir_to_mesa, - * but we'll get the same index back here. - */ - int index = _mesa_add_state_reference(this->fp->Base.Parameters, - (gl_state_index *)tokens); + for (unsigned int i = 0; i < ir->num_state_slots; i++) { + /* This state reference has already been setup by ir_to_mesa, but we'll + * get the same index back here. + */ + int index = _mesa_add_state_reference(this->fp->Base.Parameters, + (gl_state_index *)slots[i].tokens); - /* Add each of the unique swizzles of the element as a - * parameter. This'll end up matching the expected layout of - * the array/matrix/structure we're trying to fill in. - */ - int last_swiz = -1; - for (unsigned int i = 0; i < 4; i++) { - int swiz = GET_SWZ(element->swizzle, i); - if (swiz == last_swiz) - break; - last_swiz = swiz; + /* Add each of the unique swizzles of the element as a parameter. + * This'll end up matching the expected layout of the + * array/matrix/structure we're trying to fill in. + */ + int last_swiz = -1; + for (unsigned int j = 0; j < 4; j++) { + int swiz = GET_SWZ(slots[i].swizzle, j); + if (swiz == last_swiz) + break; + last_swiz = swiz; - c->prog_data.param_convert[c->prog_data.nr_params] = - PARAM_NO_CONVERT; - this->param_index[c->prog_data.nr_params] = index; - this->param_offset[c->prog_data.nr_params] = swiz; - c->prog_data.nr_params++; - } + c->prog_data.param_convert[c->prog_data.nr_params] = + PARAM_NO_CONVERT; + this->param_index[c->prog_data.nr_params] = index; + this->param_offset[c->prog_data.nr_params] = swiz; + c->prog_data.nr_params++; } } } @@ -451,15 +440,15 @@ fs_visitor::emit_fragcoord_interpolation(ir_variable *ir) /* gl_FragCoord.x */ if (ir->pixel_center_integer) { - emit(fs_inst(BRW_OPCODE_MOV, wpos, this->pixel_x)); + emit(BRW_OPCODE_MOV, wpos, this->pixel_x); } else { - emit(fs_inst(BRW_OPCODE_ADD, wpos, this->pixel_x, fs_reg(0.5f))); + emit(BRW_OPCODE_ADD, wpos, this->pixel_x, fs_reg(0.5f)); } wpos.reg_offset++; /* gl_FragCoord.y */ if (!flip && ir->pixel_center_integer) { - emit(fs_inst(BRW_OPCODE_MOV, wpos, this->pixel_y)); + emit(BRW_OPCODE_MOV, wpos, this->pixel_y); } else { fs_reg pixel_y = this->pixel_y; float offset = (ir->pixel_center_integer ? 0.0 : 0.5); @@ -469,22 +458,22 @@ fs_visitor::emit_fragcoord_interpolation(ir_variable *ir) offset += c->key.drawable_height - 1.0; } - emit(fs_inst(BRW_OPCODE_ADD, wpos, pixel_y, fs_reg(offset))); + emit(BRW_OPCODE_ADD, wpos, pixel_y, fs_reg(offset)); } wpos.reg_offset++; /* gl_FragCoord.z */ if (intel->gen >= 6) { - emit(fs_inst(BRW_OPCODE_MOV, wpos, - fs_reg(brw_vec8_grf(c->source_depth_reg, 0)))); + emit(BRW_OPCODE_MOV, wpos, + fs_reg(brw_vec8_grf(c->source_depth_reg, 0))); } else { - emit(fs_inst(FS_OPCODE_LINTERP, wpos, this->delta_x, this->delta_y, - interp_reg(FRAG_ATTRIB_WPOS, 2))); + emit(FS_OPCODE_LINTERP, wpos, this->delta_x, this->delta_y, + interp_reg(FRAG_ATTRIB_WPOS, 2)); } wpos.reg_offset++; /* gl_FragCoord.w: Already set up in emit_interpolation */ - emit(fs_inst(BRW_OPCODE_MOV, wpos, this->wpos_w)); + emit(BRW_OPCODE_MOV, wpos, this->wpos_w); return reg; } @@ -503,7 +492,7 @@ fs_visitor::emit_general_interpolation(ir_variable *ir) if (ir->type->is_array()) { array_elements = ir->type->length; if (array_elements == 0) { - this->fail = true; + fail("dereferenced array '%s' has length 0\n", ir->name); } type = ir->type->fields.array; } else { @@ -523,37 +512,33 @@ fs_visitor::emit_general_interpolation(ir_variable *ir) continue; } - if (c->key.flat_shade && (location == FRAG_ATTRIB_COL0 || - location == FRAG_ATTRIB_COL1)) { + bool is_gl_Color = + location == FRAG_ATTRIB_COL0 || location == FRAG_ATTRIB_COL1; + + if (c->key.flat_shade && is_gl_Color) { /* Constant interpolation (flat shading) case. The SF has * handed us defined values in only the constant offset * field of the setup reg. */ - for (unsigned int c = 0; c < type->vector_elements; c++) { - struct brw_reg interp = interp_reg(location, c); + for (unsigned int k = 0; k < type->vector_elements; k++) { + struct brw_reg interp = interp_reg(location, k); interp = suboffset(interp, 3); - emit(fs_inst(FS_OPCODE_CINTERP, attr, fs_reg(interp))); + emit(FS_OPCODE_CINTERP, attr, fs_reg(interp)); attr.reg_offset++; } } else { /* Perspective interpolation case. */ - for (unsigned int c = 0; c < type->vector_elements; c++) { - struct brw_reg interp = interp_reg(location, c); - emit(fs_inst(FS_OPCODE_LINTERP, - attr, - this->delta_x, - this->delta_y, - fs_reg(interp))); + for (unsigned int k = 0; k < type->vector_elements; k++) { + struct brw_reg interp = interp_reg(location, k); + emit(FS_OPCODE_LINTERP, attr, + this->delta_x, this->delta_y, fs_reg(interp)); attr.reg_offset++; } - if (intel->gen < 6) { + if (intel->gen < 6 && !(is_gl_Color && c->key.linear_color)) { attr.reg_offset -= type->vector_elements; - for (unsigned int c = 0; c < type->vector_elements; c++) { - emit(fs_inst(BRW_OPCODE_MUL, - attr, - attr, - this->pixel_w)); + for (unsigned int k = 0; k < type->vector_elements; k++) { + emit(BRW_OPCODE_MUL, attr, attr, this->pixel_w); attr.reg_offset++; } } @@ -572,28 +557,21 @@ fs_visitor::emit_frontfacing_interpolation(ir_variable *ir) /* The frontfacing comes in as a bit in the thread payload. */ if (intel->gen >= 6) { - emit(fs_inst(BRW_OPCODE_ASR, - *reg, - fs_reg(retype(brw_vec1_grf(0, 0), BRW_REGISTER_TYPE_D)), - fs_reg(15))); - emit(fs_inst(BRW_OPCODE_NOT, - *reg, - *reg)); - emit(fs_inst(BRW_OPCODE_AND, - *reg, - *reg, - fs_reg(1))); + emit(BRW_OPCODE_ASR, *reg, + fs_reg(retype(brw_vec1_grf(0, 0), BRW_REGISTER_TYPE_D)), + fs_reg(15)); + emit(BRW_OPCODE_NOT, *reg, *reg); + emit(BRW_OPCODE_AND, *reg, *reg, fs_reg(1)); } else { struct brw_reg r1_6ud = retype(brw_vec1_grf(1, 6), BRW_REGISTER_TYPE_UD); /* bit 31 is "primitive is back face", so checking < (1 << 31) gives * us front face */ - fs_inst *inst = emit(fs_inst(BRW_OPCODE_CMP, - *reg, - fs_reg(r1_6ud), - fs_reg(1u << 31))); + fs_inst *inst = emit(BRW_OPCODE_CMP, *reg, + fs_reg(r1_6ud), + fs_reg(1u << 31)); inst->conditional_mod = BRW_CONDITIONAL_L; - emit(fs_inst(BRW_OPCODE_AND, *reg, *reg, fs_reg(1u))); + emit(BRW_OPCODE_AND, *reg, *reg, fs_reg(1u)); } return reg; @@ -628,11 +606,11 @@ fs_visitor::emit_math(fs_opcodes opcode, fs_reg dst, fs_reg src) src.abs || src.negate)) { fs_reg expanded = fs_reg(this, glsl_type::float_type); - emit(fs_inst(BRW_OPCODE_MOV, expanded, src)); + emit(BRW_OPCODE_MOV, expanded, src); src = expanded; } - fs_inst *inst = emit(fs_inst(opcode, dst, src)); + fs_inst *inst = emit(opcode, dst, src); if (intel->gen < 6) { inst->base_mrf = 2; @@ -658,20 +636,20 @@ fs_visitor::emit_math(fs_opcodes opcode, fs_reg dst, fs_reg src0, fs_reg src1) */ if (src0.file == UNIFORM || src0.abs || src0.negate) { fs_reg expanded = fs_reg(this, glsl_type::float_type); - emit(fs_inst(BRW_OPCODE_MOV, expanded, src0)); + emit(BRW_OPCODE_MOV, expanded, src0); src0 = expanded; } if (src1.file == UNIFORM || src1.abs || src1.negate) { fs_reg expanded = fs_reg(this, glsl_type::float_type); - emit(fs_inst(BRW_OPCODE_MOV, expanded, src1)); + emit(BRW_OPCODE_MOV, expanded, src1); src1 = expanded; } - inst = emit(fs_inst(opcode, dst, src0, src1)); + inst = emit(opcode, dst, src0, src1); } else { - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + 1), src1)); - inst = emit(fs_inst(opcode, dst, src0, reg_null_f)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + 1), src1); + inst = emit(opcode, dst, src0, reg_null_f); inst->base_mrf = base_mrf; inst->mlen = 2; @@ -788,7 +766,7 @@ fs_visitor::try_emit_saturate(ir_expression *ir) fs_reg src = this->result; this->result = fs_reg(this, ir->type); - fs_inst *inst = emit(fs_inst(BRW_OPCODE_MOV, this->result, src)); + fs_inst *inst = emit(BRW_OPCODE_MOV, this->result, src); inst->saturate = true; return true; @@ -834,9 +812,8 @@ fs_visitor::visit(ir_expression *ir) ir->operands[operand]->accept(this); if (this->result.file == BAD_FILE) { ir_print_visitor v; - printf("Failed to get tree for expression operand:\n"); + fail("Failed to get tree for expression operand:\n"); ir->operands[operand]->accept(&v); - this->fail = true; } op[operand] = this->result; @@ -859,7 +836,7 @@ fs_visitor::visit(ir_expression *ir) /* Note that BRW_OPCODE_NOT is not appropriate here, since it is * ones complement of the whole register, not just bit 0. */ - emit(fs_inst(BRW_OPCODE_XOR, this->result, op[0], fs_reg(1))); + emit(BRW_OPCODE_XOR, this->result, op[0], fs_reg(1)); break; case ir_unop_neg: op[0].negate = !op[0].negate; @@ -873,16 +850,16 @@ fs_visitor::visit(ir_expression *ir) case ir_unop_sign: temp = fs_reg(this, ir->type); - emit(fs_inst(BRW_OPCODE_MOV, this->result, fs_reg(0.0f))); + emit(BRW_OPCODE_MOV, this->result, fs_reg(0.0f)); - inst = emit(fs_inst(BRW_OPCODE_CMP, reg_null_f, op[0], fs_reg(0.0f))); + inst = emit(BRW_OPCODE_CMP, reg_null_f, op[0], fs_reg(0.0f)); inst->conditional_mod = BRW_CONDITIONAL_G; - inst = emit(fs_inst(BRW_OPCODE_MOV, this->result, fs_reg(1.0f))); + inst = emit(BRW_OPCODE_MOV, this->result, fs_reg(1.0f)); inst->predicated = true; - inst = emit(fs_inst(BRW_OPCODE_CMP, reg_null_f, op[0], fs_reg(0.0f))); + inst = emit(BRW_OPCODE_CMP, reg_null_f, op[0], fs_reg(0.0f)); inst->conditional_mod = BRW_CONDITIONAL_L; - inst = emit(fs_inst(BRW_OPCODE_MOV, this->result, fs_reg(-1.0f))); + inst = emit(BRW_OPCODE_MOV, this->result, fs_reg(-1.0f)); inst->predicated = true; break; @@ -910,21 +887,21 @@ fs_visitor::visit(ir_expression *ir) break; case ir_unop_dFdx: - emit(fs_inst(FS_OPCODE_DDX, this->result, op[0])); + emit(FS_OPCODE_DDX, this->result, op[0]); break; case ir_unop_dFdy: - emit(fs_inst(FS_OPCODE_DDY, this->result, op[0])); + emit(FS_OPCODE_DDY, this->result, op[0]); break; case ir_binop_add: - emit(fs_inst(BRW_OPCODE_ADD, this->result, op[0], op[1])); + emit(BRW_OPCODE_ADD, this->result, op[0], op[1]); break; case ir_binop_sub: assert(!"not reached: should be handled by ir_sub_to_add_neg"); break; case ir_binop_mul: - emit(fs_inst(BRW_OPCODE_MUL, this->result, op[0], op[1])); + emit(BRW_OPCODE_MUL, this->result, op[0], op[1]); break; case ir_binop_div: assert(!"not reached: should be handled by ir_div_to_mul_rcp"); @@ -946,21 +923,21 @@ fs_visitor::visit(ir_expression *ir) if (intel->gen < 5) temp.type = op[0].type; - inst = emit(fs_inst(BRW_OPCODE_CMP, temp, op[0], op[1])); + inst = emit(BRW_OPCODE_CMP, temp, op[0], op[1]); inst->conditional_mod = brw_conditional_for_comparison(ir->operation); - emit(fs_inst(BRW_OPCODE_AND, this->result, this->result, fs_reg(0x1))); + emit(BRW_OPCODE_AND, this->result, this->result, fs_reg(0x1)); break; case ir_binop_logic_xor: - emit(fs_inst(BRW_OPCODE_XOR, this->result, op[0], op[1])); + emit(BRW_OPCODE_XOR, this->result, op[0], op[1]); break; case ir_binop_logic_or: - emit(fs_inst(BRW_OPCODE_OR, this->result, op[0], op[1])); + emit(BRW_OPCODE_OR, this->result, op[0], op[1]); break; case ir_binop_logic_and: - emit(fs_inst(BRW_OPCODE_AND, this->result, op[0], op[1])); + emit(BRW_OPCODE_AND, this->result, op[0], op[1]); break; case ir_binop_dot: @@ -988,7 +965,7 @@ fs_visitor::visit(ir_expression *ir) case ir_unop_b2f: case ir_unop_b2i: case ir_unop_f2i: - emit(fs_inst(BRW_OPCODE_MOV, this->result, op[0])); + emit(BRW_OPCODE_MOV, this->result, op[0]); break; case ir_unop_f2b: case ir_unop_i2b: @@ -997,42 +974,41 @@ fs_visitor::visit(ir_expression *ir) if (intel->gen < 5) temp.type = op[0].type; - inst = emit(fs_inst(BRW_OPCODE_CMP, temp, op[0], fs_reg(0.0f))); + inst = emit(BRW_OPCODE_CMP, temp, op[0], fs_reg(0.0f)); inst->conditional_mod = BRW_CONDITIONAL_NZ; - inst = emit(fs_inst(BRW_OPCODE_AND, this->result, - this->result, fs_reg(1))); + inst = emit(BRW_OPCODE_AND, this->result, this->result, fs_reg(1)); break; case ir_unop_trunc: - emit(fs_inst(BRW_OPCODE_RNDZ, this->result, op[0])); + emit(BRW_OPCODE_RNDZ, this->result, op[0]); break; case ir_unop_ceil: op[0].negate = !op[0].negate; - inst = emit(fs_inst(BRW_OPCODE_RNDD, this->result, op[0])); + inst = emit(BRW_OPCODE_RNDD, this->result, op[0]); this->result.negate = true; break; case ir_unop_floor: - inst = emit(fs_inst(BRW_OPCODE_RNDD, this->result, op[0])); + inst = emit(BRW_OPCODE_RNDD, this->result, op[0]); break; case ir_unop_fract: - inst = emit(fs_inst(BRW_OPCODE_FRC, this->result, op[0])); + inst = emit(BRW_OPCODE_FRC, this->result, op[0]); break; case ir_unop_round_even: - emit(fs_inst(BRW_OPCODE_RNDE, this->result, op[0])); + emit(BRW_OPCODE_RNDE, this->result, op[0]); break; case ir_binop_min: - inst = emit(fs_inst(BRW_OPCODE_CMP, this->result, op[0], op[1])); + inst = emit(BRW_OPCODE_CMP, this->result, op[0], op[1]); inst->conditional_mod = BRW_CONDITIONAL_L; - inst = emit(fs_inst(BRW_OPCODE_SEL, this->result, op[0], op[1])); + inst = emit(BRW_OPCODE_SEL, this->result, op[0], op[1]); inst->predicated = true; break; case ir_binop_max: - inst = emit(fs_inst(BRW_OPCODE_CMP, this->result, op[0], op[1])); + inst = emit(BRW_OPCODE_CMP, this->result, op[0], op[1]); inst->conditional_mod = BRW_CONDITIONAL_G; - inst = emit(fs_inst(BRW_OPCODE_SEL, this->result, op[0], op[1])); + inst = emit(BRW_OPCODE_SEL, this->result, op[0], op[1]); inst->predicated = true; break; @@ -1041,16 +1017,16 @@ fs_visitor::visit(ir_expression *ir) break; case ir_unop_bit_not: - inst = emit(fs_inst(BRW_OPCODE_NOT, this->result, op[0])); + inst = emit(BRW_OPCODE_NOT, this->result, op[0]); break; case ir_binop_bit_and: - inst = emit(fs_inst(BRW_OPCODE_AND, this->result, op[0], op[1])); + inst = emit(BRW_OPCODE_AND, this->result, op[0], op[1]); break; case ir_binop_bit_xor: - inst = emit(fs_inst(BRW_OPCODE_XOR, this->result, op[0], op[1])); + inst = emit(BRW_OPCODE_XOR, this->result, op[0], op[1]); break; case ir_binop_bit_or: - inst = emit(fs_inst(BRW_OPCODE_OR, this->result, op[0], op[1])); + inst = emit(BRW_OPCODE_OR, this->result, op[0], op[1]); break; case ir_unop_u2f: @@ -1074,7 +1050,7 @@ fs_visitor::emit_assignment_writes(fs_reg &l, fs_reg &r, l.type = brw_type_for_base_type(type); r.type = brw_type_for_base_type(type); - fs_inst *inst = emit(fs_inst(BRW_OPCODE_MOV, l, r)); + fs_inst *inst = emit(BRW_OPCODE_MOV, l, r); inst->predicated = predicated; l.reg_offset++; @@ -1127,7 +1103,7 @@ fs_visitor::visit(ir_assignment *ir) ir->lhs->type->is_vector()) { for (int i = 0; i < ir->lhs->type->vector_elements; i++) { if (ir->write_mask & (1 << i)) { - inst = emit(fs_inst(BRW_OPCODE_MOV, l, r)); + inst = emit(BRW_OPCODE_MOV, l, r); if (ir->condition) inst->predicated = true; r.reg_offset++; @@ -1152,8 +1128,7 @@ fs_visitor::emit_texture_gen4(ir_texture *ir, fs_reg dst, fs_reg coordinate) if (ir->shadow_comparitor) { for (int i = 0; i < ir->coordinate->type->vector_elements; i++) { - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i), - coordinate)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i), coordinate); coordinate.reg_offset++; } /* gen4's SIMD8 sampler always has the slots for u,v,r present. */ @@ -1163,29 +1138,25 @@ fs_visitor::emit_texture_gen4(ir_texture *ir, fs_reg dst, fs_reg coordinate) /* There's no plain shadow compare message, so we use shadow * compare with a bias of 0.0. */ - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), - fs_reg(0.0f))); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), fs_reg(0.0f)); mlen++; } else if (ir->op == ir_txb) { ir->lod_info.bias->accept(this); - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), - this->result)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result); mlen++; } else { assert(ir->op == ir_txl); ir->lod_info.lod->accept(this); - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), - this->result)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result); mlen++; } ir->shadow_comparitor->accept(this); - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result); mlen++; } else if (ir->op == ir_tex) { for (int i = 0; i < ir->coordinate->type->vector_elements; i++) { - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i), - coordinate)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i), coordinate); coordinate.reg_offset++; } /* gen4's SIMD8 sampler always has the slots for u,v,r present. */ @@ -1199,8 +1170,7 @@ fs_visitor::emit_texture_gen4(ir_texture *ir, fs_reg dst, fs_reg coordinate) assert(ir->op == ir_txb || ir->op == ir_txl); for (int i = 0; i < ir->coordinate->type->vector_elements; i++) { - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i * 2), - coordinate)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i * 2), coordinate); coordinate.reg_offset++; } @@ -1209,13 +1179,11 @@ fs_visitor::emit_texture_gen4(ir_texture *ir, fs_reg dst, fs_reg coordinate) if (ir->op == ir_txb) { ir->lod_info.bias->accept(this); - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), - this->result)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result); mlen++; } else { ir->lod_info.lod->accept(this); - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), - this->result)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result); mlen++; } @@ -1236,16 +1204,16 @@ fs_visitor::emit_texture_gen4(ir_texture *ir, fs_reg dst, fs_reg coordinate) fs_inst *inst = NULL; switch (ir->op) { case ir_tex: - inst = emit(fs_inst(FS_OPCODE_TEX, dst)); + inst = emit(FS_OPCODE_TEX, dst); break; case ir_txb: - inst = emit(fs_inst(FS_OPCODE_TXB, dst)); + inst = emit(FS_OPCODE_TXB, dst); break; case ir_txl: - inst = emit(fs_inst(FS_OPCODE_TXL, dst)); + inst = emit(FS_OPCODE_TXL, dst); break; case ir_txd: - inst = emit(fs_inst(FS_OPCODE_TXD, dst)); + inst = emit(FS_OPCODE_TXD, dst); break; case ir_txf: assert(!"GLSL 1.30 features unsupported"); @@ -1256,7 +1224,7 @@ fs_visitor::emit_texture_gen4(ir_texture *ir, fs_reg dst, fs_reg coordinate) if (simd16) { for (int i = 0; i < 4; i++) { - emit(fs_inst(BRW_OPCODE_MOV, orig_dst, dst)); + emit(BRW_OPCODE_MOV, orig_dst, dst); orig_dst.reg_offset++; dst.reg_offset += 2; } @@ -1280,8 +1248,7 @@ fs_visitor::emit_texture_gen5(ir_texture *ir, fs_reg dst, fs_reg coordinate) int base_mrf = 1; for (int i = 0; i < ir->coordinate->type->vector_elements; i++) { - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i), - coordinate)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i), coordinate); coordinate.reg_offset++; } mlen += ir->coordinate->type->vector_elements; @@ -1290,30 +1257,30 @@ fs_visitor::emit_texture_gen5(ir_texture *ir, fs_reg dst, fs_reg coordinate) mlen = MAX2(mlen, 5); ir->shadow_comparitor->accept(this); - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result); mlen++; } fs_inst *inst = NULL; switch (ir->op) { case ir_tex: - inst = emit(fs_inst(FS_OPCODE_TEX, dst)); + inst = emit(FS_OPCODE_TEX, dst); break; case ir_txb: ir->lod_info.bias->accept(this); mlen = MAX2(mlen, 5); - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result); mlen++; - inst = emit(fs_inst(FS_OPCODE_TXB, dst)); + inst = emit(FS_OPCODE_TXB, dst); break; case ir_txl: ir->lod_info.lod->accept(this); mlen = MAX2(mlen, 5); - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result); mlen++; - inst = emit(fs_inst(FS_OPCODE_TXL, dst)); + inst = emit(FS_OPCODE_TXL, dst); break; case ir_txd: case ir_txf: @@ -1356,14 +1323,14 @@ fs_visitor::visit(ir_texture *ir) } /* Explicitly set up the message header by copying g0 to msg reg m1. */ - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, 1, BRW_REGISTER_TYPE_UD), - fs_reg(GRF, 0, BRW_REGISTER_TYPE_UD))); + emit(BRW_OPCODE_MOV, fs_reg(MRF, 1, BRW_REGISTER_TYPE_UD), + fs_reg(GRF, 0, BRW_REGISTER_TYPE_UD)); /* Then set the offset bits in DWord 2 of the message header. */ - emit(fs_inst(BRW_OPCODE_MOV, - fs_reg(retype(brw_vec1_reg(BRW_MESSAGE_REGISTER_FILE, 1, 2), - BRW_REGISTER_TYPE_UD)), - fs_reg(brw_imm_uw(offset_bits)))); + emit(BRW_OPCODE_MOV, + fs_reg(retype(brw_vec1_reg(BRW_MESSAGE_REGISTER_FILE, 1, 2), + BRW_REGISTER_TYPE_UD)), + fs_reg(brw_imm_uw(offset_bits))); } /* Should be lowered by do_lower_texture_projection */ @@ -1409,10 +1376,10 @@ fs_visitor::visit(ir_texture *ir) fs_reg src = coordinate; coordinate = dst; - emit(fs_inst(BRW_OPCODE_MUL, dst, src, scale_x)); + emit(BRW_OPCODE_MUL, dst, src, scale_x); dst.reg_offset++; src.reg_offset++; - emit(fs_inst(BRW_OPCODE_MUL, dst, src, scale_y)); + emit(BRW_OPCODE_MUL, dst, src, scale_y); } /* Writemasking doesn't eliminate channels on SIMD8 texture @@ -1453,13 +1420,13 @@ fs_visitor::visit(ir_texture *ir) l.reg_offset += i; if (swiz == SWIZZLE_ZERO) { - emit(fs_inst(BRW_OPCODE_MOV, l, fs_reg(0.0f))); + emit(BRW_OPCODE_MOV, l, fs_reg(0.0f)); } else if (swiz == SWIZZLE_ONE) { - emit(fs_inst(BRW_OPCODE_MOV, l, fs_reg(1.0f))); + emit(BRW_OPCODE_MOV, l, fs_reg(1.0f)); } else { fs_reg r = dst; r.reg_offset += GET_SWZ(c->key.tex_swizzles[inst->sampler], i); - emit(fs_inst(BRW_OPCODE_MOV, l, r)); + emit(BRW_OPCODE_MOV, l, r); } } this->result = swizzle_dst; @@ -1500,7 +1467,7 @@ fs_visitor::visit(ir_swizzle *ir) } channel.reg_offset += swiz; - emit(fs_inst(BRW_OPCODE_MOV, result, channel)); + emit(BRW_OPCODE_MOV, result, channel); result.reg_offset++; } } @@ -1512,8 +1479,8 @@ fs_visitor::visit(ir_discard *ir) assert(ir->condition == NULL); /* FINISHME */ - emit(fs_inst(FS_OPCODE_DISCARD_NOT, temp, reg_null_d)); - emit(fs_inst(FS_OPCODE_DISCARD_AND, reg_null_d, temp)); + emit(FS_OPCODE_DISCARD_NOT, temp, reg_null_d); + emit(FS_OPCODE_DISCARD_AND, reg_null_d, temp); kill_emitted = true; } @@ -1539,7 +1506,7 @@ fs_visitor::visit(ir_constant *ir) dst_reg.type = src_reg.type; for (unsigned j = 0; j < size; j++) { - emit(fs_inst(BRW_OPCODE_MOV, dst_reg, src_reg)); + emit(BRW_OPCODE_MOV, dst_reg, src_reg); src_reg.reg_offset++; dst_reg.reg_offset++; } @@ -1554,7 +1521,7 @@ fs_visitor::visit(ir_constant *ir) dst_reg.type = src_reg.type; for (unsigned j = 0; j < size; j++) { - emit(fs_inst(BRW_OPCODE_MOV, dst_reg, src_reg)); + emit(BRW_OPCODE_MOV, dst_reg, src_reg); src_reg.reg_offset++; dst_reg.reg_offset++; } @@ -1565,16 +1532,16 @@ fs_visitor::visit(ir_constant *ir) for (unsigned i = 0; i < size; i++) { switch (ir->type->base_type) { case GLSL_TYPE_FLOAT: - emit(fs_inst(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.f[i]))); + emit(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.f[i])); break; case GLSL_TYPE_UINT: - emit(fs_inst(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.u[i]))); + emit(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.u[i])); break; case GLSL_TYPE_INT: - emit(fs_inst(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.i[i]))); + emit(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.i[i])); break; case GLSL_TYPE_BOOL: - emit(fs_inst(BRW_OPCODE_MOV, dst_reg, fs_reg((int)ir->value.b[i]))); + emit(BRW_OPCODE_MOV, dst_reg, fs_reg((int)ir->value.b[i])); break; default: assert(!"Non-float/uint/int/bool constant"); @@ -1605,40 +1572,39 @@ fs_visitor::emit_bool_to_cond_code(ir_rvalue *ir) switch (expr->operation) { case ir_unop_logic_not: - inst = emit(fs_inst(BRW_OPCODE_AND, reg_null_d, op[0], fs_reg(1))); + inst = emit(BRW_OPCODE_AND, reg_null_d, op[0], fs_reg(1)); inst->conditional_mod = BRW_CONDITIONAL_Z; break; case ir_binop_logic_xor: - inst = emit(fs_inst(BRW_OPCODE_XOR, reg_null_d, op[0], op[1])); + inst = emit(BRW_OPCODE_XOR, reg_null_d, op[0], op[1]); inst->conditional_mod = BRW_CONDITIONAL_NZ; break; case ir_binop_logic_or: - inst = emit(fs_inst(BRW_OPCODE_OR, reg_null_d, op[0], op[1])); + inst = emit(BRW_OPCODE_OR, reg_null_d, op[0], op[1]); inst->conditional_mod = BRW_CONDITIONAL_NZ; break; case ir_binop_logic_and: - inst = emit(fs_inst(BRW_OPCODE_AND, reg_null_d, op[0], op[1])); + inst = emit(BRW_OPCODE_AND, reg_null_d, op[0], op[1]); inst->conditional_mod = BRW_CONDITIONAL_NZ; break; case ir_unop_f2b: if (intel->gen >= 6) { - inst = emit(fs_inst(BRW_OPCODE_CMP, reg_null_d, - op[0], fs_reg(0.0f))); + inst = emit(BRW_OPCODE_CMP, reg_null_d, op[0], fs_reg(0.0f)); } else { - inst = emit(fs_inst(BRW_OPCODE_MOV, reg_null_f, op[0])); + inst = emit(BRW_OPCODE_MOV, reg_null_f, op[0]); } inst->conditional_mod = BRW_CONDITIONAL_NZ; break; case ir_unop_i2b: if (intel->gen >= 6) { - inst = emit(fs_inst(BRW_OPCODE_CMP, reg_null_d, op[0], fs_reg(0))); + inst = emit(BRW_OPCODE_CMP, reg_null_d, op[0], fs_reg(0)); } else { - inst = emit(fs_inst(BRW_OPCODE_MOV, reg_null_d, op[0])); + inst = emit(BRW_OPCODE_MOV, reg_null_d, op[0]); } inst->conditional_mod = BRW_CONDITIONAL_NZ; break; @@ -1651,14 +1617,14 @@ fs_visitor::emit_bool_to_cond_code(ir_rvalue *ir) case ir_binop_all_equal: case ir_binop_nequal: case ir_binop_any_nequal: - inst = emit(fs_inst(BRW_OPCODE_CMP, reg_null_cmp, op[0], op[1])); + inst = emit(BRW_OPCODE_CMP, reg_null_cmp, op[0], op[1]); inst->conditional_mod = brw_conditional_for_comparison(expr->operation); break; default: assert(!"not reached"); - this->fail = true; + fail("bad cond code\n"); break; } return; @@ -1667,11 +1633,10 @@ fs_visitor::emit_bool_to_cond_code(ir_rvalue *ir) ir->accept(this); if (intel->gen >= 6) { - fs_inst *inst = emit(fs_inst(BRW_OPCODE_AND, reg_null_d, - this->result, fs_reg(1))); + fs_inst *inst = emit(BRW_OPCODE_AND, reg_null_d, this->result, fs_reg(1)); inst->conditional_mod = BRW_CONDITIONAL_NZ; } else { - fs_inst *inst = emit(fs_inst(BRW_OPCODE_MOV, reg_null_d, this->result)); + fs_inst *inst = emit(BRW_OPCODE_MOV, reg_null_d, this->result); inst->conditional_mod = BRW_CONDITIONAL_NZ; } } @@ -1700,36 +1665,36 @@ fs_visitor::emit_if_gen6(ir_if *ir) switch (expr->operation) { case ir_unop_logic_not: - inst = emit(fs_inst(BRW_OPCODE_IF, temp, op[0], fs_reg(0))); + inst = emit(BRW_OPCODE_IF, temp, op[0], fs_reg(0)); inst->conditional_mod = BRW_CONDITIONAL_Z; return; case ir_binop_logic_xor: - inst = emit(fs_inst(BRW_OPCODE_IF, reg_null_d, op[0], op[1])); + inst = emit(BRW_OPCODE_IF, reg_null_d, op[0], op[1]); inst->conditional_mod = BRW_CONDITIONAL_NZ; return; case ir_binop_logic_or: temp = fs_reg(this, glsl_type::bool_type); - emit(fs_inst(BRW_OPCODE_OR, temp, op[0], op[1])); - inst = emit(fs_inst(BRW_OPCODE_IF, reg_null_d, temp, fs_reg(0))); + emit(BRW_OPCODE_OR, temp, op[0], op[1]); + inst = emit(BRW_OPCODE_IF, reg_null_d, temp, fs_reg(0)); inst->conditional_mod = BRW_CONDITIONAL_NZ; return; case ir_binop_logic_and: temp = fs_reg(this, glsl_type::bool_type); - emit(fs_inst(BRW_OPCODE_AND, temp, op[0], op[1])); - inst = emit(fs_inst(BRW_OPCODE_IF, reg_null_d, temp, fs_reg(0))); + emit(BRW_OPCODE_AND, temp, op[0], op[1]); + inst = emit(BRW_OPCODE_IF, reg_null_d, temp, fs_reg(0)); inst->conditional_mod = BRW_CONDITIONAL_NZ; return; case ir_unop_f2b: - inst = emit(fs_inst(BRW_OPCODE_IF, reg_null_f, op[0], fs_reg(0))); + inst = emit(BRW_OPCODE_IF, reg_null_f, op[0], fs_reg(0)); inst->conditional_mod = BRW_CONDITIONAL_NZ; return; case ir_unop_i2b: - inst = emit(fs_inst(BRW_OPCODE_IF, reg_null_d, op[0], fs_reg(0))); + inst = emit(BRW_OPCODE_IF, reg_null_d, op[0], fs_reg(0)); inst->conditional_mod = BRW_CONDITIONAL_NZ; return; @@ -1741,15 +1706,15 @@ fs_visitor::emit_if_gen6(ir_if *ir) case ir_binop_all_equal: case ir_binop_nequal: case ir_binop_any_nequal: - inst = emit(fs_inst(BRW_OPCODE_IF, reg_null_d, op[0], op[1])); + inst = emit(BRW_OPCODE_IF, reg_null_d, op[0], op[1]); inst->conditional_mod = brw_conditional_for_comparison(expr->operation); return; default: assert(!"not reached"); - inst = emit(fs_inst(BRW_OPCODE_IF, reg_null_d, op[0], fs_reg(0))); + inst = emit(BRW_OPCODE_IF, reg_null_d, op[0], fs_reg(0)); inst->conditional_mod = BRW_CONDITIONAL_NZ; - this->fail = true; + fail("bad condition\n"); return; } return; @@ -1757,7 +1722,7 @@ fs_visitor::emit_if_gen6(ir_if *ir) ir->condition->accept(this); - fs_inst *inst = emit(fs_inst(BRW_OPCODE_IF, reg_null_d, this->result, fs_reg(0))); + fs_inst *inst = emit(BRW_OPCODE_IF, reg_null_d, this->result, fs_reg(0)); inst->conditional_mod = BRW_CONDITIONAL_NZ; } @@ -1776,7 +1741,7 @@ fs_visitor::visit(ir_if *ir) } else { emit_bool_to_cond_code(ir->condition); - inst = emit(fs_inst(BRW_OPCODE_IF)); + inst = emit(BRW_OPCODE_IF); inst->predicated = true; } @@ -1788,7 +1753,7 @@ fs_visitor::visit(ir_if *ir) } if (!ir->else_instructions.is_empty()) { - emit(fs_inst(BRW_OPCODE_ELSE)); + emit(BRW_OPCODE_ELSE); foreach_iter(exec_list_iterator, iter, ir->else_instructions) { ir_instruction *ir = (ir_instruction *)iter.get(); @@ -1798,7 +1763,7 @@ fs_visitor::visit(ir_if *ir) } } - emit(fs_inst(BRW_OPCODE_ENDIF)); + emit(BRW_OPCODE_ENDIF); } void @@ -1815,21 +1780,20 @@ fs_visitor::visit(ir_loop *ir) this->base_ir = ir->from; ir->from->accept(this); - emit(fs_inst(BRW_OPCODE_MOV, counter, this->result)); + emit(BRW_OPCODE_MOV, counter, this->result); } } - emit(fs_inst(BRW_OPCODE_DO)); + emit(BRW_OPCODE_DO); if (ir->to) { this->base_ir = ir->to; ir->to->accept(this); - fs_inst *inst = emit(fs_inst(BRW_OPCODE_CMP, reg_null_cmp, - counter, this->result)); + fs_inst *inst = emit(BRW_OPCODE_CMP, reg_null_cmp, counter, this->result); inst->conditional_mod = brw_conditional_for_comparison(ir->cmp); - inst = emit(fs_inst(BRW_OPCODE_BREAK)); + inst = emit(BRW_OPCODE_BREAK); inst->predicated = true; } @@ -1843,10 +1807,10 @@ fs_visitor::visit(ir_loop *ir) if (ir->increment) { this->base_ir = ir->increment; ir->increment->accept(this); - emit(fs_inst(BRW_OPCODE_ADD, counter, counter, this->result)); + emit(BRW_OPCODE_ADD, counter, counter, this->result); } - emit(fs_inst(BRW_OPCODE_WHILE)); + emit(BRW_OPCODE_WHILE); } void @@ -1854,10 +1818,10 @@ fs_visitor::visit(ir_loop_jump *ir) { switch (ir->mode) { case ir_loop_jump::jump_break: - emit(fs_inst(BRW_OPCODE_BREAK)); + emit(BRW_OPCODE_BREAK); break; case ir_loop_jump::jump_continue: - emit(fs_inst(BRW_OPCODE_CONTINUE)); + emit(BRW_OPCODE_CONTINUE); break; } } @@ -1923,23 +1887,13 @@ void fs_visitor::emit_dummy_fs() { /* Everyone's favorite color. */ - emit(fs_inst(BRW_OPCODE_MOV, - fs_reg(MRF, 2), - fs_reg(1.0f))); - emit(fs_inst(BRW_OPCODE_MOV, - fs_reg(MRF, 3), - fs_reg(0.0f))); - emit(fs_inst(BRW_OPCODE_MOV, - fs_reg(MRF, 4), - fs_reg(1.0f))); - emit(fs_inst(BRW_OPCODE_MOV, - fs_reg(MRF, 5), - fs_reg(0.0f))); + emit(BRW_OPCODE_MOV, fs_reg(MRF, 2), fs_reg(1.0f)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, 3), fs_reg(0.0f)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, 4), fs_reg(1.0f)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, 5), fs_reg(0.0f)); fs_inst *write; - write = emit(fs_inst(FS_OPCODE_FB_WRITE, - fs_reg(0), - fs_reg(0))); + write = emit(FS_OPCODE_FB_WRITE, fs_reg(0), fs_reg(0)); write->base_mrf = 0; } @@ -1969,14 +1923,14 @@ fs_visitor::emit_interpolation_setup_gen4() this->pixel_y = fs_reg(this, glsl_type::uint_type); this->pixel_x.type = BRW_REGISTER_TYPE_UW; this->pixel_y.type = BRW_REGISTER_TYPE_UW; - emit(fs_inst(BRW_OPCODE_ADD, - this->pixel_x, - fs_reg(stride(suboffset(g1_uw, 4), 2, 4, 0)), - fs_reg(brw_imm_v(0x10101010)))); - emit(fs_inst(BRW_OPCODE_ADD, - this->pixel_y, - fs_reg(stride(suboffset(g1_uw, 5), 2, 4, 0)), - fs_reg(brw_imm_v(0x11001100)))); + emit(BRW_OPCODE_ADD, + this->pixel_x, + fs_reg(stride(suboffset(g1_uw, 4), 2, 4, 0)), + fs_reg(brw_imm_v(0x10101010))); + emit(BRW_OPCODE_ADD, + this->pixel_y, + fs_reg(stride(suboffset(g1_uw, 5), 2, 4, 0)), + fs_reg(brw_imm_v(0x11001100))); this->current_annotation = "compute pixel deltas from v0"; if (brw->has_pln) { @@ -1987,22 +1941,18 @@ fs_visitor::emit_interpolation_setup_gen4() this->delta_x = fs_reg(this, glsl_type::float_type); this->delta_y = fs_reg(this, glsl_type::float_type); } - emit(fs_inst(BRW_OPCODE_ADD, - this->delta_x, - this->pixel_x, - fs_reg(negate(brw_vec1_grf(1, 0))))); - emit(fs_inst(BRW_OPCODE_ADD, - this->delta_y, - this->pixel_y, - fs_reg(negate(brw_vec1_grf(1, 1))))); + emit(BRW_OPCODE_ADD, this->delta_x, + this->pixel_x, fs_reg(negate(brw_vec1_grf(1, 0)))); + emit(BRW_OPCODE_ADD, this->delta_y, + this->pixel_y, fs_reg(negate(brw_vec1_grf(1, 1)))); this->current_annotation = "compute pos.w and 1/pos.w"; /* Compute wpos.w. It's always in our setup, since it's needed to * interpolate the other attributes. */ this->wpos_w = fs_reg(this, glsl_type::float_type); - emit(fs_inst(FS_OPCODE_LINTERP, wpos_w, this->delta_x, this->delta_y, - interp_reg(FRAG_ATTRIB_WPOS, 3))); + emit(FS_OPCODE_LINTERP, wpos_w, this->delta_x, this->delta_y, + interp_reg(FRAG_ATTRIB_WPOS, 3)); /* Compute the pixel 1/W value from wpos.w. */ this->pixel_w = fs_reg(this, glsl_type::float_type); emit_math(FS_OPCODE_RCP, this->pixel_w, wpos_w); @@ -2021,14 +1971,14 @@ fs_visitor::emit_interpolation_setup_gen6() fs_reg int_pixel_y = fs_reg(this, glsl_type::uint_type); int_pixel_x.type = BRW_REGISTER_TYPE_UW; int_pixel_y.type = BRW_REGISTER_TYPE_UW; - emit(fs_inst(BRW_OPCODE_ADD, - int_pixel_x, - fs_reg(stride(suboffset(g1_uw, 4), 2, 4, 0)), - fs_reg(brw_imm_v(0x10101010)))); - emit(fs_inst(BRW_OPCODE_ADD, - int_pixel_y, - fs_reg(stride(suboffset(g1_uw, 5), 2, 4, 0)), - fs_reg(brw_imm_v(0x11001100)))); + emit(BRW_OPCODE_ADD, + int_pixel_x, + fs_reg(stride(suboffset(g1_uw, 4), 2, 4, 0)), + fs_reg(brw_imm_v(0x10101010))); + emit(BRW_OPCODE_ADD, + int_pixel_y, + fs_reg(stride(suboffset(g1_uw, 5), 2, 4, 0)), + fs_reg(brw_imm_v(0x11001100))); /* As of gen6, we can no longer mix float and int sources. We have * to turn the integer pixel centers into floats for their actual @@ -2036,13 +1986,13 @@ fs_visitor::emit_interpolation_setup_gen6() */ this->pixel_x = fs_reg(this, glsl_type::float_type); this->pixel_y = fs_reg(this, glsl_type::float_type); - emit(fs_inst(BRW_OPCODE_MOV, this->pixel_x, int_pixel_x)); - emit(fs_inst(BRW_OPCODE_MOV, this->pixel_y, int_pixel_y)); + emit(BRW_OPCODE_MOV, this->pixel_x, int_pixel_x); + emit(BRW_OPCODE_MOV, this->pixel_y, int_pixel_y); - this->current_annotation = "compute 1/pos.w"; - this->wpos_w = fs_reg(brw_vec8_grf(c->source_w_reg, 0)); - this->pixel_w = fs_reg(this, glsl_type::float_type); - emit_math(FS_OPCODE_RCP, this->pixel_w, wpos_w); + this->current_annotation = "compute pos.w"; + this->pixel_w = fs_reg(brw_vec8_grf(c->source_w_reg, 0)); + this->wpos_w = fs_reg(this, glsl_type::float_type); + emit_math(FS_OPCODE_RCP, this->wpos_w, this->pixel_w); this->delta_x = fs_reg(brw_vec8_grf(2, 0)); this->delta_y = fs_reg(brw_vec8_grf(3, 0)); @@ -2069,8 +2019,8 @@ fs_visitor::emit_fb_writes() } if (c->aa_dest_stencil_reg) { - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, nr++), - fs_reg(brw_vec8_grf(c->aa_dest_stencil_reg, 0)))); + emit(BRW_OPCODE_MOV, fs_reg(MRF, nr++), + fs_reg(brw_vec8_grf(c->aa_dest_stencil_reg, 0))); } /* Reserve space for color. It'll be filled in per MRT below. */ @@ -2083,17 +2033,17 @@ fs_visitor::emit_fb_writes() assert(this->frag_depth); fs_reg depth = *(variable_storage(this->frag_depth)); - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, nr++), depth)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, nr++), depth); } else { /* Pass through the payload depth. */ - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, nr++), - fs_reg(brw_vec8_grf(c->source_depth_reg, 0)))); + emit(BRW_OPCODE_MOV, fs_reg(MRF, nr++), + fs_reg(brw_vec8_grf(c->source_depth_reg, 0))); } } if (c->dest_depth_reg) { - emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, nr++), - fs_reg(brw_vec8_grf(c->dest_depth_reg, 0)))); + emit(BRW_OPCODE_MOV, fs_reg(MRF, nr++), + fs_reg(brw_vec8_grf(c->dest_depth_reg, 0))); } fs_reg color = reg_undef; @@ -2110,9 +2060,7 @@ fs_visitor::emit_fb_writes() target); if (this->frag_color || this->frag_data) { for (int i = 0; i < 4; i++) { - emit(fs_inst(BRW_OPCODE_MOV, - fs_reg(MRF, color_mrf + i), - color)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, color_mrf + i), color); color.reg_offset++; } } @@ -2120,8 +2068,7 @@ fs_visitor::emit_fb_writes() if (this->frag_color) color.reg_offset -= 4; - fs_inst *inst = emit(fs_inst(FS_OPCODE_FB_WRITE, - reg_undef, reg_undef)); + fs_inst *inst = emit(FS_OPCODE_FB_WRITE); inst->target = target; inst->base_mrf = 0; inst->mlen = nr; @@ -2137,13 +2084,10 @@ fs_visitor::emit_fb_writes() * renderbuffer. */ color.reg_offset += 3; - emit(fs_inst(BRW_OPCODE_MOV, - fs_reg(MRF, color_mrf + 3), - color)); + emit(BRW_OPCODE_MOV, fs_reg(MRF, color_mrf + 3), color); } - fs_inst *inst = emit(fs_inst(FS_OPCODE_FB_WRITE, - reg_undef, reg_undef)); + fs_inst *inst = emit(FS_OPCODE_FB_WRITE); inst->base_mrf = 0; inst->mlen = nr; inst->eot = true; @@ -2868,8 +2812,7 @@ fs_visitor::calculate_live_intervals() if (inst->src[i].file == GRF && inst->src[i].reg != 0) { int reg = inst->src[i].reg; - if (!loop_depth || (this->virtual_grf_sizes[reg] == 1 && - def[reg] >= bb_header_ip)) { + if (!loop_depth) { use[reg] = ip; } else { def[reg] = MIN2(loop_start, def[reg]); @@ -2885,8 +2828,7 @@ fs_visitor::calculate_live_intervals() if (inst->dst.file == GRF && inst->dst.reg != 0) { int reg = inst->dst.reg; - if (!loop_depth || (this->virtual_grf_sizes[reg] == 1 && - !inst->predicated)) { + if (!loop_depth) { def[reg] = MIN2(def[reg], ip); } else { def[reg] = MIN2(def[reg], loop_start); @@ -2996,12 +2938,41 @@ fs_visitor::propagate_constants() progress = true; } break; + case BRW_OPCODE_CMP: + if (i == 1) { + scan_inst->src[i] = inst->src[0]; + progress = true; + } else if (i == 0 && scan_inst->src[1].file != IMM) { + uint32_t new_cmod; + + new_cmod = brw_swap_cmod(scan_inst->conditional_mod); + if (new_cmod != ~0u) { + /* Fit this constant in by swapping the operands and + * flipping the test + */ + scan_inst->src[0] = scan_inst->src[1]; + scan_inst->src[1] = inst->src[0]; + scan_inst->conditional_mod = new_cmod; + progress = true; + } + } + break; + case BRW_OPCODE_SEL: if (i == 1) { scan_inst->src[i] = inst->src[0]; progress = true; + } else if (i == 0 && scan_inst->src[1].file != IMM) { + /* Fit this constant in by swapping the operands and + * flipping the predicate + */ + scan_inst->src[0] = scan_inst->src[1]; + scan_inst->src[1] = inst->src[0]; + scan_inst->predicate_inverse = !scan_inst->predicate_inverse; + progress = true; } + break; } } @@ -3487,6 +3458,7 @@ fs_visitor::generate_code() brw_set_conditionalmod(p, inst->conditional_mod); brw_set_predicate_control(p, inst->predicated); + brw_set_predicate_inverse(p, inst->predicate_inverse); brw_set_saturate(p, inst->saturate); switch (inst->opcode) { @@ -3677,7 +3649,7 @@ fs_visitor::generate_code() } else { _mesa_problem(ctx, "Unsupported opcode %d in FS", inst->opcode); } - this->fail = true; + fail("unsupported opcode in FS\n"); } if (unlikely(INTEL_DEBUG & DEBUG_WM)) { @@ -3808,18 +3780,18 @@ brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c) v.assign_regs_trivial(); else { while (!v.assign_regs()) { - if (v.fail) + if (v.failed) break; } } } - if (!v.fail) + if (!v.failed) v.generate_code(); - assert(!v.fail); /* FINISHME: Cleanly fail, tested at link time, etc. */ + assert(!v.failed); /* FINISHME: Cleanly fail, tested at link time, etc. */ - if (v.fail) + if (v.failed) return GL_FALSE; c->prog_data.total_grf = v.grf_used; diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h index dc030ae5b50..f792906cfe7 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.h +++ b/src/mesa/drivers/dri/i965/brw_fs.h @@ -331,6 +331,7 @@ public: fs_reg src[3]; bool saturate; bool predicated; + bool predicate_inverse; int conditional_mod; /**< BRW_CONDITIONAL_* */ int mlen; /**< SEND message length */ @@ -364,7 +365,7 @@ public: this->ctx = &intel->ctx; this->mem_ctx = ralloc_context(NULL); this->shader = shader; - this->fail = false; + this->failed = false; this->variable_ht = hash_table_ctor(0, hash_table_pointer_hash, hash_table_pointer_compare); @@ -432,6 +433,32 @@ public: void visit(ir_function_signature *ir); fs_inst *emit(fs_inst inst); + + fs_inst *emit(int opcode) + { + return emit(fs_inst(opcode)); + } + + fs_inst *emit(int opcode, fs_reg dst) + { + return emit(fs_inst(opcode, dst)); + } + + fs_inst *emit(int opcode, fs_reg dst, fs_reg src0) + { + return emit(fs_inst(opcode, dst, src0)); + } + + fs_inst *emit(int opcode, fs_reg dst, fs_reg src0, fs_reg src1) + { + return emit(fs_inst(opcode, dst, src0, src1)); + } + + fs_inst *emit(int opcode, fs_reg dst, fs_reg src0, fs_reg src1, fs_reg src2) + { + return emit(fs_inst(opcode, dst, src0, src1, src2)); + } + void setup_paramvalues_refs(); void assign_curb_setup(); void calculate_urb_setup(); @@ -450,6 +477,7 @@ public: bool remove_duplicate_mrf_writes(); bool virtual_grf_interferes(int a, int b); void schedule_instructions(); + void fail(const char *msg, ...); void generate_code(); void generate_fb_write(fs_inst *inst); @@ -523,7 +551,7 @@ public: ir_instruction *base_ir; /** @} */ - bool fail; + bool failed; /* Result of last visit() method. */ fs_reg result; diff --git a/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp b/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp index f0277423170..67f29ce1816 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp @@ -119,8 +119,7 @@ fs_visitor::assign_regs() } if (i == class_count) { if (this->virtual_grf_sizes[r] >= base_reg_count) { - fprintf(stderr, "Object too large to register allocate.\n"); - this->fail = true; + fail("Object too large to register allocate.\n"); } class_sizes[class_count++] = this->virtual_grf_sizes[r]; @@ -226,8 +225,9 @@ fs_visitor::assign_regs() * loop back into here to try again. */ int reg = choose_spill_reg(g); - if (reg == -1 || intel->gen >= 6) { - this->fail = true; + + if (reg == -1) { + fail("no register to spill\n"); } else { spill_reg(reg); } diff --git a/src/mesa/drivers/dri/i965/brw_gs.c b/src/mesa/drivers/dri/i965/brw_gs.c index 70c451d071d..14ee6767cd5 100644 --- a/src/mesa/drivers/dri/i965/brw_gs.c +++ b/src/mesa/drivers/dri/i965/brw_gs.c @@ -83,45 +83,23 @@ static void compile_gs_prog( struct brw_context *brw, /* Note that primitives which don't require a GS program have * already been weeded out by this stage: */ + + /* Gen6: VF has already converted into polygon, and LINELOOP is + * converted to LINESTRIP at the beginning of the 3D pipeline. + */ + if (intel->gen == 6) + return; + switch (key->primitive) { case GL_QUADS: - /* Gen6: VF has already converted into polygon. */ - if (intel->gen == 6) - return; brw_gs_quads( &c, key ); break; case GL_QUAD_STRIP: - if (intel->gen == 6) - return; brw_gs_quad_strip( &c, key ); break; case GL_LINE_LOOP: - /* Gen6: LINELOOP is converted to LINESTRIP at the beginning of the 3D pipeline */ - if (intel->gen == 6) - return; brw_gs_lines( &c ); break; - case GL_LINES: - if (key->hint_gs_always) - brw_gs_lines( &c ); - else { - return; - } - break; - case GL_TRIANGLES: - if (key->hint_gs_always) - brw_gs_tris( &c ); - else { - return; - } - break; - case GL_POINTS: - if (key->hint_gs_always) - brw_gs_points( &c ); - else { - return; - } - break; default: return; } @@ -170,7 +148,6 @@ static void populate_key( struct brw_context *brw, { struct gl_context *ctx = &brw->intel.ctx; struct intel_context *intel = &brw->intel; - int prim_gs_always; memset(key, 0, sizeof(*key)); @@ -180,8 +157,6 @@ static void populate_key( struct brw_context *brw, /* BRW_NEW_PRIMITIVE */ key->primitive = gs_prim[brw->primitive]; - key->hint_gs_always = 0; /* debug code? */ - /* _NEW_LIGHT */ key->pv_first = (ctx->Light.ProvokingVertex == GL_FIRST_VERTEX_CONVENTION); if (key->primitive == GL_QUADS && ctx->Light.ShadeModel != GL_FLAT) { @@ -191,14 +166,11 @@ static void populate_key( struct brw_context *brw, key->pv_first = GL_TRUE; } - if (intel->gen == 6) - prim_gs_always = 0; - else - prim_gs_always = brw->primitive == GL_QUADS || - brw->primitive == GL_QUAD_STRIP || - brw->primitive == GL_LINE_LOOP; - - key->need_gs_prog = (key->hint_gs_always || prim_gs_always); + key->need_gs_prog = (intel->gen == 6) + ? 0 + : (brw->primitive == GL_QUADS || + brw->primitive == GL_QUAD_STRIP || + brw->primitive == GL_LINE_LOOP); } /* Calculate interpolants for triangle and line rasterization. diff --git a/src/mesa/drivers/dri/i965/brw_gs.h b/src/mesa/drivers/dri/i965/brw_gs.h index 7e3531086f9..c33528e4577 100644 --- a/src/mesa/drivers/dri/i965/brw_gs.h +++ b/src/mesa/drivers/dri/i965/brw_gs.h @@ -42,10 +42,9 @@ struct brw_gs_prog_key { GLbitfield64 attrs; GLuint primitive:4; - GLuint hint_gs_always:1; GLuint pv_first:1; GLuint need_gs_prog:1; - GLuint pad:25; + GLuint pad:26; }; struct brw_gs_compile { @@ -70,8 +69,6 @@ struct brw_gs_compile { void brw_gs_quads( struct brw_gs_compile *c, struct brw_gs_prog_key *key ); void brw_gs_quad_strip( struct brw_gs_compile *c, struct brw_gs_prog_key *key ); -void brw_gs_tris( struct brw_gs_compile *c ); void brw_gs_lines( struct brw_gs_compile *c ); -void brw_gs_points( struct brw_gs_compile *c ); #endif diff --git a/src/mesa/drivers/dri/i965/brw_gs_emit.c b/src/mesa/drivers/dri/i965/brw_gs_emit.c index e1f751fdaa4..3bb526b63af 100644 --- a/src/mesa/drivers/dri/i965/brw_gs_emit.c +++ b/src/mesa/drivers/dri/i965/brw_gs_emit.c @@ -193,19 +193,6 @@ void brw_gs_quad_strip( struct brw_gs_compile *c, struct brw_gs_prog_key *key ) } } -void brw_gs_tris( struct brw_gs_compile *c ) -{ - struct intel_context *intel = &c->func.brw->intel; - - brw_gs_alloc_regs(c, 3); - - if (intel->needs_ff_sync) - brw_gs_ff_sync(c, 1); - brw_gs_emit_vue(c, c->reg.vertex[0], 0, ((_3DPRIM_TRILIST << 2) | R02_PRIM_START)); - brw_gs_emit_vue(c, c->reg.vertex[1], 0, (_3DPRIM_TRILIST << 2)); - brw_gs_emit_vue(c, c->reg.vertex[2], 1, ((_3DPRIM_TRILIST << 2) | R02_PRIM_END)); -} - void brw_gs_lines( struct brw_gs_compile *c ) { struct intel_context *intel = &c->func.brw->intel; @@ -217,22 +204,3 @@ void brw_gs_lines( struct brw_gs_compile *c ) brw_gs_emit_vue(c, c->reg.vertex[0], 0, ((_3DPRIM_LINESTRIP << 2) | R02_PRIM_START)); brw_gs_emit_vue(c, c->reg.vertex[1], 1, ((_3DPRIM_LINESTRIP << 2) | R02_PRIM_END)); } - -void brw_gs_points( struct brw_gs_compile *c ) -{ - struct intel_context *intel = &c->func.brw->intel; - - brw_gs_alloc_regs(c, 1); - - if (intel->needs_ff_sync) - brw_gs_ff_sync(c, 1); - brw_gs_emit_vue(c, c->reg.vertex[0], 1, ((_3DPRIM_POINTLIST << 2) | R02_PRIM_START | R02_PRIM_END)); -} - - - - - - - - diff --git a/src/mesa/drivers/dri/i965/brw_misc_state.c b/src/mesa/drivers/dri/i965/brw_misc_state.c index c768be23fa7..19eea07ebc6 100644 --- a/src/mesa/drivers/dri/i965/brw_misc_state.c +++ b/src/mesa/drivers/dri/i965/brw_misc_state.c @@ -149,7 +149,8 @@ static void upload_pipelined_state_pointers(struct brw_context *brw ) else OUT_BATCH(0); OUT_RELOC(brw->clip.state_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 1); - OUT_RELOC(brw->sf.state_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); + OUT_RELOC(brw->intel.batch.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, + brw->sf.state_offset); OUT_RELOC(brw->wm.state_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); OUT_RELOC(brw->intel.batch.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, brw->cc.state_offset); @@ -247,8 +248,7 @@ static void emit_depthbuffer(struct brw_context *brw) } assert(region->tiling != I915_TILING_X); - if (intel->gen >= 6) - assert(region->tiling != I915_TILING_NONE); + assert(intel->gen < 6 || region->tiling == I915_TILING_Y); BEGIN_BATCH(len); OUT_BATCH(_3DSTATE_DEPTH_BUFFER << 16 | (len - 2)); @@ -283,6 +283,9 @@ static void emit_depthbuffer(struct brw_context *brw) } } +/** + * \see brw_context.state.depth_region + */ const struct brw_tracked_state brw_depthbuffer = { .dirty = { .mesa = 0, diff --git a/src/mesa/drivers/dri/i965/brw_program.c b/src/mesa/drivers/dri/i965/brw_program.c index ee68095fceb..6674f1640c8 100644 --- a/src/mesa/drivers/dri/i965/brw_program.c +++ b/src/mesa/drivers/dri/i965/brw_program.c @@ -134,11 +134,6 @@ static GLboolean brwProgramStringNotify( struct gl_context *ctx, brw_fragment_program_const(brw->fragment_program); struct gl_shader_program *shader_program; - if (fprog->FogOption) { - _mesa_append_fog_code(ctx, fprog); - fprog->FogOption = GL_NONE; - } - if (newFP == curFP) brw->state.dirty.brw |= BRW_NEW_FRAGMENT_PROGRAM; newFP->id = brw->program_id++; diff --git a/src/mesa/drivers/dri/i965/brw_sf_state.c b/src/mesa/drivers/dri/i965/brw_sf_state.c index bd3a21ed9e2..66d91a0bde7 100644 --- a/src/mesa/drivers/dri/i965/brw_sf_state.c +++ b/src/mesa/drivers/dri/i965/brw_sf_state.c @@ -38,14 +38,16 @@ static void upload_sf_vp(struct brw_context *brw) { + struct intel_context *intel = &brw->intel; struct gl_context *ctx = &brw->intel.ctx; const GLfloat depth_scale = 1.0F / ctx->DrawBuffer->_DepthMaxF; - struct brw_sf_viewport sfv; + struct brw_sf_viewport *sfv; GLfloat y_scale, y_bias; const GLboolean render_to_fbo = (ctx->DrawBuffer->Name != 0); const GLfloat *v = ctx->Viewport._WindowMap.m; - memset(&sfv, 0, sizeof(sfv)); + sfv = brw_state_batch(brw, sizeof(*sfv), 32, &brw->sf.vp_offset); + memset(sfv, 0, sizeof(*sfv)); if (render_to_fbo) { y_scale = 1.0; @@ -58,12 +60,12 @@ static void upload_sf_vp(struct brw_context *brw) /* _NEW_VIEWPORT */ - sfv.viewport.m00 = v[MAT_SX]; - sfv.viewport.m11 = v[MAT_SY] * y_scale; - sfv.viewport.m22 = v[MAT_SZ] * depth_scale; - sfv.viewport.m30 = v[MAT_TX]; - sfv.viewport.m31 = v[MAT_TY] * y_scale + y_bias; - sfv.viewport.m32 = v[MAT_TZ] * depth_scale; + sfv->viewport.m00 = v[MAT_SX]; + sfv->viewport.m11 = v[MAT_SY] * y_scale; + sfv->viewport.m22 = v[MAT_SZ] * depth_scale; + sfv->viewport.m30 = v[MAT_TX]; + sfv->viewport.m31 = v[MAT_TY] * y_scale + y_bias; + sfv->viewport.m32 = v[MAT_TZ] * depth_scale; /* _NEW_SCISSOR | _NEW_BUFFERS | _NEW_VIEWPORT * for DrawBuffer->_[XY]{min,max} @@ -85,27 +87,31 @@ static void upload_sf_vp(struct brw_context *brw) * anything. Instead, just provide a min > max scissor inside * the bounds, which produces the expected no rendering. */ - sfv.scissor.xmin = 1; - sfv.scissor.xmax = 0; - sfv.scissor.ymin = 1; - sfv.scissor.ymax = 0; + sfv->scissor.xmin = 1; + sfv->scissor.xmax = 0; + sfv->scissor.ymin = 1; + sfv->scissor.ymax = 0; } else if (render_to_fbo) { /* texmemory: Y=0=bottom */ - sfv.scissor.xmin = ctx->DrawBuffer->_Xmin; - sfv.scissor.xmax = ctx->DrawBuffer->_Xmax - 1; - sfv.scissor.ymin = ctx->DrawBuffer->_Ymin; - sfv.scissor.ymax = ctx->DrawBuffer->_Ymax - 1; + sfv->scissor.xmin = ctx->DrawBuffer->_Xmin; + sfv->scissor.xmax = ctx->DrawBuffer->_Xmax - 1; + sfv->scissor.ymin = ctx->DrawBuffer->_Ymin; + sfv->scissor.ymax = ctx->DrawBuffer->_Ymax - 1; } else { /* memory: Y=0=top */ - sfv.scissor.xmin = ctx->DrawBuffer->_Xmin; - sfv.scissor.xmax = ctx->DrawBuffer->_Xmax - 1; - sfv.scissor.ymin = ctx->DrawBuffer->Height - ctx->DrawBuffer->_Ymax; - sfv.scissor.ymax = ctx->DrawBuffer->Height - ctx->DrawBuffer->_Ymin - 1; + sfv->scissor.xmin = ctx->DrawBuffer->_Xmin; + sfv->scissor.xmax = ctx->DrawBuffer->_Xmax - 1; + sfv->scissor.ymin = ctx->DrawBuffer->Height - ctx->DrawBuffer->_Ymax; + sfv->scissor.ymax = ctx->DrawBuffer->Height - ctx->DrawBuffer->_Ymin - 1; } + /* Keep a pointer to it for brw_state_dump.c */ drm_intel_bo_unreference(brw->sf.vp_bo); - brw->sf.vp_bo = brw_cache_data(&brw->cache, BRW_SF_VP, &sfv, sizeof(sfv)); + drm_intel_bo_reference(intel->batch.bo); + brw->sf.vp_bo = intel->batch.bo; + + brw->state.dirty.cache |= CACHE_NEW_SF_VP; } const struct brw_tracked_state brw_sf_vp = { @@ -113,92 +119,44 @@ const struct brw_tracked_state brw_sf_vp = { .mesa = (_NEW_VIEWPORT | _NEW_SCISSOR | _NEW_BUFFERS), - .brw = 0, + .brw = BRW_NEW_BATCH, .cache = 0 }, .prepare = upload_sf_vp }; -struct brw_sf_unit_key { - unsigned int total_grf; - unsigned int urb_entry_read_length; - - unsigned int nr_urb_entries, urb_size, sfsize; - - GLenum front_face, cull_face; - unsigned pv_first:1; - unsigned scissor:1; - unsigned line_smooth:1; - unsigned point_sprite:1; - unsigned use_vs_point_size:1; - unsigned render_to_fbo:1; - float line_width; - float point_size; -}; - -static void -sf_unit_populate_key(struct brw_context *brw, struct brw_sf_unit_key *key) -{ - struct gl_context *ctx = &brw->intel.ctx; - memset(key, 0, sizeof(*key)); - - /* CACHE_NEW_SF_PROG */ - key->total_grf = brw->sf.prog_data->total_grf; - key->urb_entry_read_length = brw->sf.prog_data->urb_read_length; - - /* BRW_NEW_URB_FENCE */ - key->nr_urb_entries = brw->urb.nr_sf_entries; - key->urb_size = brw->urb.vsize; - key->sfsize = brw->urb.sfsize; - - key->scissor = ctx->Scissor.Enabled; - key->front_face = ctx->Polygon.FrontFace; - - if (ctx->Polygon.CullFlag) - key->cull_face = ctx->Polygon.CullFaceMode; - else - key->cull_face = GL_NONE; - - key->line_width = ctx->Line.Width; - key->line_smooth = ctx->Line.SmoothFlag; - - key->point_sprite = ctx->Point.PointSprite; - key->point_size = CLAMP(ctx->Point.Size, ctx->Point.MinSize, ctx->Point.MaxSize); - key->use_vs_point_size = (ctx->VertexProgram.PointSizeEnabled || - ctx->Point._Attenuated); - - /* _NEW_LIGHT */ - key->pv_first = (ctx->Light.ProvokingVertex == GL_FIRST_VERTEX_CONVENTION); - - key->render_to_fbo = brw->intel.ctx.DrawBuffer->Name != 0; -} - -static drm_intel_bo * -sf_unit_create_from_key(struct brw_context *brw, struct brw_sf_unit_key *key, - drm_intel_bo **reloc_bufs) +static void upload_sf_unit( struct brw_context *brw ) { struct intel_context *intel = &brw->intel; - struct brw_sf_unit_state sf; - drm_intel_bo *bo; + struct gl_context *ctx = &intel->ctx; + struct brw_sf_unit_state *sf; + drm_intel_bo *bo = intel->batch.bo; int chipset_max_threads; - memset(&sf, 0, sizeof(sf)); + bool render_to_fbo = brw->intel.ctx.DrawBuffer->Name != 0; + + sf = brw_state_batch(brw, sizeof(*sf), 64, &brw->sf.state_offset); - sf.thread0.grf_reg_count = ALIGN(key->total_grf, 16) / 16 - 1; - sf.thread0.kernel_start_pointer = brw->sf.prog_bo->offset >> 6; /* reloc */ + memset(sf, 0, sizeof(*sf)); + + /* CACHE_NEW_SF_PROG */ + sf->thread0.grf_reg_count = ALIGN(brw->sf.prog_data->total_grf, 16) / 16 - 1; + sf->thread0.kernel_start_pointer = brw->sf.prog_bo->offset >> 6; /* reloc */ - sf.thread1.floating_point_mode = BRW_FLOATING_POINT_NON_IEEE_754; + sf->thread1.floating_point_mode = BRW_FLOATING_POINT_NON_IEEE_754; - sf.thread3.dispatch_grf_start_reg = 3; + sf->thread3.dispatch_grf_start_reg = 3; if (intel->gen == 5) - sf.thread3.urb_entry_read_offset = 3; + sf->thread3.urb_entry_read_offset = 3; else - sf.thread3.urb_entry_read_offset = 1; + sf->thread3.urb_entry_read_offset = 1; - sf.thread3.urb_entry_read_length = key->urb_entry_read_length; + /* CACHE_NEW_SF_PROG */ + sf->thread3.urb_entry_read_length = brw->sf.prog_data->urb_read_length; - sf.thread4.nr_urb_entries = key->nr_urb_entries; - sf.thread4.urb_entry_allocation_size = key->sfsize - 1; + /* BRW_NEW_URB_FENCE */ + sf->thread4.nr_urb_entries = brw->urb.nr_sf_entries; + sf->thread4.urb_entry_allocation_size = brw->urb.sfsize - 1; /* Each SF thread produces 1 PUE, and there can be up to 24 (Pre-Ironlake) or * 48 (Ironlake) threads. @@ -208,46 +166,51 @@ sf_unit_create_from_key(struct brw_context *brw, struct brw_sf_unit_key *key, else chipset_max_threads = 24; - sf.thread4.max_threads = MIN2(chipset_max_threads, key->nr_urb_entries) - 1; + /* BRW_NEW_URB_FENCE */ + sf->thread4.max_threads = MIN2(chipset_max_threads, + brw->urb.nr_sf_entries) - 1; if (unlikely(INTEL_DEBUG & DEBUG_SINGLE_THREAD)) - sf.thread4.max_threads = 0; + sf->thread4.max_threads = 0; if (unlikely(INTEL_DEBUG & DEBUG_STATS)) - sf.thread4.stats_enable = 1; + sf->thread4.stats_enable = 1; /* CACHE_NEW_SF_VP */ - sf.sf5.sf_viewport_state_offset = brw->sf.vp_bo->offset >> 5; /* reloc */ + sf->sf5.sf_viewport_state_offset = (brw->sf.vp_bo->offset + + brw->sf.vp_offset) >> 5; /* reloc */ - sf.sf5.viewport_transform = 1; + sf->sf5.viewport_transform = 1; /* _NEW_SCISSOR */ - if (key->scissor) - sf.sf6.scissor = 1; + if (ctx->Scissor.Enabled) + sf->sf6.scissor = 1; /* _NEW_POLYGON */ - if (key->front_face == GL_CCW) - sf.sf5.front_winding = BRW_FRONTWINDING_CCW; + if (ctx->Polygon.FrontFace == GL_CCW) + sf->sf5.front_winding = BRW_FRONTWINDING_CCW; else - sf.sf5.front_winding = BRW_FRONTWINDING_CW; + sf->sf5.front_winding = BRW_FRONTWINDING_CW; - /* The viewport is inverted for rendering to a FBO, and that inverts + /* _NEW_BUFFERS + * The viewport is inverted for rendering to a FBO, and that inverts * polygon front/back orientation. */ - sf.sf5.front_winding ^= key->render_to_fbo; + sf->sf5.front_winding ^= render_to_fbo; - switch (key->cull_face) { + /* _NEW_POLYGON */ + switch (ctx->Polygon.CullFlag ? ctx->Polygon.CullFaceMode : GL_NONE) { case GL_FRONT: - sf.sf6.cull_mode = BRW_CULLMODE_FRONT; + sf->sf6.cull_mode = BRW_CULLMODE_FRONT; break; case GL_BACK: - sf.sf6.cull_mode = BRW_CULLMODE_BACK; + sf->sf6.cull_mode = BRW_CULLMODE_BACK; break; case GL_FRONT_AND_BACK: - sf.sf6.cull_mode = BRW_CULLMODE_BOTH; + sf->sf6.cull_mode = BRW_CULLMODE_BOTH; break; case GL_NONE: - sf.sf6.cull_mode = BRW_CULLMODE_NONE; + sf->sf6.cull_mode = BRW_CULLMODE_NONE; break; default: assert(0); @@ -256,19 +219,18 @@ sf_unit_create_from_key(struct brw_context *brw, struct brw_sf_unit_key *key, /* _NEW_LINE */ /* XXX use ctx->Const.Min/MaxLineWidth here */ - sf.sf6.line_width = CLAMP(key->line_width, 1.0, 5.0) * (1<<1); + sf->sf6.line_width = CLAMP(ctx->Line.Width, 1.0, 5.0) * (1<<1); - sf.sf6.line_endcap_aa_region_width = 1; - if (key->line_smooth) - sf.sf6.aa_enable = 1; - else if (sf.sf6.line_width <= 0x2) - sf.sf6.line_width = 0; + sf->sf6.line_endcap_aa_region_width = 1; + if (ctx->Line.SmoothFlag) + sf->sf6.aa_enable = 1; + else if (sf->sf6.line_width <= 0x2) + sf->sf6.line_width = 0; /* _NEW_BUFFERS */ - key->render_to_fbo = brw->intel.ctx.DrawBuffer->Name != 0; - if (!key->render_to_fbo) { + if (!render_to_fbo) { /* Rendering to an OpenGL window */ - sf.sf6.point_rast_rule = BRW_RASTRULE_UPPER_RIGHT; + sf->sf6.point_rast_rule = BRW_RASTRULE_UPPER_RIGHT; } else { /* If rendering to an FBO, the pixel coordinate system is @@ -290,74 +252,56 @@ sf_unit_create_from_key(struct brw_context *brw, struct brw_sf_unit_key *key, * incorrectly, which is no worse than occurs without * the value, so we're using it here. */ - sf.sf6.point_rast_rule = BRW_RASTRULE_LOWER_RIGHT; + sf->sf6.point_rast_rule = BRW_RASTRULE_LOWER_RIGHT; } /* XXX clamp max depends on AA vs. non-AA */ /* _NEW_POINT */ - sf.sf7.sprite_point = key->point_sprite; - sf.sf7.point_size = CLAMP(rint(key->point_size), 1, 255) * (1<<3); - sf.sf7.use_point_size_state = !key->use_vs_point_size; - sf.sf7.aa_line_distance_mode = 0; + sf->sf7.sprite_point = ctx->Point.PointSprite; + sf->sf7.point_size = CLAMP(rint(CLAMP(ctx->Point.Size, + ctx->Point.MinSize, + ctx->Point.MaxSize)), 1, 255) * (1<<3); + sf->sf7.use_point_size_state = !(ctx->VertexProgram.PointSizeEnabled || + ctx->Point._Attenuated); + sf->sf7.aa_line_distance_mode = 0; /* might be BRW_NEW_PRIMITIVE if we have to adjust pv for polygons: + * _NEW_LIGHT */ - if (!key->pv_first) { - sf.sf7.trifan_pv = 2; - sf.sf7.linestrip_pv = 1; - sf.sf7.tristrip_pv = 2; + if (ctx->Light.ProvokingVertex != GL_FIRST_VERTEX_CONVENTION) { + sf->sf7.trifan_pv = 2; + sf->sf7.linestrip_pv = 1; + sf->sf7.tristrip_pv = 2; } else { - sf.sf7.trifan_pv = 1; - sf.sf7.linestrip_pv = 0; - sf.sf7.tristrip_pv = 0; + sf->sf7.trifan_pv = 1; + sf->sf7.linestrip_pv = 0; + sf->sf7.tristrip_pv = 0; } - sf.sf7.line_last_pixel_enable = 0; + sf->sf7.line_last_pixel_enable = 0; /* Set bias for OpenGL rasterization rules: */ - sf.sf6.dest_org_vbias = 0x8; - sf.sf6.dest_org_hbias = 0x8; - - bo = brw_upload_cache(&brw->cache, BRW_SF_UNIT, - key, sizeof(*key), - reloc_bufs, 2, - &sf, sizeof(sf)); + sf->sf6.dest_org_vbias = 0x8; + sf->sf6.dest_org_hbias = 0x8; /* STATE_PREFETCH command description describes this state as being * something loaded through the GPE (L2 ISC), so it's INSTRUCTION domain. */ /* Emit SF program relocation */ - drm_intel_bo_emit_reloc(bo, offsetof(struct brw_sf_unit_state, thread0), - brw->sf.prog_bo, sf.thread0.grf_reg_count << 1, + drm_intel_bo_emit_reloc(bo, (brw->sf.state_offset + + offsetof(struct brw_sf_unit_state, thread0)), + brw->sf.prog_bo, sf->thread0.grf_reg_count << 1, I915_GEM_DOMAIN_INSTRUCTION, 0); /* Emit SF viewport relocation */ - drm_intel_bo_emit_reloc(bo, offsetof(struct brw_sf_unit_state, sf5), - brw->sf.vp_bo, (sf.sf5.front_winding | - (sf.sf5.viewport_transform << 1)), + drm_intel_bo_emit_reloc(bo, (brw->sf.state_offset + + offsetof(struct brw_sf_unit_state, sf5)), + intel->batch.bo, (brw->sf.vp_offset | + sf->sf5.front_winding | + (sf->sf5.viewport_transform << 1)), I915_GEM_DOMAIN_INSTRUCTION, 0); - return bo; -} - -static void upload_sf_unit( struct brw_context *brw ) -{ - struct brw_sf_unit_key key; - drm_intel_bo *reloc_bufs[2]; - - sf_unit_populate_key(brw, &key); - - reloc_bufs[0] = brw->sf.prog_bo; - reloc_bufs[1] = brw->sf.vp_bo; - - drm_intel_bo_unreference(brw->sf.state_bo); - brw->sf.state_bo = brw_search_cache(&brw->cache, BRW_SF_UNIT, - &key, sizeof(key), - reloc_bufs, 2, - NULL); - if (brw->sf.state_bo == NULL) { - brw->sf.state_bo = sf_unit_create_from_key(brw, &key, reloc_bufs); - } + brw->state.dirty.cache |= CACHE_NEW_SF_UNIT; } const struct brw_tracked_state brw_sf_unit = { @@ -368,7 +312,8 @@ const struct brw_tracked_state brw_sf_unit = { _NEW_POINT | _NEW_SCISSOR | _NEW_BUFFERS), - .brw = BRW_NEW_URB_FENCE, + .brw = (BRW_NEW_BATCH | + BRW_NEW_URB_FENCE), .cache = (CACHE_NEW_SF_VP | CACHE_NEW_SF_PROG) }, diff --git a/src/mesa/drivers/dri/i965/brw_state_dump.c b/src/mesa/drivers/dri/i965/brw_state_dump.c index fdce79da2f4..b393259c915 100644 --- a/src/mesa/drivers/dri/i965/brw_state_dump.c +++ b/src/mesa/drivers/dri/i965/brw_state_dump.c @@ -195,8 +195,8 @@ static void dump_sf_viewport_state(struct brw_context *brw) drm_intel_bo_map(brw->sf.vp_bo, GL_FALSE); - vp = brw->sf.vp_bo->virtual; - vp_off = brw->sf.vp_bo->offset; + vp = brw->sf.vp_bo->virtual + brw->sf.vp_offset; + vp_off = brw->sf.vp_bo->offset + brw->sf.vp_offset; state_out(name, vp, vp_off, 0, "m00 = %f\n", vp->viewport.m00); state_out(name, vp, vp_off, 1, "m11 = %f\n", vp->viewport.m11); diff --git a/src/mesa/drivers/dri/i965/brw_structs.h b/src/mesa/drivers/dri/i965/brw_structs.h index 6687a89e80a..8d4797fb675 100644 --- a/src/mesa/drivers/dri/i965/brw_structs.h +++ b/src/mesa/drivers/dri/i965/brw_structs.h @@ -80,25 +80,6 @@ struct brw_3d_control GLuint dword3; }; - -struct brw_3d_primitive -{ - struct - { - GLuint length:8; - GLuint pad:2; - GLuint topology:5; - GLuint indexed:1; - GLuint opcode:16; - } header; - - GLuint verts_per_instance; - GLuint start_vert_location; - GLuint instance_count; - GLuint start_instance_location; - GLuint base_vert_location; -}; - /* These seem to be passed around as function args, so it works out * better to keep them as #defines: */ @@ -1247,31 +1228,6 @@ struct brw_surface_state }; - -struct brw_vertex_buffer_state -{ - struct { - GLuint pitch:11; - GLuint pad:15; - GLuint access_type:1; - GLuint vb_index:5; - } vb0; - - GLuint start_addr; - GLuint max_index; -#if 1 - GLuint instance_data_step_rate; /* not included for sequential/random vertices? */ -#endif -}; - -#define BRW_VBP_MAX 17 - -struct brw_vb_array_state { - struct header header; - struct brw_vertex_buffer_state vb[BRW_VBP_MAX]; -}; - - struct brw_vertex_element_state { struct diff --git a/src/mesa/drivers/dri/i965/brw_vs.c b/src/mesa/drivers/dri/i965/brw_vs.c index 6ae75d22c14..63ae13191f9 100644 --- a/src/mesa/drivers/dri/i965/brw_vs.c +++ b/src/mesa/drivers/dri/i965/brw_vs.c @@ -132,6 +132,9 @@ static void brw_upload_vs_prog(struct brw_context *brw) ctx->Polygon.BackMode != GL_FILL); key.two_side_color = (ctx->Light.Enabled && ctx->Light.Model.TwoSide); + /* _NEW_LIGHT | _NEW_BUFFERS */ + key.clamp_vertex_color = ctx->Light._ClampVertexColor; + /* _NEW_POINT */ if (ctx->Point.PointSprite) { for (i = 0; i < 8; i++) { @@ -158,7 +161,8 @@ static void brw_upload_vs_prog(struct brw_context *brw) */ const struct brw_tracked_state brw_vs_prog = { .dirty = { - .mesa = _NEW_TRANSFORM | _NEW_POLYGON | _NEW_POINT | _NEW_LIGHT, + .mesa = (_NEW_TRANSFORM | _NEW_POLYGON | _NEW_POINT | _NEW_LIGHT | + _NEW_BUFFERS), .brw = BRW_NEW_VERTEX_PROGRAM, .cache = 0 }, diff --git a/src/mesa/drivers/dri/i965/brw_vs.h b/src/mesa/drivers/dri/i965/brw_vs.h index 0b88cc1ec76..7ca84a54b01 100644 --- a/src/mesa/drivers/dri/i965/brw_vs.h +++ b/src/mesa/drivers/dri/i965/brw_vs.h @@ -45,6 +45,7 @@ struct brw_vs_prog_key { GLuint copy_edgeflag:1; GLuint point_coord_replace:8; GLuint two_side_color: 1; + GLuint clamp_vertex_color:1; }; diff --git a/src/mesa/drivers/dri/i965/brw_vs_emit.c b/src/mesa/drivers/dri/i965/brw_vs_emit.c index acacf374b75..dd4e1e6c6ad 100644 --- a/src/mesa/drivers/dri/i965/brw_vs_emit.c +++ b/src/mesa/drivers/dri/i965/brw_vs_emit.c @@ -437,8 +437,14 @@ static void brw_vs_alloc_regs( struct brw_vs_compile *c ) if (c->key.nr_userclip) header_regs += 2; + /* Each attribute is 16 bytes (1 vec4), so dividing by 8 gives us the + * number of 128-byte (1024-bit) units. + */ c->prog_data.urb_entry_size = (attributes_in_vue + header_regs + 7) / 8; } else if (intel->gen == 5) + /* Each attribute is 16 bytes (1 vec4), so dividing by 4 gives us the + * number of 64-byte (512-bit) units. + */ c->prog_data.urb_entry_size = (attributes_in_vue + 6 + 3) / 4; else c->prog_data.urb_entry_size = (attributes_in_vue + 2 + 3) / 4; @@ -2215,7 +2221,8 @@ void brw_vs_emit(struct brw_vs_compile *c ) * instructions. Instead, we directly modify the header * of the last (already stored) instruction. */ - if (inst->DstReg.File == PROGRAM_OUTPUT) { + if (inst->DstReg.File == PROGRAM_OUTPUT && + c->key.clamp_vertex_color) { if ((inst->DstReg.Index == VERT_RESULT_COL0) || (inst->DstReg.Index == VERT_RESULT_COL1) || (inst->DstReg.Index == VERT_RESULT_BFC0) diff --git a/src/mesa/drivers/dri/i965/brw_vtbl.c b/src/mesa/drivers/dri/i965/brw_vtbl.c index 152ee141568..ce8712a260f 100644 --- a/src/mesa/drivers/dri/i965/brw_vtbl.c +++ b/src/mesa/drivers/dri/i965/brw_vtbl.c @@ -115,13 +115,11 @@ static void brw_set_draw_region( struct intel_context *intel, { struct brw_context *brw = brw_context(&intel->ctx); - /* release old color/depth regions */ - if (brw->state.depth_region != depth_region) + if (brw->state.depth_region != depth_region) { brw->state.dirty.brw |= BRW_NEW_DEPTH_BUFFER; - intel_region_release(&brw->state.depth_region); - - /* reference new color/depth regions */ - intel_region_reference(&brw->state.depth_region, depth_region); + intel_region_release(&brw->state.depth_region); + intel_region_reference(&brw->state.depth_region, depth_region); + } } diff --git a/src/mesa/drivers/dri/i965/brw_wm.c b/src/mesa/drivers/dri/i965/brw_wm.c index ca51d1599a4..65af227d831 100644 --- a/src/mesa/drivers/dri/i965/brw_wm.c +++ b/src/mesa/drivers/dri/i965/brw_wm.c @@ -185,6 +185,7 @@ static void do_wm_prog( struct brw_context *brw, struct brw_fragment_program *fp, struct brw_wm_prog_key *key) { + struct intel_context *intel = &brw->intel; struct brw_wm_compile *c; const GLuint *program; GLuint program_size; @@ -238,12 +239,26 @@ static void do_wm_prog( struct brw_context *brw, /* Scratch space is used for register spilling */ if (c->last_scratch) { + uint32_t total_scratch; + /* Per-thread scratch space is power-of-two sized. */ for (c->prog_data.total_scratch = 1024; c->prog_data.total_scratch <= c->last_scratch; c->prog_data.total_scratch *= 2) { /* empty */ } + total_scratch = c->prog_data.total_scratch * brw->wm_max_threads; + + if (brw->wm.scratch_bo && total_scratch > brw->wm.scratch_bo->size) { + drm_intel_bo_unreference(brw->wm.scratch_bo); + brw->wm.scratch_bo = NULL; + } + if (brw->wm.scratch_bo == NULL) { + brw->wm.scratch_bo = drm_intel_bo_alloc(intel->bufmgr, + "wm scratch", + total_scratch, + 4096); + } } else { c->prog_data.total_scratch = 0; @@ -348,6 +363,9 @@ static void brw_wm_populate_key( struct brw_context *brw, /* _NEW_HINT */ key->linear_color = (ctx->Hint.PerspectiveCorrection == GL_FASTEST); + /* _NEW_FRAG_CLAMP | _NEW_BUFFERS */ + key->clamp_fragment_color = ctx->Color._ClampFragmentColor; + /* _NEW_TEXTURE */ for (i = 0; i < BRW_MAX_TEX_UNIT; i++) { const struct gl_texture_unit *unit = &ctx->Texture.Unit[i]; @@ -370,14 +388,14 @@ static void brw_wm_populate_key( struct brw_context *brw, * well and our shadow compares always return the result in * all 4 channels. */ - if (t->CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB) { - if (t->DepthMode == GL_ALPHA) { + if (t->Sampler.CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB) { + if (t->Sampler.DepthMode == GL_ALPHA) { swizzles[0] = SWIZZLE_ZERO; swizzles[1] = SWIZZLE_ZERO; swizzles[2] = SWIZZLE_ZERO; - } else if (t->DepthMode == GL_LUMINANCE) { + } else if (t->Sampler.DepthMode == GL_LUMINANCE) { swizzles[3] = SWIZZLE_ONE; - } else if (t->DepthMode == GL_RED) { + } else if (t->Sampler.DepthMode == GL_RED) { /* See table 3.23 of the GL 3.0 spec. */ swizzles[1] = SWIZZLE_ZERO; swizzles[2] = SWIZZLE_ZERO; @@ -471,6 +489,7 @@ const struct brw_tracked_state brw_wm_prog = { _NEW_POLYGON | _NEW_LINE | _NEW_LIGHT | + _NEW_FRAG_CLAMP | _NEW_BUFFERS | _NEW_TEXTURE), .brw = (BRW_NEW_FRAGMENT_PROGRAM | diff --git a/src/mesa/drivers/dri/i965/brw_wm.h b/src/mesa/drivers/dri/i965/brw_wm.h index c40d7bfae0a..40659f26025 100644 --- a/src/mesa/drivers/dri/i965/brw_wm.h +++ b/src/mesa/drivers/dri/i965/brw_wm.h @@ -65,6 +65,7 @@ struct brw_wm_prog_key { GLuint nr_color_regions:5; GLuint render_to_fbo:1; GLuint alpha_test:1; + GLuint clamp_fragment_color:1; GLbitfield proj_attrib_mask; /**< one bit per fragment program attribute */ GLuint shadowtex_mask:16; diff --git a/src/mesa/drivers/dri/i965/brw_wm_emit.c b/src/mesa/drivers/dri/i965/brw_wm_emit.c index ecfd21d4399..cdc1f367e5c 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_emit.c +++ b/src/mesa/drivers/dri/i965/brw_wm_emit.c @@ -1408,6 +1408,9 @@ void emit_fb_write(struct brw_wm_compile *c, */ brw_push_insn_state(p); + if (c->key.clamp_fragment_color) + brw_set_saturate(p, 1); + for (channel = 0; channel < 4; channel++) { if (intel->gen >= 6) { /* gen6 SIMD16 single source DP write looks like: @@ -1459,6 +1462,9 @@ void emit_fb_write(struct brw_wm_compile *c, } } } + + brw_set_saturate(p, 0); + /* skip over the regs populated above: */ if (c->dispatch_width == 16) diff --git a/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c b/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c index 30672b4251b..cfc30d8613f 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c @@ -288,26 +288,26 @@ brw_wm_sampler_populate_key(struct brw_context *brw, entry->seamless_cube_map = (texObj->Target == GL_TEXTURE_CUBE_MAP) ? ctx->Texture.CubeMapSeamless : GL_FALSE; - entry->wrap_r = texObj->WrapR; - entry->wrap_s = texObj->WrapS; - entry->wrap_t = texObj->WrapT; - - entry->maxlod = texObj->MaxLod; - entry->minlod = texObj->MinLod; - entry->lod_bias = texUnit->LodBias + texObj->LodBias; - entry->max_aniso = texObj->MaxAnisotropy; - entry->minfilter = texObj->MinFilter; - entry->magfilter = texObj->MagFilter; - entry->comparemode = texObj->CompareMode; - entry->comparefunc = texObj->CompareFunc; + entry->wrap_r = texObj->Sampler.WrapR; + entry->wrap_s = texObj->Sampler.WrapS; + entry->wrap_t = texObj->Sampler.WrapT; + + entry->maxlod = texObj->Sampler.MaxLod; + entry->minlod = texObj->Sampler.MinLod; + entry->lod_bias = texUnit->LodBias + texObj->Sampler.LodBias; + entry->max_aniso = texObj->Sampler.MaxAnisotropy; + entry->minfilter = texObj->Sampler.MinFilter; + entry->magfilter = texObj->Sampler.MagFilter; + entry->comparemode = texObj->Sampler.CompareMode; + entry->comparefunc = texObj->Sampler.CompareFunc; drm_intel_bo_unreference(brw->wm.sdc_bo[unit]); if (firstImage->_BaseFormat == GL_DEPTH_COMPONENT) { float bordercolor[4] = { - texObj->BorderColor.f[0], - texObj->BorderColor.f[0], - texObj->BorderColor.f[0], - texObj->BorderColor.f[0] + texObj->Sampler.BorderColor.f[0], + texObj->Sampler.BorderColor.f[0], + texObj->Sampler.BorderColor.f[0], + texObj->Sampler.BorderColor.f[0] }; /* GL specs that border color for depth textures is taken from the * R channel, while the hardware uses A. Spam R into all the @@ -316,7 +316,7 @@ brw_wm_sampler_populate_key(struct brw_context *brw, brw->wm.sdc_bo[unit] = upload_default_color(brw, bordercolor); } else { brw->wm.sdc_bo[unit] = upload_default_color(brw, - texObj->BorderColor.f); + texObj->Sampler.BorderColor.f); } key->sampler_count = unit + 1; } diff --git a/src/mesa/drivers/dri/i965/brw_wm_state.c b/src/mesa/drivers/dri/i965/brw_wm_state.c index 5b5afc4626b..be4b260a5ff 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_state.c @@ -278,30 +278,10 @@ wm_unit_create_from_key(struct brw_context *brw, struct brw_wm_unit_key *key, static void upload_wm_unit( struct brw_context *brw ) { - struct intel_context *intel = &brw->intel; struct brw_wm_unit_key key; drm_intel_bo *reloc_bufs[3]; wm_unit_populate_key(brw, &key); - /* Allocate the necessary scratch space if we haven't already. Don't - * bother reducing the allocation later, since we use scratch so - * rarely. - */ - if (key.total_scratch) { - GLuint total = key.total_scratch * brw->wm_max_threads; - - if (brw->wm.scratch_bo && total > brw->wm.scratch_bo->size) { - drm_intel_bo_unreference(brw->wm.scratch_bo); - brw->wm.scratch_bo = NULL; - } - if (brw->wm.scratch_bo == NULL) { - brw->wm.scratch_bo = drm_intel_bo_alloc(intel->bufmgr, - "wm scratch", - total, - 4096); - } - } - reloc_bufs[0] = brw->wm.prog_bo; reloc_bufs[1] = brw->wm.scratch_bo; reloc_bufs[2] = brw->wm.sampler_bo; diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c index 1010d9f6f9c..e3396a3cbd4 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c @@ -100,18 +100,37 @@ static uint32_t brw_format_for_mesa_format[MESA_FORMAT_COUNT] = [MESA_FORMAT_SLA8] = BRW_SURFACEFORMAT_L8A8_UNORM_SRGB, [MESA_FORMAT_SL8] = BRW_SURFACEFORMAT_L8_UNORM_SRGB, [MESA_FORMAT_DUDV8] = BRW_SURFACEFORMAT_R8G8_SNORM, + [MESA_FORMAT_SIGNED_R8] = BRW_SURFACEFORMAT_R8_SNORM, + [MESA_FORMAT_SIGNED_RG88_REV] = BRW_SURFACEFORMAT_R8G8_SNORM, [MESA_FORMAT_SIGNED_RGBA8888_REV] = BRW_SURFACEFORMAT_R8G8B8A8_SNORM, + [MESA_FORMAT_SIGNED_R16] = BRW_SURFACEFORMAT_R16_SNORM, + [MESA_FORMAT_SIGNED_GR1616] = BRW_SURFACEFORMAT_R16G16_SNORM, + [MESA_FORMAT_RGBA_FLOAT32] = BRW_SURFACEFORMAT_R32G32B32A32_FLOAT, + [MESA_FORMAT_RG_FLOAT32] = BRW_SURFACEFORMAT_R32G32_FLOAT, + [MESA_FORMAT_R_FLOAT32] = BRW_SURFACEFORMAT_R32_FLOAT, + [MESA_FORMAT_INTENSITY_FLOAT32] = BRW_SURFACEFORMAT_I32_FLOAT, + [MESA_FORMAT_LUMINANCE_FLOAT32] = BRW_SURFACEFORMAT_L32_FLOAT, + [MESA_FORMAT_ALPHA_FLOAT32] = BRW_SURFACEFORMAT_A32_FLOAT, + [MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32] = BRW_SURFACEFORMAT_L32A32_FLOAT, }; bool brw_render_target_supported(gl_format format) { + /* These are not color render targets like the table holds, but we + * ask the question for FBO completeness. + */ if (format == MESA_FORMAT_S8_Z24 || format == MESA_FORMAT_X8_Z24 || format == MESA_FORMAT_Z16) { return true; } + /* The value of this BRW_SURFACEFORMAT is 0, so hardcode it. + */ + if (format == MESA_FORMAT_RGBA_FLOAT32) + return true; + /* Not exactly true, as some of those formats are not renderable. * But at least we know how to translate them. */ @@ -155,6 +174,13 @@ static GLuint translate_tex_format( gl_format mesa_format, return brw_format_for_mesa_format[mesa_format]; else if (srgb_decode == GL_SKIP_DECODE_EXT) return brw_format_for_mesa_format[_mesa_get_srgb_format_linear(mesa_format)]; + + case MESA_FORMAT_RGBA_FLOAT32: + /* The value of this BRW_SURFACEFORMAT is 0, which tricks the + * assertion below. + */ + return BRW_SURFACEFORMAT_R32G32B32A32_FLOAT; + default: assert(brw_format_for_mesa_format[mesa_format] != 0); return brw_format_for_mesa_format[mesa_format]; @@ -197,8 +223,9 @@ brw_update_texture_surface( struct gl_context *ctx, GLuint unit ) surf->ss0.mipmap_layout_mode = BRW_SURFACE_MIPMAPLAYOUT_BELOW; surf->ss0.surface_type = translate_tex_target(tObj->Target); surf->ss0.surface_format = translate_tex_format(firstImage->TexFormat, - firstImage->InternalFormat, - tObj->DepthMode, tObj->sRGBDecode); + firstImage->InternalFormat, + tObj->Sampler.DepthMode, + tObj->Sampler.sRGBDecode); /* This is ok for all textures with channel width 8bit or less: */ @@ -425,6 +452,14 @@ brw_update_renderbuffer_surface(struct brw_context *brw, */ surf->ss0.surface_format = BRW_SURFACEFORMAT_B8G8R8A8_UNORM; break; + case MESA_FORMAT_INTENSITY_FLOAT32: + case MESA_FORMAT_LUMINANCE_FLOAT32: + /* For these formats, we just need to read/write the first + * channel into R, which is to say that we just treat them as + * GL_RED. + */ + surf->ss0.surface_format = BRW_SURFACEFORMAT_R32_FLOAT; + break; case MESA_FORMAT_SARGB8: /* without GL_EXT_framebuffer_sRGB we shouldn't bind sRGB surfaces to the blend/update as sRGB */ @@ -434,8 +469,8 @@ brw_update_renderbuffer_surface(struct brw_context *brw, surf->ss0.surface_format = BRW_SURFACEFORMAT_B8G8R8A8_UNORM; break; default: + assert(brw_render_target_supported(irb->Base.Format)); surf->ss0.surface_format = brw_format_for_mesa_format[irb->Base.Format]; - assert(surf->ss0.surface_format != 0); } surf->ss0.surface_type = BRW_SURFACE_2D; diff --git a/src/mesa/drivers/dri/i965/gen6_cc.c b/src/mesa/drivers/dri/i965/gen6_cc.c index d1648a102d4..1b935fb5e70 100644 --- a/src/mesa/drivers/dri/i965/gen6_cc.c +++ b/src/mesa/drivers/dri/i965/gen6_cc.c @@ -210,10 +210,10 @@ color_calc_state_populate_key(struct brw_context *brw, if (ctx->Color.AlphaEnabled) key->alpha_ref = ctx->Color.AlphaRef; - key->blend_constant_color[0] = ctx->Color.BlendColor[0]; - key->blend_constant_color[1] = ctx->Color.BlendColor[1]; - key->blend_constant_color[2] = ctx->Color.BlendColor[2]; - key->blend_constant_color[3] = ctx->Color.BlendColor[3]; + key->blend_constant_color[0] = ctx->Color.BlendColorUnclamped[0]; + key->blend_constant_color[1] = ctx->Color.BlendColorUnclamped[1]; + key->blend_constant_color[2] = ctx->Color.BlendColorUnclamped[2]; + key->blend_constant_color[3] = ctx->Color.BlendColorUnclamped[3]; } /** diff --git a/src/mesa/drivers/dri/i965/gen6_gs_state.c b/src/mesa/drivers/dri/i965/gen6_gs_state.c index 7296c7cd1b0..c1d0a739394 100644 --- a/src/mesa/drivers/dri/i965/gen6_gs_state.c +++ b/src/mesa/drivers/dri/i965/gen6_gs_state.c @@ -44,38 +44,22 @@ upload_gs_state(struct brw_context *brw) OUT_BATCH(0); ADVANCE_BATCH(); - if (brw->gs.prog_bo) { - BEGIN_BATCH(7); - OUT_BATCH(_3DSTATE_GS << 16 | (7 - 2)); - OUT_RELOC(brw->gs.prog_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); - OUT_BATCH(GEN6_GS_SPF_MODE | - (0 << GEN6_GS_SAMPLER_COUNT_SHIFT) | - (0 << GEN6_GS_BINDING_TABLE_ENTRY_COUNT_SHIFT)); - OUT_BATCH(0); /* scratch space base offset */ - OUT_BATCH((1 << GEN6_GS_DISPATCH_START_GRF_SHIFT) | - (brw->gs.prog_data->urb_read_length << GEN6_GS_URB_READ_LENGTH_SHIFT) | - (0 << GEN6_GS_URB_ENTRY_READ_OFFSET_SHIFT)); - OUT_BATCH((0 << GEN6_GS_MAX_THREADS_SHIFT) | - GEN6_GS_STATISTICS_ENABLE | - GEN6_GS_RENDERING_ENABLE); - OUT_BATCH(GEN6_GS_ENABLE); - ADVANCE_BATCH(); - } else { - BEGIN_BATCH(7); - OUT_BATCH(_3DSTATE_GS << 16 | (7 - 2)); - OUT_BATCH(0); /* prog_bo */ - OUT_BATCH((0 << GEN6_GS_SAMPLER_COUNT_SHIFT) | - (0 << GEN6_GS_BINDING_TABLE_ENTRY_COUNT_SHIFT)); - OUT_BATCH(0); /* scratch space base offset */ - OUT_BATCH((1 << GEN6_GS_DISPATCH_START_GRF_SHIFT) | - (0 << GEN6_GS_URB_READ_LENGTH_SHIFT) | - (0 << GEN6_GS_URB_ENTRY_READ_OFFSET_SHIFT)); - OUT_BATCH((0 << GEN6_GS_MAX_THREADS_SHIFT) | - GEN6_GS_STATISTICS_ENABLE | - GEN6_GS_RENDERING_ENABLE); - OUT_BATCH(0); - ADVANCE_BATCH(); - } + // GS should never be used on Gen6. Disable it. + assert(brw->gs.prog_bo == NULL); + BEGIN_BATCH(7); + OUT_BATCH(_3DSTATE_GS << 16 | (7 - 2)); + OUT_BATCH(0); /* prog_bo */ + OUT_BATCH((0 << GEN6_GS_SAMPLER_COUNT_SHIFT) | + (0 << GEN6_GS_BINDING_TABLE_ENTRY_COUNT_SHIFT)); + OUT_BATCH(0); /* scratch space base offset */ + OUT_BATCH((1 << GEN6_GS_DISPATCH_START_GRF_SHIFT) | + (0 << GEN6_GS_URB_READ_LENGTH_SHIFT) | + (0 << GEN6_GS_URB_ENTRY_READ_OFFSET_SHIFT)); + OUT_BATCH((0 << GEN6_GS_MAX_THREADS_SHIFT) | + GEN6_GS_STATISTICS_ENABLE | + GEN6_GS_RENDERING_ENABLE); + OUT_BATCH(0); + ADVANCE_BATCH(); } const struct brw_tracked_state gen6_gs_state = { diff --git a/src/mesa/drivers/dri/i965/gen6_urb.c b/src/mesa/drivers/dri/i965/gen6_urb.c index c3819f9b360..909e1bbe9ba 100644 --- a/src/mesa/drivers/dri/i965/gen6_urb.c +++ b/src/mesa/drivers/dri/i965/gen6_urb.c @@ -34,26 +34,25 @@ static void prepare_urb( struct brw_context *brw ) { - int urb_size, max_urb_entry; - struct intel_context *intel = &brw->intel; - - if (IS_GT1(intel->intelScreen->deviceID)) { - urb_size = 32 * 1024; - max_urb_entry = 128; - } else { - urb_size = 64 * 1024; - max_urb_entry = 256; - } - - brw->urb.nr_vs_entries = max_urb_entry; - brw->urb.nr_gs_entries = max_urb_entry; + int nr_vs_entries; /* CACHE_NEW_VS_PROG */ brw->urb.vs_size = MAX2(brw->vs.prog_data->urb_entry_size, 1); - if (2 * brw->urb.vs_size > urb_size) - brw->urb.nr_vs_entries = brw->urb.nr_gs_entries = - (urb_size ) / (2 * brw->urb.vs_size); + /* Calculate how many VS URB entries fit in the total URB size */ + nr_vs_entries = (brw->urb.size * 1024) / (brw->urb.vs_size * 128); + + if (nr_vs_entries > brw->urb.max_vs_handles) + nr_vs_entries = brw->urb.max_vs_handles; + + /* According to volume 2a, nr_vs_entries must be a multiple of 4. */ + brw->urb.nr_vs_entries = ROUND_DOWN_TO(nr_vs_entries, 4); + + /* Since we currently don't support Geometry Shaders, we always put the + * GS unit in passthrough mode and don't allocate it any URB space. + */ + brw->urb.nr_gs_entries = 0; + brw->urb.gs_size = 1; /* Incorrect, but with 0 GS entries it doesn't matter. */ } static void @@ -61,6 +60,7 @@ upload_urb(struct brw_context *brw) { struct intel_context *intel = &brw->intel; + assert(brw->urb.nr_vs_entries >= 24); assert(brw->urb.nr_vs_entries % 4 == 0); assert(brw->urb.nr_gs_entries % 4 == 0); /* GS requirement */ @@ -70,7 +70,7 @@ upload_urb(struct brw_context *brw) OUT_BATCH(_3DSTATE_URB << 16 | (3 - 2)); OUT_BATCH(((brw->urb.vs_size - 1) << GEN6_URB_VS_SIZE_SHIFT) | ((brw->urb.nr_vs_entries) << GEN6_URB_VS_ENTRIES_SHIFT)); - OUT_BATCH(((brw->urb.vs_size - 1) << GEN6_URB_GS_SIZE_SHIFT) | + OUT_BATCH(((brw->urb.gs_size - 1) << GEN6_URB_GS_SIZE_SHIFT) | ((brw->urb.nr_gs_entries) << GEN6_URB_GS_ENTRIES_SHIFT)); ADVANCE_BATCH(); } diff --git a/src/mesa/drivers/dri/i965/gen6_vs_state.c b/src/mesa/drivers/dri/i965/gen6_vs_state.c index ce0b8ea7eaa..a10cec318d6 100644 --- a/src/mesa/drivers/dri/i965/gen6_vs_state.c +++ b/src/mesa/drivers/dri/i965/gen6_vs_state.c @@ -137,7 +137,7 @@ upload_vs_state(struct brw_context *brw) (brw->vs.prog_data->urb_read_length << GEN6_VS_URB_READ_LENGTH_SHIFT) | (0 << GEN6_VS_URB_ENTRY_READ_OFFSET_SHIFT)); - OUT_BATCH(((60 - 1) << GEN6_VS_MAX_THREADS_SHIFT) | /* max 60 threads for gen6 */ + OUT_BATCH(((brw->vs_max_threads - 1) << GEN6_VS_MAX_THREADS_SHIFT) | GEN6_VS_STATISTICS_ENABLE | GEN6_VS_ENABLE); ADVANCE_BATCH(); diff --git a/src/mesa/drivers/dri/i965/gen6_wm_state.c b/src/mesa/drivers/dri/i965/gen6_wm_state.c index 78901ecac57..8215cb15a9c 100644 --- a/src/mesa/drivers/dri/i965/gen6_wm_state.c +++ b/src/mesa/drivers/dri/i965/gen6_wm_state.c @@ -144,7 +144,7 @@ upload_wm_state(struct brw_context *brw) dw4 |= (brw->wm.prog_data->first_curbe_grf << GEN6_WM_DISPATCH_START_GRF_SHIFT_0); - dw5 |= (40 - 1) << GEN6_WM_MAX_THREADS_SHIFT; + dw5 |= (brw->wm_max_threads - 1) << GEN6_WM_MAX_THREADS_SHIFT; /* CACHE_NEW_WM_PROG */ if (brw->wm.prog_data->dispatch_width == 8) @@ -184,7 +184,12 @@ upload_wm_state(struct brw_context *brw) OUT_BATCH(_3DSTATE_WM << 16 | (9 - 2)); OUT_RELOC(brw->wm.prog_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); OUT_BATCH(dw2); - OUT_BATCH(0); /* scratch space base offset */ + if (brw->wm.prog_data->total_scratch) { + OUT_RELOC(brw->wm.scratch_bo, I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + ffs(brw->wm.prog_data->total_scratch) - 11); + } else { + OUT_BATCH(0); + } OUT_BATCH(dw4); OUT_BATCH(dw5); OUT_BATCH(dw6); diff --git a/src/mesa/drivers/dri/intel/intel_batchbuffer.c b/src/mesa/drivers/dri/intel/intel_batchbuffer.c index 42b4f923e0c..53d6e7c6acc 100644 --- a/src/mesa/drivers/dri/intel/intel_batchbuffer.c +++ b/src/mesa/drivers/dri/intel/intel_batchbuffer.c @@ -176,8 +176,6 @@ intel_batchbuffer_emit_reloc(struct intel_context *intel, { int ret; - assert(delta < buffer->size); - ret = drm_intel_bo_emit_reloc(intel->batch.bo, 4*intel->batch.used, buffer, delta, read_domains, write_domain); @@ -203,8 +201,6 @@ intel_batchbuffer_emit_reloc_fenced(struct intel_context *intel, { int ret; - assert(delta < buffer->size); - ret = drm_intel_bo_emit_reloc_fence(intel->batch.bo, 4*intel->batch.used, buffer, delta, read_domains, write_domain); diff --git a/src/mesa/drivers/dri/intel/intel_blit.c b/src/mesa/drivers/dri/intel/intel_blit.c index e1ab7f16371..5aac1f6fa24 100644 --- a/src/mesa/drivers/dri/intel/intel_blit.c +++ b/src/mesa/drivers/dri/intel/intel_blit.c @@ -146,6 +146,17 @@ intelEmitCopyBlit(struct intel_context *intel, src_pitch *= cpp; dst_pitch *= cpp; + /* For big formats (such as floating point), do the copy using 32bpp and + * multiply the coordinates. + */ + if (cpp > 4) { + assert(cpp % 4 == 0); + dst_x *= cpp / 4; + dst_x2 *= cpp / 4; + src_x *= cpp / 4; + cpp = 4; + } + BR13 = br13_for_cpp(cpp) | translate_raster_op(logic_op) << 16; switch (cpp) { @@ -211,7 +222,7 @@ intelClearWithBlit(struct gl_context *ctx, GLbitfield mask) { struct intel_context *intel = intel_context(ctx); struct gl_framebuffer *fb = ctx->DrawBuffer; - GLuint clear_depth; + GLuint clear_depth_value, clear_depth_mask; GLboolean all; GLint cx, cy, cw, ch; GLbitfield fail_mask = 0; @@ -220,12 +231,15 @@ intelClearWithBlit(struct gl_context *ctx, GLbitfield mask) /* * Compute values for clearing the buffers. */ - clear_depth = 0; + clear_depth_value = 0; + clear_depth_mask = 0; if (mask & BUFFER_BIT_DEPTH) { - clear_depth = (GLuint) (fb->_DepthMax * ctx->Depth.Clear); + clear_depth_value = (GLuint) (fb->_DepthMax * ctx->Depth.Clear); + clear_depth_mask = XY_BLT_WRITE_RGB; } if (mask & BUFFER_BIT_STENCIL) { - clear_depth |= (ctx->Stencil.Clear & 0xff) << 24; + clear_depth_value |= (ctx->Stencil.Clear & 0xff) << 24; + clear_depth_mask |= XY_BLT_WRITE_ALPHA; } cx = fb->_Xmin; @@ -239,12 +253,13 @@ intelClearWithBlit(struct gl_context *ctx, GLbitfield mask) if (cw == 0 || ch == 0) return 0; - GLuint buf; all = (cw == fb->Width && ch == fb->Height); /* Loop over all renderbuffers */ - for (buf = 0; buf < BUFFER_COUNT && mask; buf++) { - const GLbitfield bufBit = 1 << buf; + mask &= (1 << BUFFER_COUNT) - 1; + while (mask) { + GLuint buf = _mesa_ffs(mask) - 1; + GLboolean is_depth_stencil = buf == BUFFER_DEPTH || buf == BUFFER_STENCIL; struct intel_renderbuffer *irb; drm_intel_bo *write_buffer; int x1, y1, x2, y2; @@ -253,11 +268,15 @@ intelClearWithBlit(struct gl_context *ctx, GLbitfield mask) int pitch, cpp; drm_intel_bo *aper_array[2]; - if (!(mask & bufBit)) - continue; + mask &= ~(1 << buf); - /* OK, clear this renderbuffer */ irb = intel_get_renderbuffer(fb, buf); + if (irb == NULL || irb->region == NULL || irb->region->buffer == NULL) { + fail_mask |= 1 << buf; + continue; + } + + /* OK, clear this renderbuffer */ write_buffer = intel_region_buffer(intel, irb->region, all ? INTEL_WRITE_FULL : INTEL_WRITE_PART); @@ -274,16 +293,13 @@ intelClearWithBlit(struct gl_context *ctx, GLbitfield mask) irb->region->buffer, (pitch * cpp), x1, y1, x2 - x1, y2 - y1); - BR13 = br13_for_cpp(cpp) | 0xf0 << 16; + BR13 = 0xf0 << 16; CMD = XY_COLOR_BLT_CMD; /* Setup the blit command */ if (cpp == 4) { - if (buf == BUFFER_DEPTH || buf == BUFFER_STENCIL) { - if (mask & BUFFER_BIT_DEPTH) - CMD |= XY_BLT_WRITE_RGB; - if (mask & BUFFER_BIT_STENCIL) - CMD |= XY_BLT_WRITE_ALPHA; + if (is_depth_stencil) { + CMD |= clear_depth_mask; } else { /* clearing RGBA */ CMD |= XY_BLT_WRITE_ALPHA | XY_BLT_WRITE_RGB; @@ -300,8 +316,8 @@ intelClearWithBlit(struct gl_context *ctx, GLbitfield mask) #endif BR13 |= (pitch * cpp); - if (buf == BUFFER_DEPTH || buf == BUFFER_STENCIL) { - clear_val = clear_depth; + if (is_depth_stencil) { + clear_val = clear_depth_value; } else { uint8_t clear[4]; GLclampf *color = ctx->Color.ClearColor; @@ -333,12 +349,13 @@ intelClearWithBlit(struct gl_context *ctx, GLbitfield mask) clear[3], clear[3]); break; default: - fail_mask |= bufBit; - mask &= ~bufBit; + fail_mask |= 1 << buf; continue; } } + BR13 |= br13_for_cpp(cpp); + assert(x1 < x2); assert(y1 < y2); @@ -367,8 +384,6 @@ intelClearWithBlit(struct gl_context *ctx, GLbitfield mask) if (buf == BUFFER_DEPTH || buf == BUFFER_STENCIL) mask &= ~(BUFFER_BIT_DEPTH | BUFFER_BIT_STENCIL); - else - mask &= ~bufBit; /* turn off bit, for faster loop exit */ } return fail_mask; diff --git a/src/mesa/drivers/dri/intel/intel_chipset.h b/src/mesa/drivers/dri/intel/intel_chipset.h index 4ff9140d56e..a3f40effc35 100644 --- a/src/mesa/drivers/dri/intel/intel_chipset.h +++ b/src/mesa/drivers/dri/intel/intel_chipset.h @@ -125,18 +125,17 @@ /* Compat macro for intel_decode.c */ #define IS_IRONLAKE(devid) IS_GEN5(devid) -#define IS_GEN6(devid) (devid == PCI_CHIP_SANDYBRIDGE_GT1 || \ - devid == PCI_CHIP_SANDYBRIDGE_GT2 || \ - devid == PCI_CHIP_SANDYBRIDGE_GT2_PLUS || \ - devid == PCI_CHIP_SANDYBRIDGE_M_GT1 || \ - devid == PCI_CHIP_SANDYBRIDGE_M_GT2 || \ - devid == PCI_CHIP_SANDYBRIDGE_M_GT2_PLUS || \ - devid == PCI_CHIP_SANDYBRIDGE_S) - #define IS_GT1(devid) (devid == PCI_CHIP_SANDYBRIDGE_GT1 || \ devid == PCI_CHIP_SANDYBRIDGE_M_GT1 || \ devid == PCI_CHIP_SANDYBRIDGE_S) +#define IS_GT2(devid) (devid == PCI_CHIP_SANDYBRIDGE_GT2 || \ + devid == PCI_CHIP_SANDYBRIDGE_GT2_PLUS || \ + devid == PCI_CHIP_SANDYBRIDGE_M_GT2 || \ + devid == PCI_CHIP_SANDYBRIDGE_M_GT2_PLUS) + +#define IS_GEN6(devid) (IS_GT1(devid) || IS_GT2(devid)) + #define IS_965(devid) (IS_GEN4(devid) || \ IS_G4X(devid) || \ IS_GEN5(devid) || \ diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c index c2e2a98af5e..02e7f7717fc 100644 --- a/src/mesa/drivers/dri/intel/intel_context.c +++ b/src/mesa/drivers/dri/intel/intel_context.c @@ -62,10 +62,6 @@ int INTEL_DEBUG = (0); #endif -#define DRIVER_DATE "20100330 DEVELOPMENT" -#define DRIVER_DATE_GEM "GEM " DRIVER_DATE - - static const GLubyte * intelGetString(struct gl_context * ctx, GLenum name) { @@ -182,7 +178,7 @@ intelGetString(struct gl_context * ctx, GLenum name) break; } - (void) driGetRendererString(buffer, chipset, DRIVER_DATE_GEM, 0); + (void) driGetRendererString(buffer, chipset, 0); return (GLubyte *) buffer; default: @@ -728,8 +724,13 @@ intelInitContext(struct intel_context *intel, ctx->TextureFormatSupported[MESA_FORMAT_RG88] = GL_TRUE; ctx->TextureFormatSupported[MESA_FORMAT_RG1616] = GL_TRUE; + /* GL_MESA_texture_signed_rgba / GL_EXT_texture_snorm */ ctx->TextureFormatSupported[MESA_FORMAT_DUDV8] = GL_TRUE; ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_RGBA8888_REV] = GL_TRUE; + ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_R8] = GL_TRUE; + ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_RG88_REV] = GL_TRUE; + ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_R16] = GL_TRUE; + ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_GR1616] = GL_TRUE; /* GL_EXT_texture_sRGB */ ctx->TextureFormatSupported[MESA_FORMAT_SARGB8] = GL_TRUE; @@ -742,8 +743,19 @@ intelInitContext(struct intel_context *intel, ctx->TextureFormatSupported[MESA_FORMAT_SL8] = GL_TRUE; ctx->TextureFormatSupported[MESA_FORMAT_SLA8] = GL_TRUE; } + +#ifdef TEXTURE_FLOAT_ENABLED + ctx->TextureFormatSupported[MESA_FORMAT_RGBA_FLOAT32] = GL_TRUE; + ctx->TextureFormatSupported[MESA_FORMAT_RG_FLOAT32] = GL_TRUE; + ctx->TextureFormatSupported[MESA_FORMAT_R_FLOAT32] = GL_TRUE; + ctx->TextureFormatSupported[MESA_FORMAT_INTENSITY_FLOAT32] = GL_TRUE; + ctx->TextureFormatSupported[MESA_FORMAT_LUMINANCE_FLOAT32] = GL_TRUE; + ctx->TextureFormatSupported[MESA_FORMAT_ALPHA_FLOAT32] = GL_TRUE; + ctx->TextureFormatSupported[MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32] = GL_TRUE; #endif +#endif /* !I915 */ + driParseConfigFiles(&intel->optionCache, &intelScreen->optionCache, sPriv->myNum, (intel->gen >= 4) ? "i965" : "i915"); if (intel->gen < 4) diff --git a/src/mesa/drivers/dri/intel/intel_context.h b/src/mesa/drivers/dri/intel/intel_context.h index 772b2fba5a8..c59119373da 100644 --- a/src/mesa/drivers/dri/intel/intel_context.h +++ b/src/mesa/drivers/dri/intel/intel_context.h @@ -295,9 +295,33 @@ extern char *__progname; #define SUBPIXEL_Y 0.125 #define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) -#define ALIGN(value, alignment) ((value + alignment - 1) & ~(alignment - 1)) -#define ROUND_DOWN_TO(value, alignment) (ALIGN(value - alignment - 1, \ - alignment)) + +/** + * Align a value up to an alignment value + * + * If \c value is not already aligned to the requested alignment value, it + * will be rounded up. + * + * \param value Value to be rounded + * \param alignment Alignment value to be used. This must be a power of two. + * + * \sa ROUND_DOWN_TO() + */ +#define ALIGN(value, alignment) (((value) + alignment - 1) & ~(alignment - 1)) + +/** + * Align a value down to an alignment value + * + * If \c value is not already aligned to the requested alignment value, it + * will be rounded down. + * + * \param value Value to be rounded + * \param alignment Alignment value to be used. This must be a power of two. + * + * \sa ALIGN() + */ +#define ROUND_DOWN_TO(value, alignment) ((value) & ~(alignment - 1)) + #define IS_POWER_OF_TWO(val) (((val) & (val - 1)) == 0) static INLINE uint32_t diff --git a/src/mesa/drivers/dri/intel/intel_extensions.c b/src/mesa/drivers/dri/intel/intel_extensions.c index febc1d4f859..e107534a4da 100644 --- a/src/mesa/drivers/dri/intel/intel_extensions.c +++ b/src/mesa/drivers/dri/intel/intel_extensions.c @@ -160,6 +160,7 @@ static const struct dri_extension i915_extensions[] = { /** i965-only extensions */ static const struct dri_extension brw_extensions[] = { + { "GL_ARB_color_buffer_float", NULL }, { "GL_ARB_depth_clamp", NULL }, { "GL_ARB_depth_texture", NULL }, { "GL_ARB_fragment_coord_conventions", NULL }, @@ -171,6 +172,9 @@ static const struct dri_extension brw_extensions[] = { { "GL_ARB_point_sprite", NULL }, { "GL_ARB_seamless_cube_map", NULL }, { "GL_ARB_shadow", NULL }, +#ifdef TEXTURE_FLOAT_ENABLED + { "GL_ARB_texture_float", NULL }, +#endif { "GL_MESA_texture_signed_rgba", NULL }, { "GL_ARB_texture_non_power_of_two", NULL }, { "GL_ARB_texture_rg", NULL }, diff --git a/src/mesa/drivers/dri/intel/intel_fbo.c b/src/mesa/drivers/dri/intel/intel_fbo.c index 8b57eb19f56..ad2468a3237 100644 --- a/src/mesa/drivers/dri/intel/intel_fbo.c +++ b/src/mesa/drivers/dri/intel/intel_fbo.c @@ -385,7 +385,7 @@ intel_update_wrapper(struct gl_context *ctx, struct intel_renderbuffer *irb, irb->Base.Format = texImage->TexFormat; irb->Base.DataType = intel_mesa_format_to_rb_datatype(texImage->TexFormat); irb->Base.InternalFormat = texImage->InternalFormat; - irb->Base._BaseFormat = _mesa_base_fbo_format(ctx, irb->Base.InternalFormat); + irb->Base._BaseFormat = _mesa_base_tex_format(ctx, irb->Base.InternalFormat); irb->Base.Width = texImage->Width; irb->Base.Height = texImage->Height; diff --git a/src/mesa/drivers/dri/intel/intel_span.c b/src/mesa/drivers/dri/intel/intel_span.c index 1f41518535c..16bce20317e 100644 --- a/src/mesa/drivers/dri/intel/intel_span.c +++ b/src/mesa/drivers/dri/intel/intel_span.c @@ -30,6 +30,7 @@ #include "main/macros.h" #include "main/mtypes.h" #include "main/colormac.h" +#include "main/renderbuffer.h" #include "intel_buffers.h" #include "intel_fbo.h" @@ -114,57 +115,6 @@ intel_set_span_functions(struct intel_context *intel, #define TAG2(x,y) intel_##x##y##_A8 #include "spantmp2.h" -#define SPANTMP_MESA_FMT MESA_FORMAT_R8 -#define TAG(x) intel_##x##_R8 -#define TAG2(x,y) intel_##x##y##_R8 -#include "spantmp2.h" - -#define SPANTMP_MESA_FMT MESA_FORMAT_RG88 -#define TAG(x) intel_##x##_RG88 -#define TAG2(x,y) intel_##x##y##_RG88 -#include "spantmp2.h" - -#define SPANTMP_MESA_FMT MESA_FORMAT_R16 -#define TAG(x) intel_##x##_R16 -#define TAG2(x,y) intel_##x##y##_R16 -#include "spantmp2.h" - -#define SPANTMP_MESA_FMT MESA_FORMAT_RG1616 -#define TAG(x) intel_##x##_RG1616 -#define TAG2(x,y) intel_##x##y##_RG1616 -#include "spantmp2.h" - -#define LOCAL_DEPTH_VARS \ - struct intel_renderbuffer *irb = intel_renderbuffer(rb); \ - const GLint yScale = rb->Name ? 1 : -1; \ - const GLint yBias = rb->Name ? 0 : rb->Height - 1; \ - int minx = 0, miny = 0; \ - int maxx = rb->Width; \ - int maxy = rb->Height; \ - int pitch = irb->region->pitch * irb->region->cpp; \ - void *buf = irb->region->buffer->virtual; \ - (void)buf; (void)pitch; /* unused for non-gttmap. */ \ - -#define LOCAL_STENCIL_VARS LOCAL_DEPTH_VARS - -/* z16 depthbuffer functions. */ -#define VALUE_TYPE GLushort -#define WRITE_DEPTH(_x, _y, d) \ - (*(uint16_t *)(irb->region->buffer->virtual + NO_TILE(_x, _y)) = d) -#define READ_DEPTH(d, _x, _y) \ - d = *(uint16_t *)(irb->region->buffer->virtual + NO_TILE(_x, _y)) -#define TAG(x) intel_##x##_z16 -#include "depthtmp.h" - -/* z24_s8 and z24_x8 depthbuffer functions. */ -#define VALUE_TYPE GLuint -#define WRITE_DEPTH(_x, _y, d) \ - (*(uint32_t *)(irb->region->buffer->virtual + NO_TILE(_x, _y)) = d) -#define READ_DEPTH(d, _x, _y) \ - d = *(uint32_t *)(irb->region->buffer->virtual + NO_TILE(_x, _y)) -#define TAG(x) intel_##x##_z24_s8 -#include "depthtmp.h" - void intel_renderbuffer_map(struct intel_context *intel, struct gl_renderbuffer *rb) { @@ -175,6 +125,15 @@ intel_renderbuffer_map(struct intel_context *intel, struct gl_renderbuffer *rb) drm_intel_gem_bo_map_gtt(irb->region->buffer); + rb->Data = irb->region->buffer->virtual; + rb->RowStride = irb->region->pitch; + + /* Flip orientation if it's the window system buffer */ + if (!rb->Name) { + rb->Data += rb->RowStride * (irb->region->height - 1) * irb->region->cpp; + rb->RowStride = -rb->RowStride; + } + intel_set_span_functions(intel, rb); } @@ -191,6 +150,8 @@ intel_renderbuffer_unmap(struct intel_context *intel, rb->GetRow = NULL; rb->PutRow = NULL; + rb->Data = NULL; + rb->RowStride = 0; } /** @@ -371,13 +332,18 @@ static span_init_func intel_span_init_funcs[MESA_FORMAT_COUNT] = [MESA_FORMAT_XRGB8888] = intel_InitPointers_xRGB8888, [MESA_FORMAT_ARGB8888] = intel_InitPointers_ARGB8888, [MESA_FORMAT_SARGB8] = intel_InitPointers_ARGB8888, - [MESA_FORMAT_Z16] = intel_InitDepthPointers_z16, - [MESA_FORMAT_X8_Z24] = intel_InitDepthPointers_z24_s8, - [MESA_FORMAT_S8_Z24] = intel_InitDepthPointers_z24_s8, - [MESA_FORMAT_R8] = intel_InitPointers_R8, - [MESA_FORMAT_RG88] = intel_InitPointers_RG88, - [MESA_FORMAT_R16] = intel_InitPointers_R16, - [MESA_FORMAT_RG1616] = intel_InitPointers_RG1616, + [MESA_FORMAT_Z16] = _mesa_set_renderbuffer_accessors, + [MESA_FORMAT_X8_Z24] = _mesa_set_renderbuffer_accessors, + [MESA_FORMAT_S8_Z24] = _mesa_set_renderbuffer_accessors, + [MESA_FORMAT_R8] = _mesa_set_renderbuffer_accessors, + [MESA_FORMAT_RG88] = _mesa_set_renderbuffer_accessors, + [MESA_FORMAT_R16] = _mesa_set_renderbuffer_accessors, + [MESA_FORMAT_RG1616] = _mesa_set_renderbuffer_accessors, + [MESA_FORMAT_RGBA_FLOAT32] = _mesa_set_renderbuffer_accessors, + [MESA_FORMAT_RG_FLOAT32] = _mesa_set_renderbuffer_accessors, + [MESA_FORMAT_R_FLOAT32] = _mesa_set_renderbuffer_accessors, + [MESA_FORMAT_INTENSITY_FLOAT32] = _mesa_set_renderbuffer_accessors, + [MESA_FORMAT_LUMINANCE_FLOAT32] = _mesa_set_renderbuffer_accessors, }; bool diff --git a/src/mesa/drivers/dri/intel/intel_tex_format.c b/src/mesa/drivers/dri/intel/intel_tex_format.c index 87745bc66d4..befa615d1e6 100644 --- a/src/mesa/drivers/dri/intel/intel_tex_format.c +++ b/src/mesa/drivers/dri/intel/intel_tex_format.c @@ -16,6 +16,8 @@ intel_mesa_format_to_rb_datatype(gl_format format) case MESA_FORMAT_R8: case MESA_FORMAT_RG88: case MESA_FORMAT_A8: + case MESA_FORMAT_I8: + case MESA_FORMAT_L8: case MESA_FORMAT_AL88: case MESA_FORMAT_RGB565: case MESA_FORMAT_ARGB1555: @@ -29,6 +31,15 @@ intel_mesa_format_to_rb_datatype(gl_format format) return GL_UNSIGNED_INT; case MESA_FORMAT_S8_Z24: return GL_UNSIGNED_INT_24_8_EXT; + case MESA_FORMAT_RGBA_FLOAT32: + case MESA_FORMAT_RG_FLOAT32: + case MESA_FORMAT_R_FLOAT32: + case MESA_FORMAT_INTENSITY_FLOAT32: + case MESA_FORMAT_LUMINANCE_FLOAT32: + case MESA_FORMAT_ALPHA_FLOAT32: + case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32: + return GL_FLOAT; + default: _mesa_problem(NULL, "unexpected MESA_FORMAT for renderbuffer"); return GL_UNSIGNED_BYTE; diff --git a/src/mesa/drivers/dri/intel/intel_tex_image.c b/src/mesa/drivers/dri/intel/intel_tex_image.c index 906f8a62710..775fd1008f9 100644 --- a/src/mesa/drivers/dri/intel/intel_tex_image.c +++ b/src/mesa/drivers/dri/intel/intel_tex_image.c @@ -112,8 +112,8 @@ intel_miptree_create_for_teximage(struct intel_context *intel, * resizable buffers, or require that buffers implement lazy * pagetable arrangements. */ - if ((intelObj->base.MinFilter == GL_NEAREST || - intelObj->base.MinFilter == GL_LINEAR) && + if ((intelObj->base.Sampler.MinFilter == GL_NEAREST || + intelObj->base.Sampler.MinFilter == GL_LINEAR) && intelImage->level == firstLevel && (intel->gen < 4 || firstLevel == 0)) { lastLevel = firstLevel; @@ -370,8 +370,10 @@ intelTexImage(struct gl_context * ctx, * whole object since our level didn't fit what was there * before, and any lower levels would fit into our miptree. */ - if (intelImage->mt) + if (intelImage->mt) { + intel_miptree_release(intel, &intelObj->mt); intel_miptree_reference(&intelObj->mt, intelImage->mt); + } } /* PBO fastpaths: diff --git a/src/mesa/drivers/dri/intel/intel_tex_subimage.c b/src/mesa/drivers/dri/intel/intel_tex_subimage.c index d0f8294113a..8b43c406cf9 100644 --- a/src/mesa/drivers/dri/intel/intel_tex_subimage.c +++ b/src/mesa/drivers/dri/intel/intel_tex_subimage.c @@ -90,10 +90,17 @@ intelTexSubimage(struct gl_context * ctx, intel->gen < 6 && target == GL_TEXTURE_2D && drm_intel_bo_busy(dst_bo)) { - dstRowStride = width * intelImage->mt->cpp; - temp_bo = drm_intel_bo_alloc(intel->bufmgr, "subimage blit bo", - dstRowStride * height, 0); - if (!temp_bo) + unsigned long pitch; + uint32_t tiling_mode = I915_TILING_NONE; + + temp_bo = drm_intel_bo_alloc_tiled(intel->bufmgr, + "subimage blit bo", + width, height, + intelImage->mt->cpp, + &tiling_mode, + &pitch, + 0); + if (temp_bo == NULL) return; if (drm_intel_gem_bo_map_gtt(temp_bo)) { @@ -103,6 +110,7 @@ intelTexSubimage(struct gl_context * ctx, texImage->Data = temp_bo->virtual; texImage->ImageOffsets[0] = 0; + dstRowStride = pitch; intel_miptree_get_image_offset(intelImage->mt, level, intelImage->face, 0, diff --git a/src/mesa/drivers/dri/intel/intel_tex_validate.c b/src/mesa/drivers/dri/intel/intel_tex_validate.c index a11b07ed09d..5e705c93619 100644 --- a/src/mesa/drivers/dri/intel/intel_tex_validate.c +++ b/src/mesa/drivers/dri/intel/intel_tex_validate.c @@ -18,7 +18,7 @@ intel_update_max_level(struct intel_context *intel, { struct gl_texture_object *tObj = &intelObj->base; - if (tObj->MinFilter == GL_NEAREST || tObj->MinFilter == GL_LINEAR) { + if (tObj->Sampler.MinFilter == GL_NEAREST || tObj->Sampler.MinFilter == GL_LINEAR) { intelObj->_MaxLevel = tObj->BaseLevel; } else { intelObj->_MaxLevel = tObj->_MaxLevel; diff --git a/src/mesa/drivers/dri/mach64/mach64_dd.c b/src/mesa/drivers/dri/mach64/mach64_dd.c index 9cb2c107597..2b557a70202 100644 --- a/src/mesa/drivers/dri/mach64/mach64_dd.c +++ b/src/mesa/drivers/dri/mach64/mach64_dd.c @@ -37,8 +37,6 @@ #include "utils.h" -#define DRIVER_DATE "20051019" - /* Return the current color buffer size. */ static void mach64DDGetBufferSize( struct gl_framebuffer *buffer, @@ -70,8 +68,7 @@ static const GLubyte *mach64DDGetString( struct gl_context *ctx, GLenum name ) case GL_RENDERER: - offset = driGetRendererString( buffer, card_name, DRIVER_DATE, - agp_mode ); + offset = driGetRendererString( buffer, card_name, agp_mode ); return (GLubyte *)buffer; default: diff --git a/src/mesa/drivers/dri/mach64/mach64_tex.c b/src/mesa/drivers/dri/mach64/mach64_tex.c index 68d273a3e75..8e10b314b64 100644 --- a/src/mesa/drivers/dri/mach64/mach64_tex.c +++ b/src/mesa/drivers/dri/mach64/mach64_tex.c @@ -123,9 +123,9 @@ mach64AllocTexObj( struct gl_texture_object *texObj ) make_empty_list( (driTextureObject *) t ); - mach64SetTexWrap( t, texObj->WrapS, texObj->WrapT ); - mach64SetTexFilter( t, texObj->MinFilter, texObj->MagFilter ); - mach64SetTexBorderColor( t, texObj->BorderColor.f ); + mach64SetTexWrap( t, texObj->Sampler.WrapS, texObj->Sampler.WrapT ); + mach64SetTexFilter( t, texObj->Sampler.MinFilter, texObj->Sampler.MagFilter ); + mach64SetTexBorderColor( t, texObj->Sampler.BorderColor.f ); return t; } @@ -454,18 +454,18 @@ static void mach64DDTexParameter( struct gl_context *ctx, GLenum target, case GL_TEXTURE_MIN_FILTER: case GL_TEXTURE_MAG_FILTER: if ( t->base.bound ) FLUSH_BATCH( mmesa ); - mach64SetTexFilter( t, tObj->MinFilter, tObj->MagFilter ); + mach64SetTexFilter( t, tObj->Sampler.MinFilter, tObj->Sampler.MagFilter ); break; case GL_TEXTURE_WRAP_S: case GL_TEXTURE_WRAP_T: if ( t->base.bound ) FLUSH_BATCH( mmesa ); - mach64SetTexWrap( t, tObj->WrapS, tObj->WrapT ); + mach64SetTexWrap( t, tObj->Sampler.WrapS, tObj->Sampler.WrapT ); break; case GL_TEXTURE_BORDER_COLOR: if ( t->base.bound ) FLUSH_BATCH( mmesa ); - mach64SetTexBorderColor( t, tObj->BorderColor.f ); + mach64SetTexBorderColor( t, tObj->Sampler.BorderColor.f ); break; case GL_TEXTURE_BASE_LEVEL: diff --git a/src/mesa/drivers/dri/mga/mgadd.c b/src/mesa/drivers/dri/mga/mgadd.c index 1b39813e379..2e3e9f2c43c 100644 --- a/src/mesa/drivers/dri/mga/mgadd.c +++ b/src/mesa/drivers/dri/mga/mgadd.c @@ -35,9 +35,6 @@ #include "mga_xmesa.h" #include "utils.h" -#define DRIVER_DATE "20071017" - - /*************************************** * Mesa's Driver Functions ***************************************/ @@ -57,7 +54,6 @@ static const GLubyte *mgaGetString( struct gl_context *ctx, GLenum name ) offset = driGetRendererString( buffer, MGA_IS_G400(mmesa) ? "G400" : MGA_IS_G200(mmesa) ? "G200" : "MGA", - DRIVER_DATE, mmesa->mgaScreen->agpMode ); return (GLubyte *)buffer; diff --git a/src/mesa/drivers/dri/mga/mgatex.c b/src/mesa/drivers/dri/mga/mgatex.c index 11ab9b6117d..ebbfec36556 100644 --- a/src/mesa/drivers/dri/mga/mgatex.c +++ b/src/mesa/drivers/dri/mga/mgatex.c @@ -327,9 +327,9 @@ mgaAllocTexObj( struct gl_texture_object *tObj ) make_empty_list( & t->base ); - mgaSetTexWrapping( t, tObj->WrapS, tObj->WrapT ); - mgaSetTexFilter( t, tObj->MinFilter, tObj->MagFilter ); - mgaSetTexBorderColor( t, tObj->BorderColor.f ); + mgaSetTexWrapping( t, tObj->Sampler.WrapS, tObj->Sampler.WrapT ); + mgaSetTexFilter( t, tObj->Sampler.MinFilter, tObj->Sampler.MagFilter ); + mgaSetTexBorderColor( t, tObj->Sampler.BorderColor.f ); } return( t ); @@ -447,18 +447,18 @@ mgaTexParameter( struct gl_context *ctx, GLenum target, /* FALLTHROUGH */ case GL_TEXTURE_MAG_FILTER: FLUSH_BATCH(mmesa); - mgaSetTexFilter( t, tObj->MinFilter, tObj->MagFilter ); + mgaSetTexFilter( t, tObj->Sampler.MinFilter, tObj->Sampler.MagFilter ); break; case GL_TEXTURE_WRAP_S: case GL_TEXTURE_WRAP_T: FLUSH_BATCH(mmesa); - mgaSetTexWrapping(t,tObj->WrapS,tObj->WrapT); + mgaSetTexWrapping(t,tObj->Sampler.WrapS,tObj->Sampler.WrapT); break; case GL_TEXTURE_BORDER_COLOR: FLUSH_BATCH(mmesa); - mgaSetTexBorderColor(t, tObj->BorderColor.f); + mgaSetTexBorderColor(t, tObj->Sampler.BorderColor.f); break; case GL_TEXTURE_BASE_LEVEL: diff --git a/src/mesa/drivers/dri/nouveau/nouveau_driver.c b/src/mesa/drivers/dri/nouveau/nouveau_driver.c index 45630be7f6e..8b6aa820434 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_driver.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_driver.c @@ -45,7 +45,7 @@ nouveau_get_string(struct gl_context *ctx, GLenum name) case GL_RENDERER: sprintf(hardware_name, "nv%02X", context_chipset(ctx)); - driGetRendererString(buffer, hardware_name, DRIVER_DATE, 0); + driGetRendererString(buffer, hardware_name, 0); return (GLubyte *)buffer; default: diff --git a/src/mesa/drivers/dri/nouveau/nouveau_driver.h b/src/mesa/drivers/dri/nouveau/nouveau_driver.h index 158aec820aa..0018eec021f 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_driver.h +++ b/src/mesa/drivers/dri/nouveau/nouveau_driver.h @@ -48,7 +48,6 @@ #include "nouveau_surface.h" #include "nv04_pushbuf.h" -#define DRIVER_DATE "20091015" #define DRIVER_AUTHOR "Nouveau" struct nouveau_driver { diff --git a/src/mesa/drivers/dri/nouveau/nouveau_texture.c b/src/mesa/drivers/dri/nouveau/nouveau_texture.c index 1a1e10e0b3a..36e68c99181 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_texture.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_texture.c @@ -270,8 +270,8 @@ get_last_level(struct gl_texture_object *t) { struct gl_texture_image *base = t->Image[0][t->BaseLevel]; - if (t->MinFilter == GL_NEAREST || - t->MinFilter == GL_LINEAR || !base) + if (t->Sampler.MinFilter == GL_NEAREST || + t->Sampler.MinFilter == GL_LINEAR || !base) return t->BaseLevel; else return MIN2(t->BaseLevel + base->MaxLog2, t->MaxLevel); diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_tex.c b/src/mesa/drivers/dri/nouveau/nv04_state_tex.c index 5ed8b147559..648d6b18cf5 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_state_tex.c +++ b/src/mesa/drivers/dri/nouveau/nv04_state_tex.c @@ -80,26 +80,26 @@ nv04_emit_tex_obj(struct gl_context *ctx, int emit) s = &to_nouveau_texture(t)->surfaces[t->BaseLevel]; - if (t->MinFilter != GL_NEAREST && - t->MinFilter != GL_LINEAR) { - lod_max = CLAMP(MIN2(t->MaxLod, t->_MaxLambda), + if (t->Sampler.MinFilter != GL_NEAREST && + t->Sampler.MinFilter != GL_LINEAR) { + lod_max = CLAMP(MIN2(t->Sampler.MaxLod, t->_MaxLambda), 0, 15) + 1; lod_bias = CLAMP(ctx->Texture.Unit[i].LodBias + - t->LodBias, -16, 15) * 8; + t->Sampler.LodBias, -16, 15) * 8; } - format |= nvgl_wrap_mode(t->WrapT) << 28 | - nvgl_wrap_mode(t->WrapS) << 24 | + format |= nvgl_wrap_mode(t->Sampler.WrapT) << 28 | + nvgl_wrap_mode(t->Sampler.WrapS) << 24 | ti->HeightLog2 << 20 | ti->WidthLog2 << 16 | lod_max << 12 | get_tex_format(ti); - filter |= log2i(t->MaxAnisotropy) << 31 | - nvgl_filter_mode(t->MagFilter) << 28 | - log2i(t->MaxAnisotropy) << 27 | - nvgl_filter_mode(t->MinFilter) << 24 | + filter |= log2i(t->Sampler.MaxAnisotropy) << 31 | + nvgl_filter_mode(t->Sampler.MagFilter) << 28 | + log2i(t->Sampler.MaxAnisotropy) << 27 | + nvgl_filter_mode(t->Sampler.MinFilter) << 24 | (lod_bias & 0xff) << 16; } else { diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_tex.c b/src/mesa/drivers/dri/nouveau/nv10_state_tex.c index fda67b15073..620a686aea0 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_state_tex.c +++ b/src/mesa/drivers/dri/nouveau/nv10_state_tex.c @@ -173,17 +173,17 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit) return; /* Recompute the texturing registers. */ - tx_format = nvgl_wrap_mode(t->WrapT) << 28 - | nvgl_wrap_mode(t->WrapS) << 24 + tx_format = nvgl_wrap_mode(t->Sampler.WrapT) << 28 + | nvgl_wrap_mode(t->Sampler.WrapS) << 24 | ti->HeightLog2 << 20 | ti->WidthLog2 << 16 | 5 << 4 | 1 << 12; - tx_filter = nvgl_filter_mode(t->MagFilter) << 28 - | nvgl_filter_mode(t->MinFilter) << 24; + tx_filter = nvgl_filter_mode(t->Sampler.MagFilter) << 28 + | nvgl_filter_mode(t->Sampler.MinFilter) << 24; tx_enable = NV10_3D_TEX_ENABLE_ENABLE - | log2i(t->MaxAnisotropy) << 4; + | log2i(t->Sampler.MaxAnisotropy) << 4; if (t->Target == GL_TEXTURE_RECTANGLE) { BEGIN_RING(chan, celsius, NV10_3D_TEX_NPOT_PITCH(i), 1); @@ -196,11 +196,11 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit) tx_format |= get_tex_format_pot(ti); } - if (t->MinFilter != GL_NEAREST && - t->MinFilter != GL_LINEAR) { - int lod_min = t->MinLod; - int lod_max = MIN2(t->MaxLod, t->_MaxLambda); - int lod_bias = t->LodBias + if (t->Sampler.MinFilter != GL_NEAREST && + t->Sampler.MinFilter != GL_LINEAR) { + int lod_min = t->Sampler.MinLod; + int lod_max = MIN2(t->Sampler.MaxLod, t->_MaxLambda); + int lod_bias = t->Sampler.LodBias + ctx->Texture.Unit[i].LodBias; lod_max = CLAMP(lod_max, 0, 15); diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_tex.c b/src/mesa/drivers/dri/nouveau/nv20_state_tex.c index c362aca0fdb..eab74aed5c2 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_state_tex.c +++ b/src/mesa/drivers/dri/nouveau/nv20_state_tex.c @@ -186,16 +186,16 @@ nv20_emit_tex_obj(struct gl_context *ctx, int emit) | NV20_3D_TEX_FORMAT_NO_BORDER | 1 << 16; - tx_wrap = nvgl_wrap_mode(t->WrapR) << 16 - | nvgl_wrap_mode(t->WrapT) << 8 - | nvgl_wrap_mode(t->WrapS) << 0; + tx_wrap = nvgl_wrap_mode(t->Sampler.WrapR) << 16 + | nvgl_wrap_mode(t->Sampler.WrapT) << 8 + | nvgl_wrap_mode(t->Sampler.WrapS) << 0; - tx_filter = nvgl_filter_mode(t->MagFilter) << 24 - | nvgl_filter_mode(t->MinFilter) << 16 + tx_filter = nvgl_filter_mode(t->Sampler.MagFilter) << 24 + | nvgl_filter_mode(t->Sampler.MinFilter) << 16 | 2 << 12; tx_enable = NV20_3D_TEX_ENABLE_ENABLE - | log2i(t->MaxAnisotropy) << 4; + | log2i(t->Sampler.MaxAnisotropy) << 4; if (t->Target == GL_TEXTURE_RECTANGLE) { BEGIN_RING(chan, kelvin, NV20_3D_TEX_NPOT_PITCH(i), 1); @@ -208,11 +208,11 @@ nv20_emit_tex_obj(struct gl_context *ctx, int emit) tx_format |= get_tex_format_pot(ti); } - if (t->MinFilter != GL_NEAREST && - t->MinFilter != GL_LINEAR) { - int lod_min = t->MinLod; - int lod_max = MIN2(t->MaxLod, t->_MaxLambda); - int lod_bias = t->LodBias + if (t->Sampler.MinFilter != GL_NEAREST && + t->Sampler.MinFilter != GL_LINEAR) { + int lod_min = t->Sampler.MinLod; + int lod_max = MIN2(t->Sampler.MaxLod, t->_MaxLambda); + int lod_bias = t->Sampler.LodBias + ctx->Texture.Unit[i].LodBias; lod_max = CLAMP(lod_max, 0, 15); diff --git a/src/mesa/drivers/dri/r128/r128_dd.c b/src/mesa/drivers/dri/r128/r128_dd.c index 0b7005eba69..cfe2387948d 100644 --- a/src/mesa/drivers/dri/r128/r128_dd.c +++ b/src/mesa/drivers/dri/r128/r128_dd.c @@ -40,9 +40,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "utils.h" -#define DRIVER_DATE "20051027" - - /* Return the width and height of the current color buffer. */ static void r128GetBufferSize( struct gl_framebuffer *buffer, @@ -82,8 +79,7 @@ static const GLubyte *r128GetString( struct gl_context *ctx, GLenum name ) card_name = "Rage 128 Mobility"; } - offset = driGetRendererString( buffer, card_name, DRIVER_DATE, - agp_mode ); + offset = driGetRendererString( buffer, card_name, agp_mode ); return (GLubyte *)buffer; diff --git a/src/mesa/drivers/dri/r128/r128_span.c b/src/mesa/drivers/dri/r128/r128_span.c index 307de56ee13..04bdbe612e5 100644 --- a/src/mesa/drivers/dri/r128/r128_span.c +++ b/src/mesa/drivers/dri/r128/r128_span.c @@ -135,7 +135,7 @@ do { \ r128WriteDepthSpanLocked( rmesa, n, \ x + dPriv->x, \ y + dPriv->y, \ - depth, mask ); \ + (const GLuint *) depth, mask ); \ } while (0) #define WRITE_DEPTH_PIXELS() \ @@ -146,7 +146,7 @@ do { \ ox[i] = x[i] + dPriv->x; \ oy[i] = Y_FLIP( y[i] ) + dPriv->y; \ } \ - r128WriteDepthPixelsLocked( rmesa, n, ox, oy, depth, mask ); \ + r128WriteDepthPixelsLocked( rmesa, n, ox, oy, (const GLuint *) depth, mask ); \ } while (0) #define READ_DEPTH_SPAN() \ diff --git a/src/mesa/drivers/dri/r128/r128_tex.c b/src/mesa/drivers/dri/r128/r128_tex.c index ba3305e076e..a3f6ce8edeb 100644 --- a/src/mesa/drivers/dri/r128/r128_tex.c +++ b/src/mesa/drivers/dri/r128/r128_tex.c @@ -162,9 +162,9 @@ static r128TexObjPtr r128AllocTexObj( struct gl_texture_object *texObj ) make_empty_list( (driTextureObject *) t ); - r128SetTexWrap( t, texObj->WrapS, texObj->WrapT ); - r128SetTexFilter( t, texObj->MinFilter, texObj->MagFilter ); - r128SetTexBorderColor( t, texObj->BorderColor.f ); + r128SetTexWrap( t, texObj->Sampler.WrapS, texObj->Sampler.WrapT ); + r128SetTexFilter( t, texObj->Sampler.MinFilter, texObj->Sampler.MagFilter ); + r128SetTexBorderColor( t, texObj->Sampler.BorderColor.f ); } return t; @@ -519,18 +519,18 @@ static void r128TexParameter( struct gl_context *ctx, GLenum target, case GL_TEXTURE_MIN_FILTER: case GL_TEXTURE_MAG_FILTER: if ( t->base.bound ) FLUSH_BATCH( rmesa ); - r128SetTexFilter( t, tObj->MinFilter, tObj->MagFilter ); + r128SetTexFilter( t, tObj->Sampler.MinFilter, tObj->Sampler.MagFilter ); break; case GL_TEXTURE_WRAP_S: case GL_TEXTURE_WRAP_T: if ( t->base.bound ) FLUSH_BATCH( rmesa ); - r128SetTexWrap( t, tObj->WrapS, tObj->WrapT ); + r128SetTexWrap( t, tObj->Sampler.WrapS, tObj->Sampler.WrapT ); break; case GL_TEXTURE_BORDER_COLOR: if ( t->base.bound ) FLUSH_BATCH( rmesa ); - r128SetTexBorderColor( t, tObj->BorderColor.f ); + r128SetTexBorderColor( t, tObj->Sampler.BorderColor.f ); break; case GL_TEXTURE_BASE_LEVEL: diff --git a/src/mesa/drivers/dri/r200/r200_context.c b/src/mesa/drivers/dri/r200/r200_context.c index 9c045b73acc..4e08d3431bf 100644 --- a/src/mesa/drivers/dri/r200/r200_context.c +++ b/src/mesa/drivers/dri/r200/r200_context.c @@ -62,13 +62,16 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "radeon_span.h" #define need_GL_ARB_occlusion_query +#define need_GL_ARB_vertex_array_object #define need_GL_ARB_vertex_program +#define need_GL_APPLE_vertex_array_object #define need_GL_ATI_fragment_shader #define need_GL_EXT_blend_minmax #define need_GL_EXT_fog_coord #define need_GL_EXT_secondary_color #define need_GL_EXT_blend_equation_separate #define need_GL_EXT_blend_func_separate +#define need_GL_EXT_gpu_program_parameters #define need_GL_NV_vertex_program #define need_GL_ARB_point_parameters #define need_GL_EXT_framebuffer_object @@ -76,8 +79,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "main/remap_helper.h" -#define DRIVER_DATE "20060602" - #include "utils.h" #include "xmlpool.h" /* for symbolic values of enum-type options */ @@ -96,8 +97,7 @@ static const GLubyte *r200GetString( struct gl_context *ctx, GLenum name ) return (GLubyte *)"Tungsten Graphics, Inc."; case GL_RENDERER: - offset = driGetRendererString( buffer, "R200", DRIVER_DATE, - agp_mode ); + offset = driGetRendererString( buffer, "R200", agp_mode ); sprintf( & buffer[ offset ], " %sTCL", !(rmesa->radeon.TclFallback & R200_TCL_FALLBACK_TCL_DISABLE) @@ -115,6 +115,7 @@ static const GLubyte *r200GetString( struct gl_context *ctx, GLenum name ) */ static const struct dri_extension card_extensions[] = { + { "GL_ARB_half_float_pixel", NULL }, { "GL_ARB_multitexture", NULL }, { "GL_ARB_occlusion_query", GL_ARB_occlusion_query_functions}, { "GL_ARB_texture_border_clamp", NULL }, @@ -123,6 +124,7 @@ static const struct dri_extension card_extensions[] = { "GL_ARB_texture_env_dot3", NULL }, { "GL_ARB_texture_env_crossbar", NULL }, { "GL_ARB_texture_mirrored_repeat", NULL }, + { "GL_ARB_vertex_array_object", GL_ARB_vertex_array_object_functions}, { "GL_EXT_blend_minmax", GL_EXT_blend_minmax_functions }, { "GL_EXT_blend_subtract", NULL }, { "GL_EXT_fog_coord", GL_EXT_fog_coord_functions }, @@ -136,6 +138,7 @@ static const struct dri_extension card_extensions[] = { "GL_EXT_texture_lod_bias", NULL }, { "GL_EXT_texture_mirror_clamp", NULL }, { "GL_EXT_texture_rectangle", NULL }, + { "GL_APPLE_vertex_array_object", GL_APPLE_vertex_array_object_functions }, { "GL_ATI_texture_env_combine3", NULL }, { "GL_ATI_texture_mirror_once", NULL }, { "GL_MESA_pack_invert", NULL }, @@ -153,7 +156,9 @@ static const struct dri_extension blend_extensions[] = { }; static const struct dri_extension ARB_vp_extension[] = { - { "GL_ARB_vertex_program", GL_ARB_vertex_program_functions } + { "GL_ARB_vertex_program", GL_ARB_vertex_program_functions }, + { "GL_EXT_gpu_program_parameters", GL_EXT_gpu_program_parameters_functions}, + { NULL, NULL } }; static const struct dri_extension NV_vp_extension[] = { @@ -458,7 +463,7 @@ GLboolean r200CreateContext( gl_api api, driInitExtensions( ctx, blend_extensions, GL_FALSE ); } if(rmesa->radeon.radeonScreen->drmSupportsVertexProgram) - driInitSingleExtension( ctx, ARB_vp_extension ); + driInitExtensions( ctx, ARB_vp_extension, GL_FALSE ); if(driQueryOptionb(&rmesa->radeon.optionCache, "nv_vertex_program")) driInitSingleExtension( ctx, NV_vp_extension ); diff --git a/src/mesa/drivers/dri/r200/r200_tex.c b/src/mesa/drivers/dri/r200/r200_tex.c index 092b7575831..d42e8f12041 100644 --- a/src/mesa/drivers/dri/r200/r200_tex.c +++ b/src/mesa/drivers/dri/r200/r200_tex.c @@ -383,18 +383,18 @@ static void r200TexParameter( struct gl_context *ctx, GLenum target, case GL_TEXTURE_MIN_FILTER: case GL_TEXTURE_MAG_FILTER: case GL_TEXTURE_MAX_ANISOTROPY_EXT: - r200SetTexMaxAnisotropy( t, texObj->MaxAnisotropy ); - r200SetTexFilter( t, texObj->MinFilter, texObj->MagFilter ); + r200SetTexMaxAnisotropy( t, texObj->Sampler.MaxAnisotropy ); + r200SetTexFilter( t, texObj->Sampler.MinFilter, texObj->Sampler.MagFilter ); break; case GL_TEXTURE_WRAP_S: case GL_TEXTURE_WRAP_T: case GL_TEXTURE_WRAP_R: - r200SetTexWrap( t, texObj->WrapS, texObj->WrapT, texObj->WrapR ); + r200SetTexWrap( t, texObj->Sampler.WrapS, texObj->Sampler.WrapT, texObj->Sampler.WrapR ); break; case GL_TEXTURE_BORDER_COLOR: - r200SetTexBorderColor( t, texObj->BorderColor.f ); + r200SetTexBorderColor( t, texObj->Sampler.BorderColor.f ); break; case GL_TEXTURE_BASE_LEVEL: @@ -479,13 +479,13 @@ static struct gl_texture_object *r200NewTextureObject(struct gl_context * ctx, _mesa_lookup_enum_by_nr(target), t); _mesa_initialize_texture_object(&t->base, name, target); - t->base.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy; + t->base.Sampler.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy; /* Initialize hardware state */ - r200SetTexWrap( t, t->base.WrapS, t->base.WrapT, t->base.WrapR ); - r200SetTexMaxAnisotropy( t, t->base.MaxAnisotropy ); - r200SetTexFilter(t, t->base.MinFilter, t->base.MagFilter); - r200SetTexBorderColor(t, t->base.BorderColor.f); + r200SetTexWrap( t, t->base.Sampler.WrapS, t->base.Sampler.WrapT, t->base.Sampler.WrapR ); + r200SetTexMaxAnisotropy( t, t->base.Sampler.MaxAnisotropy ); + r200SetTexFilter(t, t->base.Sampler.MinFilter, t->base.Sampler.MagFilter); + r200SetTexBorderColor(t, t->base.Sampler.BorderColor.f); return &t->base; } diff --git a/src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c b/src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c index 28d132a5fe3..8b73409136f 100644 --- a/src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c +++ b/src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c @@ -34,8 +34,6 @@ * \author Ben Skeggs <[email protected]> * * \author Jerome Glisse <[email protected]> - * - * \todo FogOption */ #include "r300_fragprog.h" @@ -108,6 +106,7 @@ static unsigned int translate_rgb_opcode(struct r300_fragment_program_compiler * { switch(opcode) { case RC_OPCODE_CMP: return R300_ALU_OUTC_CMP; + case RC_OPCODE_CND: return R300_ALU_OUTC_CND; case RC_OPCODE_DP3: return R300_ALU_OUTC_DP3; case RC_OPCODE_DP4: return R300_ALU_OUTC_DP4; case RC_OPCODE_FRC: return R300_ALU_OUTC_FRC; @@ -127,6 +126,7 @@ static unsigned int translate_alpha_opcode(struct r300_fragment_program_compiler { switch(opcode) { case RC_OPCODE_CMP: return R300_ALU_OUTA_CMP; + case RC_OPCODE_CND: return R300_ALU_OUTA_CND; case RC_OPCODE_DP3: return R300_ALU_OUTA_DP4; case RC_OPCODE_DP4: return R300_ALU_OUTA_DP4; case RC_OPCODE_EX2: return R300_ALU_OUTA_EX2; diff --git a/src/mesa/drivers/dri/r300/compiler/r3xx_vertprog.c b/src/mesa/drivers/dri/r300/compiler/r3xx_vertprog.c index 8ad2175eadf..654f9a070d5 100644 --- a/src/mesa/drivers/dri/r300/compiler/r3xx_vertprog.c +++ b/src/mesa/drivers/dri/r300/compiler/r3xx_vertprog.c @@ -273,6 +273,7 @@ static void ei_mad(struct r300_vertex_program_code *vp, struct rc_sub_instruction *vpi, unsigned int * inst) { + unsigned int i; /* Remarks about hardware limitations of MAD * (please preserve this comment, as this information is _NOT_ * in the documentation provided by AMD). @@ -318,6 +319,23 @@ static void ei_mad(struct r300_vertex_program_code *vp, t_dst_index(vp, &vpi->DstReg), t_dst_mask(vpi->DstReg.WriteMask), t_dst_class(vpi->DstReg.File)); + + /* Arguments with constant swizzles still count as a unique + * temporary, so we should make sure these arguments share a + * register index with one of the other arguments. */ + for (i = 0; i < 3; i++) { + unsigned int j; + if (vpi->SrcReg[i].File != RC_FILE_NONE) + continue; + + for (j = 0; j < 3; j++) { + if (i != j) { + vpi->SrcReg[i].Index = + vpi->SrcReg[j].Index; + break; + } + } + } } inst[1] = t_src(vp, &vpi->SrcReg[0]); inst[2] = t_src(vp, &vpi->SrcReg[1]); diff --git a/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c b/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c index 301b4446693..c7f79bc53c7 100644 --- a/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c +++ b/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c @@ -93,6 +93,7 @@ static unsigned int translate_rgb_op(struct r300_fragment_program_compiler *c, r { switch(opcode) { case RC_OPCODE_CMP: return R500_ALU_RGBA_OP_CMP; + case RC_OPCODE_CND: return R500_ALU_RGBA_OP_CND; case RC_OPCODE_DDX: return R500_ALU_RGBA_OP_MDH; case RC_OPCODE_DDY: return R500_ALU_RGBA_OP_MDV; case RC_OPCODE_DP3: return R500_ALU_RGBA_OP_DP3; @@ -114,6 +115,7 @@ static unsigned int translate_alpha_op(struct r300_fragment_program_compiler *c, { switch(opcode) { case RC_OPCODE_CMP: return R500_ALPHA_OP_CMP; + case RC_OPCODE_CND: return R500_ALPHA_OP_CND; case RC_OPCODE_COS: return R500_ALPHA_OP_COS; case RC_OPCODE_DDX: return R500_ALPHA_OP_MDH; case RC_OPCODE_DDY: return R500_ALPHA_OP_MDV; @@ -197,11 +199,14 @@ static void use_temporary(struct r500_fragment_program_code* code, unsigned int static unsigned int use_source(struct r500_fragment_program_code* code, struct rc_pair_instruction_source src) { + /* From docs: + * Note that inline constants set the MSB of ADDR0 and clear ADDR0_CONST. + * MSB = 1 << 7 */ if (!src.Used) - return 0; + return 1 << 7; if (src.File == RC_FILE_CONSTANT) { - return src.Index | 0x100; + return src.Index | R500_RGB_ADDR0_CONST; } else if (src.File == RC_FILE_TEMPORARY) { use_temporary(code, src.Index); return src.Index; @@ -259,7 +264,8 @@ static void emit_paired(struct r300_fragment_program_compiler *c, struct rc_pair } code->inst[ip].inst0 |= R500_INST_TEX_SEM_WAIT; - code->inst[ip].inst0 |= (inst->RGB.WriteMask << 11) | (inst->Alpha.WriteMask << 14); + code->inst[ip].inst0 |= (inst->RGB.WriteMask << 11); + code->inst[ip].inst0 |= inst->Alpha.WriteMask ? 1 << 14 : 0; code->inst[ip].inst0 |= (inst->RGB.OutputWriteMask << 15) | (inst->Alpha.OutputWriteMask << 18); if (inst->Nop) { code->inst[ip].inst0 |= R500_INST_NOP; diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_code.h b/src/mesa/drivers/dri/r300/compiler/radeon_code.h index 35360aa70f0..67e6acf8b10 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_code.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_code.h @@ -132,10 +132,10 @@ typedef enum { struct r300_fragment_program_external_state { struct { /** - * If the sampler is used as a shadow sampler, - * this field contains swizzle depending on the depth texture mode. + * This field contains swizzle for some lowering passes + * (shadow comparison, unorm->snorm conversion) */ - unsigned depth_texture_swizzle:12; + unsigned texture_swizzle:12; /** * If the sampler is used as a shadow sampler, @@ -172,6 +172,12 @@ struct r300_fragment_program_external_state { * and right before texture fetch. The scaling factor is given by * RC_STATE_R300_TEXSCALE_FACTOR. */ unsigned clamp_and_scale_before_fetch : 1; + + /** + * Fetch RGTC1_SNORM or LATC1_SNORM as UNORM and convert UNORM -> SNORM + * in the shader. + */ + unsigned convert_unorm_to_snorm:1; } unit[16]; unsigned frag_clamp:1; diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_compiler.c b/src/mesa/drivers/dri/r300/compiler/radeon_compiler.c index 79cd7996f78..b7936725d85 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_compiler.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_compiler.c @@ -483,7 +483,7 @@ void rc_validate_final_shader(struct radeon_compiler *c, void *user) { /* Check the number of constants. */ if (c->Program.Constants.Count > c->max_constants) { - rc_error(c, "Too many constants. Max: 256, Got: %i\n", - c->Program.Constants.Count); + rc_error(c, "Too many constants. Max: %i, Got: %i\n", + c->max_constants, c->Program.Constants.Count); } } diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c index c080d5aecc6..d1a7eab50f7 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c @@ -704,9 +704,16 @@ static void get_readers_for_single_write( &d->BranchMasks[branch_depth]; if (masks->HasElse) { + /* Abort on read for components that + * were written in the IF block. */ d->ReaderData->AbortOnRead |= masks->IfWriteMask & ~masks->ElseWriteMask; + /* Abort on read for components that + * were written in the ELSE block. */ + d->ReaderData->AbortOnRead |= + masks->ElseWriteMask + & ~d->AliveWriteMask; d->AliveWriteMask = masks->IfWriteMask ^ ((masks->IfWriteMask ^ masks->ElseWriteMask) diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c b/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c index 25afd272bee..e3e498e8fb4 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c @@ -81,6 +81,13 @@ struct rc_opcode_info rc_opcodes[MAX_RC_OPCODE] = { .IsComponentwise = 1 }, { + .Opcode = RC_OPCODE_CND, + .Name = "CND", + .NumSrcRegs = 3, + .HasDstReg = 1, + .IsComponentwise = 1 + }, + { .Opcode = RC_OPCODE_COS, .Name = "COS", .NumSrcRegs = 1, diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.h b/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.h index 7e666101276..b5868820611 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.h @@ -56,6 +56,9 @@ typedef enum { /** vec4 instruction: dst.c = src0.c < 0.0 ? src1.c : src2.c */ RC_OPCODE_CMP, + /** vec4 instruction: dst.c = src2.c > 0.5 ? src0.c : src1.c */ + RC_OPCODE_CND, + /** scalar instruction: dst = cos(src0.x) */ RC_OPCODE_COS, diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c b/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c index c4e6a5e0a1f..79898e1047e 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c @@ -509,10 +509,34 @@ static int is_presub_candidate( { const struct rc_opcode_info * info = rc_get_opcode_info(inst->U.I.Opcode); unsigned int i; + unsigned int is_constant[2] = {0, 0}; + + assert(inst->U.I.Opcode == RC_OPCODE_ADD); if (inst->U.I.PreSub.Opcode != RC_PRESUB_NONE || inst->U.I.SaturateMode) return 0; + /* If both sources use a constant swizzle, then we can't convert it to + * a presubtract operation. In fact for the ADD and SUB presubtract + * operations neither source can contain a constant swizzle. This + * specific case is checked in peephole_add_presub_add() when + * we make sure the swizzles for both sources are equal, so we + * don't need to worry about it here. */ + for (i = 0; i < 2; i++) { + int chan; + for (chan = 0; chan < 4; chan++) { + rc_swizzle swz = + get_swz(inst->U.I.SrcReg[i].Swizzle, chan); + if (swz == RC_SWIZZLE_ONE + || swz == RC_SWIZZLE_ZERO + || swz == RC_SWIZZLE_HALF) { + is_constant[i] = 1; + } + } + } + if (is_constant[0] && is_constant[1]) + return 0; + for(i = 0; i < info->NumSrcRegs; i++) { struct rc_src_register src = inst->U.I.SrcReg[i]; if (src_reads_dst_mask(src, inst->U.I.DstReg)) diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c b/src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c index 9e03eb1aca8..2dae56a2428 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c @@ -99,6 +99,7 @@ static void classify_instruction(struct rc_sub_instruction * inst, switch(inst->Opcode) { case RC_OPCODE_ADD: case RC_OPCODE_CMP: + case RC_OPCODE_CND: case RC_OPCODE_DDX: case RC_OPCODE_DDY: case RC_OPCODE_FRC: @@ -289,7 +290,7 @@ static void set_pair_instruction(struct r300_fragment_program_compiler *c, } if (needalpha) { - pair->Alpha.WriteMask |= GET_BIT(inst->DstReg.WriteMask, 3); + pair->Alpha.WriteMask |= (GET_BIT(inst->DstReg.WriteMask, 3) << 3); if (pair->Alpha.WriteMask) { pair->Alpha.DestIndex = inst->DstReg.Index; } diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h b/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h index 6708b16d29a..d1a435fc530 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h @@ -71,7 +71,7 @@ struct rc_pair_instruction_arg { struct rc_pair_sub_instruction { unsigned int Opcode:8; unsigned int DestIndex:RC_REGISTER_INDEX_BITS; - unsigned int WriteMask:3; + unsigned int WriteMask:4; unsigned int Target:2; unsigned int OutputWriteMask:3; unsigned int DepthWriteMask:1; diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c b/src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c index 1cf77d9cf73..cef448ee4e1 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c @@ -32,8 +32,8 @@ /* Series of transformations to be done on textures. */ -static struct rc_src_register shadow_ambient(struct r300_fragment_program_compiler *compiler, - int tmu) +static struct rc_src_register shadow_fail_value(struct r300_fragment_program_compiler *compiler, + int tmu) { struct rc_src_register reg = { 0, }; @@ -46,6 +46,20 @@ static struct rc_src_register shadow_ambient(struct r300_fragment_program_compil reg.File = RC_FILE_NONE; reg.Swizzle = RC_SWIZZLE_0000; } + + reg.Swizzle = combine_swizzles(reg.Swizzle, + compiler->state.unit[tmu].texture_swizzle); + return reg; +} + +static struct rc_src_register shadow_pass_value(struct r300_fragment_program_compiler *compiler, + int tmu) +{ + struct rc_src_register reg = { 0, }; + + reg.File = RC_FILE_NONE; + reg.Swizzle = combine_swizzles(RC_SWIZZLE_1111, + compiler->state.unit[tmu].texture_swizzle); return reg; } @@ -141,10 +155,9 @@ int radeonTransformTEX( inst->U.I.Opcode = RC_OPCODE_MOV; if (comparefunc == RC_COMPARE_FUNC_ALWAYS) { - inst->U.I.SrcReg[0].File = RC_FILE_NONE; - inst->U.I.SrcReg[0].Swizzle = RC_SWIZZLE_1111; + inst->U.I.SrcReg[0] = shadow_pass_value(compiler, inst->U.I.TexSrcUnit); } else { - inst->U.I.SrcReg[0] = shadow_ambient(compiler, inst->U.I.TexSrcUnit); + inst->U.I.SrcReg[0] = shadow_fail_value(compiler, inst->U.I.TexSrcUnit); } return 1; @@ -157,9 +170,11 @@ int radeonTransformTEX( /* Save the output register. */ struct rc_dst_register output_reg = inst->U.I.DstReg; + unsigned saturate_mode = inst->U.I.SaturateMode; /* Redirect TEX to a new temp. */ tmp_texsample = rc_find_free_temporary(c); + inst->U.I.SaturateMode = 0; inst->U.I.DstReg.File = RC_FILE_TEMPORARY; inst->U.I.DstReg.Index = tmp_texsample; inst->U.I.DstReg.WriteMask = RC_MASK_XYZW; @@ -235,15 +250,15 @@ int radeonTransformTEX( inst_cmp = rc_insert_new_instruction(c, inst_add); inst_cmp->U.I.Opcode = RC_OPCODE_CMP; + inst_cmp->U.I.SaturateMode = saturate_mode; inst_cmp->U.I.DstReg = output_reg; inst_cmp->U.I.SrcReg[0].File = RC_FILE_TEMPORARY; inst_cmp->U.I.SrcReg[0].Index = tmp_sum; inst_cmp->U.I.SrcReg[0].Swizzle = combine_swizzles(RC_SWIZZLE_WWWW, - compiler->state.unit[inst->U.I.TexSrcUnit].depth_texture_swizzle); - inst_cmp->U.I.SrcReg[pass].File = RC_FILE_NONE; - inst_cmp->U.I.SrcReg[pass].Swizzle = RC_SWIZZLE_1111; - inst_cmp->U.I.SrcReg[fail] = shadow_ambient(compiler, inst->U.I.TexSrcUnit); + compiler->state.unit[inst->U.I.TexSrcUnit].texture_swizzle); + inst_cmp->U.I.SrcReg[pass] = shadow_pass_value(compiler, inst->U.I.TexSrcUnit); + inst_cmp->U.I.SrcReg[fail] = shadow_fail_value(compiler, inst->U.I.TexSrcUnit); assert(tmp_texsample != tmp_sum); } @@ -396,6 +411,7 @@ int radeonTransformTEX( inst->U.I.SrcReg[0].Index = temp; } + /* NPOT -> POT conversion for 3D textures. */ if (inst->U.I.Opcode != RC_OPCODE_KIL && compiler->state.unit[inst->U.I.TexSrcUnit].clamp_and_scale_before_fetch) { struct rc_instruction *inst_mov; @@ -425,6 +441,53 @@ int radeonTransformTEX( scale_texcoords(compiler, inst, RC_STATE_R300_TEXSCALE_FACTOR); } + /* Convert SNORM-encoded ATI1N sampled as UNORM to SNORM. + * Formula: dst = tex > 0.5 ? tex*2-2 : tex*2 + */ + if (inst->U.I.Opcode != RC_OPCODE_KIL && + compiler->state.unit[inst->U.I.TexSrcUnit].convert_unorm_to_snorm) { + unsigned two, two_swizzle; + struct rc_instruction *inst_mul, *inst_mad, *inst_cnd; + + two = rc_constants_add_immediate_scalar(&c->Program.Constants, 2.35, &two_swizzle); + + inst_mul = rc_insert_new_instruction(c, inst); + inst_mul->U.I.Opcode = RC_OPCODE_MUL; + inst_mul->U.I.DstReg.File = RC_FILE_TEMPORARY; + inst_mul->U.I.DstReg.Index = rc_find_free_temporary(c); + inst_mul->U.I.SrcReg[0].File = RC_FILE_TEMPORARY; + inst_mul->U.I.SrcReg[0].Index = rc_find_free_temporary(c); /* redirected TEX output */ + inst_mul->U.I.SrcReg[1].File = RC_FILE_CONSTANT; /* 2 */ + inst_mul->U.I.SrcReg[1].Index = two; + inst_mul->U.I.SrcReg[1].Swizzle = two_swizzle; + + inst_mad = rc_insert_new_instruction(c, inst_mul); + inst_mad->U.I.Opcode = RC_OPCODE_MAD; + inst_mad->U.I.DstReg.File = RC_FILE_TEMPORARY; + inst_mad->U.I.DstReg.Index = rc_find_free_temporary(c); + inst_mad->U.I.SrcReg[0] = inst_mul->U.I.SrcReg[0]; /* redirected TEX output */ + inst_mad->U.I.SrcReg[1] = inst_mul->U.I.SrcReg[1]; /* 2 */ + inst_mad->U.I.SrcReg[2] = inst_mul->U.I.SrcReg[1]; /* 2 */ + inst_mad->U.I.SrcReg[2].Negate = RC_MASK_XYZW; + + inst_cnd = rc_insert_new_instruction(c, inst_mad); + inst_cnd->U.I.Opcode = RC_OPCODE_CND; + inst_cnd->U.I.SaturateMode = inst->U.I.SaturateMode; + inst_cnd->U.I.DstReg = inst->U.I.DstReg; + inst_cnd->U.I.SrcReg[0].File = RC_FILE_TEMPORARY; + inst_cnd->U.I.SrcReg[0].Index = inst_mad->U.I.DstReg.Index; + inst_cnd->U.I.SrcReg[0].Swizzle = compiler->state.unit[inst->U.I.TexSrcUnit].texture_swizzle; + inst_cnd->U.I.SrcReg[1].File = RC_FILE_TEMPORARY; + inst_cnd->U.I.SrcReg[1].Index = inst_mul->U.I.DstReg.Index; + inst_cnd->U.I.SrcReg[1].Swizzle = compiler->state.unit[inst->U.I.TexSrcUnit].texture_swizzle; + inst_cnd->U.I.SrcReg[2] = inst_mul->U.I.SrcReg[0]; /* redirected TEX output */ + + inst->U.I.SaturateMode = 0; + inst->U.I.DstReg.File = RC_FILE_TEMPORARY; + inst->U.I.DstReg.Index = inst_mul->U.I.SrcReg[0].Index; + inst->U.I.DstReg.WriteMask = RC_MASK_XYZW; + } + /* Cannot write texture to output registers or with saturate (all chips), * or with masks (non-r500). */ if (inst->U.I.Opcode != RC_OPCODE_KIL && diff --git a/src/mesa/drivers/dri/r300/r300_context.c b/src/mesa/drivers/dri/r300/r300_context.c index 0d8bd4fc706..213d3c060a6 100644 --- a/src/mesa/drivers/dri/r300/r300_context.c +++ b/src/mesa/drivers/dri/r300/r300_context.c @@ -133,7 +133,6 @@ static const struct dri_extension card_extensions[] = { {"GL_ATI_texture_mirror_once", NULL}, {"GL_MESA_pack_invert", NULL}, {"GL_MESA_ycbcr_texture", NULL}, - {"GL_MESAX_texture_float", NULL}, {"GL_NV_blend_square", NULL}, {"GL_NV_vertex_program", GL_NV_vertex_program_functions}, #if FEATURE_OES_EGL_image diff --git a/src/mesa/drivers/dri/r300/r300_fragprog_common.c b/src/mesa/drivers/dri/r300/r300_fragprog_common.c index a0a26f1b38d..f0d960dca54 100644 --- a/src/mesa/drivers/dri/r300/r300_fragprog_common.c +++ b/src/mesa/drivers/dri/r300/r300_fragprog_common.c @@ -77,8 +77,8 @@ static void build_state( if (fp->Base.ShadowSamplers & (1 << unit)) { struct gl_texture_object* tex = r300->radeon.glCtx->Texture.Unit[unit]._Current; - state->unit[unit].depth_texture_swizzle = build_dts(tex->DepthMode); - state->unit[unit].texture_compare_func = build_func(tex->CompareFunc); + state->unit[unit].texture_swizzle = build_dts(tex->Sampler.DepthMode); + state->unit[unit].texture_compare_func = build_func(tex->Sampler.CompareFunc); } } } diff --git a/src/mesa/drivers/dri/r300/r300_reg.h b/src/mesa/drivers/dri/r300/r300_reg.h index 2b9d85fae8b..8980bd3dde1 100644 --- a/src/mesa/drivers/dri/r300/r300_reg.h +++ b/src/mesa/drivers/dri/r300/r300_reg.h @@ -1906,7 +1906,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. # define R300_ALU_OUTC_D2A (3 << 23) # define R300_ALU_OUTC_MIN (4 << 23) # define R300_ALU_OUTC_MAX (5 << 23) -# define R300_ALU_OUTC_CMPH (7 << 23) +# define R300_ALU_OUTC_CND (7 << 23) # define R300_ALU_OUTC_CMP (8 << 23) # define R300_ALU_OUTC_FRC (9 << 23) # define R300_ALU_OUTC_REPL_ALPHA (10 << 23) diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c index 51989c6b224..da6c8b602e1 100644 --- a/src/mesa/drivers/dri/r300/r300_state.c +++ b/src/mesa/drivers/dri/r300/r300_state.c @@ -1343,7 +1343,7 @@ static void r300SetupTextures(struct gl_context * ctx) */ r300->hw.tex.filter_1.cmd[R300_TEX_VALUE_0 + hw_tmu] = t->pp_txfilter_1 | - translate_lod_bias(ctx->Texture.Unit[i].LodBias + t->base.LodBias); + translate_lod_bias(ctx->Texture.Unit[i].LodBias + t->base.Sampler.LodBias); r300->hw.tex.size.cmd[R300_TEX_VALUE_0 + hw_tmu] = t->pp_txsize; r300->hw.tex.format.cmd[R300_TEX_VALUE_0 + @@ -2014,7 +2014,7 @@ static const GLfloat *get_fragmentprogram_constant(struct gl_context *ctx, GLuin buffer[0] = buffer[1] = buffer[2] = - buffer[3] = texObj->CompareFailValue; + buffer[3] = texObj->Sampler.CompareFailValue; } return buffer; } diff --git a/src/mesa/drivers/dri/r300/r300_tex.c b/src/mesa/drivers/dri/r300/r300_tex.c index f930b4d06bf..590d9afe14a 100644 --- a/src/mesa/drivers/dri/r300/r300_tex.c +++ b/src/mesa/drivers/dri/r300/r300_tex.c @@ -81,13 +81,13 @@ static void r300UpdateTexWrap(radeonTexObjPtr t) t->pp_txfilter &= ~(R300_TX_WRAP_S_MASK | R300_TX_WRAP_T_MASK | R300_TX_WRAP_R_MASK); - t->pp_txfilter |= translate_wrap_mode(tObj->WrapS) << R300_TX_WRAP_S_SHIFT; + t->pp_txfilter |= translate_wrap_mode(tObj->Sampler.WrapS) << R300_TX_WRAP_S_SHIFT; if (tObj->Target != GL_TEXTURE_1D) { - t->pp_txfilter |= translate_wrap_mode(tObj->WrapT) << R300_TX_WRAP_T_SHIFT; + t->pp_txfilter |= translate_wrap_mode(tObj->Sampler.WrapT) << R300_TX_WRAP_T_SHIFT; if (tObj->Target == GL_TEXTURE_3D) - t->pp_txfilter |= translate_wrap_mode(tObj->WrapR) << R300_TX_WRAP_R_SHIFT; + t->pp_txfilter |= translate_wrap_mode(tObj->Sampler.WrapR) << R300_TX_WRAP_R_SHIFT; } } @@ -202,7 +202,7 @@ static void r300TexParameter(struct gl_context * ctx, GLenum target, case GL_TEXTURE_MIN_FILTER: case GL_TEXTURE_MAG_FILTER: case GL_TEXTURE_MAX_ANISOTROPY_EXT: - r300SetTexFilter(t, texObj->MinFilter, texObj->MagFilter, texObj->MaxAnisotropy); + r300SetTexFilter(t, texObj->Sampler.MinFilter, texObj->Sampler.MagFilter, texObj->Sampler.MaxAnisotropy); break; case GL_TEXTURE_WRAP_S: @@ -212,7 +212,7 @@ static void r300TexParameter(struct gl_context * ctx, GLenum target, break; case GL_TEXTURE_BORDER_COLOR: - r300SetTexBorderColor(t, texObj->BorderColor.f); + r300SetTexBorderColor(t, texObj->Sampler.BorderColor.f); break; case GL_TEXTURE_BASE_LEVEL: @@ -299,12 +299,14 @@ static struct gl_texture_object *r300NewTextureObject(struct gl_context * ctx, } _mesa_initialize_texture_object(&t->base, name, target); - t->base.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy; + t->base.Sampler.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy; /* Initialize hardware state */ r300UpdateTexWrap(t); - r300SetTexFilter(t, t->base.MinFilter, t->base.MagFilter, t->base.MaxAnisotropy); - r300SetTexBorderColor(t, t->base.BorderColor.f); + r300SetTexFilter(t, t->base.Sampler.MinFilter, + t->base.Sampler.MagFilter, + t->base.Sampler.MaxAnisotropy); + r300SetTexBorderColor(t, t->base.Sampler.BorderColor.f); return &t->base; } diff --git a/src/mesa/drivers/dri/r300/r300_texstate.c b/src/mesa/drivers/dri/r300/r300_texstate.c index ed9955b05d8..e24ad6f088d 100644 --- a/src/mesa/drivers/dri/r300/r300_texstate.c +++ b/src/mesa/drivers/dri/r300/r300_texstate.c @@ -216,7 +216,7 @@ void r300SetDepthTexMode(struct gl_texture_object *tObj) return; } - switch (tObj->DepthMode) { + switch (tObj->Sampler.DepthMode) { case GL_LUMINANCE: t->pp_txformat = format[0]; break; diff --git a/src/mesa/drivers/dri/r600/defaultendian.h b/src/mesa/drivers/dri/r600/defaultendian.h index 32caf32cd2e..75bd61c3cd4 100644 --- a/src/mesa/drivers/dri/r600/defaultendian.h +++ b/src/mesa/drivers/dri/r600/defaultendian.h @@ -29,8 +29,8 @@ #define _DEFINEENDIAN_H_ //We have to choose a reg bits orientation if there is no compile flag for it. -#if defined(LITTLEENDIAN_CPU) -#elif defined(BIGENDIAN_CPU) +#ifdef MESA_BIG_ENDIAN +#define BIGENDIAN_CPU #else #define LITTLEENDIAN_CPU #endif diff --git a/src/mesa/drivers/dri/r600/evergreen_blit.c b/src/mesa/drivers/dri/r600/evergreen_blit.c index e07da8c15b4..0e4da5499ba 100644 --- a/src/mesa/drivers/dri/r600/evergreen_blit.c +++ b/src/mesa/drivers/dri/r600/evergreen_blit.c @@ -98,10 +98,11 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo uint32_t cb_color0_base, cb_color0_info = 0; uint32_t cb_color0_pitch = 0, cb_color0_slice = 0, cb_color0_attrib = 0; int id = 0; - uint32_t comp_swap, format, source_format, number_type; + uint32_t endian, comp_swap, format, source_format, number_type; BATCH_LOCALS(&context->radeon); cb_color0_base = dst_offset / 256; + endian = ENDIAN_NONE; /* pitch */ SETfield(cb_color0_pitch, (nPitchInPixel / 8) - 1, @@ -119,10 +120,6 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo EG_CB_COLOR0_ATTRIB__NON_DISP_TILING_ORDER_bit); SETfield(cb_color0_info, - ENDIAN_NONE, - EG_CB_COLOR0_INFO__ENDIAN_shift, - EG_CB_COLOR0_INFO__ENDIAN_mask); - SETfield(cb_color0_info, ARRAY_LINEAR_GENERAL, EG_CB_COLOR0_INFO__ARRAY_MODE_shift, EG_CB_COLOR0_INFO__ARRAY_MODE_mask); @@ -131,24 +128,36 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo switch(mesa_format) { case MESA_FORMAT_RGBA8888: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_STD_REV; number_type = NUMBER_UNORM; source_format = 1; break; case MESA_FORMAT_SIGNED_RGBA8888: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_STD_REV; number_type = NUMBER_SNORM; source_format = 1; break; case MESA_FORMAT_RGBA8888_REV: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_STD; number_type = NUMBER_UNORM; source_format = 1; break; case MESA_FORMAT_SIGNED_RGBA8888_REV: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_STD; number_type = NUMBER_SNORM; @@ -156,6 +165,9 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo break; case MESA_FORMAT_ARGB8888: case MESA_FORMAT_XRGB8888: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_ALT; number_type = NUMBER_UNORM; @@ -163,54 +175,81 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo break; case MESA_FORMAT_ARGB8888_REV: case MESA_FORMAT_XRGB8888_REV: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_ALT_REV; number_type = NUMBER_UNORM; source_format = 1; break; case MESA_FORMAT_RGB565: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_5_6_5; comp_swap = SWAP_STD_REV; number_type = NUMBER_UNORM; source_format = 1; break; case MESA_FORMAT_RGB565_REV: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_5_6_5; comp_swap = SWAP_STD; number_type = NUMBER_UNORM; source_format = 1; break; case MESA_FORMAT_ARGB4444: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_4_4_4_4; comp_swap = SWAP_ALT; number_type = NUMBER_UNORM; source_format = 1; break; case MESA_FORMAT_ARGB4444_REV: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_4_4_4_4; comp_swap = SWAP_ALT_REV; number_type = NUMBER_UNORM; source_format = 1; break; case MESA_FORMAT_ARGB1555: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_1_5_5_5; comp_swap = SWAP_ALT; number_type = NUMBER_UNORM; source_format = 1; break; case MESA_FORMAT_ARGB1555_REV: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_1_5_5_5; comp_swap = SWAP_ALT_REV; number_type = NUMBER_UNORM; source_format = 1; break; case MESA_FORMAT_AL88: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_8_8; comp_swap = SWAP_STD; number_type = NUMBER_UNORM; source_format = 1; break; case MESA_FORMAT_AL88_REV: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_8_8; comp_swap = SWAP_STD_REV; number_type = NUMBER_UNORM; @@ -242,60 +281,90 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo source_format = 1; break; case MESA_FORMAT_RGBA_FLOAT32: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_32_32_32_32_FLOAT; comp_swap = SWAP_STD; number_type = NUMBER_FLOAT; source_format = 0; break; case MESA_FORMAT_RGBA_FLOAT16: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_16_16_16_16_FLOAT; comp_swap = SWAP_STD; number_type = NUMBER_FLOAT; source_format = 0; break; case MESA_FORMAT_ALPHA_FLOAT32: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_32_FLOAT; comp_swap = SWAP_ALT_REV; number_type = NUMBER_FLOAT; source_format = 0; break; case MESA_FORMAT_ALPHA_FLOAT16: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_16_FLOAT; comp_swap = SWAP_ALT_REV; number_type = NUMBER_FLOAT; source_format = 0; break; case MESA_FORMAT_LUMINANCE_FLOAT32: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_32_FLOAT; comp_swap = SWAP_ALT; number_type = NUMBER_FLOAT; source_format = 0; break; case MESA_FORMAT_LUMINANCE_FLOAT16: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_16_FLOAT; comp_swap = SWAP_ALT; number_type = NUMBER_FLOAT; source_format = 0; break; case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_32_32_FLOAT; comp_swap = SWAP_ALT_REV; number_type = NUMBER_FLOAT; source_format = 0; break; case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_16_16_FLOAT; comp_swap = SWAP_ALT_REV; number_type = NUMBER_FLOAT; source_format = 0; break; case MESA_FORMAT_INTENSITY_FLOAT32: /* X, X, X, X */ +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_32_FLOAT; comp_swap = SWAP_STD; number_type = NUMBER_FLOAT; source_format = 0; break; case MESA_FORMAT_INTENSITY_FLOAT16: /* X, X, X, X */ +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_16_FLOAT; comp_swap = SWAP_STD; number_type = NUMBER_UNORM; @@ -303,6 +372,9 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo break; case MESA_FORMAT_X8_Z24: case MESA_FORMAT_S8_Z24: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_24; comp_swap = SWAP_STD; number_type = NUMBER_UNORM; @@ -313,6 +385,9 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo source_format = 0; break; case MESA_FORMAT_Z24_S8: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_24_8; comp_swap = SWAP_STD; number_type = NUMBER_UNORM; @@ -323,6 +398,9 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo source_format = 0; break; case MESA_FORMAT_Z16: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_16; comp_swap = SWAP_STD; number_type = NUMBER_UNORM; @@ -333,6 +411,9 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo source_format = 0; break; case MESA_FORMAT_Z32: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_32; comp_swap = SWAP_STD; number_type = NUMBER_UNORM; @@ -343,12 +424,18 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo source_format = 0; break; case MESA_FORMAT_SARGB8: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_ALT; number_type = NUMBER_SRGB; source_format = 1; break; case MESA_FORMAT_SLA8: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_8_8; comp_swap = SWAP_ALT_REV; number_type = NUMBER_SRGB; @@ -367,6 +454,10 @@ eg_set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_fo } SETfield(cb_color0_info, + endian, + EG_CB_COLOR0_INFO__ENDIAN_shift, + EG_CB_COLOR0_INFO__ENDIAN_mask); + SETfield(cb_color0_info, format, EG_CB_COLOR0_INFO__FORMAT_shift, EG_CB_COLOR0_INFO__FORMAT_mask); @@ -441,10 +532,10 @@ static inline void eg_load_shaders(struct gl_context * ctx) shader = context->blit_bo->ptr; for(i=0; i<sizeof(evergreen_vs)/4; i++) { - shader[128+i] = evergreen_vs[i]; + shader[128+i] = CPU_TO_LE32(evergreen_vs[i]); } for(i=0; i<sizeof(evergreen_ps)/4; i++) { - shader[256+i] = evergreen_ps[i]; + shader[256+i] = CPU_TO_LE32(evergreen_ps[i]); } radeon_bo_unmap(context->blit_bo); @@ -525,6 +616,7 @@ eg_set_vtx_resource(context_t *context) { struct radeon_bo *bo = context->blit_bo; uint32_t sq_vtx_constant_word3 = 0; + uint32_t sq_vtx_constant_word2 = 0; BATCH_LOCALS(&context->radeon); BEGIN_BATCH_NO_AUTOSTATE(6); @@ -555,13 +647,19 @@ eg_set_vtx_resource(context_t *context) EG_SQ_VTX_CONSTANT_WORD3_0__DST_SEL_W_shift, EG_SQ_VTX_CONSTANT_WORD3_0__DST_SEL_W_mask); + sq_vtx_constant_word2 = 0 +#ifdef MESA_BIG_ENDIAN + | (SQ_ENDIAN_8IN32 << SQ_VTX_CONSTANT_WORD2_0__ENDIAN_SWAP_shift) +#endif + | (16 << SQ_VTX_CONSTANT_WORD2_0__STRIDE_shift); + BEGIN_BATCH_NO_AUTOSTATE(10 + 2); R600_OUT_BATCH(CP_PACKET3(R600_IT_SET_RESOURCE, 8)); R600_OUT_BATCH(EG_SQ_FETCH_RESOURCE_VS_OFFSET * EG_FETCH_RESOURCE_STRIDE); R600_OUT_BATCH(0); R600_OUT_BATCH(48 - 1); - R600_OUT_BATCH(16 << SQ_VTX_CONSTANT_WORD2_0__STRIDE_shift); + R600_OUT_BATCH(sq_vtx_constant_word2); R600_OUT_BATCH(sq_vtx_constant_word3); R600_OUT_BATCH(0); R600_OUT_BATCH(0); diff --git a/src/mesa/drivers/dri/r600/evergreen_blit_shaders.h b/src/mesa/drivers/dri/r600/evergreen_blit_shaders.h index eb025280739..84f20f8cafb 100644 --- a/src/mesa/drivers/dri/r600/evergreen_blit_shaders.h +++ b/src/mesa/drivers/dri/r600/evergreen_blit_shaders.h @@ -37,11 +37,19 @@ const uint32_t evergreen_vs[] = 0x00000000, 0x3c000000, 0x67961001, +#ifdef MESA_BIG_ENDIAN + 0x000a0000, +#else 0x00080000, +#endif 0x00000000, 0x1c000000, 0x67961000, +#ifdef MESA_BIG_ENDIAN + 0x00020008, +#else 0x00000008, +#endif 0x00000000, }; diff --git a/src/mesa/drivers/dri/r600/evergreen_chip.c b/src/mesa/drivers/dri/r600/evergreen_chip.c index 53dacbfdf39..42566e537a5 100644 --- a/src/mesa/drivers/dri/r600/evergreen_chip.c +++ b/src/mesa/drivers/dri/r600/evergreen_chip.c @@ -124,7 +124,7 @@ static void evergreenSendTexState(struct gl_context *ctx, struct radeon_state_at context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); - struct evergreen_vertex_program *vp = context->selected_vp; + struct evergreen_vertex_program *vp = (struct evergreen_vertex_program *) context->selected_vp; struct radeon_bo *bo = NULL; unsigned int i; @@ -307,6 +307,16 @@ static void evergreenSetupVTXConstants(struct gl_context * ctx, SQ_VTX_CONSTANT_WORD2_0__DATA_FORMAT_shift, SQ_VTX_CONSTANT_WORD2_0__DATA_FORMAT_mask); // TODO : trace back api for initial data type, not only GL_FLOAT SETfield(uSQ_VTX_CONSTANT_WORD2_0, 0, BASE_ADDRESS_HI_shift, BASE_ADDRESS_HI_mask); // TODO + + SETfield(uSQ_VTX_CONSTANT_WORD2_0, +#ifdef MESA_BIG_ENDIAN + SQ_ENDIAN_8IN32, +#else + SQ_ENDIAN_NONE, +#endif + SQ_VTX_CONSTANT_WORD2_0__ENDIAN_SWAP_shift, + SQ_VTX_CONSTANT_WORD2_0__ENDIAN_SWAP_mask); + if(GL_TRUE == pStreamDesc->normalize) { SETfield(uSQ_VTX_CONSTANT_WORD2_0, SQ_NUM_FORMAT_NORM, @@ -379,6 +389,8 @@ static void evergreenSendVTX(struct gl_context *ctx, struct radeon_state_atom *a struct evergreen_vertex_program *vp = (struct evergreen_vertex_program *)(context->selected_vp); unsigned int i, j = 0; BATCH_LOCALS(&context->radeon); + (void) b_l_rmesa; /* silence unused var warning */ + radeon_print(RADEON_STATE, RADEON_VERBOSE, "%s\n", __func__); if (context->radeon.tcl.aos_count == 0) diff --git a/src/mesa/drivers/dri/r600/evergreen_oglprog.c b/src/mesa/drivers/dri/r600/evergreen_oglprog.c index a2a361f32e6..1fd655e85f8 100644 --- a/src/mesa/drivers/dri/r600/evergreen_oglprog.c +++ b/src/mesa/drivers/dri/r600/evergreen_oglprog.c @@ -42,7 +42,7 @@ static void evergreen_freeVertProgCache(struct gl_context *ctx, struct r700_vertex_program_cont *cache) { - struct evergreen_vertex_program *tmp, *vp = cache->progs; + struct evergreen_vertex_program *tmp, *vp = (struct evergreen_vertex_program *) cache->progs; while (vp) { tmp = vp->next; @@ -121,7 +121,7 @@ static void evergreenDeleteProgram(struct gl_context * ctx, struct gl_program *p { case GL_VERTEX_STATE_PROGRAM_NV: case GL_VERTEX_PROGRAM_ARB: - evergreen_freeVertProgCache(ctx, vpc); + evergreen_freeVertProgCache(ctx, (struct r700_vertex_program_cont *) vpc); break; case GL_FRAGMENT_PROGRAM_NV: case GL_FRAGMENT_PROGRAM_ARB: @@ -154,7 +154,7 @@ evergreenProgramStringNotify(struct gl_context * ctx, GLenum target, struct gl_p switch (target) { case GL_VERTEX_PROGRAM_ARB: - evergreen_freeVertProgCache(ctx, vpc); + evergreen_freeVertProgCache(ctx, (struct r700_vertex_program_cont *) vpc); vpc->progs = NULL; break; case GL_FRAGMENT_PROGRAM_ARB: diff --git a/src/mesa/drivers/dri/r600/evergreen_render.c b/src/mesa/drivers/dri/r600/evergreen_render.c index 6e51832c878..4507be29d86 100644 --- a/src/mesa/drivers/dri/r600/evergreen_render.c +++ b/src/mesa/drivers/dri/r600/evergreen_render.c @@ -180,6 +180,15 @@ static void evergreenRunRenderPrimitive(struct gl_context * ctx, int start, int SETfield(vgt_index_type, DI_INDEX_SIZE_16_BIT, INDEX_TYPE_shift, INDEX_TYPE_mask); } + /* 16-bit indexes are packed in a 32-bit value */ + SETfield(vgt_index_type, +#if MESA_BIG_ENDIAN + VGT_DMA_SWAP_32_BIT, +#else + VGT_DMA_SWAP_NONE, +#endif + SWAP_MODE_shift, SWAP_MODE_mask); + vgt_num_indices = num_indices; SETfield(vgt_draw_initiator, DI_SRC_SEL_DMA, SOURCE_SELECT_shift, SOURCE_SELECT_mask); SETfield(vgt_draw_initiator, DI_MAJOR_MODE_0, MAJOR_MODE_shift, MAJOR_MODE_mask); @@ -252,6 +261,15 @@ static void evergreenRunRenderPrimitiveImmediate(struct gl_context * ctx, int st SETfield(vgt_index_type, DI_INDEX_SIZE_16_BIT, INDEX_TYPE_shift, INDEX_TYPE_mask); } + /* 16-bit indexes are packed in a 32-bit value */ + SETfield(vgt_index_type, +#if MESA_BIG_ENDIAN + VGT_DMA_SWAP_32_BIT, +#else + VGT_DMA_SWAP_NONE, +#endif + SWAP_MODE_shift, SWAP_MODE_mask); + vgt_num_indices = num_indices; SETfield(vgt_draw_initiator, DI_MAJOR_MODE_0, MAJOR_MODE_shift, MAJOR_MODE_mask); @@ -620,6 +638,7 @@ static void evergreenSetupIndexBuffer(struct gl_context *ctx, const struct _mesa } } +#if 0 /* unused */ static void evergreenAlignDataToDword(struct gl_context *ctx, const struct gl_client_array *input, int count, @@ -661,6 +680,7 @@ static void evergreenAlignDataToDword(struct gl_context *ctx, attr->stride = dst_stride; } +#endif static void evergreenSetupStreams(struct gl_context *ctx, const struct gl_client_array *input[], int count) { diff --git a/src/mesa/drivers/dri/r600/evergreen_tex.c b/src/mesa/drivers/dri/r600/evergreen_tex.c index 3b5448a0e4e..33a5f277683 100644 --- a/src/mesa/drivers/dri/r600/evergreen_tex.c +++ b/src/mesa/drivers/dri/r600/evergreen_tex.c @@ -97,6 +97,16 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, @@ -105,6 +115,7 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif if (mesa_format == MESA_FORMAT_SIGNED_RGBA8888) { SETfield(t->SQ_TEX_RESOURCE4, SQ_FORMAT_COMP_SIGNED, FORMAT_COMP_X_shift, FORMAT_COMP_X_mask); @@ -122,6 +133,16 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -130,6 +151,7 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif if (mesa_format == MESA_FORMAT_SIGNED_RGBA8888_REV) { SETfield(t->SQ_TEX_RESOURCE4, SQ_FORMAT_COMP_SIGNED, FORMAT_COMP_X_shift, FORMAT_COMP_X_mask); @@ -146,6 +168,16 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -154,12 +186,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_XRGB8888: SETfield(t->SQ_TEX_RESOURCE7, FMT_8_8_8_8, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -168,26 +211,48 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_XRGB8888_REV: SETfield(t->SQ_TEX_RESOURCE7, FMT_8_8_8_8, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); - SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_ARGB8888_REV: SETfield(t->SQ_TEX_RESOURCE7, FMT_8_8_8_8, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, @@ -196,12 +261,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_RGB888: SETfield(t->SQ_TEX_RESOURCE7, FMT_8_8_8, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -210,12 +286,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_RGB565: SETfield(t->SQ_TEX_RESOURCE7, FMT_5_6_5, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -224,12 +311,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_RGB565_REV: SETfield(t->SQ_TEX_RESOURCE7, FMT_5_6_5, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -238,12 +336,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_ARGB4444: SETfield(t->SQ_TEX_RESOURCE7, FMT_4_4_4_4, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -252,12 +361,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_ARGB4444_REV: SETfield(t->SQ_TEX_RESOURCE7, FMT_4_4_4_4, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, @@ -266,12 +386,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_ARGB1555: SETfield(t->SQ_TEX_RESOURCE7, FMT_1_5_5_5, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -280,12 +411,23 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_ARGB1555_REV: SETfield(t->SQ_TEX_RESOURCE7, FMT_1_5_5_5, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, @@ -294,6 +436,7 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_AL88: case MESA_FORMAT_AL88_REV: /* TODO : Check this. */ @@ -581,7 +724,7 @@ static GLboolean evergreenGetTexFormat(struct gl_texture_object *tObj, gl_format default: break; }; - switch (tObj->DepthMode) { + switch (tObj->Sampler.DepthMode) { case GL_LUMINANCE: /* X, X, X, ONE */ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); @@ -699,18 +842,18 @@ static void evergreenUpdateTexWrap(radeonTexObjPtr t) { struct gl_texture_object *tObj = &t->base; - SETfield(t->SQ_TEX_SAMPLER0, evergreen_translate_wrap_mode(tObj->WrapS), + SETfield(t->SQ_TEX_SAMPLER0, evergreen_translate_wrap_mode(tObj->Sampler.WrapS), EG_SQ_TEX_SAMPLER_WORD0_0__CLAMP_X_shift, EG_SQ_TEX_SAMPLER_WORD0_0__CLAMP_X_mask); if (tObj->Target != GL_TEXTURE_1D) { - SETfield(t->SQ_TEX_SAMPLER0, evergreen_translate_wrap_mode(tObj->WrapT), + SETfield(t->SQ_TEX_SAMPLER0, evergreen_translate_wrap_mode(tObj->Sampler.WrapT), EG_SQ_TEX_SAMPLER_WORD0_0__CLAMP_Y_shift, EG_SQ_TEX_SAMPLER_WORD0_0__CLAMP_Y_mask); if (tObj->Target == GL_TEXTURE_3D) - SETfield(t->SQ_TEX_SAMPLER0, evergreen_translate_wrap_mode(tObj->WrapR), + SETfield(t->SQ_TEX_SAMPLER0, evergreen_translate_wrap_mode(tObj->Sampler.WrapR), EG_SQ_TEX_SAMPLER_WORD0_0__CLAMP_Z_shift, EG_SQ_TEX_SAMPLER_WORD0_0__CLAMP_Z_mask); } @@ -1022,21 +1165,21 @@ static GLboolean evergreen_setup_hardware_state(struct gl_context * ctx, struct SETfield(t->SQ_TEX_RESOURCE5, t->maxLod - t->minLod, LAST_LEVEL_shift, LAST_LEVEL_mask); SETfield(t->SQ_TEX_SAMPLER1, - EG_S_FIXED(CLAMP(t->base.MinLod - t->minLod, 0, 15), 8), + EG_S_FIXED(CLAMP(t->base.Sampler.MinLod - t->minLod, 0, 15), 8), EG_SQ_TEX_SAMPLER_WORD1_0__MIN_LOD_shift, EG_SQ_TEX_SAMPLER_WORD1_0__MIN_LOD_mask); SETfield(t->SQ_TEX_SAMPLER1, - EG_S_FIXED(CLAMP(t->base.MaxLod - t->minLod, 0, 15), 8), + EG_S_FIXED(CLAMP(t->base.Sampler.MaxLod - t->minLod, 0, 15), 8), EG_SQ_TEX_SAMPLER_WORD1_0__MAX_LOD_shift, EG_SQ_TEX_SAMPLER_WORD1_0__MAX_LOD_mask); SETfield(t->SQ_TEX_SAMPLER2, - EG_S_FIXED(CLAMP(ctx->Texture.Unit[unit].LodBias + t->base.LodBias, -16, 16), 8), + EG_S_FIXED(CLAMP(ctx->Texture.Unit[unit].LodBias + t->base.Sampler.LodBias, -16, 16), 8), EG_SQ_TEX_SAMPLER_WORD2_0__LOD_BIAS_shift, EG_SQ_TEX_SAMPLER_WORD2_0__LOD_BIAS_mask); - if(texObj->CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB) + if(texObj->Sampler.CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB) { - SETfield(t->SQ_TEX_SAMPLER0, evergreen_translate_shadow_func(texObj->CompareFunc), + SETfield(t->SQ_TEX_SAMPLER0, evergreen_translate_shadow_func(texObj->Sampler.CompareFunc), EG_SQ_TEX_SAMPLER_WORD0_0__DCF_shift, EG_SQ_TEX_SAMPLER_WORD0_0__DCF_mask); } @@ -1420,12 +1563,12 @@ static struct gl_texture_object *evergreenNewTextureObject(struct gl_context * c t, _mesa_lookup_enum_by_nr(target)); _mesa_initialize_texture_object(&t->base, name, target); - t->base.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy; + t->base.Sampler.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy; evergreenSetTexDefaultState(t); evergreenUpdateTexWrap(t); - evergreenSetTexFilter(t, t->base.MinFilter, t->base.MagFilter, t->base.MaxAnisotropy); - evergreenSetTexBorderColor(t, t->base.BorderColor.f); + evergreenSetTexFilter(t, t->base.Sampler.MinFilter, t->base.Sampler.MagFilter, t->base.Sampler.MaxAnisotropy); + evergreenSetTexBorderColor(t, t->base.Sampler.BorderColor.f); return &t->base; } @@ -1475,7 +1618,7 @@ static void evergreenTexParameter(struct gl_context * ctx, GLenum target, case GL_TEXTURE_MIN_FILTER: case GL_TEXTURE_MAG_FILTER: case GL_TEXTURE_MAX_ANISOTROPY_EXT: - evergreenSetTexFilter(t, texObj->MinFilter, texObj->MagFilter, texObj->MaxAnisotropy); + evergreenSetTexFilter(t, texObj->Sampler.MinFilter, texObj->Sampler.MagFilter, texObj->Sampler.MaxAnisotropy); break; case GL_TEXTURE_WRAP_S: @@ -1485,7 +1628,7 @@ static void evergreenTexParameter(struct gl_context * ctx, GLenum target, break; case GL_TEXTURE_BORDER_COLOR: - evergreenSetTexBorderColor(t, texObj->BorderColor.f); + evergreenSetTexBorderColor(t, texObj->Sampler.BorderColor.f); break; case GL_TEXTURE_BASE_LEVEL: diff --git a/src/mesa/drivers/dri/r600/evergreen_vertprog.c b/src/mesa/drivers/dri/r600/evergreen_vertprog.c index b3371f20b19..018869b9996 100644 --- a/src/mesa/drivers/dri/r600/evergreen_vertprog.c +++ b/src/mesa/drivers/dri/r600/evergreen_vertprog.c @@ -405,7 +405,7 @@ void evergreenSelectVertexShader(struct gl_context *ctx) } if (match) { - context->selected_vp = vp; + context->selected_vp = (struct r700_vertex_program *) vp; return; } } @@ -418,7 +418,7 @@ void evergreenSelectVertexShader(struct gl_context *ctx) } vp->next = vpc->progs; vpc->progs = vp; - context->selected_vp = vp; + context->selected_vp = (struct r700_vertex_program *) vp; return; } @@ -566,7 +566,7 @@ void evergreenSetVertexFormat(struct gl_context *ctx, const struct gl_client_arr void * evergreenGetActiveVpShaderBo(struct gl_context * ctx) { context_t *context = EVERGREEN_CONTEXT(ctx); - struct evergreen_vertex_program *vp = context->selected_vp;; + struct evergreen_vertex_program *vp = (struct evergreen_vertex_program *) context->selected_vp; if (vp) return vp->shaderbo; @@ -577,7 +577,7 @@ void * evergreenGetActiveVpShaderBo(struct gl_context * ctx) void * evergreenGetActiveVpShaderConstBo(struct gl_context * ctx) { context_t *context = EVERGREEN_CONTEXT(ctx); - struct evergreen_vertex_program *vp = context->selected_vp;; + struct evergreen_vertex_program *vp = (struct evergreen_vertex_program *) context->selected_vp; if (vp) return vp->constbo0; @@ -589,7 +589,7 @@ GLboolean evergreenSetupVertexProgram(struct gl_context * ctx) { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); - struct evergreen_vertex_program *vp = context->selected_vp; + struct evergreen_vertex_program *vp = (struct evergreen_vertex_program *) context->selected_vp; if(GL_FALSE == vp->loaded) { @@ -650,7 +650,7 @@ GLboolean evergreenSetupVPconstants(struct gl_context * ctx) { context_t *context = EVERGREEN_CONTEXT(ctx); EVERGREEN_CHIP_CONTEXT *evergreen = GET_EVERGREEN_CHIP(context); - struct evergreen_vertex_program *vp = context->selected_vp; + struct evergreen_vertex_program *vp = (struct evergreen_vertex_program *) context->selected_vp; struct gl_program_parameter_list *paramList; unsigned int unNumParamData; diff --git a/src/mesa/drivers/dri/r600/r600_blit.c b/src/mesa/drivers/dri/r600/r600_blit.c index 31c32d62f9a..2d47afdcbbf 100644 --- a/src/mesa/drivers/dri/r600/r600_blit.c +++ b/src/mesa/drivers/dri/r600/r600_blit.c @@ -94,17 +94,17 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma { uint32_t cb_color0_base, cb_color0_size = 0, cb_color0_info = 0, cb_color0_view = 0; int id = 0; - uint32_t comp_swap, format; + uint32_t endian, comp_swap, format; BATCH_LOCALS(&context->radeon); cb_color0_base = dst_offset / 256; + endian = ENDIAN_NONE; SETfield(cb_color0_size, (nPitchInPixel / 8) - 1, PITCH_TILE_MAX_shift, PITCH_TILE_MAX_mask); SETfield(cb_color0_size, ((nPitchInPixel * h) / 64) - 1, SLICE_TILE_MAX_shift, SLICE_TILE_MAX_mask); - SETfield(cb_color0_info, ENDIAN_NONE, ENDIAN_shift, ENDIAN_mask); SETfield(cb_color0_info, ARRAY_LINEAR_GENERAL, CB_COLOR0_INFO__ARRAY_MODE_shift, CB_COLOR0_INFO__ARRAY_MODE_mask); @@ -112,24 +112,36 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma switch(mesa_format) { case MESA_FORMAT_RGBA8888: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_STD_REV; SETbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_SIGNED_RGBA8888: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_STD_REV; SETbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_SNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_RGBA8888_REV: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_STD; SETbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_SIGNED_RGBA8888_REV: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_STD; SETbit(cb_color0_info, SOURCE_FORMAT_bit); @@ -137,6 +149,9 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma break; case MESA_FORMAT_ARGB8888: case MESA_FORMAT_XRGB8888: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_ALT; SETbit(cb_color0_info, SOURCE_FORMAT_bit); @@ -144,54 +159,81 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma break; case MESA_FORMAT_ARGB8888_REV: case MESA_FORMAT_XRGB8888_REV: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_ALT_REV; SETbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_RGB565: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif + comp_swap = SWAP_STD_REV; format = COLOR_5_6_5; - comp_swap = SWAP_STD_REV; SETbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_RGB565_REV: - format = COLOR_5_6_5; +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif comp_swap = SWAP_STD; + format = COLOR_5_6_5; SETbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_ARGB4444: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_4_4_4_4; comp_swap = SWAP_ALT; SETbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_ARGB4444_REV: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_4_4_4_4; comp_swap = SWAP_ALT_REV; SETbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_ARGB1555: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_1_5_5_5; comp_swap = SWAP_ALT; SETbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_ARGB1555_REV: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_1_5_5_5; comp_swap = SWAP_ALT_REV; SETbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_AL88: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_8_8; comp_swap = SWAP_STD; SETbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_AL88_REV: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_8_8; comp_swap = SWAP_STD_REV; SETbit(cb_color0_info, SOURCE_FORMAT_bit); @@ -223,6 +265,9 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_RGBA_FLOAT32: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_32_32_32_32_FLOAT; comp_swap = SWAP_STD; SETbit(cb_color0_info, BLEND_FLOAT32_bit); @@ -230,12 +275,18 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_RGBA_FLOAT16: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_16_16_16_16_FLOAT; comp_swap = SWAP_STD; CLEARbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_ALPHA_FLOAT32: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_32_FLOAT; comp_swap = SWAP_ALT_REV; SETbit(cb_color0_info, BLEND_FLOAT32_bit); @@ -243,12 +294,18 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_ALPHA_FLOAT16: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_16_FLOAT; comp_swap = SWAP_ALT_REV; CLEARbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_LUMINANCE_FLOAT32: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_32_FLOAT; comp_swap = SWAP_ALT; SETbit(cb_color0_info, BLEND_FLOAT32_bit); @@ -256,12 +313,18 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_LUMINANCE_FLOAT16: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_16_FLOAT; comp_swap = SWAP_ALT; CLEARbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_32_32_FLOAT; comp_swap = SWAP_ALT_REV; SETbit(cb_color0_info, BLEND_FLOAT32_bit); @@ -269,12 +332,18 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_16_16_FLOAT; comp_swap = SWAP_ALT_REV; CLEARbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_INTENSITY_FLOAT32: /* X, X, X, X */ +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_32_FLOAT; comp_swap = SWAP_STD; SETbit(cb_color0_info, BLEND_FLOAT32_bit); @@ -282,6 +351,9 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma SETfield(cb_color0_info, NUMBER_FLOAT, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_INTENSITY_FLOAT16: /* X, X, X, X */ +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_16_FLOAT; comp_swap = SWAP_STD; CLEARbit(cb_color0_info, SOURCE_FORMAT_bit); @@ -289,6 +361,9 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma break; case MESA_FORMAT_X8_Z24: case MESA_FORMAT_S8_Z24: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_24; comp_swap = SWAP_STD; SETfield(cb_color0_info, ARRAY_1D_TILED_THIN1, @@ -297,6 +372,9 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_Z24_S8: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_24_8; comp_swap = SWAP_STD; SETfield(cb_color0_info, ARRAY_1D_TILED_THIN1, @@ -305,6 +383,9 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_Z16: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_16; comp_swap = SWAP_STD; SETfield(cb_color0_info, ARRAY_1D_TILED_THIN1, @@ -313,6 +394,9 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_Z32: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_32; comp_swap = SWAP_STD; SETfield(cb_color0_info, ARRAY_1D_TILED_THIN1, @@ -321,12 +405,18 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma SETfield(cb_color0_info, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_SARGB8: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN32; +#endif format = COLOR_8_8_8_8; comp_swap = SWAP_ALT; SETbit(cb_color0_info, SOURCE_FORMAT_bit); SETfield(cb_color0_info, NUMBER_SRGB, NUMBER_TYPE_shift, NUMBER_TYPE_mask); break; case MESA_FORMAT_SLA8: +#ifdef MESA_BIG_ENDIAN + endian = ENDIAN_8IN16; +#endif format = COLOR_8_8; comp_swap = SWAP_ALT_REV; SETbit(cb_color0_info, SOURCE_FORMAT_bit); @@ -348,6 +438,7 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma if (context->radeon.radeonScreen->chip_family >= CHIP_FAMILY_RV770) CLEARbit(cb_color0_info, BLEND_FLOAT32_bit); + SETfield(cb_color0_info, endian, ENDIAN_shift, ENDIAN_mask); SETfield(cb_color0_info, format, CB_COLOR0_INFO__FORMAT_shift, CB_COLOR0_INFO__FORMAT_mask); SETfield(cb_color0_info, comp_swap, COMP_SWAP_shift, COMP_SWAP_mask); @@ -426,10 +517,10 @@ static inline void load_shaders(struct gl_context * ctx) shader = context->blit_bo->ptr; for(i=0; i<sizeof(r6xx_vs)/4; i++) { - shader[128+i] = r6xx_vs[i]; + shader[128+i] = CPU_TO_LE32(r6xx_vs[i]); } for(i=0; i<sizeof(r6xx_ps)/4; i++) { - shader[256+i] = r6xx_ps[i]; + shader[256+i] = CPU_TO_LE32(r6xx_ps[i]); } radeon_bo_unmap(context->blit_bo); @@ -521,6 +612,8 @@ static inline void set_vtx_resource(context_t *context) { struct radeon_bo *bo = context->blit_bo; + uint32_t sq_vtx_constant_word2 = 0; + BATCH_LOCALS(&context->radeon); BEGIN_BATCH_NO_AUTOSTATE(6); @@ -543,13 +636,19 @@ set_vtx_resource(context_t *context) else r700SyncSurf(context, bo, RADEON_GEM_DOMAIN_GTT, 0, VC_ACTION_ENA_bit); + sq_vtx_constant_word2 = 0 +#ifdef MESA_BIG_ENDIAN + | (SQ_ENDIAN_8IN32 << SQ_VTX_CONSTANT_WORD2_0__ENDIAN_SWAP_shift) +#endif + | (16 << SQ_VTX_CONSTANT_WORD2_0__STRIDE_shift); + BEGIN_BATCH_NO_AUTOSTATE(9 + 2); R600_OUT_BATCH(CP_PACKET3(R600_IT_SET_RESOURCE, 7)); R600_OUT_BATCH(SQ_FETCH_RESOURCE_VS_OFFSET * FETCH_RESOURCE_STRIDE); R600_OUT_BATCH(0); R600_OUT_BATCH(48 - 1); - R600_OUT_BATCH(16 << SQ_VTX_CONSTANT_WORD2_0__STRIDE_shift); + R600_OUT_BATCH(sq_vtx_constant_word2); R600_OUT_BATCH(1 << MEM_REQUEST_SIZE_shift); R600_OUT_BATCH(0); R600_OUT_BATCH(0); @@ -670,11 +769,11 @@ set_tex_resource(context_t * context, SETfield(sq_tex_resource1, FMT_8_8_8_8, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); - SETfield(sq_tex_resource4, SQ_SEL_1, + SETfield(sq_tex_resource4, SQ_SEL_Y, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(sq_tex_resource4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); - SETfield(sq_tex_resource4, SQ_SEL_W, + SETfield(sq_tex_resource4, SQ_SEL_1, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(sq_tex_resource4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); diff --git a/src/mesa/drivers/dri/r600/r600_blit_shaders.h b/src/mesa/drivers/dri/r600/r600_blit_shaders.h index 492dde96368..2124f7673d7 100644 --- a/src/mesa/drivers/dri/r600/r600_blit_shaders.h +++ b/src/mesa/drivers/dri/r600/r600_blit_shaders.h @@ -10,7 +10,11 @@ const uint32_t r6xx_vs[] = 0x00000000, 0x3c000000, // SQ_VTX_INST_FETCH BUFFER_ID(0) MEGA_FETCH_COUNT(16) 0x68cd1000, // DST_GPR(0) DST_SWZ: XYZW DATA_FORMAT(35) SQ_NUM_FORMAT_SCALED SQ_FORMAT_COMP_SIGNED +#ifdef MESA_BIG_ENDIAN + 0x000a0000, // ENDIAN_SWAP(SQ_ENDIAN_8IN32) MEGA_FETCH(1) +#else 0x00080000, // ENDIAN_SWAP(SQ_ENDIAN_NONE) MEGA_FETCH(1) +#endif 0x00000000, // VTX_DWORD_PAD }; diff --git a/src/mesa/drivers/dri/r600/r600_context.c b/src/mesa/drivers/dri/r600/r600_context.c index 00708be1993..1b9676147ee 100644 --- a/src/mesa/drivers/dri/r600/r600_context.c +++ b/src/mesa/drivers/dri/r600/r600_context.c @@ -145,7 +145,6 @@ static const struct dri_extension card_extensions[] = { {"GL_ATI_texture_mirror_once", NULL}, {"GL_MESA_pack_invert", NULL}, {"GL_MESA_ycbcr_texture", NULL}, - {"GL_MESAX_texture_float", NULL}, {"GL_NV_blend_square", NULL}, {"GL_NV_vertex_program", GL_NV_vertex_program_functions}, {"GL_ARB_pixel_buffer_object", NULL}, diff --git a/src/mesa/drivers/dri/r600/r600_emit.c b/src/mesa/drivers/dri/r600/r600_emit.c index 53ece9a3505..c6916ed98a3 100644 --- a/src/mesa/drivers/dri/r600/r600_emit.c +++ b/src/mesa/drivers/dri/r600/r600_emit.c @@ -100,14 +100,17 @@ GLboolean r600EmitShaderConsts(struct gl_context * ctx, int sizeinBYTE) { struct radeon_bo * pbo = (struct radeon_bo *)constbo; - uint8_t *out; + uint32_t *out; + int i; radeon_bo_map(pbo, 1); - out = (uint8_t*)(pbo->ptr); - out = (uint8_t*)ADD_POINTERS(pbo->ptr, bo_offset); + out = (uint32_t*)(pbo->ptr); + out = (uint32_t*)ADD_POINTERS(pbo->ptr, bo_offset); - memcpy(out, data, sizeinBYTE); + for(i = 0; i < sizeinBYTE / 4; i++) { + out[i] = CPU_TO_LE32(*((uint32_t *)data + i)); + } radeon_bo_unmap(pbo); @@ -123,6 +126,7 @@ GLboolean r600EmitShader(struct gl_context * ctx, radeonContextPtr radeonctx = RADEON_CONTEXT(ctx); struct radeon_bo * pbo; uint32_t *out; + int i; shader_again_alloc: pbo = radeon_bo_open(radeonctx->radeonScreen->bom, 0, @@ -154,7 +158,9 @@ shader_again_alloc: out = (uint32_t*)(pbo->ptr); - memcpy(out, data, sizeinDWORD * 4); + for(i = 0; i < sizeinDWORD; i++) { + out[i] = CPU_TO_LE32(*((uint32_t *)data + i)); + } radeon_bo_unmap(pbo); diff --git a/src/mesa/drivers/dri/r600/r600_tex.c b/src/mesa/drivers/dri/r600/r600_tex.c index fe4f0e48661..eb7ed30c7a3 100644 --- a/src/mesa/drivers/dri/r600/r600_tex.c +++ b/src/mesa/drivers/dri/r600/r600_tex.c @@ -78,15 +78,15 @@ static void r600UpdateTexWrap(radeonTexObjPtr t) { struct gl_texture_object *tObj = &t->base; - SETfield(t->SQ_TEX_SAMPLER0, translate_wrap_mode(tObj->WrapS), + SETfield(t->SQ_TEX_SAMPLER0, translate_wrap_mode(tObj->Sampler.WrapS), SQ_TEX_SAMPLER_WORD0_0__CLAMP_X_shift, SQ_TEX_SAMPLER_WORD0_0__CLAMP_X_mask); if (tObj->Target != GL_TEXTURE_1D) { - SETfield(t->SQ_TEX_SAMPLER0, translate_wrap_mode(tObj->WrapT), + SETfield(t->SQ_TEX_SAMPLER0, translate_wrap_mode(tObj->Sampler.WrapT), CLAMP_Y_shift, CLAMP_Y_mask); if (tObj->Target == GL_TEXTURE_3D) - SETfield(t->SQ_TEX_SAMPLER0, translate_wrap_mode(tObj->WrapR), + SETfield(t->SQ_TEX_SAMPLER0, translate_wrap_mode(tObj->Sampler.WrapR), CLAMP_Z_shift, CLAMP_Z_mask); } } @@ -292,7 +292,7 @@ static void r600TexParameter(struct gl_context * ctx, GLenum target, case GL_TEXTURE_MIN_FILTER: case GL_TEXTURE_MAG_FILTER: case GL_TEXTURE_MAX_ANISOTROPY_EXT: - r600SetTexFilter(t, texObj->MinFilter, texObj->MagFilter, texObj->MaxAnisotropy); + r600SetTexFilter(t, texObj->Sampler.MinFilter, texObj->Sampler.MagFilter, texObj->Sampler.MaxAnisotropy); break; case GL_TEXTURE_WRAP_S: @@ -302,7 +302,7 @@ static void r600TexParameter(struct gl_context * ctx, GLenum target, break; case GL_TEXTURE_BORDER_COLOR: - r600SetTexBorderColor(t, texObj->BorderColor.f); + r600SetTexBorderColor(t, texObj->Sampler.BorderColor.f); break; case GL_TEXTURE_BASE_LEVEL: @@ -382,13 +382,13 @@ static struct gl_texture_object *r600NewTextureObject(struct gl_context * ctx, t, _mesa_lookup_enum_by_nr(target)); _mesa_initialize_texture_object(&t->base, name, target); - t->base.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy; + t->base.Sampler.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy; /* Initialize hardware state */ r600SetTexDefaultState(t); r600UpdateTexWrap(t); - r600SetTexFilter(t, t->base.MinFilter, t->base.MagFilter, t->base.MaxAnisotropy); - r600SetTexBorderColor(t, t->base.BorderColor.f); + r600SetTexFilter(t, t->base.Sampler.MinFilter, t->base.Sampler.MagFilter, t->base.Sampler.MaxAnisotropy); + r600SetTexBorderColor(t, t->base.Sampler.BorderColor.f); return &t->base; } diff --git a/src/mesa/drivers/dri/r600/r600_texstate.c b/src/mesa/drivers/dri/r600/r600_texstate.c index aafa6875774..949db29c189 100644 --- a/src/mesa/drivers/dri/r600/r600_texstate.c +++ b/src/mesa/drivers/dri/r600/r600_texstate.c @@ -109,6 +109,16 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, @@ -117,6 +127,7 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif if (mesa_format == MESA_FORMAT_SIGNED_RGBA8888) { SETfield(t->SQ_TEX_RESOURCE4, SQ_FORMAT_COMP_SIGNED, FORMAT_COMP_X_shift, FORMAT_COMP_X_mask); @@ -133,6 +144,16 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -141,6 +162,7 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif if (mesa_format == MESA_FORMAT_SIGNED_RGBA8888_REV) { SETfield(t->SQ_TEX_RESOURCE4, SQ_FORMAT_COMP_SIGNED, FORMAT_COMP_X_shift, FORMAT_COMP_X_mask); @@ -156,6 +178,16 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -164,11 +196,22 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_XRGB8888: SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -177,24 +220,46 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_XRGB8888_REV: SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); - SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_ARGB8888_REV: SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, @@ -203,11 +268,22 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_RGB888: SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -216,11 +292,22 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_RGB565: SETfield(t->SQ_TEX_RESOURCE1, FMT_5_6_5, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -229,11 +316,23 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif + break; case MESA_FORMAT_RGB565_REV: SETfield(t->SQ_TEX_RESOURCE1, FMT_5_6_5, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -242,11 +341,22 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_ARGB4444: SETfield(t->SQ_TEX_RESOURCE1, FMT_4_4_4_4, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -255,11 +365,21 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_ARGB4444_REV: SETfield(t->SQ_TEX_RESOURCE1, FMT_4_4_4_4, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); - +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, @@ -268,11 +388,21 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_ARGB1555: SETfield(t->SQ_TEX_RESOURCE1, FMT_1_5_5_5, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); - +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, @@ -281,11 +411,21 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_ARGB1555_REV: SETfield(t->SQ_TEX_RESOURCE1, FMT_1_5_5_5, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); - +#ifdef MESA_BIG_ENDIAN + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Y_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); + SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_W, + SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#else SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Y, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_Z, @@ -294,6 +434,7 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_Z_mask); SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); +#endif break; case MESA_FORMAT_AL88: case MESA_FORMAT_AL88_REV: /* TODO : Check this. */ @@ -571,7 +712,7 @@ static GLboolean r600GetTexFormat(struct gl_texture_object *tObj, gl_format mesa default: break; }; - switch (tObj->DepthMode) { + switch (tObj->Sampler.DepthMode) { case GL_LUMINANCE: /* X, X, X, ONE */ SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_X, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_X_mask); @@ -777,18 +918,18 @@ static GLboolean setup_hardware_state(struct gl_context * ctx, struct gl_texture SETfield(t->SQ_TEX_RESOURCE5, t->maxLod - t->minLod, LAST_LEVEL_shift, LAST_LEVEL_mask); SETfield(t->SQ_TEX_SAMPLER1, - S_FIXED(CLAMP(t->base.MinLod - t->minLod, 0, 15), 6), + S_FIXED(CLAMP(t->base.Sampler.MinLod - t->minLod, 0, 15), 6), MIN_LOD_shift, MIN_LOD_mask); SETfield(t->SQ_TEX_SAMPLER1, - S_FIXED(CLAMP(t->base.MaxLod - t->minLod, 0, 15), 6), + S_FIXED(CLAMP(t->base.Sampler.MaxLod - t->minLod, 0, 15), 6), MAX_LOD_shift, MAX_LOD_mask); SETfield(t->SQ_TEX_SAMPLER1, - S_FIXED(CLAMP(ctx->Texture.Unit[unit].LodBias + t->base.LodBias, -16, 16), 6), + S_FIXED(CLAMP(ctx->Texture.Unit[unit].LodBias + t->base.Sampler.LodBias, -16, 16), 6), SQ_TEX_SAMPLER_WORD1_0__LOD_BIAS_shift, SQ_TEX_SAMPLER_WORD1_0__LOD_BIAS_mask); - if(texObj->CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB) + if(texObj->Sampler.CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB) { - SETfield(t->SQ_TEX_SAMPLER0, r600_translate_shadow_func(texObj->CompareFunc), DEPTH_COMPARE_FUNCTION_shift, DEPTH_COMPARE_FUNCTION_mask); + SETfield(t->SQ_TEX_SAMPLER0, r600_translate_shadow_func(texObj->Sampler.CompareFunc), DEPTH_COMPARE_FUNCTION_shift, DEPTH_COMPARE_FUNCTION_mask); } else { diff --git a/src/mesa/drivers/dri/r600/r700_assembler.c b/src/mesa/drivers/dri/r600/r700_assembler.c index 024853c1beb..216ff0b941c 100644 --- a/src/mesa/drivers/dri/r600/r700_assembler.c +++ b/src/mesa/drivers/dri/r600/r700_assembler.c @@ -259,6 +259,7 @@ GLboolean is_reduction_opcode(PVSDWORD* dest) return GL_FALSE; } +#if 0 /* unused */ GLboolean EG_is_reduction_opcode(PVSDWORD* dest) { if (dest->dst.op3 == 0) @@ -270,6 +271,7 @@ GLboolean EG_is_reduction_opcode(PVSDWORD* dest) } return GL_FALSE; } +#endif GLuint GetSurfaceFormat(GLenum eType, GLuint nChannels, GLuint * pClient_size) { @@ -1186,7 +1188,12 @@ GLboolean EG_assemble_vfetch_instruction(r700_AssemblerBase* pAsm, SETfield(vfetch_instruction_ptr->m_Word2.val, 0, EG_VTX_WORD2__OFFSET_shift, EG_VTX_WORD2__OFFSET_mask); - SETfield(vfetch_instruction_ptr->m_Word2.val, SQ_ENDIAN_NONE, + SETfield(vfetch_instruction_ptr->m_Word2.val, +#ifdef MESA_BIG_ENDIAN + SQ_ENDIAN_8IN32, +#else + SQ_ENDIAN_NONE, +#endif EG_VTX_WORD2__ENDIAN_SWAP_shift, EG_VTX_WORD2__ENDIAN_SWAP_mask); SETfield(vfetch_instruction_ptr->m_Word2.val, 0, @@ -1292,7 +1299,11 @@ GLboolean assemble_vfetch_instruction2(r700_AssemblerBase* pAsm, vfetch_instruction_ptr->m_Word1.f.use_const_fields = 1; vfetch_instruction_ptr->m_Word1.f.data_format = data_format; +#ifdef MESA_BIG_ENDIAN + vfetch_instruction_ptr->m_Word2.f.endian_swap = SQ_ENDIAN_8IN32; +#else vfetch_instruction_ptr->m_Word2.f.endian_swap = SQ_ENDIAN_NONE; +#endif if(1 == _signed) { diff --git a/src/mesa/drivers/dri/r600/r700_assembler.h b/src/mesa/drivers/dri/r600/r700_assembler.h index c7c7ab2d4ff..8a9ccd1c4ec 100644 --- a/src/mesa/drivers/dri/r600/r700_assembler.h +++ b/src/mesa/drivers/dri/r600/r700_assembler.h @@ -130,6 +130,27 @@ typedef unsigned int BITS; typedef struct PVSDSTtag { +#ifdef MESA_BIG_ENDIAN + BITS addrmode1:1; //32 + BITS addrmode0:1; //31 //29 + + BITS dualop:1; // 30 //26 + + BITS op3:1; // 29 Represents *_OP3_* ALU opcode + + BITS writew:1; //28 + BITS writez:1; + BITS writey:1; + BITS writex:1; + + BITS reg:10; //24 //20 + BITS rtype:3; + + BITS pred_inv :1; //11 //8 + BITS predicated:1; //10 //8 + BITS math:1; + BITS opcode:8; //(:6) //@@@ really should be 10 bits for OP2 +#else BITS opcode:8; //(:6) //@@@ really should be 10 bits for OP2 BITS math:1; BITS predicated:1; //10 //8 @@ -149,17 +170,41 @@ typedef struct PVSDSTtag BITS addrmode0:1; //31 //29 BITS addrmode1:1; //32 +#endif } PVSDST; typedef struct PVSINSTtag { +#ifdef MESA_BIG_ENDIAN + BITS index_mode :3; + BITS SaturateMode :2; + BITS literal_slots :2; +#else BITS literal_slots :2; BITS SaturateMode :2; BITS index_mode :3; +#endif } PVSINST; typedef struct PVSSRCtag { +#ifdef MESA_BIG_ENDIAN + BITS addrmode1:1; //32 + //BITS addrsel:2; + BITS negw:1; //31 + BITS negz:1; + BITS negy:1; + BITS negx:1; + BITS abs:1; + + BITS swizzlew:3; //26 + BITS swizzlez:3; + BITS swizzley:3; + BITS swizzlex:3; + BITS reg:10; //14 (8) + BITS addrmode0:1; + BITS rtype:3; +#else BITS rtype:3; BITS addrmode0:1; BITS reg:10; //14 (8) @@ -175,10 +220,24 @@ typedef struct PVSSRCtag BITS negw:1; //31 //BITS addrsel:2; BITS addrmode1:1; //32 +#endif } PVSSRC; typedef struct PVSMATHtag { +#ifdef MESA_BIG_ENDIAN + BITS spare2:3; + BITS dstcomp:2; // select dest component + BITS negy:1; + BITS negx:1; + BITS opcode:4; + BITS dstoff:2; // 2 bits of dest offset into alt ram + BITS swizzley:3; + BITS swizzlex:3; + BITS reg:8; + BITS spare:1; + BITS rtype:4; +#else BITS rtype:4; BITS spare:1; BITS reg:8; @@ -190,6 +249,7 @@ typedef struct PVSMATHtag BITS negy:1; BITS dstcomp:2; // select dest component BITS spare2:3; +#endif } PVSMATH; typedef union PVSDWORDtag @@ -204,6 +264,34 @@ typedef union PVSDWORDtag typedef struct VAP_OUT_VTX_FMT_0tag { +#ifdef MESA_BIG_ENDIAN + BITS resvd1:12; // 20 + + BITS viewport_index:1; // 19 + BITS kill_flag:1; + BITS rta_index:1; // shares same channel as kill_flag + BITS edge_flag:1; + BITS point_size:1; // 15 + + BITS depth:1; // 14 + + BITS normal:1; + + BITS color7:1; + BITS color6:1; + BITS color5:1; + BITS color4:1; + BITS color3:1; + BITS color2:1; + BITS color1:1; + BITS color0:1; + + BITS pos_param:1; // 4 + BITS clip_dist1:1; + BITS clip_dist0:1; + BITS misc:1; + BITS pos:1; // 0 +#else BITS pos:1; // 0 BITS misc:1; BITS clip_dist0:1; @@ -230,10 +318,23 @@ typedef struct VAP_OUT_VTX_FMT_0tag BITS viewport_index:1; // 19 BITS resvd1:12; // 20 +#endif } VAP_OUT_VTX_FMT_0; typedef struct VAP_OUT_VTX_FMT_1tag { +#ifdef MESA_BIG_ENDIAN + BITS resvd:8; + + BITS tex7comp:3; + BITS tex6comp:3; + BITS tex5comp:3; + BITS tex4comp:3; + BITS tex3comp:3; + BITS tex2comp:3; + BITS tex1comp:3; + BITS tex0comp:3; +#else BITS tex0comp:3; BITS tex1comp:3; BITS tex2comp:3; @@ -244,10 +345,23 @@ typedef struct VAP_OUT_VTX_FMT_1tag BITS tex7comp:3; BITS resvd:8; +#endif } VAP_OUT_VTX_FMT_1; typedef struct VAP_OUT_VTX_FMT_2tag { +#ifdef MESA_BIG_ENDIAN + BITS resvd:8; + + BITS tex15comp:3; + BITS tex14comp:3; + BITS tex13comp:3; + BITS tex12comp:3; + BITS tex11comp:3; + BITS tex10comp:3; + BITS tex9comp:3; + BITS tex8comp:3; +#else BITS tex8comp :3; BITS tex9comp :3; BITS tex10comp:3; @@ -258,10 +372,28 @@ typedef struct VAP_OUT_VTX_FMT_2tag BITS tex15comp:3; BITS resvd:8; +#endif } VAP_OUT_VTX_FMT_2; typedef struct OUT_FRAGMENT_FMT_0tag { +#ifdef MESA_BIG_ENDIAN + BITS resvd1:20; + + BITS mask:1; + BITS coverage_to_mask:1; + BITS stencil_ref:1; + BITS depth:1; + + BITS color7:1; + BITS color6:1; + BITS color5:1; + BITS color4:1; + BITS color3:1; + BITS color2:1; + BITS color1:1; + BITS color0:1; +#else BITS color0:1; BITS color1:1; BITS color2:1; @@ -277,6 +409,7 @@ typedef struct OUT_FRAGMENT_FMT_0tag BITS mask:1; BITS resvd1:20; +#endif } OUT_FRAGMENT_FMT_0; typedef enum CF_CLAUSE_TYPE diff --git a/src/mesa/drivers/dri/r600/r700_chip.c b/src/mesa/drivers/dri/r600/r700_chip.c index 4ec2845ab44..10fa3f9762b 100644 --- a/src/mesa/drivers/dri/r600/r700_chip.c +++ b/src/mesa/drivers/dri/r600/r700_chip.c @@ -202,7 +202,15 @@ static void r700SetupVTXConstants(struct gl_context * ctx, SETfield(uSQ_VTX_CONSTANT_WORD2_0, GetSurfaceFormat(pStreamDesc->type, pStreamDesc->size, NULL), SQ_VTX_CONSTANT_WORD2_0__DATA_FORMAT_shift, SQ_VTX_CONSTANT_WORD2_0__DATA_FORMAT_mask); /* TODO : trace back api for initial data type, not only GL_FLOAT */ - + SETfield(uSQ_VTX_CONSTANT_WORD2_0, +#ifdef MESA_BIG_ENDIAN + SQ_ENDIAN_8IN32, +#else + SQ_ENDIAN_NONE, +#endif + SQ_VTX_CONSTANT_WORD2_0__ENDIAN_SWAP_shift, + SQ_VTX_CONSTANT_WORD2_0__ENDIAN_SWAP_mask); + if(GL_TRUE == pStreamDesc->normalize) { SETfield(uSQ_VTX_CONSTANT_WORD2_0, SQ_NUM_FORMAT_NORM, @@ -249,6 +257,7 @@ static void r700SendVTXState(struct gl_context *ctx, struct radeon_state_atom *a struct r700_vertex_program *vp = context->selected_vp; unsigned int i, j = 0; BATCH_LOCALS(&context->radeon); + (void) b_l_rmesa; /* silence unused var warning */ radeon_print(RADEON_STATE, RADEON_VERBOSE, "%s\n", __func__); if (context->radeon.tcl.aos_count == 0) diff --git a/src/mesa/drivers/dri/r600/r700_render.c b/src/mesa/drivers/dri/r600/r700_render.c index bb14a239b77..2bd3b62bfdb 100644 --- a/src/mesa/drivers/dri/r600/r700_render.c +++ b/src/mesa/drivers/dri/r600/r700_render.c @@ -276,6 +276,16 @@ static void r700RunRenderPrimitive(struct gl_context * ctx, int start, int end, SETfield(vgt_index_type, DI_INDEX_SIZE_16_BIT, INDEX_TYPE_shift, INDEX_TYPE_mask); } + /* 16-bit indexes are packed in a 32-bit value */ + SETfield(vgt_index_type, +#if MESA_BIG_ENDIAN + VGT_DMA_SWAP_32_BIT, +#else + VGT_DMA_SWAP_NONE, +#endif + SWAP_MODE_shift, SWAP_MODE_mask); + + vgt_num_indices = num_indices; SETfield(vgt_draw_initiator, DI_SRC_SEL_DMA, SOURCE_SELECT_shift, SOURCE_SELECT_mask); SETfield(vgt_draw_initiator, DI_MAJOR_MODE_0, MAJOR_MODE_shift, MAJOR_MODE_mask); @@ -348,6 +358,15 @@ static void r700RunRenderPrimitiveImmediate(struct gl_context * ctx, int start, SETfield(vgt_index_type, DI_INDEX_SIZE_16_BIT, INDEX_TYPE_shift, INDEX_TYPE_mask); } + /* 16-bit indexes are packed in a 32-bit value */ + SETfield(vgt_index_type, +#if MESA_BIG_ENDIAN + VGT_DMA_SWAP_32_BIT, +#else + VGT_DMA_SWAP_NONE, +#endif + SWAP_MODE_shift, SWAP_MODE_mask); + vgt_num_indices = num_indices; SETfield(vgt_draw_initiator, DI_MAJOR_MODE_0, MAJOR_MODE_shift, MAJOR_MODE_mask); @@ -580,6 +599,7 @@ static void r700ConvertAttrib(struct gl_context *ctx, int count, } } +#if 0 /* unused */ static void r700AlignDataToDword(struct gl_context *ctx, const struct gl_client_array *input, int count, @@ -621,6 +641,7 @@ static void r700AlignDataToDword(struct gl_context *ctx, attr->stride = dst_stride; } +#endif static void r700SetupStreams(struct gl_context *ctx, const struct gl_client_array *input[], int count) { diff --git a/src/mesa/drivers/dri/radeon/radeon_bocs_wrapper.h b/src/mesa/drivers/dri/radeon/radeon_bocs_wrapper.h index 60f10496026..607b7470d4b 100644 --- a/src/mesa/drivers/dri/radeon/radeon_bocs_wrapper.h +++ b/src/mesa/drivers/dri/radeon/radeon_bocs_wrapper.h @@ -1,6 +1,10 @@ #ifndef RADEON_CS_WRAPPER_H #define RADEON_CS_WRAPPER_H +/* to be used to build locally in mesa with no libdrm bits */ +#include "../radeon/radeon_bo_drm.h" +#include "../radeon/radeon_cs_drm.h" + #ifdef HAVE_LIBDRM_RADEON #include "radeon_bo.h" @@ -24,10 +28,6 @@ * when mapped - i.e. front buffer */ #endif -/* to be used to build locally in mesa with no libdrm bits */ -#include "../radeon/radeon_bo_drm.h" -#include "../radeon/radeon_cs_drm.h" - #ifndef DRM_RADEON_GEM_INFO #define DRM_RADEON_GEM_INFO 0x1c diff --git a/src/mesa/drivers/dri/radeon/radeon_chipset.h b/src/mesa/drivers/dri/radeon/radeon_chipset.h index bd6f1c79504..88b68e3d191 100644 --- a/src/mesa/drivers/dri/radeon/radeon_chipset.h +++ b/src/mesa/drivers/dri/radeon/radeon_chipset.h @@ -443,6 +443,8 @@ #define PCI_CHIP_PALM_9803 0x9803 #define PCI_CHIP_PALM_9804 0x9804 #define PCI_CHIP_PALM_9805 0x9805 +#define PCI_CHIP_PALM_9806 0x9806 +#define PCI_CHIP_PALM_9807 0x9807 #define PCI_CHIP_BARTS_6720 0x6720 #define PCI_CHIP_BARTS_6721 0x6721 diff --git a/src/mesa/drivers/dri/radeon/radeon_common.c b/src/mesa/drivers/dri/radeon/radeon_common.c index 0d73c0e3b1b..bfc307ca987 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common.c +++ b/src/mesa/drivers/dri/radeon/radeon_common.c @@ -966,7 +966,7 @@ static void radeon_print_state_atom(radeonContextPtr radeon, struct radeon_state fprintf(stderr, " emit %s %d/%d\n", state->name, dwords, state->cmd_size); - if (radeon_is_debug_enabled(RADEON_STATE, RADEON_TRACE)) { + if (state->cmd && radeon_is_debug_enabled(RADEON_STATE, RADEON_TRACE)) { if (dwords > state->cmd_size) dwords = state->cmd_size; for (i = 0; i < dwords;) { diff --git a/src/mesa/drivers/dri/radeon/radeon_common_context.c b/src/mesa/drivers/dri/radeon/radeon_common_context.c index 405aecb19ec..5d7b3973d57 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common_context.c +++ b/src/mesa/drivers/dri/radeon/radeon_common_context.c @@ -47,8 +47,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "swrast_setup/swrast_setup.h" #include "tnl/tnl.h" -#define DRIVER_DATE "20090101" - #ifndef RADEON_DEBUG int RADEON_DEBUG = (0); #endif @@ -146,8 +144,7 @@ static const GLubyte *radeonGetString(struct gl_context * ctx, GLenum name) get_chip_family_name(radeon->radeonScreen->chip_family), radeon->radeonScreen->device_id); - offset = driGetRendererString(buffer, hardwarename, DRIVER_DATE, - agp_mode); + offset = driGetRendererString(buffer, hardwarename, agp_mode); if (IS_R600_CLASS(radeon->radeonScreen)) { sprintf(&buffer[offset], " TCL"); diff --git a/src/mesa/drivers/dri/radeon/radeon_context.c b/src/mesa/drivers/dri/radeon/radeon_context.c index 154a8815e4a..4d41e99df5d 100644 --- a/src/mesa/drivers/dri/radeon/radeon_context.c +++ b/src/mesa/drivers/dri/radeon/radeon_context.c @@ -70,8 +70,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define need_GL_OES_EGL_image #include "main/remap_helper.h" -#define DRIVER_DATE "20061018" - #include "utils.h" #include "xmlpool.h" /* for symbolic values of enum-type options */ diff --git a/src/mesa/drivers/dri/radeon/radeon_debug.h b/src/mesa/drivers/dri/radeon/radeon_debug.h index ef8b9671ac9..449c27a3fe1 100644 --- a/src/mesa/drivers/dri/radeon/radeon_debug.h +++ b/src/mesa/drivers/dri/radeon/radeon_debug.h @@ -110,30 +110,30 @@ extern void _radeon_print(const radeon_debug_type_t type, * Print out debug message if channel specified by type is enabled * and compile time debugging level is at least as high as level parameter */ -#define radeon_print(type, level, message, ...) do { \ +#define radeon_print(type, level, ...) do { \ const radeon_debug_level_t _debug_level = (level); \ const radeon_debug_type_t _debug_type = (type); \ /* Compile out if level of message is too high */ \ if (radeon_is_debug_enabled(type, level)) { \ _radeon_print(_debug_type, _debug_level, \ - (message), ## __VA_ARGS__); \ + __VA_ARGS__); \ } \ } while(0) /** * printf style function for writing error messages. */ -#define radeon_error(message, ...) do { \ +#define radeon_error(...) do { \ radeon_print(RADEON_GENERAL, RADEON_CRITICAL, \ - (message), ## __VA_ARGS__); \ + __VA_ARGS__); \ } while(0) /** * printf style function for writing warnings. */ -#define radeon_warning(message, ...) do { \ +#define radeon_warning(...) do { \ radeon_print(RADEON_GENERAL, RADEON_IMPORTANT, \ - (message), ## __VA_ARGS__); \ + __VA_ARGS__); \ } while(0) extern void radeon_init_debug(void); @@ -158,13 +158,13 @@ static inline void radeon_debug_remove_indent(void) I suppose we could inline this and use macro to fetch out __LINE__ and stuff in case we run into trouble with other compilers ... GLUE! */ -#define WARN_ONCE(a, ...) do { \ +#define WARN_ONCE(...) do { \ static int __warn_once=1; \ if(__warn_once){ \ radeon_warning("*********************************WARN_ONCE*********************************\n"); \ radeon_warning("File %s function %s line %d\n", \ __FILE__, __FUNCTION__, __LINE__); \ - radeon_warning( (a), ## __VA_ARGS__);\ + radeon_warning(__VA_ARGS__);\ radeon_warning("***************************************************************************\n"); \ __warn_once=0;\ } \ diff --git a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c index 1fadad2756b..03d9b264367 100644 --- a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c +++ b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.c @@ -296,15 +296,15 @@ static void calculate_min_max_lod(struct gl_texture_object *tObj, case GL_TEXTURE_2D: case GL_TEXTURE_3D: case GL_TEXTURE_CUBE_MAP: - if (tObj->MinFilter == GL_NEAREST || tObj->MinFilter == GL_LINEAR) { + if (tObj->Sampler.MinFilter == GL_NEAREST || tObj->Sampler.MinFilter == GL_LINEAR) { /* GL_NEAREST and GL_LINEAR only care about GL_TEXTURE_BASE_LEVEL. */ minLod = maxLod = tObj->BaseLevel; } else { - minLod = tObj->BaseLevel + (GLint)(tObj->MinLod); + minLod = tObj->BaseLevel + (GLint)(tObj->Sampler.MinLod); minLod = MAX2(minLod, tObj->BaseLevel); minLod = MIN2(minLod, tObj->MaxLevel); - maxLod = tObj->BaseLevel + (GLint)(tObj->MaxLod + 0.5); + maxLod = tObj->BaseLevel + (GLint)(tObj->Sampler.MaxLod + 0.5); maxLod = MIN2(maxLod, tObj->MaxLevel); maxLod = MIN2(maxLod, tObj->Image[0][minLod]->MaxLog2 + minLod); maxLod = MAX2(maxLod, minLod); /* need at least one level */ diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c index 56c5959b0aa..732efe8bd85 100644 --- a/src/mesa/drivers/dri/radeon/radeon_screen.c +++ b/src/mesa/drivers/dri/radeon/radeon_screen.c @@ -401,12 +401,12 @@ static const struct __DRI2flushExtensionRec radeonFlushExtension = { }; static __DRIimage * -radeon_create_image_from_name(__DRIcontext *context, +radeon_create_image_from_name(__DRIscreen *screen, int width, int height, int format, int name, int pitch, void *loaderPrivate) { __DRIimage *image; - radeonContextPtr radeon = context->driverPrivate; + radeonScreenPtr radeonScreen = screen->private; if (name == 0) return NULL; @@ -442,7 +442,7 @@ radeon_create_image_from_name(__DRIcontext *context, image->pitch = pitch; image->height = height; - image->bo = radeon_bo_open(radeon->radeonScreen->bom, + image->bo = radeon_bo_open(radeonScreen->bom, (uint32_t)name, image->pitch * image->height * image->cpp, 0, @@ -1158,6 +1158,8 @@ static int radeon_set_screen_flags(radeonScreenPtr screen, int device_id) case PCI_CHIP_PALM_9803: case PCI_CHIP_PALM_9804: case PCI_CHIP_PALM_9805: + case PCI_CHIP_PALM_9806: + case PCI_CHIP_PALM_9807: screen->chip_family = CHIP_FAMILY_PALM; screen->chip_flags = RADEON_CHIPSET_TCL; break; diff --git a/src/mesa/drivers/dri/radeon/radeon_span.c b/src/mesa/drivers/dri/radeon/radeon_span.c index caf3f253d2a..8c6f2e49a5c 100644 --- a/src/mesa/drivers/dri/radeon/radeon_span.c +++ b/src/mesa/drivers/dri/radeon/radeon_span.c @@ -50,6 +50,17 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define DBG 0 +#if defined(BYTE_ORDER) && defined(BIG_ENDIAN) && BYTE_ORDER == BIG_ENDIAN +#if defined(__linux__) +#include <byteswap.h> +#define CPU_TO_LE16( x ) bswap_16( x ) +#define LE16_TO_CPU( x ) bswap_16( x ) +#endif /* __linux__ */ +#else +#define CPU_TO_LE16( x ) ( x ) +#define LE16_TO_CPU( x ) ( x ) +#endif + static void radeonSetSpanFunctions(struct radeon_renderbuffer *rrb); @@ -579,7 +590,11 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb, #define TAG(x) radeon##x##_RGB565 #define TAG2(x,y) radeon##x##_RGB565##y #if defined(RADEON_R600) -#define GET_PTR(X,Y) r600_ptr_color(rrb, (X) + x_off, (Y) + y_off) +#define GET_VALUE(_x, _y) (LE16_TO_CPU(*(GLushort*)(r600_ptr_color(rrb, _x + x_off, _y + y_off)))) +#define PUT_VALUE(_x, _y, d) { \ + GLushort *_ptr = (GLushort*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \ + *_ptr = CPU_TO_LE16(d); \ +} while (0) #else #define GET_PTR(X,Y) radeon_ptr_2byte_8x2(rrb, (X) + x_off, (Y) + y_off) #endif @@ -591,7 +606,11 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb, #define TAG(x) radeon##x##_RGB565_REV #define TAG2(x,y) radeon##x##_RGB565_REV##y #if defined(RADEON_R600) -#define GET_PTR(X,Y) r600_ptr_color(rrb, (X) + x_off, (Y) + y_off) +#define GET_VALUE(_x, _y) (LE16_TO_CPU(*(GLushort*)(r600_ptr_color(rrb, _x + x_off, _y + y_off)))) +#define PUT_VALUE(_x, _y, d) { \ + GLushort *_ptr = (GLushort*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \ + *_ptr = CPU_TO_LE16(d); \ +} while (0) #else #define GET_PTR(X,Y) radeon_ptr_2byte_8x2(rrb, (X) + x_off, (Y) + y_off) #endif @@ -605,7 +624,11 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb, #define TAG(x) radeon##x##_ARGB1555 #define TAG2(x,y) radeon##x##_ARGB1555##y #if defined(RADEON_R600) -#define GET_PTR(X,Y) r600_ptr_color(rrb, (X) + x_off, (Y) + y_off) +#define GET_VALUE(_x, _y) (LE16_TO_CPU(*(GLushort*)(r600_ptr_color(rrb, _x + x_off, _y + y_off)))) +#define PUT_VALUE(_x, _y, d) { \ + GLushort *_ptr = (GLushort*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \ + *_ptr = CPU_TO_LE16(d); \ +} while (0) #else #define GET_PTR(X,Y) radeon_ptr_2byte_8x2(rrb, (X) + x_off, (Y) + y_off) #endif @@ -617,7 +640,11 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb, #define TAG(x) radeon##x##_ARGB1555_REV #define TAG2(x,y) radeon##x##_ARGB1555_REV##y #if defined(RADEON_R600) -#define GET_PTR(X,Y) r600_ptr_color(rrb, (X) + x_off, (Y) + y_off) +#define GET_VALUE(_x, _y) (LE16_TO_CPU(*(GLushort*)(r600_ptr_color(rrb, _x + x_off, _y + y_off)))) +#define PUT_VALUE(_x, _y, d) { \ + GLushort *_ptr = (GLushort*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \ + *_ptr = CPU_TO_LE16(d); \ +} while (0) #else #define GET_PTR(X,Y) radeon_ptr_2byte_8x2(rrb, (X) + x_off, (Y) + y_off) #endif @@ -631,7 +658,11 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb, #define TAG(x) radeon##x##_ARGB4444 #define TAG2(x,y) radeon##x##_ARGB4444##y #if defined(RADEON_R600) -#define GET_PTR(X,Y) r600_ptr_color(rrb, (X) + x_off, (Y) + y_off) +#define GET_VALUE(_x, _y) (LE16_TO_CPU(*(GLushort*)(r600_ptr_color(rrb, _x + x_off, _y + y_off)))) +#define PUT_VALUE(_x, _y, d) { \ + GLushort *_ptr = (GLushort*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \ + *_ptr = CPU_TO_LE16(d); \ +} while (0) #else #define GET_PTR(X,Y) radeon_ptr_2byte_8x2(rrb, (X) + x_off, (Y) + y_off) #endif @@ -643,7 +674,11 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb, #define TAG(x) radeon##x##_ARGB4444_REV #define TAG2(x,y) radeon##x##_ARGB4444_REV##y #if defined(RADEON_R600) -#define GET_PTR(X,Y) r600_ptr_color(rrb, (X) + x_off, (Y) + y_off) +#define GET_VALUE(_x, _y) (LE16_TO_CPU(*(GLushort*)(r600_ptr_color(rrb, _x + x_off, _y + y_off)))) +#define PUT_VALUE(_x, _y, d) { \ + GLushort *_ptr = (GLushort*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \ + *_ptr = CPU_TO_LE16(d); \ +} while (0) #else #define GET_PTR(X,Y) radeon_ptr_2byte_8x2(rrb, (X) + x_off, (Y) + y_off) #endif @@ -657,10 +692,10 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb, #define TAG(x) radeon##x##_xRGB8888 #define TAG2(x,y) radeon##x##_xRGB8888##y #if defined(RADEON_R600) -#define GET_VALUE(_x, _y) ((*(GLuint*)(r600_ptr_color(rrb, _x + x_off, _y + y_off)) | 0xff000000)) +#define GET_VALUE(_x, _y) ((LE32_TO_CPU(*(GLuint*)(r600_ptr_color(rrb, _x + x_off, _y + y_off))) | 0xff000000)) #define PUT_VALUE(_x, _y, d) { \ GLuint *_ptr = (GLuint*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \ - *_ptr = d; \ + *_ptr = CPU_TO_LE32(d); \ } while (0) #else #define GET_VALUE(_x, _y) ((*(GLuint*)(radeon_ptr_4byte(rrb, _x + x_off, _y + y_off)) | 0xff000000)) @@ -679,10 +714,10 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb, #define TAG(x) radeon##x##_ARGB8888 #define TAG2(x,y) radeon##x##_ARGB8888##y #if defined(RADEON_R600) -#define GET_VALUE(_x, _y) (*(GLuint*)(r600_ptr_color(rrb, _x + x_off, _y + y_off))) +#define GET_VALUE(_x, _y) (LE32_TO_CPU(*(GLuint*)(r600_ptr_color(rrb, _x + x_off, _y + y_off)))) #define PUT_VALUE(_x, _y, d) { \ GLuint *_ptr = (GLuint*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \ - *_ptr = d; \ + *_ptr = CPU_TO_LE32(d); \ } while (0) #else #define GET_VALUE(_x, _y) (*(GLuint*)(radeon_ptr_4byte(rrb, _x + x_off, _y + y_off))) @@ -701,10 +736,10 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb, #define TAG(x) radeon##x##_BGRx8888 #define TAG2(x,y) radeon##x##_BGRx8888##y #if defined(RADEON_R600) -#define GET_VALUE(_x, _y) ((*(GLuint*)(r600_ptr_color(rrb, _x + x_off, _y + y_off)) | 0x000000ff)) +#define GET_VALUE(_x, _y) ((LE32_TO_CPU(*(GLuint*)(r600_ptr_color(rrb, _x + x_off, _y + y_off))) | 0x000000ff)) #define PUT_VALUE(_x, _y, d) { \ GLuint *_ptr = (GLuint*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \ - *_ptr = d; \ + *_ptr = CPU_TO_LE32(d); \ } while (0) #else #define GET_VALUE(_x, _y) ((*(GLuint*)(radeon_ptr_4byte(rrb, _x + x_off, _y + y_off)) | 0x000000ff)) @@ -723,7 +758,11 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb, #define TAG(x) radeon##x##_BGRA8888 #define TAG2(x,y) radeon##x##_BGRA8888##y #if defined(RADEON_R600) -#define GET_PTR(X,Y) r600_ptr_color(rrb, (X) + x_off, (Y) + y_off) +#define GET_VALUE(_x, _y) (LE32_TO_CPU(*(GLuint*)(r600_ptr_color(rrb, _x + x_off, _y + y_off)))) +#define PUT_VALUE(_x, _y, d) { \ + GLuint *_ptr = (GLuint*)r600_ptr_color( rrb, _x + x_off, _y + y_off ); \ + *_ptr = CPU_TO_LE32(d); \ +} while (0) #else #define GET_PTR(X,Y) radeon_ptr_4byte(rrb, (X) + x_off, (Y) + y_off) #endif @@ -752,7 +791,7 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb, *(GLushort *)r200_depth_2byte(rrb, _x + x_off, _y + y_off) = d #elif defined(RADEON_R600) #define WRITE_DEPTH( _x, _y, d ) \ - *(GLushort *)r600_ptr_depth(rrb, _x + x_off, _y + y_off) = d + *(GLushort *)r600_ptr_depth(rrb, _x + x_off, _y + y_off) = CPU_TO_LE16(d) #else #define WRITE_DEPTH( _x, _y, d ) \ *(GLushort *)radeon_ptr_2byte_8x2(rrb, _x + x_off, _y + y_off) = d @@ -763,7 +802,7 @@ static GLubyte *radeon_ptr_2byte_8x2(const struct radeon_renderbuffer * rrb, d = *(GLushort *)r200_depth_2byte(rrb, _x + x_off, _y + y_off) #elif defined(RADEON_R600) #define READ_DEPTH( d, _x, _y ) \ - d = *(GLushort *)r600_ptr_depth(rrb, _x + x_off, _y + y_off) + d = LE16_TO_CPU(*(GLushort *)r600_ptr_depth(rrb, _x + x_off, _y + y_off)) #else #define READ_DEPTH( d, _x, _y ) \ d = *(GLushort *)radeon_ptr_2byte_8x2(rrb, _x + x_off, _y + y_off) @@ -792,10 +831,10 @@ do { \ #define WRITE_DEPTH( _x, _y, d ) \ do { \ GLuint *_ptr = (GLuint*)r600_ptr_depth( rrb, _x + x_off, _y + y_off ); \ - GLuint tmp = *_ptr; \ + GLuint tmp = LE32_TO_CPU(*_ptr); \ tmp &= 0xff000000; \ tmp |= ((d) & 0x00ffffff); \ - *_ptr = tmp; \ + *_ptr = CPU_TO_LE32(tmp); \ } while (0) #elif defined(RADEON_R200) #define WRITE_DEPTH( _x, _y, d ) \ @@ -825,7 +864,7 @@ do { \ #elif defined(RADEON_R600) #define READ_DEPTH( d, _x, _y ) \ do { \ - d = (*(GLuint*)(r600_ptr_depth(rrb, _x + x_off, _y + y_off)) & 0x00ffffff); \ + d = (LE32_TO_CPU(*(GLuint*)(r600_ptr_depth(rrb, _x + x_off, _y + y_off))) & 0x00ffffff); \ }while(0) #elif defined(RADEON_R200) #define READ_DEPTH( d, _x, _y ) \ @@ -858,15 +897,15 @@ do { \ #define WRITE_DEPTH( _x, _y, d ) \ do { \ GLuint *_ptr = (GLuint*)r600_ptr_depth( rrb, _x + x_off, _y + y_off ); \ - GLuint tmp = *_ptr; \ + GLuint tmp = LE32_TO_CPU(*_ptr); \ tmp &= 0xff000000; \ tmp |= ((d) & 0x00ffffff); \ - *_ptr = tmp; \ + *_ptr = CPU_TO_LE32(tmp); \ _ptr = (GLuint*)r600_ptr_stencil(rrb, _x + x_off, _y + y_off); \ - tmp = *_ptr; \ + tmp = LE32_TO_CPU(*_ptr); \ tmp &= 0xffffff00; \ tmp |= ((d) >> 24) & 0xff; \ - *_ptr = tmp; \ + *_ptr = CPU_TO_LE32(tmp); \ } while (0) #elif defined(RADEON_R200) #define WRITE_DEPTH( _x, _y, d ) \ @@ -891,8 +930,8 @@ do { \ #elif defined(RADEON_R600) #define READ_DEPTH( d, _x, _y ) \ do { \ - d = (*(GLuint*)(r600_ptr_depth(rrb, _x + x_off, _y + y_off))) & 0x00ffffff; \ - d |= ((*(GLuint*)(r600_ptr_stencil(rrb, _x + x_off, _y + y_off))) << 24) & 0xff000000; \ + d = (LE32_TO_CPU(*(GLuint*)(r600_ptr_depth(rrb, _x + x_off, _y + y_off))) & 0x00ffffff); \ + d |= ((LE32_TO_CPU(*(GLuint*)(r600_ptr_stencil(rrb, _x + x_off, _y + y_off))) << 24) & 0xff000000); \ }while(0) #elif defined(RADEON_R200) #define READ_DEPTH( d, _x, _y ) \ @@ -927,10 +966,10 @@ do { \ #define WRITE_STENCIL( _x, _y, d ) \ do { \ GLuint *_ptr = (GLuint*)r600_ptr_stencil(rrb, _x + x_off, _y + y_off); \ - GLuint tmp = *_ptr; \ + GLuint tmp = LE32_TO_CPU(*_ptr); \ tmp &= 0xffffff00; \ tmp |= (d) & 0xff; \ - *_ptr = tmp; \ + *_ptr = CPU_TO_LE32(tmp); \ } while (0) #elif defined(RADEON_R200) #define WRITE_STENCIL( _x, _y, d ) \ @@ -963,7 +1002,7 @@ do { \ #define READ_STENCIL( d, _x, _y ) \ do { \ GLuint *_ptr = (GLuint*)r600_ptr_stencil( rrb, _x + x_off, _y + y_off ); \ - GLuint tmp = *_ptr; \ + GLuint tmp = LE32_TO_CPU(*_ptr); \ d = tmp & 0x000000ff; \ } while (0) #elif defined(RADEON_R200) diff --git a/src/mesa/drivers/dri/radeon/radeon_tex.c b/src/mesa/drivers/dri/radeon/radeon_tex.c index 8a35c7d2d27..25a8ddf7b6a 100644 --- a/src/mesa/drivers/dri/radeon/radeon_tex.c +++ b/src/mesa/drivers/dri/radeon/radeon_tex.c @@ -330,17 +330,17 @@ static void radeonTexParameter( struct gl_context *ctx, GLenum target, case GL_TEXTURE_MIN_FILTER: case GL_TEXTURE_MAG_FILTER: case GL_TEXTURE_MAX_ANISOTROPY_EXT: - radeonSetTexMaxAnisotropy( t, texObj->MaxAnisotropy ); - radeonSetTexFilter( t, texObj->MinFilter, texObj->MagFilter ); + radeonSetTexMaxAnisotropy( t, texObj->Sampler.MaxAnisotropy ); + radeonSetTexFilter( t, texObj->Sampler.MinFilter, texObj->Sampler.MagFilter ); break; case GL_TEXTURE_WRAP_S: case GL_TEXTURE_WRAP_T: - radeonSetTexWrap( t, texObj->WrapS, texObj->WrapT ); + radeonSetTexWrap( t, texObj->Sampler.WrapS, texObj->Sampler.WrapT ); break; case GL_TEXTURE_BORDER_COLOR: - radeonSetTexBorderColor( t, texObj->BorderColor.f ); + radeonSetTexBorderColor( t, texObj->Sampler.BorderColor.f ); break; case GL_TEXTURE_BASE_LEVEL: @@ -416,7 +416,7 @@ radeonNewTextureObject( struct gl_context *ctx, GLuint name, GLenum target ) radeonTexObj* t = CALLOC_STRUCT(radeon_tex_obj); _mesa_initialize_texture_object(&t->base, name, target); - t->base.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy; + t->base.Sampler.MaxAnisotropy = rmesa->radeon.initialMaxAnisotropy; t->border_fallback = GL_FALSE; @@ -424,10 +424,10 @@ radeonNewTextureObject( struct gl_context *ctx, GLuint name, GLenum target ) t->pp_txformat = (RADEON_TXFORMAT_ENDIAN_NO_SWAP | RADEON_TXFORMAT_PERSPECTIVE_ENABLE); - radeonSetTexWrap( t, t->base.WrapS, t->base.WrapT ); - radeonSetTexMaxAnisotropy( t, t->base.MaxAnisotropy ); - radeonSetTexFilter( t, t->base.MinFilter, t->base.MagFilter ); - radeonSetTexBorderColor( t, t->base.BorderColor.f ); + radeonSetTexWrap( t, t->base.Sampler.WrapS, t->base.Sampler.WrapT ); + radeonSetTexMaxAnisotropy( t, t->base.Sampler.MaxAnisotropy ); + radeonSetTexFilter( t, t->base.Sampler.MinFilter, t->base.Sampler.MagFilter ); + radeonSetTexBorderColor( t, t->base.Sampler.BorderColor.f ); return &t->base; } diff --git a/src/mesa/drivers/dri/savage/savagedd.c b/src/mesa/drivers/dri/savage/savagedd.c index 3f8d7aafb08..c7f58835054 100644 --- a/src/mesa/drivers/dri/savage/savagedd.c +++ b/src/mesa/drivers/dri/savage/savagedd.c @@ -38,8 +38,6 @@ #include "utils.h" -#define DRIVER_DATE "20061110" - /*************************************** * Mesa's Driver Functions ***************************************/ @@ -71,7 +69,7 @@ static const GLubyte *savageDDGetString( struct gl_context *ctx, GLenum name ) case GL_VENDOR: return (GLubyte *)"S3 Graphics Inc."; case GL_RENDERER: - offset = driGetRendererString( buffer, cardNames[chipset], DRIVER_DATE, + offset = driGetRendererString( buffer, cardNames[chipset], screen->agpMode ); return (GLubyte *)buffer; default: diff --git a/src/mesa/drivers/dri/savage/savagerender.c b/src/mesa/drivers/dri/savage/savagerender.c index 8cc448ad4f7..6687dc5f466 100644 --- a/src/mesa/drivers/dri/savage/savagerender.c +++ b/src/mesa/drivers/dri/savage/savagerender.c @@ -250,9 +250,9 @@ static GLboolean run_texnorm_stage( struct gl_context *ctx, const GLbitfield reallyEnabled = ctx->Texture.Unit[i]._ReallyEnabled; if (reallyEnabled) { const struct gl_texture_object *texObj = ctx->Texture.Unit[i]._Current; - const GLboolean normalizeS = (texObj->WrapS == GL_REPEAT); + const GLboolean normalizeS = (texObj->Sampler.WrapS == GL_REPEAT); const GLboolean normalizeT = (reallyEnabled & TEXTURE_2D_BIT) && - (texObj->WrapT == GL_REPEAT); + (texObj->Sampler.WrapT == GL_REPEAT); const GLfloat *in = (GLfloat *)VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]->data; const GLint instride = VB->AttribPtr[_TNL_ATTRIB_TEX0 + i]->stride; GLfloat (*out)[4] = store->texcoord[i].data; @@ -332,15 +332,15 @@ static void validate_texnorm( struct gl_context *ctx, GLuint flags = 0; if (((ctx->Texture.Unit[0]._ReallyEnabled & (TEXTURE_1D_BIT|TEXTURE_2D_BIT)) && - (ctx->Texture.Unit[0]._Current->WrapS == GL_REPEAT)) || + (ctx->Texture.Unit[0]._Current->Sampler.WrapS == GL_REPEAT)) || ((ctx->Texture.Unit[0]._ReallyEnabled & TEXTURE_2D_BIT) && - (ctx->Texture.Unit[0]._Current->WrapT == GL_REPEAT))) + (ctx->Texture.Unit[0]._Current->Sampler.WrapT == GL_REPEAT))) flags |= VERT_BIT_TEX0; if (((ctx->Texture.Unit[1]._ReallyEnabled & (TEXTURE_1D_BIT|TEXTURE_2D_BIT)) && - (ctx->Texture.Unit[1]._Current->WrapS == GL_REPEAT)) || + (ctx->Texture.Unit[1]._Current->Sampler.WrapS == GL_REPEAT)) || ((ctx->Texture.Unit[1]._ReallyEnabled & TEXTURE_2D_BIT) && - (ctx->Texture.Unit[1]._Current->WrapT == GL_REPEAT))) + (ctx->Texture.Unit[1]._Current->Sampler.WrapT == GL_REPEAT))) flags |= VERT_BIT_TEX1; store->active = (flags != 0); diff --git a/src/mesa/drivers/dri/savage/savagetex.c b/src/mesa/drivers/dri/savage/savagetex.c index 3aece732c99..9486c12c158 100644 --- a/src/mesa/drivers/dri/savage/savagetex.c +++ b/src/mesa/drivers/dri/savage/savagetex.c @@ -502,9 +502,9 @@ savageAllocTexObj( struct gl_texture_object *texObj ) make_empty_list( &t->base ); - savageSetTexWrapping(t,texObj->WrapS,texObj->WrapT); - savageSetTexFilter(t,texObj->MinFilter,texObj->MagFilter); - savageSetTexBorderColor(t,texObj->BorderColor.f); + savageSetTexWrapping(t,texObj->Sampler.WrapS,texObj->Sampler.WrapT); + savageSetTexFilter(t,texObj->Sampler.MinFilter,texObj->Sampler.MagFilter); + savageSetTexBorderColor(t,texObj->Sampler.BorderColor.f); } return t; @@ -2031,16 +2031,16 @@ static void savageTexParameter( struct gl_context *ctx, GLenum target, switch (pname) { case GL_TEXTURE_MIN_FILTER: case GL_TEXTURE_MAG_FILTER: - savageSetTexFilter(t,tObj->MinFilter,tObj->MagFilter); + savageSetTexFilter(t,tObj->Sampler.MinFilter,tObj->Sampler.MagFilter); break; case GL_TEXTURE_WRAP_S: case GL_TEXTURE_WRAP_T: - savageSetTexWrapping(t,tObj->WrapS,tObj->WrapT); + savageSetTexWrapping(t,tObj->Sampler.WrapS,tObj->Sampler.WrapT); break; case GL_TEXTURE_BORDER_COLOR: - savageSetTexBorderColor(t,tObj->BorderColor.f); + savageSetTexBorderColor(t,tObj->Sampler.BorderColor.f); break; default: diff --git a/src/mesa/drivers/dri/sis/sis_dd.c b/src/mesa/drivers/dri/sis/sis_dd.c index 90e894b842c..bba516f8dcd 100644 --- a/src/mesa/drivers/dri/sis/sis_dd.c +++ b/src/mesa/drivers/dri/sis/sis_dd.c @@ -45,8 +45,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. #include "utils.h" -#define DRIVER_DATE "20060710" - /* Return the width and height of the given buffer. */ static void @@ -78,7 +76,7 @@ sisGetString( struct gl_context *ctx, GLenum name ) return (GLubyte *)"Eric Anholt"; case GL_RENDERER: - offset = driGetRendererString( buffer, "SiS", DRIVER_DATE, agp_mode ); + offset = driGetRendererString( buffer, "SiS", agp_mode ); return (GLubyte *)buffer; diff --git a/src/mesa/drivers/dri/sis/sis_texstate.c b/src/mesa/drivers/dri/sis/sis_texstate.c index daec2393211..6580f155bae 100644 --- a/src/mesa/drivers/dri/sis/sis_texstate.c +++ b/src/mesa/drivers/dri/sis/sis_texstate.c @@ -335,7 +335,7 @@ sis_set_texobj_parm( struct gl_context *ctx, struct gl_texture_object *texObj, current->texture[hw_unit].hwTextureMip = 0UL; current->texture[hw_unit].hwTextureSet = t->hwformat; - if ((texObj->MinFilter == GL_NEAREST) || (texObj->MinFilter == GL_LINEAR)) { + if ((texObj->Sampler.MinFilter == GL_NEAREST) || (texObj->Sampler.MinFilter == GL_LINEAR)) { firstLevel = lastLevel = texObj->BaseLevel; } else { /* Compute which mipmap levels we really want to send to the hardware. @@ -344,9 +344,9 @@ sis_set_texobj_parm( struct gl_context *ctx, struct gl_texture_object *texObj, * Yes, this looks overly complicated, but it's all needed. */ - firstLevel = texObj->BaseLevel + (GLint)(texObj->MinLod + 0.5); + firstLevel = texObj->BaseLevel + (GLint)(texObj->Sampler.MinLod + 0.5); firstLevel = MAX2(firstLevel, texObj->BaseLevel); - lastLevel = texObj->BaseLevel + (GLint)(texObj->MaxLod + 0.5); + lastLevel = texObj->BaseLevel + (GLint)(texObj->Sampler.MaxLod + 0.5); lastLevel = MAX2(lastLevel, texObj->BaseLevel); lastLevel = MIN2(lastLevel, texObj->BaseLevel + texObj->Image[0][texObj->BaseLevel]->MaxLog2); @@ -356,7 +356,7 @@ sis_set_texobj_parm( struct gl_context *ctx, struct gl_texture_object *texObj, current->texture[hw_unit].hwTextureSet |= (lastLevel << 8); - switch (texObj->MagFilter) + switch (texObj->Sampler.MagFilter) { case GL_NEAREST: current->texture[hw_unit].hwTextureMip |= TEXTURE_FILTER_NEAREST; @@ -382,7 +382,7 @@ sis_set_texobj_parm( struct gl_context *ctx, struct gl_texture_object *texObj, MASK_TextureMipmapLodBias); } - switch (texObj->MinFilter) + switch (texObj->Sampler.MinFilter) { case GL_NEAREST: current->texture[hw_unit].hwTextureMip |= TEXTURE_FILTER_NEAREST; @@ -408,7 +408,7 @@ sis_set_texobj_parm( struct gl_context *ctx, struct gl_texture_object *texObj, break; } - switch (texObj->WrapS) + switch (texObj->Sampler.WrapS) { case GL_REPEAT: current->texture[hw_unit].hwTextureSet |= MASK_TextureWrapU; @@ -431,7 +431,7 @@ sis_set_texobj_parm( struct gl_context *ctx, struct gl_texture_object *texObj, break; } - switch (texObj->WrapT) + switch (texObj->Sampler.WrapT) { case GL_REPEAT: current->texture[hw_unit].hwTextureSet |= MASK_TextureWrapV; @@ -456,10 +456,10 @@ sis_set_texobj_parm( struct gl_context *ctx, struct gl_texture_object *texObj, { GLubyte c[4]; - CLAMPED_FLOAT_TO_UBYTE(c[0], texObj->BorderColor.f[0]); - CLAMPED_FLOAT_TO_UBYTE(c[1], texObj->BorderColor.f[1]); - CLAMPED_FLOAT_TO_UBYTE(c[2], texObj->BorderColor.f[2]); - CLAMPED_FLOAT_TO_UBYTE(c[3], texObj->BorderColor.f[3]); + CLAMPED_FLOAT_TO_UBYTE(c[0], texObj->Sampler.BorderColor.f[0]); + CLAMPED_FLOAT_TO_UBYTE(c[1], texObj->Sampler.BorderColor.f[1]); + CLAMPED_FLOAT_TO_UBYTE(c[2], texObj->Sampler.BorderColor.f[2]); + CLAMPED_FLOAT_TO_UBYTE(c[3], texObj->Sampler.BorderColor.f[3]); current->texture[hw_unit].hwTextureBorderColor = PACK_COLOR_8888(c[3], c[0], c[1], c[2]); diff --git a/src/mesa/drivers/dri/tdfx/tdfx_dd.c b/src/mesa/drivers/dri/tdfx/tdfx_dd.c index d60931ad7fd..e981f9abedf 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_dd.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_dd.c @@ -41,9 +41,6 @@ #include "main/context.h" -#define DRIVER_DATE "20061113" - - /* These are used in calls to FX_grColorMaskv() */ const GLboolean false4[4] = { GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE }; const GLboolean true4[4] = { GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE }; @@ -91,7 +88,7 @@ static const GLubyte *tdfxDDGetString( struct gl_context *ctx, GLenum name ) } } - (void) driGetRendererString(buffer, hardware, DRIVER_DATE, 0); + (void) driGetRendererString(buffer, hardware, 0); return (const GLubyte *) buffer; } case GL_VENDOR: diff --git a/src/mesa/drivers/dri/tdfx/tdfx_tex.c b/src/mesa/drivers/dri/tdfx/tdfx_tex.c index 4cca243d076..d74ddb24005 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_tex.c +++ b/src/mesa/drivers/dri/tdfx/tdfx_tex.c @@ -327,7 +327,7 @@ static void RevalidateTexture(struct gl_context *ctx, struct gl_texture_object * &(ti->sScale), &(ti->tScale), NULL, NULL); } - if (tObj->Image[0][maxl] && (tObj->MinFilter != GL_NEAREST) && (tObj->MinFilter != GL_LINEAR)) { + if (tObj->Image[0][maxl] && (tObj->Sampler.MinFilter != GL_NEAREST) && (tObj->Sampler.MinFilter != GL_LINEAR)) { /* mipmapping: need to compute smallLodLog2 */ tdfxTexGetInfo(ctx, tObj->Image[0][maxl]->Width, tObj->Image[0][maxl]->Height, @@ -1786,12 +1786,12 @@ tdfxTestProxyTexImage(struct gl_context *ctx, GLenum target, #endif if (level == 0) { /* don't use mipmap levels > 0 */ - tObj->MinFilter = tObj->MagFilter = GL_NEAREST; + tObj->Sampler.MinFilter = tObj->Sampler.MagFilter = GL_NEAREST; } else { /* test with all mipmap levels */ - tObj->MinFilter = GL_LINEAR_MIPMAP_LINEAR; - tObj->MagFilter = GL_NEAREST; + tObj->Sampler.MinFilter = GL_LINEAR_MIPMAP_LINEAR; + tObj->Sampler.MagFilter = GL_NEAREST; } RevalidateTexture(ctx, tObj); diff --git a/src/mesa/drivers/dri/unichrome/via_context.c b/src/mesa/drivers/dri/unichrome/via_context.c index 77d7116611a..89c2a12a9c2 100644 --- a/src/mesa/drivers/dri/unichrome/via_context.c +++ b/src/mesa/drivers/dri/unichrome/via_context.c @@ -65,8 +65,6 @@ #define need_GL_EXT_secondary_color #include "main/remap_helper.h" -#define DRIVER_DATE "20060710" - #include "vblank.h" #include "utils.h" @@ -100,7 +98,7 @@ static const GLubyte *viaGetString(struct gl_context *ctx, GLenum name) offset = driGetRendererString( buffer, chipset_names[(id > VIA_PM800) ? 0 : id], - DRIVER_DATE, 0 ); + 0 ); return (GLubyte *)buffer; } diff --git a/src/mesa/drivers/dri/unichrome/via_state.c b/src/mesa/drivers/dri/unichrome/via_state.c index 774f439bfb6..3b270e02a97 100644 --- a/src/mesa/drivers/dri/unichrome/via_state.c +++ b/src/mesa/drivers/dri/unichrome/via_state.c @@ -877,21 +877,21 @@ static GLboolean viaChooseTextureState(struct gl_context *ctx) if (texUnit0->_ReallyEnabled) { struct gl_texture_object *texObj = texUnit0->_Current; - vmesa->regHTXnTB[0] = get_minmag_filter( texObj->MinFilter, - texObj->MagFilter ); + vmesa->regHTXnTB[0] = get_minmag_filter( texObj->Sampler.MinFilter, + texObj->Sampler.MagFilter ); vmesa->regHTXnMPMD[0] &= ~(HC_HTXnMPMD_SMASK | HC_HTXnMPMD_TMASK); - vmesa->regHTXnMPMD[0] |= get_wrap_mode( texObj->WrapS, - texObj->WrapT ); + vmesa->regHTXnMPMD[0] |= get_wrap_mode( texObj->Sampler.WrapS, + texObj->Sampler.WrapT ); vmesa->regHTXnTB[0] &= ~(HC_HTXnTB_TBC_S | HC_HTXnTB_TBC_T); if (texObj->Image[0][texObj->BaseLevel]->Border > 0) { vmesa->regHTXnTB[0] |= (HC_HTXnTB_TBC_S | HC_HTXnTB_TBC_T); vmesa->regHTXnTBC[0] = - PACK_COLOR_888(FLOAT_TO_UBYTE(texObj->BorderColor.f[0]), - FLOAT_TO_UBYTE(texObj->BorderColor.f[1]), - FLOAT_TO_UBYTE(texObj->BorderColor.f[2])); - vmesa->regHTXnTRAH[0] = FLOAT_TO_UBYTE(texObj->BorderColor.f[3]); + PACK_COLOR_888(FLOAT_TO_UBYTE(texObj->Sampler.BorderColor.f[0]), + FLOAT_TO_UBYTE(texObj->Sampler.BorderColor.f[1]), + FLOAT_TO_UBYTE(texObj->Sampler.BorderColor.f[2])); + vmesa->regHTXnTRAH[0] = FLOAT_TO_UBYTE(texObj->Sampler.BorderColor.f[3]); } if (texUnit0->LodBias != 0.0f) { @@ -911,20 +911,20 @@ static GLboolean viaChooseTextureState(struct gl_context *ctx) if (texUnit1->_ReallyEnabled) { struct gl_texture_object *texObj = texUnit1->_Current; - vmesa->regHTXnTB[1] = get_minmag_filter( texObj->MinFilter, - texObj->MagFilter ); + vmesa->regHTXnTB[1] = get_minmag_filter( texObj->Sampler.MinFilter, + texObj->Sampler.MagFilter ); vmesa->regHTXnMPMD[1] &= ~(HC_HTXnMPMD_SMASK | HC_HTXnMPMD_TMASK); - vmesa->regHTXnMPMD[1] |= get_wrap_mode( texObj->WrapS, - texObj->WrapT ); + vmesa->regHTXnMPMD[1] |= get_wrap_mode( texObj->Sampler.WrapS, + texObj->Sampler.WrapT ); vmesa->regHTXnTB[1] &= ~(HC_HTXnTB_TBC_S | HC_HTXnTB_TBC_T); if (texObj->Image[0][texObj->BaseLevel]->Border > 0) { vmesa->regHTXnTB[1] |= (HC_HTXnTB_TBC_S | HC_HTXnTB_TBC_T); vmesa->regHTXnTBC[1] = - PACK_COLOR_888(FLOAT_TO_UBYTE(texObj->BorderColor.f[0]), - FLOAT_TO_UBYTE(texObj->BorderColor.f[1]), - FLOAT_TO_UBYTE(texObj->BorderColor.f[2])); - vmesa->regHTXnTRAH[1] = FLOAT_TO_UBYTE(texObj->BorderColor.f[3]); + PACK_COLOR_888(FLOAT_TO_UBYTE(texObj->Sampler.BorderColor.f[0]), + FLOAT_TO_UBYTE(texObj->Sampler.BorderColor.f[1]), + FLOAT_TO_UBYTE(texObj->Sampler.BorderColor.f[2])); + vmesa->regHTXnTRAH[1] = FLOAT_TO_UBYTE(texObj->Sampler.BorderColor.f[3]); } diff --git a/src/mesa/drivers/dri/unichrome/via_tex.c b/src/mesa/drivers/dri/unichrome/via_tex.c index a2fb010e142..1a0d1eaf070 100644 --- a/src/mesa/drivers/dri/unichrome/via_tex.c +++ b/src/mesa/drivers/dri/unichrome/via_tex.c @@ -495,13 +495,13 @@ static GLboolean viaSetTexImages(struct gl_context *ctx, * GL_TEXTURE_MAX_LOD, GL_TEXTURE_BASE_LEVEL, and GL_TEXTURE_MAX_LEVEL. * Yes, this looks overly complicated, but it's all needed. */ - if (texObj->MinFilter == GL_LINEAR || texObj->MinFilter == GL_NEAREST) { + if (texObj->Sampler.MinFilter == GL_LINEAR || texObj->Sampler.MinFilter == GL_NEAREST) { firstLevel = lastLevel = texObj->BaseLevel; } else { - firstLevel = texObj->BaseLevel + (GLint)(texObj->MinLod + 0.5); + firstLevel = texObj->BaseLevel + (GLint)(texObj->Sampler.MinLod + 0.5); firstLevel = MAX2(firstLevel, texObj->BaseLevel); - lastLevel = texObj->BaseLevel + (GLint)(texObj->MaxLod + 0.5); + lastLevel = texObj->BaseLevel + (GLint)(texObj->Sampler.MaxLod + 0.5); lastLevel = MAX2(lastLevel, texObj->BaseLevel); lastLevel = MIN2(lastLevel, texObj->BaseLevel + baseImage->image.MaxLog2); lastLevel = MIN2(lastLevel, texObj->MaxLevel); diff --git a/src/mesa/drivers/osmesa/SConscript b/src/mesa/drivers/osmesa/SConscript new file mode 100644 index 00000000000..5ccef5f130c --- /dev/null +++ b/src/mesa/drivers/osmesa/SConscript @@ -0,0 +1,36 @@ +Import('*') + +env = env.Clone() + +env.Prepend(CPPPATH = [ + '#src/mapi', + '#src/mesa', +]) + +env.Prepend(LIBS = [ + glapi, + mesa, + glsl, +]) + +sources = [ + 'osmesa.c', +] + +if env['platform'] == 'windows': + env.AppendUnique(CPPDEFINES = [ + '_GDI32_', # prevent wgl* being declared __declspec(dllimport) + 'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers + ]) + if not env['gles']: + # prevent _glapi_* from being declared __declspec(dllimport) + env.Append(CPPDEFINES = ['_GLAPI_NO_EXPORTS']) + + sources += ['osmesa.def'] + +osmesa = env.SharedLibrary( + target ='osmesa', + source = sources, +) + +env.Alias('osmesa', osmesa) diff --git a/src/mesa/drivers/osmesa/osmesa.c b/src/mesa/drivers/osmesa/osmesa.c index 98f01fe057e..68d71144642 100644 --- a/src/mesa/drivers/osmesa/osmesa.c +++ b/src/mesa/drivers/osmesa/osmesa.c @@ -515,11 +515,7 @@ do { \ PACK_RGBA(p, color[0], color[1], color[2], color[3]); \ } while (0) -#ifdef WIN32 -#include "..\swrast\s_linetemp.h" -#else #include "swrast/s_linetemp.h" -#endif @@ -544,11 +540,7 @@ do { \ } \ } while (0) -#ifdef WIN32 -#include "..\swrast\s_linetemp.h" -#else #include "swrast/s_linetemp.h" -#endif @@ -624,11 +616,7 @@ osmesa_choose_line_function( struct gl_context *ctx ) span.z += span.zStep; \ } \ } -#ifdef WIN32 -#include "..\swrast\s_tritemp.h" -#else #include "swrast/s_tritemp.h" -#endif @@ -656,11 +644,8 @@ osmesa_choose_line_function( struct gl_context *ctx ) span.z += span.zStep; \ } \ } -#ifdef WIN32 -#include "..\swrast\s_tritemp.h" -#else + #include "swrast/s_tritemp.h" -#endif diff --git a/src/mesa/drivers/windows/gdi/SConscript b/src/mesa/drivers/windows/gdi/SConscript new file mode 100644 index 00000000000..10a7eeaa19f --- /dev/null +++ b/src/mesa/drivers/windows/gdi/SConscript @@ -0,0 +1,38 @@ +Import('*') + +env = env.Clone() + +env.Prepend(CPPPATH = [ + '#src/mapi', + '#src/mesa', +]) + +env.AppendUnique(CPPDEFINES = [ + '_GDI32_', # prevent wgl* being declared __declspec(dllimport) + 'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers +]) +if not env['gles']: + # prevent _glapi_* from being declared __declspec(dllimport) + env.Append(CPPDEFINES = ['_GLAPI_NO_EXPORTS']) + +env.Prepend(LIBS = [ + glapi, + mesa, + glsl, + 'gdi32', + 'user32', + 'kernel32', +]) + +sources = [ + 'mesa.def', + 'wgl.c', + 'wmesa.c', +] + +mesagdi = env.SharedLibrary( + target = 'opengl32', + source = sources, +) + +env.Alias('mesagdi', mesagdi) diff --git a/src/mesa/drivers/windows/gdi/mesa.def b/src/mesa/drivers/windows/gdi/mesa.def index b537b3460c5..d5c98801d32 100644 --- a/src/mesa/drivers/windows/gdi/mesa.def +++ b/src/mesa/drivers/windows/gdi/mesa.def @@ -26,9 +26,6 @@ VERSION 6.5 ; be needed (for the gl* functions) since the entry ; points are compiled with dllexport declspec. ; -; However, this file is still needed to export "internal" -; Mesa symbols for the benefit of the OSMESA32.DLL. -; EXPORTS glNewList glEndList @@ -857,107 +854,3 @@ EXPORTS wglUseFontOutlinesA wglUseFontOutlinesW wglGetExtensionsStringARB -; -; Mesa internals - mostly for OSMESA - _vbo_CreateContext - _vbo_DestroyContext - _vbo_InvalidateState - _glapi_check_multithread - _glapi_get_context - _glapi_get_proc_address - _mesa_add_soft_renderbuffers - _mesa_add_renderbuffer - _mesa_check_conditional_render - _mesa_choose_tex_format - _mesa_create_framebuffer - _mesa_create_visual - _mesa_delete_array_object - _mesa_delete_program - _mesa_delete_texture_object - _mesa_destroy_framebuffer - _mesa_destroy_visual - _mesa_enable_1_3_extensions - _mesa_enable_1_4_extensions - _mesa_enable_1_5_extensions - _mesa_enable_2_0_extensions - _mesa_enable_2_1_extensions - _mesa_enable_sw_extensions - _mesa_error - _mesa_finish_render_texture - _mesa_framebuffer_renderbuffer - _mesa_free_context_data - _mesa_free_texture_image_data - _mesa_generate_mipmap - _mesa_get_compressed_teximage - _mesa_get_current_context - _mesa_get_teximage - _mesa_init_driver_functions - _mesa_init_glsl_driver_functions - _mesa_init_renderbuffer - _mesa_initialize_context - _mesa_make_current - _mesa_new_array_object - _mesa_new_framebuffer - _mesa_new_program - _mesa_new_renderbuffer - _mesa_new_soft_renderbuffer - _mesa_new_texture_image - _mesa_new_texture_object - _mesa_problem - _mesa_reference_renderbuffer - _mesa_remove_renderbuffer - _mesa_render_texture - _mesa_ResizeBuffersMESA - _mesa_resize_framebuffer - _mesa_store_compressed_teximage1d - _mesa_store_compressed_teximage2d - _mesa_store_compressed_teximage3d - _mesa_store_compressed_texsubimage1d - _mesa_store_compressed_texsubimage2d - _mesa_store_compressed_texsubimage3d - _mesa_store_teximage1d - _mesa_store_teximage2d - _mesa_store_teximage3d - _mesa_store_texsubimage1d - _mesa_store_texsubimage2d - _mesa_store_texsubimage3d - _mesa_test_proxy_teximage - _mesa_reference_framebuffer - _mesa_update_framebuffer_visual - _mesa_use_program - _mesa_Viewport - _mesa_meta_init - _mesa_meta_free - _mesa_meta_CopyColorSubTable - _mesa_meta_CopyColorTable - _mesa_meta_CopyConvolutionFilter1D - _mesa_meta_CopyConvolutionFilter2D - _mesa_meta_CopyTexImage1D - _mesa_meta_CopyTexImage2D - _mesa_meta_CopyTexSubImage1D - _mesa_meta_CopyTexSubImage2D - _mesa_meta_CopyTexSubImage3D - _swrast_Accum - _swrast_Bitmap - _swrast_BlitFramebuffer - _swrast_CopyPixels - _swrast_DrawPixels - _swrast_GetDeviceDriverReference - _swrast_Clear - _swrast_choose_line - _swrast_choose_triangle - _swrast_CreateContext - _swrast_DestroyContext - _swrast_exec_fragment_program - _swrast_InvalidateState - _swrast_ReadPixels - _swsetup_Wakeup - _swsetup_CreateContext - _swsetup_DestroyContext - _swsetup_InvalidateState - _tnl_CreateContext - _tnl_DestroyContext - _tnl_InvalidateState - _tnl_run_pipeline - _tnl_program_string - _tnl_RasterPos diff --git a/src/mesa/drivers/windows/gdi/wgl.c b/src/mesa/drivers/windows/gdi/wgl.c index 8d8087067f5..1dafe6e2952 100644 --- a/src/mesa/drivers/windows/gdi/wgl.c +++ b/src/mesa/drivers/windows/gdi/wgl.c @@ -54,8 +54,8 @@ #include <windows.h> #endif -#include "config.h" -#include "glapi.h" +#include "main/config.h" +#include "glapi/glapi.h" #include "GL/wmesa.h" /* protos for wmesa* functions */ /* diff --git a/src/mesa/drivers/windows/gdi/wmesa.c b/src/mesa/drivers/windows/gdi/wmesa.c index 4a8b1b283d5..e3a37eb1ace 100644 --- a/src/mesa/drivers/windows/gdi/wmesa.c +++ b/src/mesa/drivers/windows/gdi/wmesa.c @@ -7,10 +7,11 @@ #include "colors.h" #include <GL/wmesa.h> #include <winuser.h> -#include "context.h" -#include "extensions.h" -#include "framebuffer.h" -#include "renderbuffer.h" +#include "main/context.h" +#include "main/extensions.h" +#include "main/framebuffer.h" +#include "main/renderbuffer.h" +#include "main/macros.h" #include "drivers/common/driverfuncs.h" #include "drivers/common/meta.h" #include "vbo/vbo.h" @@ -185,7 +186,7 @@ BOOL wmCreateBackingStore(WMesaFramebuffer pwfb, long lxSize, long lySize) } -static wmDeleteBackingStore(WMesaFramebuffer pwfb) +static void wmDeleteBackingStore(WMesaFramebuffer pwfb) { if (pwfb->hbmDIB) { SelectObject(pwfb->dib_hDC, pwfb->hOldBitmap); diff --git a/src/mesa/drivers/windows/gdi/wmesadef.h b/src/mesa/drivers/windows/gdi/wmesadef.h index a73609b007a..32289ebc700 100644 --- a/src/mesa/drivers/windows/gdi/wmesadef.h +++ b/src/mesa/drivers/windows/gdi/wmesadef.h @@ -3,7 +3,7 @@ #ifdef __MINGW32__ #include <windows.h> #endif -#include "context.h" +#include "main/context.h" /** diff --git a/src/mesa/main/api_arrayelt.c b/src/mesa/main/api_arrayelt.c index b429e2627e3..f88da845853 100644 --- a/src/mesa/main/api_arrayelt.c +++ b/src/mesa/main/api_arrayelt.c @@ -175,31 +175,31 @@ static int FogCoordFuncs[NUM_TYPES]; /* GL_BYTE attributes */ -static void +static void GLAPIENTRY VertexAttrib1NbvNV(GLuint index, const GLbyte *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]))); } -static void +static void GLAPIENTRY VertexAttrib1bvNV(GLuint index, const GLbyte *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void +static void GLAPIENTRY VertexAttrib2NbvNV(GLuint index, const GLbyte *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]))); } -static void +static void GLAPIENTRY VertexAttrib2bvNV(GLuint index, const GLbyte *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void +static void GLAPIENTRY VertexAttrib3NbvNV(GLuint index, const GLbyte *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]), @@ -207,13 +207,13 @@ VertexAttrib3NbvNV(GLuint index, const GLbyte *v) BYTE_TO_FLOAT(v[2]))); } -static void +static void GLAPIENTRY VertexAttrib3bvNV(GLuint index, const GLbyte *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); } -static void +static void GLAPIENTRY VertexAttrib4NbvNV(GLuint index, const GLbyte *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]), @@ -222,7 +222,7 @@ VertexAttrib4NbvNV(GLuint index, const GLbyte *v) BYTE_TO_FLOAT(v[3]))); } -static void +static void GLAPIENTRY VertexAttrib4bvNV(GLuint index, const GLbyte *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3])); @@ -230,46 +230,46 @@ VertexAttrib4bvNV(GLuint index, const GLbyte *v) /* GL_UNSIGNED_BYTE attributes */ -static void +static void GLAPIENTRY VertexAttrib1NubvNV(GLuint index, const GLubyte *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]))); } -static void +static void GLAPIENTRY VertexAttrib1ubvNV(GLuint index, const GLubyte *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void +static void GLAPIENTRY VertexAttrib2NubvNV(GLuint index, const GLubyte *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]))); } -static void +static void GLAPIENTRY VertexAttrib2ubvNV(GLuint index, const GLubyte *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void +static void GLAPIENTRY VertexAttrib3NubvNV(GLuint index, const GLubyte *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]), UBYTE_TO_FLOAT(v[1]), UBYTE_TO_FLOAT(v[2]))); } -static void +static void GLAPIENTRY VertexAttrib3ubvNV(GLuint index, const GLubyte *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); } -static void +static void GLAPIENTRY VertexAttrib4NubvNV(GLuint index, const GLubyte *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]), @@ -278,7 +278,7 @@ VertexAttrib4NubvNV(GLuint index, const GLubyte *v) UBYTE_TO_FLOAT(v[3]))); } -static void +static void GLAPIENTRY VertexAttrib4ubvNV(GLuint index, const GLubyte *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], @@ -288,32 +288,32 @@ VertexAttrib4ubvNV(GLuint index, const GLubyte *v) /* GL_SHORT attributes */ -static void +static void GLAPIENTRY VertexAttrib1NsvNV(GLuint index, const GLshort *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]))); } -static void +static void GLAPIENTRY VertexAttrib1svNV(GLuint index, const GLshort *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void +static void GLAPIENTRY VertexAttrib2NsvNV(GLuint index, const GLshort *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]), SHORT_TO_FLOAT(v[1]))); } -static void +static void GLAPIENTRY VertexAttrib2svNV(GLuint index, const GLshort *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void +static void GLAPIENTRY VertexAttrib3NsvNV(GLuint index, const GLshort *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]), @@ -321,14 +321,14 @@ VertexAttrib3NsvNV(GLuint index, const GLshort *v) SHORT_TO_FLOAT(v[2]))); } -static void +static void GLAPIENTRY VertexAttrib3svNV(GLuint index, const GLshort *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); } -static void +static void GLAPIENTRY VertexAttrib4NsvNV(GLuint index, const GLshort *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]), @@ -337,7 +337,7 @@ VertexAttrib4NsvNV(GLuint index, const GLshort *v) SHORT_TO_FLOAT(v[3]))); } -static void +static void GLAPIENTRY VertexAttrib4svNV(GLuint index, const GLshort *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], @@ -346,33 +346,33 @@ VertexAttrib4svNV(GLuint index, const GLshort *v) /* GL_UNSIGNED_SHORT attributes */ -static void +static void GLAPIENTRY VertexAttrib1NusvNV(GLuint index, const GLushort *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]))); } -static void +static void GLAPIENTRY VertexAttrib1usvNV(GLuint index, const GLushort *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void +static void GLAPIENTRY VertexAttrib2NusvNV(GLuint index, const GLushort *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]))); } -static void +static void GLAPIENTRY VertexAttrib2usvNV(GLuint index, const GLushort *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void +static void GLAPIENTRY VertexAttrib3NusvNV(GLuint index, const GLushort *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]), @@ -380,14 +380,14 @@ VertexAttrib3NusvNV(GLuint index, const GLushort *v) USHORT_TO_FLOAT(v[2]))); } -static void +static void GLAPIENTRY VertexAttrib3usvNV(GLuint index, const GLushort *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); } -static void +static void GLAPIENTRY VertexAttrib4NusvNV(GLuint index, const GLushort *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]), @@ -396,7 +396,7 @@ VertexAttrib4NusvNV(GLuint index, const GLushort *v) USHORT_TO_FLOAT(v[3]))); } -static void +static void GLAPIENTRY VertexAttrib4usvNV(GLuint index, const GLushort *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], @@ -405,32 +405,32 @@ VertexAttrib4usvNV(GLuint index, const GLushort *v) /* GL_INT attributes */ -static void +static void GLAPIENTRY VertexAttrib1NivNV(GLuint index, const GLint *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]))); } -static void +static void GLAPIENTRY VertexAttrib1ivNV(GLuint index, const GLint *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void +static void GLAPIENTRY VertexAttrib2NivNV(GLuint index, const GLint *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]))); } -static void +static void GLAPIENTRY VertexAttrib2ivNV(GLuint index, const GLint *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void +static void GLAPIENTRY VertexAttrib3NivNV(GLuint index, const GLint *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]), @@ -438,14 +438,14 @@ VertexAttrib3NivNV(GLuint index, const GLint *v) INT_TO_FLOAT(v[2]))); } -static void +static void GLAPIENTRY VertexAttrib3ivNV(GLuint index, const GLint *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); } -static void +static void GLAPIENTRY VertexAttrib4NivNV(GLuint index, const GLint *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]), @@ -454,7 +454,7 @@ VertexAttrib4NivNV(GLuint index, const GLint *v) INT_TO_FLOAT(v[3]))); } -static void +static void GLAPIENTRY VertexAttrib4ivNV(GLuint index, const GLint *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], @@ -463,33 +463,33 @@ VertexAttrib4ivNV(GLuint index, const GLint *v) /* GL_UNSIGNED_INT attributes */ -static void +static void GLAPIENTRY VertexAttrib1NuivNV(GLuint index, const GLuint *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]))); } -static void +static void GLAPIENTRY VertexAttrib1uivNV(GLuint index, const GLuint *v) { CALL_VertexAttrib1fNV(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void +static void GLAPIENTRY VertexAttrib2NuivNV(GLuint index, const GLuint *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]))); } -static void +static void GLAPIENTRY VertexAttrib2uivNV(GLuint index, const GLuint *v) { CALL_VertexAttrib2fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void +static void GLAPIENTRY VertexAttrib3NuivNV(GLuint index, const GLuint *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]), @@ -497,14 +497,14 @@ VertexAttrib3NuivNV(GLuint index, const GLuint *v) UINT_TO_FLOAT(v[2]))); } -static void +static void GLAPIENTRY VertexAttrib3uivNV(GLuint index, const GLuint *v) { CALL_VertexAttrib3fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); } -static void +static void GLAPIENTRY VertexAttrib4NuivNV(GLuint index, const GLuint *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]), @@ -513,7 +513,7 @@ VertexAttrib4NuivNV(GLuint index, const GLuint *v) UINT_TO_FLOAT(v[3]))); } -static void +static void GLAPIENTRY VertexAttrib4uivNV(GLuint index, const GLuint *v) { CALL_VertexAttrib4fNV(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], @@ -522,25 +522,25 @@ VertexAttrib4uivNV(GLuint index, const GLuint *v) /* GL_FLOAT attributes */ -static void +static void GLAPIENTRY VertexAttrib1fvNV(GLuint index, const GLfloat *v) { CALL_VertexAttrib1fvNV(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttrib2fvNV(GLuint index, const GLfloat *v) { CALL_VertexAttrib2fvNV(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttrib3fvNV(GLuint index, const GLfloat *v) { CALL_VertexAttrib3fvNV(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttrib4fvNV(GLuint index, const GLfloat *v) { CALL_VertexAttrib4fvNV(GET_DISPATCH(), (index, v)); @@ -548,25 +548,25 @@ VertexAttrib4fvNV(GLuint index, const GLfloat *v) /* GL_DOUBLE attributes */ -static void +static void GLAPIENTRY VertexAttrib1dvNV(GLuint index, const GLdouble *v) { CALL_VertexAttrib1dvNV(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttrib2dvNV(GLuint index, const GLdouble *v) { CALL_VertexAttrib2dvNV(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttrib3dvNV(GLuint index, const GLdouble *v) { CALL_VertexAttrib3dvNV(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttrib4dvNV(GLuint index, const GLdouble *v) { CALL_VertexAttrib4dvNV(GET_DISPATCH(), (index, v)); @@ -680,31 +680,31 @@ static attrib_func AttribFuncsNV[2][4][NUM_TYPES] = { /* GL_BYTE attributes */ -static void +static void GLAPIENTRY VertexAttrib1NbvARB(GLuint index, const GLbyte *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]))); } -static void +static void GLAPIENTRY VertexAttrib1bvARB(GLuint index, const GLbyte *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void +static void GLAPIENTRY VertexAttrib2NbvARB(GLuint index, const GLbyte *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]), BYTE_TO_FLOAT(v[1]))); } -static void +static void GLAPIENTRY VertexAttrib2bvARB(GLuint index, const GLbyte *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void +static void GLAPIENTRY VertexAttrib3NbvARB(GLuint index, const GLbyte *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]), @@ -712,13 +712,13 @@ VertexAttrib3NbvARB(GLuint index, const GLbyte *v) BYTE_TO_FLOAT(v[2]))); } -static void +static void GLAPIENTRY VertexAttrib3bvARB(GLuint index, const GLbyte *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); } -static void +static void GLAPIENTRY VertexAttrib4NbvARB(GLuint index, const GLbyte *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, BYTE_TO_FLOAT(v[0]), @@ -727,7 +727,7 @@ VertexAttrib4NbvARB(GLuint index, const GLbyte *v) BYTE_TO_FLOAT(v[3]))); } -static void +static void GLAPIENTRY VertexAttrib4bvARB(GLuint index, const GLbyte *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3])); @@ -735,19 +735,19 @@ VertexAttrib4bvARB(GLuint index, const GLbyte *v) /* GL_UNSIGNED_BYTE attributes */ -static void +static void GLAPIENTRY VertexAttrib1NubvARB(GLuint index, const GLubyte *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, UBYTE_TO_FLOAT(v[0]))); } -static void +static void GLAPIENTRY VertexAttrib1ubvARB(GLuint index, const GLubyte *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void +static void GLAPIENTRY VertexAttrib2NubvARB(GLuint index, const GLubyte *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, @@ -755,14 +755,14 @@ VertexAttrib2NubvARB(GLuint index, const GLubyte *v) UBYTE_TO_FLOAT(v[1]))); } -static void +static void GLAPIENTRY VertexAttrib2ubvARB(GLuint index, const GLubyte *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void +static void GLAPIENTRY VertexAttrib3NubvARB(GLuint index, const GLubyte *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, @@ -770,7 +770,7 @@ VertexAttrib3NubvARB(GLuint index, const GLubyte *v) UBYTE_TO_FLOAT(v[1]), UBYTE_TO_FLOAT(v[2]))); } -static void +static void GLAPIENTRY VertexAttrib3ubvARB(GLuint index, const GLubyte *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, @@ -779,7 +779,7 @@ VertexAttrib3ubvARB(GLuint index, const GLubyte *v) (GLfloat)v[2])); } -static void +static void GLAPIENTRY VertexAttrib4NubvARB(GLuint index, const GLubyte *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), @@ -790,7 +790,7 @@ VertexAttrib4NubvARB(GLuint index, const GLubyte *v) UBYTE_TO_FLOAT(v[3]))); } -static void +static void GLAPIENTRY VertexAttrib4ubvARB(GLuint index, const GLubyte *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), @@ -801,19 +801,19 @@ VertexAttrib4ubvARB(GLuint index, const GLubyte *v) /* GL_SHORT attributes */ -static void +static void GLAPIENTRY VertexAttrib1NsvARB(GLuint index, const GLshort *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, SHORT_TO_FLOAT(v[0]))); } -static void +static void GLAPIENTRY VertexAttrib1svARB(GLuint index, const GLshort *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void +static void GLAPIENTRY VertexAttrib2NsvARB(GLuint index, const GLshort *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), @@ -821,14 +821,14 @@ VertexAttrib2NsvARB(GLuint index, const GLshort *v) SHORT_TO_FLOAT(v[1]))); } -static void +static void GLAPIENTRY VertexAttrib2svARB(GLuint index, const GLshort *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void +static void GLAPIENTRY VertexAttrib3NsvARB(GLuint index, const GLshort *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), @@ -838,7 +838,7 @@ VertexAttrib3NsvARB(GLuint index, const GLshort *v) SHORT_TO_FLOAT(v[2]))); } -static void +static void GLAPIENTRY VertexAttrib3svARB(GLuint index, const GLshort *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), @@ -846,7 +846,7 @@ VertexAttrib3svARB(GLuint index, const GLshort *v) (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); } -static void +static void GLAPIENTRY VertexAttrib4NsvARB(GLuint index, const GLshort *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), @@ -857,7 +857,7 @@ VertexAttrib4NsvARB(GLuint index, const GLshort *v) SHORT_TO_FLOAT(v[3]))); } -static void +static void GLAPIENTRY VertexAttrib4svARB(GLuint index, const GLshort *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], @@ -866,33 +866,33 @@ VertexAttrib4svARB(GLuint index, const GLshort *v) /* GL_UNSIGNED_SHORT attributes */ -static void +static void GLAPIENTRY VertexAttrib1NusvARB(GLuint index, const GLushort *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]))); } -static void +static void GLAPIENTRY VertexAttrib1usvARB(GLuint index, const GLushort *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void +static void GLAPIENTRY VertexAttrib2NusvARB(GLuint index, const GLushort *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]), USHORT_TO_FLOAT(v[1]))); } -static void +static void GLAPIENTRY VertexAttrib2usvARB(GLuint index, const GLushort *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void +static void GLAPIENTRY VertexAttrib3NusvARB(GLuint index, const GLushort *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]), @@ -900,14 +900,14 @@ VertexAttrib3NusvARB(GLuint index, const GLushort *v) USHORT_TO_FLOAT(v[2]))); } -static void +static void GLAPIENTRY VertexAttrib3usvARB(GLuint index, const GLushort *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); } -static void +static void GLAPIENTRY VertexAttrib4NusvARB(GLuint index, const GLushort *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, USHORT_TO_FLOAT(v[0]), @@ -916,7 +916,7 @@ VertexAttrib4NusvARB(GLuint index, const GLushort *v) USHORT_TO_FLOAT(v[3]))); } -static void +static void GLAPIENTRY VertexAttrib4usvARB(GLuint index, const GLushort *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2], (GLfloat)v[3])); @@ -924,33 +924,33 @@ VertexAttrib4usvARB(GLuint index, const GLushort *v) /* GL_INT attributes */ -static void +static void GLAPIENTRY VertexAttrib1NivARB(GLuint index, const GLint *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]))); } -static void +static void GLAPIENTRY VertexAttrib1ivARB(GLuint index, const GLint *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void +static void GLAPIENTRY VertexAttrib2NivARB(GLuint index, const GLint *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]), INT_TO_FLOAT(v[1]))); } -static void +static void GLAPIENTRY VertexAttrib2ivARB(GLuint index, const GLint *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void +static void GLAPIENTRY VertexAttrib3NivARB(GLuint index, const GLint *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]), @@ -958,14 +958,14 @@ VertexAttrib3NivARB(GLuint index, const GLint *v) INT_TO_FLOAT(v[2]))); } -static void +static void GLAPIENTRY VertexAttrib3ivARB(GLuint index, const GLint *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); } -static void +static void GLAPIENTRY VertexAttrib4NivARB(GLuint index, const GLint *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, INT_TO_FLOAT(v[0]), @@ -974,7 +974,7 @@ VertexAttrib4NivARB(GLuint index, const GLint *v) INT_TO_FLOAT(v[3]))); } -static void +static void GLAPIENTRY VertexAttrib4ivARB(GLuint index, const GLint *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], @@ -983,33 +983,33 @@ VertexAttrib4ivARB(GLuint index, const GLint *v) /* GL_UNSIGNED_INT attributes */ -static void +static void GLAPIENTRY VertexAttrib1NuivARB(GLuint index, const GLuint *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]))); } -static void +static void GLAPIENTRY VertexAttrib1uivARB(GLuint index, const GLuint *v) { CALL_VertexAttrib1fARB(GET_DISPATCH(), (index, (GLfloat)v[0])); } -static void +static void GLAPIENTRY VertexAttrib2NuivARB(GLuint index, const GLuint *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]), UINT_TO_FLOAT(v[1]))); } -static void +static void GLAPIENTRY VertexAttrib2uivARB(GLuint index, const GLuint *v) { CALL_VertexAttrib2fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1])); } -static void +static void GLAPIENTRY VertexAttrib3NuivARB(GLuint index, const GLuint *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]), @@ -1017,14 +1017,14 @@ VertexAttrib3NuivARB(GLuint index, const GLuint *v) UINT_TO_FLOAT(v[2]))); } -static void +static void GLAPIENTRY VertexAttrib3uivARB(GLuint index, const GLuint *v) { CALL_VertexAttrib3fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], (GLfloat)v[2])); } -static void +static void GLAPIENTRY VertexAttrib4NuivARB(GLuint index, const GLuint *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, UINT_TO_FLOAT(v[0]), @@ -1033,7 +1033,7 @@ VertexAttrib4NuivARB(GLuint index, const GLuint *v) UINT_TO_FLOAT(v[3]))); } -static void +static void GLAPIENTRY VertexAttrib4uivARB(GLuint index, const GLuint *v) { CALL_VertexAttrib4fARB(GET_DISPATCH(), (index, (GLfloat)v[0], (GLfloat)v[1], @@ -1042,25 +1042,25 @@ VertexAttrib4uivARB(GLuint index, const GLuint *v) /* GL_FLOAT attributes */ -static void +static void GLAPIENTRY VertexAttrib1fvARB(GLuint index, const GLfloat *v) { CALL_VertexAttrib1fvARB(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttrib2fvARB(GLuint index, const GLfloat *v) { CALL_VertexAttrib2fvARB(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttrib3fvARB(GLuint index, const GLfloat *v) { CALL_VertexAttrib3fvARB(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttrib4fvARB(GLuint index, const GLfloat *v) { CALL_VertexAttrib4fvARB(GET_DISPATCH(), (index, v)); @@ -1068,25 +1068,25 @@ VertexAttrib4fvARB(GLuint index, const GLfloat *v) /* GL_DOUBLE attributes */ -static void +static void GLAPIENTRY VertexAttrib1dvARB(GLuint index, const GLdouble *v) { CALL_VertexAttrib1dvARB(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttrib2dvARB(GLuint index, const GLdouble *v) { CALL_VertexAttrib2dvARB(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttrib3dvARB(GLuint index, const GLdouble *v) { CALL_VertexAttrib3dvARB(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttrib4dvARB(GLuint index, const GLdouble *v) { CALL_VertexAttrib4dvARB(GET_DISPATCH(), (index, v)); @@ -1096,50 +1096,50 @@ VertexAttrib4dvARB(GLuint index, const GLdouble *v) /** * Integer-valued attributes */ -static void +static void GLAPIENTRY VertexAttribI1bv(GLuint index, const GLbyte *v) { CALL_VertexAttribI1iEXT(GET_DISPATCH(), (index, v[0])); } -static void +static void GLAPIENTRY VertexAttribI2bv(GLuint index, const GLbyte *v) { CALL_VertexAttribI2iEXT(GET_DISPATCH(), (index, v[0], v[1])); } -static void +static void GLAPIENTRY VertexAttribI3bv(GLuint index, const GLbyte *v) { CALL_VertexAttribI3iEXT(GET_DISPATCH(), (index, v[0], v[1], v[2])); } -static void +static void GLAPIENTRY VertexAttribI4bv(GLuint index, const GLbyte *v) { CALL_VertexAttribI4bvEXT(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttribI1ubv(GLuint index, const GLubyte *v) { CALL_VertexAttribI1uiEXT(GET_DISPATCH(), (index, v[0])); } -static void +static void GLAPIENTRY VertexAttribI2ubv(GLuint index, const GLubyte *v) { CALL_VertexAttribI2uiEXT(GET_DISPATCH(), (index, v[0], v[1])); } -static void +static void GLAPIENTRY VertexAttribI3ubv(GLuint index, const GLubyte *v) { CALL_VertexAttribI3uiEXT(GET_DISPATCH(), (index, v[0], v[1], v[2])); } -static void +static void GLAPIENTRY VertexAttribI4ubv(GLuint index, const GLubyte *v) { CALL_VertexAttribI4ubvEXT(GET_DISPATCH(), (index, v)); @@ -1147,50 +1147,50 @@ VertexAttribI4ubv(GLuint index, const GLubyte *v) -static void +static void GLAPIENTRY VertexAttribI1sv(GLuint index, const GLshort *v) { CALL_VertexAttribI1iEXT(GET_DISPATCH(), (index, v[0])); } -static void +static void GLAPIENTRY VertexAttribI2sv(GLuint index, const GLshort *v) { CALL_VertexAttribI2iEXT(GET_DISPATCH(), (index, v[0], v[1])); } -static void +static void GLAPIENTRY VertexAttribI3sv(GLuint index, const GLshort *v) { CALL_VertexAttribI3iEXT(GET_DISPATCH(), (index, v[0], v[1], v[2])); } -static void +static void GLAPIENTRY VertexAttribI4sv(GLuint index, const GLshort *v) { CALL_VertexAttribI4svEXT(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttribI1usv(GLuint index, const GLushort *v) { CALL_VertexAttribI1uiEXT(GET_DISPATCH(), (index, v[0])); } -static void +static void GLAPIENTRY VertexAttribI2usv(GLuint index, const GLushort *v) { CALL_VertexAttribI2uiEXT(GET_DISPATCH(), (index, v[0], v[1])); } -static void +static void GLAPIENTRY VertexAttribI3usv(GLuint index, const GLushort *v) { CALL_VertexAttribI3uiEXT(GET_DISPATCH(), (index, v[0], v[1], v[2])); } -static void +static void GLAPIENTRY VertexAttribI4usv(GLuint index, const GLushort *v) { CALL_VertexAttribI4usvEXT(GET_DISPATCH(), (index, v)); @@ -1198,50 +1198,50 @@ VertexAttribI4usv(GLuint index, const GLushort *v) -static void +static void GLAPIENTRY VertexAttribI1iv(GLuint index, const GLint *v) { CALL_VertexAttribI1iEXT(GET_DISPATCH(), (index, v[0])); } -static void +static void GLAPIENTRY VertexAttribI2iv(GLuint index, const GLint *v) { CALL_VertexAttribI2iEXT(GET_DISPATCH(), (index, v[0], v[1])); } -static void +static void GLAPIENTRY VertexAttribI3iv(GLuint index, const GLint *v) { CALL_VertexAttribI3iEXT(GET_DISPATCH(), (index, v[0], v[1], v[2])); } -static void +static void GLAPIENTRY VertexAttribI4iv(GLuint index, const GLint *v) { CALL_VertexAttribI4ivEXT(GET_DISPATCH(), (index, v)); } -static void +static void GLAPIENTRY VertexAttribI1uiv(GLuint index, const GLuint *v) { CALL_VertexAttribI1uiEXT(GET_DISPATCH(), (index, v[0])); } -static void +static void GLAPIENTRY VertexAttribI2uiv(GLuint index, const GLuint *v) { CALL_VertexAttribI2uiEXT(GET_DISPATCH(), (index, v[0], v[1])); } -static void +static void GLAPIENTRY VertexAttribI3uiv(GLuint index, const GLuint *v) { CALL_VertexAttribI3uiEXT(GET_DISPATCH(), (index, v[0], v[1], v[2])); } -static void +static void GLAPIENTRY VertexAttribI4uiv(GLuint index, const GLuint *v) { CALL_VertexAttribI4uivEXT(GET_DISPATCH(), (index, v)); diff --git a/src/mesa/main/api_exec.c b/src/mesa/main/api_exec.c index 4da48936484..d0298df20cb 100644 --- a/src/mesa/main/api_exec.c +++ b/src/mesa/main/api_exec.c @@ -78,6 +78,9 @@ #include "polygon.h" #include "queryobj.h" #include "readpix.h" +#if FEATURE_ARB_sampler_objects +#include "samplerobj.h" +#endif #include "scissor.h" #include "stencil.h" #include "texenv.h" @@ -691,6 +694,8 @@ _mesa_create_exec_table(void) SET_FramebufferTextureFaceARB(exec, _mesa_FramebufferTextureFaceARB); #endif + SET_ClampColorARB(exec, _mesa_ClampColorARB); + /* GL_EXT_texture_integer */ SET_ClearColorIiEXT(exec, _mesa_ClearColorIiEXT); SET_ClearColorIuiEXT(exec, _mesa_ClearColorIuiEXT); @@ -724,6 +729,13 @@ _mesa_create_exec_table(void) /* GL_NV_texture_barrier */ SET_TextureBarrierNV(exec, _mesa_TextureBarrierNV); + /* GL_ARB_texture_buffer_object */ + SET_TexBufferARB(exec, _mesa_TexBuffer); + +#if FEATURE_ARB_sampler_objects + _mesa_init_sampler_object_dispatch(exec); +#endif + return exec; } diff --git a/src/mesa/main/arrayobj.c b/src/mesa/main/arrayobj.c index 46010223370..4bfb2424004 100644 --- a/src/mesa/main/arrayobj.c +++ b/src/mesa/main/arrayobj.c @@ -41,6 +41,7 @@ #include "glheader.h" #include "hash.h" +#include "image.h" #include "imports.h" #include "context.h" #include "mfeatures.h" @@ -50,6 +51,7 @@ #include "arrayobj.h" #include "macros.h" #include "mtypes.h" +#include "varray.h" #include "main/dispatch.h" @@ -206,6 +208,7 @@ init_array(struct gl_context *ctx, 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, @@ -280,44 +283,13 @@ remove_array_object( struct gl_context *ctx, struct gl_array_object *obj ) /** - * Compute the index of the last array element that can be safely accessed - * in a vertex array. We can really only do this when the array lives in - * a VBO. - * The array->_MaxElement field will be updated. - * Later in glDrawArrays/Elements/etc we can do some bounds checking. - */ -static void -compute_max_element(struct gl_client_array *array) -{ - if (array->BufferObj->Name) { - /* Compute the max element we can access in the VBO without going - * out of bounds. - */ - array->_MaxElement = ((GLsizeiptrARB) array->BufferObj->Size - - (GLsizeiptrARB) array->Ptr + array->StrideB - - array->_ElementSize) / array->StrideB; - if (0) - printf("%s Object %u Size %u MaxElement %u\n", - __FUNCTION__, - array->BufferObj->Name, - (GLuint) array->BufferObj->Size, - array->_MaxElement); - } - else { - /* user-space array, no idea how big it is */ - array->_MaxElement = 2 * 1000 * 1000 * 1000; /* just a big number */ - } -} - - -/** * Helper for update_arrays(). * \return min(current min, array->_MaxElement). */ static GLuint update_min(GLuint min, struct gl_client_array *array) { - compute_max_element(array); + _mesa_update_array_max_element(array); if (array->Enabled) return MIN2(min, array->_MaxElement); else @@ -497,7 +469,8 @@ _mesa_DeleteVertexArraysAPPLE(GLsizei n, const GLuint *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) +gen_vertex_arrays(struct gl_context *ctx, GLsizei n, GLuint *arrays, + GLboolean vboOnly) { GLuint first; GLint i; diff --git a/src/mesa/main/atifragshader.c b/src/mesa/main/atifragshader.c index 44097e1a266..c74c999f808 100644 --- a/src/mesa/main/atifragshader.c +++ b/src/mesa/main/atifragshader.c @@ -494,7 +494,7 @@ _mesa_PassTexCoordATI(GLuint dst, GLuint coord, GLenum swizzle) } } - curProg->regsAssigned[curProg->cur_pass >> 1] |= 1 << (dst - GL_REG_0_ATI); + curProg->regsAssigned[curProg->cur_pass >> 1] |= 1 << (dst - GL_REG_0_ATI); new_tex_inst(curProg); /* add the instructions */ @@ -567,7 +567,7 @@ _mesa_SampleMapATI(GLuint dst, GLuint interp, GLenum swizzle) } } - curProg->regsAssigned[curProg->cur_pass >> 1] |= 1 << (dst - GL_REG_0_ATI); + curProg->regsAssigned[curProg->cur_pass >> 1] |= 1 << (dst - GL_REG_0_ATI); new_tex_inst(curProg); /* add the instructions */ diff --git a/src/mesa/main/attrib.c b/src/mesa/main/attrib.c index ae7f633b8d8..57310040235 100644 --- a/src/mesa/main/attrib.c +++ b/src/mesa/main/attrib.c @@ -770,6 +770,7 @@ pop_texture_group(struct gl_context *ctx, struct texture_state *texstate) /* Restore texture object state for each target */ for (tgt = 0; tgt < NUM_TEXTURE_TARGETS; tgt++) { const struct gl_texture_object *obj = NULL; + const struct gl_sampler_object *samp; GLenum target; obj = &texstate->SavedObj[u][tgt]; @@ -790,31 +791,35 @@ pop_texture_group(struct gl_context *ctx, struct texture_state *texstate) !ctx->Extensions.MESA_texture_array) { continue; } + else if (obj->Target == GL_TEXTURE_BUFFER) + continue; target = obj->Target; _mesa_BindTexture(target, obj->Name); - _mesa_TexParameterfv(target, GL_TEXTURE_BORDER_COLOR, obj->BorderColor.f); + samp = &obj->Sampler; + + _mesa_TexParameterfv(target, GL_TEXTURE_BORDER_COLOR, samp->BorderColor.f); + _mesa_TexParameteri(target, GL_TEXTURE_WRAP_S, samp->WrapS); + _mesa_TexParameteri(target, GL_TEXTURE_WRAP_T, samp->WrapT); + _mesa_TexParameteri(target, GL_TEXTURE_WRAP_R, samp->WrapR); + _mesa_TexParameteri(target, GL_TEXTURE_MIN_FILTER, samp->MinFilter); + _mesa_TexParameteri(target, GL_TEXTURE_MAG_FILTER, samp->MagFilter); + _mesa_TexParameterf(target, GL_TEXTURE_MIN_LOD, samp->MinLod); + _mesa_TexParameterf(target, GL_TEXTURE_MAX_LOD, samp->MaxLod); + _mesa_TexParameterf(target, GL_TEXTURE_LOD_BIAS, samp->LodBias); _mesa_TexParameterf(target, GL_TEXTURE_PRIORITY, obj->Priority); - _mesa_TexParameteri(target, GL_TEXTURE_WRAP_S, obj->WrapS); - _mesa_TexParameteri(target, GL_TEXTURE_WRAP_T, obj->WrapT); - _mesa_TexParameteri(target, GL_TEXTURE_WRAP_R, obj->WrapR); - _mesa_TexParameteri(target, GL_TEXTURE_MIN_FILTER, obj->MinFilter); - _mesa_TexParameteri(target, GL_TEXTURE_MAG_FILTER, obj->MagFilter); - _mesa_TexParameterf(target, GL_TEXTURE_MIN_LOD, obj->MinLod); - _mesa_TexParameterf(target, GL_TEXTURE_MAX_LOD, obj->MaxLod); - _mesa_TexParameterf(target, GL_TEXTURE_LOD_BIAS, obj->LodBias); _mesa_TexParameteri(target, GL_TEXTURE_BASE_LEVEL, obj->BaseLevel); if (target != GL_TEXTURE_RECTANGLE_ARB) _mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, obj->MaxLevel); if (ctx->Extensions.EXT_texture_filter_anisotropic) { _mesa_TexParameterf(target, GL_TEXTURE_MAX_ANISOTROPY_EXT, - obj->MaxAnisotropy); + samp->MaxAnisotropy); } if (ctx->Extensions.ARB_shadow_ambient) { _mesa_TexParameterf(target, GL_TEXTURE_COMPARE_FAIL_VALUE_ARB, - obj->CompareFailValue); + samp->CompareFailValue); } } @@ -879,10 +884,10 @@ _mesa_PopAttrib(void) color = (const struct gl_colorbuffer_attrib *) attr->data; _mesa_ClearIndex((GLfloat) color->ClearIndex); - _mesa_ClearColor(color->ClearColor[0], - color->ClearColor[1], - color->ClearColor[2], - color->ClearColor[3]); + _mesa_ClearColor(color->ClearColorUnclamped[0], + color->ClearColorUnclamped[1], + color->ClearColorUnclamped[2], + color->ClearColorUnclamped[3]); _mesa_IndexMask(color->IndexMask); if (!ctx->Extensions.EXT_draw_buffers2) { _mesa_ColorMask((GLboolean) (color->ColorMask[0][0] != 0), @@ -930,7 +935,7 @@ _mesa_PopAttrib(void) _mesa_DrawBuffer(color->DrawBuffer[0]); } _mesa_set_enable(ctx, GL_ALPHA_TEST, color->AlphaEnabled); - _mesa_AlphaFunc(color->AlphaFunc, color->AlphaRef); + _mesa_AlphaFunc(color->AlphaFunc, color->AlphaRefUnclamped); if (ctx->Color.BlendEnabled != color->BlendEnabled) { if (ctx->Extensions.EXT_draw_buffers2) { GLuint i; @@ -976,16 +981,18 @@ _mesa_PopAttrib(void) color->Blend[0].EquationA); } } - _mesa_BlendColor(color->BlendColor[0], - color->BlendColor[1], - color->BlendColor[2], - color->BlendColor[3]); + _mesa_BlendColor(color->BlendColorUnclamped[0], + color->BlendColorUnclamped[1], + color->BlendColorUnclamped[2], + color->BlendColorUnclamped[3]); _mesa_LogicOp(color->LogicOp); _mesa_set_enable(ctx, GL_COLOR_LOGIC_OP, color->ColorLogicOpEnabled); _mesa_set_enable(ctx, GL_INDEX_LOGIC_OP, color->IndexLogicOpEnabled); _mesa_set_enable(ctx, GL_DITHER, color->DitherFlag); + _mesa_ClampColorARB(GL_CLAMP_FRAGMENT_COLOR_ARB, color->ClampFragmentColor); + _mesa_ClampColorARB(GL_CLAMP_READ_COLOR_ARB, color->ClampReadColor); } break; case GL_CURRENT_BIT: @@ -1108,6 +1115,7 @@ _mesa_PopAttrib(void) /* materials */ memcpy(&ctx->Light.Material, &light->Material, sizeof(struct gl_material)); + _mesa_ClampColorARB(GL_CLAMP_VERTEX_COLOR_ARB, light->ClampVertexColor); } break; case GL_LINE_BIT: diff --git a/src/mesa/main/blend.c b/src/mesa/main/blend.c index c74a168036a..95c101c34ae 100644 --- a/src/mesa/main/blend.c +++ b/src/mesa/main/blend.c @@ -513,19 +513,24 @@ _mesa_BlendColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END(ctx); - tmp[0] = CLAMP( red, 0.0F, 1.0F ); - tmp[1] = CLAMP( green, 0.0F, 1.0F ); - tmp[2] = CLAMP( blue, 0.0F, 1.0F ); - tmp[3] = CLAMP( alpha, 0.0F, 1.0F ); + tmp[0] = red; + tmp[1] = green; + tmp[2] = blue; + tmp[3] = alpha; - if (TEST_EQ_4V(tmp, ctx->Color.BlendColor)) + if (TEST_EQ_4V(tmp, ctx->Color.BlendColorUnclamped)) return; FLUSH_VERTICES(ctx, _NEW_COLOR); - COPY_4FV( ctx->Color.BlendColor, tmp ); + COPY_4FV( ctx->Color.BlendColorUnclamped, tmp ); + + ctx->Color.BlendColor[0] = CLAMP(tmp[0], 0.0F, 1.0F); + ctx->Color.BlendColor[1] = CLAMP(tmp[1], 0.0F, 1.0F); + ctx->Color.BlendColor[2] = CLAMP(tmp[2], 0.0F, 1.0F); + ctx->Color.BlendColor[3] = CLAMP(tmp[3], 0.0F, 1.0F); if (ctx->Driver.BlendColor) - (*ctx->Driver.BlendColor)(ctx, tmp); + (*ctx->Driver.BlendColor)(ctx, ctx->Color.BlendColor); } @@ -558,17 +563,16 @@ _mesa_AlphaFunc( GLenum func, GLclampf ref ) case GL_NOTEQUAL: case GL_GEQUAL: case GL_ALWAYS: - ref = CLAMP(ref, 0.0F, 1.0F); - - if (ctx->Color.AlphaFunc == func && ctx->Color.AlphaRef == ref) + if (ctx->Color.AlphaFunc == func && ctx->Color.AlphaRefUnclamped == ref) return; /* no change */ FLUSH_VERTICES(ctx, _NEW_COLOR); ctx->Color.AlphaFunc = func; - ctx->Color.AlphaRef = ref; + ctx->Color.AlphaRefUnclamped = ref; + ctx->Color.AlphaRef = CLAMP(ref, 0.0F, 1.0F); if (ctx->Driver.AlphaFunc) - ctx->Driver.AlphaFunc(ctx, func, ref); + ctx->Driver.AlphaFunc(ctx, func, ctx->Color.AlphaRef); return; default: @@ -737,7 +741,7 @@ _mesa_ColorMaskIndexed( GLuint buf, GLboolean red, GLboolean green, } -extern void GLAPIENTRY +void GLAPIENTRY _mesa_ClampColorARB(GLenum target, GLenum clamp) { GET_CURRENT_CONTEXT(ctx); @@ -751,12 +755,15 @@ _mesa_ClampColorARB(GLenum target, GLenum clamp) switch (target) { case GL_CLAMP_VERTEX_COLOR_ARB: + FLUSH_VERTICES(ctx, _NEW_LIGHT); ctx->Light.ClampVertexColor = clamp; break; case GL_CLAMP_FRAGMENT_COLOR_ARB: + FLUSH_VERTICES(ctx, _NEW_FRAG_CLAMP); ctx->Color.ClampFragmentColor = clamp; break; case GL_CLAMP_READ_COLOR_ARB: + FLUSH_VERTICES(ctx, _NEW_COLOR); ctx->Color.ClampReadColor = clamp; break; default: @@ -789,6 +796,7 @@ void _mesa_init_color( struct gl_context * ctx ) memset(ctx->Color.ColorMask, 0xff, sizeof(ctx->Color.ColorMask)); ctx->Color.ClearIndex = 0; ASSIGN_4V( ctx->Color.ClearColor, 0, 0, 0, 0 ); + ASSIGN_4V( ctx->Color.ClearColorUnclamped, 0, 0, 0, 0 ); ctx->Color.AlphaEnabled = GL_FALSE; ctx->Color.AlphaFunc = GL_ALWAYS; ctx->Color.AlphaRef = 0; @@ -802,6 +810,7 @@ void _mesa_init_color( struct gl_context * ctx ) ctx->Color.Blend[i].EquationA = GL_FUNC_ADD; } ASSIGN_4V( ctx->Color.BlendColor, 0.0, 0.0, 0.0, 0.0 ); + ASSIGN_4V( ctx->Color.BlendColorUnclamped, 0.0, 0.0, 0.0, 0.0 ); ctx->Color.IndexLogicOpEnabled = GL_FALSE; ctx->Color.ColorLogicOpEnabled = GL_FALSE; ctx->Color._LogicOpEnabled = GL_FALSE; @@ -816,7 +825,9 @@ void _mesa_init_color( struct gl_context * ctx ) } ctx->Color.ClampFragmentColor = GL_FIXED_ONLY_ARB; + ctx->Color._ClampFragmentColor = GL_TRUE; ctx->Color.ClampReadColor = GL_FIXED_ONLY_ARB; + ctx->Color._ClampReadColor = GL_TRUE; } /*@}*/ diff --git a/src/mesa/main/bufferobj.c b/src/mesa/main/bufferobj.c index 3343bb2f40e..78105883c97 100644 --- a/src/mesa/main/bufferobj.c +++ b/src/mesa/main/bufferobj.c @@ -93,6 +93,11 @@ get_buffer_target(struct gl_context *ctx, GLenum target) } break; #endif + case GL_TEXTURE_BUFFER: + if (ctx->Extensions.ARB_texture_buffer_object) { + return &ctx->Texture.BufferObject; + } + break; default: return NULL; } @@ -216,7 +221,8 @@ _mesa_new_buffer_object( struct gl_context *ctx, GLuint name, GLenum target ) * Default callback for the \c dd_function_table::DeleteBuffer() hook. */ static void -_mesa_delete_buffer_object( struct gl_context *ctx, struct gl_buffer_object *bufObj ) +_mesa_delete_buffer_object(struct gl_context *ctx, + struct gl_buffer_object *bufObj) { (void) ctx; @@ -414,7 +420,8 @@ _mesa_buffer_subdata( struct gl_context *ctx, GLenum target, GLintptrARB offset, * \sa glBufferGetSubDataARB, dd_function_table::GetBufferSubData. */ static void -_mesa_buffer_get_subdata( struct gl_context *ctx, GLenum target, GLintptrARB offset, +_mesa_buffer_get_subdata( struct gl_context *ctx, + GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data, struct gl_buffer_object * bufObj ) { @@ -1536,7 +1543,7 @@ _mesa_FlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length) #if FEATURE_APPLE_object_purgeable static GLenum -_mesa_BufferObjectPurgeable(struct gl_context *ctx, GLuint name, GLenum option) +buffer_object_purgeable(struct gl_context *ctx, GLuint name, GLenum option) { struct gl_buffer_object *bufObj; GLenum retval; @@ -1569,7 +1576,7 @@ _mesa_BufferObjectPurgeable(struct gl_context *ctx, GLuint name, GLenum option) static GLenum -_mesa_RenderObjectPurgeable(struct gl_context *ctx, GLuint name, GLenum option) +renderbuffer_purgeable(struct gl_context *ctx, GLuint name, GLenum option) { struct gl_renderbuffer *bufObj; GLenum retval; @@ -1598,7 +1605,7 @@ _mesa_RenderObjectPurgeable(struct gl_context *ctx, GLuint name, GLenum option) static GLenum -_mesa_TextureObjectPurgeable(struct gl_context *ctx, GLuint name, GLenum option) +texture_object_purgeable(struct gl_context *ctx, GLuint name, GLenum option) { struct gl_texture_object *bufObj; GLenum retval; @@ -1654,13 +1661,13 @@ _mesa_ObjectPurgeableAPPLE(GLenum objectType, GLuint name, GLenum option) switch (objectType) { case GL_TEXTURE: - retval = _mesa_TextureObjectPurgeable (ctx, name, option); + retval = texture_object_purgeable(ctx, name, option); break; case GL_RENDERBUFFER_EXT: - retval = _mesa_RenderObjectPurgeable (ctx, name, option); + retval = renderbuffer_purgeable(ctx, name, option); break; case GL_BUFFER_OBJECT_APPLE: - retval = _mesa_BufferObjectPurgeable (ctx, name, option); + retval = buffer_object_purgeable(ctx, name, option); break; default: _mesa_error(ctx, GL_INVALID_ENUM, @@ -1679,7 +1686,7 @@ _mesa_ObjectPurgeableAPPLE(GLenum objectType, GLuint name, GLenum option) static GLenum -_mesa_BufferObjectUnpurgeable(struct gl_context *ctx, GLuint name, GLenum option) +buffer_object_unpurgeable(struct gl_context *ctx, GLuint name, GLenum option) { struct gl_buffer_object *bufObj; GLenum retval; @@ -1709,7 +1716,7 @@ _mesa_BufferObjectUnpurgeable(struct gl_context *ctx, GLuint name, GLenum option static GLenum -_mesa_RenderObjectUnpurgeable(struct gl_context *ctx, GLuint name, GLenum option) +renderbuffer_unpurgeable(struct gl_context *ctx, GLuint name, GLenum option) { struct gl_renderbuffer *bufObj; GLenum retval; @@ -1739,7 +1746,7 @@ _mesa_RenderObjectUnpurgeable(struct gl_context *ctx, GLuint name, GLenum option static GLenum -_mesa_TextureObjectUnpurgeable(struct gl_context *ctx, GLuint name, GLenum option) +texture_object_unpurgeable(struct gl_context *ctx, GLuint name, GLenum option) { struct gl_texture_object *bufObj; GLenum retval; @@ -1794,11 +1801,11 @@ _mesa_ObjectUnpurgeableAPPLE(GLenum objectType, GLuint name, GLenum option) switch (objectType) { case GL_BUFFER_OBJECT_APPLE: - return _mesa_BufferObjectUnpurgeable(ctx, name, option); + return buffer_object_unpurgeable(ctx, name, option); case GL_TEXTURE: - return _mesa_TextureObjectUnpurgeable(ctx, name, option); + return texture_object_unpurgeable(ctx, name, option); case GL_RENDERBUFFER_EXT: - return _mesa_RenderObjectUnpurgeable(ctx, name, option); + return renderbuffer_unpurgeable(ctx, name, option); default: _mesa_error(ctx, GL_INVALID_ENUM, "glObjectUnpurgeable(name = 0x%x) invalid type: %d", @@ -1809,12 +1816,10 @@ _mesa_ObjectUnpurgeableAPPLE(GLenum objectType, GLuint name, GLenum option) static void -_mesa_GetBufferObjectParameterivAPPLE(struct gl_context *ctx, GLuint name, - GLenum pname, GLint* params) +get_buffer_object_parameteriv(struct gl_context *ctx, GLuint name, + GLenum pname, GLint *params) { - struct gl_buffer_object *bufObj; - - bufObj = _mesa_lookup_bufferobj(ctx, name); + struct gl_buffer_object *bufObj = _mesa_lookup_bufferobj(ctx, name); if (!bufObj) { _mesa_error(ctx, GL_INVALID_VALUE, "glGetObjectParameteriv(name = 0x%x) invalid object", name); @@ -1835,13 +1840,11 @@ _mesa_GetBufferObjectParameterivAPPLE(struct gl_context *ctx, GLuint name, static void -_mesa_GetRenderObjectParameterivAPPLE(struct gl_context *ctx, GLuint name, - GLenum pname, GLint* params) +get_renderbuffer_parameteriv(struct gl_context *ctx, GLuint name, + GLenum pname, GLint *params) { - struct gl_renderbuffer *bufObj; - - bufObj = _mesa_lookup_renderbuffer(ctx, name); - if (!bufObj) { + struct gl_renderbuffer *rb = _mesa_lookup_renderbuffer(ctx, name); + if (!rb) { _mesa_error(ctx, GL_INVALID_VALUE, "glObjectUnpurgeable(name = 0x%x)", name); return; @@ -1849,7 +1852,7 @@ _mesa_GetRenderObjectParameterivAPPLE(struct gl_context *ctx, GLuint name, switch (pname) { case GL_PURGEABLE_APPLE: - *params = bufObj->Purgeable; + *params = rb->Purgeable; break; default: _mesa_error(ctx, GL_INVALID_ENUM, @@ -1861,13 +1864,11 @@ _mesa_GetRenderObjectParameterivAPPLE(struct gl_context *ctx, GLuint name, static void -_mesa_GetTextureObjectParameterivAPPLE(struct gl_context *ctx, GLuint name, - GLenum pname, GLint* params) +get_texture_object_parameteriv(struct gl_context *ctx, GLuint name, + GLenum pname, GLint *params) { - struct gl_texture_object *bufObj; - - bufObj = _mesa_lookup_texture(ctx, name); - if (!bufObj) { + struct gl_texture_object *texObj = _mesa_lookup_texture(ctx, name); + if (!texObj) { _mesa_error(ctx, GL_INVALID_VALUE, "glObjectUnpurgeable(name = 0x%x)", name); return; @@ -1875,7 +1876,7 @@ _mesa_GetTextureObjectParameterivAPPLE(struct gl_context *ctx, GLuint name, switch (pname) { case GL_PURGEABLE_APPLE: - *params = bufObj->Purgeable; + *params = texObj->Purgeable; break; default: _mesa_error(ctx, GL_INVALID_ENUM, @@ -1888,7 +1889,7 @@ _mesa_GetTextureObjectParameterivAPPLE(struct gl_context *ctx, GLuint name, void GLAPIENTRY _mesa_GetObjectParameterivAPPLE(GLenum objectType, GLuint name, GLenum pname, - GLint* params) + GLint *params) { GET_CURRENT_CONTEXT(ctx); @@ -1900,13 +1901,13 @@ _mesa_GetObjectParameterivAPPLE(GLenum objectType, GLuint name, GLenum pname, switch (objectType) { case GL_TEXTURE: - _mesa_GetTextureObjectParameterivAPPLE (ctx, name, pname, params); + get_texture_object_parameteriv(ctx, name, pname, params); break; case GL_BUFFER_OBJECT_APPLE: - _mesa_GetBufferObjectParameterivAPPLE (ctx, name, pname, params); + get_buffer_object_parameteriv(ctx, name, pname, params); break; case GL_RENDERBUFFER_EXT: - _mesa_GetRenderObjectParameterivAPPLE (ctx, name, pname, params); + get_renderbuffer_parameteriv(ctx, name, pname, params); break; default: _mesa_error(ctx, GL_INVALID_ENUM, diff --git a/src/mesa/main/buffers.c b/src/mesa/main/buffers.c index 5c37f3d1a86..96ee1ace728 100644 --- a/src/mesa/main/buffers.c +++ b/src/mesa/main/buffers.c @@ -407,7 +407,6 @@ _mesa_drawbuffers(struct gl_context *ctx, GLuint n, const GLenum *buffers, fb->_ColorDrawBufferIndexes[buf] = bufIndex; newState = GL_TRUE; } - fb->ColorDrawBuffer[buf] = buffers[buf]; count = buf + 1; } else { @@ -416,6 +415,7 @@ _mesa_drawbuffers(struct gl_context *ctx, GLuint n, const GLenum *buffers, newState = GL_TRUE; } } + fb->ColorDrawBuffer[buf] = buffers[buf]; } /* set remaining outputs to -1 (GL_NONE) */ while (buf < ctx->Const.MaxDrawBuffers) { diff --git a/src/mesa/main/clear.c b/src/mesa/main/clear.c index 43a9ccc116a..fa95e4522f2 100644 --- a/src/mesa/main/clear.c +++ b/src/mesa/main/clear.c @@ -78,19 +78,27 @@ _mesa_ClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha ) GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END(ctx); - tmp[0] = CLAMP(red, 0.0F, 1.0F); - tmp[1] = CLAMP(green, 0.0F, 1.0F); - tmp[2] = CLAMP(blue, 0.0F, 1.0F); - tmp[3] = CLAMP(alpha, 0.0F, 1.0F); + tmp[0] = red; + tmp[1] = green; + tmp[2] = blue; + tmp[3] = alpha; - if (TEST_EQ_4V(tmp, ctx->Color.ClearColor)) + if (TEST_EQ_4V(tmp, ctx->Color.ClearColorUnclamped)) return; /* no change */ FLUSH_VERTICES(ctx, _NEW_COLOR); - COPY_4V(ctx->Color.ClearColor, tmp); + COPY_4V(ctx->Color.ClearColorUnclamped, tmp); + + ctx->Color.ClearColor[0] = CLAMP(tmp[0], 0.0F, 1.0F); + ctx->Color.ClearColor[1] = CLAMP(tmp[1], 0.0F, 1.0F); + ctx->Color.ClearColor[2] = CLAMP(tmp[2], 0.0F, 1.0F); + ctx->Color.ClearColor[3] = CLAMP(tmp[3], 0.0F, 1.0F); if (ctx->Driver.ClearColor) { /* it's OK to call glClearColor in CI mode but it should be a NOP */ + /* we pass the clamped color, since all drivers that need this don't + * support GL_ARB_color_buffer_float + */ (*ctx->Driver.ClearColor)(ctx, ctx->Color.ClearColor); } } diff --git a/src/mesa/main/clip.c b/src/mesa/main/clip.c index be8ce4278cd..ba2028cf2e1 100644 --- a/src/mesa/main/clip.c +++ b/src/mesa/main/clip.c @@ -32,11 +32,20 @@ #include "math/m_matrix.h" +/** + * Update derived clip plane state. + */ +void +_mesa_update_clip_plane(struct gl_context *ctx, GLuint plane) +{ + if (_math_matrix_is_dirty(ctx->ProjectionMatrixStack.Top)) + _math_matrix_analyse( ctx->ProjectionMatrixStack.Top ); -/**********************************************************************/ -/* Get/Set User clip-planes. */ -/**********************************************************************/ - + /* Clip-Space Plane = Eye-Space Plane * Projection Matrix */ + _mesa_transform_vector(ctx->Transform._ClipUserPlane[plane], + ctx->Transform.EyeUserPlane[plane], + ctx->ProjectionMatrixStack.Top->inv); +} void GLAPIENTRY @@ -78,17 +87,8 @@ _mesa_ClipPlane( GLenum plane, const GLdouble *eq ) FLUSH_VERTICES(ctx, _NEW_TRANSFORM); COPY_4FV(ctx->Transform.EyeUserPlane[p], equation); - /* Update derived state. This state also depends on the projection - * matrix, and is recalculated on changes to the projection matrix by - * code in _mesa_update_state(). - */ if (ctx->Transform.ClipPlanesEnabled & (1 << p)) { - if (_math_matrix_is_dirty(ctx->ProjectionMatrixStack.Top)) - _math_matrix_analyse( ctx->ProjectionMatrixStack.Top ); - - _mesa_transform_vector( ctx->Transform._ClipUserPlane[p], - ctx->Transform.EyeUserPlane[p], - ctx->ProjectionMatrixStack.Top->inv ); + _mesa_update_clip_plane(ctx, p); } if (ctx->Driver.ClipPlane) diff --git a/src/mesa/main/clip.h b/src/mesa/main/clip.h index 11431dcfce0..a8e6d768758 100644 --- a/src/mesa/main/clip.h +++ b/src/mesa/main/clip.h @@ -33,6 +33,11 @@ #include "glheader.h" +struct gl_context; + +extern void +_mesa_update_clip_plane(struct gl_context *ctx, GLuint plane); + extern void GLAPIENTRY _mesa_ClipPlane( GLenum plane, const GLdouble *equation ); diff --git a/src/mesa/main/colortab.c b/src/mesa/main/colortab.c index d0c865735ac..35b3096f650 100644 --- a/src/mesa/main/colortab.c +++ b/src/mesa/main/colortab.c @@ -516,6 +516,7 @@ _mesa_GetColorTable( GLenum target, GLenum format, struct gl_texture_unit *texUnit = _mesa_get_current_tex_unit(ctx); struct gl_color_table *table = NULL; GLfloat rgba[MAX_COLOR_TABLE_SIZE][4]; + GLbitfield transferOps = 0; ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); if (ctx->NewState) { @@ -618,8 +619,12 @@ _mesa_GetColorTable( GLenum target, GLenum format, if (!data) return; + /* TODO: is this correct? */ + if(ctx->Color._ClampReadColor) + transferOps |= IMAGE_CLAMP_BIT; + _mesa_pack_rgba_span_float(ctx, table->Size, rgba, - format, type, data, &ctx->Pack, 0x0); + format, type, data, &ctx->Pack, transferOps); _mesa_unmap_pbo_dest(ctx, &ctx->Pack); } diff --git a/src/mesa/main/compiler.h b/src/mesa/main/compiler.h index 5557a3b5cb5..e17fd0ff6fd 100644 --- a/src/mesa/main/compiler.h +++ b/src/mesa/main/compiler.h @@ -171,12 +171,14 @@ extern "C" { * We also need to define a USED attribute, so the optimizer doesn't * inline a static function that we later use in an alias. - ajax */ -#if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)) -# define PUBLIC __attribute__((visibility("default"))) -# define USED __attribute__((used)) -#else -# define PUBLIC -# define USED +#ifndef PUBLIC +# if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)) +# define PUBLIC __attribute__((visibility("default"))) +# define USED __attribute__((used)) +# else +# define PUBLIC +# define USED +# endif #endif @@ -195,15 +197,17 @@ extern "C" { * __builtin_expect macros */ #if !defined(__GNUC__) -# define __builtin_expect(x, y) x +# define __builtin_expect(x, y) (x) #endif -#ifdef __GNUC__ -#define likely(x) __builtin_expect(!!(x), 1) -#define unlikely(x) __builtin_expect(!!(x), 0) -#else -#define likely(x) !!(x) -#define unlikely(x) !!(x) +#ifndef likely +# ifdef __GNUC__ +# define likely(x) __builtin_expect(!!(x), 1) +# define unlikely(x) __builtin_expect(!!(x), 0) +# else +# define likely(x) (x) +# define unlikely(x) (x) +# endif #endif /** diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index ca74284ca89..8053edc23b2 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -191,7 +191,8 @@ _mesa_notifySwapBuffers(struct gl_context *ctx) * is acceptable but the actual depth type will be GLushort or GLuint as * needed. * \param stencilBits requested minimum bits per stencil buffer value - * \param accumRedBits, accumGreenBits, accumBlueBits, accumAlphaBits number of bits per color component in accum buffer. + * \param accumRedBits, accumGreenBits, accumBlueBits, accumAlphaBits number + * of bits per color component in accum buffer. * \param indexBits number of bits per pixel if \p rgbFlag is GL_FALSE * \param redBits number of bits per color component in frame buffer for RGB(A) * mode. We always use 8 in core Mesa though. @@ -200,8 +201,8 @@ _mesa_notifySwapBuffers(struct gl_context *ctx) * \param alphaBits same as above. * \param numSamples not really used. * - * \return pointer to new struct gl_config or NULL if requested parameters can't be - * met. + * \return pointer to new struct gl_config or NULL if requested parameters + * can't be met. * * \note Need to add params for level and numAuxBuffers (at least) */ @@ -567,6 +568,7 @@ _mesa_init_constants(struct gl_context *ctx) ctx->Const.MaxTextureImageUnits); ctx->Const.MaxTextureMaxAnisotropy = MAX_TEXTURE_MAX_ANISOTROPY; ctx->Const.MaxTextureLodBias = MAX_TEXTURE_LOD_BIAS; + ctx->Const.MaxTextureBufferSize = 65536; ctx->Const.MaxArrayLockSize = MAX_ARRAY_LOCK_SIZE; ctx->Const.SubPixelBits = SUB_PIXEL_BITS; ctx->Const.MinPointSize = MIN_POINT_SIZE; @@ -1185,7 +1187,8 @@ _mesa_destroy_context( struct gl_context *ctx ) * structures. */ void -_mesa_copy_context( const struct gl_context *src, struct gl_context *dst, GLuint mask ) +_mesa_copy_context( const struct gl_context *src, struct gl_context *dst, + GLuint mask ) { if (mask & GL_ACCUM_BUFFER_BIT) { /* OK to memcpy */ diff --git a/src/mesa/main/context.h b/src/mesa/main/context.h index 33a36311c8a..a4c7ba2c54d 100644 --- a/src/mesa/main/context.h +++ b/src/mesa/main/context.h @@ -30,16 +30,16 @@ * There are three large Mesa data types/classes which are meant to be * used by device drivers: * - struct gl_context: this contains the Mesa rendering state - * - struct gl_config: this describes the color buffer (RGB vs. ci), whether or not - * there's a depth buffer, stencil buffer, etc. - * - struct gl_framebuffer: contains pointers to the depth buffer, stencil buffer, - * accum buffer and alpha buffers. + * - struct gl_config: this describes the color buffer (RGB vs. ci), whether + * or not there's a depth buffer, stencil buffer, etc. + * - struct gl_framebuffer: contains pointers to the depth buffer, stencil + * buffer, accum buffer and alpha buffers. * * These types should be encapsulated by corresponding device driver * data types. See xmesa.h and xmesaP.h for an example. * - * In OOP terms, struct gl_context, struct gl_config, and struct gl_framebuffer are base classes - * which the device driver must derive from. + * In OOP terms, struct gl_context, struct gl_config, and struct gl_framebuffer + * are base classes which the device driver must derive from. * * The following functions create and destroy these data types. */ diff --git a/src/mesa/main/dd.h b/src/mesa/main/dd.h index 34d67b5bac8..d749b245e13 100644 --- a/src/mesa/main/dd.h +++ b/src/mesa/main/dd.h @@ -1021,6 +1021,14 @@ struct dd_function_table { * \name GL_NV_texture_barrier interface */ void (*TextureBarrier)(struct gl_context *ctx); + + /** + * \name GL_ARB_sampler_objects + */ + struct gl_sampler_object * (*NewSamplerObject)(struct gl_context *ctx, + GLuint name); + void (*DeleteSamplerObject)(struct gl_context *ctx, + struct gl_sampler_object *samp); }; diff --git a/src/mesa/main/debug.c b/src/mesa/main/debug.c index 78881668e49..e7f6be99481 100644 --- a/src/mesa/main/debug.c +++ b/src/mesa/main/debug.c @@ -183,7 +183,7 @@ static void add_debug_flags( const char *debug ) MESA_VERBOSE = 0x0; for (i = 0; i < Elements(debug_opt); i++) { - if (strstr(debug, debug_opt[i].name)) + if (strstr(debug, debug_opt[i].name) || strcmp(debug, "all") == 0) MESA_VERBOSE |= debug_opt[i].flag; } @@ -251,6 +251,9 @@ write_ppm(const char *filename, const GLubyte *buffer, int width, int height, } fclose(f); } + else { + fprintf(stderr, "Unable to create %s in write_ppm()\n", filename); + } } @@ -549,6 +552,27 @@ _mesa_dump_stencil_buffer(const char *filename) } +void +_mesa_dump_image(const char *filename, const void *image, GLuint w, GLuint h, + GLenum format, GLenum type) +{ + GLboolean invert = GL_TRUE; + + if (format == GL_RGBA && type == GL_UNSIGNED_BYTE) { + write_ppm(filename, image, w, h, 4, 0, 1, 2, invert); + } + else if (format == GL_BGRA && type == GL_UNSIGNED_BYTE) { + write_ppm(filename, image, w, h, 4, 2, 1, 0, invert); + } + else if (format == GL_LUMINANCE_ALPHA && type == GL_UNSIGNED_BYTE) { + write_ppm(filename, image, w, h, 2, 1, 0, 0, invert); + } + else { + _mesa_problem(NULL, "Unsupported format/type in _mesa_dump_image()"); + } +} + + /** * Quick and dirty function to "print" a texture to stdout. */ diff --git a/src/mesa/main/debug.h b/src/mesa/main/debug.h index 4968a9f1979..d7c53b65504 100644 --- a/src/mesa/main/debug.h +++ b/src/mesa/main/debug.h @@ -85,6 +85,10 @@ extern void _mesa_dump_stencil_buffer(const char *filename); extern void +_mesa_dump_image(const char *filename, const void *image, GLuint w, GLuint h, + GLenum format, GLenum type); + +extern void _mesa_print_texture(struct gl_context *ctx, const struct gl_texture_image *img); #endif diff --git a/src/mesa/main/depthstencil.c b/src/mesa/main/depthstencil.c index c5466dc9fcc..ab62c97fe5a 100644 --- a/src/mesa/main/depthstencil.c +++ b/src/mesa/main/depthstencil.c @@ -91,6 +91,7 @@ alloc_wrapper_storage(struct gl_context *ctx, struct gl_renderbuffer *rb, if (retVal) { rb->Width = width; rb->Height = height; + rb->RowStride = dsrb->RowStride; } return retVal; } @@ -371,6 +372,7 @@ _mesa_new_z24_renderbuffer_wrapper(struct gl_context *ctx, z24rb->RefCount = 0; z24rb->Width = dsrb->Width; z24rb->Height = dsrb->Height; + z24rb->RowStride = dsrb->RowStride; z24rb->InternalFormat = GL_DEPTH_COMPONENT24; z24rb->Format = MESA_FORMAT_X8_Z24; z24rb->_BaseFormat = GL_DEPTH_COMPONENT; @@ -657,6 +659,7 @@ _mesa_new_s8_renderbuffer_wrapper(struct gl_context *ctx, struct gl_renderbuffer s8rb->RefCount = 0; s8rb->Width = dsrb->Width; s8rb->Height = dsrb->Height; + s8rb->RowStride = dsrb->RowStride; s8rb->InternalFormat = GL_STENCIL_INDEX8_EXT; s8rb->Format = MESA_FORMAT_S8; s8rb->_BaseFormat = GL_STENCIL_INDEX; diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c index 0112d9dde36..f66082e7fce 100644 --- a/src/mesa/main/dlist.c +++ b/src/mesa/main/dlist.c @@ -49,6 +49,7 @@ #include "eval.h" #include "framebuffer.h" #include "glapi/glapi.h" +#include "glapidispatch.h" #include "hash.h" #include "image.h" #include "light.h" @@ -388,6 +389,9 @@ typedef enum OPCODE_UNIFORM_3UIV, OPCODE_UNIFORM_4UIV, + /* GL_ARB_color_buffer_float */ + OPCODE_CLAMP_COLOR, + /* GL_EXT_framebuffer_blit */ OPCODE_BLIT_FRAMEBUFFER, @@ -434,6 +438,9 @@ typedef enum /* GL_NV_texture_barrier */ OPCODE_TEXTURE_BARRIER_NV, + /* GL_ARB_sampler_object */ + OPCODE_BIND_SAMPLER, + /* The following three are meta instructions */ OPCODE_ERROR, /* raise compiled-in error */ OPCODE_CONTINUE, @@ -6887,6 +6894,22 @@ save_UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, } static void GLAPIENTRY +save_ClampColorARB(GLenum target, GLenum clamp) +{ + GET_CURRENT_CONTEXT(ctx); + Node *n; + ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); + n = alloc_instruction(ctx, OPCODE_CLAMP_COLOR, 2); + if (n) { + n[1].e = target; + n[2].e = clamp; + } + if (ctx->ExecuteFlag) { + CALL_ClampColorARB(ctx->Exec, (target, clamp)); + } +} + +static void GLAPIENTRY save_UseShaderProgramEXT(GLenum type, GLuint program) { GET_CURRENT_CONTEXT(ctx); @@ -7036,7 +7059,7 @@ save_VertexAttribDivisor(GLuint index, GLuint divisor) /* GL_NV_texture_barrier */ static void -save_TextureBarrierNV() +save_TextureBarrierNV(void) { GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); @@ -7047,6 +7070,24 @@ save_TextureBarrierNV() } +/* GL_ARB_sampler_objects */ +static void +save_BindSampler(GLuint unit, GLuint sampler) +{ + Node *n; + GET_CURRENT_CONTEXT(ctx); + ASSERT_OUTSIDE_SAVE_BEGIN_END_AND_FLUSH(ctx); + n = alloc_instruction(ctx, OPCODE_BIND_SAMPLER, 2); + if (n) { + n[1].ui = unit; + n[2].ui = sampler; + } + if (ctx->ExecuteFlag) { + CALL_BindSampler(ctx->Exec, (unit, sampler)); + } +} + + /** * Save an error-generating command into display list. * @@ -8071,6 +8112,10 @@ execute_list(struct gl_context *ctx, GLuint list) (n[1].i, n[2].i, n[3].b, n[4].data)); break; + case OPCODE_CLAMP_COLOR: + CALL_ClampColorARB(ctx->Exec, (n[1].e, n[2].e)); + break; + case OPCODE_TEX_BUMP_PARAMETER_ATI: { GLfloat values[4]; @@ -8226,6 +8271,10 @@ execute_list(struct gl_context *ctx, GLuint list) CALL_TextureBarrierNV(ctx->Exec, ()); break; + case OPCODE_BIND_SAMPLER: + CALL_BindSampler(ctx->Exec, (n[1].ui, n[2].ui)); + break; + case OPCODE_CONTINUE: n = (Node *) n[1].next; break; @@ -9868,6 +9917,10 @@ _mesa_create_save_table(void) SET_UseShaderProgramEXT(table, save_UseShaderProgramEXT); SET_ActiveProgramEXT(table, save_ActiveProgramEXT); + /* GL_ARB_color_buffer_float */ + SET_ClampColorARB(table, save_ClampColorARB); + SET_ClampColor(table, save_ClampColorARB); + /* GL 3.0 */ #if 0 SET_ClearBufferiv(table, save_ClearBufferiv); @@ -9903,6 +9956,9 @@ _mesa_create_save_table(void) /* GL_NV_texture_barrier */ SET_TextureBarrierNV(table, save_TextureBarrierNV); + /* GL_ARB_sampler_objects */ + SET_BindSampler(table, save_BindSampler); + /* GL_ARB_draw_buffer_blend */ SET_BlendFunciARB(table, save_BlendFunci); SET_BlendFuncSeparateiARB(table, save_BlendFuncSeparatei); diff --git a/src/mesa/main/drawpix.c b/src/mesa/main/drawpix.c index fb86036a188..ee379f71bf5 100644 --- a/src/mesa/main/drawpix.c +++ b/src/mesa/main/drawpix.c @@ -188,7 +188,7 @@ _mesa_CopyPixels( GLint srcx, GLint srcy, GLsizei width, GLsizei height, goto end; } - if (!ctx->Current.RasterPosValid || width ==0 || height == 0) { + if (!ctx->Current.RasterPosValid || width == 0 || height == 0) { goto end; /* no-op, not an error */ } diff --git a/src/mesa/main/enable.c b/src/mesa/main/enable.c index f247092410b..2ec19c8afbd 100644 --- a/src/mesa/main/enable.c +++ b/src/mesa/main/enable.c @@ -29,6 +29,7 @@ #include "glheader.h" +#include "clip.h" #include "context.h" #include "enable.h" #include "light.h" @@ -213,8 +214,8 @@ _mesa_DisableClientState( GLenum cap ) /** * Return pointer to current texture unit for setting/getting coordinate * state. - * Note that we'll set GL_INVALID_OPERATION if the active texture unit is - * higher than the number of supported coordinate units. And we'll return NULL. + * Note that we'll set GL_INVALID_OPERATION and return NULL if the active + * texture unit is higher than the number of supported coordinate units. */ static struct gl_texture_unit * get_texcoord_unit(struct gl_context *ctx) @@ -286,7 +287,8 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state) break; case GL_BLEND: { - GLbitfield newEnabled = state * ((1 << ctx->Const.MaxDrawBuffers) - 1); + GLbitfield newEnabled = + state * ((1 << ctx->Const.MaxDrawBuffers) - 1); if (newEnabled != ctx->Color.BlendEnabled) { FLUSH_VERTICES(ctx, _NEW_COLOR); ctx->Color.BlendEnabled = newEnabled; @@ -303,24 +305,15 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state) { const GLuint p = cap - GL_CLIP_PLANE0; - if ((ctx->Transform.ClipPlanesEnabled & (1 << p)) == ((GLuint) state << p)) + if ((ctx->Transform.ClipPlanesEnabled & (1 << p)) + == ((GLuint) state << p)) return; FLUSH_VERTICES(ctx, _NEW_TRANSFORM); if (state) { ctx->Transform.ClipPlanesEnabled |= (1 << p); - - if (_math_matrix_is_dirty(ctx->ProjectionMatrixStack.Top)) - _math_matrix_analyse( ctx->ProjectionMatrixStack.Top ); - - /* This derived state also calculated in clip.c and - * from _mesa_update_state() on changes to EyeUserPlane - * and ctx->ProjectionMatrix respectively. - */ - _mesa_transform_vector( ctx->Transform._ClipUserPlane[p], - ctx->Transform.EyeUserPlane[p], - ctx->ProjectionMatrixStack.Top->inv ); + _mesa_update_clip_plane(ctx, p); } else { ctx->Transform.ClipPlanesEnabled &= ~(1 << p); @@ -612,55 +605,17 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state) return; } break; - case GL_TEXTURE_GEN_Q: - { - struct gl_texture_unit *texUnit = get_texcoord_unit(ctx); - if (texUnit) { - GLuint newenabled = texUnit->TexGenEnabled & ~Q_BIT; - if (state) - newenabled |= Q_BIT; - if (texUnit->TexGenEnabled == newenabled) - return; - FLUSH_VERTICES(ctx, _NEW_TEXTURE); - texUnit->TexGenEnabled = newenabled; - } - } - break; - case GL_TEXTURE_GEN_R: - { - struct gl_texture_unit *texUnit = get_texcoord_unit(ctx); - if (texUnit) { - GLuint newenabled = texUnit->TexGenEnabled & ~R_BIT; - if (state) - newenabled |= R_BIT; - if (texUnit->TexGenEnabled == newenabled) - return; - FLUSH_VERTICES(ctx, _NEW_TEXTURE); - texUnit->TexGenEnabled = newenabled; - } - } - break; case GL_TEXTURE_GEN_S: - { - struct gl_texture_unit *texUnit = get_texcoord_unit(ctx); - if (texUnit) { - GLuint newenabled = texUnit->TexGenEnabled & ~S_BIT; - if (state) - newenabled |= S_BIT; - if (texUnit->TexGenEnabled == newenabled) - return; - FLUSH_VERTICES(ctx, _NEW_TEXTURE); - texUnit->TexGenEnabled = newenabled; - } - } - break; case GL_TEXTURE_GEN_T: + case GL_TEXTURE_GEN_R: + case GL_TEXTURE_GEN_Q: { struct gl_texture_unit *texUnit = get_texcoord_unit(ctx); if (texUnit) { - GLuint newenabled = texUnit->TexGenEnabled & ~T_BIT; + GLbitfield coordBit = S_BIT << (cap - GL_TEXTURE_GEN_S); + GLbitfield newenabled = texUnit->TexGenEnabled & ~coordBit; if (state) - newenabled |= T_BIT; + newenabled |= coordBit; if (texUnit->TexGenEnabled == newenabled) return; FLUSH_VERTICES(ctx, _NEW_TEXTURE); @@ -1012,7 +967,8 @@ _mesa_Disable( GLenum cap ) * Enable/disable an indexed state var. */ void -_mesa_set_enablei(struct gl_context *ctx, GLenum cap, GLuint index, GLboolean state) +_mesa_set_enablei(struct gl_context *ctx, GLenum cap, + GLuint index, GLboolean state) { ASSERT(state == 0 || state == 1); switch (cap) { @@ -1231,35 +1187,15 @@ _mesa_IsEnabled( GLenum cap ) return is_texture_enabled(ctx, TEXTURE_2D_BIT); case GL_TEXTURE_3D: return is_texture_enabled(ctx, TEXTURE_3D_BIT); - case GL_TEXTURE_GEN_Q: - { - const struct gl_texture_unit *texUnit = get_texcoord_unit(ctx); - if (texUnit) { - return (texUnit->TexGenEnabled & Q_BIT) ? GL_TRUE : GL_FALSE; - } - } - return GL_FALSE; - case GL_TEXTURE_GEN_R: - { - const struct gl_texture_unit *texUnit = get_texcoord_unit(ctx); - if (texUnit) { - return (texUnit->TexGenEnabled & R_BIT) ? GL_TRUE : GL_FALSE; - } - } - return GL_FALSE; case GL_TEXTURE_GEN_S: - { - const struct gl_texture_unit *texUnit = get_texcoord_unit(ctx); - if (texUnit) { - return (texUnit->TexGenEnabled & S_BIT) ? GL_TRUE : GL_FALSE; - } - } - return GL_FALSE; case GL_TEXTURE_GEN_T: + case GL_TEXTURE_GEN_R: + case GL_TEXTURE_GEN_Q: { const struct gl_texture_unit *texUnit = get_texcoord_unit(ctx); if (texUnit) { - return (texUnit->TexGenEnabled & T_BIT) ? GL_TRUE : GL_FALSE; + GLbitfield coordBit = S_BIT << (cap - GL_TEXTURE_GEN_S); + return (texUnit->TexGenEnabled & coordBit) ? GL_TRUE : GL_FALSE; } } return GL_FALSE; @@ -1268,7 +1204,8 @@ _mesa_IsEnabled( GLenum cap ) { const struct gl_texture_unit *texUnit = get_texcoord_unit(ctx); if (texUnit) { - return (texUnit->TexGenEnabled & STR_BITS) == STR_BITS ? GL_TRUE : GL_FALSE; + return (texUnit->TexGenEnabled & STR_BITS) == STR_BITS + ? GL_TRUE : GL_FALSE; } } #endif @@ -1285,7 +1222,8 @@ _mesa_IsEnabled( GLenum cap ) case GL_INDEX_ARRAY: return (ctx->Array.ArrayObj->Index.Enabled != 0); case GL_TEXTURE_COORD_ARRAY: - return (ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled != 0); + return (ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture] + .Enabled != 0); case GL_EDGE_FLAG_ARRAY: return (ctx->Array.ArrayObj->EdgeFlag.Enabled != 0); case GL_FOG_COORDINATE_ARRAY_EXT: diff --git a/src/mesa/main/enums.c b/src/mesa/main/enums.c index e9d6b6b156c..98cbbf53b85 100644 --- a/src/mesa/main/enums.c +++ b/src/mesa/main/enums.c @@ -193,12 +193,15 @@ LONGSTRING static const char enum_string_table[] = "GL_C4UB_V3F\0" "GL_CCW\0" "GL_CLAMP\0" + "GL_CLAMP_FRAGMENT_COLOR_ARB\0" "GL_CLAMP_READ_COLOR\0" + "GL_CLAMP_READ_COLOR_ARB\0" "GL_CLAMP_TO_BORDER\0" "GL_CLAMP_TO_BORDER_ARB\0" "GL_CLAMP_TO_BORDER_SGIS\0" "GL_CLAMP_TO_EDGE\0" "GL_CLAMP_TO_EDGE_SGIS\0" + "GL_CLAMP_VERTEX_COLOR_ARB\0" "GL_CLEAR\0" "GL_CLIENT_ACTIVE_TEXTURE\0" "GL_CLIENT_ACTIVE_TEXTURE_ARB\0" @@ -584,6 +587,7 @@ LONGSTRING static const char enum_string_table[] = "GL_FIXED\0" "GL_FIXED_OES\0" "GL_FIXED_ONLY\0" + "GL_FIXED_ONLY_ARB\0" "GL_FLAT\0" "GL_FLOAT\0" "GL_FLOAT_MAT2\0" @@ -1140,6 +1144,7 @@ LONGSTRING static const char enum_string_table[] = "GL_MAX_SHININESS_NV\0" "GL_MAX_SPOT_EXPONENT_NV\0" "GL_MAX_TEXTURE_BUFFER_SIZE\0" + "GL_MAX_TEXTURE_BUFFER_SIZE_ARB\0" "GL_MAX_TEXTURE_COORDS\0" "GL_MAX_TEXTURE_COORDS_ARB\0" "GL_MAX_TEXTURE_IMAGE_UNITS\0" @@ -1708,6 +1713,7 @@ LONGSTRING static const char enum_string_table[] = "GL_RGBA8_OES\0" "GL_RGBA8_SNORM\0" "GL_RGBA_DXT5_S3TC\0" + "GL_RGBA_FLOAT_MODE_ARB\0" "GL_RGBA_INTEGER\0" "GL_RGBA_INTEGER_EXT\0" "GL_RGBA_INTEGER_MODE_EXT\0" @@ -1740,6 +1746,7 @@ LONGSTRING static const char enum_string_table[] = "GL_SAMPLER_2D_SHADOW\0" "GL_SAMPLER_3D\0" "GL_SAMPLER_3D_OES\0" + "GL_SAMPLER_BINDING\0" "GL_SAMPLER_BUFFER\0" "GL_SAMPLER_BUFFER_EXT\0" "GL_SAMPLER_CUBE\0" @@ -2007,6 +2014,7 @@ LONGSTRING static const char enum_string_table[] = "GL_TEXTURE_BINDING_3D\0" "GL_TEXTURE_BINDING_3D_OES\0" "GL_TEXTURE_BINDING_BUFFER\0" + "GL_TEXTURE_BINDING_BUFFER_ARB\0" "GL_TEXTURE_BINDING_CUBE_MAP\0" "GL_TEXTURE_BINDING_CUBE_MAP_ARB\0" "GL_TEXTURE_BINDING_CUBE_MAP_OES\0" @@ -2019,8 +2027,11 @@ LONGSTRING static const char enum_string_table[] = "GL_TEXTURE_BORDER\0" "GL_TEXTURE_BORDER_COLOR\0" "GL_TEXTURE_BUFFER\0" + "GL_TEXTURE_BUFFER_ARB\0" "GL_TEXTURE_BUFFER_DATA_STORE_BINDING\0" + "GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB\0" "GL_TEXTURE_BUFFER_FORMAT\0" + "GL_TEXTURE_BUFFER_FORMAT_ARB\0" "GL_TEXTURE_CLIPMAP_CENTER_SGIX\0" "GL_TEXTURE_CLIPMAP_DEPTH_SGIX\0" "GL_TEXTURE_CLIPMAP_FRAME_SGIX\0" @@ -2334,7 +2345,7 @@ LONGSTRING static const char enum_string_table[] = "GL_ZOOM_Y\0" ; -static const enum_elt all_enums[2295] = +static const enum_elt all_enums[2306] = { { 0, 0x00000600 }, /* GL_2D */ { 6, 0x00001407 }, /* GL_2_BYTES */ @@ -2492,3700 +2503,3715 @@ static const enum_elt all_enums[2295] = { 2689, 0x00002A23 }, /* GL_C4UB_V3F */ { 2701, 0x00000901 }, /* GL_CCW */ { 2708, 0x00002900 }, /* GL_CLAMP */ - { 2717, 0x0000891C }, /* GL_CLAMP_READ_COLOR */ - { 2737, 0x0000812D }, /* GL_CLAMP_TO_BORDER */ - { 2756, 0x0000812D }, /* GL_CLAMP_TO_BORDER_ARB */ - { 2779, 0x0000812D }, /* GL_CLAMP_TO_BORDER_SGIS */ - { 2803, 0x0000812F }, /* GL_CLAMP_TO_EDGE */ - { 2820, 0x0000812F }, /* GL_CLAMP_TO_EDGE_SGIS */ - { 2842, 0x00001500 }, /* GL_CLEAR */ - { 2851, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE */ - { 2876, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE_ARB */ - { 2905, 0xFFFFFFFF }, /* GL_CLIENT_ALL_ATTRIB_BITS */ - { 2931, 0x00000BB1 }, /* GL_CLIENT_ATTRIB_STACK_DEPTH */ - { 2960, 0x00000001 }, /* GL_CLIENT_PIXEL_STORE_BIT */ - { 2986, 0x00000002 }, /* GL_CLIENT_VERTEX_ARRAY_BIT */ - { 3013, 0x00003000 }, /* GL_CLIP_DISTANCE0 */ - { 3031, 0x00003001 }, /* GL_CLIP_DISTANCE1 */ - { 3049, 0x00003002 }, /* GL_CLIP_DISTANCE2 */ - { 3067, 0x00003003 }, /* GL_CLIP_DISTANCE3 */ - { 3085, 0x00003004 }, /* GL_CLIP_DISTANCE4 */ - { 3103, 0x00003005 }, /* GL_CLIP_DISTANCE5 */ - { 3121, 0x00003006 }, /* GL_CLIP_DISTANCE6 */ - { 3139, 0x00003007 }, /* GL_CLIP_DISTANCE7 */ - { 3157, 0x00003000 }, /* GL_CLIP_PLANE0 */ - { 3172, 0x00003001 }, /* GL_CLIP_PLANE1 */ - { 3187, 0x00003002 }, /* GL_CLIP_PLANE2 */ - { 3202, 0x00003003 }, /* GL_CLIP_PLANE3 */ - { 3217, 0x00003004 }, /* GL_CLIP_PLANE4 */ - { 3232, 0x00003005 }, /* GL_CLIP_PLANE5 */ - { 3247, 0x000080F0 }, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */ - { 3280, 0x00000A00 }, /* GL_COEFF */ - { 3289, 0x00001800 }, /* GL_COLOR */ - { 3298, 0x00008076 }, /* GL_COLOR_ARRAY */ - { 3313, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING */ - { 3343, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING_ARB */ - { 3377, 0x00008090 }, /* GL_COLOR_ARRAY_POINTER */ - { 3400, 0x00008081 }, /* GL_COLOR_ARRAY_SIZE */ - { 3420, 0x00008083 }, /* GL_COLOR_ARRAY_STRIDE */ - { 3442, 0x00008082 }, /* GL_COLOR_ARRAY_TYPE */ - { 3462, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0 */ - { 3483, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_EXT */ - { 3508, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_OES */ - { 3533, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1 */ - { 3554, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10 */ - { 3576, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10_EXT */ - { 3602, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11 */ - { 3624, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11_EXT */ - { 3650, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12 */ - { 3672, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12_EXT */ - { 3698, 0x00008CED }, /* GL_COLOR_ATTACHMENT13 */ - { 3720, 0x00008CED }, /* GL_COLOR_ATTACHMENT13_EXT */ - { 3746, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14 */ - { 3768, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14_EXT */ - { 3794, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15 */ - { 3816, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15_EXT */ - { 3842, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1_EXT */ - { 3867, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2 */ - { 3888, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2_EXT */ - { 3913, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3 */ - { 3934, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3_EXT */ - { 3959, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4 */ - { 3980, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4_EXT */ - { 4005, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5 */ - { 4026, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5_EXT */ - { 4051, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6 */ - { 4072, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6_EXT */ - { 4097, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7 */ - { 4118, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7_EXT */ - { 4143, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8 */ - { 4164, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8_EXT */ - { 4189, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9 */ - { 4210, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9_EXT */ - { 4235, 0x00004000 }, /* GL_COLOR_BUFFER_BIT */ - { 4255, 0x00000C22 }, /* GL_COLOR_CLEAR_VALUE */ - { 4276, 0x00001900 }, /* GL_COLOR_INDEX */ - { 4291, 0x00001603 }, /* GL_COLOR_INDEXES */ - { 4308, 0x00000BF2 }, /* GL_COLOR_LOGIC_OP */ - { 4326, 0x00000B57 }, /* GL_COLOR_MATERIAL */ - { 4344, 0x00000B55 }, /* GL_COLOR_MATERIAL_FACE */ - { 4367, 0x00000B56 }, /* GL_COLOR_MATERIAL_PARAMETER */ - { 4395, 0x000080B1 }, /* GL_COLOR_MATRIX */ - { 4411, 0x000080B1 }, /* GL_COLOR_MATRIX_SGI */ - { 4431, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH */ - { 4459, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH_SGI */ - { 4491, 0x00008458 }, /* GL_COLOR_SUM */ - { 4504, 0x00008458 }, /* GL_COLOR_SUM_ARB */ - { 4521, 0x000080D0 }, /* GL_COLOR_TABLE */ - { 4536, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE */ - { 4562, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_EXT */ - { 4592, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_SGI */ - { 4622, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS */ - { 4642, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS_SGI */ - { 4666, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE */ - { 4691, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_EXT */ - { 4720, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_SGI */ - { 4749, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT */ - { 4771, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_EXT */ - { 4797, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_SGI */ - { 4823, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE */ - { 4849, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_EXT */ - { 4879, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_SGI */ - { 4909, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE */ - { 4939, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_EXT */ - { 4973, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_SGI */ - { 5007, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE */ - { 5037, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_EXT */ - { 5071, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_SGI */ - { 5105, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE */ - { 5129, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_EXT */ - { 5157, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_SGI */ - { 5185, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE */ - { 5206, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE_SGI */ - { 5231, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH */ - { 5252, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_EXT */ - { 5277, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_SGI */ - { 5302, 0x00000C23 }, /* GL_COLOR_WRITEMASK */ - { 5321, 0x00008570 }, /* GL_COMBINE */ - { 5332, 0x00008503 }, /* GL_COMBINE4 */ - { 5344, 0x00008572 }, /* GL_COMBINE_ALPHA */ - { 5361, 0x00008572 }, /* GL_COMBINE_ALPHA_ARB */ - { 5382, 0x00008572 }, /* GL_COMBINE_ALPHA_EXT */ - { 5403, 0x00008570 }, /* GL_COMBINE_ARB */ - { 5418, 0x00008570 }, /* GL_COMBINE_EXT */ - { 5433, 0x00008571 }, /* GL_COMBINE_RGB */ - { 5448, 0x00008571 }, /* GL_COMBINE_RGB_ARB */ - { 5467, 0x00008571 }, /* GL_COMBINE_RGB_EXT */ - { 5486, 0x0000884E }, /* GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT */ - { 5522, 0x0000884E }, /* GL_COMPARE_REF_TO_TEXTURE */ - { 5548, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE */ - { 5572, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE_ARB */ - { 5600, 0x00001300 }, /* GL_COMPILE */ - { 5611, 0x00001301 }, /* GL_COMPILE_AND_EXECUTE */ - { 5634, 0x00008B81 }, /* GL_COMPILE_STATUS */ - { 5652, 0x000084E9 }, /* GL_COMPRESSED_ALPHA */ - { 5672, 0x000084E9 }, /* GL_COMPRESSED_ALPHA_ARB */ - { 5696, 0x000084EC }, /* GL_COMPRESSED_INTENSITY */ - { 5720, 0x000084EC }, /* GL_COMPRESSED_INTENSITY_ARB */ - { 5748, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE */ - { 5772, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA */ - { 5802, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA_ARB */ - { 5836, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE_ARB */ - { 5864, 0x00008225 }, /* GL_COMPRESSED_RED */ - { 5882, 0x00008226 }, /* GL_COMPRESSED_RG */ - { 5899, 0x000084ED }, /* GL_COMPRESSED_RGB */ - { 5917, 0x000084EE }, /* GL_COMPRESSED_RGBA */ - { 5936, 0x000084EE }, /* GL_COMPRESSED_RGBA_ARB */ - { 5959, 0x000086B1 }, /* GL_COMPRESSED_RGBA_FXT1_3DFX */ - { 5988, 0x000083F1 }, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */ - { 6021, 0x000083F2 }, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */ - { 6054, 0x000083F3 }, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */ - { 6087, 0x000084ED }, /* GL_COMPRESSED_RGB_ARB */ - { 6109, 0x000086B0 }, /* GL_COMPRESSED_RGB_FXT1_3DFX */ - { 6137, 0x000083F0 }, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */ - { 6169, 0x00008C4A }, /* GL_COMPRESSED_SLUMINANCE */ - { 6194, 0x00008C4B }, /* GL_COMPRESSED_SLUMINANCE_ALPHA */ - { 6225, 0x00008C48 }, /* GL_COMPRESSED_SRGB */ - { 6244, 0x00008C49 }, /* GL_COMPRESSED_SRGB_ALPHA */ - { 6269, 0x000086A3 }, /* GL_COMPRESSED_TEXTURE_FORMATS */ - { 6299, 0x0000911C }, /* GL_CONDITION_SATISFIED */ - { 6322, 0x00008576 }, /* GL_CONSTANT */ - { 6334, 0x00008003 }, /* GL_CONSTANT_ALPHA */ - { 6352, 0x00008003 }, /* GL_CONSTANT_ALPHA_EXT */ - { 6374, 0x00008576 }, /* GL_CONSTANT_ARB */ - { 6390, 0x00001207 }, /* GL_CONSTANT_ATTENUATION */ - { 6414, 0x00008151 }, /* GL_CONSTANT_BORDER_HP */ - { 6436, 0x00008001 }, /* GL_CONSTANT_COLOR */ - { 6454, 0x00008001 }, /* GL_CONSTANT_COLOR_EXT */ - { 6476, 0x00008576 }, /* GL_CONSTANT_EXT */ - { 6492, 0x00000002 }, /* GL_CONTEXT_COMPATIBILITY_PROFILE_BIT */ - { 6529, 0x00000001 }, /* GL_CONTEXT_CORE_PROFILE_BIT */ - { 6557, 0x0000821E }, /* GL_CONTEXT_FLAGS */ - { 6574, 0x00000001 }, /* GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT */ - { 6613, 0x00009126 }, /* GL_CONTEXT_PROFILE_MASK */ - { 6637, 0x00008010 }, /* GL_CONVOLUTION_1D */ - { 6655, 0x00008011 }, /* GL_CONVOLUTION_2D */ - { 6673, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR */ - { 6701, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR_HP */ - { 6732, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE */ - { 6759, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE_EXT */ - { 6790, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS */ - { 6817, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS_EXT */ - { 6848, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE */ - { 6876, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE_EXT */ - { 6908, 0x00008017 }, /* GL_CONVOLUTION_FORMAT */ - { 6930, 0x00008017 }, /* GL_CONVOLUTION_FORMAT_EXT */ - { 6956, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT */ - { 6978, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT_EXT */ - { 7004, 0x00008018 }, /* GL_CONVOLUTION_WIDTH */ - { 7025, 0x00008018 }, /* GL_CONVOLUTION_WIDTH_EXT */ - { 7050, 0x00008862 }, /* GL_COORD_REPLACE */ - { 7067, 0x00008862 }, /* GL_COORD_REPLACE_ARB */ - { 7088, 0x00008862 }, /* GL_COORD_REPLACE_NV */ - { 7108, 0x00008862 }, /* GL_COORD_REPLACE_OES */ - { 7129, 0x00001503 }, /* GL_COPY */ - { 7137, 0x0000150C }, /* GL_COPY_INVERTED */ - { 7154, 0x00000706 }, /* GL_COPY_PIXEL_TOKEN */ - { 7174, 0x00008F36 }, /* GL_COPY_READ_BUFFER */ - { 7194, 0x00008F37 }, /* GL_COPY_WRITE_BUFFER */ - { 7215, 0x00000B44 }, /* GL_CULL_FACE */ - { 7228, 0x00000B45 }, /* GL_CULL_FACE_MODE */ - { 7246, 0x000081AA }, /* GL_CULL_VERTEX_EXT */ - { 7265, 0x000081AC }, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ - { 7297, 0x000081AB }, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ - { 7332, 0x00008626 }, /* GL_CURRENT_ATTRIB_NV */ - { 7353, 0x00000001 }, /* GL_CURRENT_BIT */ - { 7368, 0x00000B00 }, /* GL_CURRENT_COLOR */ - { 7385, 0x00008453 }, /* GL_CURRENT_FOG_COORD */ - { 7406, 0x00008453 }, /* GL_CURRENT_FOG_COORDINATE */ - { 7432, 0x00000B01 }, /* GL_CURRENT_INDEX */ - { 7449, 0x00008641 }, /* GL_CURRENT_MATRIX_ARB */ - { 7471, 0x00008845 }, /* GL_CURRENT_MATRIX_INDEX_ARB */ - { 7499, 0x00008641 }, /* GL_CURRENT_MATRIX_NV */ - { 7520, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ - { 7554, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_NV */ - { 7587, 0x00000B02 }, /* GL_CURRENT_NORMAL */ - { 7605, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_ARB */ - { 7635, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_OES */ - { 7665, 0x00008B8D }, /* GL_CURRENT_PROGRAM */ - { 7684, 0x00008865 }, /* GL_CURRENT_QUERY */ - { 7701, 0x00008865 }, /* GL_CURRENT_QUERY_ARB */ - { 7722, 0x00000B04 }, /* GL_CURRENT_RASTER_COLOR */ - { 7746, 0x00000B09 }, /* GL_CURRENT_RASTER_DISTANCE */ - { 7773, 0x00000B05 }, /* GL_CURRENT_RASTER_INDEX */ - { 7797, 0x00000B07 }, /* GL_CURRENT_RASTER_POSITION */ - { 7824, 0x00000B08 }, /* GL_CURRENT_RASTER_POSITION_VALID */ - { 7857, 0x0000845F }, /* GL_CURRENT_RASTER_SECONDARY_COLOR */ - { 7891, 0x00000B06 }, /* GL_CURRENT_RASTER_TEXTURE_COORDS */ - { 7924, 0x00008459 }, /* GL_CURRENT_SECONDARY_COLOR */ - { 7951, 0x00000B03 }, /* GL_CURRENT_TEXTURE_COORDS */ - { 7977, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB */ - { 8002, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB_ARB */ - { 8031, 0x000086A8 }, /* GL_CURRENT_WEIGHT_ARB */ - { 8053, 0x00000900 }, /* GL_CW */ - { 8059, 0x0000875B }, /* GL_DEBUG_ASSERT_MESA */ - { 8080, 0x00008759 }, /* GL_DEBUG_OBJECT_MESA */ - { 8101, 0x0000875A }, /* GL_DEBUG_PRINT_MESA */ - { 8121, 0x00002101 }, /* GL_DECAL */ - { 8130, 0x00001E03 }, /* GL_DECR */ - { 8138, 0x00008508 }, /* GL_DECR_WRAP */ - { 8151, 0x00008508 }, /* GL_DECR_WRAP_EXT */ - { 8168, 0x00008B80 }, /* GL_DELETE_STATUS */ - { 8185, 0x00001801 }, /* GL_DEPTH */ - { 8194, 0x000088F0 }, /* GL_DEPTH24_STENCIL8 */ - { 8214, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_EXT */ - { 8238, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_OES */ - { 8262, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT */ - { 8282, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_EXT */ - { 8306, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_OES */ - { 8330, 0x00000D1F }, /* GL_DEPTH_BIAS */ - { 8344, 0x00000D56 }, /* GL_DEPTH_BITS */ - { 8358, 0x00008891 }, /* GL_DEPTH_BOUNDS_EXT */ - { 8378, 0x00008890 }, /* GL_DEPTH_BOUNDS_TEST_EXT */ - { 8403, 0x00008223 }, /* GL_DEPTH_BUFFER */ - { 8419, 0x00000100 }, /* GL_DEPTH_BUFFER_BIT */ - { 8439, 0x0000864F }, /* GL_DEPTH_CLAMP */ - { 8454, 0x0000864F }, /* GL_DEPTH_CLAMP_NV */ - { 8472, 0x00000B73 }, /* GL_DEPTH_CLEAR_VALUE */ - { 8493, 0x00001902 }, /* GL_DEPTH_COMPONENT */ - { 8512, 0x000081A5 }, /* GL_DEPTH_COMPONENT16 */ - { 8533, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_ARB */ - { 8558, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_OES */ - { 8583, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_SGIX */ - { 8609, 0x000081A6 }, /* GL_DEPTH_COMPONENT24 */ - { 8630, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_ARB */ - { 8655, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_OES */ - { 8680, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_SGIX */ - { 8706, 0x000081A7 }, /* GL_DEPTH_COMPONENT32 */ - { 8727, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_ARB */ - { 8752, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_OES */ - { 8777, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_SGIX */ - { 8803, 0x00000B74 }, /* GL_DEPTH_FUNC */ - { 8817, 0x00000B70 }, /* GL_DEPTH_RANGE */ - { 8832, 0x00000D1E }, /* GL_DEPTH_SCALE */ - { 8847, 0x000084F9 }, /* GL_DEPTH_STENCIL */ - { 8864, 0x0000821A }, /* GL_DEPTH_STENCIL_ATTACHMENT */ - { 8892, 0x000084F9 }, /* GL_DEPTH_STENCIL_EXT */ - { 8913, 0x000084F9 }, /* GL_DEPTH_STENCIL_NV */ - { 8933, 0x000084F9 }, /* GL_DEPTH_STENCIL_OES */ - { 8954, 0x0000886F }, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ - { 8982, 0x0000886E }, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ - { 9010, 0x00000B71 }, /* GL_DEPTH_TEST */ - { 9024, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE */ - { 9046, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE_ARB */ - { 9072, 0x00000B72 }, /* GL_DEPTH_WRITEMASK */ - { 9091, 0x00001201 }, /* GL_DIFFUSE */ - { 9102, 0x00000BD0 }, /* GL_DITHER */ - { 9112, 0x00000A02 }, /* GL_DOMAIN */ - { 9122, 0x00001100 }, /* GL_DONT_CARE */ - { 9135, 0x000086AE }, /* GL_DOT3_RGB */ - { 9147, 0x000086AF }, /* GL_DOT3_RGBA */ - { 9160, 0x000086AF }, /* GL_DOT3_RGBA_ARB */ - { 9177, 0x00008741 }, /* GL_DOT3_RGBA_EXT */ - { 9194, 0x000086AE }, /* GL_DOT3_RGB_ARB */ - { 9210, 0x00008740 }, /* GL_DOT3_RGB_EXT */ - { 9226, 0x0000140A }, /* GL_DOUBLE */ - { 9236, 0x00000C32 }, /* GL_DOUBLEBUFFER */ - { 9252, 0x00000C01 }, /* GL_DRAW_BUFFER */ - { 9267, 0x00008825 }, /* GL_DRAW_BUFFER0 */ - { 9283, 0x00008825 }, /* GL_DRAW_BUFFER0_ARB */ - { 9303, 0x00008825 }, /* GL_DRAW_BUFFER0_ATI */ - { 9323, 0x00008826 }, /* GL_DRAW_BUFFER1 */ - { 9339, 0x0000882F }, /* GL_DRAW_BUFFER10 */ - { 9356, 0x0000882F }, /* GL_DRAW_BUFFER10_ARB */ - { 9377, 0x0000882F }, /* GL_DRAW_BUFFER10_ATI */ - { 9398, 0x00008830 }, /* GL_DRAW_BUFFER11 */ - { 9415, 0x00008830 }, /* GL_DRAW_BUFFER11_ARB */ - { 9436, 0x00008830 }, /* GL_DRAW_BUFFER11_ATI */ - { 9457, 0x00008831 }, /* GL_DRAW_BUFFER12 */ - { 9474, 0x00008831 }, /* GL_DRAW_BUFFER12_ARB */ - { 9495, 0x00008831 }, /* GL_DRAW_BUFFER12_ATI */ - { 9516, 0x00008832 }, /* GL_DRAW_BUFFER13 */ - { 9533, 0x00008832 }, /* GL_DRAW_BUFFER13_ARB */ - { 9554, 0x00008832 }, /* GL_DRAW_BUFFER13_ATI */ - { 9575, 0x00008833 }, /* GL_DRAW_BUFFER14 */ - { 9592, 0x00008833 }, /* GL_DRAW_BUFFER14_ARB */ - { 9613, 0x00008833 }, /* GL_DRAW_BUFFER14_ATI */ - { 9634, 0x00008834 }, /* GL_DRAW_BUFFER15 */ - { 9651, 0x00008834 }, /* GL_DRAW_BUFFER15_ARB */ - { 9672, 0x00008834 }, /* GL_DRAW_BUFFER15_ATI */ - { 9693, 0x00008826 }, /* GL_DRAW_BUFFER1_ARB */ - { 9713, 0x00008826 }, /* GL_DRAW_BUFFER1_ATI */ - { 9733, 0x00008827 }, /* GL_DRAW_BUFFER2 */ - { 9749, 0x00008827 }, /* GL_DRAW_BUFFER2_ARB */ - { 9769, 0x00008827 }, /* GL_DRAW_BUFFER2_ATI */ - { 9789, 0x00008828 }, /* GL_DRAW_BUFFER3 */ - { 9805, 0x00008828 }, /* GL_DRAW_BUFFER3_ARB */ - { 9825, 0x00008828 }, /* GL_DRAW_BUFFER3_ATI */ - { 9845, 0x00008829 }, /* GL_DRAW_BUFFER4 */ - { 9861, 0x00008829 }, /* GL_DRAW_BUFFER4_ARB */ - { 9881, 0x00008829 }, /* GL_DRAW_BUFFER4_ATI */ - { 9901, 0x0000882A }, /* GL_DRAW_BUFFER5 */ - { 9917, 0x0000882A }, /* GL_DRAW_BUFFER5_ARB */ - { 9937, 0x0000882A }, /* GL_DRAW_BUFFER5_ATI */ - { 9957, 0x0000882B }, /* GL_DRAW_BUFFER6 */ - { 9973, 0x0000882B }, /* GL_DRAW_BUFFER6_ARB */ - { 9993, 0x0000882B }, /* GL_DRAW_BUFFER6_ATI */ - { 10013, 0x0000882C }, /* GL_DRAW_BUFFER7 */ - { 10029, 0x0000882C }, /* GL_DRAW_BUFFER7_ARB */ - { 10049, 0x0000882C }, /* GL_DRAW_BUFFER7_ATI */ - { 10069, 0x0000882D }, /* GL_DRAW_BUFFER8 */ - { 10085, 0x0000882D }, /* GL_DRAW_BUFFER8_ARB */ - { 10105, 0x0000882D }, /* GL_DRAW_BUFFER8_ATI */ - { 10125, 0x0000882E }, /* GL_DRAW_BUFFER9 */ - { 10141, 0x0000882E }, /* GL_DRAW_BUFFER9_ARB */ - { 10161, 0x0000882E }, /* GL_DRAW_BUFFER9_ATI */ - { 10181, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER */ - { 10201, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING */ - { 10229, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */ - { 10261, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER_EXT */ - { 10285, 0x00000705 }, /* GL_DRAW_PIXEL_TOKEN */ - { 10305, 0x00000304 }, /* GL_DST_ALPHA */ - { 10318, 0x00000306 }, /* GL_DST_COLOR */ - { 10331, 0x0000877A }, /* GL_DU8DV8_ATI */ - { 10345, 0x00008779 }, /* GL_DUDV_ATI */ - { 10357, 0x000088EA }, /* GL_DYNAMIC_COPY */ - { 10373, 0x000088EA }, /* GL_DYNAMIC_COPY_ARB */ - { 10393, 0x000088E8 }, /* GL_DYNAMIC_DRAW */ - { 10409, 0x000088E8 }, /* GL_DYNAMIC_DRAW_ARB */ - { 10429, 0x000088E9 }, /* GL_DYNAMIC_READ */ - { 10445, 0x000088E9 }, /* GL_DYNAMIC_READ_ARB */ - { 10465, 0x00000B43 }, /* GL_EDGE_FLAG */ - { 10478, 0x00008079 }, /* GL_EDGE_FLAG_ARRAY */ - { 10497, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ - { 10531, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB */ - { 10569, 0x00008093 }, /* GL_EDGE_FLAG_ARRAY_POINTER */ - { 10596, 0x0000808C }, /* GL_EDGE_FLAG_ARRAY_STRIDE */ - { 10622, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER */ - { 10646, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ - { 10678, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB */ - { 10714, 0x00001600 }, /* GL_EMISSION */ - { 10726, 0x00002000 }, /* GL_ENABLE_BIT */ - { 10740, 0x00000202 }, /* GL_EQUAL */ - { 10749, 0x00001509 }, /* GL_EQUIV */ - { 10758, 0x00010000 }, /* GL_EVAL_BIT */ - { 10770, 0x00000800 }, /* GL_EXP */ - { 10777, 0x00000801 }, /* GL_EXP2 */ - { 10785, 0x00001F03 }, /* GL_EXTENSIONS */ - { 10799, 0x00002400 }, /* GL_EYE_LINEAR */ - { 10813, 0x00002502 }, /* GL_EYE_PLANE */ - { 10826, 0x0000855C }, /* GL_EYE_PLANE_ABSOLUTE_NV */ - { 10851, 0x0000855B }, /* GL_EYE_RADIAL_NV */ - { 10868, 0x00000000 }, /* GL_FALSE */ - { 10877, 0x00001101 }, /* GL_FASTEST */ - { 10888, 0x00001C01 }, /* GL_FEEDBACK */ - { 10900, 0x00000DF0 }, /* GL_FEEDBACK_BUFFER_POINTER */ - { 10927, 0x00000DF1 }, /* GL_FEEDBACK_BUFFER_SIZE */ - { 10951, 0x00000DF2 }, /* GL_FEEDBACK_BUFFER_TYPE */ - { 10975, 0x00001B02 }, /* GL_FILL */ - { 10983, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION */ - { 11010, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION_EXT */ - { 11041, 0x0000140C }, /* GL_FIXED */ - { 11050, 0x0000140C }, /* GL_FIXED_OES */ - { 11063, 0x0000891D }, /* GL_FIXED_ONLY */ - { 11077, 0x00001D00 }, /* GL_FLAT */ - { 11085, 0x00001406 }, /* GL_FLOAT */ - { 11094, 0x00008B5A }, /* GL_FLOAT_MAT2 */ - { 11108, 0x00008B5A }, /* GL_FLOAT_MAT2_ARB */ - { 11126, 0x00008B65 }, /* GL_FLOAT_MAT2x3 */ - { 11142, 0x00008B66 }, /* GL_FLOAT_MAT2x4 */ - { 11158, 0x00008B5B }, /* GL_FLOAT_MAT3 */ - { 11172, 0x00008B5B }, /* GL_FLOAT_MAT3_ARB */ - { 11190, 0x00008B67 }, /* GL_FLOAT_MAT3x2 */ - { 11206, 0x00008B68 }, /* GL_FLOAT_MAT3x4 */ - { 11222, 0x00008B5C }, /* GL_FLOAT_MAT4 */ - { 11236, 0x00008B5C }, /* GL_FLOAT_MAT4_ARB */ - { 11254, 0x00008B69 }, /* GL_FLOAT_MAT4x2 */ - { 11270, 0x00008B6A }, /* GL_FLOAT_MAT4x3 */ - { 11286, 0x00008B50 }, /* GL_FLOAT_VEC2 */ - { 11300, 0x00008B50 }, /* GL_FLOAT_VEC2_ARB */ - { 11318, 0x00008B51 }, /* GL_FLOAT_VEC3 */ - { 11332, 0x00008B51 }, /* GL_FLOAT_VEC3_ARB */ - { 11350, 0x00008B52 }, /* GL_FLOAT_VEC4 */ - { 11364, 0x00008B52 }, /* GL_FLOAT_VEC4_ARB */ - { 11382, 0x00000B60 }, /* GL_FOG */ - { 11389, 0x00000080 }, /* GL_FOG_BIT */ - { 11400, 0x00000B66 }, /* GL_FOG_COLOR */ - { 11413, 0x00008451 }, /* GL_FOG_COORD */ - { 11426, 0x00008451 }, /* GL_FOG_COORDINATE */ - { 11444, 0x00008457 }, /* GL_FOG_COORDINATE_ARRAY */ - { 11468, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ - { 11507, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB */ - { 11550, 0x00008456 }, /* GL_FOG_COORDINATE_ARRAY_POINTER */ - { 11582, 0x00008455 }, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ - { 11613, 0x00008454 }, /* GL_FOG_COORDINATE_ARRAY_TYPE */ - { 11642, 0x00008450 }, /* GL_FOG_COORDINATE_SOURCE */ - { 11667, 0x00008457 }, /* GL_FOG_COORD_ARRAY */ - { 11686, 0x0000889D }, /* GL_FOG_COORD_ARRAY_BUFFER_BINDING */ - { 11720, 0x00008456 }, /* GL_FOG_COORD_ARRAY_POINTER */ - { 11747, 0x00008455 }, /* GL_FOG_COORD_ARRAY_STRIDE */ - { 11773, 0x00008454 }, /* GL_FOG_COORD_ARRAY_TYPE */ - { 11797, 0x00008450 }, /* GL_FOG_COORD_SRC */ - { 11814, 0x00000B62 }, /* GL_FOG_DENSITY */ - { 11829, 0x0000855A }, /* GL_FOG_DISTANCE_MODE_NV */ - { 11853, 0x00000B64 }, /* GL_FOG_END */ - { 11864, 0x00000C54 }, /* GL_FOG_HINT */ - { 11876, 0x00000B61 }, /* GL_FOG_INDEX */ - { 11889, 0x00000B65 }, /* GL_FOG_MODE */ - { 11901, 0x00008198 }, /* GL_FOG_OFFSET_SGIX */ - { 11920, 0x00008199 }, /* GL_FOG_OFFSET_VALUE_SGIX */ - { 11945, 0x00000B63 }, /* GL_FOG_START */ - { 11958, 0x00008452 }, /* GL_FRAGMENT_DEPTH */ - { 11976, 0x00008804 }, /* GL_FRAGMENT_PROGRAM_ARB */ - { 12000, 0x00008B30 }, /* GL_FRAGMENT_SHADER */ - { 12019, 0x00008B30 }, /* GL_FRAGMENT_SHADER_ARB */ - { 12042, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ - { 12077, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES */ - { 12116, 0x00008D40 }, /* GL_FRAMEBUFFER */ - { 12131, 0x00008215 }, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ - { 12168, 0x00008214 }, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ - { 12204, 0x00008210 }, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ - { 12245, 0x00008211 }, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ - { 12286, 0x00008216 }, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ - { 12323, 0x00008213 }, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ - { 12360, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */ - { 12394, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB */ - { 12432, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ - { 12470, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */ - { 12512, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES */ - { 12554, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ - { 12592, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */ - { 12634, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES */ - { 12676, 0x00008212 }, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ - { 12711, 0x00008217 }, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ - { 12750, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */ - { 12799, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES */ - { 12848, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ - { 12896, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */ - { 12948, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES */ - { 13000, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ - { 13040, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */ - { 13084, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ - { 13124, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */ - { 13168, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES */ - { 13212, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING */ - { 13235, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_EXT */ - { 13262, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_OES */ - { 13289, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE */ - { 13313, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_EXT */ - { 13341, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_OES */ - { 13369, 0x00008218 }, /* GL_FRAMEBUFFER_DEFAULT */ - { 13392, 0x00008D40 }, /* GL_FRAMEBUFFER_EXT */ - { 13411, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ - { 13448, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */ - { 13489, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES */ - { 13530, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS */ - { 13567, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ - { 13608, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES */ - { 13649, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ - { 13687, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */ - { 13729, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES */ - { 13771, 0x00008CD8 }, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ - { 13822, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ - { 13860, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES */ - { 13898, 0x00008DA9 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */ - { 13940, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */ - { 13980, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB */ - { 14024, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ - { 14069, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */ - { 14118, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES */ - { 14167, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ - { 14205, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT */ - { 14247, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ - { 14285, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */ - { 14327, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES */ - { 14369, 0x00008D40 }, /* GL_FRAMEBUFFER_OES */ - { 14388, 0x00008CDE }, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ - { 14420, 0x00008219 }, /* GL_FRAMEBUFFER_UNDEFINED */ - { 14445, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED */ - { 14472, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */ - { 14503, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_OES */ - { 14534, 0x00000404 }, /* GL_FRONT */ - { 14543, 0x00000408 }, /* GL_FRONT_AND_BACK */ - { 14561, 0x00000B46 }, /* GL_FRONT_FACE */ - { 14575, 0x00000400 }, /* GL_FRONT_LEFT */ - { 14589, 0x00000401 }, /* GL_FRONT_RIGHT */ - { 14604, 0x00008006 }, /* GL_FUNC_ADD */ - { 14616, 0x00008006 }, /* GL_FUNC_ADD_EXT */ - { 14632, 0x00008006 }, /* GL_FUNC_ADD_OES */ - { 14648, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT */ - { 14673, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_EXT */ - { 14702, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_OES */ - { 14731, 0x0000800A }, /* GL_FUNC_SUBTRACT */ - { 14748, 0x0000800A }, /* GL_FUNC_SUBTRACT_EXT */ - { 14769, 0x0000800A }, /* GL_FUNC_SUBTRACT_OES */ - { 14790, 0x00008191 }, /* GL_GENERATE_MIPMAP */ - { 14809, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT */ - { 14833, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT_SGIS */ - { 14862, 0x00008191 }, /* GL_GENERATE_MIPMAP_SGIS */ - { 14886, 0x00008917 }, /* GL_GEOMETRY_INPUT_TYPE */ - { 14909, 0x00008DDB }, /* GL_GEOMETRY_INPUT_TYPE_ARB */ - { 14936, 0x00008918 }, /* GL_GEOMETRY_OUTPUT_TYPE */ - { 14960, 0x00008DDC }, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */ - { 14988, 0x00008DD9 }, /* GL_GEOMETRY_SHADER */ - { 15007, 0x00008DD9 }, /* GL_GEOMETRY_SHADER_ARB */ - { 15030, 0x00008916 }, /* GL_GEOMETRY_VERTICES_OUT */ - { 15055, 0x00008DDA }, /* GL_GEOMETRY_VERTICES_OUT_ARB */ - { 15084, 0x00000206 }, /* GL_GEQUAL */ - { 15094, 0x00000204 }, /* GL_GREATER */ - { 15105, 0x00001904 }, /* GL_GREEN */ - { 15114, 0x00000D19 }, /* GL_GREEN_BIAS */ - { 15128, 0x00000D53 }, /* GL_GREEN_BITS */ - { 15142, 0x00008D95 }, /* GL_GREEN_INTEGER */ - { 15159, 0x00008D95 }, /* GL_GREEN_INTEGER_EXT */ - { 15180, 0x00000D18 }, /* GL_GREEN_SCALE */ - { 15195, 0x0000140B }, /* GL_HALF_FLOAT */ - { 15209, 0x00008D61 }, /* GL_HALF_FLOAT_OES */ - { 15227, 0x00008DF2 }, /* GL_HIGH_FLOAT */ - { 15241, 0x00008DF5 }, /* GL_HIGH_INT */ - { 15253, 0x00008000 }, /* GL_HINT_BIT */ - { 15265, 0x00008024 }, /* GL_HISTOGRAM */ - { 15278, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE */ - { 15302, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE_EXT */ - { 15330, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE */ - { 15353, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE_EXT */ - { 15380, 0x00008024 }, /* GL_HISTOGRAM_EXT */ - { 15397, 0x00008027 }, /* GL_HISTOGRAM_FORMAT */ - { 15417, 0x00008027 }, /* GL_HISTOGRAM_FORMAT_EXT */ - { 15441, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE */ - { 15465, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE_EXT */ - { 15493, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE */ - { 15521, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE_EXT */ - { 15553, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE */ - { 15575, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE_EXT */ - { 15601, 0x0000802D }, /* GL_HISTOGRAM_SINK */ - { 15619, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */ - { 15641, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */ - { 15660, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */ - { 15683, 0x0000862A }, /* GL_IDENTITY_NV */ - { 15698, 0x00008150 }, /* GL_IGNORE_BORDER_HP */ - { 15718, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */ - { 15754, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */ - { 15794, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */ - { 15828, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */ - { 15866, 0x00001E02 }, /* GL_INCR */ - { 15874, 0x00008507 }, /* GL_INCR_WRAP */ - { 15887, 0x00008507 }, /* GL_INCR_WRAP_EXT */ - { 15904, 0x00008222 }, /* GL_INDEX */ - { 15913, 0x00008077 }, /* GL_INDEX_ARRAY */ - { 15928, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */ - { 15958, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */ - { 15992, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */ - { 16015, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */ - { 16037, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */ - { 16057, 0x00000D51 }, /* GL_INDEX_BITS */ - { 16071, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */ - { 16092, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */ - { 16110, 0x00000C30 }, /* GL_INDEX_MODE */ - { 16124, 0x00000D13 }, /* GL_INDEX_OFFSET */ - { 16140, 0x00000D12 }, /* GL_INDEX_SHIFT */ - { 16155, 0x00000C21 }, /* GL_INDEX_WRITEMASK */ - { 16174, 0x00008B84 }, /* GL_INFO_LOG_LENGTH */ - { 16193, 0x00001404 }, /* GL_INT */ - { 16200, 0x00008049 }, /* GL_INTENSITY */ - { 16213, 0x0000804C }, /* GL_INTENSITY12 */ - { 16228, 0x0000804C }, /* GL_INTENSITY12_EXT */ - { 16247, 0x0000804D }, /* GL_INTENSITY16 */ - { 16262, 0x00008D8B }, /* GL_INTENSITY16I_EXT */ - { 16282, 0x00008D79 }, /* GL_INTENSITY16UI_EXT */ - { 16303, 0x0000804D }, /* GL_INTENSITY16_EXT */ - { 16322, 0x00008D85 }, /* GL_INTENSITY32I_EXT */ - { 16342, 0x00008D73 }, /* GL_INTENSITY32UI_EXT */ - { 16363, 0x0000804A }, /* GL_INTENSITY4 */ - { 16377, 0x0000804A }, /* GL_INTENSITY4_EXT */ - { 16395, 0x0000804B }, /* GL_INTENSITY8 */ - { 16409, 0x00008D91 }, /* GL_INTENSITY8I_EXT */ - { 16428, 0x00008D7F }, /* GL_INTENSITY8UI_EXT */ - { 16448, 0x0000804B }, /* GL_INTENSITY8_EXT */ - { 16466, 0x00008049 }, /* GL_INTENSITY_EXT */ - { 16483, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS */ - { 16506, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS_EXT */ - { 16533, 0x00008575 }, /* GL_INTERPOLATE */ - { 16548, 0x00008575 }, /* GL_INTERPOLATE_ARB */ - { 16567, 0x00008575 }, /* GL_INTERPOLATE_EXT */ - { 16586, 0x00008DF7 }, /* GL_INT_10_10_10_2_OES */ - { 16608, 0x00008DC9 }, /* GL_INT_SAMPLER_1D */ - { 16626, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY */ - { 16650, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY_EXT */ - { 16678, 0x00008DC9 }, /* GL_INT_SAMPLER_1D_EXT */ - { 16700, 0x00008DCA }, /* GL_INT_SAMPLER_2D */ - { 16718, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY */ - { 16742, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY_EXT */ - { 16770, 0x00008DCA }, /* GL_INT_SAMPLER_2D_EXT */ - { 16792, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT */ - { 16815, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT_EXT */ - { 16842, 0x00008DCB }, /* GL_INT_SAMPLER_3D */ - { 16860, 0x00008DCB }, /* GL_INT_SAMPLER_3D_EXT */ - { 16882, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER */ - { 16904, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER_EXT */ - { 16930, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE */ - { 16950, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE_EXT */ - { 16974, 0x00008B53 }, /* GL_INT_VEC2 */ - { 16986, 0x00008B53 }, /* GL_INT_VEC2_ARB */ - { 17002, 0x00008B54 }, /* GL_INT_VEC3 */ - { 17014, 0x00008B54 }, /* GL_INT_VEC3_ARB */ - { 17030, 0x00008B55 }, /* GL_INT_VEC4 */ - { 17042, 0x00008B55 }, /* GL_INT_VEC4_ARB */ - { 17058, 0x00000500 }, /* GL_INVALID_ENUM */ - { 17074, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION */ - { 17107, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */ - { 17144, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_OES */ - { 17181, 0x00000502 }, /* GL_INVALID_OPERATION */ - { 17202, 0x00000501 }, /* GL_INVALID_VALUE */ - { 17219, 0x0000862B }, /* GL_INVERSE_NV */ - { 17233, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */ - { 17257, 0x0000150A }, /* GL_INVERT */ - { 17267, 0x00001E00 }, /* GL_KEEP */ - { 17275, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION */ - { 17301, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION_EXT */ - { 17331, 0x00000406 }, /* GL_LEFT */ - { 17339, 0x00000203 }, /* GL_LEQUAL */ - { 17349, 0x00000201 }, /* GL_LESS */ - { 17357, 0x00004000 }, /* GL_LIGHT0 */ - { 17367, 0x00004001 }, /* GL_LIGHT1 */ - { 17377, 0x00004002 }, /* GL_LIGHT2 */ - { 17387, 0x00004003 }, /* GL_LIGHT3 */ - { 17397, 0x00004004 }, /* GL_LIGHT4 */ - { 17407, 0x00004005 }, /* GL_LIGHT5 */ - { 17417, 0x00004006 }, /* GL_LIGHT6 */ - { 17427, 0x00004007 }, /* GL_LIGHT7 */ - { 17437, 0x00000B50 }, /* GL_LIGHTING */ - { 17449, 0x00000040 }, /* GL_LIGHTING_BIT */ - { 17465, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */ - { 17488, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */ - { 17517, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */ - { 17550, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ - { 17578, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */ - { 17602, 0x00001B01 }, /* GL_LINE */ - { 17610, 0x00002601 }, /* GL_LINEAR */ - { 17620, 0x00001208 }, /* GL_LINEAR_ATTENUATION */ - { 17642, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ - { 17672, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ - { 17703, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */ - { 17727, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */ - { 17752, 0x00000001 }, /* GL_LINES */ - { 17761, 0x0000000A }, /* GL_LINES_ADJACENCY */ - { 17780, 0x0000000A }, /* GL_LINES_ADJACENCY_ARB */ - { 17803, 0x00000004 }, /* GL_LINE_BIT */ - { 17815, 0x00000002 }, /* GL_LINE_LOOP */ - { 17828, 0x00000707 }, /* GL_LINE_RESET_TOKEN */ - { 17848, 0x00000B20 }, /* GL_LINE_SMOOTH */ - { 17863, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */ - { 17883, 0x00000B24 }, /* GL_LINE_STIPPLE */ - { 17899, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */ - { 17923, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */ - { 17946, 0x00000003 }, /* GL_LINE_STRIP */ - { 17960, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY */ - { 17984, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY_ARB */ - { 18012, 0x00000702 }, /* GL_LINE_TOKEN */ - { 18026, 0x00000B21 }, /* GL_LINE_WIDTH */ - { 18040, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */ - { 18066, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */ - { 18086, 0x00008B82 }, /* GL_LINK_STATUS */ - { 18101, 0x00000B32 }, /* GL_LIST_BASE */ - { 18114, 0x00020000 }, /* GL_LIST_BIT */ - { 18126, 0x00000B33 }, /* GL_LIST_INDEX */ - { 18140, 0x00000B30 }, /* GL_LIST_MODE */ - { 18153, 0x00000101 }, /* GL_LOAD */ - { 18161, 0x00000BF1 }, /* GL_LOGIC_OP */ - { 18173, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */ - { 18190, 0x00008CA1 }, /* GL_LOWER_LEFT */ - { 18204, 0x00008DF0 }, /* GL_LOW_FLOAT */ - { 18217, 0x00008DF3 }, /* GL_LOW_INT */ - { 18228, 0x00001909 }, /* GL_LUMINANCE */ - { 18241, 0x00008041 }, /* GL_LUMINANCE12 */ - { 18256, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */ - { 18279, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */ - { 18306, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */ - { 18328, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */ - { 18354, 0x00008041 }, /* GL_LUMINANCE12_EXT */ - { 18373, 0x00008042 }, /* GL_LUMINANCE16 */ - { 18388, 0x00008D8C }, /* GL_LUMINANCE16I_EXT */ - { 18408, 0x00008D7A }, /* GL_LUMINANCE16UI_EXT */ - { 18429, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */ - { 18452, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */ - { 18479, 0x00008042 }, /* GL_LUMINANCE16_EXT */ - { 18498, 0x00008D86 }, /* GL_LUMINANCE32I_EXT */ - { 18518, 0x00008D74 }, /* GL_LUMINANCE32UI_EXT */ - { 18539, 0x0000803F }, /* GL_LUMINANCE4 */ - { 18553, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */ - { 18574, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */ - { 18599, 0x0000803F }, /* GL_LUMINANCE4_EXT */ - { 18617, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */ - { 18638, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */ - { 18663, 0x00008040 }, /* GL_LUMINANCE8 */ - { 18677, 0x00008D92 }, /* GL_LUMINANCE8I_EXT */ - { 18696, 0x00008D80 }, /* GL_LUMINANCE8UI_EXT */ - { 18716, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */ - { 18737, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */ - { 18762, 0x00008040 }, /* GL_LUMINANCE8_EXT */ - { 18780, 0x0000190A }, /* GL_LUMINANCE_ALPHA */ - { 18799, 0x00008D8D }, /* GL_LUMINANCE_ALPHA16I_EXT */ - { 18825, 0x00008D7B }, /* GL_LUMINANCE_ALPHA16UI_EXT */ - { 18852, 0x00008D87 }, /* GL_LUMINANCE_ALPHA32I_EXT */ - { 18878, 0x00008D75 }, /* GL_LUMINANCE_ALPHA32UI_EXT */ - { 18905, 0x00008D93 }, /* GL_LUMINANCE_ALPHA8I_EXT */ - { 18930, 0x00008D81 }, /* GL_LUMINANCE_ALPHA8UI_EXT */ - { 18956, 0x00008D9D }, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */ - { 18987, 0x00008D9C }, /* GL_LUMINANCE_INTEGER_EXT */ - { 19012, 0x0000821B }, /* GL_MAJOR_VERSION */ - { 19029, 0x00000D90 }, /* GL_MAP1_COLOR_4 */ - { 19045, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */ - { 19065, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */ - { 19087, 0x00000D91 }, /* GL_MAP1_INDEX */ - { 19101, 0x00000D92 }, /* GL_MAP1_NORMAL */ - { 19116, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */ - { 19140, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */ - { 19164, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */ - { 19188, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */ - { 19212, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */ - { 19229, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */ - { 19246, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ - { 19274, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ - { 19303, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ - { 19332, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ - { 19361, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ - { 19390, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ - { 19419, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ - { 19448, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ - { 19476, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ - { 19504, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ - { 19532, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ - { 19560, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ - { 19588, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ - { 19616, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ - { 19644, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ - { 19672, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ - { 19700, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */ - { 19716, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */ - { 19736, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */ - { 19758, 0x00000DB1 }, /* GL_MAP2_INDEX */ - { 19772, 0x00000DB2 }, /* GL_MAP2_NORMAL */ - { 19787, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */ - { 19811, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */ - { 19835, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */ - { 19859, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */ - { 19883, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */ - { 19900, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */ - { 19917, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ - { 19945, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ - { 19974, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ - { 20003, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ - { 20032, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ - { 20061, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ - { 20090, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ - { 20119, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ - { 20147, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ - { 20175, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ - { 20203, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ - { 20231, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ - { 20259, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ - { 20287, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */ - { 20315, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ - { 20343, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ - { 20371, 0x00000D10 }, /* GL_MAP_COLOR */ - { 20384, 0x00000010 }, /* GL_MAP_FLUSH_EXPLICIT_BIT */ - { 20410, 0x00000008 }, /* GL_MAP_INVALIDATE_BUFFER_BIT */ - { 20439, 0x00000004 }, /* GL_MAP_INVALIDATE_RANGE_BIT */ - { 20467, 0x00000001 }, /* GL_MAP_READ_BIT */ - { 20483, 0x00000D11 }, /* GL_MAP_STENCIL */ - { 20498, 0x00000020 }, /* GL_MAP_UNSYNCHRONIZED_BIT */ - { 20524, 0x00000002 }, /* GL_MAP_WRITE_BIT */ - { 20541, 0x000088C0 }, /* GL_MATRIX0_ARB */ - { 20556, 0x00008630 }, /* GL_MATRIX0_NV */ - { 20570, 0x000088CA }, /* GL_MATRIX10_ARB */ - { 20586, 0x000088CB }, /* GL_MATRIX11_ARB */ - { 20602, 0x000088CC }, /* GL_MATRIX12_ARB */ - { 20618, 0x000088CD }, /* GL_MATRIX13_ARB */ - { 20634, 0x000088CE }, /* GL_MATRIX14_ARB */ - { 20650, 0x000088CF }, /* GL_MATRIX15_ARB */ - { 20666, 0x000088D0 }, /* GL_MATRIX16_ARB */ - { 20682, 0x000088D1 }, /* GL_MATRIX17_ARB */ - { 20698, 0x000088D2 }, /* GL_MATRIX18_ARB */ - { 20714, 0x000088D3 }, /* GL_MATRIX19_ARB */ - { 20730, 0x000088C1 }, /* GL_MATRIX1_ARB */ - { 20745, 0x00008631 }, /* GL_MATRIX1_NV */ - { 20759, 0x000088D4 }, /* GL_MATRIX20_ARB */ - { 20775, 0x000088D5 }, /* GL_MATRIX21_ARB */ - { 20791, 0x000088D6 }, /* GL_MATRIX22_ARB */ - { 20807, 0x000088D7 }, /* GL_MATRIX23_ARB */ - { 20823, 0x000088D8 }, /* GL_MATRIX24_ARB */ - { 20839, 0x000088D9 }, /* GL_MATRIX25_ARB */ - { 20855, 0x000088DA }, /* GL_MATRIX26_ARB */ - { 20871, 0x000088DB }, /* GL_MATRIX27_ARB */ - { 20887, 0x000088DC }, /* GL_MATRIX28_ARB */ - { 20903, 0x000088DD }, /* GL_MATRIX29_ARB */ - { 20919, 0x000088C2 }, /* GL_MATRIX2_ARB */ - { 20934, 0x00008632 }, /* GL_MATRIX2_NV */ - { 20948, 0x000088DE }, /* GL_MATRIX30_ARB */ - { 20964, 0x000088DF }, /* GL_MATRIX31_ARB */ - { 20980, 0x000088C3 }, /* GL_MATRIX3_ARB */ - { 20995, 0x00008633 }, /* GL_MATRIX3_NV */ - { 21009, 0x000088C4 }, /* GL_MATRIX4_ARB */ - { 21024, 0x00008634 }, /* GL_MATRIX4_NV */ - { 21038, 0x000088C5 }, /* GL_MATRIX5_ARB */ - { 21053, 0x00008635 }, /* GL_MATRIX5_NV */ - { 21067, 0x000088C6 }, /* GL_MATRIX6_ARB */ - { 21082, 0x00008636 }, /* GL_MATRIX6_NV */ - { 21096, 0x000088C7 }, /* GL_MATRIX7_ARB */ - { 21111, 0x00008637 }, /* GL_MATRIX7_NV */ - { 21125, 0x000088C8 }, /* GL_MATRIX8_ARB */ - { 21140, 0x000088C9 }, /* GL_MATRIX9_ARB */ - { 21155, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */ - { 21181, 0x00008B9E }, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */ - { 21222, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_OES */ - { 21248, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ - { 21282, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_OES */ - { 21316, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ - { 21347, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_OES */ - { 21378, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ - { 21411, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_OES */ - { 21444, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ - { 21475, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_OES */ - { 21506, 0x00000BA0 }, /* GL_MATRIX_MODE */ - { 21521, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */ - { 21543, 0x00008840 }, /* GL_MATRIX_PALETTE_OES */ - { 21565, 0x00008008 }, /* GL_MAX */ - { 21572, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */ - { 21595, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE_OES */ - { 21622, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS */ - { 21650, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */ - { 21682, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */ - { 21708, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ - { 21741, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ - { 21767, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - { 21801, 0x00000D32 }, /* GL_MAX_CLIP_DISTANCES */ - { 21823, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */ - { 21842, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS */ - { 21867, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */ - { 21896, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ - { 21928, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */ - { 21964, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ - { 22000, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */ - { 22040, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */ - { 22066, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */ - { 22096, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */ - { 22121, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */ - { 22150, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ - { 22179, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */ - { 22212, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES */ - { 22245, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS */ - { 22265, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */ - { 22289, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */ - { 22313, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */ - { 22337, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */ - { 22362, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */ - { 22380, 0x00008008 }, /* GL_MAX_EXT */ - { 22391, 0x00009125 }, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */ - { 22424, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ - { 22459, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */ - { 22498, 0x00008DFD }, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */ - { 22530, 0x00009123 }, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */ - { 22563, 0x00009124 }, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */ - { 22597, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */ - { 22629, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB */ - { 22665, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */ - { 22701, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB */ - { 22741, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */ - { 22781, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB */ - { 22825, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */ - { 22860, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB */ - { 22899, 0x00008DDD }, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */ - { 22938, 0x00000D31 }, /* GL_MAX_LIGHTS */ - { 22952, 0x00000B31 }, /* GL_MAX_LIST_NESTING */ - { 22972, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ - { 23010, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */ - { 23039, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */ - { 23063, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */ - { 23091, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_OES */ - { 23119, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */ - { 23142, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ - { 23179, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ - { 23215, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ - { 23242, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ - { 23271, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ - { 23305, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */ - { 23341, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ - { 23368, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ - { 23400, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ - { 23436, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ - { 23465, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ - { 23494, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */ - { 23522, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ - { 23560, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - { 23604, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - { 23647, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ - { 23681, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - { 23720, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ - { 23757, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ - { 23795, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - { 23838, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - { 23881, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ - { 23911, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ - { 23942, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET */ - { 23970, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET_EXT */ - { 24002, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ - { 24038, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ - { 24074, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */ - { 24104, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */ - { 24134, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */ - { 24168, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */ - { 24201, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE */ - { 24226, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */ - { 24255, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_OES */ - { 24284, 0x00008D57 }, /* GL_MAX_SAMPLES */ - { 24299, 0x00008D57 }, /* GL_MAX_SAMPLES_EXT */ - { 24318, 0x00009111 }, /* GL_MAX_SERVER_WAIT_TIMEOUT */ - { 24345, 0x00008504 }, /* GL_MAX_SHININESS_NV */ - { 24365, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */ - { 24389, 0x00008C2B }, /* GL_MAX_TEXTURE_BUFFER_SIZE */ - { 24416, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS */ - { 24438, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */ - { 24464, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS */ - { 24491, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */ - { 24522, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */ - { 24546, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS_EXT */ - { 24574, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ - { 24608, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */ - { 24628, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */ - { 24655, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */ - { 24676, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */ - { 24701, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */ - { 24726, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */ - { 24761, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */ - { 24810, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */ - { 24863, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */ - { 24906, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */ - { 24953, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */ - { 24999, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */ - { 25049, 0x00008B4B }, /* GL_MAX_VARYING_COMPONENTS */ - { 25075, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS */ - { 25097, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */ - { 25123, 0x00008DFC }, /* GL_MAX_VARYING_VECTORS */ - { 25146, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS */ - { 25168, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */ - { 25194, 0x00009122 }, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */ - { 25226, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ - { 25260, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */ - { 25298, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ - { 25331, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */ - { 25368, 0x00008DFB }, /* GL_MAX_VERTEX_UNIFORM_VECTORS */ - { 25398, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */ - { 25422, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_OES */ - { 25446, 0x00008DDE }, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */ - { 25483, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */ - { 25504, 0x00008DF1 }, /* GL_MEDIUM_FLOAT */ - { 25520, 0x00008DF4 }, /* GL_MEDIUM_INT */ - { 25534, 0x00008007 }, /* GL_MIN */ - { 25541, 0x0000802E }, /* GL_MINMAX */ - { 25551, 0x0000802E }, /* GL_MINMAX_EXT */ - { 25565, 0x0000802F }, /* GL_MINMAX_FORMAT */ - { 25582, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */ - { 25603, 0x00008030 }, /* GL_MINMAX_SINK */ - { 25618, 0x00008030 }, /* GL_MINMAX_SINK_EXT */ - { 25637, 0x0000821C }, /* GL_MINOR_VERSION */ - { 25654, 0x00008007 }, /* GL_MIN_EXT */ - { 25665, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET */ - { 25693, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET_EXT */ - { 25725, 0x00008370 }, /* GL_MIRRORED_REPEAT */ - { 25744, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */ - { 25767, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */ - { 25790, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */ - { 25810, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */ - { 25830, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ - { 25860, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */ - { 25888, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ - { 25916, 0x00001700 }, /* GL_MODELVIEW */ - { 25929, 0x00001700 }, /* GL_MODELVIEW0_ARB */ - { 25947, 0x0000872A }, /* GL_MODELVIEW10_ARB */ - { 25966, 0x0000872B }, /* GL_MODELVIEW11_ARB */ - { 25985, 0x0000872C }, /* GL_MODELVIEW12_ARB */ - { 26004, 0x0000872D }, /* GL_MODELVIEW13_ARB */ - { 26023, 0x0000872E }, /* GL_MODELVIEW14_ARB */ - { 26042, 0x0000872F }, /* GL_MODELVIEW15_ARB */ - { 26061, 0x00008730 }, /* GL_MODELVIEW16_ARB */ - { 26080, 0x00008731 }, /* GL_MODELVIEW17_ARB */ - { 26099, 0x00008732 }, /* GL_MODELVIEW18_ARB */ - { 26118, 0x00008733 }, /* GL_MODELVIEW19_ARB */ - { 26137, 0x0000850A }, /* GL_MODELVIEW1_ARB */ - { 26155, 0x00008734 }, /* GL_MODELVIEW20_ARB */ - { 26174, 0x00008735 }, /* GL_MODELVIEW21_ARB */ - { 26193, 0x00008736 }, /* GL_MODELVIEW22_ARB */ - { 26212, 0x00008737 }, /* GL_MODELVIEW23_ARB */ - { 26231, 0x00008738 }, /* GL_MODELVIEW24_ARB */ - { 26250, 0x00008739 }, /* GL_MODELVIEW25_ARB */ - { 26269, 0x0000873A }, /* GL_MODELVIEW26_ARB */ - { 26288, 0x0000873B }, /* GL_MODELVIEW27_ARB */ - { 26307, 0x0000873C }, /* GL_MODELVIEW28_ARB */ - { 26326, 0x0000873D }, /* GL_MODELVIEW29_ARB */ - { 26345, 0x00008722 }, /* GL_MODELVIEW2_ARB */ - { 26363, 0x0000873E }, /* GL_MODELVIEW30_ARB */ - { 26382, 0x0000873F }, /* GL_MODELVIEW31_ARB */ - { 26401, 0x00008723 }, /* GL_MODELVIEW3_ARB */ - { 26419, 0x00008724 }, /* GL_MODELVIEW4_ARB */ - { 26437, 0x00008725 }, /* GL_MODELVIEW5_ARB */ - { 26455, 0x00008726 }, /* GL_MODELVIEW6_ARB */ - { 26473, 0x00008727 }, /* GL_MODELVIEW7_ARB */ - { 26491, 0x00008728 }, /* GL_MODELVIEW8_ARB */ - { 26509, 0x00008729 }, /* GL_MODELVIEW9_ARB */ - { 26527, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */ - { 26547, 0x0000898D }, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */ - { 26589, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */ - { 26616, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */ - { 26641, 0x00002100 }, /* GL_MODULATE */ - { 26653, 0x00008744 }, /* GL_MODULATE_ADD_ATI */ - { 26673, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */ - { 26700, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */ - { 26725, 0x00000103 }, /* GL_MULT */ - { 26733, 0x0000809D }, /* GL_MULTISAMPLE */ - { 26748, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */ - { 26768, 0x0000809D }, /* GL_MULTISAMPLE_ARB */ - { 26787, 0x20000000 }, /* GL_MULTISAMPLE_BIT */ - { 26806, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */ - { 26830, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */ - { 26853, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */ - { 26883, 0x00002A25 }, /* GL_N3F_V3F */ - { 26894, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */ - { 26914, 0x0000150E }, /* GL_NAND */ - { 26922, 0x00002600 }, /* GL_NEAREST */ - { 26933, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ - { 26964, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ - { 26996, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */ - { 27021, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */ - { 27047, 0x00000200 }, /* GL_NEVER */ - { 27056, 0x00001102 }, /* GL_NICEST */ - { 27066, 0x00000000 }, /* GL_NONE */ - { 27074, 0x00000000 }, /* GL_NONE_OES */ - { 27086, 0x00001505 }, /* GL_NOOP */ - { 27094, 0x00001508 }, /* GL_NOR */ - { 27101, 0x00000BA1 }, /* GL_NORMALIZE */ - { 27114, 0x00008075 }, /* GL_NORMAL_ARRAY */ - { 27130, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ - { 27161, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */ - { 27196, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */ - { 27220, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */ - { 27243, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */ - { 27264, 0x00008511 }, /* GL_NORMAL_MAP */ - { 27278, 0x00008511 }, /* GL_NORMAL_MAP_ARB */ - { 27296, 0x00008511 }, /* GL_NORMAL_MAP_NV */ - { 27313, 0x00008511 }, /* GL_NORMAL_MAP_OES */ - { 27331, 0x00000205 }, /* GL_NOTEQUAL */ - { 27343, 0x00000000 }, /* GL_NO_ERROR */ - { 27355, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ - { 27389, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB */ - { 27427, 0x0000821D }, /* GL_NUM_EXTENSIONS */ - { 27445, 0x000087FE }, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */ - { 27479, 0x00008DF9 }, /* GL_NUM_SHADER_BINARY_FORMATS */ - { 27508, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */ - { 27540, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */ - { 27582, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */ - { 27612, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */ - { 27652, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */ - { 27683, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */ - { 27712, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */ - { 27740, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */ - { 27770, 0x00002401 }, /* GL_OBJECT_LINEAR */ - { 27787, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */ - { 27813, 0x00002501 }, /* GL_OBJECT_PLANE */ - { 27829, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */ - { 27864, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */ - { 27886, 0x00009112 }, /* GL_OBJECT_TYPE */ - { 27901, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */ - { 27920, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */ - { 27950, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */ - { 27971, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */ - { 27999, 0x00000001 }, /* GL_ONE */ - { 28006, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */ - { 28034, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */ - { 28066, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */ - { 28094, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */ - { 28126, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */ - { 28149, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */ - { 28172, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */ - { 28195, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */ - { 28218, 0x00008598 }, /* GL_OPERAND0_ALPHA */ - { 28236, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */ - { 28258, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */ - { 28280, 0x00008590 }, /* GL_OPERAND0_RGB */ - { 28296, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */ - { 28316, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */ - { 28336, 0x00008599 }, /* GL_OPERAND1_ALPHA */ - { 28354, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */ - { 28376, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */ - { 28398, 0x00008591 }, /* GL_OPERAND1_RGB */ - { 28414, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */ - { 28434, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */ - { 28454, 0x0000859A }, /* GL_OPERAND2_ALPHA */ - { 28472, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */ - { 28494, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */ - { 28516, 0x00008592 }, /* GL_OPERAND2_RGB */ - { 28532, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */ - { 28552, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */ - { 28572, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */ - { 28593, 0x00008593 }, /* GL_OPERAND3_RGB_NV */ - { 28612, 0x00001507 }, /* GL_OR */ - { 28618, 0x00000A01 }, /* GL_ORDER */ - { 28627, 0x0000150D }, /* GL_OR_INVERTED */ - { 28642, 0x0000150B }, /* GL_OR_REVERSE */ - { 28656, 0x00000505 }, /* GL_OUT_OF_MEMORY */ - { 28673, 0x00000D05 }, /* GL_PACK_ALIGNMENT */ - { 28691, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */ - { 28712, 0x00008758 }, /* GL_PACK_INVERT_MESA */ - { 28732, 0x00000D01 }, /* GL_PACK_LSB_FIRST */ - { 28750, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */ - { 28769, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */ - { 28789, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */ - { 28809, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */ - { 28827, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */ - { 28846, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */ - { 28871, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */ - { 28895, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */ - { 28916, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */ - { 28938, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */ - { 28960, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */ - { 28985, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */ - { 29009, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */ - { 29030, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */ - { 29052, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */ - { 29074, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */ - { 29096, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */ - { 29127, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */ - { 29147, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */ - { 29172, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */ - { 29192, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */ - { 29217, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */ - { 29237, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */ - { 29262, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */ - { 29282, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */ - { 29307, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */ - { 29327, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */ - { 29352, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */ - { 29372, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */ - { 29397, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */ - { 29417, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */ - { 29442, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */ - { 29462, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */ - { 29487, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */ - { 29507, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */ - { 29532, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */ - { 29552, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */ - { 29577, 0x00000020 }, /* GL_PIXEL_MODE_BIT */ - { 29595, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER */ - { 29616, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING */ - { 29645, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */ - { 29678, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */ - { 29703, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER */ - { 29726, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING */ - { 29757, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */ - { 29792, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */ - { 29819, 0x00001B00 }, /* GL_POINT */ - { 29828, 0x00000000 }, /* GL_POINTS */ - { 29838, 0x00000002 }, /* GL_POINT_BIT */ - { 29851, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */ - { 29881, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */ - { 29915, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */ - { 29949, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */ - { 29984, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */ - { 30013, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */ - { 30046, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */ - { 30079, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */ - { 30113, 0x00000B11 }, /* GL_POINT_SIZE */ - { 30127, 0x00008B9F }, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */ - { 30166, 0x00008B9C }, /* GL_POINT_SIZE_ARRAY_OES */ - { 30190, 0x0000898C }, /* GL_POINT_SIZE_ARRAY_POINTER_OES */ - { 30222, 0x0000898B }, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */ - { 30253, 0x0000898A }, /* GL_POINT_SIZE_ARRAY_TYPE_OES */ - { 30282, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */ - { 30308, 0x00008127 }, /* GL_POINT_SIZE_MAX */ - { 30326, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */ - { 30348, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */ - { 30370, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */ - { 30393, 0x00008126 }, /* GL_POINT_SIZE_MIN */ - { 30411, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */ - { 30433, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */ - { 30455, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */ - { 30478, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */ - { 30498, 0x00000B10 }, /* GL_POINT_SMOOTH */ - { 30514, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */ - { 30535, 0x00008861 }, /* GL_POINT_SPRITE */ - { 30551, 0x00008861 }, /* GL_POINT_SPRITE_ARB */ - { 30571, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */ - { 30600, 0x00008861 }, /* GL_POINT_SPRITE_NV */ - { 30619, 0x00008861 }, /* GL_POINT_SPRITE_OES */ - { 30639, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */ - { 30665, 0x00000701 }, /* GL_POINT_TOKEN */ - { 30680, 0x00000009 }, /* GL_POLYGON */ - { 30691, 0x00000008 }, /* GL_POLYGON_BIT */ - { 30706, 0x00000B40 }, /* GL_POLYGON_MODE */ - { 30722, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */ - { 30745, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */ - { 30770, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */ - { 30793, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */ - { 30816, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */ - { 30840, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */ - { 30864, 0x00000B41 }, /* GL_POLYGON_SMOOTH */ - { 30882, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */ - { 30905, 0x00000B42 }, /* GL_POLYGON_STIPPLE */ - { 30924, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */ - { 30947, 0x00000703 }, /* GL_POLYGON_TOKEN */ - { 30964, 0x00001203 }, /* GL_POSITION */ - { 30976, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ - { 31008, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */ - { 31044, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ - { 31077, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */ - { 31114, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ - { 31145, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */ - { 31180, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ - { 31212, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */ - { 31248, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ - { 31281, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ - { 31313, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */ - { 31349, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ - { 31382, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */ - { 31419, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */ - { 31449, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */ - { 31483, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */ - { 31514, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */ - { 31549, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ - { 31580, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */ - { 31615, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ - { 31647, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */ - { 31683, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */ - { 31713, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */ - { 31747, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */ - { 31778, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */ - { 31813, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */ - { 31845, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */ - { 31876, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */ - { 31911, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */ - { 31943, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */ - { 31979, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */ - { 32008, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */ - { 32041, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */ - { 32071, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */ - { 32105, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ - { 32144, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ - { 32177, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ - { 32217, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ - { 32251, 0x00008578 }, /* GL_PREVIOUS */ - { 32263, 0x00008578 }, /* GL_PREVIOUS_ARB */ - { 32279, 0x00008578 }, /* GL_PREVIOUS_EXT */ - { 32295, 0x00008577 }, /* GL_PRIMARY_COLOR */ - { 32312, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */ - { 32333, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */ - { 32354, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED */ - { 32378, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED_EXT */ - { 32406, 0x00008F9D }, /* GL_PRIMITIVE_RESTART */ - { 32427, 0x00008F9E }, /* GL_PRIMITIVE_RESTART_INDEX */ - { 32454, 0x00008559 }, /* GL_PRIMITIVE_RESTART_INDEX_NV */ - { 32484, 0x00008558 }, /* GL_PRIMITIVE_RESTART_NV */ - { 32508, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ - { 32541, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ - { 32573, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */ - { 32596, 0x000087FF }, /* GL_PROGRAM_BINARY_FORMATS_OES */ - { 32626, 0x00008741 }, /* GL_PROGRAM_BINARY_LENGTH_OES */ - { 32655, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */ - { 32678, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */ - { 32708, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */ - { 32737, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */ - { 32765, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */ - { 32787, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */ - { 32815, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */ - { 32843, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */ - { 32865, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */ - { 32886, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - { 32926, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - { 32965, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ - { 32995, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - { 33030, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ - { 33063, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ - { 33097, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - { 33136, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - { 33175, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */ - { 33197, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */ - { 33223, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */ - { 33247, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE */ - { 33269, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE_ARB */ - { 33295, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */ - { 33318, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */ - { 33340, 0x00008628 }, /* GL_PROGRAM_STRING_NV */ - { 33361, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */ - { 33382, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */ - { 33409, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ - { 33441, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ - { 33473, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ - { 33508, 0x00001701 }, /* GL_PROJECTION */ - { 33522, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */ - { 33543, 0x0000898E }, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */ - { 33586, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */ - { 33612, 0x00008E4F }, /* GL_PROVOKING_VERTEX */ - { 33632, 0x00008E4F }, /* GL_PROVOKING_VERTEX_EXT */ - { 33656, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */ - { 33677, 0x00008025 }, /* GL_PROXY_HISTOGRAM */ - { 33696, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */ - { 33719, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ - { 33758, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ - { 33796, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */ - { 33816, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY */ - { 33842, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */ - { 33872, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */ - { 33896, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */ - { 33916, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY */ - { 33942, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */ - { 33972, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */ - { 33996, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */ - { 34016, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ - { 34049, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */ - { 34075, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */ - { 34105, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE */ - { 34132, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */ - { 34163, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */ - { 34193, 0x00008A1D }, /* GL_PURGEABLE_APPLE */ - { 34212, 0x00002003 }, /* GL_Q */ - { 34217, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */ - { 34242, 0x00000007 }, /* GL_QUADS */ - { 34251, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ - { 34295, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT */ - { 34343, 0x00008614 }, /* GL_QUAD_MESH_SUN */ - { 34360, 0x00000008 }, /* GL_QUAD_STRIP */ - { 34374, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT */ - { 34401, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT_NV */ - { 34431, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT */ - { 34455, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT_NV */ - { 34482, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */ - { 34504, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */ - { 34530, 0x00008E14 }, /* GL_QUERY_NO_WAIT */ - { 34547, 0x00008E14 }, /* GL_QUERY_NO_WAIT_NV */ - { 34567, 0x00008866 }, /* GL_QUERY_RESULT */ - { 34583, 0x00008866 }, /* GL_QUERY_RESULT_ARB */ - { 34603, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */ - { 34629, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */ - { 34659, 0x00008E13 }, /* GL_QUERY_WAIT */ - { 34673, 0x00008E13 }, /* GL_QUERY_WAIT_NV */ - { 34690, 0x00002002 }, /* GL_R */ - { 34695, 0x00008C3A }, /* GL_R11F_G11F_B10F */ - { 34713, 0x00008F98 }, /* GL_R16_SNORM */ - { 34726, 0x00002A10 }, /* GL_R3_G3_B2 */ - { 34738, 0x00008F94 }, /* GL_R8_SNORM */ - { 34750, 0x00008C89 }, /* GL_RASTERIZER_DISCARD */ - { 34772, 0x00008C89 }, /* GL_RASTERIZER_DISCARD_EXT */ - { 34798, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ - { 34831, 0x00000C02 }, /* GL_READ_BUFFER */ - { 34846, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER */ - { 34866, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING */ - { 34894, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */ - { 34926, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */ - { 34950, 0x000088B8 }, /* GL_READ_ONLY */ - { 34963, 0x000088B8 }, /* GL_READ_ONLY_ARB */ - { 34980, 0x000088BA }, /* GL_READ_WRITE */ - { 34994, 0x000088BA }, /* GL_READ_WRITE_ARB */ - { 35012, 0x00001903 }, /* GL_RED */ - { 35019, 0x00008016 }, /* GL_REDUCE */ - { 35029, 0x00008016 }, /* GL_REDUCE_EXT */ - { 35043, 0x00000D15 }, /* GL_RED_BIAS */ - { 35055, 0x00000D52 }, /* GL_RED_BITS */ - { 35067, 0x00008D94 }, /* GL_RED_INTEGER */ - { 35082, 0x00008D94 }, /* GL_RED_INTEGER_EXT */ - { 35101, 0x00000D14 }, /* GL_RED_SCALE */ - { 35114, 0x00008F90 }, /* GL_RED_SNORM */ - { 35127, 0x00008512 }, /* GL_REFLECTION_MAP */ - { 35145, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */ - { 35167, 0x00008512 }, /* GL_REFLECTION_MAP_NV */ - { 35188, 0x00008512 }, /* GL_REFLECTION_MAP_OES */ - { 35210, 0x00008A19 }, /* GL_RELEASED_APPLE */ - { 35228, 0x00001C00 }, /* GL_RENDER */ - { 35238, 0x00008D41 }, /* GL_RENDERBUFFER */ - { 35254, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE */ - { 35281, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE_OES */ - { 35312, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING */ - { 35336, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */ - { 35364, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_OES */ - { 35392, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE */ - { 35418, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE_OES */ - { 35448, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE */ - { 35475, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE_OES */ - { 35506, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */ - { 35526, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE */ - { 35553, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE_OES */ - { 35584, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT */ - { 35607, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */ - { 35634, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_OES */ - { 35661, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT */ - { 35693, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */ - { 35729, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_OES */ - { 35765, 0x00008D41 }, /* GL_RENDERBUFFER_OES */ - { 35785, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE */ - { 35810, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE_OES */ - { 35839, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES */ - { 35863, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES_EXT */ - { 35891, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE */ - { 35920, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE_OES */ - { 35953, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH */ - { 35975, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */ - { 36001, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_OES */ - { 36027, 0x00001F01 }, /* GL_RENDERER */ - { 36039, 0x00000C40 }, /* GL_RENDER_MODE */ - { 36054, 0x00002901 }, /* GL_REPEAT */ - { 36064, 0x00001E01 }, /* GL_REPLACE */ - { 36075, 0x00008062 }, /* GL_REPLACE_EXT */ - { 36090, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */ - { 36113, 0x0000803A }, /* GL_RESCALE_NORMAL */ - { 36131, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */ - { 36153, 0x00008A1B }, /* GL_RETAINED_APPLE */ - { 36171, 0x00000102 }, /* GL_RETURN */ - { 36181, 0x00008F99 }, /* GL_RG16_SNORM */ - { 36195, 0x00008F95 }, /* GL_RG8_SNORM */ - { 36208, 0x00001907 }, /* GL_RGB */ - { 36215, 0x00008052 }, /* GL_RGB10 */ - { 36224, 0x00008059 }, /* GL_RGB10_A2 */ - { 36236, 0x00008059 }, /* GL_RGB10_A2_EXT */ - { 36252, 0x00008052 }, /* GL_RGB10_EXT */ - { 36265, 0x00008053 }, /* GL_RGB12 */ - { 36274, 0x00008053 }, /* GL_RGB12_EXT */ - { 36287, 0x00008054 }, /* GL_RGB16 */ - { 36296, 0x0000881B }, /* GL_RGB16F */ - { 36306, 0x00008D89 }, /* GL_RGB16I */ - { 36316, 0x00008D89 }, /* GL_RGB16I_EXT */ - { 36330, 0x00008D77 }, /* GL_RGB16UI */ - { 36341, 0x00008D77 }, /* GL_RGB16UI_EXT */ - { 36356, 0x00008054 }, /* GL_RGB16_EXT */ - { 36369, 0x00008F9A }, /* GL_RGB16_SNORM */ - { 36384, 0x0000804E }, /* GL_RGB2_EXT */ - { 36396, 0x00008815 }, /* GL_RGB32F */ - { 36406, 0x00008D83 }, /* GL_RGB32I */ - { 36416, 0x00008D83 }, /* GL_RGB32I_EXT */ - { 36430, 0x00008D71 }, /* GL_RGB32UI */ - { 36441, 0x00008D71 }, /* GL_RGB32UI_EXT */ - { 36456, 0x0000804F }, /* GL_RGB4 */ - { 36464, 0x0000804F }, /* GL_RGB4_EXT */ - { 36476, 0x000083A1 }, /* GL_RGB4_S3TC */ - { 36489, 0x00008050 }, /* GL_RGB5 */ - { 36497, 0x00008D62 }, /* GL_RGB565 */ - { 36507, 0x00008D62 }, /* GL_RGB565_OES */ - { 36521, 0x00008057 }, /* GL_RGB5_A1 */ - { 36532, 0x00008057 }, /* GL_RGB5_A1_EXT */ - { 36547, 0x00008057 }, /* GL_RGB5_A1_OES */ - { 36562, 0x00008050 }, /* GL_RGB5_EXT */ - { 36574, 0x00008051 }, /* GL_RGB8 */ - { 36582, 0x00008D8F }, /* GL_RGB8I */ - { 36591, 0x00008D8F }, /* GL_RGB8I_EXT */ - { 36604, 0x00008D7D }, /* GL_RGB8UI */ - { 36614, 0x00008D7D }, /* GL_RGB8UI_EXT */ - { 36628, 0x00008051 }, /* GL_RGB8_EXT */ - { 36640, 0x00008051 }, /* GL_RGB8_OES */ - { 36652, 0x00008F96 }, /* GL_RGB8_SNORM */ - { 36666, 0x00008C3D }, /* GL_RGB9_E5 */ - { 36677, 0x00001908 }, /* GL_RGBA */ - { 36685, 0x0000805A }, /* GL_RGBA12 */ - { 36695, 0x0000805A }, /* GL_RGBA12_EXT */ - { 36709, 0x0000805B }, /* GL_RGBA16 */ - { 36719, 0x0000881A }, /* GL_RGBA16F */ - { 36730, 0x00008D88 }, /* GL_RGBA16I */ - { 36741, 0x00008D88 }, /* GL_RGBA16I_EXT */ - { 36756, 0x00008D76 }, /* GL_RGBA16UI */ - { 36768, 0x00008D76 }, /* GL_RGBA16UI_EXT */ - { 36784, 0x0000805B }, /* GL_RGBA16_EXT */ - { 36798, 0x00008F9B }, /* GL_RGBA16_SNORM */ - { 36814, 0x00008055 }, /* GL_RGBA2 */ - { 36823, 0x00008055 }, /* GL_RGBA2_EXT */ - { 36836, 0x00008814 }, /* GL_RGBA32F */ - { 36847, 0x00008D82 }, /* GL_RGBA32I */ - { 36858, 0x00008D82 }, /* GL_RGBA32I_EXT */ - { 36873, 0x00008D70 }, /* GL_RGBA32UI */ - { 36885, 0x00008D70 }, /* GL_RGBA32UI_EXT */ - { 36901, 0x00008056 }, /* GL_RGBA4 */ - { 36910, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */ - { 36929, 0x00008056 }, /* GL_RGBA4_EXT */ - { 36942, 0x00008056 }, /* GL_RGBA4_OES */ - { 36955, 0x000083A3 }, /* GL_RGBA4_S3TC */ - { 36969, 0x00008058 }, /* GL_RGBA8 */ - { 36978, 0x00008D8E }, /* GL_RGBA8I */ - { 36988, 0x00008D8E }, /* GL_RGBA8I_EXT */ - { 37002, 0x00008D7C }, /* GL_RGBA8UI */ - { 37013, 0x00008D7C }, /* GL_RGBA8UI_EXT */ - { 37028, 0x00008058 }, /* GL_RGBA8_EXT */ - { 37041, 0x00008058 }, /* GL_RGBA8_OES */ - { 37054, 0x00008F97 }, /* GL_RGBA8_SNORM */ - { 37069, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */ - { 37087, 0x00008D99 }, /* GL_RGBA_INTEGER */ - { 37103, 0x00008D99 }, /* GL_RGBA_INTEGER_EXT */ - { 37123, 0x00008D9E }, /* GL_RGBA_INTEGER_MODE_EXT */ - { 37148, 0x00000C31 }, /* GL_RGBA_MODE */ - { 37161, 0x000083A2 }, /* GL_RGBA_S3TC */ - { 37174, 0x00008F93 }, /* GL_RGBA_SNORM */ - { 37188, 0x00008D98 }, /* GL_RGB_INTEGER */ - { 37203, 0x00008D98 }, /* GL_RGB_INTEGER_EXT */ - { 37222, 0x000083A0 }, /* GL_RGB_S3TC */ - { 37234, 0x00008573 }, /* GL_RGB_SCALE */ - { 37247, 0x00008573 }, /* GL_RGB_SCALE_ARB */ - { 37264, 0x00008573 }, /* GL_RGB_SCALE_EXT */ - { 37281, 0x00008F92 }, /* GL_RGB_SNORM */ - { 37294, 0x00008F91 }, /* GL_RG_SNORM */ - { 37306, 0x00000407 }, /* GL_RIGHT */ - { 37315, 0x00002000 }, /* GL_S */ - { 37320, 0x00008B5D }, /* GL_SAMPLER_1D */ - { 37334, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY */ - { 37354, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY_EXT */ - { 37378, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW */ - { 37405, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW_EXT */ - { 37436, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */ - { 37457, 0x00008B5E }, /* GL_SAMPLER_2D */ - { 37471, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY */ - { 37491, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY_EXT */ - { 37515, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW */ - { 37542, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW_EXT */ - { 37573, 0x00008B63 }, /* GL_SAMPLER_2D_RECT */ - { 37592, 0x00008B64 }, /* GL_SAMPLER_2D_RECT_SHADOW */ - { 37618, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */ - { 37639, 0x00008B5F }, /* GL_SAMPLER_3D */ - { 37653, 0x00008B5F }, /* GL_SAMPLER_3D_OES */ - { 37671, 0x00008DC2 }, /* GL_SAMPLER_BUFFER */ - { 37689, 0x00008DC2 }, /* GL_SAMPLER_BUFFER_EXT */ - { 37711, 0x00008B60 }, /* GL_SAMPLER_CUBE */ - { 37727, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW */ - { 37750, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW_EXT */ - { 37777, 0x000080A9 }, /* GL_SAMPLES */ - { 37788, 0x000086B4 }, /* GL_SAMPLES_3DFX */ - { 37804, 0x000080A9 }, /* GL_SAMPLES_ARB */ - { 37819, 0x00008914 }, /* GL_SAMPLES_PASSED */ - { 37837, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */ - { 37859, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ - { 37887, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */ - { 37919, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */ - { 37942, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */ - { 37969, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */ - { 37987, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */ - { 38010, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */ - { 38032, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */ - { 38051, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */ - { 38074, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */ - { 38100, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */ - { 38130, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */ - { 38155, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */ - { 38184, 0x00080000 }, /* GL_SCISSOR_BIT */ - { 38199, 0x00000C10 }, /* GL_SCISSOR_BOX */ - { 38214, 0x00000C11 }, /* GL_SCISSOR_TEST */ - { 38230, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */ - { 38255, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ - { 38295, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */ - { 38339, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ - { 38372, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ - { 38402, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ - { 38434, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ - { 38464, 0x00001C02 }, /* GL_SELECT */ - { 38474, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */ - { 38502, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */ - { 38527, 0x00008012 }, /* GL_SEPARABLE_2D */ - { 38543, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS */ - { 38563, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS_EXT */ - { 38587, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */ - { 38614, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */ - { 38645, 0x0000150F }, /* GL_SET */ - { 38652, 0x00008DF8 }, /* GL_SHADER_BINARY_FORMATS */ - { 38677, 0x00008DFA }, /* GL_SHADER_COMPILER */ - { 38696, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */ - { 38717, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */ - { 38741, 0x00008B4F }, /* GL_SHADER_TYPE */ - { 38756, 0x00000B54 }, /* GL_SHADE_MODEL */ - { 38771, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */ - { 38799, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */ - { 38822, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */ - { 38852, 0x00001601 }, /* GL_SHININESS */ - { 38865, 0x00001402 }, /* GL_SHORT */ - { 38874, 0x00009119 }, /* GL_SIGNALED */ - { 38886, 0x00008F9C }, /* GL_SIGNED_NORMALIZED */ - { 38907, 0x000081F9 }, /* GL_SINGLE_COLOR */ - { 38923, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */ - { 38943, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */ - { 38962, 0x00008C46 }, /* GL_SLUMINANCE */ - { 38976, 0x00008C47 }, /* GL_SLUMINANCE8 */ - { 38991, 0x00008C45 }, /* GL_SLUMINANCE8_ALPHA8 */ - { 39013, 0x00008C44 }, /* GL_SLUMINANCE_ALPHA */ - { 39033, 0x00001D01 }, /* GL_SMOOTH */ - { 39043, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */ - { 39076, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */ - { 39103, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */ - { 39136, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */ - { 39163, 0x00008588 }, /* GL_SOURCE0_ALPHA */ - { 39180, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */ - { 39201, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */ - { 39222, 0x00008580 }, /* GL_SOURCE0_RGB */ - { 39237, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */ - { 39256, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */ - { 39275, 0x00008589 }, /* GL_SOURCE1_ALPHA */ - { 39292, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */ - { 39313, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */ - { 39334, 0x00008581 }, /* GL_SOURCE1_RGB */ - { 39349, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */ - { 39368, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */ - { 39387, 0x0000858A }, /* GL_SOURCE2_ALPHA */ - { 39404, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */ - { 39425, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */ - { 39446, 0x00008582 }, /* GL_SOURCE2_RGB */ - { 39461, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */ - { 39480, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */ - { 39499, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */ - { 39519, 0x00008583 }, /* GL_SOURCE3_RGB_NV */ - { 39537, 0x00001202 }, /* GL_SPECULAR */ - { 39549, 0x00002402 }, /* GL_SPHERE_MAP */ - { 39563, 0x00001206 }, /* GL_SPOT_CUTOFF */ - { 39578, 0x00001204 }, /* GL_SPOT_DIRECTION */ - { 39596, 0x00001205 }, /* GL_SPOT_EXPONENT */ - { 39613, 0x00008588 }, /* GL_SRC0_ALPHA */ - { 39627, 0x00008580 }, /* GL_SRC0_RGB */ - { 39639, 0x00008589 }, /* GL_SRC1_ALPHA */ - { 39653, 0x00008581 }, /* GL_SRC1_RGB */ - { 39665, 0x0000858A }, /* GL_SRC2_ALPHA */ - { 39679, 0x00008582 }, /* GL_SRC2_RGB */ - { 39691, 0x00000302 }, /* GL_SRC_ALPHA */ - { 39704, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */ - { 39726, 0x00000300 }, /* GL_SRC_COLOR */ - { 39739, 0x00008C40 }, /* GL_SRGB */ - { 39747, 0x00008C41 }, /* GL_SRGB8 */ - { 39756, 0x00008C43 }, /* GL_SRGB8_ALPHA8 */ - { 39772, 0x00008C42 }, /* GL_SRGB_ALPHA */ - { 39786, 0x00000503 }, /* GL_STACK_OVERFLOW */ - { 39804, 0x00000504 }, /* GL_STACK_UNDERFLOW */ - { 39823, 0x000088E6 }, /* GL_STATIC_COPY */ - { 39838, 0x000088E6 }, /* GL_STATIC_COPY_ARB */ - { 39857, 0x000088E4 }, /* GL_STATIC_DRAW */ - { 39872, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */ - { 39891, 0x000088E5 }, /* GL_STATIC_READ */ - { 39906, 0x000088E5 }, /* GL_STATIC_READ_ARB */ - { 39925, 0x00001802 }, /* GL_STENCIL */ - { 39936, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT */ - { 39958, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */ - { 39984, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_OES */ - { 40010, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */ - { 40031, 0x00008801 }, /* GL_STENCIL_BACK_FAIL_ATI */ - { 40056, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */ - { 40077, 0x00008800 }, /* GL_STENCIL_BACK_FUNC_ATI */ - { 40102, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ - { 40134, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI */ - { 40170, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ - { 40202, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI */ - { 40238, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */ - { 40258, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */ - { 40285, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */ - { 40311, 0x00000D57 }, /* GL_STENCIL_BITS */ - { 40327, 0x00008224 }, /* GL_STENCIL_BUFFER */ - { 40345, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */ - { 40367, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */ - { 40390, 0x00000B94 }, /* GL_STENCIL_FAIL */ - { 40406, 0x00000B92 }, /* GL_STENCIL_FUNC */ - { 40422, 0x00001901 }, /* GL_STENCIL_INDEX */ - { 40439, 0x00008D46 }, /* GL_STENCIL_INDEX1 */ - { 40457, 0x00008D49 }, /* GL_STENCIL_INDEX16 */ - { 40476, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */ - { 40499, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */ - { 40521, 0x00008D46 }, /* GL_STENCIL_INDEX1_OES */ - { 40543, 0x00008D47 }, /* GL_STENCIL_INDEX4 */ - { 40561, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */ - { 40583, 0x00008D47 }, /* GL_STENCIL_INDEX4_OES */ - { 40605, 0x00008D48 }, /* GL_STENCIL_INDEX8 */ - { 40623, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */ - { 40645, 0x00008D48 }, /* GL_STENCIL_INDEX8_OES */ - { 40667, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */ - { 40688, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */ - { 40715, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */ - { 40742, 0x00000B97 }, /* GL_STENCIL_REF */ - { 40757, 0x00000B90 }, /* GL_STENCIL_TEST */ - { 40773, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ - { 40802, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */ - { 40824, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */ - { 40845, 0x00000C33 }, /* GL_STEREO */ - { 40855, 0x000085BE }, /* GL_STORAGE_CACHED_APPLE */ - { 40879, 0x000085BD }, /* GL_STORAGE_PRIVATE_APPLE */ - { 40904, 0x000085BF }, /* GL_STORAGE_SHARED_APPLE */ - { 40928, 0x000088E2 }, /* GL_STREAM_COPY */ - { 40943, 0x000088E2 }, /* GL_STREAM_COPY_ARB */ - { 40962, 0x000088E0 }, /* GL_STREAM_DRAW */ - { 40977, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */ - { 40996, 0x000088E1 }, /* GL_STREAM_READ */ - { 41011, 0x000088E1 }, /* GL_STREAM_READ_ARB */ - { 41030, 0x00000D50 }, /* GL_SUBPIXEL_BITS */ - { 41047, 0x000084E7 }, /* GL_SUBTRACT */ - { 41059, 0x000084E7 }, /* GL_SUBTRACT_ARB */ - { 41075, 0x00009113 }, /* GL_SYNC_CONDITION */ - { 41093, 0x00009116 }, /* GL_SYNC_FENCE */ - { 41107, 0x00009115 }, /* GL_SYNC_FLAGS */ - { 41121, 0x00000001 }, /* GL_SYNC_FLUSH_COMMANDS_BIT */ - { 41148, 0x00009117 }, /* GL_SYNC_GPU_COMMANDS_COMPLETE */ - { 41178, 0x00009114 }, /* GL_SYNC_STATUS */ - { 41193, 0x00002001 }, /* GL_T */ - { 41198, 0x00002A2A }, /* GL_T2F_C3F_V3F */ - { 41213, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */ - { 41232, 0x00002A29 }, /* GL_T2F_C4UB_V3F */ - { 41248, 0x00002A2B }, /* GL_T2F_N3F_V3F */ - { 41263, 0x00002A27 }, /* GL_T2F_V3F */ - { 41274, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */ - { 41293, 0x00002A28 }, /* GL_T4F_V4F */ - { 41304, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */ - { 41327, 0x00001702 }, /* GL_TEXTURE */ - { 41338, 0x000084C0 }, /* GL_TEXTURE0 */ - { 41350, 0x000084C0 }, /* GL_TEXTURE0_ARB */ - { 41366, 0x000084C1 }, /* GL_TEXTURE1 */ - { 41378, 0x000084CA }, /* GL_TEXTURE10 */ - { 41391, 0x000084CA }, /* GL_TEXTURE10_ARB */ - { 41408, 0x000084CB }, /* GL_TEXTURE11 */ - { 41421, 0x000084CB }, /* GL_TEXTURE11_ARB */ - { 41438, 0x000084CC }, /* GL_TEXTURE12 */ - { 41451, 0x000084CC }, /* GL_TEXTURE12_ARB */ - { 41468, 0x000084CD }, /* GL_TEXTURE13 */ - { 41481, 0x000084CD }, /* GL_TEXTURE13_ARB */ - { 41498, 0x000084CE }, /* GL_TEXTURE14 */ - { 41511, 0x000084CE }, /* GL_TEXTURE14_ARB */ - { 41528, 0x000084CF }, /* GL_TEXTURE15 */ - { 41541, 0x000084CF }, /* GL_TEXTURE15_ARB */ - { 41558, 0x000084D0 }, /* GL_TEXTURE16 */ - { 41571, 0x000084D0 }, /* GL_TEXTURE16_ARB */ - { 41588, 0x000084D1 }, /* GL_TEXTURE17 */ - { 41601, 0x000084D1 }, /* GL_TEXTURE17_ARB */ - { 41618, 0x000084D2 }, /* GL_TEXTURE18 */ - { 41631, 0x000084D2 }, /* GL_TEXTURE18_ARB */ - { 41648, 0x000084D3 }, /* GL_TEXTURE19 */ - { 41661, 0x000084D3 }, /* GL_TEXTURE19_ARB */ - { 41678, 0x000084C1 }, /* GL_TEXTURE1_ARB */ - { 41694, 0x000084C2 }, /* GL_TEXTURE2 */ - { 41706, 0x000084D4 }, /* GL_TEXTURE20 */ - { 41719, 0x000084D4 }, /* GL_TEXTURE20_ARB */ - { 41736, 0x000084D5 }, /* GL_TEXTURE21 */ - { 41749, 0x000084D5 }, /* GL_TEXTURE21_ARB */ - { 41766, 0x000084D6 }, /* GL_TEXTURE22 */ - { 41779, 0x000084D6 }, /* GL_TEXTURE22_ARB */ - { 41796, 0x000084D7 }, /* GL_TEXTURE23 */ - { 41809, 0x000084D7 }, /* GL_TEXTURE23_ARB */ - { 41826, 0x000084D8 }, /* GL_TEXTURE24 */ - { 41839, 0x000084D8 }, /* GL_TEXTURE24_ARB */ - { 41856, 0x000084D9 }, /* GL_TEXTURE25 */ - { 41869, 0x000084D9 }, /* GL_TEXTURE25_ARB */ - { 41886, 0x000084DA }, /* GL_TEXTURE26 */ - { 41899, 0x000084DA }, /* GL_TEXTURE26_ARB */ - { 41916, 0x000084DB }, /* GL_TEXTURE27 */ - { 41929, 0x000084DB }, /* GL_TEXTURE27_ARB */ - { 41946, 0x000084DC }, /* GL_TEXTURE28 */ - { 41959, 0x000084DC }, /* GL_TEXTURE28_ARB */ - { 41976, 0x000084DD }, /* GL_TEXTURE29 */ - { 41989, 0x000084DD }, /* GL_TEXTURE29_ARB */ - { 42006, 0x000084C2 }, /* GL_TEXTURE2_ARB */ - { 42022, 0x000084C3 }, /* GL_TEXTURE3 */ - { 42034, 0x000084DE }, /* GL_TEXTURE30 */ - { 42047, 0x000084DE }, /* GL_TEXTURE30_ARB */ - { 42064, 0x000084DF }, /* GL_TEXTURE31 */ - { 42077, 0x000084DF }, /* GL_TEXTURE31_ARB */ - { 42094, 0x000084C3 }, /* GL_TEXTURE3_ARB */ - { 42110, 0x000084C4 }, /* GL_TEXTURE4 */ - { 42122, 0x000084C4 }, /* GL_TEXTURE4_ARB */ - { 42138, 0x000084C5 }, /* GL_TEXTURE5 */ - { 42150, 0x000084C5 }, /* GL_TEXTURE5_ARB */ - { 42166, 0x000084C6 }, /* GL_TEXTURE6 */ - { 42178, 0x000084C6 }, /* GL_TEXTURE6_ARB */ - { 42194, 0x000084C7 }, /* GL_TEXTURE7 */ - { 42206, 0x000084C7 }, /* GL_TEXTURE7_ARB */ - { 42222, 0x000084C8 }, /* GL_TEXTURE8 */ - { 42234, 0x000084C8 }, /* GL_TEXTURE8_ARB */ - { 42250, 0x000084C9 }, /* GL_TEXTURE9 */ - { 42262, 0x000084C9 }, /* GL_TEXTURE9_ARB */ - { 42278, 0x00000DE0 }, /* GL_TEXTURE_1D */ - { 42292, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY */ - { 42312, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY_EXT */ - { 42336, 0x00000DE1 }, /* GL_TEXTURE_2D */ - { 42350, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY */ - { 42370, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY_EXT */ - { 42394, 0x0000806F }, /* GL_TEXTURE_3D */ - { 42408, 0x0000806F }, /* GL_TEXTURE_3D_OES */ - { 42426, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */ - { 42448, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */ - { 42474, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */ - { 42496, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */ - { 42518, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY */ - { 42546, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */ - { 42578, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */ - { 42600, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY */ - { 42628, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */ - { 42660, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */ - { 42682, 0x0000806A }, /* GL_TEXTURE_BINDING_3D_OES */ - { 42708, 0x00008C2C }, /* GL_TEXTURE_BINDING_BUFFER */ - { 42734, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */ - { 42762, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */ - { 42794, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_OES */ - { 42826, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE */ - { 42855, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */ - { 42888, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */ - { 42920, 0x00040000 }, /* GL_TEXTURE_BIT */ - { 42935, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */ - { 42956, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */ - { 42981, 0x00001005 }, /* GL_TEXTURE_BORDER */ - { 42999, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */ - { 43023, 0x00008C2A }, /* GL_TEXTURE_BUFFER */ - { 43041, 0x00008C2D }, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */ - { 43078, 0x00008C2E }, /* GL_TEXTURE_BUFFER_FORMAT */ - { 43103, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ - { 43134, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ - { 43164, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ - { 43194, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ - { 43229, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ - { 43260, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - { 43298, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */ - { 43325, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ - { 43357, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ - { 43391, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */ - { 43415, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */ - { 43443, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */ - { 43467, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */ - { 43495, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ - { 43528, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */ - { 43552, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */ - { 43574, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */ - { 43596, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */ - { 43622, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */ - { 43656, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ - { 43689, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */ - { 43726, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */ - { 43754, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */ - { 43786, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */ - { 43809, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ - { 43847, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */ - { 43889, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */ - { 43920, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */ - { 43948, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ - { 43978, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */ - { 44006, 0x00008B9D }, /* GL_TEXTURE_CROP_RECT_OES */ - { 44031, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */ - { 44051, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */ - { 44075, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ - { 44106, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */ - { 44141, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES */ - { 44176, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ - { 44207, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */ - { 44242, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES */ - { 44277, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ - { 44308, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */ - { 44343, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES */ - { 44378, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_OES */ - { 44402, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ - { 44433, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */ - { 44468, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES */ - { 44503, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ - { 44534, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */ - { 44569, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES */ - { 44604, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ - { 44635, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */ - { 44670, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES */ - { 44705, 0x000088F4 }, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */ - { 44734, 0x00008071 }, /* GL_TEXTURE_DEPTH */ - { 44751, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */ - { 44773, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */ - { 44799, 0x00002300 }, /* GL_TEXTURE_ENV */ - { 44814, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */ - { 44835, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */ - { 44855, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */ - { 44881, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL_EXT */ - { 44911, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */ - { 44931, 0x00002500 }, /* GL_TEXTURE_GEN_MODE_OES */ - { 44955, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */ - { 44972, 0x00000C62 }, /* GL_TEXTURE_GEN_R */ - { 44989, 0x00000C60 }, /* GL_TEXTURE_GEN_S */ - { 45006, 0x00008D60 }, /* GL_TEXTURE_GEN_STR_OES */ - { 45029, 0x00000C61 }, /* GL_TEXTURE_GEN_T */ - { 45046, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */ - { 45071, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */ - { 45093, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */ - { 45119, 0x00001001 }, /* GL_TEXTURE_HEIGHT */ - { 45137, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */ - { 45163, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */ - { 45189, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */ - { 45219, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */ - { 45246, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */ - { 45271, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */ - { 45291, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */ - { 45315, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ - { 45342, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ - { 45369, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ - { 45396, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */ - { 45422, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */ - { 45452, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */ - { 45474, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */ - { 45492, 0x0000898F }, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */ - { 45532, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ - { 45562, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ - { 45590, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ - { 45618, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ - { 45646, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */ - { 45667, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */ - { 45686, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */ - { 45708, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */ - { 45727, 0x00008066 }, /* GL_TEXTURE_PRIORITY */ - { 45747, 0x000085B7 }, /* GL_TEXTURE_RANGE_LENGTH_APPLE */ - { 45777, 0x000085B8 }, /* GL_TEXTURE_RANGE_POINTER_APPLE */ - { 45808, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE */ - { 45829, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */ - { 45854, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */ - { 45878, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */ - { 45898, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */ - { 45922, 0x00008067 }, /* GL_TEXTURE_RESIDENT */ - { 45942, 0x00008C3F }, /* GL_TEXTURE_SHARED_SIZE */ - { 45965, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */ - { 45988, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE */ - { 46012, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE_EXT */ - { 46040, 0x000085BC }, /* GL_TEXTURE_STORAGE_HINT_APPLE */ - { 46070, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */ - { 46095, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ - { 46129, 0x00001000 }, /* GL_TEXTURE_WIDTH */ - { 46146, 0x00008072 }, /* GL_TEXTURE_WRAP_R */ - { 46164, 0x00008072 }, /* GL_TEXTURE_WRAP_R_OES */ - { 46186, 0x00002802 }, /* GL_TEXTURE_WRAP_S */ - { 46204, 0x00002803 }, /* GL_TEXTURE_WRAP_T */ - { 46222, 0x0000911B }, /* GL_TIMEOUT_EXPIRED */ - { 46241, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */ - { 46261, 0x00008648 }, /* GL_TRACK_MATRIX_NV */ - { 46280, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */ - { 46309, 0x00001000 }, /* GL_TRANSFORM_BIT */ - { 46326, 0x00008E22 }, /* GL_TRANSFORM_FEEDBACK */ - { 46348, 0x00008E25 }, /* GL_TRANSFORM_FEEDBACK_BINDING */ - { 46378, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER */ - { 46407, 0x00008E24 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */ - { 46443, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */ - { 46480, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */ - { 46521, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */ - { 46554, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */ - { 46588, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */ - { 46626, 0x00008E23 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */ - { 46662, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */ - { 46696, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */ - { 46734, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */ - { 46769, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */ - { 46808, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */ - { 46849, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */ - { 46894, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS */ - { 46925, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */ - { 46960, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */ - { 47001, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */ - { 47046, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */ - { 47072, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */ - { 47102, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ - { 47134, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ - { 47164, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */ - { 47198, 0x0000862C }, /* GL_TRANSPOSE_NV */ - { 47214, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */ - { 47245, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */ - { 47280, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */ - { 47308, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */ - { 47340, 0x00000004 }, /* GL_TRIANGLES */ - { 47353, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY */ - { 47376, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY_ARB */ - { 47403, 0x00000006 }, /* GL_TRIANGLE_FAN */ - { 47419, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */ - { 47440, 0x00000005 }, /* GL_TRIANGLE_STRIP */ - { 47458, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY */ - { 47486, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY_ARB */ - { 47518, 0x00000001 }, /* GL_TRUE */ - { 47526, 0x00008A1C }, /* GL_UNDEFINED_APPLE */ - { 47545, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */ - { 47565, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */ - { 47588, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */ - { 47608, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */ - { 47629, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */ - { 47651, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */ - { 47673, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */ - { 47693, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */ - { 47714, 0x00009118 }, /* GL_UNSIGNALED */ - { 47728, 0x00001401 }, /* GL_UNSIGNED_BYTE */ - { 47745, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */ - { 47772, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */ - { 47795, 0x00001405 }, /* GL_UNSIGNED_INT */ - { 47811, 0x00008C3B }, /* GL_UNSIGNED_INT_10F_11F_11F_REV */ - { 47843, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */ - { 47870, 0x00008DF6 }, /* GL_UNSIGNED_INT_10_10_10_2_OES */ - { 47901, 0x000084FA }, /* GL_UNSIGNED_INT_24_8 */ - { 47922, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_EXT */ - { 47947, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */ - { 47971, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_OES */ - { 47996, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */ - { 48027, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV_EXT */ - { 48062, 0x00008C3E }, /* GL_UNSIGNED_INT_5_9_9_9_REV */ - { 48090, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */ - { 48114, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */ - { 48142, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D */ - { 48169, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */ - { 48202, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT */ - { 48239, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D_EXT */ - { 48270, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D */ - { 48297, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */ - { 48330, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT */ - { 48367, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D_EXT */ - { 48398, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */ - { 48430, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT */ - { 48466, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D */ - { 48493, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D_EXT */ - { 48524, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */ - { 48555, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT */ - { 48590, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE */ - { 48619, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE_EXT */ - { 48652, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2 */ - { 48673, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2_EXT */ - { 48698, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3 */ - { 48719, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3_EXT */ - { 48744, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4 */ - { 48765, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4_EXT */ - { 48790, 0x00008C17 }, /* GL_UNSIGNED_NORMALIZED */ - { 48813, 0x00001403 }, /* GL_UNSIGNED_SHORT */ - { 48831, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ - { 48861, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT */ - { 48895, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */ - { 48921, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ - { 48951, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT */ - { 48985, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */ - { 49011, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */ - { 49035, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */ - { 49063, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */ - { 49091, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */ - { 49118, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ - { 49150, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */ - { 49181, 0x00008CA2 }, /* GL_UPPER_LEFT */ - { 49195, 0x00002A20 }, /* GL_V2F */ - { 49202, 0x00002A21 }, /* GL_V3F */ - { 49209, 0x00008B83 }, /* GL_VALIDATE_STATUS */ - { 49228, 0x00001F00 }, /* GL_VENDOR */ - { 49238, 0x00001F02 }, /* GL_VERSION */ - { 49249, 0x00008074 }, /* GL_VERTEX_ARRAY */ - { 49265, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING */ - { 49289, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */ - { 49319, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ - { 49350, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */ - { 49385, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */ - { 49409, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */ - { 49430, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */ - { 49453, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */ - { 49474, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ - { 49501, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ - { 49529, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ - { 49557, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ - { 49585, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ - { 49613, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ - { 49641, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ - { 49669, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ - { 49696, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ - { 49723, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ - { 49750, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ - { 49777, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ - { 49804, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ - { 49831, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ - { 49858, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ - { 49885, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ - { 49912, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ - { 49950, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */ - { 49992, 0x000088FE }, /* GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB */ - { 50027, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ - { 50058, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */ - { 50093, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */ - { 50124, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT */ - { 50159, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ - { 50193, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */ - { 50231, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ - { 50262, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */ - { 50297, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ - { 50325, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */ - { 50357, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ - { 50387, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */ - { 50421, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ - { 50449, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */ - { 50481, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */ - { 50501, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */ - { 50523, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */ - { 50552, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */ - { 50573, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */ - { 50602, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */ - { 50635, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */ - { 50667, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */ - { 50694, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */ - { 50725, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */ - { 50755, 0x00008B31 }, /* GL_VERTEX_SHADER */ - { 50772, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */ - { 50793, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */ - { 50820, 0x00000BA2 }, /* GL_VIEWPORT */ - { 50832, 0x00000800 }, /* GL_VIEWPORT_BIT */ - { 50848, 0x00008A1A }, /* GL_VOLATILE_APPLE */ - { 50866, 0x0000911D }, /* GL_WAIT_FAILED */ - { 50881, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */ - { 50901, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ - { 50932, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */ - { 50967, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_OES */ - { 51002, 0x000086AD }, /* GL_WEIGHT_ARRAY_OES */ - { 51022, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */ - { 51050, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_OES */ - { 51078, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */ - { 51103, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_OES */ - { 51128, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ - { 51155, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_OES */ - { 51182, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */ - { 51207, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_OES */ - { 51232, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */ - { 51256, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */ - { 51275, 0x000088B9 }, /* GL_WRITE_ONLY */ - { 51289, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */ - { 51307, 0x000088B9 }, /* GL_WRITE_ONLY_OES */ - { 51325, 0x00001506 }, /* GL_XOR */ - { 51332, 0x000085B9 }, /* GL_YCBCR_422_APPLE */ - { 51351, 0x00008757 }, /* GL_YCBCR_MESA */ - { 51365, 0x00000000 }, /* GL_ZERO */ - { 51373, 0x00000D16 }, /* GL_ZOOM_X */ - { 51383, 0x00000D17 }, /* GL_ZOOM_Y */ + { 2717, 0x0000891B }, /* GL_CLAMP_FRAGMENT_COLOR_ARB */ + { 2745, 0x0000891C }, /* GL_CLAMP_READ_COLOR */ + { 2765, 0x0000891C }, /* GL_CLAMP_READ_COLOR_ARB */ + { 2789, 0x0000812D }, /* GL_CLAMP_TO_BORDER */ + { 2808, 0x0000812D }, /* GL_CLAMP_TO_BORDER_ARB */ + { 2831, 0x0000812D }, /* GL_CLAMP_TO_BORDER_SGIS */ + { 2855, 0x0000812F }, /* GL_CLAMP_TO_EDGE */ + { 2872, 0x0000812F }, /* GL_CLAMP_TO_EDGE_SGIS */ + { 2894, 0x0000891A }, /* GL_CLAMP_VERTEX_COLOR_ARB */ + { 2920, 0x00001500 }, /* GL_CLEAR */ + { 2929, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE */ + { 2954, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE_ARB */ + { 2983, 0xFFFFFFFF }, /* GL_CLIENT_ALL_ATTRIB_BITS */ + { 3009, 0x00000BB1 }, /* GL_CLIENT_ATTRIB_STACK_DEPTH */ + { 3038, 0x00000001 }, /* GL_CLIENT_PIXEL_STORE_BIT */ + { 3064, 0x00000002 }, /* GL_CLIENT_VERTEX_ARRAY_BIT */ + { 3091, 0x00003000 }, /* GL_CLIP_DISTANCE0 */ + { 3109, 0x00003001 }, /* GL_CLIP_DISTANCE1 */ + { 3127, 0x00003002 }, /* GL_CLIP_DISTANCE2 */ + { 3145, 0x00003003 }, /* GL_CLIP_DISTANCE3 */ + { 3163, 0x00003004 }, /* GL_CLIP_DISTANCE4 */ + { 3181, 0x00003005 }, /* GL_CLIP_DISTANCE5 */ + { 3199, 0x00003006 }, /* GL_CLIP_DISTANCE6 */ + { 3217, 0x00003007 }, /* GL_CLIP_DISTANCE7 */ + { 3235, 0x00003000 }, /* GL_CLIP_PLANE0 */ + { 3250, 0x00003001 }, /* GL_CLIP_PLANE1 */ + { 3265, 0x00003002 }, /* GL_CLIP_PLANE2 */ + { 3280, 0x00003003 }, /* GL_CLIP_PLANE3 */ + { 3295, 0x00003004 }, /* GL_CLIP_PLANE4 */ + { 3310, 0x00003005 }, /* GL_CLIP_PLANE5 */ + { 3325, 0x000080F0 }, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */ + { 3358, 0x00000A00 }, /* GL_COEFF */ + { 3367, 0x00001800 }, /* GL_COLOR */ + { 3376, 0x00008076 }, /* GL_COLOR_ARRAY */ + { 3391, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING */ + { 3421, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING_ARB */ + { 3455, 0x00008090 }, /* GL_COLOR_ARRAY_POINTER */ + { 3478, 0x00008081 }, /* GL_COLOR_ARRAY_SIZE */ + { 3498, 0x00008083 }, /* GL_COLOR_ARRAY_STRIDE */ + { 3520, 0x00008082 }, /* GL_COLOR_ARRAY_TYPE */ + { 3540, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0 */ + { 3561, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_EXT */ + { 3586, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_OES */ + { 3611, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1 */ + { 3632, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10 */ + { 3654, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10_EXT */ + { 3680, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11 */ + { 3702, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11_EXT */ + { 3728, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12 */ + { 3750, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12_EXT */ + { 3776, 0x00008CED }, /* GL_COLOR_ATTACHMENT13 */ + { 3798, 0x00008CED }, /* GL_COLOR_ATTACHMENT13_EXT */ + { 3824, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14 */ + { 3846, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14_EXT */ + { 3872, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15 */ + { 3894, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15_EXT */ + { 3920, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1_EXT */ + { 3945, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2 */ + { 3966, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2_EXT */ + { 3991, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3 */ + { 4012, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3_EXT */ + { 4037, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4 */ + { 4058, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4_EXT */ + { 4083, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5 */ + { 4104, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5_EXT */ + { 4129, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6 */ + { 4150, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6_EXT */ + { 4175, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7 */ + { 4196, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7_EXT */ + { 4221, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8 */ + { 4242, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8_EXT */ + { 4267, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9 */ + { 4288, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9_EXT */ + { 4313, 0x00004000 }, /* GL_COLOR_BUFFER_BIT */ + { 4333, 0x00000C22 }, /* GL_COLOR_CLEAR_VALUE */ + { 4354, 0x00001900 }, /* GL_COLOR_INDEX */ + { 4369, 0x00001603 }, /* GL_COLOR_INDEXES */ + { 4386, 0x00000BF2 }, /* GL_COLOR_LOGIC_OP */ + { 4404, 0x00000B57 }, /* GL_COLOR_MATERIAL */ + { 4422, 0x00000B55 }, /* GL_COLOR_MATERIAL_FACE */ + { 4445, 0x00000B56 }, /* GL_COLOR_MATERIAL_PARAMETER */ + { 4473, 0x000080B1 }, /* GL_COLOR_MATRIX */ + { 4489, 0x000080B1 }, /* GL_COLOR_MATRIX_SGI */ + { 4509, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH */ + { 4537, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH_SGI */ + { 4569, 0x00008458 }, /* GL_COLOR_SUM */ + { 4582, 0x00008458 }, /* GL_COLOR_SUM_ARB */ + { 4599, 0x000080D0 }, /* GL_COLOR_TABLE */ + { 4614, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE */ + { 4640, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_EXT */ + { 4670, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_SGI */ + { 4700, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS */ + { 4720, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS_SGI */ + { 4744, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE */ + { 4769, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_EXT */ + { 4798, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_SGI */ + { 4827, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT */ + { 4849, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_EXT */ + { 4875, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_SGI */ + { 4901, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE */ + { 4927, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_EXT */ + { 4957, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_SGI */ + { 4987, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE */ + { 5017, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_EXT */ + { 5051, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_SGI */ + { 5085, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE */ + { 5115, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_EXT */ + { 5149, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_SGI */ + { 5183, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE */ + { 5207, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_EXT */ + { 5235, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_SGI */ + { 5263, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE */ + { 5284, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE_SGI */ + { 5309, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH */ + { 5330, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_EXT */ + { 5355, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_SGI */ + { 5380, 0x00000C23 }, /* GL_COLOR_WRITEMASK */ + { 5399, 0x00008570 }, /* GL_COMBINE */ + { 5410, 0x00008503 }, /* GL_COMBINE4 */ + { 5422, 0x00008572 }, /* GL_COMBINE_ALPHA */ + { 5439, 0x00008572 }, /* GL_COMBINE_ALPHA_ARB */ + { 5460, 0x00008572 }, /* GL_COMBINE_ALPHA_EXT */ + { 5481, 0x00008570 }, /* GL_COMBINE_ARB */ + { 5496, 0x00008570 }, /* GL_COMBINE_EXT */ + { 5511, 0x00008571 }, /* GL_COMBINE_RGB */ + { 5526, 0x00008571 }, /* GL_COMBINE_RGB_ARB */ + { 5545, 0x00008571 }, /* GL_COMBINE_RGB_EXT */ + { 5564, 0x0000884E }, /* GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT */ + { 5600, 0x0000884E }, /* GL_COMPARE_REF_TO_TEXTURE */ + { 5626, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE */ + { 5650, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE_ARB */ + { 5678, 0x00001300 }, /* GL_COMPILE */ + { 5689, 0x00001301 }, /* GL_COMPILE_AND_EXECUTE */ + { 5712, 0x00008B81 }, /* GL_COMPILE_STATUS */ + { 5730, 0x000084E9 }, /* GL_COMPRESSED_ALPHA */ + { 5750, 0x000084E9 }, /* GL_COMPRESSED_ALPHA_ARB */ + { 5774, 0x000084EC }, /* GL_COMPRESSED_INTENSITY */ + { 5798, 0x000084EC }, /* GL_COMPRESSED_INTENSITY_ARB */ + { 5826, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE */ + { 5850, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA */ + { 5880, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA_ARB */ + { 5914, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE_ARB */ + { 5942, 0x00008225 }, /* GL_COMPRESSED_RED */ + { 5960, 0x00008226 }, /* GL_COMPRESSED_RG */ + { 5977, 0x000084ED }, /* GL_COMPRESSED_RGB */ + { 5995, 0x000084EE }, /* GL_COMPRESSED_RGBA */ + { 6014, 0x000084EE }, /* GL_COMPRESSED_RGBA_ARB */ + { 6037, 0x000086B1 }, /* GL_COMPRESSED_RGBA_FXT1_3DFX */ + { 6066, 0x000083F1 }, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */ + { 6099, 0x000083F2 }, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */ + { 6132, 0x000083F3 }, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */ + { 6165, 0x000084ED }, /* GL_COMPRESSED_RGB_ARB */ + { 6187, 0x000086B0 }, /* GL_COMPRESSED_RGB_FXT1_3DFX */ + { 6215, 0x000083F0 }, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */ + { 6247, 0x00008C4A }, /* GL_COMPRESSED_SLUMINANCE */ + { 6272, 0x00008C4B }, /* GL_COMPRESSED_SLUMINANCE_ALPHA */ + { 6303, 0x00008C48 }, /* GL_COMPRESSED_SRGB */ + { 6322, 0x00008C49 }, /* GL_COMPRESSED_SRGB_ALPHA */ + { 6347, 0x000086A3 }, /* GL_COMPRESSED_TEXTURE_FORMATS */ + { 6377, 0x0000911C }, /* GL_CONDITION_SATISFIED */ + { 6400, 0x00008576 }, /* GL_CONSTANT */ + { 6412, 0x00008003 }, /* GL_CONSTANT_ALPHA */ + { 6430, 0x00008003 }, /* GL_CONSTANT_ALPHA_EXT */ + { 6452, 0x00008576 }, /* GL_CONSTANT_ARB */ + { 6468, 0x00001207 }, /* GL_CONSTANT_ATTENUATION */ + { 6492, 0x00008151 }, /* GL_CONSTANT_BORDER_HP */ + { 6514, 0x00008001 }, /* GL_CONSTANT_COLOR */ + { 6532, 0x00008001 }, /* GL_CONSTANT_COLOR_EXT */ + { 6554, 0x00008576 }, /* GL_CONSTANT_EXT */ + { 6570, 0x00000002 }, /* GL_CONTEXT_COMPATIBILITY_PROFILE_BIT */ + { 6607, 0x00000001 }, /* GL_CONTEXT_CORE_PROFILE_BIT */ + { 6635, 0x0000821E }, /* GL_CONTEXT_FLAGS */ + { 6652, 0x00000001 }, /* GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT */ + { 6691, 0x00009126 }, /* GL_CONTEXT_PROFILE_MASK */ + { 6715, 0x00008010 }, /* GL_CONVOLUTION_1D */ + { 6733, 0x00008011 }, /* GL_CONVOLUTION_2D */ + { 6751, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR */ + { 6779, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR_HP */ + { 6810, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE */ + { 6837, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE_EXT */ + { 6868, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS */ + { 6895, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS_EXT */ + { 6926, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE */ + { 6954, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE_EXT */ + { 6986, 0x00008017 }, /* GL_CONVOLUTION_FORMAT */ + { 7008, 0x00008017 }, /* GL_CONVOLUTION_FORMAT_EXT */ + { 7034, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT */ + { 7056, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT_EXT */ + { 7082, 0x00008018 }, /* GL_CONVOLUTION_WIDTH */ + { 7103, 0x00008018 }, /* GL_CONVOLUTION_WIDTH_EXT */ + { 7128, 0x00008862 }, /* GL_COORD_REPLACE */ + { 7145, 0x00008862 }, /* GL_COORD_REPLACE_ARB */ + { 7166, 0x00008862 }, /* GL_COORD_REPLACE_NV */ + { 7186, 0x00008862 }, /* GL_COORD_REPLACE_OES */ + { 7207, 0x00001503 }, /* GL_COPY */ + { 7215, 0x0000150C }, /* GL_COPY_INVERTED */ + { 7232, 0x00000706 }, /* GL_COPY_PIXEL_TOKEN */ + { 7252, 0x00008F36 }, /* GL_COPY_READ_BUFFER */ + { 7272, 0x00008F37 }, /* GL_COPY_WRITE_BUFFER */ + { 7293, 0x00000B44 }, /* GL_CULL_FACE */ + { 7306, 0x00000B45 }, /* GL_CULL_FACE_MODE */ + { 7324, 0x000081AA }, /* GL_CULL_VERTEX_EXT */ + { 7343, 0x000081AC }, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ + { 7375, 0x000081AB }, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ + { 7410, 0x00008626 }, /* GL_CURRENT_ATTRIB_NV */ + { 7431, 0x00000001 }, /* GL_CURRENT_BIT */ + { 7446, 0x00000B00 }, /* GL_CURRENT_COLOR */ + { 7463, 0x00008453 }, /* GL_CURRENT_FOG_COORD */ + { 7484, 0x00008453 }, /* GL_CURRENT_FOG_COORDINATE */ + { 7510, 0x00000B01 }, /* GL_CURRENT_INDEX */ + { 7527, 0x00008641 }, /* GL_CURRENT_MATRIX_ARB */ + { 7549, 0x00008845 }, /* GL_CURRENT_MATRIX_INDEX_ARB */ + { 7577, 0x00008641 }, /* GL_CURRENT_MATRIX_NV */ + { 7598, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ + { 7632, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_NV */ + { 7665, 0x00000B02 }, /* GL_CURRENT_NORMAL */ + { 7683, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_ARB */ + { 7713, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_OES */ + { 7743, 0x00008B8D }, /* GL_CURRENT_PROGRAM */ + { 7762, 0x00008865 }, /* GL_CURRENT_QUERY */ + { 7779, 0x00008865 }, /* GL_CURRENT_QUERY_ARB */ + { 7800, 0x00000B04 }, /* GL_CURRENT_RASTER_COLOR */ + { 7824, 0x00000B09 }, /* GL_CURRENT_RASTER_DISTANCE */ + { 7851, 0x00000B05 }, /* GL_CURRENT_RASTER_INDEX */ + { 7875, 0x00000B07 }, /* GL_CURRENT_RASTER_POSITION */ + { 7902, 0x00000B08 }, /* GL_CURRENT_RASTER_POSITION_VALID */ + { 7935, 0x0000845F }, /* GL_CURRENT_RASTER_SECONDARY_COLOR */ + { 7969, 0x00000B06 }, /* GL_CURRENT_RASTER_TEXTURE_COORDS */ + { 8002, 0x00008459 }, /* GL_CURRENT_SECONDARY_COLOR */ + { 8029, 0x00000B03 }, /* GL_CURRENT_TEXTURE_COORDS */ + { 8055, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB */ + { 8080, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB_ARB */ + { 8109, 0x000086A8 }, /* GL_CURRENT_WEIGHT_ARB */ + { 8131, 0x00000900 }, /* GL_CW */ + { 8137, 0x0000875B }, /* GL_DEBUG_ASSERT_MESA */ + { 8158, 0x00008759 }, /* GL_DEBUG_OBJECT_MESA */ + { 8179, 0x0000875A }, /* GL_DEBUG_PRINT_MESA */ + { 8199, 0x00002101 }, /* GL_DECAL */ + { 8208, 0x00001E03 }, /* GL_DECR */ + { 8216, 0x00008508 }, /* GL_DECR_WRAP */ + { 8229, 0x00008508 }, /* GL_DECR_WRAP_EXT */ + { 8246, 0x00008B80 }, /* GL_DELETE_STATUS */ + { 8263, 0x00001801 }, /* GL_DEPTH */ + { 8272, 0x000088F0 }, /* GL_DEPTH24_STENCIL8 */ + { 8292, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_EXT */ + { 8316, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_OES */ + { 8340, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT */ + { 8360, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_EXT */ + { 8384, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_OES */ + { 8408, 0x00000D1F }, /* GL_DEPTH_BIAS */ + { 8422, 0x00000D56 }, /* GL_DEPTH_BITS */ + { 8436, 0x00008891 }, /* GL_DEPTH_BOUNDS_EXT */ + { 8456, 0x00008890 }, /* GL_DEPTH_BOUNDS_TEST_EXT */ + { 8481, 0x00008223 }, /* GL_DEPTH_BUFFER */ + { 8497, 0x00000100 }, /* GL_DEPTH_BUFFER_BIT */ + { 8517, 0x0000864F }, /* GL_DEPTH_CLAMP */ + { 8532, 0x0000864F }, /* GL_DEPTH_CLAMP_NV */ + { 8550, 0x00000B73 }, /* GL_DEPTH_CLEAR_VALUE */ + { 8571, 0x00001902 }, /* GL_DEPTH_COMPONENT */ + { 8590, 0x000081A5 }, /* GL_DEPTH_COMPONENT16 */ + { 8611, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_ARB */ + { 8636, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_OES */ + { 8661, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_SGIX */ + { 8687, 0x000081A6 }, /* GL_DEPTH_COMPONENT24 */ + { 8708, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_ARB */ + { 8733, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_OES */ + { 8758, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_SGIX */ + { 8784, 0x000081A7 }, /* GL_DEPTH_COMPONENT32 */ + { 8805, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_ARB */ + { 8830, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_OES */ + { 8855, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_SGIX */ + { 8881, 0x00000B74 }, /* GL_DEPTH_FUNC */ + { 8895, 0x00000B70 }, /* GL_DEPTH_RANGE */ + { 8910, 0x00000D1E }, /* GL_DEPTH_SCALE */ + { 8925, 0x000084F9 }, /* GL_DEPTH_STENCIL */ + { 8942, 0x0000821A }, /* GL_DEPTH_STENCIL_ATTACHMENT */ + { 8970, 0x000084F9 }, /* GL_DEPTH_STENCIL_EXT */ + { 8991, 0x000084F9 }, /* GL_DEPTH_STENCIL_NV */ + { 9011, 0x000084F9 }, /* GL_DEPTH_STENCIL_OES */ + { 9032, 0x0000886F }, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ + { 9060, 0x0000886E }, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ + { 9088, 0x00000B71 }, /* GL_DEPTH_TEST */ + { 9102, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE */ + { 9124, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE_ARB */ + { 9150, 0x00000B72 }, /* GL_DEPTH_WRITEMASK */ + { 9169, 0x00001201 }, /* GL_DIFFUSE */ + { 9180, 0x00000BD0 }, /* GL_DITHER */ + { 9190, 0x00000A02 }, /* GL_DOMAIN */ + { 9200, 0x00001100 }, /* GL_DONT_CARE */ + { 9213, 0x000086AE }, /* GL_DOT3_RGB */ + { 9225, 0x000086AF }, /* GL_DOT3_RGBA */ + { 9238, 0x000086AF }, /* GL_DOT3_RGBA_ARB */ + { 9255, 0x00008741 }, /* GL_DOT3_RGBA_EXT */ + { 9272, 0x000086AE }, /* GL_DOT3_RGB_ARB */ + { 9288, 0x00008740 }, /* GL_DOT3_RGB_EXT */ + { 9304, 0x0000140A }, /* GL_DOUBLE */ + { 9314, 0x00000C32 }, /* GL_DOUBLEBUFFER */ + { 9330, 0x00000C01 }, /* GL_DRAW_BUFFER */ + { 9345, 0x00008825 }, /* GL_DRAW_BUFFER0 */ + { 9361, 0x00008825 }, /* GL_DRAW_BUFFER0_ARB */ + { 9381, 0x00008825 }, /* GL_DRAW_BUFFER0_ATI */ + { 9401, 0x00008826 }, /* GL_DRAW_BUFFER1 */ + { 9417, 0x0000882F }, /* GL_DRAW_BUFFER10 */ + { 9434, 0x0000882F }, /* GL_DRAW_BUFFER10_ARB */ + { 9455, 0x0000882F }, /* GL_DRAW_BUFFER10_ATI */ + { 9476, 0x00008830 }, /* GL_DRAW_BUFFER11 */ + { 9493, 0x00008830 }, /* GL_DRAW_BUFFER11_ARB */ + { 9514, 0x00008830 }, /* GL_DRAW_BUFFER11_ATI */ + { 9535, 0x00008831 }, /* GL_DRAW_BUFFER12 */ + { 9552, 0x00008831 }, /* GL_DRAW_BUFFER12_ARB */ + { 9573, 0x00008831 }, /* GL_DRAW_BUFFER12_ATI */ + { 9594, 0x00008832 }, /* GL_DRAW_BUFFER13 */ + { 9611, 0x00008832 }, /* GL_DRAW_BUFFER13_ARB */ + { 9632, 0x00008832 }, /* GL_DRAW_BUFFER13_ATI */ + { 9653, 0x00008833 }, /* GL_DRAW_BUFFER14 */ + { 9670, 0x00008833 }, /* GL_DRAW_BUFFER14_ARB */ + { 9691, 0x00008833 }, /* GL_DRAW_BUFFER14_ATI */ + { 9712, 0x00008834 }, /* GL_DRAW_BUFFER15 */ + { 9729, 0x00008834 }, /* GL_DRAW_BUFFER15_ARB */ + { 9750, 0x00008834 }, /* GL_DRAW_BUFFER15_ATI */ + { 9771, 0x00008826 }, /* GL_DRAW_BUFFER1_ARB */ + { 9791, 0x00008826 }, /* GL_DRAW_BUFFER1_ATI */ + { 9811, 0x00008827 }, /* GL_DRAW_BUFFER2 */ + { 9827, 0x00008827 }, /* GL_DRAW_BUFFER2_ARB */ + { 9847, 0x00008827 }, /* GL_DRAW_BUFFER2_ATI */ + { 9867, 0x00008828 }, /* GL_DRAW_BUFFER3 */ + { 9883, 0x00008828 }, /* GL_DRAW_BUFFER3_ARB */ + { 9903, 0x00008828 }, /* GL_DRAW_BUFFER3_ATI */ + { 9923, 0x00008829 }, /* GL_DRAW_BUFFER4 */ + { 9939, 0x00008829 }, /* GL_DRAW_BUFFER4_ARB */ + { 9959, 0x00008829 }, /* GL_DRAW_BUFFER4_ATI */ + { 9979, 0x0000882A }, /* GL_DRAW_BUFFER5 */ + { 9995, 0x0000882A }, /* GL_DRAW_BUFFER5_ARB */ + { 10015, 0x0000882A }, /* GL_DRAW_BUFFER5_ATI */ + { 10035, 0x0000882B }, /* GL_DRAW_BUFFER6 */ + { 10051, 0x0000882B }, /* GL_DRAW_BUFFER6_ARB */ + { 10071, 0x0000882B }, /* GL_DRAW_BUFFER6_ATI */ + { 10091, 0x0000882C }, /* GL_DRAW_BUFFER7 */ + { 10107, 0x0000882C }, /* GL_DRAW_BUFFER7_ARB */ + { 10127, 0x0000882C }, /* GL_DRAW_BUFFER7_ATI */ + { 10147, 0x0000882D }, /* GL_DRAW_BUFFER8 */ + { 10163, 0x0000882D }, /* GL_DRAW_BUFFER8_ARB */ + { 10183, 0x0000882D }, /* GL_DRAW_BUFFER8_ATI */ + { 10203, 0x0000882E }, /* GL_DRAW_BUFFER9 */ + { 10219, 0x0000882E }, /* GL_DRAW_BUFFER9_ARB */ + { 10239, 0x0000882E }, /* GL_DRAW_BUFFER9_ATI */ + { 10259, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER */ + { 10279, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING */ + { 10307, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */ + { 10339, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER_EXT */ + { 10363, 0x00000705 }, /* GL_DRAW_PIXEL_TOKEN */ + { 10383, 0x00000304 }, /* GL_DST_ALPHA */ + { 10396, 0x00000306 }, /* GL_DST_COLOR */ + { 10409, 0x0000877A }, /* GL_DU8DV8_ATI */ + { 10423, 0x00008779 }, /* GL_DUDV_ATI */ + { 10435, 0x000088EA }, /* GL_DYNAMIC_COPY */ + { 10451, 0x000088EA }, /* GL_DYNAMIC_COPY_ARB */ + { 10471, 0x000088E8 }, /* GL_DYNAMIC_DRAW */ + { 10487, 0x000088E8 }, /* GL_DYNAMIC_DRAW_ARB */ + { 10507, 0x000088E9 }, /* GL_DYNAMIC_READ */ + { 10523, 0x000088E9 }, /* GL_DYNAMIC_READ_ARB */ + { 10543, 0x00000B43 }, /* GL_EDGE_FLAG */ + { 10556, 0x00008079 }, /* GL_EDGE_FLAG_ARRAY */ + { 10575, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ + { 10609, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB */ + { 10647, 0x00008093 }, /* GL_EDGE_FLAG_ARRAY_POINTER */ + { 10674, 0x0000808C }, /* GL_EDGE_FLAG_ARRAY_STRIDE */ + { 10700, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER */ + { 10724, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ + { 10756, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB */ + { 10792, 0x00001600 }, /* GL_EMISSION */ + { 10804, 0x00002000 }, /* GL_ENABLE_BIT */ + { 10818, 0x00000202 }, /* GL_EQUAL */ + { 10827, 0x00001509 }, /* GL_EQUIV */ + { 10836, 0x00010000 }, /* GL_EVAL_BIT */ + { 10848, 0x00000800 }, /* GL_EXP */ + { 10855, 0x00000801 }, /* GL_EXP2 */ + { 10863, 0x00001F03 }, /* GL_EXTENSIONS */ + { 10877, 0x00002400 }, /* GL_EYE_LINEAR */ + { 10891, 0x00002502 }, /* GL_EYE_PLANE */ + { 10904, 0x0000855C }, /* GL_EYE_PLANE_ABSOLUTE_NV */ + { 10929, 0x0000855B }, /* GL_EYE_RADIAL_NV */ + { 10946, 0x00000000 }, /* GL_FALSE */ + { 10955, 0x00001101 }, /* GL_FASTEST */ + { 10966, 0x00001C01 }, /* GL_FEEDBACK */ + { 10978, 0x00000DF0 }, /* GL_FEEDBACK_BUFFER_POINTER */ + { 11005, 0x00000DF1 }, /* GL_FEEDBACK_BUFFER_SIZE */ + { 11029, 0x00000DF2 }, /* GL_FEEDBACK_BUFFER_TYPE */ + { 11053, 0x00001B02 }, /* GL_FILL */ + { 11061, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION */ + { 11088, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION_EXT */ + { 11119, 0x0000140C }, /* GL_FIXED */ + { 11128, 0x0000140C }, /* GL_FIXED_OES */ + { 11141, 0x0000891D }, /* GL_FIXED_ONLY */ + { 11155, 0x0000891D }, /* GL_FIXED_ONLY_ARB */ + { 11173, 0x00001D00 }, /* GL_FLAT */ + { 11181, 0x00001406 }, /* GL_FLOAT */ + { 11190, 0x00008B5A }, /* GL_FLOAT_MAT2 */ + { 11204, 0x00008B5A }, /* GL_FLOAT_MAT2_ARB */ + { 11222, 0x00008B65 }, /* GL_FLOAT_MAT2x3 */ + { 11238, 0x00008B66 }, /* GL_FLOAT_MAT2x4 */ + { 11254, 0x00008B5B }, /* GL_FLOAT_MAT3 */ + { 11268, 0x00008B5B }, /* GL_FLOAT_MAT3_ARB */ + { 11286, 0x00008B67 }, /* GL_FLOAT_MAT3x2 */ + { 11302, 0x00008B68 }, /* GL_FLOAT_MAT3x4 */ + { 11318, 0x00008B5C }, /* GL_FLOAT_MAT4 */ + { 11332, 0x00008B5C }, /* GL_FLOAT_MAT4_ARB */ + { 11350, 0x00008B69 }, /* GL_FLOAT_MAT4x2 */ + { 11366, 0x00008B6A }, /* GL_FLOAT_MAT4x3 */ + { 11382, 0x00008B50 }, /* GL_FLOAT_VEC2 */ + { 11396, 0x00008B50 }, /* GL_FLOAT_VEC2_ARB */ + { 11414, 0x00008B51 }, /* GL_FLOAT_VEC3 */ + { 11428, 0x00008B51 }, /* GL_FLOAT_VEC3_ARB */ + { 11446, 0x00008B52 }, /* GL_FLOAT_VEC4 */ + { 11460, 0x00008B52 }, /* GL_FLOAT_VEC4_ARB */ + { 11478, 0x00000B60 }, /* GL_FOG */ + { 11485, 0x00000080 }, /* GL_FOG_BIT */ + { 11496, 0x00000B66 }, /* GL_FOG_COLOR */ + { 11509, 0x00008451 }, /* GL_FOG_COORD */ + { 11522, 0x00008451 }, /* GL_FOG_COORDINATE */ + { 11540, 0x00008457 }, /* GL_FOG_COORDINATE_ARRAY */ + { 11564, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ + { 11603, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB */ + { 11646, 0x00008456 }, /* GL_FOG_COORDINATE_ARRAY_POINTER */ + { 11678, 0x00008455 }, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ + { 11709, 0x00008454 }, /* GL_FOG_COORDINATE_ARRAY_TYPE */ + { 11738, 0x00008450 }, /* GL_FOG_COORDINATE_SOURCE */ + { 11763, 0x00008457 }, /* GL_FOG_COORD_ARRAY */ + { 11782, 0x0000889D }, /* GL_FOG_COORD_ARRAY_BUFFER_BINDING */ + { 11816, 0x00008456 }, /* GL_FOG_COORD_ARRAY_POINTER */ + { 11843, 0x00008455 }, /* GL_FOG_COORD_ARRAY_STRIDE */ + { 11869, 0x00008454 }, /* GL_FOG_COORD_ARRAY_TYPE */ + { 11893, 0x00008450 }, /* GL_FOG_COORD_SRC */ + { 11910, 0x00000B62 }, /* GL_FOG_DENSITY */ + { 11925, 0x0000855A }, /* GL_FOG_DISTANCE_MODE_NV */ + { 11949, 0x00000B64 }, /* GL_FOG_END */ + { 11960, 0x00000C54 }, /* GL_FOG_HINT */ + { 11972, 0x00000B61 }, /* GL_FOG_INDEX */ + { 11985, 0x00000B65 }, /* GL_FOG_MODE */ + { 11997, 0x00008198 }, /* GL_FOG_OFFSET_SGIX */ + { 12016, 0x00008199 }, /* GL_FOG_OFFSET_VALUE_SGIX */ + { 12041, 0x00000B63 }, /* GL_FOG_START */ + { 12054, 0x00008452 }, /* GL_FRAGMENT_DEPTH */ + { 12072, 0x00008804 }, /* GL_FRAGMENT_PROGRAM_ARB */ + { 12096, 0x00008B30 }, /* GL_FRAGMENT_SHADER */ + { 12115, 0x00008B30 }, /* GL_FRAGMENT_SHADER_ARB */ + { 12138, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ + { 12173, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES */ + { 12212, 0x00008D40 }, /* GL_FRAMEBUFFER */ + { 12227, 0x00008215 }, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ + { 12264, 0x00008214 }, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ + { 12300, 0x00008210 }, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ + { 12341, 0x00008211 }, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ + { 12382, 0x00008216 }, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ + { 12419, 0x00008213 }, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ + { 12456, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */ + { 12490, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB */ + { 12528, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ + { 12566, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */ + { 12608, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES */ + { 12650, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ + { 12688, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */ + { 12730, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES */ + { 12772, 0x00008212 }, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ + { 12807, 0x00008217 }, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ + { 12846, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */ + { 12895, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES */ + { 12944, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ + { 12992, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */ + { 13044, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES */ + { 13096, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ + { 13136, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */ + { 13180, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ + { 13220, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */ + { 13264, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES */ + { 13308, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING */ + { 13331, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_EXT */ + { 13358, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_OES */ + { 13385, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE */ + { 13409, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_EXT */ + { 13437, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_OES */ + { 13465, 0x00008218 }, /* GL_FRAMEBUFFER_DEFAULT */ + { 13488, 0x00008D40 }, /* GL_FRAMEBUFFER_EXT */ + { 13507, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ + { 13544, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */ + { 13585, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES */ + { 13626, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS */ + { 13663, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ + { 13704, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES */ + { 13745, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ + { 13783, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */ + { 13825, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES */ + { 13867, 0x00008CD8 }, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ + { 13918, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ + { 13956, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES */ + { 13994, 0x00008DA9 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */ + { 14036, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */ + { 14076, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB */ + { 14120, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ + { 14165, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */ + { 14214, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES */ + { 14263, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ + { 14301, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT */ + { 14343, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ + { 14381, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */ + { 14423, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES */ + { 14465, 0x00008D40 }, /* GL_FRAMEBUFFER_OES */ + { 14484, 0x00008CDE }, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ + { 14516, 0x00008219 }, /* GL_FRAMEBUFFER_UNDEFINED */ + { 14541, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED */ + { 14568, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */ + { 14599, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_OES */ + { 14630, 0x00000404 }, /* GL_FRONT */ + { 14639, 0x00000408 }, /* GL_FRONT_AND_BACK */ + { 14657, 0x00000B46 }, /* GL_FRONT_FACE */ + { 14671, 0x00000400 }, /* GL_FRONT_LEFT */ + { 14685, 0x00000401 }, /* GL_FRONT_RIGHT */ + { 14700, 0x00008006 }, /* GL_FUNC_ADD */ + { 14712, 0x00008006 }, /* GL_FUNC_ADD_EXT */ + { 14728, 0x00008006 }, /* GL_FUNC_ADD_OES */ + { 14744, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT */ + { 14769, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_EXT */ + { 14798, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_OES */ + { 14827, 0x0000800A }, /* GL_FUNC_SUBTRACT */ + { 14844, 0x0000800A }, /* GL_FUNC_SUBTRACT_EXT */ + { 14865, 0x0000800A }, /* GL_FUNC_SUBTRACT_OES */ + { 14886, 0x00008191 }, /* GL_GENERATE_MIPMAP */ + { 14905, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT */ + { 14929, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT_SGIS */ + { 14958, 0x00008191 }, /* GL_GENERATE_MIPMAP_SGIS */ + { 14982, 0x00008917 }, /* GL_GEOMETRY_INPUT_TYPE */ + { 15005, 0x00008DDB }, /* GL_GEOMETRY_INPUT_TYPE_ARB */ + { 15032, 0x00008918 }, /* GL_GEOMETRY_OUTPUT_TYPE */ + { 15056, 0x00008DDC }, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */ + { 15084, 0x00008DD9 }, /* GL_GEOMETRY_SHADER */ + { 15103, 0x00008DD9 }, /* GL_GEOMETRY_SHADER_ARB */ + { 15126, 0x00008916 }, /* GL_GEOMETRY_VERTICES_OUT */ + { 15151, 0x00008DDA }, /* GL_GEOMETRY_VERTICES_OUT_ARB */ + { 15180, 0x00000206 }, /* GL_GEQUAL */ + { 15190, 0x00000204 }, /* GL_GREATER */ + { 15201, 0x00001904 }, /* GL_GREEN */ + { 15210, 0x00000D19 }, /* GL_GREEN_BIAS */ + { 15224, 0x00000D53 }, /* GL_GREEN_BITS */ + { 15238, 0x00008D95 }, /* GL_GREEN_INTEGER */ + { 15255, 0x00008D95 }, /* GL_GREEN_INTEGER_EXT */ + { 15276, 0x00000D18 }, /* GL_GREEN_SCALE */ + { 15291, 0x0000140B }, /* GL_HALF_FLOAT */ + { 15305, 0x00008D61 }, /* GL_HALF_FLOAT_OES */ + { 15323, 0x00008DF2 }, /* GL_HIGH_FLOAT */ + { 15337, 0x00008DF5 }, /* GL_HIGH_INT */ + { 15349, 0x00008000 }, /* GL_HINT_BIT */ + { 15361, 0x00008024 }, /* GL_HISTOGRAM */ + { 15374, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE */ + { 15398, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE_EXT */ + { 15426, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE */ + { 15449, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE_EXT */ + { 15476, 0x00008024 }, /* GL_HISTOGRAM_EXT */ + { 15493, 0x00008027 }, /* GL_HISTOGRAM_FORMAT */ + { 15513, 0x00008027 }, /* GL_HISTOGRAM_FORMAT_EXT */ + { 15537, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE */ + { 15561, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE_EXT */ + { 15589, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE */ + { 15617, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE_EXT */ + { 15649, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE */ + { 15671, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE_EXT */ + { 15697, 0x0000802D }, /* GL_HISTOGRAM_SINK */ + { 15715, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */ + { 15737, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */ + { 15756, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */ + { 15779, 0x0000862A }, /* GL_IDENTITY_NV */ + { 15794, 0x00008150 }, /* GL_IGNORE_BORDER_HP */ + { 15814, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */ + { 15850, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */ + { 15890, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */ + { 15924, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */ + { 15962, 0x00001E02 }, /* GL_INCR */ + { 15970, 0x00008507 }, /* GL_INCR_WRAP */ + { 15983, 0x00008507 }, /* GL_INCR_WRAP_EXT */ + { 16000, 0x00008222 }, /* GL_INDEX */ + { 16009, 0x00008077 }, /* GL_INDEX_ARRAY */ + { 16024, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */ + { 16054, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */ + { 16088, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */ + { 16111, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */ + { 16133, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */ + { 16153, 0x00000D51 }, /* GL_INDEX_BITS */ + { 16167, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */ + { 16188, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */ + { 16206, 0x00000C30 }, /* GL_INDEX_MODE */ + { 16220, 0x00000D13 }, /* GL_INDEX_OFFSET */ + { 16236, 0x00000D12 }, /* GL_INDEX_SHIFT */ + { 16251, 0x00000C21 }, /* GL_INDEX_WRITEMASK */ + { 16270, 0x00008B84 }, /* GL_INFO_LOG_LENGTH */ + { 16289, 0x00001404 }, /* GL_INT */ + { 16296, 0x00008049 }, /* GL_INTENSITY */ + { 16309, 0x0000804C }, /* GL_INTENSITY12 */ + { 16324, 0x0000804C }, /* GL_INTENSITY12_EXT */ + { 16343, 0x0000804D }, /* GL_INTENSITY16 */ + { 16358, 0x00008D8B }, /* GL_INTENSITY16I_EXT */ + { 16378, 0x00008D79 }, /* GL_INTENSITY16UI_EXT */ + { 16399, 0x0000804D }, /* GL_INTENSITY16_EXT */ + { 16418, 0x00008D85 }, /* GL_INTENSITY32I_EXT */ + { 16438, 0x00008D73 }, /* GL_INTENSITY32UI_EXT */ + { 16459, 0x0000804A }, /* GL_INTENSITY4 */ + { 16473, 0x0000804A }, /* GL_INTENSITY4_EXT */ + { 16491, 0x0000804B }, /* GL_INTENSITY8 */ + { 16505, 0x00008D91 }, /* GL_INTENSITY8I_EXT */ + { 16524, 0x00008D7F }, /* GL_INTENSITY8UI_EXT */ + { 16544, 0x0000804B }, /* GL_INTENSITY8_EXT */ + { 16562, 0x00008049 }, /* GL_INTENSITY_EXT */ + { 16579, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS */ + { 16602, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS_EXT */ + { 16629, 0x00008575 }, /* GL_INTERPOLATE */ + { 16644, 0x00008575 }, /* GL_INTERPOLATE_ARB */ + { 16663, 0x00008575 }, /* GL_INTERPOLATE_EXT */ + { 16682, 0x00008DF7 }, /* GL_INT_10_10_10_2_OES */ + { 16704, 0x00008DC9 }, /* GL_INT_SAMPLER_1D */ + { 16722, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY */ + { 16746, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY_EXT */ + { 16774, 0x00008DC9 }, /* GL_INT_SAMPLER_1D_EXT */ + { 16796, 0x00008DCA }, /* GL_INT_SAMPLER_2D */ + { 16814, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY */ + { 16838, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY_EXT */ + { 16866, 0x00008DCA }, /* GL_INT_SAMPLER_2D_EXT */ + { 16888, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT */ + { 16911, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT_EXT */ + { 16938, 0x00008DCB }, /* GL_INT_SAMPLER_3D */ + { 16956, 0x00008DCB }, /* GL_INT_SAMPLER_3D_EXT */ + { 16978, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER */ + { 17000, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER_EXT */ + { 17026, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE */ + { 17046, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE_EXT */ + { 17070, 0x00008B53 }, /* GL_INT_VEC2 */ + { 17082, 0x00008B53 }, /* GL_INT_VEC2_ARB */ + { 17098, 0x00008B54 }, /* GL_INT_VEC3 */ + { 17110, 0x00008B54 }, /* GL_INT_VEC3_ARB */ + { 17126, 0x00008B55 }, /* GL_INT_VEC4 */ + { 17138, 0x00008B55 }, /* GL_INT_VEC4_ARB */ + { 17154, 0x00000500 }, /* GL_INVALID_ENUM */ + { 17170, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION */ + { 17203, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */ + { 17240, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_OES */ + { 17277, 0x00000502 }, /* GL_INVALID_OPERATION */ + { 17298, 0x00000501 }, /* GL_INVALID_VALUE */ + { 17315, 0x0000862B }, /* GL_INVERSE_NV */ + { 17329, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */ + { 17353, 0x0000150A }, /* GL_INVERT */ + { 17363, 0x00001E00 }, /* GL_KEEP */ + { 17371, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION */ + { 17397, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION_EXT */ + { 17427, 0x00000406 }, /* GL_LEFT */ + { 17435, 0x00000203 }, /* GL_LEQUAL */ + { 17445, 0x00000201 }, /* GL_LESS */ + { 17453, 0x00004000 }, /* GL_LIGHT0 */ + { 17463, 0x00004001 }, /* GL_LIGHT1 */ + { 17473, 0x00004002 }, /* GL_LIGHT2 */ + { 17483, 0x00004003 }, /* GL_LIGHT3 */ + { 17493, 0x00004004 }, /* GL_LIGHT4 */ + { 17503, 0x00004005 }, /* GL_LIGHT5 */ + { 17513, 0x00004006 }, /* GL_LIGHT6 */ + { 17523, 0x00004007 }, /* GL_LIGHT7 */ + { 17533, 0x00000B50 }, /* GL_LIGHTING */ + { 17545, 0x00000040 }, /* GL_LIGHTING_BIT */ + { 17561, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */ + { 17584, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */ + { 17613, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */ + { 17646, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ + { 17674, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */ + { 17698, 0x00001B01 }, /* GL_LINE */ + { 17706, 0x00002601 }, /* GL_LINEAR */ + { 17716, 0x00001208 }, /* GL_LINEAR_ATTENUATION */ + { 17738, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ + { 17768, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ + { 17799, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */ + { 17823, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */ + { 17848, 0x00000001 }, /* GL_LINES */ + { 17857, 0x0000000A }, /* GL_LINES_ADJACENCY */ + { 17876, 0x0000000A }, /* GL_LINES_ADJACENCY_ARB */ + { 17899, 0x00000004 }, /* GL_LINE_BIT */ + { 17911, 0x00000002 }, /* GL_LINE_LOOP */ + { 17924, 0x00000707 }, /* GL_LINE_RESET_TOKEN */ + { 17944, 0x00000B20 }, /* GL_LINE_SMOOTH */ + { 17959, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */ + { 17979, 0x00000B24 }, /* GL_LINE_STIPPLE */ + { 17995, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */ + { 18019, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */ + { 18042, 0x00000003 }, /* GL_LINE_STRIP */ + { 18056, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY */ + { 18080, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY_ARB */ + { 18108, 0x00000702 }, /* GL_LINE_TOKEN */ + { 18122, 0x00000B21 }, /* GL_LINE_WIDTH */ + { 18136, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */ + { 18162, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */ + { 18182, 0x00008B82 }, /* GL_LINK_STATUS */ + { 18197, 0x00000B32 }, /* GL_LIST_BASE */ + { 18210, 0x00020000 }, /* GL_LIST_BIT */ + { 18222, 0x00000B33 }, /* GL_LIST_INDEX */ + { 18236, 0x00000B30 }, /* GL_LIST_MODE */ + { 18249, 0x00000101 }, /* GL_LOAD */ + { 18257, 0x00000BF1 }, /* GL_LOGIC_OP */ + { 18269, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */ + { 18286, 0x00008CA1 }, /* GL_LOWER_LEFT */ + { 18300, 0x00008DF0 }, /* GL_LOW_FLOAT */ + { 18313, 0x00008DF3 }, /* GL_LOW_INT */ + { 18324, 0x00001909 }, /* GL_LUMINANCE */ + { 18337, 0x00008041 }, /* GL_LUMINANCE12 */ + { 18352, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */ + { 18375, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */ + { 18402, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */ + { 18424, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */ + { 18450, 0x00008041 }, /* GL_LUMINANCE12_EXT */ + { 18469, 0x00008042 }, /* GL_LUMINANCE16 */ + { 18484, 0x00008D8C }, /* GL_LUMINANCE16I_EXT */ + { 18504, 0x00008D7A }, /* GL_LUMINANCE16UI_EXT */ + { 18525, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */ + { 18548, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */ + { 18575, 0x00008042 }, /* GL_LUMINANCE16_EXT */ + { 18594, 0x00008D86 }, /* GL_LUMINANCE32I_EXT */ + { 18614, 0x00008D74 }, /* GL_LUMINANCE32UI_EXT */ + { 18635, 0x0000803F }, /* GL_LUMINANCE4 */ + { 18649, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */ + { 18670, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */ + { 18695, 0x0000803F }, /* GL_LUMINANCE4_EXT */ + { 18713, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */ + { 18734, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */ + { 18759, 0x00008040 }, /* GL_LUMINANCE8 */ + { 18773, 0x00008D92 }, /* GL_LUMINANCE8I_EXT */ + { 18792, 0x00008D80 }, /* GL_LUMINANCE8UI_EXT */ + { 18812, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */ + { 18833, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */ + { 18858, 0x00008040 }, /* GL_LUMINANCE8_EXT */ + { 18876, 0x0000190A }, /* GL_LUMINANCE_ALPHA */ + { 18895, 0x00008D8D }, /* GL_LUMINANCE_ALPHA16I_EXT */ + { 18921, 0x00008D7B }, /* GL_LUMINANCE_ALPHA16UI_EXT */ + { 18948, 0x00008D87 }, /* GL_LUMINANCE_ALPHA32I_EXT */ + { 18974, 0x00008D75 }, /* GL_LUMINANCE_ALPHA32UI_EXT */ + { 19001, 0x00008D93 }, /* GL_LUMINANCE_ALPHA8I_EXT */ + { 19026, 0x00008D81 }, /* GL_LUMINANCE_ALPHA8UI_EXT */ + { 19052, 0x00008D9D }, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */ + { 19083, 0x00008D9C }, /* GL_LUMINANCE_INTEGER_EXT */ + { 19108, 0x0000821B }, /* GL_MAJOR_VERSION */ + { 19125, 0x00000D90 }, /* GL_MAP1_COLOR_4 */ + { 19141, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */ + { 19161, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */ + { 19183, 0x00000D91 }, /* GL_MAP1_INDEX */ + { 19197, 0x00000D92 }, /* GL_MAP1_NORMAL */ + { 19212, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */ + { 19236, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */ + { 19260, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */ + { 19284, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */ + { 19308, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */ + { 19325, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */ + { 19342, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ + { 19370, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ + { 19399, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ + { 19428, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ + { 19457, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ + { 19486, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ + { 19515, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ + { 19544, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ + { 19572, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ + { 19600, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ + { 19628, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ + { 19656, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ + { 19684, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ + { 19712, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ + { 19740, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ + { 19768, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ + { 19796, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */ + { 19812, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */ + { 19832, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */ + { 19854, 0x00000DB1 }, /* GL_MAP2_INDEX */ + { 19868, 0x00000DB2 }, /* GL_MAP2_NORMAL */ + { 19883, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */ + { 19907, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */ + { 19931, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */ + { 19955, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */ + { 19979, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */ + { 19996, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */ + { 20013, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ + { 20041, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ + { 20070, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ + { 20099, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ + { 20128, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ + { 20157, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ + { 20186, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ + { 20215, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ + { 20243, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ + { 20271, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ + { 20299, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ + { 20327, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ + { 20355, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ + { 20383, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */ + { 20411, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ + { 20439, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ + { 20467, 0x00000D10 }, /* GL_MAP_COLOR */ + { 20480, 0x00000010 }, /* GL_MAP_FLUSH_EXPLICIT_BIT */ + { 20506, 0x00000008 }, /* GL_MAP_INVALIDATE_BUFFER_BIT */ + { 20535, 0x00000004 }, /* GL_MAP_INVALIDATE_RANGE_BIT */ + { 20563, 0x00000001 }, /* GL_MAP_READ_BIT */ + { 20579, 0x00000D11 }, /* GL_MAP_STENCIL */ + { 20594, 0x00000020 }, /* GL_MAP_UNSYNCHRONIZED_BIT */ + { 20620, 0x00000002 }, /* GL_MAP_WRITE_BIT */ + { 20637, 0x000088C0 }, /* GL_MATRIX0_ARB */ + { 20652, 0x00008630 }, /* GL_MATRIX0_NV */ + { 20666, 0x000088CA }, /* GL_MATRIX10_ARB */ + { 20682, 0x000088CB }, /* GL_MATRIX11_ARB */ + { 20698, 0x000088CC }, /* GL_MATRIX12_ARB */ + { 20714, 0x000088CD }, /* GL_MATRIX13_ARB */ + { 20730, 0x000088CE }, /* GL_MATRIX14_ARB */ + { 20746, 0x000088CF }, /* GL_MATRIX15_ARB */ + { 20762, 0x000088D0 }, /* GL_MATRIX16_ARB */ + { 20778, 0x000088D1 }, /* GL_MATRIX17_ARB */ + { 20794, 0x000088D2 }, /* GL_MATRIX18_ARB */ + { 20810, 0x000088D3 }, /* GL_MATRIX19_ARB */ + { 20826, 0x000088C1 }, /* GL_MATRIX1_ARB */ + { 20841, 0x00008631 }, /* GL_MATRIX1_NV */ + { 20855, 0x000088D4 }, /* GL_MATRIX20_ARB */ + { 20871, 0x000088D5 }, /* GL_MATRIX21_ARB */ + { 20887, 0x000088D6 }, /* GL_MATRIX22_ARB */ + { 20903, 0x000088D7 }, /* GL_MATRIX23_ARB */ + { 20919, 0x000088D8 }, /* GL_MATRIX24_ARB */ + { 20935, 0x000088D9 }, /* GL_MATRIX25_ARB */ + { 20951, 0x000088DA }, /* GL_MATRIX26_ARB */ + { 20967, 0x000088DB }, /* GL_MATRIX27_ARB */ + { 20983, 0x000088DC }, /* GL_MATRIX28_ARB */ + { 20999, 0x000088DD }, /* GL_MATRIX29_ARB */ + { 21015, 0x000088C2 }, /* GL_MATRIX2_ARB */ + { 21030, 0x00008632 }, /* GL_MATRIX2_NV */ + { 21044, 0x000088DE }, /* GL_MATRIX30_ARB */ + { 21060, 0x000088DF }, /* GL_MATRIX31_ARB */ + { 21076, 0x000088C3 }, /* GL_MATRIX3_ARB */ + { 21091, 0x00008633 }, /* GL_MATRIX3_NV */ + { 21105, 0x000088C4 }, /* GL_MATRIX4_ARB */ + { 21120, 0x00008634 }, /* GL_MATRIX4_NV */ + { 21134, 0x000088C5 }, /* GL_MATRIX5_ARB */ + { 21149, 0x00008635 }, /* GL_MATRIX5_NV */ + { 21163, 0x000088C6 }, /* GL_MATRIX6_ARB */ + { 21178, 0x00008636 }, /* GL_MATRIX6_NV */ + { 21192, 0x000088C7 }, /* GL_MATRIX7_ARB */ + { 21207, 0x00008637 }, /* GL_MATRIX7_NV */ + { 21221, 0x000088C8 }, /* GL_MATRIX8_ARB */ + { 21236, 0x000088C9 }, /* GL_MATRIX9_ARB */ + { 21251, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */ + { 21277, 0x00008B9E }, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */ + { 21318, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_OES */ + { 21344, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ + { 21378, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_OES */ + { 21412, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ + { 21443, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_OES */ + { 21474, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ + { 21507, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_OES */ + { 21540, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ + { 21571, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_OES */ + { 21602, 0x00000BA0 }, /* GL_MATRIX_MODE */ + { 21617, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */ + { 21639, 0x00008840 }, /* GL_MATRIX_PALETTE_OES */ + { 21661, 0x00008008 }, /* GL_MAX */ + { 21668, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */ + { 21691, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE_OES */ + { 21718, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS */ + { 21746, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */ + { 21778, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */ + { 21804, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ + { 21837, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ + { 21863, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + { 21897, 0x00000D32 }, /* GL_MAX_CLIP_DISTANCES */ + { 21919, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */ + { 21938, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS */ + { 21963, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */ + { 21992, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ + { 22024, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */ + { 22060, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ + { 22096, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */ + { 22136, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */ + { 22162, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */ + { 22192, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */ + { 22217, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */ + { 22246, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ + { 22275, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */ + { 22308, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES */ + { 22341, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS */ + { 22361, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */ + { 22385, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */ + { 22409, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */ + { 22433, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */ + { 22458, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */ + { 22476, 0x00008008 }, /* GL_MAX_EXT */ + { 22487, 0x00009125 }, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */ + { 22520, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ + { 22555, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */ + { 22594, 0x00008DFD }, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */ + { 22626, 0x00009123 }, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */ + { 22659, 0x00009124 }, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */ + { 22693, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */ + { 22725, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB */ + { 22761, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */ + { 22797, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB */ + { 22837, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */ + { 22877, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB */ + { 22921, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */ + { 22956, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB */ + { 22995, 0x00008DDD }, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */ + { 23034, 0x00000D31 }, /* GL_MAX_LIGHTS */ + { 23048, 0x00000B31 }, /* GL_MAX_LIST_NESTING */ + { 23068, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ + { 23106, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */ + { 23135, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */ + { 23159, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */ + { 23187, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_OES */ + { 23215, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */ + { 23238, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ + { 23275, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ + { 23311, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ + { 23338, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ + { 23367, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ + { 23401, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */ + { 23437, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ + { 23464, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ + { 23496, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ + { 23532, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ + { 23561, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ + { 23590, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */ + { 23618, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ + { 23656, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + { 23700, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + { 23743, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ + { 23777, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + { 23816, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ + { 23853, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ + { 23891, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + { 23934, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + { 23977, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ + { 24007, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ + { 24038, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET */ + { 24066, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET_EXT */ + { 24098, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ + { 24134, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ + { 24170, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */ + { 24200, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */ + { 24230, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */ + { 24264, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */ + { 24297, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE */ + { 24322, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */ + { 24351, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_OES */ + { 24380, 0x00008D57 }, /* GL_MAX_SAMPLES */ + { 24395, 0x00008D57 }, /* GL_MAX_SAMPLES_EXT */ + { 24414, 0x00009111 }, /* GL_MAX_SERVER_WAIT_TIMEOUT */ + { 24441, 0x00008504 }, /* GL_MAX_SHININESS_NV */ + { 24461, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */ + { 24485, 0x00008C2B }, /* GL_MAX_TEXTURE_BUFFER_SIZE */ + { 24512, 0x00008C2B }, /* GL_MAX_TEXTURE_BUFFER_SIZE_ARB */ + { 24543, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS */ + { 24565, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */ + { 24591, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS */ + { 24618, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */ + { 24649, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */ + { 24673, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS_EXT */ + { 24701, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ + { 24735, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */ + { 24755, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */ + { 24782, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */ + { 24803, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */ + { 24828, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */ + { 24853, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */ + { 24888, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */ + { 24937, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */ + { 24990, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */ + { 25033, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */ + { 25080, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */ + { 25126, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */ + { 25176, 0x00008B4B }, /* GL_MAX_VARYING_COMPONENTS */ + { 25202, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS */ + { 25224, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */ + { 25250, 0x00008DFC }, /* GL_MAX_VARYING_VECTORS */ + { 25273, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS */ + { 25295, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */ + { 25321, 0x00009122 }, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */ + { 25353, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ + { 25387, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */ + { 25425, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ + { 25458, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */ + { 25495, 0x00008DFB }, /* GL_MAX_VERTEX_UNIFORM_VECTORS */ + { 25525, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */ + { 25549, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_OES */ + { 25573, 0x00008DDE }, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */ + { 25610, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */ + { 25631, 0x00008DF1 }, /* GL_MEDIUM_FLOAT */ + { 25647, 0x00008DF4 }, /* GL_MEDIUM_INT */ + { 25661, 0x00008007 }, /* GL_MIN */ + { 25668, 0x0000802E }, /* GL_MINMAX */ + { 25678, 0x0000802E }, /* GL_MINMAX_EXT */ + { 25692, 0x0000802F }, /* GL_MINMAX_FORMAT */ + { 25709, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */ + { 25730, 0x00008030 }, /* GL_MINMAX_SINK */ + { 25745, 0x00008030 }, /* GL_MINMAX_SINK_EXT */ + { 25764, 0x0000821C }, /* GL_MINOR_VERSION */ + { 25781, 0x00008007 }, /* GL_MIN_EXT */ + { 25792, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET */ + { 25820, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET_EXT */ + { 25852, 0x00008370 }, /* GL_MIRRORED_REPEAT */ + { 25871, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */ + { 25894, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */ + { 25917, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */ + { 25937, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */ + { 25957, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ + { 25987, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */ + { 26015, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ + { 26043, 0x00001700 }, /* GL_MODELVIEW */ + { 26056, 0x00001700 }, /* GL_MODELVIEW0_ARB */ + { 26074, 0x0000872A }, /* GL_MODELVIEW10_ARB */ + { 26093, 0x0000872B }, /* GL_MODELVIEW11_ARB */ + { 26112, 0x0000872C }, /* GL_MODELVIEW12_ARB */ + { 26131, 0x0000872D }, /* GL_MODELVIEW13_ARB */ + { 26150, 0x0000872E }, /* GL_MODELVIEW14_ARB */ + { 26169, 0x0000872F }, /* GL_MODELVIEW15_ARB */ + { 26188, 0x00008730 }, /* GL_MODELVIEW16_ARB */ + { 26207, 0x00008731 }, /* GL_MODELVIEW17_ARB */ + { 26226, 0x00008732 }, /* GL_MODELVIEW18_ARB */ + { 26245, 0x00008733 }, /* GL_MODELVIEW19_ARB */ + { 26264, 0x0000850A }, /* GL_MODELVIEW1_ARB */ + { 26282, 0x00008734 }, /* GL_MODELVIEW20_ARB */ + { 26301, 0x00008735 }, /* GL_MODELVIEW21_ARB */ + { 26320, 0x00008736 }, /* GL_MODELVIEW22_ARB */ + { 26339, 0x00008737 }, /* GL_MODELVIEW23_ARB */ + { 26358, 0x00008738 }, /* GL_MODELVIEW24_ARB */ + { 26377, 0x00008739 }, /* GL_MODELVIEW25_ARB */ + { 26396, 0x0000873A }, /* GL_MODELVIEW26_ARB */ + { 26415, 0x0000873B }, /* GL_MODELVIEW27_ARB */ + { 26434, 0x0000873C }, /* GL_MODELVIEW28_ARB */ + { 26453, 0x0000873D }, /* GL_MODELVIEW29_ARB */ + { 26472, 0x00008722 }, /* GL_MODELVIEW2_ARB */ + { 26490, 0x0000873E }, /* GL_MODELVIEW30_ARB */ + { 26509, 0x0000873F }, /* GL_MODELVIEW31_ARB */ + { 26528, 0x00008723 }, /* GL_MODELVIEW3_ARB */ + { 26546, 0x00008724 }, /* GL_MODELVIEW4_ARB */ + { 26564, 0x00008725 }, /* GL_MODELVIEW5_ARB */ + { 26582, 0x00008726 }, /* GL_MODELVIEW6_ARB */ + { 26600, 0x00008727 }, /* GL_MODELVIEW7_ARB */ + { 26618, 0x00008728 }, /* GL_MODELVIEW8_ARB */ + { 26636, 0x00008729 }, /* GL_MODELVIEW9_ARB */ + { 26654, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */ + { 26674, 0x0000898D }, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */ + { 26716, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */ + { 26743, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */ + { 26768, 0x00002100 }, /* GL_MODULATE */ + { 26780, 0x00008744 }, /* GL_MODULATE_ADD_ATI */ + { 26800, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */ + { 26827, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */ + { 26852, 0x00000103 }, /* GL_MULT */ + { 26860, 0x0000809D }, /* GL_MULTISAMPLE */ + { 26875, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */ + { 26895, 0x0000809D }, /* GL_MULTISAMPLE_ARB */ + { 26914, 0x20000000 }, /* GL_MULTISAMPLE_BIT */ + { 26933, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */ + { 26957, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */ + { 26980, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */ + { 27010, 0x00002A25 }, /* GL_N3F_V3F */ + { 27021, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */ + { 27041, 0x0000150E }, /* GL_NAND */ + { 27049, 0x00002600 }, /* GL_NEAREST */ + { 27060, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ + { 27091, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ + { 27123, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */ + { 27148, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */ + { 27174, 0x00000200 }, /* GL_NEVER */ + { 27183, 0x00001102 }, /* GL_NICEST */ + { 27193, 0x00000000 }, /* GL_NONE */ + { 27201, 0x00000000 }, /* GL_NONE_OES */ + { 27213, 0x00001505 }, /* GL_NOOP */ + { 27221, 0x00001508 }, /* GL_NOR */ + { 27228, 0x00000BA1 }, /* GL_NORMALIZE */ + { 27241, 0x00008075 }, /* GL_NORMAL_ARRAY */ + { 27257, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ + { 27288, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */ + { 27323, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */ + { 27347, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */ + { 27370, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */ + { 27391, 0x00008511 }, /* GL_NORMAL_MAP */ + { 27405, 0x00008511 }, /* GL_NORMAL_MAP_ARB */ + { 27423, 0x00008511 }, /* GL_NORMAL_MAP_NV */ + { 27440, 0x00008511 }, /* GL_NORMAL_MAP_OES */ + { 27458, 0x00000205 }, /* GL_NOTEQUAL */ + { 27470, 0x00000000 }, /* GL_NO_ERROR */ + { 27482, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ + { 27516, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB */ + { 27554, 0x0000821D }, /* GL_NUM_EXTENSIONS */ + { 27572, 0x000087FE }, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */ + { 27606, 0x00008DF9 }, /* GL_NUM_SHADER_BINARY_FORMATS */ + { 27635, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */ + { 27667, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */ + { 27709, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */ + { 27739, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */ + { 27779, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */ + { 27810, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */ + { 27839, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */ + { 27867, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */ + { 27897, 0x00002401 }, /* GL_OBJECT_LINEAR */ + { 27914, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */ + { 27940, 0x00002501 }, /* GL_OBJECT_PLANE */ + { 27956, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */ + { 27991, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */ + { 28013, 0x00009112 }, /* GL_OBJECT_TYPE */ + { 28028, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */ + { 28047, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */ + { 28077, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */ + { 28098, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */ + { 28126, 0x00000001 }, /* GL_ONE */ + { 28133, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */ + { 28161, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */ + { 28193, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */ + { 28221, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */ + { 28253, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */ + { 28276, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */ + { 28299, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */ + { 28322, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */ + { 28345, 0x00008598 }, /* GL_OPERAND0_ALPHA */ + { 28363, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */ + { 28385, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */ + { 28407, 0x00008590 }, /* GL_OPERAND0_RGB */ + { 28423, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */ + { 28443, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */ + { 28463, 0x00008599 }, /* GL_OPERAND1_ALPHA */ + { 28481, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */ + { 28503, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */ + { 28525, 0x00008591 }, /* GL_OPERAND1_RGB */ + { 28541, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */ + { 28561, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */ + { 28581, 0x0000859A }, /* GL_OPERAND2_ALPHA */ + { 28599, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */ + { 28621, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */ + { 28643, 0x00008592 }, /* GL_OPERAND2_RGB */ + { 28659, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */ + { 28679, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */ + { 28699, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */ + { 28720, 0x00008593 }, /* GL_OPERAND3_RGB_NV */ + { 28739, 0x00001507 }, /* GL_OR */ + { 28745, 0x00000A01 }, /* GL_ORDER */ + { 28754, 0x0000150D }, /* GL_OR_INVERTED */ + { 28769, 0x0000150B }, /* GL_OR_REVERSE */ + { 28783, 0x00000505 }, /* GL_OUT_OF_MEMORY */ + { 28800, 0x00000D05 }, /* GL_PACK_ALIGNMENT */ + { 28818, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */ + { 28839, 0x00008758 }, /* GL_PACK_INVERT_MESA */ + { 28859, 0x00000D01 }, /* GL_PACK_LSB_FIRST */ + { 28877, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */ + { 28896, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */ + { 28916, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */ + { 28936, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */ + { 28954, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */ + { 28973, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */ + { 28998, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */ + { 29022, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */ + { 29043, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */ + { 29065, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */ + { 29087, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */ + { 29112, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */ + { 29136, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */ + { 29157, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */ + { 29179, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */ + { 29201, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */ + { 29223, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */ + { 29254, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */ + { 29274, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */ + { 29299, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */ + { 29319, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */ + { 29344, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */ + { 29364, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */ + { 29389, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */ + { 29409, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */ + { 29434, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */ + { 29454, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */ + { 29479, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */ + { 29499, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */ + { 29524, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */ + { 29544, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */ + { 29569, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */ + { 29589, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */ + { 29614, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */ + { 29634, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */ + { 29659, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */ + { 29679, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */ + { 29704, 0x00000020 }, /* GL_PIXEL_MODE_BIT */ + { 29722, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER */ + { 29743, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING */ + { 29772, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */ + { 29805, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */ + { 29830, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER */ + { 29853, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING */ + { 29884, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */ + { 29919, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */ + { 29946, 0x00001B00 }, /* GL_POINT */ + { 29955, 0x00000000 }, /* GL_POINTS */ + { 29965, 0x00000002 }, /* GL_POINT_BIT */ + { 29978, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */ + { 30008, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */ + { 30042, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */ + { 30076, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */ + { 30111, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */ + { 30140, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */ + { 30173, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */ + { 30206, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */ + { 30240, 0x00000B11 }, /* GL_POINT_SIZE */ + { 30254, 0x00008B9F }, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */ + { 30293, 0x00008B9C }, /* GL_POINT_SIZE_ARRAY_OES */ + { 30317, 0x0000898C }, /* GL_POINT_SIZE_ARRAY_POINTER_OES */ + { 30349, 0x0000898B }, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */ + { 30380, 0x0000898A }, /* GL_POINT_SIZE_ARRAY_TYPE_OES */ + { 30409, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */ + { 30435, 0x00008127 }, /* GL_POINT_SIZE_MAX */ + { 30453, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */ + { 30475, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */ + { 30497, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */ + { 30520, 0x00008126 }, /* GL_POINT_SIZE_MIN */ + { 30538, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */ + { 30560, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */ + { 30582, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */ + { 30605, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */ + { 30625, 0x00000B10 }, /* GL_POINT_SMOOTH */ + { 30641, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */ + { 30662, 0x00008861 }, /* GL_POINT_SPRITE */ + { 30678, 0x00008861 }, /* GL_POINT_SPRITE_ARB */ + { 30698, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */ + { 30727, 0x00008861 }, /* GL_POINT_SPRITE_NV */ + { 30746, 0x00008861 }, /* GL_POINT_SPRITE_OES */ + { 30766, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */ + { 30792, 0x00000701 }, /* GL_POINT_TOKEN */ + { 30807, 0x00000009 }, /* GL_POLYGON */ + { 30818, 0x00000008 }, /* GL_POLYGON_BIT */ + { 30833, 0x00000B40 }, /* GL_POLYGON_MODE */ + { 30849, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */ + { 30872, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */ + { 30897, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */ + { 30920, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */ + { 30943, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */ + { 30967, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */ + { 30991, 0x00000B41 }, /* GL_POLYGON_SMOOTH */ + { 31009, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */ + { 31032, 0x00000B42 }, /* GL_POLYGON_STIPPLE */ + { 31051, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */ + { 31074, 0x00000703 }, /* GL_POLYGON_TOKEN */ + { 31091, 0x00001203 }, /* GL_POSITION */ + { 31103, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ + { 31135, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */ + { 31171, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ + { 31204, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */ + { 31241, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ + { 31272, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */ + { 31307, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ + { 31339, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */ + { 31375, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ + { 31408, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ + { 31440, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */ + { 31476, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ + { 31509, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */ + { 31546, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */ + { 31576, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */ + { 31610, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */ + { 31641, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */ + { 31676, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ + { 31707, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */ + { 31742, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ + { 31774, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */ + { 31810, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */ + { 31840, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */ + { 31874, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */ + { 31905, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */ + { 31940, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */ + { 31972, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */ + { 32003, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */ + { 32038, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */ + { 32070, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */ + { 32106, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */ + { 32135, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */ + { 32168, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */ + { 32198, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */ + { 32232, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ + { 32271, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ + { 32304, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ + { 32344, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ + { 32378, 0x00008578 }, /* GL_PREVIOUS */ + { 32390, 0x00008578 }, /* GL_PREVIOUS_ARB */ + { 32406, 0x00008578 }, /* GL_PREVIOUS_EXT */ + { 32422, 0x00008577 }, /* GL_PRIMARY_COLOR */ + { 32439, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */ + { 32460, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */ + { 32481, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED */ + { 32505, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED_EXT */ + { 32533, 0x00008F9D }, /* GL_PRIMITIVE_RESTART */ + { 32554, 0x00008F9E }, /* GL_PRIMITIVE_RESTART_INDEX */ + { 32581, 0x00008559 }, /* GL_PRIMITIVE_RESTART_INDEX_NV */ + { 32611, 0x00008558 }, /* GL_PRIMITIVE_RESTART_NV */ + { 32635, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ + { 32668, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ + { 32700, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */ + { 32723, 0x000087FF }, /* GL_PROGRAM_BINARY_FORMATS_OES */ + { 32753, 0x00008741 }, /* GL_PROGRAM_BINARY_LENGTH_OES */ + { 32782, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */ + { 32805, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */ + { 32835, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */ + { 32864, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */ + { 32892, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */ + { 32914, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */ + { 32942, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */ + { 32970, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */ + { 32992, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */ + { 33013, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + { 33053, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + { 33092, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ + { 33122, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + { 33157, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ + { 33190, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ + { 33224, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + { 33263, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + { 33302, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */ + { 33324, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */ + { 33350, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */ + { 33374, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE */ + { 33396, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE_ARB */ + { 33422, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */ + { 33445, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */ + { 33467, 0x00008628 }, /* GL_PROGRAM_STRING_NV */ + { 33488, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */ + { 33509, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */ + { 33536, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ + { 33568, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ + { 33600, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ + { 33635, 0x00001701 }, /* GL_PROJECTION */ + { 33649, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */ + { 33670, 0x0000898E }, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */ + { 33713, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */ + { 33739, 0x00008E4F }, /* GL_PROVOKING_VERTEX */ + { 33759, 0x00008E4F }, /* GL_PROVOKING_VERTEX_EXT */ + { 33783, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */ + { 33804, 0x00008025 }, /* GL_PROXY_HISTOGRAM */ + { 33823, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */ + { 33846, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ + { 33885, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ + { 33923, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */ + { 33943, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY */ + { 33969, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */ + { 33999, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */ + { 34023, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */ + { 34043, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY */ + { 34069, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */ + { 34099, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */ + { 34123, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */ + { 34143, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ + { 34176, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */ + { 34202, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */ + { 34232, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE */ + { 34259, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */ + { 34290, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */ + { 34320, 0x00008A1D }, /* GL_PURGEABLE_APPLE */ + { 34339, 0x00002003 }, /* GL_Q */ + { 34344, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */ + { 34369, 0x00000007 }, /* GL_QUADS */ + { 34378, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ + { 34422, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT */ + { 34470, 0x00008614 }, /* GL_QUAD_MESH_SUN */ + { 34487, 0x00000008 }, /* GL_QUAD_STRIP */ + { 34501, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT */ + { 34528, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT_NV */ + { 34558, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT */ + { 34582, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT_NV */ + { 34609, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */ + { 34631, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */ + { 34657, 0x00008E14 }, /* GL_QUERY_NO_WAIT */ + { 34674, 0x00008E14 }, /* GL_QUERY_NO_WAIT_NV */ + { 34694, 0x00008866 }, /* GL_QUERY_RESULT */ + { 34710, 0x00008866 }, /* GL_QUERY_RESULT_ARB */ + { 34730, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */ + { 34756, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */ + { 34786, 0x00008E13 }, /* GL_QUERY_WAIT */ + { 34800, 0x00008E13 }, /* GL_QUERY_WAIT_NV */ + { 34817, 0x00002002 }, /* GL_R */ + { 34822, 0x00008C3A }, /* GL_R11F_G11F_B10F */ + { 34840, 0x00008F98 }, /* GL_R16_SNORM */ + { 34853, 0x00002A10 }, /* GL_R3_G3_B2 */ + { 34865, 0x00008F94 }, /* GL_R8_SNORM */ + { 34877, 0x00008C89 }, /* GL_RASTERIZER_DISCARD */ + { 34899, 0x00008C89 }, /* GL_RASTERIZER_DISCARD_EXT */ + { 34925, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ + { 34958, 0x00000C02 }, /* GL_READ_BUFFER */ + { 34973, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER */ + { 34993, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING */ + { 35021, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */ + { 35053, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */ + { 35077, 0x000088B8 }, /* GL_READ_ONLY */ + { 35090, 0x000088B8 }, /* GL_READ_ONLY_ARB */ + { 35107, 0x000088BA }, /* GL_READ_WRITE */ + { 35121, 0x000088BA }, /* GL_READ_WRITE_ARB */ + { 35139, 0x00001903 }, /* GL_RED */ + { 35146, 0x00008016 }, /* GL_REDUCE */ + { 35156, 0x00008016 }, /* GL_REDUCE_EXT */ + { 35170, 0x00000D15 }, /* GL_RED_BIAS */ + { 35182, 0x00000D52 }, /* GL_RED_BITS */ + { 35194, 0x00008D94 }, /* GL_RED_INTEGER */ + { 35209, 0x00008D94 }, /* GL_RED_INTEGER_EXT */ + { 35228, 0x00000D14 }, /* GL_RED_SCALE */ + { 35241, 0x00008F90 }, /* GL_RED_SNORM */ + { 35254, 0x00008512 }, /* GL_REFLECTION_MAP */ + { 35272, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */ + { 35294, 0x00008512 }, /* GL_REFLECTION_MAP_NV */ + { 35315, 0x00008512 }, /* GL_REFLECTION_MAP_OES */ + { 35337, 0x00008A19 }, /* GL_RELEASED_APPLE */ + { 35355, 0x00001C00 }, /* GL_RENDER */ + { 35365, 0x00008D41 }, /* GL_RENDERBUFFER */ + { 35381, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE */ + { 35408, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE_OES */ + { 35439, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING */ + { 35463, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */ + { 35491, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_OES */ + { 35519, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE */ + { 35545, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE_OES */ + { 35575, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE */ + { 35602, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE_OES */ + { 35633, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */ + { 35653, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE */ + { 35680, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE_OES */ + { 35711, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT */ + { 35734, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */ + { 35761, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_OES */ + { 35788, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT */ + { 35820, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */ + { 35856, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_OES */ + { 35892, 0x00008D41 }, /* GL_RENDERBUFFER_OES */ + { 35912, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE */ + { 35937, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE_OES */ + { 35966, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES */ + { 35990, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES_EXT */ + { 36018, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE */ + { 36047, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE_OES */ + { 36080, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH */ + { 36102, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */ + { 36128, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_OES */ + { 36154, 0x00001F01 }, /* GL_RENDERER */ + { 36166, 0x00000C40 }, /* GL_RENDER_MODE */ + { 36181, 0x00002901 }, /* GL_REPEAT */ + { 36191, 0x00001E01 }, /* GL_REPLACE */ + { 36202, 0x00008062 }, /* GL_REPLACE_EXT */ + { 36217, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */ + { 36240, 0x0000803A }, /* GL_RESCALE_NORMAL */ + { 36258, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */ + { 36280, 0x00008A1B }, /* GL_RETAINED_APPLE */ + { 36298, 0x00000102 }, /* GL_RETURN */ + { 36308, 0x00008F99 }, /* GL_RG16_SNORM */ + { 36322, 0x00008F95 }, /* GL_RG8_SNORM */ + { 36335, 0x00001907 }, /* GL_RGB */ + { 36342, 0x00008052 }, /* GL_RGB10 */ + { 36351, 0x00008059 }, /* GL_RGB10_A2 */ + { 36363, 0x00008059 }, /* GL_RGB10_A2_EXT */ + { 36379, 0x00008052 }, /* GL_RGB10_EXT */ + { 36392, 0x00008053 }, /* GL_RGB12 */ + { 36401, 0x00008053 }, /* GL_RGB12_EXT */ + { 36414, 0x00008054 }, /* GL_RGB16 */ + { 36423, 0x0000881B }, /* GL_RGB16F */ + { 36433, 0x00008D89 }, /* GL_RGB16I */ + { 36443, 0x00008D89 }, /* GL_RGB16I_EXT */ + { 36457, 0x00008D77 }, /* GL_RGB16UI */ + { 36468, 0x00008D77 }, /* GL_RGB16UI_EXT */ + { 36483, 0x00008054 }, /* GL_RGB16_EXT */ + { 36496, 0x00008F9A }, /* GL_RGB16_SNORM */ + { 36511, 0x0000804E }, /* GL_RGB2_EXT */ + { 36523, 0x00008815 }, /* GL_RGB32F */ + { 36533, 0x00008D83 }, /* GL_RGB32I */ + { 36543, 0x00008D83 }, /* GL_RGB32I_EXT */ + { 36557, 0x00008D71 }, /* GL_RGB32UI */ + { 36568, 0x00008D71 }, /* GL_RGB32UI_EXT */ + { 36583, 0x0000804F }, /* GL_RGB4 */ + { 36591, 0x0000804F }, /* GL_RGB4_EXT */ + { 36603, 0x000083A1 }, /* GL_RGB4_S3TC */ + { 36616, 0x00008050 }, /* GL_RGB5 */ + { 36624, 0x00008D62 }, /* GL_RGB565 */ + { 36634, 0x00008D62 }, /* GL_RGB565_OES */ + { 36648, 0x00008057 }, /* GL_RGB5_A1 */ + { 36659, 0x00008057 }, /* GL_RGB5_A1_EXT */ + { 36674, 0x00008057 }, /* GL_RGB5_A1_OES */ + { 36689, 0x00008050 }, /* GL_RGB5_EXT */ + { 36701, 0x00008051 }, /* GL_RGB8 */ + { 36709, 0x00008D8F }, /* GL_RGB8I */ + { 36718, 0x00008D8F }, /* GL_RGB8I_EXT */ + { 36731, 0x00008D7D }, /* GL_RGB8UI */ + { 36741, 0x00008D7D }, /* GL_RGB8UI_EXT */ + { 36755, 0x00008051 }, /* GL_RGB8_EXT */ + { 36767, 0x00008051 }, /* GL_RGB8_OES */ + { 36779, 0x00008F96 }, /* GL_RGB8_SNORM */ + { 36793, 0x00008C3D }, /* GL_RGB9_E5 */ + { 36804, 0x00001908 }, /* GL_RGBA */ + { 36812, 0x0000805A }, /* GL_RGBA12 */ + { 36822, 0x0000805A }, /* GL_RGBA12_EXT */ + { 36836, 0x0000805B }, /* GL_RGBA16 */ + { 36846, 0x0000881A }, /* GL_RGBA16F */ + { 36857, 0x00008D88 }, /* GL_RGBA16I */ + { 36868, 0x00008D88 }, /* GL_RGBA16I_EXT */ + { 36883, 0x00008D76 }, /* GL_RGBA16UI */ + { 36895, 0x00008D76 }, /* GL_RGBA16UI_EXT */ + { 36911, 0x0000805B }, /* GL_RGBA16_EXT */ + { 36925, 0x00008F9B }, /* GL_RGBA16_SNORM */ + { 36941, 0x00008055 }, /* GL_RGBA2 */ + { 36950, 0x00008055 }, /* GL_RGBA2_EXT */ + { 36963, 0x00008814 }, /* GL_RGBA32F */ + { 36974, 0x00008D82 }, /* GL_RGBA32I */ + { 36985, 0x00008D82 }, /* GL_RGBA32I_EXT */ + { 37000, 0x00008D70 }, /* GL_RGBA32UI */ + { 37012, 0x00008D70 }, /* GL_RGBA32UI_EXT */ + { 37028, 0x00008056 }, /* GL_RGBA4 */ + { 37037, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */ + { 37056, 0x00008056 }, /* GL_RGBA4_EXT */ + { 37069, 0x00008056 }, /* GL_RGBA4_OES */ + { 37082, 0x000083A3 }, /* GL_RGBA4_S3TC */ + { 37096, 0x00008058 }, /* GL_RGBA8 */ + { 37105, 0x00008D8E }, /* GL_RGBA8I */ + { 37115, 0x00008D8E }, /* GL_RGBA8I_EXT */ + { 37129, 0x00008D7C }, /* GL_RGBA8UI */ + { 37140, 0x00008D7C }, /* GL_RGBA8UI_EXT */ + { 37155, 0x00008058 }, /* GL_RGBA8_EXT */ + { 37168, 0x00008058 }, /* GL_RGBA8_OES */ + { 37181, 0x00008F97 }, /* GL_RGBA8_SNORM */ + { 37196, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */ + { 37214, 0x00008820 }, /* GL_RGBA_FLOAT_MODE_ARB */ + { 37237, 0x00008D99 }, /* GL_RGBA_INTEGER */ + { 37253, 0x00008D99 }, /* GL_RGBA_INTEGER_EXT */ + { 37273, 0x00008D9E }, /* GL_RGBA_INTEGER_MODE_EXT */ + { 37298, 0x00000C31 }, /* GL_RGBA_MODE */ + { 37311, 0x000083A2 }, /* GL_RGBA_S3TC */ + { 37324, 0x00008F93 }, /* GL_RGBA_SNORM */ + { 37338, 0x00008D98 }, /* GL_RGB_INTEGER */ + { 37353, 0x00008D98 }, /* GL_RGB_INTEGER_EXT */ + { 37372, 0x000083A0 }, /* GL_RGB_S3TC */ + { 37384, 0x00008573 }, /* GL_RGB_SCALE */ + { 37397, 0x00008573 }, /* GL_RGB_SCALE_ARB */ + { 37414, 0x00008573 }, /* GL_RGB_SCALE_EXT */ + { 37431, 0x00008F92 }, /* GL_RGB_SNORM */ + { 37444, 0x00008F91 }, /* GL_RG_SNORM */ + { 37456, 0x00000407 }, /* GL_RIGHT */ + { 37465, 0x00002000 }, /* GL_S */ + { 37470, 0x00008B5D }, /* GL_SAMPLER_1D */ + { 37484, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY */ + { 37504, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY_EXT */ + { 37528, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW */ + { 37555, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW_EXT */ + { 37586, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */ + { 37607, 0x00008B5E }, /* GL_SAMPLER_2D */ + { 37621, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY */ + { 37641, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY_EXT */ + { 37665, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW */ + { 37692, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW_EXT */ + { 37723, 0x00008B63 }, /* GL_SAMPLER_2D_RECT */ + { 37742, 0x00008B64 }, /* GL_SAMPLER_2D_RECT_SHADOW */ + { 37768, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */ + { 37789, 0x00008B5F }, /* GL_SAMPLER_3D */ + { 37803, 0x00008B5F }, /* GL_SAMPLER_3D_OES */ + { 37821, 0x00008919 }, /* GL_SAMPLER_BINDING */ + { 37840, 0x00008DC2 }, /* GL_SAMPLER_BUFFER */ + { 37858, 0x00008DC2 }, /* GL_SAMPLER_BUFFER_EXT */ + { 37880, 0x00008B60 }, /* GL_SAMPLER_CUBE */ + { 37896, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW */ + { 37919, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW_EXT */ + { 37946, 0x000080A9 }, /* GL_SAMPLES */ + { 37957, 0x000086B4 }, /* GL_SAMPLES_3DFX */ + { 37973, 0x000080A9 }, /* GL_SAMPLES_ARB */ + { 37988, 0x00008914 }, /* GL_SAMPLES_PASSED */ + { 38006, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */ + { 38028, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ + { 38056, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */ + { 38088, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */ + { 38111, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */ + { 38138, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */ + { 38156, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */ + { 38179, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */ + { 38201, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */ + { 38220, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */ + { 38243, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */ + { 38269, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */ + { 38299, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */ + { 38324, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */ + { 38353, 0x00080000 }, /* GL_SCISSOR_BIT */ + { 38368, 0x00000C10 }, /* GL_SCISSOR_BOX */ + { 38383, 0x00000C11 }, /* GL_SCISSOR_TEST */ + { 38399, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */ + { 38424, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ + { 38464, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */ + { 38508, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ + { 38541, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ + { 38571, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ + { 38603, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ + { 38633, 0x00001C02 }, /* GL_SELECT */ + { 38643, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */ + { 38671, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */ + { 38696, 0x00008012 }, /* GL_SEPARABLE_2D */ + { 38712, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS */ + { 38732, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS_EXT */ + { 38756, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */ + { 38783, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */ + { 38814, 0x0000150F }, /* GL_SET */ + { 38821, 0x00008DF8 }, /* GL_SHADER_BINARY_FORMATS */ + { 38846, 0x00008DFA }, /* GL_SHADER_COMPILER */ + { 38865, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */ + { 38886, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */ + { 38910, 0x00008B4F }, /* GL_SHADER_TYPE */ + { 38925, 0x00000B54 }, /* GL_SHADE_MODEL */ + { 38940, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */ + { 38968, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */ + { 38991, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */ + { 39021, 0x00001601 }, /* GL_SHININESS */ + { 39034, 0x00001402 }, /* GL_SHORT */ + { 39043, 0x00009119 }, /* GL_SIGNALED */ + { 39055, 0x00008F9C }, /* GL_SIGNED_NORMALIZED */ + { 39076, 0x000081F9 }, /* GL_SINGLE_COLOR */ + { 39092, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */ + { 39112, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */ + { 39131, 0x00008C46 }, /* GL_SLUMINANCE */ + { 39145, 0x00008C47 }, /* GL_SLUMINANCE8 */ + { 39160, 0x00008C45 }, /* GL_SLUMINANCE8_ALPHA8 */ + { 39182, 0x00008C44 }, /* GL_SLUMINANCE_ALPHA */ + { 39202, 0x00001D01 }, /* GL_SMOOTH */ + { 39212, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */ + { 39245, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */ + { 39272, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */ + { 39305, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */ + { 39332, 0x00008588 }, /* GL_SOURCE0_ALPHA */ + { 39349, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */ + { 39370, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */ + { 39391, 0x00008580 }, /* GL_SOURCE0_RGB */ + { 39406, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */ + { 39425, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */ + { 39444, 0x00008589 }, /* GL_SOURCE1_ALPHA */ + { 39461, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */ + { 39482, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */ + { 39503, 0x00008581 }, /* GL_SOURCE1_RGB */ + { 39518, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */ + { 39537, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */ + { 39556, 0x0000858A }, /* GL_SOURCE2_ALPHA */ + { 39573, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */ + { 39594, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */ + { 39615, 0x00008582 }, /* GL_SOURCE2_RGB */ + { 39630, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */ + { 39649, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */ + { 39668, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */ + { 39688, 0x00008583 }, /* GL_SOURCE3_RGB_NV */ + { 39706, 0x00001202 }, /* GL_SPECULAR */ + { 39718, 0x00002402 }, /* GL_SPHERE_MAP */ + { 39732, 0x00001206 }, /* GL_SPOT_CUTOFF */ + { 39747, 0x00001204 }, /* GL_SPOT_DIRECTION */ + { 39765, 0x00001205 }, /* GL_SPOT_EXPONENT */ + { 39782, 0x00008588 }, /* GL_SRC0_ALPHA */ + { 39796, 0x00008580 }, /* GL_SRC0_RGB */ + { 39808, 0x00008589 }, /* GL_SRC1_ALPHA */ + { 39822, 0x00008581 }, /* GL_SRC1_RGB */ + { 39834, 0x0000858A }, /* GL_SRC2_ALPHA */ + { 39848, 0x00008582 }, /* GL_SRC2_RGB */ + { 39860, 0x00000302 }, /* GL_SRC_ALPHA */ + { 39873, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */ + { 39895, 0x00000300 }, /* GL_SRC_COLOR */ + { 39908, 0x00008C40 }, /* GL_SRGB */ + { 39916, 0x00008C41 }, /* GL_SRGB8 */ + { 39925, 0x00008C43 }, /* GL_SRGB8_ALPHA8 */ + { 39941, 0x00008C42 }, /* GL_SRGB_ALPHA */ + { 39955, 0x00000503 }, /* GL_STACK_OVERFLOW */ + { 39973, 0x00000504 }, /* GL_STACK_UNDERFLOW */ + { 39992, 0x000088E6 }, /* GL_STATIC_COPY */ + { 40007, 0x000088E6 }, /* GL_STATIC_COPY_ARB */ + { 40026, 0x000088E4 }, /* GL_STATIC_DRAW */ + { 40041, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */ + { 40060, 0x000088E5 }, /* GL_STATIC_READ */ + { 40075, 0x000088E5 }, /* GL_STATIC_READ_ARB */ + { 40094, 0x00001802 }, /* GL_STENCIL */ + { 40105, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT */ + { 40127, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */ + { 40153, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_OES */ + { 40179, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */ + { 40200, 0x00008801 }, /* GL_STENCIL_BACK_FAIL_ATI */ + { 40225, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */ + { 40246, 0x00008800 }, /* GL_STENCIL_BACK_FUNC_ATI */ + { 40271, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ + { 40303, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI */ + { 40339, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ + { 40371, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI */ + { 40407, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */ + { 40427, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */ + { 40454, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */ + { 40480, 0x00000D57 }, /* GL_STENCIL_BITS */ + { 40496, 0x00008224 }, /* GL_STENCIL_BUFFER */ + { 40514, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */ + { 40536, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */ + { 40559, 0x00000B94 }, /* GL_STENCIL_FAIL */ + { 40575, 0x00000B92 }, /* GL_STENCIL_FUNC */ + { 40591, 0x00001901 }, /* GL_STENCIL_INDEX */ + { 40608, 0x00008D46 }, /* GL_STENCIL_INDEX1 */ + { 40626, 0x00008D49 }, /* GL_STENCIL_INDEX16 */ + { 40645, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */ + { 40668, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */ + { 40690, 0x00008D46 }, /* GL_STENCIL_INDEX1_OES */ + { 40712, 0x00008D47 }, /* GL_STENCIL_INDEX4 */ + { 40730, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */ + { 40752, 0x00008D47 }, /* GL_STENCIL_INDEX4_OES */ + { 40774, 0x00008D48 }, /* GL_STENCIL_INDEX8 */ + { 40792, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */ + { 40814, 0x00008D48 }, /* GL_STENCIL_INDEX8_OES */ + { 40836, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */ + { 40857, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */ + { 40884, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */ + { 40911, 0x00000B97 }, /* GL_STENCIL_REF */ + { 40926, 0x00000B90 }, /* GL_STENCIL_TEST */ + { 40942, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ + { 40971, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */ + { 40993, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */ + { 41014, 0x00000C33 }, /* GL_STEREO */ + { 41024, 0x000085BE }, /* GL_STORAGE_CACHED_APPLE */ + { 41048, 0x000085BD }, /* GL_STORAGE_PRIVATE_APPLE */ + { 41073, 0x000085BF }, /* GL_STORAGE_SHARED_APPLE */ + { 41097, 0x000088E2 }, /* GL_STREAM_COPY */ + { 41112, 0x000088E2 }, /* GL_STREAM_COPY_ARB */ + { 41131, 0x000088E0 }, /* GL_STREAM_DRAW */ + { 41146, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */ + { 41165, 0x000088E1 }, /* GL_STREAM_READ */ + { 41180, 0x000088E1 }, /* GL_STREAM_READ_ARB */ + { 41199, 0x00000D50 }, /* GL_SUBPIXEL_BITS */ + { 41216, 0x000084E7 }, /* GL_SUBTRACT */ + { 41228, 0x000084E7 }, /* GL_SUBTRACT_ARB */ + { 41244, 0x00009113 }, /* GL_SYNC_CONDITION */ + { 41262, 0x00009116 }, /* GL_SYNC_FENCE */ + { 41276, 0x00009115 }, /* GL_SYNC_FLAGS */ + { 41290, 0x00000001 }, /* GL_SYNC_FLUSH_COMMANDS_BIT */ + { 41317, 0x00009117 }, /* GL_SYNC_GPU_COMMANDS_COMPLETE */ + { 41347, 0x00009114 }, /* GL_SYNC_STATUS */ + { 41362, 0x00002001 }, /* GL_T */ + { 41367, 0x00002A2A }, /* GL_T2F_C3F_V3F */ + { 41382, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */ + { 41401, 0x00002A29 }, /* GL_T2F_C4UB_V3F */ + { 41417, 0x00002A2B }, /* GL_T2F_N3F_V3F */ + { 41432, 0x00002A27 }, /* GL_T2F_V3F */ + { 41443, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */ + { 41462, 0x00002A28 }, /* GL_T4F_V4F */ + { 41473, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */ + { 41496, 0x00001702 }, /* GL_TEXTURE */ + { 41507, 0x000084C0 }, /* GL_TEXTURE0 */ + { 41519, 0x000084C0 }, /* GL_TEXTURE0_ARB */ + { 41535, 0x000084C1 }, /* GL_TEXTURE1 */ + { 41547, 0x000084CA }, /* GL_TEXTURE10 */ + { 41560, 0x000084CA }, /* GL_TEXTURE10_ARB */ + { 41577, 0x000084CB }, /* GL_TEXTURE11 */ + { 41590, 0x000084CB }, /* GL_TEXTURE11_ARB */ + { 41607, 0x000084CC }, /* GL_TEXTURE12 */ + { 41620, 0x000084CC }, /* GL_TEXTURE12_ARB */ + { 41637, 0x000084CD }, /* GL_TEXTURE13 */ + { 41650, 0x000084CD }, /* GL_TEXTURE13_ARB */ + { 41667, 0x000084CE }, /* GL_TEXTURE14 */ + { 41680, 0x000084CE }, /* GL_TEXTURE14_ARB */ + { 41697, 0x000084CF }, /* GL_TEXTURE15 */ + { 41710, 0x000084CF }, /* GL_TEXTURE15_ARB */ + { 41727, 0x000084D0 }, /* GL_TEXTURE16 */ + { 41740, 0x000084D0 }, /* GL_TEXTURE16_ARB */ + { 41757, 0x000084D1 }, /* GL_TEXTURE17 */ + { 41770, 0x000084D1 }, /* GL_TEXTURE17_ARB */ + { 41787, 0x000084D2 }, /* GL_TEXTURE18 */ + { 41800, 0x000084D2 }, /* GL_TEXTURE18_ARB */ + { 41817, 0x000084D3 }, /* GL_TEXTURE19 */ + { 41830, 0x000084D3 }, /* GL_TEXTURE19_ARB */ + { 41847, 0x000084C1 }, /* GL_TEXTURE1_ARB */ + { 41863, 0x000084C2 }, /* GL_TEXTURE2 */ + { 41875, 0x000084D4 }, /* GL_TEXTURE20 */ + { 41888, 0x000084D4 }, /* GL_TEXTURE20_ARB */ + { 41905, 0x000084D5 }, /* GL_TEXTURE21 */ + { 41918, 0x000084D5 }, /* GL_TEXTURE21_ARB */ + { 41935, 0x000084D6 }, /* GL_TEXTURE22 */ + { 41948, 0x000084D6 }, /* GL_TEXTURE22_ARB */ + { 41965, 0x000084D7 }, /* GL_TEXTURE23 */ + { 41978, 0x000084D7 }, /* GL_TEXTURE23_ARB */ + { 41995, 0x000084D8 }, /* GL_TEXTURE24 */ + { 42008, 0x000084D8 }, /* GL_TEXTURE24_ARB */ + { 42025, 0x000084D9 }, /* GL_TEXTURE25 */ + { 42038, 0x000084D9 }, /* GL_TEXTURE25_ARB */ + { 42055, 0x000084DA }, /* GL_TEXTURE26 */ + { 42068, 0x000084DA }, /* GL_TEXTURE26_ARB */ + { 42085, 0x000084DB }, /* GL_TEXTURE27 */ + { 42098, 0x000084DB }, /* GL_TEXTURE27_ARB */ + { 42115, 0x000084DC }, /* GL_TEXTURE28 */ + { 42128, 0x000084DC }, /* GL_TEXTURE28_ARB */ + { 42145, 0x000084DD }, /* GL_TEXTURE29 */ + { 42158, 0x000084DD }, /* GL_TEXTURE29_ARB */ + { 42175, 0x000084C2 }, /* GL_TEXTURE2_ARB */ + { 42191, 0x000084C3 }, /* GL_TEXTURE3 */ + { 42203, 0x000084DE }, /* GL_TEXTURE30 */ + { 42216, 0x000084DE }, /* GL_TEXTURE30_ARB */ + { 42233, 0x000084DF }, /* GL_TEXTURE31 */ + { 42246, 0x000084DF }, /* GL_TEXTURE31_ARB */ + { 42263, 0x000084C3 }, /* GL_TEXTURE3_ARB */ + { 42279, 0x000084C4 }, /* GL_TEXTURE4 */ + { 42291, 0x000084C4 }, /* GL_TEXTURE4_ARB */ + { 42307, 0x000084C5 }, /* GL_TEXTURE5 */ + { 42319, 0x000084C5 }, /* GL_TEXTURE5_ARB */ + { 42335, 0x000084C6 }, /* GL_TEXTURE6 */ + { 42347, 0x000084C6 }, /* GL_TEXTURE6_ARB */ + { 42363, 0x000084C7 }, /* GL_TEXTURE7 */ + { 42375, 0x000084C7 }, /* GL_TEXTURE7_ARB */ + { 42391, 0x000084C8 }, /* GL_TEXTURE8 */ + { 42403, 0x000084C8 }, /* GL_TEXTURE8_ARB */ + { 42419, 0x000084C9 }, /* GL_TEXTURE9 */ + { 42431, 0x000084C9 }, /* GL_TEXTURE9_ARB */ + { 42447, 0x00000DE0 }, /* GL_TEXTURE_1D */ + { 42461, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY */ + { 42481, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY_EXT */ + { 42505, 0x00000DE1 }, /* GL_TEXTURE_2D */ + { 42519, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY */ + { 42539, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY_EXT */ + { 42563, 0x0000806F }, /* GL_TEXTURE_3D */ + { 42577, 0x0000806F }, /* GL_TEXTURE_3D_OES */ + { 42595, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */ + { 42617, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */ + { 42643, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */ + { 42665, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */ + { 42687, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY */ + { 42715, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */ + { 42747, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */ + { 42769, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY */ + { 42797, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */ + { 42829, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */ + { 42851, 0x0000806A }, /* GL_TEXTURE_BINDING_3D_OES */ + { 42877, 0x00008C2C }, /* GL_TEXTURE_BINDING_BUFFER */ + { 42903, 0x00008C2C }, /* GL_TEXTURE_BINDING_BUFFER_ARB */ + { 42933, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */ + { 42961, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */ + { 42993, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_OES */ + { 43025, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE */ + { 43054, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */ + { 43087, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */ + { 43119, 0x00040000 }, /* GL_TEXTURE_BIT */ + { 43134, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */ + { 43155, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */ + { 43180, 0x00001005 }, /* GL_TEXTURE_BORDER */ + { 43198, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */ + { 43222, 0x00008C2A }, /* GL_TEXTURE_BUFFER */ + { 43240, 0x00008C2A }, /* GL_TEXTURE_BUFFER_ARB */ + { 43262, 0x00008C2D }, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */ + { 43299, 0x00008C2D }, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB */ + { 43340, 0x00008C2E }, /* GL_TEXTURE_BUFFER_FORMAT */ + { 43365, 0x00008C2E }, /* GL_TEXTURE_BUFFER_FORMAT_ARB */ + { 43394, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ + { 43425, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ + { 43455, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ + { 43485, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ + { 43520, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ + { 43551, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + { 43589, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */ + { 43616, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ + { 43648, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ + { 43682, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */ + { 43706, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */ + { 43734, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */ + { 43758, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */ + { 43786, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ + { 43819, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */ + { 43843, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */ + { 43865, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */ + { 43887, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */ + { 43913, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */ + { 43947, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ + { 43980, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */ + { 44017, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */ + { 44045, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */ + { 44077, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */ + { 44100, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ + { 44138, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */ + { 44180, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */ + { 44211, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */ + { 44239, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ + { 44269, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */ + { 44297, 0x00008B9D }, /* GL_TEXTURE_CROP_RECT_OES */ + { 44322, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */ + { 44342, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */ + { 44366, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ + { 44397, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */ + { 44432, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES */ + { 44467, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ + { 44498, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */ + { 44533, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES */ + { 44568, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ + { 44599, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */ + { 44634, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES */ + { 44669, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_OES */ + { 44693, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ + { 44724, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */ + { 44759, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES */ + { 44794, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ + { 44825, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */ + { 44860, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES */ + { 44895, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ + { 44926, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */ + { 44961, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES */ + { 44996, 0x000088F4 }, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */ + { 45025, 0x00008071 }, /* GL_TEXTURE_DEPTH */ + { 45042, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */ + { 45064, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */ + { 45090, 0x00002300 }, /* GL_TEXTURE_ENV */ + { 45105, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */ + { 45126, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */ + { 45146, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */ + { 45172, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL_EXT */ + { 45202, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */ + { 45222, 0x00002500 }, /* GL_TEXTURE_GEN_MODE_OES */ + { 45246, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */ + { 45263, 0x00000C62 }, /* GL_TEXTURE_GEN_R */ + { 45280, 0x00000C60 }, /* GL_TEXTURE_GEN_S */ + { 45297, 0x00008D60 }, /* GL_TEXTURE_GEN_STR_OES */ + { 45320, 0x00000C61 }, /* GL_TEXTURE_GEN_T */ + { 45337, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */ + { 45362, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */ + { 45384, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */ + { 45410, 0x00001001 }, /* GL_TEXTURE_HEIGHT */ + { 45428, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */ + { 45454, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */ + { 45480, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */ + { 45510, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */ + { 45537, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */ + { 45562, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */ + { 45582, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */ + { 45606, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ + { 45633, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ + { 45660, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ + { 45687, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */ + { 45713, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */ + { 45743, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */ + { 45765, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */ + { 45783, 0x0000898F }, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */ + { 45823, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ + { 45853, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ + { 45881, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ + { 45909, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ + { 45937, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */ + { 45958, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */ + { 45977, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */ + { 45999, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */ + { 46018, 0x00008066 }, /* GL_TEXTURE_PRIORITY */ + { 46038, 0x000085B7 }, /* GL_TEXTURE_RANGE_LENGTH_APPLE */ + { 46068, 0x000085B8 }, /* GL_TEXTURE_RANGE_POINTER_APPLE */ + { 46099, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE */ + { 46120, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */ + { 46145, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */ + { 46169, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */ + { 46189, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */ + { 46213, 0x00008067 }, /* GL_TEXTURE_RESIDENT */ + { 46233, 0x00008C3F }, /* GL_TEXTURE_SHARED_SIZE */ + { 46256, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */ + { 46279, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE */ + { 46303, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE_EXT */ + { 46331, 0x000085BC }, /* GL_TEXTURE_STORAGE_HINT_APPLE */ + { 46361, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */ + { 46386, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ + { 46420, 0x00001000 }, /* GL_TEXTURE_WIDTH */ + { 46437, 0x00008072 }, /* GL_TEXTURE_WRAP_R */ + { 46455, 0x00008072 }, /* GL_TEXTURE_WRAP_R_OES */ + { 46477, 0x00002802 }, /* GL_TEXTURE_WRAP_S */ + { 46495, 0x00002803 }, /* GL_TEXTURE_WRAP_T */ + { 46513, 0x0000911B }, /* GL_TIMEOUT_EXPIRED */ + { 46532, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */ + { 46552, 0x00008648 }, /* GL_TRACK_MATRIX_NV */ + { 46571, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */ + { 46600, 0x00001000 }, /* GL_TRANSFORM_BIT */ + { 46617, 0x00008E22 }, /* GL_TRANSFORM_FEEDBACK */ + { 46639, 0x00008E25 }, /* GL_TRANSFORM_FEEDBACK_BINDING */ + { 46669, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER */ + { 46698, 0x00008E24 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */ + { 46734, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */ + { 46771, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */ + { 46812, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */ + { 46845, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */ + { 46879, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */ + { 46917, 0x00008E23 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */ + { 46953, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */ + { 46987, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */ + { 47025, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */ + { 47060, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */ + { 47099, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */ + { 47140, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */ + { 47185, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS */ + { 47216, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */ + { 47251, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */ + { 47292, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */ + { 47337, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */ + { 47363, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */ + { 47393, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ + { 47425, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ + { 47455, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */ + { 47489, 0x0000862C }, /* GL_TRANSPOSE_NV */ + { 47505, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */ + { 47536, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */ + { 47571, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */ + { 47599, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */ + { 47631, 0x00000004 }, /* GL_TRIANGLES */ + { 47644, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY */ + { 47667, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY_ARB */ + { 47694, 0x00000006 }, /* GL_TRIANGLE_FAN */ + { 47710, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */ + { 47731, 0x00000005 }, /* GL_TRIANGLE_STRIP */ + { 47749, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY */ + { 47777, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY_ARB */ + { 47809, 0x00000001 }, /* GL_TRUE */ + { 47817, 0x00008A1C }, /* GL_UNDEFINED_APPLE */ + { 47836, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */ + { 47856, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */ + { 47879, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */ + { 47899, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */ + { 47920, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */ + { 47942, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */ + { 47964, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */ + { 47984, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */ + { 48005, 0x00009118 }, /* GL_UNSIGNALED */ + { 48019, 0x00001401 }, /* GL_UNSIGNED_BYTE */ + { 48036, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */ + { 48063, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */ + { 48086, 0x00001405 }, /* GL_UNSIGNED_INT */ + { 48102, 0x00008C3B }, /* GL_UNSIGNED_INT_10F_11F_11F_REV */ + { 48134, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */ + { 48161, 0x00008DF6 }, /* GL_UNSIGNED_INT_10_10_10_2_OES */ + { 48192, 0x000084FA }, /* GL_UNSIGNED_INT_24_8 */ + { 48213, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_EXT */ + { 48238, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */ + { 48262, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_OES */ + { 48287, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */ + { 48318, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV_EXT */ + { 48353, 0x00008C3E }, /* GL_UNSIGNED_INT_5_9_9_9_REV */ + { 48381, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */ + { 48405, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */ + { 48433, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D */ + { 48460, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */ + { 48493, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT */ + { 48530, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D_EXT */ + { 48561, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D */ + { 48588, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */ + { 48621, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT */ + { 48658, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D_EXT */ + { 48689, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */ + { 48721, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT */ + { 48757, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D */ + { 48784, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D_EXT */ + { 48815, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */ + { 48846, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT */ + { 48881, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE */ + { 48910, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE_EXT */ + { 48943, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2 */ + { 48964, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2_EXT */ + { 48989, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3 */ + { 49010, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3_EXT */ + { 49035, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4 */ + { 49056, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4_EXT */ + { 49081, 0x00008C17 }, /* GL_UNSIGNED_NORMALIZED */ + { 49104, 0x00001403 }, /* GL_UNSIGNED_SHORT */ + { 49122, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ + { 49152, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT */ + { 49186, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */ + { 49212, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ + { 49242, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT */ + { 49276, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */ + { 49302, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */ + { 49326, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */ + { 49354, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */ + { 49382, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */ + { 49409, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ + { 49441, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */ + { 49472, 0x00008CA2 }, /* GL_UPPER_LEFT */ + { 49486, 0x00002A20 }, /* GL_V2F */ + { 49493, 0x00002A21 }, /* GL_V3F */ + { 49500, 0x00008B83 }, /* GL_VALIDATE_STATUS */ + { 49519, 0x00001F00 }, /* GL_VENDOR */ + { 49529, 0x00001F02 }, /* GL_VERSION */ + { 49540, 0x00008074 }, /* GL_VERTEX_ARRAY */ + { 49556, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING */ + { 49580, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */ + { 49610, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ + { 49641, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */ + { 49676, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */ + { 49700, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */ + { 49721, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */ + { 49744, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */ + { 49765, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ + { 49792, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ + { 49820, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ + { 49848, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ + { 49876, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ + { 49904, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ + { 49932, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ + { 49960, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ + { 49987, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ + { 50014, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ + { 50041, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ + { 50068, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ + { 50095, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ + { 50122, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ + { 50149, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ + { 50176, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ + { 50203, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ + { 50241, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */ + { 50283, 0x000088FE }, /* GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB */ + { 50318, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ + { 50349, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */ + { 50384, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */ + { 50415, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT */ + { 50450, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ + { 50484, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */ + { 50522, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ + { 50553, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */ + { 50588, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ + { 50616, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */ + { 50648, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ + { 50678, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */ + { 50712, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ + { 50740, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */ + { 50772, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */ + { 50792, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */ + { 50814, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */ + { 50843, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */ + { 50864, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */ + { 50893, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */ + { 50926, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */ + { 50958, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */ + { 50985, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */ + { 51016, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */ + { 51046, 0x00008B31 }, /* GL_VERTEX_SHADER */ + { 51063, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */ + { 51084, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */ + { 51111, 0x00000BA2 }, /* GL_VIEWPORT */ + { 51123, 0x00000800 }, /* GL_VIEWPORT_BIT */ + { 51139, 0x00008A1A }, /* GL_VOLATILE_APPLE */ + { 51157, 0x0000911D }, /* GL_WAIT_FAILED */ + { 51172, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */ + { 51192, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ + { 51223, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */ + { 51258, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_OES */ + { 51293, 0x000086AD }, /* GL_WEIGHT_ARRAY_OES */ + { 51313, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */ + { 51341, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_OES */ + { 51369, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */ + { 51394, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_OES */ + { 51419, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ + { 51446, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_OES */ + { 51473, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */ + { 51498, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_OES */ + { 51523, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */ + { 51547, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */ + { 51566, 0x000088B9 }, /* GL_WRITE_ONLY */ + { 51580, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */ + { 51598, 0x000088B9 }, /* GL_WRITE_ONLY_OES */ + { 51616, 0x00001506 }, /* GL_XOR */ + { 51623, 0x000085B9 }, /* GL_YCBCR_422_APPLE */ + { 51642, 0x00008757 }, /* GL_YCBCR_MESA */ + { 51656, 0x00000000 }, /* GL_ZERO */ + { 51664, 0x00000D16 }, /* GL_ZOOM_X */ + { 51674, 0x00000D17 }, /* GL_ZOOM_Y */ }; -static const unsigned reduced_enums[1552] = +static const unsigned reduced_enums[1556] = { - 535, /* GL_FALSE */ - 827, /* GL_LINES */ - 831, /* GL_LINE_LOOP */ - 838, /* GL_LINE_STRIP */ - 2135, /* GL_TRIANGLES */ - 2140, /* GL_TRIANGLE_STRIP */ - 2138, /* GL_TRIANGLE_FAN */ - 1507, /* GL_QUADS */ - 1511, /* GL_QUAD_STRIP */ - 1378, /* GL_POLYGON */ - 828, /* GL_LINES_ADJACENCY */ - 839, /* GL_LINE_STRIP_ADJACENCY */ - 2136, /* GL_TRIANGLES_ADJACENCY */ - 2141, /* GL_TRIANGLE_STRIP_ADJACENCY */ - 1390, /* GL_POLYGON_STIPPLE_BIT */ - 1333, /* GL_PIXEL_MODE_BIT */ - 814, /* GL_LIGHTING_BIT */ - 568, /* GL_FOG_BIT */ + 538, /* GL_FALSE */ + 831, /* GL_LINES */ + 835, /* GL_LINE_LOOP */ + 842, /* GL_LINE_STRIP */ + 2146, /* GL_TRIANGLES */ + 2151, /* GL_TRIANGLE_STRIP */ + 2149, /* GL_TRIANGLE_FAN */ + 1512, /* GL_QUADS */ + 1516, /* GL_QUAD_STRIP */ + 1383, /* GL_POLYGON */ + 832, /* GL_LINES_ADJACENCY */ + 843, /* GL_LINE_STRIP_ADJACENCY */ + 2147, /* GL_TRIANGLES_ADJACENCY */ + 2152, /* GL_TRIANGLE_STRIP_ADJACENCY */ + 1395, /* GL_POLYGON_STIPPLE_BIT */ + 1338, /* GL_PIXEL_MODE_BIT */ + 818, /* GL_LIGHTING_BIT */ + 572, /* GL_FOG_BIT */ 8, /* GL_ACCUM */ - 850, /* GL_LOAD */ - 1596, /* GL_RETURN */ - 1200, /* GL_MULT */ + 854, /* GL_LOAD */ + 1601, /* GL_RETURN */ + 1205, /* GL_MULT */ 24, /* GL_ADD */ - 1216, /* GL_NEVER */ - 804, /* GL_LESS */ - 525, /* GL_EQUAL */ - 803, /* GL_LEQUAL */ - 691, /* GL_GREATER */ - 1233, /* GL_NOTEQUAL */ - 690, /* GL_GEQUAL */ + 1221, /* GL_NEVER */ + 808, /* GL_LESS */ + 528, /* GL_EQUAL */ + 807, /* GL_LEQUAL */ + 695, /* GL_GREATER */ + 1238, /* GL_NOTEQUAL */ + 694, /* GL_GEQUAL */ 55, /* GL_ALWAYS */ - 1803, /* GL_SRC_COLOR */ - 1266, /* GL_ONE_MINUS_SRC_COLOR */ - 1801, /* GL_SRC_ALPHA */ - 1265, /* GL_ONE_MINUS_SRC_ALPHA */ - 504, /* GL_DST_ALPHA */ - 1263, /* GL_ONE_MINUS_DST_ALPHA */ - 505, /* GL_DST_COLOR */ - 1264, /* GL_ONE_MINUS_DST_COLOR */ - 1802, /* GL_SRC_ALPHA_SATURATE */ - 667, /* GL_FRONT_LEFT */ - 668, /* GL_FRONT_RIGHT */ + 1810, /* GL_SRC_COLOR */ + 1271, /* GL_ONE_MINUS_SRC_COLOR */ + 1808, /* GL_SRC_ALPHA */ + 1270, /* GL_ONE_MINUS_SRC_ALPHA */ + 507, /* GL_DST_ALPHA */ + 1268, /* GL_ONE_MINUS_DST_ALPHA */ + 508, /* GL_DST_COLOR */ + 1269, /* GL_ONE_MINUS_DST_COLOR */ + 1809, /* GL_SRC_ALPHA_SATURATE */ + 671, /* GL_FRONT_LEFT */ + 672, /* GL_FRONT_RIGHT */ 77, /* GL_BACK_LEFT */ 78, /* GL_BACK_RIGHT */ - 664, /* GL_FRONT */ + 668, /* GL_FRONT */ 76, /* GL_BACK */ - 802, /* GL_LEFT */ - 1685, /* GL_RIGHT */ - 665, /* GL_FRONT_AND_BACK */ + 806, /* GL_LEFT */ + 1691, /* GL_RIGHT */ + 669, /* GL_FRONT_AND_BACK */ 71, /* GL_AUX0 */ 72, /* GL_AUX1 */ 73, /* GL_AUX2 */ 74, /* GL_AUX3 */ - 790, /* GL_INVALID_ENUM */ - 795, /* GL_INVALID_VALUE */ - 794, /* GL_INVALID_OPERATION */ - 1808, /* GL_STACK_OVERFLOW */ - 1809, /* GL_STACK_UNDERFLOW */ - 1291, /* GL_OUT_OF_MEMORY */ - 791, /* GL_INVALID_FRAMEBUFFER_OPERATION */ + 794, /* GL_INVALID_ENUM */ + 799, /* GL_INVALID_VALUE */ + 798, /* GL_INVALID_OPERATION */ + 1815, /* GL_STACK_OVERFLOW */ + 1816, /* GL_STACK_UNDERFLOW */ + 1296, /* GL_OUT_OF_MEMORY */ + 795, /* GL_INVALID_FRAMEBUFFER_OPERATION */ 0, /* GL_2D */ 2, /* GL_3D */ 3, /* GL_3D_COLOR */ 4, /* GL_3D_COLOR_TEXTURE */ 6, /* GL_4D_COLOR_TEXTURE */ - 1311, /* GL_PASS_THROUGH_TOKEN */ - 1377, /* GL_POINT_TOKEN */ - 841, /* GL_LINE_TOKEN */ - 1391, /* GL_POLYGON_TOKEN */ + 1316, /* GL_PASS_THROUGH_TOKEN */ + 1382, /* GL_POINT_TOKEN */ + 845, /* GL_LINE_TOKEN */ + 1396, /* GL_POLYGON_TOKEN */ 87, /* GL_BITMAP_TOKEN */ - 503, /* GL_DRAW_PIXEL_TOKEN */ - 349, /* GL_COPY_PIXEL_TOKEN */ - 832, /* GL_LINE_RESET_TOKEN */ - 528, /* GL_EXP */ - 529, /* GL_EXP2 */ - 386, /* GL_CW */ + 506, /* GL_DRAW_PIXEL_TOKEN */ + 352, /* GL_COPY_PIXEL_TOKEN */ + 836, /* GL_LINE_RESET_TOKEN */ + 531, /* GL_EXP */ + 532, /* GL_EXP2 */ + 389, /* GL_CW */ 154, /* GL_CCW */ - 184, /* GL_COEFF */ - 1288, /* GL_ORDER */ - 440, /* GL_DOMAIN */ - 359, /* GL_CURRENT_COLOR */ - 362, /* GL_CURRENT_INDEX */ - 368, /* GL_CURRENT_NORMAL */ - 382, /* GL_CURRENT_TEXTURE_COORDS */ - 374, /* GL_CURRENT_RASTER_COLOR */ - 376, /* GL_CURRENT_RASTER_INDEX */ - 380, /* GL_CURRENT_RASTER_TEXTURE_COORDS */ - 377, /* GL_CURRENT_RASTER_POSITION */ - 378, /* GL_CURRENT_RASTER_POSITION_VALID */ - 375, /* GL_CURRENT_RASTER_DISTANCE */ - 1369, /* GL_POINT_SMOOTH */ - 1353, /* GL_POINT_SIZE */ - 1368, /* GL_POINT_SIZE_RANGE */ - 1359, /* GL_POINT_SIZE_GRANULARITY */ - 833, /* GL_LINE_SMOOTH */ - 842, /* GL_LINE_WIDTH */ - 844, /* GL_LINE_WIDTH_RANGE */ - 843, /* GL_LINE_WIDTH_GRANULARITY */ - 835, /* GL_LINE_STIPPLE */ - 836, /* GL_LINE_STIPPLE_PATTERN */ - 837, /* GL_LINE_STIPPLE_REPEAT */ - 849, /* GL_LIST_MODE */ - 1056, /* GL_MAX_LIST_NESTING */ - 846, /* GL_LIST_BASE */ - 848, /* GL_LIST_INDEX */ - 1380, /* GL_POLYGON_MODE */ - 1387, /* GL_POLYGON_SMOOTH */ - 1389, /* GL_POLYGON_STIPPLE */ - 514, /* GL_EDGE_FLAG */ - 352, /* GL_CULL_FACE */ - 353, /* GL_CULL_FACE_MODE */ - 666, /* GL_FRONT_FACE */ - 813, /* GL_LIGHTING */ - 818, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ - 819, /* GL_LIGHT_MODEL_TWO_SIDE */ - 815, /* GL_LIGHT_MODEL_AMBIENT */ - 1750, /* GL_SHADE_MODEL */ - 232, /* GL_COLOR_MATERIAL_FACE */ - 233, /* GL_COLOR_MATERIAL_PARAMETER */ - 231, /* GL_COLOR_MATERIAL */ - 567, /* GL_FOG */ - 589, /* GL_FOG_INDEX */ - 585, /* GL_FOG_DENSITY */ - 593, /* GL_FOG_START */ - 587, /* GL_FOG_END */ - 590, /* GL_FOG_MODE */ - 569, /* GL_FOG_COLOR */ - 425, /* GL_DEPTH_RANGE */ - 434, /* GL_DEPTH_TEST */ - 437, /* GL_DEPTH_WRITEMASK */ - 410, /* GL_DEPTH_CLEAR_VALUE */ - 424, /* GL_DEPTH_FUNC */ + 187, /* GL_COEFF */ + 1293, /* GL_ORDER */ + 443, /* GL_DOMAIN */ + 362, /* GL_CURRENT_COLOR */ + 365, /* GL_CURRENT_INDEX */ + 371, /* GL_CURRENT_NORMAL */ + 385, /* GL_CURRENT_TEXTURE_COORDS */ + 377, /* GL_CURRENT_RASTER_COLOR */ + 379, /* GL_CURRENT_RASTER_INDEX */ + 383, /* GL_CURRENT_RASTER_TEXTURE_COORDS */ + 380, /* GL_CURRENT_RASTER_POSITION */ + 381, /* GL_CURRENT_RASTER_POSITION_VALID */ + 378, /* GL_CURRENT_RASTER_DISTANCE */ + 1374, /* GL_POINT_SMOOTH */ + 1358, /* GL_POINT_SIZE */ + 1373, /* GL_POINT_SIZE_RANGE */ + 1364, /* GL_POINT_SIZE_GRANULARITY */ + 837, /* GL_LINE_SMOOTH */ + 846, /* GL_LINE_WIDTH */ + 848, /* GL_LINE_WIDTH_RANGE */ + 847, /* GL_LINE_WIDTH_GRANULARITY */ + 839, /* GL_LINE_STIPPLE */ + 840, /* GL_LINE_STIPPLE_PATTERN */ + 841, /* GL_LINE_STIPPLE_REPEAT */ + 853, /* GL_LIST_MODE */ + 1060, /* GL_MAX_LIST_NESTING */ + 850, /* GL_LIST_BASE */ + 852, /* GL_LIST_INDEX */ + 1385, /* GL_POLYGON_MODE */ + 1392, /* GL_POLYGON_SMOOTH */ + 1394, /* GL_POLYGON_STIPPLE */ + 517, /* GL_EDGE_FLAG */ + 355, /* GL_CULL_FACE */ + 356, /* GL_CULL_FACE_MODE */ + 670, /* GL_FRONT_FACE */ + 817, /* GL_LIGHTING */ + 822, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ + 823, /* GL_LIGHT_MODEL_TWO_SIDE */ + 819, /* GL_LIGHT_MODEL_AMBIENT */ + 1757, /* GL_SHADE_MODEL */ + 235, /* GL_COLOR_MATERIAL_FACE */ + 236, /* GL_COLOR_MATERIAL_PARAMETER */ + 234, /* GL_COLOR_MATERIAL */ + 571, /* GL_FOG */ + 593, /* GL_FOG_INDEX */ + 589, /* GL_FOG_DENSITY */ + 597, /* GL_FOG_START */ + 591, /* GL_FOG_END */ + 594, /* GL_FOG_MODE */ + 573, /* GL_FOG_COLOR */ + 428, /* GL_DEPTH_RANGE */ + 437, /* GL_DEPTH_TEST */ + 440, /* GL_DEPTH_WRITEMASK */ + 413, /* GL_DEPTH_CLEAR_VALUE */ + 427, /* GL_DEPTH_FUNC */ 12, /* GL_ACCUM_CLEAR_VALUE */ - 1853, /* GL_STENCIL_TEST */ - 1834, /* GL_STENCIL_CLEAR_VALUE */ - 1836, /* GL_STENCIL_FUNC */ - 1855, /* GL_STENCIL_VALUE_MASK */ - 1835, /* GL_STENCIL_FAIL */ - 1850, /* GL_STENCIL_PASS_DEPTH_FAIL */ - 1851, /* GL_STENCIL_PASS_DEPTH_PASS */ - 1852, /* GL_STENCIL_REF */ - 1856, /* GL_STENCIL_WRITEMASK */ - 1006, /* GL_MATRIX_MODE */ - 1222, /* GL_NORMALIZE */ - 2267, /* GL_VIEWPORT */ - 1195, /* GL_MODELVIEW_STACK_DEPTH */ - 1481, /* GL_PROJECTION_STACK_DEPTH */ - 2089, /* GL_TEXTURE_STACK_DEPTH */ - 1192, /* GL_MODELVIEW_MATRIX */ - 1479, /* GL_PROJECTION_MATRIX */ - 2069, /* GL_TEXTURE_MATRIX */ + 1860, /* GL_STENCIL_TEST */ + 1841, /* GL_STENCIL_CLEAR_VALUE */ + 1843, /* GL_STENCIL_FUNC */ + 1862, /* GL_STENCIL_VALUE_MASK */ + 1842, /* GL_STENCIL_FAIL */ + 1857, /* GL_STENCIL_PASS_DEPTH_FAIL */ + 1858, /* GL_STENCIL_PASS_DEPTH_PASS */ + 1859, /* GL_STENCIL_REF */ + 1863, /* GL_STENCIL_WRITEMASK */ + 1010, /* GL_MATRIX_MODE */ + 1227, /* GL_NORMALIZE */ + 2278, /* GL_VIEWPORT */ + 1200, /* GL_MODELVIEW_STACK_DEPTH */ + 1486, /* GL_PROJECTION_STACK_DEPTH */ + 2100, /* GL_TEXTURE_STACK_DEPTH */ + 1197, /* GL_MODELVIEW_MATRIX */ + 1484, /* GL_PROJECTION_MATRIX */ + 2080, /* GL_TEXTURE_MATRIX */ 69, /* GL_ATTRIB_STACK_DEPTH */ - 166, /* GL_CLIENT_ATTRIB_STACK_DEPTH */ + 169, /* GL_CLIENT_ATTRIB_STACK_DEPTH */ 51, /* GL_ALPHA_TEST */ 52, /* GL_ALPHA_TEST_FUNC */ 53, /* GL_ALPHA_TEST_REF */ - 439, /* GL_DITHER */ + 442, /* GL_DITHER */ 91, /* GL_BLEND_DST */ 105, /* GL_BLEND_SRC */ 88, /* GL_BLEND */ - 852, /* GL_LOGIC_OP_MODE */ - 739, /* GL_INDEX_LOGIC_OP */ - 230, /* GL_COLOR_LOGIC_OP */ + 856, /* GL_LOGIC_OP_MODE */ + 743, /* GL_INDEX_LOGIC_OP */ + 233, /* GL_COLOR_LOGIC_OP */ 75, /* GL_AUX_BUFFERS */ - 450, /* GL_DRAW_BUFFER */ - 1534, /* GL_READ_BUFFER */ - 1727, /* GL_SCISSOR_BOX */ - 1728, /* GL_SCISSOR_TEST */ - 738, /* GL_INDEX_CLEAR_VALUE */ - 743, /* GL_INDEX_WRITEMASK */ - 227, /* GL_COLOR_CLEAR_VALUE */ - 269, /* GL_COLOR_WRITEMASK */ - 740, /* GL_INDEX_MODE */ - 1674, /* GL_RGBA_MODE */ - 449, /* GL_DOUBLEBUFFER */ - 1857, /* GL_STEREO */ - 1588, /* GL_RENDER_MODE */ - 1312, /* GL_PERSPECTIVE_CORRECTION_HINT */ - 1370, /* GL_POINT_SMOOTH_HINT */ - 834, /* GL_LINE_SMOOTH_HINT */ - 1388, /* GL_POLYGON_SMOOTH_HINT */ - 588, /* GL_FOG_HINT */ - 2049, /* GL_TEXTURE_GEN_S */ - 2051, /* GL_TEXTURE_GEN_T */ - 2048, /* GL_TEXTURE_GEN_R */ - 2047, /* GL_TEXTURE_GEN_Q */ - 1325, /* GL_PIXEL_MAP_I_TO_I */ - 1331, /* GL_PIXEL_MAP_S_TO_S */ - 1327, /* GL_PIXEL_MAP_I_TO_R */ - 1323, /* GL_PIXEL_MAP_I_TO_G */ - 1321, /* GL_PIXEL_MAP_I_TO_B */ - 1319, /* GL_PIXEL_MAP_I_TO_A */ - 1329, /* GL_PIXEL_MAP_R_TO_R */ - 1317, /* GL_PIXEL_MAP_G_TO_G */ - 1315, /* GL_PIXEL_MAP_B_TO_B */ - 1313, /* GL_PIXEL_MAP_A_TO_A */ - 1326, /* GL_PIXEL_MAP_I_TO_I_SIZE */ - 1332, /* GL_PIXEL_MAP_S_TO_S_SIZE */ - 1328, /* GL_PIXEL_MAP_I_TO_R_SIZE */ - 1324, /* GL_PIXEL_MAP_I_TO_G_SIZE */ - 1322, /* GL_PIXEL_MAP_I_TO_B_SIZE */ - 1320, /* GL_PIXEL_MAP_I_TO_A_SIZE */ - 1330, /* GL_PIXEL_MAP_R_TO_R_SIZE */ - 1318, /* GL_PIXEL_MAP_G_TO_G_SIZE */ - 1316, /* GL_PIXEL_MAP_B_TO_B_SIZE */ - 1314, /* GL_PIXEL_MAP_A_TO_A_SIZE */ - 2152, /* GL_UNPACK_SWAP_BYTES */ - 2147, /* GL_UNPACK_LSB_FIRST */ - 2148, /* GL_UNPACK_ROW_LENGTH */ - 2151, /* GL_UNPACK_SKIP_ROWS */ - 2150, /* GL_UNPACK_SKIP_PIXELS */ - 2145, /* GL_UNPACK_ALIGNMENT */ - 1300, /* GL_PACK_SWAP_BYTES */ - 1295, /* GL_PACK_LSB_FIRST */ - 1296, /* GL_PACK_ROW_LENGTH */ - 1299, /* GL_PACK_SKIP_ROWS */ - 1298, /* GL_PACK_SKIP_PIXELS */ - 1292, /* GL_PACK_ALIGNMENT */ - 947, /* GL_MAP_COLOR */ - 952, /* GL_MAP_STENCIL */ - 742, /* GL_INDEX_SHIFT */ - 741, /* GL_INDEX_OFFSET */ - 1550, /* GL_RED_SCALE */ - 1546, /* GL_RED_BIAS */ - 2293, /* GL_ZOOM_X */ - 2294, /* GL_ZOOM_Y */ - 697, /* GL_GREEN_SCALE */ - 693, /* GL_GREEN_BIAS */ + 453, /* GL_DRAW_BUFFER */ + 1539, /* GL_READ_BUFFER */ + 1734, /* GL_SCISSOR_BOX */ + 1735, /* GL_SCISSOR_TEST */ + 742, /* GL_INDEX_CLEAR_VALUE */ + 747, /* GL_INDEX_WRITEMASK */ + 230, /* GL_COLOR_CLEAR_VALUE */ + 272, /* GL_COLOR_WRITEMASK */ + 744, /* GL_INDEX_MODE */ + 1680, /* GL_RGBA_MODE */ + 452, /* GL_DOUBLEBUFFER */ + 1864, /* GL_STEREO */ + 1593, /* GL_RENDER_MODE */ + 1317, /* GL_PERSPECTIVE_CORRECTION_HINT */ + 1375, /* GL_POINT_SMOOTH_HINT */ + 838, /* GL_LINE_SMOOTH_HINT */ + 1393, /* GL_POLYGON_SMOOTH_HINT */ + 592, /* GL_FOG_HINT */ + 2060, /* GL_TEXTURE_GEN_S */ + 2062, /* GL_TEXTURE_GEN_T */ + 2059, /* GL_TEXTURE_GEN_R */ + 2058, /* GL_TEXTURE_GEN_Q */ + 1330, /* GL_PIXEL_MAP_I_TO_I */ + 1336, /* GL_PIXEL_MAP_S_TO_S */ + 1332, /* GL_PIXEL_MAP_I_TO_R */ + 1328, /* GL_PIXEL_MAP_I_TO_G */ + 1326, /* GL_PIXEL_MAP_I_TO_B */ + 1324, /* GL_PIXEL_MAP_I_TO_A */ + 1334, /* GL_PIXEL_MAP_R_TO_R */ + 1322, /* GL_PIXEL_MAP_G_TO_G */ + 1320, /* GL_PIXEL_MAP_B_TO_B */ + 1318, /* GL_PIXEL_MAP_A_TO_A */ + 1331, /* GL_PIXEL_MAP_I_TO_I_SIZE */ + 1337, /* GL_PIXEL_MAP_S_TO_S_SIZE */ + 1333, /* GL_PIXEL_MAP_I_TO_R_SIZE */ + 1329, /* GL_PIXEL_MAP_I_TO_G_SIZE */ + 1327, /* GL_PIXEL_MAP_I_TO_B_SIZE */ + 1325, /* GL_PIXEL_MAP_I_TO_A_SIZE */ + 1335, /* GL_PIXEL_MAP_R_TO_R_SIZE */ + 1323, /* GL_PIXEL_MAP_G_TO_G_SIZE */ + 1321, /* GL_PIXEL_MAP_B_TO_B_SIZE */ + 1319, /* GL_PIXEL_MAP_A_TO_A_SIZE */ + 2163, /* GL_UNPACK_SWAP_BYTES */ + 2158, /* GL_UNPACK_LSB_FIRST */ + 2159, /* GL_UNPACK_ROW_LENGTH */ + 2162, /* GL_UNPACK_SKIP_ROWS */ + 2161, /* GL_UNPACK_SKIP_PIXELS */ + 2156, /* GL_UNPACK_ALIGNMENT */ + 1305, /* GL_PACK_SWAP_BYTES */ + 1300, /* GL_PACK_LSB_FIRST */ + 1301, /* GL_PACK_ROW_LENGTH */ + 1304, /* GL_PACK_SKIP_ROWS */ + 1303, /* GL_PACK_SKIP_PIXELS */ + 1297, /* GL_PACK_ALIGNMENT */ + 951, /* GL_MAP_COLOR */ + 956, /* GL_MAP_STENCIL */ + 746, /* GL_INDEX_SHIFT */ + 745, /* GL_INDEX_OFFSET */ + 1555, /* GL_RED_SCALE */ + 1551, /* GL_RED_BIAS */ + 2304, /* GL_ZOOM_X */ + 2305, /* GL_ZOOM_Y */ + 701, /* GL_GREEN_SCALE */ + 697, /* GL_GREEN_BIAS */ 115, /* GL_BLUE_SCALE */ 111, /* GL_BLUE_BIAS */ 50, /* GL_ALPHA_SCALE */ 47, /* GL_ALPHA_BIAS */ - 426, /* GL_DEPTH_SCALE */ - 402, /* GL_DEPTH_BIAS */ - 1038, /* GL_MAX_EVAL_ORDER */ - 1055, /* GL_MAX_LIGHTS */ - 1018, /* GL_MAX_CLIP_DISTANCES */ - 1110, /* GL_MAX_TEXTURE_SIZE */ - 1062, /* GL_MAX_PIXEL_MAP_TABLE */ - 1014, /* GL_MAX_ATTRIB_STACK_DEPTH */ - 1058, /* GL_MAX_MODELVIEW_STACK_DEPTH */ - 1059, /* GL_MAX_NAME_STACK_DEPTH */ - 1090, /* GL_MAX_PROJECTION_STACK_DEPTH */ - 1111, /* GL_MAX_TEXTURE_STACK_DEPTH */ - 1137, /* GL_MAX_VIEWPORT_DIMS */ - 1015, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ - 1867, /* GL_SUBPIXEL_BITS */ - 737, /* GL_INDEX_BITS */ - 1547, /* GL_RED_BITS */ - 694, /* GL_GREEN_BITS */ + 429, /* GL_DEPTH_SCALE */ + 405, /* GL_DEPTH_BIAS */ + 1042, /* GL_MAX_EVAL_ORDER */ + 1059, /* GL_MAX_LIGHTS */ + 1022, /* GL_MAX_CLIP_DISTANCES */ + 1115, /* GL_MAX_TEXTURE_SIZE */ + 1066, /* GL_MAX_PIXEL_MAP_TABLE */ + 1018, /* GL_MAX_ATTRIB_STACK_DEPTH */ + 1062, /* GL_MAX_MODELVIEW_STACK_DEPTH */ + 1063, /* GL_MAX_NAME_STACK_DEPTH */ + 1094, /* GL_MAX_PROJECTION_STACK_DEPTH */ + 1116, /* GL_MAX_TEXTURE_STACK_DEPTH */ + 1142, /* GL_MAX_VIEWPORT_DIMS */ + 1019, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ + 1874, /* GL_SUBPIXEL_BITS */ + 741, /* GL_INDEX_BITS */ + 1552, /* GL_RED_BITS */ + 698, /* GL_GREEN_BITS */ 112, /* GL_BLUE_BITS */ 48, /* GL_ALPHA_BITS */ - 403, /* GL_DEPTH_BITS */ - 1831, /* GL_STENCIL_BITS */ + 406, /* GL_DEPTH_BITS */ + 1838, /* GL_STENCIL_BITS */ 14, /* GL_ACCUM_RED_BITS */ 13, /* GL_ACCUM_GREEN_BITS */ 10, /* GL_ACCUM_BLUE_BITS */ 9, /* GL_ACCUM_ALPHA_BITS */ - 1209, /* GL_NAME_STACK_DEPTH */ + 1214, /* GL_NAME_STACK_DEPTH */ 70, /* GL_AUTO_NORMAL */ - 893, /* GL_MAP1_COLOR_4 */ - 896, /* GL_MAP1_INDEX */ - 897, /* GL_MAP1_NORMAL */ - 898, /* GL_MAP1_TEXTURE_COORD_1 */ - 899, /* GL_MAP1_TEXTURE_COORD_2 */ - 900, /* GL_MAP1_TEXTURE_COORD_3 */ - 901, /* GL_MAP1_TEXTURE_COORD_4 */ - 902, /* GL_MAP1_VERTEX_3 */ - 903, /* GL_MAP1_VERTEX_4 */ - 920, /* GL_MAP2_COLOR_4 */ - 923, /* GL_MAP2_INDEX */ - 924, /* GL_MAP2_NORMAL */ - 925, /* GL_MAP2_TEXTURE_COORD_1 */ - 926, /* GL_MAP2_TEXTURE_COORD_2 */ - 927, /* GL_MAP2_TEXTURE_COORD_3 */ - 928, /* GL_MAP2_TEXTURE_COORD_4 */ - 929, /* GL_MAP2_VERTEX_3 */ - 930, /* GL_MAP2_VERTEX_4 */ - 894, /* GL_MAP1_GRID_DOMAIN */ - 895, /* GL_MAP1_GRID_SEGMENTS */ - 921, /* GL_MAP2_GRID_DOMAIN */ - 922, /* GL_MAP2_GRID_SEGMENTS */ - 1950, /* GL_TEXTURE_1D */ - 1953, /* GL_TEXTURE_2D */ - 538, /* GL_FEEDBACK_BUFFER_POINTER */ - 539, /* GL_FEEDBACK_BUFFER_SIZE */ - 540, /* GL_FEEDBACK_BUFFER_TYPE */ - 1737, /* GL_SELECTION_BUFFER_POINTER */ - 1738, /* GL_SELECTION_BUFFER_SIZE */ - 2095, /* GL_TEXTURE_WIDTH */ - 2055, /* GL_TEXTURE_HEIGHT */ - 1999, /* GL_TEXTURE_COMPONENTS */ - 1980, /* GL_TEXTURE_BORDER_COLOR */ - 1979, /* GL_TEXTURE_BORDER */ - 441, /* GL_DONT_CARE */ - 536, /* GL_FASTEST */ - 1217, /* GL_NICEST */ + 897, /* GL_MAP1_COLOR_4 */ + 900, /* GL_MAP1_INDEX */ + 901, /* GL_MAP1_NORMAL */ + 902, /* GL_MAP1_TEXTURE_COORD_1 */ + 903, /* GL_MAP1_TEXTURE_COORD_2 */ + 904, /* GL_MAP1_TEXTURE_COORD_3 */ + 905, /* GL_MAP1_TEXTURE_COORD_4 */ + 906, /* GL_MAP1_VERTEX_3 */ + 907, /* GL_MAP1_VERTEX_4 */ + 924, /* GL_MAP2_COLOR_4 */ + 927, /* GL_MAP2_INDEX */ + 928, /* GL_MAP2_NORMAL */ + 929, /* GL_MAP2_TEXTURE_COORD_1 */ + 930, /* GL_MAP2_TEXTURE_COORD_2 */ + 931, /* GL_MAP2_TEXTURE_COORD_3 */ + 932, /* GL_MAP2_TEXTURE_COORD_4 */ + 933, /* GL_MAP2_VERTEX_3 */ + 934, /* GL_MAP2_VERTEX_4 */ + 898, /* GL_MAP1_GRID_DOMAIN */ + 899, /* GL_MAP1_GRID_SEGMENTS */ + 925, /* GL_MAP2_GRID_DOMAIN */ + 926, /* GL_MAP2_GRID_SEGMENTS */ + 1957, /* GL_TEXTURE_1D */ + 1960, /* GL_TEXTURE_2D */ + 541, /* GL_FEEDBACK_BUFFER_POINTER */ + 542, /* GL_FEEDBACK_BUFFER_SIZE */ + 543, /* GL_FEEDBACK_BUFFER_TYPE */ + 1744, /* GL_SELECTION_BUFFER_POINTER */ + 1745, /* GL_SELECTION_BUFFER_SIZE */ + 2106, /* GL_TEXTURE_WIDTH */ + 2066, /* GL_TEXTURE_HEIGHT */ + 2010, /* GL_TEXTURE_COMPONENTS */ + 1988, /* GL_TEXTURE_BORDER_COLOR */ + 1987, /* GL_TEXTURE_BORDER */ + 444, /* GL_DONT_CARE */ + 539, /* GL_FASTEST */ + 1222, /* GL_NICEST */ 56, /* GL_AMBIENT */ - 438, /* GL_DIFFUSE */ - 1790, /* GL_SPECULAR */ - 1392, /* GL_POSITION */ - 1793, /* GL_SPOT_DIRECTION */ - 1794, /* GL_SPOT_EXPONENT */ - 1792, /* GL_SPOT_CUTOFF */ - 317, /* GL_CONSTANT_ATTENUATION */ - 822, /* GL_LINEAR_ATTENUATION */ - 1506, /* GL_QUADRATIC_ATTENUATION */ - 284, /* GL_COMPILE */ - 285, /* GL_COMPILE_AND_EXECUTE */ + 441, /* GL_DIFFUSE */ + 1797, /* GL_SPECULAR */ + 1397, /* GL_POSITION */ + 1800, /* GL_SPOT_DIRECTION */ + 1801, /* GL_SPOT_EXPONENT */ + 1799, /* GL_SPOT_CUTOFF */ + 320, /* GL_CONSTANT_ATTENUATION */ + 826, /* GL_LINEAR_ATTENUATION */ + 1511, /* GL_QUADRATIC_ATTENUATION */ + 287, /* GL_COMPILE */ + 288, /* GL_COMPILE_AND_EXECUTE */ 149, /* GL_BYTE */ - 2154, /* GL_UNSIGNED_BYTE */ - 1755, /* GL_SHORT */ - 2193, /* GL_UNSIGNED_SHORT */ - 745, /* GL_INT */ - 2157, /* GL_UNSIGNED_INT */ - 548, /* GL_FLOAT */ + 2165, /* GL_UNSIGNED_BYTE */ + 1762, /* GL_SHORT */ + 2204, /* GL_UNSIGNED_SHORT */ + 749, /* GL_INT */ + 2168, /* GL_UNSIGNED_INT */ + 552, /* GL_FLOAT */ 1, /* GL_2_BYTES */ 5, /* GL_3_BYTES */ 7, /* GL_4_BYTES */ - 448, /* GL_DOUBLE */ - 698, /* GL_HALF_FLOAT */ - 544, /* GL_FIXED */ - 162, /* GL_CLEAR */ + 451, /* GL_DOUBLE */ + 702, /* GL_HALF_FLOAT */ + 547, /* GL_FIXED */ + 165, /* GL_CLEAR */ 58, /* GL_AND */ 60, /* GL_AND_REVERSE */ - 347, /* GL_COPY */ + 350, /* GL_COPY */ 59, /* GL_AND_INVERTED */ - 1220, /* GL_NOOP */ - 2289, /* GL_XOR */ - 1287, /* GL_OR */ - 1221, /* GL_NOR */ - 526, /* GL_EQUIV */ - 798, /* GL_INVERT */ - 1290, /* GL_OR_REVERSE */ - 348, /* GL_COPY_INVERTED */ - 1289, /* GL_OR_INVERTED */ - 1210, /* GL_NAND */ - 1744, /* GL_SET */ - 523, /* GL_EMISSION */ - 1754, /* GL_SHININESS */ + 1225, /* GL_NOOP */ + 2300, /* GL_XOR */ + 1292, /* GL_OR */ + 1226, /* GL_NOR */ + 529, /* GL_EQUIV */ + 802, /* GL_INVERT */ + 1295, /* GL_OR_REVERSE */ + 351, /* GL_COPY_INVERTED */ + 1294, /* GL_OR_INVERTED */ + 1215, /* GL_NAND */ + 1751, /* GL_SET */ + 526, /* GL_EMISSION */ + 1761, /* GL_SHININESS */ 57, /* GL_AMBIENT_AND_DIFFUSE */ - 229, /* GL_COLOR_INDEXES */ - 1159, /* GL_MODELVIEW */ - 1478, /* GL_PROJECTION */ - 1885, /* GL_TEXTURE */ - 185, /* GL_COLOR */ - 395, /* GL_DEPTH */ - 1816, /* GL_STENCIL */ - 228, /* GL_COLOR_INDEX */ - 1837, /* GL_STENCIL_INDEX */ - 411, /* GL_DEPTH_COMPONENT */ - 1543, /* GL_RED */ - 692, /* GL_GREEN */ + 232, /* GL_COLOR_INDEXES */ + 1164, /* GL_MODELVIEW */ + 1483, /* GL_PROJECTION */ + 1892, /* GL_TEXTURE */ + 188, /* GL_COLOR */ + 398, /* GL_DEPTH */ + 1823, /* GL_STENCIL */ + 231, /* GL_COLOR_INDEX */ + 1844, /* GL_STENCIL_INDEX */ + 414, /* GL_DEPTH_COMPONENT */ + 1548, /* GL_RED */ + 696, /* GL_GREEN */ 110, /* GL_BLUE */ 32, /* GL_ALPHA */ - 1599, /* GL_RGB */ - 1639, /* GL_RGBA */ - 856, /* GL_LUMINANCE */ - 883, /* GL_LUMINANCE_ALPHA */ + 1604, /* GL_RGB */ + 1644, /* GL_RGBA */ + 860, /* GL_LUMINANCE */ + 887, /* GL_LUMINANCE_ALPHA */ 86, /* GL_BITMAP */ - 1342, /* GL_POINT */ - 820, /* GL_LINE */ - 541, /* GL_FILL */ - 1557, /* GL_RENDER */ - 537, /* GL_FEEDBACK */ - 1736, /* GL_SELECT */ - 547, /* GL_FLAT */ - 1765, /* GL_SMOOTH */ - 799, /* GL_KEEP */ - 1590, /* GL_REPLACE */ - 727, /* GL_INCR */ - 391, /* GL_DECR */ - 2210, /* GL_VENDOR */ - 1587, /* GL_RENDERER */ - 2211, /* GL_VERSION */ - 530, /* GL_EXTENSIONS */ - 1686, /* GL_S */ - 1876, /* GL_T */ - 1526, /* GL_R */ - 1505, /* GL_Q */ - 1196, /* GL_MODULATE */ - 390, /* GL_DECAL */ - 2042, /* GL_TEXTURE_ENV_MODE */ - 2041, /* GL_TEXTURE_ENV_COLOR */ - 2040, /* GL_TEXTURE_ENV */ - 531, /* GL_EYE_LINEAR */ - 1248, /* GL_OBJECT_LINEAR */ - 1791, /* GL_SPHERE_MAP */ - 2045, /* GL_TEXTURE_GEN_MODE */ - 1250, /* GL_OBJECT_PLANE */ - 532, /* GL_EYE_PLANE */ - 1211, /* GL_NEAREST */ - 821, /* GL_LINEAR */ - 1215, /* GL_NEAREST_MIPMAP_NEAREST */ - 826, /* GL_LINEAR_MIPMAP_NEAREST */ - 1214, /* GL_NEAREST_MIPMAP_LINEAR */ - 825, /* GL_LINEAR_MIPMAP_LINEAR */ - 2068, /* GL_TEXTURE_MAG_FILTER */ - 2077, /* GL_TEXTURE_MIN_FILTER */ - 2098, /* GL_TEXTURE_WRAP_S */ - 2099, /* GL_TEXTURE_WRAP_T */ + 1347, /* GL_POINT */ + 824, /* GL_LINE */ + 544, /* GL_FILL */ + 1562, /* GL_RENDER */ + 540, /* GL_FEEDBACK */ + 1743, /* GL_SELECT */ + 551, /* GL_FLAT */ + 1772, /* GL_SMOOTH */ + 803, /* GL_KEEP */ + 1595, /* GL_REPLACE */ + 731, /* GL_INCR */ + 394, /* GL_DECR */ + 2221, /* GL_VENDOR */ + 1592, /* GL_RENDERER */ + 2222, /* GL_VERSION */ + 533, /* GL_EXTENSIONS */ + 1692, /* GL_S */ + 1883, /* GL_T */ + 1531, /* GL_R */ + 1510, /* GL_Q */ + 1201, /* GL_MODULATE */ + 393, /* GL_DECAL */ + 2053, /* GL_TEXTURE_ENV_MODE */ + 2052, /* GL_TEXTURE_ENV_COLOR */ + 2051, /* GL_TEXTURE_ENV */ + 534, /* GL_EYE_LINEAR */ + 1253, /* GL_OBJECT_LINEAR */ + 1798, /* GL_SPHERE_MAP */ + 2056, /* GL_TEXTURE_GEN_MODE */ + 1255, /* GL_OBJECT_PLANE */ + 535, /* GL_EYE_PLANE */ + 1216, /* GL_NEAREST */ + 825, /* GL_LINEAR */ + 1220, /* GL_NEAREST_MIPMAP_NEAREST */ + 830, /* GL_LINEAR_MIPMAP_NEAREST */ + 1219, /* GL_NEAREST_MIPMAP_LINEAR */ + 829, /* GL_LINEAR_MIPMAP_LINEAR */ + 2079, /* GL_TEXTURE_MAG_FILTER */ + 2088, /* GL_TEXTURE_MIN_FILTER */ + 2109, /* GL_TEXTURE_WRAP_S */ + 2110, /* GL_TEXTURE_WRAP_T */ 155, /* GL_CLAMP */ - 1589, /* GL_REPEAT */ - 1386, /* GL_POLYGON_OFFSET_UNITS */ - 1385, /* GL_POLYGON_OFFSET_POINT */ - 1384, /* GL_POLYGON_OFFSET_LINE */ - 1529, /* GL_R3_G3_B2 */ - 2207, /* GL_V2F */ - 2208, /* GL_V3F */ + 1594, /* GL_REPEAT */ + 1391, /* GL_POLYGON_OFFSET_UNITS */ + 1390, /* GL_POLYGON_OFFSET_POINT */ + 1389, /* GL_POLYGON_OFFSET_LINE */ + 1534, /* GL_R3_G3_B2 */ + 2218, /* GL_V2F */ + 2219, /* GL_V3F */ 152, /* GL_C4UB_V2F */ 153, /* GL_C4UB_V3F */ 150, /* GL_C3F_V3F */ - 1208, /* GL_N3F_V3F */ + 1213, /* GL_N3F_V3F */ 151, /* GL_C4F_N3F_V3F */ - 1881, /* GL_T2F_V3F */ - 1883, /* GL_T4F_V4F */ - 1879, /* GL_T2F_C4UB_V3F */ - 1877, /* GL_T2F_C3F_V3F */ - 1880, /* GL_T2F_N3F_V3F */ - 1878, /* GL_T2F_C4F_N3F_V3F */ - 1882, /* GL_T4F_C4F_N3F_V4F */ - 169, /* GL_CLIP_DISTANCE0 */ - 170, /* GL_CLIP_DISTANCE1 */ - 171, /* GL_CLIP_DISTANCE2 */ - 172, /* GL_CLIP_DISTANCE3 */ - 173, /* GL_CLIP_DISTANCE4 */ - 174, /* GL_CLIP_DISTANCE5 */ - 175, /* GL_CLIP_DISTANCE6 */ - 176, /* GL_CLIP_DISTANCE7 */ - 805, /* GL_LIGHT0 */ - 806, /* GL_LIGHT1 */ - 807, /* GL_LIGHT2 */ - 808, /* GL_LIGHT3 */ - 809, /* GL_LIGHT4 */ - 810, /* GL_LIGHT5 */ - 811, /* GL_LIGHT6 */ - 812, /* GL_LIGHT7 */ - 702, /* GL_HINT_BIT */ - 319, /* GL_CONSTANT_COLOR */ - 1261, /* GL_ONE_MINUS_CONSTANT_COLOR */ - 314, /* GL_CONSTANT_ALPHA */ - 1259, /* GL_ONE_MINUS_CONSTANT_ALPHA */ + 1888, /* GL_T2F_V3F */ + 1890, /* GL_T4F_V4F */ + 1886, /* GL_T2F_C4UB_V3F */ + 1884, /* GL_T2F_C3F_V3F */ + 1887, /* GL_T2F_N3F_V3F */ + 1885, /* GL_T2F_C4F_N3F_V3F */ + 1889, /* GL_T4F_C4F_N3F_V4F */ + 172, /* GL_CLIP_DISTANCE0 */ + 173, /* GL_CLIP_DISTANCE1 */ + 174, /* GL_CLIP_DISTANCE2 */ + 175, /* GL_CLIP_DISTANCE3 */ + 176, /* GL_CLIP_DISTANCE4 */ + 177, /* GL_CLIP_DISTANCE5 */ + 178, /* GL_CLIP_DISTANCE6 */ + 179, /* GL_CLIP_DISTANCE7 */ + 809, /* GL_LIGHT0 */ + 810, /* GL_LIGHT1 */ + 811, /* GL_LIGHT2 */ + 812, /* GL_LIGHT3 */ + 813, /* GL_LIGHT4 */ + 814, /* GL_LIGHT5 */ + 815, /* GL_LIGHT6 */ + 816, /* GL_LIGHT7 */ + 706, /* GL_HINT_BIT */ + 322, /* GL_CONSTANT_COLOR */ + 1266, /* GL_ONE_MINUS_CONSTANT_COLOR */ + 317, /* GL_CONSTANT_ALPHA */ + 1264, /* GL_ONE_MINUS_CONSTANT_ALPHA */ 89, /* GL_BLEND_COLOR */ - 669, /* GL_FUNC_ADD */ - 1140, /* GL_MIN */ - 1009, /* GL_MAX */ + 673, /* GL_FUNC_ADD */ + 1145, /* GL_MIN */ + 1013, /* GL_MAX */ 96, /* GL_BLEND_EQUATION */ - 675, /* GL_FUNC_SUBTRACT */ - 672, /* GL_FUNC_REVERSE_SUBTRACT */ - 327, /* GL_CONVOLUTION_1D */ - 328, /* GL_CONVOLUTION_2D */ - 1739, /* GL_SEPARABLE_2D */ - 331, /* GL_CONVOLUTION_BORDER_MODE */ - 335, /* GL_CONVOLUTION_FILTER_SCALE */ - 333, /* GL_CONVOLUTION_FILTER_BIAS */ - 1544, /* GL_REDUCE */ - 337, /* GL_CONVOLUTION_FORMAT */ - 341, /* GL_CONVOLUTION_WIDTH */ - 339, /* GL_CONVOLUTION_HEIGHT */ - 1028, /* GL_MAX_CONVOLUTION_WIDTH */ - 1026, /* GL_MAX_CONVOLUTION_HEIGHT */ - 1425, /* GL_POST_CONVOLUTION_RED_SCALE */ - 1421, /* GL_POST_CONVOLUTION_GREEN_SCALE */ - 1416, /* GL_POST_CONVOLUTION_BLUE_SCALE */ - 1412, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ - 1423, /* GL_POST_CONVOLUTION_RED_BIAS */ - 1419, /* GL_POST_CONVOLUTION_GREEN_BIAS */ - 1414, /* GL_POST_CONVOLUTION_BLUE_BIAS */ - 1410, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ - 703, /* GL_HISTOGRAM */ - 1485, /* GL_PROXY_HISTOGRAM */ - 719, /* GL_HISTOGRAM_WIDTH */ - 709, /* GL_HISTOGRAM_FORMAT */ - 715, /* GL_HISTOGRAM_RED_SIZE */ - 711, /* GL_HISTOGRAM_GREEN_SIZE */ - 706, /* GL_HISTOGRAM_BLUE_SIZE */ - 704, /* GL_HISTOGRAM_ALPHA_SIZE */ - 713, /* GL_HISTOGRAM_LUMINANCE_SIZE */ - 717, /* GL_HISTOGRAM_SINK */ - 1141, /* GL_MINMAX */ - 1143, /* GL_MINMAX_FORMAT */ - 1145, /* GL_MINMAX_SINK */ - 1884, /* GL_TABLE_TOO_LARGE_EXT */ - 2156, /* GL_UNSIGNED_BYTE_3_3_2 */ - 2196, /* GL_UNSIGNED_SHORT_4_4_4_4 */ - 2199, /* GL_UNSIGNED_SHORT_5_5_5_1 */ - 2168, /* GL_UNSIGNED_INT_8_8_8_8 */ - 2159, /* GL_UNSIGNED_INT_10_10_10_2 */ - 1383, /* GL_POLYGON_OFFSET_FILL */ - 1382, /* GL_POLYGON_OFFSET_FACTOR */ - 1381, /* GL_POLYGON_OFFSET_BIAS */ - 1593, /* GL_RESCALE_NORMAL */ + 679, /* GL_FUNC_SUBTRACT */ + 676, /* GL_FUNC_REVERSE_SUBTRACT */ + 330, /* GL_CONVOLUTION_1D */ + 331, /* GL_CONVOLUTION_2D */ + 1746, /* GL_SEPARABLE_2D */ + 334, /* GL_CONVOLUTION_BORDER_MODE */ + 338, /* GL_CONVOLUTION_FILTER_SCALE */ + 336, /* GL_CONVOLUTION_FILTER_BIAS */ + 1549, /* GL_REDUCE */ + 340, /* GL_CONVOLUTION_FORMAT */ + 344, /* GL_CONVOLUTION_WIDTH */ + 342, /* GL_CONVOLUTION_HEIGHT */ + 1032, /* GL_MAX_CONVOLUTION_WIDTH */ + 1030, /* GL_MAX_CONVOLUTION_HEIGHT */ + 1430, /* GL_POST_CONVOLUTION_RED_SCALE */ + 1426, /* GL_POST_CONVOLUTION_GREEN_SCALE */ + 1421, /* GL_POST_CONVOLUTION_BLUE_SCALE */ + 1417, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ + 1428, /* GL_POST_CONVOLUTION_RED_BIAS */ + 1424, /* GL_POST_CONVOLUTION_GREEN_BIAS */ + 1419, /* GL_POST_CONVOLUTION_BLUE_BIAS */ + 1415, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ + 707, /* GL_HISTOGRAM */ + 1490, /* GL_PROXY_HISTOGRAM */ + 723, /* GL_HISTOGRAM_WIDTH */ + 713, /* GL_HISTOGRAM_FORMAT */ + 719, /* GL_HISTOGRAM_RED_SIZE */ + 715, /* GL_HISTOGRAM_GREEN_SIZE */ + 710, /* GL_HISTOGRAM_BLUE_SIZE */ + 708, /* GL_HISTOGRAM_ALPHA_SIZE */ + 717, /* GL_HISTOGRAM_LUMINANCE_SIZE */ + 721, /* GL_HISTOGRAM_SINK */ + 1146, /* GL_MINMAX */ + 1148, /* GL_MINMAX_FORMAT */ + 1150, /* GL_MINMAX_SINK */ + 1891, /* GL_TABLE_TOO_LARGE_EXT */ + 2167, /* GL_UNSIGNED_BYTE_3_3_2 */ + 2207, /* GL_UNSIGNED_SHORT_4_4_4_4 */ + 2210, /* GL_UNSIGNED_SHORT_5_5_5_1 */ + 2179, /* GL_UNSIGNED_INT_8_8_8_8 */ + 2170, /* GL_UNSIGNED_INT_10_10_10_2 */ + 1388, /* GL_POLYGON_OFFSET_FILL */ + 1387, /* GL_POLYGON_OFFSET_FACTOR */ + 1386, /* GL_POLYGON_OFFSET_BIAS */ + 1598, /* GL_RESCALE_NORMAL */ 41, /* GL_ALPHA4 */ 43, /* GL_ALPHA8 */ 33, /* GL_ALPHA12 */ 35, /* GL_ALPHA16 */ - 871, /* GL_LUMINANCE4 */ - 877, /* GL_LUMINANCE8 */ - 857, /* GL_LUMINANCE12 */ - 863, /* GL_LUMINANCE16 */ - 872, /* GL_LUMINANCE4_ALPHA4 */ - 875, /* GL_LUMINANCE6_ALPHA2 */ - 880, /* GL_LUMINANCE8_ALPHA8 */ - 860, /* GL_LUMINANCE12_ALPHA4 */ - 858, /* GL_LUMINANCE12_ALPHA12 */ - 866, /* GL_LUMINANCE16_ALPHA16 */ - 746, /* GL_INTENSITY */ - 755, /* GL_INTENSITY4 */ - 757, /* GL_INTENSITY8 */ - 747, /* GL_INTENSITY12 */ - 749, /* GL_INTENSITY16 */ - 1614, /* GL_RGB2_EXT */ - 1620, /* GL_RGB4 */ - 1623, /* GL_RGB5 */ - 1630, /* GL_RGB8 */ - 1600, /* GL_RGB10 */ - 1604, /* GL_RGB12 */ - 1606, /* GL_RGB16 */ - 1650, /* GL_RGBA2 */ - 1657, /* GL_RGBA4 */ - 1626, /* GL_RGB5_A1 */ - 1662, /* GL_RGBA8 */ - 1601, /* GL_RGB10_A2 */ - 1640, /* GL_RGBA12 */ - 1642, /* GL_RGBA16 */ - 2085, /* GL_TEXTURE_RED_SIZE */ - 2053, /* GL_TEXTURE_GREEN_SIZE */ - 1977, /* GL_TEXTURE_BLUE_SIZE */ - 1958, /* GL_TEXTURE_ALPHA_SIZE */ - 2066, /* GL_TEXTURE_LUMINANCE_SIZE */ - 2057, /* GL_TEXTURE_INTENSITY_SIZE */ - 1591, /* GL_REPLACE_EXT */ - 1489, /* GL_PROXY_TEXTURE_1D */ - 1493, /* GL_PROXY_TEXTURE_2D */ - 2093, /* GL_TEXTURE_TOO_LARGE_EXT */ - 2079, /* GL_TEXTURE_PRIORITY */ - 2087, /* GL_TEXTURE_RESIDENT */ - 1961, /* GL_TEXTURE_BINDING_1D */ - 1964, /* GL_TEXTURE_BINDING_2D */ - 1967, /* GL_TEXTURE_BINDING_3D */ - 1297, /* GL_PACK_SKIP_IMAGES */ - 1293, /* GL_PACK_IMAGE_HEIGHT */ - 2149, /* GL_UNPACK_SKIP_IMAGES */ - 2146, /* GL_UNPACK_IMAGE_HEIGHT */ - 1956, /* GL_TEXTURE_3D */ - 1497, /* GL_PROXY_TEXTURE_3D */ - 2037, /* GL_TEXTURE_DEPTH */ - 2096, /* GL_TEXTURE_WRAP_R */ - 1010, /* GL_MAX_3D_TEXTURE_SIZE */ - 2212, /* GL_VERTEX_ARRAY */ - 1223, /* GL_NORMAL_ARRAY */ - 186, /* GL_COLOR_ARRAY */ - 731, /* GL_INDEX_ARRAY */ - 2007, /* GL_TEXTURE_COORD_ARRAY */ - 515, /* GL_EDGE_FLAG_ARRAY */ - 2218, /* GL_VERTEX_ARRAY_SIZE */ - 2220, /* GL_VERTEX_ARRAY_TYPE */ - 2219, /* GL_VERTEX_ARRAY_STRIDE */ - 1228, /* GL_NORMAL_ARRAY_TYPE */ - 1227, /* GL_NORMAL_ARRAY_STRIDE */ - 190, /* GL_COLOR_ARRAY_SIZE */ - 192, /* GL_COLOR_ARRAY_TYPE */ - 191, /* GL_COLOR_ARRAY_STRIDE */ - 736, /* GL_INDEX_ARRAY_TYPE */ - 735, /* GL_INDEX_ARRAY_STRIDE */ - 2011, /* GL_TEXTURE_COORD_ARRAY_SIZE */ - 2013, /* GL_TEXTURE_COORD_ARRAY_TYPE */ - 2012, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ - 519, /* GL_EDGE_FLAG_ARRAY_STRIDE */ - 2217, /* GL_VERTEX_ARRAY_POINTER */ - 1226, /* GL_NORMAL_ARRAY_POINTER */ - 189, /* GL_COLOR_ARRAY_POINTER */ - 734, /* GL_INDEX_ARRAY_POINTER */ - 2010, /* GL_TEXTURE_COORD_ARRAY_POINTER */ - 518, /* GL_EDGE_FLAG_ARRAY_POINTER */ - 1201, /* GL_MULTISAMPLE */ - 1713, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ - 1715, /* GL_SAMPLE_ALPHA_TO_ONE */ - 1720, /* GL_SAMPLE_COVERAGE */ - 1717, /* GL_SAMPLE_BUFFERS */ - 1708, /* GL_SAMPLES */ - 1724, /* GL_SAMPLE_COVERAGE_VALUE */ - 1722, /* GL_SAMPLE_COVERAGE_INVERT */ - 234, /* GL_COLOR_MATRIX */ - 236, /* GL_COLOR_MATRIX_STACK_DEPTH */ - 1022, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ - 1408, /* GL_POST_COLOR_MATRIX_RED_SCALE */ - 1404, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ - 1399, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ - 1395, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ - 1406, /* GL_POST_COLOR_MATRIX_RED_BIAS */ - 1402, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ - 1397, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ - 1393, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ - 1990, /* GL_TEXTURE_COLOR_TABLE_SGI */ - 1498, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ - 1992, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ + 875, /* GL_LUMINANCE4 */ + 881, /* GL_LUMINANCE8 */ + 861, /* GL_LUMINANCE12 */ + 867, /* GL_LUMINANCE16 */ + 876, /* GL_LUMINANCE4_ALPHA4 */ + 879, /* GL_LUMINANCE6_ALPHA2 */ + 884, /* GL_LUMINANCE8_ALPHA8 */ + 864, /* GL_LUMINANCE12_ALPHA4 */ + 862, /* GL_LUMINANCE12_ALPHA12 */ + 870, /* GL_LUMINANCE16_ALPHA16 */ + 750, /* GL_INTENSITY */ + 759, /* GL_INTENSITY4 */ + 761, /* GL_INTENSITY8 */ + 751, /* GL_INTENSITY12 */ + 753, /* GL_INTENSITY16 */ + 1619, /* GL_RGB2_EXT */ + 1625, /* GL_RGB4 */ + 1628, /* GL_RGB5 */ + 1635, /* GL_RGB8 */ + 1605, /* GL_RGB10 */ + 1609, /* GL_RGB12 */ + 1611, /* GL_RGB16 */ + 1655, /* GL_RGBA2 */ + 1662, /* GL_RGBA4 */ + 1631, /* GL_RGB5_A1 */ + 1667, /* GL_RGBA8 */ + 1606, /* GL_RGB10_A2 */ + 1645, /* GL_RGBA12 */ + 1647, /* GL_RGBA16 */ + 2096, /* GL_TEXTURE_RED_SIZE */ + 2064, /* GL_TEXTURE_GREEN_SIZE */ + 1985, /* GL_TEXTURE_BLUE_SIZE */ + 1965, /* GL_TEXTURE_ALPHA_SIZE */ + 2077, /* GL_TEXTURE_LUMINANCE_SIZE */ + 2068, /* GL_TEXTURE_INTENSITY_SIZE */ + 1596, /* GL_REPLACE_EXT */ + 1494, /* GL_PROXY_TEXTURE_1D */ + 1498, /* GL_PROXY_TEXTURE_2D */ + 2104, /* GL_TEXTURE_TOO_LARGE_EXT */ + 2090, /* GL_TEXTURE_PRIORITY */ + 2098, /* GL_TEXTURE_RESIDENT */ + 1968, /* GL_TEXTURE_BINDING_1D */ + 1971, /* GL_TEXTURE_BINDING_2D */ + 1974, /* GL_TEXTURE_BINDING_3D */ + 1302, /* GL_PACK_SKIP_IMAGES */ + 1298, /* GL_PACK_IMAGE_HEIGHT */ + 2160, /* GL_UNPACK_SKIP_IMAGES */ + 2157, /* GL_UNPACK_IMAGE_HEIGHT */ + 1963, /* GL_TEXTURE_3D */ + 1502, /* GL_PROXY_TEXTURE_3D */ + 2048, /* GL_TEXTURE_DEPTH */ + 2107, /* GL_TEXTURE_WRAP_R */ + 1014, /* GL_MAX_3D_TEXTURE_SIZE */ + 2223, /* GL_VERTEX_ARRAY */ + 1228, /* GL_NORMAL_ARRAY */ + 189, /* GL_COLOR_ARRAY */ + 735, /* GL_INDEX_ARRAY */ + 2018, /* GL_TEXTURE_COORD_ARRAY */ + 518, /* GL_EDGE_FLAG_ARRAY */ + 2229, /* GL_VERTEX_ARRAY_SIZE */ + 2231, /* GL_VERTEX_ARRAY_TYPE */ + 2230, /* GL_VERTEX_ARRAY_STRIDE */ + 1233, /* GL_NORMAL_ARRAY_TYPE */ + 1232, /* GL_NORMAL_ARRAY_STRIDE */ + 193, /* GL_COLOR_ARRAY_SIZE */ + 195, /* GL_COLOR_ARRAY_TYPE */ + 194, /* GL_COLOR_ARRAY_STRIDE */ + 740, /* GL_INDEX_ARRAY_TYPE */ + 739, /* GL_INDEX_ARRAY_STRIDE */ + 2022, /* GL_TEXTURE_COORD_ARRAY_SIZE */ + 2024, /* GL_TEXTURE_COORD_ARRAY_TYPE */ + 2023, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ + 522, /* GL_EDGE_FLAG_ARRAY_STRIDE */ + 2228, /* GL_VERTEX_ARRAY_POINTER */ + 1231, /* GL_NORMAL_ARRAY_POINTER */ + 192, /* GL_COLOR_ARRAY_POINTER */ + 738, /* GL_INDEX_ARRAY_POINTER */ + 2021, /* GL_TEXTURE_COORD_ARRAY_POINTER */ + 521, /* GL_EDGE_FLAG_ARRAY_POINTER */ + 1206, /* GL_MULTISAMPLE */ + 1720, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ + 1722, /* GL_SAMPLE_ALPHA_TO_ONE */ + 1727, /* GL_SAMPLE_COVERAGE */ + 1724, /* GL_SAMPLE_BUFFERS */ + 1715, /* GL_SAMPLES */ + 1731, /* GL_SAMPLE_COVERAGE_VALUE */ + 1729, /* GL_SAMPLE_COVERAGE_INVERT */ + 237, /* GL_COLOR_MATRIX */ + 239, /* GL_COLOR_MATRIX_STACK_DEPTH */ + 1026, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ + 1413, /* GL_POST_COLOR_MATRIX_RED_SCALE */ + 1409, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ + 1404, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ + 1400, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ + 1411, /* GL_POST_COLOR_MATRIX_RED_BIAS */ + 1407, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ + 1402, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ + 1398, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ + 2001, /* GL_TEXTURE_COLOR_TABLE_SGI */ + 1503, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ + 2003, /* 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 */ - 240, /* GL_COLOR_TABLE */ - 1418, /* GL_POST_CONVOLUTION_COLOR_TABLE */ - 1401, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ - 1484, /* GL_PROXY_COLOR_TABLE */ - 1488, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ - 1487, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ - 264, /* GL_COLOR_TABLE_SCALE */ - 244, /* GL_COLOR_TABLE_BIAS */ - 249, /* GL_COLOR_TABLE_FORMAT */ - 266, /* GL_COLOR_TABLE_WIDTH */ - 261, /* GL_COLOR_TABLE_RED_SIZE */ - 252, /* GL_COLOR_TABLE_GREEN_SIZE */ - 246, /* GL_COLOR_TABLE_BLUE_SIZE */ - 241, /* GL_COLOR_TABLE_ALPHA_SIZE */ - 258, /* GL_COLOR_TABLE_LUMINANCE_SIZE */ - 255, /* GL_COLOR_TABLE_INTENSITY_SIZE */ + 243, /* GL_COLOR_TABLE */ + 1423, /* GL_POST_CONVOLUTION_COLOR_TABLE */ + 1406, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ + 1489, /* GL_PROXY_COLOR_TABLE */ + 1493, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ + 1492, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ + 267, /* GL_COLOR_TABLE_SCALE */ + 247, /* GL_COLOR_TABLE_BIAS */ + 252, /* GL_COLOR_TABLE_FORMAT */ + 269, /* GL_COLOR_TABLE_WIDTH */ + 264, /* GL_COLOR_TABLE_RED_SIZE */ + 255, /* GL_COLOR_TABLE_GREEN_SIZE */ + 249, /* GL_COLOR_TABLE_BLUE_SIZE */ + 244, /* GL_COLOR_TABLE_ALPHA_SIZE */ + 261, /* GL_COLOR_TABLE_LUMINANCE_SIZE */ + 258, /* GL_COLOR_TABLE_INTENSITY_SIZE */ 79, /* GL_BGR */ 80, /* GL_BGRA */ - 1037, /* GL_MAX_ELEMENTS_VERTICES */ - 1036, /* GL_MAX_ELEMENTS_INDICES */ - 2056, /* GL_TEXTURE_INDEX_SIZE_EXT */ - 183, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */ - 1364, /* GL_POINT_SIZE_MIN */ - 1360, /* GL_POINT_SIZE_MAX */ - 1349, /* GL_POINT_FADE_THRESHOLD_SIZE */ - 1345, /* GL_POINT_DISTANCE_ATTENUATION */ - 157, /* GL_CLAMP_TO_BORDER */ - 160, /* GL_CLAMP_TO_EDGE */ - 2078, /* GL_TEXTURE_MIN_LOD */ - 2076, /* GL_TEXTURE_MAX_LOD */ - 1960, /* GL_TEXTURE_BASE_LEVEL */ - 2075, /* GL_TEXTURE_MAX_LEVEL */ - 722, /* GL_IGNORE_BORDER_HP */ - 318, /* GL_CONSTANT_BORDER_HP */ - 1592, /* GL_REPLICATE_BORDER_HP */ - 329, /* GL_CONVOLUTION_BORDER_COLOR */ - 1256, /* GL_OCCLUSION_TEST_HP */ - 1257, /* GL_OCCLUSION_TEST_RESULT_HP */ - 823, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ - 1984, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ - 1986, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ - 1988, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ - 1989, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - 1987, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ - 1985, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ - 1016, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ - 1017, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - 1428, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ - 1430, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ - 1427, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ - 1429, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ - 2064, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ - 2065, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ - 2063, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ - 678, /* GL_GENERATE_MIPMAP */ - 679, /* GL_GENERATE_MIPMAP_HINT */ - 591, /* GL_FOG_OFFSET_SGIX */ - 592, /* GL_FOG_OFFSET_VALUE_SGIX */ - 1998, /* GL_TEXTURE_COMPARE_SGIX */ - 1997, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ - 2060, /* GL_TEXTURE_LEQUAL_R_SGIX */ - 2052, /* GL_TEXTURE_GEQUAL_R_SGIX */ - 412, /* GL_DEPTH_COMPONENT16 */ - 416, /* GL_DEPTH_COMPONENT24 */ - 420, /* GL_DEPTH_COMPONENT32 */ - 354, /* GL_CULL_VERTEX_EXT */ - 356, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ - 355, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ - 2285, /* GL_WRAP_BORDER_SUN */ - 1991, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ - 816, /* GL_LIGHT_MODEL_COLOR_CONTROL */ - 1758, /* GL_SINGLE_COLOR */ - 1742, /* GL_SEPARATE_SPECULAR_COLOR */ - 1753, /* GL_SHARED_TEXTURE_PALETTE_EXT */ - 603, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ - 604, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ - 615, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ - 606, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ - 602, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ - 601, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ - 605, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ - 616, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ - 633, /* GL_FRAMEBUFFER_DEFAULT */ - 660, /* GL_FRAMEBUFFER_UNDEFINED */ - 428, /* GL_DEPTH_STENCIL_ATTACHMENT */ - 892, /* GL_MAJOR_VERSION */ - 1147, /* GL_MINOR_VERSION */ - 1237, /* GL_NUM_EXTENSIONS */ - 324, /* GL_CONTEXT_FLAGS */ - 730, /* GL_INDEX */ - 406, /* GL_DEPTH_BUFFER */ - 1832, /* GL_STENCIL_BUFFER */ - 295, /* GL_COMPRESSED_RED */ - 296, /* GL_COMPRESSED_RG */ - 2155, /* GL_UNSIGNED_BYTE_2_3_3_REV */ - 2200, /* GL_UNSIGNED_SHORT_5_6_5 */ - 2201, /* GL_UNSIGNED_SHORT_5_6_5_REV */ - 2197, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ - 2194, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ - 2169, /* GL_UNSIGNED_INT_8_8_8_8_REV */ - 2165, /* GL_UNSIGNED_INT_2_10_10_10_REV */ - 2073, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ - 2074, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ - 2072, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ - 1151, /* GL_MIRRORED_REPEAT */ - 1679, /* GL_RGB_S3TC */ - 1622, /* GL_RGB4_S3TC */ - 1675, /* GL_RGBA_S3TC */ - 1661, /* GL_RGBA4_S3TC */ - 1670, /* GL_RGBA_DXT5_S3TC */ - 1658, /* GL_RGBA4_DXT5_S3TC */ - 306, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */ - 301, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */ - 302, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */ - 303, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */ - 1213, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ - 1212, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ - 824, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ - 578, /* GL_FOG_COORDINATE_SOURCE */ - 570, /* GL_FOG_COORD */ - 594, /* GL_FRAGMENT_DEPTH */ - 360, /* GL_CURRENT_FOG_COORD */ - 577, /* GL_FOG_COORDINATE_ARRAY_TYPE */ - 576, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ - 575, /* GL_FOG_COORDINATE_ARRAY_POINTER */ - 572, /* GL_FOG_COORDINATE_ARRAY */ - 238, /* GL_COLOR_SUM */ - 381, /* GL_CURRENT_SECONDARY_COLOR */ - 1733, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ - 1735, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ - 1734, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ - 1732, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ - 1729, /* GL_SECONDARY_COLOR_ARRAY */ - 379, /* GL_CURRENT_RASTER_SECONDARY_COLOR */ + 1041, /* GL_MAX_ELEMENTS_VERTICES */ + 1040, /* GL_MAX_ELEMENTS_INDICES */ + 2067, /* GL_TEXTURE_INDEX_SIZE_EXT */ + 186, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */ + 1369, /* GL_POINT_SIZE_MIN */ + 1365, /* GL_POINT_SIZE_MAX */ + 1354, /* GL_POINT_FADE_THRESHOLD_SIZE */ + 1350, /* GL_POINT_DISTANCE_ATTENUATION */ + 159, /* GL_CLAMP_TO_BORDER */ + 162, /* GL_CLAMP_TO_EDGE */ + 2089, /* GL_TEXTURE_MIN_LOD */ + 2087, /* GL_TEXTURE_MAX_LOD */ + 1967, /* GL_TEXTURE_BASE_LEVEL */ + 2086, /* GL_TEXTURE_MAX_LEVEL */ + 726, /* GL_IGNORE_BORDER_HP */ + 321, /* GL_CONSTANT_BORDER_HP */ + 1597, /* GL_REPLICATE_BORDER_HP */ + 332, /* GL_CONVOLUTION_BORDER_COLOR */ + 1261, /* GL_OCCLUSION_TEST_HP */ + 1262, /* GL_OCCLUSION_TEST_RESULT_HP */ + 827, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ + 1995, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ + 1997, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ + 1999, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ + 2000, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + 1998, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ + 1996, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ + 1020, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ + 1021, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + 1433, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ + 1435, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ + 1432, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ + 1434, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ + 2075, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ + 2076, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ + 2074, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ + 682, /* GL_GENERATE_MIPMAP */ + 683, /* GL_GENERATE_MIPMAP_HINT */ + 595, /* GL_FOG_OFFSET_SGIX */ + 596, /* GL_FOG_OFFSET_VALUE_SGIX */ + 2009, /* GL_TEXTURE_COMPARE_SGIX */ + 2008, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ + 2071, /* GL_TEXTURE_LEQUAL_R_SGIX */ + 2063, /* GL_TEXTURE_GEQUAL_R_SGIX */ + 415, /* GL_DEPTH_COMPONENT16 */ + 419, /* GL_DEPTH_COMPONENT24 */ + 423, /* GL_DEPTH_COMPONENT32 */ + 357, /* GL_CULL_VERTEX_EXT */ + 359, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ + 358, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ + 2296, /* GL_WRAP_BORDER_SUN */ + 2002, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ + 820, /* GL_LIGHT_MODEL_COLOR_CONTROL */ + 1765, /* GL_SINGLE_COLOR */ + 1749, /* GL_SEPARATE_SPECULAR_COLOR */ + 1760, /* GL_SHARED_TEXTURE_PALETTE_EXT */ + 607, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ + 608, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ + 619, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ + 610, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ + 606, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ + 605, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ + 609, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ + 620, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ + 637, /* GL_FRAMEBUFFER_DEFAULT */ + 664, /* GL_FRAMEBUFFER_UNDEFINED */ + 431, /* GL_DEPTH_STENCIL_ATTACHMENT */ + 896, /* GL_MAJOR_VERSION */ + 1152, /* GL_MINOR_VERSION */ + 1242, /* GL_NUM_EXTENSIONS */ + 327, /* GL_CONTEXT_FLAGS */ + 734, /* GL_INDEX */ + 409, /* GL_DEPTH_BUFFER */ + 1839, /* GL_STENCIL_BUFFER */ + 298, /* GL_COMPRESSED_RED */ + 299, /* GL_COMPRESSED_RG */ + 2166, /* GL_UNSIGNED_BYTE_2_3_3_REV */ + 2211, /* GL_UNSIGNED_SHORT_5_6_5 */ + 2212, /* GL_UNSIGNED_SHORT_5_6_5_REV */ + 2208, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ + 2205, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ + 2180, /* GL_UNSIGNED_INT_8_8_8_8_REV */ + 2176, /* GL_UNSIGNED_INT_2_10_10_10_REV */ + 2084, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ + 2085, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ + 2083, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ + 1156, /* GL_MIRRORED_REPEAT */ + 1685, /* GL_RGB_S3TC */ + 1627, /* GL_RGB4_S3TC */ + 1681, /* GL_RGBA_S3TC */ + 1666, /* GL_RGBA4_S3TC */ + 1675, /* GL_RGBA_DXT5_S3TC */ + 1663, /* 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 */ + 1218, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ + 1217, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ + 828, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ + 582, /* GL_FOG_COORDINATE_SOURCE */ + 574, /* GL_FOG_COORD */ + 598, /* GL_FRAGMENT_DEPTH */ + 363, /* GL_CURRENT_FOG_COORD */ + 581, /* GL_FOG_COORDINATE_ARRAY_TYPE */ + 580, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ + 579, /* GL_FOG_COORDINATE_ARRAY_POINTER */ + 576, /* GL_FOG_COORDINATE_ARRAY */ + 241, /* GL_COLOR_SUM */ + 384, /* GL_CURRENT_SECONDARY_COLOR */ + 1740, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ + 1742, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ + 1741, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ + 1739, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ + 1736, /* GL_SECONDARY_COLOR_ARRAY */ + 382, /* GL_CURRENT_RASTER_SECONDARY_COLOR */ 29, /* GL_ALIASED_POINT_SIZE_RANGE */ 28, /* GL_ALIASED_LINE_WIDTH_RANGE */ - 1886, /* GL_TEXTURE0 */ - 1888, /* GL_TEXTURE1 */ - 1910, /* GL_TEXTURE2 */ - 1932, /* GL_TEXTURE3 */ - 1938, /* GL_TEXTURE4 */ - 1940, /* GL_TEXTURE5 */ - 1942, /* GL_TEXTURE6 */ - 1944, /* GL_TEXTURE7 */ - 1946, /* GL_TEXTURE8 */ - 1948, /* GL_TEXTURE9 */ - 1889, /* GL_TEXTURE10 */ - 1891, /* GL_TEXTURE11 */ - 1893, /* GL_TEXTURE12 */ - 1895, /* GL_TEXTURE13 */ - 1897, /* GL_TEXTURE14 */ - 1899, /* GL_TEXTURE15 */ - 1901, /* GL_TEXTURE16 */ - 1903, /* GL_TEXTURE17 */ - 1905, /* GL_TEXTURE18 */ - 1907, /* GL_TEXTURE19 */ - 1911, /* GL_TEXTURE20 */ - 1913, /* GL_TEXTURE21 */ - 1915, /* GL_TEXTURE22 */ - 1917, /* GL_TEXTURE23 */ - 1919, /* GL_TEXTURE24 */ - 1921, /* GL_TEXTURE25 */ - 1923, /* GL_TEXTURE26 */ - 1925, /* GL_TEXTURE27 */ - 1927, /* GL_TEXTURE28 */ - 1929, /* GL_TEXTURE29 */ - 1933, /* GL_TEXTURE30 */ - 1935, /* GL_TEXTURE31 */ + 1893, /* GL_TEXTURE0 */ + 1895, /* GL_TEXTURE1 */ + 1917, /* GL_TEXTURE2 */ + 1939, /* GL_TEXTURE3 */ + 1945, /* GL_TEXTURE4 */ + 1947, /* GL_TEXTURE5 */ + 1949, /* GL_TEXTURE6 */ + 1951, /* GL_TEXTURE7 */ + 1953, /* GL_TEXTURE8 */ + 1955, /* GL_TEXTURE9 */ + 1896, /* GL_TEXTURE10 */ + 1898, /* GL_TEXTURE11 */ + 1900, /* GL_TEXTURE12 */ + 1902, /* GL_TEXTURE13 */ + 1904, /* GL_TEXTURE14 */ + 1906, /* GL_TEXTURE15 */ + 1908, /* GL_TEXTURE16 */ + 1910, /* GL_TEXTURE17 */ + 1912, /* GL_TEXTURE18 */ + 1914, /* GL_TEXTURE19 */ + 1918, /* GL_TEXTURE20 */ + 1920, /* GL_TEXTURE21 */ + 1922, /* GL_TEXTURE22 */ + 1924, /* GL_TEXTURE23 */ + 1926, /* GL_TEXTURE24 */ + 1928, /* GL_TEXTURE25 */ + 1930, /* GL_TEXTURE26 */ + 1932, /* GL_TEXTURE27 */ + 1934, /* GL_TEXTURE28 */ + 1936, /* GL_TEXTURE29 */ + 1940, /* GL_TEXTURE30 */ + 1942, /* GL_TEXTURE31 */ 19, /* GL_ACTIVE_TEXTURE */ - 163, /* GL_CLIENT_ACTIVE_TEXTURE */ - 1112, /* GL_MAX_TEXTURE_UNITS */ - 2128, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ - 2131, /* GL_TRANSPOSE_PROJECTION_MATRIX */ - 2133, /* GL_TRANSPOSE_TEXTURE_MATRIX */ - 2125, /* GL_TRANSPOSE_COLOR_MATRIX */ - 1868, /* GL_SUBTRACT */ - 1094, /* GL_MAX_RENDERBUFFER_SIZE */ - 287, /* GL_COMPRESSED_ALPHA */ - 291, /* GL_COMPRESSED_LUMINANCE */ - 292, /* GL_COMPRESSED_LUMINANCE_ALPHA */ - 289, /* GL_COMPRESSED_INTENSITY */ - 297, /* GL_COMPRESSED_RGB */ - 298, /* GL_COMPRESSED_RGBA */ - 2005, /* GL_TEXTURE_COMPRESSION_HINT */ - 2082, /* GL_TEXTURE_RECTANGLE */ - 1973, /* GL_TEXTURE_BINDING_RECTANGLE */ - 1501, /* GL_PROXY_TEXTURE_RECTANGLE */ - 1091, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */ - 427, /* GL_DEPTH_STENCIL */ - 2161, /* GL_UNSIGNED_INT_24_8 */ - 1107, /* GL_MAX_TEXTURE_LOD_BIAS */ - 2071, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ - 1109, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ - 2043, /* GL_TEXTURE_FILTER_CONTROL */ - 2061, /* GL_TEXTURE_LOD_BIAS */ - 271, /* GL_COMBINE4 */ - 1100, /* GL_MAX_SHININESS_NV */ - 1101, /* GL_MAX_SPOT_EXPONENT_NV */ - 728, /* GL_INCR_WRAP */ - 392, /* GL_DECR_WRAP */ - 1171, /* GL_MODELVIEW1_ARB */ - 1229, /* GL_NORMAL_MAP */ - 1552, /* GL_REFLECTION_MAP */ - 2015, /* GL_TEXTURE_CUBE_MAP */ - 1970, /* GL_TEXTURE_BINDING_CUBE_MAP */ - 2027, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ - 2017, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ - 2030, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ - 2020, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ - 2033, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ - 2023, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ - 1499, /* GL_PROXY_TEXTURE_CUBE_MAP */ - 1030, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ - 1207, /* GL_MULTISAMPLE_FILTER_HINT_NV */ - 1442, /* GL_PRIMITIVE_RESTART_NV */ - 1441, /* GL_PRIMITIVE_RESTART_INDEX_NV */ - 586, /* GL_FOG_DISTANCE_MODE_NV */ - 534, /* GL_EYE_RADIAL_NV */ - 533, /* GL_EYE_PLANE_ABSOLUTE_NV */ - 270, /* GL_COMBINE */ - 277, /* GL_COMBINE_RGB */ - 272, /* GL_COMBINE_ALPHA */ - 1680, /* GL_RGB_SCALE */ + 166, /* GL_CLIENT_ACTIVE_TEXTURE */ + 1117, /* GL_MAX_TEXTURE_UNITS */ + 2139, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ + 2142, /* GL_TRANSPOSE_PROJECTION_MATRIX */ + 2144, /* GL_TRANSPOSE_TEXTURE_MATRIX */ + 2136, /* GL_TRANSPOSE_COLOR_MATRIX */ + 1875, /* GL_SUBTRACT */ + 1098, /* 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 */ + 2016, /* GL_TEXTURE_COMPRESSION_HINT */ + 2093, /* GL_TEXTURE_RECTANGLE */ + 1981, /* GL_TEXTURE_BINDING_RECTANGLE */ + 1506, /* GL_PROXY_TEXTURE_RECTANGLE */ + 1095, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */ + 430, /* GL_DEPTH_STENCIL */ + 2172, /* GL_UNSIGNED_INT_24_8 */ + 1112, /* GL_MAX_TEXTURE_LOD_BIAS */ + 2082, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ + 1114, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ + 2054, /* GL_TEXTURE_FILTER_CONTROL */ + 2072, /* GL_TEXTURE_LOD_BIAS */ + 274, /* GL_COMBINE4 */ + 1104, /* GL_MAX_SHININESS_NV */ + 1105, /* GL_MAX_SPOT_EXPONENT_NV */ + 732, /* GL_INCR_WRAP */ + 395, /* GL_DECR_WRAP */ + 1176, /* GL_MODELVIEW1_ARB */ + 1234, /* GL_NORMAL_MAP */ + 1557, /* GL_REFLECTION_MAP */ + 2026, /* GL_TEXTURE_CUBE_MAP */ + 1978, /* GL_TEXTURE_BINDING_CUBE_MAP */ + 2038, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ + 2028, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ + 2041, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ + 2031, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ + 2044, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ + 2034, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ + 1504, /* GL_PROXY_TEXTURE_CUBE_MAP */ + 1034, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ + 1212, /* GL_MULTISAMPLE_FILTER_HINT_NV */ + 1447, /* GL_PRIMITIVE_RESTART_NV */ + 1446, /* GL_PRIMITIVE_RESTART_INDEX_NV */ + 590, /* GL_FOG_DISTANCE_MODE_NV */ + 537, /* GL_EYE_RADIAL_NV */ + 536, /* GL_EYE_PLANE_ABSOLUTE_NV */ + 273, /* GL_COMBINE */ + 280, /* GL_COMBINE_RGB */ + 275, /* GL_COMBINE_ALPHA */ + 1686, /* GL_RGB_SCALE */ 25, /* GL_ADD_SIGNED */ - 764, /* GL_INTERPOLATE */ - 313, /* GL_CONSTANT */ - 1434, /* GL_PRIMARY_COLOR */ - 1431, /* GL_PREVIOUS */ - 1773, /* GL_SOURCE0_RGB */ - 1779, /* GL_SOURCE1_RGB */ - 1785, /* GL_SOURCE2_RGB */ - 1789, /* GL_SOURCE3_RGB_NV */ - 1770, /* GL_SOURCE0_ALPHA */ - 1776, /* GL_SOURCE1_ALPHA */ - 1782, /* GL_SOURCE2_ALPHA */ - 1788, /* GL_SOURCE3_ALPHA_NV */ - 1270, /* GL_OPERAND0_RGB */ - 1276, /* GL_OPERAND1_RGB */ - 1282, /* GL_OPERAND2_RGB */ - 1286, /* GL_OPERAND3_RGB_NV */ - 1267, /* GL_OPERAND0_ALPHA */ - 1273, /* GL_OPERAND1_ALPHA */ - 1279, /* GL_OPERAND2_ALPHA */ - 1285, /* GL_OPERAND3_ALPHA_NV */ + 768, /* GL_INTERPOLATE */ + 316, /* GL_CONSTANT */ + 1439, /* GL_PRIMARY_COLOR */ + 1436, /* GL_PREVIOUS */ + 1780, /* GL_SOURCE0_RGB */ + 1786, /* GL_SOURCE1_RGB */ + 1792, /* GL_SOURCE2_RGB */ + 1796, /* GL_SOURCE3_RGB_NV */ + 1777, /* GL_SOURCE0_ALPHA */ + 1783, /* GL_SOURCE1_ALPHA */ + 1789, /* GL_SOURCE2_ALPHA */ + 1795, /* GL_SOURCE3_ALPHA_NV */ + 1275, /* GL_OPERAND0_RGB */ + 1281, /* GL_OPERAND1_RGB */ + 1287, /* GL_OPERAND2_RGB */ + 1291, /* GL_OPERAND3_RGB_NV */ + 1272, /* GL_OPERAND0_ALPHA */ + 1278, /* GL_OPERAND1_ALPHA */ + 1284, /* GL_OPERAND2_ALPHA */ + 1290, /* GL_OPERAND3_ALPHA_NV */ 137, /* GL_BUFFER_OBJECT_APPLE */ - 2213, /* GL_VERTEX_ARRAY_BINDING */ - 2080, /* GL_TEXTURE_RANGE_LENGTH_APPLE */ - 2081, /* GL_TEXTURE_RANGE_POINTER_APPLE */ - 2290, /* GL_YCBCR_422_APPLE */ - 2202, /* GL_UNSIGNED_SHORT_8_8_APPLE */ - 2204, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ - 2092, /* GL_TEXTURE_STORAGE_HINT_APPLE */ - 1859, /* GL_STORAGE_PRIVATE_APPLE */ - 1858, /* GL_STORAGE_CACHED_APPLE */ - 1860, /* GL_STORAGE_SHARED_APPLE */ - 1760, /* GL_SLICE_ACCUM_SUN */ - 1510, /* GL_QUAD_MESH_SUN */ - 2139, /* GL_TRIANGLE_MESH_SUN */ - 2255, /* GL_VERTEX_PROGRAM_ARB */ - 2266, /* GL_VERTEX_STATE_PROGRAM_NV */ - 2240, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ - 2248, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ - 2250, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ - 2252, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ - 383, /* GL_CURRENT_VERTEX_ATTRIB */ - 1455, /* GL_PROGRAM_LENGTH_ARB */ - 1471, /* GL_PROGRAM_STRING_ARB */ - 1194, /* GL_MODELVIEW_PROJECTION_NV */ - 721, /* GL_IDENTITY_NV */ - 796, /* GL_INVERSE_NV */ - 2130, /* GL_TRANSPOSE_NV */ - 797, /* GL_INVERSE_TRANSPOSE_NV */ - 1075, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ - 1074, /* GL_MAX_PROGRAM_MATRICES_ARB */ - 956, /* GL_MATRIX0_NV */ - 968, /* GL_MATRIX1_NV */ - 980, /* GL_MATRIX2_NV */ - 984, /* GL_MATRIX3_NV */ - 986, /* GL_MATRIX4_NV */ - 988, /* GL_MATRIX5_NV */ - 990, /* GL_MATRIX6_NV */ - 992, /* GL_MATRIX7_NV */ - 366, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ - 363, /* GL_CURRENT_MATRIX_ARB */ - 1468, /* GL_PROGRAM_POINT_SIZE */ - 2261, /* GL_VERTEX_PROGRAM_TWO_SIDE */ - 1467, /* GL_PROGRAM_PARAMETER_NV */ - 2246, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ - 1473, /* GL_PROGRAM_TARGET_NV */ - 1470, /* GL_PROGRAM_RESIDENT_NV */ - 2102, /* GL_TRACK_MATRIX_NV */ - 2103, /* GL_TRACK_MATRIX_TRANSFORM_NV */ - 2256, /* GL_VERTEX_PROGRAM_BINDING_NV */ - 1449, /* GL_PROGRAM_ERROR_POSITION_ARB */ - 408, /* GL_DEPTH_CLAMP */ - 2221, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ - 2228, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ - 2229, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ - 2230, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ - 2231, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ - 2232, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ - 2233, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ - 2234, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ - 2235, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ - 2236, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ - 2222, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ - 2223, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ - 2224, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ - 2225, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ - 2226, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ - 2227, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ - 904, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ - 911, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ - 912, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ - 913, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ - 914, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ - 915, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ - 916, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ - 917, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ - 918, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ - 919, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ - 905, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ - 906, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ - 907, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ - 908, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ - 909, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ - 910, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ - 931, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ - 938, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ - 939, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ - 940, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ - 941, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ - 942, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ - 943, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ - 1448, /* GL_PROGRAM_BINDING_ARB */ - 945, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ - 946, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ - 932, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ - 933, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ - 934, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ - 935, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ - 936, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ - 937, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ - 2003, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ - 2000, /* GL_TEXTURE_COMPRESSED */ - 1235, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ - 311, /* GL_COMPRESSED_TEXTURE_FORMATS */ - 1134, /* GL_MAX_VERTEX_UNITS_ARB */ + 2224, /* GL_VERTEX_ARRAY_BINDING */ + 2091, /* GL_TEXTURE_RANGE_LENGTH_APPLE */ + 2092, /* GL_TEXTURE_RANGE_POINTER_APPLE */ + 2301, /* GL_YCBCR_422_APPLE */ + 2213, /* GL_UNSIGNED_SHORT_8_8_APPLE */ + 2215, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ + 2103, /* GL_TEXTURE_STORAGE_HINT_APPLE */ + 1866, /* GL_STORAGE_PRIVATE_APPLE */ + 1865, /* GL_STORAGE_CACHED_APPLE */ + 1867, /* GL_STORAGE_SHARED_APPLE */ + 1767, /* GL_SLICE_ACCUM_SUN */ + 1515, /* GL_QUAD_MESH_SUN */ + 2150, /* GL_TRIANGLE_MESH_SUN */ + 2266, /* GL_VERTEX_PROGRAM_ARB */ + 2277, /* GL_VERTEX_STATE_PROGRAM_NV */ + 2251, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ + 2259, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ + 2261, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ + 2263, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ + 386, /* GL_CURRENT_VERTEX_ATTRIB */ + 1460, /* GL_PROGRAM_LENGTH_ARB */ + 1476, /* GL_PROGRAM_STRING_ARB */ + 1199, /* GL_MODELVIEW_PROJECTION_NV */ + 725, /* GL_IDENTITY_NV */ + 800, /* GL_INVERSE_NV */ + 2141, /* GL_TRANSPOSE_NV */ + 801, /* GL_INVERSE_TRANSPOSE_NV */ + 1079, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ + 1078, /* GL_MAX_PROGRAM_MATRICES_ARB */ + 960, /* GL_MATRIX0_NV */ + 972, /* GL_MATRIX1_NV */ + 984, /* GL_MATRIX2_NV */ + 988, /* GL_MATRIX3_NV */ + 990, /* GL_MATRIX4_NV */ + 992, /* GL_MATRIX5_NV */ + 994, /* GL_MATRIX6_NV */ + 996, /* GL_MATRIX7_NV */ + 369, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ + 366, /* GL_CURRENT_MATRIX_ARB */ + 1473, /* GL_PROGRAM_POINT_SIZE */ + 2272, /* GL_VERTEX_PROGRAM_TWO_SIDE */ + 1472, /* GL_PROGRAM_PARAMETER_NV */ + 2257, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ + 1478, /* GL_PROGRAM_TARGET_NV */ + 1475, /* GL_PROGRAM_RESIDENT_NV */ + 2113, /* GL_TRACK_MATRIX_NV */ + 2114, /* GL_TRACK_MATRIX_TRANSFORM_NV */ + 2267, /* GL_VERTEX_PROGRAM_BINDING_NV */ + 1454, /* GL_PROGRAM_ERROR_POSITION_ARB */ + 411, /* GL_DEPTH_CLAMP */ + 2232, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ + 2239, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ + 2240, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ + 2241, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ + 2242, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ + 2243, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ + 2244, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ + 2245, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ + 2246, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ + 2247, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ + 2233, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ + 2234, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ + 2235, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ + 2236, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ + 2237, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ + 2238, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ + 908, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ + 915, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ + 916, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ + 917, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ + 918, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ + 919, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ + 920, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ + 921, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ + 922, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ + 923, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ + 909, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ + 910, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ + 911, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ + 912, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ + 913, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ + 914, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ + 935, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ + 942, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ + 943, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ + 944, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ + 945, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ + 946, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ + 947, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ + 1453, /* GL_PROGRAM_BINDING_ARB */ + 949, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ + 950, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ + 936, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ + 937, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ + 938, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ + 939, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ + 940, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ + 941, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ + 2014, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ + 2011, /* GL_TEXTURE_COMPRESSED */ + 1240, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ + 314, /* GL_COMPRESSED_TEXTURE_FORMATS */ + 1139, /* GL_MAX_VERTEX_UNITS_ARB */ 23, /* GL_ACTIVE_VERTEX_UNITS_ARB */ - 2284, /* GL_WEIGHT_SUM_UNITY_ARB */ - 2254, /* GL_VERTEX_BLEND_ARB */ - 385, /* GL_CURRENT_WEIGHT_ARB */ - 2282, /* GL_WEIGHT_ARRAY_TYPE_ARB */ - 2280, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ - 2278, /* GL_WEIGHT_ARRAY_SIZE_ARB */ - 2276, /* GL_WEIGHT_ARRAY_POINTER_ARB */ - 2271, /* GL_WEIGHT_ARRAY_ARB */ - 442, /* GL_DOT3_RGB */ - 443, /* GL_DOT3_RGBA */ - 305, /* GL_COMPRESSED_RGB_FXT1_3DFX */ - 300, /* GL_COMPRESSED_RGBA_FXT1_3DFX */ - 1202, /* GL_MULTISAMPLE_3DFX */ - 1718, /* GL_SAMPLE_BUFFERS_3DFX */ - 1709, /* GL_SAMPLES_3DFX */ - 1182, /* GL_MODELVIEW2_ARB */ - 1185, /* GL_MODELVIEW3_ARB */ - 1186, /* GL_MODELVIEW4_ARB */ - 1187, /* GL_MODELVIEW5_ARB */ - 1188, /* GL_MODELVIEW6_ARB */ - 1189, /* GL_MODELVIEW7_ARB */ - 1190, /* GL_MODELVIEW8_ARB */ - 1191, /* GL_MODELVIEW9_ARB */ - 1161, /* GL_MODELVIEW10_ARB */ - 1162, /* GL_MODELVIEW11_ARB */ - 1163, /* GL_MODELVIEW12_ARB */ - 1164, /* GL_MODELVIEW13_ARB */ - 1165, /* GL_MODELVIEW14_ARB */ - 1166, /* GL_MODELVIEW15_ARB */ - 1167, /* GL_MODELVIEW16_ARB */ - 1168, /* GL_MODELVIEW17_ARB */ - 1169, /* GL_MODELVIEW18_ARB */ - 1170, /* GL_MODELVIEW19_ARB */ - 1172, /* GL_MODELVIEW20_ARB */ - 1173, /* GL_MODELVIEW21_ARB */ - 1174, /* GL_MODELVIEW22_ARB */ - 1175, /* GL_MODELVIEW23_ARB */ - 1176, /* GL_MODELVIEW24_ARB */ - 1177, /* GL_MODELVIEW25_ARB */ - 1178, /* GL_MODELVIEW26_ARB */ - 1179, /* GL_MODELVIEW27_ARB */ - 1180, /* GL_MODELVIEW28_ARB */ - 1181, /* GL_MODELVIEW29_ARB */ - 1183, /* GL_MODELVIEW30_ARB */ - 1184, /* GL_MODELVIEW31_ARB */ - 447, /* GL_DOT3_RGB_EXT */ - 445, /* GL_DOT3_RGBA_EXT */ - 1155, /* GL_MIRROR_CLAMP_EXT */ - 1158, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ - 1197, /* GL_MODULATE_ADD_ATI */ - 1198, /* GL_MODULATE_SIGNED_ADD_ATI */ - 1199, /* GL_MODULATE_SUBTRACT_ATI */ - 2291, /* GL_YCBCR_MESA */ - 1294, /* GL_PACK_INVERT_MESA */ - 388, /* GL_DEBUG_OBJECT_MESA */ - 389, /* GL_DEBUG_PRINT_MESA */ - 387, /* GL_DEBUG_ASSERT_MESA */ + 2295, /* GL_WEIGHT_SUM_UNITY_ARB */ + 2265, /* GL_VERTEX_BLEND_ARB */ + 388, /* GL_CURRENT_WEIGHT_ARB */ + 2293, /* GL_WEIGHT_ARRAY_TYPE_ARB */ + 2291, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ + 2289, /* GL_WEIGHT_ARRAY_SIZE_ARB */ + 2287, /* GL_WEIGHT_ARRAY_POINTER_ARB */ + 2282, /* GL_WEIGHT_ARRAY_ARB */ + 445, /* GL_DOT3_RGB */ + 446, /* GL_DOT3_RGBA */ + 308, /* GL_COMPRESSED_RGB_FXT1_3DFX */ + 303, /* GL_COMPRESSED_RGBA_FXT1_3DFX */ + 1207, /* GL_MULTISAMPLE_3DFX */ + 1725, /* GL_SAMPLE_BUFFERS_3DFX */ + 1716, /* GL_SAMPLES_3DFX */ + 1187, /* GL_MODELVIEW2_ARB */ + 1190, /* GL_MODELVIEW3_ARB */ + 1191, /* GL_MODELVIEW4_ARB */ + 1192, /* GL_MODELVIEW5_ARB */ + 1193, /* GL_MODELVIEW6_ARB */ + 1194, /* GL_MODELVIEW7_ARB */ + 1195, /* GL_MODELVIEW8_ARB */ + 1196, /* GL_MODELVIEW9_ARB */ + 1166, /* GL_MODELVIEW10_ARB */ + 1167, /* GL_MODELVIEW11_ARB */ + 1168, /* GL_MODELVIEW12_ARB */ + 1169, /* GL_MODELVIEW13_ARB */ + 1170, /* GL_MODELVIEW14_ARB */ + 1171, /* GL_MODELVIEW15_ARB */ + 1172, /* GL_MODELVIEW16_ARB */ + 1173, /* GL_MODELVIEW17_ARB */ + 1174, /* GL_MODELVIEW18_ARB */ + 1175, /* GL_MODELVIEW19_ARB */ + 1177, /* GL_MODELVIEW20_ARB */ + 1178, /* GL_MODELVIEW21_ARB */ + 1179, /* GL_MODELVIEW22_ARB */ + 1180, /* GL_MODELVIEW23_ARB */ + 1181, /* GL_MODELVIEW24_ARB */ + 1182, /* GL_MODELVIEW25_ARB */ + 1183, /* GL_MODELVIEW26_ARB */ + 1184, /* GL_MODELVIEW27_ARB */ + 1185, /* GL_MODELVIEW28_ARB */ + 1186, /* GL_MODELVIEW29_ARB */ + 1188, /* GL_MODELVIEW30_ARB */ + 1189, /* GL_MODELVIEW31_ARB */ + 450, /* GL_DOT3_RGB_EXT */ + 448, /* GL_DOT3_RGBA_EXT */ + 1160, /* GL_MIRROR_CLAMP_EXT */ + 1163, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ + 1202, /* GL_MODULATE_ADD_ATI */ + 1203, /* GL_MODULATE_SIGNED_ADD_ATI */ + 1204, /* GL_MODULATE_SUBTRACT_ATI */ + 2302, /* GL_YCBCR_MESA */ + 1299, /* GL_PACK_INVERT_MESA */ + 391, /* GL_DEBUG_OBJECT_MESA */ + 392, /* GL_DEBUG_PRINT_MESA */ + 390, /* GL_DEBUG_ASSERT_MESA */ 139, /* GL_BUFFER_SIZE */ 141, /* GL_BUFFER_USAGE */ 145, /* GL_BUMP_ROT_MATRIX_ATI */ 146, /* GL_BUMP_ROT_MATRIX_SIZE_ATI */ 144, /* GL_BUMP_NUM_TEX_UNITS_ATI */ 148, /* GL_BUMP_TEX_UNITS_ATI */ - 507, /* GL_DUDV_ATI */ - 506, /* GL_DU8DV8_ATI */ + 510, /* GL_DUDV_ATI */ + 509, /* GL_DU8DV8_ATI */ 143, /* GL_BUMP_ENVMAP_ATI */ 147, /* GL_BUMP_TARGET_ATI */ - 1238, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */ - 1446, /* GL_PROGRAM_BINARY_FORMATS_OES */ - 1822, /* GL_STENCIL_BACK_FUNC */ - 1820, /* GL_STENCIL_BACK_FAIL */ - 1824, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ - 1826, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ - 595, /* GL_FRAGMENT_PROGRAM_ARB */ - 1444, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ - 1476, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ - 1475, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ - 1458, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - 1464, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - 1463, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - 1064, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ - 1089, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ - 1088, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ - 1077, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - 1083, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - 1082, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - 1652, /* GL_RGBA32F */ - 1615, /* GL_RGB32F */ - 1643, /* GL_RGBA16F */ - 1607, /* GL_RGB16F */ - 1033, /* GL_MAX_DRAW_BUFFERS */ - 451, /* GL_DRAW_BUFFER0 */ - 454, /* GL_DRAW_BUFFER1 */ - 475, /* GL_DRAW_BUFFER2 */ - 478, /* GL_DRAW_BUFFER3 */ - 481, /* GL_DRAW_BUFFER4 */ - 484, /* GL_DRAW_BUFFER5 */ - 487, /* GL_DRAW_BUFFER6 */ - 490, /* GL_DRAW_BUFFER7 */ - 493, /* GL_DRAW_BUFFER8 */ - 496, /* GL_DRAW_BUFFER9 */ - 455, /* GL_DRAW_BUFFER10 */ - 458, /* GL_DRAW_BUFFER11 */ - 461, /* GL_DRAW_BUFFER12 */ - 464, /* GL_DRAW_BUFFER13 */ - 467, /* GL_DRAW_BUFFER14 */ - 470, /* GL_DRAW_BUFFER15 */ + 1243, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */ + 1451, /* GL_PROGRAM_BINARY_FORMATS_OES */ + 1829, /* GL_STENCIL_BACK_FUNC */ + 1827, /* GL_STENCIL_BACK_FAIL */ + 1831, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ + 1833, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ + 599, /* GL_FRAGMENT_PROGRAM_ARB */ + 1449, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ + 1481, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ + 1480, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ + 1463, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + 1469, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + 1468, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + 1068, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ + 1093, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ + 1092, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ + 1081, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + 1087, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + 1086, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + 1657, /* GL_RGBA32F */ + 1620, /* GL_RGB32F */ + 1648, /* GL_RGBA16F */ + 1612, /* GL_RGB16F */ + 1676, /* GL_RGBA_FLOAT_MODE_ARB */ + 1037, /* GL_MAX_DRAW_BUFFERS */ + 454, /* GL_DRAW_BUFFER0 */ + 457, /* GL_DRAW_BUFFER1 */ + 478, /* GL_DRAW_BUFFER2 */ + 481, /* GL_DRAW_BUFFER3 */ + 484, /* GL_DRAW_BUFFER4 */ + 487, /* GL_DRAW_BUFFER5 */ + 490, /* GL_DRAW_BUFFER6 */ + 493, /* GL_DRAW_BUFFER7 */ + 496, /* GL_DRAW_BUFFER8 */ + 499, /* GL_DRAW_BUFFER9 */ + 458, /* GL_DRAW_BUFFER10 */ + 461, /* GL_DRAW_BUFFER11 */ + 464, /* GL_DRAW_BUFFER12 */ + 467, /* GL_DRAW_BUFFER13 */ + 470, /* GL_DRAW_BUFFER14 */ + 473, /* GL_DRAW_BUFFER15 */ 97, /* GL_BLEND_EQUATION_ALPHA */ - 1007, /* GL_MATRIX_PALETTE_ARB */ - 1057, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ - 1060, /* GL_MAX_PALETTE_MATRICES_ARB */ - 369, /* GL_CURRENT_PALETTE_MATRIX_ARB */ - 995, /* GL_MATRIX_INDEX_ARRAY_ARB */ - 364, /* GL_CURRENT_MATRIX_INDEX_ARB */ - 1000, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ - 1004, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ - 1002, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ - 998, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ - 2038, /* GL_TEXTURE_DEPTH_SIZE */ - 435, /* GL_DEPTH_TEXTURE_MODE */ - 1995, /* GL_TEXTURE_COMPARE_MODE */ - 1993, /* GL_TEXTURE_COMPARE_FUNC */ - 281, /* GL_COMPARE_REF_TO_TEXTURE */ - 1371, /* GL_POINT_SPRITE */ - 343, /* GL_COORD_REPLACE */ - 1376, /* GL_POINT_SPRITE_R_MODE_NV */ - 1516, /* GL_QUERY_COUNTER_BITS */ - 372, /* GL_CURRENT_QUERY */ - 1520, /* GL_QUERY_RESULT */ - 1522, /* GL_QUERY_RESULT_AVAILABLE */ - 1126, /* GL_MAX_VERTEX_ATTRIBS */ - 2244, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ - 433, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ - 432, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ - 1103, /* GL_MAX_TEXTURE_COORDS */ - 1105, /* GL_MAX_TEXTURE_IMAGE_UNITS */ - 1451, /* GL_PROGRAM_ERROR_STRING_ARB */ - 1453, /* GL_PROGRAM_FORMAT_ASCII_ARB */ - 1452, /* GL_PROGRAM_FORMAT_ARB */ - 2094, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ - 405, /* GL_DEPTH_BOUNDS_TEST_EXT */ - 404, /* GL_DEPTH_BOUNDS_EXT */ + 1011, /* GL_MATRIX_PALETTE_ARB */ + 1061, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ + 1064, /* GL_MAX_PALETTE_MATRICES_ARB */ + 372, /* GL_CURRENT_PALETTE_MATRIX_ARB */ + 999, /* GL_MATRIX_INDEX_ARRAY_ARB */ + 367, /* GL_CURRENT_MATRIX_INDEX_ARB */ + 1004, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ + 1008, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ + 1006, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ + 1002, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ + 2049, /* GL_TEXTURE_DEPTH_SIZE */ + 438, /* GL_DEPTH_TEXTURE_MODE */ + 2006, /* GL_TEXTURE_COMPARE_MODE */ + 2004, /* GL_TEXTURE_COMPARE_FUNC */ + 284, /* GL_COMPARE_REF_TO_TEXTURE */ + 1376, /* GL_POINT_SPRITE */ + 346, /* GL_COORD_REPLACE */ + 1381, /* GL_POINT_SPRITE_R_MODE_NV */ + 1521, /* GL_QUERY_COUNTER_BITS */ + 375, /* GL_CURRENT_QUERY */ + 1525, /* GL_QUERY_RESULT */ + 1527, /* GL_QUERY_RESULT_AVAILABLE */ + 1131, /* GL_MAX_VERTEX_ATTRIBS */ + 2255, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ + 436, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ + 435, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ + 1108, /* GL_MAX_TEXTURE_COORDS */ + 1110, /* GL_MAX_TEXTURE_IMAGE_UNITS */ + 1456, /* GL_PROGRAM_ERROR_STRING_ARB */ + 1458, /* GL_PROGRAM_FORMAT_ASCII_ARB */ + 1457, /* GL_PROGRAM_FORMAT_ARB */ + 2105, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ + 408, /* GL_DEPTH_BOUNDS_TEST_EXT */ + 407, /* GL_DEPTH_BOUNDS_EXT */ 61, /* GL_ARRAY_BUFFER */ - 520, /* GL_ELEMENT_ARRAY_BUFFER */ + 523, /* GL_ELEMENT_ARRAY_BUFFER */ 62, /* GL_ARRAY_BUFFER_BINDING */ - 521, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ - 2215, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ - 1224, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ - 187, /* GL_COLOR_ARRAY_BUFFER_BINDING */ - 732, /* GL_INDEX_ARRAY_BUFFER_BINDING */ - 2008, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ - 516, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ - 1730, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ - 573, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ - 2272, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ - 2237, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ - 1454, /* GL_PROGRAM_INSTRUCTIONS_ARB */ - 1070, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ - 1460, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - 1079, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - 1474, /* GL_PROGRAM_TEMPORARIES_ARB */ - 1085, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ - 1462, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ - 1081, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ - 1466, /* GL_PROGRAM_PARAMETERS_ARB */ - 1084, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ - 1461, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ - 1080, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ - 1445, /* GL_PROGRAM_ATTRIBS_ARB */ - 1065, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ - 1459, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ - 1078, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ - 1443, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ - 1063, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ - 1457, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - 1076, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - 1071, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ - 1067, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ - 1477, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ - 2127, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ - 1539, /* GL_READ_ONLY */ - 2286, /* GL_WRITE_ONLY */ - 1541, /* GL_READ_WRITE */ + 524, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ + 2226, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ + 1229, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ + 190, /* GL_COLOR_ARRAY_BUFFER_BINDING */ + 736, /* GL_INDEX_ARRAY_BUFFER_BINDING */ + 2019, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ + 519, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ + 1737, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ + 577, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ + 2283, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ + 2248, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ + 1459, /* GL_PROGRAM_INSTRUCTIONS_ARB */ + 1074, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ + 1465, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + 1083, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + 1479, /* GL_PROGRAM_TEMPORARIES_ARB */ + 1089, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ + 1467, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ + 1085, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ + 1471, /* GL_PROGRAM_PARAMETERS_ARB */ + 1088, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ + 1466, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ + 1084, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ + 1450, /* GL_PROGRAM_ATTRIBS_ARB */ + 1069, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ + 1464, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ + 1082, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ + 1448, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ + 1067, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ + 1462, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + 1080, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + 1075, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ + 1071, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ + 1482, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ + 2138, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ + 1544, /* GL_READ_ONLY */ + 2297, /* GL_WRITE_ONLY */ + 1546, /* GL_READ_WRITE */ 124, /* GL_BUFFER_ACCESS */ 129, /* GL_BUFFER_MAPPED */ 134, /* GL_BUFFER_MAP_POINTER */ - 2101, /* GL_TIME_ELAPSED_EXT */ - 955, /* GL_MATRIX0_ARB */ - 967, /* GL_MATRIX1_ARB */ - 979, /* GL_MATRIX2_ARB */ - 983, /* GL_MATRIX3_ARB */ - 985, /* GL_MATRIX4_ARB */ - 987, /* GL_MATRIX5_ARB */ - 989, /* GL_MATRIX6_ARB */ - 991, /* GL_MATRIX7_ARB */ - 993, /* GL_MATRIX8_ARB */ - 994, /* GL_MATRIX9_ARB */ - 957, /* GL_MATRIX10_ARB */ - 958, /* GL_MATRIX11_ARB */ - 959, /* GL_MATRIX12_ARB */ - 960, /* GL_MATRIX13_ARB */ - 961, /* GL_MATRIX14_ARB */ - 962, /* GL_MATRIX15_ARB */ - 963, /* GL_MATRIX16_ARB */ - 964, /* GL_MATRIX17_ARB */ - 965, /* GL_MATRIX18_ARB */ - 966, /* GL_MATRIX19_ARB */ - 969, /* GL_MATRIX20_ARB */ - 970, /* GL_MATRIX21_ARB */ - 971, /* GL_MATRIX22_ARB */ - 972, /* GL_MATRIX23_ARB */ - 973, /* GL_MATRIX24_ARB */ - 974, /* GL_MATRIX25_ARB */ - 975, /* GL_MATRIX26_ARB */ - 976, /* GL_MATRIX27_ARB */ - 977, /* GL_MATRIX28_ARB */ - 978, /* GL_MATRIX29_ARB */ - 981, /* GL_MATRIX30_ARB */ - 982, /* GL_MATRIX31_ARB */ - 1863, /* GL_STREAM_DRAW */ - 1865, /* GL_STREAM_READ */ - 1861, /* GL_STREAM_COPY */ - 1812, /* GL_STATIC_DRAW */ - 1814, /* GL_STATIC_READ */ - 1810, /* GL_STATIC_COPY */ - 510, /* GL_DYNAMIC_DRAW */ - 512, /* GL_DYNAMIC_READ */ - 508, /* GL_DYNAMIC_COPY */ - 1334, /* GL_PIXEL_PACK_BUFFER */ - 1338, /* GL_PIXEL_UNPACK_BUFFER */ - 1335, /* GL_PIXEL_PACK_BUFFER_BINDING */ - 1339, /* GL_PIXEL_UNPACK_BUFFER_BINDING */ - 396, /* GL_DEPTH24_STENCIL8 */ - 2090, /* GL_TEXTURE_STENCIL_SIZE */ - 2036, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */ - 1066, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ - 1069, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ - 1073, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ - 1072, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ - 2242, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */ - 2239, /* GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB */ - 1012, /* GL_MAX_ARRAY_TEXTURE_LAYERS */ - 1149, /* GL_MIN_PROGRAM_TEXEL_OFFSET */ - 1086, /* GL_MAX_PROGRAM_TEXEL_OFFSET */ - 1854, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ + 2112, /* GL_TIME_ELAPSED_EXT */ + 959, /* GL_MATRIX0_ARB */ + 971, /* GL_MATRIX1_ARB */ + 983, /* GL_MATRIX2_ARB */ + 987, /* GL_MATRIX3_ARB */ + 989, /* GL_MATRIX4_ARB */ + 991, /* GL_MATRIX5_ARB */ + 993, /* GL_MATRIX6_ARB */ + 995, /* GL_MATRIX7_ARB */ + 997, /* GL_MATRIX8_ARB */ + 998, /* GL_MATRIX9_ARB */ + 961, /* GL_MATRIX10_ARB */ + 962, /* GL_MATRIX11_ARB */ + 963, /* GL_MATRIX12_ARB */ + 964, /* GL_MATRIX13_ARB */ + 965, /* GL_MATRIX14_ARB */ + 966, /* GL_MATRIX15_ARB */ + 967, /* GL_MATRIX16_ARB */ + 968, /* GL_MATRIX17_ARB */ + 969, /* GL_MATRIX18_ARB */ + 970, /* GL_MATRIX19_ARB */ + 973, /* GL_MATRIX20_ARB */ + 974, /* GL_MATRIX21_ARB */ + 975, /* GL_MATRIX22_ARB */ + 976, /* GL_MATRIX23_ARB */ + 977, /* GL_MATRIX24_ARB */ + 978, /* GL_MATRIX25_ARB */ + 979, /* GL_MATRIX26_ARB */ + 980, /* GL_MATRIX27_ARB */ + 981, /* GL_MATRIX28_ARB */ + 982, /* GL_MATRIX29_ARB */ + 985, /* GL_MATRIX30_ARB */ + 986, /* GL_MATRIX31_ARB */ + 1870, /* GL_STREAM_DRAW */ + 1872, /* GL_STREAM_READ */ + 1868, /* GL_STREAM_COPY */ + 1819, /* GL_STATIC_DRAW */ + 1821, /* GL_STATIC_READ */ + 1817, /* GL_STATIC_COPY */ + 513, /* GL_DYNAMIC_DRAW */ + 515, /* GL_DYNAMIC_READ */ + 511, /* GL_DYNAMIC_COPY */ + 1339, /* GL_PIXEL_PACK_BUFFER */ + 1343, /* GL_PIXEL_UNPACK_BUFFER */ + 1340, /* GL_PIXEL_PACK_BUFFER_BINDING */ + 1344, /* GL_PIXEL_UNPACK_BUFFER_BINDING */ + 399, /* GL_DEPTH24_STENCIL8 */ + 2101, /* GL_TEXTURE_STENCIL_SIZE */ + 2047, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */ + 1070, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ + 1073, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ + 1077, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ + 1076, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ + 2253, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */ + 2250, /* GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB */ + 1016, /* GL_MAX_ARRAY_TEXTURE_LAYERS */ + 1154, /* GL_MIN_PROGRAM_TEXEL_OFFSET */ + 1090, /* GL_MAX_PROGRAM_TEXEL_OFFSET */ + 1861, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ 18, /* GL_ACTIVE_STENCIL_FACE_EXT */ - 1156, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ - 1711, /* GL_SAMPLES_PASSED */ - 688, /* GL_GEOMETRY_VERTICES_OUT */ - 682, /* GL_GEOMETRY_INPUT_TYPE */ - 684, /* GL_GEOMETRY_OUTPUT_TYPE */ - 156, /* GL_CLAMP_READ_COLOR */ - 546, /* GL_FIXED_ONLY */ - 1358, /* GL_POINT_SIZE_ARRAY_TYPE_OES */ - 1357, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */ - 1356, /* GL_POINT_SIZE_ARRAY_POINTER_OES */ - 1193, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */ - 1480, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */ - 2070, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */ + 1161, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ + 1718, /* GL_SAMPLES_PASSED */ + 692, /* GL_GEOMETRY_VERTICES_OUT */ + 686, /* GL_GEOMETRY_INPUT_TYPE */ + 688, /* GL_GEOMETRY_OUTPUT_TYPE */ + 1709, /* GL_SAMPLER_BINDING */ + 164, /* GL_CLAMP_VERTEX_COLOR_ARB */ + 156, /* GL_CLAMP_FRAGMENT_COLOR_ARB */ + 157, /* GL_CLAMP_READ_COLOR */ + 549, /* GL_FIXED_ONLY */ + 1363, /* GL_POINT_SIZE_ARRAY_TYPE_OES */ + 1362, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */ + 1361, /* GL_POINT_SIZE_ARRAY_POINTER_OES */ + 1198, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */ + 1485, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */ + 2081, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */ 138, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */ 128, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */ - 1556, /* GL_RELEASED_APPLE */ - 2269, /* GL_VOLATILE_APPLE */ - 1595, /* GL_RETAINED_APPLE */ - 2144, /* GL_UNDEFINED_APPLE */ - 1504, /* GL_PURGEABLE_APPLE */ - 596, /* GL_FRAGMENT_SHADER */ - 2264, /* GL_VERTEX_SHADER */ - 1465, /* GL_PROGRAM_OBJECT_ARB */ - 1747, /* GL_SHADER_OBJECT_ARB */ - 1041, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ - 1131, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ - 1122, /* GL_MAX_VARYING_COMPONENTS */ - 1129, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ - 1024, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ - 1254, /* GL_OBJECT_TYPE_ARB */ - 1749, /* GL_SHADER_TYPE */ - 561, /* GL_FLOAT_VEC2 */ - 563, /* GL_FLOAT_VEC3 */ - 565, /* GL_FLOAT_VEC4 */ - 784, /* GL_INT_VEC2 */ - 786, /* GL_INT_VEC3 */ - 788, /* GL_INT_VEC4 */ + 1561, /* GL_RELEASED_APPLE */ + 2280, /* GL_VOLATILE_APPLE */ + 1600, /* GL_RETAINED_APPLE */ + 2155, /* GL_UNDEFINED_APPLE */ + 1509, /* GL_PURGEABLE_APPLE */ + 600, /* GL_FRAGMENT_SHADER */ + 2275, /* GL_VERTEX_SHADER */ + 1470, /* GL_PROGRAM_OBJECT_ARB */ + 1754, /* GL_SHADER_OBJECT_ARB */ + 1045, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ + 1136, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ + 1127, /* GL_MAX_VARYING_COMPONENTS */ + 1134, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ + 1028, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ + 1259, /* GL_OBJECT_TYPE_ARB */ + 1756, /* GL_SHADER_TYPE */ + 565, /* GL_FLOAT_VEC2 */ + 567, /* GL_FLOAT_VEC3 */ + 569, /* GL_FLOAT_VEC4 */ + 788, /* GL_INT_VEC2 */ + 790, /* GL_INT_VEC3 */ + 792, /* GL_INT_VEC4 */ 116, /* GL_BOOL */ 118, /* GL_BOOL_VEC2 */ 120, /* GL_BOOL_VEC3 */ 122, /* GL_BOOL_VEC4 */ - 549, /* GL_FLOAT_MAT2 */ - 553, /* GL_FLOAT_MAT3 */ - 557, /* GL_FLOAT_MAT4 */ - 1687, /* GL_SAMPLER_1D */ - 1693, /* GL_SAMPLER_2D */ - 1701, /* GL_SAMPLER_3D */ - 1705, /* GL_SAMPLER_CUBE */ - 1692, /* GL_SAMPLER_1D_SHADOW */ - 1700, /* GL_SAMPLER_2D_SHADOW */ - 1698, /* GL_SAMPLER_2D_RECT */ - 1699, /* GL_SAMPLER_2D_RECT_SHADOW */ - 551, /* GL_FLOAT_MAT2x3 */ - 552, /* GL_FLOAT_MAT2x4 */ - 555, /* GL_FLOAT_MAT3x2 */ - 556, /* GL_FLOAT_MAT3x4 */ - 559, /* GL_FLOAT_MAT4x2 */ - 560, /* GL_FLOAT_MAT4x3 */ - 394, /* GL_DELETE_STATUS */ - 286, /* GL_COMPILE_STATUS */ - 845, /* GL_LINK_STATUS */ - 2209, /* GL_VALIDATE_STATUS */ - 744, /* GL_INFO_LOG_LENGTH */ + 553, /* GL_FLOAT_MAT2 */ + 557, /* GL_FLOAT_MAT3 */ + 561, /* GL_FLOAT_MAT4 */ + 1693, /* GL_SAMPLER_1D */ + 1699, /* GL_SAMPLER_2D */ + 1707, /* GL_SAMPLER_3D */ + 1712, /* GL_SAMPLER_CUBE */ + 1698, /* GL_SAMPLER_1D_SHADOW */ + 1706, /* GL_SAMPLER_2D_SHADOW */ + 1704, /* GL_SAMPLER_2D_RECT */ + 1705, /* GL_SAMPLER_2D_RECT_SHADOW */ + 555, /* GL_FLOAT_MAT2x3 */ + 556, /* GL_FLOAT_MAT2x4 */ + 559, /* GL_FLOAT_MAT3x2 */ + 560, /* GL_FLOAT_MAT3x4 */ + 563, /* GL_FLOAT_MAT4x2 */ + 564, /* GL_FLOAT_MAT4x3 */ + 397, /* GL_DELETE_STATUS */ + 289, /* GL_COMPILE_STATUS */ + 849, /* GL_LINK_STATUS */ + 2220, /* GL_VALIDATE_STATUS */ + 748, /* GL_INFO_LOG_LENGTH */ 64, /* GL_ATTACHED_SHADERS */ 21, /* GL_ACTIVE_UNIFORMS */ 22, /* GL_ACTIVE_UNIFORM_MAX_LENGTH */ - 1748, /* GL_SHADER_SOURCE_LENGTH */ + 1755, /* GL_SHADER_SOURCE_LENGTH */ 15, /* GL_ACTIVE_ATTRIBUTES */ 16, /* GL_ACTIVE_ATTRIBUTE_MAX_LENGTH */ - 598, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ - 1751, /* GL_SHADING_LANGUAGE_VERSION */ - 371, /* GL_CURRENT_PROGRAM */ - 1303, /* GL_PALETTE4_RGB8_OES */ - 1305, /* GL_PALETTE4_RGBA8_OES */ - 1301, /* GL_PALETTE4_R5_G6_B5_OES */ - 1304, /* GL_PALETTE4_RGBA4_OES */ - 1302, /* GL_PALETTE4_RGB5_A1_OES */ - 1308, /* GL_PALETTE8_RGB8_OES */ - 1310, /* GL_PALETTE8_RGBA8_OES */ - 1306, /* GL_PALETTE8_R5_G6_B5_OES */ - 1309, /* GL_PALETTE8_RGBA4_OES */ - 1307, /* GL_PALETTE8_RGB5_A1_OES */ - 725, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */ - 723, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */ - 1355, /* GL_POINT_SIZE_ARRAY_OES */ - 2014, /* GL_TEXTURE_CROP_RECT_OES */ - 996, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */ - 1354, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */ - 2192, /* GL_UNSIGNED_NORMALIZED */ - 1951, /* GL_TEXTURE_1D_ARRAY */ - 1490, /* GL_PROXY_TEXTURE_1D_ARRAY */ - 1954, /* GL_TEXTURE_2D_ARRAY */ - 1494, /* GL_PROXY_TEXTURE_2D_ARRAY */ - 1962, /* GL_TEXTURE_BINDING_1D_ARRAY */ - 1965, /* GL_TEXTURE_BINDING_2D_ARRAY */ - 1048, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */ - 1981, /* GL_TEXTURE_BUFFER */ - 1102, /* GL_MAX_TEXTURE_BUFFER_SIZE */ - 1969, /* GL_TEXTURE_BINDING_BUFFER */ - 1982, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */ - 1983, /* GL_TEXTURE_BUFFER_FORMAT */ - 1527, /* GL_R11F_G11F_B10F */ - 2158, /* GL_UNSIGNED_INT_10F_11F_11F_REV */ - 1638, /* GL_RGB9_E5 */ - 2167, /* GL_UNSIGNED_INT_5_9_9_9_REV */ - 2088, /* GL_TEXTURE_SHARED_SIZE */ - 1804, /* GL_SRGB */ - 1805, /* GL_SRGB8 */ - 1807, /* GL_SRGB_ALPHA */ - 1806, /* GL_SRGB8_ALPHA8 */ - 1764, /* GL_SLUMINANCE_ALPHA */ - 1763, /* GL_SLUMINANCE8_ALPHA8 */ - 1761, /* GL_SLUMINANCE */ - 1762, /* GL_SLUMINANCE8 */ - 309, /* GL_COMPRESSED_SRGB */ - 310, /* GL_COMPRESSED_SRGB_ALPHA */ - 307, /* GL_COMPRESSED_SLUMINANCE */ - 308, /* GL_COMPRESSED_SLUMINANCE_ALPHA */ - 2123, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */ - 2112, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */ - 1120, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */ - 2121, /* GL_TRANSFORM_FEEDBACK_VARYINGS */ - 2117, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */ - 2115, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */ - 1437, /* GL_PRIMITIVES_GENERATED */ - 2119, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */ - 1531, /* GL_RASTERIZER_DISCARD */ - 1116, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */ - 1118, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */ - 762, /* GL_INTERLEAVED_ATTRIBS */ - 1740, /* GL_SEPARATE_ATTRIBS */ - 2107, /* GL_TRANSFORM_FEEDBACK_BUFFER */ - 2109, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */ - 1373, /* GL_POINT_SPRITE_COORD_ORIGIN */ - 853, /* GL_LOWER_LEFT */ - 2206, /* GL_UPPER_LEFT */ - 1828, /* GL_STENCIL_BACK_REF */ - 1829, /* GL_STENCIL_BACK_VALUE_MASK */ - 1830, /* GL_STENCIL_BACK_WRITEMASK */ - 500, /* GL_DRAW_FRAMEBUFFER_BINDING */ - 1561, /* GL_RENDERBUFFER_BINDING */ - 1535, /* GL_READ_FRAMEBUFFER */ - 499, /* GL_DRAW_FRAMEBUFFER */ - 1536, /* GL_READ_FRAMEBUFFER_BINDING */ - 1580, /* GL_RENDERBUFFER_SAMPLES */ - 612, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ - 609, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ - 624, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ - 619, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ - 622, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ - 630, /* GL_FRAMEBUFFER_COMPLETE */ - 635, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ - 650, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ - 644, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ - 639, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ - 645, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ - 641, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ - 655, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ - 661, /* GL_FRAMEBUFFER_UNSUPPORTED */ - 659, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ - 1020, /* GL_MAX_COLOR_ATTACHMENTS */ - 193, /* GL_COLOR_ATTACHMENT0 */ - 196, /* GL_COLOR_ATTACHMENT1 */ - 210, /* GL_COLOR_ATTACHMENT2 */ - 212, /* GL_COLOR_ATTACHMENT3 */ - 214, /* GL_COLOR_ATTACHMENT4 */ - 216, /* GL_COLOR_ATTACHMENT5 */ - 218, /* GL_COLOR_ATTACHMENT6 */ - 220, /* GL_COLOR_ATTACHMENT7 */ - 222, /* GL_COLOR_ATTACHMENT8 */ - 224, /* GL_COLOR_ATTACHMENT9 */ - 197, /* GL_COLOR_ATTACHMENT10 */ - 199, /* GL_COLOR_ATTACHMENT11 */ - 201, /* GL_COLOR_ATTACHMENT12 */ - 203, /* GL_COLOR_ATTACHMENT13 */ - 205, /* GL_COLOR_ATTACHMENT14 */ - 207, /* GL_COLOR_ATTACHMENT15 */ - 399, /* GL_DEPTH_ATTACHMENT */ - 1817, /* GL_STENCIL_ATTACHMENT */ - 600, /* GL_FRAMEBUFFER */ - 1558, /* GL_RENDERBUFFER */ - 1584, /* GL_RENDERBUFFER_WIDTH */ - 1571, /* GL_RENDERBUFFER_HEIGHT */ - 1574, /* GL_RENDERBUFFER_INTERNAL_FORMAT */ - 1849, /* GL_STENCIL_INDEX_EXT */ - 1838, /* GL_STENCIL_INDEX1 */ - 1843, /* GL_STENCIL_INDEX4 */ - 1846, /* GL_STENCIL_INDEX8 */ - 1839, /* GL_STENCIL_INDEX16 */ - 1578, /* GL_RENDERBUFFER_RED_SIZE */ - 1569, /* GL_RENDERBUFFER_GREEN_SIZE */ - 1564, /* GL_RENDERBUFFER_BLUE_SIZE */ - 1559, /* GL_RENDERBUFFER_ALPHA_SIZE */ - 1566, /* GL_RENDERBUFFER_DEPTH_SIZE */ - 1582, /* GL_RENDERBUFFER_STENCIL_SIZE */ - 653, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ - 1097, /* GL_MAX_SAMPLES */ - 2050, /* GL_TEXTURE_GEN_STR_OES */ - 699, /* GL_HALF_FLOAT_OES */ - 1625, /* GL_RGB565_OES */ - 1655, /* GL_RGBA32UI */ - 1618, /* GL_RGB32UI */ + 602, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ + 1758, /* GL_SHADING_LANGUAGE_VERSION */ + 374, /* GL_CURRENT_PROGRAM */ + 1308, /* GL_PALETTE4_RGB8_OES */ + 1310, /* GL_PALETTE4_RGBA8_OES */ + 1306, /* GL_PALETTE4_R5_G6_B5_OES */ + 1309, /* GL_PALETTE4_RGBA4_OES */ + 1307, /* GL_PALETTE4_RGB5_A1_OES */ + 1313, /* GL_PALETTE8_RGB8_OES */ + 1315, /* GL_PALETTE8_RGBA8_OES */ + 1311, /* GL_PALETTE8_R5_G6_B5_OES */ + 1314, /* GL_PALETTE8_RGBA4_OES */ + 1312, /* GL_PALETTE8_RGB5_A1_OES */ + 729, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */ + 727, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */ + 1360, /* GL_POINT_SIZE_ARRAY_OES */ + 2025, /* GL_TEXTURE_CROP_RECT_OES */ + 1000, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */ + 1359, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */ + 2203, /* GL_UNSIGNED_NORMALIZED */ + 1958, /* GL_TEXTURE_1D_ARRAY */ + 1495, /* GL_PROXY_TEXTURE_1D_ARRAY */ + 1961, /* GL_TEXTURE_2D_ARRAY */ + 1499, /* GL_PROXY_TEXTURE_2D_ARRAY */ + 1969, /* GL_TEXTURE_BINDING_1D_ARRAY */ + 1972, /* GL_TEXTURE_BINDING_2D_ARRAY */ + 1052, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */ + 1989, /* GL_TEXTURE_BUFFER */ + 1106, /* GL_MAX_TEXTURE_BUFFER_SIZE */ + 1976, /* GL_TEXTURE_BINDING_BUFFER */ + 1991, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */ + 1993, /* GL_TEXTURE_BUFFER_FORMAT */ + 1532, /* GL_R11F_G11F_B10F */ + 2169, /* GL_UNSIGNED_INT_10F_11F_11F_REV */ + 1643, /* GL_RGB9_E5 */ + 2178, /* GL_UNSIGNED_INT_5_9_9_9_REV */ + 2099, /* GL_TEXTURE_SHARED_SIZE */ + 1811, /* GL_SRGB */ + 1812, /* GL_SRGB8 */ + 1814, /* GL_SRGB_ALPHA */ + 1813, /* GL_SRGB8_ALPHA8 */ + 1771, /* GL_SLUMINANCE_ALPHA */ + 1770, /* GL_SLUMINANCE8_ALPHA8 */ + 1768, /* GL_SLUMINANCE */ + 1769, /* GL_SLUMINANCE8 */ + 312, /* GL_COMPRESSED_SRGB */ + 313, /* GL_COMPRESSED_SRGB_ALPHA */ + 310, /* GL_COMPRESSED_SLUMINANCE */ + 311, /* GL_COMPRESSED_SLUMINANCE_ALPHA */ + 2134, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */ + 2123, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */ + 1125, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */ + 2132, /* GL_TRANSFORM_FEEDBACK_VARYINGS */ + 2128, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */ + 2126, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */ + 1442, /* GL_PRIMITIVES_GENERATED */ + 2130, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */ + 1536, /* GL_RASTERIZER_DISCARD */ + 1121, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */ + 1123, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */ + 766, /* GL_INTERLEAVED_ATTRIBS */ + 1747, /* GL_SEPARATE_ATTRIBS */ + 2118, /* GL_TRANSFORM_FEEDBACK_BUFFER */ + 2120, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */ + 1378, /* GL_POINT_SPRITE_COORD_ORIGIN */ + 857, /* GL_LOWER_LEFT */ + 2217, /* GL_UPPER_LEFT */ + 1835, /* GL_STENCIL_BACK_REF */ + 1836, /* GL_STENCIL_BACK_VALUE_MASK */ + 1837, /* GL_STENCIL_BACK_WRITEMASK */ + 503, /* GL_DRAW_FRAMEBUFFER_BINDING */ + 1566, /* GL_RENDERBUFFER_BINDING */ + 1540, /* GL_READ_FRAMEBUFFER */ + 502, /* GL_DRAW_FRAMEBUFFER */ + 1541, /* GL_READ_FRAMEBUFFER_BINDING */ + 1585, /* GL_RENDERBUFFER_SAMPLES */ + 616, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ + 613, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ + 628, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ + 623, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ + 626, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ + 634, /* GL_FRAMEBUFFER_COMPLETE */ + 639, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ + 654, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ + 648, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ + 643, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ + 649, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ + 645, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ + 659, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ + 665, /* GL_FRAMEBUFFER_UNSUPPORTED */ + 663, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ + 1024, /* GL_MAX_COLOR_ATTACHMENTS */ + 196, /* GL_COLOR_ATTACHMENT0 */ + 199, /* GL_COLOR_ATTACHMENT1 */ + 213, /* GL_COLOR_ATTACHMENT2 */ + 215, /* GL_COLOR_ATTACHMENT3 */ + 217, /* GL_COLOR_ATTACHMENT4 */ + 219, /* GL_COLOR_ATTACHMENT5 */ + 221, /* GL_COLOR_ATTACHMENT6 */ + 223, /* GL_COLOR_ATTACHMENT7 */ + 225, /* GL_COLOR_ATTACHMENT8 */ + 227, /* GL_COLOR_ATTACHMENT9 */ + 200, /* GL_COLOR_ATTACHMENT10 */ + 202, /* GL_COLOR_ATTACHMENT11 */ + 204, /* GL_COLOR_ATTACHMENT12 */ + 206, /* GL_COLOR_ATTACHMENT13 */ + 208, /* GL_COLOR_ATTACHMENT14 */ + 210, /* GL_COLOR_ATTACHMENT15 */ + 402, /* GL_DEPTH_ATTACHMENT */ + 1824, /* GL_STENCIL_ATTACHMENT */ + 604, /* GL_FRAMEBUFFER */ + 1563, /* GL_RENDERBUFFER */ + 1589, /* GL_RENDERBUFFER_WIDTH */ + 1576, /* GL_RENDERBUFFER_HEIGHT */ + 1579, /* GL_RENDERBUFFER_INTERNAL_FORMAT */ + 1856, /* GL_STENCIL_INDEX_EXT */ + 1845, /* GL_STENCIL_INDEX1 */ + 1850, /* GL_STENCIL_INDEX4 */ + 1853, /* GL_STENCIL_INDEX8 */ + 1846, /* GL_STENCIL_INDEX16 */ + 1583, /* GL_RENDERBUFFER_RED_SIZE */ + 1574, /* GL_RENDERBUFFER_GREEN_SIZE */ + 1569, /* GL_RENDERBUFFER_BLUE_SIZE */ + 1564, /* GL_RENDERBUFFER_ALPHA_SIZE */ + 1571, /* GL_RENDERBUFFER_DEPTH_SIZE */ + 1587, /* GL_RENDERBUFFER_STENCIL_SIZE */ + 657, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ + 1101, /* GL_MAX_SAMPLES */ + 2061, /* GL_TEXTURE_GEN_STR_OES */ + 703, /* GL_HALF_FLOAT_OES */ + 1630, /* GL_RGB565_OES */ + 1660, /* GL_RGBA32UI */ + 1623, /* GL_RGB32UI */ 40, /* GL_ALPHA32UI_EXT */ - 754, /* GL_INTENSITY32UI_EXT */ - 870, /* GL_LUMINANCE32UI_EXT */ - 887, /* GL_LUMINANCE_ALPHA32UI_EXT */ - 1646, /* GL_RGBA16UI */ - 1610, /* GL_RGB16UI */ + 758, /* GL_INTENSITY32UI_EXT */ + 874, /* GL_LUMINANCE32UI_EXT */ + 891, /* GL_LUMINANCE_ALPHA32UI_EXT */ + 1651, /* GL_RGBA16UI */ + 1615, /* GL_RGB16UI */ 37, /* GL_ALPHA16UI_EXT */ - 751, /* GL_INTENSITY16UI_EXT */ - 865, /* GL_LUMINANCE16UI_EXT */ - 885, /* GL_LUMINANCE_ALPHA16UI_EXT */ - 1665, /* GL_RGBA8UI */ - 1633, /* GL_RGB8UI */ + 755, /* GL_INTENSITY16UI_EXT */ + 869, /* GL_LUMINANCE16UI_EXT */ + 889, /* GL_LUMINANCE_ALPHA16UI_EXT */ + 1670, /* GL_RGBA8UI */ + 1638, /* GL_RGB8UI */ 45, /* GL_ALPHA8UI_EXT */ - 759, /* GL_INTENSITY8UI_EXT */ - 879, /* GL_LUMINANCE8UI_EXT */ - 889, /* GL_LUMINANCE_ALPHA8UI_EXT */ - 1653, /* GL_RGBA32I */ - 1616, /* GL_RGB32I */ + 763, /* GL_INTENSITY8UI_EXT */ + 883, /* GL_LUMINANCE8UI_EXT */ + 893, /* GL_LUMINANCE_ALPHA8UI_EXT */ + 1658, /* GL_RGBA32I */ + 1621, /* GL_RGB32I */ 39, /* GL_ALPHA32I_EXT */ - 753, /* GL_INTENSITY32I_EXT */ - 869, /* GL_LUMINANCE32I_EXT */ - 886, /* GL_LUMINANCE_ALPHA32I_EXT */ - 1644, /* GL_RGBA16I */ - 1608, /* GL_RGB16I */ + 757, /* GL_INTENSITY32I_EXT */ + 873, /* GL_LUMINANCE32I_EXT */ + 890, /* GL_LUMINANCE_ALPHA32I_EXT */ + 1649, /* GL_RGBA16I */ + 1613, /* GL_RGB16I */ 36, /* GL_ALPHA16I_EXT */ - 750, /* GL_INTENSITY16I_EXT */ - 864, /* GL_LUMINANCE16I_EXT */ - 884, /* GL_LUMINANCE_ALPHA16I_EXT */ - 1663, /* GL_RGBA8I */ - 1631, /* GL_RGB8I */ + 754, /* GL_INTENSITY16I_EXT */ + 868, /* GL_LUMINANCE16I_EXT */ + 888, /* GL_LUMINANCE_ALPHA16I_EXT */ + 1668, /* GL_RGBA8I */ + 1636, /* GL_RGB8I */ 44, /* GL_ALPHA8I_EXT */ - 758, /* GL_INTENSITY8I_EXT */ - 878, /* GL_LUMINANCE8I_EXT */ - 888, /* GL_LUMINANCE_ALPHA8I_EXT */ - 1548, /* GL_RED_INTEGER */ - 695, /* GL_GREEN_INTEGER */ + 762, /* GL_INTENSITY8I_EXT */ + 882, /* GL_LUMINANCE8I_EXT */ + 892, /* GL_LUMINANCE_ALPHA8I_EXT */ + 1553, /* GL_RED_INTEGER */ + 699, /* GL_GREEN_INTEGER */ 113, /* GL_BLUE_INTEGER */ 49, /* GL_ALPHA_INTEGER_EXT */ - 1677, /* GL_RGB_INTEGER */ - 1671, /* GL_RGBA_INTEGER */ + 1683, /* GL_RGB_INTEGER */ + 1677, /* GL_RGBA_INTEGER */ 84, /* GL_BGR_INTEGER */ 82, /* GL_BGRA_INTEGER */ - 891, /* GL_LUMINANCE_INTEGER_EXT */ - 890, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */ - 1673, /* GL_RGBA_INTEGER_MODE_EXT */ - 607, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */ - 648, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */ - 647, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */ - 1688, /* GL_SAMPLER_1D_ARRAY */ - 1694, /* GL_SAMPLER_2D_ARRAY */ - 1703, /* GL_SAMPLER_BUFFER */ - 1690, /* GL_SAMPLER_1D_ARRAY_SHADOW */ - 1696, /* GL_SAMPLER_2D_ARRAY_SHADOW */ - 1706, /* GL_SAMPLER_CUBE_SHADOW */ - 2186, /* GL_UNSIGNED_INT_VEC2 */ - 2188, /* GL_UNSIGNED_INT_VEC3 */ - 2190, /* GL_UNSIGNED_INT_VEC4 */ - 768, /* GL_INT_SAMPLER_1D */ - 772, /* GL_INT_SAMPLER_2D */ - 778, /* GL_INT_SAMPLER_3D */ - 782, /* GL_INT_SAMPLER_CUBE */ - 776, /* GL_INT_SAMPLER_2D_RECT */ - 769, /* GL_INT_SAMPLER_1D_ARRAY */ - 773, /* GL_INT_SAMPLER_2D_ARRAY */ - 780, /* GL_INT_SAMPLER_BUFFER */ - 2170, /* GL_UNSIGNED_INT_SAMPLER_1D */ - 2174, /* GL_UNSIGNED_INT_SAMPLER_2D */ - 2180, /* GL_UNSIGNED_INT_SAMPLER_3D */ - 2184, /* GL_UNSIGNED_INT_SAMPLER_CUBE */ - 2178, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */ - 2171, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */ - 2175, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */ - 2182, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */ - 686, /* GL_GEOMETRY_SHADER */ - 689, /* GL_GEOMETRY_VERTICES_OUT_ARB */ - 683, /* GL_GEOMETRY_INPUT_TYPE_ARB */ - 685, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */ - 1054, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */ - 1136, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */ - 1052, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */ - 1046, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */ - 1050, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */ - 854, /* GL_LOW_FLOAT */ - 1138, /* GL_MEDIUM_FLOAT */ - 700, /* GL_HIGH_FLOAT */ - 855, /* GL_LOW_INT */ - 1139, /* GL_MEDIUM_INT */ - 701, /* GL_HIGH_INT */ - 2160, /* GL_UNSIGNED_INT_10_10_10_2_OES */ - 767, /* GL_INT_10_10_10_2_OES */ - 1745, /* GL_SHADER_BINARY_FORMATS */ - 1239, /* GL_NUM_SHADER_BINARY_FORMATS */ - 1746, /* GL_SHADER_COMPILER */ - 1133, /* GL_MAX_VERTEX_UNIFORM_VECTORS */ - 1125, /* GL_MAX_VARYING_VECTORS */ - 1043, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */ - 1524, /* GL_QUERY_WAIT */ - 1518, /* GL_QUERY_NO_WAIT */ - 1514, /* GL_QUERY_BY_REGION_WAIT */ - 1512, /* GL_QUERY_BY_REGION_NO_WAIT */ - 2105, /* GL_TRANSFORM_FEEDBACK */ - 2114, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */ - 2108, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */ - 2106, /* GL_TRANSFORM_FEEDBACK_BINDING */ - 1508, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ - 542, /* GL_FIRST_VERTEX_CONVENTION */ - 800, /* GL_LAST_VERTEX_CONVENTION */ - 1482, /* GL_PROVOKING_VERTEX */ - 350, /* GL_COPY_READ_BUFFER */ - 351, /* GL_COPY_WRITE_BUFFER */ - 1551, /* GL_RED_SNORM */ - 1684, /* GL_RG_SNORM */ - 1683, /* GL_RGB_SNORM */ - 1676, /* GL_RGBA_SNORM */ - 1530, /* GL_R8_SNORM */ - 1598, /* GL_RG8_SNORM */ - 1637, /* GL_RGB8_SNORM */ - 1669, /* GL_RGBA8_SNORM */ - 1528, /* GL_R16_SNORM */ - 1597, /* GL_RG16_SNORM */ - 1613, /* GL_RGB16_SNORM */ - 1649, /* GL_RGBA16_SNORM */ - 1757, /* GL_SIGNED_NORMALIZED */ - 1439, /* GL_PRIMITIVE_RESTART */ - 1440, /* GL_PRIMITIVE_RESTART_INDEX */ - 1099, /* GL_MAX_SERVER_WAIT_TIMEOUT */ - 1253, /* GL_OBJECT_TYPE */ - 1870, /* GL_SYNC_CONDITION */ - 1875, /* GL_SYNC_STATUS */ - 1872, /* GL_SYNC_FLAGS */ - 1871, /* GL_SYNC_FENCE */ - 1874, /* GL_SYNC_GPU_COMMANDS_COMPLETE */ - 2153, /* GL_UNSIGNALED */ - 1756, /* GL_SIGNALED */ + 895, /* GL_LUMINANCE_INTEGER_EXT */ + 894, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */ + 1679, /* GL_RGBA_INTEGER_MODE_EXT */ + 611, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */ + 652, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */ + 651, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */ + 1694, /* GL_SAMPLER_1D_ARRAY */ + 1700, /* GL_SAMPLER_2D_ARRAY */ + 1710, /* GL_SAMPLER_BUFFER */ + 1696, /* GL_SAMPLER_1D_ARRAY_SHADOW */ + 1702, /* GL_SAMPLER_2D_ARRAY_SHADOW */ + 1713, /* GL_SAMPLER_CUBE_SHADOW */ + 2197, /* GL_UNSIGNED_INT_VEC2 */ + 2199, /* GL_UNSIGNED_INT_VEC3 */ + 2201, /* GL_UNSIGNED_INT_VEC4 */ + 772, /* GL_INT_SAMPLER_1D */ + 776, /* GL_INT_SAMPLER_2D */ + 782, /* GL_INT_SAMPLER_3D */ + 786, /* GL_INT_SAMPLER_CUBE */ + 780, /* GL_INT_SAMPLER_2D_RECT */ + 773, /* GL_INT_SAMPLER_1D_ARRAY */ + 777, /* GL_INT_SAMPLER_2D_ARRAY */ + 784, /* GL_INT_SAMPLER_BUFFER */ + 2181, /* GL_UNSIGNED_INT_SAMPLER_1D */ + 2185, /* GL_UNSIGNED_INT_SAMPLER_2D */ + 2191, /* GL_UNSIGNED_INT_SAMPLER_3D */ + 2195, /* GL_UNSIGNED_INT_SAMPLER_CUBE */ + 2189, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */ + 2182, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */ + 2186, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */ + 2193, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */ + 690, /* GL_GEOMETRY_SHADER */ + 693, /* GL_GEOMETRY_VERTICES_OUT_ARB */ + 687, /* GL_GEOMETRY_INPUT_TYPE_ARB */ + 689, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */ + 1058, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */ + 1141, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */ + 1056, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */ + 1050, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */ + 1054, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */ + 858, /* GL_LOW_FLOAT */ + 1143, /* GL_MEDIUM_FLOAT */ + 704, /* GL_HIGH_FLOAT */ + 859, /* GL_LOW_INT */ + 1144, /* GL_MEDIUM_INT */ + 705, /* GL_HIGH_INT */ + 2171, /* GL_UNSIGNED_INT_10_10_10_2_OES */ + 771, /* GL_INT_10_10_10_2_OES */ + 1752, /* GL_SHADER_BINARY_FORMATS */ + 1244, /* GL_NUM_SHADER_BINARY_FORMATS */ + 1753, /* GL_SHADER_COMPILER */ + 1138, /* GL_MAX_VERTEX_UNIFORM_VECTORS */ + 1130, /* GL_MAX_VARYING_VECTORS */ + 1047, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */ + 1529, /* GL_QUERY_WAIT */ + 1523, /* GL_QUERY_NO_WAIT */ + 1519, /* GL_QUERY_BY_REGION_WAIT */ + 1517, /* GL_QUERY_BY_REGION_NO_WAIT */ + 2116, /* GL_TRANSFORM_FEEDBACK */ + 2125, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */ + 2119, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */ + 2117, /* GL_TRANSFORM_FEEDBACK_BINDING */ + 1513, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ + 545, /* GL_FIRST_VERTEX_CONVENTION */ + 804, /* GL_LAST_VERTEX_CONVENTION */ + 1487, /* GL_PROVOKING_VERTEX */ + 353, /* GL_COPY_READ_BUFFER */ + 354, /* GL_COPY_WRITE_BUFFER */ + 1556, /* GL_RED_SNORM */ + 1690, /* GL_RG_SNORM */ + 1689, /* GL_RGB_SNORM */ + 1682, /* GL_RGBA_SNORM */ + 1535, /* GL_R8_SNORM */ + 1603, /* GL_RG8_SNORM */ + 1642, /* GL_RGB8_SNORM */ + 1674, /* GL_RGBA8_SNORM */ + 1533, /* GL_R16_SNORM */ + 1602, /* GL_RG16_SNORM */ + 1618, /* GL_RGB16_SNORM */ + 1654, /* GL_RGBA16_SNORM */ + 1764, /* GL_SIGNED_NORMALIZED */ + 1444, /* GL_PRIMITIVE_RESTART */ + 1445, /* GL_PRIMITIVE_RESTART_INDEX */ + 1103, /* GL_MAX_SERVER_WAIT_TIMEOUT */ + 1258, /* GL_OBJECT_TYPE */ + 1877, /* GL_SYNC_CONDITION */ + 1882, /* GL_SYNC_STATUS */ + 1879, /* GL_SYNC_FLAGS */ + 1878, /* GL_SYNC_FENCE */ + 1881, /* GL_SYNC_GPU_COMMANDS_COMPLETE */ + 2164, /* GL_UNSIGNALED */ + 1763, /* GL_SIGNALED */ 54, /* GL_ALREADY_SIGNALED */ - 2100, /* GL_TIMEOUT_EXPIRED */ - 312, /* GL_CONDITION_SATISFIED */ - 2270, /* GL_WAIT_FAILED */ + 2111, /* GL_TIMEOUT_EXPIRED */ + 315, /* GL_CONDITION_SATISFIED */ + 2281, /* GL_WAIT_FAILED */ 126, /* GL_BUFFER_ACCESS_FLAGS */ 132, /* GL_BUFFER_MAP_LENGTH */ 133, /* GL_BUFFER_MAP_OFFSET */ - 1128, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */ - 1044, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */ - 1045, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */ - 1040, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */ - 326, /* GL_CONTEXT_PROFILE_MASK */ - 527, /* GL_EVAL_BIT */ - 1533, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ - 847, /* GL_LIST_BIT */ - 1976, /* GL_TEXTURE_BIT */ - 1726, /* GL_SCISSOR_BIT */ + 1133, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */ + 1048, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */ + 1049, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */ + 1044, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */ + 329, /* GL_CONTEXT_PROFILE_MASK */ + 530, /* GL_EVAL_BIT */ + 1538, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ + 851, /* GL_LIST_BIT */ + 1984, /* GL_TEXTURE_BIT */ + 1733, /* GL_SCISSOR_BIT */ 30, /* GL_ALL_ATTRIB_BITS */ - 1204, /* GL_MULTISAMPLE_BIT */ + 1209, /* GL_MULTISAMPLE_BIT */ 31, /* GL_ALL_CLIENT_ATTRIB_BITS */ }; diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c index 4b6e91c4f31..8a0ab961523 100644 --- a/src/mesa/main/extensions.c +++ b/src/mesa/main/extensions.c @@ -79,6 +79,7 @@ static const struct extension extension_table[] = { /* ARB Extensions */ { "GL_ARB_ES2_compatibility", o(ARB_ES2_compatibility), GL, 2009 }, { "GL_ARB_blend_func_extended", o(ARB_blend_func_extended), GL, 2009 }, + { "GL_ARB_color_buffer_float", o(ARB_color_buffer_float), GL, 2004 }, { "GL_ARB_copy_buffer", o(ARB_copy_buffer), GL, 2008 }, { "GL_ARB_depth_buffer_float", o(ARB_depth_buffer_float), GL, 2008 }, { "GL_ARB_depth_clamp", o(ARB_depth_clamp), GL, 2003 }, @@ -123,6 +124,7 @@ static const struct extension extension_table[] = { { "GL_ARB_texture_env_combine", o(ARB_texture_env_combine), GL, 2001 }, { "GL_ARB_texture_env_crossbar", o(ARB_texture_env_crossbar), GL, 2001 }, { "GL_ARB_texture_env_dot3", o(ARB_texture_env_dot3), GL, 2001 }, + { "GL_ARB_texture_float", o(ARB_texture_float), GL, 2004 }, { "GL_ARB_texture_mirrored_repeat", o(ARB_texture_mirrored_repeat), GL, 2001 }, { "GL_ARB_texture_multisample", o(ARB_texture_multisample), GL, 2009 }, { "GL_ARB_texture_non_power_of_two", o(ARB_texture_non_power_of_two), GL, 2003 }, @@ -202,6 +204,7 @@ static const struct extension extension_table[] = { { "GL_EXT_texture", o(EXT_texture), GL, 1996 }, { "GL_EXT_texture_rectangle", o(NV_texture_rectangle), GL, 2004 }, { "GL_EXT_texture_shared_exponent", o(EXT_texture_shared_exponent), GL, 2004 }, + { "GL_EXT_texture_snorm", o(EXT_texture_snorm), GL, 2009 }, { "GL_EXT_texture_sRGB", o(EXT_texture_sRGB), GL, 2004 }, { "GL_EXT_texture_sRGB_decode", o(EXT_texture_sRGB_decode), GL, 2006 }, { "GL_EXT_texture_swizzle", o(EXT_texture_swizzle), GL, 2008 }, @@ -260,11 +263,13 @@ 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_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 }, { "GL_ATI_texture_compression_3dc", o(ATI_texture_compression_3dc), GL, 2004 }, { "GL_ATI_texture_env_combine3", o(ATI_texture_env_combine3), GL, 2002 }, + { "GL_ATI_texture_float", o(ARB_texture_float), GL, 2002 }, { "GL_ATI_texture_mirror_once", o(ATI_texture_mirror_once), GL, 2006 }, { "GL_IBM_multimode_draw_arrays", o(IBM_multimode_draw_arrays), GL, 1998 }, { "GL_IBM_rasterpos_clip", o(IBM_rasterpos_clip), GL, 1996 }, @@ -273,9 +278,8 @@ static const struct extension extension_table[] = { { "GL_MESA_pack_invert", o(MESA_pack_invert), GL, 2002 }, { "GL_MESA_resize_buffers", o(MESA_resize_buffers), GL, 1999 }, { "GL_MESA_texture_array", o(MESA_texture_array), GL, 2007 }, - { "GL_MESA_texture_signed_rgba", o(MESA_texture_signed_rgba), GL, 2009 }, + { "GL_MESA_texture_signed_rgba", o(EXT_texture_snorm), GL, 2009 }, { "GL_MESA_window_pos", o(ARB_window_pos), GL, 2000 }, - { "GL_MESAX_texture_float", o(ARB_texture_float), GL, 2009 }, { "GL_MESA_ycbcr_texture", o(MESA_ycbcr_texture), GL, 2002 }, { "GL_NV_blend_square", o(NV_blend_square), GL, 1999 }, { "GL_NV_conditional_render", o(NV_conditional_render), GL, 2008 }, @@ -753,7 +757,7 @@ _mesa_extension_is_enabled( struct gl_context *ctx, const char *name ) static char * get_extension_override( struct gl_context *ctx ) { - const char *env_const= _mesa_getenv("MESA_EXTENSION_OVERRIDE"); + const char *env_const = _mesa_getenv("MESA_EXTENSION_OVERRIDE"); char *env; char *ext; char *extra_exts; @@ -794,7 +798,7 @@ get_extension_override( struct gl_context *ctx ) } /* Remove trailing space. */ - len = strlen(extra_exts); + len = strlen(extra_exts); if (extra_exts[len - 1] == ' ') extra_exts[len - 1] = '\0'; @@ -875,12 +879,24 @@ _mesa_make_extension_string(struct gl_context *ctx) GLboolean *base = (GLboolean *) &ctx->Extensions; const struct extension *i; unsigned j; - + unsigned maxYear = ~0; + + /* Check if the MESA_EXTENSION_MAX_YEAR env var is set */ + { + const char *env = getenv("MESA_EXTENSION_MAX_YEAR"); + if (env) { + maxYear = atoi(env); + _mesa_debug(ctx, "Note: limiting GL extensions to %u or earlier\n", + maxYear); + } + } /* Compute length of the extension string. */ count = 0; for (i = extension_table; i->name != 0; ++i) { - if (base[i->offset] && (i->api_set & (1 << ctx->API))) { + if (base[i->offset] && + i->year <= maxYear && + (i->api_set & (1 << ctx->API))) { length += strlen(i->name) + 1; /* +1 for space */ ++count; } @@ -894,7 +910,7 @@ _mesa_make_extension_string(struct gl_context *ctx) return NULL; } - extension_indices = malloc(count * sizeof extension_indices); + extension_indices = malloc(count * sizeof(extension_index)); if (extension_indices == NULL) { free(exts); free(extra_extensions); @@ -908,7 +924,9 @@ _mesa_make_extension_string(struct gl_context *ctx) */ j = 0; for (i = extension_table; i->name != 0; ++i) { - if (base[i->offset] && (i->api_set & (1 << ctx->API))) { + if (base[i->offset] && + i->year <= maxYear && + (i->api_set & (1 << ctx->API))) { extension_indices[j++] = i - extension_table; } } diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index ffdd0842562..1edb310ea13 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -335,7 +335,7 @@ _mesa_set_texture_attachment(struct gl_context *ctx, att->Zoffset = zoffset; att->Complete = GL_FALSE; - if (att->Texture->Image[att->CubeMapFace][att->TextureLevel]) { + if (_mesa_get_attachment_teximage(att)) { ctx->Driver.RenderTexture(ctx, fb, att); } @@ -716,8 +716,8 @@ _mesa_test_framebuffer_completeness(struct gl_context *ctx, /* get width, height, format of the renderbuffer/texture */ if (att->Type == GL_TEXTURE) { - const struct gl_texture_image *texImg - = att->Texture->Image[att->CubeMapFace][att->TextureLevel]; + const struct gl_texture_image *texImg = + _mesa_get_attachment_teximage(att); minWidth = MIN2(minWidth, texImg->Width); maxWidth = MAX2(maxWidth, texImg->Width); minHeight = MIN2(minHeight, texImg->Height); @@ -746,7 +746,7 @@ _mesa_test_framebuffer_completeness(struct gl_context *ctx, continue; } - if (numSamples < 0) { + if (att->Renderbuffer && numSamples < 0) { /* first buffer */ numSamples = att->Renderbuffer->NumSamples; } @@ -1081,7 +1081,6 @@ _mesa_base_fbo_format(struct gl_context *ctx, GLenum internalFormat) case GL_RGB10_A2: case GL_RGBA12: case GL_RGBA16: - case GL_RGBA16_SNORM: case GL_SRGB8_ALPHA8_EXT: return GL_RGBA; case GL_STENCIL_INDEX: @@ -1109,7 +1108,74 @@ _mesa_base_fbo_format(struct gl_context *ctx, GLenum internalFormat) case GL_RG8: case GL_RG16: return ctx->Extensions.ARB_texture_rg ? GL_RG : 0; - /* XXX add floating point and integer formats eventually */ + /* signed normalized texture formats */ + case GL_RED_SNORM: + case GL_R8_SNORM: + case GL_R16_SNORM: + return ctx->Extensions.EXT_texture_snorm ? GL_RED : 0; + case GL_RG_SNORM: + case GL_RG8_SNORM: + case GL_RG16_SNORM: + return ctx->Extensions.EXT_texture_snorm ? GL_RG : 0; + case GL_RGB_SNORM: + case GL_RGB8_SNORM: + case GL_RGB16_SNORM: + return ctx->Extensions.EXT_texture_snorm ? GL_RGB : 0; + case GL_RGBA_SNORM: + case GL_RGBA8_SNORM: + case GL_RGBA16_SNORM: + return ctx->Extensions.EXT_texture_snorm ? GL_RGBA : 0; + case GL_ALPHA_SNORM: + case GL_ALPHA8_SNORM: + case GL_ALPHA16_SNORM: + return ctx->Extensions.EXT_texture_snorm && + ctx->Extensions.ARB_framebuffer_object ? GL_ALPHA : 0; + case GL_LUMINANCE_SNORM: + case GL_LUMINANCE8_SNORM: + case GL_LUMINANCE16_SNORM: + return ctx->Extensions.EXT_texture_snorm && + ctx->Extensions.ARB_framebuffer_object ? GL_LUMINANCE : 0; + case GL_LUMINANCE_ALPHA_SNORM: + case GL_LUMINANCE8_ALPHA8_SNORM: + case GL_LUMINANCE16_ALPHA16_SNORM: + return ctx->Extensions.EXT_texture_snorm && + ctx->Extensions.ARB_framebuffer_object ? GL_LUMINANCE_ALPHA : 0; + case GL_INTENSITY_SNORM: + case GL_INTENSITY8_SNORM: + case GL_INTENSITY16_SNORM: + return ctx->Extensions.EXT_texture_snorm && + ctx->Extensions.ARB_framebuffer_object ? GL_INTENSITY : 0; + case GL_R16F: + case GL_R32F: + return ctx->Extensions.ARB_texture_rg && + ctx->Extensions.ARB_texture_float ? GL_RED : 0; + case GL_RG16F: + case GL_RG32F: + return ctx->Extensions.ARB_texture_rg && + ctx->Extensions.ARB_texture_float ? GL_RG : 0; + case GL_RGB16F: + case GL_RGB32F: + return ctx->Extensions.ARB_texture_float ? GL_RGB : 0; + case GL_RGBA16F: + case GL_RGBA32F: + return ctx->Extensions.ARB_texture_float ? GL_RGBA : 0; + case GL_ALPHA16F_ARB: + case GL_ALPHA32F_ARB: + return ctx->Extensions.ARB_texture_float && + ctx->Extensions.ARB_framebuffer_object ? GL_ALPHA : 0; + case GL_LUMINANCE16F_ARB: + case GL_LUMINANCE32F_ARB: + return ctx->Extensions.ARB_texture_float && + ctx->Extensions.ARB_framebuffer_object ? GL_LUMINANCE : 0; + case GL_LUMINANCE_ALPHA16F_ARB: + case GL_LUMINANCE_ALPHA32F_ARB: + return ctx->Extensions.ARB_texture_float && + ctx->Extensions.ARB_framebuffer_object ? GL_LUMINANCE_ALPHA : 0; + case GL_INTENSITY16F_ARB: + case GL_INTENSITY32F_ARB: + return ctx->Extensions.ARB_texture_float && + ctx->Extensions.ARB_framebuffer_object ? GL_INTENSITY : 0; + /* XXX add integer formats eventually */ default: return 0; } @@ -1460,9 +1526,7 @@ check_begin_texture_render(struct gl_context *ctx, struct gl_framebuffer *fb) for (i = 0; i < BUFFER_COUNT; i++) { struct gl_renderbuffer_attachment *att = fb->Attachment + i; - struct gl_texture_object *texObj = att->Texture; - if (texObj - && texObj->Image[att->CubeMapFace][att->TextureLevel]) { + if (att->Texture && _mesa_get_attachment_teximage(att)) { ctx->Driver.RenderTexture(ctx, fb, att); } } @@ -2321,7 +2385,7 @@ _mesa_BlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, if ((mask & (GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT)) && filter != GL_NEAREST) { _mesa_error(ctx, GL_INVALID_OPERATION, - "glBlitFramebufferEXT(depth/stencil requires GL_NEAREST filter"); + "glBlitFramebufferEXT(depth/stencil requires GL_NEAREST filter)"); return; } @@ -2342,7 +2406,7 @@ _mesa_BlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, _mesa_get_format_bits(readRb->Format, GL_STENCIL_BITS) != _mesa_get_format_bits(drawRb->Format, GL_STENCIL_BITS)) { _mesa_error(ctx, GL_INVALID_OPERATION, - "glBlitFramebufferEXT(stencil buffer size mismatch"); + "glBlitFramebufferEXT(stencil buffer size mismatch)"); return; } } @@ -2355,7 +2419,7 @@ _mesa_BlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, _mesa_get_format_bits(readRb->Format, GL_DEPTH_BITS) != _mesa_get_format_bits(drawRb->Format, GL_DEPTH_BITS)) { _mesa_error(ctx, GL_INVALID_OPERATION, - "glBlitFramebufferEXT(depth buffer size mismatch"); + "glBlitFramebufferEXT(depth buffer size mismatch)"); return; } } @@ -2374,7 +2438,7 @@ _mesa_BlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, if (srcX1 - srcX0 != dstX1 - dstX0 || srcY1 - srcY0 != dstY1 - dstY0) { _mesa_error(ctx, GL_INVALID_OPERATION, - "glBlitFramebufferEXT(bad src/dst multisample region sizes"); + "glBlitFramebufferEXT(bad src/dst multisample region sizes)"); return; } @@ -2383,7 +2447,7 @@ _mesa_BlitFramebufferEXT(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, colorDrawRb && colorReadRb->Format != colorDrawRb->Format) { _mesa_error(ctx, GL_INVALID_OPERATION, - "glBlitFramebufferEXT(bad src/dst multisample pixel formats"); + "glBlitFramebufferEXT(bad src/dst multisample pixel formats)"); return; } } diff --git a/src/mesa/main/fbobject.h b/src/mesa/main/fbobject.h index ba74a95b74c..7eb20050209 100644 --- a/src/mesa/main/fbobject.h +++ b/src/mesa/main/fbobject.h @@ -26,6 +26,7 @@ #ifndef FBOBJECT_H #define FBOBJECT_H +#include "compiler.h" #include "glheader.h" struct gl_context; @@ -48,6 +49,24 @@ _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); @@ -65,14 +84,16 @@ _mesa_set_renderbuffer_attachment(struct gl_context *ctx, struct gl_renderbuffer *rb); extern void -_mesa_framebuffer_renderbuffer(struct gl_context *ctx, struct gl_framebuffer *fb, +_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); +_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); diff --git a/src/mesa/main/ff_fragment_shader.cpp b/src/mesa/main/ff_fragment_shader.cpp index 9be531735ed..0b53c28f7ae 100644 --- a/src/mesa/main/ff_fragment_shader.cpp +++ b/src/mesa/main/ff_fragment_shader.cpp @@ -439,9 +439,10 @@ static GLuint make_state_key( struct gl_context *ctx, struct state_key *key ) key->unit[i].source_index = translate_tex_src_bit(texUnit->_ReallyEnabled); - key->unit[i].shadow = ((texObj->CompareMode == GL_COMPARE_R_TO_TEXTURE) && - ((format == GL_DEPTH_COMPONENT) || - (format == GL_DEPTH_STENCIL_EXT))); + key->unit[i].shadow = + ((texObj->Sampler.CompareMode == GL_COMPARE_R_TO_TEXTURE) && + ((format == GL_DEPTH_COMPONENT) || + (format == GL_DEPTH_STENCIL_EXT))); key->unit[i].NumArgsRGB = comb->_NumArgsRGB; key->unit[i].NumArgsA = comb->_NumArgsA; @@ -726,7 +727,7 @@ static struct ureg register_input( struct texenv_fragment_program *p, GLuint inp } else { GLuint idx = frag_to_vert_attrib( input ); - return register_param3( p, STATE_INTERNAL, STATE_CURRENT_ATTRIB, idx ); + return register_param3( p, STATE_INTERNAL, STATE_CURRENT_ATTRIB_MAYBE_VP_CLAMPED, idx ); } } @@ -1529,15 +1530,26 @@ create_new_program(struct gl_context *ctx, struct state_key *key, */ emit_arith( &p, OPCODE_END, undef, WRITEMASK_XYZW, 0, undef, undef, undef); - if (key->fog_enabled) { - /* Pull fog mode from struct gl_context, the value in the state key is - * a reduced value and not what is expected in FogOption - */ - p.program->FogOption = ctx->Fog.Mode; - p.program->Base.InputsRead |= FRAG_BIT_FOGC; + /* Allocate final instruction array. This has to be done before calling + * _mesa_append_fog_code because that function frees the Base.Instructions. + * At this point, Base.Instructions points to stack data, so it's a really + * bad idea to free it. + */ + p.program->Base.Instructions + = _mesa_alloc_instructions(p.program->Base.NumInstructions); + if (!p.program->Base.Instructions) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, + "generating tex env program"); + return; } - else { - p.program->FogOption = GL_NONE; + _mesa_copy_instructions(p.program->Base.Instructions, instBuffer, + p.program->Base.NumInstructions); + + /* Append fog code. This must be done before checking the program against + * the limits becuase it will potentially add some instructions. + */ + if (key->fog_enabled) { + _mesa_append_fog_code(ctx, p.program, ctx->Fog.Mode, GL_FALSE); } if (p.program->Base.NumTexIndirections > ctx->Const.FragmentProgram.MaxTexIndirections) @@ -1551,23 +1563,6 @@ create_new_program(struct gl_context *ctx, struct state_key *key, ASSERT(p.program->Base.NumInstructions <= MAX_INSTRUCTIONS); - /* Allocate final instruction array */ - p.program->Base.Instructions - = _mesa_alloc_instructions(p.program->Base.NumInstructions); - if (!p.program->Base.Instructions) { - _mesa_error(ctx, GL_OUT_OF_MEMORY, - "generating tex env program"); - return; - } - _mesa_copy_instructions(p.program->Base.Instructions, instBuffer, - p.program->Base.NumInstructions); - - if (key->num_draw_buffers && p.program->FogOption) { - _mesa_append_fog_code(ctx, p.program); - p.program->FogOption = GL_NONE; - } - - /* Notify driver the fragment program has (actually) changed. */ if (ctx->Driver.ProgramStringNotify) { diff --git a/src/mesa/main/fog.c b/src/mesa/main/fog.c index fd64bd1fd89..88aa31a7fcb 100644 --- a/src/mesa/main/fog.c +++ b/src/mesa/main/fog.c @@ -79,12 +79,17 @@ _mesa_Fogiv(GLenum pname, const GLint *params ) } -#define UPDATE_FOG_SCALE(ctx) do {\ - if (ctx->Fog.End == ctx->Fog.Start)\ - ctx->Fog._Scale = 1.0f;\ - else\ - ctx->Fog._Scale = 1.0f / (ctx->Fog.End - ctx->Fog.Start);\ - } while(0) +/** + * Update the gl_fog_attrib::_Scale field. + */ +static void +update_fog_scale(struct gl_context *ctx) +{ + if (ctx->Fog.End == ctx->Fog.Start) + ctx->Fog._Scale = 1.0f; + else + ctx->Fog._Scale = 1.0f / (ctx->Fog.End - ctx->Fog.Start); +} void GLAPIENTRY @@ -126,14 +131,14 @@ _mesa_Fogfv( GLenum pname, const GLfloat *params ) return; FLUSH_VERTICES(ctx, _NEW_FOG); ctx->Fog.Start = *params; - UPDATE_FOG_SCALE(ctx); + update_fog_scale(ctx); break; case GL_FOG_END: if (ctx->Fog.End == *params) return; FLUSH_VERTICES(ctx, _NEW_FOG); ctx->Fog.End = *params; - UPDATE_FOG_SCALE(ctx); + update_fog_scale(ctx); break; case GL_FOG_INDEX: if (ctx->Fog.Index == *params) @@ -145,6 +150,10 @@ _mesa_Fogfv( GLenum pname, const GLfloat *params ) if (TEST_EQ_4V(ctx->Fog.Color, params)) return; FLUSH_VERTICES(ctx, _NEW_FOG); + ctx->Fog.ColorUnclamped[0] = params[0]; + ctx->Fog.ColorUnclamped[1] = params[1]; + ctx->Fog.ColorUnclamped[2] = params[2]; + ctx->Fog.ColorUnclamped[3] = params[3]; ctx->Fog.Color[0] = CLAMP(params[0], 0.0F, 1.0F); ctx->Fog.Color[1] = CLAMP(params[1], 0.0F, 1.0F); ctx->Fog.Color[2] = CLAMP(params[2], 0.0F, 1.0F); @@ -184,6 +193,7 @@ void _mesa_init_fog( struct gl_context * ctx ) ctx->Fog.Enabled = GL_FALSE; ctx->Fog.Mode = GL_EXP; ASSIGN_4V( ctx->Fog.Color, 0.0, 0.0, 0.0, 0.0 ); + ASSIGN_4V( ctx->Fog.ColorUnclamped, 0.0, 0.0, 0.0, 0.0 ); ctx->Fog.Index = 0.0; ctx->Fog.Density = 1.0; ctx->Fog.Start = 0.0; diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c index db10c9b4c2e..4c31ccb763c 100644 --- a/src/mesa/main/formats.c +++ b/src/mesa/main/formats.c @@ -677,7 +677,7 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] = { MESA_FORMAT_LUMINANCE_FLOAT32, "MESA_FORMAT_LUMINANCE_FLOAT32", - GL_ALPHA, + GL_LUMINANCE, GL_FLOAT, 0, 0, 0, 0, 32, 0, 0, 0, 0, @@ -686,7 +686,7 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] = { MESA_FORMAT_LUMINANCE_FLOAT16, "MESA_FORMAT_LUMINANCE_FLOAT16", - GL_ALPHA, + GL_LUMINANCE, GL_FLOAT, 0, 0, 0, 0, 16, 0, 0, 0, 0, @@ -728,6 +728,42 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] = 0, 16, 0, 0, 0, 1, 1, 2 }, + { + MESA_FORMAT_R_FLOAT32, + "MESA_FORMAT_R_FLOAT32", + GL_RED, + GL_FLOAT, + 32, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 4 + }, + { + MESA_FORMAT_R_FLOAT16, + "MESA_FORMAT_R_FLOAT16", + GL_RED, + GL_FLOAT, + 16, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 2 + }, + { + MESA_FORMAT_RG_FLOAT32, + "MESA_FORMAT_RG_FLOAT32", + GL_RG, + GL_FLOAT, + 32, 32, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 8 + }, + { + MESA_FORMAT_RG_FLOAT16, + "MESA_FORMAT_RG_FLOAT16", + GL_RG, + GL_FLOAT, + 16, 16, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 4 + }, /* unnormalized signed int formats */ { @@ -809,8 +845,8 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] = 1, 1, 1 /* BlockWidth/Height,Bytes */ }, { - MESA_FORMAT_SIGNED_RG88, - "MESA_FORMAT_SIGNED_RG88", + MESA_FORMAT_SIGNED_RG88_REV, + "MESA_FORMAT_SIGNED_RG88_REV", GL_RG, GL_SIGNED_NORMALIZED, 8, 8, 0, 0, @@ -847,8 +883,8 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] = /* Signed 16 bits / channel */ { - MESA_FORMAT_SIGNED_R_16, - "MESA_FORMAT_SIGNED_R_16", + MESA_FORMAT_SIGNED_R16, + "MESA_FORMAT_SIGNED_R16", GL_RED, GL_SIGNED_NORMALIZED, 16, 0, 0, 0, @@ -856,8 +892,8 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] = 1, 1, 2 }, { - MESA_FORMAT_SIGNED_RG_16, - "MESA_FORMAT_SIGNED_RG_16", + MESA_FORMAT_SIGNED_GR1616, + "MESA_FORMAT_SIGNED_GR1616", GL_RG, GL_SIGNED_NORMALIZED, 16, 16, 0, 0, @@ -963,6 +999,80 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] = 4, 0, 0, 0, 0, 4, 4, 16 /* 16 bytes per 4x4 block */ }, + + /* Signed formats from EXT_texture_snorm that are not in GL3.1 */ + { + MESA_FORMAT_SIGNED_A8, + "MESA_FORMAT_SIGNED_A8", + GL_ALPHA, + GL_SIGNED_NORMALIZED, + 0, 0, 0, 8, + 0, 0, 0, 0, 0, + 1, 1, 1 + }, + { + MESA_FORMAT_SIGNED_L8, + "MESA_FORMAT_SIGNED_L8", + GL_LUMINANCE, + GL_SIGNED_NORMALIZED, + 0, 0, 0, 0, + 8, 0, 0, 0, 0, + 1, 1, 1 + }, + { + MESA_FORMAT_SIGNED_AL88, + "MESA_FORMAT_SIGNED_AL88", + GL_LUMINANCE_ALPHA, + GL_SIGNED_NORMALIZED, + 0, 0, 0, 8, + 8, 0, 0, 0, 0, + 1, 1, 2 + }, + { + MESA_FORMAT_SIGNED_I8, + "MESA_FORMAT_SIGNED_I8", + GL_INTENSITY, + GL_SIGNED_NORMALIZED, + 0, 0, 0, 0, + 0, 8, 0, 0, 0, + 1, 1, 1 + }, + { + MESA_FORMAT_SIGNED_A16, + "MESA_FORMAT_SIGNED_A16", + GL_ALPHA, + GL_SIGNED_NORMALIZED, + 0, 0, 0, 16, + 0, 0, 0, 0, 0, + 1, 1, 2 + }, + { + MESA_FORMAT_SIGNED_L16, + "MESA_FORMAT_SIGNED_L16", + GL_LUMINANCE, + GL_SIGNED_NORMALIZED, + 0, 0, 0, 0, + 16, 0, 0, 0, 0, + 1, 1, 2 + }, + { + MESA_FORMAT_SIGNED_AL1616, + "MESA_FORMAT_SIGNED_AL1616", + GL_LUMINANCE_ALPHA, + GL_SIGNED_NORMALIZED, + 0, 0, 0, 16, + 16, 0, 0, 0, 0, + 1, 1, 4 + }, + { + MESA_FORMAT_SIGNED_I16, + "MESA_FORMAT_SIGNED_I16", + GL_INTENSITY, + GL_SIGNED_NORMALIZED, + 0, 0, 0, 0, + 0, 16, 0, 0, 0, + 1, 1, 2 + } }; @@ -1530,10 +1640,14 @@ _mesa_format_to_type_and_comps(gl_format format, return; case MESA_FORMAT_SIGNED_R8: + case MESA_FORMAT_SIGNED_A8: + case MESA_FORMAT_SIGNED_L8: + case MESA_FORMAT_SIGNED_I8: *datatype = GL_BYTE; *comps = 1; return; - case MESA_FORMAT_SIGNED_RG88: + case MESA_FORMAT_SIGNED_RG88_REV: + case MESA_FORMAT_SIGNED_AL88: *datatype = GL_BYTE; *comps = 2; return; @@ -1549,11 +1663,15 @@ _mesa_format_to_type_and_comps(gl_format format, *comps = 4; return; - case MESA_FORMAT_SIGNED_R_16: + case MESA_FORMAT_SIGNED_R16: + case MESA_FORMAT_SIGNED_A16: + case MESA_FORMAT_SIGNED_L16: + case MESA_FORMAT_SIGNED_I16: *datatype = GL_SHORT; *comps = 1; return; - case MESA_FORMAT_SIGNED_RG_16: + case MESA_FORMAT_SIGNED_GR1616: + case MESA_FORMAT_SIGNED_AL1616: *datatype = GL_SHORT; *comps = 2; return; @@ -1632,22 +1750,26 @@ _mesa_format_to_type_and_comps(gl_format format, *comps = 3; return; case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32: + case MESA_FORMAT_RG_FLOAT32: *datatype = GL_FLOAT; *comps = 2; return; case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16: + case MESA_FORMAT_RG_FLOAT16: *datatype = GL_HALF_FLOAT_ARB; *comps = 2; return; case MESA_FORMAT_ALPHA_FLOAT32: case MESA_FORMAT_LUMINANCE_FLOAT32: case MESA_FORMAT_INTENSITY_FLOAT32: + case MESA_FORMAT_R_FLOAT32: *datatype = GL_FLOAT; *comps = 1; return; case MESA_FORMAT_ALPHA_FLOAT16: case MESA_FORMAT_LUMINANCE_FLOAT16: case MESA_FORMAT_INTENSITY_FLOAT16: + case MESA_FORMAT_R_FLOAT16: *datatype = GL_HALF_FLOAT_ARB; *comps = 1; return; diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h index 04a18930b4e..15ac62cfef9 100644 --- a/src/mesa/main/formats.h +++ b/src/mesa/main/formats.h @@ -142,6 +142,10 @@ typedef enum MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16, MESA_FORMAT_INTENSITY_FLOAT32, MESA_FORMAT_INTENSITY_FLOAT16, + MESA_FORMAT_R_FLOAT32, + MESA_FORMAT_R_FLOAT16, + MESA_FORMAT_RG_FLOAT32, + MESA_FORMAT_RG_FLOAT16, /*@}*/ /** @@ -168,12 +172,12 @@ typedef enum /*@{*/ MESA_FORMAT_DUDV8, /* DUDU DUDU DVDV DVDV */ MESA_FORMAT_SIGNED_R8, /* RRRR RRRR */ - MESA_FORMAT_SIGNED_RG88, /* RRRR RRRR GGGG GGGG */ + MESA_FORMAT_SIGNED_RG88_REV, /* GGGG GGGG RRRR RRRR */ MESA_FORMAT_SIGNED_RGBX8888, /* RRRR RRRR GGGG GGGG BBBB BBBB xxxx xxxx */ MESA_FORMAT_SIGNED_RGBA8888, /* RRRR RRRR GGGG GGGG BBBB BBBB AAAA AAAA */ MESA_FORMAT_SIGNED_RGBA8888_REV,/*AAAA AAAA BBBB BBBB GGGG GGGG RRRR RRRR */ - MESA_FORMAT_SIGNED_R_16, /* ushort[0]=R */ - MESA_FORMAT_SIGNED_RG_16, /* ushort[0]=R, ushort[1]=G */ + MESA_FORMAT_SIGNED_R16, /* RRRR RRRR RRRR RRRR */ + MESA_FORMAT_SIGNED_GR1616, /* GGGG GGGG GGGG GGGG RRRR RRRR RRRR RRRR */ MESA_FORMAT_SIGNED_RGB_16, /* ushort[0]=R, ushort[1]=G, ushort[2]=B */ MESA_FORMAT_SIGNED_RGBA_16, /* ... */ MESA_FORMAT_RGBA_16, /* ... */ @@ -193,6 +197,15 @@ typedef enum MESA_FORMAT_SIGNED_LA_LATC2, /*@}*/ + MESA_FORMAT_SIGNED_A8, /* AAAA AAAA */ + MESA_FORMAT_SIGNED_L8, /* LLLL LLLL */ + MESA_FORMAT_SIGNED_AL88, /* AAAA AAAA LLLL LLLL */ + MESA_FORMAT_SIGNED_I8, /* IIII IIII */ + MESA_FORMAT_SIGNED_A16, /* AAAA AAAA AAAA AAAA */ + MESA_FORMAT_SIGNED_L16, /* LLLL LLLL LLLL LLLL */ + MESA_FORMAT_SIGNED_AL1616, /* AAAA AAAA AAAA AAAA LLLL LLLL LLLL LLLL */ + MESA_FORMAT_SIGNED_I16, /* IIII IIII IIII IIII */ + MESA_FORMAT_COUNT } gl_format; diff --git a/src/mesa/main/framebuffer.c b/src/mesa/main/framebuffer.c index 430e013d017..66c9bd91096 100644 --- a/src/mesa/main/framebuffer.c +++ b/src/mesa/main/framebuffer.c @@ -551,7 +551,6 @@ _mesa_update_framebuffer_visual(struct gl_context *ctx, fb->Visual.alphaBits = _mesa_get_format_bits(fmt, GL_ALPHA_BITS); fb->Visual.rgbBits = fb->Visual.redBits + fb->Visual.greenBits + fb->Visual.blueBits; - fb->Visual.floatMode = GL_FALSE; fb->Visual.samples = rb->NumSamples; if (_mesa_get_format_color_encoding(fmt) == GL_SRGB) fb->Visual.sRGBCapable = ctx->Const.sRGBCapable; @@ -560,6 +559,19 @@ _mesa_update_framebuffer_visual(struct gl_context *ctx, } } + fb->Visual.floatMode = GL_FALSE; + for (i = 0; i < BUFFER_COUNT; i++) { + if (fb->Attachment[i].Renderbuffer) { + const struct gl_renderbuffer *rb = fb->Attachment[i].Renderbuffer; + const gl_format fmt = rb->Format; + + if (_mesa_get_format_datatype(fmt) == GL_FLOAT) { + fb->Visual.floatMode = GL_TRUE; + break; + } + } + } + if (fb->Attachment[BUFFER_DEPTH].Renderbuffer) { const struct gl_renderbuffer *rb = fb->Attachment[BUFFER_DEPTH].Renderbuffer; @@ -1061,12 +1073,12 @@ _mesa_print_framebuffer(const struct gl_framebuffer *fb) for (i = 0; i < BUFFER_COUNT; i++) { const struct gl_renderbuffer_attachment *att = &fb->Attachment[i]; if (att->Type == GL_TEXTURE) { - const struct gl_texture_image *texImage; + const struct gl_texture_image *texImage = + _mesa_get_attachment_teximage_const(att); fprintf(stderr, " %2d: Texture %u, level %u, face %u, slice %u, complete %d\n", i, att->Texture->Name, att->TextureLevel, att->CubeMapFace, att->Zoffset, att->Complete); - texImage = att->Texture->Image[att->CubeMapFace][att->TextureLevel]; fprintf(stderr, " Size: %u x %u x %u Format %s\n", texImage->Width, texImage->Height, texImage->Depth, _mesa_get_format_name(texImage->TexFormat)); diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c index 7d1a5cf6002..e18803280c1 100644 --- a/src/mesa/main/get.c +++ b/src/mesa/main/get.c @@ -131,6 +131,7 @@ enum value_extra { EXTRA_VERSION_32, EXTRA_VERSION_ES2, EXTRA_NEW_BUFFERS, + EXTRA_NEW_FRAG_CLAMP, EXTRA_VALID_DRAW_BUFFER, EXTRA_VALID_TEXTURE_UNIT, EXTRA_FLUSH_CURRENT, @@ -223,6 +224,11 @@ static const int extra_new_buffers[] = { EXTRA_END }; +static const int extra_new_frag_clamp[] = { + EXTRA_NEW_FRAG_CLAMP, + EXTRA_END +}; + static const int extra_valid_draw_buffer[] = { EXTRA_VALID_DRAW_BUFFER, EXTRA_END @@ -272,6 +278,11 @@ static const int extra_EXT_gpu_shader4[] = { EXTRA_END }; +static const int extra_ARB_sampler_objects[] = { + EXT(ARB_sampler_objects), + EXTRA_END +}; + EXTRA_EXT(ARB_ES2_compatibility); EXTRA_EXT(ARB_multitexture); @@ -317,6 +328,7 @@ EXTRA_EXT(ARB_vertex_buffer_object); EXTRA_EXT(ARB_geometry_shader4); EXTRA_EXT(ARB_copy_buffer); EXTRA_EXT(EXT_framebuffer_sRGB); +EXTRA_EXT(ARB_texture_buffer_object); static const int extra_ARB_vertex_program_ARB_fragment_program_NV_vertex_program[] = { @@ -374,7 +386,7 @@ static const struct value_desc values[] = { { GL_BLEND, CONTEXT_BIT0(Color.BlendEnabled), NO_EXTRA }, { GL_BLEND_SRC, CONTEXT_ENUM(Color.Blend[0].SrcRGB), NO_EXTRA }, { GL_BLUE_BITS, BUFFER_INT(Visual.blueBits), extra_new_buffers }, - { GL_COLOR_CLEAR_VALUE, CONTEXT_FIELD(Color.ClearColor[0], TYPE_FLOATN_4), NO_EXTRA }, + { GL_COLOR_CLEAR_VALUE, LOC_CUSTOM, TYPE_FLOATN_4, 0, extra_new_frag_clamp }, { GL_COLOR_WRITEMASK, LOC_CUSTOM, TYPE_INT_4, 0, NO_EXTRA }, { GL_CULL_FACE, CONTEXT_BOOL(Polygon.CullFlag), NO_EXTRA }, { GL_CULL_FACE_MODE, CONTEXT_ENUM(Polygon.CullFaceMode), NO_EXTRA }, @@ -511,7 +523,7 @@ static const struct value_desc values[] = { { GL_LIGHT_MODEL_TWO_SIDE, CONTEXT_BOOL(Light.Model.TwoSide), NO_EXTRA }, { GL_ALPHA_TEST, CONTEXT_BOOL(Color.AlphaEnabled), NO_EXTRA }, { GL_ALPHA_TEST_FUNC, CONTEXT_ENUM(Color.AlphaFunc), NO_EXTRA }, - { GL_ALPHA_TEST_REF, CONTEXT_FIELD(Color.AlphaRef, TYPE_FLOATN), NO_EXTRA }, + { GL_ALPHA_TEST_REF, LOC_CUSTOM, TYPE_FLOATN, 0, extra_new_frag_clamp }, { GL_BLEND_DST, CONTEXT_ENUM(Color.Blend[0].DstRGB), NO_EXTRA }, { GL_CLIP_PLANE0, CONTEXT_BIT0(Transform.ClipPlanesEnabled), NO_EXTRA }, { GL_CLIP_PLANE1, CONTEXT_BIT1(Transform.ClipPlanesEnabled), NO_EXTRA }, @@ -530,7 +542,7 @@ static const struct value_desc values[] = { extra_flush_current_valid_texture_unit }, { GL_DISTANCE_ATTENUATION_EXT, CONTEXT_FLOAT3(Point.Params[0]), NO_EXTRA }, { GL_FOG, CONTEXT_BOOL(Fog.Enabled), NO_EXTRA }, - { GL_FOG_COLOR, CONTEXT_FIELD(Fog.Color[0], TYPE_FLOATN_4), NO_EXTRA }, + { GL_FOG_COLOR, LOC_CUSTOM, TYPE_FLOATN_4, 0, extra_new_frag_clamp }, { GL_FOG_DENSITY, CONTEXT_FLOAT(Fog.Density), NO_EXTRA }, { GL_FOG_END, CONTEXT_FLOAT(Fog.End), NO_EXTRA }, { GL_FOG_HINT, CONTEXT_ENUM(Hint.Fog), NO_EXTRA }, @@ -572,7 +584,7 @@ static const struct value_desc values[] = { { GL_VERTEX_ARRAY_SIZE, ARRAY_INT(Vertex.Size), NO_EXTRA }, { GL_VERTEX_ARRAY_TYPE, ARRAY_ENUM(Vertex.Type), NO_EXTRA }, { GL_VERTEX_ARRAY_STRIDE, ARRAY_INT(Vertex.Stride), NO_EXTRA }, - { GL_NORMAL_ARRAY, ARRAY_ENUM(Normal.Enabled), NO_EXTRA }, + { GL_NORMAL_ARRAY, ARRAY_BOOL(Normal.Enabled), NO_EXTRA }, { GL_NORMAL_ARRAY_TYPE, ARRAY_ENUM(Normal.Type), NO_EXTRA }, { GL_NORMAL_ARRAY_STRIDE, ARRAY_INT(Normal.Stride), NO_EXTRA }, { GL_COLOR_ARRAY, ARRAY_BOOL(Color.Enabled), NO_EXTRA }, @@ -582,11 +594,11 @@ static const struct value_desc values[] = { { GL_TEXTURE_COORD_ARRAY, LOC_CUSTOM, TYPE_BOOLEAN, offsetof(struct gl_client_array, Enabled), NO_EXTRA }, { GL_TEXTURE_COORD_ARRAY_SIZE, - LOC_CUSTOM, TYPE_BOOLEAN, offsetof(struct gl_client_array, Size), NO_EXTRA }, + LOC_CUSTOM, TYPE_INT, offsetof(struct gl_client_array, Size), NO_EXTRA }, { GL_TEXTURE_COORD_ARRAY_TYPE, - LOC_CUSTOM, TYPE_BOOLEAN, offsetof(struct gl_client_array, Type), NO_EXTRA }, + LOC_CUSTOM, TYPE_ENUM, offsetof(struct gl_client_array, Type), NO_EXTRA }, { GL_TEXTURE_COORD_ARRAY_STRIDE, - LOC_CUSTOM, TYPE_BOOLEAN, offsetof(struct gl_client_array, Stride), NO_EXTRA }, + LOC_CUSTOM, TYPE_INT, offsetof(struct gl_client_array, Stride), NO_EXTRA }, /* GL_ARB_ES2_compatibility */ { GL_SHADER_COMPILER, CONST(1), extra_ARB_ES2_compatibility }, @@ -674,7 +686,7 @@ static const struct value_desc values[] = { /* GL_ARB_draw_buffers */ { GL_MAX_DRAW_BUFFERS_ARB, CONTEXT_INT(Const.MaxDrawBuffers), NO_EXTRA }, - { GL_BLEND_COLOR_EXT, CONTEXT_FIELD(Color.BlendColor[0], TYPE_FLOATN_4), NO_EXTRA }, + { 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 */ CONTEXT_INT(Const.MaxTextureImageUnits), @@ -1219,6 +1231,9 @@ static const struct value_desc values[] = { CONTEXT_INT(Const.MaxVertexVaryingComponents), extra_ARB_geometry_shader4 }, + /* GL_ARB_color_buffer_float */ + { GL_RGBA_FLOAT_MODE_ARB, BUFFER_FIELD(Visual.floatMode, TYPE_BOOLEAN), 0 }, + /* GL_EXT_gpu_shader4 / GL 3.0 */ { GL_MIN_PROGRAM_TEXEL_OFFSET, CONTEXT_INT(Const.MinProgramTexelOffset), @@ -1227,6 +1242,22 @@ static const struct value_desc values[] = { CONTEXT_INT(Const.MaxProgramTexelOffset), extra_EXT_gpu_shader4 }, + /* GL_ARB_texture_buffer_object */ + { GL_MAX_TEXTURE_BUFFER_SIZE_ARB, CONTEXT_INT(Const.MaxTextureBufferSize), + extra_ARB_texture_buffer_object }, + { GL_TEXTURE_BINDING_BUFFER_ARB, LOC_CUSTOM, TYPE_INT, 0, + extra_ARB_texture_buffer_object }, + { GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB, LOC_CUSTOM, TYPE_INT, + TEXTURE_BUFFER_INDEX, extra_ARB_texture_buffer_object }, + { GL_TEXTURE_BUFFER_FORMAT_ARB, LOC_CUSTOM, TYPE_INT, 0, + extra_ARB_texture_buffer_object }, + { GL_TEXTURE_BUFFER_ARB, LOC_CUSTOM, TYPE_INT, 0, + extra_ARB_texture_buffer_object }, + + /* GL_ARB_sampler_objects / GL 3.3 */ + { GL_SAMPLER_BINDING, + LOC_CUSTOM, TYPE_INT, GL_SAMPLER_BINDING, extra_ARB_sampler_objects }, + /* GL 3.0 */ { GL_NUM_EXTENSIONS, LOC_CUSTOM, TYPE_INT, 0, extra_version_30 }, { GL_MAJOR_VERSION, CONTEXT_INT(VersionMajor), extra_version_30 }, @@ -1367,7 +1398,7 @@ void _mesa_init_get_hash(struct gl_context *ctx) static void find_custom_value(struct gl_context *ctx, const struct value_desc *d, union value *v) { - struct gl_buffer_object *buffer_obj; + struct gl_buffer_object **buffer_obj; struct gl_client_array *array; GLuint unit, *p; @@ -1569,9 +1600,9 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB: case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB: case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB: - buffer_obj = (struct gl_buffer_object *) + buffer_obj = (struct gl_buffer_object **) ((char *) ctx->Array.ArrayObj + d->offset); - v->value_int = buffer_obj->Name; + v->value_int = (*buffer_obj)->Name; break; case GL_ARRAY_BUFFER_BINDING_ARB: v->value_int = ctx->Array.ArrayBufferObj->Name; @@ -1633,6 +1664,30 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu v->value_int = ctx->Array.ArrayObj->PointSize.BufferObj->Name; break; + case GL_FOG_COLOR: + if(ctx->Color._ClampFragmentColor) + COPY_4FV(v->value_float_4, ctx->Fog.Color); + else + COPY_4FV(v->value_float_4, ctx->Fog.ColorUnclamped); + break; + case GL_COLOR_CLEAR_VALUE: + if(ctx->Color._ClampFragmentColor) + COPY_4FV(v->value_float_4, ctx->Color.ClearColor); + else + COPY_4FV(v->value_float_4, ctx->Color.ClearColorUnclamped); + break; + case GL_BLEND_COLOR_EXT: + if(ctx->Color._ClampFragmentColor) + COPY_4FV(v->value_float_4, ctx->Color.BlendColor); + else + COPY_4FV(v->value_float_4, ctx->Color.BlendColorUnclamped); + break; + case GL_ALPHA_TEST_REF: + if(ctx->Color._ClampFragmentColor) + v->value_float = ctx->Color.AlphaRef; + else + v->value_float = ctx->Color.AlphaRefUnclamped; + break; case GL_MAX_VERTEX_UNIFORM_VECTORS: v->value_int = ctx->Const.VertexProgram.MaxUniformComponents / 4; break; @@ -1640,6 +1695,37 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu case GL_MAX_FRAGMENT_UNIFORM_VECTORS: v->value_int = ctx->Const.FragmentProgram.MaxUniformComponents / 4; break; + + /* GL_ARB_texture_buffer_object */ + case GL_TEXTURE_BUFFER_ARB: + v->value_int = ctx->Texture.BufferObject->Name; + break; + case GL_TEXTURE_BINDING_BUFFER_ARB: + unit = ctx->Texture.CurrentUnit; + v->value_int = + ctx->Texture.Unit[unit].CurrentTex[TEXTURE_BUFFER_INDEX]->Name; + break; + case GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB: + { + struct gl_buffer_object *buf = + ctx->Texture.Unit[ctx->Texture.CurrentUnit] + .CurrentTex[TEXTURE_BUFFER_INDEX]->BufferObject; + v->value_int = buf ? buf->Name : 0; + } + break; + case GL_TEXTURE_BUFFER_FORMAT_ARB: + v->value_int = ctx->Texture.Unit[ctx->Texture.CurrentUnit] + .CurrentTex[TEXTURE_BUFFER_INDEX]->BufferObjectFormat; + break; + + /* GL_ARB_sampler_objects */ + case GL_SAMPLER_BINDING: + { + struct gl_sampler_object *samp = + ctx->Texture.Unit[ctx->Texture.CurrentUnit].Sampler; + v->value_int = samp ? samp->Name : 0; + } + break; } } @@ -1687,6 +1773,10 @@ check_extra(struct gl_context *ctx, const char *func, const struct value_desc *d enabled++; } break; + case EXTRA_NEW_FRAG_CLAMP: + if (ctx->NewState & (_NEW_BUFFERS | _NEW_FRAG_CLAMP)) + _mesa_update_state(ctx); + break; case EXTRA_VERSION_ES2: if (ctx->API == API_OPENGLES2) { total++; diff --git a/src/mesa/main/glapidispatch.h b/src/mesa/main/glapidispatch.h index cbfe6400e42..c1cc6cb1254 100644 --- a/src/mesa/main/glapidispatch.h +++ b/src/mesa/main/glapidispatch.h @@ -59,7 +59,7 @@ } while(0) /* total number of offsets below */ -#define _gloffset_COUNT 892 +#define _gloffset_COUNT 908 #define _gloffset_NewList 0 #define _gloffset_EndList 1 @@ -636,330 +636,346 @@ #define _gloffset_GetActiveAttribARB 569 #define _gloffset_GetAttribLocationARB 570 #define _gloffset_DrawBuffersARB 571 -#define _gloffset_DrawArraysInstancedARB 572 -#define _gloffset_DrawElementsInstancedARB 573 -#define _gloffset_RenderbufferStorageMultisample 574 -#define _gloffset_FramebufferTextureARB 575 -#define _gloffset_FramebufferTextureFaceARB 576 -#define _gloffset_ProgramParameteriARB 577 -#define _gloffset_VertexAttribDivisorARB 578 -#define _gloffset_FlushMappedBufferRange 579 -#define _gloffset_MapBufferRange 580 -#define _gloffset_BindVertexArray 581 -#define _gloffset_GenVertexArrays 582 -#define _gloffset_CopyBufferSubData 583 -#define _gloffset_ClientWaitSync 584 -#define _gloffset_DeleteSync 585 -#define _gloffset_FenceSync 586 -#define _gloffset_GetInteger64v 587 -#define _gloffset_GetSynciv 588 -#define _gloffset_IsSync 589 -#define _gloffset_WaitSync 590 -#define _gloffset_DrawElementsBaseVertex 591 -#define _gloffset_DrawRangeElementsBaseVertex 592 -#define _gloffset_MultiDrawElementsBaseVertex 593 -#define _gloffset_BlendEquationSeparateiARB 594 -#define _gloffset_BlendEquationiARB 595 -#define _gloffset_BlendFuncSeparateiARB 596 -#define _gloffset_BlendFunciARB 597 -#define _gloffset_BindTransformFeedback 598 -#define _gloffset_DeleteTransformFeedbacks 599 -#define _gloffset_DrawTransformFeedback 600 -#define _gloffset_GenTransformFeedbacks 601 -#define _gloffset_IsTransformFeedback 602 -#define _gloffset_PauseTransformFeedback 603 -#define _gloffset_ResumeTransformFeedback 604 -#define _gloffset_ClearDepthf 605 -#define _gloffset_DepthRangef 606 -#define _gloffset_GetShaderPrecisionFormat 607 -#define _gloffset_ReleaseShaderCompiler 608 -#define _gloffset_ShaderBinary 609 -#define _gloffset_PolygonOffsetEXT 610 -#define _gloffset_GetPixelTexGenParameterfvSGIS 611 -#define _gloffset_GetPixelTexGenParameterivSGIS 612 -#define _gloffset_PixelTexGenParameterfSGIS 613 -#define _gloffset_PixelTexGenParameterfvSGIS 614 -#define _gloffset_PixelTexGenParameteriSGIS 615 -#define _gloffset_PixelTexGenParameterivSGIS 616 -#define _gloffset_SampleMaskSGIS 617 -#define _gloffset_SamplePatternSGIS 618 -#define _gloffset_ColorPointerEXT 619 -#define _gloffset_EdgeFlagPointerEXT 620 -#define _gloffset_IndexPointerEXT 621 -#define _gloffset_NormalPointerEXT 622 -#define _gloffset_TexCoordPointerEXT 623 -#define _gloffset_VertexPointerEXT 624 -#define _gloffset_PointParameterfEXT 625 -#define _gloffset_PointParameterfvEXT 626 -#define _gloffset_LockArraysEXT 627 -#define _gloffset_UnlockArraysEXT 628 -#define _gloffset_SecondaryColor3bEXT 629 -#define _gloffset_SecondaryColor3bvEXT 630 -#define _gloffset_SecondaryColor3dEXT 631 -#define _gloffset_SecondaryColor3dvEXT 632 -#define _gloffset_SecondaryColor3fEXT 633 -#define _gloffset_SecondaryColor3fvEXT 634 -#define _gloffset_SecondaryColor3iEXT 635 -#define _gloffset_SecondaryColor3ivEXT 636 -#define _gloffset_SecondaryColor3sEXT 637 -#define _gloffset_SecondaryColor3svEXT 638 -#define _gloffset_SecondaryColor3ubEXT 639 -#define _gloffset_SecondaryColor3ubvEXT 640 -#define _gloffset_SecondaryColor3uiEXT 641 -#define _gloffset_SecondaryColor3uivEXT 642 -#define _gloffset_SecondaryColor3usEXT 643 -#define _gloffset_SecondaryColor3usvEXT 644 -#define _gloffset_SecondaryColorPointerEXT 645 -#define _gloffset_MultiDrawArraysEXT 646 -#define _gloffset_MultiDrawElementsEXT 647 -#define _gloffset_FogCoordPointerEXT 648 -#define _gloffset_FogCoorddEXT 649 -#define _gloffset_FogCoorddvEXT 650 -#define _gloffset_FogCoordfEXT 651 -#define _gloffset_FogCoordfvEXT 652 -#define _gloffset_PixelTexGenSGIX 653 -#define _gloffset_BlendFuncSeparateEXT 654 -#define _gloffset_FlushVertexArrayRangeNV 655 -#define _gloffset_VertexArrayRangeNV 656 -#define _gloffset_CombinerInputNV 657 -#define _gloffset_CombinerOutputNV 658 -#define _gloffset_CombinerParameterfNV 659 -#define _gloffset_CombinerParameterfvNV 660 -#define _gloffset_CombinerParameteriNV 661 -#define _gloffset_CombinerParameterivNV 662 -#define _gloffset_FinalCombinerInputNV 663 -#define _gloffset_GetCombinerInputParameterfvNV 664 -#define _gloffset_GetCombinerInputParameterivNV 665 -#define _gloffset_GetCombinerOutputParameterfvNV 666 -#define _gloffset_GetCombinerOutputParameterivNV 667 -#define _gloffset_GetFinalCombinerInputParameterfvNV 668 -#define _gloffset_GetFinalCombinerInputParameterivNV 669 -#define _gloffset_ResizeBuffersMESA 670 -#define _gloffset_WindowPos2dMESA 671 -#define _gloffset_WindowPos2dvMESA 672 -#define _gloffset_WindowPos2fMESA 673 -#define _gloffset_WindowPos2fvMESA 674 -#define _gloffset_WindowPos2iMESA 675 -#define _gloffset_WindowPos2ivMESA 676 -#define _gloffset_WindowPos2sMESA 677 -#define _gloffset_WindowPos2svMESA 678 -#define _gloffset_WindowPos3dMESA 679 -#define _gloffset_WindowPos3dvMESA 680 -#define _gloffset_WindowPos3fMESA 681 -#define _gloffset_WindowPos3fvMESA 682 -#define _gloffset_WindowPos3iMESA 683 -#define _gloffset_WindowPos3ivMESA 684 -#define _gloffset_WindowPos3sMESA 685 -#define _gloffset_WindowPos3svMESA 686 -#define _gloffset_WindowPos4dMESA 687 -#define _gloffset_WindowPos4dvMESA 688 -#define _gloffset_WindowPos4fMESA 689 -#define _gloffset_WindowPos4fvMESA 690 -#define _gloffset_WindowPos4iMESA 691 -#define _gloffset_WindowPos4ivMESA 692 -#define _gloffset_WindowPos4sMESA 693 -#define _gloffset_WindowPos4svMESA 694 -#define _gloffset_MultiModeDrawArraysIBM 695 -#define _gloffset_MultiModeDrawElementsIBM 696 -#define _gloffset_DeleteFencesNV 697 -#define _gloffset_FinishFenceNV 698 -#define _gloffset_GenFencesNV 699 -#define _gloffset_GetFenceivNV 700 -#define _gloffset_IsFenceNV 701 -#define _gloffset_SetFenceNV 702 -#define _gloffset_TestFenceNV 703 -#define _gloffset_AreProgramsResidentNV 704 -#define _gloffset_BindProgramNV 705 -#define _gloffset_DeleteProgramsNV 706 -#define _gloffset_ExecuteProgramNV 707 -#define _gloffset_GenProgramsNV 708 -#define _gloffset_GetProgramParameterdvNV 709 -#define _gloffset_GetProgramParameterfvNV 710 -#define _gloffset_GetProgramStringNV 711 -#define _gloffset_GetProgramivNV 712 -#define _gloffset_GetTrackMatrixivNV 713 -#define _gloffset_GetVertexAttribPointervNV 714 -#define _gloffset_GetVertexAttribdvNV 715 -#define _gloffset_GetVertexAttribfvNV 716 -#define _gloffset_GetVertexAttribivNV 717 -#define _gloffset_IsProgramNV 718 -#define _gloffset_LoadProgramNV 719 -#define _gloffset_ProgramParameters4dvNV 720 -#define _gloffset_ProgramParameters4fvNV 721 -#define _gloffset_RequestResidentProgramsNV 722 -#define _gloffset_TrackMatrixNV 723 -#define _gloffset_VertexAttrib1dNV 724 -#define _gloffset_VertexAttrib1dvNV 725 -#define _gloffset_VertexAttrib1fNV 726 -#define _gloffset_VertexAttrib1fvNV 727 -#define _gloffset_VertexAttrib1sNV 728 -#define _gloffset_VertexAttrib1svNV 729 -#define _gloffset_VertexAttrib2dNV 730 -#define _gloffset_VertexAttrib2dvNV 731 -#define _gloffset_VertexAttrib2fNV 732 -#define _gloffset_VertexAttrib2fvNV 733 -#define _gloffset_VertexAttrib2sNV 734 -#define _gloffset_VertexAttrib2svNV 735 -#define _gloffset_VertexAttrib3dNV 736 -#define _gloffset_VertexAttrib3dvNV 737 -#define _gloffset_VertexAttrib3fNV 738 -#define _gloffset_VertexAttrib3fvNV 739 -#define _gloffset_VertexAttrib3sNV 740 -#define _gloffset_VertexAttrib3svNV 741 -#define _gloffset_VertexAttrib4dNV 742 -#define _gloffset_VertexAttrib4dvNV 743 -#define _gloffset_VertexAttrib4fNV 744 -#define _gloffset_VertexAttrib4fvNV 745 -#define _gloffset_VertexAttrib4sNV 746 -#define _gloffset_VertexAttrib4svNV 747 -#define _gloffset_VertexAttrib4ubNV 748 -#define _gloffset_VertexAttrib4ubvNV 749 -#define _gloffset_VertexAttribPointerNV 750 -#define _gloffset_VertexAttribs1dvNV 751 -#define _gloffset_VertexAttribs1fvNV 752 -#define _gloffset_VertexAttribs1svNV 753 -#define _gloffset_VertexAttribs2dvNV 754 -#define _gloffset_VertexAttribs2fvNV 755 -#define _gloffset_VertexAttribs2svNV 756 -#define _gloffset_VertexAttribs3dvNV 757 -#define _gloffset_VertexAttribs3fvNV 758 -#define _gloffset_VertexAttribs3svNV 759 -#define _gloffset_VertexAttribs4dvNV 760 -#define _gloffset_VertexAttribs4fvNV 761 -#define _gloffset_VertexAttribs4svNV 762 -#define _gloffset_VertexAttribs4ubvNV 763 -#define _gloffset_GetTexBumpParameterfvATI 764 -#define _gloffset_GetTexBumpParameterivATI 765 -#define _gloffset_TexBumpParameterfvATI 766 -#define _gloffset_TexBumpParameterivATI 767 -#define _gloffset_AlphaFragmentOp1ATI 768 -#define _gloffset_AlphaFragmentOp2ATI 769 -#define _gloffset_AlphaFragmentOp3ATI 770 -#define _gloffset_BeginFragmentShaderATI 771 -#define _gloffset_BindFragmentShaderATI 772 -#define _gloffset_ColorFragmentOp1ATI 773 -#define _gloffset_ColorFragmentOp2ATI 774 -#define _gloffset_ColorFragmentOp3ATI 775 -#define _gloffset_DeleteFragmentShaderATI 776 -#define _gloffset_EndFragmentShaderATI 777 -#define _gloffset_GenFragmentShadersATI 778 -#define _gloffset_PassTexCoordATI 779 -#define _gloffset_SampleMapATI 780 -#define _gloffset_SetFragmentShaderConstantATI 781 -#define _gloffset_PointParameteriNV 782 -#define _gloffset_PointParameterivNV 783 -#define _gloffset_ActiveStencilFaceEXT 784 -#define _gloffset_BindVertexArrayAPPLE 785 -#define _gloffset_DeleteVertexArraysAPPLE 786 -#define _gloffset_GenVertexArraysAPPLE 787 -#define _gloffset_IsVertexArrayAPPLE 788 -#define _gloffset_GetProgramNamedParameterdvNV 789 -#define _gloffset_GetProgramNamedParameterfvNV 790 -#define _gloffset_ProgramNamedParameter4dNV 791 -#define _gloffset_ProgramNamedParameter4dvNV 792 -#define _gloffset_ProgramNamedParameter4fNV 793 -#define _gloffset_ProgramNamedParameter4fvNV 794 -#define _gloffset_PrimitiveRestartIndexNV 795 -#define _gloffset_PrimitiveRestartNV 796 -#define _gloffset_DepthBoundsEXT 797 -#define _gloffset_BlendEquationSeparateEXT 798 -#define _gloffset_BindFramebufferEXT 799 -#define _gloffset_BindRenderbufferEXT 800 -#define _gloffset_CheckFramebufferStatusEXT 801 -#define _gloffset_DeleteFramebuffersEXT 802 -#define _gloffset_DeleteRenderbuffersEXT 803 -#define _gloffset_FramebufferRenderbufferEXT 804 -#define _gloffset_FramebufferTexture1DEXT 805 -#define _gloffset_FramebufferTexture2DEXT 806 -#define _gloffset_FramebufferTexture3DEXT 807 -#define _gloffset_GenFramebuffersEXT 808 -#define _gloffset_GenRenderbuffersEXT 809 -#define _gloffset_GenerateMipmapEXT 810 -#define _gloffset_GetFramebufferAttachmentParameterivEXT 811 -#define _gloffset_GetRenderbufferParameterivEXT 812 -#define _gloffset_IsFramebufferEXT 813 -#define _gloffset_IsRenderbufferEXT 814 -#define _gloffset_RenderbufferStorageEXT 815 -#define _gloffset_BlitFramebufferEXT 816 -#define _gloffset_BufferParameteriAPPLE 817 -#define _gloffset_FlushMappedBufferRangeAPPLE 818 -#define _gloffset_BindFragDataLocationEXT 819 -#define _gloffset_GetFragDataLocationEXT 820 -#define _gloffset_GetUniformuivEXT 821 -#define _gloffset_GetVertexAttribIivEXT 822 -#define _gloffset_GetVertexAttribIuivEXT 823 -#define _gloffset_Uniform1uiEXT 824 -#define _gloffset_Uniform1uivEXT 825 -#define _gloffset_Uniform2uiEXT 826 -#define _gloffset_Uniform2uivEXT 827 -#define _gloffset_Uniform3uiEXT 828 -#define _gloffset_Uniform3uivEXT 829 -#define _gloffset_Uniform4uiEXT 830 -#define _gloffset_Uniform4uivEXT 831 -#define _gloffset_VertexAttribI1iEXT 832 -#define _gloffset_VertexAttribI1ivEXT 833 -#define _gloffset_VertexAttribI1uiEXT 834 -#define _gloffset_VertexAttribI1uivEXT 835 -#define _gloffset_VertexAttribI2iEXT 836 -#define _gloffset_VertexAttribI2ivEXT 837 -#define _gloffset_VertexAttribI2uiEXT 838 -#define _gloffset_VertexAttribI2uivEXT 839 -#define _gloffset_VertexAttribI3iEXT 840 -#define _gloffset_VertexAttribI3ivEXT 841 -#define _gloffset_VertexAttribI3uiEXT 842 -#define _gloffset_VertexAttribI3uivEXT 843 -#define _gloffset_VertexAttribI4bvEXT 844 -#define _gloffset_VertexAttribI4iEXT 845 -#define _gloffset_VertexAttribI4ivEXT 846 -#define _gloffset_VertexAttribI4svEXT 847 -#define _gloffset_VertexAttribI4ubvEXT 848 -#define _gloffset_VertexAttribI4uiEXT 849 -#define _gloffset_VertexAttribI4uivEXT 850 -#define _gloffset_VertexAttribI4usvEXT 851 -#define _gloffset_VertexAttribIPointerEXT 852 -#define _gloffset_FramebufferTextureLayerEXT 853 -#define _gloffset_ColorMaskIndexedEXT 854 -#define _gloffset_DisableIndexedEXT 855 -#define _gloffset_EnableIndexedEXT 856 -#define _gloffset_GetBooleanIndexedvEXT 857 -#define _gloffset_GetIntegerIndexedvEXT 858 -#define _gloffset_IsEnabledIndexedEXT 859 -#define _gloffset_ClearColorIiEXT 860 -#define _gloffset_ClearColorIuiEXT 861 -#define _gloffset_GetTexParameterIivEXT 862 -#define _gloffset_GetTexParameterIuivEXT 863 -#define _gloffset_TexParameterIivEXT 864 -#define _gloffset_TexParameterIuivEXT 865 -#define _gloffset_BeginConditionalRenderNV 866 -#define _gloffset_EndConditionalRenderNV 867 -#define _gloffset_BeginTransformFeedbackEXT 868 -#define _gloffset_BindBufferBaseEXT 869 -#define _gloffset_BindBufferOffsetEXT 870 -#define _gloffset_BindBufferRangeEXT 871 -#define _gloffset_EndTransformFeedbackEXT 872 -#define _gloffset_GetTransformFeedbackVaryingEXT 873 -#define _gloffset_TransformFeedbackVaryingsEXT 874 -#define _gloffset_ProvokingVertexEXT 875 -#define _gloffset_GetTexParameterPointervAPPLE 876 -#define _gloffset_TextureRangeAPPLE 877 -#define _gloffset_GetObjectParameterivAPPLE 878 -#define _gloffset_ObjectPurgeableAPPLE 879 -#define _gloffset_ObjectUnpurgeableAPPLE 880 -#define _gloffset_ActiveProgramEXT 881 -#define _gloffset_CreateShaderProgramEXT 882 -#define _gloffset_UseShaderProgramEXT 883 -#define _gloffset_TextureBarrierNV 884 -#define _gloffset_StencilFuncSeparateATI 885 -#define _gloffset_ProgramEnvParameters4fvEXT 886 -#define _gloffset_ProgramLocalParameters4fvEXT 887 -#define _gloffset_GetQueryObjecti64vEXT 888 -#define _gloffset_GetQueryObjectui64vEXT 889 -#define _gloffset_EGLImageTargetRenderbufferStorageOES 890 -#define _gloffset_EGLImageTargetTexture2DOES 891 +#define _gloffset_ClampColorARB 572 +#define _gloffset_DrawArraysInstancedARB 573 +#define _gloffset_DrawElementsInstancedARB 574 +#define _gloffset_RenderbufferStorageMultisample 575 +#define _gloffset_FramebufferTextureARB 576 +#define _gloffset_FramebufferTextureFaceARB 577 +#define _gloffset_ProgramParameteriARB 578 +#define _gloffset_VertexAttribDivisorARB 579 +#define _gloffset_FlushMappedBufferRange 580 +#define _gloffset_MapBufferRange 581 +#define _gloffset_TexBufferARB 582 +#define _gloffset_BindVertexArray 583 +#define _gloffset_GenVertexArrays 584 +#define _gloffset_CopyBufferSubData 585 +#define _gloffset_ClientWaitSync 586 +#define _gloffset_DeleteSync 587 +#define _gloffset_FenceSync 588 +#define _gloffset_GetInteger64v 589 +#define _gloffset_GetSynciv 590 +#define _gloffset_IsSync 591 +#define _gloffset_WaitSync 592 +#define _gloffset_DrawElementsBaseVertex 593 +#define _gloffset_DrawRangeElementsBaseVertex 594 +#define _gloffset_MultiDrawElementsBaseVertex 595 +#define _gloffset_BlendEquationSeparateiARB 596 +#define _gloffset_BlendEquationiARB 597 +#define _gloffset_BlendFuncSeparateiARB 598 +#define _gloffset_BlendFunciARB 599 +#define _gloffset_BindSampler 600 +#define _gloffset_DeleteSamplers 601 +#define _gloffset_GenSamplers 602 +#define _gloffset_GetSamplerParameterIiv 603 +#define _gloffset_GetSamplerParameterIuiv 604 +#define _gloffset_GetSamplerParameterfv 605 +#define _gloffset_GetSamplerParameteriv 606 +#define _gloffset_IsSampler 607 +#define _gloffset_SamplerParameterIiv 608 +#define _gloffset_SamplerParameterIuiv 609 +#define _gloffset_SamplerParameterf 610 +#define _gloffset_SamplerParameterfv 611 +#define _gloffset_SamplerParameteri 612 +#define _gloffset_SamplerParameteriv 613 +#define _gloffset_BindTransformFeedback 614 +#define _gloffset_DeleteTransformFeedbacks 615 +#define _gloffset_DrawTransformFeedback 616 +#define _gloffset_GenTransformFeedbacks 617 +#define _gloffset_IsTransformFeedback 618 +#define _gloffset_PauseTransformFeedback 619 +#define _gloffset_ResumeTransformFeedback 620 +#define _gloffset_ClearDepthf 621 +#define _gloffset_DepthRangef 622 +#define _gloffset_GetShaderPrecisionFormat 623 +#define _gloffset_ReleaseShaderCompiler 624 +#define _gloffset_ShaderBinary 625 +#define _gloffset_PolygonOffsetEXT 626 +#define _gloffset_GetPixelTexGenParameterfvSGIS 627 +#define _gloffset_GetPixelTexGenParameterivSGIS 628 +#define _gloffset_PixelTexGenParameterfSGIS 629 +#define _gloffset_PixelTexGenParameterfvSGIS 630 +#define _gloffset_PixelTexGenParameteriSGIS 631 +#define _gloffset_PixelTexGenParameterivSGIS 632 +#define _gloffset_SampleMaskSGIS 633 +#define _gloffset_SamplePatternSGIS 634 +#define _gloffset_ColorPointerEXT 635 +#define _gloffset_EdgeFlagPointerEXT 636 +#define _gloffset_IndexPointerEXT 637 +#define _gloffset_NormalPointerEXT 638 +#define _gloffset_TexCoordPointerEXT 639 +#define _gloffset_VertexPointerEXT 640 +#define _gloffset_PointParameterfEXT 641 +#define _gloffset_PointParameterfvEXT 642 +#define _gloffset_LockArraysEXT 643 +#define _gloffset_UnlockArraysEXT 644 +#define _gloffset_SecondaryColor3bEXT 645 +#define _gloffset_SecondaryColor3bvEXT 646 +#define _gloffset_SecondaryColor3dEXT 647 +#define _gloffset_SecondaryColor3dvEXT 648 +#define _gloffset_SecondaryColor3fEXT 649 +#define _gloffset_SecondaryColor3fvEXT 650 +#define _gloffset_SecondaryColor3iEXT 651 +#define _gloffset_SecondaryColor3ivEXT 652 +#define _gloffset_SecondaryColor3sEXT 653 +#define _gloffset_SecondaryColor3svEXT 654 +#define _gloffset_SecondaryColor3ubEXT 655 +#define _gloffset_SecondaryColor3ubvEXT 656 +#define _gloffset_SecondaryColor3uiEXT 657 +#define _gloffset_SecondaryColor3uivEXT 658 +#define _gloffset_SecondaryColor3usEXT 659 +#define _gloffset_SecondaryColor3usvEXT 660 +#define _gloffset_SecondaryColorPointerEXT 661 +#define _gloffset_MultiDrawArraysEXT 662 +#define _gloffset_MultiDrawElementsEXT 663 +#define _gloffset_FogCoordPointerEXT 664 +#define _gloffset_FogCoorddEXT 665 +#define _gloffset_FogCoorddvEXT 666 +#define _gloffset_FogCoordfEXT 667 +#define _gloffset_FogCoordfvEXT 668 +#define _gloffset_PixelTexGenSGIX 669 +#define _gloffset_BlendFuncSeparateEXT 670 +#define _gloffset_FlushVertexArrayRangeNV 671 +#define _gloffset_VertexArrayRangeNV 672 +#define _gloffset_CombinerInputNV 673 +#define _gloffset_CombinerOutputNV 674 +#define _gloffset_CombinerParameterfNV 675 +#define _gloffset_CombinerParameterfvNV 676 +#define _gloffset_CombinerParameteriNV 677 +#define _gloffset_CombinerParameterivNV 678 +#define _gloffset_FinalCombinerInputNV 679 +#define _gloffset_GetCombinerInputParameterfvNV 680 +#define _gloffset_GetCombinerInputParameterivNV 681 +#define _gloffset_GetCombinerOutputParameterfvNV 682 +#define _gloffset_GetCombinerOutputParameterivNV 683 +#define _gloffset_GetFinalCombinerInputParameterfvNV 684 +#define _gloffset_GetFinalCombinerInputParameterivNV 685 +#define _gloffset_ResizeBuffersMESA 686 +#define _gloffset_WindowPos2dMESA 687 +#define _gloffset_WindowPos2dvMESA 688 +#define _gloffset_WindowPos2fMESA 689 +#define _gloffset_WindowPos2fvMESA 690 +#define _gloffset_WindowPos2iMESA 691 +#define _gloffset_WindowPos2ivMESA 692 +#define _gloffset_WindowPos2sMESA 693 +#define _gloffset_WindowPos2svMESA 694 +#define _gloffset_WindowPos3dMESA 695 +#define _gloffset_WindowPos3dvMESA 696 +#define _gloffset_WindowPos3fMESA 697 +#define _gloffset_WindowPos3fvMESA 698 +#define _gloffset_WindowPos3iMESA 699 +#define _gloffset_WindowPos3ivMESA 700 +#define _gloffset_WindowPos3sMESA 701 +#define _gloffset_WindowPos3svMESA 702 +#define _gloffset_WindowPos4dMESA 703 +#define _gloffset_WindowPos4dvMESA 704 +#define _gloffset_WindowPos4fMESA 705 +#define _gloffset_WindowPos4fvMESA 706 +#define _gloffset_WindowPos4iMESA 707 +#define _gloffset_WindowPos4ivMESA 708 +#define _gloffset_WindowPos4sMESA 709 +#define _gloffset_WindowPos4svMESA 710 +#define _gloffset_MultiModeDrawArraysIBM 711 +#define _gloffset_MultiModeDrawElementsIBM 712 +#define _gloffset_DeleteFencesNV 713 +#define _gloffset_FinishFenceNV 714 +#define _gloffset_GenFencesNV 715 +#define _gloffset_GetFenceivNV 716 +#define _gloffset_IsFenceNV 717 +#define _gloffset_SetFenceNV 718 +#define _gloffset_TestFenceNV 719 +#define _gloffset_AreProgramsResidentNV 720 +#define _gloffset_BindProgramNV 721 +#define _gloffset_DeleteProgramsNV 722 +#define _gloffset_ExecuteProgramNV 723 +#define _gloffset_GenProgramsNV 724 +#define _gloffset_GetProgramParameterdvNV 725 +#define _gloffset_GetProgramParameterfvNV 726 +#define _gloffset_GetProgramStringNV 727 +#define _gloffset_GetProgramivNV 728 +#define _gloffset_GetTrackMatrixivNV 729 +#define _gloffset_GetVertexAttribPointervNV 730 +#define _gloffset_GetVertexAttribdvNV 731 +#define _gloffset_GetVertexAttribfvNV 732 +#define _gloffset_GetVertexAttribivNV 733 +#define _gloffset_IsProgramNV 734 +#define _gloffset_LoadProgramNV 735 +#define _gloffset_ProgramParameters4dvNV 736 +#define _gloffset_ProgramParameters4fvNV 737 +#define _gloffset_RequestResidentProgramsNV 738 +#define _gloffset_TrackMatrixNV 739 +#define _gloffset_VertexAttrib1dNV 740 +#define _gloffset_VertexAttrib1dvNV 741 +#define _gloffset_VertexAttrib1fNV 742 +#define _gloffset_VertexAttrib1fvNV 743 +#define _gloffset_VertexAttrib1sNV 744 +#define _gloffset_VertexAttrib1svNV 745 +#define _gloffset_VertexAttrib2dNV 746 +#define _gloffset_VertexAttrib2dvNV 747 +#define _gloffset_VertexAttrib2fNV 748 +#define _gloffset_VertexAttrib2fvNV 749 +#define _gloffset_VertexAttrib2sNV 750 +#define _gloffset_VertexAttrib2svNV 751 +#define _gloffset_VertexAttrib3dNV 752 +#define _gloffset_VertexAttrib3dvNV 753 +#define _gloffset_VertexAttrib3fNV 754 +#define _gloffset_VertexAttrib3fvNV 755 +#define _gloffset_VertexAttrib3sNV 756 +#define _gloffset_VertexAttrib3svNV 757 +#define _gloffset_VertexAttrib4dNV 758 +#define _gloffset_VertexAttrib4dvNV 759 +#define _gloffset_VertexAttrib4fNV 760 +#define _gloffset_VertexAttrib4fvNV 761 +#define _gloffset_VertexAttrib4sNV 762 +#define _gloffset_VertexAttrib4svNV 763 +#define _gloffset_VertexAttrib4ubNV 764 +#define _gloffset_VertexAttrib4ubvNV 765 +#define _gloffset_VertexAttribPointerNV 766 +#define _gloffset_VertexAttribs1dvNV 767 +#define _gloffset_VertexAttribs1fvNV 768 +#define _gloffset_VertexAttribs1svNV 769 +#define _gloffset_VertexAttribs2dvNV 770 +#define _gloffset_VertexAttribs2fvNV 771 +#define _gloffset_VertexAttribs2svNV 772 +#define _gloffset_VertexAttribs3dvNV 773 +#define _gloffset_VertexAttribs3fvNV 774 +#define _gloffset_VertexAttribs3svNV 775 +#define _gloffset_VertexAttribs4dvNV 776 +#define _gloffset_VertexAttribs4fvNV 777 +#define _gloffset_VertexAttribs4svNV 778 +#define _gloffset_VertexAttribs4ubvNV 779 +#define _gloffset_GetTexBumpParameterfvATI 780 +#define _gloffset_GetTexBumpParameterivATI 781 +#define _gloffset_TexBumpParameterfvATI 782 +#define _gloffset_TexBumpParameterivATI 783 +#define _gloffset_AlphaFragmentOp1ATI 784 +#define _gloffset_AlphaFragmentOp2ATI 785 +#define _gloffset_AlphaFragmentOp3ATI 786 +#define _gloffset_BeginFragmentShaderATI 787 +#define _gloffset_BindFragmentShaderATI 788 +#define _gloffset_ColorFragmentOp1ATI 789 +#define _gloffset_ColorFragmentOp2ATI 790 +#define _gloffset_ColorFragmentOp3ATI 791 +#define _gloffset_DeleteFragmentShaderATI 792 +#define _gloffset_EndFragmentShaderATI 793 +#define _gloffset_GenFragmentShadersATI 794 +#define _gloffset_PassTexCoordATI 795 +#define _gloffset_SampleMapATI 796 +#define _gloffset_SetFragmentShaderConstantATI 797 +#define _gloffset_PointParameteriNV 798 +#define _gloffset_PointParameterivNV 799 +#define _gloffset_ActiveStencilFaceEXT 800 +#define _gloffset_BindVertexArrayAPPLE 801 +#define _gloffset_DeleteVertexArraysAPPLE 802 +#define _gloffset_GenVertexArraysAPPLE 803 +#define _gloffset_IsVertexArrayAPPLE 804 +#define _gloffset_GetProgramNamedParameterdvNV 805 +#define _gloffset_GetProgramNamedParameterfvNV 806 +#define _gloffset_ProgramNamedParameter4dNV 807 +#define _gloffset_ProgramNamedParameter4dvNV 808 +#define _gloffset_ProgramNamedParameter4fNV 809 +#define _gloffset_ProgramNamedParameter4fvNV 810 +#define _gloffset_PrimitiveRestartIndexNV 811 +#define _gloffset_PrimitiveRestartNV 812 +#define _gloffset_DepthBoundsEXT 813 +#define _gloffset_BlendEquationSeparateEXT 814 +#define _gloffset_BindFramebufferEXT 815 +#define _gloffset_BindRenderbufferEXT 816 +#define _gloffset_CheckFramebufferStatusEXT 817 +#define _gloffset_DeleteFramebuffersEXT 818 +#define _gloffset_DeleteRenderbuffersEXT 819 +#define _gloffset_FramebufferRenderbufferEXT 820 +#define _gloffset_FramebufferTexture1DEXT 821 +#define _gloffset_FramebufferTexture2DEXT 822 +#define _gloffset_FramebufferTexture3DEXT 823 +#define _gloffset_GenFramebuffersEXT 824 +#define _gloffset_GenRenderbuffersEXT 825 +#define _gloffset_GenerateMipmapEXT 826 +#define _gloffset_GetFramebufferAttachmentParameterivEXT 827 +#define _gloffset_GetRenderbufferParameterivEXT 828 +#define _gloffset_IsFramebufferEXT 829 +#define _gloffset_IsRenderbufferEXT 830 +#define _gloffset_RenderbufferStorageEXT 831 +#define _gloffset_BlitFramebufferEXT 832 +#define _gloffset_BufferParameteriAPPLE 833 +#define _gloffset_FlushMappedBufferRangeAPPLE 834 +#define _gloffset_BindFragDataLocationEXT 835 +#define _gloffset_GetFragDataLocationEXT 836 +#define _gloffset_GetUniformuivEXT 837 +#define _gloffset_GetVertexAttribIivEXT 838 +#define _gloffset_GetVertexAttribIuivEXT 839 +#define _gloffset_Uniform1uiEXT 840 +#define _gloffset_Uniform1uivEXT 841 +#define _gloffset_Uniform2uiEXT 842 +#define _gloffset_Uniform2uivEXT 843 +#define _gloffset_Uniform3uiEXT 844 +#define _gloffset_Uniform3uivEXT 845 +#define _gloffset_Uniform4uiEXT 846 +#define _gloffset_Uniform4uivEXT 847 +#define _gloffset_VertexAttribI1iEXT 848 +#define _gloffset_VertexAttribI1ivEXT 849 +#define _gloffset_VertexAttribI1uiEXT 850 +#define _gloffset_VertexAttribI1uivEXT 851 +#define _gloffset_VertexAttribI2iEXT 852 +#define _gloffset_VertexAttribI2ivEXT 853 +#define _gloffset_VertexAttribI2uiEXT 854 +#define _gloffset_VertexAttribI2uivEXT 855 +#define _gloffset_VertexAttribI3iEXT 856 +#define _gloffset_VertexAttribI3ivEXT 857 +#define _gloffset_VertexAttribI3uiEXT 858 +#define _gloffset_VertexAttribI3uivEXT 859 +#define _gloffset_VertexAttribI4bvEXT 860 +#define _gloffset_VertexAttribI4iEXT 861 +#define _gloffset_VertexAttribI4ivEXT 862 +#define _gloffset_VertexAttribI4svEXT 863 +#define _gloffset_VertexAttribI4ubvEXT 864 +#define _gloffset_VertexAttribI4uiEXT 865 +#define _gloffset_VertexAttribI4uivEXT 866 +#define _gloffset_VertexAttribI4usvEXT 867 +#define _gloffset_VertexAttribIPointerEXT 868 +#define _gloffset_FramebufferTextureLayerEXT 869 +#define _gloffset_ColorMaskIndexedEXT 870 +#define _gloffset_DisableIndexedEXT 871 +#define _gloffset_EnableIndexedEXT 872 +#define _gloffset_GetBooleanIndexedvEXT 873 +#define _gloffset_GetIntegerIndexedvEXT 874 +#define _gloffset_IsEnabledIndexedEXT 875 +#define _gloffset_ClearColorIiEXT 876 +#define _gloffset_ClearColorIuiEXT 877 +#define _gloffset_GetTexParameterIivEXT 878 +#define _gloffset_GetTexParameterIuivEXT 879 +#define _gloffset_TexParameterIivEXT 880 +#define _gloffset_TexParameterIuivEXT 881 +#define _gloffset_BeginConditionalRenderNV 882 +#define _gloffset_EndConditionalRenderNV 883 +#define _gloffset_BeginTransformFeedbackEXT 884 +#define _gloffset_BindBufferBaseEXT 885 +#define _gloffset_BindBufferOffsetEXT 886 +#define _gloffset_BindBufferRangeEXT 887 +#define _gloffset_EndTransformFeedbackEXT 888 +#define _gloffset_GetTransformFeedbackVaryingEXT 889 +#define _gloffset_TransformFeedbackVaryingsEXT 890 +#define _gloffset_ProvokingVertexEXT 891 +#define _gloffset_GetTexParameterPointervAPPLE 892 +#define _gloffset_TextureRangeAPPLE 893 +#define _gloffset_GetObjectParameterivAPPLE 894 +#define _gloffset_ObjectPurgeableAPPLE 895 +#define _gloffset_ObjectUnpurgeableAPPLE 896 +#define _gloffset_ActiveProgramEXT 897 +#define _gloffset_CreateShaderProgramEXT 898 +#define _gloffset_UseShaderProgramEXT 899 +#define _gloffset_TextureBarrierNV 900 +#define _gloffset_StencilFuncSeparateATI 901 +#define _gloffset_ProgramEnvParameters4fvEXT 902 +#define _gloffset_ProgramLocalParameters4fvEXT 903 +#define _gloffset_GetQueryObjecti64vEXT 904 +#define _gloffset_GetQueryObjectui64vEXT 905 +#define _gloffset_EGLImageTargetRenderbufferStorageOES 906 +#define _gloffset_EGLImageTargetTexture2DOES 907 #else /* !_GLAPI_USE_REMAP_TABLE */ -#define driDispatchRemapTable_size 484 +#define driDispatchRemapTable_size 500 extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define AttachShader_remap_index 0 @@ -1126,326 +1142,342 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define GetActiveAttribARB_remap_index 161 #define GetAttribLocationARB_remap_index 162 #define DrawBuffersARB_remap_index 163 -#define DrawArraysInstancedARB_remap_index 164 -#define DrawElementsInstancedARB_remap_index 165 -#define RenderbufferStorageMultisample_remap_index 166 -#define FramebufferTextureARB_remap_index 167 -#define FramebufferTextureFaceARB_remap_index 168 -#define ProgramParameteriARB_remap_index 169 -#define VertexAttribDivisorARB_remap_index 170 -#define FlushMappedBufferRange_remap_index 171 -#define MapBufferRange_remap_index 172 -#define BindVertexArray_remap_index 173 -#define GenVertexArrays_remap_index 174 -#define CopyBufferSubData_remap_index 175 -#define ClientWaitSync_remap_index 176 -#define DeleteSync_remap_index 177 -#define FenceSync_remap_index 178 -#define GetInteger64v_remap_index 179 -#define GetSynciv_remap_index 180 -#define IsSync_remap_index 181 -#define WaitSync_remap_index 182 -#define DrawElementsBaseVertex_remap_index 183 -#define DrawRangeElementsBaseVertex_remap_index 184 -#define MultiDrawElementsBaseVertex_remap_index 185 -#define BlendEquationSeparateiARB_remap_index 186 -#define BlendEquationiARB_remap_index 187 -#define BlendFuncSeparateiARB_remap_index 188 -#define BlendFunciARB_remap_index 189 -#define BindTransformFeedback_remap_index 190 -#define DeleteTransformFeedbacks_remap_index 191 -#define DrawTransformFeedback_remap_index 192 -#define GenTransformFeedbacks_remap_index 193 -#define IsTransformFeedback_remap_index 194 -#define PauseTransformFeedback_remap_index 195 -#define ResumeTransformFeedback_remap_index 196 -#define ClearDepthf_remap_index 197 -#define DepthRangef_remap_index 198 -#define GetShaderPrecisionFormat_remap_index 199 -#define ReleaseShaderCompiler_remap_index 200 -#define ShaderBinary_remap_index 201 -#define PolygonOffsetEXT_remap_index 202 -#define GetPixelTexGenParameterfvSGIS_remap_index 203 -#define GetPixelTexGenParameterivSGIS_remap_index 204 -#define PixelTexGenParameterfSGIS_remap_index 205 -#define PixelTexGenParameterfvSGIS_remap_index 206 -#define PixelTexGenParameteriSGIS_remap_index 207 -#define PixelTexGenParameterivSGIS_remap_index 208 -#define SampleMaskSGIS_remap_index 209 -#define SamplePatternSGIS_remap_index 210 -#define ColorPointerEXT_remap_index 211 -#define EdgeFlagPointerEXT_remap_index 212 -#define IndexPointerEXT_remap_index 213 -#define NormalPointerEXT_remap_index 214 -#define TexCoordPointerEXT_remap_index 215 -#define VertexPointerEXT_remap_index 216 -#define PointParameterfEXT_remap_index 217 -#define PointParameterfvEXT_remap_index 218 -#define LockArraysEXT_remap_index 219 -#define UnlockArraysEXT_remap_index 220 -#define SecondaryColor3bEXT_remap_index 221 -#define SecondaryColor3bvEXT_remap_index 222 -#define SecondaryColor3dEXT_remap_index 223 -#define SecondaryColor3dvEXT_remap_index 224 -#define SecondaryColor3fEXT_remap_index 225 -#define SecondaryColor3fvEXT_remap_index 226 -#define SecondaryColor3iEXT_remap_index 227 -#define SecondaryColor3ivEXT_remap_index 228 -#define SecondaryColor3sEXT_remap_index 229 -#define SecondaryColor3svEXT_remap_index 230 -#define SecondaryColor3ubEXT_remap_index 231 -#define SecondaryColor3ubvEXT_remap_index 232 -#define SecondaryColor3uiEXT_remap_index 233 -#define SecondaryColor3uivEXT_remap_index 234 -#define SecondaryColor3usEXT_remap_index 235 -#define SecondaryColor3usvEXT_remap_index 236 -#define SecondaryColorPointerEXT_remap_index 237 -#define MultiDrawArraysEXT_remap_index 238 -#define MultiDrawElementsEXT_remap_index 239 -#define FogCoordPointerEXT_remap_index 240 -#define FogCoorddEXT_remap_index 241 -#define FogCoorddvEXT_remap_index 242 -#define FogCoordfEXT_remap_index 243 -#define FogCoordfvEXT_remap_index 244 -#define PixelTexGenSGIX_remap_index 245 -#define BlendFuncSeparateEXT_remap_index 246 -#define FlushVertexArrayRangeNV_remap_index 247 -#define VertexArrayRangeNV_remap_index 248 -#define CombinerInputNV_remap_index 249 -#define CombinerOutputNV_remap_index 250 -#define CombinerParameterfNV_remap_index 251 -#define CombinerParameterfvNV_remap_index 252 -#define CombinerParameteriNV_remap_index 253 -#define CombinerParameterivNV_remap_index 254 -#define FinalCombinerInputNV_remap_index 255 -#define GetCombinerInputParameterfvNV_remap_index 256 -#define GetCombinerInputParameterivNV_remap_index 257 -#define GetCombinerOutputParameterfvNV_remap_index 258 -#define GetCombinerOutputParameterivNV_remap_index 259 -#define GetFinalCombinerInputParameterfvNV_remap_index 260 -#define GetFinalCombinerInputParameterivNV_remap_index 261 -#define ResizeBuffersMESA_remap_index 262 -#define WindowPos2dMESA_remap_index 263 -#define WindowPos2dvMESA_remap_index 264 -#define WindowPos2fMESA_remap_index 265 -#define WindowPos2fvMESA_remap_index 266 -#define WindowPos2iMESA_remap_index 267 -#define WindowPos2ivMESA_remap_index 268 -#define WindowPos2sMESA_remap_index 269 -#define WindowPos2svMESA_remap_index 270 -#define WindowPos3dMESA_remap_index 271 -#define WindowPos3dvMESA_remap_index 272 -#define WindowPos3fMESA_remap_index 273 -#define WindowPos3fvMESA_remap_index 274 -#define WindowPos3iMESA_remap_index 275 -#define WindowPos3ivMESA_remap_index 276 -#define WindowPos3sMESA_remap_index 277 -#define WindowPos3svMESA_remap_index 278 -#define WindowPos4dMESA_remap_index 279 -#define WindowPos4dvMESA_remap_index 280 -#define WindowPos4fMESA_remap_index 281 -#define WindowPos4fvMESA_remap_index 282 -#define WindowPos4iMESA_remap_index 283 -#define WindowPos4ivMESA_remap_index 284 -#define WindowPos4sMESA_remap_index 285 -#define WindowPos4svMESA_remap_index 286 -#define MultiModeDrawArraysIBM_remap_index 287 -#define MultiModeDrawElementsIBM_remap_index 288 -#define DeleteFencesNV_remap_index 289 -#define FinishFenceNV_remap_index 290 -#define GenFencesNV_remap_index 291 -#define GetFenceivNV_remap_index 292 -#define IsFenceNV_remap_index 293 -#define SetFenceNV_remap_index 294 -#define TestFenceNV_remap_index 295 -#define AreProgramsResidentNV_remap_index 296 -#define BindProgramNV_remap_index 297 -#define DeleteProgramsNV_remap_index 298 -#define ExecuteProgramNV_remap_index 299 -#define GenProgramsNV_remap_index 300 -#define GetProgramParameterdvNV_remap_index 301 -#define GetProgramParameterfvNV_remap_index 302 -#define GetProgramStringNV_remap_index 303 -#define GetProgramivNV_remap_index 304 -#define GetTrackMatrixivNV_remap_index 305 -#define GetVertexAttribPointervNV_remap_index 306 -#define GetVertexAttribdvNV_remap_index 307 -#define GetVertexAttribfvNV_remap_index 308 -#define GetVertexAttribivNV_remap_index 309 -#define IsProgramNV_remap_index 310 -#define LoadProgramNV_remap_index 311 -#define ProgramParameters4dvNV_remap_index 312 -#define ProgramParameters4fvNV_remap_index 313 -#define RequestResidentProgramsNV_remap_index 314 -#define TrackMatrixNV_remap_index 315 -#define VertexAttrib1dNV_remap_index 316 -#define VertexAttrib1dvNV_remap_index 317 -#define VertexAttrib1fNV_remap_index 318 -#define VertexAttrib1fvNV_remap_index 319 -#define VertexAttrib1sNV_remap_index 320 -#define VertexAttrib1svNV_remap_index 321 -#define VertexAttrib2dNV_remap_index 322 -#define VertexAttrib2dvNV_remap_index 323 -#define VertexAttrib2fNV_remap_index 324 -#define VertexAttrib2fvNV_remap_index 325 -#define VertexAttrib2sNV_remap_index 326 -#define VertexAttrib2svNV_remap_index 327 -#define VertexAttrib3dNV_remap_index 328 -#define VertexAttrib3dvNV_remap_index 329 -#define VertexAttrib3fNV_remap_index 330 -#define VertexAttrib3fvNV_remap_index 331 -#define VertexAttrib3sNV_remap_index 332 -#define VertexAttrib3svNV_remap_index 333 -#define VertexAttrib4dNV_remap_index 334 -#define VertexAttrib4dvNV_remap_index 335 -#define VertexAttrib4fNV_remap_index 336 -#define VertexAttrib4fvNV_remap_index 337 -#define VertexAttrib4sNV_remap_index 338 -#define VertexAttrib4svNV_remap_index 339 -#define VertexAttrib4ubNV_remap_index 340 -#define VertexAttrib4ubvNV_remap_index 341 -#define VertexAttribPointerNV_remap_index 342 -#define VertexAttribs1dvNV_remap_index 343 -#define VertexAttribs1fvNV_remap_index 344 -#define VertexAttribs1svNV_remap_index 345 -#define VertexAttribs2dvNV_remap_index 346 -#define VertexAttribs2fvNV_remap_index 347 -#define VertexAttribs2svNV_remap_index 348 -#define VertexAttribs3dvNV_remap_index 349 -#define VertexAttribs3fvNV_remap_index 350 -#define VertexAttribs3svNV_remap_index 351 -#define VertexAttribs4dvNV_remap_index 352 -#define VertexAttribs4fvNV_remap_index 353 -#define VertexAttribs4svNV_remap_index 354 -#define VertexAttribs4ubvNV_remap_index 355 -#define GetTexBumpParameterfvATI_remap_index 356 -#define GetTexBumpParameterivATI_remap_index 357 -#define TexBumpParameterfvATI_remap_index 358 -#define TexBumpParameterivATI_remap_index 359 -#define AlphaFragmentOp1ATI_remap_index 360 -#define AlphaFragmentOp2ATI_remap_index 361 -#define AlphaFragmentOp3ATI_remap_index 362 -#define BeginFragmentShaderATI_remap_index 363 -#define BindFragmentShaderATI_remap_index 364 -#define ColorFragmentOp1ATI_remap_index 365 -#define ColorFragmentOp2ATI_remap_index 366 -#define ColorFragmentOp3ATI_remap_index 367 -#define DeleteFragmentShaderATI_remap_index 368 -#define EndFragmentShaderATI_remap_index 369 -#define GenFragmentShadersATI_remap_index 370 -#define PassTexCoordATI_remap_index 371 -#define SampleMapATI_remap_index 372 -#define SetFragmentShaderConstantATI_remap_index 373 -#define PointParameteriNV_remap_index 374 -#define PointParameterivNV_remap_index 375 -#define ActiveStencilFaceEXT_remap_index 376 -#define BindVertexArrayAPPLE_remap_index 377 -#define DeleteVertexArraysAPPLE_remap_index 378 -#define GenVertexArraysAPPLE_remap_index 379 -#define IsVertexArrayAPPLE_remap_index 380 -#define GetProgramNamedParameterdvNV_remap_index 381 -#define GetProgramNamedParameterfvNV_remap_index 382 -#define ProgramNamedParameter4dNV_remap_index 383 -#define ProgramNamedParameter4dvNV_remap_index 384 -#define ProgramNamedParameter4fNV_remap_index 385 -#define ProgramNamedParameter4fvNV_remap_index 386 -#define PrimitiveRestartIndexNV_remap_index 387 -#define PrimitiveRestartNV_remap_index 388 -#define DepthBoundsEXT_remap_index 389 -#define BlendEquationSeparateEXT_remap_index 390 -#define BindFramebufferEXT_remap_index 391 -#define BindRenderbufferEXT_remap_index 392 -#define CheckFramebufferStatusEXT_remap_index 393 -#define DeleteFramebuffersEXT_remap_index 394 -#define DeleteRenderbuffersEXT_remap_index 395 -#define FramebufferRenderbufferEXT_remap_index 396 -#define FramebufferTexture1DEXT_remap_index 397 -#define FramebufferTexture2DEXT_remap_index 398 -#define FramebufferTexture3DEXT_remap_index 399 -#define GenFramebuffersEXT_remap_index 400 -#define GenRenderbuffersEXT_remap_index 401 -#define GenerateMipmapEXT_remap_index 402 -#define GetFramebufferAttachmentParameterivEXT_remap_index 403 -#define GetRenderbufferParameterivEXT_remap_index 404 -#define IsFramebufferEXT_remap_index 405 -#define IsRenderbufferEXT_remap_index 406 -#define RenderbufferStorageEXT_remap_index 407 -#define BlitFramebufferEXT_remap_index 408 -#define BufferParameteriAPPLE_remap_index 409 -#define FlushMappedBufferRangeAPPLE_remap_index 410 -#define BindFragDataLocationEXT_remap_index 411 -#define GetFragDataLocationEXT_remap_index 412 -#define GetUniformuivEXT_remap_index 413 -#define GetVertexAttribIivEXT_remap_index 414 -#define GetVertexAttribIuivEXT_remap_index 415 -#define Uniform1uiEXT_remap_index 416 -#define Uniform1uivEXT_remap_index 417 -#define Uniform2uiEXT_remap_index 418 -#define Uniform2uivEXT_remap_index 419 -#define Uniform3uiEXT_remap_index 420 -#define Uniform3uivEXT_remap_index 421 -#define Uniform4uiEXT_remap_index 422 -#define Uniform4uivEXT_remap_index 423 -#define VertexAttribI1iEXT_remap_index 424 -#define VertexAttribI1ivEXT_remap_index 425 -#define VertexAttribI1uiEXT_remap_index 426 -#define VertexAttribI1uivEXT_remap_index 427 -#define VertexAttribI2iEXT_remap_index 428 -#define VertexAttribI2ivEXT_remap_index 429 -#define VertexAttribI2uiEXT_remap_index 430 -#define VertexAttribI2uivEXT_remap_index 431 -#define VertexAttribI3iEXT_remap_index 432 -#define VertexAttribI3ivEXT_remap_index 433 -#define VertexAttribI3uiEXT_remap_index 434 -#define VertexAttribI3uivEXT_remap_index 435 -#define VertexAttribI4bvEXT_remap_index 436 -#define VertexAttribI4iEXT_remap_index 437 -#define VertexAttribI4ivEXT_remap_index 438 -#define VertexAttribI4svEXT_remap_index 439 -#define VertexAttribI4ubvEXT_remap_index 440 -#define VertexAttribI4uiEXT_remap_index 441 -#define VertexAttribI4uivEXT_remap_index 442 -#define VertexAttribI4usvEXT_remap_index 443 -#define VertexAttribIPointerEXT_remap_index 444 -#define FramebufferTextureLayerEXT_remap_index 445 -#define ColorMaskIndexedEXT_remap_index 446 -#define DisableIndexedEXT_remap_index 447 -#define EnableIndexedEXT_remap_index 448 -#define GetBooleanIndexedvEXT_remap_index 449 -#define GetIntegerIndexedvEXT_remap_index 450 -#define IsEnabledIndexedEXT_remap_index 451 -#define ClearColorIiEXT_remap_index 452 -#define ClearColorIuiEXT_remap_index 453 -#define GetTexParameterIivEXT_remap_index 454 -#define GetTexParameterIuivEXT_remap_index 455 -#define TexParameterIivEXT_remap_index 456 -#define TexParameterIuivEXT_remap_index 457 -#define BeginConditionalRenderNV_remap_index 458 -#define EndConditionalRenderNV_remap_index 459 -#define BeginTransformFeedbackEXT_remap_index 460 -#define BindBufferBaseEXT_remap_index 461 -#define BindBufferOffsetEXT_remap_index 462 -#define BindBufferRangeEXT_remap_index 463 -#define EndTransformFeedbackEXT_remap_index 464 -#define GetTransformFeedbackVaryingEXT_remap_index 465 -#define TransformFeedbackVaryingsEXT_remap_index 466 -#define ProvokingVertexEXT_remap_index 467 -#define GetTexParameterPointervAPPLE_remap_index 468 -#define TextureRangeAPPLE_remap_index 469 -#define GetObjectParameterivAPPLE_remap_index 470 -#define ObjectPurgeableAPPLE_remap_index 471 -#define ObjectUnpurgeableAPPLE_remap_index 472 -#define ActiveProgramEXT_remap_index 473 -#define CreateShaderProgramEXT_remap_index 474 -#define UseShaderProgramEXT_remap_index 475 -#define TextureBarrierNV_remap_index 476 -#define StencilFuncSeparateATI_remap_index 477 -#define ProgramEnvParameters4fvEXT_remap_index 478 -#define ProgramLocalParameters4fvEXT_remap_index 479 -#define GetQueryObjecti64vEXT_remap_index 480 -#define GetQueryObjectui64vEXT_remap_index 481 -#define EGLImageTargetRenderbufferStorageOES_remap_index 482 -#define EGLImageTargetTexture2DOES_remap_index 483 +#define ClampColorARB_remap_index 164 +#define DrawArraysInstancedARB_remap_index 165 +#define DrawElementsInstancedARB_remap_index 166 +#define RenderbufferStorageMultisample_remap_index 167 +#define FramebufferTextureARB_remap_index 168 +#define FramebufferTextureFaceARB_remap_index 169 +#define ProgramParameteriARB_remap_index 170 +#define VertexAttribDivisorARB_remap_index 171 +#define FlushMappedBufferRange_remap_index 172 +#define MapBufferRange_remap_index 173 +#define TexBufferARB_remap_index 174 +#define BindVertexArray_remap_index 175 +#define GenVertexArrays_remap_index 176 +#define CopyBufferSubData_remap_index 177 +#define ClientWaitSync_remap_index 178 +#define DeleteSync_remap_index 179 +#define FenceSync_remap_index 180 +#define GetInteger64v_remap_index 181 +#define GetSynciv_remap_index 182 +#define IsSync_remap_index 183 +#define WaitSync_remap_index 184 +#define DrawElementsBaseVertex_remap_index 185 +#define DrawRangeElementsBaseVertex_remap_index 186 +#define MultiDrawElementsBaseVertex_remap_index 187 +#define BlendEquationSeparateiARB_remap_index 188 +#define BlendEquationiARB_remap_index 189 +#define BlendFuncSeparateiARB_remap_index 190 +#define BlendFunciARB_remap_index 191 +#define BindSampler_remap_index 192 +#define DeleteSamplers_remap_index 193 +#define GenSamplers_remap_index 194 +#define GetSamplerParameterIiv_remap_index 195 +#define GetSamplerParameterIuiv_remap_index 196 +#define GetSamplerParameterfv_remap_index 197 +#define GetSamplerParameteriv_remap_index 198 +#define IsSampler_remap_index 199 +#define SamplerParameterIiv_remap_index 200 +#define SamplerParameterIuiv_remap_index 201 +#define SamplerParameterf_remap_index 202 +#define SamplerParameterfv_remap_index 203 +#define SamplerParameteri_remap_index 204 +#define SamplerParameteriv_remap_index 205 +#define BindTransformFeedback_remap_index 206 +#define DeleteTransformFeedbacks_remap_index 207 +#define DrawTransformFeedback_remap_index 208 +#define GenTransformFeedbacks_remap_index 209 +#define IsTransformFeedback_remap_index 210 +#define PauseTransformFeedback_remap_index 211 +#define ResumeTransformFeedback_remap_index 212 +#define ClearDepthf_remap_index 213 +#define DepthRangef_remap_index 214 +#define GetShaderPrecisionFormat_remap_index 215 +#define ReleaseShaderCompiler_remap_index 216 +#define ShaderBinary_remap_index 217 +#define PolygonOffsetEXT_remap_index 218 +#define GetPixelTexGenParameterfvSGIS_remap_index 219 +#define GetPixelTexGenParameterivSGIS_remap_index 220 +#define PixelTexGenParameterfSGIS_remap_index 221 +#define PixelTexGenParameterfvSGIS_remap_index 222 +#define PixelTexGenParameteriSGIS_remap_index 223 +#define PixelTexGenParameterivSGIS_remap_index 224 +#define SampleMaskSGIS_remap_index 225 +#define SamplePatternSGIS_remap_index 226 +#define ColorPointerEXT_remap_index 227 +#define EdgeFlagPointerEXT_remap_index 228 +#define IndexPointerEXT_remap_index 229 +#define NormalPointerEXT_remap_index 230 +#define TexCoordPointerEXT_remap_index 231 +#define VertexPointerEXT_remap_index 232 +#define PointParameterfEXT_remap_index 233 +#define PointParameterfvEXT_remap_index 234 +#define LockArraysEXT_remap_index 235 +#define UnlockArraysEXT_remap_index 236 +#define SecondaryColor3bEXT_remap_index 237 +#define SecondaryColor3bvEXT_remap_index 238 +#define SecondaryColor3dEXT_remap_index 239 +#define SecondaryColor3dvEXT_remap_index 240 +#define SecondaryColor3fEXT_remap_index 241 +#define SecondaryColor3fvEXT_remap_index 242 +#define SecondaryColor3iEXT_remap_index 243 +#define SecondaryColor3ivEXT_remap_index 244 +#define SecondaryColor3sEXT_remap_index 245 +#define SecondaryColor3svEXT_remap_index 246 +#define SecondaryColor3ubEXT_remap_index 247 +#define SecondaryColor3ubvEXT_remap_index 248 +#define SecondaryColor3uiEXT_remap_index 249 +#define SecondaryColor3uivEXT_remap_index 250 +#define SecondaryColor3usEXT_remap_index 251 +#define SecondaryColor3usvEXT_remap_index 252 +#define SecondaryColorPointerEXT_remap_index 253 +#define MultiDrawArraysEXT_remap_index 254 +#define MultiDrawElementsEXT_remap_index 255 +#define FogCoordPointerEXT_remap_index 256 +#define FogCoorddEXT_remap_index 257 +#define FogCoorddvEXT_remap_index 258 +#define FogCoordfEXT_remap_index 259 +#define FogCoordfvEXT_remap_index 260 +#define PixelTexGenSGIX_remap_index 261 +#define BlendFuncSeparateEXT_remap_index 262 +#define FlushVertexArrayRangeNV_remap_index 263 +#define VertexArrayRangeNV_remap_index 264 +#define CombinerInputNV_remap_index 265 +#define CombinerOutputNV_remap_index 266 +#define CombinerParameterfNV_remap_index 267 +#define CombinerParameterfvNV_remap_index 268 +#define CombinerParameteriNV_remap_index 269 +#define CombinerParameterivNV_remap_index 270 +#define FinalCombinerInputNV_remap_index 271 +#define GetCombinerInputParameterfvNV_remap_index 272 +#define GetCombinerInputParameterivNV_remap_index 273 +#define GetCombinerOutputParameterfvNV_remap_index 274 +#define GetCombinerOutputParameterivNV_remap_index 275 +#define GetFinalCombinerInputParameterfvNV_remap_index 276 +#define GetFinalCombinerInputParameterivNV_remap_index 277 +#define ResizeBuffersMESA_remap_index 278 +#define WindowPos2dMESA_remap_index 279 +#define WindowPos2dvMESA_remap_index 280 +#define WindowPos2fMESA_remap_index 281 +#define WindowPos2fvMESA_remap_index 282 +#define WindowPos2iMESA_remap_index 283 +#define WindowPos2ivMESA_remap_index 284 +#define WindowPos2sMESA_remap_index 285 +#define WindowPos2svMESA_remap_index 286 +#define WindowPos3dMESA_remap_index 287 +#define WindowPos3dvMESA_remap_index 288 +#define WindowPos3fMESA_remap_index 289 +#define WindowPos3fvMESA_remap_index 290 +#define WindowPos3iMESA_remap_index 291 +#define WindowPos3ivMESA_remap_index 292 +#define WindowPos3sMESA_remap_index 293 +#define WindowPos3svMESA_remap_index 294 +#define WindowPos4dMESA_remap_index 295 +#define WindowPos4dvMESA_remap_index 296 +#define WindowPos4fMESA_remap_index 297 +#define WindowPos4fvMESA_remap_index 298 +#define WindowPos4iMESA_remap_index 299 +#define WindowPos4ivMESA_remap_index 300 +#define WindowPos4sMESA_remap_index 301 +#define WindowPos4svMESA_remap_index 302 +#define MultiModeDrawArraysIBM_remap_index 303 +#define MultiModeDrawElementsIBM_remap_index 304 +#define DeleteFencesNV_remap_index 305 +#define FinishFenceNV_remap_index 306 +#define GenFencesNV_remap_index 307 +#define GetFenceivNV_remap_index 308 +#define IsFenceNV_remap_index 309 +#define SetFenceNV_remap_index 310 +#define TestFenceNV_remap_index 311 +#define AreProgramsResidentNV_remap_index 312 +#define BindProgramNV_remap_index 313 +#define DeleteProgramsNV_remap_index 314 +#define ExecuteProgramNV_remap_index 315 +#define GenProgramsNV_remap_index 316 +#define GetProgramParameterdvNV_remap_index 317 +#define GetProgramParameterfvNV_remap_index 318 +#define GetProgramStringNV_remap_index 319 +#define GetProgramivNV_remap_index 320 +#define GetTrackMatrixivNV_remap_index 321 +#define GetVertexAttribPointervNV_remap_index 322 +#define GetVertexAttribdvNV_remap_index 323 +#define GetVertexAttribfvNV_remap_index 324 +#define GetVertexAttribivNV_remap_index 325 +#define IsProgramNV_remap_index 326 +#define LoadProgramNV_remap_index 327 +#define ProgramParameters4dvNV_remap_index 328 +#define ProgramParameters4fvNV_remap_index 329 +#define RequestResidentProgramsNV_remap_index 330 +#define TrackMatrixNV_remap_index 331 +#define VertexAttrib1dNV_remap_index 332 +#define VertexAttrib1dvNV_remap_index 333 +#define VertexAttrib1fNV_remap_index 334 +#define VertexAttrib1fvNV_remap_index 335 +#define VertexAttrib1sNV_remap_index 336 +#define VertexAttrib1svNV_remap_index 337 +#define VertexAttrib2dNV_remap_index 338 +#define VertexAttrib2dvNV_remap_index 339 +#define VertexAttrib2fNV_remap_index 340 +#define VertexAttrib2fvNV_remap_index 341 +#define VertexAttrib2sNV_remap_index 342 +#define VertexAttrib2svNV_remap_index 343 +#define VertexAttrib3dNV_remap_index 344 +#define VertexAttrib3dvNV_remap_index 345 +#define VertexAttrib3fNV_remap_index 346 +#define VertexAttrib3fvNV_remap_index 347 +#define VertexAttrib3sNV_remap_index 348 +#define VertexAttrib3svNV_remap_index 349 +#define VertexAttrib4dNV_remap_index 350 +#define VertexAttrib4dvNV_remap_index 351 +#define VertexAttrib4fNV_remap_index 352 +#define VertexAttrib4fvNV_remap_index 353 +#define VertexAttrib4sNV_remap_index 354 +#define VertexAttrib4svNV_remap_index 355 +#define VertexAttrib4ubNV_remap_index 356 +#define VertexAttrib4ubvNV_remap_index 357 +#define VertexAttribPointerNV_remap_index 358 +#define VertexAttribs1dvNV_remap_index 359 +#define VertexAttribs1fvNV_remap_index 360 +#define VertexAttribs1svNV_remap_index 361 +#define VertexAttribs2dvNV_remap_index 362 +#define VertexAttribs2fvNV_remap_index 363 +#define VertexAttribs2svNV_remap_index 364 +#define VertexAttribs3dvNV_remap_index 365 +#define VertexAttribs3fvNV_remap_index 366 +#define VertexAttribs3svNV_remap_index 367 +#define VertexAttribs4dvNV_remap_index 368 +#define VertexAttribs4fvNV_remap_index 369 +#define VertexAttribs4svNV_remap_index 370 +#define VertexAttribs4ubvNV_remap_index 371 +#define GetTexBumpParameterfvATI_remap_index 372 +#define GetTexBumpParameterivATI_remap_index 373 +#define TexBumpParameterfvATI_remap_index 374 +#define TexBumpParameterivATI_remap_index 375 +#define AlphaFragmentOp1ATI_remap_index 376 +#define AlphaFragmentOp2ATI_remap_index 377 +#define AlphaFragmentOp3ATI_remap_index 378 +#define BeginFragmentShaderATI_remap_index 379 +#define BindFragmentShaderATI_remap_index 380 +#define ColorFragmentOp1ATI_remap_index 381 +#define ColorFragmentOp2ATI_remap_index 382 +#define ColorFragmentOp3ATI_remap_index 383 +#define DeleteFragmentShaderATI_remap_index 384 +#define EndFragmentShaderATI_remap_index 385 +#define GenFragmentShadersATI_remap_index 386 +#define PassTexCoordATI_remap_index 387 +#define SampleMapATI_remap_index 388 +#define SetFragmentShaderConstantATI_remap_index 389 +#define PointParameteriNV_remap_index 390 +#define PointParameterivNV_remap_index 391 +#define ActiveStencilFaceEXT_remap_index 392 +#define BindVertexArrayAPPLE_remap_index 393 +#define DeleteVertexArraysAPPLE_remap_index 394 +#define GenVertexArraysAPPLE_remap_index 395 +#define IsVertexArrayAPPLE_remap_index 396 +#define GetProgramNamedParameterdvNV_remap_index 397 +#define GetProgramNamedParameterfvNV_remap_index 398 +#define ProgramNamedParameter4dNV_remap_index 399 +#define ProgramNamedParameter4dvNV_remap_index 400 +#define ProgramNamedParameter4fNV_remap_index 401 +#define ProgramNamedParameter4fvNV_remap_index 402 +#define PrimitiveRestartIndexNV_remap_index 403 +#define PrimitiveRestartNV_remap_index 404 +#define DepthBoundsEXT_remap_index 405 +#define BlendEquationSeparateEXT_remap_index 406 +#define BindFramebufferEXT_remap_index 407 +#define BindRenderbufferEXT_remap_index 408 +#define CheckFramebufferStatusEXT_remap_index 409 +#define DeleteFramebuffersEXT_remap_index 410 +#define DeleteRenderbuffersEXT_remap_index 411 +#define FramebufferRenderbufferEXT_remap_index 412 +#define FramebufferTexture1DEXT_remap_index 413 +#define FramebufferTexture2DEXT_remap_index 414 +#define FramebufferTexture3DEXT_remap_index 415 +#define GenFramebuffersEXT_remap_index 416 +#define GenRenderbuffersEXT_remap_index 417 +#define GenerateMipmapEXT_remap_index 418 +#define GetFramebufferAttachmentParameterivEXT_remap_index 419 +#define GetRenderbufferParameterivEXT_remap_index 420 +#define IsFramebufferEXT_remap_index 421 +#define IsRenderbufferEXT_remap_index 422 +#define RenderbufferStorageEXT_remap_index 423 +#define BlitFramebufferEXT_remap_index 424 +#define BufferParameteriAPPLE_remap_index 425 +#define FlushMappedBufferRangeAPPLE_remap_index 426 +#define BindFragDataLocationEXT_remap_index 427 +#define GetFragDataLocationEXT_remap_index 428 +#define GetUniformuivEXT_remap_index 429 +#define GetVertexAttribIivEXT_remap_index 430 +#define GetVertexAttribIuivEXT_remap_index 431 +#define Uniform1uiEXT_remap_index 432 +#define Uniform1uivEXT_remap_index 433 +#define Uniform2uiEXT_remap_index 434 +#define Uniform2uivEXT_remap_index 435 +#define Uniform3uiEXT_remap_index 436 +#define Uniform3uivEXT_remap_index 437 +#define Uniform4uiEXT_remap_index 438 +#define Uniform4uivEXT_remap_index 439 +#define VertexAttribI1iEXT_remap_index 440 +#define VertexAttribI1ivEXT_remap_index 441 +#define VertexAttribI1uiEXT_remap_index 442 +#define VertexAttribI1uivEXT_remap_index 443 +#define VertexAttribI2iEXT_remap_index 444 +#define VertexAttribI2ivEXT_remap_index 445 +#define VertexAttribI2uiEXT_remap_index 446 +#define VertexAttribI2uivEXT_remap_index 447 +#define VertexAttribI3iEXT_remap_index 448 +#define VertexAttribI3ivEXT_remap_index 449 +#define VertexAttribI3uiEXT_remap_index 450 +#define VertexAttribI3uivEXT_remap_index 451 +#define VertexAttribI4bvEXT_remap_index 452 +#define VertexAttribI4iEXT_remap_index 453 +#define VertexAttribI4ivEXT_remap_index 454 +#define VertexAttribI4svEXT_remap_index 455 +#define VertexAttribI4ubvEXT_remap_index 456 +#define VertexAttribI4uiEXT_remap_index 457 +#define VertexAttribI4uivEXT_remap_index 458 +#define VertexAttribI4usvEXT_remap_index 459 +#define VertexAttribIPointerEXT_remap_index 460 +#define FramebufferTextureLayerEXT_remap_index 461 +#define ColorMaskIndexedEXT_remap_index 462 +#define DisableIndexedEXT_remap_index 463 +#define EnableIndexedEXT_remap_index 464 +#define GetBooleanIndexedvEXT_remap_index 465 +#define GetIntegerIndexedvEXT_remap_index 466 +#define IsEnabledIndexedEXT_remap_index 467 +#define ClearColorIiEXT_remap_index 468 +#define ClearColorIuiEXT_remap_index 469 +#define GetTexParameterIivEXT_remap_index 470 +#define GetTexParameterIuivEXT_remap_index 471 +#define TexParameterIivEXT_remap_index 472 +#define TexParameterIuivEXT_remap_index 473 +#define BeginConditionalRenderNV_remap_index 474 +#define EndConditionalRenderNV_remap_index 475 +#define BeginTransformFeedbackEXT_remap_index 476 +#define BindBufferBaseEXT_remap_index 477 +#define BindBufferOffsetEXT_remap_index 478 +#define BindBufferRangeEXT_remap_index 479 +#define EndTransformFeedbackEXT_remap_index 480 +#define GetTransformFeedbackVaryingEXT_remap_index 481 +#define TransformFeedbackVaryingsEXT_remap_index 482 +#define ProvokingVertexEXT_remap_index 483 +#define GetTexParameterPointervAPPLE_remap_index 484 +#define TextureRangeAPPLE_remap_index 485 +#define GetObjectParameterivAPPLE_remap_index 486 +#define ObjectPurgeableAPPLE_remap_index 487 +#define ObjectUnpurgeableAPPLE_remap_index 488 +#define ActiveProgramEXT_remap_index 489 +#define CreateShaderProgramEXT_remap_index 490 +#define UseShaderProgramEXT_remap_index 491 +#define TextureBarrierNV_remap_index 492 +#define StencilFuncSeparateATI_remap_index 493 +#define ProgramEnvParameters4fvEXT_remap_index 494 +#define ProgramLocalParameters4fvEXT_remap_index 495 +#define GetQueryObjecti64vEXT_remap_index 496 +#define GetQueryObjectui64vEXT_remap_index 497 +#define EGLImageTargetRenderbufferStorageOES_remap_index 498 +#define EGLImageTargetTexture2DOES_remap_index 499 #define _gloffset_AttachShader driDispatchRemapTable[AttachShader_remap_index] #define _gloffset_CreateProgram driDispatchRemapTable[CreateProgram_remap_index] @@ -1611,6 +1643,7 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define _gloffset_GetActiveAttribARB driDispatchRemapTable[GetActiveAttribARB_remap_index] #define _gloffset_GetAttribLocationARB driDispatchRemapTable[GetAttribLocationARB_remap_index] #define _gloffset_DrawBuffersARB driDispatchRemapTable[DrawBuffersARB_remap_index] +#define _gloffset_ClampColorARB driDispatchRemapTable[ClampColorARB_remap_index] #define _gloffset_DrawArraysInstancedARB driDispatchRemapTable[DrawArraysInstancedARB_remap_index] #define _gloffset_DrawElementsInstancedARB driDispatchRemapTable[DrawElementsInstancedARB_remap_index] #define _gloffset_RenderbufferStorageMultisample driDispatchRemapTable[RenderbufferStorageMultisample_remap_index] @@ -1620,6 +1653,7 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define _gloffset_VertexAttribDivisorARB driDispatchRemapTable[VertexAttribDivisorARB_remap_index] #define _gloffset_FlushMappedBufferRange driDispatchRemapTable[FlushMappedBufferRange_remap_index] #define _gloffset_MapBufferRange driDispatchRemapTable[MapBufferRange_remap_index] +#define _gloffset_TexBufferARB driDispatchRemapTable[TexBufferARB_remap_index] #define _gloffset_BindVertexArray driDispatchRemapTable[BindVertexArray_remap_index] #define _gloffset_GenVertexArrays driDispatchRemapTable[GenVertexArrays_remap_index] #define _gloffset_CopyBufferSubData driDispatchRemapTable[CopyBufferSubData_remap_index] @@ -1637,6 +1671,20 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define _gloffset_BlendEquationiARB driDispatchRemapTable[BlendEquationiARB_remap_index] #define _gloffset_BlendFuncSeparateiARB driDispatchRemapTable[BlendFuncSeparateiARB_remap_index] #define _gloffset_BlendFunciARB driDispatchRemapTable[BlendFunciARB_remap_index] +#define _gloffset_BindSampler driDispatchRemapTable[BindSampler_remap_index] +#define _gloffset_DeleteSamplers driDispatchRemapTable[DeleteSamplers_remap_index] +#define _gloffset_GenSamplers driDispatchRemapTable[GenSamplers_remap_index] +#define _gloffset_GetSamplerParameterIiv driDispatchRemapTable[GetSamplerParameterIiv_remap_index] +#define _gloffset_GetSamplerParameterIuiv driDispatchRemapTable[GetSamplerParameterIuiv_remap_index] +#define _gloffset_GetSamplerParameterfv driDispatchRemapTable[GetSamplerParameterfv_remap_index] +#define _gloffset_GetSamplerParameteriv driDispatchRemapTable[GetSamplerParameteriv_remap_index] +#define _gloffset_IsSampler driDispatchRemapTable[IsSampler_remap_index] +#define _gloffset_SamplerParameterIiv driDispatchRemapTable[SamplerParameterIiv_remap_index] +#define _gloffset_SamplerParameterIuiv driDispatchRemapTable[SamplerParameterIuiv_remap_index] +#define _gloffset_SamplerParameterf driDispatchRemapTable[SamplerParameterf_remap_index] +#define _gloffset_SamplerParameterfv driDispatchRemapTable[SamplerParameterfv_remap_index] +#define _gloffset_SamplerParameteri driDispatchRemapTable[SamplerParameteri_remap_index] +#define _gloffset_SamplerParameteriv driDispatchRemapTable[SamplerParameteriv_remap_index] #define _gloffset_BindTransformFeedback driDispatchRemapTable[BindTransformFeedback_remap_index] #define _gloffset_DeleteTransformFeedbacks driDispatchRemapTable[DeleteTransformFeedbacks_remap_index] #define _gloffset_DrawTransformFeedback driDispatchRemapTable[DrawTransformFeedback_remap_index] @@ -3227,7 +3275,7 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define CALL_ClampColor(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum)), _gloffset_ClampColor, parameters) #define GET_ClampColor(disp) GET_by_offset(disp, _gloffset_ClampColor) #define SET_ClampColor(disp, fn) SET_by_offset(disp, _gloffset_ClampColor, fn) -#define CALL_ClearBufferfi(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, const GLfloat, const GLint)), _gloffset_ClearBufferfi, parameters) +#define CALL_ClearBufferfi(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLfloat, GLint)), _gloffset_ClearBufferfi, parameters) #define GET_ClearBufferfi(disp) GET_by_offset(disp, _gloffset_ClearBufferfi) #define SET_ClearBufferfi(disp, fn) SET_by_offset(disp, _gloffset_ClearBufferfi, fn) #define CALL_ClearBufferfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, const GLfloat *)), _gloffset_ClearBufferfv, parameters) @@ -3650,6 +3698,9 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define CALL_DrawBuffersARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLenum *)), _gloffset_DrawBuffersARB, parameters) #define GET_DrawBuffersARB(disp) GET_by_offset(disp, _gloffset_DrawBuffersARB) #define SET_DrawBuffersARB(disp, fn) SET_by_offset(disp, _gloffset_DrawBuffersARB, fn) +#define CALL_ClampColorARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum)), _gloffset_ClampColorARB, parameters) +#define GET_ClampColorARB(disp) GET_by_offset(disp, _gloffset_ClampColorARB) +#define SET_ClampColorARB(disp, fn) SET_by_offset(disp, _gloffset_ClampColorARB, fn) #define CALL_DrawArraysInstancedARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLsizei, GLsizei)), _gloffset_DrawArraysInstancedARB, parameters) #define GET_DrawArraysInstancedARB(disp) GET_by_offset(disp, _gloffset_DrawArraysInstancedARB) #define SET_DrawArraysInstancedARB(disp, fn) SET_by_offset(disp, _gloffset_DrawArraysInstancedARB, fn) @@ -3677,6 +3728,9 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define CALL_MapBufferRange(disp, parameters) CALL_by_offset(disp, (GLvoid * (GLAPIENTRYP)(GLenum, GLintptr, GLsizeiptr, GLbitfield)), _gloffset_MapBufferRange, parameters) #define GET_MapBufferRange(disp) GET_by_offset(disp, _gloffset_MapBufferRange) #define SET_MapBufferRange(disp, fn) SET_by_offset(disp, _gloffset_MapBufferRange, fn) +#define CALL_TexBufferARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLuint)), _gloffset_TexBufferARB, parameters) +#define GET_TexBufferARB(disp) GET_by_offset(disp, _gloffset_TexBufferARB) +#define SET_TexBufferARB(disp, fn) SET_by_offset(disp, _gloffset_TexBufferARB, fn) #define CALL_BindVertexArray(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), _gloffset_BindVertexArray, parameters) #define GET_BindVertexArray(disp) GET_by_offset(disp, _gloffset_BindVertexArray) #define SET_BindVertexArray(disp, fn) SET_by_offset(disp, _gloffset_BindVertexArray, fn) @@ -3728,6 +3782,48 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define CALL_BlendFunciARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLenum)), _gloffset_BlendFunciARB, parameters) #define GET_BlendFunciARB(disp) GET_by_offset(disp, _gloffset_BlendFunciARB) #define SET_BlendFunciARB(disp, fn) SET_by_offset(disp, _gloffset_BlendFunciARB, fn) +#define CALL_BindSampler(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint)), _gloffset_BindSampler, parameters) +#define GET_BindSampler(disp) GET_by_offset(disp, _gloffset_BindSampler) +#define SET_BindSampler(disp, fn) SET_by_offset(disp, _gloffset_BindSampler, fn) +#define CALL_DeleteSamplers(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), _gloffset_DeleteSamplers, parameters) +#define GET_DeleteSamplers(disp) GET_by_offset(disp, _gloffset_DeleteSamplers) +#define SET_DeleteSamplers(disp, fn) SET_by_offset(disp, _gloffset_DeleteSamplers, fn) +#define CALL_GenSamplers(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), _gloffset_GenSamplers, parameters) +#define GET_GenSamplers(disp) GET_by_offset(disp, _gloffset_GenSamplers) +#define SET_GenSamplers(disp, fn) SET_by_offset(disp, _gloffset_GenSamplers, fn) +#define CALL_GetSamplerParameterIiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), _gloffset_GetSamplerParameterIiv, parameters) +#define GET_GetSamplerParameterIiv(disp) GET_by_offset(disp, _gloffset_GetSamplerParameterIiv) +#define SET_GetSamplerParameterIiv(disp, fn) SET_by_offset(disp, _gloffset_GetSamplerParameterIiv, fn) +#define CALL_GetSamplerParameterIuiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLuint *)), _gloffset_GetSamplerParameterIuiv, parameters) +#define GET_GetSamplerParameterIuiv(disp) GET_by_offset(disp, _gloffset_GetSamplerParameterIuiv) +#define SET_GetSamplerParameterIuiv(disp, fn) SET_by_offset(disp, _gloffset_GetSamplerParameterIuiv, fn) +#define CALL_GetSamplerParameterfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLfloat *)), _gloffset_GetSamplerParameterfv, parameters) +#define GET_GetSamplerParameterfv(disp) GET_by_offset(disp, _gloffset_GetSamplerParameterfv) +#define SET_GetSamplerParameterfv(disp, fn) SET_by_offset(disp, _gloffset_GetSamplerParameterfv, fn) +#define CALL_GetSamplerParameteriv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), _gloffset_GetSamplerParameteriv, parameters) +#define GET_GetSamplerParameteriv(disp) GET_by_offset(disp, _gloffset_GetSamplerParameteriv) +#define SET_GetSamplerParameteriv(disp, fn) SET_by_offset(disp, _gloffset_GetSamplerParameteriv, fn) +#define CALL_IsSampler(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), _gloffset_IsSampler, parameters) +#define GET_IsSampler(disp) GET_by_offset(disp, _gloffset_IsSampler) +#define SET_IsSampler(disp, fn) SET_by_offset(disp, _gloffset_IsSampler, fn) +#define CALL_SamplerParameterIiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, const GLint *)), _gloffset_SamplerParameterIiv, parameters) +#define GET_SamplerParameterIiv(disp) GET_by_offset(disp, _gloffset_SamplerParameterIiv) +#define SET_SamplerParameterIiv(disp, fn) SET_by_offset(disp, _gloffset_SamplerParameterIiv, fn) +#define CALL_SamplerParameterIuiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, const GLuint *)), _gloffset_SamplerParameterIuiv, parameters) +#define GET_SamplerParameterIuiv(disp) GET_by_offset(disp, _gloffset_SamplerParameterIuiv) +#define SET_SamplerParameterIuiv(disp, fn) SET_by_offset(disp, _gloffset_SamplerParameterIuiv, fn) +#define CALL_SamplerParameterf(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLfloat)), _gloffset_SamplerParameterf, parameters) +#define GET_SamplerParameterf(disp) GET_by_offset(disp, _gloffset_SamplerParameterf) +#define SET_SamplerParameterf(disp, fn) SET_by_offset(disp, _gloffset_SamplerParameterf, fn) +#define CALL_SamplerParameterfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, const GLfloat *)), _gloffset_SamplerParameterfv, parameters) +#define GET_SamplerParameterfv(disp) GET_by_offset(disp, _gloffset_SamplerParameterfv) +#define SET_SamplerParameterfv(disp, fn) SET_by_offset(disp, _gloffset_SamplerParameterfv, fn) +#define CALL_SamplerParameteri(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint)), _gloffset_SamplerParameteri, parameters) +#define GET_SamplerParameteri(disp) GET_by_offset(disp, _gloffset_SamplerParameteri) +#define SET_SamplerParameteri(disp, fn) SET_by_offset(disp, _gloffset_SamplerParameteri, fn) +#define CALL_SamplerParameteriv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, const GLint *)), _gloffset_SamplerParameteriv, parameters) +#define GET_SamplerParameteriv(disp) GET_by_offset(disp, _gloffset_SamplerParameteriv) +#define SET_SamplerParameteriv(disp, fn) SET_by_offset(disp, _gloffset_SamplerParameteriv, fn) #define CALL_BindTransformFeedback(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_BindTransformFeedback, parameters) #define GET_BindTransformFeedback(disp) GET_by_offset(disp, _gloffset_BindTransformFeedback) #define SET_BindTransformFeedback(disp, fn) SET_by_offset(disp, _gloffset_BindTransformFeedback, fn) diff --git a/src/mesa/main/image.c b/src/mesa/main/image.c index bbde3800e8c..28841c25102 100644 --- a/src/mesa/main/image.c +++ b/src/mesa/main/image.c @@ -748,9 +748,6 @@ _mesa_is_color_format(GLenum format) case GL_COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT: case GL_COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT: case GL_COMPRESSED_LUMINANCE_ALPHA_3DC_ATI: - /* signed, normalized texture formats */ - case GL_RGBA_SNORM: - case GL_RGBA8_SNORM: /* generic integer formats */ case GL_RED_INTEGER_EXT: case GL_GREEN_INTEGER_EXT: @@ -799,6 +796,31 @@ _mesa_is_color_format(GLenum format) case GL_INTENSITY8I_EXT: case GL_LUMINANCE8I_EXT: case GL_LUMINANCE_ALPHA8I_EXT: + /* signed, normalized texture formats */ + case GL_RED_SNORM: + case GL_R8_SNORM: + case GL_R16_SNORM: + case GL_RG_SNORM: + case GL_RG8_SNORM: + case GL_RG16_SNORM: + case GL_RGB_SNORM: + case GL_RGB8_SNORM: + case GL_RGB16_SNORM: + case GL_RGBA_SNORM: + case GL_RGBA8_SNORM: + case GL_RGBA16_SNORM: + case GL_ALPHA_SNORM: + case GL_ALPHA8_SNORM: + case GL_ALPHA16_SNORM: + case GL_LUMINANCE_SNORM: + case GL_LUMINANCE8_SNORM: + case GL_LUMINANCE16_SNORM: + case GL_LUMINANCE_ALPHA_SNORM: + case GL_LUMINANCE8_ALPHA8_SNORM: + case GL_LUMINANCE16_ALPHA16_SNORM: + case GL_INTENSITY_SNORM: + case GL_INTENSITY8_SNORM: + case GL_INTENSITY16_SNORM: return GL_TRUE; case GL_YCBCR_MESA: /* not considered to be RGB */ /* fall-through */ diff --git a/src/mesa/main/macros.h b/src/mesa/main/macros.h index b2ec0ba9b73..86a58cc6b43 100644 --- a/src/mesa/main/macros.h +++ b/src/mesa/main/macros.h @@ -58,8 +58,7 @@ extern GLfloat _mesa_ubyte_to_float_color_tab[256]; #define BYTE_TO_FLOAT_TEX(B) ((B) == -128 ? -1.0F : (B) * (1.0F/127.0F)) /** Convert GLfloat in [-1.0,1.0] to GLbyte in [-128,127], texture/fb data */ -#define FLOAT_TO_BYTE_TEX(X) ( (GLint) (127.0F * (X)) ) - +#define FLOAT_TO_BYTE_TEX(X) CLAMP( (GLint) (127.0F * (X)), -128, 127 ) /** Convert GLushort in [0,65535] to GLfloat in [0.0,1.0] */ #define USHORT_TO_FLOAT(S) ((GLfloat) (S) * (1.0F / 65535.0F)) diff --git a/src/mesa/main/matrix.c b/src/mesa/main/matrix.c index 76c7e1c9d1b..56973661cea 100644 --- a/src/mesa/main/matrix.c +++ b/src/mesa/main/matrix.c @@ -140,8 +140,8 @@ _mesa_Ortho( GLdouble left, GLdouble right, * \sa glMatrixMode(). * * Flushes the vertices, validates the parameter and updates - * __struct gl_contextRec::CurrentStack and gl_transform_attrib::MatrixMode with the - * specified matrix stack. + * __struct gl_contextRec::CurrentStack and gl_transform_attrib::MatrixMode + * with the specified matrix stack. */ void GLAPIENTRY _mesa_MatrixMode( GLenum mode ) @@ -170,7 +170,8 @@ _mesa_MatrixMode( GLenum mode ) */ #if 0 if (ctx->Texture.CurrentUnit >= ctx->Const.MaxTextureCoordUnits) { - _mesa_error(ctx, GL_INVALID_OPERATION, "glMatrixMode(invalid tex unit %d)", + _mesa_error(ctx, GL_INVALID_OPERATION, + "glMatrixMode(invalid tex unit %d)", ctx->Texture.CurrentUnit); return; } @@ -232,8 +233,8 @@ _mesa_MatrixMode( GLenum mode ) * \sa glPushMatrix(). * * Verifies the current matrix stack is not full, and duplicates the top-most - * matrix in the stack. Marks __struct gl_contextRec::NewState with the stack dirty - * flag. + * matrix in the stack. + * Marks __struct gl_contextRec::NewState with the stack dirty flag. */ void GLAPIENTRY _mesa_PushMatrix( void ) @@ -272,8 +273,8 @@ _mesa_PushMatrix( void ) * \sa glPopMatrix(). * * Flushes the vertices, verifies the current matrix stack is not empty, and - * moves the stack head down. Marks __struct gl_contextRec::NewState with the dirty - * stack flag. + * moves the stack head down. + * Marks __struct gl_contextRec::NewState with the dirty stack flag. */ void GLAPIENTRY _mesa_PopMatrix( void ) @@ -309,9 +310,9 @@ _mesa_PopMatrix( void ) * * \sa glLoadIdentity(). * - * Flushes the vertices and calls _math_matrix_set_identity() with the top-most - * matrix in the current stack. Marks __struct gl_contextRec::NewState with the stack - * dirty flag. + * Flushes the vertices and calls _math_matrix_set_identity() with the + * top-most matrix in the current stack. + * Marks __struct gl_contextRec::NewState with the stack dirty flag. */ void GLAPIENTRY _mesa_LoadIdentity( void ) @@ -334,9 +335,9 @@ _mesa_LoadIdentity( void ) * * \sa glLoadMatrixf(). * - * Flushes the vertices and calls _math_matrix_loadf() with the top-most matrix - * in the current stack and the given matrix. Marks __struct gl_contextRec::NewState - * with the dirty stack flag. + * Flushes the vertices and calls _math_matrix_loadf() with the top-most + * matrix in the current stack and the given matrix. + * Marks __struct gl_contextRec::NewState with the dirty stack flag. */ void GLAPIENTRY _mesa_LoadMatrixf( const GLfloat *m ) @@ -560,8 +561,8 @@ _mesa_MultTransposeMatrixdARB( const GLdouble *m ) * Calls _math_matrix_analyse() with the top-matrix of the projection matrix * stack, and recomputes user clip positions if necessary. * - * \note This routine references __struct gl_contextRec::Tranform attribute values to - * compute userclip positions in clip space, but is only called on + * \note This routine references __struct gl_contextRec::Tranform attribute + * values to compute userclip positions in clip space, but is only called on * _NEW_PROJECTION. The _mesa_ClipPlane() function keeps these values up to * date across changes to the __struct gl_contextRec::Transform attributes. */ @@ -594,8 +595,8 @@ update_projection( struct gl_context *ctx ) * \param ctx GL context. * * Multiplies the top matrices of the projection and model view stacks into - * __struct gl_contextRec::_ModelProjectMatrix via _math_matrix_mul_matrix() and - * analyzes the resulting matrix via _math_matrix_analyse(). + * __struct gl_contextRec::_ModelProjectMatrix via _math_matrix_mul_matrix() + * and analyzes the resulting matrix via _math_matrix_analyse(). */ static void calculate_model_project_matrix( struct gl_context *ctx ) @@ -624,7 +625,7 @@ void _mesa_update_modelview_project( struct gl_context *ctx, GLuint new_state ) if (new_state & _NEW_MODELVIEW) { _math_matrix_analyse( ctx->ModelviewMatrixStack.Top ); - /* Bring cull position uptodate. + /* Bring cull position up to date. */ TRANSFORM_POINT3( ctx->Transform.CullObjPos, ctx->ModelviewMatrixStack.Top->inv, @@ -635,7 +636,7 @@ void _mesa_update_modelview_project( struct gl_context *ctx, GLuint new_state ) if (new_state & _NEW_PROJECTION) update_projection( ctx ); - /* Keep ModelviewProject uptodate always to allow tnl + /* Keep ModelviewProject up to date always to allow tnl * implementations that go model->clip even when eye is required. */ calculate_model_project_matrix(ctx); diff --git a/src/mesa/main/mfeatures.h b/src/mesa/main/mfeatures.h index 1b39f5fdd36..33db5081419 100644 --- a/src/mesa/main/mfeatures.h +++ b/src/mesa/main/mfeatures.h @@ -122,6 +122,7 @@ #define FEATURE_ARB_framebuffer_object (FEATURE_GL && FEATURE_EXT_framebuffer_object) #define FEATURE_ARB_map_buffer_range FEATURE_GL #define FEATURE_ARB_pixel_buffer_object (FEATURE_GL && FEATURE_EXT_pixel_buffer_object) +#define FEATURE_ARB_sampler_objects FEATURE_GL #define FEATURE_ARB_sync FEATURE_GL #define FEATURE_ARB_vertex_buffer_object 1 diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 831774fa4b1..160ae9d2622 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -691,7 +691,8 @@ struct gl_accum_attrib struct gl_colorbuffer_attrib { GLuint ClearIndex; /**< Index to use for glClear */ - GLclampf ClearColor[4]; /**< Color to use for glClear */ + GLfloat ClearColorUnclamped[4]; /**< Color to use for glClear*/ + GLclampf ClearColor[4]; /**< Color to use for glClear */ GLuint IndexMask; /**< Color index write mask */ GLubyte ColorMask[MAX_DRAW_BUFFERS][4];/**< Each flag is 0xff or 0x0 */ @@ -704,6 +705,7 @@ struct gl_colorbuffer_attrib /*@{*/ GLboolean AlphaEnabled; /**< Alpha test enabled flag */ GLenum AlphaFunc; /**< Alpha test function */ + GLfloat AlphaRefUnclamped; GLclampf AlphaRef; /**< Alpha reference value */ /*@}*/ @@ -712,7 +714,14 @@ struct gl_colorbuffer_attrib */ /*@{*/ GLbitfield BlendEnabled; /**< Per-buffer blend enable flags */ + + /* NOTE: this does _not_ depend on fragment clamping or any other clamping control, + * only on the fixed-pointness of the render target. + * The query does however depend on fragment color clamping. + */ + GLfloat BlendColorUnclamped[4]; /**< Blending color */ GLfloat BlendColor[4]; /**< Blending color */ + struct { GLenum SrcRGB; /**< RGB blend source term */ @@ -741,7 +750,9 @@ struct gl_colorbuffer_attrib GLboolean DitherFlag; /**< Dither enable flag */ GLenum ClampFragmentColor; /**< GL_TRUE, GL_FALSE or GL_FIXED_ONLY_ARB */ + GLboolean _ClampFragmentColor; /** < with GL_FIXED_ONLY_ARB resolved */ GLenum ClampReadColor; /**< GL_TRUE, GL_FALSE or GL_FIXED_ONLY_ARB */ + GLboolean _ClampReadColor; /** < with GL_FIXED_ONLY_ARB resolved */ GLboolean sRGBEnabled; /**< Framebuffer sRGB blending/updating requested */ }; @@ -840,6 +851,7 @@ struct gl_eval_attrib struct gl_fog_attrib { GLboolean Enabled; /**< Fog enabled flag */ + GLfloat ColorUnclamped[4]; /**< Fog color */ GLfloat Color[4]; /**< Fog color */ GLfloat Density; /**< Density >= 0.0 */ GLfloat Start; /**< Start distance in eye coords */ @@ -921,6 +933,7 @@ struct gl_light_attrib GLbitfield ColorMaterialBitmask; /**< bitmask formed from Face and Mode */ GLboolean ColorMaterialEnabled; GLenum ClampVertexColor; + GLboolean _ClampVertexColor; struct gl_light EnabledList; /**< List sentinel */ @@ -1126,6 +1139,7 @@ struct gl_stencil_attrib */ typedef enum { + TEXTURE_BUFFER_INDEX, TEXTURE_2D_ARRAY_INDEX, TEXTURE_1D_ARRAY_INDEX, TEXTURE_CUBE_INDEX, @@ -1142,6 +1156,7 @@ typedef enum * Used for Texture.Unit[]._ReallyEnabled flags. */ /*@{*/ +#define TEXTURE_BUFFER_BIT (1 << TEXTURE_BUFFER_INDEX) #define TEXTURE_2D_ARRAY_BIT (1 << TEXTURE_2D_ARRAY_INDEX) #define TEXTURE_1D_ARRAY_BIT (1 << TEXTURE_1D_ARRAY_INDEX) #define TEXTURE_CUBE_BIT (1 << TEXTURE_CUBE_INDEX) @@ -1290,37 +1305,58 @@ typedef enum /** - * Texture object state. Contains the array of mipmap images, border color, - * wrap modes, filter modes, shadow/texcompare state, and the per-texture - * color palette. + * Sampler object state. These objects are new with GL_ARB_sampler_objects + * and OpenGL 3.3. Legacy texture objects also contain a sampler object. */ -struct gl_texture_object +struct gl_sampler_object { - _glthread_Mutex Mutex; /**< for thread safety */ - GLint RefCount; /**< reference count */ - GLuint Name; /**< the user-visible texture object ID */ - GLenum Target; /**< GL_TEXTURE_1D, GL_TEXTURE_2D, etc. */ - GLfloat Priority; /**< in [0,1] */ - union { - GLfloat f[4]; - GLuint ui[4]; - GLint i[4]; - } BorderColor; /**< Interpreted according to texture format */ + GLuint Name; + GLint RefCount; + GLenum WrapS; /**< S-axis texture image wrap mode */ GLenum WrapT; /**< T-axis texture image wrap mode */ GLenum WrapR; /**< R-axis texture image wrap mode */ GLenum MinFilter; /**< minification filter */ GLenum MagFilter; /**< magnification filter */ + union { + GLfloat f[4]; + GLuint ui[4]; + GLint i[4]; + } BorderColor; /**< Interpreted according to texture format */ GLfloat MinLod; /**< min lambda, OpenGL 1.2 */ GLfloat MaxLod; /**< max lambda, OpenGL 1.2 */ GLfloat LodBias; /**< OpenGL 1.4 */ - GLint BaseLevel; /**< min mipmap level, OpenGL 1.2 */ - GLint MaxLevel; /**< max mipmap level, OpenGL 1.2 */ GLfloat MaxAnisotropy; /**< GL_EXT_texture_filter_anisotropic */ GLenum CompareMode; /**< GL_ARB_shadow */ GLenum CompareFunc; /**< GL_ARB_shadow */ GLfloat CompareFailValue; /**< GL_ARB_shadow_ambient */ + GLenum sRGBDecode; /**< GL_DECODE_EXT or GL_SKIP_DECODE_EXT */ + + /* deprecated sampler state */ GLenum DepthMode; /**< GL_ARB_depth_texture */ + + /** Is the texture object complete with respect to this sampler? */ + GLboolean _CompleteTexture; +}; + + +/** + * Texture object state. Contains the array of mipmap images, border color, + * wrap modes, filter modes, shadow/texcompare state, and the per-texture + * color palette. + */ +struct gl_texture_object +{ + _glthread_Mutex Mutex; /**< for thread safety */ + GLint RefCount; /**< reference count */ + GLuint Name; /**< the user-visible texture object ID */ + GLenum Target; /**< GL_TEXTURE_1D, GL_TEXTURE_2D, etc. */ + + struct gl_sampler_object Sampler; + + GLfloat Priority; /**< in [0,1] */ + GLint BaseLevel; /**< min mipmap level, OpenGL 1.2 */ + GLint MaxLevel; /**< max mipmap level, OpenGL 1.2 */ GLint _MaxLevel; /**< actual max mipmap level (q in the spec) */ GLfloat _MaxLambda; /**< = _MaxLevel - BaseLevel (q - b in spec) */ GLint CropRect[4]; /**< GL_OES_draw_texture */ @@ -1330,11 +1366,14 @@ struct gl_texture_object GLboolean _Complete; /**< Is texture object complete? */ GLboolean _RenderToTexture; /**< Any rendering to this texture? */ GLboolean Purgeable; /**< Is the buffer purgeable under memory pressure? */ - GLenum sRGBDecode; /**< GL_DECODE_EXT or GL_SKIP_DECODE_EXT */ /** Actual texture images, indexed by [cube face] and [mipmap level] */ struct gl_texture_image *Image[MAX_FACES][MAX_TEXTURE_LEVELS]; + /** GL_ARB_texture_buffer_object */ + struct gl_buffer_object *BufferObject; + GLenum BufferObjectFormat; + /** GL_EXT_paletted_texture */ struct gl_color_table Palette; @@ -1396,7 +1435,8 @@ struct gl_texture_unit GLbitfield _ReallyEnabled; /**< 0 or exactly one of TEXTURE_*_BIT flags */ GLenum EnvMode; /**< GL_MODULATE, GL_DECAL, GL_BLEND, etc. */ - GLfloat EnvColor[4]; + GLclampf EnvColor[4]; + GLfloat EnvColorUnclamped[4]; struct gl_texgen GenS; struct gl_texgen GenT; @@ -1409,6 +1449,9 @@ struct gl_texture_unit GLenum BumpTarget; GLfloat RotMatrix[4]; /* 2x2 matrix */ + /** Current sampler object (GL_ARB_sampler_objects) */ + struct gl_sampler_object *Sampler; + /** * \name GL_EXT_texture_env_combine */ @@ -1444,6 +1487,9 @@ struct gl_texture_attrib struct gl_texture_object *ProxyTex[NUM_TEXTURE_TARGETS]; + /** GL_ARB_texture_buffer_object */ + struct gl_buffer_object *BufferObject; + /** GL_ARB_seamless_cubemap */ GLboolean CubeMapSeamless; @@ -1877,7 +1923,6 @@ struct gl_geometry_program struct gl_fragment_program { struct gl_program Base; /**< base class */ - GLenum FogOption; GLboolean UsesKill; /**< shader uses KIL instruction */ GLboolean OriginUpperLeft; GLboolean PixelCenterInteger; @@ -2340,6 +2385,9 @@ struct gl_shared_state /* GL_ARB_sync */ struct simple_node SyncObjects; + /** GL_ARB_sampler_objects */ + struct _mesa_HashTable *SamplerObjects; + void *DriverData; /**< Device driver shared state */ }; @@ -2357,27 +2405,26 @@ struct gl_shared_state */ struct gl_renderbuffer { -#define RB_MAGIC 0xaabbccdd - int Magic; /** XXX TEMPORARY DEBUG INFO */ _glthread_Mutex Mutex; /**< for thread safety */ GLuint ClassID; /**< Useful for drivers */ GLuint Name; GLint RefCount; GLuint Width, Height; + GLint RowStride; /**< Padded width in units of pixels */ GLboolean Purgeable; /**< Is the buffer purgeable under memory pressure? */ + GLboolean AttachedAnytime; /**< TRUE if it was attached to a framebuffer */ + + GLubyte NumSamples; + GLenum InternalFormat; /**< The user-specified format */ GLenum _BaseFormat; /**< Either GL_RGB, GL_RGBA, GL_DEPTH_COMPONENT or GL_STENCIL_INDEX. */ gl_format Format; /**< The actual renderbuffer memory format */ - GLubyte NumSamples; - GLenum DataType; /**< Type of values passed to the Get/Put functions */ GLvoid *Data; /**< This may not be used by some kinds of RBs */ - GLboolean AttachedAnytime; /**< TRUE if it was attached to a framebuffer */ - /* Used to wrap one renderbuffer around another: */ struct gl_renderbuffer *Wrapped; @@ -2616,6 +2663,7 @@ struct gl_constants GLuint MaxTextureUnits; /**< = MIN(CoordUnits, ImageUnits) */ GLfloat MaxTextureMaxAnisotropy; /**< GL_EXT_texture_filter_anisotropic */ GLfloat MaxTextureLodBias; /**< GL_EXT_texture_lod_bias */ + GLuint MaxTextureBufferSize; /**< GL_ARB_texture_buffer_object */ GLuint MaxArrayLockSize; @@ -2704,6 +2752,7 @@ struct gl_extensions GLboolean dummy_false; /* Set false by _mesa_init_extensions(). */ GLboolean ARB_ES2_compatibility; GLboolean ARB_blend_func_extended; + GLboolean ARB_color_buffer_float; GLboolean ARB_copy_buffer; GLboolean ARB_depth_buffer_float; GLboolean ARB_depth_clamp; @@ -2813,6 +2862,7 @@ struct gl_extensions GLboolean EXT_texture_lod_bias; GLboolean EXT_texture_mirror_clamp; GLboolean EXT_texture_shared_exponent; + GLboolean EXT_texture_snorm; GLboolean EXT_texture_sRGB; GLboolean EXT_texture_sRGB_decode; GLboolean EXT_texture_swizzle; @@ -2840,7 +2890,6 @@ struct gl_extensions GLboolean MESA_resize_buffers; GLboolean MESA_ycbcr_texture; GLboolean MESA_texture_array; - GLboolean MESA_texture_signed_rgba; GLboolean NV_blend_square; GLboolean NV_conditional_render; GLboolean NV_fragment_program; @@ -2933,6 +2982,7 @@ struct gl_matrix_stack #define _NEW_PROGRAM (1 << 26) /**< New program/shader state */ #define _NEW_PROGRAM_CONSTANTS (1 << 27) #define _NEW_BUFFER_OBJECT (1 << 28) +#define _NEW_FRAG_CLAMP (1 << 29) #define _NEW_ALL ~0 /*@}*/ @@ -3022,11 +3072,6 @@ struct gl_matrix_stack _NEW_POINT | \ _NEW_PROGRAM | \ _NEW_MODELVIEW) - -#define _MESA_NEW_NEED_NORMALS (_NEW_LIGHT | \ - _NEW_TEXTURE) - -#define _MESA_NEW_TRANSFER_STATE (_NEW_PIXEL) /*@}*/ diff --git a/src/mesa/main/pack.c b/src/mesa/main/pack.c index 512835cb803..4bb0a90045e 100644 --- a/src/mesa/main/pack.c +++ b/src/mesa/main/pack.c @@ -504,17 +504,6 @@ _mesa_pack_rgba_span_float(struct gl_context *ctx, GLuint n, GLfloat rgba[][4], luminance = NULL; } - /* XXX - * This test should probably go away. Have the caller set/clear the - * IMAGE_CLAMP_BIT as needed. - */ - if (dstType != GL_FLOAT || ctx->Color.ClampReadColor == GL_TRUE) { - if (!intDstFormat) { - /* need to clamp to [0, 1] */ - transferOps |= IMAGE_CLAMP_BIT; - } - } - if (transferOps) { _mesa_apply_rgba_transfer_ops(ctx, transferOps, n, rgba); } @@ -3984,7 +3973,8 @@ _mesa_unpack_dudv_span_byte( struct gl_context *ctx, GLbitfield transferOps ) { ASSERT(dstFormat == GL_DUDV_ATI); - ASSERT(srcFormat == GL_DUDV_ATI); + ASSERT(srcFormat == GL_DUDV_ATI || + srcFormat == GL_DU8DV8_ATI); ASSERT(srcType == GL_UNSIGNED_BYTE || srcType == GL_BYTE || diff --git a/src/mesa/main/pbo.c b/src/mesa/main/pbo.c index dc00d423ba9..56b26a954bd 100644 --- a/src/mesa/main/pbo.c +++ b/src/mesa/main/pbo.c @@ -81,8 +81,8 @@ _mesa_validate_pbo_access(GLuint dimensions, format, type, 0, 0, 0); /* get address just past the last pixel we'll read */ - end = _mesa_image_address(dimensions, pack, ptr, width, height, - format, type, depth-1, height-1, width); + end = _mesa_image_address(dimensions, pack, ptr, width, height, + format, type, depth-1, height-1, width); sizeAddr = ((const GLubyte *) 0) + pack->BufferObj->Size; diff --git a/src/mesa/main/pixel.c b/src/mesa/main/pixel.c index 195fa234be2..da99c9b6f35 100644 --- a/src/mesa/main/pixel.c +++ b/src/mesa/main/pixel.c @@ -617,7 +617,7 @@ update_image_transfer_state(struct gl_context *ctx) */ void _mesa_update_pixel( struct gl_context *ctx, GLuint new_state ) { - if (new_state & _MESA_NEW_TRANSFER_STATE) + if (new_state & _NEW_PIXEL) update_image_transfer_state(ctx); } diff --git a/src/mesa/main/readpix.c b/src/mesa/main/readpix.c index 6e09a52c88a..a172a0000f5 100644 --- a/src/mesa/main/readpix.c +++ b/src/mesa/main/readpix.c @@ -44,8 +44,8 @@ * \return GL_TRUE if error detected, GL_FALSE if no errors */ GLboolean -_mesa_error_check_format_type(struct gl_context *ctx, GLenum format, GLenum type, - GLboolean drawing) +_mesa_error_check_format_type(struct gl_context *ctx, GLenum format, + GLenum type, GLboolean drawing) { const char *readDraw = drawing ? "Draw" : "Read"; const GLboolean reading = !drawing; diff --git a/src/mesa/main/remap_helper.h b/src/mesa/main/remap_helper.h index 61530df3e1a..72a2f1e0b81 100644 --- a/src/mesa/main/remap_helper.h +++ b/src/mesa/main/remap_helper.h @@ -70,4710 +70,4774 @@ static const char _mesa_function_pool[] = "\0" "glLoadIdentity\0" "\0" - /* _mesa_function_pool[216]: GetCombinerOutputParameterfvNV (will be remapped) */ - "iiip\0" - "glGetCombinerOutputParameterfvNV\0" - "\0" - /* _mesa_function_pool[255]: SampleCoverageARB (will be remapped) */ + /* _mesa_function_pool[216]: SampleCoverageARB (will be remapped) */ "fi\0" "glSampleCoverage\0" "glSampleCoverageARB\0" "\0" - /* _mesa_function_pool[296]: ConvolutionFilter1D (offset 348) */ + /* _mesa_function_pool[257]: ConvolutionFilter1D (offset 348) */ "iiiiip\0" "glConvolutionFilter1D\0" "glConvolutionFilter1DEXT\0" "\0" - /* _mesa_function_pool[351]: BeginQueryARB (will be remapped) */ + /* _mesa_function_pool[312]: BeginQueryARB (will be remapped) */ "ii\0" "glBeginQuery\0" "glBeginQueryARB\0" "\0" - /* _mesa_function_pool[384]: RasterPos3dv (offset 71) */ + /* _mesa_function_pool[345]: RasterPos3dv (offset 71) */ "p\0" "glRasterPos3dv\0" "\0" - /* _mesa_function_pool[402]: PointParameteriNV (will be remapped) */ + /* _mesa_function_pool[363]: PointParameteriNV (will be remapped) */ "ii\0" "glPointParameteri\0" "glPointParameteriNV\0" "\0" - /* _mesa_function_pool[444]: GetProgramiv (will be remapped) */ + /* _mesa_function_pool[405]: GetProgramiv (will be remapped) */ "iip\0" "glGetProgramiv\0" "\0" - /* _mesa_function_pool[464]: MultiTexCoord3sARB (offset 398) */ + /* _mesa_function_pool[425]: MultiTexCoord3sARB (offset 398) */ "iiii\0" "glMultiTexCoord3s\0" "glMultiTexCoord3sARB\0" "\0" - /* _mesa_function_pool[509]: SecondaryColor3iEXT (will be remapped) */ + /* _mesa_function_pool[470]: SecondaryColor3iEXT (will be remapped) */ "iii\0" "glSecondaryColor3i\0" "glSecondaryColor3iEXT\0" "\0" - /* _mesa_function_pool[555]: WindowPos3fMESA (will be remapped) */ + /* _mesa_function_pool[516]: WindowPos3fMESA (will be remapped) */ "fff\0" "glWindowPos3f\0" "glWindowPos3fARB\0" "glWindowPos3fMESA\0" "\0" - /* _mesa_function_pool[609]: TexCoord1iv (offset 99) */ + /* _mesa_function_pool[570]: TexCoord1iv (offset 99) */ "p\0" "glTexCoord1iv\0" "\0" - /* _mesa_function_pool[626]: TexCoord4sv (offset 125) */ + /* _mesa_function_pool[587]: TexCoord4sv (offset 125) */ "p\0" "glTexCoord4sv\0" "\0" - /* _mesa_function_pool[643]: RasterPos4s (offset 84) */ + /* _mesa_function_pool[604]: RasterPos4s (offset 84) */ "iiii\0" "glRasterPos4s\0" "\0" - /* _mesa_function_pool[663]: PixelTexGenParameterfvSGIS (will be remapped) */ + /* _mesa_function_pool[624]: PixelTexGenParameterfvSGIS (will be remapped) */ "ip\0" "glPixelTexGenParameterfvSGIS\0" "\0" - /* _mesa_function_pool[696]: ActiveTextureARB (offset 374) */ + /* _mesa_function_pool[657]: ActiveTextureARB (offset 374) */ "i\0" "glActiveTexture\0" "glActiveTextureARB\0" "\0" - /* _mesa_function_pool[734]: BlitFramebufferEXT (will be remapped) */ + /* _mesa_function_pool[695]: BlitFramebufferEXT (will be remapped) */ "iiiiiiiiii\0" "glBlitFramebuffer\0" "glBlitFramebufferEXT\0" "\0" - /* _mesa_function_pool[785]: TexCoord1f (offset 96) */ + /* _mesa_function_pool[746]: TexCoord1f (offset 96) */ "f\0" "glTexCoord1f\0" "\0" - /* _mesa_function_pool[801]: TexCoord1d (offset 94) */ + /* _mesa_function_pool[762]: TexCoord1d (offset 94) */ "d\0" "glTexCoord1d\0" "\0" - /* _mesa_function_pool[817]: VertexAttrib4ubvNV (will be remapped) */ + /* _mesa_function_pool[778]: VertexAttrib4ubvNV (will be remapped) */ "ip\0" "glVertexAttrib4ubvNV\0" "\0" - /* _mesa_function_pool[842]: TexCoord1i (offset 98) */ + /* _mesa_function_pool[803]: TexCoord1i (offset 98) */ "i\0" "glTexCoord1i\0" "\0" - /* _mesa_function_pool[858]: GetProgramNamedParameterdvNV (will be remapped) */ + /* _mesa_function_pool[819]: GetProgramNamedParameterdvNV (will be remapped) */ "iipp\0" "glGetProgramNamedParameterdvNV\0" "\0" - /* _mesa_function_pool[895]: Histogram (offset 367) */ + /* _mesa_function_pool[856]: Histogram (offset 367) */ "iiii\0" "glHistogram\0" "glHistogramEXT\0" "\0" - /* _mesa_function_pool[928]: TexCoord1s (offset 100) */ + /* _mesa_function_pool[889]: TexCoord1s (offset 100) */ "i\0" "glTexCoord1s\0" "\0" - /* _mesa_function_pool[944]: GetMapfv (offset 267) */ + /* _mesa_function_pool[905]: GetMapfv (offset 267) */ "iip\0" "glGetMapfv\0" "\0" - /* _mesa_function_pool[960]: EvalCoord1f (offset 230) */ + /* _mesa_function_pool[921]: EvalCoord1f (offset 230) */ "f\0" "glEvalCoord1f\0" "\0" - /* _mesa_function_pool[977]: FramebufferTexture (will be remapped) */ + /* _mesa_function_pool[938]: FramebufferTexture (will be remapped) */ "iiii\0" "glFramebufferTexture\0" "\0" - /* _mesa_function_pool[1004]: VertexAttribI1ivEXT (will be remapped) */ + /* _mesa_function_pool[965]: VertexAttribI1ivEXT (will be remapped) */ "ip\0" "glVertexAttribI1ivEXT\0" "glVertexAttribI1iv\0" "\0" - /* _mesa_function_pool[1049]: TexImage4DSGIS (dynamic) */ + /* _mesa_function_pool[1010]: TexImage4DSGIS (dynamic) */ "iiiiiiiiiip\0" "glTexImage4DSGIS\0" "\0" - /* _mesa_function_pool[1079]: PolygonStipple (offset 175) */ + /* _mesa_function_pool[1040]: PolygonStipple (offset 175) */ "p\0" "glPolygonStipple\0" "\0" - /* _mesa_function_pool[1099]: WindowPos2dvMESA (will be remapped) */ + /* _mesa_function_pool[1060]: WindowPos2dvMESA (will be remapped) */ "p\0" "glWindowPos2dv\0" "glWindowPos2dvARB\0" "glWindowPos2dvMESA\0" "\0" - /* _mesa_function_pool[1154]: ReplacementCodeuiColor3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[1115]: ReplacementCodeuiColor3fVertex3fvSUN (dynamic) */ "ppp\0" "glReplacementCodeuiColor3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[1198]: BlendEquationSeparateEXT (will be remapped) */ + /* _mesa_function_pool[1159]: BlendEquationSeparateEXT (will be remapped) */ "ii\0" "glBlendEquationSeparate\0" "glBlendEquationSeparateEXT\0" "glBlendEquationSeparateATI\0" "\0" - /* _mesa_function_pool[1280]: ListParameterfSGIX (dynamic) */ + /* _mesa_function_pool[1241]: ListParameterfSGIX (dynamic) */ "iif\0" "glListParameterfSGIX\0" "\0" - /* _mesa_function_pool[1306]: SecondaryColor3bEXT (will be remapped) */ + /* _mesa_function_pool[1267]: SecondaryColor3bEXT (will be remapped) */ "iii\0" "glSecondaryColor3b\0" "glSecondaryColor3bEXT\0" "\0" - /* _mesa_function_pool[1352]: TexCoord4fColor4fNormal3fVertex4fvSUN (dynamic) */ + /* _mesa_function_pool[1313]: TexCoord4fColor4fNormal3fVertex4fvSUN (dynamic) */ "pppp\0" "glTexCoord4fColor4fNormal3fVertex4fvSUN\0" "\0" - /* _mesa_function_pool[1398]: GetPixelMapfv (offset 271) */ + /* _mesa_function_pool[1359]: GetPixelMapfv (offset 271) */ "ip\0" "glGetPixelMapfv\0" "\0" - /* _mesa_function_pool[1418]: Color3uiv (offset 22) */ + /* _mesa_function_pool[1379]: Color3uiv (offset 22) */ "p\0" "glColor3uiv\0" "\0" - /* _mesa_function_pool[1433]: IsEnabled (offset 286) */ + /* _mesa_function_pool[1394]: IsEnabled (offset 286) */ "i\0" "glIsEnabled\0" "\0" - /* _mesa_function_pool[1448]: VertexAttrib4svNV (will be remapped) */ + /* _mesa_function_pool[1409]: VertexAttrib4svNV (will be remapped) */ "ip\0" "glVertexAttrib4svNV\0" "\0" - /* _mesa_function_pool[1472]: EvalCoord2fv (offset 235) */ + /* _mesa_function_pool[1433]: EvalCoord2fv (offset 235) */ "p\0" "glEvalCoord2fv\0" "\0" - /* _mesa_function_pool[1490]: GetBufferSubDataARB (will be remapped) */ + /* _mesa_function_pool[1451]: GetBufferSubDataARB (will be remapped) */ "iiip\0" "glGetBufferSubData\0" "glGetBufferSubDataARB\0" "\0" - /* _mesa_function_pool[1537]: BufferSubDataARB (will be remapped) */ + /* _mesa_function_pool[1498]: BufferSubDataARB (will be remapped) */ "iiip\0" "glBufferSubData\0" "glBufferSubDataARB\0" "\0" - /* _mesa_function_pool[1578]: TexCoord2fColor4ubVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[1539]: TexCoord2fColor4ubVertex3fvSUN (dynamic) */ "ppp\0" "glTexCoord2fColor4ubVertex3fvSUN\0" "\0" - /* _mesa_function_pool[1616]: AttachShader (will be remapped) */ + /* _mesa_function_pool[1577]: AttachShader (will be remapped) */ "ii\0" "glAttachShader\0" "\0" - /* _mesa_function_pool[1635]: VertexAttrib2fARB (will be remapped) */ + /* _mesa_function_pool[1596]: VertexAttrib2fARB (will be remapped) */ "iff\0" "glVertexAttrib2f\0" "glVertexAttrib2fARB\0" "\0" - /* _mesa_function_pool[1677]: GetDebugLogLengthMESA (dynamic) */ + /* _mesa_function_pool[1638]: GetDebugLogLengthMESA (dynamic) */ "iii\0" "glGetDebugLogLengthMESA\0" "\0" - /* _mesa_function_pool[1706]: GetMapiv (offset 268) */ + /* _mesa_function_pool[1667]: GetMapiv (offset 268) */ "iip\0" "glGetMapiv\0" "\0" - /* _mesa_function_pool[1722]: VertexAttrib3fARB (will be remapped) */ + /* _mesa_function_pool[1683]: VertexAttrib3fARB (will be remapped) */ "ifff\0" "glVertexAttrib3f\0" "glVertexAttrib3fARB\0" "\0" - /* _mesa_function_pool[1765]: Indexubv (offset 316) */ + /* _mesa_function_pool[1726]: Indexubv (offset 316) */ "p\0" "glIndexubv\0" "\0" - /* _mesa_function_pool[1779]: GetQueryivARB (will be remapped) */ + /* _mesa_function_pool[1740]: GetQueryivARB (will be remapped) */ "iip\0" "glGetQueryiv\0" "glGetQueryivARB\0" "\0" - /* _mesa_function_pool[1813]: TexImage3D (offset 371) */ + /* _mesa_function_pool[1774]: TexImage3D (offset 371) */ "iiiiiiiiip\0" "glTexImage3D\0" "glTexImage3DEXT\0" "\0" - /* _mesa_function_pool[1854]: BindFragDataLocationEXT (will be remapped) */ + /* _mesa_function_pool[1815]: BindFragDataLocationEXT (will be remapped) */ "iip\0" "glBindFragDataLocationEXT\0" "glBindFragDataLocation\0" "\0" - /* _mesa_function_pool[1908]: ReplacementCodeuiVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[1869]: ReplacementCodeuiVertex3fvSUN (dynamic) */ "pp\0" "glReplacementCodeuiVertex3fvSUN\0" "\0" - /* _mesa_function_pool[1944]: EdgeFlagPointer (offset 312) */ + /* _mesa_function_pool[1905]: EdgeFlagPointer (offset 312) */ "ip\0" "glEdgeFlagPointer\0" "\0" - /* _mesa_function_pool[1966]: Color3ubv (offset 20) */ + /* _mesa_function_pool[1927]: Color3ubv (offset 20) */ "p\0" "glColor3ubv\0" "\0" - /* _mesa_function_pool[1981]: GetQueryObjectivARB (will be remapped) */ + /* _mesa_function_pool[1942]: GetQueryObjectivARB (will be remapped) */ "iip\0" "glGetQueryObjectiv\0" "glGetQueryObjectivARB\0" "\0" - /* _mesa_function_pool[2027]: Vertex3dv (offset 135) */ + /* _mesa_function_pool[1988]: Vertex3dv (offset 135) */ "p\0" "glVertex3dv\0" "\0" - /* _mesa_function_pool[2042]: ReplacementCodeuiTexCoord2fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[2003]: ReplacementCodeuiTexCoord2fVertex3fvSUN (dynamic) */ "ppp\0" "glReplacementCodeuiTexCoord2fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[2089]: CompressedTexSubImage2DARB (will be remapped) */ + /* _mesa_function_pool[2050]: CompressedTexSubImage2DARB (will be remapped) */ "iiiiiiiip\0" "glCompressedTexSubImage2D\0" "glCompressedTexSubImage2DARB\0" "\0" - /* _mesa_function_pool[2155]: CombinerOutputNV (will be remapped) */ + /* _mesa_function_pool[2116]: CombinerOutputNV (will be remapped) */ "iiiiiiiiii\0" "glCombinerOutputNV\0" "\0" - /* _mesa_function_pool[2186]: VertexAttribs3fvNV (will be remapped) */ + /* _mesa_function_pool[2147]: VertexAttribs3fvNV (will be remapped) */ "iip\0" "glVertexAttribs3fvNV\0" "\0" - /* _mesa_function_pool[2212]: Uniform2fARB (will be remapped) */ + /* _mesa_function_pool[2173]: Uniform2fARB (will be remapped) */ "iff\0" "glUniform2f\0" "glUniform2fARB\0" "\0" - /* _mesa_function_pool[2244]: LightModeliv (offset 166) */ + /* _mesa_function_pool[2205]: LightModeliv (offset 166) */ "ip\0" "glLightModeliv\0" "\0" - /* _mesa_function_pool[2263]: VertexAttrib1svARB (will be remapped) */ + /* _mesa_function_pool[2224]: VertexAttrib1svARB (will be remapped) */ "ip\0" "glVertexAttrib1sv\0" "glVertexAttrib1svARB\0" "\0" - /* _mesa_function_pool[2306]: VertexAttribs1dvNV (will be remapped) */ + /* _mesa_function_pool[2267]: VertexAttribs1dvNV (will be remapped) */ "iip\0" "glVertexAttribs1dvNV\0" "\0" - /* _mesa_function_pool[2332]: Uniform2ivARB (will be remapped) */ + /* _mesa_function_pool[2293]: Uniform2ivARB (will be remapped) */ "iip\0" "glUniform2iv\0" "glUniform2ivARB\0" "\0" - /* _mesa_function_pool[2366]: GetImageTransformParameterfvHP (dynamic) */ + /* _mesa_function_pool[2327]: GetImageTransformParameterfvHP (dynamic) */ "iip\0" "glGetImageTransformParameterfvHP\0" "\0" - /* _mesa_function_pool[2404]: Normal3bv (offset 53) */ + /* _mesa_function_pool[2365]: Normal3bv (offset 53) */ "p\0" "glNormal3bv\0" "\0" - /* _mesa_function_pool[2419]: TexGeniv (offset 193) */ + /* _mesa_function_pool[2380]: TexGeniv (offset 193) */ "iip\0" "glTexGeniv\0" "\0" - /* _mesa_function_pool[2435]: WeightubvARB (dynamic) */ + /* _mesa_function_pool[2396]: WeightubvARB (dynamic) */ "ip\0" "glWeightubvARB\0" "\0" - /* _mesa_function_pool[2454]: VertexAttrib1fvNV (will be remapped) */ + /* _mesa_function_pool[2415]: VertexAttrib1fvNV (will be remapped) */ "ip\0" "glVertexAttrib1fvNV\0" "\0" - /* _mesa_function_pool[2478]: Vertex3iv (offset 139) */ + /* _mesa_function_pool[2439]: Vertex3iv (offset 139) */ "p\0" "glVertex3iv\0" "\0" - /* _mesa_function_pool[2493]: CopyConvolutionFilter1D (offset 354) */ + /* _mesa_function_pool[2454]: CopyConvolutionFilter1D (offset 354) */ "iiiii\0" "glCopyConvolutionFilter1D\0" "glCopyConvolutionFilter1DEXT\0" "\0" - /* _mesa_function_pool[2555]: VertexAttribI1uiEXT (will be remapped) */ + /* _mesa_function_pool[2516]: VertexAttribI1uiEXT (will be remapped) */ "ii\0" "glVertexAttribI1uiEXT\0" "glVertexAttribI1ui\0" "\0" - /* _mesa_function_pool[2600]: ReplacementCodeuiNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[2561]: ReplacementCodeuiNormal3fVertex3fSUN (dynamic) */ "iffffff\0" "glReplacementCodeuiNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[2648]: DeleteSync (will be remapped) */ + /* _mesa_function_pool[2609]: DeleteSync (will be remapped) */ "i\0" "glDeleteSync\0" "\0" - /* _mesa_function_pool[2664]: FragmentMaterialfvSGIX (dynamic) */ + /* _mesa_function_pool[2625]: FragmentMaterialfvSGIX (dynamic) */ "iip\0" "glFragmentMaterialfvSGIX\0" "\0" - /* _mesa_function_pool[2694]: BlendColor (offset 336) */ + /* _mesa_function_pool[2655]: BlendColor (offset 336) */ "ffff\0" "glBlendColor\0" "glBlendColorEXT\0" "\0" - /* _mesa_function_pool[2729]: UniformMatrix4fvARB (will be remapped) */ + /* _mesa_function_pool[2690]: UniformMatrix4fvARB (will be remapped) */ "iiip\0" "glUniformMatrix4fv\0" "glUniformMatrix4fvARB\0" "\0" - /* _mesa_function_pool[2776]: DeleteVertexArraysAPPLE (will be remapped) */ + /* _mesa_function_pool[2737]: DeleteVertexArraysAPPLE (will be remapped) */ "ip\0" "glDeleteVertexArrays\0" "glDeleteVertexArraysAPPLE\0" "\0" - /* _mesa_function_pool[2827]: TexBuffer (will be remapped) */ + /* _mesa_function_pool[2788]: TexBuffer (will be remapped) */ "iii\0" "glTexBuffer\0" "\0" - /* _mesa_function_pool[2844]: ReadInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[2805]: ReadInstrumentsSGIX (dynamic) */ "i\0" "glReadInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[2869]: CallLists (offset 3) */ + /* _mesa_function_pool[2830]: CallLists (offset 3) */ "iip\0" "glCallLists\0" "\0" - /* _mesa_function_pool[2886]: UniformMatrix2x4fv (will be remapped) */ + /* _mesa_function_pool[2847]: UniformMatrix2x4fv (will be remapped) */ "iiip\0" "glUniformMatrix2x4fv\0" "\0" - /* _mesa_function_pool[2913]: Color4ubVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[2874]: Color4ubVertex3fvSUN (dynamic) */ "pp\0" "glColor4ubVertex3fvSUN\0" "\0" - /* _mesa_function_pool[2940]: Normal3iv (offset 59) */ + /* _mesa_function_pool[2901]: Normal3iv (offset 59) */ "p\0" "glNormal3iv\0" "\0" - /* _mesa_function_pool[2955]: PassThrough (offset 199) */ + /* _mesa_function_pool[2916]: PassThrough (offset 199) */ "f\0" "glPassThrough\0" "\0" - /* _mesa_function_pool[2972]: GetVertexAttribIivEXT (will be remapped) */ + /* _mesa_function_pool[2933]: GetVertexAttribIivEXT (will be remapped) */ "iip\0" "glGetVertexAttribIivEXT\0" "glGetVertexAttribIiv\0" "\0" - /* _mesa_function_pool[3022]: TexParameterIivEXT (will be remapped) */ + /* _mesa_function_pool[2983]: TexParameterIivEXT (will be remapped) */ "iip\0" "glTexParameterIivEXT\0" "glTexParameterIiv\0" "\0" - /* _mesa_function_pool[3066]: FramebufferTextureLayerEXT (will be remapped) */ + /* _mesa_function_pool[3027]: FramebufferTextureLayerEXT (will be remapped) */ "iiiii\0" "glFramebufferTextureLayer\0" "glFramebufferTextureLayerEXT\0" "\0" - /* _mesa_function_pool[3128]: GetListParameterfvSGIX (dynamic) */ + /* _mesa_function_pool[3089]: GetListParameterfvSGIX (dynamic) */ "iip\0" "glGetListParameterfvSGIX\0" "\0" - /* _mesa_function_pool[3158]: Viewport (offset 305) */ + /* _mesa_function_pool[3119]: Viewport (offset 305) */ "iiii\0" "glViewport\0" "\0" - /* _mesa_function_pool[3175]: VertexAttrib4NusvARB (will be remapped) */ + /* _mesa_function_pool[3136]: VertexAttrib4NusvARB (will be remapped) */ "ip\0" "glVertexAttrib4Nusv\0" "glVertexAttrib4NusvARB\0" "\0" - /* _mesa_function_pool[3222]: WindowPos4svMESA (will be remapped) */ + /* _mesa_function_pool[3183]: WindowPos4svMESA (will be remapped) */ "p\0" "glWindowPos4svMESA\0" "\0" - /* _mesa_function_pool[3244]: CreateProgramObjectARB (will be remapped) */ + /* _mesa_function_pool[3205]: CreateProgramObjectARB (will be remapped) */ "\0" "glCreateProgramObjectARB\0" "\0" - /* _mesa_function_pool[3271]: DeleteTransformFeedbacks (will be remapped) */ + /* _mesa_function_pool[3232]: DeleteTransformFeedbacks (will be remapped) */ "ip\0" "glDeleteTransformFeedbacks\0" "\0" - /* _mesa_function_pool[3302]: UniformMatrix4x3fv (will be remapped) */ + /* _mesa_function_pool[3263]: UniformMatrix4x3fv (will be remapped) */ "iiip\0" "glUniformMatrix4x3fv\0" "\0" - /* _mesa_function_pool[3329]: PrioritizeTextures (offset 331) */ + /* _mesa_function_pool[3290]: PrioritizeTextures (offset 331) */ "ipp\0" "glPrioritizeTextures\0" "glPrioritizeTexturesEXT\0" "\0" - /* _mesa_function_pool[3379]: VertexAttribI3uiEXT (will be remapped) */ + /* _mesa_function_pool[3340]: VertexAttribI3uiEXT (will be remapped) */ "iiii\0" "glVertexAttribI3uiEXT\0" "glVertexAttribI3ui\0" "\0" - /* _mesa_function_pool[3426]: AsyncMarkerSGIX (dynamic) */ + /* _mesa_function_pool[3387]: AsyncMarkerSGIX (dynamic) */ "i\0" "glAsyncMarkerSGIX\0" "\0" - /* _mesa_function_pool[3447]: GlobalAlphaFactorubSUN (dynamic) */ + /* _mesa_function_pool[3408]: GlobalAlphaFactorubSUN (dynamic) */ "i\0" "glGlobalAlphaFactorubSUN\0" "\0" - /* _mesa_function_pool[3475]: ClearColorIuiEXT (will be remapped) */ + /* _mesa_function_pool[3436]: ClearColorIuiEXT (will be remapped) */ "iiii\0" "glClearColorIuiEXT\0" "\0" - /* _mesa_function_pool[3500]: ClearDebugLogMESA (dynamic) */ + /* _mesa_function_pool[3461]: ClearDebugLogMESA (dynamic) */ "iii\0" "glClearDebugLogMESA\0" "\0" - /* _mesa_function_pool[3525]: Uniform4uiEXT (will be remapped) */ + /* _mesa_function_pool[3486]: Uniform4uiEXT (will be remapped) */ "iiiii\0" "glUniform4uiEXT\0" "glUniform4ui\0" "\0" - /* _mesa_function_pool[3561]: ResetHistogram (offset 369) */ + /* _mesa_function_pool[3522]: ResetHistogram (offset 369) */ "i\0" "glResetHistogram\0" "glResetHistogramEXT\0" "\0" - /* _mesa_function_pool[3601]: GetProgramNamedParameterfvNV (will be remapped) */ + /* _mesa_function_pool[3562]: GetProgramNamedParameterfvNV (will be remapped) */ "iipp\0" "glGetProgramNamedParameterfvNV\0" "\0" - /* _mesa_function_pool[3638]: PointParameterfEXT (will be remapped) */ + /* _mesa_function_pool[3599]: PointParameterfEXT (will be remapped) */ "if\0" "glPointParameterf\0" "glPointParameterfARB\0" "glPointParameterfEXT\0" "glPointParameterfSGIS\0" "\0" - /* _mesa_function_pool[3724]: LoadIdentityDeformationMapSGIX (dynamic) */ + /* _mesa_function_pool[3685]: LoadIdentityDeformationMapSGIX (dynamic) */ "i\0" "glLoadIdentityDeformationMapSGIX\0" "\0" - /* _mesa_function_pool[3760]: GenFencesNV (will be remapped) */ + /* _mesa_function_pool[3721]: GenFencesNV (will be remapped) */ "ip\0" "glGenFencesNV\0" "\0" - /* _mesa_function_pool[3778]: ImageTransformParameterfHP (dynamic) */ + /* _mesa_function_pool[3739]: ImageTransformParameterfHP (dynamic) */ "iif\0" "glImageTransformParameterfHP\0" "\0" - /* _mesa_function_pool[3812]: MatrixIndexusvARB (dynamic) */ + /* _mesa_function_pool[3773]: MatrixIndexusvARB (dynamic) */ "ip\0" "glMatrixIndexusvARB\0" "\0" - /* _mesa_function_pool[3836]: DrawElementsBaseVertex (will be remapped) */ + /* _mesa_function_pool[3797]: DrawElementsBaseVertex (will be remapped) */ "iiipi\0" "glDrawElementsBaseVertex\0" "\0" - /* _mesa_function_pool[3868]: DisableVertexAttribArrayARB (will be remapped) */ + /* _mesa_function_pool[3829]: DisableVertexAttribArrayARB (will be remapped) */ "i\0" "glDisableVertexAttribArray\0" "glDisableVertexAttribArrayARB\0" "\0" - /* _mesa_function_pool[3928]: TexCoord2sv (offset 109) */ + /* _mesa_function_pool[3889]: TexCoord2sv (offset 109) */ "p\0" "glTexCoord2sv\0" "\0" - /* _mesa_function_pool[3945]: Vertex4dv (offset 143) */ + /* _mesa_function_pool[3906]: Vertex4dv (offset 143) */ "p\0" "glVertex4dv\0" "\0" - /* _mesa_function_pool[3960]: StencilMaskSeparate (will be remapped) */ + /* _mesa_function_pool[3921]: StencilMaskSeparate (will be remapped) */ "ii\0" "glStencilMaskSeparate\0" "\0" - /* _mesa_function_pool[3986]: ProgramLocalParameter4dARB (will be remapped) */ + /* _mesa_function_pool[3947]: ProgramLocalParameter4dARB (will be remapped) */ "iidddd\0" "glProgramLocalParameter4dARB\0" "\0" - /* _mesa_function_pool[4023]: CompressedTexImage3DARB (will be remapped) */ + /* _mesa_function_pool[3984]: CompressedTexImage3DARB (will be remapped) */ "iiiiiiiip\0" "glCompressedTexImage3D\0" "glCompressedTexImage3DARB\0" "\0" - /* _mesa_function_pool[4083]: Color3sv (offset 18) */ + /* _mesa_function_pool[4044]: Color3sv (offset 18) */ "p\0" "glColor3sv\0" "\0" - /* _mesa_function_pool[4097]: GetConvolutionParameteriv (offset 358) */ + /* _mesa_function_pool[4058]: GetConvolutionParameteriv (offset 358) */ "iip\0" "glGetConvolutionParameteriv\0" "glGetConvolutionParameterivEXT\0" "\0" - /* _mesa_function_pool[4161]: VertexAttrib1fARB (will be remapped) */ + /* _mesa_function_pool[4122]: DeleteSamplers (will be remapped) */ + "ip\0" + "glDeleteSamplers\0" + "\0" + /* _mesa_function_pool[4143]: VertexAttrib1fARB (will be remapped) */ "if\0" "glVertexAttrib1f\0" "glVertexAttrib1fARB\0" "\0" - /* _mesa_function_pool[4202]: Vertex2dv (offset 127) */ + /* _mesa_function_pool[4184]: Vertex2dv (offset 127) */ "p\0" "glVertex2dv\0" "\0" - /* _mesa_function_pool[4217]: TestFenceNV (will be remapped) */ + /* _mesa_function_pool[4199]: TestFenceNV (will be remapped) */ "i\0" "glTestFenceNV\0" "\0" - /* _mesa_function_pool[4234]: MultiTexCoord1fvARB (offset 379) */ + /* _mesa_function_pool[4216]: GetVertexAttribIuivEXT (will be remapped) */ + "iip\0" + "glGetVertexAttribIuivEXT\0" + "glGetVertexAttribIuiv\0" + "\0" + /* _mesa_function_pool[4268]: MultiTexCoord1fvARB (offset 379) */ "ip\0" "glMultiTexCoord1fv\0" "glMultiTexCoord1fvARB\0" "\0" - /* _mesa_function_pool[4279]: TexCoord3iv (offset 115) */ + /* _mesa_function_pool[4313]: TexCoord3iv (offset 115) */ "p\0" "glTexCoord3iv\0" "\0" - /* _mesa_function_pool[4296]: Uniform2uivEXT (will be remapped) */ + /* _mesa_function_pool[4330]: Uniform2uivEXT (will be remapped) */ "iip\0" "glUniform2uivEXT\0" "glUniform2uiv\0" "\0" - /* _mesa_function_pool[4332]: ColorFragmentOp2ATI (will be remapped) */ + /* _mesa_function_pool[4366]: ColorFragmentOp2ATI (will be remapped) */ "iiiiiiiiii\0" "glColorFragmentOp2ATI\0" "\0" - /* _mesa_function_pool[4366]: SecondaryColorPointerListIBM (dynamic) */ + /* _mesa_function_pool[4400]: SecondaryColorPointerListIBM (dynamic) */ "iiipi\0" "glSecondaryColorPointerListIBM\0" "\0" - /* _mesa_function_pool[4404]: GetPixelTexGenParameterivSGIS (will be remapped) */ + /* _mesa_function_pool[4438]: GetPixelTexGenParameterivSGIS (will be remapped) */ "ip\0" "glGetPixelTexGenParameterivSGIS\0" "\0" - /* _mesa_function_pool[4440]: Color3fv (offset 14) */ + /* _mesa_function_pool[4474]: Color3fv (offset 14) */ "p\0" "glColor3fv\0" "\0" - /* _mesa_function_pool[4454]: VertexAttrib4fNV (will be remapped) */ + /* _mesa_function_pool[4488]: VertexAttrib4fNV (will be remapped) */ "iffff\0" "glVertexAttrib4fNV\0" "\0" - /* _mesa_function_pool[4480]: ReplacementCodeubSUN (dynamic) */ + /* _mesa_function_pool[4514]: ReplacementCodeubSUN (dynamic) */ "i\0" "glReplacementCodeubSUN\0" "\0" - /* _mesa_function_pool[4506]: FinishAsyncSGIX (dynamic) */ + /* _mesa_function_pool[4540]: FinishAsyncSGIX (dynamic) */ "p\0" "glFinishAsyncSGIX\0" "\0" - /* _mesa_function_pool[4527]: GetDebugLogMESA (dynamic) */ + /* _mesa_function_pool[4561]: GetDebugLogMESA (dynamic) */ "iiiipp\0" "glGetDebugLogMESA\0" "\0" - /* _mesa_function_pool[4553]: FogCoorddEXT (will be remapped) */ + /* _mesa_function_pool[4587]: FogCoorddEXT (will be remapped) */ "d\0" "glFogCoordd\0" "glFogCoorddEXT\0" "\0" - /* _mesa_function_pool[4583]: BeginConditionalRenderNV (will be remapped) */ + /* _mesa_function_pool[4617]: BeginConditionalRenderNV (will be remapped) */ "ii\0" "glBeginConditionalRenderNV\0" "glBeginConditionalRender\0" "\0" - /* _mesa_function_pool[4639]: Color4ubVertex3fSUN (dynamic) */ + /* _mesa_function_pool[4673]: Color4ubVertex3fSUN (dynamic) */ "iiiifff\0" "glColor4ubVertex3fSUN\0" "\0" - /* _mesa_function_pool[4670]: FogCoordfEXT (will be remapped) */ + /* _mesa_function_pool[4704]: FogCoordfEXT (will be remapped) */ "f\0" "glFogCoordf\0" "glFogCoordfEXT\0" "\0" - /* _mesa_function_pool[4700]: PointSize (offset 173) */ + /* _mesa_function_pool[4734]: PointSize (offset 173) */ "f\0" "glPointSize\0" "\0" - /* _mesa_function_pool[4715]: VertexAttribI2uivEXT (will be remapped) */ + /* _mesa_function_pool[4749]: VertexAttribI2uivEXT (will be remapped) */ "ip\0" "glVertexAttribI2uivEXT\0" "glVertexAttribI2uiv\0" "\0" - /* _mesa_function_pool[4762]: TexCoord2fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[4796]: TexCoord2fVertex3fSUN (dynamic) */ "fffff\0" "glTexCoord2fVertex3fSUN\0" "\0" - /* _mesa_function_pool[4793]: PopName (offset 200) */ + /* _mesa_function_pool[4827]: PopName (offset 200) */ "\0" "glPopName\0" "\0" - /* _mesa_function_pool[4805]: GlobalAlphaFactoriSUN (dynamic) */ + /* _mesa_function_pool[4839]: GetSamplerParameterfv (will be remapped) */ + "iip\0" + "glGetSamplerParameterfv\0" + "\0" + /* _mesa_function_pool[4868]: GlobalAlphaFactoriSUN (dynamic) */ "i\0" "glGlobalAlphaFactoriSUN\0" "\0" - /* _mesa_function_pool[4832]: VertexAttrib2dNV (will be remapped) */ + /* _mesa_function_pool[4895]: VertexAttrib2dNV (will be remapped) */ "idd\0" "glVertexAttrib2dNV\0" "\0" - /* _mesa_function_pool[4856]: GetProgramInfoLog (will be remapped) */ + /* _mesa_function_pool[4919]: GetProgramInfoLog (will be remapped) */ "iipp\0" "glGetProgramInfoLog\0" "\0" - /* _mesa_function_pool[4882]: VertexAttrib4NbvARB (will be remapped) */ + /* _mesa_function_pool[4945]: VertexAttrib4NbvARB (will be remapped) */ "ip\0" "glVertexAttrib4Nbv\0" "glVertexAttrib4NbvARB\0" "\0" - /* _mesa_function_pool[4927]: GetActiveAttribARB (will be remapped) */ + /* _mesa_function_pool[4990]: GetActiveAttribARB (will be remapped) */ "iiipppp\0" "glGetActiveAttrib\0" "glGetActiveAttribARB\0" "\0" - /* _mesa_function_pool[4975]: Vertex4sv (offset 149) */ + /* _mesa_function_pool[5038]: Vertex4sv (offset 149) */ "p\0" "glVertex4sv\0" "\0" - /* _mesa_function_pool[4990]: VertexAttrib4ubNV (will be remapped) */ + /* _mesa_function_pool[5053]: VertexAttrib4ubNV (will be remapped) */ "iiiii\0" "glVertexAttrib4ubNV\0" "\0" - /* _mesa_function_pool[5017]: ClampColor (will be remapped) */ + /* _mesa_function_pool[5080]: ClampColor (will be remapped) */ "ii\0" "glClampColor\0" "\0" - /* _mesa_function_pool[5034]: TextureRangeAPPLE (will be remapped) */ + /* _mesa_function_pool[5097]: TextureRangeAPPLE (will be remapped) */ "iip\0" "glTextureRangeAPPLE\0" "\0" - /* _mesa_function_pool[5059]: GetTexEnvfv (offset 276) */ + /* _mesa_function_pool[5122]: GetTexEnvfv (offset 276) */ "iip\0" "glGetTexEnvfv\0" "\0" - /* _mesa_function_pool[5078]: BindTransformFeedback (will be remapped) */ + /* _mesa_function_pool[5141]: BindTransformFeedback (will be remapped) */ "ii\0" "glBindTransformFeedback\0" "\0" - /* _mesa_function_pool[5106]: TexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[5169]: TexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */ "ffffffffffff\0" "glTexCoord2fColor4fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[5159]: Indexub (offset 315) */ + /* _mesa_function_pool[5222]: Indexub (offset 315) */ "i\0" "glIndexub\0" "\0" - /* _mesa_function_pool[5172]: ColorMaskIndexedEXT (will be remapped) */ - "iiiii\0" - "glColorMaskIndexedEXT\0" - "glColorMaski\0" - "\0" - /* _mesa_function_pool[5214]: TexEnvi (offset 186) */ + /* _mesa_function_pool[5235]: TexEnvi (offset 186) */ "iii\0" "glTexEnvi\0" "\0" - /* _mesa_function_pool[5229]: GetClipPlane (offset 259) */ + /* _mesa_function_pool[5250]: GetClipPlane (offset 259) */ "ip\0" "glGetClipPlane\0" "\0" - /* _mesa_function_pool[5248]: CombinerParameterfvNV (will be remapped) */ + /* _mesa_function_pool[5269]: CombinerParameterfvNV (will be remapped) */ "ip\0" "glCombinerParameterfvNV\0" "\0" - /* _mesa_function_pool[5276]: VertexAttribs3dvNV (will be remapped) */ + /* _mesa_function_pool[5297]: VertexAttribs3dvNV (will be remapped) */ "iip\0" "glVertexAttribs3dvNV\0" "\0" - /* _mesa_function_pool[5302]: VertexAttribI2uiEXT (will be remapped) */ + /* _mesa_function_pool[5323]: VertexAttribI2uiEXT (will be remapped) */ "iii\0" "glVertexAttribI2uiEXT\0" "glVertexAttribI2ui\0" "\0" - /* _mesa_function_pool[5348]: VertexAttribs4fvNV (will be remapped) */ + /* _mesa_function_pool[5369]: VertexAttribs4fvNV (will be remapped) */ "iip\0" "glVertexAttribs4fvNV\0" "\0" - /* _mesa_function_pool[5374]: VertexArrayRangeNV (will be remapped) */ + /* _mesa_function_pool[5395]: VertexArrayRangeNV (will be remapped) */ "ip\0" "glVertexArrayRangeNV\0" "\0" - /* _mesa_function_pool[5399]: FragmentLightiSGIX (dynamic) */ + /* _mesa_function_pool[5420]: FragmentLightiSGIX (dynamic) */ "iii\0" "glFragmentLightiSGIX\0" "\0" - /* _mesa_function_pool[5425]: PolygonOffsetEXT (will be remapped) */ + /* _mesa_function_pool[5446]: PolygonOffsetEXT (will be remapped) */ "ff\0" "glPolygonOffsetEXT\0" "\0" - /* _mesa_function_pool[5448]: VertexAttribI4uivEXT (will be remapped) */ + /* _mesa_function_pool[5469]: VertexAttribI4uivEXT (will be remapped) */ "ip\0" "glVertexAttribI4uivEXT\0" "glVertexAttribI4uiv\0" "\0" - /* _mesa_function_pool[5495]: PollAsyncSGIX (dynamic) */ + /* _mesa_function_pool[5516]: PollAsyncSGIX (dynamic) */ "p\0" "glPollAsyncSGIX\0" "\0" - /* _mesa_function_pool[5514]: DeleteFragmentShaderATI (will be remapped) */ + /* _mesa_function_pool[5535]: DeleteFragmentShaderATI (will be remapped) */ "i\0" "glDeleteFragmentShaderATI\0" "\0" - /* _mesa_function_pool[5543]: Scaled (offset 301) */ + /* _mesa_function_pool[5564]: Scaled (offset 301) */ "ddd\0" "glScaled\0" "\0" - /* _mesa_function_pool[5557]: ResumeTransformFeedback (will be remapped) */ + /* _mesa_function_pool[5578]: ResumeTransformFeedback (will be remapped) */ "\0" "glResumeTransformFeedback\0" "\0" - /* _mesa_function_pool[5585]: Scalef (offset 302) */ + /* _mesa_function_pool[5606]: Scalef (offset 302) */ "fff\0" "glScalef\0" "\0" - /* _mesa_function_pool[5599]: TexCoord2fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[5620]: TexCoord2fNormal3fVertex3fvSUN (dynamic) */ "ppp\0" "glTexCoord2fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[5637]: MultTransposeMatrixdARB (will be remapped) */ + /* _mesa_function_pool[5658]: ProgramEnvParameters4fvEXT (will be remapped) */ + "iiip\0" + "glProgramEnvParameters4fvEXT\0" + "\0" + /* _mesa_function_pool[5693]: MultTransposeMatrixdARB (will be remapped) */ "p\0" "glMultTransposeMatrixd\0" "glMultTransposeMatrixdARB\0" "\0" - /* _mesa_function_pool[5689]: ObjectUnpurgeableAPPLE (will be remapped) */ + /* _mesa_function_pool[5745]: ColorMaskIndexedEXT (will be remapped) */ + "iiiii\0" + "glColorMaskIndexedEXT\0" + "glColorMaski\0" + "\0" + /* _mesa_function_pool[5787]: ObjectUnpurgeableAPPLE (will be remapped) */ "iii\0" "glObjectUnpurgeableAPPLE\0" "\0" - /* _mesa_function_pool[5719]: AlphaFunc (offset 240) */ + /* _mesa_function_pool[5817]: AlphaFunc (offset 240) */ "if\0" "glAlphaFunc\0" "\0" - /* _mesa_function_pool[5735]: WindowPos2svMESA (will be remapped) */ + /* _mesa_function_pool[5833]: WindowPos2svMESA (will be remapped) */ "p\0" "glWindowPos2sv\0" "glWindowPos2svARB\0" "glWindowPos2svMESA\0" "\0" - /* _mesa_function_pool[5790]: EdgeFlag (offset 41) */ + /* _mesa_function_pool[5888]: EdgeFlag (offset 41) */ "i\0" "glEdgeFlag\0" "\0" - /* _mesa_function_pool[5804]: TexCoord2iv (offset 107) */ + /* _mesa_function_pool[5902]: TexCoord2iv (offset 107) */ "p\0" "glTexCoord2iv\0" "\0" - /* _mesa_function_pool[5821]: CompressedTexImage1DARB (will be remapped) */ + /* _mesa_function_pool[5919]: CompressedTexImage1DARB (will be remapped) */ "iiiiiip\0" "glCompressedTexImage1D\0" "glCompressedTexImage1DARB\0" "\0" - /* _mesa_function_pool[5879]: Rotated (offset 299) */ + /* _mesa_function_pool[5977]: Rotated (offset 299) */ "dddd\0" "glRotated\0" "\0" - /* _mesa_function_pool[5895]: GetTexParameterIuivEXT (will be remapped) */ + /* _mesa_function_pool[5993]: GetTexParameterIuivEXT (will be remapped) */ "iip\0" "glGetTexParameterIuivEXT\0" "glGetTexParameterIuiv\0" "\0" - /* _mesa_function_pool[5947]: VertexAttrib2sNV (will be remapped) */ + /* _mesa_function_pool[6045]: VertexAttrib2sNV (will be remapped) */ "iii\0" "glVertexAttrib2sNV\0" "\0" - /* _mesa_function_pool[5971]: ReadPixels (offset 256) */ + /* _mesa_function_pool[6069]: ReadPixels (offset 256) */ "iiiiiip\0" "glReadPixels\0" "\0" - /* _mesa_function_pool[5993]: EdgeFlagv (offset 42) */ + /* _mesa_function_pool[6091]: EdgeFlagv (offset 42) */ "p\0" "glEdgeFlagv\0" "\0" - /* _mesa_function_pool[6008]: NormalPointerListIBM (dynamic) */ + /* _mesa_function_pool[6106]: NormalPointerListIBM (dynamic) */ "iipi\0" "glNormalPointerListIBM\0" "\0" - /* _mesa_function_pool[6037]: IndexPointerEXT (will be remapped) */ + /* _mesa_function_pool[6135]: IndexPointerEXT (will be remapped) */ "iiip\0" "glIndexPointerEXT\0" "\0" - /* _mesa_function_pool[6061]: Color4iv (offset 32) */ + /* _mesa_function_pool[6159]: Color4iv (offset 32) */ "p\0" "glColor4iv\0" "\0" - /* _mesa_function_pool[6075]: TexParameterf (offset 178) */ + /* _mesa_function_pool[6173]: TexParameterf (offset 178) */ "iif\0" "glTexParameterf\0" "\0" - /* _mesa_function_pool[6096]: TexParameteri (offset 180) */ + /* _mesa_function_pool[6194]: TexParameteri (offset 180) */ "iii\0" "glTexParameteri\0" "\0" - /* _mesa_function_pool[6117]: NormalPointerEXT (will be remapped) */ + /* _mesa_function_pool[6215]: NormalPointerEXT (will be remapped) */ "iiip\0" "glNormalPointerEXT\0" "\0" - /* _mesa_function_pool[6142]: MultiTexCoord3dARB (offset 392) */ + /* _mesa_function_pool[6240]: MultiTexCoord3dARB (offset 392) */ "iddd\0" "glMultiTexCoord3d\0" "glMultiTexCoord3dARB\0" "\0" - /* _mesa_function_pool[6187]: MultiTexCoord2iARB (offset 388) */ + /* _mesa_function_pool[6285]: MultiTexCoord2iARB (offset 388) */ "iii\0" "glMultiTexCoord2i\0" "glMultiTexCoord2iARB\0" "\0" - /* _mesa_function_pool[6231]: DrawPixels (offset 257) */ + /* _mesa_function_pool[6329]: DrawPixels (offset 257) */ "iiiip\0" "glDrawPixels\0" "\0" - /* _mesa_function_pool[6251]: ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[6349]: ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (dynamic) */ "iffffffff\0" "glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[6311]: MultiTexCoord2svARB (offset 391) */ + /* _mesa_function_pool[6409]: MultiTexCoord2svARB (offset 391) */ "ip\0" "glMultiTexCoord2sv\0" "glMultiTexCoord2svARB\0" "\0" - /* _mesa_function_pool[6356]: ReplacementCodeubvSUN (dynamic) */ + /* _mesa_function_pool[6454]: ReplacementCodeubvSUN (dynamic) */ "p\0" "glReplacementCodeubvSUN\0" "\0" - /* _mesa_function_pool[6383]: Uniform3iARB (will be remapped) */ + /* _mesa_function_pool[6481]: Uniform3iARB (will be remapped) */ "iiii\0" "glUniform3i\0" "glUniform3iARB\0" "\0" - /* _mesa_function_pool[6416]: DrawTransformFeedback (will be remapped) */ + /* _mesa_function_pool[6514]: DrawTransformFeedback (will be remapped) */ "ii\0" "glDrawTransformFeedback\0" "\0" - /* _mesa_function_pool[6444]: DrawElementsInstancedARB (will be remapped) */ + /* _mesa_function_pool[6542]: DrawElementsInstancedARB (will be remapped) */ "iiipi\0" "glDrawElementsInstancedARB\0" "glDrawElementsInstancedEXT\0" "glDrawElementsInstanced\0" "\0" - /* _mesa_function_pool[6529]: GetShaderInfoLog (will be remapped) */ + /* _mesa_function_pool[6627]: GetShaderInfoLog (will be remapped) */ "iipp\0" "glGetShaderInfoLog\0" "\0" - /* _mesa_function_pool[6554]: WeightivARB (dynamic) */ + /* _mesa_function_pool[6652]: WeightivARB (dynamic) */ "ip\0" "glWeightivARB\0" "\0" - /* _mesa_function_pool[6572]: PollInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[6670]: PollInstrumentsSGIX (dynamic) */ "p\0" "glPollInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[6597]: GlobalAlphaFactordSUN (dynamic) */ + /* _mesa_function_pool[6695]: GlobalAlphaFactordSUN (dynamic) */ "d\0" "glGlobalAlphaFactordSUN\0" "\0" - /* _mesa_function_pool[6624]: GetFinalCombinerInputParameterfvNV (will be remapped) */ + /* _mesa_function_pool[6722]: GetFinalCombinerInputParameterfvNV (will be remapped) */ "iip\0" "glGetFinalCombinerInputParameterfvNV\0" "\0" - /* _mesa_function_pool[6666]: GenerateMipmapEXT (will be remapped) */ + /* _mesa_function_pool[6764]: GenerateMipmapEXT (will be remapped) */ "i\0" "glGenerateMipmap\0" "glGenerateMipmapEXT\0" "\0" - /* _mesa_function_pool[6706]: GenLists (offset 5) */ + /* _mesa_function_pool[6804]: GenLists (offset 5) */ "i\0" "glGenLists\0" "\0" - /* _mesa_function_pool[6720]: DepthRangef (will be remapped) */ + /* _mesa_function_pool[6818]: DepthRangef (will be remapped) */ "ff\0" "glDepthRangef\0" "\0" - /* _mesa_function_pool[6738]: GetMapAttribParameterivNV (dynamic) */ + /* _mesa_function_pool[6836]: GetMapAttribParameterivNV (dynamic) */ "iiip\0" "glGetMapAttribParameterivNV\0" "\0" - /* _mesa_function_pool[6772]: CreateShaderObjectARB (will be remapped) */ + /* _mesa_function_pool[6870]: CreateShaderObjectARB (will be remapped) */ "i\0" "glCreateShaderObjectARB\0" "\0" - /* _mesa_function_pool[6799]: GetSharpenTexFuncSGIS (dynamic) */ + /* _mesa_function_pool[6897]: GetSharpenTexFuncSGIS (dynamic) */ "ip\0" "glGetSharpenTexFuncSGIS\0" "\0" - /* _mesa_function_pool[6827]: BufferDataARB (will be remapped) */ + /* _mesa_function_pool[6925]: BufferDataARB (will be remapped) */ "iipi\0" "glBufferData\0" "glBufferDataARB\0" "\0" - /* _mesa_function_pool[6862]: FlushVertexArrayRangeNV (will be remapped) */ + /* _mesa_function_pool[6960]: FlushVertexArrayRangeNV (will be remapped) */ "\0" "glFlushVertexArrayRangeNV\0" "\0" - /* _mesa_function_pool[6890]: MapGrid2d (offset 226) */ + /* _mesa_function_pool[6988]: MapGrid2d (offset 226) */ "iddidd\0" "glMapGrid2d\0" "\0" - /* _mesa_function_pool[6910]: MapGrid2f (offset 227) */ + /* _mesa_function_pool[7008]: MapGrid2f (offset 227) */ "iffiff\0" "glMapGrid2f\0" "\0" - /* _mesa_function_pool[6930]: SampleMapATI (will be remapped) */ + /* _mesa_function_pool[7028]: SampleMapATI (will be remapped) */ "iii\0" "glSampleMapATI\0" "\0" - /* _mesa_function_pool[6950]: VertexPointerEXT (will be remapped) */ + /* _mesa_function_pool[7048]: VertexPointerEXT (will be remapped) */ "iiiip\0" "glVertexPointerEXT\0" "\0" - /* _mesa_function_pool[6976]: GetTexFilterFuncSGIS (dynamic) */ + /* _mesa_function_pool[7074]: GetTexFilterFuncSGIS (dynamic) */ "iip\0" "glGetTexFilterFuncSGIS\0" "\0" - /* _mesa_function_pool[7004]: Scissor (offset 176) */ + /* _mesa_function_pool[7102]: Scissor (offset 176) */ "iiii\0" "glScissor\0" "\0" - /* _mesa_function_pool[7020]: Fogf (offset 153) */ + /* _mesa_function_pool[7118]: Fogf (offset 153) */ "if\0" "glFogf\0" "\0" - /* _mesa_function_pool[7031]: ReplacementCodeuiColor4ubVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[7129]: ReplacementCodeuiColor4ubVertex3fvSUN (dynamic) */ "ppp\0" "glReplacementCodeuiColor4ubVertex3fvSUN\0" "\0" - /* _mesa_function_pool[7076]: TexSubImage1D (offset 332) */ + /* _mesa_function_pool[7174]: TexSubImage1D (offset 332) */ "iiiiiip\0" "glTexSubImage1D\0" "glTexSubImage1DEXT\0" "\0" - /* _mesa_function_pool[7120]: VertexAttrib1sARB (will be remapped) */ + /* _mesa_function_pool[7218]: VertexAttrib1sARB (will be remapped) */ "ii\0" "glVertexAttrib1s\0" "glVertexAttrib1sARB\0" "\0" - /* _mesa_function_pool[7161]: FenceSync (will be remapped) */ + /* _mesa_function_pool[7259]: FenceSync (will be remapped) */ "ii\0" "glFenceSync\0" "\0" - /* _mesa_function_pool[7177]: Color4usv (offset 40) */ + /* _mesa_function_pool[7275]: Color4usv (offset 40) */ "p\0" "glColor4usv\0" "\0" - /* _mesa_function_pool[7192]: Fogi (offset 155) */ + /* _mesa_function_pool[7290]: Fogi (offset 155) */ "ii\0" "glFogi\0" "\0" - /* _mesa_function_pool[7203]: DepthRange (offset 288) */ + /* _mesa_function_pool[7301]: DepthRange (offset 288) */ "dd\0" "glDepthRange\0" "\0" - /* _mesa_function_pool[7220]: RasterPos3iv (offset 75) */ + /* _mesa_function_pool[7318]: RasterPos3iv (offset 75) */ "p\0" "glRasterPos3iv\0" "\0" - /* _mesa_function_pool[7238]: FinalCombinerInputNV (will be remapped) */ + /* _mesa_function_pool[7336]: FinalCombinerInputNV (will be remapped) */ "iiii\0" "glFinalCombinerInputNV\0" "\0" - /* _mesa_function_pool[7267]: TexCoord2i (offset 106) */ + /* _mesa_function_pool[7365]: TexCoord2i (offset 106) */ "ii\0" "glTexCoord2i\0" "\0" - /* _mesa_function_pool[7284]: PixelMapfv (offset 251) */ + /* _mesa_function_pool[7382]: PixelMapfv (offset 251) */ "iip\0" "glPixelMapfv\0" "\0" - /* _mesa_function_pool[7302]: Color4ui (offset 37) */ + /* _mesa_function_pool[7400]: Color4ui (offset 37) */ "iiii\0" "glColor4ui\0" "\0" - /* _mesa_function_pool[7319]: RasterPos3s (offset 76) */ + /* _mesa_function_pool[7417]: RasterPos3s (offset 76) */ "iii\0" "glRasterPos3s\0" "\0" - /* _mesa_function_pool[7338]: Color3usv (offset 24) */ + /* _mesa_function_pool[7436]: Color3usv (offset 24) */ "p\0" "glColor3usv\0" "\0" - /* _mesa_function_pool[7353]: FlushRasterSGIX (dynamic) */ + /* _mesa_function_pool[7451]: FlushRasterSGIX (dynamic) */ "\0" "glFlushRasterSGIX\0" "\0" - /* _mesa_function_pool[7373]: TexCoord2f (offset 104) */ + /* _mesa_function_pool[7471]: TexCoord2f (offset 104) */ "ff\0" "glTexCoord2f\0" "\0" - /* _mesa_function_pool[7390]: ReplacementCodeuiTexCoord2fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[7488]: ReplacementCodeuiTexCoord2fVertex3fSUN (dynamic) */ "ifffff\0" "glReplacementCodeuiTexCoord2fVertex3fSUN\0" "\0" - /* _mesa_function_pool[7439]: TexCoord2d (offset 102) */ + /* _mesa_function_pool[7537]: TexCoord2d (offset 102) */ "dd\0" "glTexCoord2d\0" "\0" - /* _mesa_function_pool[7456]: RasterPos3d (offset 70) */ + /* _mesa_function_pool[7554]: RasterPos3d (offset 70) */ "ddd\0" "glRasterPos3d\0" "\0" - /* _mesa_function_pool[7475]: RasterPos3f (offset 72) */ + /* _mesa_function_pool[7573]: RasterPos3f (offset 72) */ "fff\0" "glRasterPos3f\0" "\0" - /* _mesa_function_pool[7494]: Uniform1fARB (will be remapped) */ + /* _mesa_function_pool[7592]: Uniform1fARB (will be remapped) */ "if\0" "glUniform1f\0" "glUniform1fARB\0" "\0" - /* _mesa_function_pool[7525]: AreTexturesResident (offset 322) */ + /* _mesa_function_pool[7623]: AreTexturesResident (offset 322) */ "ipp\0" "glAreTexturesResident\0" "glAreTexturesResidentEXT\0" "\0" - /* _mesa_function_pool[7577]: TexCoord2s (offset 108) */ + /* _mesa_function_pool[7675]: TexCoord2s (offset 108) */ "ii\0" "glTexCoord2s\0" "\0" - /* _mesa_function_pool[7594]: StencilOpSeparate (will be remapped) */ + /* _mesa_function_pool[7692]: StencilOpSeparate (will be remapped) */ "iiii\0" "glStencilOpSeparate\0" "glStencilOpSeparateATI\0" "\0" - /* _mesa_function_pool[7643]: ColorTableParameteriv (offset 341) */ + /* _mesa_function_pool[7741]: ColorTableParameteriv (offset 341) */ "iip\0" "glColorTableParameteriv\0" "glColorTableParameterivSGI\0" "\0" - /* _mesa_function_pool[7699]: FogCoordPointerListIBM (dynamic) */ + /* _mesa_function_pool[7797]: FogCoordPointerListIBM (dynamic) */ "iipi\0" "glFogCoordPointerListIBM\0" "\0" - /* _mesa_function_pool[7730]: WindowPos3dMESA (will be remapped) */ + /* _mesa_function_pool[7828]: WindowPos3dMESA (will be remapped) */ "ddd\0" "glWindowPos3d\0" "glWindowPos3dARB\0" "glWindowPos3dMESA\0" "\0" - /* _mesa_function_pool[7784]: Color4us (offset 39) */ + /* _mesa_function_pool[7882]: Color4us (offset 39) */ "iiii\0" "glColor4us\0" "\0" - /* _mesa_function_pool[7801]: PointParameterfvEXT (will be remapped) */ + /* _mesa_function_pool[7899]: PointParameterfvEXT (will be remapped) */ "ip\0" "glPointParameterfv\0" "glPointParameterfvARB\0" "glPointParameterfvEXT\0" "glPointParameterfvSGIS\0" "\0" - /* _mesa_function_pool[7891]: Color3bv (offset 10) */ + /* _mesa_function_pool[7989]: Color3bv (offset 10) */ "p\0" "glColor3bv\0" "\0" - /* _mesa_function_pool[7905]: WindowPos2fvMESA (will be remapped) */ + /* _mesa_function_pool[8003]: WindowPos2fvMESA (will be remapped) */ "p\0" "glWindowPos2fv\0" "glWindowPos2fvARB\0" "glWindowPos2fvMESA\0" "\0" - /* _mesa_function_pool[7960]: SecondaryColor3bvEXT (will be remapped) */ + /* _mesa_function_pool[8058]: SecondaryColor3bvEXT (will be remapped) */ "p\0" "glSecondaryColor3bv\0" "glSecondaryColor3bvEXT\0" "\0" - /* _mesa_function_pool[8006]: VertexPointerListIBM (dynamic) */ + /* _mesa_function_pool[8104]: VertexPointerListIBM (dynamic) */ "iiipi\0" "glVertexPointerListIBM\0" "\0" - /* _mesa_function_pool[8036]: GetProgramLocalParameterfvARB (will be remapped) */ + /* _mesa_function_pool[8134]: GetProgramLocalParameterfvARB (will be remapped) */ "iip\0" "glGetProgramLocalParameterfvARB\0" "\0" - /* _mesa_function_pool[8073]: FragmentMaterialfSGIX (dynamic) */ + /* _mesa_function_pool[8171]: FragmentMaterialfSGIX (dynamic) */ "iif\0" "glFragmentMaterialfSGIX\0" "\0" - /* _mesa_function_pool[8102]: TexCoord2fNormal3fVertex3fSUN (dynamic) */ - "ffffffff\0" - "glTexCoord2fNormal3fVertex3fSUN\0" + /* _mesa_function_pool[8200]: BindSampler (will be remapped) */ + "ii\0" + "glBindSampler\0" "\0" - /* _mesa_function_pool[8144]: RenderbufferStorageEXT (will be remapped) */ + /* _mesa_function_pool[8218]: RenderbufferStorageEXT (will be remapped) */ "iiii\0" "glRenderbufferStorage\0" "glRenderbufferStorageEXT\0" "\0" - /* _mesa_function_pool[8197]: IsFenceNV (will be remapped) */ + /* _mesa_function_pool[8271]: IsFenceNV (will be remapped) */ "i\0" "glIsFenceNV\0" "\0" - /* _mesa_function_pool[8212]: AttachObjectARB (will be remapped) */ + /* _mesa_function_pool[8286]: AttachObjectARB (will be remapped) */ "ii\0" "glAttachObjectARB\0" "\0" - /* _mesa_function_pool[8234]: GetFragmentLightivSGIX (dynamic) */ + /* _mesa_function_pool[8308]: GetFragmentLightivSGIX (dynamic) */ "iip\0" "glGetFragmentLightivSGIX\0" "\0" - /* _mesa_function_pool[8264]: UniformMatrix2fvARB (will be remapped) */ + /* _mesa_function_pool[8338]: UniformMatrix2fvARB (will be remapped) */ "iiip\0" "glUniformMatrix2fv\0" "glUniformMatrix2fvARB\0" "\0" - /* _mesa_function_pool[8311]: MultiTexCoord2fARB (offset 386) */ + /* _mesa_function_pool[8385]: MultiTexCoord2fARB (offset 386) */ "iff\0" "glMultiTexCoord2f\0" "glMultiTexCoord2fARB\0" "\0" - /* _mesa_function_pool[8355]: ColorTable (offset 339) */ + /* _mesa_function_pool[8429]: ColorTable (offset 339) */ "iiiiip\0" "glColorTable\0" "glColorTableSGI\0" "glColorTableEXT\0" "\0" - /* _mesa_function_pool[8408]: IndexPointer (offset 314) */ + /* _mesa_function_pool[8482]: IndexPointer (offset 314) */ "iip\0" "glIndexPointer\0" "\0" - /* _mesa_function_pool[8428]: Accum (offset 213) */ + /* _mesa_function_pool[8502]: Accum (offset 213) */ "if\0" "glAccum\0" "\0" - /* _mesa_function_pool[8440]: GetTexImage (offset 281) */ + /* _mesa_function_pool[8514]: GetTexImage (offset 281) */ "iiiip\0" "glGetTexImage\0" "\0" - /* _mesa_function_pool[8461]: MapControlPointsNV (dynamic) */ + /* _mesa_function_pool[8535]: MapControlPointsNV (dynamic) */ "iiiiiiiip\0" "glMapControlPointsNV\0" "\0" - /* _mesa_function_pool[8493]: ConvolutionFilter2D (offset 349) */ + /* _mesa_function_pool[8567]: ConvolutionFilter2D (offset 349) */ "iiiiiip\0" "glConvolutionFilter2D\0" "glConvolutionFilter2DEXT\0" "\0" - /* _mesa_function_pool[8549]: Finish (offset 216) */ + /* _mesa_function_pool[8623]: Finish (offset 216) */ "\0" "glFinish\0" "\0" - /* _mesa_function_pool[8560]: MapParameterfvNV (dynamic) */ + /* _mesa_function_pool[8634]: MapParameterfvNV (dynamic) */ "iip\0" "glMapParameterfvNV\0" "\0" - /* _mesa_function_pool[8584]: ClearStencil (offset 207) */ + /* _mesa_function_pool[8658]: ClearStencil (offset 207) */ "i\0" "glClearStencil\0" "\0" - /* _mesa_function_pool[8602]: VertexAttrib3dvARB (will be remapped) */ + /* _mesa_function_pool[8676]: VertexAttrib3dvARB (will be remapped) */ "ip\0" "glVertexAttrib3dv\0" "glVertexAttrib3dvARB\0" "\0" - /* _mesa_function_pool[8645]: Uniform4uivEXT (will be remapped) */ + /* _mesa_function_pool[8719]: Uniform4uivEXT (will be remapped) */ "iip\0" "glUniform4uivEXT\0" "glUniform4uiv\0" "\0" - /* _mesa_function_pool[8681]: HintPGI (dynamic) */ + /* _mesa_function_pool[8755]: HintPGI (dynamic) */ "ii\0" "glHintPGI\0" "\0" - /* _mesa_function_pool[8695]: ConvolutionParameteriv (offset 353) */ + /* _mesa_function_pool[8769]: ConvolutionParameteriv (offset 353) */ "iip\0" "glConvolutionParameteriv\0" "glConvolutionParameterivEXT\0" "\0" - /* _mesa_function_pool[8753]: Color4s (offset 33) */ + /* _mesa_function_pool[8827]: Color4s (offset 33) */ "iiii\0" "glColor4s\0" "\0" - /* _mesa_function_pool[8769]: InterleavedArrays (offset 317) */ + /* _mesa_function_pool[8843]: InterleavedArrays (offset 317) */ "iip\0" "glInterleavedArrays\0" "\0" - /* _mesa_function_pool[8794]: RasterPos2fv (offset 65) */ + /* _mesa_function_pool[8868]: RasterPos2fv (offset 65) */ "p\0" "glRasterPos2fv\0" "\0" - /* _mesa_function_pool[8812]: TexCoord1fv (offset 97) */ + /* _mesa_function_pool[8886]: TexCoord1fv (offset 97) */ "p\0" "glTexCoord1fv\0" "\0" - /* _mesa_function_pool[8829]: Vertex2d (offset 126) */ + /* _mesa_function_pool[8903]: Vertex2d (offset 126) */ "dd\0" "glVertex2d\0" "\0" - /* _mesa_function_pool[8844]: CullParameterdvEXT (dynamic) */ + /* _mesa_function_pool[8918]: CullParameterdvEXT (dynamic) */ "ip\0" "glCullParameterdvEXT\0" "\0" - /* _mesa_function_pool[8869]: ProgramNamedParameter4fNV (will be remapped) */ + /* _mesa_function_pool[8943]: ProgramNamedParameter4fNV (will be remapped) */ "iipffff\0" "glProgramNamedParameter4fNV\0" "\0" - /* _mesa_function_pool[8906]: Color3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[8980]: Color3fVertex3fSUN (dynamic) */ "ffffff\0" "glColor3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[8935]: ProgramEnvParameter4fvARB (will be remapped) */ + /* _mesa_function_pool[9009]: ProgramEnvParameter4fvARB (will be remapped) */ "iip\0" "glProgramEnvParameter4fvARB\0" "glProgramParameter4fvNV\0" "\0" - /* _mesa_function_pool[8992]: Color4i (offset 31) */ + /* _mesa_function_pool[9066]: Color4i (offset 31) */ "iiii\0" "glColor4i\0" "\0" - /* _mesa_function_pool[9008]: Color4f (offset 29) */ + /* _mesa_function_pool[9082]: Color4f (offset 29) */ "ffff\0" "glColor4f\0" "\0" - /* _mesa_function_pool[9024]: RasterPos4fv (offset 81) */ + /* _mesa_function_pool[9098]: RasterPos4fv (offset 81) */ "p\0" "glRasterPos4fv\0" "\0" - /* _mesa_function_pool[9042]: Color4d (offset 27) */ + /* _mesa_function_pool[9116]: Color4d (offset 27) */ "dddd\0" "glColor4d\0" "\0" - /* _mesa_function_pool[9058]: ClearIndex (offset 205) */ + /* _mesa_function_pool[9132]: ClearIndex (offset 205) */ "f\0" "glClearIndex\0" "\0" - /* _mesa_function_pool[9074]: Color4b (offset 25) */ + /* _mesa_function_pool[9148]: Color4b (offset 25) */ "iiii\0" "glColor4b\0" "\0" - /* _mesa_function_pool[9090]: LoadMatrixd (offset 292) */ + /* _mesa_function_pool[9164]: LoadMatrixd (offset 292) */ "p\0" "glLoadMatrixd\0" "\0" - /* _mesa_function_pool[9107]: FragmentLightModeliSGIX (dynamic) */ + /* _mesa_function_pool[9181]: FragmentLightModeliSGIX (dynamic) */ "ii\0" "glFragmentLightModeliSGIX\0" "\0" - /* _mesa_function_pool[9137]: RasterPos2dv (offset 63) */ + /* _mesa_function_pool[9211]: RasterPos2dv (offset 63) */ "p\0" "glRasterPos2dv\0" "\0" - /* _mesa_function_pool[9155]: ConvolutionParameterfv (offset 351) */ + /* _mesa_function_pool[9229]: ConvolutionParameterfv (offset 351) */ "iip\0" "glConvolutionParameterfv\0" "glConvolutionParameterfvEXT\0" "\0" - /* _mesa_function_pool[9213]: TbufferMask3DFX (dynamic) */ + /* _mesa_function_pool[9287]: TbufferMask3DFX (dynamic) */ "i\0" "glTbufferMask3DFX\0" "\0" - /* _mesa_function_pool[9234]: GetTexGendv (offset 278) */ + /* _mesa_function_pool[9308]: GetTexGendv (offset 278) */ "iip\0" "glGetTexGendv\0" "\0" - /* _mesa_function_pool[9253]: GetVertexAttribfvNV (will be remapped) */ + /* _mesa_function_pool[9327]: GetVertexAttribfvNV (will be remapped) */ "iip\0" "glGetVertexAttribfvNV\0" "\0" - /* _mesa_function_pool[9280]: BeginTransformFeedbackEXT (will be remapped) */ + /* _mesa_function_pool[9354]: BeginTransformFeedbackEXT (will be remapped) */ "i\0" "glBeginTransformFeedbackEXT\0" "glBeginTransformFeedback\0" "\0" - /* _mesa_function_pool[9336]: LoadProgramNV (will be remapped) */ + /* _mesa_function_pool[9410]: LoadProgramNV (will be remapped) */ "iiip\0" "glLoadProgramNV\0" "\0" - /* _mesa_function_pool[9358]: WaitSync (will be remapped) */ + /* _mesa_function_pool[9432]: WaitSync (will be remapped) */ "iii\0" "glWaitSync\0" "\0" - /* _mesa_function_pool[9374]: EndList (offset 1) */ + /* _mesa_function_pool[9448]: EndList (offset 1) */ "\0" "glEndList\0" "\0" - /* _mesa_function_pool[9386]: VertexAttrib4fvNV (will be remapped) */ + /* _mesa_function_pool[9460]: VertexAttrib4fvNV (will be remapped) */ "ip\0" "glVertexAttrib4fvNV\0" "\0" - /* _mesa_function_pool[9410]: GetAttachedObjectsARB (will be remapped) */ + /* _mesa_function_pool[9484]: GetAttachedObjectsARB (will be remapped) */ "iipp\0" "glGetAttachedObjectsARB\0" "\0" - /* _mesa_function_pool[9440]: Uniform3fvARB (will be remapped) */ + /* _mesa_function_pool[9514]: Uniform3fvARB (will be remapped) */ "iip\0" "glUniform3fv\0" "glUniform3fvARB\0" "\0" - /* _mesa_function_pool[9474]: EvalCoord1fv (offset 231) */ + /* _mesa_function_pool[9548]: EvalCoord1fv (offset 231) */ "p\0" "glEvalCoord1fv\0" "\0" - /* _mesa_function_pool[9492]: DrawRangeElements (offset 338) */ + /* _mesa_function_pool[9566]: DrawRangeElements (offset 338) */ "iiiiip\0" "glDrawRangeElements\0" "glDrawRangeElementsEXT\0" "\0" - /* _mesa_function_pool[9543]: EvalMesh2 (offset 238) */ + /* _mesa_function_pool[9617]: EvalMesh2 (offset 238) */ "iiiii\0" "glEvalMesh2\0" "\0" - /* _mesa_function_pool[9562]: Vertex4fv (offset 145) */ + /* _mesa_function_pool[9636]: Vertex4fv (offset 145) */ "p\0" "glVertex4fv\0" "\0" - /* _mesa_function_pool[9577]: GenTransformFeedbacks (will be remapped) */ + /* _mesa_function_pool[9651]: GenTransformFeedbacks (will be remapped) */ "ip\0" "glGenTransformFeedbacks\0" "\0" - /* _mesa_function_pool[9605]: SpriteParameterfvSGIX (dynamic) */ + /* _mesa_function_pool[9679]: SpriteParameterfvSGIX (dynamic) */ "ip\0" "glSpriteParameterfvSGIX\0" "\0" - /* _mesa_function_pool[9633]: CheckFramebufferStatusEXT (will be remapped) */ + /* _mesa_function_pool[9707]: CheckFramebufferStatusEXT (will be remapped) */ "i\0" "glCheckFramebufferStatus\0" "glCheckFramebufferStatusEXT\0" "\0" - /* _mesa_function_pool[9689]: GlobalAlphaFactoruiSUN (dynamic) */ + /* _mesa_function_pool[9763]: GlobalAlphaFactoruiSUN (dynamic) */ "i\0" "glGlobalAlphaFactoruiSUN\0" "\0" - /* _mesa_function_pool[9717]: GetHandleARB (will be remapped) */ + /* _mesa_function_pool[9791]: GetHandleARB (will be remapped) */ "i\0" "glGetHandleARB\0" "\0" - /* _mesa_function_pool[9735]: GetVertexAttribivARB (will be remapped) */ + /* _mesa_function_pool[9809]: GetVertexAttribivARB (will be remapped) */ "iip\0" "glGetVertexAttribiv\0" "glGetVertexAttribivARB\0" "\0" - /* _mesa_function_pool[9783]: BlendFunciARB (will be remapped) */ + /* _mesa_function_pool[9857]: BlendFunciARB (will be remapped) */ "iii\0" "glBlendFunciARB\0" "\0" - /* _mesa_function_pool[9804]: GetCombinerInputParameterfvNV (will be remapped) */ + /* _mesa_function_pool[9878]: GetCombinerInputParameterfvNV (will be remapped) */ "iiiip\0" "glGetCombinerInputParameterfvNV\0" "\0" - /* _mesa_function_pool[9843]: GetTexParameterIivEXT (will be remapped) */ + /* _mesa_function_pool[9917]: GetTexParameterIivEXT (will be remapped) */ "iip\0" "glGetTexParameterIivEXT\0" "glGetTexParameterIiv\0" "\0" - /* _mesa_function_pool[9893]: CreateProgram (will be remapped) */ + /* _mesa_function_pool[9967]: CreateProgram (will be remapped) */ "\0" "glCreateProgram\0" "\0" - /* _mesa_function_pool[9911]: LoadTransposeMatrixdARB (will be remapped) */ + /* _mesa_function_pool[9985]: LoadTransposeMatrixdARB (will be remapped) */ "p\0" "glLoadTransposeMatrixd\0" "glLoadTransposeMatrixdARB\0" "\0" - /* _mesa_function_pool[9963]: ReleaseShaderCompiler (will be remapped) */ + /* _mesa_function_pool[10037]: ReleaseShaderCompiler (will be remapped) */ "\0" "glReleaseShaderCompiler\0" "\0" - /* _mesa_function_pool[9989]: GetMinmax (offset 364) */ + /* _mesa_function_pool[10063]: GetMinmax (offset 364) */ "iiiip\0" "glGetMinmax\0" "glGetMinmaxEXT\0" "\0" - /* _mesa_function_pool[10023]: StencilFuncSeparate (will be remapped) */ + /* _mesa_function_pool[10097]: StencilFuncSeparate (will be remapped) */ "iiii\0" "glStencilFuncSeparate\0" "\0" - /* _mesa_function_pool[10051]: SecondaryColor3sEXT (will be remapped) */ + /* _mesa_function_pool[10125]: SecondaryColor3sEXT (will be remapped) */ "iii\0" "glSecondaryColor3s\0" "glSecondaryColor3sEXT\0" "\0" - /* _mesa_function_pool[10097]: Color3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[10171]: Color3fVertex3fvSUN (dynamic) */ "pp\0" "glColor3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[10123]: GetInteger64i_v (will be remapped) */ + /* _mesa_function_pool[10197]: GetInteger64i_v (will be remapped) */ "iip\0" "glGetInteger64i_v\0" "\0" - /* _mesa_function_pool[10146]: Normal3fv (offset 57) */ + /* _mesa_function_pool[10220]: Normal3fv (offset 57) */ "p\0" "glNormal3fv\0" "\0" - /* _mesa_function_pool[10161]: GlobalAlphaFactorbSUN (dynamic) */ + /* _mesa_function_pool[10235]: GlobalAlphaFactorbSUN (dynamic) */ "i\0" "glGlobalAlphaFactorbSUN\0" "\0" - /* _mesa_function_pool[10188]: Color3us (offset 23) */ + /* _mesa_function_pool[10262]: Color3us (offset 23) */ "iii\0" "glColor3us\0" "\0" - /* _mesa_function_pool[10204]: ImageTransformParameterfvHP (dynamic) */ + /* _mesa_function_pool[10278]: ImageTransformParameterfvHP (dynamic) */ "iip\0" "glImageTransformParameterfvHP\0" "\0" - /* _mesa_function_pool[10239]: VertexAttrib4ivARB (will be remapped) */ + /* _mesa_function_pool[10313]: VertexAttrib4ivARB (will be remapped) */ "ip\0" "glVertexAttrib4iv\0" "glVertexAttrib4ivARB\0" "\0" - /* _mesa_function_pool[10282]: End (offset 43) */ + /* _mesa_function_pool[10356]: End (offset 43) */ "\0" "glEnd\0" "\0" - /* _mesa_function_pool[10290]: VertexAttrib3fNV (will be remapped) */ + /* _mesa_function_pool[10364]: VertexAttrib3fNV (will be remapped) */ "ifff\0" "glVertexAttrib3fNV\0" "\0" - /* _mesa_function_pool[10315]: VertexAttribs2dvNV (will be remapped) */ + /* _mesa_function_pool[10389]: VertexAttribs2dvNV (will be remapped) */ "iip\0" "glVertexAttribs2dvNV\0" "\0" - /* _mesa_function_pool[10341]: GetQueryObjectui64vEXT (will be remapped) */ + /* _mesa_function_pool[10415]: GetQueryObjectui64vEXT (will be remapped) */ "iip\0" "glGetQueryObjectui64vEXT\0" "\0" - /* _mesa_function_pool[10371]: MultiTexCoord3fvARB (offset 395) */ + /* _mesa_function_pool[10445]: MultiTexCoord3fvARB (offset 395) */ "ip\0" "glMultiTexCoord3fv\0" "glMultiTexCoord3fvARB\0" "\0" - /* _mesa_function_pool[10416]: SecondaryColor3dEXT (will be remapped) */ + /* _mesa_function_pool[10490]: SecondaryColor3dEXT (will be remapped) */ "ddd\0" "glSecondaryColor3d\0" "glSecondaryColor3dEXT\0" "\0" - /* _mesa_function_pool[10462]: Color3ub (offset 19) */ + /* _mesa_function_pool[10536]: Color3ub (offset 19) */ "iii\0" "glColor3ub\0" "\0" - /* _mesa_function_pool[10478]: GetProgramParameterfvNV (will be remapped) */ + /* _mesa_function_pool[10552]: GetProgramParameterfvNV (will be remapped) */ "iiip\0" "glGetProgramParameterfvNV\0" "\0" - /* _mesa_function_pool[10510]: TangentPointerEXT (dynamic) */ + /* _mesa_function_pool[10584]: TangentPointerEXT (dynamic) */ "iip\0" "glTangentPointerEXT\0" "\0" - /* _mesa_function_pool[10535]: Color4fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[10609]: Color4fNormal3fVertex3fvSUN (dynamic) */ "ppp\0" "glColor4fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[10570]: GetInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[10644]: GetInstrumentsSGIX (dynamic) */ "\0" "glGetInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[10593]: GetUniformuivEXT (will be remapped) */ + /* _mesa_function_pool[10667]: GetUniformuivEXT (will be remapped) */ "iip\0" "glGetUniformuivEXT\0" "glGetUniformuiv\0" "\0" - /* _mesa_function_pool[10633]: Color3ui (offset 21) */ + /* _mesa_function_pool[10707]: Color3ui (offset 21) */ "iii\0" "glColor3ui\0" "\0" - /* _mesa_function_pool[10649]: EvalMapsNV (dynamic) */ + /* _mesa_function_pool[10723]: EvalMapsNV (dynamic) */ "ii\0" "glEvalMapsNV\0" "\0" - /* _mesa_function_pool[10666]: TexSubImage2D (offset 333) */ + /* _mesa_function_pool[10740]: TexSubImage2D (offset 333) */ "iiiiiiiip\0" "glTexSubImage2D\0" "glTexSubImage2DEXT\0" "\0" - /* _mesa_function_pool[10712]: FragmentLightivSGIX (dynamic) */ + /* _mesa_function_pool[10786]: FragmentLightivSGIX (dynamic) */ "iip\0" "glFragmentLightivSGIX\0" "\0" - /* _mesa_function_pool[10739]: GetTexParameterPointervAPPLE (will be remapped) */ + /* _mesa_function_pool[10813]: GetTexParameterPointervAPPLE (will be remapped) */ "iip\0" "glGetTexParameterPointervAPPLE\0" "\0" - /* _mesa_function_pool[10775]: TexGenfv (offset 191) */ + /* _mesa_function_pool[10849]: TexGenfv (offset 191) */ "iip\0" "glTexGenfv\0" "\0" - /* _mesa_function_pool[10791]: GetTransformFeedbackVaryingEXT (will be remapped) */ + /* _mesa_function_pool[10865]: GetTransformFeedbackVaryingEXT (will be remapped) */ "iiipppp\0" "glGetTransformFeedbackVaryingEXT\0" "glGetTransformFeedbackVarying\0" "\0" - /* _mesa_function_pool[10863]: VertexAttrib4bvARB (will be remapped) */ + /* _mesa_function_pool[10937]: VertexAttrib4bvARB (will be remapped) */ "ip\0" "glVertexAttrib4bv\0" "glVertexAttrib4bvARB\0" "\0" - /* _mesa_function_pool[10906]: ShaderBinary (will be remapped) */ + /* _mesa_function_pool[10980]: ShaderBinary (will be remapped) */ "ipipi\0" "glShaderBinary\0" "\0" - /* _mesa_function_pool[10928]: GetIntegerIndexedvEXT (will be remapped) */ + /* _mesa_function_pool[11002]: GetIntegerIndexedvEXT (will be remapped) */ "iip\0" "glGetIntegerIndexedvEXT\0" "glGetIntegeri_v\0" "\0" - /* _mesa_function_pool[10973]: MultiTexCoord4sARB (offset 406) */ + /* _mesa_function_pool[11047]: MultiTexCoord4sARB (offset 406) */ "iiiii\0" "glMultiTexCoord4s\0" "glMultiTexCoord4sARB\0" "\0" - /* _mesa_function_pool[11019]: GetFragmentMaterialivSGIX (dynamic) */ + /* _mesa_function_pool[11093]: GetFragmentMaterialivSGIX (dynamic) */ "iip\0" "glGetFragmentMaterialivSGIX\0" "\0" - /* _mesa_function_pool[11052]: WindowPos4dMESA (will be remapped) */ + /* _mesa_function_pool[11126]: WindowPos4dMESA (will be remapped) */ "dddd\0" "glWindowPos4dMESA\0" "\0" - /* _mesa_function_pool[11076]: WeightPointerARB (dynamic) */ + /* _mesa_function_pool[11150]: WeightPointerARB (dynamic) */ "iiip\0" "glWeightPointerARB\0" "\0" - /* _mesa_function_pool[11101]: WindowPos2dMESA (will be remapped) */ + /* _mesa_function_pool[11175]: WindowPos2dMESA (will be remapped) */ "dd\0" "glWindowPos2d\0" "glWindowPos2dARB\0" "glWindowPos2dMESA\0" "\0" - /* _mesa_function_pool[11154]: FramebufferTexture3DEXT (will be remapped) */ + /* _mesa_function_pool[11228]: FramebufferTexture3DEXT (will be remapped) */ "iiiiii\0" "glFramebufferTexture3D\0" "glFramebufferTexture3DEXT\0" "\0" - /* _mesa_function_pool[11211]: BlendEquation (offset 337) */ + /* _mesa_function_pool[11285]: BlendEquation (offset 337) */ "i\0" "glBlendEquation\0" "glBlendEquationEXT\0" "\0" - /* _mesa_function_pool[11249]: VertexAttrib3dNV (will be remapped) */ + /* _mesa_function_pool[11323]: VertexAttrib3dNV (will be remapped) */ "iddd\0" "glVertexAttrib3dNV\0" "\0" - /* _mesa_function_pool[11274]: VertexAttrib3dARB (will be remapped) */ + /* _mesa_function_pool[11348]: VertexAttrib3dARB (will be remapped) */ "iddd\0" "glVertexAttrib3d\0" "glVertexAttrib3dARB\0" "\0" - /* _mesa_function_pool[11317]: VertexAttribI4usvEXT (will be remapped) */ + /* _mesa_function_pool[11391]: VertexAttribI4usvEXT (will be remapped) */ "ip\0" "glVertexAttribI4usvEXT\0" "glVertexAttribI4usv\0" "\0" - /* _mesa_function_pool[11364]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[11438]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */ "ppppp\0" "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[11428]: VertexAttrib4fARB (will be remapped) */ + /* _mesa_function_pool[11502]: VertexAttrib4fARB (will be remapped) */ "iffff\0" "glVertexAttrib4f\0" "glVertexAttrib4fARB\0" "\0" - /* _mesa_function_pool[11472]: GetError (offset 261) */ + /* _mesa_function_pool[11546]: GetError (offset 261) */ "\0" "glGetError\0" "\0" - /* _mesa_function_pool[11485]: IndexFuncEXT (dynamic) */ + /* _mesa_function_pool[11559]: IndexFuncEXT (dynamic) */ "if\0" "glIndexFuncEXT\0" "\0" - /* _mesa_function_pool[11504]: TexCoord3dv (offset 111) */ + /* _mesa_function_pool[11578]: TexCoord3dv (offset 111) */ "p\0" "glTexCoord3dv\0" "\0" - /* _mesa_function_pool[11521]: Indexdv (offset 45) */ + /* _mesa_function_pool[11595]: Indexdv (offset 45) */ "p\0" "glIndexdv\0" "\0" - /* _mesa_function_pool[11534]: FramebufferTexture2DEXT (will be remapped) */ + /* _mesa_function_pool[11608]: FramebufferTexture2DEXT (will be remapped) */ "iiiii\0" "glFramebufferTexture2D\0" "glFramebufferTexture2DEXT\0" "\0" - /* _mesa_function_pool[11590]: Normal3s (offset 60) */ + /* _mesa_function_pool[11664]: Normal3s (offset 60) */ "iii\0" "glNormal3s\0" "\0" - /* _mesa_function_pool[11606]: GetObjectParameterivAPPLE (will be remapped) */ + /* _mesa_function_pool[11680]: GetObjectParameterivAPPLE (will be remapped) */ "iiip\0" "glGetObjectParameterivAPPLE\0" "\0" - /* _mesa_function_pool[11640]: PushName (offset 201) */ + /* _mesa_function_pool[11714]: PushName (offset 201) */ "i\0" "glPushName\0" "\0" - /* _mesa_function_pool[11654]: MultiTexCoord2dvARB (offset 385) */ + /* _mesa_function_pool[11728]: MultiTexCoord2dvARB (offset 385) */ "ip\0" "glMultiTexCoord2dv\0" "glMultiTexCoord2dvARB\0" "\0" - /* _mesa_function_pool[11699]: CullParameterfvEXT (dynamic) */ + /* _mesa_function_pool[11773]: CullParameterfvEXT (dynamic) */ "ip\0" "glCullParameterfvEXT\0" "\0" - /* _mesa_function_pool[11724]: Normal3i (offset 58) */ + /* _mesa_function_pool[11798]: Normal3i (offset 58) */ "iii\0" "glNormal3i\0" "\0" - /* _mesa_function_pool[11740]: ProgramNamedParameter4fvNV (will be remapped) */ + /* _mesa_function_pool[11814]: ProgramNamedParameter4fvNV (will be remapped) */ "iipp\0" "glProgramNamedParameter4fvNV\0" "\0" - /* _mesa_function_pool[11775]: SecondaryColorPointerEXT (will be remapped) */ + /* _mesa_function_pool[11849]: SecondaryColorPointerEXT (will be remapped) */ "iiip\0" "glSecondaryColorPointer\0" "glSecondaryColorPointerEXT\0" "\0" - /* _mesa_function_pool[11832]: VertexAttrib4fvARB (will be remapped) */ + /* _mesa_function_pool[11906]: VertexAttrib4fvARB (will be remapped) */ "ip\0" "glVertexAttrib4fv\0" "glVertexAttrib4fvARB\0" "\0" - /* _mesa_function_pool[11875]: ColorPointerListIBM (dynamic) */ - "iiipi\0" - "glColorPointerListIBM\0" + /* _mesa_function_pool[11949]: PixelTexGenSGIX (will be remapped) */ + "i\0" + "glPixelTexGenSGIX\0" "\0" - /* _mesa_function_pool[11904]: GetActiveUniformARB (will be remapped) */ + /* _mesa_function_pool[11970]: GetActiveUniformARB (will be remapped) */ "iiipppp\0" "glGetActiveUniform\0" "glGetActiveUniformARB\0" "\0" - /* _mesa_function_pool[11954]: ImageTransformParameteriHP (dynamic) */ + /* _mesa_function_pool[12020]: ImageTransformParameteriHP (dynamic) */ "iii\0" "glImageTransformParameteriHP\0" "\0" - /* _mesa_function_pool[11988]: Normal3b (offset 52) */ + /* _mesa_function_pool[12054]: Normal3b (offset 52) */ "iii\0" "glNormal3b\0" "\0" - /* _mesa_function_pool[12004]: Normal3d (offset 54) */ + /* _mesa_function_pool[12070]: Normal3d (offset 54) */ "ddd\0" "glNormal3d\0" "\0" - /* _mesa_function_pool[12020]: Uniform1uiEXT (will be remapped) */ + /* _mesa_function_pool[12086]: Uniform1uiEXT (will be remapped) */ "ii\0" "glUniform1uiEXT\0" "glUniform1ui\0" "\0" - /* _mesa_function_pool[12053]: Normal3f (offset 56) */ + /* _mesa_function_pool[12119]: Normal3f (offset 56) */ "fff\0" "glNormal3f\0" "\0" - /* _mesa_function_pool[12069]: MultiTexCoord1svARB (offset 383) */ + /* _mesa_function_pool[12135]: MultiTexCoord1svARB (offset 383) */ "ip\0" "glMultiTexCoord1sv\0" "glMultiTexCoord1svARB\0" "\0" - /* _mesa_function_pool[12114]: Indexi (offset 48) */ + /* _mesa_function_pool[12180]: Indexi (offset 48) */ "i\0" "glIndexi\0" "\0" - /* _mesa_function_pool[12126]: EGLImageTargetTexture2DOES (will be remapped) */ + /* _mesa_function_pool[12192]: EGLImageTargetTexture2DOES (will be remapped) */ "ip\0" "glEGLImageTargetTexture2DOES\0" "\0" - /* _mesa_function_pool[12159]: EndQueryARB (will be remapped) */ + /* _mesa_function_pool[12225]: EndQueryARB (will be remapped) */ "i\0" "glEndQuery\0" "glEndQueryARB\0" "\0" - /* _mesa_function_pool[12187]: DeleteFencesNV (will be remapped) */ + /* _mesa_function_pool[12253]: DeleteFencesNV (will be remapped) */ "ip\0" "glDeleteFencesNV\0" "\0" - /* _mesa_function_pool[12208]: DeformationMap3dSGIX (dynamic) */ - "iddiiddiiddiip\0" - "glDeformationMap3dSGIX\0" + /* _mesa_function_pool[12274]: ColorPointerListIBM (dynamic) */ + "iiipi\0" + "glColorPointerListIBM\0" "\0" - /* _mesa_function_pool[12247]: BindBufferRangeEXT (will be remapped) */ + /* _mesa_function_pool[12303]: BindBufferRangeEXT (will be remapped) */ "iiiii\0" "glBindBufferRangeEXT\0" "glBindBufferRange\0" "\0" - /* _mesa_function_pool[12293]: DepthMask (offset 211) */ + /* _mesa_function_pool[12349]: DepthMask (offset 211) */ "i\0" "glDepthMask\0" "\0" - /* _mesa_function_pool[12308]: IsShader (will be remapped) */ + /* _mesa_function_pool[12364]: IsShader (will be remapped) */ "i\0" "glIsShader\0" "\0" - /* _mesa_function_pool[12322]: Indexf (offset 46) */ + /* _mesa_function_pool[12378]: Indexf (offset 46) */ "f\0" "glIndexf\0" "\0" - /* _mesa_function_pool[12334]: GetImageTransformParameterivHP (dynamic) */ + /* _mesa_function_pool[12390]: GetImageTransformParameterivHP (dynamic) */ "iip\0" "glGetImageTransformParameterivHP\0" "\0" - /* _mesa_function_pool[12372]: Indexd (offset 44) */ + /* _mesa_function_pool[12428]: Indexd (offset 44) */ "d\0" "glIndexd\0" "\0" - /* _mesa_function_pool[12384]: GetMaterialiv (offset 270) */ + /* _mesa_function_pool[12440]: GetMaterialiv (offset 270) */ "iip\0" "glGetMaterialiv\0" "\0" - /* _mesa_function_pool[12405]: StencilOp (offset 244) */ + /* _mesa_function_pool[12461]: StencilOp (offset 244) */ "iii\0" "glStencilOp\0" "\0" - /* _mesa_function_pool[12422]: WindowPos4ivMESA (will be remapped) */ + /* _mesa_function_pool[12478]: WindowPos4ivMESA (will be remapped) */ "p\0" "glWindowPos4ivMESA\0" "\0" - /* _mesa_function_pool[12444]: FramebufferTextureLayer (dynamic) */ + /* _mesa_function_pool[12500]: FramebufferTextureLayer (dynamic) */ "iiiii\0" "glFramebufferTextureLayerARB\0" "\0" - /* _mesa_function_pool[12480]: MultiTexCoord3svARB (offset 399) */ + /* _mesa_function_pool[12536]: MultiTexCoord3svARB (offset 399) */ "ip\0" "glMultiTexCoord3sv\0" "glMultiTexCoord3svARB\0" "\0" - /* _mesa_function_pool[12525]: TexEnvfv (offset 185) */ + /* _mesa_function_pool[12581]: TexEnvfv (offset 185) */ "iip\0" "glTexEnvfv\0" "\0" - /* _mesa_function_pool[12541]: MultiTexCoord4iARB (offset 404) */ + /* _mesa_function_pool[12597]: MultiTexCoord4iARB (offset 404) */ "iiiii\0" "glMultiTexCoord4i\0" "glMultiTexCoord4iARB\0" "\0" - /* _mesa_function_pool[12587]: Indexs (offset 50) */ + /* _mesa_function_pool[12643]: Indexs (offset 50) */ "i\0" "glIndexs\0" "\0" - /* _mesa_function_pool[12599]: Binormal3ivEXT (dynamic) */ + /* _mesa_function_pool[12655]: Binormal3ivEXT (dynamic) */ "p\0" "glBinormal3ivEXT\0" "\0" - /* _mesa_function_pool[12619]: ResizeBuffersMESA (will be remapped) */ + /* _mesa_function_pool[12675]: ResizeBuffersMESA (will be remapped) */ "\0" "glResizeBuffersMESA\0" "\0" - /* _mesa_function_pool[12641]: BlendFuncSeparateiARB (will be remapped) */ + /* _mesa_function_pool[12697]: BlendFuncSeparateiARB (will be remapped) */ "iiiii\0" "glBlendFuncSeparateiARB\0" "\0" - /* _mesa_function_pool[12672]: GetUniformivARB (will be remapped) */ + /* _mesa_function_pool[12728]: GetUniformivARB (will be remapped) */ "iip\0" "glGetUniformiv\0" "glGetUniformivARB\0" "\0" - /* _mesa_function_pool[12710]: PixelTexGenParameteriSGIS (will be remapped) */ + /* _mesa_function_pool[12766]: PixelTexGenParameteriSGIS (will be remapped) */ "ii\0" "glPixelTexGenParameteriSGIS\0" "\0" - /* _mesa_function_pool[12742]: VertexPointervINTEL (dynamic) */ + /* _mesa_function_pool[12798]: VertexPointervINTEL (dynamic) */ "iip\0" "glVertexPointervINTEL\0" "\0" - /* _mesa_function_pool[12769]: Vertex2i (offset 130) */ + /* _mesa_function_pool[12825]: Vertex2i (offset 130) */ "ii\0" "glVertex2i\0" "\0" - /* _mesa_function_pool[12784]: LoadMatrixf (offset 291) */ + /* _mesa_function_pool[12840]: LoadMatrixf (offset 291) */ "p\0" "glLoadMatrixf\0" "\0" - /* _mesa_function_pool[12801]: VertexAttribI1uivEXT (will be remapped) */ + /* _mesa_function_pool[12857]: VertexAttribI1uivEXT (will be remapped) */ "ip\0" "glVertexAttribI1uivEXT\0" "glVertexAttribI1uiv\0" "\0" - /* _mesa_function_pool[12848]: Vertex2f (offset 128) */ + /* _mesa_function_pool[12904]: Vertex2f (offset 128) */ "ff\0" "glVertex2f\0" "\0" - /* _mesa_function_pool[12863]: ReplacementCodeuiColor4fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[12919]: ReplacementCodeuiColor4fNormal3fVertex3fvSUN (dynamic) */ "pppp\0" "glReplacementCodeuiColor4fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[12916]: Color4bv (offset 26) */ + /* _mesa_function_pool[12972]: Color4bv (offset 26) */ "p\0" "glColor4bv\0" "\0" - /* _mesa_function_pool[12930]: VertexPointer (offset 321) */ + /* _mesa_function_pool[12986]: VertexPointer (offset 321) */ "iiip\0" "glVertexPointer\0" "\0" - /* _mesa_function_pool[12952]: SecondaryColor3uiEXT (will be remapped) */ + /* _mesa_function_pool[13008]: SecondaryColor3uiEXT (will be remapped) */ "iii\0" "glSecondaryColor3ui\0" "glSecondaryColor3uiEXT\0" "\0" - /* _mesa_function_pool[13000]: StartInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[13056]: StartInstrumentsSGIX (dynamic) */ "\0" "glStartInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[13025]: SecondaryColor3usvEXT (will be remapped) */ + /* _mesa_function_pool[13081]: SecondaryColor3usvEXT (will be remapped) */ "p\0" "glSecondaryColor3usv\0" "glSecondaryColor3usvEXT\0" "\0" - /* _mesa_function_pool[13073]: VertexAttrib2fvNV (will be remapped) */ + /* _mesa_function_pool[13129]: VertexAttrib2fvNV (will be remapped) */ "ip\0" "glVertexAttrib2fvNV\0" "\0" - /* _mesa_function_pool[13097]: ProgramLocalParameter4dvARB (will be remapped) */ + /* _mesa_function_pool[13153]: ProgramLocalParameter4dvARB (will be remapped) */ "iip\0" "glProgramLocalParameter4dvARB\0" "\0" - /* _mesa_function_pool[13132]: DeleteLists (offset 4) */ + /* _mesa_function_pool[13188]: DeleteLists (offset 4) */ "ii\0" "glDeleteLists\0" "\0" - /* _mesa_function_pool[13150]: LogicOp (offset 242) */ + /* _mesa_function_pool[13206]: LogicOp (offset 242) */ "i\0" "glLogicOp\0" "\0" - /* _mesa_function_pool[13163]: MatrixIndexuivARB (dynamic) */ + /* _mesa_function_pool[13219]: MatrixIndexuivARB (dynamic) */ "ip\0" "glMatrixIndexuivARB\0" "\0" - /* _mesa_function_pool[13187]: Vertex2s (offset 132) */ + /* _mesa_function_pool[13243]: Vertex2s (offset 132) */ "ii\0" "glVertex2s\0" "\0" - /* _mesa_function_pool[13202]: RenderbufferStorageMultisample (will be remapped) */ + /* _mesa_function_pool[13258]: RenderbufferStorageMultisample (will be remapped) */ "iiiii\0" "glRenderbufferStorageMultisample\0" "glRenderbufferStorageMultisampleEXT\0" "\0" - /* _mesa_function_pool[13278]: TexCoord4fv (offset 121) */ + /* _mesa_function_pool[13334]: TexCoord4fv (offset 121) */ "p\0" "glTexCoord4fv\0" "\0" - /* _mesa_function_pool[13295]: Tangent3sEXT (dynamic) */ + /* _mesa_function_pool[13351]: Tangent3sEXT (dynamic) */ "iii\0" "glTangent3sEXT\0" "\0" - /* _mesa_function_pool[13315]: GlobalAlphaFactorfSUN (dynamic) */ + /* _mesa_function_pool[13371]: GlobalAlphaFactorfSUN (dynamic) */ "f\0" "glGlobalAlphaFactorfSUN\0" "\0" - /* _mesa_function_pool[13342]: MultiTexCoord3iARB (offset 396) */ + /* _mesa_function_pool[13398]: MultiTexCoord3iARB (offset 396) */ "iiii\0" "glMultiTexCoord3i\0" "glMultiTexCoord3iARB\0" "\0" - /* _mesa_function_pool[13387]: IsProgram (will be remapped) */ + /* _mesa_function_pool[13443]: IsProgram (will be remapped) */ "i\0" "glIsProgram\0" "\0" - /* _mesa_function_pool[13402]: TexCoordPointerListIBM (dynamic) */ + /* _mesa_function_pool[13458]: TexCoordPointerListIBM (dynamic) */ "iiipi\0" "glTexCoordPointerListIBM\0" "\0" - /* _mesa_function_pool[13434]: VertexAttribI4svEXT (will be remapped) */ + /* _mesa_function_pool[13490]: VertexAttribI4svEXT (will be remapped) */ "ip\0" "glVertexAttribI4svEXT\0" "glVertexAttribI4sv\0" "\0" - /* _mesa_function_pool[13479]: GlobalAlphaFactorusSUN (dynamic) */ + /* _mesa_function_pool[13535]: GlobalAlphaFactorusSUN (dynamic) */ "i\0" "glGlobalAlphaFactorusSUN\0" "\0" - /* _mesa_function_pool[13507]: VertexAttrib2dvNV (will be remapped) */ + /* _mesa_function_pool[13563]: VertexAttrib2dvNV (will be remapped) */ "ip\0" "glVertexAttrib2dvNV\0" "\0" - /* _mesa_function_pool[13531]: FramebufferRenderbufferEXT (will be remapped) */ + /* _mesa_function_pool[13587]: FramebufferRenderbufferEXT (will be remapped) */ "iiii\0" "glFramebufferRenderbuffer\0" "glFramebufferRenderbufferEXT\0" "\0" - /* _mesa_function_pool[13592]: ClearBufferuiv (will be remapped) */ + /* _mesa_function_pool[13648]: ClearBufferuiv (will be remapped) */ "iip\0" "glClearBufferuiv\0" "\0" - /* _mesa_function_pool[13614]: VertexAttrib1dvNV (will be remapped) */ + /* _mesa_function_pool[13670]: VertexAttrib1dvNV (will be remapped) */ "ip\0" "glVertexAttrib1dvNV\0" "\0" - /* _mesa_function_pool[13638]: GenTextures (offset 328) */ + /* _mesa_function_pool[13694]: GenTextures (offset 328) */ "ip\0" "glGenTextures\0" "glGenTexturesEXT\0" "\0" - /* _mesa_function_pool[13673]: FramebufferTextureARB (will be remapped) */ + /* _mesa_function_pool[13729]: FramebufferTextureARB (will be remapped) */ "iiii\0" "glFramebufferTextureARB\0" "\0" - /* _mesa_function_pool[13703]: SetFenceNV (will be remapped) */ + /* _mesa_function_pool[13759]: SetFenceNV (will be remapped) */ "ii\0" "glSetFenceNV\0" "\0" - /* _mesa_function_pool[13720]: FramebufferTexture1DEXT (will be remapped) */ + /* _mesa_function_pool[13776]: FramebufferTexture1DEXT (will be remapped) */ "iiiii\0" "glFramebufferTexture1D\0" "glFramebufferTexture1DEXT\0" "\0" - /* _mesa_function_pool[13776]: GetCombinerOutputParameterivNV (will be remapped) */ + /* _mesa_function_pool[13832]: GetCombinerOutputParameterivNV (will be remapped) */ "iiip\0" "glGetCombinerOutputParameterivNV\0" "\0" - /* _mesa_function_pool[13815]: PixelTexGenParameterivSGIS (will be remapped) */ + /* _mesa_function_pool[13871]: MultiModeDrawArraysIBM (will be remapped) */ + "pppii\0" + "glMultiModeDrawArraysIBM\0" + "\0" + /* _mesa_function_pool[13903]: PixelTexGenParameterivSGIS (will be remapped) */ "ip\0" "glPixelTexGenParameterivSGIS\0" "\0" - /* _mesa_function_pool[13848]: TextureNormalEXT (dynamic) */ + /* _mesa_function_pool[13936]: TextureNormalEXT (dynamic) */ "i\0" "glTextureNormalEXT\0" "\0" - /* _mesa_function_pool[13870]: IndexPointerListIBM (dynamic) */ + /* _mesa_function_pool[13958]: IndexPointerListIBM (dynamic) */ "iipi\0" "glIndexPointerListIBM\0" "\0" - /* _mesa_function_pool[13898]: WeightfvARB (dynamic) */ + /* _mesa_function_pool[13986]: WeightfvARB (dynamic) */ "ip\0" "glWeightfvARB\0" "\0" - /* _mesa_function_pool[13916]: RasterPos2sv (offset 69) */ + /* _mesa_function_pool[14004]: GetCombinerOutputParameterfvNV (will be remapped) */ + "iiip\0" + "glGetCombinerOutputParameterfvNV\0" + "\0" + /* _mesa_function_pool[14043]: RasterPos2sv (offset 69) */ "p\0" "glRasterPos2sv\0" "\0" - /* _mesa_function_pool[13934]: Color4ubv (offset 36) */ + /* _mesa_function_pool[14061]: Color4ubv (offset 36) */ "p\0" "glColor4ubv\0" "\0" - /* _mesa_function_pool[13949]: DrawBuffer (offset 202) */ + /* _mesa_function_pool[14076]: DrawBuffer (offset 202) */ "i\0" "glDrawBuffer\0" "\0" - /* _mesa_function_pool[13965]: TexCoord2fv (offset 105) */ + /* _mesa_function_pool[14092]: TexCoord2fv (offset 105) */ "p\0" "glTexCoord2fv\0" "\0" - /* _mesa_function_pool[13982]: WindowPos4fMESA (will be remapped) */ + /* _mesa_function_pool[14109]: WindowPos4fMESA (will be remapped) */ "ffff\0" "glWindowPos4fMESA\0" "\0" - /* _mesa_function_pool[14006]: TexCoord1sv (offset 101) */ + /* _mesa_function_pool[14133]: TexCoord1sv (offset 101) */ "p\0" "glTexCoord1sv\0" "\0" - /* _mesa_function_pool[14023]: WindowPos3dvMESA (will be remapped) */ + /* _mesa_function_pool[14150]: WindowPos3dvMESA (will be remapped) */ "p\0" "glWindowPos3dv\0" "glWindowPos3dvARB\0" "glWindowPos3dvMESA\0" "\0" - /* _mesa_function_pool[14078]: DepthFunc (offset 245) */ + /* _mesa_function_pool[14205]: DepthFunc (offset 245) */ "i\0" "glDepthFunc\0" "\0" - /* _mesa_function_pool[14093]: PixelMapusv (offset 253) */ + /* _mesa_function_pool[14220]: PixelMapusv (offset 253) */ "iip\0" "glPixelMapusv\0" "\0" - /* _mesa_function_pool[14112]: GetQueryObjecti64vEXT (will be remapped) */ + /* _mesa_function_pool[14239]: GetQueryObjecti64vEXT (will be remapped) */ "iip\0" "glGetQueryObjecti64vEXT\0" "\0" - /* _mesa_function_pool[14141]: MultiTexCoord1dARB (offset 376) */ + /* _mesa_function_pool[14268]: MultiTexCoord1dARB (offset 376) */ "id\0" "glMultiTexCoord1d\0" "glMultiTexCoord1dARB\0" "\0" - /* _mesa_function_pool[14184]: PointParameterivNV (will be remapped) */ + /* _mesa_function_pool[14311]: PointParameterivNV (will be remapped) */ "ip\0" "glPointParameteriv\0" "glPointParameterivNV\0" "\0" - /* _mesa_function_pool[14228]: BlendFunc (offset 241) */ + /* _mesa_function_pool[14355]: IsSampler (will be remapped) */ + "i\0" + "glIsSampler\0" + "\0" + /* _mesa_function_pool[14370]: BlendFunc (offset 241) */ "ii\0" "glBlendFunc\0" "\0" - /* _mesa_function_pool[14244]: EndTransformFeedbackEXT (will be remapped) */ + /* _mesa_function_pool[14386]: EndTransformFeedbackEXT (will be remapped) */ "\0" "glEndTransformFeedbackEXT\0" "glEndTransformFeedback\0" "\0" - /* _mesa_function_pool[14295]: Uniform2fvARB (will be remapped) */ + /* _mesa_function_pool[14437]: Uniform2fvARB (will be remapped) */ "iip\0" "glUniform2fv\0" "glUniform2fvARB\0" "\0" - /* _mesa_function_pool[14329]: BufferParameteriAPPLE (will be remapped) */ + /* _mesa_function_pool[14471]: BufferParameteriAPPLE (will be remapped) */ "iii\0" "glBufferParameteriAPPLE\0" "\0" - /* _mesa_function_pool[14358]: MultiTexCoord3dvARB (offset 393) */ + /* _mesa_function_pool[14500]: MultiTexCoord3dvARB (offset 393) */ "ip\0" "glMultiTexCoord3dv\0" "glMultiTexCoord3dvARB\0" "\0" - /* _mesa_function_pool[14403]: ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[14545]: ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (dynamic) */ "pppp\0" "glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[14459]: DeleteObjectARB (will be remapped) */ + /* _mesa_function_pool[14601]: DeleteObjectARB (will be remapped) */ "i\0" "glDeleteObjectARB\0" "\0" - /* _mesa_function_pool[14480]: GetShaderPrecisionFormat (will be remapped) */ + /* _mesa_function_pool[14622]: GetShaderPrecisionFormat (will be remapped) */ "iipp\0" "glGetShaderPrecisionFormat\0" "\0" - /* _mesa_function_pool[14513]: MatrixIndexPointerARB (dynamic) */ + /* _mesa_function_pool[14655]: MatrixIndexPointerARB (dynamic) */ "iiip\0" "glMatrixIndexPointerARB\0" "\0" - /* _mesa_function_pool[14543]: ProgramNamedParameter4dvNV (will be remapped) */ + /* _mesa_function_pool[14685]: ProgramNamedParameter4dvNV (will be remapped) */ "iipp\0" "glProgramNamedParameter4dvNV\0" "\0" - /* _mesa_function_pool[14578]: Tangent3fvEXT (dynamic) */ + /* _mesa_function_pool[14720]: Tangent3fvEXT (dynamic) */ "p\0" "glTangent3fvEXT\0" "\0" - /* _mesa_function_pool[14597]: Flush (offset 217) */ + /* _mesa_function_pool[14739]: Flush (offset 217) */ "\0" "glFlush\0" "\0" - /* _mesa_function_pool[14607]: Color4uiv (offset 38) */ + /* _mesa_function_pool[14749]: Color4uiv (offset 38) */ "p\0" "glColor4uiv\0" "\0" - /* _mesa_function_pool[14622]: VertexAttribI4iEXT (will be remapped) */ + /* _mesa_function_pool[14764]: VertexAttribI4iEXT (will be remapped) */ "iiiii\0" "glVertexAttribI4iEXT\0" "glVertexAttribI4i\0" "\0" - /* _mesa_function_pool[14668]: GenVertexArrays (will be remapped) */ + /* _mesa_function_pool[14810]: GenVertexArrays (will be remapped) */ "ip\0" "glGenVertexArrays\0" "\0" - /* _mesa_function_pool[14690]: Uniform3uivEXT (will be remapped) */ + /* _mesa_function_pool[14832]: Uniform3uivEXT (will be remapped) */ "iip\0" "glUniform3uivEXT\0" "glUniform3uiv\0" "\0" - /* _mesa_function_pool[14726]: RasterPos3sv (offset 77) */ + /* _mesa_function_pool[14868]: RasterPos3sv (offset 77) */ "p\0" "glRasterPos3sv\0" "\0" - /* _mesa_function_pool[14744]: BindFramebufferEXT (will be remapped) */ + /* _mesa_function_pool[14886]: BindFramebufferEXT (will be remapped) */ "ii\0" "glBindFramebuffer\0" "glBindFramebufferEXT\0" "\0" - /* _mesa_function_pool[14787]: ReferencePlaneSGIX (dynamic) */ + /* _mesa_function_pool[14929]: ReferencePlaneSGIX (dynamic) */ "p\0" "glReferencePlaneSGIX\0" "\0" - /* _mesa_function_pool[14811]: PushAttrib (offset 219) */ + /* _mesa_function_pool[14953]: PushAttrib (offset 219) */ "i\0" "glPushAttrib\0" "\0" - /* _mesa_function_pool[14827]: RasterPos2i (offset 66) */ + /* _mesa_function_pool[14969]: RasterPos2i (offset 66) */ "ii\0" "glRasterPos2i\0" "\0" - /* _mesa_function_pool[14845]: ValidateProgramARB (will be remapped) */ + /* _mesa_function_pool[14987]: ValidateProgramARB (will be remapped) */ "i\0" "glValidateProgram\0" "glValidateProgramARB\0" "\0" - /* _mesa_function_pool[14887]: TexParameteriv (offset 181) */ + /* _mesa_function_pool[15029]: TexParameteriv (offset 181) */ "iip\0" "glTexParameteriv\0" "\0" - /* _mesa_function_pool[14909]: UnlockArraysEXT (will be remapped) */ + /* _mesa_function_pool[15051]: UnlockArraysEXT (will be remapped) */ "\0" "glUnlockArraysEXT\0" "\0" - /* _mesa_function_pool[14929]: TexCoord2fColor3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[15071]: TexCoord2fColor3fVertex3fSUN (dynamic) */ "ffffffff\0" "glTexCoord2fColor3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[14970]: WindowPos3fvMESA (will be remapped) */ + /* _mesa_function_pool[15112]: WindowPos3fvMESA (will be remapped) */ "p\0" "glWindowPos3fv\0" "glWindowPos3fvARB\0" "glWindowPos3fvMESA\0" "\0" - /* _mesa_function_pool[15025]: RasterPos2f (offset 64) */ + /* _mesa_function_pool[15167]: RasterPos2f (offset 64) */ "ff\0" "glRasterPos2f\0" "\0" - /* _mesa_function_pool[15043]: VertexAttrib1svNV (will be remapped) */ + /* _mesa_function_pool[15185]: VertexAttrib1svNV (will be remapped) */ "ip\0" "glVertexAttrib1svNV\0" "\0" - /* _mesa_function_pool[15067]: RasterPos2d (offset 62) */ + /* _mesa_function_pool[15209]: RasterPos2d (offset 62) */ "dd\0" "glRasterPos2d\0" "\0" - /* _mesa_function_pool[15085]: RasterPos3fv (offset 73) */ + /* _mesa_function_pool[15227]: RasterPos3fv (offset 73) */ "p\0" "glRasterPos3fv\0" "\0" - /* _mesa_function_pool[15103]: CopyTexSubImage3D (offset 373) */ + /* _mesa_function_pool[15245]: CopyTexSubImage3D (offset 373) */ "iiiiiiiii\0" "glCopyTexSubImage3D\0" "glCopyTexSubImage3DEXT\0" "\0" - /* _mesa_function_pool[15157]: VertexAttrib2dARB (will be remapped) */ + /* _mesa_function_pool[15299]: VertexAttrib2dARB (will be remapped) */ "idd\0" "glVertexAttrib2d\0" "glVertexAttrib2dARB\0" "\0" - /* _mesa_function_pool[15199]: Color4ub (offset 35) */ + /* _mesa_function_pool[15341]: Color4ub (offset 35) */ "iiii\0" "glColor4ub\0" "\0" - /* _mesa_function_pool[15216]: GetInteger64v (will be remapped) */ + /* _mesa_function_pool[15358]: GetInteger64v (will be remapped) */ "ip\0" "glGetInteger64v\0" "\0" - /* _mesa_function_pool[15236]: TextureColorMaskSGIS (dynamic) */ + /* _mesa_function_pool[15378]: TextureColorMaskSGIS (dynamic) */ "iiii\0" "glTextureColorMaskSGIS\0" "\0" - /* _mesa_function_pool[15265]: RasterPos2s (offset 68) */ + /* _mesa_function_pool[15407]: RasterPos2s (offset 68) */ "ii\0" "glRasterPos2s\0" "\0" - /* _mesa_function_pool[15283]: GetColorTable (offset 343) */ + /* _mesa_function_pool[15425]: GetColorTable (offset 343) */ "iiip\0" "glGetColorTable\0" "glGetColorTableSGI\0" "glGetColorTableEXT\0" "\0" - /* _mesa_function_pool[15343]: SelectBuffer (offset 195) */ + /* _mesa_function_pool[15485]: SelectBuffer (offset 195) */ "ip\0" "glSelectBuffer\0" "\0" - /* _mesa_function_pool[15362]: Indexiv (offset 49) */ + /* _mesa_function_pool[15504]: Indexiv (offset 49) */ "p\0" "glIndexiv\0" "\0" - /* _mesa_function_pool[15375]: TexCoord3i (offset 114) */ + /* _mesa_function_pool[15517]: TexCoord3i (offset 114) */ "iii\0" "glTexCoord3i\0" "\0" - /* _mesa_function_pool[15393]: CopyColorTable (offset 342) */ + /* _mesa_function_pool[15535]: CopyColorTable (offset 342) */ "iiiii\0" "glCopyColorTable\0" "glCopyColorTableSGI\0" "\0" - /* _mesa_function_pool[15437]: GetHistogramParameterfv (offset 362) */ + /* _mesa_function_pool[15579]: GetHistogramParameterfv (offset 362) */ "iip\0" "glGetHistogramParameterfv\0" "glGetHistogramParameterfvEXT\0" "\0" - /* _mesa_function_pool[15497]: Frustum (offset 289) */ + /* _mesa_function_pool[15639]: Frustum (offset 289) */ "dddddd\0" "glFrustum\0" "\0" - /* _mesa_function_pool[15515]: GetString (offset 275) */ + /* _mesa_function_pool[15657]: GetString (offset 275) */ "i\0" "glGetString\0" "\0" - /* _mesa_function_pool[15530]: ColorPointervINTEL (dynamic) */ + /* _mesa_function_pool[15672]: ColorPointervINTEL (dynamic) */ "iip\0" "glColorPointervINTEL\0" "\0" - /* _mesa_function_pool[15556]: TexEnvf (offset 184) */ + /* _mesa_function_pool[15698]: TexEnvf (offset 184) */ "iif\0" "glTexEnvf\0" "\0" - /* _mesa_function_pool[15571]: TexCoord3d (offset 110) */ + /* _mesa_function_pool[15713]: TexCoord3d (offset 110) */ "ddd\0" "glTexCoord3d\0" "\0" - /* _mesa_function_pool[15589]: AlphaFragmentOp1ATI (will be remapped) */ + /* _mesa_function_pool[15731]: AlphaFragmentOp1ATI (will be remapped) */ "iiiiii\0" "glAlphaFragmentOp1ATI\0" "\0" - /* _mesa_function_pool[15619]: TexCoord3f (offset 112) */ + /* _mesa_function_pool[15761]: TexCoord3f (offset 112) */ "fff\0" "glTexCoord3f\0" "\0" - /* _mesa_function_pool[15637]: MultiTexCoord3ivARB (offset 397) */ + /* _mesa_function_pool[15779]: MultiTexCoord3ivARB (offset 397) */ "ip\0" "glMultiTexCoord3iv\0" "glMultiTexCoord3ivARB\0" "\0" - /* _mesa_function_pool[15682]: MultiTexCoord2sARB (offset 390) */ + /* _mesa_function_pool[15824]: MultiTexCoord2sARB (offset 390) */ "iii\0" "glMultiTexCoord2s\0" "glMultiTexCoord2sARB\0" "\0" - /* _mesa_function_pool[15726]: VertexAttrib1dvARB (will be remapped) */ + /* _mesa_function_pool[15868]: VertexAttrib1dvARB (will be remapped) */ "ip\0" "glVertexAttrib1dv\0" "glVertexAttrib1dvARB\0" "\0" - /* _mesa_function_pool[15769]: DeleteTextures (offset 327) */ + /* _mesa_function_pool[15911]: DeleteTextures (offset 327) */ "ip\0" "glDeleteTextures\0" "glDeleteTexturesEXT\0" "\0" - /* _mesa_function_pool[15810]: TexCoordPointerEXT (will be remapped) */ + /* _mesa_function_pool[15952]: TexCoordPointerEXT (will be remapped) */ "iiiip\0" "glTexCoordPointerEXT\0" "\0" - /* _mesa_function_pool[15838]: TexSubImage4DSGIS (dynamic) */ + /* _mesa_function_pool[15980]: TexSubImage4DSGIS (dynamic) */ "iiiiiiiiiiiip\0" "glTexSubImage4DSGIS\0" "\0" - /* _mesa_function_pool[15873]: TexCoord3s (offset 116) */ + /* _mesa_function_pool[16015]: TexCoord3s (offset 116) */ "iii\0" "glTexCoord3s\0" "\0" - /* _mesa_function_pool[15891]: GetTexLevelParameteriv (offset 285) */ + /* _mesa_function_pool[16033]: GetTexLevelParameteriv (offset 285) */ "iiip\0" "glGetTexLevelParameteriv\0" "\0" - /* _mesa_function_pool[15922]: CombinerStageParameterfvNV (dynamic) */ + /* _mesa_function_pool[16064]: CombinerStageParameterfvNV (dynamic) */ "iip\0" "glCombinerStageParameterfvNV\0" "\0" - /* _mesa_function_pool[15956]: StopInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[16098]: StopInstrumentsSGIX (dynamic) */ "i\0" "glStopInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[15981]: TexCoord4fColor4fNormal3fVertex4fSUN (dynamic) */ + /* _mesa_function_pool[16123]: TexCoord4fColor4fNormal3fVertex4fSUN (dynamic) */ "fffffffffffffff\0" "glTexCoord4fColor4fNormal3fVertex4fSUN\0" "\0" - /* _mesa_function_pool[16037]: ClearAccum (offset 204) */ + /* _mesa_function_pool[16179]: ClearAccum (offset 204) */ "ffff\0" "glClearAccum\0" "\0" - /* _mesa_function_pool[16056]: DeformSGIX (dynamic) */ + /* _mesa_function_pool[16198]: DeformSGIX (dynamic) */ "i\0" "glDeformSGIX\0" "\0" - /* _mesa_function_pool[16072]: GetVertexAttribfvARB (will be remapped) */ + /* _mesa_function_pool[16214]: GetVertexAttribfvARB (will be remapped) */ "iip\0" "glGetVertexAttribfv\0" "glGetVertexAttribfvARB\0" "\0" - /* _mesa_function_pool[16120]: SecondaryColor3ivEXT (will be remapped) */ + /* _mesa_function_pool[16262]: SecondaryColor3ivEXT (will be remapped) */ "p\0" "glSecondaryColor3iv\0" "glSecondaryColor3ivEXT\0" "\0" - /* _mesa_function_pool[16166]: TexCoord4iv (offset 123) */ + /* _mesa_function_pool[16308]: TexCoord4iv (offset 123) */ "p\0" "glTexCoord4iv\0" "\0" - /* _mesa_function_pool[16183]: VertexAttribI4uiEXT (will be remapped) */ + /* _mesa_function_pool[16325]: VertexAttribI4uiEXT (will be remapped) */ "iiiii\0" "glVertexAttribI4uiEXT\0" "glVertexAttribI4ui\0" "\0" - /* _mesa_function_pool[16231]: GetFragmentMaterialfvSGIX (dynamic) */ + /* _mesa_function_pool[16373]: GetFragmentMaterialfvSGIX (dynamic) */ "iip\0" "glGetFragmentMaterialfvSGIX\0" "\0" - /* _mesa_function_pool[16264]: UniformMatrix4x2fv (will be remapped) */ + /* _mesa_function_pool[16406]: UniformMatrix4x2fv (will be remapped) */ "iiip\0" "glUniformMatrix4x2fv\0" "\0" - /* _mesa_function_pool[16291]: GetDetailTexFuncSGIS (dynamic) */ + /* _mesa_function_pool[16433]: GetDetailTexFuncSGIS (dynamic) */ "ip\0" "glGetDetailTexFuncSGIS\0" "\0" - /* _mesa_function_pool[16318]: GetCombinerStageParameterfvNV (dynamic) */ + /* _mesa_function_pool[16460]: GetCombinerStageParameterfvNV (dynamic) */ "iip\0" "glGetCombinerStageParameterfvNV\0" "\0" - /* _mesa_function_pool[16355]: PolygonOffset (offset 319) */ + /* _mesa_function_pool[16497]: SamplerParameterIiv (will be remapped) */ + "iip\0" + "glSamplerParameterIiv\0" + "\0" + /* _mesa_function_pool[16524]: PolygonOffset (offset 319) */ "ff\0" "glPolygonOffset\0" "\0" - /* _mesa_function_pool[16375]: BindVertexArray (will be remapped) */ + /* _mesa_function_pool[16544]: BindVertexArray (will be remapped) */ "i\0" "glBindVertexArray\0" "\0" - /* _mesa_function_pool[16396]: Color4ubVertex2fvSUN (dynamic) */ + /* _mesa_function_pool[16565]: Color4ubVertex2fvSUN (dynamic) */ "pp\0" "glColor4ubVertex2fvSUN\0" "\0" - /* _mesa_function_pool[16423]: Rectd (offset 86) */ + /* _mesa_function_pool[16592]: Rectd (offset 86) */ "dddd\0" "glRectd\0" "\0" - /* _mesa_function_pool[16437]: TexFilterFuncSGIS (dynamic) */ + /* _mesa_function_pool[16606]: TexFilterFuncSGIS (dynamic) */ "iiip\0" "glTexFilterFuncSGIS\0" "\0" - /* _mesa_function_pool[16463]: TextureBarrierNV (will be remapped) */ + /* _mesa_function_pool[16632]: TextureBarrierNV (will be remapped) */ "\0" "glTextureBarrierNV\0" "\0" - /* _mesa_function_pool[16484]: VertexAttribI4ubvEXT (will be remapped) */ + /* _mesa_function_pool[16653]: SamplerParameterfv (will be remapped) */ + "iip\0" + "glSamplerParameterfv\0" + "\0" + /* _mesa_function_pool[16679]: VertexAttribI4ubvEXT (will be remapped) */ "ip\0" "glVertexAttribI4ubvEXT\0" "glVertexAttribI4ubv\0" "\0" - /* _mesa_function_pool[16531]: GetAttribLocationARB (will be remapped) */ + /* _mesa_function_pool[16726]: GetAttribLocationARB (will be remapped) */ "ip\0" "glGetAttribLocation\0" "glGetAttribLocationARB\0" "\0" - /* _mesa_function_pool[16578]: RasterPos3i (offset 74) */ + /* _mesa_function_pool[16773]: RasterPos3i (offset 74) */ "iii\0" "glRasterPos3i\0" "\0" - /* _mesa_function_pool[16597]: VertexAttrib4ubvARB (will be remapped) */ + /* _mesa_function_pool[16792]: BlendEquationSeparateiARB (will be remapped) */ + "iii\0" + "glBlendEquationSeparateiARB\0" + "\0" + /* _mesa_function_pool[16825]: VertexAttrib4ubvARB (will be remapped) */ "ip\0" "glVertexAttrib4ubv\0" "glVertexAttrib4ubvARB\0" "\0" - /* _mesa_function_pool[16642]: DetailTexFuncSGIS (dynamic) */ + /* _mesa_function_pool[16870]: DetailTexFuncSGIS (dynamic) */ "iip\0" "glDetailTexFuncSGIS\0" "\0" - /* _mesa_function_pool[16667]: Normal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[16895]: Normal3fVertex3fSUN (dynamic) */ "ffffff\0" "glNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[16697]: CopyTexImage2D (offset 324) */ + /* _mesa_function_pool[16925]: CopyTexImage2D (offset 324) */ "iiiiiiii\0" "glCopyTexImage2D\0" "glCopyTexImage2DEXT\0" "\0" - /* _mesa_function_pool[16744]: GetBufferPointervARB (will be remapped) */ + /* _mesa_function_pool[16972]: GetBufferPointervARB (will be remapped) */ "iip\0" "glGetBufferPointerv\0" "glGetBufferPointervARB\0" "\0" - /* _mesa_function_pool[16792]: ProgramEnvParameter4fARB (will be remapped) */ + /* _mesa_function_pool[17020]: ProgramEnvParameter4fARB (will be remapped) */ "iiffff\0" "glProgramEnvParameter4fARB\0" "glProgramParameter4fNV\0" "\0" - /* _mesa_function_pool[16850]: Uniform3ivARB (will be remapped) */ + /* _mesa_function_pool[17078]: Uniform3ivARB (will be remapped) */ "iip\0" "glUniform3iv\0" "glUniform3ivARB\0" "\0" - /* _mesa_function_pool[16884]: Lightfv (offset 160) */ + /* _mesa_function_pool[17112]: Lightfv (offset 160) */ "iip\0" "glLightfv\0" "\0" - /* _mesa_function_pool[16899]: PrimitiveRestartIndexNV (will be remapped) */ + /* _mesa_function_pool[17127]: PrimitiveRestartIndexNV (will be remapped) */ "i\0" "glPrimitiveRestartIndexNV\0" "glPrimitiveRestartIndex\0" "\0" - /* _mesa_function_pool[16952]: ClearDepth (offset 208) */ + /* _mesa_function_pool[17180]: ClearDepth (offset 208) */ "d\0" "glClearDepth\0" "\0" - /* _mesa_function_pool[16968]: GetFenceivNV (will be remapped) */ + /* _mesa_function_pool[17196]: GetFenceivNV (will be remapped) */ "iip\0" "glGetFenceivNV\0" "\0" - /* _mesa_function_pool[16988]: WindowPos4dvMESA (will be remapped) */ + /* _mesa_function_pool[17216]: WindowPos4dvMESA (will be remapped) */ "p\0" "glWindowPos4dvMESA\0" "\0" - /* _mesa_function_pool[17010]: ColorSubTable (offset 346) */ + /* _mesa_function_pool[17238]: ColorSubTable (offset 346) */ "iiiiip\0" "glColorSubTable\0" "glColorSubTableEXT\0" "\0" - /* _mesa_function_pool[17053]: Color4fv (offset 30) */ + /* _mesa_function_pool[17281]: Color4fv (offset 30) */ "p\0" "glColor4fv\0" "\0" - /* _mesa_function_pool[17067]: MultiTexCoord4ivARB (offset 405) */ + /* _mesa_function_pool[17295]: MultiTexCoord4ivARB (offset 405) */ "ip\0" "glMultiTexCoord4iv\0" "glMultiTexCoord4ivARB\0" "\0" - /* _mesa_function_pool[17112]: ProgramLocalParameters4fvEXT (will be remapped) */ + /* _mesa_function_pool[17340]: ProgramLocalParameters4fvEXT (will be remapped) */ "iiip\0" "glProgramLocalParameters4fvEXT\0" "\0" - /* _mesa_function_pool[17149]: ColorPointer (offset 308) */ + /* _mesa_function_pool[17377]: ColorPointer (offset 308) */ "iiip\0" "glColorPointer\0" "\0" - /* _mesa_function_pool[17170]: Rects (offset 92) */ + /* _mesa_function_pool[17398]: Rects (offset 92) */ "iiii\0" "glRects\0" "\0" - /* _mesa_function_pool[17184]: GetMapAttribParameterfvNV (dynamic) */ + /* _mesa_function_pool[17412]: GetMapAttribParameterfvNV (dynamic) */ "iiip\0" "glGetMapAttribParameterfvNV\0" "\0" - /* _mesa_function_pool[17218]: CreateShaderProgramEXT (will be remapped) */ + /* _mesa_function_pool[17446]: CreateShaderProgramEXT (will be remapped) */ "ip\0" "glCreateShaderProgramEXT\0" "\0" - /* _mesa_function_pool[17247]: ActiveProgramEXT (will be remapped) */ + /* _mesa_function_pool[17475]: ActiveProgramEXT (will be remapped) */ "i\0" "glActiveProgramEXT\0" "\0" - /* _mesa_function_pool[17269]: Lightiv (offset 162) */ + /* _mesa_function_pool[17497]: Lightiv (offset 162) */ "iip\0" "glLightiv\0" "\0" - /* _mesa_function_pool[17284]: VertexAttrib4sARB (will be remapped) */ + /* _mesa_function_pool[17512]: VertexAttrib4sARB (will be remapped) */ "iiiii\0" "glVertexAttrib4s\0" "glVertexAttrib4sARB\0" "\0" - /* _mesa_function_pool[17328]: GetQueryObjectuivARB (will be remapped) */ + /* _mesa_function_pool[17556]: GetQueryObjectuivARB (will be remapped) */ "iip\0" "glGetQueryObjectuiv\0" "glGetQueryObjectuivARB\0" "\0" - /* _mesa_function_pool[17376]: GetTexParameteriv (offset 283) */ + /* _mesa_function_pool[17604]: GetTexParameteriv (offset 283) */ "iip\0" "glGetTexParameteriv\0" "\0" - /* _mesa_function_pool[17401]: MapParameterivNV (dynamic) */ + /* _mesa_function_pool[17629]: MapParameterivNV (dynamic) */ "iip\0" "glMapParameterivNV\0" "\0" - /* _mesa_function_pool[17425]: GenRenderbuffersEXT (will be remapped) */ + /* _mesa_function_pool[17653]: GenRenderbuffersEXT (will be remapped) */ "ip\0" "glGenRenderbuffers\0" "glGenRenderbuffersEXT\0" "\0" - /* _mesa_function_pool[17470]: ClearBufferfv (will be remapped) */ + /* _mesa_function_pool[17698]: ClearBufferfv (will be remapped) */ "iip\0" "glClearBufferfv\0" "\0" - /* _mesa_function_pool[17491]: VertexAttrib2dvARB (will be remapped) */ + /* _mesa_function_pool[17719]: VertexAttrib2dvARB (will be remapped) */ "ip\0" "glVertexAttrib2dv\0" "glVertexAttrib2dvARB\0" "\0" - /* _mesa_function_pool[17534]: EdgeFlagPointerEXT (will be remapped) */ + /* _mesa_function_pool[17762]: EdgeFlagPointerEXT (will be remapped) */ "iip\0" "glEdgeFlagPointerEXT\0" "\0" - /* _mesa_function_pool[17560]: VertexAttribs2svNV (will be remapped) */ + /* _mesa_function_pool[17788]: VertexAttribs2svNV (will be remapped) */ "iip\0" "glVertexAttribs2svNV\0" "\0" - /* _mesa_function_pool[17586]: WeightbvARB (dynamic) */ + /* _mesa_function_pool[17814]: WeightbvARB (dynamic) */ "ip\0" "glWeightbvARB\0" "\0" - /* _mesa_function_pool[17604]: VertexAttrib2fvARB (will be remapped) */ + /* _mesa_function_pool[17832]: VertexAttrib2fvARB (will be remapped) */ "ip\0" "glVertexAttrib2fv\0" "glVertexAttrib2fvARB\0" "\0" - /* _mesa_function_pool[17647]: GetBufferParameterivARB (will be remapped) */ + /* _mesa_function_pool[17875]: GetBufferParameterivARB (will be remapped) */ "iip\0" "glGetBufferParameteriv\0" "glGetBufferParameterivARB\0" "\0" - /* _mesa_function_pool[17701]: Rectdv (offset 87) */ + /* _mesa_function_pool[17929]: Rectdv (offset 87) */ "pp\0" "glRectdv\0" "\0" - /* _mesa_function_pool[17714]: ListParameteriSGIX (dynamic) */ + /* _mesa_function_pool[17942]: ListParameteriSGIX (dynamic) */ "iii\0" "glListParameteriSGIX\0" "\0" - /* _mesa_function_pool[17740]: BlendEquationiARB (will be remapped) */ + /* _mesa_function_pool[17968]: BlendEquationiARB (will be remapped) */ "ii\0" "glBlendEquationiARB\0" "\0" - /* _mesa_function_pool[17764]: ReplacementCodeuiColor4fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[17992]: ReplacementCodeuiColor4fNormal3fVertex3fSUN (dynamic) */ "iffffffffff\0" "glReplacementCodeuiColor4fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[17823]: InstrumentsBufferSGIX (dynamic) */ + /* _mesa_function_pool[18051]: InstrumentsBufferSGIX (dynamic) */ "ip\0" "glInstrumentsBufferSGIX\0" "\0" - /* _mesa_function_pool[17851]: VertexAttrib4NivARB (will be remapped) */ + /* _mesa_function_pool[18079]: VertexAttrib4NivARB (will be remapped) */ "ip\0" "glVertexAttrib4Niv\0" "glVertexAttrib4NivARB\0" "\0" - /* _mesa_function_pool[17896]: DrawArraysInstancedARB (will be remapped) */ + /* _mesa_function_pool[18124]: DrawArraysInstancedARB (will be remapped) */ "iiii\0" "glDrawArraysInstancedARB\0" "glDrawArraysInstancedEXT\0" "glDrawArraysInstanced\0" "\0" - /* _mesa_function_pool[17974]: GetAttachedShaders (will be remapped) */ + /* _mesa_function_pool[18202]: GetAttachedShaders (will be remapped) */ "iipp\0" "glGetAttachedShaders\0" "\0" - /* _mesa_function_pool[18001]: GenVertexArraysAPPLE (will be remapped) */ + /* _mesa_function_pool[18229]: GenVertexArraysAPPLE (will be remapped) */ "ip\0" "glGenVertexArraysAPPLE\0" "\0" - /* _mesa_function_pool[18028]: ClearBufferfi (will be remapped) */ + /* _mesa_function_pool[18256]: ClearBufferfi (will be remapped) */ "iifi\0" "glClearBufferfi\0" "\0" - /* _mesa_function_pool[18050]: Materialiv (offset 172) */ + /* _mesa_function_pool[18278]: Materialiv (offset 172) */ "iip\0" "glMaterialiv\0" "\0" - /* _mesa_function_pool[18068]: PushClientAttrib (offset 335) */ + /* _mesa_function_pool[18296]: PushClientAttrib (offset 335) */ "i\0" "glPushClientAttrib\0" "\0" - /* _mesa_function_pool[18090]: ProgramEnvParameters4fvEXT (will be remapped) */ - "iiip\0" - "glProgramEnvParameters4fvEXT\0" + /* _mesa_function_pool[18318]: SamplerParameteriv (will be remapped) */ + "iip\0" + "glSamplerParameteriv\0" "\0" - /* _mesa_function_pool[18125]: TexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[18344]: TexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */ "pppp\0" "glTexCoord2fColor4fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[18171]: WindowPos2iMESA (will be remapped) */ + /* _mesa_function_pool[18390]: WindowPos2iMESA (will be remapped) */ "ii\0" "glWindowPos2i\0" "glWindowPos2iARB\0" "glWindowPos2iMESA\0" "\0" - /* _mesa_function_pool[18224]: SampleMaskSGIS (will be remapped) */ + /* _mesa_function_pool[18443]: SampleMaskSGIS (will be remapped) */ "fi\0" "glSampleMaskSGIS\0" "glSampleMaskEXT\0" "\0" - /* _mesa_function_pool[18261]: SecondaryColor3fvEXT (will be remapped) */ + /* _mesa_function_pool[18480]: SecondaryColor3fvEXT (will be remapped) */ "p\0" "glSecondaryColor3fv\0" "glSecondaryColor3fvEXT\0" "\0" - /* _mesa_function_pool[18307]: PolygonMode (offset 174) */ + /* _mesa_function_pool[18526]: PolygonMode (offset 174) */ "ii\0" "glPolygonMode\0" "\0" - /* _mesa_function_pool[18325]: CompressedTexSubImage1DARB (will be remapped) */ + /* _mesa_function_pool[18544]: CompressedTexSubImage1DARB (will be remapped) */ "iiiiiip\0" "glCompressedTexSubImage1D\0" "glCompressedTexSubImage1DARB\0" "\0" - /* _mesa_function_pool[18389]: VertexAttribI1iEXT (will be remapped) */ + /* _mesa_function_pool[18608]: VertexAttribI1iEXT (will be remapped) */ "ii\0" "glVertexAttribI1iEXT\0" "glVertexAttribI1i\0" "\0" - /* _mesa_function_pool[18432]: GetVertexAttribivNV (will be remapped) */ + /* _mesa_function_pool[18651]: TexCoord2fNormal3fVertex3fSUN (dynamic) */ + "ffffffff\0" + "glTexCoord2fNormal3fVertex3fSUN\0" + "\0" + /* _mesa_function_pool[18693]: GetVertexAttribivNV (will be remapped) */ "iip\0" "glGetVertexAttribivNV\0" "\0" - /* _mesa_function_pool[18459]: GetProgramStringARB (will be remapped) */ + /* _mesa_function_pool[18720]: GetProgramStringARB (will be remapped) */ "iip\0" "glGetProgramStringARB\0" "\0" - /* _mesa_function_pool[18486]: VertexAttribIPointerEXT (will be remapped) */ + /* _mesa_function_pool[18747]: VertexAttribIPointerEXT (will be remapped) */ "iiiip\0" "glVertexAttribIPointerEXT\0" "glVertexAttribIPointer\0" "\0" - /* _mesa_function_pool[18542]: TexBumpParameterfvATI (will be remapped) */ + /* _mesa_function_pool[18803]: TexBumpParameterfvATI (will be remapped) */ "ip\0" "glTexBumpParameterfvATI\0" "\0" - /* _mesa_function_pool[18570]: CompileShaderARB (will be remapped) */ + /* _mesa_function_pool[18831]: Tangent3ivEXT (dynamic) */ + "p\0" + "glTangent3ivEXT\0" + "\0" + /* _mesa_function_pool[18850]: CompileShaderARB (will be remapped) */ "i\0" "glCompileShader\0" "glCompileShaderARB\0" "\0" - /* _mesa_function_pool[18608]: DeleteShader (will be remapped) */ + /* _mesa_function_pool[18888]: DeleteShader (will be remapped) */ "i\0" "glDeleteShader\0" "\0" - /* _mesa_function_pool[18626]: DisableClientState (offset 309) */ + /* _mesa_function_pool[18906]: DisableClientState (offset 309) */ "i\0" "glDisableClientState\0" "\0" - /* _mesa_function_pool[18650]: TexGeni (offset 192) */ + /* _mesa_function_pool[18930]: TexGeni (offset 192) */ "iii\0" "glTexGeni\0" "\0" - /* _mesa_function_pool[18665]: TexGenf (offset 190) */ + /* _mesa_function_pool[18945]: TexGenf (offset 190) */ "iif\0" "glTexGenf\0" "\0" - /* _mesa_function_pool[18680]: Uniform3fARB (will be remapped) */ + /* _mesa_function_pool[18960]: Uniform3fARB (will be remapped) */ "ifff\0" "glUniform3f\0" "glUniform3fARB\0" "\0" - /* _mesa_function_pool[18713]: TexGend (offset 188) */ + /* _mesa_function_pool[18993]: TexGend (offset 188) */ "iid\0" "glTexGend\0" "\0" - /* _mesa_function_pool[18728]: ListParameterfvSGIX (dynamic) */ + /* _mesa_function_pool[19008]: ListParameterfvSGIX (dynamic) */ "iip\0" "glListParameterfvSGIX\0" "\0" - /* _mesa_function_pool[18755]: GetPolygonStipple (offset 274) */ + /* _mesa_function_pool[19035]: GetPolygonStipple (offset 274) */ "p\0" "glGetPolygonStipple\0" "\0" - /* _mesa_function_pool[18778]: Tangent3dvEXT (dynamic) */ + /* _mesa_function_pool[19058]: Tangent3dvEXT (dynamic) */ "p\0" "glTangent3dvEXT\0" "\0" - /* _mesa_function_pool[18797]: BindBufferOffsetEXT (will be remapped) */ + /* _mesa_function_pool[19077]: BindBufferOffsetEXT (will be remapped) */ "iiii\0" "glBindBufferOffsetEXT\0" "\0" - /* _mesa_function_pool[18825]: WindowPos3sMESA (will be remapped) */ + /* _mesa_function_pool[19105]: WindowPos3sMESA (will be remapped) */ "iii\0" "glWindowPos3s\0" "glWindowPos3sARB\0" "glWindowPos3sMESA\0" "\0" - /* _mesa_function_pool[18879]: VertexAttrib2svNV (will be remapped) */ + /* _mesa_function_pool[19159]: VertexAttrib2svNV (will be remapped) */ "ip\0" "glVertexAttrib2svNV\0" "\0" - /* _mesa_function_pool[18903]: DisableIndexedEXT (will be remapped) */ + /* _mesa_function_pool[19183]: DisableIndexedEXT (will be remapped) */ "ii\0" "glDisableIndexedEXT\0" "glDisablei\0" "\0" - /* _mesa_function_pool[18938]: BindBufferBaseEXT (will be remapped) */ + /* _mesa_function_pool[19218]: BindBufferBaseEXT (will be remapped) */ "iii\0" "glBindBufferBaseEXT\0" "glBindBufferBase\0" "\0" - /* _mesa_function_pool[18980]: TexCoord2fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[19260]: TexCoord2fVertex3fvSUN (dynamic) */ "pp\0" "glTexCoord2fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[19009]: WindowPos4sMESA (will be remapped) */ + /* _mesa_function_pool[19289]: WindowPos4sMESA (will be remapped) */ "iiii\0" "glWindowPos4sMESA\0" "\0" - /* _mesa_function_pool[19033]: VertexAttrib4NuivARB (will be remapped) */ + /* _mesa_function_pool[19313]: VertexAttrib4NuivARB (will be remapped) */ "ip\0" "glVertexAttrib4Nuiv\0" "glVertexAttrib4NuivARB\0" "\0" - /* _mesa_function_pool[19080]: ClientActiveTextureARB (offset 375) */ + /* _mesa_function_pool[19360]: ClientActiveTextureARB (offset 375) */ "i\0" "glClientActiveTexture\0" "glClientActiveTextureARB\0" "\0" - /* _mesa_function_pool[19130]: PixelTexGenSGIX (will be remapped) */ - "i\0" - "glPixelTexGenSGIX\0" + /* _mesa_function_pool[19410]: GetSamplerParameterIuiv (will be remapped) */ + "iip\0" + "glGetSamplerParameterIuiv\0" "\0" - /* _mesa_function_pool[19151]: ReplacementCodeusvSUN (dynamic) */ + /* _mesa_function_pool[19441]: ReplacementCodeusvSUN (dynamic) */ "p\0" "glReplacementCodeusvSUN\0" "\0" - /* _mesa_function_pool[19178]: Uniform4fARB (will be remapped) */ + /* _mesa_function_pool[19468]: Uniform4fARB (will be remapped) */ "iffff\0" "glUniform4f\0" "glUniform4fARB\0" "\0" - /* _mesa_function_pool[19212]: Color4sv (offset 34) */ + /* _mesa_function_pool[19502]: Color4sv (offset 34) */ "p\0" "glColor4sv\0" "\0" - /* _mesa_function_pool[19226]: FlushMappedBufferRange (will be remapped) */ + /* _mesa_function_pool[19516]: FlushMappedBufferRange (will be remapped) */ "iii\0" "glFlushMappedBufferRange\0" "\0" - /* _mesa_function_pool[19256]: IsProgramNV (will be remapped) */ + /* _mesa_function_pool[19546]: IsProgramNV (will be remapped) */ "i\0" "glIsProgramARB\0" "glIsProgramNV\0" "\0" - /* _mesa_function_pool[19288]: FlushMappedBufferRangeAPPLE (will be remapped) */ + /* _mesa_function_pool[19578]: FlushMappedBufferRangeAPPLE (will be remapped) */ "iii\0" "glFlushMappedBufferRangeAPPLE\0" "\0" - /* _mesa_function_pool[19323]: PixelZoom (offset 246) */ + /* _mesa_function_pool[19613]: PixelZoom (offset 246) */ "ff\0" "glPixelZoom\0" "\0" - /* _mesa_function_pool[19339]: ReplacementCodePointerSUN (dynamic) */ + /* _mesa_function_pool[19629]: ReplacementCodePointerSUN (dynamic) */ "iip\0" "glReplacementCodePointerSUN\0" "\0" - /* _mesa_function_pool[19372]: ProgramEnvParameter4dARB (will be remapped) */ + /* _mesa_function_pool[19662]: ProgramEnvParameter4dARB (will be remapped) */ "iidddd\0" "glProgramEnvParameter4dARB\0" "glProgramParameter4dNV\0" "\0" - /* _mesa_function_pool[19430]: ColorTableParameterfv (offset 340) */ + /* _mesa_function_pool[19720]: ColorTableParameterfv (offset 340) */ "iip\0" "glColorTableParameterfv\0" "glColorTableParameterfvSGI\0" "\0" - /* _mesa_function_pool[19486]: FragmentLightModelfSGIX (dynamic) */ + /* _mesa_function_pool[19776]: FragmentLightModelfSGIX (dynamic) */ "if\0" "glFragmentLightModelfSGIX\0" "\0" - /* _mesa_function_pool[19516]: Binormal3bvEXT (dynamic) */ + /* _mesa_function_pool[19806]: Binormal3bvEXT (dynamic) */ "p\0" "glBinormal3bvEXT\0" "\0" - /* _mesa_function_pool[19536]: PixelMapuiv (offset 252) */ + /* _mesa_function_pool[19826]: PixelMapuiv (offset 252) */ "iip\0" "glPixelMapuiv\0" "\0" - /* _mesa_function_pool[19555]: Color3dv (offset 12) */ + /* _mesa_function_pool[19845]: Color3dv (offset 12) */ "p\0" "glColor3dv\0" "\0" - /* _mesa_function_pool[19569]: IsTexture (offset 330) */ + /* _mesa_function_pool[19859]: IsTexture (offset 330) */ "i\0" "glIsTexture\0" "glIsTextureEXT\0" "\0" - /* _mesa_function_pool[19599]: VertexWeightfvEXT (dynamic) */ + /* _mesa_function_pool[19889]: GenSamplers (will be remapped) */ + "ip\0" + "glGenSamplers\0" + "\0" + /* _mesa_function_pool[19907]: VertexWeightfvEXT (dynamic) */ "p\0" "glVertexWeightfvEXT\0" "\0" - /* _mesa_function_pool[19622]: VertexAttrib1dARB (will be remapped) */ + /* _mesa_function_pool[19930]: VertexAttrib1dARB (will be remapped) */ "id\0" "glVertexAttrib1d\0" "glVertexAttrib1dARB\0" "\0" - /* _mesa_function_pool[19663]: ImageTransformParameterivHP (dynamic) */ + /* _mesa_function_pool[19971]: ImageTransformParameterivHP (dynamic) */ "iip\0" "glImageTransformParameterivHP\0" "\0" - /* _mesa_function_pool[19698]: TexCoord4i (offset 122) */ + /* _mesa_function_pool[20006]: TexCoord4i (offset 122) */ "iiii\0" "glTexCoord4i\0" "\0" - /* _mesa_function_pool[19717]: DeleteQueriesARB (will be remapped) */ + /* _mesa_function_pool[20025]: DeleteQueriesARB (will be remapped) */ "ip\0" "glDeleteQueries\0" "glDeleteQueriesARB\0" "\0" - /* _mesa_function_pool[19756]: Color4ubVertex2fSUN (dynamic) */ + /* _mesa_function_pool[20064]: Color4ubVertex2fSUN (dynamic) */ "iiiiff\0" "glColor4ubVertex2fSUN\0" "\0" - /* _mesa_function_pool[19786]: FragmentColorMaterialSGIX (dynamic) */ + /* _mesa_function_pool[20094]: FragmentColorMaterialSGIX (dynamic) */ "ii\0" "glFragmentColorMaterialSGIX\0" "\0" - /* _mesa_function_pool[19818]: CurrentPaletteMatrixARB (dynamic) */ + /* _mesa_function_pool[20126]: CurrentPaletteMatrixARB (dynamic) */ "i\0" "glCurrentPaletteMatrixARB\0" "\0" - /* _mesa_function_pool[19847]: GetMapdv (offset 266) */ + /* _mesa_function_pool[20155]: GetMapdv (offset 266) */ "iip\0" "glGetMapdv\0" "\0" - /* _mesa_function_pool[19863]: ObjectPurgeableAPPLE (will be remapped) */ + /* _mesa_function_pool[20171]: ObjectPurgeableAPPLE (will be remapped) */ "iii\0" "glObjectPurgeableAPPLE\0" "\0" - /* _mesa_function_pool[19891]: GetStringi (will be remapped) */ + /* _mesa_function_pool[20199]: GetStringi (will be remapped) */ "ii\0" "glGetStringi\0" "\0" - /* _mesa_function_pool[19908]: SamplePatternSGIS (will be remapped) */ + /* _mesa_function_pool[20216]: SamplePatternSGIS (will be remapped) */ "i\0" "glSamplePatternSGIS\0" "glSamplePatternEXT\0" "\0" - /* _mesa_function_pool[19950]: PixelStoref (offset 249) */ + /* _mesa_function_pool[20258]: PixelStoref (offset 249) */ "if\0" "glPixelStoref\0" "\0" - /* _mesa_function_pool[19968]: IsQueryARB (will be remapped) */ + /* _mesa_function_pool[20276]: IsQueryARB (will be remapped) */ "i\0" "glIsQuery\0" "glIsQueryARB\0" "\0" - /* _mesa_function_pool[19994]: ReplacementCodeuiColor4ubVertex3fSUN (dynamic) */ + /* _mesa_function_pool[20302]: ReplacementCodeuiColor4ubVertex3fSUN (dynamic) */ "iiiiifff\0" "glReplacementCodeuiColor4ubVertex3fSUN\0" "\0" - /* _mesa_function_pool[20043]: PixelStorei (offset 250) */ + /* _mesa_function_pool[20351]: PixelStorei (offset 250) */ "ii\0" "glPixelStorei\0" "\0" - /* _mesa_function_pool[20061]: VertexAttrib4usvARB (will be remapped) */ + /* _mesa_function_pool[20369]: VertexAttrib4usvARB (will be remapped) */ "ip\0" "glVertexAttrib4usv\0" "glVertexAttrib4usvARB\0" "\0" - /* _mesa_function_pool[20106]: LinkProgramARB (will be remapped) */ + /* _mesa_function_pool[20414]: LinkProgramARB (will be remapped) */ "i\0" "glLinkProgram\0" "glLinkProgramARB\0" "\0" - /* _mesa_function_pool[20140]: VertexAttrib2fNV (will be remapped) */ + /* _mesa_function_pool[20448]: VertexAttrib2fNV (will be remapped) */ "iff\0" "glVertexAttrib2fNV\0" "\0" - /* _mesa_function_pool[20164]: ShaderSourceARB (will be remapped) */ + /* _mesa_function_pool[20472]: ShaderSourceARB (will be remapped) */ "iipp\0" "glShaderSource\0" "glShaderSourceARB\0" "\0" - /* _mesa_function_pool[20203]: FragmentMaterialiSGIX (dynamic) */ + /* _mesa_function_pool[20511]: FragmentMaterialiSGIX (dynamic) */ "iii\0" "glFragmentMaterialiSGIX\0" "\0" - /* _mesa_function_pool[20232]: EvalCoord2dv (offset 233) */ + /* _mesa_function_pool[20540]: EvalCoord2dv (offset 233) */ "p\0" "glEvalCoord2dv\0" "\0" - /* _mesa_function_pool[20250]: VertexAttrib3svARB (will be remapped) */ + /* _mesa_function_pool[20558]: VertexAttrib3svARB (will be remapped) */ "ip\0" "glVertexAttrib3sv\0" "glVertexAttrib3svARB\0" "\0" - /* _mesa_function_pool[20293]: ColorMaterial (offset 151) */ + /* _mesa_function_pool[20601]: ColorMaterial (offset 151) */ "ii\0" "glColorMaterial\0" "\0" - /* _mesa_function_pool[20313]: CompressedTexSubImage3DARB (will be remapped) */ + /* _mesa_function_pool[20621]: CompressedTexSubImage3DARB (will be remapped) */ "iiiiiiiiiip\0" "glCompressedTexSubImage3D\0" "glCompressedTexSubImage3DARB\0" "\0" - /* _mesa_function_pool[20381]: WindowPos2ivMESA (will be remapped) */ + /* _mesa_function_pool[20689]: WindowPos2ivMESA (will be remapped) */ "p\0" "glWindowPos2iv\0" "glWindowPos2ivARB\0" "glWindowPos2ivMESA\0" "\0" - /* _mesa_function_pool[20436]: IsFramebufferEXT (will be remapped) */ + /* _mesa_function_pool[20744]: IsFramebufferEXT (will be remapped) */ "i\0" "glIsFramebuffer\0" "glIsFramebufferEXT\0" "\0" - /* _mesa_function_pool[20474]: Uniform4ivARB (will be remapped) */ + /* _mesa_function_pool[20782]: Uniform4ivARB (will be remapped) */ "iip\0" "glUniform4iv\0" "glUniform4ivARB\0" "\0" - /* _mesa_function_pool[20508]: GetVertexAttribdvARB (will be remapped) */ + /* _mesa_function_pool[20816]: GetVertexAttribdvARB (will be remapped) */ "iip\0" "glGetVertexAttribdv\0" "glGetVertexAttribdvARB\0" "\0" - /* _mesa_function_pool[20556]: TexBumpParameterivATI (will be remapped) */ + /* _mesa_function_pool[20864]: TexBumpParameterivATI (will be remapped) */ "ip\0" "glTexBumpParameterivATI\0" "\0" - /* _mesa_function_pool[20584]: GetSeparableFilter (offset 359) */ + /* _mesa_function_pool[20892]: GetSeparableFilter (offset 359) */ "iiippp\0" "glGetSeparableFilter\0" "glGetSeparableFilterEXT\0" "\0" - /* _mesa_function_pool[20637]: Binormal3dEXT (dynamic) */ + /* _mesa_function_pool[20945]: Binormal3dEXT (dynamic) */ "ddd\0" "glBinormal3dEXT\0" "\0" - /* _mesa_function_pool[20658]: SpriteParameteriSGIX (dynamic) */ + /* _mesa_function_pool[20966]: SpriteParameteriSGIX (dynamic) */ "ii\0" "glSpriteParameteriSGIX\0" "\0" - /* _mesa_function_pool[20685]: RequestResidentProgramsNV (will be remapped) */ + /* _mesa_function_pool[20993]: RequestResidentProgramsNV (will be remapped) */ "ip\0" "glRequestResidentProgramsNV\0" "\0" - /* _mesa_function_pool[20717]: TagSampleBufferSGIX (dynamic) */ + /* _mesa_function_pool[21025]: TagSampleBufferSGIX (dynamic) */ "\0" "glTagSampleBufferSGIX\0" "\0" - /* _mesa_function_pool[20741]: TransformFeedbackVaryingsEXT (will be remapped) */ + /* _mesa_function_pool[21049]: TransformFeedbackVaryingsEXT (will be remapped) */ "iipi\0" "glTransformFeedbackVaryingsEXT\0" "glTransformFeedbackVaryings\0" "\0" - /* _mesa_function_pool[20806]: FeedbackBuffer (offset 194) */ + /* _mesa_function_pool[21114]: FeedbackBuffer (offset 194) */ "iip\0" "glFeedbackBuffer\0" "\0" - /* _mesa_function_pool[20828]: RasterPos2iv (offset 67) */ + /* _mesa_function_pool[21136]: RasterPos2iv (offset 67) */ "p\0" "glRasterPos2iv\0" "\0" - /* _mesa_function_pool[20846]: TexImage1D (offset 182) */ + /* _mesa_function_pool[21154]: TexImage1D (offset 182) */ "iiiiiiip\0" "glTexImage1D\0" "\0" - /* _mesa_function_pool[20869]: ListParameterivSGIX (dynamic) */ + /* _mesa_function_pool[21177]: ListParameterivSGIX (dynamic) */ "iip\0" "glListParameterivSGIX\0" "\0" - /* _mesa_function_pool[20896]: MultiDrawElementsEXT (will be remapped) */ + /* _mesa_function_pool[21204]: MultiDrawElementsEXT (will be remapped) */ "ipipi\0" "glMultiDrawElements\0" "glMultiDrawElementsEXT\0" "\0" - /* _mesa_function_pool[20946]: Color3s (offset 17) */ + /* _mesa_function_pool[21254]: Color3s (offset 17) */ "iii\0" "glColor3s\0" "\0" - /* _mesa_function_pool[20961]: Uniform1ivARB (will be remapped) */ + /* _mesa_function_pool[21269]: Uniform1ivARB (will be remapped) */ "iip\0" "glUniform1iv\0" "glUniform1ivARB\0" "\0" - /* _mesa_function_pool[20995]: WindowPos2sMESA (will be remapped) */ + /* _mesa_function_pool[21303]: WindowPos2sMESA (will be remapped) */ "ii\0" "glWindowPos2s\0" "glWindowPos2sARB\0" "glWindowPos2sMESA\0" "\0" - /* _mesa_function_pool[21048]: WeightusvARB (dynamic) */ + /* _mesa_function_pool[21356]: WeightusvARB (dynamic) */ "ip\0" "glWeightusvARB\0" "\0" - /* _mesa_function_pool[21067]: TexCoordPointer (offset 320) */ + /* _mesa_function_pool[21375]: TexCoordPointer (offset 320) */ "iiip\0" "glTexCoordPointer\0" "\0" - /* _mesa_function_pool[21091]: FogCoordPointerEXT (will be remapped) */ + /* _mesa_function_pool[21399]: FogCoordPointerEXT (will be remapped) */ "iip\0" "glFogCoordPointer\0" "glFogCoordPointerEXT\0" "\0" - /* _mesa_function_pool[21135]: IndexMaterialEXT (dynamic) */ + /* _mesa_function_pool[21443]: IndexMaterialEXT (dynamic) */ "ii\0" "glIndexMaterialEXT\0" "\0" - /* _mesa_function_pool[21158]: Color3i (offset 15) */ + /* _mesa_function_pool[21466]: Color3i (offset 15) */ "iii\0" "glColor3i\0" "\0" - /* _mesa_function_pool[21173]: FrontFace (offset 157) */ + /* _mesa_function_pool[21481]: FrontFace (offset 157) */ "i\0" "glFrontFace\0" "\0" - /* _mesa_function_pool[21188]: EvalCoord2d (offset 232) */ + /* _mesa_function_pool[21496]: EvalCoord2d (offset 232) */ "dd\0" "glEvalCoord2d\0" "\0" - /* _mesa_function_pool[21206]: SecondaryColor3ubvEXT (will be remapped) */ + /* _mesa_function_pool[21514]: SecondaryColor3ubvEXT (will be remapped) */ "p\0" "glSecondaryColor3ubv\0" "glSecondaryColor3ubvEXT\0" "\0" - /* _mesa_function_pool[21254]: EvalCoord2f (offset 234) */ + /* _mesa_function_pool[21562]: EvalCoord2f (offset 234) */ "ff\0" "glEvalCoord2f\0" "\0" - /* _mesa_function_pool[21272]: VertexAttrib4dvARB (will be remapped) */ + /* _mesa_function_pool[21580]: VertexAttrib4dvARB (will be remapped) */ "ip\0" "glVertexAttrib4dv\0" "glVertexAttrib4dvARB\0" "\0" - /* _mesa_function_pool[21315]: BindAttribLocationARB (will be remapped) */ + /* _mesa_function_pool[21623]: BindAttribLocationARB (will be remapped) */ "iip\0" "glBindAttribLocation\0" "glBindAttribLocationARB\0" "\0" - /* _mesa_function_pool[21365]: Color3b (offset 9) */ + /* _mesa_function_pool[21673]: Color3b (offset 9) */ "iii\0" "glColor3b\0" "\0" - /* _mesa_function_pool[21380]: MultiTexCoord2dARB (offset 384) */ + /* _mesa_function_pool[21688]: MultiTexCoord2dARB (offset 384) */ "idd\0" "glMultiTexCoord2d\0" "glMultiTexCoord2dARB\0" "\0" - /* _mesa_function_pool[21424]: ExecuteProgramNV (will be remapped) */ + /* _mesa_function_pool[21732]: ExecuteProgramNV (will be remapped) */ "iip\0" "glExecuteProgramNV\0" "\0" - /* _mesa_function_pool[21448]: Color3f (offset 13) */ + /* _mesa_function_pool[21756]: Color3f (offset 13) */ "fff\0" "glColor3f\0" "\0" - /* _mesa_function_pool[21463]: LightEnviSGIX (dynamic) */ + /* _mesa_function_pool[21771]: LightEnviSGIX (dynamic) */ "ii\0" "glLightEnviSGIX\0" "\0" - /* _mesa_function_pool[21483]: Color3d (offset 11) */ + /* _mesa_function_pool[21791]: Color3d (offset 11) */ "ddd\0" "glColor3d\0" "\0" - /* _mesa_function_pool[21498]: Normal3dv (offset 55) */ + /* _mesa_function_pool[21806]: Normal3dv (offset 55) */ "p\0" "glNormal3dv\0" "\0" - /* _mesa_function_pool[21513]: Lightf (offset 159) */ + /* _mesa_function_pool[21821]: Lightf (offset 159) */ "iif\0" "glLightf\0" "\0" - /* _mesa_function_pool[21527]: ReplacementCodeuiSUN (dynamic) */ + /* _mesa_function_pool[21835]: ReplacementCodeuiSUN (dynamic) */ "i\0" "glReplacementCodeuiSUN\0" "\0" - /* _mesa_function_pool[21553]: MatrixMode (offset 293) */ + /* _mesa_function_pool[21861]: MatrixMode (offset 293) */ "i\0" "glMatrixMode\0" "\0" - /* _mesa_function_pool[21569]: GetPixelMapusv (offset 273) */ + /* _mesa_function_pool[21877]: GetPixelMapusv (offset 273) */ "ip\0" "glGetPixelMapusv\0" "\0" - /* _mesa_function_pool[21590]: Lighti (offset 161) */ + /* _mesa_function_pool[21898]: Lighti (offset 161) */ "iii\0" "glLighti\0" "\0" - /* _mesa_function_pool[21604]: VertexAttribPointerNV (will be remapped) */ + /* _mesa_function_pool[21912]: VertexAttribPointerNV (will be remapped) */ "iiiip\0" "glVertexAttribPointerNV\0" "\0" - /* _mesa_function_pool[21635]: ClearDepthf (will be remapped) */ + /* _mesa_function_pool[21943]: ClearDepthf (will be remapped) */ "f\0" "glClearDepthf\0" "\0" - /* _mesa_function_pool[21652]: GetBooleanIndexedvEXT (will be remapped) */ + /* _mesa_function_pool[21960]: GetBooleanIndexedvEXT (will be remapped) */ "iip\0" "glGetBooleanIndexedvEXT\0" "glGetBooleani_v\0" "\0" - /* _mesa_function_pool[21697]: GetFramebufferAttachmentParameterivEXT (will be remapped) */ + /* _mesa_function_pool[22005]: GetFramebufferAttachmentParameterivEXT (will be remapped) */ "iiip\0" "glGetFramebufferAttachmentParameteriv\0" "glGetFramebufferAttachmentParameterivEXT\0" "\0" - /* _mesa_function_pool[21782]: PixelTransformParameterfEXT (dynamic) */ + /* _mesa_function_pool[22090]: PixelTransformParameterfEXT (dynamic) */ "iif\0" "glPixelTransformParameterfEXT\0" "\0" - /* _mesa_function_pool[21817]: MultiTexCoord4dvARB (offset 401) */ + /* _mesa_function_pool[22125]: MultiTexCoord4dvARB (offset 401) */ "ip\0" "glMultiTexCoord4dv\0" "glMultiTexCoord4dvARB\0" "\0" - /* _mesa_function_pool[21862]: PixelTransformParameteriEXT (dynamic) */ + /* _mesa_function_pool[22170]: PixelTransformParameteriEXT (dynamic) */ "iii\0" "glPixelTransformParameteriEXT\0" "\0" - /* _mesa_function_pool[21897]: GetDoublev (offset 260) */ + /* _mesa_function_pool[22205]: GetDoublev (offset 260) */ "ip\0" "glGetDoublev\0" "\0" - /* _mesa_function_pool[21914]: MultMatrixd (offset 295) */ + /* _mesa_function_pool[22222]: MultMatrixd (offset 295) */ "p\0" "glMultMatrixd\0" "\0" - /* _mesa_function_pool[21931]: MultMatrixf (offset 294) */ + /* _mesa_function_pool[22239]: MultMatrixf (offset 294) */ "p\0" "glMultMatrixf\0" "\0" - /* _mesa_function_pool[21948]: VertexAttribI4bvEXT (will be remapped) */ + /* _mesa_function_pool[22256]: VertexAttribI4bvEXT (will be remapped) */ "ip\0" "glVertexAttribI4bvEXT\0" "glVertexAttribI4bv\0" "\0" - /* _mesa_function_pool[21993]: TexCoord2fColor4ubVertex3fSUN (dynamic) */ + /* _mesa_function_pool[22301]: TexCoord2fColor4ubVertex3fSUN (dynamic) */ "ffiiiifff\0" "glTexCoord2fColor4ubVertex3fSUN\0" "\0" - /* _mesa_function_pool[22036]: Uniform1iARB (will be remapped) */ + /* _mesa_function_pool[22344]: Uniform1iARB (will be remapped) */ "ii\0" "glUniform1i\0" "glUniform1iARB\0" "\0" - /* _mesa_function_pool[22067]: VertexAttribPointerARB (will be remapped) */ + /* _mesa_function_pool[22375]: VertexAttribPointerARB (will be remapped) */ "iiiiip\0" "glVertexAttribPointer\0" "glVertexAttribPointerARB\0" "\0" - /* _mesa_function_pool[22122]: VertexAttrib3sNV (will be remapped) */ + /* _mesa_function_pool[22430]: VertexAttrib3sNV (will be remapped) */ "iiii\0" "glVertexAttrib3sNV\0" "\0" - /* _mesa_function_pool[22147]: SharpenTexFuncSGIS (dynamic) */ + /* _mesa_function_pool[22455]: SharpenTexFuncSGIS (dynamic) */ "iip\0" "glSharpenTexFuncSGIS\0" "\0" - /* _mesa_function_pool[22173]: MultiTexCoord4fvARB (offset 403) */ + /* _mesa_function_pool[22481]: MultiTexCoord4fvARB (offset 403) */ "ip\0" "glMultiTexCoord4fv\0" "glMultiTexCoord4fvARB\0" "\0" - /* _mesa_function_pool[22218]: Uniform2uiEXT (will be remapped) */ + /* _mesa_function_pool[22526]: Uniform2uiEXT (will be remapped) */ "iii\0" "glUniform2uiEXT\0" "glUniform2ui\0" "\0" - /* _mesa_function_pool[22252]: UniformMatrix2x3fv (will be remapped) */ + /* _mesa_function_pool[22560]: UniformMatrix2x3fv (will be remapped) */ "iiip\0" "glUniformMatrix2x3fv\0" "\0" - /* _mesa_function_pool[22279]: TrackMatrixNV (will be remapped) */ - "iiii\0" - "glTrackMatrixNV\0" + /* _mesa_function_pool[22587]: SamplerParameteri (will be remapped) */ + "iii\0" + "glSamplerParameteri\0" "\0" - /* _mesa_function_pool[22301]: CombinerParameteriNV (will be remapped) */ + /* _mesa_function_pool[22612]: SamplerParameterf (will be remapped) */ + "iif\0" + "glSamplerParameterf\0" + "\0" + /* _mesa_function_pool[22637]: CombinerParameteriNV (will be remapped) */ "ii\0" "glCombinerParameteriNV\0" "\0" - /* _mesa_function_pool[22328]: DeleteAsyncMarkersSGIX (dynamic) */ + /* _mesa_function_pool[22664]: DeleteAsyncMarkersSGIX (dynamic) */ "ii\0" "glDeleteAsyncMarkersSGIX\0" "\0" - /* _mesa_function_pool[22357]: ReplacementCodeusSUN (dynamic) */ + /* _mesa_function_pool[22693]: ReplacementCodeusSUN (dynamic) */ "i\0" "glReplacementCodeusSUN\0" "\0" - /* _mesa_function_pool[22383]: IsAsyncMarkerSGIX (dynamic) */ + /* _mesa_function_pool[22719]: IsAsyncMarkerSGIX (dynamic) */ "i\0" "glIsAsyncMarkerSGIX\0" "\0" - /* _mesa_function_pool[22406]: FrameZoomSGIX (dynamic) */ + /* _mesa_function_pool[22742]: FrameZoomSGIX (dynamic) */ "i\0" "glFrameZoomSGIX\0" "\0" - /* _mesa_function_pool[22425]: Normal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[22761]: Normal3fVertex3fvSUN (dynamic) */ "pp\0" "glNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[22452]: RasterPos4sv (offset 85) */ + /* _mesa_function_pool[22788]: RasterPos4sv (offset 85) */ "p\0" "glRasterPos4sv\0" "\0" - /* _mesa_function_pool[22470]: VertexAttrib4NsvARB (will be remapped) */ + /* _mesa_function_pool[22806]: VertexAttrib4NsvARB (will be remapped) */ "ip\0" "glVertexAttrib4Nsv\0" "glVertexAttrib4NsvARB\0" "\0" - /* _mesa_function_pool[22515]: VertexAttrib3fvARB (will be remapped) */ + /* _mesa_function_pool[22851]: VertexAttrib3fvARB (will be remapped) */ "ip\0" "glVertexAttrib3fv\0" "glVertexAttrib3fvARB\0" "\0" - /* _mesa_function_pool[22558]: ClearColor (offset 206) */ + /* _mesa_function_pool[22894]: ClearColor (offset 206) */ "ffff\0" "glClearColor\0" "\0" - /* _mesa_function_pool[22577]: GetSynciv (will be remapped) */ + /* _mesa_function_pool[22913]: GetSynciv (will be remapped) */ "iiipp\0" "glGetSynciv\0" "\0" - /* _mesa_function_pool[22596]: ClearColorIiEXT (will be remapped) */ + /* _mesa_function_pool[22932]: ClearColorIiEXT (will be remapped) */ "iiii\0" "glClearColorIiEXT\0" "\0" - /* _mesa_function_pool[22620]: DeleteFramebuffersEXT (will be remapped) */ + /* _mesa_function_pool[22956]: DeleteFramebuffersEXT (will be remapped) */ "ip\0" "glDeleteFramebuffers\0" "glDeleteFramebuffersEXT\0" "\0" - /* _mesa_function_pool[22669]: GlobalAlphaFactorsSUN (dynamic) */ + /* _mesa_function_pool[23005]: GlobalAlphaFactorsSUN (dynamic) */ "i\0" "glGlobalAlphaFactorsSUN\0" "\0" - /* _mesa_function_pool[22696]: IsEnabledIndexedEXT (will be remapped) */ + /* _mesa_function_pool[23032]: IsEnabledIndexedEXT (will be remapped) */ "ii\0" "glIsEnabledIndexedEXT\0" "glIsEnabledi\0" "\0" - /* _mesa_function_pool[22735]: TexEnviv (offset 187) */ + /* _mesa_function_pool[23071]: TexEnviv (offset 187) */ "iip\0" "glTexEnviv\0" "\0" - /* _mesa_function_pool[22751]: TexSubImage3D (offset 372) */ + /* _mesa_function_pool[23087]: TexSubImage3D (offset 372) */ "iiiiiiiiiip\0" "glTexSubImage3D\0" "glTexSubImage3DEXT\0" "\0" - /* _mesa_function_pool[22799]: Tangent3fEXT (dynamic) */ + /* _mesa_function_pool[23135]: Tangent3fEXT (dynamic) */ "fff\0" "glTangent3fEXT\0" "\0" - /* _mesa_function_pool[22819]: SecondaryColor3uivEXT (will be remapped) */ + /* _mesa_function_pool[23155]: SecondaryColor3uivEXT (will be remapped) */ "p\0" "glSecondaryColor3uiv\0" "glSecondaryColor3uivEXT\0" "\0" - /* _mesa_function_pool[22867]: MatrixIndexubvARB (dynamic) */ + /* _mesa_function_pool[23203]: MatrixIndexubvARB (dynamic) */ "ip\0" "glMatrixIndexubvARB\0" "\0" - /* _mesa_function_pool[22891]: Color4fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[23227]: Color4fNormal3fVertex3fSUN (dynamic) */ "ffffffffff\0" "glColor4fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[22932]: PixelTexGenParameterfSGIS (will be remapped) */ + /* _mesa_function_pool[23268]: PixelTexGenParameterfSGIS (will be remapped) */ "if\0" "glPixelTexGenParameterfSGIS\0" "\0" - /* _mesa_function_pool[22964]: CreateShader (will be remapped) */ + /* _mesa_function_pool[23300]: CreateShader (will be remapped) */ "i\0" "glCreateShader\0" "\0" - /* _mesa_function_pool[22982]: GetColorTableParameterfv (offset 344) */ + /* _mesa_function_pool[23318]: GetColorTableParameterfv (offset 344) */ "iip\0" "glGetColorTableParameterfv\0" "glGetColorTableParameterfvSGI\0" "glGetColorTableParameterfvEXT\0" "\0" - /* _mesa_function_pool[23074]: FragmentLightModelfvSGIX (dynamic) */ + /* _mesa_function_pool[23410]: FragmentLightModelfvSGIX (dynamic) */ "ip\0" "glFragmentLightModelfvSGIX\0" "\0" - /* _mesa_function_pool[23105]: Bitmap (offset 8) */ + /* _mesa_function_pool[23441]: Bitmap (offset 8) */ "iiffffp\0" "glBitmap\0" "\0" - /* _mesa_function_pool[23123]: MultiTexCoord3fARB (offset 394) */ + /* _mesa_function_pool[23459]: MultiTexCoord3fARB (offset 394) */ "ifff\0" "glMultiTexCoord3f\0" "glMultiTexCoord3fARB\0" "\0" - /* _mesa_function_pool[23168]: GetTexLevelParameterfv (offset 284) */ + /* _mesa_function_pool[23504]: GetTexLevelParameterfv (offset 284) */ "iiip\0" "glGetTexLevelParameterfv\0" "\0" - /* _mesa_function_pool[23199]: GetPixelTexGenParameterfvSGIS (will be remapped) */ + /* _mesa_function_pool[23535]: GetPixelTexGenParameterfvSGIS (will be remapped) */ "ip\0" "glGetPixelTexGenParameterfvSGIS\0" "\0" - /* _mesa_function_pool[23235]: GenFramebuffersEXT (will be remapped) */ + /* _mesa_function_pool[23571]: GenFramebuffersEXT (will be remapped) */ "ip\0" "glGenFramebuffers\0" "glGenFramebuffersEXT\0" "\0" - /* _mesa_function_pool[23278]: VertexAttribDivisor (will be remapped) */ + /* _mesa_function_pool[23614]: VertexAttribDivisor (will be remapped) */ "ii\0" "glVertexAttribDivisor\0" "\0" - /* _mesa_function_pool[23304]: GetProgramParameterdvNV (will be remapped) */ + /* _mesa_function_pool[23640]: GetProgramParameterdvNV (will be remapped) */ "iiip\0" "glGetProgramParameterdvNV\0" "\0" - /* _mesa_function_pool[23336]: Vertex2sv (offset 133) */ + /* _mesa_function_pool[23672]: Vertex2sv (offset 133) */ "p\0" "glVertex2sv\0" "\0" - /* _mesa_function_pool[23351]: GetIntegerv (offset 263) */ + /* _mesa_function_pool[23687]: GetIntegerv (offset 263) */ "ip\0" "glGetIntegerv\0" "\0" - /* _mesa_function_pool[23369]: IsVertexArrayAPPLE (will be remapped) */ + /* _mesa_function_pool[23705]: IsVertexArrayAPPLE (will be remapped) */ "i\0" "glIsVertexArray\0" "glIsVertexArrayAPPLE\0" "\0" - /* _mesa_function_pool[23409]: FragmentLightfvSGIX (dynamic) */ + /* _mesa_function_pool[23745]: FragmentLightfvSGIX (dynamic) */ "iip\0" "glFragmentLightfvSGIX\0" "\0" - /* _mesa_function_pool[23436]: VertexAttribDivisorARB (will be remapped) */ + /* _mesa_function_pool[23772]: VertexAttribDivisorARB (will be remapped) */ "ii\0" "glVertexAttribDivisorARB\0" "\0" - /* _mesa_function_pool[23465]: DetachShader (will be remapped) */ + /* _mesa_function_pool[23801]: DetachShader (will be remapped) */ "ii\0" "glDetachShader\0" "\0" - /* _mesa_function_pool[23484]: VertexAttrib4NubARB (will be remapped) */ + /* _mesa_function_pool[23820]: VertexAttrib4NubARB (will be remapped) */ "iiiii\0" "glVertexAttrib4Nub\0" "glVertexAttrib4NubARB\0" "\0" - /* _mesa_function_pool[23532]: GetProgramEnvParameterfvARB (will be remapped) */ + /* _mesa_function_pool[23868]: GetProgramEnvParameterfvARB (will be remapped) */ "iip\0" "glGetProgramEnvParameterfvARB\0" "\0" - /* _mesa_function_pool[23567]: GetTrackMatrixivNV (will be remapped) */ + /* _mesa_function_pool[23903]: GetTrackMatrixivNV (will be remapped) */ "iiip\0" "glGetTrackMatrixivNV\0" "\0" - /* _mesa_function_pool[23594]: VertexAttrib3svNV (will be remapped) */ + /* _mesa_function_pool[23930]: VertexAttrib3svNV (will be remapped) */ "ip\0" "glVertexAttrib3svNV\0" "\0" - /* _mesa_function_pool[23618]: Uniform4fvARB (will be remapped) */ + /* _mesa_function_pool[23954]: Uniform4fvARB (will be remapped) */ "iip\0" "glUniform4fv\0" "glUniform4fvARB\0" "\0" - /* _mesa_function_pool[23652]: MultTransposeMatrixfARB (will be remapped) */ + /* _mesa_function_pool[23988]: MultTransposeMatrixfARB (will be remapped) */ "p\0" "glMultTransposeMatrixf\0" "glMultTransposeMatrixfARB\0" "\0" - /* _mesa_function_pool[23704]: GetTexEnviv (offset 277) */ + /* _mesa_function_pool[24040]: GetTexEnviv (offset 277) */ "iip\0" "glGetTexEnviv\0" "\0" - /* _mesa_function_pool[23723]: ColorFragmentOp1ATI (will be remapped) */ + /* _mesa_function_pool[24059]: ColorFragmentOp1ATI (will be remapped) */ "iiiiiii\0" "glColorFragmentOp1ATI\0" "\0" - /* _mesa_function_pool[23754]: GetUniformfvARB (will be remapped) */ + /* _mesa_function_pool[24090]: GetUniformfvARB (will be remapped) */ "iip\0" "glGetUniformfv\0" "glGetUniformfvARB\0" "\0" - /* _mesa_function_pool[23792]: EGLImageTargetRenderbufferStorageOES (will be remapped) */ + /* _mesa_function_pool[24128]: EGLImageTargetRenderbufferStorageOES (will be remapped) */ "ip\0" "glEGLImageTargetRenderbufferStorageOES\0" "\0" - /* _mesa_function_pool[23835]: VertexAttribI2ivEXT (will be remapped) */ + /* _mesa_function_pool[24171]: VertexAttribI2ivEXT (will be remapped) */ "ip\0" "glVertexAttribI2ivEXT\0" "glVertexAttribI2iv\0" "\0" - /* _mesa_function_pool[23880]: PopClientAttrib (offset 334) */ + /* _mesa_function_pool[24216]: PopClientAttrib (offset 334) */ "\0" "glPopClientAttrib\0" "\0" - /* _mesa_function_pool[23900]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[24236]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */ "iffffffffffff\0" "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[23971]: DetachObjectARB (will be remapped) */ + /* _mesa_function_pool[24307]: DetachObjectARB (will be remapped) */ "ii\0" "glDetachObjectARB\0" "\0" - /* _mesa_function_pool[23993]: VertexBlendARB (dynamic) */ + /* _mesa_function_pool[24329]: VertexBlendARB (dynamic) */ "i\0" "glVertexBlendARB\0" "\0" - /* _mesa_function_pool[24013]: WindowPos3iMESA (will be remapped) */ + /* _mesa_function_pool[24349]: WindowPos3iMESA (will be remapped) */ "iii\0" "glWindowPos3i\0" "glWindowPos3iARB\0" "glWindowPos3iMESA\0" "\0" - /* _mesa_function_pool[24067]: SeparableFilter2D (offset 360) */ + /* _mesa_function_pool[24403]: SeparableFilter2D (offset 360) */ "iiiiiipp\0" "glSeparableFilter2D\0" "glSeparableFilter2DEXT\0" "\0" - /* _mesa_function_pool[24120]: ProgramParameteriARB (will be remapped) */ + /* _mesa_function_pool[24456]: ProgramParameteriARB (will be remapped) */ "iii\0" "glProgramParameteriARB\0" "\0" - /* _mesa_function_pool[24148]: Map1d (offset 220) */ + /* _mesa_function_pool[24484]: Map1d (offset 220) */ "iddiip\0" "glMap1d\0" "\0" - /* _mesa_function_pool[24164]: Map1f (offset 221) */ + /* _mesa_function_pool[24500]: Map1f (offset 221) */ "iffiip\0" "glMap1f\0" "\0" - /* _mesa_function_pool[24180]: CompressedTexImage2DARB (will be remapped) */ + /* _mesa_function_pool[24516]: CompressedTexImage2DARB (will be remapped) */ "iiiiiiip\0" "glCompressedTexImage2D\0" "glCompressedTexImage2DARB\0" "\0" - /* _mesa_function_pool[24239]: ArrayElement (offset 306) */ + /* _mesa_function_pool[24575]: ArrayElement (offset 306) */ "i\0" "glArrayElement\0" "glArrayElementEXT\0" "\0" - /* _mesa_function_pool[24275]: TexImage2D (offset 183) */ + /* _mesa_function_pool[24611]: TexImage2D (offset 183) */ "iiiiiiiip\0" "glTexImage2D\0" "\0" - /* _mesa_function_pool[24299]: DepthBoundsEXT (will be remapped) */ + /* _mesa_function_pool[24635]: DepthBoundsEXT (will be remapped) */ "dd\0" "glDepthBoundsEXT\0" "\0" - /* _mesa_function_pool[24320]: ProgramParameters4fvNV (will be remapped) */ + /* _mesa_function_pool[24656]: ProgramParameters4fvNV (will be remapped) */ "iiip\0" "glProgramParameters4fvNV\0" "\0" - /* _mesa_function_pool[24351]: DeformationMap3fSGIX (dynamic) */ + /* _mesa_function_pool[24687]: DeformationMap3fSGIX (dynamic) */ "iffiiffiiffiip\0" "glDeformationMap3fSGIX\0" "\0" - /* _mesa_function_pool[24390]: GetProgramivNV (will be remapped) */ + /* _mesa_function_pool[24726]: GetProgramivNV (will be remapped) */ "iip\0" "glGetProgramivNV\0" "\0" - /* _mesa_function_pool[24412]: GetFragDataLocationEXT (will be remapped) */ + /* _mesa_function_pool[24748]: GetFragDataLocationEXT (will be remapped) */ "ip\0" "glGetFragDataLocationEXT\0" "glGetFragDataLocation\0" "\0" - /* _mesa_function_pool[24463]: GetMinmaxParameteriv (offset 366) */ + /* _mesa_function_pool[24799]: GetMinmaxParameteriv (offset 366) */ "iip\0" "glGetMinmaxParameteriv\0" "glGetMinmaxParameterivEXT\0" "\0" - /* _mesa_function_pool[24517]: PixelTransferf (offset 247) */ + /* _mesa_function_pool[24853]: PixelTransferf (offset 247) */ "if\0" "glPixelTransferf\0" "\0" - /* _mesa_function_pool[24538]: CopyTexImage1D (offset 323) */ + /* _mesa_function_pool[24874]: CopyTexImage1D (offset 323) */ "iiiiiii\0" "glCopyTexImage1D\0" "glCopyTexImage1DEXT\0" "\0" - /* _mesa_function_pool[24584]: PushMatrix (offset 298) */ + /* _mesa_function_pool[24920]: PushMatrix (offset 298) */ "\0" "glPushMatrix\0" "\0" - /* _mesa_function_pool[24599]: Fogiv (offset 156) */ + /* _mesa_function_pool[24935]: Fogiv (offset 156) */ "ip\0" "glFogiv\0" "\0" - /* _mesa_function_pool[24611]: TexCoord1dv (offset 95) */ + /* _mesa_function_pool[24947]: TexCoord1dv (offset 95) */ "p\0" "glTexCoord1dv\0" "\0" - /* _mesa_function_pool[24628]: AlphaFragmentOp3ATI (will be remapped) */ + /* _mesa_function_pool[24964]: AlphaFragmentOp3ATI (will be remapped) */ "iiiiiiiiiiii\0" "glAlphaFragmentOp3ATI\0" "\0" - /* _mesa_function_pool[24664]: PixelTransferi (offset 248) */ + /* _mesa_function_pool[25000]: PixelTransferi (offset 248) */ "ii\0" "glPixelTransferi\0" "\0" - /* _mesa_function_pool[24685]: GetVertexAttribdvNV (will be remapped) */ + /* _mesa_function_pool[25021]: GetVertexAttribdvNV (will be remapped) */ "iip\0" "glGetVertexAttribdvNV\0" "\0" - /* _mesa_function_pool[24712]: VertexAttrib3fvNV (will be remapped) */ + /* _mesa_function_pool[25048]: VertexAttrib3fvNV (will be remapped) */ "ip\0" "glVertexAttrib3fvNV\0" "\0" - /* _mesa_function_pool[24736]: Rotatef (offset 300) */ + /* _mesa_function_pool[25072]: Rotatef (offset 300) */ "ffff\0" "glRotatef\0" "\0" - /* _mesa_function_pool[24752]: GetFinalCombinerInputParameterivNV (will be remapped) */ + /* _mesa_function_pool[25088]: GetFinalCombinerInputParameterivNV (will be remapped) */ "iip\0" "glGetFinalCombinerInputParameterivNV\0" "\0" - /* _mesa_function_pool[24794]: Vertex3i (offset 138) */ + /* _mesa_function_pool[25130]: Vertex3i (offset 138) */ "iii\0" "glVertex3i\0" "\0" - /* _mesa_function_pool[24810]: Vertex3f (offset 136) */ + /* _mesa_function_pool[25146]: Vertex3f (offset 136) */ "fff\0" "glVertex3f\0" "\0" - /* _mesa_function_pool[24826]: Clear (offset 203) */ + /* _mesa_function_pool[25162]: Clear (offset 203) */ "i\0" "glClear\0" "\0" - /* _mesa_function_pool[24837]: Vertex3d (offset 134) */ + /* _mesa_function_pool[25173]: Vertex3d (offset 134) */ "ddd\0" "glVertex3d\0" "\0" - /* _mesa_function_pool[24853]: GetMapParameterivNV (dynamic) */ + /* _mesa_function_pool[25189]: GetMapParameterivNV (dynamic) */ "iip\0" "glGetMapParameterivNV\0" "\0" - /* _mesa_function_pool[24880]: Uniform4iARB (will be remapped) */ + /* _mesa_function_pool[25216]: Uniform4iARB (will be remapped) */ "iiiii\0" "glUniform4i\0" "glUniform4iARB\0" "\0" - /* _mesa_function_pool[24914]: ReadBuffer (offset 254) */ + /* _mesa_function_pool[25250]: ReadBuffer (offset 254) */ "i\0" "glReadBuffer\0" "\0" - /* _mesa_function_pool[24930]: ConvolutionParameteri (offset 352) */ + /* _mesa_function_pool[25266]: ConvolutionParameteri (offset 352) */ "iii\0" "glConvolutionParameteri\0" "glConvolutionParameteriEXT\0" "\0" - /* _mesa_function_pool[24986]: Ortho (offset 296) */ + /* _mesa_function_pool[25322]: Ortho (offset 296) */ "dddddd\0" "glOrtho\0" "\0" - /* _mesa_function_pool[25002]: Binormal3sEXT (dynamic) */ + /* _mesa_function_pool[25338]: Binormal3sEXT (dynamic) */ "iii\0" "glBinormal3sEXT\0" "\0" - /* _mesa_function_pool[25023]: ListBase (offset 6) */ + /* _mesa_function_pool[25359]: ListBase (offset 6) */ "i\0" "glListBase\0" "\0" - /* _mesa_function_pool[25037]: Vertex3s (offset 140) */ + /* _mesa_function_pool[25373]: VertexAttribI3ivEXT (will be remapped) */ + "ip\0" + "glVertexAttribI3ivEXT\0" + "glVertexAttribI3iv\0" + "\0" + /* _mesa_function_pool[25418]: Vertex3s (offset 140) */ "iii\0" "glVertex3s\0" "\0" - /* _mesa_function_pool[25053]: ConvolutionParameterf (offset 350) */ + /* _mesa_function_pool[25434]: ConvolutionParameterf (offset 350) */ "iif\0" "glConvolutionParameterf\0" "glConvolutionParameterfEXT\0" "\0" - /* _mesa_function_pool[25109]: GetColorTableParameteriv (offset 345) */ + /* _mesa_function_pool[25490]: GetColorTableParameteriv (offset 345) */ "iip\0" "glGetColorTableParameteriv\0" "glGetColorTableParameterivSGI\0" "glGetColorTableParameterivEXT\0" "\0" - /* _mesa_function_pool[25201]: ProgramEnvParameter4dvARB (will be remapped) */ + /* _mesa_function_pool[25582]: ProgramEnvParameter4dvARB (will be remapped) */ "iip\0" "glProgramEnvParameter4dvARB\0" "glProgramParameter4dvNV\0" "\0" - /* _mesa_function_pool[25258]: ShadeModel (offset 177) */ + /* _mesa_function_pool[25639]: ShadeModel (offset 177) */ "i\0" "glShadeModel\0" "\0" - /* _mesa_function_pool[25274]: VertexAttribs2fvNV (will be remapped) */ + /* _mesa_function_pool[25655]: VertexAttribs2fvNV (will be remapped) */ "iip\0" "glVertexAttribs2fvNV\0" "\0" - /* _mesa_function_pool[25300]: Rectiv (offset 91) */ + /* _mesa_function_pool[25681]: Rectiv (offset 91) */ "pp\0" "glRectiv\0" "\0" - /* _mesa_function_pool[25313]: UseProgramObjectARB (will be remapped) */ + /* _mesa_function_pool[25694]: UseProgramObjectARB (will be remapped) */ "i\0" "glUseProgram\0" "glUseProgramObjectARB\0" "\0" - /* _mesa_function_pool[25351]: GetMapParameterfvNV (dynamic) */ + /* _mesa_function_pool[25732]: GetMapParameterfvNV (dynamic) */ "iip\0" "glGetMapParameterfvNV\0" "\0" - /* _mesa_function_pool[25378]: EndConditionalRenderNV (will be remapped) */ + /* _mesa_function_pool[25759]: EndConditionalRenderNV (will be remapped) */ "\0" "glEndConditionalRenderNV\0" "glEndConditionalRender\0" "\0" - /* _mesa_function_pool[25428]: PassTexCoordATI (will be remapped) */ + /* _mesa_function_pool[25809]: PassTexCoordATI (will be remapped) */ "iii\0" "glPassTexCoordATI\0" "\0" - /* _mesa_function_pool[25451]: DeleteProgram (will be remapped) */ + /* _mesa_function_pool[25832]: DeleteProgram (will be remapped) */ "i\0" "glDeleteProgram\0" "\0" - /* _mesa_function_pool[25470]: Tangent3ivEXT (dynamic) */ - "p\0" - "glTangent3ivEXT\0" + /* _mesa_function_pool[25851]: GetSamplerParameteriv (will be remapped) */ + "iip\0" + "glGetSamplerParameteriv\0" "\0" - /* _mesa_function_pool[25489]: Tangent3dEXT (dynamic) */ + /* _mesa_function_pool[25880]: Tangent3dEXT (dynamic) */ "ddd\0" "glTangent3dEXT\0" "\0" - /* _mesa_function_pool[25509]: SecondaryColor3dvEXT (will be remapped) */ + /* _mesa_function_pool[25900]: SecondaryColor3dvEXT (will be remapped) */ "p\0" "glSecondaryColor3dv\0" "glSecondaryColor3dvEXT\0" "\0" - /* _mesa_function_pool[25555]: AlphaFragmentOp2ATI (will be remapped) */ + /* _mesa_function_pool[25946]: AlphaFragmentOp2ATI (will be remapped) */ "iiiiiiiii\0" "glAlphaFragmentOp2ATI\0" "\0" - /* _mesa_function_pool[25588]: Vertex2fv (offset 129) */ + /* _mesa_function_pool[25979]: Vertex2fv (offset 129) */ "p\0" "glVertex2fv\0" "\0" - /* _mesa_function_pool[25603]: MultiDrawArraysEXT (will be remapped) */ + /* _mesa_function_pool[25994]: MultiDrawArraysEXT (will be remapped) */ "ippi\0" "glMultiDrawArrays\0" "glMultiDrawArraysEXT\0" "\0" - /* _mesa_function_pool[25648]: BindRenderbufferEXT (will be remapped) */ + /* _mesa_function_pool[26039]: BindRenderbufferEXT (will be remapped) */ "ii\0" "glBindRenderbuffer\0" "glBindRenderbufferEXT\0" "\0" - /* _mesa_function_pool[25693]: MultiTexCoord4dARB (offset 400) */ + /* _mesa_function_pool[26084]: MultiTexCoord4dARB (offset 400) */ "idddd\0" "glMultiTexCoord4d\0" "glMultiTexCoord4dARB\0" "\0" - /* _mesa_function_pool[25739]: FramebufferTextureFaceARB (will be remapped) */ + /* _mesa_function_pool[26130]: FramebufferTextureFaceARB (will be remapped) */ "iiiii\0" "glFramebufferTextureFaceARB\0" "\0" - /* _mesa_function_pool[25774]: Vertex3sv (offset 141) */ + /* _mesa_function_pool[26165]: Vertex3sv (offset 141) */ "p\0" "glVertex3sv\0" "\0" - /* _mesa_function_pool[25789]: SecondaryColor3usEXT (will be remapped) */ + /* _mesa_function_pool[26180]: SecondaryColor3usEXT (will be remapped) */ "iii\0" "glSecondaryColor3us\0" "glSecondaryColor3usEXT\0" "\0" - /* _mesa_function_pool[25837]: ProgramLocalParameter4fvARB (will be remapped) */ + /* _mesa_function_pool[26228]: ProgramLocalParameter4fvARB (will be remapped) */ "iip\0" "glProgramLocalParameter4fvARB\0" "\0" - /* _mesa_function_pool[25872]: DeleteProgramsNV (will be remapped) */ + /* _mesa_function_pool[26263]: DeleteProgramsNV (will be remapped) */ "ip\0" "glDeleteProgramsARB\0" "glDeleteProgramsNV\0" "\0" - /* _mesa_function_pool[25915]: EvalMesh1 (offset 236) */ + /* _mesa_function_pool[26306]: EvalMesh1 (offset 236) */ "iii\0" "glEvalMesh1\0" "\0" - /* _mesa_function_pool[25932]: PauseTransformFeedback (will be remapped) */ + /* _mesa_function_pool[26323]: PauseTransformFeedback (will be remapped) */ "\0" "glPauseTransformFeedback\0" "\0" - /* _mesa_function_pool[25959]: MultiTexCoord1sARB (offset 382) */ + /* _mesa_function_pool[26350]: MultiTexCoord1sARB (offset 382) */ "ii\0" "glMultiTexCoord1s\0" "glMultiTexCoord1sARB\0" "\0" - /* _mesa_function_pool[26002]: ReplacementCodeuiColor3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[26393]: ReplacementCodeuiColor3fVertex3fSUN (dynamic) */ "iffffff\0" "glReplacementCodeuiColor3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[26049]: GetVertexAttribPointervNV (will be remapped) */ + /* _mesa_function_pool[26440]: GetVertexAttribPointervNV (will be remapped) */ "iip\0" "glGetVertexAttribPointerv\0" "glGetVertexAttribPointervARB\0" "glGetVertexAttribPointervNV\0" "\0" - /* _mesa_function_pool[26137]: VertexAttribs1fvNV (will be remapped) */ + /* _mesa_function_pool[26528]: VertexAttribs1fvNV (will be remapped) */ "iip\0" "glVertexAttribs1fvNV\0" "\0" - /* _mesa_function_pool[26163]: MultiTexCoord1dvARB (offset 377) */ + /* _mesa_function_pool[26554]: MultiTexCoord1dvARB (offset 377) */ "ip\0" "glMultiTexCoord1dv\0" "glMultiTexCoord1dvARB\0" "\0" - /* _mesa_function_pool[26208]: Uniform2iARB (will be remapped) */ + /* _mesa_function_pool[26599]: Uniform2iARB (will be remapped) */ "iii\0" "glUniform2i\0" "glUniform2iARB\0" "\0" - /* _mesa_function_pool[26240]: Vertex2iv (offset 131) */ + /* _mesa_function_pool[26631]: Vertex2iv (offset 131) */ "p\0" "glVertex2iv\0" "\0" - /* _mesa_function_pool[26255]: GetProgramStringNV (will be remapped) */ + /* _mesa_function_pool[26646]: GetProgramStringNV (will be remapped) */ "iip\0" "glGetProgramStringNV\0" "\0" - /* _mesa_function_pool[26281]: ColorPointerEXT (will be remapped) */ + /* _mesa_function_pool[26672]: ColorPointerEXT (will be remapped) */ "iiiip\0" "glColorPointerEXT\0" "\0" - /* _mesa_function_pool[26306]: LineWidth (offset 168) */ + /* _mesa_function_pool[26697]: LineWidth (offset 168) */ "f\0" "glLineWidth\0" "\0" - /* _mesa_function_pool[26321]: MapBufferARB (will be remapped) */ + /* _mesa_function_pool[26712]: MapBufferARB (will be remapped) */ "ii\0" "glMapBuffer\0" "glMapBufferARB\0" "\0" - /* _mesa_function_pool[26352]: MultiDrawElementsBaseVertex (will be remapped) */ + /* _mesa_function_pool[26743]: MultiDrawElementsBaseVertex (will be remapped) */ "ipipip\0" "glMultiDrawElementsBaseVertex\0" "\0" - /* _mesa_function_pool[26390]: TexParameterIuivEXT (will be remapped) */ + /* _mesa_function_pool[26781]: TexParameterIuivEXT (will be remapped) */ "iip\0" "glTexParameterIuivEXT\0" "glTexParameterIuiv\0" "\0" - /* _mesa_function_pool[26436]: Binormal3svEXT (dynamic) */ + /* _mesa_function_pool[26827]: Binormal3svEXT (dynamic) */ "p\0" "glBinormal3svEXT\0" "\0" - /* _mesa_function_pool[26456]: ApplyTextureEXT (dynamic) */ + /* _mesa_function_pool[26847]: ApplyTextureEXT (dynamic) */ "i\0" "glApplyTextureEXT\0" "\0" - /* _mesa_function_pool[26477]: GetBufferParameteri64v (will be remapped) */ + /* _mesa_function_pool[26868]: GetBufferParameteri64v (will be remapped) */ "iip\0" "glGetBufferParameteri64v\0" "\0" - /* _mesa_function_pool[26507]: TexGendv (offset 189) */ + /* _mesa_function_pool[26898]: TexGendv (offset 189) */ "iip\0" "glTexGendv\0" "\0" - /* _mesa_function_pool[26523]: VertexAttribI3iEXT (will be remapped) */ + /* _mesa_function_pool[26914]: VertexAttribI3iEXT (will be remapped) */ "iiii\0" "glVertexAttribI3iEXT\0" "glVertexAttribI3i\0" "\0" - /* _mesa_function_pool[26568]: EnableIndexedEXT (will be remapped) */ + /* _mesa_function_pool[26959]: EnableIndexedEXT (will be remapped) */ "ii\0" "glEnableIndexedEXT\0" "glEnablei\0" "\0" - /* _mesa_function_pool[26601]: TextureMaterialEXT (dynamic) */ + /* _mesa_function_pool[26992]: TextureMaterialEXT (dynamic) */ "ii\0" "glTextureMaterialEXT\0" "\0" - /* _mesa_function_pool[26626]: TextureLightEXT (dynamic) */ + /* _mesa_function_pool[27017]: TextureLightEXT (dynamic) */ "i\0" "glTextureLightEXT\0" "\0" - /* _mesa_function_pool[26647]: ResetMinmax (offset 370) */ + /* _mesa_function_pool[27038]: ResetMinmax (offset 370) */ "i\0" "glResetMinmax\0" "glResetMinmaxEXT\0" "\0" - /* _mesa_function_pool[26681]: SpriteParameterfSGIX (dynamic) */ + /* _mesa_function_pool[27072]: SpriteParameterfSGIX (dynamic) */ "if\0" "glSpriteParameterfSGIX\0" "\0" - /* _mesa_function_pool[26708]: EnableClientState (offset 313) */ + /* _mesa_function_pool[27099]: EnableClientState (offset 313) */ "i\0" "glEnableClientState\0" "\0" - /* _mesa_function_pool[26731]: VertexAttrib4sNV (will be remapped) */ + /* _mesa_function_pool[27122]: VertexAttrib4sNV (will be remapped) */ "iiiii\0" "glVertexAttrib4sNV\0" "\0" - /* _mesa_function_pool[26757]: GetConvolutionParameterfv (offset 357) */ + /* _mesa_function_pool[27148]: GetConvolutionParameterfv (offset 357) */ "iip\0" "glGetConvolutionParameterfv\0" "glGetConvolutionParameterfvEXT\0" "\0" - /* _mesa_function_pool[26821]: VertexAttribs4dvNV (will be remapped) */ + /* _mesa_function_pool[27212]: VertexAttribs4dvNV (will be remapped) */ "iip\0" "glVertexAttribs4dvNV\0" "\0" - /* _mesa_function_pool[26847]: MultiModeDrawArraysIBM (will be remapped) */ - "pppii\0" - "glMultiModeDrawArraysIBM\0" - "\0" - /* _mesa_function_pool[26879]: VertexAttrib4dARB (will be remapped) */ + /* _mesa_function_pool[27238]: VertexAttrib4dARB (will be remapped) */ "idddd\0" "glVertexAttrib4d\0" "glVertexAttrib4dARB\0" "\0" - /* _mesa_function_pool[26923]: GetTexBumpParameterfvATI (will be remapped) */ + /* _mesa_function_pool[27282]: GetTexBumpParameterfvATI (will be remapped) */ "ip\0" "glGetTexBumpParameterfvATI\0" "\0" - /* _mesa_function_pool[26954]: ProgramNamedParameter4dNV (will be remapped) */ + /* _mesa_function_pool[27313]: ProgramNamedParameter4dNV (will be remapped) */ "iipdddd\0" "glProgramNamedParameter4dNV\0" "\0" - /* _mesa_function_pool[26991]: GetMaterialfv (offset 269) */ + /* _mesa_function_pool[27350]: GetMaterialfv (offset 269) */ "iip\0" "glGetMaterialfv\0" "\0" - /* _mesa_function_pool[27012]: VertexWeightfEXT (dynamic) */ + /* _mesa_function_pool[27371]: VertexWeightfEXT (dynamic) */ "f\0" "glVertexWeightfEXT\0" "\0" - /* _mesa_function_pool[27034]: SetFragmentShaderConstantATI (will be remapped) */ + /* _mesa_function_pool[27393]: SetFragmentShaderConstantATI (will be remapped) */ "ip\0" "glSetFragmentShaderConstantATI\0" "\0" - /* _mesa_function_pool[27069]: Binormal3fEXT (dynamic) */ + /* _mesa_function_pool[27428]: Binormal3fEXT (dynamic) */ "fff\0" "glBinormal3fEXT\0" "\0" - /* _mesa_function_pool[27090]: CallList (offset 2) */ + /* _mesa_function_pool[27449]: CallList (offset 2) */ "i\0" "glCallList\0" "\0" - /* _mesa_function_pool[27104]: Materialfv (offset 170) */ + /* _mesa_function_pool[27463]: Materialfv (offset 170) */ "iip\0" "glMaterialfv\0" "\0" - /* _mesa_function_pool[27122]: TexCoord3fv (offset 113) */ + /* _mesa_function_pool[27481]: TexCoord3fv (offset 113) */ "p\0" "glTexCoord3fv\0" "\0" - /* _mesa_function_pool[27139]: FogCoordfvEXT (will be remapped) */ + /* _mesa_function_pool[27498]: FogCoordfvEXT (will be remapped) */ "p\0" "glFogCoordfv\0" "glFogCoordfvEXT\0" "\0" - /* _mesa_function_pool[27171]: MultiTexCoord1ivARB (offset 381) */ + /* _mesa_function_pool[27530]: MultiTexCoord1ivARB (offset 381) */ "ip\0" "glMultiTexCoord1iv\0" "glMultiTexCoord1ivARB\0" "\0" - /* _mesa_function_pool[27216]: SecondaryColor3ubEXT (will be remapped) */ + /* _mesa_function_pool[27575]: SecondaryColor3ubEXT (will be remapped) */ "iii\0" "glSecondaryColor3ub\0" "glSecondaryColor3ubEXT\0" "\0" - /* _mesa_function_pool[27264]: MultiTexCoord2ivARB (offset 389) */ + /* _mesa_function_pool[27623]: MultiTexCoord2ivARB (offset 389) */ "ip\0" "glMultiTexCoord2iv\0" "glMultiTexCoord2ivARB\0" "\0" - /* _mesa_function_pool[27309]: FogFuncSGIS (dynamic) */ + /* _mesa_function_pool[27668]: FogFuncSGIS (dynamic) */ "ip\0" "glFogFuncSGIS\0" "\0" - /* _mesa_function_pool[27327]: CopyTexSubImage2D (offset 326) */ + /* _mesa_function_pool[27686]: CopyTexSubImage2D (offset 326) */ "iiiiiiii\0" "glCopyTexSubImage2D\0" "glCopyTexSubImage2DEXT\0" "\0" - /* _mesa_function_pool[27380]: GetObjectParameterivARB (will be remapped) */ + /* _mesa_function_pool[27739]: GetObjectParameterivARB (will be remapped) */ "iip\0" "glGetObjectParameterivARB\0" "\0" - /* _mesa_function_pool[27411]: Color3iv (offset 16) */ + /* _mesa_function_pool[27770]: Color3iv (offset 16) */ "p\0" "glColor3iv\0" "\0" - /* _mesa_function_pool[27425]: TexCoord4fVertex4fSUN (dynamic) */ + /* _mesa_function_pool[27784]: TexCoord4fVertex4fSUN (dynamic) */ "ffffffff\0" "glTexCoord4fVertex4fSUN\0" "\0" - /* _mesa_function_pool[27459]: DrawElements (offset 311) */ + /* _mesa_function_pool[27818]: DrawElements (offset 311) */ "iiip\0" "glDrawElements\0" "\0" - /* _mesa_function_pool[27480]: BindVertexArrayAPPLE (will be remapped) */ + /* _mesa_function_pool[27839]: BindVertexArrayAPPLE (will be remapped) */ "i\0" "glBindVertexArrayAPPLE\0" "\0" - /* _mesa_function_pool[27506]: GetProgramLocalParameterdvARB (will be remapped) */ + /* _mesa_function_pool[27865]: GetProgramLocalParameterdvARB (will be remapped) */ "iip\0" "glGetProgramLocalParameterdvARB\0" "\0" - /* _mesa_function_pool[27543]: GetHistogramParameteriv (offset 363) */ + /* _mesa_function_pool[27902]: GetHistogramParameteriv (offset 363) */ "iip\0" "glGetHistogramParameteriv\0" "glGetHistogramParameterivEXT\0" "\0" - /* _mesa_function_pool[27603]: MultiTexCoord1iARB (offset 380) */ + /* _mesa_function_pool[27962]: MultiTexCoord1iARB (offset 380) */ "ii\0" "glMultiTexCoord1i\0" "glMultiTexCoord1iARB\0" "\0" - /* _mesa_function_pool[27646]: GetConvolutionFilter (offset 356) */ + /* _mesa_function_pool[28005]: GetConvolutionFilter (offset 356) */ "iiip\0" "glGetConvolutionFilter\0" "glGetConvolutionFilterEXT\0" "\0" - /* _mesa_function_pool[27701]: GetProgramivARB (will be remapped) */ + /* _mesa_function_pool[28060]: GetProgramivARB (will be remapped) */ "iip\0" "glGetProgramivARB\0" "\0" - /* _mesa_function_pool[27724]: BlendFuncSeparateEXT (will be remapped) */ + /* _mesa_function_pool[28083]: TexBufferARB (will be remapped) */ + "iii\0" + "glTexBufferARB\0" + "\0" + /* _mesa_function_pool[28103]: BlendFuncSeparateEXT (will be remapped) */ "iiii\0" "glBlendFuncSeparate\0" "glBlendFuncSeparateEXT\0" "glBlendFuncSeparateINGR\0" "\0" - /* _mesa_function_pool[27797]: MapBufferRange (will be remapped) */ + /* _mesa_function_pool[28176]: MapBufferRange (will be remapped) */ "iiii\0" "glMapBufferRange\0" "\0" - /* _mesa_function_pool[27820]: ProgramParameters4dvNV (will be remapped) */ + /* _mesa_function_pool[28199]: ProgramParameters4dvNV (will be remapped) */ "iiip\0" "glProgramParameters4dvNV\0" "\0" - /* _mesa_function_pool[27851]: TexCoord2fColor3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[28230]: TexCoord2fColor3fVertex3fvSUN (dynamic) */ "ppp\0" "glTexCoord2fColor3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[27888]: EvalPoint2 (offset 239) */ + /* _mesa_function_pool[28267]: EvalPoint2 (offset 239) */ "ii\0" "glEvalPoint2\0" "\0" - /* _mesa_function_pool[27905]: Uniform1uivEXT (will be remapped) */ + /* _mesa_function_pool[28284]: Uniform1uivEXT (will be remapped) */ "iip\0" "glUniform1uivEXT\0" "glUniform1uiv\0" "\0" - /* _mesa_function_pool[27941]: EvalPoint1 (offset 237) */ + /* _mesa_function_pool[28320]: EvalPoint1 (offset 237) */ "i\0" "glEvalPoint1\0" "\0" - /* _mesa_function_pool[27957]: Binormal3dvEXT (dynamic) */ + /* _mesa_function_pool[28336]: Binormal3dvEXT (dynamic) */ "p\0" "glBinormal3dvEXT\0" "\0" - /* _mesa_function_pool[27977]: PopMatrix (offset 297) */ + /* _mesa_function_pool[28356]: PopMatrix (offset 297) */ "\0" "glPopMatrix\0" "\0" - /* _mesa_function_pool[27991]: GetVertexAttribIuivEXT (will be remapped) */ - "iip\0" - "glGetVertexAttribIuivEXT\0" - "glGetVertexAttribIuiv\0" - "\0" - /* _mesa_function_pool[28043]: FinishFenceNV (will be remapped) */ + /* _mesa_function_pool[28370]: FinishFenceNV (will be remapped) */ "i\0" "glFinishFenceNV\0" "\0" - /* _mesa_function_pool[28062]: GetFogFuncSGIS (dynamic) */ + /* _mesa_function_pool[28389]: GetFogFuncSGIS (dynamic) */ "p\0" "glGetFogFuncSGIS\0" "\0" - /* _mesa_function_pool[28082]: GetUniformLocationARB (will be remapped) */ + /* _mesa_function_pool[28409]: GetUniformLocationARB (will be remapped) */ "ip\0" "glGetUniformLocation\0" "glGetUniformLocationARB\0" "\0" - /* _mesa_function_pool[28131]: SecondaryColor3fEXT (will be remapped) */ + /* _mesa_function_pool[28458]: SecondaryColor3fEXT (will be remapped) */ "fff\0" "glSecondaryColor3f\0" "glSecondaryColor3fEXT\0" "\0" - /* _mesa_function_pool[28177]: GetTexGeniv (offset 280) */ + /* _mesa_function_pool[28504]: GetTexGeniv (offset 280) */ "iip\0" "glGetTexGeniv\0" "\0" - /* _mesa_function_pool[28196]: CombinerInputNV (will be remapped) */ + /* _mesa_function_pool[28523]: CombinerInputNV (will be remapped) */ "iiiiii\0" "glCombinerInputNV\0" "\0" - /* _mesa_function_pool[28222]: VertexAttrib3sARB (will be remapped) */ + /* _mesa_function_pool[28549]: VertexAttrib3sARB (will be remapped) */ "iiii\0" "glVertexAttrib3s\0" "glVertexAttrib3sARB\0" "\0" - /* _mesa_function_pool[28265]: IsTransformFeedback (will be remapped) */ + /* _mesa_function_pool[28592]: IsTransformFeedback (will be remapped) */ "i\0" "glIsTransformFeedback\0" "\0" - /* _mesa_function_pool[28290]: ReplacementCodeuiNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[28617]: ReplacementCodeuiNormal3fVertex3fvSUN (dynamic) */ "ppp\0" "glReplacementCodeuiNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[28335]: Map2d (offset 222) */ + /* _mesa_function_pool[28662]: Map2d (offset 222) */ "iddiiddiip\0" "glMap2d\0" "\0" - /* _mesa_function_pool[28355]: Map2f (offset 223) */ + /* _mesa_function_pool[28682]: Map2f (offset 223) */ "iffiiffiip\0" "glMap2f\0" "\0" - /* _mesa_function_pool[28375]: ProgramStringARB (will be remapped) */ + /* _mesa_function_pool[28702]: ProgramStringARB (will be remapped) */ "iiip\0" "glProgramStringARB\0" "\0" - /* _mesa_function_pool[28400]: Vertex4s (offset 148) */ + /* _mesa_function_pool[28727]: Vertex4s (offset 148) */ "iiii\0" "glVertex4s\0" "\0" - /* _mesa_function_pool[28417]: TexCoord4fVertex4fvSUN (dynamic) */ + /* _mesa_function_pool[28744]: TexCoord4fVertex4fvSUN (dynamic) */ "pp\0" "glTexCoord4fVertex4fvSUN\0" "\0" - /* _mesa_function_pool[28446]: FragmentLightModelivSGIX (dynamic) */ + /* _mesa_function_pool[28773]: FragmentLightModelivSGIX (dynamic) */ "ip\0" "glFragmentLightModelivSGIX\0" "\0" - /* _mesa_function_pool[28477]: VertexAttrib1fNV (will be remapped) */ + /* _mesa_function_pool[28804]: VertexAttrib1fNV (will be remapped) */ "if\0" "glVertexAttrib1fNV\0" "\0" - /* _mesa_function_pool[28500]: Vertex4f (offset 144) */ + /* _mesa_function_pool[28827]: Vertex4f (offset 144) */ "ffff\0" "glVertex4f\0" "\0" - /* _mesa_function_pool[28517]: EvalCoord1d (offset 228) */ + /* _mesa_function_pool[28844]: EvalCoord1d (offset 228) */ "d\0" "glEvalCoord1d\0" "\0" - /* _mesa_function_pool[28534]: Vertex4d (offset 142) */ + /* _mesa_function_pool[28861]: Vertex4d (offset 142) */ "dddd\0" "glVertex4d\0" "\0" - /* _mesa_function_pool[28551]: RasterPos4dv (offset 79) */ + /* _mesa_function_pool[28878]: RasterPos4dv (offset 79) */ "p\0" "glRasterPos4dv\0" "\0" - /* _mesa_function_pool[28569]: UseShaderProgramEXT (will be remapped) */ + /* _mesa_function_pool[28896]: UseShaderProgramEXT (will be remapped) */ "ii\0" "glUseShaderProgramEXT\0" "\0" - /* _mesa_function_pool[28595]: FragmentLightfSGIX (dynamic) */ + /* _mesa_function_pool[28922]: FragmentLightfSGIX (dynamic) */ "iif\0" "glFragmentLightfSGIX\0" "\0" - /* _mesa_function_pool[28621]: GetCompressedTexImageARB (will be remapped) */ + /* _mesa_function_pool[28948]: GetCompressedTexImageARB (will be remapped) */ "iip\0" "glGetCompressedTexImage\0" "glGetCompressedTexImageARB\0" "\0" - /* _mesa_function_pool[28677]: GetTexGenfv (offset 279) */ + /* _mesa_function_pool[29004]: GetTexGenfv (offset 279) */ "iip\0" "glGetTexGenfv\0" "\0" - /* _mesa_function_pool[28696]: Vertex4i (offset 146) */ + /* _mesa_function_pool[29023]: Vertex4i (offset 146) */ "iiii\0" "glVertex4i\0" "\0" - /* _mesa_function_pool[28713]: VertexWeightPointerEXT (dynamic) */ + /* _mesa_function_pool[29040]: VertexWeightPointerEXT (dynamic) */ "iiip\0" "glVertexWeightPointerEXT\0" "\0" - /* _mesa_function_pool[28744]: GetHistogram (offset 361) */ + /* _mesa_function_pool[29071]: GetHistogram (offset 361) */ "iiiip\0" "glGetHistogram\0" "glGetHistogramEXT\0" "\0" - /* _mesa_function_pool[28784]: ActiveStencilFaceEXT (will be remapped) */ + /* _mesa_function_pool[29111]: ActiveStencilFaceEXT (will be remapped) */ "i\0" "glActiveStencilFaceEXT\0" "\0" - /* _mesa_function_pool[28810]: StencilFuncSeparateATI (will be remapped) */ + /* _mesa_function_pool[29137]: StencilFuncSeparateATI (will be remapped) */ "iiii\0" "glStencilFuncSeparateATI\0" "\0" - /* _mesa_function_pool[28841]: Materialf (offset 169) */ + /* _mesa_function_pool[29168]: Materialf (offset 169) */ "iif\0" "glMaterialf\0" "\0" - /* _mesa_function_pool[28858]: GetShaderSourceARB (will be remapped) */ + /* _mesa_function_pool[29185]: GetShaderSourceARB (will be remapped) */ "iipp\0" "glGetShaderSource\0" "glGetShaderSourceARB\0" "\0" - /* _mesa_function_pool[28903]: IglooInterfaceSGIX (dynamic) */ + /* _mesa_function_pool[29230]: IglooInterfaceSGIX (dynamic) */ "ip\0" "glIglooInterfaceSGIX\0" "\0" - /* _mesa_function_pool[28928]: Materiali (offset 171) */ + /* _mesa_function_pool[29255]: Materiali (offset 171) */ "iii\0" "glMateriali\0" "\0" - /* _mesa_function_pool[28945]: VertexAttrib4dNV (will be remapped) */ + /* _mesa_function_pool[29272]: VertexAttrib4dNV (will be remapped) */ "idddd\0" "glVertexAttrib4dNV\0" "\0" - /* _mesa_function_pool[28971]: MultiModeDrawElementsIBM (will be remapped) */ + /* _mesa_function_pool[29298]: MultiModeDrawElementsIBM (will be remapped) */ "ppipii\0" "glMultiModeDrawElementsIBM\0" "\0" - /* _mesa_function_pool[29006]: Indexsv (offset 51) */ + /* _mesa_function_pool[29333]: Indexsv (offset 51) */ "p\0" "glIndexsv\0" "\0" - /* _mesa_function_pool[29019]: MultiTexCoord4svARB (offset 407) */ + /* _mesa_function_pool[29346]: MultiTexCoord4svARB (offset 407) */ "ip\0" "glMultiTexCoord4sv\0" "glMultiTexCoord4svARB\0" "\0" - /* _mesa_function_pool[29064]: LightModelfv (offset 164) */ + /* _mesa_function_pool[29391]: LightModelfv (offset 164) */ "ip\0" "glLightModelfv\0" "\0" - /* _mesa_function_pool[29083]: TexCoord2dv (offset 103) */ + /* _mesa_function_pool[29410]: TexCoord2dv (offset 103) */ "p\0" "glTexCoord2dv\0" "\0" - /* _mesa_function_pool[29100]: GenQueriesARB (will be remapped) */ + /* _mesa_function_pool[29427]: GenQueriesARB (will be remapped) */ "ip\0" "glGenQueries\0" "glGenQueriesARB\0" "\0" - /* _mesa_function_pool[29133]: EvalCoord1dv (offset 229) */ + /* _mesa_function_pool[29460]: EvalCoord1dv (offset 229) */ "p\0" "glEvalCoord1dv\0" "\0" - /* _mesa_function_pool[29151]: ReplacementCodeuiVertex3fSUN (dynamic) */ + /* _mesa_function_pool[29478]: ReplacementCodeuiVertex3fSUN (dynamic) */ "ifff\0" "glReplacementCodeuiVertex3fSUN\0" "\0" - /* _mesa_function_pool[29188]: Translated (offset 303) */ + /* _mesa_function_pool[29515]: Translated (offset 303) */ "ddd\0" "glTranslated\0" "\0" - /* _mesa_function_pool[29206]: Translatef (offset 304) */ + /* _mesa_function_pool[29533]: Translatef (offset 304) */ "fff\0" "glTranslatef\0" "\0" - /* _mesa_function_pool[29224]: Uniform3uiEXT (will be remapped) */ + /* _mesa_function_pool[29551]: Uniform3uiEXT (will be remapped) */ "iiii\0" "glUniform3uiEXT\0" "glUniform3ui\0" "\0" - /* _mesa_function_pool[29259]: StencilMask (offset 209) */ + /* _mesa_function_pool[29586]: StencilMask (offset 209) */ "i\0" "glStencilMask\0" "\0" - /* _mesa_function_pool[29276]: Tangent3iEXT (dynamic) */ + /* _mesa_function_pool[29603]: Tangent3iEXT (dynamic) */ "iii\0" "glTangent3iEXT\0" "\0" - /* _mesa_function_pool[29296]: GetLightiv (offset 265) */ + /* _mesa_function_pool[29623]: ClampColorARB (will be remapped) */ + "ii\0" + "glClampColorARB\0" + "\0" + /* _mesa_function_pool[29643]: GetLightiv (offset 265) */ "iip\0" "glGetLightiv\0" "\0" - /* _mesa_function_pool[29314]: DrawMeshArraysSUN (dynamic) */ + /* _mesa_function_pool[29661]: GetSamplerParameterIiv (will be remapped) */ + "iip\0" + "glGetSamplerParameterIiv\0" + "\0" + /* _mesa_function_pool[29691]: DrawMeshArraysSUN (dynamic) */ "iiii\0" "glDrawMeshArraysSUN\0" "\0" - /* _mesa_function_pool[29340]: IsList (offset 287) */ + /* _mesa_function_pool[29717]: IsList (offset 287) */ "i\0" "glIsList\0" "\0" - /* _mesa_function_pool[29352]: IsSync (will be remapped) */ + /* _mesa_function_pool[29729]: IsSync (will be remapped) */ "i\0" "glIsSync\0" "\0" - /* _mesa_function_pool[29364]: RenderMode (offset 196) */ + /* _mesa_function_pool[29741]: RenderMode (offset 196) */ "i\0" "glRenderMode\0" "\0" - /* _mesa_function_pool[29380]: GetMapControlPointsNV (dynamic) */ + /* _mesa_function_pool[29757]: GetMapControlPointsNV (dynamic) */ "iiiiiip\0" "glGetMapControlPointsNV\0" "\0" - /* _mesa_function_pool[29413]: DrawBuffersARB (will be remapped) */ + /* _mesa_function_pool[29790]: DrawBuffersARB (will be remapped) */ "ip\0" "glDrawBuffers\0" "glDrawBuffersARB\0" "glDrawBuffersATI\0" "\0" - /* _mesa_function_pool[29465]: ClearBufferiv (will be remapped) */ + /* _mesa_function_pool[29842]: ClearBufferiv (will be remapped) */ "iip\0" "glClearBufferiv\0" "\0" - /* _mesa_function_pool[29486]: ProgramLocalParameter4fARB (will be remapped) */ + /* _mesa_function_pool[29863]: ProgramLocalParameter4fARB (will be remapped) */ "iiffff\0" "glProgramLocalParameter4fARB\0" "\0" - /* _mesa_function_pool[29523]: SpriteParameterivSGIX (dynamic) */ + /* _mesa_function_pool[29900]: SpriteParameterivSGIX (dynamic) */ "ip\0" "glSpriteParameterivSGIX\0" "\0" - /* _mesa_function_pool[29551]: ProvokingVertexEXT (will be remapped) */ + /* _mesa_function_pool[29928]: ProvokingVertexEXT (will be remapped) */ "i\0" "glProvokingVertexEXT\0" "glProvokingVertex\0" "\0" - /* _mesa_function_pool[29593]: MultiTexCoord1fARB (offset 378) */ + /* _mesa_function_pool[29970]: MultiTexCoord1fARB (offset 378) */ "if\0" "glMultiTexCoord1f\0" "glMultiTexCoord1fARB\0" "\0" - /* _mesa_function_pool[29636]: LoadName (offset 198) */ + /* _mesa_function_pool[30013]: LoadName (offset 198) */ "i\0" "glLoadName\0" "\0" - /* _mesa_function_pool[29650]: VertexAttribs4ubvNV (will be remapped) */ + /* _mesa_function_pool[30027]: VertexAttribs4ubvNV (will be remapped) */ "iip\0" "glVertexAttribs4ubvNV\0" "\0" - /* _mesa_function_pool[29677]: WeightsvARB (dynamic) */ + /* _mesa_function_pool[30054]: WeightsvARB (dynamic) */ "ip\0" "glWeightsvARB\0" "\0" - /* _mesa_function_pool[29695]: Uniform1fvARB (will be remapped) */ + /* _mesa_function_pool[30072]: Uniform1fvARB (will be remapped) */ "iip\0" "glUniform1fv\0" "glUniform1fvARB\0" "\0" - /* _mesa_function_pool[29729]: CopyTexSubImage1D (offset 325) */ + /* _mesa_function_pool[30106]: CopyTexSubImage1D (offset 325) */ "iiiiii\0" "glCopyTexSubImage1D\0" "glCopyTexSubImage1DEXT\0" "\0" - /* _mesa_function_pool[29780]: CullFace (offset 152) */ + /* _mesa_function_pool[30157]: CullFace (offset 152) */ "i\0" "glCullFace\0" "\0" - /* _mesa_function_pool[29794]: BindTexture (offset 307) */ + /* _mesa_function_pool[30171]: BindTexture (offset 307) */ "ii\0" "glBindTexture\0" "glBindTextureEXT\0" "\0" - /* _mesa_function_pool[29829]: BeginFragmentShaderATI (will be remapped) */ + /* _mesa_function_pool[30206]: BeginFragmentShaderATI (will be remapped) */ "\0" "glBeginFragmentShaderATI\0" "\0" - /* _mesa_function_pool[29856]: MultiTexCoord4fARB (offset 402) */ + /* _mesa_function_pool[30233]: MultiTexCoord4fARB (offset 402) */ "iffff\0" "glMultiTexCoord4f\0" "glMultiTexCoord4fARB\0" "\0" - /* _mesa_function_pool[29902]: VertexAttribs3svNV (will be remapped) */ + /* _mesa_function_pool[30279]: VertexAttribs3svNV (will be remapped) */ "iip\0" "glVertexAttribs3svNV\0" "\0" - /* _mesa_function_pool[29928]: StencilFunc (offset 243) */ + /* _mesa_function_pool[30305]: StencilFunc (offset 243) */ "iii\0" "glStencilFunc\0" "\0" - /* _mesa_function_pool[29947]: CopyPixels (offset 255) */ + /* _mesa_function_pool[30324]: CopyPixels (offset 255) */ "iiiii\0" "glCopyPixels\0" "\0" - /* _mesa_function_pool[29967]: Rectsv (offset 93) */ + /* _mesa_function_pool[30344]: Rectsv (offset 93) */ "pp\0" "glRectsv\0" "\0" - /* _mesa_function_pool[29980]: ReplacementCodeuivSUN (dynamic) */ + /* _mesa_function_pool[30357]: ReplacementCodeuivSUN (dynamic) */ "p\0" "glReplacementCodeuivSUN\0" "\0" - /* _mesa_function_pool[30007]: EnableVertexAttribArrayARB (will be remapped) */ + /* _mesa_function_pool[30384]: EnableVertexAttribArrayARB (will be remapped) */ "i\0" "glEnableVertexAttribArray\0" "glEnableVertexAttribArrayARB\0" "\0" - /* _mesa_function_pool[30065]: NormalPointervINTEL (dynamic) */ + /* _mesa_function_pool[30442]: NormalPointervINTEL (dynamic) */ "ip\0" "glNormalPointervINTEL\0" "\0" - /* _mesa_function_pool[30091]: CopyConvolutionFilter2D (offset 355) */ + /* _mesa_function_pool[30468]: CopyConvolutionFilter2D (offset 355) */ "iiiiii\0" "glCopyConvolutionFilter2D\0" "glCopyConvolutionFilter2DEXT\0" "\0" - /* _mesa_function_pool[30154]: WindowPos3ivMESA (will be remapped) */ + /* _mesa_function_pool[30531]: WindowPos3ivMESA (will be remapped) */ "p\0" "glWindowPos3iv\0" "glWindowPos3ivARB\0" "glWindowPos3ivMESA\0" "\0" - /* _mesa_function_pool[30209]: CopyBufferSubData (will be remapped) */ + /* _mesa_function_pool[30586]: CopyBufferSubData (will be remapped) */ "iiiii\0" "glCopyBufferSubData\0" "\0" - /* _mesa_function_pool[30236]: NormalPointer (offset 318) */ + /* _mesa_function_pool[30613]: NormalPointer (offset 318) */ "iip\0" "glNormalPointer\0" "\0" - /* _mesa_function_pool[30257]: TexParameterfv (offset 179) */ + /* _mesa_function_pool[30634]: TexParameterfv (offset 179) */ "iip\0" "glTexParameterfv\0" "\0" - /* _mesa_function_pool[30279]: IsBufferARB (will be remapped) */ + /* _mesa_function_pool[30656]: IsBufferARB (will be remapped) */ "i\0" "glIsBuffer\0" "glIsBufferARB\0" "\0" - /* _mesa_function_pool[30307]: WindowPos4iMESA (will be remapped) */ + /* _mesa_function_pool[30684]: WindowPos4iMESA (will be remapped) */ "iiii\0" "glWindowPos4iMESA\0" "\0" - /* _mesa_function_pool[30331]: VertexAttrib4uivARB (will be remapped) */ + /* _mesa_function_pool[30708]: VertexAttrib4uivARB (will be remapped) */ "ip\0" "glVertexAttrib4uiv\0" "glVertexAttrib4uivARB\0" "\0" - /* _mesa_function_pool[30376]: Tangent3bvEXT (dynamic) */ + /* _mesa_function_pool[30753]: Tangent3bvEXT (dynamic) */ "p\0" "glTangent3bvEXT\0" "\0" - /* _mesa_function_pool[30395]: VertexAttribI3uivEXT (will be remapped) */ + /* _mesa_function_pool[30772]: VertexAttribI3uivEXT (will be remapped) */ "ip\0" "glVertexAttribI3uivEXT\0" "glVertexAttribI3uiv\0" "\0" - /* _mesa_function_pool[30442]: UniformMatrix3x4fv (will be remapped) */ + /* _mesa_function_pool[30819]: UniformMatrix3x4fv (will be remapped) */ "iiip\0" "glUniformMatrix3x4fv\0" "\0" - /* _mesa_function_pool[30469]: ClipPlane (offset 150) */ + /* _mesa_function_pool[30846]: ClipPlane (offset 150) */ "ip\0" "glClipPlane\0" "\0" - /* _mesa_function_pool[30485]: Recti (offset 90) */ + /* _mesa_function_pool[30862]: Recti (offset 90) */ "iiii\0" "glRecti\0" "\0" - /* _mesa_function_pool[30499]: VertexAttribI3ivEXT (will be remapped) */ - "ip\0" - "glVertexAttribI3ivEXT\0" - "glVertexAttribI3iv\0" + /* _mesa_function_pool[30876]: TrackMatrixNV (will be remapped) */ + "iiii\0" + "glTrackMatrixNV\0" "\0" - /* _mesa_function_pool[30544]: DrawRangeElementsBaseVertex (will be remapped) */ + /* _mesa_function_pool[30898]: DrawRangeElementsBaseVertex (will be remapped) */ "iiiiipi\0" "glDrawRangeElementsBaseVertex\0" "\0" - /* _mesa_function_pool[30583]: TexCoordPointervINTEL (dynamic) */ + /* _mesa_function_pool[30937]: SamplerParameterIuiv (will be remapped) */ + "iip\0" + "glSamplerParameterIuiv\0" + "\0" + /* _mesa_function_pool[30965]: TexCoordPointervINTEL (dynamic) */ "iip\0" "glTexCoordPointervINTEL\0" "\0" - /* _mesa_function_pool[30612]: DeleteBuffersARB (will be remapped) */ + /* _mesa_function_pool[30994]: DeleteBuffersARB (will be remapped) */ "ip\0" "glDeleteBuffers\0" "glDeleteBuffersARB\0" "\0" - /* _mesa_function_pool[30651]: PixelTransformParameterfvEXT (dynamic) */ + /* _mesa_function_pool[31033]: PixelTransformParameterfvEXT (dynamic) */ "iip\0" "glPixelTransformParameterfvEXT\0" "\0" - /* _mesa_function_pool[30687]: PrimitiveRestartNV (will be remapped) */ + /* _mesa_function_pool[31069]: PrimitiveRestartNV (will be remapped) */ "\0" "glPrimitiveRestartNV\0" "\0" - /* _mesa_function_pool[30710]: WindowPos4fvMESA (will be remapped) */ + /* _mesa_function_pool[31092]: WindowPos4fvMESA (will be remapped) */ "p\0" "glWindowPos4fvMESA\0" "\0" - /* _mesa_function_pool[30732]: GetPixelMapuiv (offset 272) */ + /* _mesa_function_pool[31114]: GetPixelMapuiv (offset 272) */ "ip\0" "glGetPixelMapuiv\0" "\0" - /* _mesa_function_pool[30753]: Rectf (offset 88) */ + /* _mesa_function_pool[31135]: Rectf (offset 88) */ "ffff\0" "glRectf\0" "\0" - /* _mesa_function_pool[30767]: VertexAttrib1sNV (will be remapped) */ + /* _mesa_function_pool[31149]: VertexAttrib1sNV (will be remapped) */ "ii\0" "glVertexAttrib1sNV\0" "\0" - /* _mesa_function_pool[30790]: Indexfv (offset 47) */ + /* _mesa_function_pool[31172]: Indexfv (offset 47) */ "p\0" "glIndexfv\0" "\0" - /* _mesa_function_pool[30803]: SecondaryColor3svEXT (will be remapped) */ + /* _mesa_function_pool[31185]: SecondaryColor3svEXT (will be remapped) */ "p\0" "glSecondaryColor3sv\0" "glSecondaryColor3svEXT\0" "\0" - /* _mesa_function_pool[30849]: LoadTransposeMatrixfARB (will be remapped) */ + /* _mesa_function_pool[31231]: LoadTransposeMatrixfARB (will be remapped) */ "p\0" "glLoadTransposeMatrixf\0" "glLoadTransposeMatrixfARB\0" "\0" - /* _mesa_function_pool[30901]: GetPointerv (offset 329) */ + /* _mesa_function_pool[31283]: GetPointerv (offset 329) */ "ip\0" "glGetPointerv\0" "glGetPointervEXT\0" "\0" - /* _mesa_function_pool[30936]: Tangent3bEXT (dynamic) */ + /* _mesa_function_pool[31318]: Tangent3bEXT (dynamic) */ "iii\0" "glTangent3bEXT\0" "\0" - /* _mesa_function_pool[30956]: CombinerParameterfNV (will be remapped) */ + /* _mesa_function_pool[31338]: CombinerParameterfNV (will be remapped) */ "if\0" "glCombinerParameterfNV\0" "\0" - /* _mesa_function_pool[30983]: IndexMask (offset 212) */ + /* _mesa_function_pool[31365]: IndexMask (offset 212) */ "i\0" "glIndexMask\0" "\0" - /* _mesa_function_pool[30998]: BindProgramNV (will be remapped) */ + /* _mesa_function_pool[31380]: BindProgramNV (will be remapped) */ "ii\0" "glBindProgramARB\0" "glBindProgramNV\0" "\0" - /* _mesa_function_pool[31035]: VertexAttrib4svARB (will be remapped) */ + /* _mesa_function_pool[31417]: VertexAttrib4svARB (will be remapped) */ "ip\0" "glVertexAttrib4sv\0" "glVertexAttrib4svARB\0" "\0" - /* _mesa_function_pool[31078]: GetFloatv (offset 262) */ + /* _mesa_function_pool[31460]: GetFloatv (offset 262) */ "ip\0" "glGetFloatv\0" "\0" - /* _mesa_function_pool[31094]: CreateDebugObjectMESA (dynamic) */ + /* _mesa_function_pool[31476]: CreateDebugObjectMESA (dynamic) */ "\0" "glCreateDebugObjectMESA\0" "\0" - /* _mesa_function_pool[31120]: GetShaderiv (will be remapped) */ + /* _mesa_function_pool[31502]: GetShaderiv (will be remapped) */ "iip\0" "glGetShaderiv\0" "\0" - /* _mesa_function_pool[31139]: ClientWaitSync (will be remapped) */ + /* _mesa_function_pool[31521]: ClientWaitSync (will be remapped) */ "iii\0" "glClientWaitSync\0" "\0" - /* _mesa_function_pool[31161]: TexCoord4s (offset 124) */ + /* _mesa_function_pool[31543]: TexCoord4s (offset 124) */ "iiii\0" "glTexCoord4s\0" "\0" - /* _mesa_function_pool[31180]: TexCoord3sv (offset 117) */ + /* _mesa_function_pool[31562]: TexCoord3sv (offset 117) */ "p\0" "glTexCoord3sv\0" "\0" - /* _mesa_function_pool[31197]: BindFragmentShaderATI (will be remapped) */ + /* _mesa_function_pool[31579]: BindFragmentShaderATI (will be remapped) */ "i\0" "glBindFragmentShaderATI\0" "\0" - /* _mesa_function_pool[31224]: PopAttrib (offset 218) */ + /* _mesa_function_pool[31606]: PopAttrib (offset 218) */ "\0" "glPopAttrib\0" "\0" - /* _mesa_function_pool[31238]: Fogfv (offset 154) */ + /* _mesa_function_pool[31620]: Fogfv (offset 154) */ "ip\0" "glFogfv\0" "\0" - /* _mesa_function_pool[31250]: UnmapBufferARB (will be remapped) */ + /* _mesa_function_pool[31632]: UnmapBufferARB (will be remapped) */ "i\0" "glUnmapBuffer\0" "glUnmapBufferARB\0" "\0" - /* _mesa_function_pool[31284]: InitNames (offset 197) */ + /* _mesa_function_pool[31666]: InitNames (offset 197) */ "\0" "glInitNames\0" "\0" - /* _mesa_function_pool[31298]: Normal3sv (offset 61) */ + /* _mesa_function_pool[31680]: Normal3sv (offset 61) */ "p\0" "glNormal3sv\0" "\0" - /* _mesa_function_pool[31313]: Minmax (offset 368) */ + /* _mesa_function_pool[31695]: Minmax (offset 368) */ "iii\0" "glMinmax\0" "glMinmaxEXT\0" "\0" - /* _mesa_function_pool[31339]: TexCoord4d (offset 118) */ + /* _mesa_function_pool[31721]: TexCoord4d (offset 118) */ "dddd\0" "glTexCoord4d\0" "\0" - /* _mesa_function_pool[31358]: TexCoord4f (offset 120) */ + /* _mesa_function_pool[31740]: DeformationMap3dSGIX (dynamic) */ + "iddiiddiiddiip\0" + "glDeformationMap3dSGIX\0" + "\0" + /* _mesa_function_pool[31779]: TexCoord4f (offset 120) */ "ffff\0" "glTexCoord4f\0" "\0" - /* _mesa_function_pool[31377]: FogCoorddvEXT (will be remapped) */ + /* _mesa_function_pool[31798]: FogCoorddvEXT (will be remapped) */ "p\0" "glFogCoorddv\0" "glFogCoorddvEXT\0" "\0" - /* _mesa_function_pool[31409]: FinishTextureSUNX (dynamic) */ + /* _mesa_function_pool[31830]: FinishTextureSUNX (dynamic) */ "\0" "glFinishTextureSUNX\0" "\0" - /* _mesa_function_pool[31431]: GetFragmentLightfvSGIX (dynamic) */ + /* _mesa_function_pool[31852]: GetFragmentLightfvSGIX (dynamic) */ "iip\0" "glGetFragmentLightfvSGIX\0" "\0" - /* _mesa_function_pool[31461]: Binormal3fvEXT (dynamic) */ + /* _mesa_function_pool[31882]: Binormal3fvEXT (dynamic) */ "p\0" "glBinormal3fvEXT\0" "\0" - /* _mesa_function_pool[31481]: GetBooleanv (offset 258) */ + /* _mesa_function_pool[31902]: GetBooleanv (offset 258) */ "ip\0" "glGetBooleanv\0" "\0" - /* _mesa_function_pool[31499]: ColorFragmentOp3ATI (will be remapped) */ + /* _mesa_function_pool[31920]: ColorFragmentOp3ATI (will be remapped) */ "iiiiiiiiiiiii\0" "glColorFragmentOp3ATI\0" "\0" - /* _mesa_function_pool[31536]: Hint (offset 158) */ + /* _mesa_function_pool[31957]: Hint (offset 158) */ "ii\0" "glHint\0" "\0" - /* _mesa_function_pool[31547]: Color4dv (offset 28) */ + /* _mesa_function_pool[31968]: Color4dv (offset 28) */ "p\0" "glColor4dv\0" "\0" - /* _mesa_function_pool[31561]: VertexAttrib2svARB (will be remapped) */ + /* _mesa_function_pool[31982]: VertexAttrib2svARB (will be remapped) */ "ip\0" "glVertexAttrib2sv\0" "glVertexAttrib2svARB\0" "\0" - /* _mesa_function_pool[31604]: AreProgramsResidentNV (will be remapped) */ + /* _mesa_function_pool[32025]: AreProgramsResidentNV (will be remapped) */ "ipp\0" "glAreProgramsResidentNV\0" "\0" - /* _mesa_function_pool[31633]: WindowPos3svMESA (will be remapped) */ + /* _mesa_function_pool[32054]: WindowPos3svMESA (will be remapped) */ "p\0" "glWindowPos3sv\0" "glWindowPos3svARB\0" "glWindowPos3svMESA\0" "\0" - /* _mesa_function_pool[31688]: CopyColorSubTable (offset 347) */ + /* _mesa_function_pool[32109]: CopyColorSubTable (offset 347) */ "iiiii\0" "glCopyColorSubTable\0" "glCopyColorSubTableEXT\0" "\0" - /* _mesa_function_pool[31738]: WeightdvARB (dynamic) */ + /* _mesa_function_pool[32159]: WeightdvARB (dynamic) */ "ip\0" "glWeightdvARB\0" "\0" - /* _mesa_function_pool[31756]: DeleteRenderbuffersEXT (will be remapped) */ + /* _mesa_function_pool[32177]: DeleteRenderbuffersEXT (will be remapped) */ "ip\0" "glDeleteRenderbuffers\0" "glDeleteRenderbuffersEXT\0" "\0" - /* _mesa_function_pool[31807]: VertexAttrib4NubvARB (will be remapped) */ + /* _mesa_function_pool[32228]: VertexAttrib4NubvARB (will be remapped) */ "ip\0" "glVertexAttrib4Nubv\0" "glVertexAttrib4NubvARB\0" "\0" - /* _mesa_function_pool[31854]: VertexAttrib3dvNV (will be remapped) */ + /* _mesa_function_pool[32275]: VertexAttrib3dvNV (will be remapped) */ "ip\0" "glVertexAttrib3dvNV\0" "\0" - /* _mesa_function_pool[31878]: GetObjectParameterfvARB (will be remapped) */ + /* _mesa_function_pool[32299]: GetObjectParameterfvARB (will be remapped) */ "iip\0" "glGetObjectParameterfvARB\0" "\0" - /* _mesa_function_pool[31909]: Vertex4iv (offset 147) */ + /* _mesa_function_pool[32330]: Vertex4iv (offset 147) */ "p\0" "glVertex4iv\0" "\0" - /* _mesa_function_pool[31924]: GetProgramEnvParameterdvARB (will be remapped) */ + /* _mesa_function_pool[32345]: GetProgramEnvParameterdvARB (will be remapped) */ "iip\0" "glGetProgramEnvParameterdvARB\0" "\0" - /* _mesa_function_pool[31959]: TexCoord4dv (offset 119) */ + /* _mesa_function_pool[32380]: TexCoord4dv (offset 119) */ "p\0" "glTexCoord4dv\0" "\0" - /* _mesa_function_pool[31976]: LockArraysEXT (will be remapped) */ + /* _mesa_function_pool[32397]: LockArraysEXT (will be remapped) */ "ii\0" "glLockArraysEXT\0" "\0" - /* _mesa_function_pool[31996]: Begin (offset 7) */ + /* _mesa_function_pool[32417]: Begin (offset 7) */ "i\0" "glBegin\0" "\0" - /* _mesa_function_pool[32007]: LightModeli (offset 165) */ + /* _mesa_function_pool[32428]: LightModeli (offset 165) */ "ii\0" "glLightModeli\0" "\0" - /* _mesa_function_pool[32025]: VertexAttribI4ivEXT (will be remapped) */ + /* _mesa_function_pool[32446]: VertexAttribI4ivEXT (will be remapped) */ "ip\0" "glVertexAttribI4ivEXT\0" "glVertexAttribI4iv\0" "\0" - /* _mesa_function_pool[32070]: Rectfv (offset 89) */ + /* _mesa_function_pool[32491]: Rectfv (offset 89) */ "pp\0" "glRectfv\0" "\0" - /* _mesa_function_pool[32083]: BlendEquationSeparateiARB (will be remapped) */ - "iii\0" - "glBlendEquationSeparateiARB\0" - "\0" - /* _mesa_function_pool[32116]: LightModelf (offset 163) */ + /* _mesa_function_pool[32504]: LightModelf (offset 163) */ "if\0" "glLightModelf\0" "\0" - /* _mesa_function_pool[32134]: GetTexParameterfv (offset 282) */ + /* _mesa_function_pool[32522]: GetTexParameterfv (offset 282) */ "iip\0" "glGetTexParameterfv\0" "\0" - /* _mesa_function_pool[32159]: GetLightfv (offset 264) */ + /* _mesa_function_pool[32547]: GetLightfv (offset 264) */ "iip\0" "glGetLightfv\0" "\0" - /* _mesa_function_pool[32177]: PixelTransformParameterivEXT (dynamic) */ + /* _mesa_function_pool[32565]: PixelTransformParameterivEXT (dynamic) */ "iip\0" "glPixelTransformParameterivEXT\0" "\0" - /* _mesa_function_pool[32213]: BinormalPointerEXT (dynamic) */ + /* _mesa_function_pool[32601]: BinormalPointerEXT (dynamic) */ "iip\0" "glBinormalPointerEXT\0" "\0" - /* _mesa_function_pool[32239]: VertexAttrib1dNV (will be remapped) */ + /* _mesa_function_pool[32627]: VertexAttrib1dNV (will be remapped) */ "id\0" "glVertexAttrib1dNV\0" "\0" - /* _mesa_function_pool[32262]: GetCombinerInputParameterivNV (will be remapped) */ + /* _mesa_function_pool[32650]: GetCombinerInputParameterivNV (will be remapped) */ "iiiip\0" "glGetCombinerInputParameterivNV\0" "\0" - /* _mesa_function_pool[32301]: Disable (offset 214) */ + /* _mesa_function_pool[32689]: Disable (offset 214) */ "i\0" "glDisable\0" "\0" - /* _mesa_function_pool[32314]: MultiTexCoord2fvARB (offset 387) */ + /* _mesa_function_pool[32702]: MultiTexCoord2fvARB (offset 387) */ "ip\0" "glMultiTexCoord2fv\0" "glMultiTexCoord2fvARB\0" "\0" - /* _mesa_function_pool[32359]: GetRenderbufferParameterivEXT (will be remapped) */ + /* _mesa_function_pool[32747]: GetRenderbufferParameterivEXT (will be remapped) */ "iip\0" "glGetRenderbufferParameteriv\0" "glGetRenderbufferParameterivEXT\0" "\0" - /* _mesa_function_pool[32425]: CombinerParameterivNV (will be remapped) */ + /* _mesa_function_pool[32813]: CombinerParameterivNV (will be remapped) */ "ip\0" "glCombinerParameterivNV\0" "\0" - /* _mesa_function_pool[32453]: GenFragmentShadersATI (will be remapped) */ + /* _mesa_function_pool[32841]: GenFragmentShadersATI (will be remapped) */ "i\0" "glGenFragmentShadersATI\0" "\0" - /* _mesa_function_pool[32480]: DrawArrays (offset 310) */ + /* _mesa_function_pool[32868]: DrawArrays (offset 310) */ "iii\0" "glDrawArrays\0" "glDrawArraysEXT\0" "\0" - /* _mesa_function_pool[32514]: WeightuivARB (dynamic) */ + /* _mesa_function_pool[32902]: WeightuivARB (dynamic) */ "ip\0" "glWeightuivARB\0" "\0" - /* _mesa_function_pool[32533]: VertexAttrib2sARB (will be remapped) */ + /* _mesa_function_pool[32921]: VertexAttrib2sARB (will be remapped) */ "iii\0" "glVertexAttrib2s\0" "glVertexAttrib2sARB\0" "\0" - /* _mesa_function_pool[32575]: ColorMask (offset 210) */ + /* _mesa_function_pool[32963]: ColorMask (offset 210) */ "iiii\0" "glColorMask\0" "\0" - /* _mesa_function_pool[32593]: GenAsyncMarkersSGIX (dynamic) */ + /* _mesa_function_pool[32981]: GenAsyncMarkersSGIX (dynamic) */ "i\0" "glGenAsyncMarkersSGIX\0" "\0" - /* _mesa_function_pool[32618]: Tangent3svEXT (dynamic) */ + /* _mesa_function_pool[33006]: Tangent3svEXT (dynamic) */ "p\0" "glTangent3svEXT\0" "\0" - /* _mesa_function_pool[32637]: GetListParameterivSGIX (dynamic) */ + /* _mesa_function_pool[33025]: GetListParameterivSGIX (dynamic) */ "iip\0" "glGetListParameterivSGIX\0" "\0" - /* _mesa_function_pool[32667]: BindBufferARB (will be remapped) */ + /* _mesa_function_pool[33055]: BindBufferARB (will be remapped) */ "ii\0" "glBindBuffer\0" "glBindBufferARB\0" "\0" - /* _mesa_function_pool[32700]: GetInfoLogARB (will be remapped) */ + /* _mesa_function_pool[33088]: GetInfoLogARB (will be remapped) */ "iipp\0" "glGetInfoLogARB\0" "\0" - /* _mesa_function_pool[32722]: RasterPos4iv (offset 83) */ + /* _mesa_function_pool[33110]: RasterPos4iv (offset 83) */ "p\0" "glRasterPos4iv\0" "\0" - /* _mesa_function_pool[32740]: Enable (offset 215) */ + /* _mesa_function_pool[33128]: Enable (offset 215) */ "i\0" "glEnable\0" "\0" - /* _mesa_function_pool[32752]: LineStipple (offset 167) */ + /* _mesa_function_pool[33140]: LineStipple (offset 167) */ "ii\0" "glLineStipple\0" "\0" - /* _mesa_function_pool[32770]: VertexAttribs4svNV (will be remapped) */ + /* _mesa_function_pool[33158]: VertexAttribs4svNV (will be remapped) */ "iip\0" "glVertexAttribs4svNV\0" "\0" - /* _mesa_function_pool[32796]: EdgeFlagPointerListIBM (dynamic) */ + /* _mesa_function_pool[33184]: EdgeFlagPointerListIBM (dynamic) */ "ipi\0" "glEdgeFlagPointerListIBM\0" "\0" - /* _mesa_function_pool[32826]: UniformMatrix3x2fv (will be remapped) */ + /* _mesa_function_pool[33214]: UniformMatrix3x2fv (will be remapped) */ "iiip\0" "glUniformMatrix3x2fv\0" "\0" - /* _mesa_function_pool[32853]: GetMinmaxParameterfv (offset 365) */ + /* _mesa_function_pool[33241]: GetMinmaxParameterfv (offset 365) */ "iip\0" "glGetMinmaxParameterfv\0" "glGetMinmaxParameterfvEXT\0" "\0" - /* _mesa_function_pool[32907]: VertexAttrib1fvARB (will be remapped) */ + /* _mesa_function_pool[33295]: VertexAttrib1fvARB (will be remapped) */ "ip\0" "glVertexAttrib1fv\0" "glVertexAttrib1fvARB\0" "\0" - /* _mesa_function_pool[32950]: GenBuffersARB (will be remapped) */ + /* _mesa_function_pool[33338]: GenBuffersARB (will be remapped) */ "ip\0" "glGenBuffers\0" "glGenBuffersARB\0" "\0" - /* _mesa_function_pool[32983]: VertexAttribs1svNV (will be remapped) */ + /* _mesa_function_pool[33371]: VertexAttribs1svNV (will be remapped) */ "iip\0" "glVertexAttribs1svNV\0" "\0" - /* _mesa_function_pool[33009]: Vertex3fv (offset 137) */ + /* _mesa_function_pool[33397]: Vertex3fv (offset 137) */ "p\0" "glVertex3fv\0" "\0" - /* _mesa_function_pool[33024]: GetTexBumpParameterivATI (will be remapped) */ + /* _mesa_function_pool[33412]: GetTexBumpParameterivATI (will be remapped) */ "ip\0" "glGetTexBumpParameterivATI\0" "\0" - /* _mesa_function_pool[33055]: Binormal3bEXT (dynamic) */ + /* _mesa_function_pool[33443]: Binormal3bEXT (dynamic) */ "iii\0" "glBinormal3bEXT\0" "\0" - /* _mesa_function_pool[33076]: FragmentMaterialivSGIX (dynamic) */ + /* _mesa_function_pool[33464]: FragmentMaterialivSGIX (dynamic) */ "iip\0" "glFragmentMaterialivSGIX\0" "\0" - /* _mesa_function_pool[33106]: IsRenderbufferEXT (will be remapped) */ + /* _mesa_function_pool[33494]: IsRenderbufferEXT (will be remapped) */ "i\0" "glIsRenderbuffer\0" "glIsRenderbufferEXT\0" "\0" - /* _mesa_function_pool[33146]: GenProgramsNV (will be remapped) */ + /* _mesa_function_pool[33534]: GenProgramsNV (will be remapped) */ "ip\0" "glGenProgramsARB\0" "glGenProgramsNV\0" "\0" - /* _mesa_function_pool[33183]: VertexAttrib4dvNV (will be remapped) */ + /* _mesa_function_pool[33571]: VertexAttrib4dvNV (will be remapped) */ "ip\0" "glVertexAttrib4dvNV\0" "\0" - /* _mesa_function_pool[33207]: EndFragmentShaderATI (will be remapped) */ + /* _mesa_function_pool[33595]: EndFragmentShaderATI (will be remapped) */ "\0" "glEndFragmentShaderATI\0" "\0" - /* _mesa_function_pool[33232]: Binormal3iEXT (dynamic) */ + /* _mesa_function_pool[33620]: Binormal3iEXT (dynamic) */ "iii\0" "glBinormal3iEXT\0" "\0" - /* _mesa_function_pool[33253]: WindowPos2fMESA (will be remapped) */ + /* _mesa_function_pool[33641]: WindowPos2fMESA (will be remapped) */ "ff\0" "glWindowPos2f\0" "glWindowPos2fARB\0" @@ -4783,600 +4847,616 @@ static const char _mesa_function_pool[] = /* these functions need to be remapped */ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { - { 1616, AttachShader_remap_index }, - { 9893, CreateProgram_remap_index }, - { 22964, CreateShader_remap_index }, - { 25451, DeleteProgram_remap_index }, - { 18608, DeleteShader_remap_index }, - { 23465, DetachShader_remap_index }, - { 17974, GetAttachedShaders_remap_index }, - { 4856, GetProgramInfoLog_remap_index }, - { 444, GetProgramiv_remap_index }, - { 6529, GetShaderInfoLog_remap_index }, - { 31120, GetShaderiv_remap_index }, - { 13387, IsProgram_remap_index }, - { 12308, IsShader_remap_index }, - { 10023, StencilFuncSeparate_remap_index }, - { 3960, StencilMaskSeparate_remap_index }, - { 7594, StencilOpSeparate_remap_index }, - { 22252, UniformMatrix2x3fv_remap_index }, - { 2886, UniformMatrix2x4fv_remap_index }, - { 32826, UniformMatrix3x2fv_remap_index }, - { 30442, UniformMatrix3x4fv_remap_index }, - { 16264, UniformMatrix4x2fv_remap_index }, - { 3302, UniformMatrix4x3fv_remap_index }, - { 5017, ClampColor_remap_index }, - { 18028, ClearBufferfi_remap_index }, - { 17470, ClearBufferfv_remap_index }, - { 29465, ClearBufferiv_remap_index }, - { 13592, ClearBufferuiv_remap_index }, - { 19891, GetStringi_remap_index }, - { 2827, TexBuffer_remap_index }, - { 977, FramebufferTexture_remap_index }, - { 26477, GetBufferParameteri64v_remap_index }, - { 10123, GetInteger64i_v_remap_index }, - { 23278, VertexAttribDivisor_remap_index }, - { 9911, LoadTransposeMatrixdARB_remap_index }, - { 30849, LoadTransposeMatrixfARB_remap_index }, - { 5637, MultTransposeMatrixdARB_remap_index }, - { 23652, MultTransposeMatrixfARB_remap_index }, - { 255, SampleCoverageARB_remap_index }, - { 5821, CompressedTexImage1DARB_remap_index }, - { 24180, CompressedTexImage2DARB_remap_index }, - { 4023, CompressedTexImage3DARB_remap_index }, - { 18325, CompressedTexSubImage1DARB_remap_index }, - { 2089, CompressedTexSubImage2DARB_remap_index }, - { 20313, CompressedTexSubImage3DARB_remap_index }, - { 28621, GetCompressedTexImageARB_remap_index }, - { 3868, DisableVertexAttribArrayARB_remap_index }, - { 30007, EnableVertexAttribArrayARB_remap_index }, - { 31924, GetProgramEnvParameterdvARB_remap_index }, - { 23532, GetProgramEnvParameterfvARB_remap_index }, - { 27506, GetProgramLocalParameterdvARB_remap_index }, - { 8036, GetProgramLocalParameterfvARB_remap_index }, - { 18459, GetProgramStringARB_remap_index }, - { 27701, GetProgramivARB_remap_index }, - { 20508, GetVertexAttribdvARB_remap_index }, - { 16072, GetVertexAttribfvARB_remap_index }, - { 9735, GetVertexAttribivARB_remap_index }, - { 19372, ProgramEnvParameter4dARB_remap_index }, - { 25201, ProgramEnvParameter4dvARB_remap_index }, - { 16792, ProgramEnvParameter4fARB_remap_index }, - { 8935, ProgramEnvParameter4fvARB_remap_index }, - { 3986, ProgramLocalParameter4dARB_remap_index }, - { 13097, ProgramLocalParameter4dvARB_remap_index }, - { 29486, ProgramLocalParameter4fARB_remap_index }, - { 25837, ProgramLocalParameter4fvARB_remap_index }, - { 28375, ProgramStringARB_remap_index }, - { 19622, VertexAttrib1dARB_remap_index }, - { 15726, VertexAttrib1dvARB_remap_index }, - { 4161, VertexAttrib1fARB_remap_index }, - { 32907, VertexAttrib1fvARB_remap_index }, - { 7120, VertexAttrib1sARB_remap_index }, - { 2263, VertexAttrib1svARB_remap_index }, - { 15157, VertexAttrib2dARB_remap_index }, - { 17491, VertexAttrib2dvARB_remap_index }, - { 1635, VertexAttrib2fARB_remap_index }, - { 17604, VertexAttrib2fvARB_remap_index }, - { 32533, VertexAttrib2sARB_remap_index }, - { 31561, VertexAttrib2svARB_remap_index }, - { 11274, VertexAttrib3dARB_remap_index }, - { 8602, VertexAttrib3dvARB_remap_index }, - { 1722, VertexAttrib3fARB_remap_index }, - { 22515, VertexAttrib3fvARB_remap_index }, - { 28222, VertexAttrib3sARB_remap_index }, - { 20250, VertexAttrib3svARB_remap_index }, - { 4882, VertexAttrib4NbvARB_remap_index }, - { 17851, VertexAttrib4NivARB_remap_index }, - { 22470, VertexAttrib4NsvARB_remap_index }, - { 23484, VertexAttrib4NubARB_remap_index }, - { 31807, VertexAttrib4NubvARB_remap_index }, - { 19033, VertexAttrib4NuivARB_remap_index }, - { 3175, VertexAttrib4NusvARB_remap_index }, - { 10863, VertexAttrib4bvARB_remap_index }, - { 26879, VertexAttrib4dARB_remap_index }, - { 21272, VertexAttrib4dvARB_remap_index }, - { 11428, VertexAttrib4fARB_remap_index }, - { 11832, VertexAttrib4fvARB_remap_index }, - { 10239, VertexAttrib4ivARB_remap_index }, - { 17284, VertexAttrib4sARB_remap_index }, - { 31035, VertexAttrib4svARB_remap_index }, - { 16597, VertexAttrib4ubvARB_remap_index }, - { 30331, VertexAttrib4uivARB_remap_index }, - { 20061, VertexAttrib4usvARB_remap_index }, - { 22067, VertexAttribPointerARB_remap_index }, - { 32667, BindBufferARB_remap_index }, - { 6827, BufferDataARB_remap_index }, - { 1537, BufferSubDataARB_remap_index }, - { 30612, DeleteBuffersARB_remap_index }, - { 32950, GenBuffersARB_remap_index }, - { 17647, GetBufferParameterivARB_remap_index }, - { 16744, GetBufferPointervARB_remap_index }, - { 1490, GetBufferSubDataARB_remap_index }, - { 30279, IsBufferARB_remap_index }, - { 26321, MapBufferARB_remap_index }, - { 31250, UnmapBufferARB_remap_index }, - { 351, BeginQueryARB_remap_index }, - { 19717, DeleteQueriesARB_remap_index }, - { 12159, EndQueryARB_remap_index }, - { 29100, GenQueriesARB_remap_index }, - { 1981, GetQueryObjectivARB_remap_index }, - { 17328, GetQueryObjectuivARB_remap_index }, - { 1779, GetQueryivARB_remap_index }, - { 19968, IsQueryARB_remap_index }, - { 8212, AttachObjectARB_remap_index }, - { 18570, CompileShaderARB_remap_index }, - { 3244, CreateProgramObjectARB_remap_index }, - { 6772, CreateShaderObjectARB_remap_index }, - { 14459, DeleteObjectARB_remap_index }, - { 23971, DetachObjectARB_remap_index }, - { 11904, GetActiveUniformARB_remap_index }, - { 9410, GetAttachedObjectsARB_remap_index }, - { 9717, GetHandleARB_remap_index }, - { 32700, GetInfoLogARB_remap_index }, - { 31878, GetObjectParameterfvARB_remap_index }, - { 27380, GetObjectParameterivARB_remap_index }, - { 28858, GetShaderSourceARB_remap_index }, - { 28082, GetUniformLocationARB_remap_index }, - { 23754, GetUniformfvARB_remap_index }, - { 12672, GetUniformivARB_remap_index }, - { 20106, LinkProgramARB_remap_index }, - { 20164, ShaderSourceARB_remap_index }, - { 7494, Uniform1fARB_remap_index }, - { 29695, Uniform1fvARB_remap_index }, - { 22036, Uniform1iARB_remap_index }, - { 20961, Uniform1ivARB_remap_index }, - { 2212, Uniform2fARB_remap_index }, - { 14295, Uniform2fvARB_remap_index }, - { 26208, Uniform2iARB_remap_index }, - { 2332, Uniform2ivARB_remap_index }, - { 18680, Uniform3fARB_remap_index }, - { 9440, Uniform3fvARB_remap_index }, - { 6383, Uniform3iARB_remap_index }, - { 16850, Uniform3ivARB_remap_index }, - { 19178, Uniform4fARB_remap_index }, - { 23618, Uniform4fvARB_remap_index }, - { 24880, Uniform4iARB_remap_index }, - { 20474, Uniform4ivARB_remap_index }, - { 8264, UniformMatrix2fvARB_remap_index }, + { 1577, AttachShader_remap_index }, + { 9967, CreateProgram_remap_index }, + { 23300, CreateShader_remap_index }, + { 25832, DeleteProgram_remap_index }, + { 18888, DeleteShader_remap_index }, + { 23801, DetachShader_remap_index }, + { 18202, GetAttachedShaders_remap_index }, + { 4919, GetProgramInfoLog_remap_index }, + { 405, GetProgramiv_remap_index }, + { 6627, GetShaderInfoLog_remap_index }, + { 31502, GetShaderiv_remap_index }, + { 13443, IsProgram_remap_index }, + { 12364, IsShader_remap_index }, + { 10097, StencilFuncSeparate_remap_index }, + { 3921, StencilMaskSeparate_remap_index }, + { 7692, StencilOpSeparate_remap_index }, + { 22560, UniformMatrix2x3fv_remap_index }, + { 2847, UniformMatrix2x4fv_remap_index }, + { 33214, UniformMatrix3x2fv_remap_index }, + { 30819, UniformMatrix3x4fv_remap_index }, + { 16406, UniformMatrix4x2fv_remap_index }, + { 3263, UniformMatrix4x3fv_remap_index }, + { 5080, ClampColor_remap_index }, + { 18256, ClearBufferfi_remap_index }, + { 17698, ClearBufferfv_remap_index }, + { 29842, ClearBufferiv_remap_index }, + { 13648, ClearBufferuiv_remap_index }, + { 20199, GetStringi_remap_index }, + { 2788, TexBuffer_remap_index }, + { 938, FramebufferTexture_remap_index }, + { 26868, GetBufferParameteri64v_remap_index }, + { 10197, GetInteger64i_v_remap_index }, + { 23614, VertexAttribDivisor_remap_index }, + { 9985, LoadTransposeMatrixdARB_remap_index }, + { 31231, LoadTransposeMatrixfARB_remap_index }, + { 5693, MultTransposeMatrixdARB_remap_index }, + { 23988, MultTransposeMatrixfARB_remap_index }, + { 216, SampleCoverageARB_remap_index }, + { 5919, CompressedTexImage1DARB_remap_index }, + { 24516, CompressedTexImage2DARB_remap_index }, + { 3984, CompressedTexImage3DARB_remap_index }, + { 18544, CompressedTexSubImage1DARB_remap_index }, + { 2050, CompressedTexSubImage2DARB_remap_index }, + { 20621, CompressedTexSubImage3DARB_remap_index }, + { 28948, GetCompressedTexImageARB_remap_index }, + { 3829, DisableVertexAttribArrayARB_remap_index }, + { 30384, EnableVertexAttribArrayARB_remap_index }, + { 32345, GetProgramEnvParameterdvARB_remap_index }, + { 23868, GetProgramEnvParameterfvARB_remap_index }, + { 27865, GetProgramLocalParameterdvARB_remap_index }, + { 8134, GetProgramLocalParameterfvARB_remap_index }, + { 18720, GetProgramStringARB_remap_index }, + { 28060, GetProgramivARB_remap_index }, + { 20816, GetVertexAttribdvARB_remap_index }, + { 16214, GetVertexAttribfvARB_remap_index }, + { 9809, GetVertexAttribivARB_remap_index }, + { 19662, ProgramEnvParameter4dARB_remap_index }, + { 25582, ProgramEnvParameter4dvARB_remap_index }, + { 17020, ProgramEnvParameter4fARB_remap_index }, + { 9009, ProgramEnvParameter4fvARB_remap_index }, + { 3947, ProgramLocalParameter4dARB_remap_index }, + { 13153, ProgramLocalParameter4dvARB_remap_index }, + { 29863, ProgramLocalParameter4fARB_remap_index }, + { 26228, ProgramLocalParameter4fvARB_remap_index }, + { 28702, ProgramStringARB_remap_index }, + { 19930, VertexAttrib1dARB_remap_index }, + { 15868, VertexAttrib1dvARB_remap_index }, + { 4143, VertexAttrib1fARB_remap_index }, + { 33295, VertexAttrib1fvARB_remap_index }, + { 7218, VertexAttrib1sARB_remap_index }, + { 2224, VertexAttrib1svARB_remap_index }, + { 15299, VertexAttrib2dARB_remap_index }, + { 17719, VertexAttrib2dvARB_remap_index }, + { 1596, VertexAttrib2fARB_remap_index }, + { 17832, VertexAttrib2fvARB_remap_index }, + { 32921, VertexAttrib2sARB_remap_index }, + { 31982, VertexAttrib2svARB_remap_index }, + { 11348, VertexAttrib3dARB_remap_index }, + { 8676, VertexAttrib3dvARB_remap_index }, + { 1683, VertexAttrib3fARB_remap_index }, + { 22851, VertexAttrib3fvARB_remap_index }, + { 28549, VertexAttrib3sARB_remap_index }, + { 20558, VertexAttrib3svARB_remap_index }, + { 4945, VertexAttrib4NbvARB_remap_index }, + { 18079, VertexAttrib4NivARB_remap_index }, + { 22806, VertexAttrib4NsvARB_remap_index }, + { 23820, VertexAttrib4NubARB_remap_index }, + { 32228, VertexAttrib4NubvARB_remap_index }, + { 19313, VertexAttrib4NuivARB_remap_index }, + { 3136, VertexAttrib4NusvARB_remap_index }, + { 10937, VertexAttrib4bvARB_remap_index }, + { 27238, VertexAttrib4dARB_remap_index }, + { 21580, VertexAttrib4dvARB_remap_index }, + { 11502, VertexAttrib4fARB_remap_index }, + { 11906, VertexAttrib4fvARB_remap_index }, + { 10313, VertexAttrib4ivARB_remap_index }, + { 17512, VertexAttrib4sARB_remap_index }, + { 31417, VertexAttrib4svARB_remap_index }, + { 16825, VertexAttrib4ubvARB_remap_index }, + { 30708, VertexAttrib4uivARB_remap_index }, + { 20369, VertexAttrib4usvARB_remap_index }, + { 22375, VertexAttribPointerARB_remap_index }, + { 33055, BindBufferARB_remap_index }, + { 6925, BufferDataARB_remap_index }, + { 1498, BufferSubDataARB_remap_index }, + { 30994, DeleteBuffersARB_remap_index }, + { 33338, GenBuffersARB_remap_index }, + { 17875, GetBufferParameterivARB_remap_index }, + { 16972, GetBufferPointervARB_remap_index }, + { 1451, GetBufferSubDataARB_remap_index }, + { 30656, IsBufferARB_remap_index }, + { 26712, MapBufferARB_remap_index }, + { 31632, UnmapBufferARB_remap_index }, + { 312, BeginQueryARB_remap_index }, + { 20025, DeleteQueriesARB_remap_index }, + { 12225, EndQueryARB_remap_index }, + { 29427, GenQueriesARB_remap_index }, + { 1942, GetQueryObjectivARB_remap_index }, + { 17556, GetQueryObjectuivARB_remap_index }, + { 1740, GetQueryivARB_remap_index }, + { 20276, IsQueryARB_remap_index }, + { 8286, AttachObjectARB_remap_index }, + { 18850, CompileShaderARB_remap_index }, + { 3205, CreateProgramObjectARB_remap_index }, + { 6870, CreateShaderObjectARB_remap_index }, + { 14601, DeleteObjectARB_remap_index }, + { 24307, DetachObjectARB_remap_index }, + { 11970, GetActiveUniformARB_remap_index }, + { 9484, GetAttachedObjectsARB_remap_index }, + { 9791, GetHandleARB_remap_index }, + { 33088, GetInfoLogARB_remap_index }, + { 32299, GetObjectParameterfvARB_remap_index }, + { 27739, GetObjectParameterivARB_remap_index }, + { 29185, GetShaderSourceARB_remap_index }, + { 28409, GetUniformLocationARB_remap_index }, + { 24090, GetUniformfvARB_remap_index }, + { 12728, GetUniformivARB_remap_index }, + { 20414, LinkProgramARB_remap_index }, + { 20472, ShaderSourceARB_remap_index }, + { 7592, Uniform1fARB_remap_index }, + { 30072, Uniform1fvARB_remap_index }, + { 22344, Uniform1iARB_remap_index }, + { 21269, Uniform1ivARB_remap_index }, + { 2173, Uniform2fARB_remap_index }, + { 14437, Uniform2fvARB_remap_index }, + { 26599, Uniform2iARB_remap_index }, + { 2293, Uniform2ivARB_remap_index }, + { 18960, Uniform3fARB_remap_index }, + { 9514, Uniform3fvARB_remap_index }, + { 6481, Uniform3iARB_remap_index }, + { 17078, Uniform3ivARB_remap_index }, + { 19468, Uniform4fARB_remap_index }, + { 23954, Uniform4fvARB_remap_index }, + { 25216, Uniform4iARB_remap_index }, + { 20782, Uniform4ivARB_remap_index }, + { 8338, UniformMatrix2fvARB_remap_index }, { 17, UniformMatrix3fvARB_remap_index }, - { 2729, UniformMatrix4fvARB_remap_index }, - { 25313, UseProgramObjectARB_remap_index }, - { 14845, ValidateProgramARB_remap_index }, - { 21315, BindAttribLocationARB_remap_index }, - { 4927, GetActiveAttribARB_remap_index }, - { 16531, GetAttribLocationARB_remap_index }, - { 29413, DrawBuffersARB_remap_index }, - { 17896, DrawArraysInstancedARB_remap_index }, - { 6444, DrawElementsInstancedARB_remap_index }, - { 13202, RenderbufferStorageMultisample_remap_index }, - { 13673, FramebufferTextureARB_remap_index }, - { 25739, FramebufferTextureFaceARB_remap_index }, - { 24120, ProgramParameteriARB_remap_index }, - { 23436, VertexAttribDivisorARB_remap_index }, - { 19226, FlushMappedBufferRange_remap_index }, - { 27797, MapBufferRange_remap_index }, - { 16375, BindVertexArray_remap_index }, - { 14668, GenVertexArrays_remap_index }, - { 30209, CopyBufferSubData_remap_index }, - { 31139, ClientWaitSync_remap_index }, - { 2648, DeleteSync_remap_index }, - { 7161, FenceSync_remap_index }, - { 15216, GetInteger64v_remap_index }, - { 22577, GetSynciv_remap_index }, - { 29352, IsSync_remap_index }, - { 9358, WaitSync_remap_index }, - { 3836, DrawElementsBaseVertex_remap_index }, - { 30544, DrawRangeElementsBaseVertex_remap_index }, - { 26352, MultiDrawElementsBaseVertex_remap_index }, - { 32083, BlendEquationSeparateiARB_remap_index }, - { 17740, BlendEquationiARB_remap_index }, - { 12641, BlendFuncSeparateiARB_remap_index }, - { 9783, BlendFunciARB_remap_index }, - { 5078, BindTransformFeedback_remap_index }, - { 3271, DeleteTransformFeedbacks_remap_index }, - { 6416, DrawTransformFeedback_remap_index }, - { 9577, GenTransformFeedbacks_remap_index }, - { 28265, IsTransformFeedback_remap_index }, - { 25932, PauseTransformFeedback_remap_index }, - { 5557, ResumeTransformFeedback_remap_index }, - { 21635, ClearDepthf_remap_index }, - { 6720, DepthRangef_remap_index }, - { 14480, GetShaderPrecisionFormat_remap_index }, - { 9963, ReleaseShaderCompiler_remap_index }, - { 10906, ShaderBinary_remap_index }, - { 5425, PolygonOffsetEXT_remap_index }, - { 23199, GetPixelTexGenParameterfvSGIS_remap_index }, - { 4404, GetPixelTexGenParameterivSGIS_remap_index }, - { 22932, PixelTexGenParameterfSGIS_remap_index }, - { 663, PixelTexGenParameterfvSGIS_remap_index }, - { 12710, PixelTexGenParameteriSGIS_remap_index }, - { 13815, PixelTexGenParameterivSGIS_remap_index }, - { 18224, SampleMaskSGIS_remap_index }, - { 19908, SamplePatternSGIS_remap_index }, - { 26281, ColorPointerEXT_remap_index }, - { 17534, EdgeFlagPointerEXT_remap_index }, - { 6037, IndexPointerEXT_remap_index }, - { 6117, NormalPointerEXT_remap_index }, - { 15810, TexCoordPointerEXT_remap_index }, - { 6950, VertexPointerEXT_remap_index }, - { 3638, PointParameterfEXT_remap_index }, - { 7801, PointParameterfvEXT_remap_index }, - { 31976, LockArraysEXT_remap_index }, - { 14909, UnlockArraysEXT_remap_index }, - { 1306, SecondaryColor3bEXT_remap_index }, - { 7960, SecondaryColor3bvEXT_remap_index }, - { 10416, SecondaryColor3dEXT_remap_index }, - { 25509, SecondaryColor3dvEXT_remap_index }, - { 28131, SecondaryColor3fEXT_remap_index }, - { 18261, SecondaryColor3fvEXT_remap_index }, - { 509, SecondaryColor3iEXT_remap_index }, - { 16120, SecondaryColor3ivEXT_remap_index }, - { 10051, SecondaryColor3sEXT_remap_index }, - { 30803, SecondaryColor3svEXT_remap_index }, - { 27216, SecondaryColor3ubEXT_remap_index }, - { 21206, SecondaryColor3ubvEXT_remap_index }, - { 12952, SecondaryColor3uiEXT_remap_index }, - { 22819, SecondaryColor3uivEXT_remap_index }, - { 25789, SecondaryColor3usEXT_remap_index }, - { 13025, SecondaryColor3usvEXT_remap_index }, - { 11775, SecondaryColorPointerEXT_remap_index }, - { 25603, MultiDrawArraysEXT_remap_index }, - { 20896, MultiDrawElementsEXT_remap_index }, - { 21091, FogCoordPointerEXT_remap_index }, - { 4553, FogCoorddEXT_remap_index }, - { 31377, FogCoorddvEXT_remap_index }, - { 4670, FogCoordfEXT_remap_index }, - { 27139, FogCoordfvEXT_remap_index }, - { 19130, PixelTexGenSGIX_remap_index }, - { 27724, BlendFuncSeparateEXT_remap_index }, - { 6862, FlushVertexArrayRangeNV_remap_index }, - { 5374, VertexArrayRangeNV_remap_index }, - { 28196, CombinerInputNV_remap_index }, - { 2155, CombinerOutputNV_remap_index }, - { 30956, CombinerParameterfNV_remap_index }, - { 5248, CombinerParameterfvNV_remap_index }, - { 22301, CombinerParameteriNV_remap_index }, - { 32425, CombinerParameterivNV_remap_index }, - { 7238, FinalCombinerInputNV_remap_index }, - { 9804, GetCombinerInputParameterfvNV_remap_index }, - { 32262, GetCombinerInputParameterivNV_remap_index }, - { 216, GetCombinerOutputParameterfvNV_remap_index }, - { 13776, GetCombinerOutputParameterivNV_remap_index }, - { 6624, GetFinalCombinerInputParameterfvNV_remap_index }, - { 24752, GetFinalCombinerInputParameterivNV_remap_index }, - { 12619, ResizeBuffersMESA_remap_index }, - { 11101, WindowPos2dMESA_remap_index }, - { 1099, WindowPos2dvMESA_remap_index }, - { 33253, WindowPos2fMESA_remap_index }, - { 7905, WindowPos2fvMESA_remap_index }, - { 18171, WindowPos2iMESA_remap_index }, - { 20381, WindowPos2ivMESA_remap_index }, - { 20995, WindowPos2sMESA_remap_index }, - { 5735, WindowPos2svMESA_remap_index }, - { 7730, WindowPos3dMESA_remap_index }, - { 14023, WindowPos3dvMESA_remap_index }, - { 555, WindowPos3fMESA_remap_index }, - { 14970, WindowPos3fvMESA_remap_index }, - { 24013, WindowPos3iMESA_remap_index }, - { 30154, WindowPos3ivMESA_remap_index }, - { 18825, WindowPos3sMESA_remap_index }, - { 31633, WindowPos3svMESA_remap_index }, - { 11052, WindowPos4dMESA_remap_index }, - { 16988, WindowPos4dvMESA_remap_index }, - { 13982, WindowPos4fMESA_remap_index }, - { 30710, WindowPos4fvMESA_remap_index }, - { 30307, WindowPos4iMESA_remap_index }, - { 12422, WindowPos4ivMESA_remap_index }, - { 19009, WindowPos4sMESA_remap_index }, - { 3222, WindowPos4svMESA_remap_index }, - { 26847, MultiModeDrawArraysIBM_remap_index }, - { 28971, MultiModeDrawElementsIBM_remap_index }, - { 12187, DeleteFencesNV_remap_index }, - { 28043, FinishFenceNV_remap_index }, - { 3760, GenFencesNV_remap_index }, - { 16968, GetFenceivNV_remap_index }, - { 8197, IsFenceNV_remap_index }, - { 13703, SetFenceNV_remap_index }, - { 4217, TestFenceNV_remap_index }, - { 31604, AreProgramsResidentNV_remap_index }, - { 30998, BindProgramNV_remap_index }, - { 25872, DeleteProgramsNV_remap_index }, - { 21424, ExecuteProgramNV_remap_index }, - { 33146, GenProgramsNV_remap_index }, - { 23304, GetProgramParameterdvNV_remap_index }, - { 10478, GetProgramParameterfvNV_remap_index }, - { 26255, GetProgramStringNV_remap_index }, - { 24390, GetProgramivNV_remap_index }, - { 23567, GetTrackMatrixivNV_remap_index }, - { 26049, GetVertexAttribPointervNV_remap_index }, - { 24685, GetVertexAttribdvNV_remap_index }, - { 9253, GetVertexAttribfvNV_remap_index }, - { 18432, GetVertexAttribivNV_remap_index }, - { 19256, IsProgramNV_remap_index }, - { 9336, LoadProgramNV_remap_index }, - { 27820, ProgramParameters4dvNV_remap_index }, - { 24320, ProgramParameters4fvNV_remap_index }, - { 20685, RequestResidentProgramsNV_remap_index }, - { 22279, TrackMatrixNV_remap_index }, - { 32239, VertexAttrib1dNV_remap_index }, - { 13614, VertexAttrib1dvNV_remap_index }, - { 28477, VertexAttrib1fNV_remap_index }, - { 2454, VertexAttrib1fvNV_remap_index }, - { 30767, VertexAttrib1sNV_remap_index }, - { 15043, VertexAttrib1svNV_remap_index }, - { 4832, VertexAttrib2dNV_remap_index }, - { 13507, VertexAttrib2dvNV_remap_index }, - { 20140, VertexAttrib2fNV_remap_index }, - { 13073, VertexAttrib2fvNV_remap_index }, - { 5947, VertexAttrib2sNV_remap_index }, - { 18879, VertexAttrib2svNV_remap_index }, - { 11249, VertexAttrib3dNV_remap_index }, - { 31854, VertexAttrib3dvNV_remap_index }, - { 10290, VertexAttrib3fNV_remap_index }, - { 24712, VertexAttrib3fvNV_remap_index }, - { 22122, VertexAttrib3sNV_remap_index }, - { 23594, VertexAttrib3svNV_remap_index }, - { 28945, VertexAttrib4dNV_remap_index }, - { 33183, VertexAttrib4dvNV_remap_index }, - { 4454, VertexAttrib4fNV_remap_index }, - { 9386, VertexAttrib4fvNV_remap_index }, - { 26731, VertexAttrib4sNV_remap_index }, - { 1448, VertexAttrib4svNV_remap_index }, - { 4990, VertexAttrib4ubNV_remap_index }, - { 817, VertexAttrib4ubvNV_remap_index }, - { 21604, VertexAttribPointerNV_remap_index }, - { 2306, VertexAttribs1dvNV_remap_index }, - { 26137, VertexAttribs1fvNV_remap_index }, - { 32983, VertexAttribs1svNV_remap_index }, - { 10315, VertexAttribs2dvNV_remap_index }, - { 25274, VertexAttribs2fvNV_remap_index }, - { 17560, VertexAttribs2svNV_remap_index }, - { 5276, VertexAttribs3dvNV_remap_index }, - { 2186, VertexAttribs3fvNV_remap_index }, - { 29902, VertexAttribs3svNV_remap_index }, - { 26821, VertexAttribs4dvNV_remap_index }, - { 5348, VertexAttribs4fvNV_remap_index }, - { 32770, VertexAttribs4svNV_remap_index }, - { 29650, VertexAttribs4ubvNV_remap_index }, - { 26923, GetTexBumpParameterfvATI_remap_index }, - { 33024, GetTexBumpParameterivATI_remap_index }, - { 18542, TexBumpParameterfvATI_remap_index }, - { 20556, TexBumpParameterivATI_remap_index }, - { 15589, AlphaFragmentOp1ATI_remap_index }, - { 25555, AlphaFragmentOp2ATI_remap_index }, - { 24628, AlphaFragmentOp3ATI_remap_index }, - { 29829, BeginFragmentShaderATI_remap_index }, - { 31197, BindFragmentShaderATI_remap_index }, - { 23723, ColorFragmentOp1ATI_remap_index }, - { 4332, ColorFragmentOp2ATI_remap_index }, - { 31499, ColorFragmentOp3ATI_remap_index }, - { 5514, DeleteFragmentShaderATI_remap_index }, - { 33207, EndFragmentShaderATI_remap_index }, - { 32453, GenFragmentShadersATI_remap_index }, - { 25428, PassTexCoordATI_remap_index }, - { 6930, SampleMapATI_remap_index }, - { 27034, SetFragmentShaderConstantATI_remap_index }, - { 402, PointParameteriNV_remap_index }, - { 14184, PointParameterivNV_remap_index }, - { 28784, ActiveStencilFaceEXT_remap_index }, - { 27480, BindVertexArrayAPPLE_remap_index }, - { 2776, DeleteVertexArraysAPPLE_remap_index }, - { 18001, GenVertexArraysAPPLE_remap_index }, - { 23369, IsVertexArrayAPPLE_remap_index }, - { 858, GetProgramNamedParameterdvNV_remap_index }, - { 3601, GetProgramNamedParameterfvNV_remap_index }, - { 26954, ProgramNamedParameter4dNV_remap_index }, - { 14543, ProgramNamedParameter4dvNV_remap_index }, - { 8869, ProgramNamedParameter4fNV_remap_index }, - { 11740, ProgramNamedParameter4fvNV_remap_index }, - { 16899, PrimitiveRestartIndexNV_remap_index }, - { 30687, PrimitiveRestartNV_remap_index }, - { 24299, DepthBoundsEXT_remap_index }, - { 1198, BlendEquationSeparateEXT_remap_index }, - { 14744, BindFramebufferEXT_remap_index }, - { 25648, BindRenderbufferEXT_remap_index }, - { 9633, CheckFramebufferStatusEXT_remap_index }, - { 22620, DeleteFramebuffersEXT_remap_index }, - { 31756, DeleteRenderbuffersEXT_remap_index }, - { 13531, FramebufferRenderbufferEXT_remap_index }, - { 13720, FramebufferTexture1DEXT_remap_index }, - { 11534, FramebufferTexture2DEXT_remap_index }, - { 11154, FramebufferTexture3DEXT_remap_index }, - { 23235, GenFramebuffersEXT_remap_index }, - { 17425, GenRenderbuffersEXT_remap_index }, - { 6666, GenerateMipmapEXT_remap_index }, - { 21697, GetFramebufferAttachmentParameterivEXT_remap_index }, - { 32359, GetRenderbufferParameterivEXT_remap_index }, - { 20436, IsFramebufferEXT_remap_index }, - { 33106, IsRenderbufferEXT_remap_index }, - { 8144, RenderbufferStorageEXT_remap_index }, - { 734, BlitFramebufferEXT_remap_index }, - { 14329, BufferParameteriAPPLE_remap_index }, - { 19288, FlushMappedBufferRangeAPPLE_remap_index }, - { 1854, BindFragDataLocationEXT_remap_index }, - { 24412, GetFragDataLocationEXT_remap_index }, - { 10593, GetUniformuivEXT_remap_index }, - { 2972, GetVertexAttribIivEXT_remap_index }, - { 27991, GetVertexAttribIuivEXT_remap_index }, - { 12020, Uniform1uiEXT_remap_index }, - { 27905, Uniform1uivEXT_remap_index }, - { 22218, Uniform2uiEXT_remap_index }, - { 4296, Uniform2uivEXT_remap_index }, - { 29224, Uniform3uiEXT_remap_index }, - { 14690, Uniform3uivEXT_remap_index }, - { 3525, Uniform4uiEXT_remap_index }, - { 8645, Uniform4uivEXT_remap_index }, - { 18389, VertexAttribI1iEXT_remap_index }, - { 1004, VertexAttribI1ivEXT_remap_index }, - { 2555, VertexAttribI1uiEXT_remap_index }, - { 12801, VertexAttribI1uivEXT_remap_index }, + { 2690, UniformMatrix4fvARB_remap_index }, + { 25694, UseProgramObjectARB_remap_index }, + { 14987, ValidateProgramARB_remap_index }, + { 21623, BindAttribLocationARB_remap_index }, + { 4990, GetActiveAttribARB_remap_index }, + { 16726, GetAttribLocationARB_remap_index }, + { 29790, DrawBuffersARB_remap_index }, + { 29623, ClampColorARB_remap_index }, + { 18124, DrawArraysInstancedARB_remap_index }, + { 6542, DrawElementsInstancedARB_remap_index }, + { 13258, RenderbufferStorageMultisample_remap_index }, + { 13729, FramebufferTextureARB_remap_index }, + { 26130, FramebufferTextureFaceARB_remap_index }, + { 24456, ProgramParameteriARB_remap_index }, + { 23772, VertexAttribDivisorARB_remap_index }, + { 19516, FlushMappedBufferRange_remap_index }, + { 28176, MapBufferRange_remap_index }, + { 28083, TexBufferARB_remap_index }, + { 16544, BindVertexArray_remap_index }, + { 14810, GenVertexArrays_remap_index }, + { 30586, CopyBufferSubData_remap_index }, + { 31521, ClientWaitSync_remap_index }, + { 2609, DeleteSync_remap_index }, + { 7259, FenceSync_remap_index }, + { 15358, GetInteger64v_remap_index }, + { 22913, GetSynciv_remap_index }, + { 29729, IsSync_remap_index }, + { 9432, WaitSync_remap_index }, + { 3797, DrawElementsBaseVertex_remap_index }, + { 30898, DrawRangeElementsBaseVertex_remap_index }, + { 26743, MultiDrawElementsBaseVertex_remap_index }, + { 16792, BlendEquationSeparateiARB_remap_index }, + { 17968, BlendEquationiARB_remap_index }, + { 12697, BlendFuncSeparateiARB_remap_index }, + { 9857, BlendFunciARB_remap_index }, + { 8200, BindSampler_remap_index }, + { 4122, DeleteSamplers_remap_index }, + { 19889, GenSamplers_remap_index }, + { 29661, GetSamplerParameterIiv_remap_index }, + { 19410, GetSamplerParameterIuiv_remap_index }, + { 4839, GetSamplerParameterfv_remap_index }, + { 25851, GetSamplerParameteriv_remap_index }, + { 14355, IsSampler_remap_index }, + { 16497, SamplerParameterIiv_remap_index }, + { 30937, SamplerParameterIuiv_remap_index }, + { 22612, SamplerParameterf_remap_index }, + { 16653, SamplerParameterfv_remap_index }, + { 22587, SamplerParameteri_remap_index }, + { 18318, SamplerParameteriv_remap_index }, + { 5141, BindTransformFeedback_remap_index }, + { 3232, DeleteTransformFeedbacks_remap_index }, + { 6514, DrawTransformFeedback_remap_index }, + { 9651, GenTransformFeedbacks_remap_index }, + { 28592, IsTransformFeedback_remap_index }, + { 26323, PauseTransformFeedback_remap_index }, + { 5578, ResumeTransformFeedback_remap_index }, + { 21943, ClearDepthf_remap_index }, + { 6818, DepthRangef_remap_index }, + { 14622, GetShaderPrecisionFormat_remap_index }, + { 10037, ReleaseShaderCompiler_remap_index }, + { 10980, ShaderBinary_remap_index }, + { 5446, PolygonOffsetEXT_remap_index }, + { 23535, GetPixelTexGenParameterfvSGIS_remap_index }, + { 4438, GetPixelTexGenParameterivSGIS_remap_index }, + { 23268, PixelTexGenParameterfSGIS_remap_index }, + { 624, PixelTexGenParameterfvSGIS_remap_index }, + { 12766, PixelTexGenParameteriSGIS_remap_index }, + { 13903, PixelTexGenParameterivSGIS_remap_index }, + { 18443, SampleMaskSGIS_remap_index }, + { 20216, SamplePatternSGIS_remap_index }, + { 26672, ColorPointerEXT_remap_index }, + { 17762, EdgeFlagPointerEXT_remap_index }, + { 6135, IndexPointerEXT_remap_index }, + { 6215, NormalPointerEXT_remap_index }, + { 15952, TexCoordPointerEXT_remap_index }, + { 7048, VertexPointerEXT_remap_index }, + { 3599, PointParameterfEXT_remap_index }, + { 7899, PointParameterfvEXT_remap_index }, + { 32397, LockArraysEXT_remap_index }, + { 15051, UnlockArraysEXT_remap_index }, + { 1267, SecondaryColor3bEXT_remap_index }, + { 8058, SecondaryColor3bvEXT_remap_index }, + { 10490, SecondaryColor3dEXT_remap_index }, + { 25900, SecondaryColor3dvEXT_remap_index }, + { 28458, SecondaryColor3fEXT_remap_index }, + { 18480, SecondaryColor3fvEXT_remap_index }, + { 470, SecondaryColor3iEXT_remap_index }, + { 16262, SecondaryColor3ivEXT_remap_index }, + { 10125, SecondaryColor3sEXT_remap_index }, + { 31185, SecondaryColor3svEXT_remap_index }, + { 27575, SecondaryColor3ubEXT_remap_index }, + { 21514, SecondaryColor3ubvEXT_remap_index }, + { 13008, SecondaryColor3uiEXT_remap_index }, + { 23155, SecondaryColor3uivEXT_remap_index }, + { 26180, SecondaryColor3usEXT_remap_index }, + { 13081, SecondaryColor3usvEXT_remap_index }, + { 11849, SecondaryColorPointerEXT_remap_index }, + { 25994, MultiDrawArraysEXT_remap_index }, + { 21204, MultiDrawElementsEXT_remap_index }, + { 21399, FogCoordPointerEXT_remap_index }, + { 4587, FogCoorddEXT_remap_index }, + { 31798, FogCoorddvEXT_remap_index }, + { 4704, FogCoordfEXT_remap_index }, + { 27498, FogCoordfvEXT_remap_index }, + { 11949, PixelTexGenSGIX_remap_index }, + { 28103, BlendFuncSeparateEXT_remap_index }, + { 6960, FlushVertexArrayRangeNV_remap_index }, + { 5395, VertexArrayRangeNV_remap_index }, + { 28523, CombinerInputNV_remap_index }, + { 2116, CombinerOutputNV_remap_index }, + { 31338, CombinerParameterfNV_remap_index }, + { 5269, CombinerParameterfvNV_remap_index }, + { 22637, CombinerParameteriNV_remap_index }, + { 32813, CombinerParameterivNV_remap_index }, + { 7336, FinalCombinerInputNV_remap_index }, + { 9878, GetCombinerInputParameterfvNV_remap_index }, + { 32650, GetCombinerInputParameterivNV_remap_index }, + { 14004, GetCombinerOutputParameterfvNV_remap_index }, + { 13832, GetCombinerOutputParameterivNV_remap_index }, + { 6722, GetFinalCombinerInputParameterfvNV_remap_index }, + { 25088, GetFinalCombinerInputParameterivNV_remap_index }, + { 12675, ResizeBuffersMESA_remap_index }, + { 11175, WindowPos2dMESA_remap_index }, + { 1060, WindowPos2dvMESA_remap_index }, + { 33641, WindowPos2fMESA_remap_index }, + { 8003, WindowPos2fvMESA_remap_index }, + { 18390, WindowPos2iMESA_remap_index }, + { 20689, WindowPos2ivMESA_remap_index }, + { 21303, WindowPos2sMESA_remap_index }, + { 5833, WindowPos2svMESA_remap_index }, + { 7828, WindowPos3dMESA_remap_index }, + { 14150, WindowPos3dvMESA_remap_index }, + { 516, WindowPos3fMESA_remap_index }, + { 15112, WindowPos3fvMESA_remap_index }, + { 24349, WindowPos3iMESA_remap_index }, + { 30531, WindowPos3ivMESA_remap_index }, + { 19105, WindowPos3sMESA_remap_index }, + { 32054, WindowPos3svMESA_remap_index }, + { 11126, WindowPos4dMESA_remap_index }, + { 17216, WindowPos4dvMESA_remap_index }, + { 14109, WindowPos4fMESA_remap_index }, + { 31092, WindowPos4fvMESA_remap_index }, + { 30684, WindowPos4iMESA_remap_index }, + { 12478, WindowPos4ivMESA_remap_index }, + { 19289, WindowPos4sMESA_remap_index }, + { 3183, WindowPos4svMESA_remap_index }, + { 13871, MultiModeDrawArraysIBM_remap_index }, + { 29298, MultiModeDrawElementsIBM_remap_index }, + { 12253, DeleteFencesNV_remap_index }, + { 28370, FinishFenceNV_remap_index }, + { 3721, GenFencesNV_remap_index }, + { 17196, GetFenceivNV_remap_index }, + { 8271, IsFenceNV_remap_index }, + { 13759, SetFenceNV_remap_index }, + { 4199, TestFenceNV_remap_index }, + { 32025, AreProgramsResidentNV_remap_index }, + { 31380, BindProgramNV_remap_index }, + { 26263, DeleteProgramsNV_remap_index }, + { 21732, ExecuteProgramNV_remap_index }, + { 33534, GenProgramsNV_remap_index }, + { 23640, GetProgramParameterdvNV_remap_index }, + { 10552, GetProgramParameterfvNV_remap_index }, + { 26646, GetProgramStringNV_remap_index }, + { 24726, GetProgramivNV_remap_index }, + { 23903, GetTrackMatrixivNV_remap_index }, + { 26440, GetVertexAttribPointervNV_remap_index }, + { 25021, GetVertexAttribdvNV_remap_index }, + { 9327, GetVertexAttribfvNV_remap_index }, + { 18693, GetVertexAttribivNV_remap_index }, + { 19546, IsProgramNV_remap_index }, + { 9410, LoadProgramNV_remap_index }, + { 28199, ProgramParameters4dvNV_remap_index }, + { 24656, ProgramParameters4fvNV_remap_index }, + { 20993, RequestResidentProgramsNV_remap_index }, + { 30876, TrackMatrixNV_remap_index }, + { 32627, VertexAttrib1dNV_remap_index }, + { 13670, VertexAttrib1dvNV_remap_index }, + { 28804, VertexAttrib1fNV_remap_index }, + { 2415, VertexAttrib1fvNV_remap_index }, + { 31149, VertexAttrib1sNV_remap_index }, + { 15185, VertexAttrib1svNV_remap_index }, + { 4895, VertexAttrib2dNV_remap_index }, + { 13563, VertexAttrib2dvNV_remap_index }, + { 20448, VertexAttrib2fNV_remap_index }, + { 13129, VertexAttrib2fvNV_remap_index }, + { 6045, VertexAttrib2sNV_remap_index }, + { 19159, VertexAttrib2svNV_remap_index }, + { 11323, VertexAttrib3dNV_remap_index }, + { 32275, VertexAttrib3dvNV_remap_index }, + { 10364, VertexAttrib3fNV_remap_index }, + { 25048, VertexAttrib3fvNV_remap_index }, + { 22430, VertexAttrib3sNV_remap_index }, + { 23930, VertexAttrib3svNV_remap_index }, + { 29272, VertexAttrib4dNV_remap_index }, + { 33571, VertexAttrib4dvNV_remap_index }, + { 4488, VertexAttrib4fNV_remap_index }, + { 9460, VertexAttrib4fvNV_remap_index }, + { 27122, VertexAttrib4sNV_remap_index }, + { 1409, VertexAttrib4svNV_remap_index }, + { 5053, VertexAttrib4ubNV_remap_index }, + { 778, VertexAttrib4ubvNV_remap_index }, + { 21912, VertexAttribPointerNV_remap_index }, + { 2267, VertexAttribs1dvNV_remap_index }, + { 26528, VertexAttribs1fvNV_remap_index }, + { 33371, VertexAttribs1svNV_remap_index }, + { 10389, VertexAttribs2dvNV_remap_index }, + { 25655, VertexAttribs2fvNV_remap_index }, + { 17788, VertexAttribs2svNV_remap_index }, + { 5297, VertexAttribs3dvNV_remap_index }, + { 2147, VertexAttribs3fvNV_remap_index }, + { 30279, VertexAttribs3svNV_remap_index }, + { 27212, VertexAttribs4dvNV_remap_index }, + { 5369, VertexAttribs4fvNV_remap_index }, + { 33158, VertexAttribs4svNV_remap_index }, + { 30027, VertexAttribs4ubvNV_remap_index }, + { 27282, GetTexBumpParameterfvATI_remap_index }, + { 33412, GetTexBumpParameterivATI_remap_index }, + { 18803, TexBumpParameterfvATI_remap_index }, + { 20864, TexBumpParameterivATI_remap_index }, + { 15731, AlphaFragmentOp1ATI_remap_index }, + { 25946, AlphaFragmentOp2ATI_remap_index }, + { 24964, AlphaFragmentOp3ATI_remap_index }, + { 30206, BeginFragmentShaderATI_remap_index }, + { 31579, BindFragmentShaderATI_remap_index }, + { 24059, ColorFragmentOp1ATI_remap_index }, + { 4366, ColorFragmentOp2ATI_remap_index }, + { 31920, ColorFragmentOp3ATI_remap_index }, + { 5535, DeleteFragmentShaderATI_remap_index }, + { 33595, EndFragmentShaderATI_remap_index }, + { 32841, GenFragmentShadersATI_remap_index }, + { 25809, PassTexCoordATI_remap_index }, + { 7028, SampleMapATI_remap_index }, + { 27393, SetFragmentShaderConstantATI_remap_index }, + { 363, PointParameteriNV_remap_index }, + { 14311, PointParameterivNV_remap_index }, + { 29111, ActiveStencilFaceEXT_remap_index }, + { 27839, BindVertexArrayAPPLE_remap_index }, + { 2737, DeleteVertexArraysAPPLE_remap_index }, + { 18229, GenVertexArraysAPPLE_remap_index }, + { 23705, IsVertexArrayAPPLE_remap_index }, + { 819, GetProgramNamedParameterdvNV_remap_index }, + { 3562, GetProgramNamedParameterfvNV_remap_index }, + { 27313, ProgramNamedParameter4dNV_remap_index }, + { 14685, ProgramNamedParameter4dvNV_remap_index }, + { 8943, ProgramNamedParameter4fNV_remap_index }, + { 11814, ProgramNamedParameter4fvNV_remap_index }, + { 17127, PrimitiveRestartIndexNV_remap_index }, + { 31069, PrimitiveRestartNV_remap_index }, + { 24635, DepthBoundsEXT_remap_index }, + { 1159, BlendEquationSeparateEXT_remap_index }, + { 14886, BindFramebufferEXT_remap_index }, + { 26039, BindRenderbufferEXT_remap_index }, + { 9707, CheckFramebufferStatusEXT_remap_index }, + { 22956, DeleteFramebuffersEXT_remap_index }, + { 32177, DeleteRenderbuffersEXT_remap_index }, + { 13587, FramebufferRenderbufferEXT_remap_index }, + { 13776, FramebufferTexture1DEXT_remap_index }, + { 11608, FramebufferTexture2DEXT_remap_index }, + { 11228, FramebufferTexture3DEXT_remap_index }, + { 23571, GenFramebuffersEXT_remap_index }, + { 17653, GenRenderbuffersEXT_remap_index }, + { 6764, GenerateMipmapEXT_remap_index }, + { 22005, GetFramebufferAttachmentParameterivEXT_remap_index }, + { 32747, GetRenderbufferParameterivEXT_remap_index }, + { 20744, IsFramebufferEXT_remap_index }, + { 33494, IsRenderbufferEXT_remap_index }, + { 8218, RenderbufferStorageEXT_remap_index }, + { 695, BlitFramebufferEXT_remap_index }, + { 14471, BufferParameteriAPPLE_remap_index }, + { 19578, FlushMappedBufferRangeAPPLE_remap_index }, + { 1815, BindFragDataLocationEXT_remap_index }, + { 24748, GetFragDataLocationEXT_remap_index }, + { 10667, GetUniformuivEXT_remap_index }, + { 2933, GetVertexAttribIivEXT_remap_index }, + { 4216, GetVertexAttribIuivEXT_remap_index }, + { 12086, Uniform1uiEXT_remap_index }, + { 28284, Uniform1uivEXT_remap_index }, + { 22526, Uniform2uiEXT_remap_index }, + { 4330, Uniform2uivEXT_remap_index }, + { 29551, Uniform3uiEXT_remap_index }, + { 14832, Uniform3uivEXT_remap_index }, + { 3486, Uniform4uiEXT_remap_index }, + { 8719, Uniform4uivEXT_remap_index }, + { 18608, VertexAttribI1iEXT_remap_index }, + { 965, VertexAttribI1ivEXT_remap_index }, + { 2516, VertexAttribI1uiEXT_remap_index }, + { 12857, VertexAttribI1uivEXT_remap_index }, { 81, VertexAttribI2iEXT_remap_index }, - { 23835, VertexAttribI2ivEXT_remap_index }, - { 5302, VertexAttribI2uiEXT_remap_index }, - { 4715, VertexAttribI2uivEXT_remap_index }, - { 26523, VertexAttribI3iEXT_remap_index }, - { 30499, VertexAttribI3ivEXT_remap_index }, - { 3379, VertexAttribI3uiEXT_remap_index }, - { 30395, VertexAttribI3uivEXT_remap_index }, - { 21948, VertexAttribI4bvEXT_remap_index }, - { 14622, VertexAttribI4iEXT_remap_index }, - { 32025, VertexAttribI4ivEXT_remap_index }, - { 13434, VertexAttribI4svEXT_remap_index }, - { 16484, VertexAttribI4ubvEXT_remap_index }, - { 16183, VertexAttribI4uiEXT_remap_index }, - { 5448, VertexAttribI4uivEXT_remap_index }, - { 11317, VertexAttribI4usvEXT_remap_index }, - { 18486, VertexAttribIPointerEXT_remap_index }, - { 3066, FramebufferTextureLayerEXT_remap_index }, - { 5172, ColorMaskIndexedEXT_remap_index }, - { 18903, DisableIndexedEXT_remap_index }, - { 26568, EnableIndexedEXT_remap_index }, - { 21652, GetBooleanIndexedvEXT_remap_index }, - { 10928, GetIntegerIndexedvEXT_remap_index }, - { 22696, IsEnabledIndexedEXT_remap_index }, - { 22596, ClearColorIiEXT_remap_index }, - { 3475, ClearColorIuiEXT_remap_index }, - { 9843, GetTexParameterIivEXT_remap_index }, - { 5895, GetTexParameterIuivEXT_remap_index }, - { 3022, TexParameterIivEXT_remap_index }, - { 26390, TexParameterIuivEXT_remap_index }, - { 4583, BeginConditionalRenderNV_remap_index }, - { 25378, EndConditionalRenderNV_remap_index }, - { 9280, BeginTransformFeedbackEXT_remap_index }, - { 18938, BindBufferBaseEXT_remap_index }, - { 18797, BindBufferOffsetEXT_remap_index }, - { 12247, BindBufferRangeEXT_remap_index }, - { 14244, EndTransformFeedbackEXT_remap_index }, - { 10791, GetTransformFeedbackVaryingEXT_remap_index }, - { 20741, TransformFeedbackVaryingsEXT_remap_index }, - { 29551, ProvokingVertexEXT_remap_index }, - { 10739, GetTexParameterPointervAPPLE_remap_index }, - { 5034, TextureRangeAPPLE_remap_index }, - { 11606, GetObjectParameterivAPPLE_remap_index }, - { 19863, ObjectPurgeableAPPLE_remap_index }, - { 5689, ObjectUnpurgeableAPPLE_remap_index }, - { 17247, ActiveProgramEXT_remap_index }, - { 17218, CreateShaderProgramEXT_remap_index }, - { 28569, UseShaderProgramEXT_remap_index }, - { 16463, TextureBarrierNV_remap_index }, - { 28810, StencilFuncSeparateATI_remap_index }, - { 18090, ProgramEnvParameters4fvEXT_remap_index }, - { 17112, ProgramLocalParameters4fvEXT_remap_index }, - { 14112, GetQueryObjecti64vEXT_remap_index }, - { 10341, GetQueryObjectui64vEXT_remap_index }, - { 23792, EGLImageTargetRenderbufferStorageOES_remap_index }, - { 12126, EGLImageTargetTexture2DOES_remap_index }, + { 24171, VertexAttribI2ivEXT_remap_index }, + { 5323, VertexAttribI2uiEXT_remap_index }, + { 4749, VertexAttribI2uivEXT_remap_index }, + { 26914, VertexAttribI3iEXT_remap_index }, + { 25373, VertexAttribI3ivEXT_remap_index }, + { 3340, VertexAttribI3uiEXT_remap_index }, + { 30772, VertexAttribI3uivEXT_remap_index }, + { 22256, VertexAttribI4bvEXT_remap_index }, + { 14764, VertexAttribI4iEXT_remap_index }, + { 32446, VertexAttribI4ivEXT_remap_index }, + { 13490, VertexAttribI4svEXT_remap_index }, + { 16679, VertexAttribI4ubvEXT_remap_index }, + { 16325, VertexAttribI4uiEXT_remap_index }, + { 5469, VertexAttribI4uivEXT_remap_index }, + { 11391, VertexAttribI4usvEXT_remap_index }, + { 18747, VertexAttribIPointerEXT_remap_index }, + { 3027, FramebufferTextureLayerEXT_remap_index }, + { 5745, ColorMaskIndexedEXT_remap_index }, + { 19183, DisableIndexedEXT_remap_index }, + { 26959, EnableIndexedEXT_remap_index }, + { 21960, GetBooleanIndexedvEXT_remap_index }, + { 11002, GetIntegerIndexedvEXT_remap_index }, + { 23032, IsEnabledIndexedEXT_remap_index }, + { 22932, ClearColorIiEXT_remap_index }, + { 3436, ClearColorIuiEXT_remap_index }, + { 9917, GetTexParameterIivEXT_remap_index }, + { 5993, GetTexParameterIuivEXT_remap_index }, + { 2983, TexParameterIivEXT_remap_index }, + { 26781, TexParameterIuivEXT_remap_index }, + { 4617, BeginConditionalRenderNV_remap_index }, + { 25759, EndConditionalRenderNV_remap_index }, + { 9354, BeginTransformFeedbackEXT_remap_index }, + { 19218, BindBufferBaseEXT_remap_index }, + { 19077, BindBufferOffsetEXT_remap_index }, + { 12303, BindBufferRangeEXT_remap_index }, + { 14386, EndTransformFeedbackEXT_remap_index }, + { 10865, GetTransformFeedbackVaryingEXT_remap_index }, + { 21049, TransformFeedbackVaryingsEXT_remap_index }, + { 29928, ProvokingVertexEXT_remap_index }, + { 10813, GetTexParameterPointervAPPLE_remap_index }, + { 5097, TextureRangeAPPLE_remap_index }, + { 11680, GetObjectParameterivAPPLE_remap_index }, + { 20171, ObjectPurgeableAPPLE_remap_index }, + { 5787, ObjectUnpurgeableAPPLE_remap_index }, + { 17475, ActiveProgramEXT_remap_index }, + { 17446, CreateShaderProgramEXT_remap_index }, + { 28896, UseShaderProgramEXT_remap_index }, + { 16632, TextureBarrierNV_remap_index }, + { 29137, StencilFuncSeparateATI_remap_index }, + { 5658, ProgramEnvParameters4fvEXT_remap_index }, + { 17340, ProgramLocalParameters4fvEXT_remap_index }, + { 14239, GetQueryObjecti64vEXT_remap_index }, + { 10415, GetQueryObjectui64vEXT_remap_index }, + { 24128, EGLImageTargetRenderbufferStorageOES_remap_index }, + { 12192, EGLImageTargetTexture2DOES_remap_index }, { -1, -1 } }; /* these functions are in the ABI, but have alternative names */ static const struct gl_function_remap MESA_alt_functions[] = { /* from GL_EXT_blend_color */ - { 2694, _gloffset_BlendColor }, + { 2655, _gloffset_BlendColor }, /* from GL_EXT_blend_minmax */ - { 11211, _gloffset_BlendEquation }, + { 11285, _gloffset_BlendEquation }, /* from GL_EXT_color_subtable */ - { 17010, _gloffset_ColorSubTable }, - { 31688, _gloffset_CopyColorSubTable }, + { 17238, _gloffset_ColorSubTable }, + { 32109, _gloffset_CopyColorSubTable }, /* from GL_EXT_convolution */ - { 296, _gloffset_ConvolutionFilter1D }, - { 2493, _gloffset_CopyConvolutionFilter1D }, - { 4097, _gloffset_GetConvolutionParameteriv }, - { 8493, _gloffset_ConvolutionFilter2D }, - { 8695, _gloffset_ConvolutionParameteriv }, - { 9155, _gloffset_ConvolutionParameterfv }, - { 20584, _gloffset_GetSeparableFilter }, - { 24067, _gloffset_SeparableFilter2D }, - { 24930, _gloffset_ConvolutionParameteri }, - { 25053, _gloffset_ConvolutionParameterf }, - { 26757, _gloffset_GetConvolutionParameterfv }, - { 27646, _gloffset_GetConvolutionFilter }, - { 30091, _gloffset_CopyConvolutionFilter2D }, + { 257, _gloffset_ConvolutionFilter1D }, + { 2454, _gloffset_CopyConvolutionFilter1D }, + { 4058, _gloffset_GetConvolutionParameteriv }, + { 8567, _gloffset_ConvolutionFilter2D }, + { 8769, _gloffset_ConvolutionParameteriv }, + { 9229, _gloffset_ConvolutionParameterfv }, + { 20892, _gloffset_GetSeparableFilter }, + { 24403, _gloffset_SeparableFilter2D }, + { 25266, _gloffset_ConvolutionParameteri }, + { 25434, _gloffset_ConvolutionParameterf }, + { 27148, _gloffset_GetConvolutionParameterfv }, + { 28005, _gloffset_GetConvolutionFilter }, + { 30468, _gloffset_CopyConvolutionFilter2D }, /* from GL_EXT_copy_texture */ - { 15103, _gloffset_CopyTexSubImage3D }, - { 16697, _gloffset_CopyTexImage2D }, - { 24538, _gloffset_CopyTexImage1D }, - { 27327, _gloffset_CopyTexSubImage2D }, - { 29729, _gloffset_CopyTexSubImage1D }, + { 15245, _gloffset_CopyTexSubImage3D }, + { 16925, _gloffset_CopyTexImage2D }, + { 24874, _gloffset_CopyTexImage1D }, + { 27686, _gloffset_CopyTexSubImage2D }, + { 30106, _gloffset_CopyTexSubImage1D }, /* from GL_EXT_draw_range_elements */ - { 9492, _gloffset_DrawRangeElements }, + { 9566, _gloffset_DrawRangeElements }, /* from GL_EXT_histogram */ - { 895, _gloffset_Histogram }, - { 3561, _gloffset_ResetHistogram }, - { 9989, _gloffset_GetMinmax }, - { 15437, _gloffset_GetHistogramParameterfv }, - { 24463, _gloffset_GetMinmaxParameteriv }, - { 26647, _gloffset_ResetMinmax }, - { 27543, _gloffset_GetHistogramParameteriv }, - { 28744, _gloffset_GetHistogram }, - { 31313, _gloffset_Minmax }, - { 32853, _gloffset_GetMinmaxParameterfv }, + { 856, _gloffset_Histogram }, + { 3522, _gloffset_ResetHistogram }, + { 10063, _gloffset_GetMinmax }, + { 15579, _gloffset_GetHistogramParameterfv }, + { 24799, _gloffset_GetMinmaxParameteriv }, + { 27038, _gloffset_ResetMinmax }, + { 27902, _gloffset_GetHistogramParameteriv }, + { 29071, _gloffset_GetHistogram }, + { 31695, _gloffset_Minmax }, + { 33241, _gloffset_GetMinmaxParameterfv }, /* from GL_EXT_paletted_texture */ - { 8355, _gloffset_ColorTable }, - { 15283, _gloffset_GetColorTable }, - { 22982, _gloffset_GetColorTableParameterfv }, - { 25109, _gloffset_GetColorTableParameteriv }, + { 8429, _gloffset_ColorTable }, + { 15425, _gloffset_GetColorTable }, + { 23318, _gloffset_GetColorTableParameterfv }, + { 25490, _gloffset_GetColorTableParameteriv }, /* from GL_EXT_subtexture */ - { 7076, _gloffset_TexSubImage1D }, - { 10666, _gloffset_TexSubImage2D }, + { 7174, _gloffset_TexSubImage1D }, + { 10740, _gloffset_TexSubImage2D }, /* from GL_EXT_texture3D */ - { 1813, _gloffset_TexImage3D }, - { 22751, _gloffset_TexSubImage3D }, + { 1774, _gloffset_TexImage3D }, + { 23087, _gloffset_TexSubImage3D }, /* from GL_EXT_texture_object */ - { 3329, _gloffset_PrioritizeTextures }, - { 7525, _gloffset_AreTexturesResident }, - { 13638, _gloffset_GenTextures }, - { 15769, _gloffset_DeleteTextures }, - { 19569, _gloffset_IsTexture }, - { 29794, _gloffset_BindTexture }, + { 3290, _gloffset_PrioritizeTextures }, + { 7623, _gloffset_AreTexturesResident }, + { 13694, _gloffset_GenTextures }, + { 15911, _gloffset_DeleteTextures }, + { 19859, _gloffset_IsTexture }, + { 30171, _gloffset_BindTexture }, /* from GL_EXT_vertex_array */ - { 24239, _gloffset_ArrayElement }, - { 30901, _gloffset_GetPointerv }, - { 32480, _gloffset_DrawArrays }, + { 24575, _gloffset_ArrayElement }, + { 31283, _gloffset_GetPointerv }, + { 32868, _gloffset_DrawArrays }, /* from GL_SGI_color_table */ - { 7643, _gloffset_ColorTableParameteriv }, - { 8355, _gloffset_ColorTable }, - { 15283, _gloffset_GetColorTable }, - { 15393, _gloffset_CopyColorTable }, - { 19430, _gloffset_ColorTableParameterfv }, - { 22982, _gloffset_GetColorTableParameterfv }, - { 25109, _gloffset_GetColorTableParameteriv }, + { 7741, _gloffset_ColorTableParameteriv }, + { 8429, _gloffset_ColorTable }, + { 15425, _gloffset_GetColorTable }, + { 15535, _gloffset_CopyColorTable }, + { 19720, _gloffset_ColorTableParameterfv }, + { 23318, _gloffset_GetColorTableParameterfv }, + { 25490, _gloffset_GetColorTableParameteriv }, /* from GL_VERSION_1_3 */ - { 464, _gloffset_MultiTexCoord3sARB }, - { 696, _gloffset_ActiveTextureARB }, - { 4234, _gloffset_MultiTexCoord1fvARB }, - { 6142, _gloffset_MultiTexCoord3dARB }, - { 6187, _gloffset_MultiTexCoord2iARB }, - { 6311, _gloffset_MultiTexCoord2svARB }, - { 8311, _gloffset_MultiTexCoord2fARB }, - { 10371, _gloffset_MultiTexCoord3fvARB }, - { 10973, _gloffset_MultiTexCoord4sARB }, - { 11654, _gloffset_MultiTexCoord2dvARB }, - { 12069, _gloffset_MultiTexCoord1svARB }, - { 12480, _gloffset_MultiTexCoord3svARB }, - { 12541, _gloffset_MultiTexCoord4iARB }, - { 13342, _gloffset_MultiTexCoord3iARB }, - { 14141, _gloffset_MultiTexCoord1dARB }, - { 14358, _gloffset_MultiTexCoord3dvARB }, - { 15637, _gloffset_MultiTexCoord3ivARB }, - { 15682, _gloffset_MultiTexCoord2sARB }, - { 17067, _gloffset_MultiTexCoord4ivARB }, - { 19080, _gloffset_ClientActiveTextureARB }, - { 21380, _gloffset_MultiTexCoord2dARB }, - { 21817, _gloffset_MultiTexCoord4dvARB }, - { 22173, _gloffset_MultiTexCoord4fvARB }, - { 23123, _gloffset_MultiTexCoord3fARB }, - { 25693, _gloffset_MultiTexCoord4dARB }, - { 25959, _gloffset_MultiTexCoord1sARB }, - { 26163, _gloffset_MultiTexCoord1dvARB }, - { 27171, _gloffset_MultiTexCoord1ivARB }, - { 27264, _gloffset_MultiTexCoord2ivARB }, - { 27603, _gloffset_MultiTexCoord1iARB }, - { 29019, _gloffset_MultiTexCoord4svARB }, - { 29593, _gloffset_MultiTexCoord1fARB }, - { 29856, _gloffset_MultiTexCoord4fARB }, - { 32314, _gloffset_MultiTexCoord2fvARB }, + { 425, _gloffset_MultiTexCoord3sARB }, + { 657, _gloffset_ActiveTextureARB }, + { 4268, _gloffset_MultiTexCoord1fvARB }, + { 6240, _gloffset_MultiTexCoord3dARB }, + { 6285, _gloffset_MultiTexCoord2iARB }, + { 6409, _gloffset_MultiTexCoord2svARB }, + { 8385, _gloffset_MultiTexCoord2fARB }, + { 10445, _gloffset_MultiTexCoord3fvARB }, + { 11047, _gloffset_MultiTexCoord4sARB }, + { 11728, _gloffset_MultiTexCoord2dvARB }, + { 12135, _gloffset_MultiTexCoord1svARB }, + { 12536, _gloffset_MultiTexCoord3svARB }, + { 12597, _gloffset_MultiTexCoord4iARB }, + { 13398, _gloffset_MultiTexCoord3iARB }, + { 14268, _gloffset_MultiTexCoord1dARB }, + { 14500, _gloffset_MultiTexCoord3dvARB }, + { 15779, _gloffset_MultiTexCoord3ivARB }, + { 15824, _gloffset_MultiTexCoord2sARB }, + { 17295, _gloffset_MultiTexCoord4ivARB }, + { 19360, _gloffset_ClientActiveTextureARB }, + { 21688, _gloffset_MultiTexCoord2dARB }, + { 22125, _gloffset_MultiTexCoord4dvARB }, + { 22481, _gloffset_MultiTexCoord4fvARB }, + { 23459, _gloffset_MultiTexCoord3fARB }, + { 26084, _gloffset_MultiTexCoord4dARB }, + { 26350, _gloffset_MultiTexCoord1sARB }, + { 26554, _gloffset_MultiTexCoord1dvARB }, + { 27530, _gloffset_MultiTexCoord1ivARB }, + { 27623, _gloffset_MultiTexCoord2ivARB }, + { 27962, _gloffset_MultiTexCoord1iARB }, + { 29346, _gloffset_MultiTexCoord4svARB }, + { 29970, _gloffset_MultiTexCoord1fARB }, + { 30233, _gloffset_MultiTexCoord4fARB }, + { 32702, _gloffset_MultiTexCoord2fvARB }, { -1, -1 } }; @@ -5384,7 +5464,7 @@ static const struct gl_function_remap MESA_alt_functions[] = { #if defined(need_GL_3DFX_tbuffer) static const struct gl_function_remap GL_3DFX_tbuffer_functions[] = { - { 9213, -1 }, /* TbufferMask3DFX */ + { 9287, -1 }, /* TbufferMask3DFX */ { -1, -1 } }; #endif @@ -5424,6 +5504,13 @@ static const struct gl_function_remap GL_ARB_ES2_compatibility_functions[] = { }; #endif +#if defined(need_GL_ARB_color_buffer_float) +/* functions defined in MESA_remap_table_functions are excluded */ +static const struct gl_function_remap GL_ARB_color_buffer_float_functions[] = { + { -1, -1 } +}; +#endif + #if defined(need_GL_ARB_copy_buffer) /* functions defined in MESA_remap_table_functions are excluded */ static const struct gl_function_remap GL_ARB_copy_buffer_functions[] = { @@ -5469,7 +5556,7 @@ static const struct gl_function_remap GL_ARB_framebuffer_object_functions[] = { #if defined(need_GL_ARB_geometry_shader4) /* functions defined in MESA_remap_table_functions are excluded */ static const struct gl_function_remap GL_ARB_geometry_shader4_functions[] = { - { 12444, -1 }, /* FramebufferTextureLayer */ + { 12500, -1 }, /* FramebufferTextureLayer */ { -1, -1 } }; #endif @@ -5490,11 +5577,11 @@ static const struct gl_function_remap GL_ARB_map_buffer_range_functions[] = { #if defined(need_GL_ARB_matrix_palette) static const struct gl_function_remap GL_ARB_matrix_palette_functions[] = { - { 3812, -1 }, /* MatrixIndexusvARB */ - { 13163, -1 }, /* MatrixIndexuivARB */ - { 14513, -1 }, /* MatrixIndexPointerARB */ - { 19818, -1 }, /* CurrentPaletteMatrixARB */ - { 22867, -1 }, /* MatrixIndexubvARB */ + { 3773, -1 }, /* MatrixIndexusvARB */ + { 13219, -1 }, /* MatrixIndexuivARB */ + { 14655, -1 }, /* MatrixIndexPointerARB */ + { 20126, -1 }, /* CurrentPaletteMatrixARB */ + { 23203, -1 }, /* MatrixIndexubvARB */ { -1, -1 } }; #endif @@ -5527,6 +5614,13 @@ static const struct gl_function_remap GL_ARB_provoking_vertex_functions[] = { }; #endif +#if defined(need_GL_ARB_sampler_objects) +/* functions defined in MESA_remap_table_functions are excluded */ +static const struct gl_function_remap GL_ARB_sampler_objects_functions[] = { + { -1, -1 } +}; +#endif + #if defined(need_GL_ARB_shader_objects) /* functions defined in MESA_remap_table_functions are excluded */ static const struct gl_function_remap GL_ARB_shader_objects_functions[] = { @@ -5541,6 +5635,13 @@ static const struct gl_function_remap GL_ARB_sync_functions[] = { }; #endif +#if defined(need_GL_ARB_texture_buffer_object) +/* functions defined in MESA_remap_table_functions are excluded */ +static const struct gl_function_remap GL_ARB_texture_buffer_object_functions[] = { + { -1, -1 } +}; +#endif + #if defined(need_GL_ARB_texture_compression) /* functions defined in MESA_remap_table_functions are excluded */ static const struct gl_function_remap GL_ARB_texture_compression_functions[] = { @@ -5571,16 +5672,16 @@ static const struct gl_function_remap GL_ARB_vertex_array_object_functions[] = { #if defined(need_GL_ARB_vertex_blend) static const struct gl_function_remap GL_ARB_vertex_blend_functions[] = { - { 2435, -1 }, /* WeightubvARB */ - { 6554, -1 }, /* WeightivARB */ - { 11076, -1 }, /* WeightPointerARB */ - { 13898, -1 }, /* WeightfvARB */ - { 17586, -1 }, /* WeightbvARB */ - { 21048, -1 }, /* WeightusvARB */ - { 23993, -1 }, /* VertexBlendARB */ - { 29677, -1 }, /* WeightsvARB */ - { 31738, -1 }, /* WeightdvARB */ - { 32514, -1 }, /* WeightuivARB */ + { 2396, -1 }, /* WeightubvARB */ + { 6652, -1 }, /* WeightivARB */ + { 11150, -1 }, /* WeightPointerARB */ + { 13986, -1 }, /* WeightfvARB */ + { 17814, -1 }, /* WeightbvARB */ + { 21356, -1 }, /* WeightusvARB */ + { 24329, -1 }, /* VertexBlendARB */ + { 30054, -1 }, /* WeightsvARB */ + { 32159, -1 }, /* WeightdvARB */ + { 32902, -1 }, /* WeightuivARB */ { -1, -1 } }; #endif @@ -5650,7 +5751,7 @@ static const struct gl_function_remap GL_ATI_separate_stencil_functions[] = { #if defined(need_GL_EXT_blend_color) static const struct gl_function_remap GL_EXT_blend_color_functions[] = { - { 2694, _gloffset_BlendColor }, + { 2655, _gloffset_BlendColor }, { -1, -1 } }; #endif @@ -5671,15 +5772,15 @@ static const struct gl_function_remap GL_EXT_blend_func_separate_functions[] = { #if defined(need_GL_EXT_blend_minmax) static const struct gl_function_remap GL_EXT_blend_minmax_functions[] = { - { 11211, _gloffset_BlendEquation }, + { 11285, _gloffset_BlendEquation }, { -1, -1 } }; #endif #if defined(need_GL_EXT_color_subtable) static const struct gl_function_remap GL_EXT_color_subtable_functions[] = { - { 17010, _gloffset_ColorSubTable }, - { 31688, _gloffset_CopyColorSubTable }, + { 17238, _gloffset_ColorSubTable }, + { 32109, _gloffset_CopyColorSubTable }, { -1, -1 } }; #endif @@ -5693,66 +5794,66 @@ static const struct gl_function_remap GL_EXT_compiled_vertex_array_functions[] = #if defined(need_GL_EXT_convolution) static const struct gl_function_remap GL_EXT_convolution_functions[] = { - { 296, _gloffset_ConvolutionFilter1D }, - { 2493, _gloffset_CopyConvolutionFilter1D }, - { 4097, _gloffset_GetConvolutionParameteriv }, - { 8493, _gloffset_ConvolutionFilter2D }, - { 8695, _gloffset_ConvolutionParameteriv }, - { 9155, _gloffset_ConvolutionParameterfv }, - { 20584, _gloffset_GetSeparableFilter }, - { 24067, _gloffset_SeparableFilter2D }, - { 24930, _gloffset_ConvolutionParameteri }, - { 25053, _gloffset_ConvolutionParameterf }, - { 26757, _gloffset_GetConvolutionParameterfv }, - { 27646, _gloffset_GetConvolutionFilter }, - { 30091, _gloffset_CopyConvolutionFilter2D }, + { 257, _gloffset_ConvolutionFilter1D }, + { 2454, _gloffset_CopyConvolutionFilter1D }, + { 4058, _gloffset_GetConvolutionParameteriv }, + { 8567, _gloffset_ConvolutionFilter2D }, + { 8769, _gloffset_ConvolutionParameteriv }, + { 9229, _gloffset_ConvolutionParameterfv }, + { 20892, _gloffset_GetSeparableFilter }, + { 24403, _gloffset_SeparableFilter2D }, + { 25266, _gloffset_ConvolutionParameteri }, + { 25434, _gloffset_ConvolutionParameterf }, + { 27148, _gloffset_GetConvolutionParameterfv }, + { 28005, _gloffset_GetConvolutionFilter }, + { 30468, _gloffset_CopyConvolutionFilter2D }, { -1, -1 } }; #endif #if defined(need_GL_EXT_coordinate_frame) static const struct gl_function_remap GL_EXT_coordinate_frame_functions[] = { - { 10510, -1 }, /* TangentPointerEXT */ - { 12599, -1 }, /* Binormal3ivEXT */ - { 13295, -1 }, /* Tangent3sEXT */ - { 14578, -1 }, /* Tangent3fvEXT */ - { 18778, -1 }, /* Tangent3dvEXT */ - { 19516, -1 }, /* Binormal3bvEXT */ - { 20637, -1 }, /* Binormal3dEXT */ - { 22799, -1 }, /* Tangent3fEXT */ - { 25002, -1 }, /* Binormal3sEXT */ - { 25470, -1 }, /* Tangent3ivEXT */ - { 25489, -1 }, /* Tangent3dEXT */ - { 26436, -1 }, /* Binormal3svEXT */ - { 27069, -1 }, /* Binormal3fEXT */ - { 27957, -1 }, /* Binormal3dvEXT */ - { 29276, -1 }, /* Tangent3iEXT */ - { 30376, -1 }, /* Tangent3bvEXT */ - { 30936, -1 }, /* Tangent3bEXT */ - { 31461, -1 }, /* Binormal3fvEXT */ - { 32213, -1 }, /* BinormalPointerEXT */ - { 32618, -1 }, /* Tangent3svEXT */ - { 33055, -1 }, /* Binormal3bEXT */ - { 33232, -1 }, /* Binormal3iEXT */ + { 10584, -1 }, /* TangentPointerEXT */ + { 12655, -1 }, /* Binormal3ivEXT */ + { 13351, -1 }, /* Tangent3sEXT */ + { 14720, -1 }, /* Tangent3fvEXT */ + { 18831, -1 }, /* Tangent3ivEXT */ + { 19058, -1 }, /* Tangent3dvEXT */ + { 19806, -1 }, /* Binormal3bvEXT */ + { 20945, -1 }, /* Binormal3dEXT */ + { 23135, -1 }, /* Tangent3fEXT */ + { 25338, -1 }, /* Binormal3sEXT */ + { 25880, -1 }, /* Tangent3dEXT */ + { 26827, -1 }, /* Binormal3svEXT */ + { 27428, -1 }, /* Binormal3fEXT */ + { 28336, -1 }, /* Binormal3dvEXT */ + { 29603, -1 }, /* Tangent3iEXT */ + { 30753, -1 }, /* Tangent3bvEXT */ + { 31318, -1 }, /* Tangent3bEXT */ + { 31882, -1 }, /* Binormal3fvEXT */ + { 32601, -1 }, /* BinormalPointerEXT */ + { 33006, -1 }, /* Tangent3svEXT */ + { 33443, -1 }, /* Binormal3bEXT */ + { 33620, -1 }, /* Binormal3iEXT */ { -1, -1 } }; #endif #if defined(need_GL_EXT_copy_texture) static const struct gl_function_remap GL_EXT_copy_texture_functions[] = { - { 15103, _gloffset_CopyTexSubImage3D }, - { 16697, _gloffset_CopyTexImage2D }, - { 24538, _gloffset_CopyTexImage1D }, - { 27327, _gloffset_CopyTexSubImage2D }, - { 29729, _gloffset_CopyTexSubImage1D }, + { 15245, _gloffset_CopyTexSubImage3D }, + { 16925, _gloffset_CopyTexImage2D }, + { 24874, _gloffset_CopyTexImage1D }, + { 27686, _gloffset_CopyTexSubImage2D }, + { 30106, _gloffset_CopyTexSubImage1D }, { -1, -1 } }; #endif #if defined(need_GL_EXT_cull_vertex) static const struct gl_function_remap GL_EXT_cull_vertex_functions[] = { - { 8844, -1 }, /* CullParameterdvEXT */ - { 11699, -1 }, /* CullParameterfvEXT */ + { 8918, -1 }, /* CullParameterdvEXT */ + { 11773, -1 }, /* CullParameterfvEXT */ { -1, -1 } }; #endif @@ -5780,7 +5881,7 @@ static const struct gl_function_remap GL_EXT_draw_instanced_functions[] = { #if defined(need_GL_EXT_draw_range_elements) static const struct gl_function_remap GL_EXT_draw_range_elements_functions[] = { - { 9492, _gloffset_DrawRangeElements }, + { 9566, _gloffset_DrawRangeElements }, { -1, -1 } }; #endif @@ -5829,39 +5930,39 @@ static const struct gl_function_remap GL_EXT_gpu_shader4_functions[] = { #if defined(need_GL_EXT_histogram) static const struct gl_function_remap GL_EXT_histogram_functions[] = { - { 895, _gloffset_Histogram }, - { 3561, _gloffset_ResetHistogram }, - { 9989, _gloffset_GetMinmax }, - { 15437, _gloffset_GetHistogramParameterfv }, - { 24463, _gloffset_GetMinmaxParameteriv }, - { 26647, _gloffset_ResetMinmax }, - { 27543, _gloffset_GetHistogramParameteriv }, - { 28744, _gloffset_GetHistogram }, - { 31313, _gloffset_Minmax }, - { 32853, _gloffset_GetMinmaxParameterfv }, + { 856, _gloffset_Histogram }, + { 3522, _gloffset_ResetHistogram }, + { 10063, _gloffset_GetMinmax }, + { 15579, _gloffset_GetHistogramParameterfv }, + { 24799, _gloffset_GetMinmaxParameteriv }, + { 27038, _gloffset_ResetMinmax }, + { 27902, _gloffset_GetHistogramParameteriv }, + { 29071, _gloffset_GetHistogram }, + { 31695, _gloffset_Minmax }, + { 33241, _gloffset_GetMinmaxParameterfv }, { -1, -1 } }; #endif #if defined(need_GL_EXT_index_func) static const struct gl_function_remap GL_EXT_index_func_functions[] = { - { 11485, -1 }, /* IndexFuncEXT */ + { 11559, -1 }, /* IndexFuncEXT */ { -1, -1 } }; #endif #if defined(need_GL_EXT_index_material) static const struct gl_function_remap GL_EXT_index_material_functions[] = { - { 21135, -1 }, /* IndexMaterialEXT */ + { 21443, -1 }, /* IndexMaterialEXT */ { -1, -1 } }; #endif #if defined(need_GL_EXT_light_texture) static const struct gl_function_remap GL_EXT_light_texture_functions[] = { - { 26456, -1 }, /* ApplyTextureEXT */ - { 26601, -1 }, /* TextureMaterialEXT */ - { 26626, -1 }, /* TextureLightEXT */ + { 26847, -1 }, /* ApplyTextureEXT */ + { 26992, -1 }, /* TextureMaterialEXT */ + { 27017, -1 }, /* TextureLightEXT */ { -1, -1 } }; #endif @@ -5882,20 +5983,20 @@ static const struct gl_function_remap GL_EXT_multisample_functions[] = { #if defined(need_GL_EXT_paletted_texture) static const struct gl_function_remap GL_EXT_paletted_texture_functions[] = { - { 8355, _gloffset_ColorTable }, - { 15283, _gloffset_GetColorTable }, - { 22982, _gloffset_GetColorTableParameterfv }, - { 25109, _gloffset_GetColorTableParameteriv }, + { 8429, _gloffset_ColorTable }, + { 15425, _gloffset_GetColorTable }, + { 23318, _gloffset_GetColorTableParameterfv }, + { 25490, _gloffset_GetColorTableParameteriv }, { -1, -1 } }; #endif #if defined(need_GL_EXT_pixel_transform) static const struct gl_function_remap GL_EXT_pixel_transform_functions[] = { - { 21782, -1 }, /* PixelTransformParameterfEXT */ - { 21862, -1 }, /* PixelTransformParameteriEXT */ - { 30651, -1 }, /* PixelTransformParameterfvEXT */ - { 32177, -1 }, /* PixelTransformParameterivEXT */ + { 22090, -1 }, /* PixelTransformParameterfEXT */ + { 22170, -1 }, /* PixelTransformParameteriEXT */ + { 31033, -1 }, /* PixelTransformParameterfvEXT */ + { 32565, -1 }, /* PixelTransformParameterivEXT */ { -1, -1 } }; #endif @@ -5944,16 +6045,16 @@ static const struct gl_function_remap GL_EXT_stencil_two_side_functions[] = { #if defined(need_GL_EXT_subtexture) static const struct gl_function_remap GL_EXT_subtexture_functions[] = { - { 7076, _gloffset_TexSubImage1D }, - { 10666, _gloffset_TexSubImage2D }, + { 7174, _gloffset_TexSubImage1D }, + { 10740, _gloffset_TexSubImage2D }, { -1, -1 } }; #endif #if defined(need_GL_EXT_texture3D) static const struct gl_function_remap GL_EXT_texture3D_functions[] = { - { 1813, _gloffset_TexImage3D }, - { 22751, _gloffset_TexSubImage3D }, + { 1774, _gloffset_TexImage3D }, + { 23087, _gloffset_TexSubImage3D }, { -1, -1 } }; #endif @@ -5974,19 +6075,19 @@ static const struct gl_function_remap GL_EXT_texture_integer_functions[] = { #if defined(need_GL_EXT_texture_object) static const struct gl_function_remap GL_EXT_texture_object_functions[] = { - { 3329, _gloffset_PrioritizeTextures }, - { 7525, _gloffset_AreTexturesResident }, - { 13638, _gloffset_GenTextures }, - { 15769, _gloffset_DeleteTextures }, - { 19569, _gloffset_IsTexture }, - { 29794, _gloffset_BindTexture }, + { 3290, _gloffset_PrioritizeTextures }, + { 7623, _gloffset_AreTexturesResident }, + { 13694, _gloffset_GenTextures }, + { 15911, _gloffset_DeleteTextures }, + { 19859, _gloffset_IsTexture }, + { 30171, _gloffset_BindTexture }, { -1, -1 } }; #endif #if defined(need_GL_EXT_texture_perturb_normal) static const struct gl_function_remap GL_EXT_texture_perturb_normal_functions[] = { - { 13848, -1 }, /* TextureNormalEXT */ + { 13936, -1 }, /* TextureNormalEXT */ { -1, -1 } }; #endif @@ -6008,30 +6109,30 @@ static const struct gl_function_remap GL_EXT_transform_feedback_functions[] = { #if defined(need_GL_EXT_vertex_array) /* functions defined in MESA_remap_table_functions are excluded */ static const struct gl_function_remap GL_EXT_vertex_array_functions[] = { - { 24239, _gloffset_ArrayElement }, - { 30901, _gloffset_GetPointerv }, - { 32480, _gloffset_DrawArrays }, + { 24575, _gloffset_ArrayElement }, + { 31283, _gloffset_GetPointerv }, + { 32868, _gloffset_DrawArrays }, { -1, -1 } }; #endif #if defined(need_GL_EXT_vertex_weighting) static const struct gl_function_remap GL_EXT_vertex_weighting_functions[] = { - { 19599, -1 }, /* VertexWeightfvEXT */ - { 27012, -1 }, /* VertexWeightfEXT */ - { 28713, -1 }, /* VertexWeightPointerEXT */ + { 19907, -1 }, /* VertexWeightfvEXT */ + { 27371, -1 }, /* VertexWeightfEXT */ + { 29040, -1 }, /* VertexWeightPointerEXT */ { -1, -1 } }; #endif #if defined(need_GL_HP_image_transform) static const struct gl_function_remap GL_HP_image_transform_functions[] = { - { 2366, -1 }, /* GetImageTransformParameterfvHP */ - { 3778, -1 }, /* ImageTransformParameterfHP */ - { 10204, -1 }, /* ImageTransformParameterfvHP */ - { 11954, -1 }, /* ImageTransformParameteriHP */ - { 12334, -1 }, /* GetImageTransformParameterivHP */ - { 19663, -1 }, /* ImageTransformParameterivHP */ + { 2327, -1 }, /* GetImageTransformParameterfvHP */ + { 3739, -1 }, /* ImageTransformParameterfHP */ + { 10278, -1 }, /* ImageTransformParameterfvHP */ + { 12020, -1 }, /* ImageTransformParameteriHP */ + { 12390, -1 }, /* GetImageTransformParameterivHP */ + { 19971, -1 }, /* ImageTransformParameterivHP */ { -1, -1 } }; #endif @@ -6045,14 +6146,14 @@ static const struct gl_function_remap GL_IBM_multimode_draw_arrays_functions[] = #if defined(need_GL_IBM_vertex_array_lists) static const struct gl_function_remap GL_IBM_vertex_array_lists_functions[] = { - { 4366, -1 }, /* SecondaryColorPointerListIBM */ - { 6008, -1 }, /* NormalPointerListIBM */ - { 7699, -1 }, /* FogCoordPointerListIBM */ - { 8006, -1 }, /* VertexPointerListIBM */ - { 11875, -1 }, /* ColorPointerListIBM */ - { 13402, -1 }, /* TexCoordPointerListIBM */ - { 13870, -1 }, /* IndexPointerListIBM */ - { 32796, -1 }, /* EdgeFlagPointerListIBM */ + { 4400, -1 }, /* SecondaryColorPointerListIBM */ + { 6106, -1 }, /* NormalPointerListIBM */ + { 7797, -1 }, /* FogCoordPointerListIBM */ + { 8104, -1 }, /* VertexPointerListIBM */ + { 12274, -1 }, /* ColorPointerListIBM */ + { 13458, -1 }, /* TexCoordPointerListIBM */ + { 13958, -1 }, /* IndexPointerListIBM */ + { 33184, -1 }, /* EdgeFlagPointerListIBM */ { -1, -1 } }; #endif @@ -6066,10 +6167,10 @@ static const struct gl_function_remap GL_INGR_blend_func_separate_functions[] = #if defined(need_GL_INTEL_parallel_arrays) static const struct gl_function_remap GL_INTEL_parallel_arrays_functions[] = { - { 12742, -1 }, /* VertexPointervINTEL */ - { 15530, -1 }, /* ColorPointervINTEL */ - { 30065, -1 }, /* NormalPointervINTEL */ - { 30583, -1 }, /* TexCoordPointervINTEL */ + { 12798, -1 }, /* VertexPointervINTEL */ + { 15672, -1 }, /* ColorPointervINTEL */ + { 30442, -1 }, /* NormalPointervINTEL */ + { 30965, -1 }, /* TexCoordPointervINTEL */ { -1, -1 } }; #endif @@ -6083,10 +6184,10 @@ static const struct gl_function_remap GL_MESA_resize_buffers_functions[] = { #if defined(need_GL_MESA_shader_debug) static const struct gl_function_remap GL_MESA_shader_debug_functions[] = { - { 1677, -1 }, /* GetDebugLogLengthMESA */ - { 3500, -1 }, /* ClearDebugLogMESA */ - { 4527, -1 }, /* GetDebugLogMESA */ - { 31094, -1 }, /* CreateDebugObjectMESA */ + { 1638, -1 }, /* GetDebugLogLengthMESA */ + { 3461, -1 }, /* ClearDebugLogMESA */ + { 4561, -1 }, /* GetDebugLogMESA */ + { 31476, -1 }, /* CreateDebugObjectMESA */ { -1, -1 } }; #endif @@ -6107,15 +6208,15 @@ static const struct gl_function_remap GL_NV_condtitional_render_functions[] = { #if defined(need_GL_NV_evaluators) static const struct gl_function_remap GL_NV_evaluators_functions[] = { - { 6738, -1 }, /* GetMapAttribParameterivNV */ - { 8461, -1 }, /* MapControlPointsNV */ - { 8560, -1 }, /* MapParameterfvNV */ - { 10649, -1 }, /* EvalMapsNV */ - { 17184, -1 }, /* GetMapAttribParameterfvNV */ - { 17401, -1 }, /* MapParameterivNV */ - { 24853, -1 }, /* GetMapParameterivNV */ - { 25351, -1 }, /* GetMapParameterfvNV */ - { 29380, -1 }, /* GetMapControlPointsNV */ + { 6836, -1 }, /* GetMapAttribParameterivNV */ + { 8535, -1 }, /* MapControlPointsNV */ + { 8634, -1 }, /* MapParameterfvNV */ + { 10723, -1 }, /* EvalMapsNV */ + { 17412, -1 }, /* GetMapAttribParameterfvNV */ + { 17629, -1 }, /* MapParameterivNV */ + { 25189, -1 }, /* GetMapParameterivNV */ + { 25732, -1 }, /* GetMapParameterfvNV */ + { 29757, -1 }, /* GetMapControlPointsNV */ { -1, -1 } }; #endif @@ -6157,8 +6258,8 @@ static const struct gl_function_remap GL_NV_register_combiners_functions[] = { #if defined(need_GL_NV_register_combiners2) static const struct gl_function_remap GL_NV_register_combiners2_functions[] = { - { 15922, -1 }, /* CombinerStageParameterfvNV */ - { 16318, -1 }, /* GetCombinerStageParameterfvNV */ + { 16064, -1 }, /* CombinerStageParameterfvNV */ + { 16460, -1 }, /* GetCombinerStageParameterfvNV */ { -1, -1 } }; #endif @@ -6193,23 +6294,23 @@ static const struct gl_function_remap GL_OES_EGL_image_functions[] = { #if defined(need_GL_PGI_misc_hints) static const struct gl_function_remap GL_PGI_misc_hints_functions[] = { - { 8681, -1 }, /* HintPGI */ + { 8755, -1 }, /* HintPGI */ { -1, -1 } }; #endif #if defined(need_GL_SGIS_detail_texture) static const struct gl_function_remap GL_SGIS_detail_texture_functions[] = { - { 16291, -1 }, /* GetDetailTexFuncSGIS */ - { 16642, -1 }, /* DetailTexFuncSGIS */ + { 16433, -1 }, /* GetDetailTexFuncSGIS */ + { 16870, -1 }, /* DetailTexFuncSGIS */ { -1, -1 } }; #endif #if defined(need_GL_SGIS_fog_function) static const struct gl_function_remap GL_SGIS_fog_function_functions[] = { - { 27309, -1 }, /* FogFuncSGIS */ - { 28062, -1 }, /* GetFogFuncSGIS */ + { 27668, -1 }, /* FogFuncSGIS */ + { 28389, -1 }, /* GetFogFuncSGIS */ { -1, -1 } }; #endif @@ -6237,112 +6338,112 @@ static const struct gl_function_remap GL_SGIS_point_parameters_functions[] = { #if defined(need_GL_SGIS_sharpen_texture) static const struct gl_function_remap GL_SGIS_sharpen_texture_functions[] = { - { 6799, -1 }, /* GetSharpenTexFuncSGIS */ - { 22147, -1 }, /* SharpenTexFuncSGIS */ + { 6897, -1 }, /* GetSharpenTexFuncSGIS */ + { 22455, -1 }, /* SharpenTexFuncSGIS */ { -1, -1 } }; #endif #if defined(need_GL_SGIS_texture4D) static const struct gl_function_remap GL_SGIS_texture4D_functions[] = { - { 1049, -1 }, /* TexImage4DSGIS */ - { 15838, -1 }, /* TexSubImage4DSGIS */ + { 1010, -1 }, /* TexImage4DSGIS */ + { 15980, -1 }, /* TexSubImage4DSGIS */ { -1, -1 } }; #endif #if defined(need_GL_SGIS_texture_color_mask) static const struct gl_function_remap GL_SGIS_texture_color_mask_functions[] = { - { 15236, -1 }, /* TextureColorMaskSGIS */ + { 15378, -1 }, /* TextureColorMaskSGIS */ { -1, -1 } }; #endif #if defined(need_GL_SGIS_texture_filter4) static const struct gl_function_remap GL_SGIS_texture_filter4_functions[] = { - { 6976, -1 }, /* GetTexFilterFuncSGIS */ - { 16437, -1 }, /* TexFilterFuncSGIS */ + { 7074, -1 }, /* GetTexFilterFuncSGIS */ + { 16606, -1 }, /* TexFilterFuncSGIS */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_async) static const struct gl_function_remap GL_SGIX_async_functions[] = { - { 3426, -1 }, /* AsyncMarkerSGIX */ - { 4506, -1 }, /* FinishAsyncSGIX */ - { 5495, -1 }, /* PollAsyncSGIX */ - { 22328, -1 }, /* DeleteAsyncMarkersSGIX */ - { 22383, -1 }, /* IsAsyncMarkerSGIX */ - { 32593, -1 }, /* GenAsyncMarkersSGIX */ + { 3387, -1 }, /* AsyncMarkerSGIX */ + { 4540, -1 }, /* FinishAsyncSGIX */ + { 5516, -1 }, /* PollAsyncSGIX */ + { 22664, -1 }, /* DeleteAsyncMarkersSGIX */ + { 22719, -1 }, /* IsAsyncMarkerSGIX */ + { 32981, -1 }, /* GenAsyncMarkersSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_flush_raster) static const struct gl_function_remap GL_SGIX_flush_raster_functions[] = { - { 7353, -1 }, /* FlushRasterSGIX */ + { 7451, -1 }, /* FlushRasterSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_fragment_lighting) static const struct gl_function_remap GL_SGIX_fragment_lighting_functions[] = { - { 2664, -1 }, /* FragmentMaterialfvSGIX */ - { 5399, -1 }, /* FragmentLightiSGIX */ - { 8073, -1 }, /* FragmentMaterialfSGIX */ - { 8234, -1 }, /* GetFragmentLightivSGIX */ - { 9107, -1 }, /* FragmentLightModeliSGIX */ - { 10712, -1 }, /* FragmentLightivSGIX */ - { 11019, -1 }, /* GetFragmentMaterialivSGIX */ - { 16231, -1 }, /* GetFragmentMaterialfvSGIX */ - { 19486, -1 }, /* FragmentLightModelfSGIX */ - { 19786, -1 }, /* FragmentColorMaterialSGIX */ - { 20203, -1 }, /* FragmentMaterialiSGIX */ - { 21463, -1 }, /* LightEnviSGIX */ - { 23074, -1 }, /* FragmentLightModelfvSGIX */ - { 23409, -1 }, /* FragmentLightfvSGIX */ - { 28446, -1 }, /* FragmentLightModelivSGIX */ - { 28595, -1 }, /* FragmentLightfSGIX */ - { 31431, -1 }, /* GetFragmentLightfvSGIX */ - { 33076, -1 }, /* FragmentMaterialivSGIX */ + { 2625, -1 }, /* FragmentMaterialfvSGIX */ + { 5420, -1 }, /* FragmentLightiSGIX */ + { 8171, -1 }, /* FragmentMaterialfSGIX */ + { 8308, -1 }, /* GetFragmentLightivSGIX */ + { 9181, -1 }, /* FragmentLightModeliSGIX */ + { 10786, -1 }, /* FragmentLightivSGIX */ + { 11093, -1 }, /* GetFragmentMaterialivSGIX */ + { 16373, -1 }, /* GetFragmentMaterialfvSGIX */ + { 19776, -1 }, /* FragmentLightModelfSGIX */ + { 20094, -1 }, /* FragmentColorMaterialSGIX */ + { 20511, -1 }, /* FragmentMaterialiSGIX */ + { 21771, -1 }, /* LightEnviSGIX */ + { 23410, -1 }, /* FragmentLightModelfvSGIX */ + { 23745, -1 }, /* FragmentLightfvSGIX */ + { 28773, -1 }, /* FragmentLightModelivSGIX */ + { 28922, -1 }, /* FragmentLightfSGIX */ + { 31852, -1 }, /* GetFragmentLightfvSGIX */ + { 33464, -1 }, /* FragmentMaterialivSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_framezoom) static const struct gl_function_remap GL_SGIX_framezoom_functions[] = { - { 22406, -1 }, /* FrameZoomSGIX */ + { 22742, -1 }, /* FrameZoomSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_igloo_interface) static const struct gl_function_remap GL_SGIX_igloo_interface_functions[] = { - { 28903, -1 }, /* IglooInterfaceSGIX */ + { 29230, -1 }, /* IglooInterfaceSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_instruments) static const struct gl_function_remap GL_SGIX_instruments_functions[] = { - { 2844, -1 }, /* ReadInstrumentsSGIX */ - { 6572, -1 }, /* PollInstrumentsSGIX */ - { 10570, -1 }, /* GetInstrumentsSGIX */ - { 13000, -1 }, /* StartInstrumentsSGIX */ - { 15956, -1 }, /* StopInstrumentsSGIX */ - { 17823, -1 }, /* InstrumentsBufferSGIX */ + { 2805, -1 }, /* ReadInstrumentsSGIX */ + { 6670, -1 }, /* PollInstrumentsSGIX */ + { 10644, -1 }, /* GetInstrumentsSGIX */ + { 13056, -1 }, /* StartInstrumentsSGIX */ + { 16098, -1 }, /* StopInstrumentsSGIX */ + { 18051, -1 }, /* InstrumentsBufferSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_list_priority) static const struct gl_function_remap GL_SGIX_list_priority_functions[] = { - { 1280, -1 }, /* ListParameterfSGIX */ - { 3128, -1 }, /* GetListParameterfvSGIX */ - { 17714, -1 }, /* ListParameteriSGIX */ - { 18728, -1 }, /* ListParameterfvSGIX */ - { 20869, -1 }, /* ListParameterivSGIX */ - { 32637, -1 }, /* GetListParameterivSGIX */ + { 1241, -1 }, /* ListParameterfSGIX */ + { 3089, -1 }, /* GetListParameterfvSGIX */ + { 17942, -1 }, /* ListParameteriSGIX */ + { 19008, -1 }, /* ListParameterfvSGIX */ + { 21177, -1 }, /* ListParameterivSGIX */ + { 33025, -1 }, /* GetListParameterivSGIX */ { -1, -1 } }; #endif @@ -6356,134 +6457,134 @@ static const struct gl_function_remap GL_SGIX_pixel_texture_functions[] = { #if defined(need_GL_SGIX_polynomial_ffd) static const struct gl_function_remap GL_SGIX_polynomial_ffd_functions[] = { - { 3724, -1 }, /* LoadIdentityDeformationMapSGIX */ - { 12208, -1 }, /* DeformationMap3dSGIX */ - { 16056, -1 }, /* DeformSGIX */ - { 24351, -1 }, /* DeformationMap3fSGIX */ + { 3685, -1 }, /* LoadIdentityDeformationMapSGIX */ + { 16198, -1 }, /* DeformSGIX */ + { 24687, -1 }, /* DeformationMap3fSGIX */ + { 31740, -1 }, /* DeformationMap3dSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_reference_plane) static const struct gl_function_remap GL_SGIX_reference_plane_functions[] = { - { 14787, -1 }, /* ReferencePlaneSGIX */ + { 14929, -1 }, /* ReferencePlaneSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_sprite) static const struct gl_function_remap GL_SGIX_sprite_functions[] = { - { 9605, -1 }, /* SpriteParameterfvSGIX */ - { 20658, -1 }, /* SpriteParameteriSGIX */ - { 26681, -1 }, /* SpriteParameterfSGIX */ - { 29523, -1 }, /* SpriteParameterivSGIX */ + { 9679, -1 }, /* SpriteParameterfvSGIX */ + { 20966, -1 }, /* SpriteParameteriSGIX */ + { 27072, -1 }, /* SpriteParameterfSGIX */ + { 29900, -1 }, /* SpriteParameterivSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_tag_sample_buffer) static const struct gl_function_remap GL_SGIX_tag_sample_buffer_functions[] = { - { 20717, -1 }, /* TagSampleBufferSGIX */ + { 21025, -1 }, /* TagSampleBufferSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGI_color_table) static const struct gl_function_remap GL_SGI_color_table_functions[] = { - { 7643, _gloffset_ColorTableParameteriv }, - { 8355, _gloffset_ColorTable }, - { 15283, _gloffset_GetColorTable }, - { 15393, _gloffset_CopyColorTable }, - { 19430, _gloffset_ColorTableParameterfv }, - { 22982, _gloffset_GetColorTableParameterfv }, - { 25109, _gloffset_GetColorTableParameteriv }, + { 7741, _gloffset_ColorTableParameteriv }, + { 8429, _gloffset_ColorTable }, + { 15425, _gloffset_GetColorTable }, + { 15535, _gloffset_CopyColorTable }, + { 19720, _gloffset_ColorTableParameterfv }, + { 23318, _gloffset_GetColorTableParameterfv }, + { 25490, _gloffset_GetColorTableParameteriv }, { -1, -1 } }; #endif #if defined(need_GL_SUNX_constant_data) static const struct gl_function_remap GL_SUNX_constant_data_functions[] = { - { 31409, -1 }, /* FinishTextureSUNX */ + { 31830, -1 }, /* FinishTextureSUNX */ { -1, -1 } }; #endif #if defined(need_GL_SUN_global_alpha) static const struct gl_function_remap GL_SUN_global_alpha_functions[] = { - { 3447, -1 }, /* GlobalAlphaFactorubSUN */ - { 4805, -1 }, /* GlobalAlphaFactoriSUN */ - { 6597, -1 }, /* GlobalAlphaFactordSUN */ - { 9689, -1 }, /* GlobalAlphaFactoruiSUN */ - { 10161, -1 }, /* GlobalAlphaFactorbSUN */ - { 13315, -1 }, /* GlobalAlphaFactorfSUN */ - { 13479, -1 }, /* GlobalAlphaFactorusSUN */ - { 22669, -1 }, /* GlobalAlphaFactorsSUN */ + { 3408, -1 }, /* GlobalAlphaFactorubSUN */ + { 4868, -1 }, /* GlobalAlphaFactoriSUN */ + { 6695, -1 }, /* GlobalAlphaFactordSUN */ + { 9763, -1 }, /* GlobalAlphaFactoruiSUN */ + { 10235, -1 }, /* GlobalAlphaFactorbSUN */ + { 13371, -1 }, /* GlobalAlphaFactorfSUN */ + { 13535, -1 }, /* GlobalAlphaFactorusSUN */ + { 23005, -1 }, /* GlobalAlphaFactorsSUN */ { -1, -1 } }; #endif #if defined(need_GL_SUN_mesh_array) static const struct gl_function_remap GL_SUN_mesh_array_functions[] = { - { 29314, -1 }, /* DrawMeshArraysSUN */ + { 29691, -1 }, /* DrawMeshArraysSUN */ { -1, -1 } }; #endif #if defined(need_GL_SUN_triangle_list) static const struct gl_function_remap GL_SUN_triangle_list_functions[] = { - { 4480, -1 }, /* ReplacementCodeubSUN */ - { 6356, -1 }, /* ReplacementCodeubvSUN */ - { 19151, -1 }, /* ReplacementCodeusvSUN */ - { 19339, -1 }, /* ReplacementCodePointerSUN */ - { 21527, -1 }, /* ReplacementCodeuiSUN */ - { 22357, -1 }, /* ReplacementCodeusSUN */ - { 29980, -1 }, /* ReplacementCodeuivSUN */ + { 4514, -1 }, /* ReplacementCodeubSUN */ + { 6454, -1 }, /* ReplacementCodeubvSUN */ + { 19441, -1 }, /* ReplacementCodeusvSUN */ + { 19629, -1 }, /* ReplacementCodePointerSUN */ + { 21835, -1 }, /* ReplacementCodeuiSUN */ + { 22693, -1 }, /* ReplacementCodeusSUN */ + { 30357, -1 }, /* ReplacementCodeuivSUN */ { -1, -1 } }; #endif #if defined(need_GL_SUN_vertex) static const struct gl_function_remap GL_SUN_vertex_functions[] = { - { 1154, -1 }, /* ReplacementCodeuiColor3fVertex3fvSUN */ - { 1352, -1 }, /* TexCoord4fColor4fNormal3fVertex4fvSUN */ - { 1578, -1 }, /* TexCoord2fColor4ubVertex3fvSUN */ - { 1908, -1 }, /* ReplacementCodeuiVertex3fvSUN */ - { 2042, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fvSUN */ - { 2600, -1 }, /* ReplacementCodeuiNormal3fVertex3fSUN */ - { 2913, -1 }, /* Color4ubVertex3fvSUN */ - { 4639, -1 }, /* Color4ubVertex3fSUN */ - { 4762, -1 }, /* TexCoord2fVertex3fSUN */ - { 5106, -1 }, /* TexCoord2fColor4fNormal3fVertex3fSUN */ - { 5599, -1 }, /* TexCoord2fNormal3fVertex3fvSUN */ - { 6251, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN */ - { 7031, -1 }, /* ReplacementCodeuiColor4ubVertex3fvSUN */ - { 7390, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fSUN */ - { 8102, -1 }, /* TexCoord2fNormal3fVertex3fSUN */ - { 8906, -1 }, /* Color3fVertex3fSUN */ - { 10097, -1 }, /* Color3fVertex3fvSUN */ - { 10535, -1 }, /* Color4fNormal3fVertex3fvSUN */ - { 11364, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN */ - { 12863, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fvSUN */ - { 14403, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN */ - { 14929, -1 }, /* TexCoord2fColor3fVertex3fSUN */ - { 15981, -1 }, /* TexCoord4fColor4fNormal3fVertex4fSUN */ - { 16396, -1 }, /* Color4ubVertex2fvSUN */ - { 16667, -1 }, /* Normal3fVertex3fSUN */ - { 17764, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fSUN */ - { 18125, -1 }, /* TexCoord2fColor4fNormal3fVertex3fvSUN */ - { 18980, -1 }, /* TexCoord2fVertex3fvSUN */ - { 19756, -1 }, /* Color4ubVertex2fSUN */ - { 19994, -1 }, /* ReplacementCodeuiColor4ubVertex3fSUN */ - { 21993, -1 }, /* TexCoord2fColor4ubVertex3fSUN */ - { 22425, -1 }, /* Normal3fVertex3fvSUN */ - { 22891, -1 }, /* Color4fNormal3fVertex3fSUN */ - { 23900, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN */ - { 26002, -1 }, /* ReplacementCodeuiColor3fVertex3fSUN */ - { 27425, -1 }, /* TexCoord4fVertex4fSUN */ - { 27851, -1 }, /* TexCoord2fColor3fVertex3fvSUN */ - { 28290, -1 }, /* ReplacementCodeuiNormal3fVertex3fvSUN */ - { 28417, -1 }, /* TexCoord4fVertex4fvSUN */ - { 29151, -1 }, /* ReplacementCodeuiVertex3fSUN */ + { 1115, -1 }, /* ReplacementCodeuiColor3fVertex3fvSUN */ + { 1313, -1 }, /* TexCoord4fColor4fNormal3fVertex4fvSUN */ + { 1539, -1 }, /* TexCoord2fColor4ubVertex3fvSUN */ + { 1869, -1 }, /* ReplacementCodeuiVertex3fvSUN */ + { 2003, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fvSUN */ + { 2561, -1 }, /* ReplacementCodeuiNormal3fVertex3fSUN */ + { 2874, -1 }, /* Color4ubVertex3fvSUN */ + { 4673, -1 }, /* Color4ubVertex3fSUN */ + { 4796, -1 }, /* TexCoord2fVertex3fSUN */ + { 5169, -1 }, /* TexCoord2fColor4fNormal3fVertex3fSUN */ + { 5620, -1 }, /* TexCoord2fNormal3fVertex3fvSUN */ + { 6349, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN */ + { 7129, -1 }, /* ReplacementCodeuiColor4ubVertex3fvSUN */ + { 7488, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fSUN */ + { 8980, -1 }, /* Color3fVertex3fSUN */ + { 10171, -1 }, /* Color3fVertex3fvSUN */ + { 10609, -1 }, /* Color4fNormal3fVertex3fvSUN */ + { 11438, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN */ + { 12919, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fvSUN */ + { 14545, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN */ + { 15071, -1 }, /* TexCoord2fColor3fVertex3fSUN */ + { 16123, -1 }, /* TexCoord4fColor4fNormal3fVertex4fSUN */ + { 16565, -1 }, /* Color4ubVertex2fvSUN */ + { 16895, -1 }, /* Normal3fVertex3fSUN */ + { 17992, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fSUN */ + { 18344, -1 }, /* TexCoord2fColor4fNormal3fVertex3fvSUN */ + { 18651, -1 }, /* TexCoord2fNormal3fVertex3fSUN */ + { 19260, -1 }, /* TexCoord2fVertex3fvSUN */ + { 20064, -1 }, /* Color4ubVertex2fSUN */ + { 20302, -1 }, /* ReplacementCodeuiColor4ubVertex3fSUN */ + { 22301, -1 }, /* TexCoord2fColor4ubVertex3fSUN */ + { 22761, -1 }, /* Normal3fVertex3fvSUN */ + { 23227, -1 }, /* Color4fNormal3fVertex3fSUN */ + { 24236, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN */ + { 26393, -1 }, /* ReplacementCodeuiColor3fVertex3fSUN */ + { 27784, -1 }, /* TexCoord4fVertex4fSUN */ + { 28230, -1 }, /* TexCoord2fColor3fVertex3fvSUN */ + { 28617, -1 }, /* ReplacementCodeuiNormal3fVertex3fvSUN */ + { 28744, -1 }, /* TexCoord4fVertex4fvSUN */ + { 29478, -1 }, /* ReplacementCodeuiVertex3fSUN */ { -1, -1 } }; #endif @@ -6491,40 +6592,40 @@ static const struct gl_function_remap GL_SUN_vertex_functions[] = { #if defined(need_GL_VERSION_1_3) /* functions defined in MESA_remap_table_functions are excluded */ static const struct gl_function_remap GL_VERSION_1_3_functions[] = { - { 464, _gloffset_MultiTexCoord3sARB }, - { 696, _gloffset_ActiveTextureARB }, - { 4234, _gloffset_MultiTexCoord1fvARB }, - { 6142, _gloffset_MultiTexCoord3dARB }, - { 6187, _gloffset_MultiTexCoord2iARB }, - { 6311, _gloffset_MultiTexCoord2svARB }, - { 8311, _gloffset_MultiTexCoord2fARB }, - { 10371, _gloffset_MultiTexCoord3fvARB }, - { 10973, _gloffset_MultiTexCoord4sARB }, - { 11654, _gloffset_MultiTexCoord2dvARB }, - { 12069, _gloffset_MultiTexCoord1svARB }, - { 12480, _gloffset_MultiTexCoord3svARB }, - { 12541, _gloffset_MultiTexCoord4iARB }, - { 13342, _gloffset_MultiTexCoord3iARB }, - { 14141, _gloffset_MultiTexCoord1dARB }, - { 14358, _gloffset_MultiTexCoord3dvARB }, - { 15637, _gloffset_MultiTexCoord3ivARB }, - { 15682, _gloffset_MultiTexCoord2sARB }, - { 17067, _gloffset_MultiTexCoord4ivARB }, - { 19080, _gloffset_ClientActiveTextureARB }, - { 21380, _gloffset_MultiTexCoord2dARB }, - { 21817, _gloffset_MultiTexCoord4dvARB }, - { 22173, _gloffset_MultiTexCoord4fvARB }, - { 23123, _gloffset_MultiTexCoord3fARB }, - { 25693, _gloffset_MultiTexCoord4dARB }, - { 25959, _gloffset_MultiTexCoord1sARB }, - { 26163, _gloffset_MultiTexCoord1dvARB }, - { 27171, _gloffset_MultiTexCoord1ivARB }, - { 27264, _gloffset_MultiTexCoord2ivARB }, - { 27603, _gloffset_MultiTexCoord1iARB }, - { 29019, _gloffset_MultiTexCoord4svARB }, - { 29593, _gloffset_MultiTexCoord1fARB }, - { 29856, _gloffset_MultiTexCoord4fARB }, - { 32314, _gloffset_MultiTexCoord2fvARB }, + { 425, _gloffset_MultiTexCoord3sARB }, + { 657, _gloffset_ActiveTextureARB }, + { 4268, _gloffset_MultiTexCoord1fvARB }, + { 6240, _gloffset_MultiTexCoord3dARB }, + { 6285, _gloffset_MultiTexCoord2iARB }, + { 6409, _gloffset_MultiTexCoord2svARB }, + { 8385, _gloffset_MultiTexCoord2fARB }, + { 10445, _gloffset_MultiTexCoord3fvARB }, + { 11047, _gloffset_MultiTexCoord4sARB }, + { 11728, _gloffset_MultiTexCoord2dvARB }, + { 12135, _gloffset_MultiTexCoord1svARB }, + { 12536, _gloffset_MultiTexCoord3svARB }, + { 12597, _gloffset_MultiTexCoord4iARB }, + { 13398, _gloffset_MultiTexCoord3iARB }, + { 14268, _gloffset_MultiTexCoord1dARB }, + { 14500, _gloffset_MultiTexCoord3dvARB }, + { 15779, _gloffset_MultiTexCoord3ivARB }, + { 15824, _gloffset_MultiTexCoord2sARB }, + { 17295, _gloffset_MultiTexCoord4ivARB }, + { 19360, _gloffset_ClientActiveTextureARB }, + { 21688, _gloffset_MultiTexCoord2dARB }, + { 22125, _gloffset_MultiTexCoord4dvARB }, + { 22481, _gloffset_MultiTexCoord4fvARB }, + { 23459, _gloffset_MultiTexCoord3fARB }, + { 26084, _gloffset_MultiTexCoord4dARB }, + { 26350, _gloffset_MultiTexCoord1sARB }, + { 26554, _gloffset_MultiTexCoord1dvARB }, + { 27530, _gloffset_MultiTexCoord1ivARB }, + { 27623, _gloffset_MultiTexCoord2ivARB }, + { 27962, _gloffset_MultiTexCoord1iARB }, + { 29346, _gloffset_MultiTexCoord4svARB }, + { 29970, _gloffset_MultiTexCoord1fARB }, + { 30233, _gloffset_MultiTexCoord4fARB }, + { 32702, _gloffset_MultiTexCoord2fvARB }, { -1, -1 } }; #endif diff --git a/src/mesa/main/renderbuffer.c b/src/mesa/main/renderbuffer.c index 67ee589d776..fa884c0de93 100644 --- a/src/mesa/main/renderbuffer.c +++ b/src/mesa/main/renderbuffer.c @@ -51,40 +51,187 @@ /* * Routines for get/put values in common buffer formats follow. - * Someday add support for arbitrary row stride to make them more - * flexible. */ -/********************************************************************** - * Functions for buffers of 1 X GLubyte values. - * Typically stencil. +/* Returns a bytes per pixel of the DataType in the get/put span + * functions for at least a subset of the available combinations a + * renderbuffer can have. + * + * It would be nice to see gl_renderbuffer start talking about a + * gl_format instead of a GLenum DataType. */ +static int +get_datatype_bytes(struct gl_renderbuffer *rb) +{ + int component_size; + switch (rb->DataType) { + case GL_FLOAT: + case GL_UNSIGNED_INT: + case GL_UNSIGNED_INT_24_8_EXT: + component_size = 4; + break; + case GL_UNSIGNED_SHORT: + component_size = 2; + break; + case GL_UNSIGNED_BYTE: + component_size = 1; + break; + default: + component_size = 1; + assert(0); + } + + switch (rb->_BaseFormat) { + case GL_DEPTH_COMPONENT: + case GL_DEPTH_STENCIL: + return component_size; + default: + return 4 * component_size; + } +} + +/* This is commonly used by most of the accessors. */ static void * -get_pointer_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, - GLint x, GLint y) +get_pointer_generic(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLint x, GLint y) { if (!rb->Data) return NULL; - ASSERT(rb->DataType == GL_UNSIGNED_BYTE); - /* Can't assert rb->Format since these funcs may be used for serveral - * different formats (GL_ALPHA8, GL_STENCIL_INDEX8, etc). - */ - return (GLubyte *) rb->Data + y * rb->Width + x; + + return ((char *) rb->Data + + (y * rb->RowStride + x) * _mesa_get_format_bytes(rb->Format)); } +/* GetRow() implementation for formats where DataType matches the rb->Format. + */ +static void +get_row_generic(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, GLint x, GLint y, void *values) +{ + void *src = rb->GetPointer(ctx, rb, x, y); + memcpy(values, src, count * _mesa_get_format_bytes(rb->Format)); +} +/* Only used for float textures currently, but might also be used for + * RGBA8888, RGBA16, etc. + */ static void -get_row_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, - GLint x, GLint y, void *values) +get_values_generic(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, const GLint x[], const GLint y[], void *values) { - const GLubyte *src = (const GLubyte *) rb->Data + y * rb->Width + x; - ASSERT(rb->DataType == GL_UNSIGNED_BYTE); - memcpy(values, src, count * sizeof(GLubyte)); + int format_bytes = _mesa_get_format_bytes(rb->Format) / sizeof(GLfloat); + GLuint i; + + for (i = 0; i < count; i++) { + const void *src = rb->GetPointer(ctx, rb, x[i], y[i]); + char *dst = (char *) values + i * format_bytes; + memcpy(dst, src, format_bytes); + } +} + +/* For the GL_RED/GL_RG/GL_RGB format/DataType combinations (and + * GL_LUMINANCE/GL_INTENSITY?), the Put functions are a matter of + * storing those initial components of the value per pixel into the + * destination. + */ +static void +put_row_generic(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, GLint x, GLint y, + const void *values, const GLubyte *mask) +{ + void *row = rb->GetPointer(ctx, rb, x, y); + int format_bytes = _mesa_get_format_bytes(rb->Format) / sizeof(GLfloat); + int datatype_bytes = get_datatype_bytes(rb); + unsigned int i; + + if (mask) { + for (i = 0; i < count; i++) { + char *dst = (char *) row + i * format_bytes; + const char *src = (const char *) values + i * datatype_bytes; + + if (mask[i]) { + memcpy(dst, src, format_bytes); + } + } + } + else { + for (i = 0; i < count; i++) { + char *dst = (char *) row + i * format_bytes; + const char *src = (const char *) values + i * datatype_bytes; + memcpy(dst, src, format_bytes); + } + } +} + +static void +put_mono_row_generic(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, GLint x, GLint y, + const void *value, const GLubyte *mask) +{ + void *row = rb->GetPointer(ctx, rb, x, y); + int format_bytes = _mesa_get_format_bytes(rb->Format) / sizeof(GLfloat); + unsigned int i; + + if (mask) { + for (i = 0; i < count; i++) { + char *dst = (char *) row + i * format_bytes; + if (mask[i]) { + memcpy(dst, value, format_bytes); + } + } + } + else { + for (i = 0; i < count; i++) { + char *dst = (char *) row + i * format_bytes; + memcpy(dst, value, format_bytes); + } + } } static void +put_values_generic(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, const GLint x[], const GLint y[], + const void *values, const GLubyte *mask) +{ + int format_bytes = _mesa_get_format_bytes(rb->Format) / sizeof(GLfloat); + int datatype_bytes = get_datatype_bytes(rb); + unsigned int i; + + for (i = 0; i < count; i++) { + if (!mask || mask[i]) { + void *dst = rb->GetPointer(ctx, rb, x[i], y[i]); + const char *src = (const char *) values + i * datatype_bytes; + memcpy(dst, src, format_bytes); + } + } +} + + +static void +put_mono_values_generic(struct gl_context *ctx, + struct gl_renderbuffer *rb, + GLuint count, const GLint x[], const GLint y[], + const void *value, const GLubyte *mask) +{ + int format_bytes = _mesa_get_format_bytes(rb->Format) / sizeof(GLfloat); + unsigned int i; + + for (i = 0; i < count; i++) { + if (!mask || mask[i]) { + void *dst = rb->GetPointer(ctx, rb, x[i], y[i]); + memcpy(dst, value, format_bytes); + } + } +} + +/********************************************************************** + * Functions for buffers of 1 X GLubyte values. + * Typically stencil. + */ + +static void get_values_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], void *values) { @@ -92,7 +239,7 @@ get_values_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint coun GLuint i; ASSERT(rb->DataType == GL_UNSIGNED_BYTE); for (i = 0; i < count; i++) { - const GLubyte *src = (GLubyte *) rb->Data + y[i] * rb->Width + x[i]; + const GLubyte *src = (GLubyte *) rb->Data + y[i] * rb->RowStride + x[i]; dst[i] = *src; } } @@ -103,7 +250,7 @@ put_row_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *values, const GLubyte *mask) { const GLubyte *src = (const GLubyte *) values; - GLubyte *dst = (GLubyte *) rb->Data + y * rb->Width + x; + GLubyte *dst = (GLubyte *) rb->Data + y * rb->RowStride + x; ASSERT(rb->DataType == GL_UNSIGNED_BYTE); if (mask) { GLuint i; @@ -124,7 +271,7 @@ put_mono_row_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint co GLint x, GLint y, const void *value, const GLubyte *mask) { const GLubyte val = *((const GLubyte *) value); - GLubyte *dst = (GLubyte *) rb->Data + y * rb->Width + x; + GLubyte *dst = (GLubyte *) rb->Data + y * rb->RowStride + x; ASSERT(rb->DataType == GL_UNSIGNED_BYTE); if (mask) { GLuint i; @@ -153,7 +300,7 @@ put_values_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint coun ASSERT(rb->DataType == GL_UNSIGNED_BYTE); for (i = 0; i < count; i++) { if (!mask || mask[i]) { - GLubyte *dst = (GLubyte *) rb->Data + y[i] * rb->Width + x[i]; + GLubyte *dst = (GLubyte *) rb->Data + y[i] * rb->RowStride + x[i]; *dst = src[i]; } } @@ -170,7 +317,7 @@ put_mono_values_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint ASSERT(rb->DataType == GL_UNSIGNED_BYTE); for (i = 0; i < count; i++) { if (!mask || mask[i]) { - GLubyte *dst = (GLubyte *) rb->Data + y[i] * rb->Width + x[i]; + GLubyte *dst = (GLubyte *) rb->Data + y[i] * rb->RowStride + x[i]; *dst = val; } } @@ -182,28 +329,6 @@ put_mono_values_ubyte(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint * Typically depth/Z. */ -static void * -get_pointer_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, - GLint x, GLint y) -{ - if (!rb->Data) - return NULL; - ASSERT(rb->DataType == GL_UNSIGNED_SHORT); - ASSERT(rb->Width > 0); - return (GLushort *) rb->Data + y * rb->Width + x; -} - - -static void -get_row_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, - GLint x, GLint y, void *values) -{ - const void *src = rb->GetPointer(ctx, rb, x, y); - ASSERT(rb->DataType == GL_UNSIGNED_SHORT); - memcpy(values, src, count * sizeof(GLushort)); -} - - static void get_values_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], void *values) @@ -212,7 +337,7 @@ get_values_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint cou GLuint i; ASSERT(rb->DataType == GL_UNSIGNED_SHORT); for (i = 0; i < count; i++) { - const GLushort *src = (GLushort *) rb->Data + y[i] * rb->Width + x[i]; + const GLushort *src = (GLushort *) rb->Data + y[i] * rb->RowStride + x[i]; dst[i] = *src; } } @@ -223,7 +348,7 @@ put_row_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *values, const GLubyte *mask) { const GLushort *src = (const GLushort *) values; - GLushort *dst = (GLushort *) rb->Data + y * rb->Width + x; + GLushort *dst = (GLushort *) rb->Data + y * rb->RowStride + x; ASSERT(rb->DataType == GL_UNSIGNED_SHORT); if (mask) { GLuint i; @@ -244,7 +369,7 @@ put_mono_row_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint c GLint x, GLint y, const void *value, const GLubyte *mask) { const GLushort val = *((const GLushort *) value); - GLushort *dst = (GLushort *) rb->Data + y * rb->Width + x; + GLushort *dst = (GLushort *) rb->Data + y * rb->RowStride + x; ASSERT(rb->DataType == GL_UNSIGNED_SHORT); if (mask) { GLuint i; @@ -273,7 +398,7 @@ put_values_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint cou ASSERT(rb->DataType == GL_UNSIGNED_SHORT); for (i = 0; i < count; i++) { if (!mask || mask[i]) { - GLushort *dst = (GLushort *) rb->Data + y[i] * rb->Width + x[i]; + GLushort *dst = (GLushort *) rb->Data + y[i] * rb->RowStride + x[i]; *dst = src[i]; } } @@ -291,7 +416,7 @@ put_mono_values_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint i; for (i = 0; i < count; i++) { if (mask[i]) { - GLushort *dst = (GLushort *) rb->Data + y[i] * rb->Width + x[i]; + GLushort *dst = (GLushort *) rb->Data + y[i] * rb->RowStride + x[i]; *dst = val; } } @@ -299,7 +424,7 @@ put_mono_values_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, else { GLuint i; for (i = 0; i < count; i++) { - GLushort *dst = (GLushort *) rb->Data + y[i] * rb->Width + x[i]; + GLushort *dst = (GLushort *) rb->Data + y[i] * rb->RowStride + x[i]; *dst = val; } } @@ -311,29 +436,6 @@ put_mono_values_ushort(struct gl_context *ctx, struct gl_renderbuffer *rb, * Typically depth/Z or color index. */ -static void * -get_pointer_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, - GLint x, GLint y) -{ - if (!rb->Data) - return NULL; - ASSERT(rb->DataType == GL_UNSIGNED_INT || - rb->DataType == GL_UNSIGNED_INT_24_8_EXT); - return (GLuint *) rb->Data + y * rb->Width + x; -} - - -static void -get_row_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, - GLint x, GLint y, void *values) -{ - const void *src = rb->GetPointer(ctx, rb, x, y); - ASSERT(rb->DataType == GL_UNSIGNED_INT || - rb->DataType == GL_UNSIGNED_INT_24_8_EXT); - memcpy(values, src, count * sizeof(GLuint)); -} - - static void get_values_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], void *values) @@ -343,7 +445,7 @@ get_values_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count ASSERT(rb->DataType == GL_UNSIGNED_INT || rb->DataType == GL_UNSIGNED_INT_24_8_EXT); for (i = 0; i < count; i++) { - const GLuint *src = (GLuint *) rb->Data + y[i] * rb->Width + x[i]; + const GLuint *src = (GLuint *) rb->Data + y[i] * rb->RowStride + x[i]; dst[i] = *src; } } @@ -354,7 +456,7 @@ put_row_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, const void *values, const GLubyte *mask) { const GLuint *src = (const GLuint *) values; - GLuint *dst = (GLuint *) rb->Data + y * rb->Width + x; + GLuint *dst = (GLuint *) rb->Data + y * rb->RowStride + x; ASSERT(rb->DataType == GL_UNSIGNED_INT || rb->DataType == GL_UNSIGNED_INT_24_8_EXT); if (mask) { @@ -376,7 +478,7 @@ put_mono_row_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint cou GLint x, GLint y, const void *value, const GLubyte *mask) { const GLuint val = *((const GLuint *) value); - GLuint *dst = (GLuint *) rb->Data + y * rb->Width + x; + GLuint *dst = (GLuint *) rb->Data + y * rb->RowStride + x; ASSERT(rb->DataType == GL_UNSIGNED_INT || rb->DataType == GL_UNSIGNED_INT_24_8_EXT); if (mask) { @@ -407,7 +509,7 @@ put_values_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count rb->DataType == GL_UNSIGNED_INT_24_8_EXT); for (i = 0; i < count; i++) { if (!mask || mask[i]) { - GLuint *dst = (GLuint *) rb->Data + y[i] * rb->Width + x[i]; + GLuint *dst = (GLuint *) rb->Data + y[i] * rb->RowStride + x[i]; *dst = src[i]; } } @@ -425,7 +527,7 @@ put_mono_values_uint(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint rb->DataType == GL_UNSIGNED_INT_24_8_EXT); for (i = 0; i < count; i++) { if (!mask || mask[i]) { - GLuint *dst = (GLuint *) rb->Data + y[i] * rb->Width + x[i]; + GLuint *dst = (GLuint *) rb->Data + y[i] * rb->RowStride + x[i]; *dst = val; } } @@ -455,7 +557,8 @@ static void get_row_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, void *values) { - const GLubyte *src = (const GLubyte *) rb->Data + 3 * (y * rb->Width + x); + const GLubyte *src = ((const GLubyte *) rb->Data) + + 3 * (y * rb->RowStride + x); GLubyte *dst = (GLubyte *) values; GLuint i; ASSERT(rb->Format == MESA_FORMAT_RGB888); @@ -479,7 +582,7 @@ get_values_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint cou ASSERT(rb->DataType == GL_UNSIGNED_BYTE); for (i = 0; i < count; i++) { const GLubyte *src - = (GLubyte *) rb->Data + 3 * (y[i] * rb->Width + x[i]); + = (GLubyte *) rb->Data + 3 * (y[i] * rb->RowStride + x[i]); dst[i * 4 + 0] = src[0]; dst[i * 4 + 1] = src[1]; dst[i * 4 + 2] = src[2]; @@ -494,7 +597,7 @@ put_row_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, { /* note: incoming values are RGB+A! */ const GLubyte *src = (const GLubyte *) values; - GLubyte *dst = (GLubyte *) rb->Data + 3 * (y * rb->Width + x); + GLubyte *dst = (GLubyte *) rb->Data + 3 * (y * rb->RowStride + x); GLuint i; ASSERT(rb->Format == MESA_FORMAT_RGB888); ASSERT(rb->DataType == GL_UNSIGNED_BYTE); @@ -514,7 +617,7 @@ put_row_rgb_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint co { /* note: incoming values are RGB+A! */ const GLubyte *src = (const GLubyte *) values; - GLubyte *dst = (GLubyte *) rb->Data + 3 * (y * rb->Width + x); + GLubyte *dst = (GLubyte *) rb->Data + 3 * (y * rb->RowStride + x); GLuint i; ASSERT(rb->Format == MESA_FORMAT_RGB888); ASSERT(rb->DataType == GL_UNSIGNED_BYTE); @@ -536,7 +639,7 @@ put_mono_row_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint c const GLubyte val0 = ((const GLubyte *) value)[0]; const GLubyte val1 = ((const GLubyte *) value)[1]; const GLubyte val2 = ((const GLubyte *) value)[2]; - GLubyte *dst = (GLubyte *) rb->Data + 3 * (y * rb->Width + x); + GLubyte *dst = (GLubyte *) rb->Data + 3 * (y * rb->RowStride + x); ASSERT(rb->Format == MESA_FORMAT_RGB888); ASSERT(rb->DataType == GL_UNSIGNED_BYTE); if (!mask && val0 == val1 && val1 == val2) { @@ -568,7 +671,7 @@ put_values_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint cou ASSERT(rb->DataType == GL_UNSIGNED_BYTE); for (i = 0; i < count; i++) { if (!mask || mask[i]) { - GLubyte *dst = (GLubyte *) rb->Data + 3 * (y[i] * rb->Width + x[i]); + GLubyte *dst = (GLubyte *) rb->Data + 3 * (y[i] * rb->RowStride + x[i]); dst[0] = src[i * 4 + 0]; dst[1] = src[i * 4 + 1]; dst[2] = src[i * 4 + 2]; @@ -591,7 +694,8 @@ put_mono_values_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, ASSERT(rb->DataType == GL_UNSIGNED_BYTE); for (i = 0; i < count; i++) { if (!mask || mask[i]) { - GLubyte *dst = (GLubyte *) rb->Data + 3 * (y[i] * rb->Width + x[i]); + GLubyte *dst = ((GLubyte *) rb->Data) + + 3 * (y[i] * rb->RowStride + x[i]); dst[0] = val0; dst[1] = val1; dst[2] = val2; @@ -605,29 +709,6 @@ put_mono_values_ubyte3(struct gl_context *ctx, struct gl_renderbuffer *rb, * Typically color buffers. */ -static void * -get_pointer_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, - GLint x, GLint y) -{ - if (!rb->Data) - return NULL; - ASSERT(rb->DataType == GL_UNSIGNED_BYTE); - ASSERT(rb->Format == MESA_FORMAT_RGBA8888); - return (GLubyte *) rb->Data + 4 * (y * rb->Width + x); -} - - -static void -get_row_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, - GLint x, GLint y, void *values) -{ - const GLubyte *src = (const GLubyte *) rb->Data + 4 * (y * rb->Width + x); - ASSERT(rb->DataType == GL_UNSIGNED_BYTE); - ASSERT(rb->Format == MESA_FORMAT_RGBA8888); - memcpy(values, src, 4 * count * sizeof(GLubyte)); -} - - static void get_values_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], void *values) @@ -638,7 +719,7 @@ get_values_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint cou ASSERT(rb->DataType == GL_UNSIGNED_BYTE); ASSERT(rb->Format == MESA_FORMAT_RGBA8888); for (i = 0; i < count; i++) { - const GLuint *src = (GLuint *) rb->Data + (y[i] * rb->Width + x[i]); + const GLuint *src = (GLuint *) rb->Data + (y[i] * rb->RowStride + x[i]); dst[i] = *src; } } @@ -650,7 +731,7 @@ put_row_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, { /* treat 4*GLubyte as 1*GLuint */ const GLuint *src = (const GLuint *) values; - GLuint *dst = (GLuint *) rb->Data + (y * rb->Width + x); + GLuint *dst = (GLuint *) rb->Data + (y * rb->RowStride + x); ASSERT(rb->DataType == GL_UNSIGNED_BYTE); ASSERT(rb->Format == MESA_FORMAT_RGBA8888); if (mask) { @@ -673,7 +754,7 @@ put_row_rgb_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint co { /* Store RGB values in RGBA buffer */ const GLubyte *src = (const GLubyte *) values; - GLubyte *dst = (GLubyte *) rb->Data + 4 * (y * rb->Width + x); + GLubyte *dst = (GLubyte *) rb->Data + 4 * (y * rb->RowStride + x); GLuint i; ASSERT(rb->DataType == GL_UNSIGNED_BYTE); ASSERT(rb->Format == MESA_FORMAT_RGBA8888); @@ -694,7 +775,7 @@ put_mono_row_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint c { /* treat 4*GLubyte as 1*GLuint */ const GLuint val = *((const GLuint *) value); - GLuint *dst = (GLuint *) rb->Data + (y * rb->Width + x); + GLuint *dst = (GLuint *) rb->Data + (y * rb->RowStride + x); ASSERT(rb->DataType == GL_UNSIGNED_BYTE); ASSERT(rb->Format == MESA_FORMAT_RGBA8888); if (!mask && val == 0) { @@ -733,7 +814,7 @@ put_values_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint cou ASSERT(rb->Format == MESA_FORMAT_RGBA8888); for (i = 0; i < count; i++) { if (!mask || mask[i]) { - GLuint *dst = (GLuint *) rb->Data + (y[i] * rb->Width + x[i]); + GLuint *dst = (GLuint *) rb->Data + (y[i] * rb->RowStride + x[i]); *dst = src[i]; } } @@ -752,7 +833,7 @@ put_mono_values_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, ASSERT(rb->Format == MESA_FORMAT_RGBA8888); for (i = 0; i < count; i++) { if (!mask || mask[i]) { - GLuint *dst = (GLuint *) rb->Data + (y[i] * rb->Width + x[i]); + GLuint *dst = (GLuint *) rb->Data + (y[i] * rb->RowStride + x[i]); *dst = val; } } @@ -764,27 +845,6 @@ put_mono_values_ubyte4(struct gl_context *ctx, struct gl_renderbuffer *rb, * Typically accum buffer. */ -static void * -get_pointer_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, - GLint x, GLint y) -{ - if (!rb->Data) - return NULL; - ASSERT(rb->DataType == GL_UNSIGNED_SHORT || rb->DataType == GL_SHORT); - return (GLushort *) rb->Data + 4 * (y * rb->Width + x); -} - - -static void -get_row_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, - GLint x, GLint y, void *values) -{ - const GLshort *src = (const GLshort *) rb->Data + 4 * (y * rb->Width + x); - ASSERT(rb->DataType == GL_UNSIGNED_SHORT || rb->DataType == GL_SHORT); - memcpy(values, src, 4 * count * sizeof(GLshort)); -} - - static void get_values_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], void *values) @@ -794,7 +854,7 @@ get_values_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint co ASSERT(rb->DataType == GL_UNSIGNED_SHORT || rb->DataType == GL_SHORT); for (i = 0; i < count; i++) { const GLushort *src - = (GLushort *) rb->Data + 4 * (y[i] * rb->Width + x[i]); + = (GLushort *) rb->Data + 4 * (y[i] * rb->RowStride + x[i]); dst[i] = *src; } } @@ -805,7 +865,7 @@ put_row_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count GLint x, GLint y, const void *values, const GLubyte *mask) { const GLushort *src = (const GLushort *) values; - GLushort *dst = (GLushort *) rb->Data + 4 * (y * rb->Width + x); + GLushort *dst = (GLushort *) rb->Data + 4 * (y * rb->RowStride + x); ASSERT(rb->DataType == GL_UNSIGNED_SHORT || rb->DataType == GL_SHORT); if (mask) { GLuint i; @@ -830,7 +890,7 @@ put_row_rgb_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint c { /* Put RGB values in RGBA buffer */ const GLushort *src = (const GLushort *) values; - GLushort *dst = (GLushort *) rb->Data + 4 * (y * rb->Width + x); + GLushort *dst = (GLushort *) rb->Data + 4 * (y * rb->RowStride + x); ASSERT(rb->DataType == GL_UNSIGNED_SHORT || rb->DataType == GL_SHORT); if (mask) { GLuint i; @@ -857,7 +917,7 @@ put_mono_row_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint const GLushort val1 = ((const GLushort *) value)[1]; const GLushort val2 = ((const GLushort *) value)[2]; const GLushort val3 = ((const GLushort *) value)[3]; - GLushort *dst = (GLushort *) rb->Data + 4 * (y * rb->Width + x); + GLushort *dst = (GLushort *) rb->Data + 4 * (y * rb->RowStride + x); ASSERT(rb->DataType == GL_UNSIGNED_SHORT || rb->DataType == GL_SHORT); if (!mask && val0 == 0 && val1 == 0 && val2 == 0 && val3 == 0) { /* common case for clearing accum buffer */ @@ -887,7 +947,8 @@ put_values_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint co ASSERT(rb->DataType == GL_UNSIGNED_SHORT || rb->DataType == GL_SHORT); for (i = 0; i < count; i++) { if (!mask || mask[i]) { - GLushort *dst = (GLushort *) rb->Data + 4 * (y[i] * rb->Width + x[i]); + GLushort *dst = + ((GLushort *) rb->Data) + 4 * (y[i] * rb->RowStride + x[i]); dst[0] = src[i * 4 + 0]; dst[1] = src[i * 4 + 1]; dst[2] = src[i * 4 + 2]; @@ -910,7 +971,8 @@ put_mono_values_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, ASSERT(rb->DataType == GL_UNSIGNED_SHORT || rb->DataType == GL_SHORT); for (i = 0; i < count; i++) { if (!mask || mask[i]) { - GLushort *dst = (GLushort *) rb->Data + 4 * (y[i] * rb->Width + x[i]); + GLushort *dst = ((GLushort *) rb->Data) + + 4 * (y[i] * rb->RowStride + x[i]); dst[0] = val0; dst[1] = val1; dst[2] = val2; @@ -919,39 +981,410 @@ put_mono_values_ushort4(struct gl_context *ctx, struct gl_renderbuffer *rb, } } +/********************************************************************** + * Functions for MESA_FORMAT_R8. + */ +static void +get_row_r8(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, + GLint x, GLint y, void *values) +{ + const GLubyte *src = rb->GetPointer(ctx, rb, x, y); + GLuint *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + dst[i] = 0xff000000 | src[i]; + } +} + +static void +get_values_r8(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, + const GLint x[], const GLint y[], void *values) +{ + GLuint *dst = (GLuint *) values; + GLuint i; + + for (i = 0; i < count; i++) { + const GLubyte *src = rb->GetPointer(ctx, rb, x[i], y[i]); + dst[i] = 0xff000000 | *src; + } +} + +/********************************************************************** + * Functions for MESA_FORMAT_RG88. + */ +static void +get_row_rg88(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, + GLint x, GLint y, void *values) +{ + const GLushort *src = rb->GetPointer(ctx, rb, x, y); + GLuint *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + dst[i] = 0xff000000 | src[i]; + } +} + +static void +get_values_rg88(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, const GLint x[], const GLint y[], void *values) +{ + GLuint *dst = (GLuint *) values; + GLuint i; + + for (i = 0; i < count; i++) { + const GLshort *src = rb->GetPointer(ctx, rb, x[i], y[i]); + dst[i] = 0xff000000 | *src; + } +} + +/********************************************************************** + * Functions for MESA_FORMAT_R16. + */ +static void +get_row_r16(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, + GLint x, GLint y, void *values) +{ + const GLushort *src = rb->GetPointer(ctx, rb, x, y); + GLushort *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + dst[i * 4 + RCOMP] = src[i]; + dst[i * 4 + GCOMP] = 0; + dst[i * 4 + BCOMP] = 0; + dst[i * 4 + ACOMP] = 0xffff; + } +} + +static void +get_values_r16(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, + const GLint x[], const GLint y[], void *values) +{ + GLushort *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + const GLushort *src = rb->GetPointer(ctx, rb, x[i], y[i]); + dst[i * 4 + RCOMP] = *src; + dst[i * 4 + GCOMP] = 0; + dst[i * 4 + BCOMP] = 0; + dst[i * 4 + ACOMP] = 0xffff; + } +} + +/********************************************************************** + * Functions for MESA_FORMAT_RG1616. + */ +static void +get_row_rg1616(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint count, + GLint x, GLint y, void *values) +{ + const GLushort *src = rb->GetPointer(ctx, rb, x, y); + GLushort *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + dst[i * 4 + RCOMP] = src[i * 2]; + dst[i * 4 + GCOMP] = src[i * 2 + 1]; + dst[i * 4 + BCOMP] = 0; + dst[i * 4 + ACOMP] = 0xffff; + } +} + +static void +get_values_rg1616(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, const GLint x[], const GLint y[], void *values) +{ + GLushort *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + const GLshort *src = rb->GetPointer(ctx, rb, x[i], y[i]); + dst[i * 4 + RCOMP] = src[0]; + dst[i * 4 + GCOMP] = src[1]; + dst[i * 4 + BCOMP] = 0; + dst[i * 4 + ACOMP] = 0xffff; + } +} + +/********************************************************************** + * Functions for MESA_FORMAT_INTENSITY_FLOAT32. + */ +static void +get_row_i_float32(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, GLint x, GLint y, void *values) +{ + const GLfloat *src = rb->GetPointer(ctx, rb, x, y); + GLfloat *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + dst[i * 4 + RCOMP] = + dst[i * 4 + GCOMP] = + dst[i * 4 + BCOMP] = + dst[i * 4 + ACOMP] = src[i]; + } +} + +static void +get_values_i_float32(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, const GLint x[], const GLint y[], + void *values) +{ + GLfloat *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + const GLfloat *src = rb->GetPointer(ctx, rb, x[i], y[i]); + dst[i * 4 + RCOMP] = + dst[i * 4 + GCOMP] = + dst[i * 4 + BCOMP] = + dst[i * 4 + ACOMP] = src[0]; + } +} + +/********************************************************************** + * Functions for MESA_FORMAT_LUMINANCE_FLOAT32. + */ +static void +get_row_l_float32(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, GLint x, GLint y, void *values) +{ + const GLfloat *src = rb->GetPointer(ctx, rb, x, y); + GLfloat *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + dst[i * 4 + RCOMP] = + dst[i * 4 + GCOMP] = + dst[i * 4 + BCOMP] = src[i]; + dst[i * 4 + ACOMP] = 1.0; + } +} + +static void +get_values_l_float32(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, const GLint x[], const GLint y[], + void *values) +{ + GLfloat *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + const GLfloat *src = rb->GetPointer(ctx, rb, x[i], y[i]); + dst[i * 4 + RCOMP] = + dst[i * 4 + GCOMP] = + dst[i * 4 + BCOMP] = src[0]; + dst[i * 4 + ACOMP] = 1.0; + } +} + +/********************************************************************** + * Functions for MESA_FORMAT_ALPHA_FLOAT32. + */ +static void +get_row_a_float32(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, GLint x, GLint y, void *values) +{ + const GLfloat *src = rb->GetPointer(ctx, rb, x, y); + GLfloat *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + dst[i * 4 + RCOMP] = 0.0; + dst[i * 4 + GCOMP] = 0.0; + dst[i * 4 + BCOMP] = 0.0; + dst[i * 4 + ACOMP] = src[i]; + } +} + +static void +get_values_a_float32(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, const GLint x[], const GLint y[], + void *values) +{ + GLfloat *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + const GLfloat *src = rb->GetPointer(ctx, rb, x[i], y[i]); + dst[i * 4 + RCOMP] = 0.0; + dst[i * 4 + GCOMP] = 0.0; + dst[i * 4 + BCOMP] = 0.0; + dst[i * 4 + ACOMP] = src[0]; + } +} + +static void +put_row_a_float32(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, GLint x, GLint y, + const void *values, const GLubyte *mask) +{ + float *dst = rb->GetPointer(ctx, rb, x, y); + const float *src = values; + unsigned int i; + + if (mask) { + for (i = 0; i < count; i++) { + if (mask[i]) { + dst[i] = src[i * 4 + ACOMP]; + } + } + } + else { + for (i = 0; i < count; i++) { + dst[i] = src[i * 4 + ACOMP]; + } + } +} + +static void +put_mono_row_a_float32(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, GLint x, GLint y, + const void *value, const GLubyte *mask) +{ + float *dst = rb->GetPointer(ctx, rb, x, y); + const float *src = value; + unsigned int i; + + if (mask) { + for (i = 0; i < count; i++) { + if (mask[i]) { + dst[i] = src[ACOMP]; + } + } + } + else { + for (i = 0; i < count; i++) { + dst[i] = src[ACOMP]; + } + } +} + +static void +put_values_a_float32(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, const GLint x[], const GLint y[], + const void *values, const GLubyte *mask) +{ + const float *src = values; + unsigned int i; + + for (i = 0; i < count; i++) { + if (!mask || mask[i]) { + float *dst = rb->GetPointer(ctx, rb, x[i], y[i]); + + *dst = src[i * 4 + ACOMP]; + } + } +} + +static void +put_mono_values_a_float32(struct gl_context *ctx, + struct gl_renderbuffer *rb, + GLuint count, const GLint x[], const GLint y[], + const void *value, const GLubyte *mask) +{ + const float *src = value; + unsigned int i; + + for (i = 0; i < count; i++) { + if (!mask || mask[i]) { + float *dst = rb->GetPointer(ctx, rb, x[i], y[i]); + *dst = src[ACOMP]; + } + } +} + +/********************************************************************** + * Functions for MESA_FORMAT_R_FLOAT32. + */ +static void +get_row_r_float32(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, GLint x, GLint y, void *values) +{ + const GLfloat *src = rb->GetPointer(ctx, rb, x, y); + GLfloat *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + dst[i * 4 + RCOMP] = src[i]; + dst[i * 4 + GCOMP] = 0.0; + dst[i * 4 + BCOMP] = 0.0; + dst[i * 4 + ACOMP] = 1.0; + } +} +static void +get_values_r_float32(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, const GLint x[], const GLint y[], + void *values) +{ + GLfloat *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + const GLfloat *src = rb->GetPointer(ctx, rb, x[i], y[i]); + dst[i * 4 + RCOMP] = src[0]; + dst[i * 4 + GCOMP] = 0.0; + dst[i * 4 + BCOMP] = 0.0; + dst[i * 4 + ACOMP] = 1.0; + } +} + +/********************************************************************** + * Functions for MESA_FORMAT_RG_FLOAT32. + */ +static void +get_row_rg_float32(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, GLint x, GLint y, void *values) +{ + const GLfloat *src = rb->GetPointer(ctx, rb, x, y); + GLfloat *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + dst[i * 4 + RCOMP] = src[i * 2 + 0]; + dst[i * 4 + GCOMP] = src[i * 2 + 1]; + dst[i * 4 + BCOMP] = 0.0; + dst[i * 4 + ACOMP] = 1.0; + } +} + +static void +get_values_rg_float32(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLuint count, const GLint x[], const GLint y[], + void *values) +{ + GLfloat *dst = values; + GLuint i; + + for (i = 0; i < count; i++) { + const GLfloat *src = rb->GetPointer(ctx, rb, x[i], y[i]); + dst[i * 4 + RCOMP] = src[0]; + dst[i * 4 + GCOMP] = src[1]; + dst[i * 4 + BCOMP] = 0.0; + dst[i * 4 + ACOMP] = 1.0; + } +} /** - * This is a software fallback for the gl_renderbuffer->AllocStorage - * function. - * Device drivers will typically override this function for the buffers - * which it manages (typically color buffers, Z and stencil). - * Other buffers (like software accumulation and aux buffers) which the driver - * doesn't manage can be handled with this function. - * - * This one multi-purpose function can allocate stencil, depth, accum, color - * or color-index buffers! + * This is the default software fallback for gl_renderbuffer's span + * access functions. * - * This function also plugs in the appropriate GetPointer, Get/PutRow and - * Get/PutValues functions. + * The assumptions are that rb->Data will be a pointer to (0,0), that pixels + * are packed in the type of rb->Format, and that subsequent rows appear + * rb->RowStride pixels later. */ -GLboolean -_mesa_soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *rb, - GLenum internalFormat, - GLuint width, GLuint height) +void +_mesa_set_renderbuffer_accessors(struct gl_renderbuffer *rb) { - GLuint pixelSize; + rb->GetPointer = get_pointer_generic; + rb->GetRow = get_row_generic; - switch (internalFormat) { - case GL_RGB: - case GL_R3_G3_B2: - case GL_RGB4: - case GL_RGB5: - case GL_RGB8: - case GL_RGB10: - case GL_RGB12: - case GL_RGB16: - rb->Format = MESA_FORMAT_RGB888; + switch (rb->Format) { + case MESA_FORMAT_RGB888: rb->DataType = GL_UNSIGNED_BYTE; rb->GetPointer = get_pointer_ubyte3; rb->GetRow = get_row_ubyte3; @@ -961,135 +1394,271 @@ _mesa_soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer * rb->PutMonoRow = put_mono_row_ubyte3; rb->PutValues = put_values_ubyte3; rb->PutMonoValues = put_mono_values_ubyte3; - pixelSize = 3 * sizeof(GLubyte); break; - case GL_RGBA: - case GL_RGBA2: - case GL_RGBA4: - case GL_RGB5_A1: - case GL_RGBA8: -#if 1 - case GL_RGB10_A2: - case GL_RGBA12: -#endif - rb->Format = MESA_FORMAT_RGBA8888; + + case MESA_FORMAT_RGBA8888: rb->DataType = GL_UNSIGNED_BYTE; - rb->GetPointer = get_pointer_ubyte4; - rb->GetRow = get_row_ubyte4; rb->GetValues = get_values_ubyte4; rb->PutRow = put_row_ubyte4; rb->PutRowRGB = put_row_rgb_ubyte4; rb->PutMonoRow = put_mono_row_ubyte4; rb->PutValues = put_values_ubyte4; rb->PutMonoValues = put_mono_values_ubyte4; - pixelSize = 4 * sizeof(GLubyte); break; - case GL_RGBA16: - case GL_RGBA16_SNORM: - /* for accum buffer */ - rb->Format = MESA_FORMAT_SIGNED_RGBA_16; + + case MESA_FORMAT_R8: + rb->DataType = GL_UNSIGNED_BYTE; + rb->GetValues = get_values_r8; + rb->GetRow = get_row_r8; + rb->PutRow = put_row_generic; + rb->PutRowRGB = put_row_generic; + rb->PutMonoRow = put_mono_row_generic; + rb->PutValues = put_values_generic; + rb->PutMonoValues = put_mono_values_generic; + break; + + case MESA_FORMAT_RG88: + rb->DataType = GL_UNSIGNED_BYTE; + rb->GetValues = get_values_rg88; + rb->GetRow = get_row_rg88; + rb->PutRow = put_row_generic; + rb->PutRowRGB = put_row_generic; + rb->PutMonoRow = put_mono_row_generic; + rb->PutValues = put_values_generic; + rb->PutMonoValues = put_mono_values_generic; + break; + + case MESA_FORMAT_R16: + rb->DataType = GL_UNSIGNED_SHORT; + rb->GetValues = get_values_r16; + rb->GetRow = get_row_r16; + rb->PutRow = put_row_generic; + rb->PutRowRGB = put_row_generic; + rb->PutMonoRow = put_mono_row_generic; + rb->PutValues = put_values_generic; + rb->PutMonoValues = put_mono_values_generic; + break; + + case MESA_FORMAT_RG1616: + rb->DataType = GL_UNSIGNED_SHORT; + rb->GetValues = get_values_rg1616; + rb->GetRow = get_row_rg1616; + rb->PutRow = put_row_generic; + rb->PutRowRGB = put_row_generic; + rb->PutMonoRow = put_mono_row_generic; + rb->PutValues = put_values_generic; + rb->PutMonoValues = put_mono_values_generic; + break; + + case MESA_FORMAT_SIGNED_RGBA_16: rb->DataType = GL_SHORT; - rb->GetPointer = get_pointer_ushort4; - rb->GetRow = get_row_ushort4; rb->GetValues = get_values_ushort4; rb->PutRow = put_row_ushort4; rb->PutRowRGB = put_row_rgb_ushort4; rb->PutMonoRow = put_mono_row_ushort4; rb->PutValues = put_values_ushort4; rb->PutMonoValues = put_mono_values_ushort4; - pixelSize = 4 * sizeof(GLushort); break; + #if 0 - case GL_ALPHA8: - rb->Format = MESA_FORMAT_A8; + case MESA_FORMAT_A8: rb->DataType = GL_UNSIGNED_BYTE; - rb->GetPointer = get_pointer_alpha8; - rb->GetRow = get_row_alpha8; rb->GetValues = get_values_alpha8; rb->PutRow = put_row_alpha8; rb->PutRowRGB = NULL; rb->PutMonoRow = put_mono_row_alpha8; rb->PutValues = put_values_alpha8; rb->PutMonoValues = put_mono_values_alpha8; - pixelSize = sizeof(GLubyte); break; #endif - case GL_STENCIL_INDEX: - case GL_STENCIL_INDEX1_EXT: - case GL_STENCIL_INDEX4_EXT: - case GL_STENCIL_INDEX8_EXT: - case GL_STENCIL_INDEX16_EXT: - rb->Format = MESA_FORMAT_S8; + + case MESA_FORMAT_S8: rb->DataType = GL_UNSIGNED_BYTE; - rb->GetPointer = get_pointer_ubyte; - rb->GetRow = get_row_ubyte; rb->GetValues = get_values_ubyte; rb->PutRow = put_row_ubyte; rb->PutRowRGB = NULL; rb->PutMonoRow = put_mono_row_ubyte; rb->PutValues = put_values_ubyte; rb->PutMonoValues = put_mono_values_ubyte; - pixelSize = sizeof(GLubyte); break; - case GL_DEPTH_COMPONENT: - case GL_DEPTH_COMPONENT16: - rb->Format = MESA_FORMAT_Z16; + + case MESA_FORMAT_Z16: rb->DataType = GL_UNSIGNED_SHORT; - rb->GetPointer = get_pointer_ushort; - rb->GetRow = get_row_ushort; rb->GetValues = get_values_ushort; rb->PutRow = put_row_ushort; rb->PutRowRGB = NULL; rb->PutMonoRow = put_mono_row_ushort; rb->PutValues = put_values_ushort; rb->PutMonoValues = put_mono_values_ushort; - pixelSize = sizeof(GLushort); break; - case GL_DEPTH_COMPONENT24: + + case MESA_FORMAT_Z32: + case MESA_FORMAT_X8_Z24: + case MESA_FORMAT_Z24_X8: rb->DataType = GL_UNSIGNED_INT; - rb->GetPointer = get_pointer_uint; - rb->GetRow = get_row_uint; rb->GetValues = get_values_uint; rb->PutRow = put_row_uint; rb->PutRowRGB = NULL; rb->PutMonoRow = put_mono_row_uint; rb->PutValues = put_values_uint; rb->PutMonoValues = put_mono_values_uint; - rb->Format = MESA_FORMAT_X8_Z24; - pixelSize = sizeof(GLuint); break; - case GL_DEPTH_COMPONENT32: - rb->DataType = GL_UNSIGNED_INT; - rb->GetPointer = get_pointer_uint; - rb->GetRow = get_row_uint; + + case MESA_FORMAT_Z24_S8: + case MESA_FORMAT_S8_Z24: + rb->DataType = GL_UNSIGNED_INT_24_8_EXT; rb->GetValues = get_values_uint; rb->PutRow = put_row_uint; rb->PutRowRGB = NULL; rb->PutMonoRow = put_mono_row_uint; rb->PutValues = put_values_uint; rb->PutMonoValues = put_mono_values_uint; + break; + + case MESA_FORMAT_RGBA_FLOAT32: + rb->GetRow = get_row_generic; + rb->GetValues = get_values_generic; + rb->PutRow = put_row_generic; + rb->PutRowRGB = NULL; + rb->PutMonoRow = put_mono_row_generic; + rb->PutValues = put_values_generic; + rb->PutMonoValues = put_mono_values_generic; + break; + + case MESA_FORMAT_INTENSITY_FLOAT32: + rb->GetRow = get_row_i_float32; + rb->GetValues = get_values_i_float32; + rb->PutRow = put_row_generic; + rb->PutRowRGB = NULL; + rb->PutMonoRow = put_mono_row_generic; + rb->PutValues = put_values_generic; + rb->PutMonoValues = put_mono_values_generic; + break; + + case MESA_FORMAT_LUMINANCE_FLOAT32: + rb->GetRow = get_row_l_float32; + rb->GetValues = get_values_l_float32; + rb->PutRow = put_row_generic; + rb->PutRowRGB = NULL; + rb->PutMonoRow = put_mono_row_generic; + rb->PutValues = put_values_generic; + rb->PutMonoValues = put_mono_values_generic; + break; + + case MESA_FORMAT_ALPHA_FLOAT32: + rb->GetRow = get_row_a_float32; + rb->GetValues = get_values_a_float32; + rb->PutRow = put_row_a_float32; + rb->PutRowRGB = NULL; + rb->PutMonoRow = put_mono_row_a_float32; + rb->PutValues = put_values_a_float32; + rb->PutMonoValues = put_mono_values_a_float32; + break; + + case MESA_FORMAT_RG_FLOAT32: + rb->GetRow = get_row_rg_float32; + rb->GetValues = get_values_rg_float32; + rb->PutRow = put_row_generic; + rb->PutRowRGB = NULL; + rb->PutMonoRow = put_mono_row_generic; + rb->PutValues = put_values_generic; + rb->PutMonoValues = put_mono_values_generic; + break; + + case MESA_FORMAT_R_FLOAT32: + rb->GetRow = get_row_r_float32; + rb->GetValues = get_values_r_float32; + rb->PutRow = put_row_generic; + rb->PutRowRGB = NULL; + rb->PutMonoRow = put_mono_row_generic; + rb->PutValues = put_values_generic; + rb->PutMonoValues = put_mono_values_generic; + break; + + default: + break; + } +} + +/** + * This is a software fallback for the gl_renderbuffer->AllocStorage + * function. + * Device drivers will typically override this function for the buffers + * which it manages (typically color buffers, Z and stencil). + * Other buffers (like software accumulation and aux buffers) which the driver + * doesn't manage can be handled with this function. + * + * This one multi-purpose function can allocate stencil, depth, accum, color + * or color-index buffers! + * + * This function also plugs in the appropriate GetPointer, Get/PutRow and + * Get/PutValues functions. + */ +GLboolean +_mesa_soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *rb, + GLenum internalFormat, + GLuint width, GLuint height) +{ + switch (internalFormat) { + case GL_RGB: + case GL_R3_G3_B2: + case GL_RGB4: + case GL_RGB5: + case GL_RGB8: + case GL_RGB10: + case GL_RGB12: + case GL_RGB16: + rb->Format = MESA_FORMAT_RGB888; + break; + case GL_RGBA: + case GL_RGBA2: + case GL_RGBA4: + case GL_RGB5_A1: + case GL_RGBA8: +#if 1 + case GL_RGB10_A2: + case GL_RGBA12: +#endif + rb->Format = MESA_FORMAT_RGBA8888; + break; + case GL_RGBA16: + case GL_RGBA16_SNORM: + /* for accum buffer */ + rb->Format = MESA_FORMAT_SIGNED_RGBA_16; + break; +#if 0 + case GL_ALPHA8: + rb->Format = MESA_FORMAT_A8; + break; +#endif + case GL_STENCIL_INDEX: + case GL_STENCIL_INDEX1_EXT: + case GL_STENCIL_INDEX4_EXT: + case GL_STENCIL_INDEX8_EXT: + case GL_STENCIL_INDEX16_EXT: + rb->Format = MESA_FORMAT_S8; + break; + case GL_DEPTH_COMPONENT: + case GL_DEPTH_COMPONENT16: + rb->Format = MESA_FORMAT_Z16; + break; + case GL_DEPTH_COMPONENT24: + rb->Format = MESA_FORMAT_X8_Z24; + break; + case GL_DEPTH_COMPONENT32: rb->Format = MESA_FORMAT_Z32; - pixelSize = sizeof(GLuint); break; case GL_DEPTH_STENCIL_EXT: case GL_DEPTH24_STENCIL8_EXT: rb->Format = MESA_FORMAT_Z24_S8; - rb->DataType = GL_UNSIGNED_INT_24_8_EXT; - rb->GetPointer = get_pointer_uint; - rb->GetRow = get_row_uint; - rb->GetValues = get_values_uint; - rb->PutRow = put_row_uint; - rb->PutRowRGB = NULL; - rb->PutMonoRow = put_mono_row_uint; - rb->PutValues = put_values_uint; - rb->PutMonoValues = put_mono_values_uint; - pixelSize = sizeof(GLuint); break; default: /* unsupported format */ return GL_FALSE; } + _mesa_set_renderbuffer_accessors(rb); + ASSERT(rb->DataType); ASSERT(rb->GetPointer); ASSERT(rb->GetRow); @@ -1105,16 +1674,19 @@ _mesa_soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer * rb->Data = NULL; } + rb->RowStride = width; + if (width > 0 && height > 0) { /* allocate new buffer storage */ - rb->Data = malloc(width * height * pixelSize); + rb->Data = malloc(width * height * _mesa_get_format_bytes(rb->Format)); if (rb->Data == NULL) { rb->Width = 0; rb->Height = 0; + rb->RowStride = 0; _mesa_error(ctx, GL_OUT_OF_MEMORY, "software renderbuffer allocation (%d x %d x %d)", - width, height, pixelSize); + width, height, _mesa_get_format_bytes(rb->Format)); return GL_FALSE; } } @@ -1122,7 +1694,20 @@ _mesa_soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer * rb->Width = width; rb->Height = height; rb->_BaseFormat = _mesa_base_fbo_format(ctx, internalFormat); - ASSERT(rb->_BaseFormat); + + if (rb->Name == 0 && + internalFormat == GL_RGBA16_SNORM && + rb->_BaseFormat == 0) { + /* NOTE: This is a special case just for accumulation buffers. + * This is a very limited use case- there's no snorm texturing or + * rendering going on. + */ + rb->_BaseFormat = GL_RGBA; + } + else { + /* the internalFormat should have been error checked long ago */ + ASSERT(rb->_BaseFormat); + } return GL_TRUE; } @@ -1172,6 +1757,7 @@ alloc_storage_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, arb->Width = width; arb->Height = height; + arb->RowStride = width; return GL_TRUE; } @@ -1207,7 +1793,7 @@ get_row_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLuint count GLint x, GLint y, void *values) { /* NOTE: 'values' is RGBA format! */ - const GLubyte *src = (const GLubyte *) arb->Data + y * arb->Width + x; + const GLubyte *src = (const GLubyte *) arb->Data + y * arb->RowStride + x; GLubyte *dst = (GLubyte *) values; GLuint i; ASSERT(arb != arb->Wrapped); @@ -1233,7 +1819,7 @@ get_values_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLuint co arb->Wrapped->GetValues(ctx, arb->Wrapped, count, x, y, values); /* second, fill in alpha values from this buffer! */ for (i = 0; i < count; i++) { - const GLubyte *src = (GLubyte *) arb->Data + y[i] * arb->Width + x[i]; + const GLubyte *src = (GLubyte *) arb->Data + y[i] * arb->RowStride + x[i]; dst[i * 4 + 3] = *src; } } @@ -1244,7 +1830,7 @@ put_row_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLuint count GLint x, GLint y, const void *values, const GLubyte *mask) { const GLubyte *src = (const GLubyte *) values; - GLubyte *dst = (GLubyte *) arb->Data + y * arb->Width + x; + GLubyte *dst = (GLubyte *) arb->Data + y * arb->RowStride + x; GLuint i; ASSERT(arb != arb->Wrapped); ASSERT(arb->DataType == GL_UNSIGNED_BYTE); @@ -1264,7 +1850,7 @@ put_row_rgb_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLuint c GLint x, GLint y, const void *values, const GLubyte *mask) { const GLubyte *src = (const GLubyte *) values; - GLubyte *dst = (GLubyte *) arb->Data + y * arb->Width + x; + GLubyte *dst = (GLubyte *) arb->Data + y * arb->RowStride + x; GLuint i; ASSERT(arb != arb->Wrapped); ASSERT(arb->DataType == GL_UNSIGNED_BYTE); @@ -1284,7 +1870,7 @@ put_mono_row_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLuint GLint x, GLint y, const void *value, const GLubyte *mask) { const GLubyte val = ((const GLubyte *) value)[3]; - GLubyte *dst = (GLubyte *) arb->Data + y * arb->Width + x; + GLubyte *dst = (GLubyte *) arb->Data + y * arb->RowStride + x; ASSERT(arb != arb->Wrapped); ASSERT(arb->DataType == GL_UNSIGNED_BYTE); /* first, pass the call to the wrapped RGB buffer */ @@ -1318,7 +1904,7 @@ put_values_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, GLuint co /* second, store alpha in our buffer */ for (i = 0; i < count; i++) { if (!mask || mask[i]) { - GLubyte *dst = (GLubyte *) arb->Data + y[i] * arb->Width + x[i]; + GLubyte *dst = (GLubyte *) arb->Data + y[i] * arb->RowStride + x[i]; *dst = src[i * 4 + 3]; } } @@ -1339,7 +1925,7 @@ put_mono_values_alpha8(struct gl_context *ctx, struct gl_renderbuffer *arb, /* second, store alpha in our buffer */ for (i = 0; i < count; i++) { if (!mask || mask[i]) { - GLubyte *dst = (GLubyte *) arb->Data + y[i] * arb->Width + x[i]; + GLubyte *dst = (GLubyte *) arb->Data + y[i] * arb->RowStride + x[i]; *dst = val; } } @@ -1353,8 +1939,9 @@ copy_buffer_alpha8(struct gl_renderbuffer* dst, struct gl_renderbuffer* src) ASSERT(src->Format == MESA_FORMAT_A8); ASSERT(dst->Width == src->Width); ASSERT(dst->Height == src->Height); + ASSERT(dst->RowStride == src->RowStride); - memcpy(dst->Data, src->Data, dst->Width * dst->Height * sizeof(GLubyte)); + memcpy(dst->Data, src->Data, dst->RowStride * dst->Height * sizeof(GLubyte)); } @@ -1382,7 +1969,6 @@ _mesa_init_renderbuffer(struct gl_renderbuffer *rb, GLuint name) { _glthread_INIT_MUTEX(rb->Mutex); - rb->Magic = RB_MAGIC; rb->ClassID = 0; rb->Name = name; rb->RefCount = 0; @@ -1957,9 +2543,7 @@ _mesa_reference_renderbuffer(struct gl_renderbuffer **ptr, GLboolean deleteFlag = GL_FALSE; struct gl_renderbuffer *oldRb = *ptr; - assert(oldRb->Magic == RB_MAGIC); _glthread_LOCK_MUTEX(oldRb->Mutex); - assert(oldRb->Magic == RB_MAGIC); ASSERT(oldRb->RefCount > 0); oldRb->RefCount--; /*printf("RB DECR %p (%d) to %d\n", (void*) oldRb, oldRb->Name, oldRb->RefCount);*/ @@ -1967,7 +2551,6 @@ _mesa_reference_renderbuffer(struct gl_renderbuffer **ptr, _glthread_UNLOCK_MUTEX(oldRb->Mutex); if (deleteFlag) { - oldRb->Magic = 0; /* now invalid memory! */ oldRb->Delete(oldRb); } @@ -1976,7 +2559,6 @@ _mesa_reference_renderbuffer(struct gl_renderbuffer **ptr, assert(!*ptr); if (rb) { - assert(rb->Magic == RB_MAGIC); /* reference new renderbuffer */ _glthread_LOCK_MUTEX(rb->Mutex); rb->RefCount++; diff --git a/src/mesa/main/renderbuffer.h b/src/mesa/main/renderbuffer.h index 4702a8e952a..39d9b3035e6 100644 --- a/src/mesa/main/renderbuffer.h +++ b/src/mesa/main/renderbuffer.h @@ -46,6 +46,8 @@ _mesa_delete_renderbuffer(struct gl_renderbuffer *rb); extern struct gl_renderbuffer * _mesa_new_soft_renderbuffer(struct gl_context *ctx, GLuint name); +extern void +_mesa_set_renderbuffer_accessors(struct gl_renderbuffer *rb); extern GLboolean _mesa_soft_renderbuffer_storage(struct gl_context *ctx, struct gl_renderbuffer *rb, diff --git a/src/mesa/main/samplerobj.c b/src/mesa/main/samplerobj.c new file mode 100644 index 00000000000..4a28c917cd7 --- /dev/null +++ b/src/mesa/main/samplerobj.c @@ -0,0 +1,1355 @@ +/* + * Mesa 3-D graphics library + * + * Copyright (C) 2011 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 samplerobj.c + * \brief Functions for the GL_ARB_sampler_objects extension. + * \author Brian Paul + */ + + +#include "main/glheader.h" +#include "main/context.h" +#include "main/dispatch.h" +#include "main/enums.h" +#include "main/hash.h" +#include "main/macros.h" +#include "main/mfeatures.h" +#include "main/mtypes.h" +#include "main/samplerobj.h" + + +static struct gl_sampler_object * +_mesa_lookup_samplerobj(struct gl_context *ctx, GLuint name) +{ + if (name == 0) + return NULL; + else + return (struct gl_sampler_object *) + _mesa_HashLookup(ctx->Shared->SamplerObjects, name); +} + + +/** + * Handle reference counting. + */ +void +_mesa_reference_sampler_object(struct gl_context *ctx, + struct gl_sampler_object **ptr, + struct gl_sampler_object *samp) +{ + if (*ptr == samp) + return; + + if (*ptr) { + /* Unreference the old sampler */ + GLboolean deleteFlag = GL_FALSE; + struct gl_sampler_object *oldSamp = *ptr; + + /*_glthread_LOCK_MUTEX(oldSamp->Mutex);*/ + ASSERT(oldSamp->RefCount > 0); + oldSamp->RefCount--; +#if 0 + printf("SamplerObj %p %d DECR to %d\n", + (void *) oldSamp, oldSamp->Name, oldSamp->RefCount); +#endif + deleteFlag = (oldSamp->RefCount == 0); + /*_glthread_UNLOCK_MUTEX(oldSamp->Mutex);*/ + + if (deleteFlag) { + ASSERT(ctx->Driver.DeleteSamplerObject); + ctx->Driver.DeleteSamplerObject(ctx, oldSamp); + } + + *ptr = NULL; + } + ASSERT(!*ptr); + + if (samp) { + /* reference new sampler */ + /*_glthread_LOCK_MUTEX(samp->Mutex);*/ + if (samp->RefCount == 0) { + /* this sampler's being deleted (look just above) */ + /* Not sure this can every really happen. Warn if it does. */ + _mesa_problem(NULL, "referencing deleted sampler object"); + *ptr = NULL; + } + else { + samp->RefCount++; +#if 0 + printf("SamplerObj %p %d INCR to %d\n", + (void *) samp, samp->Name, samp->RefCount); +#endif + *ptr = samp; + } + /*_glthread_UNLOCK_MUTEX(samp->Mutex);*/ + } +} + + +/** + * Initialize the fields of the given sampler object. + */ +void +_mesa_init_sampler_object(struct gl_sampler_object *sampObj, GLuint name) +{ + sampObj->Name = name; + sampObj->RefCount = 1; + sampObj->WrapS = GL_REPEAT; + sampObj->WrapT = GL_REPEAT; + sampObj->WrapR = GL_REPEAT; + sampObj->MinFilter = GL_NEAREST_MIPMAP_LINEAR; + sampObj->MagFilter = GL_LINEAR; + sampObj->BorderColor.f[0] = 0.0; + sampObj->BorderColor.f[1] = 0.0; + sampObj->BorderColor.f[2] = 0.0; + sampObj->BorderColor.f[3] = 0.0; + sampObj->MinLod = -1000.0F; + sampObj->MaxLod = 1000.0F; + sampObj->LodBias = 0.0F; + sampObj->MaxAnisotropy = 1.0F; + sampObj->CompareMode = GL_NONE; + sampObj->CompareFunc = GL_LEQUAL; + sampObj->CompareFailValue = 0.0; + sampObj->sRGBDecode = GL_FALSE; + sampObj->DepthMode = 0; +} + + +/** + * Fallback for ctx->Driver.NewSamplerObject(); + */ +struct gl_sampler_object * +_mesa_new_sampler_object(struct gl_context *ctx, GLuint name) +{ + struct gl_sampler_object *sampObj = CALLOC_STRUCT(gl_sampler_object); + if (sampObj) { + _mesa_init_sampler_object(sampObj, name); + } + return sampObj; +} + + +/** + * Fallback for ctx->Driver.DeleteSamplerObject(); + */ +void +_mesa_delete_sampler_object(struct gl_context *ctx, + struct gl_sampler_object *sampObj) +{ + FREE(sampObj); +} + + +static void GLAPIENTRY +_mesa_GenSamplers(GLsizei count, GLuint *samplers) +{ + GET_CURRENT_CONTEXT(ctx); + GLuint first; + GLint i; + + ASSERT_OUTSIDE_BEGIN_END(ctx); + + if (MESA_VERBOSE & VERBOSE_API) + _mesa_debug(ctx, "glGenSamplers(%d)\n", count); + + if (count < 0) { + _mesa_error(ctx, GL_INVALID_VALUE, "glGenSamplers"); + return; + } + + if (!samplers) + return; + + first = _mesa_HashFindFreeKeyBlock(ctx->Shared->SamplerObjects, count); + + /* Insert the ID and pointer to new sampler object into hash table */ + for (i = 0; i < count; i++) { + struct gl_sampler_object *sampObj = + ctx->Driver.NewSamplerObject(ctx, first + i); + _mesa_HashInsert(ctx->Shared->SamplerObjects, first + i, sampObj); + samplers[i] = first + i; + } +} + + +static void GLAPIENTRY +_mesa_DeleteSamplers(GLsizei count, const GLuint *samplers) +{ + GET_CURRENT_CONTEXT(ctx); + GLsizei i; + + ASSERT_OUTSIDE_BEGIN_END(ctx); + FLUSH_VERTICES(ctx, 0); + + if (count < 0) { + _mesa_error(ctx, GL_INVALID_VALUE, "glDeleteSamplers(count)"); + return; + } + + _glthread_LOCK_MUTEX(ctx->Shared->Mutex); + + for (i = 0; i < count; i++) { + if (samplers[i]) { + struct gl_sampler_object *sampObj = + _mesa_lookup_samplerobj(ctx, samplers[i]); + if (sampObj) { + /* The ID is immediately freed for re-use */ + _mesa_HashRemove(ctx->Shared->SamplerObjects, samplers[i]); + /* But the object exists until its reference count goes to zero */ + _mesa_reference_sampler_object(ctx, &sampObj, NULL); + } + } + } + + _glthread_UNLOCK_MUTEX(ctx->Shared->Mutex); +} + + +static GLboolean GLAPIENTRY +_mesa_IsSampler(GLuint sampler) +{ + struct gl_sampler_object *sampObj; + GET_CURRENT_CONTEXT(ctx); + + ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_FALSE); + + if (sampler == 0) + return GL_FALSE; + + sampObj = _mesa_lookup_samplerobj(ctx, sampler); + + return sampObj != NULL; +} + + +static void GLAPIENTRY +_mesa_BindSampler(GLuint unit, GLuint sampler) +{ + struct gl_sampler_object *sampObj; + GET_CURRENT_CONTEXT(ctx); + + if (unit >= ctx->Const.MaxTextureImageUnits) { + _mesa_error(ctx, GL_INVALID_VALUE, "glBindSampler(unit %u)", unit); + return; + } + + if (sampler == 0) { + /* Use the default sampler object, the one contained in the texture + * object. + */ + sampObj = NULL; + } + else { + /* user-defined sampler object */ + sampObj = _mesa_lookup_samplerobj(ctx, sampler); + if (!sampObj) { + _mesa_error(ctx, GL_INVALID_OPERATION, "glBindSampler(sampler)"); + return; + } + } + + if (ctx->Texture.Unit[unit].Sampler != sampObj) { + FLUSH_VERTICES(ctx, _NEW_TEXTURE); + } + + /* bind new sampler */ + _mesa_reference_sampler_object(ctx, &ctx->Texture.Unit[unit].Sampler, + sampObj); +} + + +/** + * Check if a coordinate wrap mode is legal. + * \return GL_TRUE if legal, GL_FALSE otherwise + */ +static GLboolean +validate_texture_wrap_mode(struct gl_context *ctx, GLenum wrap) +{ + const struct gl_extensions * const e = &ctx->Extensions; + + switch (wrap) { + case GL_CLAMP: + case GL_CLAMP_TO_EDGE: + case GL_REPEAT: + return GL_TRUE; + case GL_CLAMP_TO_BORDER: + return e->ARB_texture_border_clamp; + case GL_MIRRORED_REPEAT: + return e->ARB_texture_mirrored_repeat; + case GL_MIRROR_CLAMP_EXT: + return e->ATI_texture_mirror_once || e->EXT_texture_mirror_clamp; + case GL_MIRROR_CLAMP_TO_EDGE_EXT: + return e->ATI_texture_mirror_once || e->EXT_texture_mirror_clamp; + case GL_MIRROR_CLAMP_TO_BORDER_EXT: + return e->EXT_texture_mirror_clamp; + default: + return GL_FALSE; + } +} + + +/** + * This is called just prior to changing any sampler object state. + */ +static INLINE void +flush(struct gl_context *ctx) +{ + FLUSH_VERTICES(ctx, _NEW_TEXTURE); +} + + +#define INVALID_PARAM 0x100 +#define INVALID_PNAME 0x101 +#define INVALID_VALUE 0x102 + +static GLuint +set_sampler_wrap_s(struct gl_context *ctx, struct gl_sampler_object *samp, + GLint param) +{ + if (samp->WrapS == param) + return GL_FALSE; + if (validate_texture_wrap_mode(ctx, param)) { + flush(ctx); + samp->WrapS = param; + return GL_TRUE; + } + return INVALID_PARAM; +} + + +static GLuint +set_sampler_wrap_t(struct gl_context *ctx, struct gl_sampler_object *samp, + GLint param) +{ + if (samp->WrapT == param) + return GL_FALSE; + if (validate_texture_wrap_mode(ctx, param)) { + flush(ctx); + samp->WrapT = param; + return GL_TRUE; + } + return INVALID_PARAM; +} + + +static GLuint +set_sampler_wrap_r(struct gl_context *ctx, struct gl_sampler_object *samp, + GLint param) +{ + if (samp->WrapR == param) + return GL_FALSE; + if (validate_texture_wrap_mode(ctx, param)) { + flush(ctx); + samp->WrapR = param; + return GL_TRUE; + } + return INVALID_PARAM; +} + + +static GLuint +set_sampler_min_filter(struct gl_context *ctx, struct gl_sampler_object *samp, + GLint param) +{ + if (samp->MinFilter == param) + return GL_FALSE; + + switch (param) { + case GL_NEAREST: + case GL_LINEAR: + case GL_NEAREST_MIPMAP_NEAREST: + case GL_LINEAR_MIPMAP_NEAREST: + case GL_NEAREST_MIPMAP_LINEAR: + case GL_LINEAR_MIPMAP_LINEAR: + flush(ctx); + samp->MinFilter = param; + return GL_TRUE; + default: + return INVALID_PARAM; + } +} + + +static GLuint +set_sampler_mag_filter(struct gl_context *ctx, struct gl_sampler_object *samp, + GLint param) +{ + if (samp->MagFilter == param) + return GL_FALSE; + + switch (param) { + case GL_NEAREST: + case GL_LINEAR: + flush(ctx); + samp->MagFilter = param; + return GL_TRUE; + default: + return INVALID_PARAM; + } +} + + +static GLuint +set_sampler_lod_bias(struct gl_context *ctx, struct gl_sampler_object *samp, + GLfloat param) +{ + if (samp->LodBias == param) + return GL_FALSE; + + flush(ctx); + samp->LodBias = param; + return GL_TRUE; +} + + +static GLuint +set_sampler_border_colorf(struct gl_context *ctx, + struct gl_sampler_object *samp, + const GLfloat params[4]) +{ + flush(ctx); + samp->BorderColor.f[RCOMP] = params[0]; + samp->BorderColor.f[GCOMP] = params[1]; + samp->BorderColor.f[BCOMP] = params[2]; + samp->BorderColor.f[ACOMP] = params[3]; + return GL_TRUE; +} + + +static GLuint +set_sampler_border_colori(struct gl_context *ctx, + struct gl_sampler_object *samp, + const GLint params[4]) +{ + flush(ctx); + samp->BorderColor.i[RCOMP] = params[0]; + samp->BorderColor.i[GCOMP] = params[1]; + samp->BorderColor.i[BCOMP] = params[2]; + samp->BorderColor.i[ACOMP] = params[3]; + return GL_TRUE; +} + + +static GLuint +set_sampler_border_colorui(struct gl_context *ctx, + struct gl_sampler_object *samp, + const GLuint params[4]) +{ + flush(ctx); + samp->BorderColor.ui[RCOMP] = params[0]; + samp->BorderColor.ui[GCOMP] = params[1]; + samp->BorderColor.ui[BCOMP] = params[2]; + samp->BorderColor.ui[ACOMP] = params[3]; + return GL_TRUE; +} + + +static GLuint +set_sampler_min_lod(struct gl_context *ctx, struct gl_sampler_object *samp, + GLfloat param) +{ + if (samp->MinLod == param) + return GL_FALSE; + + flush(ctx); + samp->MinLod = param; + return GL_TRUE; +} + + +static GLuint +set_sampler_max_lod(struct gl_context *ctx, struct gl_sampler_object *samp, + GLfloat param) +{ + if (samp->MaxLod == param) + return GL_FALSE; + + flush(ctx); + samp->MaxLod = param; + return GL_TRUE; +} + + +static GLuint +set_sampler_compare_mode(struct gl_context *ctx, + struct gl_sampler_object *samp, GLint param) +{ + if (!ctx->Extensions.ARB_shadow) + return INVALID_PNAME; + + if (samp->CompareMode == param) + return GL_FALSE; + + if (param == GL_NONE || + param == GL_COMPARE_R_TO_TEXTURE_ARB) { + flush(ctx); + samp->CompareMode = param; + return GL_TRUE; + } + + return INVALID_PARAM; +} + + +static GLuint +set_sampler_compare_func(struct gl_context *ctx, + struct gl_sampler_object *samp, GLint param) +{ + if (!ctx->Extensions.ARB_shadow) + return INVALID_PNAME; + + if (samp->CompareFunc == param) + return GL_FALSE; + + switch (param) { + case GL_LEQUAL: + case GL_GEQUAL: + flush(ctx); + samp->CompareFunc = param; + return GL_TRUE; + case GL_EQUAL: + case GL_NOTEQUAL: + case GL_LESS: + case GL_GREATER: + case GL_ALWAYS: + case GL_NEVER: + if (ctx->Extensions.EXT_shadow_funcs) { + flush(ctx); + samp->CompareFunc = param; + return GL_TRUE; + } + /* fall-through */ + default: + return INVALID_PARAM; + } +} + + +static GLuint +set_sampler_max_anisotropy(struct gl_context *ctx, + struct gl_sampler_object *samp, GLfloat param) +{ + if (!ctx->Extensions.EXT_texture_filter_anisotropic) + return INVALID_PNAME; + + if (samp->MaxAnisotropy == param) + return GL_FALSE; + + if (param < 1.0) + return INVALID_VALUE; + + flush(ctx); + /* clamp to max, that's what NVIDIA does */ + samp->MaxAnisotropy = MIN2(param, ctx->Const.MaxTextureMaxAnisotropy); + return GL_TRUE; +} + + +static void GLAPIENTRY +_mesa_SamplerParameteri(GLuint sampler, GLenum pname, GLint param) +{ + struct gl_sampler_object *sampObj; + GLuint res; + GET_CURRENT_CONTEXT(ctx); + + sampObj = _mesa_lookup_samplerobj(ctx, sampler); + if (!sampObj) { + _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameteri(sampler %u)", + sampler); + return; + } + + switch (pname) { + case GL_TEXTURE_WRAP_S: + res = set_sampler_wrap_s(ctx, sampObj, param); + break; + case GL_TEXTURE_WRAP_T: + res = set_sampler_wrap_t(ctx, sampObj, param); + break; + case GL_TEXTURE_WRAP_R: + res = set_sampler_wrap_r(ctx, sampObj, param); + break; + case GL_TEXTURE_MIN_FILTER: + res = set_sampler_min_filter(ctx, sampObj, param); + break; + case GL_TEXTURE_MAG_FILTER: + res = set_sampler_mag_filter(ctx, sampObj, param); + break; + case GL_TEXTURE_MIN_LOD: + res = set_sampler_min_lod(ctx, sampObj, (GLfloat) param); + break; + case GL_TEXTURE_MAX_LOD: + res = set_sampler_max_lod(ctx, sampObj, (GLfloat) param); + break; + case GL_TEXTURE_LOD_BIAS: + res = set_sampler_lod_bias(ctx, sampObj, (GLfloat) param); + break; + case GL_TEXTURE_COMPARE_MODE: + res = set_sampler_compare_mode(ctx, sampObj, param); + break; + case GL_TEXTURE_COMPARE_FUNC: + res = set_sampler_compare_func(ctx, sampObj, param); + break; + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + res = set_sampler_max_anisotropy(ctx, sampObj, (GLfloat) param); + break; + case GL_TEXTURE_BORDER_COLOR: + /* fall-through */ + default: + res = INVALID_PNAME; + } + + switch (res) { + case GL_FALSE: + /* no change */ + break; + case GL_TRUE: + /* state change - we do nothing special at this time */ + break; + case INVALID_PNAME: + _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameteri(pname=%s)\n", + _mesa_lookup_enum_by_nr(pname)); + break; + case INVALID_PARAM: + _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameteri(param=%d)\n", + param); + break; + case INVALID_VALUE: + _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameteri(param=%d)\n", + param); + break; + default: + ; + } +} + + +static void GLAPIENTRY +_mesa_SamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) +{ + struct gl_sampler_object *sampObj; + GLuint res; + GET_CURRENT_CONTEXT(ctx); + + ASSERT_OUTSIDE_BEGIN_END(ctx); + + sampObj = _mesa_lookup_samplerobj(ctx, sampler); + if (!sampObj) { + _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterf(sampler %u)", + sampler); + return; + } + + switch (pname) { + case GL_TEXTURE_WRAP_S: + res = set_sampler_wrap_s(ctx, sampObj, (GLint) param); + break; + case GL_TEXTURE_WRAP_T: + res = set_sampler_wrap_t(ctx, sampObj, (GLint) param); + break; + case GL_TEXTURE_WRAP_R: + res = set_sampler_wrap_r(ctx, sampObj, (GLint) param); + break; + case GL_TEXTURE_MIN_FILTER: + res = set_sampler_min_filter(ctx, sampObj, (GLint) param); + break; + case GL_TEXTURE_MAG_FILTER: + res = set_sampler_mag_filter(ctx, sampObj, (GLint) param); + break; + case GL_TEXTURE_MIN_LOD: + res = set_sampler_min_lod(ctx, sampObj, param); + break; + case GL_TEXTURE_MAX_LOD: + res = set_sampler_max_lod(ctx, sampObj, param); + break; + case GL_TEXTURE_LOD_BIAS: + res = set_sampler_lod_bias(ctx, sampObj, param); + break; + case GL_TEXTURE_COMPARE_MODE: + res = set_sampler_compare_mode(ctx, sampObj, (GLint) param); + break; + case GL_TEXTURE_COMPARE_FUNC: + res = set_sampler_compare_func(ctx, sampObj, (GLint) param); + break; + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + res = set_sampler_max_anisotropy(ctx, sampObj, param); + break; + case GL_TEXTURE_BORDER_COLOR: + /* fall-through */ + default: + res = INVALID_PNAME; + } + + switch (res) { + case GL_FALSE: + /* no change */ + break; + case GL_TRUE: + /* state change - we do nothing special at this time */ + break; + case INVALID_PNAME: + _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterf(pname=%s)\n", + _mesa_lookup_enum_by_nr(pname)); + break; + case INVALID_PARAM: + _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterf(param=%f)\n", + param); + break; + case INVALID_VALUE: + _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterf(param=%f)\n", + param); + break; + default: + ; + } +} + +static void GLAPIENTRY +_mesa_SamplerParameteriv(GLuint sampler, GLenum pname, const GLint *params) +{ + struct gl_sampler_object *sampObj; + GLuint res; + GET_CURRENT_CONTEXT(ctx); + + sampObj = _mesa_lookup_samplerobj(ctx, sampler); + if (!sampObj) { + _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameteriv(sampler %u)", + sampler); + return; + } + + switch (pname) { + case GL_TEXTURE_WRAP_S: + res = set_sampler_wrap_s(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_WRAP_T: + res = set_sampler_wrap_t(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_WRAP_R: + res = set_sampler_wrap_r(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_MIN_FILTER: + res = set_sampler_min_filter(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_MAG_FILTER: + res = set_sampler_mag_filter(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_MIN_LOD: + res = set_sampler_min_lod(ctx, sampObj, (GLfloat) params[0]); + break; + case GL_TEXTURE_MAX_LOD: + res = set_sampler_max_lod(ctx, sampObj, (GLfloat) params[0]); + break; + case GL_TEXTURE_LOD_BIAS: + res = set_sampler_lod_bias(ctx, sampObj, (GLfloat) params[0]); + break; + case GL_TEXTURE_COMPARE_MODE: + res = set_sampler_compare_mode(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_COMPARE_FUNC: + res = set_sampler_compare_func(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + res = set_sampler_max_anisotropy(ctx, sampObj, (GLfloat) params[0]); + break; + case GL_TEXTURE_BORDER_COLOR: + { + GLfloat c[4]; + c[0] = INT_TO_FLOAT(params[0]); + c[1] = INT_TO_FLOAT(params[1]); + c[2] = INT_TO_FLOAT(params[2]); + c[3] = INT_TO_FLOAT(params[3]); + res = set_sampler_border_colorf(ctx, sampObj, c); + } + break; + default: + res = INVALID_PNAME; + } + + switch (res) { + case GL_FALSE: + /* no change */ + break; + case GL_TRUE: + /* state change - we do nothing special at this time */ + break; + case INVALID_PNAME: + _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameteriv(pname=%s)\n", + _mesa_lookup_enum_by_nr(pname)); + break; + case INVALID_PARAM: + _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameteriv(param=%d)\n", + params[0]); + break; + case INVALID_VALUE: + _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameteriv(param=%d)\n", + params[0]); + break; + default: + ; + } +} + +static void GLAPIENTRY +_mesa_SamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *params) +{ + struct gl_sampler_object *sampObj; + GLuint res; + GET_CURRENT_CONTEXT(ctx); + + ASSERT_OUTSIDE_BEGIN_END(ctx); + + sampObj = _mesa_lookup_samplerobj(ctx, sampler); + if (!sampObj) { + _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterfv(sampler %u)", + sampler); + return; + } + + switch (pname) { + case GL_TEXTURE_WRAP_S: + res = set_sampler_wrap_s(ctx, sampObj, (GLint) params[0]); + break; + case GL_TEXTURE_WRAP_T: + res = set_sampler_wrap_t(ctx, sampObj, (GLint) params[0]); + break; + case GL_TEXTURE_WRAP_R: + res = set_sampler_wrap_r(ctx, sampObj, (GLint) params[0]); + break; + case GL_TEXTURE_MIN_FILTER: + res = set_sampler_min_filter(ctx, sampObj, (GLint) params[0]); + break; + case GL_TEXTURE_MAG_FILTER: + res = set_sampler_mag_filter(ctx, sampObj, (GLint) params[0]); + break; + case GL_TEXTURE_MIN_LOD: + res = set_sampler_min_lod(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_MAX_LOD: + res = set_sampler_max_lod(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_LOD_BIAS: + res = set_sampler_lod_bias(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_COMPARE_MODE: + res = set_sampler_compare_mode(ctx, sampObj, (GLint) params[0]); + break; + case GL_TEXTURE_COMPARE_FUNC: + res = set_sampler_compare_func(ctx, sampObj, (GLint) params[0]); + break; + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + res = set_sampler_max_anisotropy(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_BORDER_COLOR: + res = set_sampler_border_colorf(ctx, sampObj, params); + break; + default: + res = INVALID_PNAME; + } + + switch (res) { + case GL_FALSE: + /* no change */ + break; + case GL_TRUE: + /* state change - we do nothing special at this time */ + break; + case INVALID_PNAME: + _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterfv(pname=%s)\n", + _mesa_lookup_enum_by_nr(pname)); + break; + case INVALID_PARAM: + _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterfv(param=%f)\n", + params[0]); + break; + case INVALID_VALUE: + _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterfv(param=%f)\n", + params[0]); + break; + default: + ; + } +} + +static void GLAPIENTRY +_mesa_SamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *params) +{ + struct gl_sampler_object *sampObj; + GLuint res; + GET_CURRENT_CONTEXT(ctx); + + sampObj = _mesa_lookup_samplerobj(ctx, sampler); + if (!sampObj) { + _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterIiv(sampler %u)", + sampler); + return; + } + + switch (pname) { + case GL_TEXTURE_WRAP_S: + res = set_sampler_wrap_s(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_WRAP_T: + res = set_sampler_wrap_t(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_WRAP_R: + res = set_sampler_wrap_r(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_MIN_FILTER: + res = set_sampler_min_filter(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_MAG_FILTER: + res = set_sampler_mag_filter(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_MIN_LOD: + res = set_sampler_min_lod(ctx, sampObj, (GLfloat) params[0]); + break; + case GL_TEXTURE_MAX_LOD: + res = set_sampler_max_lod(ctx, sampObj, (GLfloat) params[0]); + break; + case GL_TEXTURE_LOD_BIAS: + res = set_sampler_lod_bias(ctx, sampObj, (GLfloat) params[0]); + break; + case GL_TEXTURE_COMPARE_MODE: + res = set_sampler_compare_mode(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_COMPARE_FUNC: + res = set_sampler_compare_func(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + res = set_sampler_max_anisotropy(ctx, sampObj, (GLfloat) params[0]); + break; + case GL_TEXTURE_BORDER_COLOR: + res = set_sampler_border_colori(ctx, sampObj, params); + break; + default: + res = INVALID_PNAME; + } + + switch (res) { + case GL_FALSE: + /* no change */ + break; + case GL_TRUE: + /* state change - we do nothing special at this time */ + break; + case INVALID_PNAME: + _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterIiv(pname=%s)\n", + _mesa_lookup_enum_by_nr(pname)); + break; + case INVALID_PARAM: + _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterIiv(param=%d)\n", + params[0]); + break; + case INVALID_VALUE: + _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterIiv(param=%d)\n", + params[0]); + break; + default: + ; + } +} + + +static void GLAPIENTRY +_mesa_SamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *params) +{ + struct gl_sampler_object *sampObj; + GLuint res; + GET_CURRENT_CONTEXT(ctx); + + sampObj = _mesa_lookup_samplerobj(ctx, sampler); + if (!sampObj) { + _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterIuiv(sampler %u)", + sampler); + return; + } + + switch (pname) { + case GL_TEXTURE_WRAP_S: + res = set_sampler_wrap_s(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_WRAP_T: + res = set_sampler_wrap_t(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_WRAP_R: + res = set_sampler_wrap_r(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_MIN_FILTER: + res = set_sampler_min_filter(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_MAG_FILTER: + res = set_sampler_mag_filter(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_MIN_LOD: + res = set_sampler_min_lod(ctx, sampObj, (GLfloat) params[0]); + break; + case GL_TEXTURE_MAX_LOD: + res = set_sampler_max_lod(ctx, sampObj, (GLfloat) params[0]); + break; + case GL_TEXTURE_LOD_BIAS: + res = set_sampler_lod_bias(ctx, sampObj, (GLfloat) params[0]); + break; + case GL_TEXTURE_COMPARE_MODE: + res = set_sampler_compare_mode(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_COMPARE_FUNC: + res = set_sampler_compare_func(ctx, sampObj, params[0]); + break; + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + res = set_sampler_max_anisotropy(ctx, sampObj, (GLfloat) params[0]); + break; + case GL_TEXTURE_BORDER_COLOR: + res = set_sampler_border_colorui(ctx, sampObj, params); + break; + default: + res = INVALID_PNAME; + } + + switch (res) { + case GL_FALSE: + /* no change */ + break; + case GL_TRUE: + /* state change - we do nothing special at this time */ + break; + case INVALID_PNAME: + _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterIuiv(pname=%s)\n", + _mesa_lookup_enum_by_nr(pname)); + break; + case INVALID_PARAM: + _mesa_error(ctx, GL_INVALID_ENUM, "glSamplerParameterIuiv(param=%u)\n", + params[0]); + break; + case INVALID_VALUE: + _mesa_error(ctx, GL_INVALID_VALUE, "glSamplerParameterIuiv(param=%u)\n", + params[0]); + break; + default: + ; + } +} + + +static void GLAPIENTRY +_mesa_GetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) +{ + struct gl_sampler_object *sampObj; + GET_CURRENT_CONTEXT(ctx); + + sampObj = _mesa_lookup_samplerobj(ctx, sampler); + if (!sampObj) { + _mesa_error(ctx, GL_INVALID_VALUE, "glGetSamplerParameteriv(sampler %u)", + sampler); + return; + } + + switch (pname) { + case GL_TEXTURE_WRAP_S: + *params = sampObj->WrapS; + break; + case GL_TEXTURE_WRAP_T: + *params = sampObj->WrapT; + break; + case GL_TEXTURE_WRAP_R: + *params = sampObj->WrapR; + break; + case GL_TEXTURE_MIN_FILTER: + *params = sampObj->MinFilter; + break; + case GL_TEXTURE_MAG_FILTER: + *params = sampObj->MagFilter; + break; + case GL_TEXTURE_MIN_LOD: + *params = (GLint) sampObj->MinLod; + break; + case GL_TEXTURE_MAX_LOD: + *params = (GLint) sampObj->MaxLod; + break; + case GL_TEXTURE_LOD_BIAS: + *params = (GLint) sampObj->LodBias; + break; + case GL_TEXTURE_COMPARE_MODE: + if (!ctx->Extensions.ARB_shadow) + goto invalid_pname; + *params = sampObj->CompareMode; + break; + case GL_TEXTURE_COMPARE_FUNC: + if (!ctx->Extensions.ARB_shadow) + goto invalid_pname; + *params = sampObj->CompareFunc; + break; + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + *params = (GLint) sampObj->MaxAnisotropy; + break; + case GL_TEXTURE_BORDER_COLOR: + params[0] = FLOAT_TO_INT(sampObj->BorderColor.f[0]); + params[1] = FLOAT_TO_INT(sampObj->BorderColor.f[1]); + params[2] = FLOAT_TO_INT(sampObj->BorderColor.f[2]); + params[3] = FLOAT_TO_INT(sampObj->BorderColor.f[3]); + break; + default: + goto invalid_pname; + } + return; + +invalid_pname: + _mesa_error(ctx, GL_INVALID_ENUM, "glGetSamplerParameteriv(pname=%s)", + _mesa_lookup_enum_by_nr(pname)); +} + + +static void GLAPIENTRY +_mesa_GetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) +{ + struct gl_sampler_object *sampObj; + GET_CURRENT_CONTEXT(ctx); + + sampObj = _mesa_lookup_samplerobj(ctx, sampler); + if (!sampObj) { + _mesa_error(ctx, GL_INVALID_VALUE, "glGetSamplerParameterfv(sampler %u)", + sampler); + return; + } + + switch (pname) { + case GL_TEXTURE_WRAP_S: + *params = (GLfloat) sampObj->WrapS; + break; + case GL_TEXTURE_WRAP_T: + *params = (GLfloat) sampObj->WrapT; + break; + case GL_TEXTURE_WRAP_R: + *params = (GLfloat) sampObj->WrapR; + break; + case GL_TEXTURE_MIN_FILTER: + *params = (GLfloat) sampObj->MinFilter; + break; + case GL_TEXTURE_MAG_FILTER: + *params = (GLfloat) sampObj->MagFilter; + break; + case GL_TEXTURE_MIN_LOD: + *params = sampObj->MinLod; + break; + case GL_TEXTURE_MAX_LOD: + *params = sampObj->MaxLod; + break; + case GL_TEXTURE_LOD_BIAS: + *params = sampObj->LodBias; + break; + case GL_TEXTURE_COMPARE_MODE: + if (!ctx->Extensions.ARB_shadow) + goto invalid_pname; + *params = (GLfloat) sampObj->CompareMode; + break; + case GL_TEXTURE_COMPARE_FUNC: + if (!ctx->Extensions.ARB_shadow) + goto invalid_pname; + *params = (GLfloat) sampObj->CompareFunc; + break; + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + *params = sampObj->MaxAnisotropy; + break; + case GL_TEXTURE_BORDER_COLOR: + params[0] = sampObj->BorderColor.f[0]; + params[1] = sampObj->BorderColor.f[1]; + params[2] = sampObj->BorderColor.f[2]; + params[3] = sampObj->BorderColor.f[3]; + break; + default: + goto invalid_pname; + } + return; + +invalid_pname: + _mesa_error(ctx, GL_INVALID_ENUM, "glGetSamplerParameterfv(pname=%s)", + _mesa_lookup_enum_by_nr(pname)); +} + + +static void GLAPIENTRY +_mesa_GetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) +{ + struct gl_sampler_object *sampObj; + GET_CURRENT_CONTEXT(ctx); + + sampObj = _mesa_lookup_samplerobj(ctx, sampler); + if (!sampObj) { + _mesa_error(ctx, GL_INVALID_VALUE, + "glGetSamplerParameterIiv(sampler %u)", + sampler); + return; + } + + switch (pname) { + case GL_TEXTURE_WRAP_S: + *params = sampObj->WrapS; + break; + case GL_TEXTURE_WRAP_T: + *params = sampObj->WrapT; + break; + case GL_TEXTURE_WRAP_R: + *params = sampObj->WrapR; + break; + case GL_TEXTURE_MIN_FILTER: + *params = sampObj->MinFilter; + break; + case GL_TEXTURE_MAG_FILTER: + *params = sampObj->MagFilter; + break; + case GL_TEXTURE_MIN_LOD: + *params = (GLint) sampObj->MinLod; + break; + case GL_TEXTURE_MAX_LOD: + *params = (GLint) sampObj->MaxLod; + break; + case GL_TEXTURE_LOD_BIAS: + *params = (GLint) sampObj->LodBias; + break; + case GL_TEXTURE_COMPARE_MODE: + if (!ctx->Extensions.ARB_shadow) + goto invalid_pname; + *params = sampObj->CompareMode; + break; + case GL_TEXTURE_COMPARE_FUNC: + if (!ctx->Extensions.ARB_shadow) + goto invalid_pname; + *params = sampObj->CompareFunc; + break; + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + *params = (GLint) sampObj->MaxAnisotropy; + break; + case GL_TEXTURE_BORDER_COLOR: + params[0] = sampObj->BorderColor.i[0]; + params[1] = sampObj->BorderColor.i[1]; + params[2] = sampObj->BorderColor.i[2]; + params[3] = sampObj->BorderColor.i[3]; + break; + default: + goto invalid_pname; + } + return; + +invalid_pname: + _mesa_error(ctx, GL_INVALID_ENUM, "glGetSamplerParameterIiv(pname=%s)", + _mesa_lookup_enum_by_nr(pname)); +} + + +static void GLAPIENTRY +_mesa_GetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) +{ + struct gl_sampler_object *sampObj; + GET_CURRENT_CONTEXT(ctx); + + sampObj = _mesa_lookup_samplerobj(ctx, sampler); + if (!sampObj) { + _mesa_error(ctx, GL_INVALID_VALUE, + "glGetSamplerParameterIuiv(sampler %u)", + sampler); + return; + } + + switch (pname) { + case GL_TEXTURE_WRAP_S: + *params = sampObj->WrapS; + break; + case GL_TEXTURE_WRAP_T: + *params = sampObj->WrapT; + break; + case GL_TEXTURE_WRAP_R: + *params = sampObj->WrapR; + break; + case GL_TEXTURE_MIN_FILTER: + *params = sampObj->MinFilter; + break; + case GL_TEXTURE_MAG_FILTER: + *params = sampObj->MagFilter; + break; + case GL_TEXTURE_MIN_LOD: + *params = (GLuint) sampObj->MinLod; + break; + case GL_TEXTURE_MAX_LOD: + *params = (GLuint) sampObj->MaxLod; + break; + case GL_TEXTURE_LOD_BIAS: + *params = (GLuint) sampObj->LodBias; + break; + case GL_TEXTURE_COMPARE_MODE: + if (!ctx->Extensions.ARB_shadow) + goto invalid_pname; + *params = sampObj->CompareMode; + break; + case GL_TEXTURE_COMPARE_FUNC: + if (!ctx->Extensions.ARB_shadow) + goto invalid_pname; + *params = sampObj->CompareFunc; + break; + case GL_TEXTURE_MAX_ANISOTROPY_EXT: + *params = (GLuint) sampObj->MaxAnisotropy; + break; + case GL_TEXTURE_BORDER_COLOR: + params[0] = sampObj->BorderColor.ui[0]; + params[1] = sampObj->BorderColor.ui[1]; + params[2] = sampObj->BorderColor.ui[2]; + params[3] = sampObj->BorderColor.ui[3]; + break; + default: + goto invalid_pname; + } + return; + +invalid_pname: + _mesa_error(ctx, GL_INVALID_ENUM, "glGetSamplerParameterIuiv(pname=%s)", + _mesa_lookup_enum_by_nr(pname)); +} + + +void +_mesa_init_sampler_object_functions(struct dd_function_table *driver) +{ + driver->NewSamplerObject = _mesa_new_sampler_object; + driver->DeleteSamplerObject = _mesa_delete_sampler_object; +} + + +void +_mesa_init_sampler_object_dispatch(struct _glapi_table *disp) +{ + SET_GenSamplers(disp, _mesa_GenSamplers); + SET_DeleteSamplers(disp, _mesa_DeleteSamplers); + SET_IsSampler(disp, _mesa_IsSampler); + SET_BindSampler(disp, _mesa_BindSampler); + SET_SamplerParameteri(disp, _mesa_SamplerParameteri); + SET_SamplerParameterf(disp, _mesa_SamplerParameterf); + SET_SamplerParameteriv(disp, _mesa_SamplerParameteriv); + SET_SamplerParameterfv(disp, _mesa_SamplerParameterfv); + SET_SamplerParameterIiv(disp, _mesa_SamplerParameterIiv); + SET_SamplerParameterIuiv(disp, _mesa_SamplerParameterIuiv); + SET_GetSamplerParameteriv(disp, _mesa_GetSamplerParameteriv); + SET_GetSamplerParameterfv(disp, _mesa_GetSamplerParameterfv); + SET_GetSamplerParameterIiv(disp, _mesa_GetSamplerParameterIiv); + SET_GetSamplerParameterIuiv(disp, _mesa_GetSamplerParameterIuiv); +} diff --git a/src/mesa/main/samplerobj.h b/src/mesa/main/samplerobj.h new file mode 100644 index 00000000000..ed495c3760b --- /dev/null +++ b/src/mesa/main/samplerobj.h @@ -0,0 +1,54 @@ +/* + * Mesa 3-D graphics library + * + * Copyright (C) 2011 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 SAMPLEROBJ_H +#define SAMPLEROBJ_H + +struct dd_function_table; + + +extern void +_mesa_reference_sampler_object(struct gl_context *ctx, + struct gl_sampler_object **ptr, + struct gl_sampler_object *samp); + +extern void +_mesa_init_sampler_object(struct gl_sampler_object *sampObj, GLuint name); + +extern struct gl_sampler_object * +_mesa_new_sampler_object(struct gl_context *ctx, GLuint name); + +extern void +_mesa_delete_sampler_object(struct gl_context *ctx, + struct gl_sampler_object *sampObj); + +extern void +_mesa_init_sampler_object_functions(struct dd_function_table *driver); + +extern void +_mesa_init_sampler_object_dispatch(struct _glapi_table *disp); + + +#endif /* SAMPLEROBJ_H */ diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c index 2c5f2a147ce..451735faf76 100644 --- a/src/mesa/main/shaderapi.c +++ b/src/mesa/main/shaderapi.c @@ -1029,6 +1029,7 @@ static GLboolean validate_samplers(const struct gl_program *prog, char *errMsg) { static const char *targetName[] = { + "TEXTURE_BUFFER", "TEXTURE_2D_ARRAY", "TEXTURE_1D_ARRAY", "TEXTURE_CUBE", diff --git a/src/mesa/main/shared.c b/src/mesa/main/shared.c index ce9fc4de327..d84f59690c5 100644 --- a/src/mesa/main/shared.c +++ b/src/mesa/main/shared.c @@ -27,8 +27,6 @@ * Shared-context state */ - - #include "imports.h" #include "mfeatures.h" #include "mtypes.h" @@ -40,9 +38,13 @@ #include "shared.h" #include "program/program.h" #include "dlist.h" +#if FEATURE_ARB_sampler_objects +#include "samplerobj.h" +#endif #include "shaderobj.h" #include "syncobj.h" + /** * Allocate and initialize a shared context state structure. * Initializes the display list, texture objects and vertex programs hash @@ -91,6 +93,11 @@ _mesa_alloc_shared_state(struct gl_context *ctx) shared->BufferObjects = _mesa_NewHashTable(); #endif +#if FEATURE_ARB_sampler_objects + /* GL_ARB_sampler_objects */ + shared->SamplerObjects = _mesa_NewHashTable(); +#endif + /* Allocate the default buffer object */ shared->NullBufferObj = ctx->Driver.NewBufferObject(ctx, 0, 0); @@ -98,6 +105,7 @@ _mesa_alloc_shared_state(struct gl_context *ctx) for (i = 0; i < NUM_TEXTURE_TARGETS; i++) { /* NOTE: the order of these enums matches the TEXTURE_x_INDEX values */ static const GLenum targets[NUM_TEXTURE_TARGETS] = { + GL_TEXTURE_BUFFER, GL_TEXTURE_2D_ARRAY_EXT, GL_TEXTURE_1D_ARRAY_EXT, GL_TEXTURE_CUBE_MAP, @@ -106,6 +114,7 @@ _mesa_alloc_shared_state(struct gl_context *ctx) GL_TEXTURE_2D, GL_TEXTURE_1D }; + assert(Elements(targets) == NUM_TEXTURE_TARGETS); shared->DefaultTex[i] = ctx->Driver.NewTextureObject(ctx, 0, targets[i]); } @@ -268,6 +277,20 @@ delete_renderbuffer_cb(GLuint id, void *data, void *userData) } +#if FEATURE_ARB_sampler_objects +/** + * Callback for deleting a sampler object. Called by _mesa_HashDeleteAll() + */ +static void +delete_sampler_object_cb(GLuint id, void *data, void *userData) +{ + struct gl_context *ctx = (struct gl_context *) userData; + struct gl_sampler_object *sampObj = (struct gl_sampler_object *) data; + _mesa_reference_sampler_object(ctx, &sampObj, NULL); +} +#endif + + /** * Deallocate a shared state object and all children structures. * @@ -343,6 +366,11 @@ free_shared_state(struct gl_context *ctx, struct gl_shared_state *shared) } } +#if FEATURE_ARB_sampler_objects + _mesa_HashDeleteAll(shared->SamplerObjects, delete_sampler_object_cb, ctx); + _mesa_DeleteHashTable(shared->SamplerObjects); +#endif + /* * Free texture objects (after FBOs since some textures might have * been bound to FBOs). @@ -374,7 +402,8 @@ free_shared_state(struct gl_context *ctx, struct gl_shared_state *shared) * \sa free_shared_state(). */ void -_mesa_release_shared_state(struct gl_context *ctx, struct gl_shared_state *shared) +_mesa_release_shared_state(struct gl_context *ctx, + struct gl_shared_state *shared) { GLint RefCount; diff --git a/src/mesa/main/shared.h b/src/mesa/main/shared.h index 768d69f6942..55516a8c37c 100644 --- a/src/mesa/main/shared.h +++ b/src/mesa/main/shared.h @@ -32,7 +32,8 @@ _mesa_alloc_shared_state(struct gl_context *ctx); void -_mesa_release_shared_state(struct gl_context *ctx, struct gl_shared_state *shared); +_mesa_release_shared_state(struct gl_context *ctx, + struct gl_shared_state *shared); #endif diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c index 19c9bbabda2..4696dbb526f 100644 --- a/src/mesa/main/state.c +++ b/src/mesa/main/state.c @@ -48,6 +48,7 @@ #include "texenvprogram.h" #include "texobj.h" #include "texstate.h" +#include "varray.h" static void @@ -61,43 +62,13 @@ update_separate_specular(struct gl_context *ctx) /** - * Compute the index of the last array element that can be safely accessed - * in a vertex array. We can really only do this when the array lives in - * a VBO. - * The array->_MaxElement field will be updated. - * Later in glDrawArrays/Elements/etc we can do some bounds checking. - */ -static void -compute_max_element(struct gl_client_array *array) -{ - assert(array->Enabled); - if (array->BufferObj->Name) { - GLsizeiptrARB offset = (GLsizeiptrARB) array->Ptr; - GLsizeiptrARB obj_size = (GLsizeiptrARB) array->BufferObj->Size; - - if (offset < obj_size) { - array->_MaxElement = (obj_size - offset + - array->StrideB - - array->_ElementSize) / array->StrideB; - } else { - array->_MaxElement = 0; - } - } - else { - /* user-space array, no idea how big it is */ - array->_MaxElement = 2 * 1000 * 1000 * 1000; /* just a big number */ - } -} - - -/** * Helper for update_arrays(). * \return min(current min, array->_MaxElement). */ static GLuint update_min(GLuint min, struct gl_client_array *array) { - compute_max_element(array); + _mesa_update_array_max_element(array); return MIN2(min, array->_MaxElement); } @@ -445,6 +416,35 @@ update_color(struct gl_context *ctx) ctx->Color._LogicOpEnabled = _mesa_rgba_logicop_enabled(ctx); } +static void +update_clamp_fragment_color(struct gl_context *ctx) +{ + if(ctx->Color.ClampFragmentColor == GL_FIXED_ONLY_ARB) + ctx->Color._ClampFragmentColor = !ctx->DrawBuffer || !ctx->DrawBuffer->Visual.floatMode; + else + ctx->Color._ClampFragmentColor = ctx->Color.ClampFragmentColor; +} + +static void +update_clamp_vertex_color(struct gl_context *ctx) +{ + if(ctx->Light.ClampVertexColor == GL_FIXED_ONLY_ARB) + ctx->Light._ClampVertexColor = !ctx->DrawBuffer || !ctx->DrawBuffer->Visual.floatMode; + else + ctx->Light._ClampVertexColor = ctx->Light.ClampVertexColor; +} + +static void +update_clamp_read_color(struct gl_context *ctx) +{ + if(ctx->Color.ClampReadColor == GL_FIXED_ONLY_ARB) + ctx->Color._ClampReadColor = !ctx->ReadBuffer || !ctx->ReadBuffer->Visual.floatMode; + else + ctx->Color._ClampReadColor = ctx->Color.ClampReadColor; +} + + + /* * Check polygon state and set DD_TRI_CULL_FRONT_BACK and/or DD_TRI_OFFSET @@ -565,7 +565,7 @@ _mesa_update_state_locked( struct gl_context *ctx ) if (ctx->FragmentProgram._MaintainTexEnvProgram) { prog_flags |= (_NEW_BUFFERS | _NEW_TEXTURE | _NEW_FOG | _NEW_ARRAY | _NEW_LIGHT | _NEW_POINT | _NEW_RENDERMODE | - _NEW_PROGRAM); + _NEW_PROGRAM | _NEW_FRAG_CLAMP); } if (ctx->VertexProgram._MaintainTnlProgram) { prog_flags |= (_NEW_ARRAY | _NEW_TEXTURE | _NEW_TEXTURE_MATRIX | @@ -599,10 +599,13 @@ _mesa_update_state_locked( struct gl_context *ctx ) if (new_state & _NEW_LIGHT) _mesa_update_lighting( ctx ); + if (new_state & (_NEW_LIGHT | _NEW_BUFFERS)) + update_clamp_vertex_color(ctx); + if (new_state & (_NEW_STENCIL | _NEW_BUFFERS)) _mesa_update_stencil( ctx ); - if (new_state & _MESA_NEW_TRANSFER_STATE) + if (new_state & _NEW_PIXEL) _mesa_update_pixel( ctx, new_state ); if (new_state & _DD_NEW_SEPARATE_SPECULAR) @@ -617,6 +620,12 @@ _mesa_update_state_locked( struct gl_context *ctx ) if (new_state & _NEW_COLOR) update_color( ctx ); + if (new_state & (_NEW_COLOR | _NEW_BUFFERS)) + update_clamp_read_color(ctx); + + if(new_state & (_NEW_FRAG_CLAMP | _NEW_BUFFERS)) + update_clamp_fragment_color(ctx); + #if 0 if (new_state & (_NEW_POINT | _NEW_LINE | _NEW_POLYGON | _NEW_LIGHT | _NEW_STENCIL | _DD_NEW_SEPARATE_SPECULAR)) diff --git a/src/mesa/main/texcompress_rgtc.c b/src/mesa/main/texcompress_rgtc.c index c50df19c5d8..d9de9bec3d1 100644 --- a/src/mesa/main/texcompress_rgtc.c +++ b/src/mesa/main/texcompress_rgtc.c @@ -121,7 +121,7 @@ _mesa_texstore_red_rgtc1(TEXSTORE_PARAMS) texWidth, (GLubyte *) dstAddr); blkaddr = dst; - dstRowDiff = dstRowStride >= (srcWidth * 4) ? dstRowStride - (((srcWidth + 3) & ~3) * 4) : 0; + dstRowDiff = dstRowStride >= (srcWidth * 2) ? dstRowStride - (((srcWidth + 3) & ~3) * 2) : 0; for (j = 0; j < srcHeight; j+=4) { if (srcHeight > j + 3) numypixels = 4; else numypixels = srcHeight - j; @@ -176,7 +176,7 @@ _mesa_texstore_signed_red_rgtc1(TEXSTORE_PARAMS) texWidth, (GLubyte *) dstAddr); blkaddr = dst; - dstRowDiff = dstRowStride >= (srcWidth * 4) ? dstRowStride - (((srcWidth + 3) & ~3) * 4) : 0; + dstRowDiff = dstRowStride >= (srcWidth * 2) ? dstRowStride - (((srcWidth + 3) & ~3) * 2) : 0; for (j = 0; j < srcHeight; j+=4) { if (srcHeight > j + 3) numypixels = 4; else numypixels = srcHeight - j; @@ -232,7 +232,7 @@ _mesa_texstore_rg_rgtc2(TEXSTORE_PARAMS) texWidth, (GLubyte *) dstAddr); blkaddr = dst; - dstRowDiff = dstRowStride >= (srcWidth * 8) ? dstRowStride - (((srcWidth + 7) & ~7) * 8) : 0; + dstRowDiff = dstRowStride >= (srcWidth * 4) ? dstRowStride - (((srcWidth + 3) & ~3) * 4) : 0; for (j = 0; j < srcHeight; j+=4) { if (srcHeight > j + 3) numypixels = 4; else numypixels = srcHeight - j; @@ -294,7 +294,7 @@ _mesa_texstore_signed_rg_rgtc2(TEXSTORE_PARAMS) texWidth, (GLubyte *) dstAddr); blkaddr = dst; - dstRowDiff = dstRowStride >= (srcWidth * 8) ? dstRowStride - (((srcWidth + 7) & ~7) * 8) : 0; + dstRowDiff = dstRowStride >= (srcWidth * 4) ? dstRowStride - (((srcWidth + 3) & ~3) * 4) : 0; for (j = 0; j < srcHeight; j += 4) { if (srcHeight > j + 3) numypixels = 4; else numypixels = srcHeight - j; diff --git a/src/mesa/main/texenv.c b/src/mesa/main/texenv.c index 45a2e195e98..9228e354a4d 100644 --- a/src/mesa/main/texenv.c +++ b/src/mesa/main/texenv.c @@ -35,6 +35,7 @@ #include "main/enums.h" #include "main/macros.h" #include "main/mtypes.h" +#include "main/state.h" #include "main/texenv.h" #include "main/texstate.h" @@ -94,15 +95,14 @@ set_env_color(struct gl_context *ctx, struct gl_texture_unit *texUnit, const GLfloat *color) { - GLfloat tmp[4]; - tmp[0] = CLAMP(color[0], 0.0F, 1.0F); - tmp[1] = CLAMP(color[1], 0.0F, 1.0F); - tmp[2] = CLAMP(color[2], 0.0F, 1.0F); - tmp[3] = CLAMP(color[3], 0.0F, 1.0F); - if (TEST_EQ_4V(tmp, texUnit->EnvColor)) + if (TEST_EQ_4V(color, texUnit->EnvColorUnclamped)) return; FLUSH_VERTICES(ctx, _NEW_TEXTURE); - COPY_4FV(texUnit->EnvColor, tmp); + COPY_4FV(texUnit->EnvColorUnclamped, color); + texUnit->EnvColor[0] = CLAMP(color[0], 0.0F, 1.0F); + texUnit->EnvColor[1] = CLAMP(color[1], 0.0F, 1.0F); + texUnit->EnvColor[2] = CLAMP(color[2], 0.0F, 1.0F); + texUnit->EnvColor[3] = CLAMP(color[3], 0.0F, 1.0F); } @@ -758,7 +758,12 @@ _mesa_GetTexEnvfv( GLenum target, GLenum pname, GLfloat *params ) if (target == GL_TEXTURE_ENV) { if (pname == GL_TEXTURE_ENV_COLOR) { - COPY_4FV( params, texUnit->EnvColor ); + if(ctx->NewState & (_NEW_BUFFERS | _NEW_FRAG_CLAMP)) + _mesa_update_state(ctx); + if(ctx->Color._ClampFragmentColor) + COPY_4FV( params, texUnit->EnvColor ); + else + COPY_4FV( params, texUnit->EnvColorUnclamped ); } else { GLint val = get_texenvi(ctx, texUnit, pname); diff --git a/src/mesa/main/texfetch.c b/src/mesa/main/texfetch.c index 988a7e05468..d091789ff16 100644 --- a/src/mesa/main/texfetch.c +++ b/src/mesa/main/texfetch.c @@ -631,6 +631,34 @@ texfetch_funcs[MESA_FORMAT_COUNT] = fetch_texel_3d_f_intensity_f16, store_texel_intensity_f16 }, + { + MESA_FORMAT_R_FLOAT32, + fetch_texel_1d_f_r_f32, + fetch_texel_2d_f_r_f32, + fetch_texel_3d_f_r_f32, + store_texel_r_f32 + }, + { + MESA_FORMAT_R_FLOAT16, + fetch_texel_1d_f_r_f16, + fetch_texel_2d_f_r_f16, + fetch_texel_3d_f_r_f16, + store_texel_r_f16 + }, + { + MESA_FORMAT_RG_FLOAT32, + fetch_texel_1d_f_rg_f32, + fetch_texel_2d_f_rg_f32, + fetch_texel_3d_f_rg_f32, + store_texel_rg_f32 + }, + { + MESA_FORMAT_RG_FLOAT16, + fetch_texel_1d_f_rg_f16, + fetch_texel_2d_f_rg_f16, + fetch_texel_3d_f_rg_f16, + store_texel_rg_f16 + }, /* non-normalized, signed int */ { @@ -696,11 +724,11 @@ texfetch_funcs[MESA_FORMAT_COUNT] = store_texel_signed_r8 }, { - MESA_FORMAT_SIGNED_RG88, - fetch_texel_1d_signed_rg88, - fetch_texel_2d_signed_rg88, - fetch_texel_3d_signed_rg88, - store_texel_signed_rg88 + MESA_FORMAT_SIGNED_RG88_REV, + fetch_texel_1d_signed_rg88_rev, + fetch_texel_2d_signed_rg88_rev, + fetch_texel_3d_signed_rg88_rev, + store_texel_signed_rg88_rev }, { MESA_FORMAT_SIGNED_RGBX8888, @@ -724,18 +752,18 @@ texfetch_funcs[MESA_FORMAT_COUNT] = store_texel_signed_rgba8888_rev }, { - MESA_FORMAT_SIGNED_R_16, - fetch_texel_1d_signed_r_16, - fetch_texel_2d_signed_r_16, - fetch_texel_3d_signed_r_16, - store_texel_signed_r_16 + MESA_FORMAT_SIGNED_R16, + fetch_texel_1d_signed_r16, + fetch_texel_2d_signed_r16, + fetch_texel_3d_signed_r16, + store_texel_signed_r16 }, { - MESA_FORMAT_SIGNED_RG_16, - fetch_texel_1d_signed_rg_16, - fetch_texel_2d_signed_rg_16, - fetch_texel_3d_signed_rg_16, - store_texel_signed_rg_16 + MESA_FORMAT_SIGNED_GR1616, + fetch_texel_1d_signed_rg1616, + fetch_texel_2d_signed_rg1616, + fetch_texel_3d_signed_rg1616, + store_texel_signed_rg1616 }, { MESA_FORMAT_SIGNED_RGB_16, @@ -814,6 +842,62 @@ texfetch_funcs[MESA_FORMAT_COUNT] = NULL, NULL }, + { + MESA_FORMAT_SIGNED_A8, + fetch_texel_1d_signed_a8, + fetch_texel_2d_signed_a8, + fetch_texel_3d_signed_a8, + store_texel_signed_a8 + }, + { + MESA_FORMAT_SIGNED_L8, + fetch_texel_1d_signed_l8, + fetch_texel_2d_signed_l8, + fetch_texel_3d_signed_l8, + store_texel_signed_l8 + }, + { + MESA_FORMAT_SIGNED_AL88, + fetch_texel_1d_signed_al88, + fetch_texel_2d_signed_al88, + fetch_texel_3d_signed_al88, + store_texel_signed_al88 + }, + { + MESA_FORMAT_SIGNED_I8, + fetch_texel_1d_signed_i8, + fetch_texel_2d_signed_i8, + fetch_texel_3d_signed_i8, + store_texel_signed_i8 + }, + { + MESA_FORMAT_SIGNED_A16, + fetch_texel_1d_signed_a16, + fetch_texel_2d_signed_a16, + fetch_texel_3d_signed_a16, + store_texel_signed_a16 + }, + { + MESA_FORMAT_SIGNED_L16, + fetch_texel_1d_signed_l16, + fetch_texel_2d_signed_l16, + fetch_texel_3d_signed_l16, + store_texel_signed_l16 + }, + { + MESA_FORMAT_SIGNED_AL1616, + fetch_texel_1d_signed_al1616, + fetch_texel_2d_signed_al1616, + fetch_texel_3d_signed_al1616, + store_texel_signed_al1616 + }, + { + MESA_FORMAT_SIGNED_I16, + fetch_texel_1d_signed_i16, + fetch_texel_2d_signed_i16, + fetch_texel_3d_signed_i16, + store_texel_signed_i16 + }, }; @@ -919,7 +1003,7 @@ _mesa_set_fetch_functions(struct gl_texture_image *texImage, GLuint dims) ASSERT(dims == 1 || dims == 2 || dims == 3); - if (texImage->TexObject->sRGBDecode == GL_SKIP_DECODE_EXT && + if (texImage->TexObject->Sampler.sRGBDecode == GL_SKIP_DECODE_EXT && _mesa_get_format_color_encoding(format) == GL_SRGB) { format = _mesa_get_srgb_format_linear(format); } diff --git a/src/mesa/main/texfetch_tmp.h b/src/mesa/main/texfetch_tmp.h index 36dede57f00..0b9d5da07e8 100644 --- a/src/mesa/main/texfetch_tmp.h +++ b/src/mesa/main/texfetch_tmp.h @@ -438,6 +438,110 @@ static void store_texel_intensity_f16(struct gl_texture_image *texImage, #endif +/* MESA_FORMAT_R_FLOAT32 *****************************************************/ + +/* Fetch texel from 1D, 2D or 3D R_FLOAT32 texture, + * returning 4 GLfloats. + */ +static void FETCH(f_r_f32)( const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel ) +{ + const GLfloat *src = TEXEL_ADDR(GLfloat, texImage, i, j, k, 1); + texel[RCOMP] = src[0]; + texel[GCOMP] = 0.0F; + texel[BCOMP] = 0.0F; + texel[ACOMP] = 1.0F; +} + +#if DIM == 3 +static void store_texel_r_f32(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) +{ + const GLfloat *rgba = (const GLfloat *) texel; + GLfloat *dst = TEXEL_ADDR(GLfloat, texImage, i, j, k, 1); + dst[0] = rgba[RCOMP]; +} +#endif + + +/* MESA_FORMAT_R_FLOAT16 *****************************************************/ + +/* Fetch texel from 1D, 2D or 3D R_FLOAT16 texture, + * returning 4 GLfloats. + */ +static void FETCH(f_r_f16)( const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel ) +{ + const GLhalfARB *src = TEXEL_ADDR(GLhalfARB, texImage, i, j, k, 1); + texel[RCOMP] = _mesa_half_to_float(src[0]); + texel[GCOMP] = 0.0F; + texel[BCOMP] = 0.0F; + texel[ACOMP] = 1.0F; +} + +#if DIM == 3 +static void store_texel_r_f16(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) +{ + const GLfloat *rgba = (const GLfloat *) texel; + GLhalfARB *dst = TEXEL_ADDR(GLhalfARB, texImage, i, j, k, 1); + dst[0] = _mesa_float_to_half(rgba[RCOMP]); +} +#endif + + +/* MESA_FORMAT_RG_FLOAT32 ****************************************************/ + +/* Fetch texel from 1D, 2D or 3D RG_FLOAT32 texture, + * returning 4 GLfloats. + */ +static void FETCH(f_rg_f32)( const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel ) +{ + const GLfloat *src = TEXEL_ADDR(GLfloat, texImage, i, j, k, 2); + texel[RCOMP] = src[0]; + texel[GCOMP] = src[1]; + texel[BCOMP] = 0.0F; + texel[ACOMP] = 1.0F; +} + +#if DIM == 3 +static void store_texel_rg_f32(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) +{ + const GLfloat *rgba = (const GLfloat *) texel; + GLfloat *dst = TEXEL_ADDR(GLfloat, texImage, i, j, k, 2); + dst[0] = rgba[RCOMP]; + dst[1] = rgba[GCOMP]; +} +#endif + + +/* MESA_FORMAT_RG_FLOAT16 ****************************************************/ + +/* Fetch texel from 1D, 2D or 3D RG_FLOAT16 texture, + * returning 4 GLfloats. + */ +static void FETCH(f_rg_f16)( const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel ) +{ + const GLhalfARB *src = TEXEL_ADDR(GLhalfARB, texImage, i, j, k, 2); + texel[RCOMP] = _mesa_half_to_float(src[0]); + texel[GCOMP] = _mesa_half_to_float(src[1]); + texel[BCOMP] = 0.0F; + texel[ACOMP] = 1.0F; +} + +#if DIM == 3 +static void store_texel_rg_f16(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) +{ + const GLfloat *rgba = (const GLfloat *) texel; + GLhalfARB *dst = TEXEL_ADDR(GLhalfARB, texImage, i, j, k, 2); + dst[0] = _mesa_float_to_half(rgba[RCOMP]); + dst[1] = _mesa_float_to_half(rgba[GCOMP]); +} +#endif /* @@ -1673,25 +1777,117 @@ static void store_texel_signed_r8(struct gl_texture_image *texImage, #endif -/* MESA_FORMAT_SIGNED_RG88 ***********************************************/ +/* MESA_FORMAT_SIGNED_A8 ***********************************************/ -static void FETCH(signed_rg88)( const struct gl_texture_image *texImage, - GLint i, GLint j, GLint k, GLfloat *texel ) +static void FETCH(signed_a8)( const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel ) +{ + const GLbyte s = *TEXEL_ADDR(GLbyte, texImage, i, j, k, 1); + texel[RCOMP] = 0.0F; + texel[GCOMP] = 0.0F; + texel[BCOMP] = 0.0F; + texel[ACOMP] = BYTE_TO_FLOAT_TEX( s ); +} + +#if DIM == 3 +static void store_texel_signed_a8(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) +{ + const GLbyte *rgba = (const GLbyte *) texel; + GLbyte *dst = TEXEL_ADDR(GLbyte, texImage, i, j, k, 1); + *dst = rgba[ACOMP]; +} +#endif + + +/* MESA_FORMAT_SIGNED_L8 ***********************************************/ + +static void FETCH(signed_l8)( const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel ) +{ + const GLbyte s = *TEXEL_ADDR(GLbyte, texImage, i, j, k, 1); + texel[RCOMP] = + texel[GCOMP] = + texel[BCOMP] = BYTE_TO_FLOAT_TEX( s ); + texel[ACOMP] = 1.0F; +} + +#if DIM == 3 +static void store_texel_signed_l8(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) +{ + const GLbyte *rgba = (const GLbyte *) texel; + GLbyte *dst = TEXEL_ADDR(GLbyte, texImage, i, j, k, 1); + *dst = rgba[RCOMP]; +} +#endif + + +/* MESA_FORMAT_SIGNED_I8 ***********************************************/ + +static void FETCH(signed_i8)( const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel ) +{ + const GLbyte s = *TEXEL_ADDR(GLbyte, texImage, i, j, k, 1); + texel[RCOMP] = + texel[GCOMP] = + texel[BCOMP] = + texel[ACOMP] = BYTE_TO_FLOAT_TEX( s ); +} + +#if DIM == 3 +static void store_texel_signed_i8(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) +{ + const GLbyte *rgba = (const GLbyte *) texel; + GLbyte *dst = TEXEL_ADDR(GLbyte, texImage, i, j, k, 1); + *dst = rgba[RCOMP]; +} +#endif + + +/* MESA_FORMAT_SIGNED_RG88_REV ***********************************************/ + +static void FETCH(signed_rg88_rev)( const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel ) { const GLushort s = *TEXEL_ADDR(GLshort, texImage, i, j, k, 1); - texel[RCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >> 8) ); - texel[GCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s & 0xff) ); + texel[RCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s & 0xff) ); + texel[GCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >> 8) ); texel[BCOMP] = 0.0F; texel[ACOMP] = 1.0F; } #if DIM == 3 -static void store_texel_signed_rg88(struct gl_texture_image *texImage, +static void store_texel_signed_rg88_rev(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) +{ + const GLbyte *rg = (const GLbyte *) texel; + GLushort *dst = TEXEL_ADDR(GLushort, texImage, i, j, k, 1); + dst[0] = PACK_COLOR_88(rg[GCOMP], rg[RCOMP]); +} +#endif + + +/* MESA_FORMAT_SIGNED_AL88 ***********************************************/ + +static void FETCH(signed_al88)( const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel ) +{ + const GLushort s = *TEXEL_ADDR(GLshort, texImage, i, j, k, 1); + texel[RCOMP] = + texel[GCOMP] = + texel[BCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s & 0xff) ); + texel[ACOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >> 8) ); +} + +#if DIM == 3 +static void store_texel_signed_al88(struct gl_texture_image *texImage, GLint i, GLint j, GLint k, const void *texel) { const GLbyte *rg = (const GLbyte *) texel; - GLushort *dst = TEXEL_ADDR(GLushort, texImage, i, j, k, 2); - *dst = PACK_COLOR_88(rg[RCOMP], rg[GCOMP]); + GLushort *dst = TEXEL_ADDR(GLushort, texImage, i, j, k, 1); + dst[0] = PACK_COLOR_88(rg[ACOMP], rg[RCOMP]); } #endif @@ -1763,11 +1959,11 @@ static void store_texel_signed_rgba8888_rev(struct gl_texture_image *texImage, -/* MESA_FORMAT_SIGNED_R_16 ***********************************************/ +/* MESA_FORMAT_SIGNED_R16 ***********************************************/ static void -FETCH(signed_r_16)(const struct gl_texture_image *texImage, - GLint i, GLint j, GLint k, GLfloat *texel) +FETCH(signed_r16)(const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel) { const GLshort s = *TEXEL_ADDR(GLshort, texImage, i, j, k, 1); texel[RCOMP] = SHORT_TO_FLOAT_TEX( s ); @@ -1778,8 +1974,8 @@ FETCH(signed_r_16)(const struct gl_texture_image *texImage, #if DIM == 3 static void -store_texel_signed_r_16(struct gl_texture_image *texImage, - GLint i, GLint j, GLint k, const void *texel) +store_texel_signed_r16(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) { const GLshort *rgba = (const GLshort *) texel; GLshort *dst = TEXEL_ADDR(GLshort, texImage, i, j, k, 1); @@ -1788,10 +1984,85 @@ store_texel_signed_r_16(struct gl_texture_image *texImage, #endif -/* MESA_FORMAT_SIGNED_RG_16 ***********************************************/ +/* MESA_FORMAT_SIGNED_A16 ***********************************************/ + +static void +FETCH(signed_a16)(const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel) +{ + const GLshort s = *TEXEL_ADDR(GLshort, texImage, i, j, k, 1); + texel[RCOMP] = 0.0F; + texel[GCOMP] = 0.0F; + texel[BCOMP] = 0.0F; + texel[ACOMP] = SHORT_TO_FLOAT_TEX( s ); +} + +#if DIM == 3 +static void +store_texel_signed_a16(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) +{ + const GLshort *rgba = (const GLshort *) texel; + GLshort *dst = TEXEL_ADDR(GLshort, texImage, i, j, k, 1); + *dst = rgba[ACOMP]; +} +#endif + + +/* MESA_FORMAT_SIGNED_L16 ***********************************************/ + +static void +FETCH(signed_l16)(const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel) +{ + const GLshort s = *TEXEL_ADDR(GLshort, texImage, i, j, k, 1); + texel[RCOMP] = + texel[GCOMP] = + texel[BCOMP] = SHORT_TO_FLOAT_TEX( s ); + texel[ACOMP] = 1.0F; +} + +#if DIM == 3 +static void +store_texel_signed_l16(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) +{ + const GLshort *rgba = (const GLshort *) texel; + GLshort *dst = TEXEL_ADDR(GLshort, texImage, i, j, k, 1); + *dst = rgba[RCOMP]; +} +#endif + + +/* MESA_FORMAT_SIGNED_I16 ***********************************************/ static void -FETCH(signed_rg_16)(const struct gl_texture_image *texImage, +FETCH(signed_i16)(const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel) +{ + const GLshort s = *TEXEL_ADDR(GLshort, texImage, i, j, k, 1); + texel[RCOMP] = + texel[GCOMP] = + texel[BCOMP] = + texel[ACOMP] = SHORT_TO_FLOAT_TEX( s ); +} + +#if DIM == 3 +static void +store_texel_signed_i16(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) +{ + const GLshort *rgba = (const GLshort *) texel; + GLshort *dst = TEXEL_ADDR(GLshort, texImage, i, j, k, 1); + *dst = rgba[RCOMP]; +} +#endif + + +/* MESA_FORMAT_SIGNED_RG1616 ***********************************************/ + +static void +FETCH(signed_rg1616)(const struct gl_texture_image *texImage, GLint i, GLint j, GLint k, GLfloat *texel) { const GLshort *s = TEXEL_ADDR(GLshort, texImage, i, j, k, 2); @@ -1803,7 +2074,7 @@ FETCH(signed_rg_16)(const struct gl_texture_image *texImage, #if DIM == 3 static void -store_texel_signed_rg_16(struct gl_texture_image *texImage, +store_texel_signed_rg1616(struct gl_texture_image *texImage, GLint i, GLint j, GLint k, const void *texel) { const GLshort *rgba = (const GLshort *) texel; @@ -1814,7 +2085,33 @@ store_texel_signed_rg_16(struct gl_texture_image *texImage, #endif -/* MESA_FORMAT_SIGNED_RGBA_16 ***********************************************/ +/* MESA_FORMAT_SIGNED_AL1616 ***********************************************/ + +static void +FETCH(signed_al1616)(const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel) +{ + const GLshort *s = TEXEL_ADDR(GLshort, texImage, i, j, k, 2); + texel[RCOMP] = + texel[GCOMP] = + texel[BCOMP] = SHORT_TO_FLOAT_TEX( s[0] ); + texel[ACOMP] = SHORT_TO_FLOAT_TEX( s[1] ); +} + +#if DIM == 3 +static void +store_texel_signed_al1616(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) +{ + const GLshort *rgba = (const GLshort *) texel; + GLshort *dst = TEXEL_ADDR(GLshort, texImage, i, j, k, 2); + dst[0] = rgba[RCOMP]; + dst[1] = rgba[ACOMP]; +} +#endif + + +/* MESA_FORMAT_SIGNED_RGB_16 ***********************************************/ static void FETCH(signed_rgb_16)(const struct gl_texture_image *texImage, diff --git a/src/mesa/main/texformat.c b/src/mesa/main/texformat.c index 5eabf2aa527..c85a7c05030 100644 --- a/src/mesa/main/texformat.c +++ b/src/mesa/main/texformat.c @@ -327,36 +327,52 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat, switch (internalFormat) { case GL_ALPHA16F_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_ALPHA_FLOAT16); + RETURN_IF_SUPPORTED(MESA_FORMAT_ALPHA_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); break; case GL_ALPHA32F_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_ALPHA_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); break; case GL_LUMINANCE16F_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_FLOAT16); + RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); break; case GL_LUMINANCE32F_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); break; case GL_LUMINANCE_ALPHA16F_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16); + RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); break; case GL_LUMINANCE_ALPHA32F_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); break; case GL_INTENSITY16F_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_INTENSITY_FLOAT16); + RETURN_IF_SUPPORTED(MESA_FORMAT_INTENSITY_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); break; case GL_INTENSITY32F_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_INTENSITY_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); break; case GL_RGB16F_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_RGB_FLOAT16); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGB_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); break; case GL_RGB32F_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_RGB_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); break; case GL_RGBA16F_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT16); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); break; case GL_RGBA32F_ARB: RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); @@ -389,19 +405,7 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat, } } - if (ctx->Extensions.MESA_texture_signed_rgba) { - switch (internalFormat) { - case GL_RGBA_SNORM: - case GL_RGBA8_SNORM: - RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888); - RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV); - break; - default: - ; /* fallthrough */ - } - } - - if (ctx->VersionMajor * 10 + ctx->VersionMinor >= 31) { + if (ctx->Extensions.EXT_texture_snorm) { switch (internalFormat) { case GL_RED_SNORM: case GL_R8_SNORM: @@ -409,28 +413,77 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat, break; case GL_RG_SNORM: case GL_RG8_SNORM: - RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RG88); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RG88_REV); break; case GL_RGB_SNORM: case GL_RGB8_SNORM: RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBX8888); - break; + /* FALLTHROUGH */ case GL_RGBA_SNORM: case GL_RGBA8_SNORM: RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV); break; + case GL_ALPHA_SNORM: + case GL_ALPHA8_SNORM: + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_A8); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV); + break; + case GL_LUMINANCE_SNORM: + case GL_LUMINANCE8_SNORM: + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_L8); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBX8888); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV); + break; + case GL_LUMINANCE_ALPHA_SNORM: + case GL_LUMINANCE8_ALPHA8_SNORM: + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_AL88); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV); + break; + case GL_INTENSITY_SNORM: + case GL_INTENSITY8_SNORM: + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_I8); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV); + break; case GL_R16_SNORM: - RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_R_16); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_R16); break; case GL_RG16_SNORM: - RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RG_16); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_GR1616); break; case GL_RGB16_SNORM: RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGB_16); - break; + /* FALLTHROUGH */ case GL_RGBA16_SNORM: RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA_16); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV); break; + case GL_ALPHA16_SNORM: + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_A16); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA_16); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV); + break; + case GL_LUMINANCE16_SNORM: + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_L16); + /* FALLTHROUGH */ + case GL_LUMINANCE16_ALPHA16_SNORM: + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_AL1616); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA_16); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV); + break; + case GL_INTENSITY16_SNORM: + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_I16); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA_16); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888); + RETURN_IF_SUPPORTED(MESA_FORMAT_SIGNED_RGBA8888_REV); + break; default: ; /* fall-through */ } @@ -591,6 +644,32 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat, } } + if (ctx->Extensions.ARB_texture_rg && ctx->Extensions.ARB_texture_float) { + switch (internalFormat) { + case GL_R16F: + RETURN_IF_SUPPORTED(MESA_FORMAT_R_FLOAT16); + RETURN_IF_SUPPORTED(MESA_FORMAT_R_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); + break; + case GL_R32F: + RETURN_IF_SUPPORTED(MESA_FORMAT_R_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); + break; + case GL_RG16F: + RETURN_IF_SUPPORTED(MESA_FORMAT_RG_FLOAT16); + RETURN_IF_SUPPORTED(MESA_FORMAT_RG_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); + break; + case GL_RG32F: + RETURN_IF_SUPPORTED(MESA_FORMAT_RG_FLOAT32); + RETURN_IF_SUPPORTED(MESA_FORMAT_RGBA_FLOAT32); + break; + + default: + ; /* fallthrough */ + } + } + if (ctx->Extensions.EXT_texture_format_BGRA8888) { switch (internalFormat) { case GL_BGRA: diff --git a/src/mesa/main/texgetimage.c b/src/mesa/main/texgetimage.c index 21d9140c550..7070a29fb9d 100644 --- a/src/mesa/main/texgetimage.c +++ b/src/mesa/main/texgetimage.c @@ -74,6 +74,7 @@ get_tex_color_index(struct gl_context *ctx, GLuint dimensions, const GLint width = texImage->Width; const GLint height = texImage->Height; const GLint depth = texImage->Depth; + const GLint rowstride = texImage->RowStride; const GLuint indexBits = _mesa_get_format_bits(texImage->TexFormat, GL_TEXTURE_INDEX_SIZE_EXT); const GLbitfield transferOps = 0x0; @@ -89,14 +90,14 @@ get_tex_color_index(struct gl_context *ctx, GLuint dimensions, if (indexBits == 8) { const GLubyte *src = (const GLubyte *) texImage->Data; - src += width * (img * texImage->Height + row); + src += rowstride * (img * height + row); for (col = 0; col < width; col++) { indexRow[col] = src[col]; } } else if (indexBits == 16) { const GLushort *src = (const GLushort *) texImage->Data; - src += width * (img * texImage->Height + row); + src += rowstride * (img * height + row); for (col = 0; col < width; col++) { indexRow[col] = src[col]; } @@ -159,6 +160,7 @@ get_tex_depth_stencil(struct gl_context *ctx, GLuint dimensions, const GLint width = texImage->Width; const GLint height = texImage->Height; const GLint depth = texImage->Depth; + const GLint rowstride = texImage->RowStride; const GLuint *src = (const GLuint *) texImage->Data; GLint img, row; @@ -172,7 +174,7 @@ get_tex_depth_stencil(struct gl_context *ctx, GLuint dimensions, _mesa_swap4((GLuint *) dest, width); } - src += width * row + width * height * img; + src += rowstride; } } } diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index 2a3037f6189..8fb54c693e0 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -55,9 +55,7 @@ * In particular, we care about pixel transfer state and buffer state * (such as glReadBuffer to make sure we read from the right renderbuffer). */ -#define NEW_COPY_TEX_STATE (_MESA_NEW_TRANSFER_STATE | \ - _NEW_BUFFERS | \ - _NEW_PIXEL) +#define NEW_COPY_TEX_STATE (_NEW_BUFFERS | _NEW_PIXEL) @@ -313,11 +311,40 @@ _mesa_base_tex_format( struct gl_context *ctx, GLint internalFormat ) } } - if (ctx->Extensions.MESA_texture_signed_rgba) { + if (ctx->Extensions.EXT_texture_snorm) { switch (internalFormat) { + case GL_RED_SNORM: + case GL_R8_SNORM: + case GL_R16_SNORM: + return GL_RED; + case GL_RG_SNORM: + case GL_RG8_SNORM: + case GL_RG16_SNORM: + return GL_RG; + case GL_RGB_SNORM: + case GL_RGB8_SNORM: + case GL_RGB16_SNORM: + return GL_RGB; case GL_RGBA_SNORM: case GL_RGBA8_SNORM: + case GL_RGBA16_SNORM: return GL_RGBA; + case GL_ALPHA_SNORM: + case GL_ALPHA8_SNORM: + case GL_ALPHA16_SNORM: + return GL_ALPHA; + case GL_LUMINANCE_SNORM: + case GL_LUMINANCE8_SNORM: + case GL_LUMINANCE16_SNORM: + return GL_LUMINANCE; + case GL_LUMINANCE_ALPHA_SNORM: + case GL_LUMINANCE8_ALPHA8_SNORM: + case GL_LUMINANCE16_ALPHA16_SNORM: + return GL_LUMINANCE_ALPHA; + case GL_INTENSITY_SNORM: + case GL_INTENSITY8_SNORM: + case GL_INTENSITY16_SNORM: + return GL_INTENSITY; default: ; /* fallthrough */ } @@ -654,8 +681,10 @@ _mesa_delete_texture_image(struct gl_context *ctx, GLboolean _mesa_is_proxy_texture(GLenum target) { - /* NUM_TEXTURE_TARGETS should match number of terms below */ - assert(NUM_TEXTURE_TARGETS == 7); + /* NUM_TEXTURE_TARGETS should match number of terms below, + * except there's no proxy for GL_TEXTURE_BUFFER. + */ + assert(NUM_TEXTURE_TARGETS == 8); return (target == GL_PROXY_TEXTURE_1D || target == GL_PROXY_TEXTURE_2D || @@ -767,6 +796,9 @@ _mesa_select_tex_object(struct gl_context *ctx, return arrayTex ? texUnit->CurrentTex[TEXTURE_2D_ARRAY_INDEX] : NULL; case GL_PROXY_TEXTURE_2D_ARRAY_EXT: return arrayTex ? ctx->Texture.ProxyTex[TEXTURE_2D_ARRAY_INDEX] : NULL; + case GL_TEXTURE_BUFFER: + return ctx->Extensions.ARB_texture_buffer_object + ? texUnit->CurrentTex[TEXTURE_BUFFER_INDEX] : NULL; default: _mesa_problem(NULL, "bad target in _mesa_select_tex_object()"); return NULL; @@ -954,6 +986,8 @@ _mesa_max_texture_levels(struct gl_context *ctx, GLenum target) return (ctx->Extensions.MESA_texture_array || ctx->Extensions.EXT_texture_array) ? ctx->Const.MaxTextureLevels : 0; + case GL_TEXTURE_BUFFER: + /* fall-through */ default: return 0; /* bad target */ } @@ -990,6 +1024,8 @@ _mesa_get_texture_dimensions(GLenum target) case GL_TEXTURE_2D_ARRAY: case GL_PROXY_TEXTURE_2D_ARRAY: return 3; + case GL_TEXTURE_BUFFER: + /* fall-through */ default: _mesa_problem(NULL, "invalid target 0x%x in get_texture_dimensions()", target); @@ -2224,7 +2260,7 @@ check_rtt_cb(GLuint key, void *data, void *userData) att->Texture == texObj && att->TextureLevel == level && att->CubeMapFace == face) { - ASSERT(att->Texture->Image[att->CubeMapFace][att->TextureLevel]); + ASSERT(_mesa_get_attachment_teximage(att)); /* Tell driver about the new renderbuffer texture */ ctx->Driver.RenderTexture(ctx, ctx->DrawBuffer, att); /* Mark fb status as indeterminate to force re-validation */ @@ -2434,7 +2470,7 @@ teximage(struct gl_context *ctx, GLuint dims, return; /* error was recorded */ } - if (ctx->NewState & _MESA_NEW_TRANSFER_STATE) + if (ctx->NewState & _NEW_PIXEL) _mesa_update_state(ctx); texObj = _mesa_get_current_tex_object(ctx, target); @@ -2580,7 +2616,7 @@ _mesa_EGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image) return; } - if (ctx->NewState & _MESA_NEW_TRANSFER_STATE) + if (ctx->NewState & _NEW_PIXEL) _mesa_update_state(ctx); texObj = _mesa_get_current_tex_object(ctx, target); @@ -2637,7 +2673,7 @@ texsubimage(struct gl_context *ctx, GLuint dims, GLenum target, GLint level, return; } - if (ctx->NewState & _MESA_NEW_TRANSFER_STATE) + if (ctx->NewState & _NEW_PIXEL) _mesa_update_state(ctx); if (subtexture_error_check(ctx, dims, target, level, xoffset, yoffset, zoffset, @@ -2997,6 +3033,7 @@ get_compressed_block_size(GLenum glformat, GLuint *bw, GLuint *bh) /** * Error checking for glCompressedTexImage[123]D(). + * \param reason returns reason for error, if any * \return error code or GL_NO_ERROR. */ static GLenum @@ -3004,36 +3041,49 @@ compressed_texture_error_check(struct gl_context *ctx, GLint dimensions, GLenum target, GLint level, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLint border, - GLsizei imageSize) + GLsizei imageSize, char **reason) { const GLenum proxyTarget = get_proxy_target(target); const GLint maxLevels = _mesa_max_texture_levels(ctx, target); GLint expectedSize; + *reason = ""; /* no error */ + /* check level */ - if (level < 0 || level >= maxLevels) + if (level < 0 || level >= maxLevels) { + *reason = "level"; return GL_INVALID_VALUE; + } if (!target_can_be_compressed(ctx, target, internalFormat)) { + *reason = "target"; return GL_INVALID_ENUM; } /* This will detect any invalid internalFormat value */ - if (!_mesa_is_compressed_format(ctx, internalFormat)) + if (!_mesa_is_compressed_format(ctx, internalFormat)) { + *reason = "internalFormat"; return GL_INVALID_ENUM; + } /* This should really never fail */ - if (_mesa_base_tex_format(ctx, internalFormat) < 0) + if (_mesa_base_tex_format(ctx, internalFormat) < 0) { + *reason = "internalFormat"; return GL_INVALID_ENUM; + } /* No compressed formats support borders at this time */ - if (border != 0) + if (border != 0) { + *reason = "border != 0"; return GL_INVALID_VALUE; + } /* For cube map, width must equal height */ if (target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB && - target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB && width != height) + target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB && width != height) { + *reason = "width != height"; return GL_INVALID_VALUE; + } /* check image size against compression block size */ { @@ -3050,6 +3100,7 @@ compressed_texture_error_check(struct gl_context *ctx, GLint dimensions, * generated [...] if any parameter combinations are not * supported by the specific compressed internal format. */ + *reason = "invalid width or height for compression format"; return GL_INVALID_OPERATION; } } @@ -3059,6 +3110,7 @@ compressed_texture_error_check(struct gl_context *ctx, GLint dimensions, internalFormat, GL_NONE, GL_NONE, width, height, depth, border)) { /* See error comment above */ + *reason = "invalid width, height or format"; return GL_INVALID_OPERATION; } @@ -3069,6 +3121,7 @@ compressed_texture_error_check(struct gl_context *ctx, GLint dimensions, * if <imageSize> is not consistent with the format, dimensions, and * contents of the specified image. */ + *reason = "imageSize inconsistant with width/height/format"; return GL_INVALID_VALUE; } @@ -3223,6 +3276,7 @@ compressedteximage(struct gl_context *ctx, GLuint dims, GLsizei imageSize, const GLvoid *data) { GLenum error; + char *reason = ""; ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); @@ -3243,15 +3297,15 @@ compressedteximage(struct gl_context *ctx, GLuint dims, error = compressed_texture_error_check(ctx, dims, target, level, internalFormat, width, height, depth, - border, imageSize); + border, imageSize, &reason); -#if FEATURE_ES - /* XXX this is kind of a hack */ if (error) { - _mesa_error(ctx, error, "glTexImage2D"); + _mesa_error(ctx, error, "glTexImage2D(%s)", reason); return; } +#if FEATURE_ES + /* XXX this is kind of a hack */ if (dims == 2) { switch (internalFormat) { case GL_PALETTE4_RGB8_OES: @@ -3524,3 +3578,272 @@ _mesa_CompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset, compressed_tex_sub_image(3, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); } + + +/** + * Helper for glTexBuffer(). Check if internalFormat is legal. If so, + * return the basic data type and number of components for the format. + * \param return GL_TRUE if internalFormat is legal, GL_FALSE otherwise + */ +static GLboolean +get_sized_format_info(const struct gl_context *ctx, GLenum internalFormat, + GLenum *datatype, GLuint *components) +{ + switch (internalFormat) { + case GL_ALPHA8: + *datatype = GL_UNSIGNED_BYTE; + *components = 1; + break; + case GL_ALPHA16: + *datatype = GL_UNSIGNED_SHORT; + *components = 1; + break; + case GL_ALPHA16F_ARB: + *datatype = GL_HALF_FLOAT; + *components = 1; + break; + case GL_ALPHA32F_ARB: + *datatype = GL_FLOAT; + *components = 1; + break; + case GL_ALPHA8I_EXT: + *datatype = GL_BYTE; + *components = 1; + break; + case GL_ALPHA16I_EXT: + *datatype = GL_SHORT; + *components = 1; + break; + case GL_ALPHA32I_EXT: + *datatype = GL_INT; + *components = 1; + break; + case GL_ALPHA8UI_EXT: + *datatype = GL_UNSIGNED_BYTE; + *components = 1; + break; + case GL_ALPHA16UI_EXT: + *datatype = GL_UNSIGNED_SHORT; + *components = 1; + break; + case GL_ALPHA32UI_EXT: + *datatype = GL_UNSIGNED_INT; + *components = 1; + break; + case GL_LUMINANCE8: + *datatype = GL_UNSIGNED_BYTE; + *components = 1; + break; + case GL_LUMINANCE16: + *datatype = GL_UNSIGNED_SHORT; + *components = 1; + break; + case GL_LUMINANCE16F_ARB: + *datatype = GL_HALF_FLOAT; + *components = 1; + break; + case GL_LUMINANCE32F_ARB: + *datatype = GL_FLOAT; + *components = 1; + break; + case GL_LUMINANCE8I_EXT: + *datatype = GL_BYTE; + *components = 1; + break; + case GL_LUMINANCE16I_EXT: + *datatype = GL_SHORT; + *components = 1; + break; + case GL_LUMINANCE32I_EXT: + *datatype = GL_INT; + *components = 1; + break; + case GL_LUMINANCE8UI_EXT: + *datatype = GL_UNSIGNED_BYTE; + *components = 1; + break; + case GL_LUMINANCE16UI_EXT: + *datatype = GL_UNSIGNED_SHORT; + *components = 1; + break; + case GL_LUMINANCE32UI_EXT: + *datatype = GL_UNSIGNED_INT; + *components = 1; + break; + case GL_LUMINANCE8_ALPHA8: + *datatype = GL_UNSIGNED_BYTE; + *components = 2; + break; + case GL_LUMINANCE16_ALPHA16: + *datatype = GL_UNSIGNED_SHORT; + *components = 2; + break; + case GL_LUMINANCE_ALPHA16F_ARB: + *datatype = GL_HALF_FLOAT; + *components = 2; + break; + case GL_LUMINANCE_ALPHA32F_ARB: + *datatype = GL_FLOAT; + *components = 2; + break; + case GL_LUMINANCE_ALPHA8I_EXT: + *datatype = GL_BYTE; + *components = 2; + break; + case GL_LUMINANCE_ALPHA16I_EXT: + *datatype = GL_SHORT; + *components = 2; + break; + case GL_LUMINANCE_ALPHA32I_EXT: + *datatype = GL_INT; + *components = 2; + break; + case GL_LUMINANCE_ALPHA8UI_EXT: + *datatype = GL_UNSIGNED_BYTE; + *components = 2; + break; + case GL_LUMINANCE_ALPHA16UI_EXT: + *datatype = GL_UNSIGNED_SHORT; + *components = 2; + break; + case GL_LUMINANCE_ALPHA32UI_EXT: + *datatype = GL_UNSIGNED_INT; + *components = 2; + break; + case GL_INTENSITY8: + *datatype = GL_UNSIGNED_BYTE; + *components = 1; + break; + case GL_INTENSITY16: + *datatype = GL_UNSIGNED_SHORT; + *components = 1; + break; + case GL_INTENSITY16F_ARB: + *datatype = GL_HALF_FLOAT; + *components = 1; + break; + case GL_INTENSITY32F_ARB: + *datatype = GL_FLOAT; + *components = 1; + break; + case GL_INTENSITY8I_EXT: + *datatype = GL_BYTE; + *components = 1; + break; + case GL_INTENSITY16I_EXT: + *datatype = GL_SHORT; + *components = 1; + break; + case GL_INTENSITY32I_EXT: + *datatype = GL_INT; + *components = 1; + break; + case GL_INTENSITY8UI_EXT: + *datatype = GL_UNSIGNED_BYTE; + *components = 1; + break; + case GL_INTENSITY16UI_EXT: + *datatype = GL_UNSIGNED_SHORT; + *components = 1; + break; + case GL_INTENSITY32UI_EXT: + *datatype = GL_UNSIGNED_INT; + *components = 1; + break; + case GL_RGBA8: + *datatype = GL_UNSIGNED_BYTE; + *components = 4; + break; + case GL_RGBA16: + *datatype = GL_UNSIGNED_SHORT; + *components = 4; + break; + case GL_RGBA16F_ARB: + *datatype = GL_HALF_FLOAT; + *components = 4; + break; + case GL_RGBA32F_ARB: + *datatype = GL_FLOAT; + *components = 4; + break; + case GL_RGBA8I_EXT: + *datatype = GL_BYTE; + *components = 4; + break; + case GL_RGBA16I_EXT: + *datatype = GL_SHORT; + *components = 4; + break; + case GL_RGBA32I_EXT: + *datatype = GL_INT; + *components = 4; + break; + case GL_RGBA8UI_EXT: + *datatype = GL_UNSIGNED_BYTE; + *components = 4; + break; + case GL_RGBA16UI_EXT: + *datatype = GL_UNSIGNED_SHORT; + *components = 4; + break; + case GL_RGBA32UI_EXT: + *datatype = GL_UNSIGNED_INT; + *components = 4; + break; + default: + return GL_FALSE; + } + + if (*datatype == GL_FLOAT && !ctx->Extensions.ARB_texture_float) + return GL_FALSE; + + if (*datatype == GL_HALF_FLOAT && !ctx->Extensions.ARB_half_float_pixel) + return GL_FALSE; + + return GL_TRUE; +} + + +/** GL_ARB_texture_buffer_object */ +void GLAPIENTRY +_mesa_TexBuffer(GLenum target, GLenum internalFormat, GLuint buffer) +{ + struct gl_texture_object *texObj; + struct gl_buffer_object *bufObj; + GLenum dataType; + GLuint comps; + + GET_CURRENT_CONTEXT(ctx); + ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); + + if (!ctx->Extensions.ARB_texture_buffer_object) { + _mesa_error(ctx, GL_INVALID_OPERATION, "glTexBuffer"); + return; + } + + if (target != GL_TEXTURE_BUFFER_ARB) { + _mesa_error(ctx, GL_INVALID_ENUM, "glTexBuffer(target)"); + return; + } + + if (!get_sized_format_info(ctx, internalFormat, &dataType, &comps)) { + _mesa_error(ctx, GL_INVALID_ENUM, "glTexBuffer(internalFormat 0x%x)", + internalFormat); + return; + } + + bufObj = _mesa_lookup_bufferobj(ctx, buffer); + if (buffer && !bufObj) { + _mesa_error(ctx, GL_INVALID_OPERATION, "glTexBuffer(buffer %u)", buffer); + return; + } + + texObj = _mesa_get_current_tex_object(ctx, target); + + _mesa_lock_texture(ctx, texObj); + { + _mesa_reference_buffer_object(ctx, &texObj->BufferObject, bufObj); + texObj->BufferObjectFormat = internalFormat; + } + _mesa_unlock_texture(ctx, texObj); +} diff --git a/src/mesa/main/teximage.h b/src/mesa/main/teximage.h index bb5509e5be6..19abc649898 100644 --- a/src/mesa/main/teximage.h +++ b/src/mesa/main/teximage.h @@ -59,7 +59,8 @@ _mesa_new_texture_image( struct gl_context *ctx ); extern void -_mesa_delete_texture_image( struct gl_context *ctx, struct gl_texture_image *teximage ); +_mesa_delete_texture_image( struct gl_context *ctx, + struct gl_texture_image *teximage ); extern void _mesa_free_texture_image_data( struct gl_context *ctx, @@ -82,7 +83,8 @@ _mesa_choose_texture_format(struct gl_context *ctx, extern void -_mesa_clear_texture_image(struct gl_context *ctx, struct gl_texture_image *texImage); +_mesa_clear_texture_image(struct gl_context *ctx, + struct gl_texture_image *texImage); extern void @@ -92,7 +94,8 @@ _mesa_set_tex_image(struct gl_texture_object *tObj, extern struct gl_texture_object * -_mesa_select_tex_object(struct gl_context *ctx, const struct gl_texture_unit *texUnit, +_mesa_select_tex_object(struct gl_context *ctx, + const struct gl_texture_unit *texUnit, GLenum target); extern struct gl_texture_object * @@ -100,7 +103,8 @@ _mesa_get_current_tex_object(struct gl_context *ctx, GLenum target); extern struct gl_texture_image * -_mesa_select_tex_image(struct gl_context *ctx, const struct gl_texture_object *texObj, +_mesa_select_tex_image(struct gl_context *ctx, + const struct gl_texture_object *texObj, GLenum target, GLint level); @@ -271,6 +275,11 @@ _mesa_CompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data); + +extern void GLAPIENTRY +_mesa_TexBuffer(GLenum target, GLenum internalFormat, GLuint buffer); + + /*@}*/ #endif diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c index c1e3e4dec79..43d6e52dfe9 100644 --- a/src/mesa/main/texobj.c +++ b/src/mesa/main/texobj.c @@ -29,6 +29,7 @@ #include "mfeatures.h" +#include "bufferobj.h" #include "colortab.h" #include "context.h" #include "enums.h" @@ -105,7 +106,8 @@ _mesa_initialize_texture_object( struct gl_texture_object *obj, target == GL_TEXTURE_CUBE_MAP_ARB || target == GL_TEXTURE_RECTANGLE_NV || target == GL_TEXTURE_1D_ARRAY_EXT || - target == GL_TEXTURE_2D_ARRAY_EXT); + target == GL_TEXTURE_2D_ARRAY_EXT || + target == GL_TEXTURE_BUFFER); memset(obj, 0, sizeof(*obj)); /* init the non-zero fields */ @@ -114,35 +116,37 @@ _mesa_initialize_texture_object( struct gl_texture_object *obj, obj->Name = name; obj->Target = target; obj->Priority = 1.0F; + obj->BaseLevel = 0; + obj->MaxLevel = 1000; + + /* sampler state */ if (target == GL_TEXTURE_RECTANGLE_NV) { - obj->WrapS = GL_CLAMP_TO_EDGE; - obj->WrapT = GL_CLAMP_TO_EDGE; - obj->WrapR = GL_CLAMP_TO_EDGE; - obj->MinFilter = GL_LINEAR; + obj->Sampler.WrapS = GL_CLAMP_TO_EDGE; + obj->Sampler.WrapT = GL_CLAMP_TO_EDGE; + obj->Sampler.WrapR = GL_CLAMP_TO_EDGE; + obj->Sampler.MinFilter = GL_LINEAR; } else { - obj->WrapS = GL_REPEAT; - obj->WrapT = GL_REPEAT; - obj->WrapR = GL_REPEAT; - obj->MinFilter = GL_NEAREST_MIPMAP_LINEAR; + obj->Sampler.WrapS = GL_REPEAT; + obj->Sampler.WrapT = GL_REPEAT; + obj->Sampler.WrapR = GL_REPEAT; + obj->Sampler.MinFilter = GL_NEAREST_MIPMAP_LINEAR; } - obj->MagFilter = GL_LINEAR; - obj->MinLod = -1000.0; - obj->MaxLod = 1000.0; - obj->LodBias = 0.0; - obj->BaseLevel = 0; - obj->MaxLevel = 1000; - obj->MaxAnisotropy = 1.0; - obj->CompareMode = GL_NONE; /* ARB_shadow */ - obj->CompareFunc = GL_LEQUAL; /* ARB_shadow */ - obj->CompareFailValue = 0.0F; /* ARB_shadow_ambient */ - obj->DepthMode = GL_LUMINANCE; /* ARB_depth_texture */ + obj->Sampler.MagFilter = GL_LINEAR; + obj->Sampler.MinLod = -1000.0; + obj->Sampler.MaxLod = 1000.0; + obj->Sampler.LodBias = 0.0; + obj->Sampler.MaxAnisotropy = 1.0; + obj->Sampler.CompareMode = GL_NONE; /* ARB_shadow */ + obj->Sampler.CompareFunc = GL_LEQUAL; /* ARB_shadow */ + obj->Sampler.CompareFailValue = 0.0F; /* ARB_shadow_ambient */ + obj->Sampler.DepthMode = GL_LUMINANCE; /* ARB_depth_texture */ obj->Swizzle[0] = GL_RED; obj->Swizzle[1] = GL_GREEN; obj->Swizzle[2] = GL_BLUE; obj->Swizzle[3] = GL_ALPHA; obj->_Swizzle = SWIZZLE_NOOP; - obj->sRGBDecode = GL_DECODE_EXT; + obj->Sampler.sRGBDecode = GL_DECODE_EXT; } @@ -158,10 +162,10 @@ finish_texture_init(struct gl_context *ctx, GLenum target, if (target == GL_TEXTURE_RECTANGLE_NV) { /* have to init wrap and filter state here - kind of klunky */ - obj->WrapS = GL_CLAMP_TO_EDGE; - obj->WrapT = GL_CLAMP_TO_EDGE; - obj->WrapR = GL_CLAMP_TO_EDGE; - obj->MinFilter = GL_LINEAR; + obj->Sampler.WrapS = GL_CLAMP_TO_EDGE; + obj->Sampler.WrapT = GL_CLAMP_TO_EDGE; + obj->Sampler.WrapR = GL_CLAMP_TO_EDGE; + obj->Sampler.MinFilter = GL_LINEAR; if (ctx->Driver.TexParameter) { static const GLfloat fparam_wrap[1] = {(GLfloat) GL_CLAMP_TO_EDGE}; static const GLfloat fparam_filter[1] = {(GLfloat) GL_LINEAR}; @@ -204,6 +208,8 @@ _mesa_delete_texture_object(struct gl_context *ctx, } } + _mesa_reference_buffer_object(ctx, &texObj->BufferObject, NULL); + /* destroy the mutex -- it may have allocated memory (eg on bsd) */ _glthread_DESTROY_MUTEX(texObj->Mutex); @@ -227,25 +233,25 @@ _mesa_copy_texture_object( struct gl_texture_object *dest, dest->Target = src->Target; dest->Name = src->Name; dest->Priority = src->Priority; - dest->BorderColor.f[0] = src->BorderColor.f[0]; - dest->BorderColor.f[1] = src->BorderColor.f[1]; - dest->BorderColor.f[2] = src->BorderColor.f[2]; - dest->BorderColor.f[3] = src->BorderColor.f[3]; - dest->WrapS = src->WrapS; - dest->WrapT = src->WrapT; - dest->WrapR = src->WrapR; - dest->MinFilter = src->MinFilter; - dest->MagFilter = src->MagFilter; - dest->MinLod = src->MinLod; - dest->MaxLod = src->MaxLod; - dest->LodBias = src->LodBias; + dest->Sampler.BorderColor.f[0] = src->Sampler.BorderColor.f[0]; + dest->Sampler.BorderColor.f[1] = src->Sampler.BorderColor.f[1]; + dest->Sampler.BorderColor.f[2] = src->Sampler.BorderColor.f[2]; + dest->Sampler.BorderColor.f[3] = src->Sampler.BorderColor.f[3]; + dest->Sampler.WrapS = src->Sampler.WrapS; + dest->Sampler.WrapT = src->Sampler.WrapT; + dest->Sampler.WrapR = src->Sampler.WrapR; + dest->Sampler.MinFilter = src->Sampler.MinFilter; + dest->Sampler.MagFilter = src->Sampler.MagFilter; + dest->Sampler.MinLod = src->Sampler.MinLod; + dest->Sampler.MaxLod = src->Sampler.MaxLod; + dest->Sampler.LodBias = src->Sampler.LodBias; dest->BaseLevel = src->BaseLevel; dest->MaxLevel = src->MaxLevel; - dest->MaxAnisotropy = src->MaxAnisotropy; - dest->CompareMode = src->CompareMode; - dest->CompareFunc = src->CompareFunc; - dest->CompareFailValue = src->CompareFailValue; - dest->DepthMode = src->DepthMode; + dest->Sampler.MaxAnisotropy = src->Sampler.MaxAnisotropy; + dest->Sampler.CompareMode = src->Sampler.CompareMode; + dest->Sampler.CompareFunc = src->Sampler.CompareFunc; + dest->Sampler.CompareFailValue = src->Sampler.CompareFailValue; + dest->Sampler.DepthMode = src->Sampler.DepthMode; dest->_MaxLevel = src->_MaxLevel; dest->_MaxLambda = src->_MaxLambda; dest->GenerateMipmap = src->GenerateMipmap; @@ -299,6 +305,7 @@ valid_texture_object(const struct gl_texture_object *tex) case GL_TEXTURE_RECTANGLE_NV: case GL_TEXTURE_1D_ARRAY_EXT: case GL_TEXTURE_2D_ARRAY_EXT: + case GL_TEXTURE_BUFFER: return GL_TRUE; case 0x99: _mesa_problem(NULL, "invalid reference to a deleted texture object"); @@ -501,7 +508,7 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx, } /* extra checking for mipmaps */ - if (t->MinFilter != GL_NEAREST && t->MinFilter != GL_LINEAR) { + if (t->Sampler.MinFilter != GL_NEAREST && t->Sampler.MinFilter != GL_LINEAR) { /* * Mipmapping: determine if we have a complete set of mipmaps */ @@ -756,8 +763,8 @@ _mesa_get_fallback_texture(struct gl_context *ctx) /* create texture object */ texObj = ctx->Driver.NewTextureObject(ctx, 0, GL_TEXTURE_2D); assert(texObj->RefCount == 1); - texObj->MinFilter = GL_NEAREST; - texObj->MagFilter = GL_NEAREST; + texObj->Sampler.MinFilter = GL_NEAREST; + texObj->Sampler.MagFilter = GL_NEAREST; /* create level[0] texture image */ texImage = _mesa_get_tex_image(ctx, texObj, GL_TEXTURE_2D, 0); @@ -989,6 +996,8 @@ target_enum_to_index(GLenum target) return TEXTURE_1D_ARRAY_INDEX; case GL_TEXTURE_2D_ARRAY_EXT: return TEXTURE_2D_ARRAY_INDEX; + case GL_TEXTURE_BUFFER_ARB: + return TEXTURE_BUFFER_INDEX; default: return -1; } diff --git a/src/mesa/main/texobj.h b/src/mesa/main/texobj.h index 2461b063efd..476a17537a3 100644 --- a/src/mesa/main/texobj.h +++ b/src/mesa/main/texobj.h @@ -52,14 +52,16 @@ _mesa_initialize_texture_object( struct gl_texture_object *obj, GLuint name, GLenum target ); extern void -_mesa_delete_texture_object( struct gl_context *ctx, struct gl_texture_object *obj ); +_mesa_delete_texture_object( struct gl_context *ctx, + struct gl_texture_object *obj ); extern void _mesa_copy_texture_object( struct gl_texture_object *dest, const struct gl_texture_object *src ); extern void -_mesa_clear_texture_object(struct gl_context *ctx, struct gl_texture_object *obj); +_mesa_clear_texture_object(struct gl_context *ctx, + struct gl_texture_object *obj); extern void _mesa_reference_texobj(struct gl_texture_object **ptr, diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c index 6e14face4dd..3d56dac3f91 100644 --- a/src/mesa/main/texparam.c +++ b/src/mesa/main/texparam.c @@ -38,6 +38,7 @@ #include "main/macros.h" #include "main/mfeatures.h" #include "main/mtypes.h" +#include "main/state.h" #include "main/texcompress.h" #include "main/texparam.h" #include "main/teximage.h" @@ -215,13 +216,13 @@ set_tex_parameteri(struct gl_context *ctx, { switch (pname) { case GL_TEXTURE_MIN_FILTER: - if (texObj->MinFilter == params[0]) + if (texObj->Sampler.MinFilter == params[0]) return GL_FALSE; switch (params[0]) { case GL_NEAREST: case GL_LINEAR: incomplete(ctx, texObj); - texObj->MinFilter = params[0]; + texObj->Sampler.MinFilter = params[0]; return GL_TRUE; case GL_NEAREST_MIPMAP_NEAREST: case GL_LINEAR_MIPMAP_NEAREST: @@ -229,7 +230,7 @@ set_tex_parameteri(struct gl_context *ctx, case GL_LINEAR_MIPMAP_LINEAR: if (texObj->Target != GL_TEXTURE_RECTANGLE_NV) { incomplete(ctx, texObj); - texObj->MinFilter = params[0]; + texObj->Sampler.MinFilter = params[0]; return GL_TRUE; } /* fall-through */ @@ -239,13 +240,13 @@ set_tex_parameteri(struct gl_context *ctx, return GL_FALSE; case GL_TEXTURE_MAG_FILTER: - if (texObj->MagFilter == params[0]) + if (texObj->Sampler.MagFilter == params[0]) return GL_FALSE; switch (params[0]) { case GL_NEAREST: case GL_LINEAR: flush(ctx); /* does not effect completeness */ - texObj->MagFilter = params[0]; + texObj->Sampler.MagFilter = params[0]; return GL_TRUE; default: goto invalid_param; @@ -253,31 +254,31 @@ set_tex_parameteri(struct gl_context *ctx, return GL_FALSE; case GL_TEXTURE_WRAP_S: - if (texObj->WrapS == params[0]) + if (texObj->Sampler.WrapS == params[0]) return GL_FALSE; if (validate_texture_wrap_mode(ctx, texObj->Target, params[0])) { flush(ctx); - texObj->WrapS = params[0]; + texObj->Sampler.WrapS = params[0]; return GL_TRUE; } return GL_FALSE; case GL_TEXTURE_WRAP_T: - if (texObj->WrapT == params[0]) + if (texObj->Sampler.WrapT == params[0]) return GL_FALSE; if (validate_texture_wrap_mode(ctx, texObj->Target, params[0])) { flush(ctx); - texObj->WrapT = params[0]; + texObj->Sampler.WrapT = params[0]; return GL_TRUE; } return GL_FALSE; case GL_TEXTURE_WRAP_R: - if (texObj->WrapR == params[0]) + if (texObj->Sampler.WrapR == params[0]) return GL_FALSE; if (validate_texture_wrap_mode(ctx, texObj->Target, params[0])) { flush(ctx); - texObj->WrapR = params[0]; + texObj->Sampler.WrapR = params[0]; return GL_TRUE; } return GL_FALSE; @@ -317,12 +318,12 @@ set_tex_parameteri(struct gl_context *ctx, case GL_TEXTURE_COMPARE_MODE_ARB: if (ctx->Extensions.ARB_shadow) { - if (texObj->CompareMode == params[0]) + if (texObj->Sampler.CompareMode == params[0]) return GL_FALSE; if (params[0] == GL_NONE || params[0] == GL_COMPARE_R_TO_TEXTURE_ARB) { flush(ctx); - texObj->CompareMode = params[0]; + texObj->Sampler.CompareMode = params[0]; return GL_TRUE; } goto invalid_param; @@ -331,13 +332,13 @@ set_tex_parameteri(struct gl_context *ctx, case GL_TEXTURE_COMPARE_FUNC_ARB: if (ctx->Extensions.ARB_shadow) { - if (texObj->CompareFunc == params[0]) + if (texObj->Sampler.CompareFunc == params[0]) return GL_FALSE; switch (params[0]) { case GL_LEQUAL: case GL_GEQUAL: flush(ctx); - texObj->CompareFunc = params[0]; + texObj->Sampler.CompareFunc = params[0]; return GL_TRUE; case GL_EQUAL: case GL_NOTEQUAL: @@ -347,7 +348,7 @@ set_tex_parameteri(struct gl_context *ctx, case GL_NEVER: if (ctx->Extensions.EXT_shadow_funcs) { flush(ctx); - texObj->CompareFunc = params[0]; + texObj->Sampler.CompareFunc = params[0]; return GL_TRUE; } /* fall-through */ @@ -359,14 +360,14 @@ set_tex_parameteri(struct gl_context *ctx, case GL_DEPTH_TEXTURE_MODE_ARB: if (ctx->Extensions.ARB_depth_texture) { - if (texObj->DepthMode == params[0]) + if (texObj->Sampler.DepthMode == params[0]) return GL_FALSE; if (params[0] == GL_LUMINANCE || params[0] == GL_INTENSITY || params[0] == GL_ALPHA || (ctx->Extensions.ARB_texture_rg && params[0] == GL_RED)) { flush(ctx); - texObj->DepthMode = params[0]; + texObj->Sampler.DepthMode = params[0]; return GL_TRUE; } goto invalid_param; @@ -428,9 +429,9 @@ set_tex_parameteri(struct gl_context *ctx, if (ctx->Extensions.EXT_texture_sRGB_decode) { GLenum decode = params[0]; if (decode == GL_DECODE_EXT || decode == GL_SKIP_DECODE_EXT) { - if (texObj->sRGBDecode != decode) { + if (texObj->Sampler.sRGBDecode != decode) { flush(ctx); - texObj->sRGBDecode = decode; + texObj->Sampler.sRGBDecode = decode; _mesa_update_fetch_functions(texObj); } return GL_TRUE; @@ -465,17 +466,17 @@ set_tex_parameterf(struct gl_context *ctx, { switch (pname) { case GL_TEXTURE_MIN_LOD: - if (texObj->MinLod == params[0]) + if (texObj->Sampler.MinLod == params[0]) return GL_FALSE; flush(ctx); - texObj->MinLod = params[0]; + texObj->Sampler.MinLod = params[0]; return GL_TRUE; case GL_TEXTURE_MAX_LOD: - if (texObj->MaxLod == params[0]) + if (texObj->Sampler.MaxLod == params[0]) return GL_FALSE; flush(ctx); - texObj->MaxLod = params[0]; + texObj->Sampler.MaxLod = params[0]; return GL_TRUE; case GL_TEXTURE_PRIORITY: @@ -485,7 +486,7 @@ set_tex_parameterf(struct gl_context *ctx, case GL_TEXTURE_MAX_ANISOTROPY_EXT: if (ctx->Extensions.EXT_texture_filter_anisotropic) { - if (texObj->MaxAnisotropy == params[0]) + if (texObj->Sampler.MaxAnisotropy == params[0]) return GL_FALSE; if (params[0] < 1.0) { _mesa_error(ctx, GL_INVALID_VALUE, "glTexParameter(param)" ); @@ -493,7 +494,7 @@ set_tex_parameterf(struct gl_context *ctx, } flush(ctx); /* clamp to max, that's what NVIDIA does */ - texObj->MaxAnisotropy = MIN2(params[0], + texObj->Sampler.MaxAnisotropy = MIN2(params[0], ctx->Const.MaxTextureMaxAnisotropy); return GL_TRUE; } @@ -507,9 +508,9 @@ set_tex_parameterf(struct gl_context *ctx, case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB: if (ctx->Extensions.ARB_shadow_ambient) { - if (texObj->CompareFailValue != params[0]) { + if (texObj->Sampler.CompareFailValue != params[0]) { flush(ctx); - texObj->CompareFailValue = CLAMP(params[0], 0.0F, 1.0F); + texObj->Sampler.CompareFailValue = CLAMP(params[0], 0.0F, 1.0F); return GL_TRUE; } } @@ -522,9 +523,9 @@ set_tex_parameterf(struct gl_context *ctx, case GL_TEXTURE_LOD_BIAS: /* NOTE: this is really part of OpenGL 1.4, not EXT_texture_lod_bias */ if (ctx->Extensions.EXT_texture_lod_bias) { - if (texObj->LodBias != params[0]) { + if (texObj->Sampler.LodBias != params[0]) { flush(ctx); - texObj->LodBias = params[0]; + texObj->Sampler.LodBias = params[0]; return GL_TRUE; } return GL_FALSE; @@ -533,10 +534,18 @@ set_tex_parameterf(struct gl_context *ctx, case GL_TEXTURE_BORDER_COLOR: flush(ctx); - texObj->BorderColor.f[RCOMP] = params[0]; - texObj->BorderColor.f[GCOMP] = params[1]; - texObj->BorderColor.f[BCOMP] = params[2]; - texObj->BorderColor.f[ACOMP] = params[3]; + /* ARB_texture_float disables clamping */ + if (ctx->Extensions.ARB_texture_float) { + texObj->Sampler.BorderColor.f[RCOMP] = params[0]; + texObj->Sampler.BorderColor.f[GCOMP] = params[1]; + texObj->Sampler.BorderColor.f[BCOMP] = params[2]; + texObj->Sampler.BorderColor.f[ACOMP] = params[3]; + } else { + texObj->Sampler.BorderColor.f[RCOMP] = CLAMP(params[0], 0.0F, 1.0F); + texObj->Sampler.BorderColor.f[GCOMP] = CLAMP(params[1], 0.0F, 1.0F); + texObj->Sampler.BorderColor.f[BCOMP] = CLAMP(params[2], 0.0F, 1.0F); + texObj->Sampler.BorderColor.f[ACOMP] = CLAMP(params[3], 0.0F, 1.0F); + } return GL_TRUE; default: @@ -775,7 +784,7 @@ _mesa_TexParameterIiv(GLenum target, GLenum pname, const GLint *params) case GL_TEXTURE_BORDER_COLOR: FLUSH_VERTICES(ctx, _NEW_TEXTURE); /* set the integer-valued border color */ - COPY_4V(texObj->BorderColor.i, params); + COPY_4V(texObj->Sampler.BorderColor.i, params); break; default: _mesa_TexParameteriv(target, pname, params); @@ -805,7 +814,7 @@ _mesa_TexParameterIuiv(GLenum target, GLenum pname, const GLuint *params) case GL_TEXTURE_BORDER_COLOR: FLUSH_VERTICES(ctx, _NEW_TEXTURE); /* set the unsigned integer-valued border color */ - COPY_4V(texObj->BorderColor.ui, params); + COPY_4V(texObj->Sampler.BorderColor.ui, params); break; default: _mesa_TexParameteriv(target, pname, (const GLint *) params); @@ -1092,25 +1101,37 @@ _mesa_GetTexParameterfv( GLenum target, GLenum pname, GLfloat *params ) _mesa_lock_texture(ctx, obj); switch (pname) { case GL_TEXTURE_MAG_FILTER: - *params = ENUM_TO_FLOAT(obj->MagFilter); + *params = ENUM_TO_FLOAT(obj->Sampler.MagFilter); break; case GL_TEXTURE_MIN_FILTER: - *params = ENUM_TO_FLOAT(obj->MinFilter); + *params = ENUM_TO_FLOAT(obj->Sampler.MinFilter); break; case GL_TEXTURE_WRAP_S: - *params = ENUM_TO_FLOAT(obj->WrapS); + *params = ENUM_TO_FLOAT(obj->Sampler.WrapS); break; case GL_TEXTURE_WRAP_T: - *params = ENUM_TO_FLOAT(obj->WrapT); + *params = ENUM_TO_FLOAT(obj->Sampler.WrapT); break; case GL_TEXTURE_WRAP_R: - *params = ENUM_TO_FLOAT(obj->WrapR); + *params = ENUM_TO_FLOAT(obj->Sampler.WrapR); break; case GL_TEXTURE_BORDER_COLOR: - params[0] = CLAMP(obj->BorderColor.f[0], 0.0F, 1.0F); - params[1] = CLAMP(obj->BorderColor.f[1], 0.0F, 1.0F); - params[2] = CLAMP(obj->BorderColor.f[2], 0.0F, 1.0F); - params[3] = CLAMP(obj->BorderColor.f[3], 0.0F, 1.0F); + if(ctx->NewState & (_NEW_BUFFERS | _NEW_FRAG_CLAMP)) + _mesa_update_state_locked(ctx); + if(ctx->Color._ClampFragmentColor) + { + params[0] = CLAMP(obj->Sampler.BorderColor.f[0], 0.0F, 1.0F); + params[1] = CLAMP(obj->Sampler.BorderColor.f[1], 0.0F, 1.0F); + params[2] = CLAMP(obj->Sampler.BorderColor.f[2], 0.0F, 1.0F); + params[3] = CLAMP(obj->Sampler.BorderColor.f[3], 0.0F, 1.0F); + } + else + { + params[0] = obj->Sampler.BorderColor.f[0]; + params[1] = obj->Sampler.BorderColor.f[1]; + params[2] = obj->Sampler.BorderColor.f[2]; + params[3] = obj->Sampler.BorderColor.f[3]; + } break; case GL_TEXTURE_RESIDENT: { @@ -1126,10 +1147,10 @@ _mesa_GetTexParameterfv( GLenum target, GLenum pname, GLfloat *params ) *params = obj->Priority; break; case GL_TEXTURE_MIN_LOD: - *params = obj->MinLod; + *params = obj->Sampler.MinLod; break; case GL_TEXTURE_MAX_LOD: - *params = obj->MaxLod; + *params = obj->Sampler.MaxLod; break; case GL_TEXTURE_BASE_LEVEL: *params = (GLfloat) obj->BaseLevel; @@ -1139,14 +1160,14 @@ _mesa_GetTexParameterfv( GLenum target, GLenum pname, GLfloat *params ) break; case GL_TEXTURE_MAX_ANISOTROPY_EXT: if (ctx->Extensions.EXT_texture_filter_anisotropic) { - *params = obj->MaxAnisotropy; + *params = obj->Sampler.MaxAnisotropy; } else error = GL_TRUE; break; case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB: if (ctx->Extensions.ARB_shadow_ambient) { - *params = obj->CompareFailValue; + *params = obj->Sampler.CompareFailValue; } else error = GL_TRUE; @@ -1156,28 +1177,28 @@ _mesa_GetTexParameterfv( GLenum target, GLenum pname, GLfloat *params ) break; case GL_TEXTURE_COMPARE_MODE_ARB: if (ctx->Extensions.ARB_shadow) { - *params = (GLfloat) obj->CompareMode; + *params = (GLfloat) obj->Sampler.CompareMode; } else error = GL_TRUE; break; case GL_TEXTURE_COMPARE_FUNC_ARB: if (ctx->Extensions.ARB_shadow) { - *params = (GLfloat) obj->CompareFunc; + *params = (GLfloat) obj->Sampler.CompareFunc; } else error = GL_TRUE; break; case GL_DEPTH_TEXTURE_MODE_ARB: if (ctx->Extensions.ARB_depth_texture) { - *params = (GLfloat) obj->DepthMode; + *params = (GLfloat) obj->Sampler.DepthMode; } else error = GL_TRUE; break; case GL_TEXTURE_LOD_BIAS: if (ctx->Extensions.EXT_texture_lod_bias) { - *params = obj->LodBias; + *params = obj->Sampler.LodBias; } else error = GL_TRUE; @@ -1244,27 +1265,27 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params ) _mesa_lock_texture(ctx, obj); switch (pname) { case GL_TEXTURE_MAG_FILTER: - *params = (GLint) obj->MagFilter; + *params = (GLint) obj->Sampler.MagFilter; break;; case GL_TEXTURE_MIN_FILTER: - *params = (GLint) obj->MinFilter; + *params = (GLint) obj->Sampler.MinFilter; break;; case GL_TEXTURE_WRAP_S: - *params = (GLint) obj->WrapS; + *params = (GLint) obj->Sampler.WrapS; break;; case GL_TEXTURE_WRAP_T: - *params = (GLint) obj->WrapT; + *params = (GLint) obj->Sampler.WrapT; break;; case GL_TEXTURE_WRAP_R: - *params = (GLint) obj->WrapR; + *params = (GLint) obj->Sampler.WrapR; break;; case GL_TEXTURE_BORDER_COLOR: { GLfloat b[4]; - b[0] = CLAMP(obj->BorderColor.f[0], 0.0F, 1.0F); - b[1] = CLAMP(obj->BorderColor.f[1], 0.0F, 1.0F); - b[2] = CLAMP(obj->BorderColor.f[2], 0.0F, 1.0F); - b[3] = CLAMP(obj->BorderColor.f[3], 0.0F, 1.0F); + b[0] = CLAMP(obj->Sampler.BorderColor.f[0], 0.0F, 1.0F); + b[1] = CLAMP(obj->Sampler.BorderColor.f[1], 0.0F, 1.0F); + b[2] = CLAMP(obj->Sampler.BorderColor.f[2], 0.0F, 1.0F); + b[3] = CLAMP(obj->Sampler.BorderColor.f[3], 0.0F, 1.0F); params[0] = FLOAT_TO_INT(b[0]); params[1] = FLOAT_TO_INT(b[1]); params[2] = FLOAT_TO_INT(b[2]); @@ -1285,10 +1306,10 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params ) *params = FLOAT_TO_INT(obj->Priority); break;; case GL_TEXTURE_MIN_LOD: - *params = (GLint) obj->MinLod; + *params = (GLint) obj->Sampler.MinLod; break;; case GL_TEXTURE_MAX_LOD: - *params = (GLint) obj->MaxLod; + *params = (GLint) obj->Sampler.MaxLod; break;; case GL_TEXTURE_BASE_LEVEL: *params = obj->BaseLevel; @@ -1298,7 +1319,7 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params ) break;; case GL_TEXTURE_MAX_ANISOTROPY_EXT: if (ctx->Extensions.EXT_texture_filter_anisotropic) { - *params = (GLint) obj->MaxAnisotropy; + *params = (GLint) obj->Sampler.MaxAnisotropy; } else { error = GL_TRUE; @@ -1306,7 +1327,7 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params ) break; case GL_TEXTURE_COMPARE_FAIL_VALUE_ARB: if (ctx->Extensions.ARB_shadow_ambient) { - *params = (GLint) FLOAT_TO_INT(obj->CompareFailValue); + *params = (GLint) FLOAT_TO_INT(obj->Sampler.CompareFailValue); } else { error = GL_TRUE; @@ -1317,7 +1338,7 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params ) break; case GL_TEXTURE_COMPARE_MODE_ARB: if (ctx->Extensions.ARB_shadow) { - *params = (GLint) obj->CompareMode; + *params = (GLint) obj->Sampler.CompareMode; } else { error = GL_TRUE; @@ -1325,7 +1346,7 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params ) break; case GL_TEXTURE_COMPARE_FUNC_ARB: if (ctx->Extensions.ARB_shadow) { - *params = (GLint) obj->CompareFunc; + *params = (GLint) obj->Sampler.CompareFunc; } else { error = GL_TRUE; @@ -1333,7 +1354,7 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params ) break; case GL_DEPTH_TEXTURE_MODE_ARB: if (ctx->Extensions.ARB_depth_texture) { - *params = (GLint) obj->DepthMode; + *params = (GLint) obj->Sampler.DepthMode; } else { error = GL_TRUE; @@ -1341,7 +1362,7 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params ) break; case GL_TEXTURE_LOD_BIAS: if (ctx->Extensions.EXT_texture_lod_bias) { - *params = (GLint) obj->LodBias; + *params = (GLint) obj->Sampler.LodBias; } else { error = GL_TRUE; @@ -1401,7 +1422,7 @@ _mesa_GetTexParameterIiv(GLenum target, GLenum pname, GLint *params) switch (pname) { case GL_TEXTURE_BORDER_COLOR: - COPY_4V(params, texObj->BorderColor.i); + COPY_4V(params, texObj->Sampler.BorderColor.i); break; default: _mesa_GetTexParameteriv(target, pname, params); @@ -1421,7 +1442,7 @@ _mesa_GetTexParameterIuiv(GLenum target, GLenum pname, GLuint *params) switch (pname) { case GL_TEXTURE_BORDER_COLOR: - COPY_4V(params, texObj->BorderColor.i); + COPY_4V(params, texObj->Sampler.BorderColor.i); break; default: { diff --git a/src/mesa/main/texrender.c b/src/mesa/main/texrender.c index 8cec24c3e24..a7641a5f9a4 100644 --- a/src/mesa/main/texrender.c +++ b/src/mesa/main/texrender.c @@ -1,6 +1,7 @@ #include "context.h" #include "colormac.h" +#include "fbobject.h" #include "macros.h" #include "texfetch.h" #include "teximage.h" @@ -525,7 +526,7 @@ wrap_texture(struct gl_context *ctx, struct gl_renderbuffer_attachment *att) * update the internal format info, etc. */ static void -update_wrapper(struct gl_context *ctx, const struct gl_renderbuffer_attachment *att) +update_wrapper(struct gl_context *ctx, struct gl_renderbuffer_attachment *att) { struct texture_renderbuffer *trb = (struct texture_renderbuffer *) att->Renderbuffer; @@ -533,7 +534,7 @@ update_wrapper(struct gl_context *ctx, const struct gl_renderbuffer_attachment * (void) ctx; ASSERT(trb); - trb->TexImage = att->Texture->Image[att->CubeMapFace][att->TextureLevel]; + trb->TexImage = _mesa_get_attachment_teximage(att); ASSERT(trb->TexImage); trb->Store = _mesa_get_texel_store_func(trb->TexImage->TexFormat); diff --git a/src/mesa/main/texstate.c b/src/mesa/main/texstate.c index 41d531f5976..1810b88b2bf 100644 --- a/src/mesa/main/texstate.c +++ b/src/mesa/main/texstate.c @@ -30,6 +30,7 @@ #include "glheader.h" #include "mfeatures.h" +#include "bufferobj.h" #include "colormac.h" #include "colortab.h" #include "context.h" @@ -406,7 +407,7 @@ update_tex_combine(struct gl_context *ctx, struct gl_texture_unit *texUnit) } else if (format == GL_DEPTH_COMPONENT || format == GL_DEPTH_STENCIL_EXT) { - format = texObj->DepthMode; + format = texObj->Sampler.DepthMode; } calculate_derived_texenv(&texUnit->_EnvMode, texUnit->EnvMode, format); texUnit->_CurrentCombine = & texUnit->_EnvMode; @@ -692,7 +693,8 @@ alloc_proxy_textures( struct gl_context *ctx ) GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_1D_ARRAY_EXT, - GL_TEXTURE_2D_ARRAY_EXT + GL_TEXTURE_2D_ARRAY_EXT, + GL_TEXTURE_BUFFER }; GLint tgt; @@ -793,6 +795,10 @@ _mesa_init_texture(struct gl_context *ctx) if (!alloc_proxy_textures( ctx )) return GL_FALSE; + /* GL_ARB_texture_buffer_object */ + _mesa_reference_buffer_object(ctx, &ctx->Texture.BufferObject, + ctx->Shared->NullBufferObj); + return GL_TRUE; } @@ -818,6 +824,15 @@ _mesa_free_texture_data(struct gl_context *ctx) /* Free proxy texture objects */ for (tgt = 0; tgt < NUM_TEXTURE_TARGETS; tgt++) ctx->Driver.DeleteTexture(ctx, ctx->Texture.ProxyTex[tgt]); + + /* GL_ARB_texture_buffer_object */ + _mesa_reference_buffer_object(ctx, &ctx->Texture.BufferObject, NULL); + +#if FEATURE_sampler_objects + for (u = 0; u < Elements(ctx->Texture.Unit); u++) { + _mesa_reference_sampler_object(ctx, &ctx->Texture.Unit[u].Sampler, NULL); + } +#endif } diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c index 591759149ad..9a690529a83 100644 --- a/src/mesa/main/texstore.c +++ b/src/mesa/main/texstore.c @@ -2186,8 +2186,11 @@ _mesa_texstore_unorm88(TEXSTORE_PARAMS) if (!ctx->_ImageTransferState && !srcPacking->SwapBytes && - (dstFormat == MESA_FORMAT_AL88 || dstFormat == MESA_FORMAT_RG88) && - baseInternalFormat == srcFormat && + ((dstFormat == MESA_FORMAT_AL88 && + baseInternalFormat == GL_LUMINANCE_ALPHA && + srcFormat == GL_LUMINANCE_ALPHA) || + (dstFormat == MESA_FORMAT_RG88 && + baseInternalFormat == srcFormat)) && srcType == GL_UNSIGNED_BYTE && littleEndian) { /* simple memcpy path */ @@ -2305,8 +2308,11 @@ _mesa_texstore_unorm1616(TEXSTORE_PARAMS) if (!ctx->_ImageTransferState && !srcPacking->SwapBytes && - (dstFormat == MESA_FORMAT_AL1616 || dstFormat == MESA_FORMAT_RG1616) && - baseInternalFormat == srcFormat && + ((dstFormat == MESA_FORMAT_AL1616 && + baseInternalFormat == GL_LUMINANCE_ALPHA && + srcFormat == GL_LUMINANCE_ALPHA) || + (dstFormat == MESA_FORMAT_RG1616 && + baseInternalFormat == srcFormat)) && srcType == GL_UNSIGNED_SHORT && littleEndian) { /* simple memcpy path */ @@ -2500,9 +2506,7 @@ _mesa_texstore_signed_rgba_16(TEXSTORE_PARAMS) const GLuint texelBytes = _mesa_get_format_bytes(dstFormat); const GLenum baseFormat = _mesa_get_format_base_format(dstFormat); - ASSERT(dstFormat == MESA_FORMAT_SIGNED_R_16 || - dstFormat == MESA_FORMAT_SIGNED_RG_16 || - dstFormat == MESA_FORMAT_SIGNED_RGB_16 || + ASSERT(dstFormat == MESA_FORMAT_SIGNED_RGB_16 || dstFormat == MESA_FORMAT_SIGNED_RGBA_16); if (!ctx->_ImageTransferState && @@ -2545,16 +2549,29 @@ _mesa_texstore_signed_rgba_16(TEXSTORE_PARAMS) + dstXoffset * texelBytes; for (row = 0; row < srcHeight; row++) { GLshort *dstRowS = (GLshort *) dstRow; - for (col = 0; col < srcWidth; col++) { - GLuint c; - for (c = 0; c < comps; c++) { - GLshort p; - UNCLAMPED_FLOAT_TO_SHORT(p, src[col * 4 + c]); - dstRowS[col * comps + c] = p; + if (dstFormat == MESA_FORMAT_SIGNED_RGBA_16) { + for (col = 0; col < srcWidth; col++) { + GLuint c; + for (c = 0; c < comps; c++) { + GLshort p; + UNCLAMPED_FLOAT_TO_SHORT(p, src[col * 4 + c]); + dstRowS[col * comps + c] = p; + } + } + dstRow += dstRowStride; + src += 4 * srcWidth; + } else { + for (col = 0; col < srcWidth; col++) { + GLuint c; + for (c = 0; c < comps; c++) { + GLshort p; + UNCLAMPED_FLOAT_TO_SHORT(p, src[col * 3 + c]); + dstRowS[col * comps + c] = p; + } } + dstRow += dstRowStride; + src += 3 * srcWidth; } - dstRow += dstRowStride; - src += 4 * srcWidth; } } free((void *) tempImage); @@ -2889,19 +2906,33 @@ _mesa_texstore_dudv8(TEXSTORE_PARAMS) /** - * Store a texture in MESA_FORMAT_SIGNED_R8 format. + * Store a texture in a signed normalized 8-bit format. */ static GLboolean -_mesa_texstore_signed_r8(TEXSTORE_PARAMS) +_mesa_texstore_snorm8(TEXSTORE_PARAMS) { const GLuint texelBytes = _mesa_get_format_bytes(dstFormat); const GLenum baseFormat = _mesa_get_format_base_format(dstFormat); - ASSERT(dstFormat == MESA_FORMAT_SIGNED_R8); + ASSERT(dstFormat == MESA_FORMAT_SIGNED_A8 || + dstFormat == MESA_FORMAT_SIGNED_L8 || + dstFormat == MESA_FORMAT_SIGNED_I8 || + dstFormat == MESA_FORMAT_SIGNED_R8); ASSERT(texelBytes == 1); - /* XXX look at adding optimized paths */ - { + if (!ctx->_ImageTransferState && + !srcPacking->SwapBytes && + baseInternalFormat == srcFormat && + srcType == GL_BYTE) { + /* simple memcpy path */ + memcpy_texture(ctx, dims, + dstFormat, dstAddr, dstXoffset, dstYoffset, dstZoffset, + dstRowStride, + dstImageOffsets, + srcWidth, srcHeight, srcDepth, srcFormat, srcType, + srcAddr, srcPacking); + } + else { /* general path */ const GLfloat *tempImage = _mesa_make_temp_float_image(ctx, dims, baseInternalFormat, @@ -2910,21 +2941,21 @@ _mesa_texstore_signed_r8(TEXSTORE_PARAMS) srcFormat, srcType, srcAddr, srcPacking, ctx->_ImageTransferState); - const GLfloat *srcRow = tempImage; + const GLfloat *src = tempImage; GLint img, row, col; if (!tempImage) return GL_FALSE; for (img = 0; img < srcDepth; img++) { - GLubyte *dstRow = (GLubyte *) dstAddr + GLbyte *dstRow = (GLbyte *) dstAddr + dstImageOffsets[dstZoffset + img] * texelBytes + dstYoffset * dstRowStride + dstXoffset * texelBytes; for (row = 0; row < srcHeight; row++) { - GLubyte *dstB = (GLubyte *) dstRow; for (col = 0; col < srcWidth; col++) { - dstB[col] = FLOAT_TO_BYTE_TEX(srcRow[RCOMP]); + dstRow[col] = FLOAT_TO_BYTE_TEX(src[col]); } dstRow += dstRowStride; + src += srcWidth; } } free((void *) tempImage); @@ -2934,19 +2965,33 @@ _mesa_texstore_signed_r8(TEXSTORE_PARAMS) /** - * Store a texture in MESA_FORMAT_SIGNED_RG88 format. + * Store a texture in a signed normalized two-channel 16-bit format. */ static GLboolean -_mesa_texstore_signed_rg88(TEXSTORE_PARAMS) +_mesa_texstore_snorm88(TEXSTORE_PARAMS) { + const GLboolean littleEndian = _mesa_little_endian(); const GLuint texelBytes = _mesa_get_format_bytes(dstFormat); const GLenum baseFormat = _mesa_get_format_base_format(dstFormat); - ASSERT(dstFormat == MESA_FORMAT_SIGNED_RG88); - ASSERT(texelBytes == 1); + ASSERT(dstFormat == MESA_FORMAT_SIGNED_AL88 || + dstFormat == MESA_FORMAT_SIGNED_RG88_REV); + ASSERT(texelBytes == 2); - /* XXX look at adding optimized paths */ - { + if (!ctx->_ImageTransferState && + !srcPacking->SwapBytes && + baseInternalFormat == srcFormat && + srcType == GL_BYTE && + littleEndian) { + /* simple memcpy path */ + memcpy_texture(ctx, dims, + dstFormat, dstAddr, dstXoffset, dstYoffset, dstZoffset, + dstRowStride, + dstImageOffsets, + srcWidth, srcHeight, srcDepth, srcFormat, srcType, + srcAddr, srcPacking); + } + else { /* general path */ const GLfloat *tempImage = _mesa_make_temp_float_image(ctx, dims, baseInternalFormat, @@ -2955,20 +3000,22 @@ _mesa_texstore_signed_rg88(TEXSTORE_PARAMS) srcFormat, srcType, srcAddr, srcPacking, ctx->_ImageTransferState); - const GLfloat *srcRow = tempImage; + const GLfloat *src = tempImage; GLint img, row, col; if (!tempImage) return GL_FALSE; for (img = 0; img < srcDepth; img++) { - GLubyte *dstRow = (GLubyte *) dstAddr + GLbyte *dstRow = (GLbyte *) dstAddr + dstImageOffsets[dstZoffset + img] * texelBytes + dstYoffset * dstRowStride + dstXoffset * texelBytes; for (row = 0; row < srcHeight; row++) { - GLushort *dstUS = (GLushort *) dstRow; + GLbyte *dst = dstRow; for (col = 0; col < srcWidth; col++) { - dstUS[col] = PACK_COLOR_88(FLOAT_TO_BYTE_TEX(srcRow[RCOMP]), - FLOAT_TO_BYTE_TEX(srcRow[GCOMP])); + dst[0] = FLOAT_TO_BYTE_TEX(src[0]); + dst[1] = FLOAT_TO_BYTE_TEX(src[1]); + src += 2; + dst += 2; } dstRow += dstRowStride; } @@ -2978,6 +3025,132 @@ _mesa_texstore_signed_rg88(TEXSTORE_PARAMS) return GL_TRUE; } +/* Texstore for signed R16, A16, L16, I16. */ +static GLboolean +_mesa_texstore_snorm16(TEXSTORE_PARAMS) +{ + const GLboolean littleEndian = _mesa_little_endian(); + const GLuint texelBytes = _mesa_get_format_bytes(dstFormat); + const GLenum baseFormat = _mesa_get_format_base_format(dstFormat); + + ASSERT(dstFormat == MESA_FORMAT_SIGNED_R16 || + dstFormat == MESA_FORMAT_SIGNED_A16 || + dstFormat == MESA_FORMAT_SIGNED_L16 || + dstFormat == MESA_FORMAT_SIGNED_I16); + ASSERT(texelBytes == 2); + + if (!ctx->_ImageTransferState && + !srcPacking->SwapBytes && + baseInternalFormat == srcFormat && + srcType == GL_SHORT && + littleEndian) { + /* simple memcpy path */ + memcpy_texture(ctx, dims, + dstFormat, dstAddr, dstXoffset, dstYoffset, dstZoffset, + dstRowStride, + dstImageOffsets, + srcWidth, srcHeight, srcDepth, srcFormat, srcType, + srcAddr, srcPacking); + } + else { + /* general path */ + const GLfloat *tempImage = _mesa_make_temp_float_image(ctx, dims, + baseInternalFormat, + baseFormat, + srcWidth, srcHeight, srcDepth, + srcFormat, srcType, srcAddr, + srcPacking, + ctx->_ImageTransferState); + const GLfloat *src = tempImage; + GLint img, row, col; + if (!tempImage) + return GL_FALSE; + for (img = 0; img < srcDepth; img++) { + GLubyte *dstRow = (GLubyte *) dstAddr + + dstImageOffsets[dstZoffset + img] * texelBytes + + dstYoffset * dstRowStride + + dstXoffset * texelBytes; + for (row = 0; row < srcHeight; row++) { + GLshort *dstUS = (GLshort *) dstRow; + for (col = 0; col < srcWidth; col++) { + GLushort r; + + UNCLAMPED_FLOAT_TO_SHORT(r, src[0]); + dstUS[col] = r; + src += 1; + } + dstRow += dstRowStride; + } + } + free((void *) tempImage); + } + return GL_TRUE; +} + +/** + * Do texstore for 2-channel, 16-bit/channel, signed normalized formats. + */ +static GLboolean +_mesa_texstore_snorm1616(TEXSTORE_PARAMS) +{ + const GLboolean littleEndian = _mesa_little_endian(); + const GLuint texelBytes = _mesa_get_format_bytes(dstFormat); + const GLenum baseFormat = _mesa_get_format_base_format(dstFormat); + + ASSERT(dstFormat == MESA_FORMAT_SIGNED_AL1616 || + dstFormat == MESA_FORMAT_SIGNED_GR1616); + ASSERT(texelBytes == 4); + + if (!ctx->_ImageTransferState && + !srcPacking->SwapBytes && + baseInternalFormat == srcFormat && + srcType == GL_SHORT && + littleEndian) { + /* simple memcpy path */ + memcpy_texture(ctx, dims, + dstFormat, dstAddr, dstXoffset, dstYoffset, dstZoffset, + dstRowStride, + dstImageOffsets, + srcWidth, srcHeight, srcDepth, srcFormat, srcType, + srcAddr, srcPacking); + } + else { + /* general path */ + const GLfloat *tempImage = _mesa_make_temp_float_image(ctx, dims, + baseInternalFormat, + baseFormat, + srcWidth, srcHeight, srcDepth, + srcFormat, srcType, srcAddr, + srcPacking, + ctx->_ImageTransferState); + const GLfloat *src = tempImage; + GLint img, row, col; + if (!tempImage) + return GL_FALSE; + for (img = 0; img < srcDepth; img++) { + GLubyte *dstRow = (GLubyte *) dstAddr + + dstImageOffsets[dstZoffset + img] * texelBytes + + dstYoffset * dstRowStride + + dstXoffset * texelBytes; + for (row = 0; row < srcHeight; row++) { + GLshort *dst = (GLshort *) dstRow; + for (col = 0; col < srcWidth; col++) { + GLushort l, a; + + UNCLAMPED_FLOAT_TO_SHORT(l, src[0]); + UNCLAMPED_FLOAT_TO_SHORT(a, src[1]); + dst[0] = l; + dst[1] = a; + src += 2; + dst += 2; + } + dstRow += dstRowStride; + } + } + free((void *) tempImage); + } + return GL_TRUE; +} /** * Store a texture in MESA_FORMAT_SIGNED_RGBX8888. @@ -3005,18 +3178,19 @@ _mesa_texstore_signed_rgbx8888(TEXSTORE_PARAMS) if (!tempImage) return GL_FALSE; for (img = 0; img < srcDepth; img++) { - GLubyte *dstRow = (GLubyte *) dstAddr + GLbyte *dstRow = (GLbyte *) dstAddr + dstImageOffsets[dstZoffset + img] * texelBytes + dstYoffset * dstRowStride + dstXoffset * texelBytes; for (row = 0; row < srcHeight; row++) { - GLuint *dstUI = (GLuint *) dstRow; + GLbyte *dst = dstRow; for (col = 0; col < srcWidth; col++) { - dstUI[col] = PACK_COLOR_8888( FLOAT_TO_BYTE_TEX(srcRow[RCOMP]), - FLOAT_TO_BYTE_TEX(srcRow[GCOMP]), - FLOAT_TO_BYTE_TEX(srcRow[BCOMP]), - 0xff ); - srcRow += 4; + dst[3] = FLOAT_TO_BYTE_TEX(srcRow[RCOMP]); + dst[2] = FLOAT_TO_BYTE_TEX(srcRow[GCOMP]); + dst[1] = FLOAT_TO_BYTE_TEX(srcRow[BCOMP]); + dst[0] = 127; + srcRow += 3; + dst += 4; } dstRow += dstRowStride; } @@ -3071,39 +3245,6 @@ _mesa_texstore_signed_rgba8888(TEXSTORE_PARAMS) srcWidth, srcHeight, srcDepth, srcFormat, srcType, srcAddr, srcPacking); } - else if (!ctx->_ImageTransferState && - (srcType == GL_BYTE) && - can_swizzle(baseInternalFormat) && - can_swizzle(srcFormat)) { - - GLubyte dstmap[4]; - - /* dstmap - how to swizzle from RGBA to dst format: - */ - if ((littleEndian && dstFormat == MESA_FORMAT_SIGNED_RGBA8888) || - (!littleEndian && dstFormat == MESA_FORMAT_SIGNED_RGBA8888_REV)) { - dstmap[3] = 0; - dstmap[2] = 1; - dstmap[1] = 2; - dstmap[0] = 3; - } - else { - dstmap[3] = 3; - dstmap[2] = 2; - dstmap[1] = 1; - dstmap[0] = 0; - } - - _mesa_swizzle_ubyte_image(ctx, dims, - srcFormat, - srcType, - baseInternalFormat, - dstmap, 4, - dstAddr, dstXoffset, dstYoffset, dstZoffset, - dstRowStride, dstImageOffsets, - srcWidth, srcHeight, srcDepth, srcAddr, - srcPacking); - } else { /* general path */ const GLfloat *tempImage = _mesa_make_temp_float_image(ctx, dims, @@ -3118,28 +3259,30 @@ _mesa_texstore_signed_rgba8888(TEXSTORE_PARAMS) if (!tempImage) return GL_FALSE; for (img = 0; img < srcDepth; img++) { - GLubyte *dstRow = (GLubyte *) dstAddr + GLbyte *dstRow = (GLbyte *) dstAddr + dstImageOffsets[dstZoffset + img] * texelBytes + dstYoffset * dstRowStride + dstXoffset * texelBytes; for (row = 0; row < srcHeight; row++) { - GLuint *dstUI = (GLuint *) dstRow; + GLbyte *dst = dstRow; if (dstFormat == MESA_FORMAT_SIGNED_RGBA8888) { for (col = 0; col < srcWidth; col++) { - dstUI[col] = PACK_COLOR_8888( FLOAT_TO_BYTE_TEX(srcRow[RCOMP]), - FLOAT_TO_BYTE_TEX(srcRow[GCOMP]), - FLOAT_TO_BYTE_TEX(srcRow[BCOMP]), - FLOAT_TO_BYTE_TEX(srcRow[ACOMP]) ); + dst[3] = FLOAT_TO_BYTE_TEX(srcRow[RCOMP]); + dst[2] = FLOAT_TO_BYTE_TEX(srcRow[GCOMP]); + dst[1] = FLOAT_TO_BYTE_TEX(srcRow[BCOMP]); + dst[0] = FLOAT_TO_BYTE_TEX(srcRow[ACOMP]); srcRow += 4; + dst += 4; } } else { for (col = 0; col < srcWidth; col++) { - dstUI[col] = PACK_COLOR_8888_REV( FLOAT_TO_BYTE_TEX(srcRow[RCOMP]), - FLOAT_TO_BYTE_TEX(srcRow[GCOMP]), - FLOAT_TO_BYTE_TEX(srcRow[BCOMP]), - FLOAT_TO_BYTE_TEX(srcRow[ACOMP]) ); + dst[0] = FLOAT_TO_BYTE_TEX(srcRow[RCOMP]); + dst[1] = FLOAT_TO_BYTE_TEX(srcRow[GCOMP]); + dst[2] = FLOAT_TO_BYTE_TEX(srcRow[BCOMP]); + dst[3] = FLOAT_TO_BYTE_TEX(srcRow[ACOMP]); srcRow += 4; + dst += 4; } } dstRow += dstRowStride; @@ -3392,13 +3535,17 @@ _mesa_texstore_rgba_float32(TEXSTORE_PARAMS) dstFormat == MESA_FORMAT_ALPHA_FLOAT32 || dstFormat == MESA_FORMAT_LUMINANCE_FLOAT32 || dstFormat == MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32 || - dstFormat == MESA_FORMAT_INTENSITY_FLOAT32); + dstFormat == MESA_FORMAT_INTENSITY_FLOAT32 || + dstFormat == MESA_FORMAT_R_FLOAT32 || + dstFormat == MESA_FORMAT_RG_FLOAT32); ASSERT(baseInternalFormat == GL_RGBA || baseInternalFormat == GL_RGB || baseInternalFormat == GL_ALPHA || baseInternalFormat == GL_LUMINANCE || baseInternalFormat == GL_LUMINANCE_ALPHA || - baseInternalFormat == GL_INTENSITY); + baseInternalFormat == GL_INTENSITY || + baseInternalFormat == GL_RED || + baseInternalFormat == GL_RG); ASSERT(texelBytes == components * sizeof(GLfloat)); if (!ctx->_ImageTransferState && @@ -3462,13 +3609,17 @@ _mesa_texstore_rgba_float16(TEXSTORE_PARAMS) dstFormat == MESA_FORMAT_ALPHA_FLOAT16 || dstFormat == MESA_FORMAT_LUMINANCE_FLOAT16 || dstFormat == MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16 || - dstFormat == MESA_FORMAT_INTENSITY_FLOAT16); + dstFormat == MESA_FORMAT_INTENSITY_FLOAT16 || + dstFormat == MESA_FORMAT_R_FLOAT16 || + dstFormat == MESA_FORMAT_RG_FLOAT16); ASSERT(baseInternalFormat == GL_RGBA || baseInternalFormat == GL_RGB || baseInternalFormat == GL_ALPHA || baseInternalFormat == GL_LUMINANCE || baseInternalFormat == GL_LUMINANCE_ALPHA || - baseInternalFormat == GL_INTENSITY); + baseInternalFormat == GL_INTENSITY || + baseInternalFormat == GL_RED || + baseInternalFormat == GL_RG); ASSERT(texelBytes == components * sizeof(GLhalfARB)); if (!ctx->_ImageTransferState && @@ -4109,6 +4260,10 @@ texstore_funcs[MESA_FORMAT_COUNT] = { 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 }, @@ -4119,15 +4274,15 @@ texstore_funcs[MESA_FORMAT_COUNT] = { MESA_FORMAT_DUDV8, _mesa_texstore_dudv8 }, - { MESA_FORMAT_SIGNED_R8, _mesa_texstore_signed_r8 }, - { MESA_FORMAT_SIGNED_RG88, _mesa_texstore_signed_rg88 }, + { 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_R_16, _mesa_texstore_signed_rgba_16 }, - { MESA_FORMAT_SIGNED_RG_16, _mesa_texstore_signed_rgba_16 }, + { 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 }, @@ -4142,7 +4297,17 @@ texstore_funcs[MESA_FORMAT_COUNT] = { 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_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 }, }; diff --git a/src/mesa/main/uniforms.c b/src/mesa/main/uniforms.c index 1d74efafdf7..f984ce3bc56 100644 --- a/src/mesa/main/uniforms.c +++ b/src/mesa/main/uniforms.c @@ -82,254 +82,6 @@ base_uniform_type(GLenum type) } } -static struct gl_builtin_uniform_element gl_DepthRange_elements[] = { - {"near", {STATE_DEPTH_RANGE, 0, 0}, SWIZZLE_XXXX}, - {"far", {STATE_DEPTH_RANGE, 0, 0}, SWIZZLE_YYYY}, - {"diff", {STATE_DEPTH_RANGE, 0, 0}, SWIZZLE_ZZZZ}, -}; - -static struct gl_builtin_uniform_element gl_ClipPlane_elements[] = { - {NULL, {STATE_CLIPPLANE, 0, 0}, SWIZZLE_XYZW} -}; - -static struct gl_builtin_uniform_element gl_Point_elements[] = { - {"size", {STATE_POINT_SIZE}, SWIZZLE_XXXX}, - {"sizeMin", {STATE_POINT_SIZE}, SWIZZLE_YYYY}, - {"sizeMax", {STATE_POINT_SIZE}, SWIZZLE_ZZZZ}, - {"fadeThresholdSize", {STATE_POINT_SIZE}, SWIZZLE_WWWW}, - {"distanceConstantAttenuation", {STATE_POINT_ATTENUATION}, SWIZZLE_XXXX}, - {"distanceLinearAttenuation", {STATE_POINT_ATTENUATION}, SWIZZLE_YYYY}, - {"distanceQuadraticAttenuation", {STATE_POINT_ATTENUATION}, SWIZZLE_ZZZZ}, -}; - -static struct gl_builtin_uniform_element gl_FrontMaterial_elements[] = { - {"emission", {STATE_MATERIAL, 0, STATE_EMISSION}, SWIZZLE_XYZW}, - {"ambient", {STATE_MATERIAL, 0, STATE_AMBIENT}, SWIZZLE_XYZW}, - {"diffuse", {STATE_MATERIAL, 0, STATE_DIFFUSE}, SWIZZLE_XYZW}, - {"specular", {STATE_MATERIAL, 0, STATE_SPECULAR}, SWIZZLE_XYZW}, - {"shininess", {STATE_MATERIAL, 0, STATE_SHININESS}, SWIZZLE_XXXX}, -}; - -static struct gl_builtin_uniform_element gl_BackMaterial_elements[] = { - {"emission", {STATE_MATERIAL, 1, STATE_EMISSION}, SWIZZLE_XYZW}, - {"ambient", {STATE_MATERIAL, 1, STATE_AMBIENT}, SWIZZLE_XYZW}, - {"diffuse", {STATE_MATERIAL, 1, STATE_DIFFUSE}, SWIZZLE_XYZW}, - {"specular", {STATE_MATERIAL, 1, STATE_SPECULAR}, SWIZZLE_XYZW}, - {"shininess", {STATE_MATERIAL, 1, STATE_SHININESS}, SWIZZLE_XXXX}, -}; - -static struct gl_builtin_uniform_element gl_LightSource_elements[] = { - {"ambient", {STATE_LIGHT, 0, STATE_AMBIENT}, SWIZZLE_XYZW}, - {"diffuse", {STATE_LIGHT, 0, STATE_DIFFUSE}, SWIZZLE_XYZW}, - {"specular", {STATE_LIGHT, 0, STATE_SPECULAR}, SWIZZLE_XYZW}, - {"position", {STATE_LIGHT, 0, STATE_POSITION}, SWIZZLE_XYZW}, - {"halfVector", {STATE_LIGHT, 0, STATE_HALF_VECTOR}, SWIZZLE_XYZW}, - {"spotDirection", {STATE_LIGHT, 0, STATE_SPOT_DIRECTION}, - MAKE_SWIZZLE4(SWIZZLE_X, - SWIZZLE_Y, - SWIZZLE_Z, - SWIZZLE_Z)}, - {"spotCosCutoff", {STATE_LIGHT, 0, STATE_SPOT_DIRECTION}, SWIZZLE_WWWW}, - {"spotCutoff", {STATE_LIGHT, 0, STATE_SPOT_CUTOFF}, SWIZZLE_XXXX}, - {"spotExponent", {STATE_LIGHT, 0, STATE_ATTENUATION}, SWIZZLE_WWWW}, - {"constantAttenuation", {STATE_LIGHT, 0, STATE_ATTENUATION}, SWIZZLE_XXXX}, - {"linearAttenuation", {STATE_LIGHT, 0, STATE_ATTENUATION}, SWIZZLE_YYYY}, - {"quadraticAttenuation", {STATE_LIGHT, 0, STATE_ATTENUATION}, SWIZZLE_ZZZZ}, -}; - -static struct gl_builtin_uniform_element gl_LightModel_elements[] = { - {"ambient", {STATE_LIGHTMODEL_AMBIENT, 0}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_FrontLightModelProduct_elements[] = { - {"sceneColor", {STATE_LIGHTMODEL_SCENECOLOR, 0}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_BackLightModelProduct_elements[] = { - {"sceneColor", {STATE_LIGHTMODEL_SCENECOLOR, 1}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_FrontLightProduct_elements[] = { - {"ambient", {STATE_LIGHTPROD, 0, 0, STATE_AMBIENT}, SWIZZLE_XYZW}, - {"diffuse", {STATE_LIGHTPROD, 0, 0, STATE_DIFFUSE}, SWIZZLE_XYZW}, - {"specular", {STATE_LIGHTPROD, 0, 0, STATE_SPECULAR}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_BackLightProduct_elements[] = { - {"ambient", {STATE_LIGHTPROD, 0, 1, STATE_AMBIENT}, SWIZZLE_XYZW}, - {"diffuse", {STATE_LIGHTPROD, 0, 1, STATE_DIFFUSE}, SWIZZLE_XYZW}, - {"specular", {STATE_LIGHTPROD, 0, 1, STATE_SPECULAR}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_TextureEnvColor_elements[] = { - {NULL, {STATE_TEXENV_COLOR, 0}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_EyePlaneS_elements[] = { - {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_EYE_S}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_EyePlaneT_elements[] = { - {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_EYE_T}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_EyePlaneR_elements[] = { - {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_EYE_R}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_EyePlaneQ_elements[] = { - {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_EYE_Q}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_ObjectPlaneS_elements[] = { - {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_OBJECT_S}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_ObjectPlaneT_elements[] = { - {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_OBJECT_T}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_ObjectPlaneR_elements[] = { - {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_OBJECT_R}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_ObjectPlaneQ_elements[] = { - {NULL, {STATE_TEXGEN, 0, STATE_TEXGEN_OBJECT_Q}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_Fog_elements[] = { - {"color", {STATE_FOG_COLOR}, SWIZZLE_XYZW}, - {"density", {STATE_FOG_PARAMS}, SWIZZLE_XXXX}, - {"start", {STATE_FOG_PARAMS}, SWIZZLE_YYYY}, - {"end", {STATE_FOG_PARAMS}, SWIZZLE_ZZZZ}, - {"scale", {STATE_FOG_PARAMS}, SWIZZLE_WWWW}, -}; - -static struct gl_builtin_uniform_element gl_NormalScale_elements[] = { - {NULL, {STATE_NORMAL_SCALE}, SWIZZLE_XXXX}, -}; - -static struct gl_builtin_uniform_element gl_MESABumpRotMatrix0_elements[] = { - {NULL, {STATE_INTERNAL, STATE_ROT_MATRIX_0}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_MESABumpRotMatrix1_elements[] = { - {NULL, {STATE_INTERNAL, STATE_ROT_MATRIX_1}, SWIZZLE_XYZW}, -}; - -static struct gl_builtin_uniform_element gl_MESAFogParamsOptimized_elements[] = { - {NULL, {STATE_INTERNAL, STATE_FOG_PARAMS_OPTIMIZED}, SWIZZLE_XYZW}, -}; - -#define MATRIX(name, statevar, modifier) \ - static struct gl_builtin_uniform_element name ## _elements[] = { \ - { NULL, { statevar, 0, 0, 0, modifier}, SWIZZLE_XYZW }, \ - { NULL, { statevar, 0, 1, 1, modifier}, SWIZZLE_XYZW }, \ - { NULL, { statevar, 0, 2, 2, modifier}, SWIZZLE_XYZW }, \ - { NULL, { statevar, 0, 3, 3, modifier}, SWIZZLE_XYZW }, \ - } - -MATRIX(gl_ModelViewMatrix, - STATE_MODELVIEW_MATRIX, STATE_MATRIX_TRANSPOSE); -MATRIX(gl_ModelViewMatrixInverse, - STATE_MODELVIEW_MATRIX, STATE_MATRIX_INVTRANS); -MATRIX(gl_ModelViewMatrixTranspose, - STATE_MODELVIEW_MATRIX, 0); -MATRIX(gl_ModelViewMatrixInverseTranspose, - STATE_MODELVIEW_MATRIX, STATE_MATRIX_INVERSE); - -MATRIX(gl_ProjectionMatrix, - STATE_PROJECTION_MATRIX, STATE_MATRIX_TRANSPOSE); -MATRIX(gl_ProjectionMatrixInverse, - STATE_PROJECTION_MATRIX, STATE_MATRIX_INVTRANS); -MATRIX(gl_ProjectionMatrixTranspose, - STATE_PROJECTION_MATRIX, 0); -MATRIX(gl_ProjectionMatrixInverseTranspose, - STATE_PROJECTION_MATRIX, STATE_MATRIX_INVERSE); - -MATRIX(gl_ModelViewProjectionMatrix, - STATE_MVP_MATRIX, STATE_MATRIX_TRANSPOSE); -MATRIX(gl_ModelViewProjectionMatrixInverse, - STATE_MVP_MATRIX, STATE_MATRIX_INVTRANS); -MATRIX(gl_ModelViewProjectionMatrixTranspose, - STATE_MVP_MATRIX, 0); -MATRIX(gl_ModelViewProjectionMatrixInverseTranspose, - STATE_MVP_MATRIX, STATE_MATRIX_INVERSE); - -MATRIX(gl_TextureMatrix, - STATE_TEXTURE_MATRIX, STATE_MATRIX_TRANSPOSE); -MATRIX(gl_TextureMatrixInverse, - STATE_TEXTURE_MATRIX, STATE_MATRIX_INVTRANS); -MATRIX(gl_TextureMatrixTranspose, - STATE_TEXTURE_MATRIX, 0); -MATRIX(gl_TextureMatrixInverseTranspose, - STATE_TEXTURE_MATRIX, STATE_MATRIX_INVERSE); - -static struct gl_builtin_uniform_element gl_NormalMatrix_elements[] = { - { NULL, { STATE_MODELVIEW_MATRIX, 0, 0, 0, STATE_MATRIX_INVERSE}, - SWIZZLE_XYZW }, - { NULL, { STATE_MODELVIEW_MATRIX, 0, 1, 1, STATE_MATRIX_INVERSE}, - SWIZZLE_XYZW }, - { NULL, { STATE_MODELVIEW_MATRIX, 0, 2, 2, STATE_MATRIX_INVERSE}, - SWIZZLE_XYZW }, -}; - -#undef MATRIX - -#define STATEVAR(name) {#name, name ## _elements, Elements(name ## _elements)} - -const struct gl_builtin_uniform_desc _mesa_builtin_uniform_desc[] = { - STATEVAR(gl_DepthRange), - STATEVAR(gl_ClipPlane), - STATEVAR(gl_Point), - STATEVAR(gl_FrontMaterial), - STATEVAR(gl_BackMaterial), - STATEVAR(gl_LightSource), - STATEVAR(gl_LightModel), - STATEVAR(gl_FrontLightModelProduct), - STATEVAR(gl_BackLightModelProduct), - STATEVAR(gl_FrontLightProduct), - STATEVAR(gl_BackLightProduct), - STATEVAR(gl_TextureEnvColor), - STATEVAR(gl_EyePlaneS), - STATEVAR(gl_EyePlaneT), - STATEVAR(gl_EyePlaneR), - STATEVAR(gl_EyePlaneQ), - STATEVAR(gl_ObjectPlaneS), - STATEVAR(gl_ObjectPlaneT), - STATEVAR(gl_ObjectPlaneR), - STATEVAR(gl_ObjectPlaneQ), - STATEVAR(gl_Fog), - - STATEVAR(gl_ModelViewMatrix), - STATEVAR(gl_ModelViewMatrixInverse), - STATEVAR(gl_ModelViewMatrixTranspose), - STATEVAR(gl_ModelViewMatrixInverseTranspose), - - STATEVAR(gl_ProjectionMatrix), - STATEVAR(gl_ProjectionMatrixInverse), - STATEVAR(gl_ProjectionMatrixTranspose), - STATEVAR(gl_ProjectionMatrixInverseTranspose), - - STATEVAR(gl_ModelViewProjectionMatrix), - STATEVAR(gl_ModelViewProjectionMatrixInverse), - STATEVAR(gl_ModelViewProjectionMatrixTranspose), - STATEVAR(gl_ModelViewProjectionMatrixInverseTranspose), - - STATEVAR(gl_TextureMatrix), - STATEVAR(gl_TextureMatrixInverse), - STATEVAR(gl_TextureMatrixTranspose), - STATEVAR(gl_TextureMatrixInverseTranspose), - - STATEVAR(gl_NormalMatrix), - STATEVAR(gl_NormalScale), - - STATEVAR(gl_MESABumpRotMatrix0), - STATEVAR(gl_MESABumpRotMatrix1), - STATEVAR(gl_MESAFogParamsOptimized), - - {NULL, NULL, 0} -}; static GLboolean is_boolean_type(GLenum type) diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c index cfed4b506a5..d20e2c7193e 100644 --- a/src/mesa/main/varray.c +++ b/src/mesa/main/varray.c @@ -484,7 +484,7 @@ _mesa_DisableVertexAttribArrayARB(GLuint index) if (index >= ctx->Const.VertexProgram.MaxAttribs) { _mesa_error(ctx, GL_INVALID_VALUE, - "glEnableVertexAttribArrayARB(index)"); + "glDisableVertexAttribArrayARB(index)"); return; } diff --git a/src/mesa/main/varray.h b/src/mesa/main/varray.h index 53e68c89667..1c423200ffd 100644 --- a/src/mesa/main/varray.h +++ b/src/mesa/main/varray.h @@ -34,6 +34,37 @@ struct gl_client_array; struct gl_context; + +/** + * Compute the index of the last array element that can be safely accessed in + * a vertex array. We can really only do this when the array lives in a VBO. + * The array->_MaxElement field will be updated. + * Later in glDrawArrays/Elements/etc we can do some bounds checking. + */ +static INLINE void +_mesa_update_array_max_element(struct gl_client_array *array) +{ + assert(array->Enabled); + + if (array->BufferObj->Name) { + GLsizeiptrARB offset = (GLsizeiptrARB) array->Ptr; + GLsizeiptrARB bufSize = (GLsizeiptrARB) array->BufferObj->Size; + + if (offset < bufSize) { + array->_MaxElement = (bufSize - offset + array->StrideB + - array->_ElementSize) / array->StrideB; + } + else { + array->_MaxElement = 0; + } + } + else { + /* user-space array, no idea how big it is */ + array->_MaxElement = 2 * 1000 * 1000 * 1000; /* just a big number */ + } +} + + #if _HAVE_FULL_GL extern void GLAPIENTRY diff --git a/src/mesa/main/version.c b/src/mesa/main/version.c index a10b86e761e..80fa0c244eb 100644 --- a/src/mesa/main/version.c +++ b/src/mesa/main/version.c @@ -25,6 +25,7 @@ #include "imports.h" #include "mtypes.h" #include "version.h" +#include "git_sha1.h" @@ -89,6 +90,8 @@ compute_version(struct gl_context *ctx) ctx->Extensions.EXT_pixel_buffer_object && ctx->Extensions.EXT_texture_sRGB); const GLboolean ver_3_0 = (ver_2_1 && + ctx->Extensions.ARB_color_buffer_float && + ctx->Extensions.ARB_depth_buffer_float && ctx->Extensions.ARB_half_float_pixel && ctx->Extensions.ARB_map_buffer_range && ctx->Extensions.ARB_texture_float && @@ -112,6 +115,7 @@ compute_version(struct gl_context *ctx) ctx->Extensions.ARB_draw_instanced && ctx->Extensions.ARB_texture_buffer_object && ctx->Extensions.ARB_uniform_buffer_object && + ctx->Extensions.EXT_texture_snorm && ctx->Extensions.NV_primitive_restart && ctx->Extensions.NV_texture_rectangle && ctx->Const.MaxVertexTextureImageUnits >= 16); @@ -182,7 +186,11 @@ compute_version(struct gl_context *ctx) ctx->VersionString = (char *) malloc(max); if (ctx->VersionString) { _mesa_snprintf(ctx->VersionString, max, - "%u.%u Mesa " MESA_VERSION_STRING, + "%u.%u Mesa " MESA_VERSION_STRING +#ifdef MESA_GIT_SHA1 + " (" MESA_GIT_SHA1 ")" +#endif + , ctx->VersionMajor, ctx->VersionMinor); } } diff --git a/src/mesa/program/arbprogparse.c b/src/mesa/program/arbprogparse.c index ca63e72c085..dffc8abf735 100644 --- a/src/mesa/program/arbprogparse.c +++ b/src/mesa/program/arbprogparse.c @@ -116,20 +116,11 @@ _mesa_parse_arb_fragment_program(struct gl_context* ctx, GLenum target, program->Base.SamplersUsed |= (1 << i); } program->Base.ShadowSamplers = prog.ShadowSamplers; - switch (state.option.Fog) { - case OPTION_FOG_EXP: program->FogOption = GL_EXP; break; - case OPTION_FOG_EXP2: program->FogOption = GL_EXP2; break; - case OPTION_FOG_LINEAR: program->FogOption = GL_LINEAR; break; - default: program->FogOption = GL_NONE; break; - } program->OriginUpperLeft = state.option.OriginUpperLeft; program->PixelCenterInteger = state.option.PixelCenterInteger; program->UsesKill = state.fragment.UsesKill; - if (program->FogOption) - program->Base.InputsRead |= FRAG_BIT_FOGC; - if (program->Base.Instructions) free(program->Base.Instructions); program->Base.Instructions = prog.Instructions; @@ -143,9 +134,15 @@ _mesa_parse_arb_fragment_program(struct gl_context* ctx, GLenum target, * there's no hardware that wants to do fog in a discrete stage separate * from the fragment shader. */ - if (program->FogOption != GL_NONE) { - _mesa_append_fog_code(ctx, program); - program->FogOption = GL_NONE; + if (state.option.Fog != OPTION_NONE) { + static const GLenum fog_modes[4] = { + GL_NONE, GL_EXP, GL_EXP2, GL_LINEAR + }; + + /* XXX: we should somehow recompile this to remove clamping if disabled + * On the ATI driver, this is unclampled if fragment clamping is disabled + */ + _mesa_append_fog_code(ctx, program, fog_modes[state.option.Fog], GL_TRUE); } #if DEBUG_FP diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp index 17e0f9953f9..3c9b9733832 100644 --- a/src/mesa/program/ir_to_mesa.cpp +++ b/src/mesa/program/ir_to_mesa.cpp @@ -56,16 +56,20 @@ extern "C" { #include "program/sampler.h" } +class src_reg; +class dst_reg; + static int swizzle_for_size(int size); /** * This struct is a corresponding struct to Mesa prog_src_register, with * wider fields. */ -typedef struct ir_to_mesa_src_reg { - ir_to_mesa_src_reg(int file, int index, const glsl_type *type) +class src_reg { +public: + src_reg(gl_register_file file, int index, const glsl_type *type) { - this->file = (gl_register_file) file; + this->file = file; this->index = index; if (type && (type->is_scalar() || type->is_vector() || type->is_matrix())) this->swizzle = swizzle_for_size(type->vector_elements); @@ -75,7 +79,7 @@ typedef struct ir_to_mesa_src_reg { this->reladdr = NULL; } - ir_to_mesa_src_reg() + src_reg() { this->file = PROGRAM_UNDEFINED; this->index = 0; @@ -84,24 +88,63 @@ typedef struct ir_to_mesa_src_reg { this->reladdr = NULL; } + explicit src_reg(dst_reg reg); + gl_register_file file; /**< PROGRAM_* from Mesa */ int index; /**< temporary index, VERT_ATTRIB_*, FRAG_ATTRIB_*, etc. */ GLuint swizzle; /**< SWIZZLE_XYZWONEZERO swizzles from Mesa. */ int negate; /**< NEGATE_XYZW mask from mesa */ /** Register index should be offset by the integer in this reg. */ - ir_to_mesa_src_reg *reladdr; -} ir_to_mesa_src_reg; + src_reg *reladdr; +}; + +class dst_reg { +public: + dst_reg(gl_register_file file, int writemask) + { + this->file = file; + this->index = 0; + this->writemask = writemask; + this->cond_mask = COND_TR; + this->reladdr = NULL; + } -typedef struct ir_to_mesa_dst_reg { - int file; /**< PROGRAM_* from Mesa */ + dst_reg() + { + this->file = PROGRAM_UNDEFINED; + this->index = 0; + this->writemask = 0; + this->cond_mask = COND_TR; + this->reladdr = NULL; + } + + explicit dst_reg(src_reg reg); + + gl_register_file file; /**< PROGRAM_* from Mesa */ int index; /**< temporary index, VERT_ATTRIB_*, FRAG_ATTRIB_*, etc. */ int writemask; /**< Bitfield of WRITEMASK_[XYZW] */ GLuint cond_mask:4; /** Register index should be offset by the integer in this reg. */ - ir_to_mesa_src_reg *reladdr; -} ir_to_mesa_dst_reg; + src_reg *reladdr; +}; -extern ir_to_mesa_src_reg ir_to_mesa_undef; +src_reg::src_reg(dst_reg reg) +{ + this->file = reg.file; + this->index = reg.index; + this->swizzle = SWIZZLE_XYZW; + this->negate = 0; + this->reladdr = NULL; +} + +dst_reg::dst_reg(src_reg reg) +{ + this->file = reg.file; + this->index = reg.index; + this->writemask = WRITEMASK_XYZW; + this->cond_mask = COND_TR; + this->reladdr = reg.reladdr; +} class ir_to_mesa_instruction : public exec_node { public: @@ -118,8 +161,8 @@ public: } enum prog_opcode op; - ir_to_mesa_dst_reg dst_reg; - ir_to_mesa_src_reg src_reg[3]; + dst_reg dst; + src_reg src[3]; /** Pointer to the ir source this tree came from for debugging */ ir_instruction *ir; GLboolean cond_update; @@ -174,7 +217,7 @@ public: int inst; /** Storage for the return value. */ - ir_to_mesa_src_reg return_reg; + src_reg return_reg; }; class ir_to_mesa_visitor : public ir_visitor { @@ -195,11 +238,10 @@ public: function_entry *get_function_signature(ir_function_signature *sig); - ir_to_mesa_src_reg get_temp(const glsl_type *type); - void reladdr_to_temp(ir_instruction *ir, - ir_to_mesa_src_reg *reg, int *num_reladdr); + src_reg get_temp(const glsl_type *type); + void reladdr_to_temp(ir_instruction *ir, src_reg *reg, int *num_reladdr); - struct ir_to_mesa_src_reg src_reg_for_float(float val); + src_reg src_reg_for_float(float val); /** * \name Visit methods @@ -228,7 +270,7 @@ public: virtual void visit(ir_if *); /*@}*/ - struct ir_to_mesa_src_reg result; + src_reg result; /** List of variable_storage */ exec_list variables; @@ -240,52 +282,35 @@ public: /** List of ir_to_mesa_instruction */ exec_list instructions; - ir_to_mesa_instruction *ir_to_mesa_emit_op0(ir_instruction *ir, - enum prog_opcode op); + ir_to_mesa_instruction *emit(ir_instruction *ir, enum prog_opcode op); - ir_to_mesa_instruction *ir_to_mesa_emit_op1(ir_instruction *ir, - enum prog_opcode op, - ir_to_mesa_dst_reg dst, - ir_to_mesa_src_reg src0); + ir_to_mesa_instruction *emit(ir_instruction *ir, enum prog_opcode op, + dst_reg dst, src_reg src0); - ir_to_mesa_instruction *ir_to_mesa_emit_op2(ir_instruction *ir, - enum prog_opcode op, - ir_to_mesa_dst_reg dst, - ir_to_mesa_src_reg src0, - ir_to_mesa_src_reg src1); + ir_to_mesa_instruction *emit(ir_instruction *ir, enum prog_opcode op, + dst_reg dst, src_reg src0, src_reg src1); - ir_to_mesa_instruction *ir_to_mesa_emit_op3(ir_instruction *ir, - enum prog_opcode op, - ir_to_mesa_dst_reg dst, - ir_to_mesa_src_reg src0, - ir_to_mesa_src_reg src1, - ir_to_mesa_src_reg src2); + ir_to_mesa_instruction *emit(ir_instruction *ir, enum prog_opcode op, + dst_reg dst, + src_reg src0, src_reg src1, src_reg src2); /** * Emit the correct dot-product instruction for the type of arguments - * - * \sa ir_to_mesa_emit_op2 */ - void ir_to_mesa_emit_dp(ir_instruction *ir, - ir_to_mesa_dst_reg dst, - ir_to_mesa_src_reg src0, - ir_to_mesa_src_reg src1, - unsigned elements); - - void ir_to_mesa_emit_scalar_op1(ir_instruction *ir, - enum prog_opcode op, - ir_to_mesa_dst_reg dst, - ir_to_mesa_src_reg src0); - - void ir_to_mesa_emit_scalar_op2(ir_instruction *ir, - enum prog_opcode op, - ir_to_mesa_dst_reg dst, - ir_to_mesa_src_reg src0, - ir_to_mesa_src_reg src1); + void emit_dp(ir_instruction *ir, + dst_reg dst, + src_reg src0, + src_reg src1, + unsigned elements); + + void emit_scalar(ir_instruction *ir, enum prog_opcode op, + dst_reg dst, src_reg src0); + + void emit_scalar(ir_instruction *ir, enum prog_opcode op, + dst_reg dst, src_reg src0, src_reg src1); void emit_scs(ir_instruction *ir, enum prog_opcode op, - ir_to_mesa_dst_reg dst, - const ir_to_mesa_src_reg &src); + dst_reg dst, const src_reg &src); GLboolean try_emit_mad(ir_expression *ir, int mul_operand); @@ -300,15 +325,11 @@ public: void *mem_ctx; }; -ir_to_mesa_src_reg ir_to_mesa_undef = ir_to_mesa_src_reg(PROGRAM_UNDEFINED, 0, NULL); +src_reg undef_src = src_reg(PROGRAM_UNDEFINED, 0, NULL); -ir_to_mesa_dst_reg ir_to_mesa_undef_dst = { - PROGRAM_UNDEFINED, 0, SWIZZLE_NOOP, COND_TR, NULL, -}; +dst_reg undef_dst = dst_reg(PROGRAM_UNDEFINED, SWIZZLE_NOOP); -ir_to_mesa_dst_reg ir_to_mesa_address_reg = { - PROGRAM_ADDRESS, 0, WRITEMASK_X, COND_TR, NULL -}; +dst_reg address_reg = dst_reg(PROGRAM_ADDRESS, WRITEMASK_X); static void fail_link(struct gl_shader_program *prog, const char *fmt, ...) PRINTFLIKE(2, 3); @@ -339,12 +360,9 @@ swizzle_for_size(int size) } ir_to_mesa_instruction * -ir_to_mesa_visitor::ir_to_mesa_emit_op3(ir_instruction *ir, - enum prog_opcode op, - ir_to_mesa_dst_reg dst, - ir_to_mesa_src_reg src0, - ir_to_mesa_src_reg src1, - ir_to_mesa_src_reg src2) +ir_to_mesa_visitor::emit(ir_instruction *ir, enum prog_opcode op, + dst_reg dst, + src_reg src0, src_reg src1, src_reg src2) { ir_to_mesa_instruction *inst = new(mem_ctx) ir_to_mesa_instruction(); int num_reladdr = 0; @@ -363,18 +381,16 @@ ir_to_mesa_visitor::ir_to_mesa_emit_op3(ir_instruction *ir, reladdr_to_temp(ir, &src0, &num_reladdr); if (dst.reladdr) { - ir_to_mesa_emit_op1(ir, OPCODE_ARL, ir_to_mesa_address_reg, - *dst.reladdr); - + emit(ir, OPCODE_ARL, address_reg, *dst.reladdr); num_reladdr--; } assert(num_reladdr == 0); inst->op = op; - inst->dst_reg = dst; - inst->src_reg[0] = src0; - inst->src_reg[1] = src1; - inst->src_reg[2] = src2; + inst->dst = dst; + inst->src[0] = src0; + inst->src[1] = src1; + inst->src[2] = src2; inst->ir = ir; inst->function = NULL; @@ -386,69 +402,36 @@ ir_to_mesa_visitor::ir_to_mesa_emit_op3(ir_instruction *ir, ir_to_mesa_instruction * -ir_to_mesa_visitor::ir_to_mesa_emit_op2(ir_instruction *ir, - enum prog_opcode op, - ir_to_mesa_dst_reg dst, - ir_to_mesa_src_reg src0, - ir_to_mesa_src_reg src1) +ir_to_mesa_visitor::emit(ir_instruction *ir, enum prog_opcode op, + dst_reg dst, src_reg src0, src_reg src1) { - return ir_to_mesa_emit_op3(ir, op, dst, src0, src1, ir_to_mesa_undef); + return emit(ir, op, dst, src0, src1, undef_src); } ir_to_mesa_instruction * -ir_to_mesa_visitor::ir_to_mesa_emit_op1(ir_instruction *ir, - enum prog_opcode op, - ir_to_mesa_dst_reg dst, - ir_to_mesa_src_reg src0) +ir_to_mesa_visitor::emit(ir_instruction *ir, enum prog_opcode op, + dst_reg dst, src_reg src0) { assert(dst.writemask != 0); - return ir_to_mesa_emit_op3(ir, op, dst, - src0, ir_to_mesa_undef, ir_to_mesa_undef); + return emit(ir, op, dst, src0, undef_src, undef_src); } ir_to_mesa_instruction * -ir_to_mesa_visitor::ir_to_mesa_emit_op0(ir_instruction *ir, - enum prog_opcode op) +ir_to_mesa_visitor::emit(ir_instruction *ir, enum prog_opcode op) { - return ir_to_mesa_emit_op3(ir, op, ir_to_mesa_undef_dst, - ir_to_mesa_undef, - ir_to_mesa_undef, - ir_to_mesa_undef); + return emit(ir, op, undef_dst, undef_src, undef_src, undef_src); } void -ir_to_mesa_visitor::ir_to_mesa_emit_dp(ir_instruction *ir, - ir_to_mesa_dst_reg dst, - ir_to_mesa_src_reg src0, - ir_to_mesa_src_reg src1, - unsigned elements) +ir_to_mesa_visitor::emit_dp(ir_instruction *ir, + dst_reg dst, src_reg src0, src_reg src1, + unsigned elements) { static const gl_inst_opcode dot_opcodes[] = { OPCODE_DP2, OPCODE_DP3, OPCODE_DP4 }; - ir_to_mesa_emit_op3(ir, dot_opcodes[elements - 2], - dst, src0, src1, ir_to_mesa_undef); -} - -inline ir_to_mesa_dst_reg -ir_to_mesa_dst_reg_from_src(ir_to_mesa_src_reg reg) -{ - ir_to_mesa_dst_reg dst_reg; - - dst_reg.file = reg.file; - dst_reg.index = reg.index; - dst_reg.writemask = WRITEMASK_XYZW; - dst_reg.cond_mask = COND_TR; - dst_reg.reladdr = reg.reladdr; - - return dst_reg; -} - -inline ir_to_mesa_src_reg -ir_to_mesa_src_reg_from_dst(ir_to_mesa_dst_reg reg) -{ - return ir_to_mesa_src_reg(reg.file, reg.index, NULL); + emit(ir, dot_opcodes[elements - 2], dst, src0, src1); } /** @@ -460,11 +443,9 @@ ir_to_mesa_src_reg_from_dst(ir_to_mesa_dst_reg reg) * to produce dest channels. */ void -ir_to_mesa_visitor::ir_to_mesa_emit_scalar_op2(ir_instruction *ir, - enum prog_opcode op, - ir_to_mesa_dst_reg dst, - ir_to_mesa_src_reg orig_src0, - ir_to_mesa_src_reg orig_src1) +ir_to_mesa_visitor::emit_scalar(ir_instruction *ir, enum prog_opcode op, + dst_reg dst, + src_reg orig_src0, src_reg orig_src1) { int i, j; int done_mask = ~dst.writemask; @@ -476,8 +457,8 @@ ir_to_mesa_visitor::ir_to_mesa_emit_scalar_op2(ir_instruction *ir, for (i = 0; i < 4; i++) { GLuint this_mask = (1 << i); ir_to_mesa_instruction *inst; - ir_to_mesa_src_reg src0 = orig_src0; - ir_to_mesa_src_reg src1 = orig_src1; + src_reg src0 = orig_src0; + src_reg src1 = orig_src1; if (done_mask & this_mask) continue; @@ -500,26 +481,21 @@ ir_to_mesa_visitor::ir_to_mesa_emit_scalar_op2(ir_instruction *ir, src1.swizzle = MAKE_SWIZZLE4(src1_swiz, src1_swiz, src1_swiz, src1_swiz); - inst = ir_to_mesa_emit_op2(ir, op, - dst, - src0, - src1); - inst->dst_reg.writemask = this_mask; + inst = emit(ir, op, dst, src0, src1); + inst->dst.writemask = this_mask; done_mask |= this_mask; } } void -ir_to_mesa_visitor::ir_to_mesa_emit_scalar_op1(ir_instruction *ir, - enum prog_opcode op, - ir_to_mesa_dst_reg dst, - ir_to_mesa_src_reg src0) +ir_to_mesa_visitor::emit_scalar(ir_instruction *ir, enum prog_opcode op, + dst_reg dst, src_reg src0) { - ir_to_mesa_src_reg undef = ir_to_mesa_undef; + src_reg undef = undef_src; undef.swizzle = SWIZZLE_XXXX; - ir_to_mesa_emit_scalar_op2(ir, op, dst, src0, undef); + emit_scalar(ir, op, dst, src0, undef); } /** @@ -538,20 +514,20 @@ ir_to_mesa_visitor::ir_to_mesa_emit_scalar_op1(ir_instruction *ir, */ void ir_to_mesa_visitor::emit_scs(ir_instruction *ir, enum prog_opcode op, - ir_to_mesa_dst_reg dst, - const ir_to_mesa_src_reg &src) + dst_reg dst, + const src_reg &src) { /* Vertex programs cannot use the SCS opcode. */ if (this->prog->Target == GL_VERTEX_PROGRAM_ARB) { - ir_to_mesa_emit_scalar_op1(ir, op, dst, src); + emit_scalar(ir, op, dst, src); return; } const unsigned component = (op == OPCODE_SIN) ? 0 : 1; const unsigned scs_mask = (1U << component); int done_mask = ~dst.writemask; - ir_to_mesa_src_reg tmp; + src_reg tmp; assert(op == OPCODE_SIN || op == OPCODE_COS); @@ -564,7 +540,7 @@ ir_to_mesa_visitor::emit_scs(ir_instruction *ir, enum prog_opcode op, for (unsigned i = 0; i < 4; i++) { unsigned this_mask = (1U << i); - ir_to_mesa_src_reg src0 = src; + src_reg src0 = src; if ((done_mask & this_mask) != 0) continue; @@ -592,41 +568,40 @@ ir_to_mesa_visitor::emit_scs(ir_instruction *ir, enum prog_opcode op, if (this_mask != scs_mask) { ir_to_mesa_instruction *inst; - ir_to_mesa_dst_reg tmp_dst = ir_to_mesa_dst_reg_from_src(tmp); + dst_reg tmp_dst = dst_reg(tmp); /* Emit the SCS instruction. */ - inst = ir_to_mesa_emit_op1(ir, OPCODE_SCS, tmp_dst, src0); - inst->dst_reg.writemask = scs_mask; + inst = emit(ir, OPCODE_SCS, tmp_dst, src0); + inst->dst.writemask = scs_mask; /* Move the result of the SCS instruction to the desired location in * the destination. */ tmp.swizzle = MAKE_SWIZZLE4(component, component, component, component); - inst = ir_to_mesa_emit_op1(ir, OPCODE_SCS, dst, tmp); - inst->dst_reg.writemask = this_mask; + inst = emit(ir, OPCODE_SCS, dst, tmp); + inst->dst.writemask = this_mask; } else { /* Emit the SCS instruction to write directly to the destination. */ - ir_to_mesa_instruction *inst = - ir_to_mesa_emit_op1(ir, OPCODE_SCS, dst, src0); - inst->dst_reg.writemask = scs_mask; + ir_to_mesa_instruction *inst = emit(ir, OPCODE_SCS, dst, src0); + inst->dst.writemask = scs_mask; } done_mask |= this_mask; } } -struct ir_to_mesa_src_reg +struct src_reg ir_to_mesa_visitor::src_reg_for_float(float val) { - ir_to_mesa_src_reg src_reg(PROGRAM_CONSTANT, -1, NULL); + src_reg src(PROGRAM_CONSTANT, -1, NULL); - src_reg.index = _mesa_add_unnamed_constant(this->prog->Parameters, - &val, 1, &src_reg.swizzle); + src.index = _mesa_add_unnamed_constant(this->prog->Parameters, + &val, 1, &src.swizzle); - return src_reg; + return src; } static int @@ -676,31 +651,31 @@ type_size(const struct glsl_type *type) * storage). Actual register allocation for the Mesa VM occurs in a * pass over the Mesa IR later. */ -ir_to_mesa_src_reg +src_reg ir_to_mesa_visitor::get_temp(const glsl_type *type) { - ir_to_mesa_src_reg src_reg; + src_reg src; int swizzle[4]; int i; - src_reg.file = PROGRAM_TEMPORARY; - src_reg.index = next_temp; - src_reg.reladdr = NULL; + src.file = PROGRAM_TEMPORARY; + src.index = next_temp; + src.reladdr = NULL; next_temp += type_size(type); if (type->is_array() || type->is_record()) { - src_reg.swizzle = SWIZZLE_NOOP; + src.swizzle = SWIZZLE_NOOP; } else { for (i = 0; i < type->vector_elements; i++) swizzle[i] = i; for (; i < 4; i++) swizzle[i] = type->vector_elements - 1; - src_reg.swizzle = MAKE_SWIZZLE4(swizzle[0], swizzle[1], - swizzle[2], swizzle[3]); + src.swizzle = MAKE_SWIZZLE4(swizzle[0], swizzle[1], + swizzle[2], swizzle[3]); } - src_reg.negate = 0; + src.negate = 0; - return src_reg; + return src; } variable_storage * @@ -754,27 +729,8 @@ ir_to_mesa_visitor::visit(ir_variable *ir) if (ir->mode == ir_var_uniform && strncmp(ir->name, "gl_", 3) == 0) { unsigned int i; - const struct gl_builtin_uniform_desc *statevar; - - for (i = 0; _mesa_builtin_uniform_desc[i].name; i++) { - if (strcmp(ir->name, _mesa_builtin_uniform_desc[i].name) == 0) - break; - } - - if (!_mesa_builtin_uniform_desc[i].name) { - fail_link(this->shader_program, - "Failed to find builtin uniform `%s'\n", ir->name); - return; - } - - statevar = &_mesa_builtin_uniform_desc[i]; - - int array_count; - if (ir->type->is_array()) { - array_count = ir->type->length; - } else { - array_count = 1; - } + const ir_state_slot *const slots = ir->state_slots; + assert(ir->state_slots != NULL); /* Check if this statevar's setup in the STATE file exactly * matches how we'll want to reference it as a @@ -782,63 +738,57 @@ ir_to_mesa_visitor::visit(ir_variable *ir) * temporary storage and hope that it'll get copy-propagated * out. */ - for (i = 0; i < statevar->num_elements; i++) { - if (statevar->elements[i].swizzle != SWIZZLE_XYZW) { + for (i = 0; i < ir->num_state_slots; i++) { + if (slots[i].swizzle != SWIZZLE_XYZW) { break; } } struct variable_storage *storage; - ir_to_mesa_dst_reg dst; - if (i == statevar->num_elements) { + dst_reg dst; + if (i == ir->num_state_slots) { /* We'll set the index later. */ storage = new(mem_ctx) variable_storage(ir, PROGRAM_STATE_VAR, -1); this->variables.push_tail(storage); - dst = ir_to_mesa_undef_dst; + dst = undef_dst; } else { + /* The variable_storage constructor allocates slots based on the size + * of the type. However, this had better match the number of state + * elements that we're going to copy into the new temporary. + */ + assert((int) ir->num_state_slots == type_size(ir->type)); + storage = new(mem_ctx) variable_storage(ir, PROGRAM_TEMPORARY, this->next_temp); this->variables.push_tail(storage); this->next_temp += type_size(ir->type); - dst = ir_to_mesa_dst_reg_from_src(ir_to_mesa_src_reg(PROGRAM_TEMPORARY, - storage->index, - NULL)); + dst = dst_reg(src_reg(PROGRAM_TEMPORARY, storage->index, NULL)); } - for (int a = 0; a < array_count; a++) { - for (unsigned int i = 0; i < statevar->num_elements; i++) { - struct gl_builtin_uniform_element *element = &statevar->elements[i]; - int tokens[STATE_LENGTH]; - - memcpy(tokens, element->tokens, sizeof(element->tokens)); - if (ir->type->is_array()) { - tokens[1] = a; - } - - int index = _mesa_add_state_reference(this->prog->Parameters, - (gl_state_index *)tokens); + for (unsigned int i = 0; i < ir->num_state_slots; i++) { + int index = _mesa_add_state_reference(this->prog->Parameters, + (gl_state_index *)slots[i].tokens); - if (storage->file == PROGRAM_STATE_VAR) { - if (storage->index == -1) { - storage->index = index; - } else { - assert(index == - (int)(storage->index + a * statevar->num_elements + i)); - } + if (storage->file == PROGRAM_STATE_VAR) { + if (storage->index == -1) { + storage->index = index; } else { - ir_to_mesa_src_reg src(PROGRAM_STATE_VAR, index, NULL); - src.swizzle = element->swizzle; - ir_to_mesa_emit_op1(ir, OPCODE_MOV, dst, src); - /* even a float takes up a whole vec4 reg in a struct/array. */ - dst.index++; + assert(index == storage->index + (int)i); } + } else { + src_reg src(PROGRAM_STATE_VAR, index, NULL); + src.swizzle = slots[i].swizzle; + emit(ir, OPCODE_MOV, dst, src); + /* even a float takes up a whole vec4 reg in a struct/array. */ + dst.index++; } } + if (storage->file == PROGRAM_TEMPORARY && - dst.index != storage->index + type_size(ir->type)) { + dst.index != storage->index + (int) ir->num_state_slots) { fail_link(this->shader_program, "failed to load builtin uniform `%s' (%d/%d regs loaded)\n", ir->name, dst.index - storage->index, @@ -864,7 +814,7 @@ ir_to_mesa_visitor::visit(ir_loop *ir) delete a; } - ir_to_mesa_emit_op0(NULL, OPCODE_BGNLOOP); + emit(NULL, OPCODE_BGNLOOP); if (ir->to) { ir_expression *e = @@ -897,7 +847,7 @@ ir_to_mesa_visitor::visit(ir_loop *ir) delete e; } - ir_to_mesa_emit_op0(NULL, OPCODE_ENDLOOP); + emit(NULL, OPCODE_ENDLOOP); } void @@ -905,10 +855,10 @@ ir_to_mesa_visitor::visit(ir_loop_jump *ir) { switch (ir->mode) { case ir_loop_jump::jump_break: - ir_to_mesa_emit_op0(NULL, OPCODE_BRK); + emit(NULL, OPCODE_BRK); break; case ir_loop_jump::jump_continue: - ir_to_mesa_emit_op0(NULL, OPCODE_CONT); + emit(NULL, OPCODE_CONT); break; } } @@ -947,7 +897,7 @@ GLboolean ir_to_mesa_visitor::try_emit_mad(ir_expression *ir, int mul_operand) { int nonmul_operand = 1 - mul_operand; - ir_to_mesa_src_reg a, b, c; + src_reg a, b, c; ir_expression *expr = ir->operands[mul_operand]->as_expression(); if (!expr || expr->operation != ir_binop_mul) @@ -961,8 +911,7 @@ ir_to_mesa_visitor::try_emit_mad(ir_expression *ir, int mul_operand) c = this->result; this->result = get_temp(ir->type); - ir_to_mesa_emit_op3(ir, OPCODE_MAD, - ir_to_mesa_dst_reg_from_src(this->result), a, b, c); + emit(ir, OPCODE_MAD, dst_reg(this->result), a, b, c); return true; } @@ -981,13 +930,11 @@ ir_to_mesa_visitor::try_emit_sat(ir_expression *ir) return false; sat_src->accept(this); - ir_to_mesa_src_reg src = this->result; + src_reg src = this->result; this->result = get_temp(ir->type); ir_to_mesa_instruction *inst; - inst = ir_to_mesa_emit_op1(ir, OPCODE_MOV, - ir_to_mesa_dst_reg_from_src(this->result), - src); + inst = emit(ir, OPCODE_MOV, dst_reg(this->result), src); inst->saturate = true; return true; @@ -995,18 +942,17 @@ ir_to_mesa_visitor::try_emit_sat(ir_expression *ir) void ir_to_mesa_visitor::reladdr_to_temp(ir_instruction *ir, - ir_to_mesa_src_reg *reg, int *num_reladdr) + src_reg *reg, int *num_reladdr) { if (!reg->reladdr) return; - ir_to_mesa_emit_op1(ir, OPCODE_ARL, ir_to_mesa_address_reg, *reg->reladdr); + emit(ir, OPCODE_ARL, address_reg, *reg->reladdr); if (*num_reladdr != 1) { - ir_to_mesa_src_reg temp = get_temp(glsl_type::vec4_type); + src_reg temp = get_temp(glsl_type::vec4_type); - ir_to_mesa_emit_op1(ir, OPCODE_MOV, - ir_to_mesa_dst_reg_from_src(temp), *reg); + emit(ir, OPCODE_MOV, dst_reg(temp), *reg); *reg = temp; } @@ -1102,7 +1048,7 @@ ir_to_mesa_visitor::emit_swz(ir_expression *ir) exit(1); } - ir_to_mesa_src_reg src; + src_reg src; src = this->result; src.swizzle = MAKE_SWIZZLE4(components[0], @@ -1117,8 +1063,8 @@ ir_to_mesa_visitor::emit_swz(ir_expression *ir) /* Storage for our result. Ideally for an assignment we'd be using the * actual storage for the result here, instead. */ - const ir_to_mesa_src_reg result_src = get_temp(ir->type); - ir_to_mesa_dst_reg result_dst = ir_to_mesa_dst_reg_from_src(result_src); + const src_reg result_src = get_temp(ir->type); + dst_reg result_dst = dst_reg(result_src); /* Limit writes to the channels that will be used by result_src later. * This does limit this temp's use as a temporary for multi-instruction @@ -1126,7 +1072,7 @@ ir_to_mesa_visitor::emit_swz(ir_expression *ir) */ result_dst.writemask = (1 << ir->type->vector_elements) - 1; - ir_to_mesa_emit_op1(ir, OPCODE_SWZ, result_dst, src); + emit(ir, OPCODE_SWZ, result_dst, src); this->result = result_src; } @@ -1134,9 +1080,9 @@ void ir_to_mesa_visitor::visit(ir_expression *ir) { unsigned int operand; - struct ir_to_mesa_src_reg op[Elements(ir->operands)]; - struct ir_to_mesa_src_reg result_src; - struct ir_to_mesa_dst_reg result_dst; + src_reg op[Elements(ir->operands)]; + src_reg result_src; + dst_reg result_dst; /* Quick peephole: Emit OPCODE_MAD(a, b, c) instead of ADD(MUL(a, b), c) */ @@ -1184,7 +1130,7 @@ ir_to_mesa_visitor::visit(ir_expression *ir) */ result_src = get_temp(ir->type); /* convenience for the emit functions below. */ - result_dst = ir_to_mesa_dst_reg_from_src(result_src); + result_dst = dst_reg(result_src); /* Limit writes to the channels that will be used by result_src later. * This does limit this temp's use as a temporary for multi-instruction * sequences. @@ -1193,38 +1139,37 @@ ir_to_mesa_visitor::visit(ir_expression *ir) switch (ir->operation) { case ir_unop_logic_not: - ir_to_mesa_emit_op2(ir, OPCODE_SEQ, result_dst, - op[0], src_reg_for_float(0.0)); + emit(ir, OPCODE_SEQ, result_dst, op[0], src_reg_for_float(0.0)); break; case ir_unop_neg: op[0].negate = ~op[0].negate; result_src = op[0]; break; case ir_unop_abs: - ir_to_mesa_emit_op1(ir, OPCODE_ABS, result_dst, op[0]); + emit(ir, OPCODE_ABS, result_dst, op[0]); break; case ir_unop_sign: - ir_to_mesa_emit_op1(ir, OPCODE_SSG, result_dst, op[0]); + emit(ir, OPCODE_SSG, result_dst, op[0]); break; case ir_unop_rcp: - ir_to_mesa_emit_scalar_op1(ir, OPCODE_RCP, result_dst, op[0]); + emit_scalar(ir, OPCODE_RCP, result_dst, op[0]); break; case ir_unop_exp2: - ir_to_mesa_emit_scalar_op1(ir, OPCODE_EX2, result_dst, op[0]); + emit_scalar(ir, OPCODE_EX2, result_dst, op[0]); break; case ir_unop_exp: case ir_unop_log: assert(!"not reached: should be handled by ir_explog_to_explog2"); break; case ir_unop_log2: - ir_to_mesa_emit_scalar_op1(ir, OPCODE_LG2, result_dst, op[0]); + emit_scalar(ir, OPCODE_LG2, result_dst, op[0]); break; case ir_unop_sin: - ir_to_mesa_emit_scalar_op1(ir, OPCODE_SIN, result_dst, op[0]); + emit_scalar(ir, OPCODE_SIN, result_dst, op[0]); break; case ir_unop_cos: - ir_to_mesa_emit_scalar_op1(ir, OPCODE_COS, result_dst, op[0]); + emit_scalar(ir, OPCODE_COS, result_dst, op[0]); break; case ir_unop_sin_reduced: emit_scs(ir, OPCODE_SIN, result_dst, op[0]); @@ -1234,10 +1179,10 @@ ir_to_mesa_visitor::visit(ir_expression *ir) break; case ir_unop_dFdx: - ir_to_mesa_emit_op1(ir, OPCODE_DDX, result_dst, op[0]); + emit(ir, OPCODE_DDX, result_dst, op[0]); break; case ir_unop_dFdy: - ir_to_mesa_emit_op1(ir, OPCODE_DDY, result_dst, op[0]); + emit(ir, OPCODE_DDY, result_dst, op[0]); break; case ir_unop_noise: { @@ -1246,19 +1191,19 @@ ir_to_mesa_visitor::visit(ir_expression *ir) + (ir->operands[0]->type->vector_elements) - 1); assert((opcode >= OPCODE_NOISE1) && (opcode <= OPCODE_NOISE4)); - ir_to_mesa_emit_op1(ir, opcode, result_dst, op[0]); + emit(ir, opcode, result_dst, op[0]); break; } case ir_binop_add: - ir_to_mesa_emit_op2(ir, OPCODE_ADD, result_dst, op[0], op[1]); + emit(ir, OPCODE_ADD, result_dst, op[0], op[1]); break; case ir_binop_sub: - ir_to_mesa_emit_op2(ir, OPCODE_SUB, result_dst, op[0], op[1]); + emit(ir, OPCODE_SUB, result_dst, op[0], op[1]); break; case ir_binop_mul: - ir_to_mesa_emit_op2(ir, OPCODE_MUL, result_dst, op[0], op[1]); + emit(ir, OPCODE_MUL, result_dst, op[0], op[1]); break; case ir_binop_div: assert(!"not reached: should be handled by ir_div_to_mul_rcp"); @@ -1267,100 +1212,88 @@ ir_to_mesa_visitor::visit(ir_expression *ir) break; case ir_binop_less: - ir_to_mesa_emit_op2(ir, OPCODE_SLT, result_dst, op[0], op[1]); + emit(ir, OPCODE_SLT, result_dst, op[0], op[1]); break; case ir_binop_greater: - ir_to_mesa_emit_op2(ir, OPCODE_SGT, result_dst, op[0], op[1]); + emit(ir, OPCODE_SGT, result_dst, op[0], op[1]); break; case ir_binop_lequal: - ir_to_mesa_emit_op2(ir, OPCODE_SLE, result_dst, op[0], op[1]); + emit(ir, OPCODE_SLE, result_dst, op[0], op[1]); break; case ir_binop_gequal: - ir_to_mesa_emit_op2(ir, OPCODE_SGE, result_dst, op[0], op[1]); + emit(ir, OPCODE_SGE, result_dst, op[0], op[1]); break; case ir_binop_equal: - ir_to_mesa_emit_op2(ir, OPCODE_SEQ, result_dst, op[0], op[1]); + emit(ir, OPCODE_SEQ, result_dst, op[0], op[1]); break; case ir_binop_nequal: - ir_to_mesa_emit_op2(ir, OPCODE_SNE, result_dst, op[0], op[1]); + emit(ir, OPCODE_SNE, result_dst, op[0], op[1]); break; case ir_binop_all_equal: /* "==" operator producing a scalar boolean. */ if (ir->operands[0]->type->is_vector() || ir->operands[1]->type->is_vector()) { - ir_to_mesa_src_reg temp = get_temp(glsl_type::vec4_type); - ir_to_mesa_emit_op2(ir, OPCODE_SNE, - ir_to_mesa_dst_reg_from_src(temp), op[0], op[1]); - ir_to_mesa_emit_dp(ir, result_dst, temp, temp, vector_elements); - ir_to_mesa_emit_op2(ir, OPCODE_SEQ, - result_dst, result_src, src_reg_for_float(0.0)); + src_reg temp = get_temp(glsl_type::vec4_type); + emit(ir, OPCODE_SNE, dst_reg(temp), op[0], op[1]); + emit_dp(ir, result_dst, temp, temp, vector_elements); + emit(ir, OPCODE_SEQ, result_dst, result_src, src_reg_for_float(0.0)); } else { - ir_to_mesa_emit_op2(ir, OPCODE_SEQ, result_dst, op[0], op[1]); + emit(ir, OPCODE_SEQ, result_dst, op[0], op[1]); } break; case ir_binop_any_nequal: /* "!=" operator producing a scalar boolean. */ if (ir->operands[0]->type->is_vector() || ir->operands[1]->type->is_vector()) { - ir_to_mesa_src_reg temp = get_temp(glsl_type::vec4_type); - ir_to_mesa_emit_op2(ir, OPCODE_SNE, - ir_to_mesa_dst_reg_from_src(temp), op[0], op[1]); - ir_to_mesa_emit_dp(ir, result_dst, temp, temp, vector_elements); - ir_to_mesa_emit_op2(ir, OPCODE_SNE, - result_dst, result_src, src_reg_for_float(0.0)); + src_reg temp = get_temp(glsl_type::vec4_type); + emit(ir, OPCODE_SNE, dst_reg(temp), op[0], op[1]); + emit_dp(ir, result_dst, temp, temp, vector_elements); + emit(ir, OPCODE_SNE, result_dst, result_src, src_reg_for_float(0.0)); } else { - ir_to_mesa_emit_op2(ir, OPCODE_SNE, result_dst, op[0], op[1]); + emit(ir, OPCODE_SNE, result_dst, op[0], op[1]); } break; case ir_unop_any: assert(ir->operands[0]->type->is_vector()); - ir_to_mesa_emit_dp(ir, result_dst, op[0], op[0], - ir->operands[0]->type->vector_elements); - ir_to_mesa_emit_op2(ir, OPCODE_SNE, - result_dst, result_src, src_reg_for_float(0.0)); + emit_dp(ir, result_dst, op[0], op[0], + ir->operands[0]->type->vector_elements); + emit(ir, OPCODE_SNE, result_dst, result_src, src_reg_for_float(0.0)); break; case ir_binop_logic_xor: - ir_to_mesa_emit_op2(ir, OPCODE_SNE, result_dst, op[0], op[1]); + emit(ir, OPCODE_SNE, result_dst, op[0], op[1]); break; case ir_binop_logic_or: /* This could be a saturated add and skip the SNE. */ - ir_to_mesa_emit_op2(ir, OPCODE_ADD, - result_dst, - op[0], op[1]); - - ir_to_mesa_emit_op2(ir, OPCODE_SNE, - result_dst, - result_src, src_reg_for_float(0.0)); + emit(ir, OPCODE_ADD, result_dst, op[0], op[1]); + emit(ir, OPCODE_SNE, result_dst, result_src, src_reg_for_float(0.0)); break; case ir_binop_logic_and: /* the bool args are stored as float 0.0 or 1.0, so "mul" gives us "and". */ - ir_to_mesa_emit_op2(ir, OPCODE_MUL, - result_dst, - op[0], op[1]); + emit(ir, OPCODE_MUL, result_dst, op[0], op[1]); break; case ir_binop_dot: assert(ir->operands[0]->type->is_vector()); assert(ir->operands[0]->type == ir->operands[1]->type); - ir_to_mesa_emit_dp(ir, result_dst, op[0], op[1], - ir->operands[0]->type->vector_elements); + emit_dp(ir, result_dst, op[0], op[1], + ir->operands[0]->type->vector_elements); break; case ir_unop_sqrt: /* sqrt(x) = x * rsq(x). */ - ir_to_mesa_emit_scalar_op1(ir, OPCODE_RSQ, result_dst, op[0]); - ir_to_mesa_emit_op2(ir, OPCODE_MUL, result_dst, result_src, op[0]); + emit_scalar(ir, OPCODE_RSQ, result_dst, op[0]); + emit(ir, OPCODE_MUL, result_dst, result_src, op[0]); /* For incoming channels <= 0, set the result to 0. */ op[0].negate = ~op[0].negate; - ir_to_mesa_emit_op3(ir, OPCODE_CMP, result_dst, + emit(ir, OPCODE_CMP, result_dst, op[0], result_src, src_reg_for_float(0.0)); break; case ir_unop_rsq: - ir_to_mesa_emit_scalar_op1(ir, OPCODE_RSQ, result_dst, op[0]); + emit_scalar(ir, OPCODE_RSQ, result_dst, op[0]); break; case ir_unop_i2f: case ir_unop_b2f: @@ -1369,36 +1302,36 @@ ir_to_mesa_visitor::visit(ir_expression *ir) result_src = op[0]; break; case ir_unop_f2i: - ir_to_mesa_emit_op1(ir, OPCODE_TRUNC, result_dst, op[0]); + emit(ir, OPCODE_TRUNC, result_dst, op[0]); break; case ir_unop_f2b: case ir_unop_i2b: - ir_to_mesa_emit_op2(ir, OPCODE_SNE, result_dst, + emit(ir, OPCODE_SNE, result_dst, op[0], src_reg_for_float(0.0)); break; case ir_unop_trunc: - ir_to_mesa_emit_op1(ir, OPCODE_TRUNC, result_dst, op[0]); + emit(ir, OPCODE_TRUNC, result_dst, op[0]); break; case ir_unop_ceil: op[0].negate = ~op[0].negate; - ir_to_mesa_emit_op1(ir, OPCODE_FLR, result_dst, op[0]); + emit(ir, OPCODE_FLR, result_dst, op[0]); result_src.negate = ~result_src.negate; break; case ir_unop_floor: - ir_to_mesa_emit_op1(ir, OPCODE_FLR, result_dst, op[0]); + emit(ir, OPCODE_FLR, result_dst, op[0]); break; case ir_unop_fract: - ir_to_mesa_emit_op1(ir, OPCODE_FRC, result_dst, op[0]); + emit(ir, OPCODE_FRC, result_dst, op[0]); break; case ir_binop_min: - ir_to_mesa_emit_op2(ir, OPCODE_MIN, result_dst, op[0], op[1]); + emit(ir, OPCODE_MIN, result_dst, op[0], op[1]); break; case ir_binop_max: - ir_to_mesa_emit_op2(ir, OPCODE_MAX, result_dst, op[0], op[1]); + emit(ir, OPCODE_MAX, result_dst, op[0], op[1]); break; case ir_binop_pow: - ir_to_mesa_emit_scalar_op2(ir, OPCODE_POW, result_dst, op[0], op[1]); + emit_scalar(ir, OPCODE_POW, result_dst, op[0], op[1]); break; case ir_unop_bit_not: @@ -1426,7 +1359,7 @@ ir_to_mesa_visitor::visit(ir_expression *ir) void ir_to_mesa_visitor::visit(ir_swizzle *ir) { - ir_to_mesa_src_reg src_reg; + src_reg src; int i; int swizzle[4]; @@ -1436,23 +1369,23 @@ ir_to_mesa_visitor::visit(ir_swizzle *ir) */ ir->val->accept(this); - src_reg = this->result; - assert(src_reg.file != PROGRAM_UNDEFINED); + src = this->result; + assert(src.file != PROGRAM_UNDEFINED); for (i = 0; i < 4; i++) { if (i < ir->type->vector_elements) { switch (i) { case 0: - swizzle[i] = GET_SWZ(src_reg.swizzle, ir->mask.x); + swizzle[i] = GET_SWZ(src.swizzle, ir->mask.x); break; case 1: - swizzle[i] = GET_SWZ(src_reg.swizzle, ir->mask.y); + swizzle[i] = GET_SWZ(src.swizzle, ir->mask.y); break; case 2: - swizzle[i] = GET_SWZ(src_reg.swizzle, ir->mask.z); + swizzle[i] = GET_SWZ(src.swizzle, ir->mask.z); break; case 3: - swizzle[i] = GET_SWZ(src_reg.swizzle, ir->mask.w); + swizzle[i] = GET_SWZ(src.swizzle, ir->mask.w); break; } } else { @@ -1463,12 +1396,9 @@ ir_to_mesa_visitor::visit(ir_swizzle *ir) } } - src_reg.swizzle = MAKE_SWIZZLE4(swizzle[0], - swizzle[1], - swizzle[2], - swizzle[3]); + src.swizzle = MAKE_SWIZZLE4(swizzle[0], swizzle[1], swizzle[2], swizzle[3]); - this->result = src_reg; + this->result = src; } void @@ -1533,54 +1463,53 @@ ir_to_mesa_visitor::visit(ir_dereference_variable *ir) } } - this->result = ir_to_mesa_src_reg(entry->file, entry->index, var->type); + this->result = src_reg(entry->file, entry->index, var->type); } void ir_to_mesa_visitor::visit(ir_dereference_array *ir) { ir_constant *index; - ir_to_mesa_src_reg src_reg; + src_reg src; int element_size = type_size(ir->type); index = ir->array_index->constant_expression_value(); ir->array->accept(this); - src_reg = this->result; + src = this->result; if (index) { - src_reg.index += index->value.i[0] * element_size; + src.index += index->value.i[0] * element_size; } else { - ir_to_mesa_src_reg array_base = this->result; + src_reg array_base = this->result; /* Variable index array dereference. It eats the "vec4" of the * base of the array and an index that offsets the Mesa register * index. */ ir->array_index->accept(this); - ir_to_mesa_src_reg index_reg; + src_reg index_reg; if (element_size == 1) { index_reg = this->result; } else { index_reg = get_temp(glsl_type::float_type); - ir_to_mesa_emit_op2(ir, OPCODE_MUL, - ir_to_mesa_dst_reg_from_src(index_reg), - this->result, src_reg_for_float(element_size)); + emit(ir, OPCODE_MUL, dst_reg(index_reg), + this->result, src_reg_for_float(element_size)); } - src_reg.reladdr = ralloc(mem_ctx, ir_to_mesa_src_reg); - memcpy(src_reg.reladdr, &index_reg, sizeof(index_reg)); + src.reladdr = ralloc(mem_ctx, src_reg); + memcpy(src.reladdr, &index_reg, sizeof(index_reg)); } /* If the type is smaller than a vec4, replicate the last channel out. */ if (ir->type->is_scalar() || ir->type->is_vector()) - src_reg.swizzle = swizzle_for_size(ir->type->vector_elements); + src.swizzle = swizzle_for_size(ir->type->vector_elements); else - src_reg.swizzle = SWIZZLE_NOOP; + src.swizzle = SWIZZLE_NOOP; - this->result = src_reg; + this->result = src; } void @@ -1612,7 +1541,7 @@ ir_to_mesa_visitor::visit(ir_dereference_record *ir) * instead of potentially using a temporary like we might with the * ir_dereference handler. */ -static struct ir_to_mesa_dst_reg +static dst_reg get_assignment_lhs(ir_dereference *ir, ir_to_mesa_visitor *v) { /* The LHS must be a dereference. If the LHS is a variable indexed array @@ -1629,7 +1558,7 @@ get_assignment_lhs(ir_dereference *ir, ir_to_mesa_visitor *v) * swizzles in it and write swizzles using writemask, though. */ ir->accept(v); - return ir_to_mesa_dst_reg_from_src(v->result); + return dst_reg(v->result); } /** @@ -1722,8 +1651,8 @@ ir_to_mesa_visitor::process_move_condition(ir_rvalue *ir) void ir_to_mesa_visitor::visit(ir_assignment *ir) { - struct ir_to_mesa_dst_reg l; - struct ir_to_mesa_src_reg r; + dst_reg l; + src_reg r; int i; ir->rhs->accept(this); @@ -1779,15 +1708,13 @@ ir_to_mesa_visitor::visit(ir_assignment *ir) if (ir->condition) { const bool switch_order = this->process_move_condition(ir->condition); - ir_to_mesa_src_reg condition = this->result; + src_reg condition = this->result; for (i = 0; i < type_size(ir->lhs->type); i++) { if (switch_order) { - ir_to_mesa_emit_op3(ir, OPCODE_CMP, l, - condition, ir_to_mesa_src_reg_from_dst(l), r); + emit(ir, OPCODE_CMP, l, condition, src_reg(l), r); } else { - ir_to_mesa_emit_op3(ir, OPCODE_CMP, l, - condition, r, ir_to_mesa_src_reg_from_dst(l)); + emit(ir, OPCODE_CMP, l, condition, r, src_reg(l)); } l.index++; @@ -1795,7 +1722,7 @@ ir_to_mesa_visitor::visit(ir_assignment *ir) } } else { for (i = 0; i < type_size(ir->lhs->type); i++) { - ir_to_mesa_emit_op1(ir, OPCODE_MOV, l, r); + emit(ir, OPCODE_MOV, l, r); l.index++; r.index++; } @@ -1806,7 +1733,7 @@ ir_to_mesa_visitor::visit(ir_assignment *ir) void ir_to_mesa_visitor::visit(ir_constant *ir) { - ir_to_mesa_src_reg src_reg; + src_reg src; GLfloat stack_vals[4] = { 0 }; GLfloat *values = stack_vals; unsigned int i; @@ -1818,8 +1745,8 @@ ir_to_mesa_visitor::visit(ir_constant *ir) */ if (ir->type->base_type == GLSL_TYPE_STRUCT) { - ir_to_mesa_src_reg temp_base = get_temp(ir->type); - ir_to_mesa_dst_reg temp = ir_to_mesa_dst_reg_from_src(temp_base); + src_reg temp_base = get_temp(ir->type); + dst_reg temp = dst_reg(temp_base); foreach_iter(exec_list_iterator, iter, ir->components) { ir_constant *field_value = (ir_constant *)iter.get(); @@ -1828,12 +1755,12 @@ ir_to_mesa_visitor::visit(ir_constant *ir) assert(size > 0); field_value->accept(this); - src_reg = this->result; + src = this->result; for (i = 0; i < (unsigned int)size; i++) { - ir_to_mesa_emit_op1(ir, OPCODE_MOV, temp, src_reg); + emit(ir, OPCODE_MOV, temp, src); - src_reg.index++; + src.index++; temp.index++; } } @@ -1842,19 +1769,19 @@ ir_to_mesa_visitor::visit(ir_constant *ir) } if (ir->type->is_array()) { - ir_to_mesa_src_reg temp_base = get_temp(ir->type); - ir_to_mesa_dst_reg temp = ir_to_mesa_dst_reg_from_src(temp_base); + src_reg temp_base = get_temp(ir->type); + dst_reg temp = dst_reg(temp_base); int size = type_size(ir->type->fields.array); assert(size > 0); for (i = 0; i < ir->type->length; i++) { ir->array_elements[i]->accept(this); - src_reg = this->result; + src = this->result; for (int j = 0; j < size; j++) { - ir_to_mesa_emit_op1(ir, OPCODE_MOV, temp, src_reg); + emit(ir, OPCODE_MOV, temp, src); - src_reg.index++; + src.index++; temp.index++; } } @@ -1863,19 +1790,19 @@ ir_to_mesa_visitor::visit(ir_constant *ir) } if (ir->type->is_matrix()) { - ir_to_mesa_src_reg mat = get_temp(ir->type); - ir_to_mesa_dst_reg mat_column = ir_to_mesa_dst_reg_from_src(mat); + src_reg mat = get_temp(ir->type); + dst_reg mat_column = dst_reg(mat); for (i = 0; i < ir->type->matrix_columns; i++) { assert(ir->type->base_type == GLSL_TYPE_FLOAT); values = &ir->value.f[i * ir->type->vector_elements]; - src_reg = ir_to_mesa_src_reg(PROGRAM_CONSTANT, -1, NULL); - src_reg.index = _mesa_add_unnamed_constant(this->prog->Parameters, + src = src_reg(PROGRAM_CONSTANT, -1, NULL); + src.index = _mesa_add_unnamed_constant(this->prog->Parameters, values, ir->type->vector_elements, - &src_reg.swizzle); - ir_to_mesa_emit_op1(ir, OPCODE_MOV, mat_column, src_reg); + &src.swizzle); + emit(ir, OPCODE_MOV, mat_column, src); mat_column.index++; } @@ -1884,7 +1811,7 @@ ir_to_mesa_visitor::visit(ir_constant *ir) return; } - src_reg.file = PROGRAM_CONSTANT; + src.file = PROGRAM_CONSTANT; switch (ir->type->base_type) { case GLSL_TYPE_FLOAT: values = &ir->value.f[0]; @@ -1908,7 +1835,7 @@ ir_to_mesa_visitor::visit(ir_constant *ir) assert(!"Non-float/uint/int/bool constant"); } - this->result = ir_to_mesa_src_reg(PROGRAM_CONSTANT, -1, ir->type); + this->result = src_reg(PROGRAM_CONSTANT, -1, ir->type); this->result.index = _mesa_add_unnamed_constant(this->prog->Parameters, values, ir->type->vector_elements, @@ -1950,7 +1877,7 @@ ir_to_mesa_visitor::get_function_signature(ir_function_signature *sig) if (!sig->return_type->is_void()) { entry->return_reg = get_temp(sig->return_type); } else { - entry->return_reg = ir_to_mesa_undef; + entry->return_reg = undef_src; } this->function_signatures.push_tail(entry); @@ -1977,9 +1904,9 @@ ir_to_mesa_visitor::visit(ir_call *ir) assert(storage); param_rval->accept(this); - ir_to_mesa_src_reg r = this->result; + src_reg r = this->result; - ir_to_mesa_dst_reg l; + dst_reg l; l.file = storage->file; l.index = storage->index; l.reladdr = NULL; @@ -1987,7 +1914,7 @@ ir_to_mesa_visitor::visit(ir_call *ir) l.cond_mask = COND_TR; for (i = 0; i < type_size(param->type); i++) { - ir_to_mesa_emit_op1(ir, OPCODE_MOV, l, r); + emit(ir, OPCODE_MOV, l, r); l.index++; r.index++; } @@ -1998,8 +1925,7 @@ ir_to_mesa_visitor::visit(ir_call *ir) assert(!sig_iter.has_next()); /* Emit call instruction */ - call_inst = ir_to_mesa_emit_op1(ir, OPCODE_CAL, - ir_to_mesa_undef_dst, ir_to_mesa_undef); + call_inst = emit(ir, OPCODE_CAL); call_inst->function = entry; /* Process out parameters. */ @@ -2013,7 +1939,7 @@ ir_to_mesa_visitor::visit(ir_call *ir) variable_storage *storage = find_variable_storage(param); assert(storage); - ir_to_mesa_src_reg r; + src_reg r; r.file = storage->file; r.index = storage->index; r.reladdr = NULL; @@ -2021,10 +1947,10 @@ ir_to_mesa_visitor::visit(ir_call *ir) r.negate = 0; param_rval->accept(this); - ir_to_mesa_dst_reg l = ir_to_mesa_dst_reg_from_src(this->result); + dst_reg l = dst_reg(this->result); for (i = 0; i < type_size(param->type); i++) { - ir_to_mesa_emit_op1(ir, OPCODE_MOV, l, r); + emit(ir, OPCODE_MOV, l, r); l.index++; r.index++; } @@ -2041,8 +1967,8 @@ ir_to_mesa_visitor::visit(ir_call *ir) void ir_to_mesa_visitor::visit(ir_texture *ir) { - ir_to_mesa_src_reg result_src, coord, lod_info, projector; - ir_to_mesa_dst_reg result_dst, coord_dst; + src_reg result_src, coord, lod_info, projector; + dst_reg result_dst, coord_dst; ir_to_mesa_instruction *inst = NULL; prog_opcode opcode = OPCODE_NOP; @@ -2054,9 +1980,8 @@ ir_to_mesa_visitor::visit(ir_texture *ir) * handle cleaning up our mess in that case. */ coord = get_temp(glsl_type::vec4_type); - coord_dst = ir_to_mesa_dst_reg_from_src(coord); - ir_to_mesa_emit_op1(ir, OPCODE_MOV, coord_dst, - this->result); + coord_dst = dst_reg(coord); + emit(ir, OPCODE_MOV, coord_dst, this->result); if (ir->projector) { ir->projector->accept(this); @@ -2067,7 +1992,7 @@ ir_to_mesa_visitor::visit(ir_texture *ir) * the actual storage for the result here, instead. */ result_src = get_temp(glsl_type::vec4_type); - result_dst = ir_to_mesa_dst_reg_from_src(result_src); + result_dst = dst_reg(result_src); switch (ir->op) { case ir_tex: @@ -2093,11 +2018,11 @@ ir_to_mesa_visitor::visit(ir_texture *ir) if (opcode == OPCODE_TEX) { /* Slot the projector in as the last component of the coord. */ coord_dst.writemask = WRITEMASK_W; - ir_to_mesa_emit_op1(ir, OPCODE_MOV, coord_dst, projector); + emit(ir, OPCODE_MOV, coord_dst, projector); coord_dst.writemask = WRITEMASK_XYZW; opcode = OPCODE_TXP; } else { - ir_to_mesa_src_reg coord_w = coord; + src_reg coord_w = coord; coord_w.swizzle = SWIZZLE_WWWW; /* For the other TEX opcodes there's no projective version @@ -2105,34 +2030,58 @@ ir_to_mesa_visitor::visit(ir_texture *ir) * projective divide now. */ coord_dst.writemask = WRITEMASK_W; - ir_to_mesa_emit_op1(ir, OPCODE_RCP, coord_dst, projector); + emit(ir, OPCODE_RCP, coord_dst, projector); + + /* In the case where we have to project the coordinates "by hand," + * the shadow comparitor value must also be projected. + */ + src_reg tmp_src = coord; + if (ir->shadow_comparitor) { + /* Slot the shadow value in as the second to last component of the + * coord. + */ + ir->shadow_comparitor->accept(this); + + tmp_src = get_temp(glsl_type::vec4_type); + dst_reg tmp_dst = dst_reg(tmp_src); + + tmp_dst.writemask = WRITEMASK_Z; + emit(ir, OPCODE_MOV, tmp_dst, this->result); + + tmp_dst.writemask = WRITEMASK_XY; + emit(ir, OPCODE_MOV, tmp_dst, coord); + } coord_dst.writemask = WRITEMASK_XYZ; - ir_to_mesa_emit_op2(ir, OPCODE_MUL, coord_dst, coord, coord_w); + emit(ir, OPCODE_MUL, coord_dst, tmp_src, coord_w); coord_dst.writemask = WRITEMASK_XYZW; coord.swizzle = SWIZZLE_XYZW; } } - if (ir->shadow_comparitor) { + /* If projection is done and the opcode is not OPCODE_TXP, then the shadow + * comparitor was put in the correct place (and projected) by the code, + * above, that handles by-hand projection. + */ + if (ir->shadow_comparitor && (!ir->projector || opcode == OPCODE_TXP)) { /* Slot the shadow value in as the second to last component of the * coord. */ ir->shadow_comparitor->accept(this); coord_dst.writemask = WRITEMASK_Z; - ir_to_mesa_emit_op1(ir, OPCODE_MOV, coord_dst, this->result); + emit(ir, OPCODE_MOV, coord_dst, this->result); coord_dst.writemask = WRITEMASK_XYZW; } if (opcode == OPCODE_TXL || opcode == OPCODE_TXB) { /* Mesa IR stores lod or lod bias in the last channel of the coords. */ coord_dst.writemask = WRITEMASK_W; - ir_to_mesa_emit_op1(ir, OPCODE_MOV, coord_dst, lod_info); + emit(ir, OPCODE_MOV, coord_dst, lod_info); coord_dst.writemask = WRITEMASK_XYZW; } - inst = ir_to_mesa_emit_op1(ir, opcode, result_dst, coord); + inst = emit(ir, opcode, result_dst, coord); if (ir->shadow_comparitor) inst->tex_shadow = GL_TRUE; @@ -2175,24 +2124,24 @@ void ir_to_mesa_visitor::visit(ir_return *ir) { if (ir->get_value()) { - ir_to_mesa_dst_reg l; + dst_reg l; int i; assert(current_function); ir->get_value()->accept(this); - ir_to_mesa_src_reg r = this->result; + src_reg r = this->result; - l = ir_to_mesa_dst_reg_from_src(current_function->return_reg); + l = dst_reg(current_function->return_reg); for (i = 0; i < type_size(current_function->sig->return_type); i++) { - ir_to_mesa_emit_op1(ir, OPCODE_MOV, l, r); + emit(ir, OPCODE_MOV, l, r); l.index++; r.index++; } } - ir_to_mesa_emit_op0(ir, OPCODE_RET); + emit(ir, OPCODE_RET); } void @@ -2203,9 +2152,9 @@ ir_to_mesa_visitor::visit(ir_discard *ir) if (ir->condition) { ir->condition->accept(this); this->result.negate = ~this->result.negate; - ir_to_mesa_emit_op1(ir, OPCODE_KIL, ir_to_mesa_undef_dst, this->result); + emit(ir, OPCODE_KIL, undef_dst, this->result); } else { - ir_to_mesa_emit_op0(ir, OPCODE_KIL_NV); + emit(ir, OPCODE_KIL_NV); } fp->UsesKill = GL_TRUE; @@ -2230,19 +2179,15 @@ ir_to_mesa_visitor::visit(ir_if *ir) * have something to set cond_update on. */ if (cond_inst == prev_inst) { - ir_to_mesa_src_reg temp = get_temp(glsl_type::bool_type); - cond_inst = ir_to_mesa_emit_op1(ir->condition, OPCODE_MOV, - ir_to_mesa_dst_reg_from_src(temp), - result); + src_reg temp = get_temp(glsl_type::bool_type); + cond_inst = emit(ir->condition, OPCODE_MOV, dst_reg(temp), result); } cond_inst->cond_update = GL_TRUE; - if_inst = ir_to_mesa_emit_op0(ir->condition, OPCODE_IF); - if_inst->dst_reg.cond_mask = COND_NE; + if_inst = emit(ir->condition, OPCODE_IF); + if_inst->dst.cond_mask = COND_NE; } else { - if_inst = ir_to_mesa_emit_op1(ir->condition, - OPCODE_IF, ir_to_mesa_undef_dst, - this->result); + if_inst = emit(ir->condition, OPCODE_IF, undef_dst, this->result); } this->instructions.push_tail(if_inst); @@ -2250,12 +2195,11 @@ ir_to_mesa_visitor::visit(ir_if *ir) visit_exec_list(&ir->then_instructions, this); if (!ir->else_instructions.is_empty()) { - else_inst = ir_to_mesa_emit_op0(ir->condition, OPCODE_ELSE); + else_inst = emit(ir->condition, OPCODE_ELSE); visit_exec_list(&ir->else_instructions, this); } - if_inst = ir_to_mesa_emit_op1(ir->condition, OPCODE_ENDIF, - ir_to_mesa_undef_dst, ir_to_mesa_undef); + if_inst = emit(ir->condition, OPCODE_ENDIF); } ir_to_mesa_visitor::ir_to_mesa_visitor() @@ -2273,7 +2217,7 @@ ir_to_mesa_visitor::~ir_to_mesa_visitor() } static struct prog_src_register -mesa_src_reg_from_ir_src_reg(ir_to_mesa_src_reg reg) +mesa_src_reg_from_ir_src_reg(src_reg reg) { struct prog_src_register mesa_reg; @@ -2730,17 +2674,17 @@ ir_to_mesa_visitor::copy_propagate(void) foreach_iter(exec_list_iterator, iter, this->instructions) { ir_to_mesa_instruction *inst = (ir_to_mesa_instruction *)iter.get(); - assert(inst->dst_reg.file != PROGRAM_TEMPORARY - || inst->dst_reg.index < this->next_temp); + assert(inst->dst.file != PROGRAM_TEMPORARY + || inst->dst.index < this->next_temp); /* First, do any copy propagation possible into the src regs. */ for (int r = 0; r < 3; r++) { ir_to_mesa_instruction *first = NULL; bool good = true; - int acp_base = inst->src_reg[r].index * 4; + int acp_base = inst->src[r].index * 4; - if (inst->src_reg[r].file != PROGRAM_TEMPORARY || - inst->src_reg[r].reladdr) + if (inst->src[r].file != PROGRAM_TEMPORARY || + inst->src[r].reladdr) continue; /* See if we can find entries in the ACP consisting of MOVs @@ -2748,7 +2692,7 @@ ir_to_mesa_visitor::copy_propagate(void) * of this src register reference. */ for (int i = 0; i < 4; i++) { - int src_chan = GET_SWZ(inst->src_reg[r].swizzle, i); + int src_chan = GET_SWZ(inst->src[r].swizzle, i); ir_to_mesa_instruction *copy_chan = acp[acp_base + src_chan]; if (!copy_chan) { @@ -2761,8 +2705,8 @@ ir_to_mesa_visitor::copy_propagate(void) if (!first) { first = copy_chan; } else { - if (first->src_reg[0].file != copy_chan->src_reg[0].file || - first->src_reg[0].index != copy_chan->src_reg[0].index) { + if (first->src[0].file != copy_chan->src[0].file || + first->src[0].index != copy_chan->src[0].index) { good = false; break; } @@ -2773,17 +2717,17 @@ ir_to_mesa_visitor::copy_propagate(void) /* We've now validated that we can copy-propagate to * replace this src register reference. Do it. */ - inst->src_reg[r].file = first->src_reg[0].file; - inst->src_reg[r].index = first->src_reg[0].index; + inst->src[r].file = first->src[0].file; + inst->src[r].index = first->src[0].index; int swizzle = 0; for (int i = 0; i < 4; i++) { - int src_chan = GET_SWZ(inst->src_reg[r].swizzle, i); + int src_chan = GET_SWZ(inst->src[r].swizzle, i); ir_to_mesa_instruction *copy_inst = acp[acp_base + src_chan]; - swizzle |= (GET_SWZ(copy_inst->src_reg[0].swizzle, src_chan) << + swizzle |= (GET_SWZ(copy_inst->src[0].swizzle, src_chan) << (3 * i)); } - inst->src_reg[r].swizzle = swizzle; + inst->src[r].swizzle = swizzle; } } @@ -2820,13 +2764,13 @@ ir_to_mesa_visitor::copy_propagate(void) /* Continuing the block, clear any written channels from * the ACP. */ - if (inst->dst_reg.file == PROGRAM_TEMPORARY && inst->dst_reg.reladdr) { + if (inst->dst.file == PROGRAM_TEMPORARY && inst->dst.reladdr) { /* Any temporary might be written, so no copy propagation * across this instruction. */ memset(acp, 0, sizeof(*acp) * this->next_temp * 4); - } else if (inst->dst_reg.file == PROGRAM_OUTPUT && - inst->dst_reg.reladdr) { + } else if (inst->dst.file == PROGRAM_OUTPUT && + inst->dst.reladdr) { /* Any output might be written, so no copy propagation * from outputs across this instruction. */ @@ -2835,17 +2779,17 @@ ir_to_mesa_visitor::copy_propagate(void) if (!acp[4 * r + c]) continue; - if (acp[4 * r + c]->src_reg[0].file == PROGRAM_OUTPUT) + if (acp[4 * r + c]->src[0].file == PROGRAM_OUTPUT) acp[4 * r + c] = NULL; } } - } else if (inst->dst_reg.file == PROGRAM_TEMPORARY || - inst->dst_reg.file == PROGRAM_OUTPUT) { + } else if (inst->dst.file == PROGRAM_TEMPORARY || + inst->dst.file == PROGRAM_OUTPUT) { /* Clear where it's used as dst. */ - if (inst->dst_reg.file == PROGRAM_TEMPORARY) { + if (inst->dst.file == PROGRAM_TEMPORARY) { for (int c = 0; c < 4; c++) { - if (inst->dst_reg.writemask & (1 << c)) { - acp[4 * inst->dst_reg.index + c] = NULL; + if (inst->dst.writemask & (1 << c)) { + acp[4 * inst->dst.index + c] = NULL; } } } @@ -2856,11 +2800,11 @@ ir_to_mesa_visitor::copy_propagate(void) if (!acp[4 * r + c]) continue; - int src_chan = GET_SWZ(acp[4 * r + c]->src_reg[0].swizzle, c); + int src_chan = GET_SWZ(acp[4 * r + c]->src[0].swizzle, c); - if (acp[4 * r + c]->src_reg[0].file == inst->dst_reg.file && - acp[4 * r + c]->src_reg[0].index == inst->dst_reg.index && - inst->dst_reg.writemask & (1 << src_chan)) + if (acp[4 * r + c]->src[0].file == inst->dst.file && + acp[4 * r + c]->src[0].index == inst->dst.index && + inst->dst.writemask & (1 << src_chan)) { acp[4 * r + c] = NULL; } @@ -2872,15 +2816,15 @@ ir_to_mesa_visitor::copy_propagate(void) /* If this is a copy, add it to the ACP. */ if (inst->op == OPCODE_MOV && - inst->dst_reg.file == PROGRAM_TEMPORARY && - !inst->dst_reg.reladdr && + inst->dst.file == PROGRAM_TEMPORARY && + !inst->dst.reladdr && !inst->saturate && - !inst->src_reg[0].reladdr && - !inst->src_reg[0].negate) { + !inst->src[0].reladdr && + !inst->src[0].negate) { for (int i = 0; i < 4; i++) { - if (inst->dst_reg.writemask & (1 << i)) { - acp[4 * inst->dst_reg.index + i] = inst; - acp_level[4 * inst->dst_reg.index + i] = level; + if (inst->dst.writemask & (1 << i)) { + acp[4 * inst->dst.index + i] = inst; + acp_level[4 * inst->dst.index + i] = level; } } } @@ -2945,7 +2889,7 @@ get_mesa_program(struct gl_context *ctx, /* Emit Mesa IR for main(). */ visit_exec_list(shader->ir, &v); - v.ir_to_mesa_emit_op0(NULL, OPCODE_END); + v.emit(NULL, OPCODE_END); /* Now emit bodies for any functions that were used. */ do { @@ -2957,7 +2901,7 @@ get_mesa_program(struct gl_context *ctx, if (!entry->bgn_inst) { v.current_function = entry; - entry->bgn_inst = v.ir_to_mesa_emit_op0(NULL, OPCODE_BGNSUB); + entry->bgn_inst = v.emit(NULL, OPCODE_BGNSUB); entry->bgn_inst->function = entry; visit_exec_list(&entry->sig->body, &v); @@ -2965,10 +2909,10 @@ get_mesa_program(struct gl_context *ctx, ir_to_mesa_instruction *last; last = (ir_to_mesa_instruction *)v.instructions.get_tail(); if (last->op != OPCODE_RET) - v.ir_to_mesa_emit_op0(NULL, OPCODE_RET); + v.emit(NULL, OPCODE_RET); ir_to_mesa_instruction *end; - end = v.ir_to_mesa_emit_op0(NULL, OPCODE_ENDSUB); + end = v.emit(NULL, OPCODE_ENDSUB); end->function = entry; progress = GL_TRUE; @@ -3002,14 +2946,14 @@ get_mesa_program(struct gl_context *ctx, mesa_inst->CondUpdate = inst->cond_update; if (inst->saturate) mesa_inst->SaturateMode = SATURATE_ZERO_ONE; - mesa_inst->DstReg.File = inst->dst_reg.file; - mesa_inst->DstReg.Index = inst->dst_reg.index; - mesa_inst->DstReg.CondMask = inst->dst_reg.cond_mask; - mesa_inst->DstReg.WriteMask = inst->dst_reg.writemask; - mesa_inst->DstReg.RelAddr = inst->dst_reg.reladdr != NULL; - mesa_inst->SrcReg[0] = mesa_src_reg_from_ir_src_reg(inst->src_reg[0]); - mesa_inst->SrcReg[1] = mesa_src_reg_from_ir_src_reg(inst->src_reg[1]); - mesa_inst->SrcReg[2] = mesa_src_reg_from_ir_src_reg(inst->src_reg[2]); + mesa_inst->DstReg.File = inst->dst.file; + mesa_inst->DstReg.Index = inst->dst.index; + mesa_inst->DstReg.CondMask = inst->dst.cond_mask; + mesa_inst->DstReg.WriteMask = inst->dst.writemask; + mesa_inst->DstReg.RelAddr = inst->dst.reladdr != NULL; + mesa_inst->SrcReg[0] = mesa_src_reg_from_ir_src_reg(inst->src[0]); + mesa_inst->SrcReg[1] = mesa_src_reg_from_ir_src_reg(inst->src[1]); + mesa_inst->SrcReg[2] = mesa_src_reg_from_ir_src_reg(inst->src[2]); mesa_inst->TexSrcUnit = inst->sampler; mesa_inst->TexSrcTarget = inst->tex_target; mesa_inst->TexShadow = inst->tex_shadow; diff --git a/src/mesa/program/prog_optimize.c b/src/mesa/program/prog_optimize.c index 96971f2eda4..11debc485eb 100644 --- a/src/mesa/program/prog_optimize.c +++ b/src/mesa/program/prog_optimize.c @@ -74,6 +74,17 @@ get_src_arg_mask(const struct prog_instruction *inst, case OPCODE_MAD: case OPCODE_MUL: case OPCODE_SUB: + case OPCODE_CMP: + case OPCODE_FLR: + case OPCODE_FRC: + case OPCODE_LRP: + case OPCODE_SEQ: + case OPCODE_SGE: + case OPCODE_SGT: + case OPCODE_SLE: + case OPCODE_SLT: + case OPCODE_SNE: + case OPCODE_SSG: channel_mask = inst->DstReg.WriteMask & dst_mask; break; case OPCODE_RCP: @@ -937,24 +948,35 @@ update_interval(GLint intBegin[], GLint intEnd[], GLuint index, GLuint ic) { int i; + GLuint begin = ic; + GLuint end = ic; /* If the register is used in a loop, extend its lifetime through the end * of the outermost loop that doesn't contain its definition. */ for (i = 0; i < loopStackDepth; i++) { if (intBegin[index] < loopStack[i].Start) { - ic = loopStack[i].End; + end = loopStack[i].End; break; } } + /* Variables that are live at the end of a loop will also be live at the + * beginning, so an instruction inside of a loop should have its live + * interval begin at the start of the outermost loop. + */ + if (loopStackDepth > 0 && ic > loopStack[0].Start && ic < loopStack[0].End) { + begin = loopStack[0].Start; + } + ASSERT(index < REG_ALLOCATE_MAX_PROGRAM_TEMPS); if (intBegin[index] == -1) { ASSERT(intEnd[index] == -1); - intBegin[index] = intEnd[index] = ic; + intBegin[index] = begin; + intEnd[index] = end; } else { - intEnd[index] = ic; + intEnd[index] = end; } } @@ -1224,6 +1246,83 @@ print_it(struct gl_context *ctx, struct gl_program *program, const char *txt) { } #endif +/** + * This pass replaces CMP T0, T1 T2 T0 with MOV T0, T2 when the CMP + * instruction is the first instruction to write to register T0. The are + * several lowering passes done in GLSL IR (e.g. branches and + * relative addressing) that create a large number of conditional assignments + * that ir_to_mesa converts to CMP instructions like the one mentioned above. + * + * Here is why this conversion is safe: + * CMP T0, T1 T2 T0 can be expanded to: + * if (T1 < 0.0) + * MOV T0, T2; + * else + * MOV T0, T0; + * + * If (T1 < 0.0) evaluates to true then our replacement MOV T0, T2 is the same + * as the original program. If (T1 < 0.0) evaluates to false, executing + * MOV T0, T0 will store a garbage value in T0 since T0 is uninitialized. + * Therefore, it doesn't matter that we are replacing MOV T0, T0 with MOV T0, T2 + * because any instruction that was going to read from T0 after this was going + * to read a garbage value anyway. + */ +static void +_mesa_simplify_cmp(struct gl_program * program) +{ + GLuint tempWrites[REG_ALLOCATE_MAX_PROGRAM_TEMPS]; + GLuint outputWrites[MAX_PROGRAM_OUTPUTS]; + GLuint i; + + if (dbg) { + printf("Optimize: Begin reads without writes\n"); + _mesa_print_program(program); + } + + for (i = 0; i < REG_ALLOCATE_MAX_PROGRAM_TEMPS; i++) { + tempWrites[i] = 0; + } + + for (i = 0; i < MAX_PROGRAM_OUTPUTS; i++) { + outputWrites[i] = 0; + } + + for (i = 0; i < program->NumInstructions; i++) { + struct prog_instruction *inst = program->Instructions + i; + GLuint prevWriteMask; + + /* Give up if we encounter relative addressing or flow control. */ + if (_mesa_is_flow_control_opcode(inst->Opcode) || inst->DstReg.RelAddr) { + return; + } + + if (inst->DstReg.File == PROGRAM_OUTPUT) { + assert(inst->DstReg.Index < MAX_PROGRAM_OUTPUTS); + prevWriteMask = outputWrites[inst->DstReg.Index]; + outputWrites[inst->DstReg.Index] |= inst->DstReg.WriteMask; + } else if (inst->DstReg.File == PROGRAM_TEMPORARY) { + assert(inst->DstReg.Index < REG_ALLOCATE_MAX_PROGRAM_TEMPS); + prevWriteMask = tempWrites[inst->DstReg.Index]; + tempWrites[inst->DstReg.Index] |= inst->DstReg.WriteMask; + } + + /* For a CMP to be considered a conditional write, the destination + * register and source register two must be the same. */ + if (inst->Opcode == OPCODE_CMP + && !(inst->DstReg.WriteMask & prevWriteMask) + && inst->SrcReg[2].File == inst->DstReg.File + && inst->SrcReg[2].Index == inst->DstReg.Index + && inst->DstReg.WriteMask == get_src_arg_mask(inst, 2, NO_MASK)) { + + inst->Opcode = OPCODE_MOV; + inst->SrcReg[0] = inst->SrcReg[1]; + } + } + if (dbg) { + printf("Optimize: End reads without writes\n"); + _mesa_print_program(program); + } +} /** * Apply optimizations to the given program to eliminate unnecessary @@ -1234,6 +1333,7 @@ _mesa_optimize_program(struct gl_context *ctx, struct gl_program *program) { GLboolean any_change; + _mesa_simplify_cmp(program); /* Stop when no modifications were output */ do { any_change = GL_FALSE; diff --git a/src/mesa/program/prog_statevars.c b/src/mesa/program/prog_statevars.c index c310acb01d4..1fd26f44d56 100644 --- a/src/mesa/program/prog_statevars.c +++ b/src/mesa/program/prog_statevars.c @@ -237,11 +237,17 @@ _mesa_fetch_state(struct gl_context *ctx, const gl_state_index state[], { /* state[1] is the texture unit */ const GLuint unit = (GLuint) state[1]; - COPY_4V(value, ctx->Texture.Unit[unit].EnvColor); + if(ctx->Color._ClampFragmentColor) + COPY_4V(value, ctx->Texture.Unit[unit].EnvColor); + else + COPY_4V(value, ctx->Texture.Unit[unit].EnvColorUnclamped); } return; case STATE_FOG_COLOR: - COPY_4V(value, ctx->Fog.Color); + if(ctx->Color._ClampFragmentColor) + COPY_4V(value, ctx->Fog.Color); + else + COPY_4V(value, ctx->Fog.ColorUnclamped); return; case STATE_FOG_PARAMS: value[0] = ctx->Fog.Density; @@ -399,6 +405,22 @@ _mesa_fetch_state(struct gl_context *ctx, const gl_state_index state[], } return; + case STATE_CURRENT_ATTRIB_MAYBE_VP_CLAMPED: + { + const GLuint idx = (GLuint) state[2]; + if(ctx->Light._ClampVertexColor && + (idx == VERT_ATTRIB_COLOR0 || + idx == VERT_ATTRIB_COLOR1)) { + value[0] = CLAMP(ctx->Current.Attrib[idx][0], 0.0f, 1.0f); + value[1] = CLAMP(ctx->Current.Attrib[idx][1], 0.0f, 1.0f); + value[2] = CLAMP(ctx->Current.Attrib[idx][2], 0.0f, 1.0f); + value[3] = CLAMP(ctx->Current.Attrib[idx][3], 0.0f, 1.0f); + } + else + COPY_4V(value, ctx->Current.Attrib[idx]); + } + return; + case STATE_NORMAL_SCALE: ASSIGN_4V(value, ctx->_ModelViewInvScale, @@ -560,7 +582,7 @@ _mesa_fetch_state(struct gl_context *ctx, const gl_state_index state[], value[0] = value[1] = value[2] = - value[3] = texObj->CompareFailValue; + value[3] = texObj->Sampler.CompareFailValue; } } return; @@ -649,10 +671,12 @@ _mesa_program_state_flags(const gl_state_index state[STATE_LENGTH]) return _NEW_LIGHT; case STATE_TEXGEN: - case STATE_TEXENV_COLOR: return _NEW_TEXTURE; + case STATE_TEXENV_COLOR: + return _NEW_TEXTURE | _NEW_BUFFERS | _NEW_FRAG_CLAMP; case STATE_FOG_COLOR: + return _NEW_FOG | _NEW_BUFFERS | _NEW_FRAG_CLAMP; case STATE_FOG_PARAMS: return _NEW_FOG; @@ -688,6 +712,8 @@ _mesa_program_state_flags(const gl_state_index state[STATE_LENGTH]) switch (state[1]) { case STATE_CURRENT_ATTRIB: return _NEW_CURRENT_ATTRIB; + case STATE_CURRENT_ATTRIB_MAYBE_VP_CLAMPED: + return _NEW_CURRENT_ATTRIB | _NEW_LIGHT | _NEW_BUFFERS; case STATE_NORMAL_SCALE: return _NEW_MODELVIEW; diff --git a/src/mesa/program/prog_statevars.h b/src/mesa/program/prog_statevars.h index f2407af9c87..9fe8d81b3dd 100644 --- a/src/mesa/program/prog_statevars.h +++ b/src/mesa/program/prog_statevars.h @@ -106,6 +106,7 @@ typedef enum gl_state_index_ { STATE_INTERNAL, /* Mesa additions */ STATE_CURRENT_ATTRIB, /* ctx->Current vertex attrib value */ + STATE_CURRENT_ATTRIB_MAYBE_VP_CLAMPED, /* ctx->Current vertex attrib value after passthrough vertex processing */ STATE_NORMAL_SCALE, STATE_TEXRECT_SCALE, STATE_FOG_PARAMS_OPTIMIZED, /* for faster fog calc */ diff --git a/src/mesa/program/program.c b/src/mesa/program/program.c index 79034ab26f2..78efca9f122 100644 --- a/src/mesa/program/program.c +++ b/src/mesa/program/program.c @@ -75,10 +75,10 @@ _mesa_init_program(struct gl_context *ctx) ASSERT(ctx->Const.FragmentProgram.MaxAddressOffset <= (1 << INST_INDEX_BITS)); /* If this fails, increase prog_instruction::TexSrcUnit size */ - ASSERT(MAX_TEXTURE_UNITS < (1 << 5)); + ASSERT(MAX_TEXTURE_UNITS <= (1 << 5)); /* If this fails, increase prog_instruction::TexSrcTarget size */ - ASSERT(NUM_TEXTURE_TARGETS < (1 << 3)); + ASSERT(NUM_TEXTURE_TARGETS <= (1 << 3)); ctx->Program.ErrorPos = -1; ctx->Program.ErrorString = _mesa_strdup(""); @@ -557,7 +557,6 @@ _mesa_clone_program(struct gl_context *ctx, const struct gl_program *prog) const struct gl_fragment_program *fp = (const struct gl_fragment_program *) prog; struct gl_fragment_program *fpc = (struct gl_fragment_program *) clone; - fpc->FogOption = fp->FogOption; fpc->UsesKill = fp->UsesKill; fpc->OriginUpperLeft = fp->OriginUpperLeft; fpc->PixelCenterInteger = fp->PixelCenterInteger; diff --git a/src/mesa/program/program_parse.y b/src/mesa/program/program_parse.y index 19aa8ccdb53..b35bc5a7cae 100644 --- a/src/mesa/program/program_parse.y +++ b/src/mesa/program/program_parse.y @@ -2064,6 +2064,34 @@ optResultFaceType: ? VERT_RESULT_COL0 : FRAG_RESULT_COLOR; } + | '[' INTEGER ']' + { + if (state->mode == ARB_vertex) { + yyerror(& @1, state, "invalid program result name"); + YYERROR; + } else { + if (!state->option.DrawBuffers) { + /* From the ARB_draw_buffers spec (same text exists + * for ATI_draw_buffers): + * + * If this option is not specified, a fragment + * program that attempts to bind + * "result.color[n]" will fail to load, and only + * "result.color" will be allowed. + */ + yyerror(& @1, state, + "result.color[] used without " + "`OPTION ARB_draw_buffers' or " + "`OPTION ATI_draw_buffers'"); + YYERROR; + } else if ($2 >= state->MaxDrawBuffers) { + yyerror(& @1, state, + "result.color[] exceeds MAX_DRAW_BUFFERS_ARB"); + YYERROR; + } + $$ = FRAG_RESULT_DATA0 + $2; + } + } | FRONT { if (state->mode == ARB_vertex) { @@ -2681,6 +2709,7 @@ _mesa_parse_arb_program(struct gl_context *ctx, GLenum target, const GLubyte *st state->MaxClipPlanes = ctx->Const.MaxClipPlanes; state->MaxLights = ctx->Const.MaxLights; state->MaxProgramMatrices = ctx->Const.MaxProgramMatrices; + state->MaxDrawBuffers = ctx->Const.MaxDrawBuffers; state->state_param_enum = (target == GL_VERTEX_PROGRAM_ARB) ? STATE_VERTEX_PROGRAM : STATE_FRAGMENT_PROGRAM; diff --git a/src/mesa/program/program_parse_extra.c b/src/mesa/program/program_parse_extra.c index ae98b782b70..4d928483e16 100644 --- a/src/mesa/program/program_parse_extra.c +++ b/src/mesa/program/program_parse_extra.c @@ -229,6 +229,16 @@ _mesa_ARBfp_parse_option(struct asm_parser_state *state, const char *option) } } } + } else if (strncmp(option, "ATI_", 4) == 0) { + option += 4; + + if (strcmp(option, "draw_buffers") == 0) { + /* Don't need to check extension availability because all Mesa-based + * drivers support GL_ATI_draw_buffers. + */ + state->option.DrawBuffers = 1; + return 1; + } } else if (strncmp(option, "NV_fragment_program", 19) == 0) { option += 19; diff --git a/src/mesa/program/program_parser.h b/src/mesa/program/program_parser.h index d689eef7958..8e5aaee95e5 100644 --- a/src/mesa/program/program_parser.h +++ b/src/mesa/program/program_parser.h @@ -173,6 +173,7 @@ struct asm_parser_state { unsigned MaxClipPlanes; unsigned MaxLights; unsigned MaxProgramMatrices; + unsigned MaxDrawBuffers; /*@}*/ /** diff --git a/src/mesa/program/programopt.c b/src/mesa/program/programopt.c index f92881f8337..a239da2c609 100644 --- a/src/mesa/program/programopt.c +++ b/src/mesa/program/programopt.c @@ -230,15 +230,25 @@ _mesa_insert_mvp_code(struct gl_context *ctx, struct gl_vertex_program *vprog) /** - * Append extra instructions onto the given fragment program to implement - * the fog mode specified by fprog->FogOption. - * The fragment.fogcoord input is used to compute the fog blend factor. + * Append instructions to implement fog * - * XXX with a little work, this function could be adapted to add fog code + * The \c fragment.fogcoord input is used to compute the fog blend factor. + * + * \param ctx The GL context + * \param fprog Fragment program that fog instructions will be appended to. + * \param fog_mode Fog mode. One of \c GL_EXP, \c GL_EXP2, or \c GL_LINEAR. + * \param saturate True if writes to color outputs should be clamped to [0, 1] + * + * \note + * This function sets \c FRAG_BIT_FOGC in \c fprog->Base.InputsRead. + * + * \todo With a little work, this function could be adapted to add fog code * to vertex programs too. */ void -_mesa_append_fog_code(struct gl_context *ctx, struct gl_fragment_program *fprog) +_mesa_append_fog_code(struct gl_context *ctx, + struct gl_fragment_program *fprog, GLenum fog_mode, + GLboolean saturate) { static const gl_state_index fogPStateOpt[STATE_LENGTH] = { STATE_INTERNAL, STATE_FOG_PARAMS_OPTIMIZED, 0, 0, 0 }; @@ -251,9 +261,9 @@ _mesa_append_fog_code(struct gl_context *ctx, struct gl_fragment_program *fprog) GLint fogPRefOpt, fogColorRef; /* state references */ GLuint colorTemp, fogFactorTemp; /* temporary registerss */ - if (fprog->FogOption == GL_NONE) { + if (fog_mode == GL_NONE) { _mesa_problem(ctx, "_mesa_append_fog_code() called for fragment program" - " with FogOption == GL_NONE"); + " with fog_mode == GL_NONE"); return; } @@ -290,7 +300,7 @@ _mesa_append_fog_code(struct gl_context *ctx, struct gl_fragment_program *fprog) /* change the instruction to write to colorTemp w/ clamping */ inst->DstReg.File = PROGRAM_TEMPORARY; inst->DstReg.Index = colorTemp; - inst->SaturateMode = SATURATE_ZERO_ONE; + inst->SaturateMode = saturate; /* don't break (may be several writes to result.color) */ } inst++; @@ -300,7 +310,8 @@ _mesa_append_fog_code(struct gl_context *ctx, struct gl_fragment_program *fprog) _mesa_init_instructions(inst, 5); /* emit instructions to compute fog blending factor */ - if (fprog->FogOption == GL_LINEAR) { + /* this is always clamped to [0, 1] regardless of fragment clamping */ + if (fog_mode == GL_LINEAR) { /* MAD fogFactorTemp.x, fragment.fogcoord.x, fogPRefOpt.x, fogPRefOpt.y; */ inst->Opcode = OPCODE_MAD; inst->DstReg.File = PROGRAM_TEMPORARY; @@ -319,7 +330,7 @@ _mesa_append_fog_code(struct gl_context *ctx, struct gl_fragment_program *fprog) inst++; } else { - ASSERT(fprog->FogOption == GL_EXP || fprog->FogOption == GL_EXP2); + ASSERT(fog_mode == GL_EXP || fog_mode == GL_EXP2); /* fogPRefOpt.z = d/ln(2), fogPRefOpt.w = d/sqrt(ln(2) */ /* EXP: MUL fogFactorTemp.x, fogPRefOpt.z, fragment.fogcoord.x; */ /* EXP2: MUL fogFactorTemp.x, fogPRefOpt.w, fragment.fogcoord.x; */ @@ -330,12 +341,12 @@ _mesa_append_fog_code(struct gl_context *ctx, struct gl_fragment_program *fprog) inst->SrcReg[0].File = PROGRAM_STATE_VAR; inst->SrcReg[0].Index = fogPRefOpt; inst->SrcReg[0].Swizzle - = (fprog->FogOption == GL_EXP) ? SWIZZLE_ZZZZ : SWIZZLE_WWWW; + = (fog_mode == GL_EXP) ? SWIZZLE_ZZZZ : SWIZZLE_WWWW; inst->SrcReg[1].File = PROGRAM_INPUT; inst->SrcReg[1].Index = FRAG_ATTRIB_FOGC; inst->SrcReg[1].Swizzle = SWIZZLE_XXXX; inst++; - if (fprog->FogOption == GL_EXP2) { + if (fog_mode == GL_EXP2) { /* MUL fogFactorTemp.x, fogFactorTemp.x, fogFactorTemp.x; */ inst->Opcode = OPCODE_MUL; inst->DstReg.File = PROGRAM_TEMPORARY; @@ -396,7 +407,6 @@ _mesa_append_fog_code(struct gl_context *ctx, struct gl_fragment_program *fprog) fprog->Base.Instructions = newInst; fprog->Base.NumInstructions = inst - newInst; fprog->Base.InputsRead |= FRAG_BIT_FOGC; - /* XXX do this? fprog->FogOption = GL_NONE; */ } diff --git a/src/mesa/program/programopt.h b/src/mesa/program/programopt.h index ef6f1bd0794..b9205823c29 100644 --- a/src/mesa/program/programopt.h +++ b/src/mesa/program/programopt.h @@ -32,7 +32,9 @@ extern void _mesa_insert_mvp_code(struct gl_context *ctx, struct gl_vertex_program *vprog); extern void -_mesa_append_fog_code(struct gl_context *ctx, struct gl_fragment_program *fprog); +_mesa_append_fog_code(struct gl_context *ctx, + struct gl_fragment_program *fprog, GLenum fog_mode, + GLboolean saturate); extern void _mesa_count_texture_indirections(struct gl_program *prog); diff --git a/src/mesa/sources.mak b/src/mesa/sources.mak index fcf8ab2e794..9b2cb1a3c14 100644 --- a/src/mesa/sources.mak +++ b/src/mesa/sources.mak @@ -71,6 +71,7 @@ MAIN_SOURCES = \ main/readpix.c \ main/remap.c \ main/renderbuffer.c \ + main/samplerobj.c \ main/scissor.c \ main/shaderapi.c \ main/shaderobj.c \ diff --git a/src/mesa/state_tracker/st_atom_blend.c b/src/mesa/state_tracker/st_atom_blend.c index fb1c7a4efee..d1844e1066f 100644 --- a/src/mesa/state_tracker/st_atom_blend.c +++ b/src/mesa/state_tracker/st_atom_blend.c @@ -286,7 +286,7 @@ update_blend( struct st_context *st ) { struct pipe_blend_color bc; - COPY_4FV(bc.color, st->ctx->Color.BlendColor); + COPY_4FV(bc.color, st->ctx->Color.BlendColorUnclamped); cso_set_blend_color(st->cso_context, &bc); } } diff --git a/src/mesa/state_tracker/st_atom_depth.c b/src/mesa/state_tracker/st_atom_depth.c index aaee432a216..6c51b1ac1a2 100644 --- a/src/mesa/state_tracker/st_atom_depth.c +++ b/src/mesa/state_tracker/st_atom_depth.c @@ -142,7 +142,7 @@ update_depth_stencil_alpha(struct st_context *st) if (ctx->Color.AlphaEnabled) { dsa->alpha.enabled = 1; dsa->alpha.func = st_compare_func_to_pipe(ctx->Color.AlphaFunc); - dsa->alpha.ref_value = ctx->Color.AlphaRef; + dsa->alpha.ref_value = ctx->Color.AlphaRefUnclamped; } cso_set_depth_stencil_alpha(st->cso_context, dsa); diff --git a/src/mesa/state_tracker/st_atom_rasterizer.c b/src/mesa/state_tracker/st_atom_rasterizer.c index 8bccceeec53..250cbb2260c 100644 --- a/src/mesa/state_tracker/st_atom_rasterizer.c +++ b/src/mesa/state_tracker/st_atom_rasterizer.c @@ -112,6 +112,8 @@ static void update_raster_state( struct st_context *st ) raster->light_twoside = 1; } + raster->clamp_vertex_color = ctx->Light._ClampVertexColor; + /* _NEW_POLYGON */ if (ctx->Polygon.CullFlag) { @@ -252,6 +254,9 @@ static void update_raster_state( struct st_context *st ) if (ctx->Scissor.Enabled) raster->scissor = 1; + /* _NEW_FRAG_CLAMP */ + raster->clamp_fragment_color = ctx->Color._ClampFragmentColor; + raster->gl_rasterization_rules = 1; cso_set_rasterizer(st->cso_context, raster); @@ -267,7 +272,8 @@ const struct st_tracked_state st_update_rasterizer = { _NEW_POINT | _NEW_POLYGON | _NEW_PROGRAM | - _NEW_SCISSOR), /* mesa state dependencies*/ + _NEW_SCISSOR | + _NEW_FRAG_CLAMP), /* mesa state dependencies*/ ST_NEW_VERTEX_PROGRAM, /* state tracker dependencies */ }, update_raster_state /* update function */ diff --git a/src/mesa/state_tracker/st_atom_sampler.c b/src/mesa/state_tracker/st_atom_sampler.c index 474cbd5897d..808aa73a083 100644 --- a/src/mesa/state_tracker/st_atom_sampler.c +++ b/src/mesa/state_tracker/st_atom_sampler.c @@ -38,6 +38,7 @@ #include "st_cb_texture.h" #include "st_format.h" #include "st_atom.h" +#include "st_texture.h" #include "pipe/p_context.h" #include "pipe/p_defines.h" @@ -138,6 +139,7 @@ update_samplers(struct st_context *st) if (samplersUsed & (1 << su)) { struct gl_texture_object *texobj; struct gl_texture_image *teximg; + struct gl_sampler_object *msamp; GLuint texUnit; if (fprog->Base.SamplersUsed & (1 << su)) @@ -152,25 +154,27 @@ update_samplers(struct st_context *st) teximg = texobj->Image[0][texobj->BaseLevel]; - sampler->wrap_s = gl_wrap_xlate(texobj->WrapS); - sampler->wrap_t = gl_wrap_xlate(texobj->WrapT); - sampler->wrap_r = gl_wrap_xlate(texobj->WrapR); + msamp = st_get_mesa_sampler(st->ctx, texUnit); - sampler->min_img_filter = gl_filter_to_img_filter(texobj->MinFilter); - sampler->min_mip_filter = gl_filter_to_mip_filter(texobj->MinFilter); - sampler->mag_img_filter = gl_filter_to_img_filter(texobj->MagFilter); + sampler->wrap_s = gl_wrap_xlate(msamp->WrapS); + sampler->wrap_t = gl_wrap_xlate(msamp->WrapT); + sampler->wrap_r = gl_wrap_xlate(msamp->WrapR); + + sampler->min_img_filter = gl_filter_to_img_filter(msamp->MinFilter); + sampler->min_mip_filter = gl_filter_to_mip_filter(msamp->MinFilter); + sampler->mag_img_filter = gl_filter_to_img_filter(msamp->MagFilter); if (texobj->Target != GL_TEXTURE_RECTANGLE_ARB) sampler->normalized_coords = 1; - sampler->lod_bias = st->ctx->Texture.Unit[su].LodBias; - - sampler->min_lod = texobj->BaseLevel + texobj->MinLod; - if (sampler->min_lod < texobj->BaseLevel) - sampler->min_lod = texobj->BaseLevel; + sampler->lod_bias = st->ctx->Texture.Unit[texUnit].LodBias + + msamp->LodBias; - sampler->max_lod = MIN2((GLfloat) texobj->MaxLevel, - (texobj->MaxLod + texobj->BaseLevel)); + sampler->min_lod = CLAMP(msamp->MinLod, + 0.0f, + (GLfloat) texobj->MaxLevel - texobj->BaseLevel); + sampler->max_lod = MIN2((GLfloat) texobj->MaxLevel - texobj->BaseLevel, + msamp->MaxLod); if (sampler->max_lod < sampler->min_lod) { /* The GL spec doesn't seem to specify what to do in this case. * Swap the values. @@ -181,17 +185,18 @@ update_samplers(struct st_context *st) assert(sampler->min_lod <= sampler->max_lod); } - st_translate_color(texobj->BorderColor.f, + st_translate_color(msamp->BorderColor.f, teximg ? teximg->_BaseFormat : GL_RGBA, sampler->border_color); - sampler->max_anisotropy = (texobj->MaxAnisotropy == 1.0 ? 0 : (GLuint)texobj->MaxAnisotropy); + sampler->max_anisotropy = (msamp->MaxAnisotropy == 1.0 ? + 0 : (GLuint) msamp->MaxAnisotropy); /* only care about ARB_shadow, not SGI shadow */ - if (texobj->CompareMode == GL_COMPARE_R_TO_TEXTURE) { + if (msamp->CompareMode == GL_COMPARE_R_TO_TEXTURE) { sampler->compare_mode = PIPE_TEX_COMPARE_R_TO_TEXTURE; sampler->compare_func - = st_compare_func_to_pipe(texobj->CompareFunc); + = st_compare_func_to_pipe(msamp->CompareFunc); } st->state.num_samplers = su + 1; diff --git a/src/mesa/state_tracker/st_atom_texture.c b/src/mesa/state_tracker/st_atom_texture.c index fd03669e660..19ad2e8cc4a 100644 --- a/src/mesa/state_tracker/st_atom_texture.c +++ b/src/mesa/state_tracker/st_atom_texture.c @@ -138,16 +138,18 @@ check_sampler_swizzle(struct pipe_sampler_view *sv, static INLINE struct pipe_sampler_view * st_create_texture_sampler_view_from_stobj(struct pipe_context *pipe, struct st_texture_object *stObj, + const struct gl_sampler_object *samp, enum pipe_format format) { struct pipe_sampler_view templ; GLuint swizzle = apply_depthmode(stObj->pt->format, stObj->base._Swizzle, - stObj->base.DepthMode); + samp->DepthMode); u_sampler_view_default_template(&templ, stObj->pt, format); + templ.u.tex.first_level = stObj->base.BaseLevel; if (swizzle != SWIZZLE_NOOP) { templ.swizzle_r = GET_SWZ(swizzle, 0); @@ -163,6 +165,7 @@ st_create_texture_sampler_view_from_stobj(struct pipe_context *pipe, static INLINE struct pipe_sampler_view * st_get_texture_sampler_view_from_stobj(struct st_texture_object *stObj, struct pipe_context *pipe, + const struct gl_sampler_object *samp, enum pipe_format format) { if (!stObj || !stObj->pt) { @@ -171,7 +174,7 @@ st_get_texture_sampler_view_from_stobj(struct st_texture_object *stObj, if (!stObj->sampler_view) { stObj->sampler_view = - st_create_texture_sampler_view_from_stobj(pipe, stObj, format); + st_create_texture_sampler_view_from_stobj(pipe, stObj, samp, format); } return stObj->sampler_view; @@ -199,16 +202,20 @@ update_textures(struct st_context *st) struct st_texture_object *stObj; GLboolean retval; GLuint texUnit; + const struct gl_sampler_object *samp; if (fprog->Base.SamplersUsed & (1 << su)) texUnit = fprog->Base.SamplerUnits[su]; else texUnit = vprog->Base.SamplerUnits[su]; + samp = st_get_mesa_sampler(st->ctx, texUnit); + texObj = st->ctx->Texture.Unit[texUnit]._Current; if (!texObj) { texObj = st_get_default_texture(st); + samp = &texObj->Sampler; } stObj = st_texture_object(texObj); @@ -227,7 +234,7 @@ update_textures(struct st_context *st) enum pipe_format firstImageFormat = st_mesa_format_to_pipe_format(texFormat); - if ((stObj->base.sRGBDecode == GL_SKIP_DECODE_EXT) && + if ((samp->sRGBDecode == GL_SKIP_DECODE_EXT) && (_mesa_get_format_color_encoding(texFormat) == GL_SRGB)) { /* don't do sRGB->RGB conversion. Interpret the texture * texture data as linear values. @@ -244,14 +251,19 @@ update_textures(struct st_context *st) st->state.num_textures = su + 1; /* if sampler view has changed dereference it */ - if (stObj->sampler_view) + if (stObj->sampler_view) { if (check_sampler_swizzle(stObj->sampler_view, stObj->base._Swizzle, - stObj->base.DepthMode) || - (st_view_format != stObj->sampler_view->format)) + samp->DepthMode) || + (st_view_format != stObj->sampler_view->format) || + stObj->base.BaseLevel != stObj->sampler_view->u.tex.first_level) { pipe_sampler_view_reference(&stObj->sampler_view, NULL); + } + } - sampler_view = st_get_texture_sampler_view_from_stobj(stObj, pipe, st_view_format); + sampler_view = st_get_texture_sampler_view_from_stobj(stObj, pipe, + samp, + st_view_format); } pipe_sampler_view_reference(&st->state.sampler_views[su], sampler_view); } @@ -259,10 +271,12 @@ update_textures(struct st_context *st) cso_set_fragment_sampler_views(st->cso_context, st->state.num_textures, st->state.sampler_views); + if (st->ctx->Const.MaxVertexTextureImageUnits > 0) { + GLuint numUnits = MIN2(st->state.num_textures, + st->ctx->Const.MaxVertexTextureImageUnits); cso_set_vertex_sampler_views(st->cso_context, - MIN2(st->state.num_textures, - st->ctx->Const.MaxVertexTextureImageUnits), + numUnits, st->state.sampler_views); } } diff --git a/src/mesa/state_tracker/st_cb_blit.c b/src/mesa/state_tracker/st_cb_blit.c index 6d02a7dccd4..25c95c7b9dc 100644 --- a/src/mesa/state_tracker/st_cb_blit.c +++ b/src/mesa/state_tracker/st_cb_blit.c @@ -39,6 +39,7 @@ #include "st_texture.h" #include "st_cb_blit.h" #include "st_cb_fbo.h" +#include "st_atom.h" #include "util/u_blit.h" @@ -75,6 +76,8 @@ st_BlitFramebuffer(struct gl_context *ctx, struct gl_framebuffer *readFB = ctx->ReadBuffer; struct gl_framebuffer *drawFB = ctx->DrawBuffer; + st_validate_state(st); + if (!_mesa_clip_blit(ctx, &srcX0, &srcY0, &srcX1, &srcY1, &dstX0, &dstY0, &dstX1, &dstY1)) { return; /* nothing to draw/blit */ diff --git a/src/mesa/state_tracker/st_cb_bufferobjects.c b/src/mesa/state_tracker/st_cb_bufferobjects.c index b9b606d539c..1e489b29d93 100644 --- a/src/mesa/state_tracker/st_cb_bufferobjects.c +++ b/src/mesa/state_tracker/st_cb_bufferobjects.c @@ -408,9 +408,7 @@ st_copy_buffer_subdata(struct gl_context *ctx, struct pipe_context *pipe = st_context(ctx)->pipe; struct st_buffer_object *srcObj = st_buffer_object(src); struct st_buffer_object *dstObj = st_buffer_object(dst); - struct pipe_transfer *src_transfer; - struct pipe_transfer *dst_transfer; - ubyte *srcPtr, *dstPtr; + struct pipe_box box; if(!size) return; @@ -419,23 +417,10 @@ st_copy_buffer_subdata(struct gl_context *ctx, assert(!src->Pointer); assert(!dst->Pointer); - srcPtr = (ubyte *) pipe_buffer_map_range(pipe, - srcObj->buffer, - readOffset, size, - PIPE_TRANSFER_READ, - &src_transfer); + u_box_1d(readOffset, size, &box); - dstPtr = (ubyte *) pipe_buffer_map_range(pipe, - dstObj->buffer, - writeOffset, size, - PIPE_TRANSFER_WRITE, - &dst_transfer); - - if (srcPtr && dstPtr) - memcpy(dstPtr + writeOffset, srcPtr + readOffset, size); - - pipe_buffer_unmap(pipe, src_transfer); - pipe_buffer_unmap(pipe, dst_transfer); + pipe->resource_copy_region(pipe, dstObj->buffer, 0, writeOffset, 0, 0, + srcObj->buffer, 0, &box); } diff --git a/src/mesa/state_tracker/st_cb_clear.c b/src/mesa/state_tracker/st_cb_clear.c index 1eb748e0d5d..181fedd2b99 100644 --- a/src/mesa/state_tracker/st_cb_clear.c +++ b/src/mesa/state_tracker/st_cb_clear.c @@ -323,7 +323,7 @@ clear_with_quad(struct gl_context *ctx, set_vertex_shader(st); if (ctx->DrawBuffer->_ColorDrawBuffers[0]) { - st_translate_color(ctx->Color.ClearColor, + st_translate_color(ctx->Color.ClearColorUnclamped, ctx->DrawBuffer->_ColorDrawBuffers[0]->_BaseFormat, clearColor); } @@ -585,7 +585,7 @@ st_Clear(struct gl_context *ctx, GLbitfield mask) clearColor); } - st->pipe->clear(st->pipe, clear_buffers, ctx->Color.ClearColor, + st->pipe->clear(st->pipe, clear_buffers, ctx->Color.ClearColorUnclamped, ctx->Depth.Clear, ctx->Stencil.Clear); } if (mask & BUFFER_BIT_ACCUM) diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c index eccc207579b..1707f827cc8 100644 --- a/src/mesa/state_tracker/st_cb_drawpixels.c +++ b/src/mesa/state_tracker/st_cb_drawpixels.c @@ -296,7 +296,7 @@ base_format(GLenum format) * of the given format and type. */ static GLenum -internal_format(GLenum format, GLenum type) +internal_format(struct gl_context *ctx, GLenum format, GLenum type) { switch (format) { case GL_DEPTH_COMPONENT: @@ -326,7 +326,53 @@ internal_format(GLenum format, GLenum type) } } else { - return GL_RGBA; + switch (type) { + case GL_UNSIGNED_BYTE: + case GL_UNSIGNED_INT_8_8_8_8: + case GL_UNSIGNED_INT_8_8_8_8_REV: + default: + return GL_RGBA8; + + case GL_UNSIGNED_BYTE_3_3_2: + case GL_UNSIGNED_BYTE_2_3_3_REV: + case GL_UNSIGNED_SHORT_4_4_4_4: + case GL_UNSIGNED_SHORT_4_4_4_4_REV: + return GL_RGBA4; + + case GL_UNSIGNED_SHORT_5_6_5: + case GL_UNSIGNED_SHORT_5_6_5_REV: + case GL_UNSIGNED_SHORT_5_5_5_1: + case GL_UNSIGNED_SHORT_1_5_5_5_REV: + return GL_RGB5_A1; + + case GL_UNSIGNED_INT_10_10_10_2: + case GL_UNSIGNED_INT_2_10_10_10_REV: + return GL_RGB10_A2; + + case GL_UNSIGNED_SHORT: + case GL_UNSIGNED_INT: + return GL_RGBA16; + + case GL_BYTE: + return + ctx->Extensions.EXT_texture_snorm ? GL_RGBA8_SNORM : GL_RGBA8; + + case GL_SHORT: + case GL_INT: + return + ctx->Extensions.EXT_texture_snorm ? GL_RGBA16_SNORM : GL_RGBA16; + + case GL_HALF_FLOAT_ARB: + return + ctx->Extensions.ARB_texture_float ? GL_RGBA16F : + ctx->Extensions.EXT_texture_snorm ? GL_RGBA16_SNORM : GL_RGBA16; + + case GL_FLOAT: + case GL_DOUBLE: + return + ctx->Extensions.ARB_texture_float ? GL_RGBA32F : + ctx->Extensions.EXT_texture_snorm ? GL_RGBA16_SNORM : GL_RGBA16; + } } } } @@ -369,7 +415,7 @@ make_texture(struct st_context *st, GLenum baseFormat, intFormat; baseFormat = base_format(format); - intFormat = internal_format(format, type); + intFormat = internal_format(ctx, format, type); mformat = st_ChooseTextureFormat_renderable(ctx, intFormat, format, type, GL_FALSE); @@ -582,6 +628,7 @@ draw_textured_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z, { struct pipe_rasterizer_state rasterizer; memset(&rasterizer, 0, sizeof(rasterizer)); + rasterizer.clamp_fragment_color = ctx->Color._ClampFragmentColor; rasterizer.gl_rasterization_rules = 1; rasterizer.scissor = ctx->Scissor.Enabled; cso_set_rasterizer(cso, &rasterizer); diff --git a/src/mesa/state_tracker/st_cb_fbo.c b/src/mesa/state_tracker/st_cb_fbo.c index 0df04287ae6..e632d816542 100644 --- a/src/mesa/state_tracker/st_cb_fbo.c +++ b/src/mesa/state_tracker/st_cb_fbo.c @@ -353,7 +353,7 @@ st_render_texture(struct gl_context *ctx, return; /* get pointer to texture image we're rendeing to */ - texImage = att->Texture->Image[att->CubeMapFace][att->TextureLevel]; + texImage = _mesa_get_attachment_teximage(att); /* create new renderbuffer which wraps the texture image */ rb = st_new_renderbuffer(ctx, 0); @@ -471,8 +471,7 @@ st_validate_attachment(struct gl_context *ctx, return GL_FALSE; format = stObj->pt->format; - texFormat = - stObj->base.Image[att->CubeMapFace][att->TextureLevel]->TexFormat; + texFormat = _mesa_get_attachment_teximage_const(att)->TexFormat; /* If the encoding is sRGB and sRGB rendering cannot be enabled, * check for linear format support instead. @@ -529,6 +528,9 @@ st_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb) const struct gl_renderbuffer_attachment *stencil = &fb->Attachment[BUFFER_STENCIL]; GLuint i; + enum pipe_format first_format = PIPE_FORMAT_NONE; + boolean mixed_formats = + screen->get_param(screen, PIPE_CAP_MIXED_COLORBUFFER_FORMATS) != 0; if (depth->Type && stencil->Type && depth->Type != stencil->Type) { fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT; @@ -562,13 +564,33 @@ st_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb) return; } for (i = 0; i < ctx->Const.MaxColorAttachments; i++) { + struct gl_renderbuffer_attachment *att = + &fb->Attachment[BUFFER_COLOR0 + i]; + enum pipe_format format; + if (!st_validate_attachment(ctx, screen, - &fb->Attachment[BUFFER_COLOR0 + i], + att, PIPE_BIND_RENDER_TARGET)) { fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT; return; } + + if (!mixed_formats) { + /* Disallow mixed formats. */ + if (att->Type != GL_NONE) { + format = st_renderbuffer(att->Renderbuffer)->surface->format; + } else { + continue; + } + + if (first_format == PIPE_FORMAT_NONE) { + first_format = format; + } else if (format != first_format) { + fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT; + return; + } + } } } diff --git a/src/mesa/state_tracker/st_cb_readpixels.c b/src/mesa/state_tracker/st_cb_readpixels.c index f8da2a4d158..2a63799bdbc 100644 --- a/src/mesa/state_tracker/st_cb_readpixels.c +++ b/src/mesa/state_tracker/st_cb_readpixels.c @@ -198,27 +198,39 @@ st_fast_readpixels(struct gl_context *ctx, struct st_renderbuffer *strb, const struct gl_pixelstore_attrib *pack, GLvoid *dest) { + GLubyte alphaORoperand; enum combination { A8R8G8B8_UNORM_TO_RGBA_UBYTE, A8R8G8B8_UNORM_TO_RGB_UBYTE, - A8R8G8B8_UNORM_TO_BGRA_UINT + A8R8G8B8_UNORM_TO_BGRA_UINT, + A8R8G8B8_UNORM_TO_RGBA_UINT } combo; if (ctx->_ImageTransferState) return GL_FALSE; - if (strb->format == PIPE_FORMAT_B8G8R8A8_UNORM && - format == GL_RGBA && type == GL_UNSIGNED_BYTE) { + if (strb->format == PIPE_FORMAT_B8G8R8A8_UNORM) { + alphaORoperand = 0; + } + else if (strb->format == PIPE_FORMAT_B8G8R8X8_UNORM ) { + alphaORoperand = 0xff; + } + else { + return GL_FALSE; + } + + if (format == GL_RGBA && type == GL_UNSIGNED_BYTE) { combo = A8R8G8B8_UNORM_TO_RGBA_UBYTE; } - else if (strb->format == PIPE_FORMAT_B8G8R8A8_UNORM && - format == GL_RGB && type == GL_UNSIGNED_BYTE) { + else if (format == GL_RGB && type == GL_UNSIGNED_BYTE) { combo = A8R8G8B8_UNORM_TO_RGB_UBYTE; } - else if (strb->format == PIPE_FORMAT_B8G8R8A8_UNORM && - format == GL_BGRA && type == GL_UNSIGNED_INT_8_8_8_8_REV) { + else if (format == GL_BGRA && type == GL_UNSIGNED_INT_8_8_8_8_REV) { combo = A8R8G8B8_UNORM_TO_BGRA_UINT; } + else if (format == GL_RGBA && type == GL_UNSIGNED_INT_8_8_8_8) { + combo = A8R8G8B8_UNORM_TO_RGBA_UINT; + } else { return GL_FALSE; } @@ -278,7 +290,7 @@ st_fast_readpixels(struct gl_context *ctx, struct st_renderbuffer *strb, dst[col*4+0] = (pixel >> 16) & 0xff; dst[col*4+1] = (pixel >> 8) & 0xff; dst[col*4+2] = (pixel >> 0) & 0xff; - dst[col*4+3] = (pixel >> 24) & 0xff; + dst[col*4+3] = ((pixel >> 24) & 0xff) | alphaORoperand; } dst += dstStride; y += dy; @@ -301,6 +313,26 @@ st_fast_readpixels(struct gl_context *ctx, struct st_renderbuffer *strb, for (row = 0; row < height; row++) { const GLubyte *src = map + y * trans->stride; memcpy(dst, src, 4 * width); + if (alphaORoperand) { + assert(alphaORoperand == 0xff); + for (col = 0; col < width; col++) { + dst[col*4+3] = 0xff; + } + } + dst += dstStride; + y += dy; + } + break; + case A8R8G8B8_UNORM_TO_RGBA_UINT: + for (row = 0; row < height; row++) { + const GLubyte *src = map + y * trans->stride; + for (col = 0; col < width; col++) { + GLuint pixel = ((GLuint *) src)[col]; + dst[col*4+0] = ((pixel >> 24) & 0xff) | alphaORoperand; + dst[col*4+1] = (pixel >> 0) & 0xff; + dst[col*4+2] = (pixel >> 8) & 0xff; + dst[col*4+3] = (pixel >> 16) & 0xff; + } dst += dstStride; y += dy; } @@ -331,7 +363,7 @@ st_readpixels(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei h struct st_context *st = st_context(ctx); struct pipe_context *pipe = st->pipe; GLfloat (*temp)[4]; - const GLbitfield transferOps = ctx->_ImageTransferState; + GLbitfield transferOps = ctx->_ImageTransferState; GLsizei i, j; GLint yStep, dfStride; GLfloat *df; @@ -391,7 +423,10 @@ st_readpixels(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei h return; } - if (format == GL_RGBA && type == GL_FLOAT) { + if(ctx->Color._ClampReadColor) + transferOps |= IMAGE_CLAMP_BIT; + + if (format == GL_RGBA && type == GL_FLOAT && !transferOps) { /* write tile(row) directly into user's buffer */ df = (GLfloat *) _mesa_image_address2d(&clippedPacking, dest, width, height, format, type, 0, 0); diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c index 9d5eb113ff7..ab7f6a51684 100644 --- a/src/mesa/state_tracker/st_cb_texture.c +++ b/src/mesa/state_tracker/st_cb_texture.c @@ -87,6 +87,8 @@ gl_target_to_pipe(GLenum target) return PIPE_TEXTURE_1D_ARRAY; case GL_TEXTURE_2D_ARRAY_EXT: return PIPE_TEXTURE_2D_ARRAY; + case GL_TEXTURE_BUFFER: + return PIPE_BUFFER; default: assert(0); return 0; @@ -245,6 +247,7 @@ get_texture_dims(GLenum target) switch (target) { case GL_TEXTURE_1D: case GL_TEXTURE_1D_ARRAY_EXT: + case GL_TEXTURE_BUFFER: return 1; case GL_TEXTURE_2D: case GL_TEXTURE_CUBE_MAP_ARB: @@ -359,8 +362,8 @@ guess_and_alloc_texture(struct st_context *st, * to re-allocating a texture buffer with space for more (or fewer) * mipmap levels later. */ - if ((stObj->base.MinFilter == GL_NEAREST || - stObj->base.MinFilter == GL_LINEAR || + if ((stObj->base.Sampler.MinFilter == GL_NEAREST || + stObj->base.Sampler.MinFilter == GL_LINEAR || stImage->base._BaseFormat == GL_DEPTH_COMPONENT || stImage->base._BaseFormat == GL_DEPTH_STENCIL_EXT) && !stObj->base.GenerateMipmap && @@ -597,7 +600,12 @@ st_TexImage(struct gl_context * ctx, * memory or malloc space for it. */ if (stImage->pt) { - /* Store the image in the gallium texture memory buffer */ + if (!pixels) { + /* We've allocated texture resource, but have no pixel data - all done. */ + goto done; + } + + /* Store the image in the gallium transfer object */ if (format == GL_DEPTH_COMPONENT && util_format_is_depth_and_stencil(stImage->pt->format)) transfer_usage = PIPE_TRANSFER_READ_WRITE; @@ -1678,7 +1686,7 @@ copy_image_data_to_texture(struct st_context *st, /* debug checks */ { const struct gl_texture_image *dstImage = - stObj->base.Image[stImage->face][stImage->level]; + stObj->base.Image[stImage->face][dstLevel]; assert(dstImage); assert(dstImage->Width == stImage->base.Width); assert(dstImage->Height == stImage->base.Height); @@ -1739,8 +1747,8 @@ st_finalize_texture(struct gl_context *ctx, * incomplete. In that case, we'll have set stObj->lastLevel before * we get here. */ - if (stObj->base.MinFilter == GL_LINEAR || - stObj->base.MinFilter == GL_NEAREST) + if (stObj->base.Sampler.MinFilter == GL_LINEAR || + stObj->base.Sampler.MinFilter == GL_NEAREST) stObj->lastLevel = stObj->base.BaseLevel; else stObj->lastLevel = stObj->base._MaxLevel; @@ -1835,7 +1843,12 @@ st_finalize_texture(struct gl_context *ctx, /* Need to import images in main memory or held in other textures. */ if (stImage && stObj->pt != stImage->pt) { - copy_image_data_to_texture(st, stObj, level, stImage); + if (stImage->base.Width == u_minify(stObj->width0, level) && + stImage->base.Height == u_minify(stObj->height0, level) && + stImage->base.Depth == u_minify(stObj->depth0, level)) { + /* src image fits expected dest mipmap level size */ + copy_image_data_to_texture(st, stObj, level, stImage); + } } } } @@ -1887,8 +1900,8 @@ st_get_default_texture(struct st_context *st) texObj, texImg, 0, 0); - texObj->MinFilter = GL_NEAREST; - texObj->MagFilter = GL_NEAREST; + texObj->Sampler.MinFilter = GL_NEAREST; + texObj->Sampler.MagFilter = GL_NEAREST; texObj->_Complete = GL_TRUE; st->default_texture = texObj; diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c index 5a39ab0a110..ce78956e359 100644 --- a/src/mesa/state_tracker/st_context.c +++ b/src/mesa/state_tracker/st_context.c @@ -27,6 +27,7 @@ #include "main/imports.h" #include "main/context.h" +#include "main/samplerobj.h" #include "main/shaderobj.h" #include "program/prog_cache.h" #include "vbo/vbo.h" @@ -206,8 +207,8 @@ static void st_destroy_context_priv( struct st_context *st ) st_destroy_drawtex(st); /* Unreference any user vertex buffers. */ - for (i = 0; i < st->num_user_vbs; i++) { - pipe_resource_reference(&st->user_vb[i], NULL); + for (i = 0; i < st->num_user_attribs; i++) { + pipe_resource_reference(&st->user_attrib[i].buffer, NULL); } for (i = 0; i < Elements(st->state.sampler_views); i++) { @@ -269,6 +270,7 @@ void st_destroy_context( struct st_context *st ) void st_init_driver_functions(struct dd_function_table *functions) { _mesa_init_shader_object_functions(functions); + _mesa_init_sampler_object_functions(functions); st_init_accum_functions(functions); st_init_blit_functions(functions); diff --git a/src/mesa/state_tracker/st_context.h b/src/mesa/state_tracker/st_context.h index 77765f02379..1fc9c1051a0 100644 --- a/src/mesa/state_tracker/st_context.h +++ b/src/mesa/state_tracker/st_context.h @@ -187,9 +187,16 @@ struct st_context void *winsys_drawable_handle; /* User vertex buffers. */ - struct pipe_resource *user_vb[PIPE_MAX_ATTRIBS]; - unsigned user_vb_stride[PIPE_MAX_ATTRIBS]; - unsigned num_user_vbs; + struct { + struct pipe_resource *buffer; + + /** Element size */ + GLuint element_size; + + /** Attribute stride */ + GLsizei stride; + } user_attrib[PIPE_MAX_ATTRIBS]; + unsigned num_user_attribs; }; diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c index 40afa436292..d27043ec296 100644 --- a/src/mesa/state_tracker/st_draw.c +++ b/src/mesa/state_tracker/st_draw.c @@ -181,7 +181,7 @@ static GLuint fixed_types[4] = { /** * Return a PIPE_FORMAT_x for the given GL datatype and size. */ -GLuint +enum pipe_format st_pipe_vertex_format(GLenum type, GLuint size, GLenum format, GLboolean normalized) { @@ -211,7 +211,7 @@ st_pipe_vertex_format(GLenum type, GLuint size, GLenum format, case GL_UNSIGNED_BYTE: return ubyte_types_norm[size-1]; case GL_FIXED: return fixed_types[size-1]; default: assert(0); return 0; - } + } } else { switch (type) { @@ -226,15 +226,13 @@ st_pipe_vertex_format(GLenum type, GLuint size, GLenum format, case GL_UNSIGNED_BYTE: return ubyte_types_scale[size-1]; case GL_FIXED: return fixed_types[size-1]; default: assert(0); return 0; - } + } } - return 0; /* silence compiler warning */ + return PIPE_FORMAT_NONE; /* silence compiler warning */ } - - /** * Examine the active arrays to determine if we have interleaved * vertex arrays all living in one VBO, or all living in user space. @@ -253,8 +251,9 @@ is_interleaved_arrays(const struct st_vertex_program *vp, for (attr = 0; attr < vpv->num_inputs; attr++) { const GLuint mesaAttr = vp->index_to_input[attr]; - const struct gl_buffer_object *bufObj = arrays[mesaAttr]->BufferObj; - const GLsizei stride = arrays[mesaAttr]->StrideB; /* in bytes */ + const struct gl_client_array *array = arrays[mesaAttr]; + const struct gl_buffer_object *bufObj = array->BufferObj; + const GLsizei stride = array->StrideB; /* in bytes */ if (firstStride < 0) { firstStride = stride; @@ -272,9 +271,9 @@ is_interleaved_arrays(const struct st_vertex_program *vp, return GL_FALSE; } if (!client_addr) { - client_addr = arrays[mesaAttr]->Ptr; + client_addr = array->Ptr; } - else if (abs(arrays[mesaAttr]->Ptr - client_addr) > firstStride) { + else if (abs(array->Ptr - client_addr) > firstStride) { /* arrays start too far apart */ return GL_FALSE; } @@ -315,8 +314,8 @@ setup_interleaved_attribs(struct gl_context *ctx, GLuint attr; const GLubyte *low_addr = NULL; - /* Find the lowest address. */ - if(vpv->num_inputs) { + /* Find the lowest address of the arrays we're drawing */ + if (vpv->num_inputs) { low_addr = arrays[vp->index_to_input[0]]->Ptr; for (attr = 1; attr < vpv->num_inputs; attr++) { @@ -327,41 +326,48 @@ setup_interleaved_attribs(struct gl_context *ctx, for (attr = 0; attr < vpv->num_inputs; attr++) { const GLuint mesaAttr = vp->index_to_input[attr]; - struct gl_buffer_object *bufobj = arrays[mesaAttr]->BufferObj; + const struct gl_client_array *array = arrays[mesaAttr]; + struct gl_buffer_object *bufobj = array->BufferObj; struct st_buffer_object *stobj = st_buffer_object(bufobj); - GLsizei stride = arrays[mesaAttr]->StrideB; + unsigned src_offset = (unsigned) (array->Ptr - low_addr); + GLuint element_size = array->_ElementSize; + GLsizei stride = array->StrideB; + + assert(element_size == array->Size * _mesa_sizeof_type(array->Type)); if (attr == 0) { if (bufobj && bufobj->Name) { vbuffer->buffer = NULL; pipe_resource_reference(&vbuffer->buffer, stobj->buffer); vbuffer->buffer_offset = pointer_to_offset(low_addr); - } else { - uint divisor = arrays[mesaAttr]->InstanceDivisor; - uint length = (divisor ? num_instances / divisor : max_index) + 1; - vbuffer->buffer = - pipe_user_buffer_create(pipe->screen, (void*)low_addr, - stride * length, - PIPE_BIND_VERTEX_BUFFER); + } + else { + uint divisor = array->InstanceDivisor; + uint last_index = divisor ? num_instances / divisor : max_index; + uint bytes = src_offset + stride * last_index + element_size; + + vbuffer->buffer = pipe_user_buffer_create(pipe->screen, + (void*) low_addr, + bytes, + PIPE_BIND_VERTEX_BUFFER); vbuffer->buffer_offset = 0; /* Track user vertex buffers. */ - pipe_resource_reference(&st->user_vb[0], vbuffer->buffer); - st->user_vb_stride[0] = stride; - st->num_user_vbs = 1; + pipe_resource_reference(&st->user_attrib[0].buffer, vbuffer->buffer); + st->user_attrib[0].element_size = element_size; + st->user_attrib[0].stride = stride; + st->num_user_attribs = 1; } vbuffer->stride = stride; /* in bytes */ } - velements[attr].src_offset = - (unsigned) (arrays[mesaAttr]->Ptr - low_addr); - velements[attr].instance_divisor = arrays[mesaAttr]->InstanceDivisor; + velements[attr].src_offset = src_offset; + velements[attr].instance_divisor = array->InstanceDivisor; velements[attr].vertex_buffer_index = 0; - velements[attr].src_format = - st_pipe_vertex_format(arrays[mesaAttr]->Type, - arrays[mesaAttr]->Size, - arrays[mesaAttr]->Format, - arrays[mesaAttr]->Normalized); + velements[attr].src_format = st_pipe_vertex_format(array->Type, + array->Size, + array->Format, + array->Normalized); assert(velements[attr].src_format); } } @@ -389,8 +395,12 @@ setup_non_interleaved_attribs(struct gl_context *ctx, for (attr = 0; attr < vpv->num_inputs; attr++) { const GLuint mesaAttr = vp->index_to_input[attr]; - struct gl_buffer_object *bufobj = arrays[mesaAttr]->BufferObj; - GLsizei stride = arrays[mesaAttr]->StrideB; + const struct gl_client_array *array = arrays[mesaAttr]; + struct gl_buffer_object *bufobj = array->BufferObj; + GLuint element_size = array->_ElementSize; + GLsizei stride = array->StrideB; + + assert(element_size == array->Size * _mesa_sizeof_type(array->Type)); if (bufobj && bufobj->Name) { /* Attribute data is in a VBO. @@ -402,49 +412,54 @@ setup_non_interleaved_attribs(struct gl_context *ctx, vbuffer[attr].buffer = NULL; pipe_resource_reference(&vbuffer[attr].buffer, stobj->buffer); - vbuffer[attr].buffer_offset = pointer_to_offset(arrays[mesaAttr]->Ptr); + vbuffer[attr].buffer_offset = pointer_to_offset(array->Ptr); } else { /* wrap user data */ - if (arrays[mesaAttr]->Ptr) { - uint divisor = arrays[mesaAttr]->InstanceDivisor; - uint length = (divisor ? num_instances / divisor : max_index) + 1; - vbuffer[attr].buffer = - pipe_user_buffer_create(pipe->screen, - (void *) arrays[mesaAttr]->Ptr, - stride * length, - PIPE_BIND_VERTEX_BUFFER); + uint bytes; + void *ptr; + + if (array->Ptr) { + uint divisor = array->InstanceDivisor; + uint last_index = divisor ? num_instances / divisor : max_index; + + bytes = stride * last_index + element_size; + + ptr = (void *) array->Ptr; } else { /* no array, use ctx->Current.Attrib[] value */ - uint bytes = sizeof(ctx->Current.Attrib[0]); - vbuffer[attr].buffer = - pipe_user_buffer_create(pipe->screen, - (void *) ctx->Current.Attrib[mesaAttr], - bytes, - PIPE_BIND_VERTEX_BUFFER); + bytes = element_size = sizeof(ctx->Current.Attrib[0]); + ptr = (void *) ctx->Current.Attrib[mesaAttr]; stride = 0; } + assert(ptr); + assert(bytes); + + vbuffer[attr].buffer = + pipe_user_buffer_create(pipe->screen, ptr, bytes, + PIPE_BIND_VERTEX_BUFFER); + vbuffer[attr].buffer_offset = 0; /* Track user vertex buffers. */ - pipe_resource_reference(&st->user_vb[attr], vbuffer[attr].buffer); - st->user_vb_stride[attr] = stride; - st->num_user_vbs = MAX2(st->num_user_vbs, attr+1); + pipe_resource_reference(&st->user_attrib[attr].buffer, vbuffer[attr].buffer); + st->user_attrib[attr].element_size = element_size; + st->user_attrib[attr].stride = stride; + st->num_user_attribs = MAX2(st->num_user_attribs, attr + 1); } /* common-case setup */ vbuffer[attr].stride = stride; /* in bytes */ velements[attr].src_offset = 0; - velements[attr].instance_divisor = arrays[mesaAttr]->InstanceDivisor; + velements[attr].instance_divisor = array->InstanceDivisor; velements[attr].vertex_buffer_index = attr; - velements[attr].src_format - = st_pipe_vertex_format(arrays[mesaAttr]->Type, - arrays[mesaAttr]->Size, - arrays[mesaAttr]->Format, - arrays[mesaAttr]->Normalized); + velements[attr].src_format = st_pipe_vertex_format(array->Type, + array->Size, + array->Format, + array->Normalized); assert(velements[attr].src_format); } } @@ -575,10 +590,10 @@ st_validate_varrays(struct gl_context *ctx, memset(velements, 0, sizeof(struct pipe_vertex_element) * vpv->num_inputs); /* Unreference any user vertex buffers. */ - for (i = 0; i < st->num_user_vbs; i++) { - pipe_resource_reference(&st->user_vb[i], NULL); + for (i = 0; i < st->num_user_attribs; i++) { + pipe_resource_reference(&st->user_attrib[i].buffer, NULL); } - st->num_user_vbs = 0; + st->num_user_attribs = 0; /* * Setup the vbuffer[] and velements[] arrays. @@ -594,7 +609,8 @@ st_validate_varrays(struct gl_context *ctx, } else { setup_non_interleaved_attribs(ctx, vp, vpv, arrays, - vbuffer, velements, max_index, num_instances); + vbuffer, velements, max_index, + num_instances); num_vbuffers = vpv->num_inputs; num_velements = vpv->num_inputs; } @@ -647,7 +663,8 @@ st_draw_vbo(struct gl_context *ctx, for (i = 0; i < nr_prims; i++) { num_instances = MAX2(num_instances, prims[i].num_instances); } - } else { + } + else { /* Get min/max index for non-indexed drawing. */ min_index = ~0; max_index = 0; @@ -690,20 +707,20 @@ st_draw_vbo(struct gl_context *ctx, /* Notify the driver that the content of user buffers may have been * changed. */ - if (!new_array && st->num_user_vbs) { - for (i = 0; i < st->num_user_vbs; i++) { - if (st->user_vb[i]) { - unsigned stride = st->user_vb_stride[i]; - - if (stride) { - pipe->redefine_user_buffer(pipe, st->user_vb[i], - min_index * stride, - (max_index + 1 - min_index) * stride); - } else { - /* stride == 0 */ - pipe->redefine_user_buffer(pipe, st->user_vb[i], - 0, st->user_vb[i]->width0); - } + assert(max_index >= min_index); + if (!new_array && st->num_user_attribs) { + for (i = 0; i < st->num_user_attribs; i++) { + if (st->user_attrib[i].buffer) { + unsigned element_size = st->user_attrib[i].element_size; + unsigned stride = st->user_attrib[i].stride; + unsigned min_offset = min_index * stride; + unsigned max_offset = max_index * stride + element_size; + + assert(max_offset > min_offset); + + pipe->redefine_user_buffer(pipe, st->user_attrib[i].buffer, + min_offset, + max_offset - min_offset); } } } @@ -743,7 +760,8 @@ st_draw_vbo(struct gl_context *ctx, } -void st_init_draw( struct st_context *st ) +void +st_init_draw(struct st_context *st) { struct gl_context *ctx = st->ctx; @@ -763,11 +781,10 @@ void st_init_draw( struct st_context *st ) } -void st_destroy_draw( struct st_context *st ) +void +st_destroy_draw(struct st_context *st) { #if FEATURE_feedback || FEATURE_rastpos draw_destroy(st->draw); #endif } - - diff --git a/src/mesa/state_tracker/st_draw.h b/src/mesa/state_tracker/st_draw.h index 5d3c278228f..a7b50ce977a 100644 --- a/src/mesa/state_tracker/st_draw.h +++ b/src/mesa/state_tracker/st_draw.h @@ -69,7 +69,7 @@ st_feedback_draw_vbo(struct gl_context *ctx, /* Internal function: */ -extern GLuint +extern enum pipe_format st_pipe_vertex_format(GLenum type, GLuint size, GLenum format, GLboolean normalized); diff --git a/src/mesa/state_tracker/st_draw_feedback.c b/src/mesa/state_tracker/st_draw_feedback.c index 1e1220bfe52..96a08b39100 100644 --- a/src/mesa/state_tracker/st_draw_feedback.c +++ b/src/mesa/state_tracker/st_draw_feedback.c @@ -111,6 +111,7 @@ st_feedback_draw_vbo(struct gl_context *ctx, struct pipe_transfer *vb_transfer[PIPE_MAX_ATTRIBS]; struct pipe_transfer *ib_transfer = NULL; GLuint attr, i; + const GLubyte *low_addr = NULL; const void *mapped_indices = NULL; assert(draw); @@ -141,6 +142,16 @@ st_feedback_draw_vbo(struct gl_context *ctx, draw_bind_vertex_shader(draw, st->vp_variant->draw_shader); set_feedback_vertex_format(ctx); + /* Find the lowest address of the arrays we're drawing */ + if (vp->num_inputs) { + low_addr = arrays[vp->index_to_input[0]]->Ptr; + + for (attr = 1; attr < vp->num_inputs; attr++) { + const GLubyte *start = arrays[vp->index_to_input[attr]]->Ptr; + low_addr = MIN2(low_addr, start); + } + } + /* loop over TGSI shader inputs to determine vertex buffer * and attribute info */ @@ -159,8 +170,8 @@ st_feedback_draw_vbo(struct gl_context *ctx, vbuffers[attr].buffer = NULL; pipe_resource_reference(&vbuffers[attr].buffer, stobj->buffer); - vbuffers[attr].buffer_offset = pointer_to_offset(arrays[0]->Ptr); - velements[attr].src_offset = arrays[mesaAttr]->Ptr - arrays[0]->Ptr; + vbuffers[attr].buffer_offset = pointer_to_offset(low_addr); + velements[attr].src_offset = arrays[mesaAttr]->Ptr - low_addr; } else { /* attribute data is in user-space memory, not a VBO */ diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index bbcae3b02e9..bdc08949dd4 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -228,6 +228,7 @@ void st_init_extensions(struct st_context *st) ctx->Extensions.ARB_half_float_pixel = GL_TRUE; ctx->Extensions.ARB_map_buffer_range = GL_TRUE; ctx->Extensions.ARB_multisample = GL_TRUE; + ctx->Extensions.ARB_sampler_objects = GL_TRUE; ctx->Extensions.ARB_texture_border_clamp = GL_TRUE; /* XXX temp */ ctx->Extensions.ARB_texture_compression = GL_TRUE; ctx->Extensions.ARB_texture_cube_map = GL_TRUE; @@ -381,6 +382,18 @@ void st_init_extensions(struct st_context *st) ctx->Extensions.EXT_packed_depth_stencil = GL_TRUE; } + /* float support - assume nothing exclusively supports 64-bit floats */ + if (screen->is_format_supported(screen, PIPE_FORMAT_R32G32B32A32_FLOAT, + PIPE_TEXTURE_2D, 0, + PIPE_BIND_SAMPLER_VIEW | + PIPE_BIND_RENDER_TARGET) && + screen->is_format_supported(screen, PIPE_FORMAT_R16G16B16A16_FLOAT, + PIPE_TEXTURE_2D, 0, + PIPE_BIND_SAMPLER_VIEW | + PIPE_BIND_RENDER_TARGET)) { + ctx->Extensions.ARB_texture_float = GL_TRUE; + } + /* sRGB support */ if (screen->is_format_supported(screen, PIPE_FORMAT_A8B8G8R8_SRGB, PIPE_TEXTURE_2D, 0, @@ -453,6 +466,12 @@ void st_init_extensions(struct st_context *st) ctx->Extensions.ATI_texture_compression_3dc = GL_TRUE; } + if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8B8A8_SNORM, + PIPE_TEXTURE_2D, 0, + PIPE_BIND_SAMPLER_VIEW)) { + ctx->Extensions.EXT_texture_snorm = GL_TRUE; + } + /* ycbcr support */ if (screen->is_format_supported(screen, PIPE_FORMAT_UYVY, PIPE_TEXTURE_2D, 0, @@ -508,6 +527,35 @@ void st_init_extensions(struct st_context *st) ctx->Extensions.ARB_depth_clamp = GL_TRUE; } + /* This extension does not actually require support of floating point + * render targets, just clamping controls. + * Advertise this extension if either fragment color clamping is supported + * or no render targets having color values outside of the range [0, 1] + * are supported, in which case the fragment color clamping has no effect + * on rendering. + */ + if (screen->get_param(screen, PIPE_CAP_FRAGMENT_COLOR_CLAMP_CONTROL) || + (!screen->is_format_supported(screen, PIPE_FORMAT_R8G8B8A8_SNORM, + PIPE_TEXTURE_2D, 0, + PIPE_BIND_RENDER_TARGET) && + !screen->is_format_supported(screen, PIPE_FORMAT_R16G16B16A16_SNORM, + PIPE_TEXTURE_2D, 0, + PIPE_BIND_RENDER_TARGET) && + !screen->is_format_supported(screen, PIPE_FORMAT_R16G16B16A16_FLOAT, + PIPE_TEXTURE_2D, 0, + PIPE_BIND_RENDER_TARGET) && + !screen->is_format_supported(screen, PIPE_FORMAT_R32G32B32A32_FLOAT, + PIPE_TEXTURE_2D, 0, + PIPE_BIND_RENDER_TARGET) && + !screen->is_format_supported(screen, PIPE_FORMAT_R11G11B10_FLOAT, + PIPE_TEXTURE_2D, 0, + PIPE_BIND_RENDER_TARGET) && + !screen->is_format_supported(screen, PIPE_FORMAT_R9G9B9E5_FLOAT, + PIPE_TEXTURE_2D, 0, + PIPE_BIND_RENDER_TARGET))) { + ctx->Extensions.ARB_color_buffer_float = GL_TRUE; + } + if (screen->get_param(screen, PIPE_CAP_SHADER_STENCIL_EXPORT)) { ctx->Extensions.ARB_shader_stencil_export = GL_TRUE; } diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c index 3d8637ab37e..bbaa84d7fdf 100644 --- a/src/mesa/state_tracker/st_format.c +++ b/src/mesa/state_tracker/st_format.c @@ -214,6 +214,39 @@ st_mesa_format_to_pipe_format(gl_format mesaFormat) case MESA_FORMAT_SARGB8: return PIPE_FORMAT_B8G8R8A8_SRGB; #endif + case MESA_FORMAT_RGBA_FLOAT32: + return PIPE_FORMAT_R32G32B32A32_FLOAT; + case MESA_FORMAT_RGBA_FLOAT16: + return PIPE_FORMAT_R16G16B16A16_FLOAT; + case MESA_FORMAT_RGB_FLOAT32: + return PIPE_FORMAT_R32G32B32_FLOAT; + case MESA_FORMAT_RGB_FLOAT16: + return PIPE_FORMAT_R16G16B16_FLOAT; + case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32: + return PIPE_FORMAT_L32A32_FLOAT; + case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16: + return PIPE_FORMAT_L16A16_FLOAT; + case MESA_FORMAT_LUMINANCE_FLOAT32: + return PIPE_FORMAT_L32_FLOAT; + case MESA_FORMAT_LUMINANCE_FLOAT16: + return PIPE_FORMAT_L16_FLOAT; + case MESA_FORMAT_ALPHA_FLOAT32: + return PIPE_FORMAT_A32_FLOAT; + case MESA_FORMAT_ALPHA_FLOAT16: + return PIPE_FORMAT_A16_FLOAT; + case MESA_FORMAT_INTENSITY_FLOAT32: + return PIPE_FORMAT_I32_FLOAT; + case MESA_FORMAT_INTENSITY_FLOAT16: + return PIPE_FORMAT_I16_FLOAT; + case MESA_FORMAT_R_FLOAT32: + return PIPE_FORMAT_R32_FLOAT; + case MESA_FORMAT_R_FLOAT16: + return PIPE_FORMAT_R16_FLOAT; + case MESA_FORMAT_RG_FLOAT32: + return PIPE_FORMAT_R32G32_FLOAT; + case MESA_FORMAT_RG_FLOAT16: + return PIPE_FORMAT_R16G16_FLOAT; + case MESA_FORMAT_R8: return PIPE_FORMAT_R8_UNORM; case MESA_FORMAT_R16: @@ -259,6 +292,39 @@ st_mesa_format_to_pipe_format(gl_format mesaFormat) case MESA_FORMAT_SIGNED_LA_LATC2: return PIPE_FORMAT_LATC2_SNORM; + /* signed normalized formats */ + case MESA_FORMAT_SIGNED_R8: + return PIPE_FORMAT_R8_SNORM; + case MESA_FORMAT_SIGNED_RG88_REV: + return PIPE_FORMAT_R8G8_SNORM; + case MESA_FORMAT_SIGNED_RGBA8888_REV: + return PIPE_FORMAT_R8G8B8A8_SNORM; + + case MESA_FORMAT_SIGNED_A8: + return PIPE_FORMAT_A8_SNORM; + case MESA_FORMAT_SIGNED_L8: + return PIPE_FORMAT_L8_SNORM; + case MESA_FORMAT_SIGNED_AL88: + return PIPE_FORMAT_L8A8_SNORM; + case MESA_FORMAT_SIGNED_I8: + return PIPE_FORMAT_I8_SNORM; + + case MESA_FORMAT_SIGNED_R16: + return PIPE_FORMAT_R16_SNORM; + case MESA_FORMAT_SIGNED_GR1616: + return PIPE_FORMAT_R16G16_SNORM; + case MESA_FORMAT_SIGNED_RGBA_16: + return PIPE_FORMAT_R16G16B16A16_SNORM; + + case MESA_FORMAT_SIGNED_A16: + return PIPE_FORMAT_A16_SNORM; + case MESA_FORMAT_SIGNED_L16: + return PIPE_FORMAT_L16_SNORM; + case MESA_FORMAT_SIGNED_AL1616: + return PIPE_FORMAT_L16A16_SNORM; + case MESA_FORMAT_SIGNED_I16: + return PIPE_FORMAT_I16_SNORM; + default: assert(0); return PIPE_FORMAT_NONE; @@ -318,8 +384,6 @@ st_pipe_format_to_mesa_format(enum pipe_format format) case PIPE_FORMAT_R16G16B16A16_UNORM: return MESA_FORMAT_RGBA_16; - case PIPE_FORMAT_R16G16B16A16_SNORM: - return MESA_FORMAT_SIGNED_RGBA_16; case PIPE_FORMAT_Z16_UNORM: return MESA_FORMAT_Z16; @@ -372,6 +436,38 @@ st_pipe_format_to_mesa_format(enum pipe_format format) case PIPE_FORMAT_B8G8R8A8_SRGB: return MESA_FORMAT_SARGB8; #endif + case PIPE_FORMAT_R32G32B32A32_FLOAT: + return MESA_FORMAT_RGBA_FLOAT32; + case PIPE_FORMAT_R16G16B16A16_FLOAT: + return MESA_FORMAT_RGBA_FLOAT16; + case PIPE_FORMAT_R32G32B32_FLOAT: + return MESA_FORMAT_RGB_FLOAT32; + case PIPE_FORMAT_R16G16B16_FLOAT: + return MESA_FORMAT_RGB_FLOAT16; + case PIPE_FORMAT_L32A32_FLOAT: + return MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32; + case PIPE_FORMAT_L16A16_FLOAT: + return MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16; + case PIPE_FORMAT_L32_FLOAT: + return MESA_FORMAT_LUMINANCE_FLOAT32; + case PIPE_FORMAT_L16_FLOAT: + return MESA_FORMAT_LUMINANCE_FLOAT16; + case PIPE_FORMAT_A32_FLOAT: + return MESA_FORMAT_ALPHA_FLOAT32; + case PIPE_FORMAT_A16_FLOAT: + return MESA_FORMAT_ALPHA_FLOAT16; + case PIPE_FORMAT_I32_FLOAT: + return MESA_FORMAT_INTENSITY_FLOAT32; + case PIPE_FORMAT_I16_FLOAT: + return MESA_FORMAT_INTENSITY_FLOAT16; + case PIPE_FORMAT_R32_FLOAT: + return MESA_FORMAT_R_FLOAT32; + case PIPE_FORMAT_R16_FLOAT: + return MESA_FORMAT_R_FLOAT16; + case PIPE_FORMAT_R32G32_FLOAT: + return MESA_FORMAT_RG_FLOAT32; + case PIPE_FORMAT_R16G16_FLOAT: + return MESA_FORMAT_RG_FLOAT16; case PIPE_FORMAT_R8_UNORM: return MESA_FORMAT_R8; @@ -416,6 +512,39 @@ st_pipe_format_to_mesa_format(enum pipe_format format) //case PIPE_FORMAT_LATC2_SNORM: // return MESA_FORMAT_SIGNED_LA_LATC2; + /* signed normalized formats */ + case PIPE_FORMAT_R8_SNORM: + return MESA_FORMAT_SIGNED_R8; + case PIPE_FORMAT_R8G8_SNORM: + return MESA_FORMAT_SIGNED_RG88_REV; + case PIPE_FORMAT_R8G8B8A8_SNORM: + return MESA_FORMAT_SIGNED_RGBA8888_REV; + + case PIPE_FORMAT_A8_SNORM: + return MESA_FORMAT_SIGNED_A8; + case PIPE_FORMAT_L8_SNORM: + return MESA_FORMAT_SIGNED_L8; + case PIPE_FORMAT_L8A8_SNORM: + return MESA_FORMAT_SIGNED_AL88; + case PIPE_FORMAT_I8_SNORM: + return MESA_FORMAT_SIGNED_I8; + + case PIPE_FORMAT_R16_SNORM: + return MESA_FORMAT_SIGNED_R16; + case PIPE_FORMAT_R16G16_SNORM: + return MESA_FORMAT_SIGNED_GR1616; + case PIPE_FORMAT_R16G16B16A16_SNORM: + return MESA_FORMAT_SIGNED_RGBA_16; + + case PIPE_FORMAT_A16_SNORM: + return MESA_FORMAT_SIGNED_A16; + case PIPE_FORMAT_L16_SNORM: + return MESA_FORMAT_SIGNED_L16; + case PIPE_FORMAT_L16A16_SNORM: + return MESA_FORMAT_SIGNED_AL1616; + case PIPE_FORMAT_I16_SNORM: + return MESA_FORMAT_SIGNED_I16; + default: assert(0); return MESA_FORMAT_NONE; @@ -823,6 +952,178 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat, return PIPE_FORMAT_L8_SRGB; return default_srgba_format( screen, target, sample_count, bindings); + /* prefer formats in order of data size, choosing 16-bit ones if equal sized */ + case GL_RGBA16F_ARB: + case GL_RGB16F_ARB: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_R16G16B16A16_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + case GL_LUMINANCE_ALPHA16F_ARB: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_L16A16_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT, + PIPE_FORMAT_L32A32_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + case GL_ALPHA16F_ARB: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_A16_FLOAT, + PIPE_FORMAT_L16A16_FLOAT, + PIPE_FORMAT_A32_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT, + PIPE_FORMAT_L32A32_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + case GL_INTENSITY16F_ARB: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_I16_FLOAT, + PIPE_FORMAT_L16A16_FLOAT, + PIPE_FORMAT_I32_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT, + PIPE_FORMAT_L32A32_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + case GL_LUMINANCE16F_ARB: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_L16_FLOAT, + PIPE_FORMAT_L16A16_FLOAT, + PIPE_FORMAT_L32_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT, + PIPE_FORMAT_L32A32_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + case GL_R16F: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_R16_FLOAT, + PIPE_FORMAT_R16G16_FLOAT, + PIPE_FORMAT_R32_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT, + PIPE_FORMAT_R32G32_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + case GL_RG16F: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_R16G16_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT, + PIPE_FORMAT_R32G32_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + + /* try a 32-bit format if available, otherwise fallback to a 16-bit one */ + case GL_RGBA32F_ARB: + case GL_RGB32F_ARB: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_R32G32B32A32_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + case GL_LUMINANCE_ALPHA32F_ARB: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_L32A32_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT, + PIPE_FORMAT_L16A16_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + case GL_ALPHA32F_ARB: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_A32_FLOAT, + PIPE_FORMAT_L32A32_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT, + PIPE_FORMAT_A16_FLOAT, + PIPE_FORMAT_L16A16_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + case GL_INTENSITY32F_ARB: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_I32_FLOAT, + PIPE_FORMAT_L32A32_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT, + PIPE_FORMAT_I16_FLOAT, + PIPE_FORMAT_L16A16_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + case GL_LUMINANCE32F_ARB: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_L32_FLOAT, + PIPE_FORMAT_L32A32_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT, + PIPE_FORMAT_L16_FLOAT, + PIPE_FORMAT_L16A16_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + case GL_R32F: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_R32_FLOAT, + PIPE_FORMAT_R32G32_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT, + PIPE_FORMAT_R16_FLOAT, + PIPE_FORMAT_R16G16_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + case GL_RG32F: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_R32G32_FLOAT, + PIPE_FORMAT_R32G32B32A32_FLOAT, + PIPE_FORMAT_R16G16_FLOAT, + PIPE_FORMAT_R16G16B16A16_FLOAT + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + case GL_RED: case GL_R8: if (screen->is_format_supported(screen, PIPE_FORMAT_R8_UNORM, target, @@ -999,6 +1300,170 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat, return PIPE_FORMAT_R32G32B32A32_USCALED; return PIPE_FORMAT_NONE; + /* signed normalized formats */ + case GL_RED_SNORM: + case GL_R8_SNORM: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_R8_SNORM, + PIPE_FORMAT_R8G8_SNORM, + PIPE_FORMAT_R8G8B8A8_SNORM, + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + + case GL_R16_SNORM: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_R16_SNORM, + PIPE_FORMAT_R16G16_SNORM, + PIPE_FORMAT_R16G16B16A16_SNORM, + PIPE_FORMAT_R8_SNORM, + PIPE_FORMAT_R8G8_SNORM, + PIPE_FORMAT_R8G8B8A8_SNORM, + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + + case GL_RG_SNORM: + case GL_RG8_SNORM: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_R8G8_SNORM, + PIPE_FORMAT_R8G8B8A8_SNORM, + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + + case GL_RG16_SNORM: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_R16G16_SNORM, + PIPE_FORMAT_R16G16B16A16_SNORM, + PIPE_FORMAT_R8G8_SNORM, + PIPE_FORMAT_R8G8B8A8_SNORM, + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + + case GL_RGB_SNORM: + case GL_RGB8_SNORM: + case GL_RGBA_SNORM: + case GL_RGBA8_SNORM: + if (screen->is_format_supported(screen, PIPE_FORMAT_R8G8B8A8_SNORM, + target, + sample_count, bindings)) + return PIPE_FORMAT_R8G8B8A8_SNORM; + return PIPE_FORMAT_NONE; + + case GL_RGB16_SNORM: + case GL_RGBA16_SNORM: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_R16G16B16A16_SNORM, + PIPE_FORMAT_R8G8B8A8_SNORM, + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + + + case GL_ALPHA_SNORM: + case GL_ALPHA8_SNORM: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_A8_SNORM, + PIPE_FORMAT_R8G8B8A8_SNORM, + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + + case GL_ALPHA16_SNORM: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_A16_SNORM, + PIPE_FORMAT_R16G16B16A16_SNORM, + PIPE_FORMAT_A8_SNORM, + PIPE_FORMAT_R8G8B8A8_SNORM, + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + + case GL_LUMINANCE_SNORM: + case GL_LUMINANCE8_SNORM: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_L8_SNORM, + PIPE_FORMAT_R8G8B8A8_SNORM, + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + + case GL_LUMINANCE16_SNORM: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_L16_SNORM, + PIPE_FORMAT_R16G16B16A16_SNORM, + PIPE_FORMAT_L8_SNORM, + PIPE_FORMAT_R8G8B8A8_SNORM, + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + + case GL_LUMINANCE_ALPHA_SNORM: + case GL_LUMINANCE8_ALPHA8_SNORM: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_L8A8_SNORM, + PIPE_FORMAT_R8G8B8A8_SNORM, + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + + case GL_LUMINANCE16_ALPHA16_SNORM: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_L16A16_SNORM, + PIPE_FORMAT_R16G16B16A16_SNORM, + PIPE_FORMAT_L8A8_SNORM, + PIPE_FORMAT_R8G8B8A8_SNORM, + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + + case GL_INTENSITY_SNORM: + case GL_INTENSITY8_SNORM: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_I8_SNORM, + PIPE_FORMAT_R8G8B8A8_SNORM, + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + + case GL_INTENSITY16_SNORM: + { + static const enum pipe_format formats[] = { + PIPE_FORMAT_I16_SNORM, + PIPE_FORMAT_R16G16B16A16_SNORM, + PIPE_FORMAT_I8_SNORM, + PIPE_FORMAT_R8G8B8A8_SNORM, + }; + return find_supported_format(screen, formats, Elements(formats), + target, sample_count, bindings); + } + default: return PIPE_FORMAT_NONE; } diff --git a/src/mesa/state_tracker/st_texture.h b/src/mesa/state_tracker/st_texture.h index d50c3c9af79..903e30df52f 100644 --- a/src/mesa/state_tracker/st_texture.h +++ b/src/mesa/state_tracker/st_texture.h @@ -163,6 +163,21 @@ st_get_texture_sampler_view(struct st_texture_object *stObj, } +/** + * Get pointer to the active sampler object for the given texture unit. + * This will either be a user-defined sampler object or the texture + * object's own sampler state. + */ +static INLINE struct gl_sampler_object * +st_get_mesa_sampler(const struct gl_context *ctx, GLuint unit) +{ + if (ctx->Texture.Unit[unit].Sampler) + return ctx->Texture.Unit[unit].Sampler; + else + return &ctx->Texture.Unit[unit]._Current->Sampler; +} + + extern struct pipe_resource * st_texture_create(struct st_context *st, enum pipe_texture_target target, diff --git a/src/mesa/swrast/s_aatriangle.c b/src/mesa/swrast/s_aatriangle.c index 2c02a01327f..2e8767a33d9 100644 --- a/src/mesa/swrast/s_aatriangle.c +++ b/src/mesa/swrast/s_aatriangle.c @@ -215,12 +215,7 @@ compute_coveragef(const GLfloat v0[3], const GLfloat v1[3], GLint stop = 4, i; GLfloat insideCount = 16.0F; -#ifdef DEBUG - { - const GLfloat area = dx0 * dy1 - dx1 * dy0; - ASSERT(area >= 0.0); - } -#endif + ASSERT(dx0 * dy1 - dx1 * dy0 >= 0.0); /* area >= 0.0 */ for (i = 0; i < stop; i++) { const GLfloat sx = x + samples[i][0]; diff --git a/src/mesa/swrast/s_context.c b/src/mesa/swrast/s_context.c index 491fcfcdbbf..b3e39689cfa 100644 --- a/src/mesa/swrast/s_context.c +++ b/src/mesa/swrast/s_context.c @@ -248,18 +248,11 @@ _swrast_update_fog_state( struct gl_context *ctx ) SWcontext *swrast = SWRAST_CONTEXT(ctx); const struct gl_fragment_program *fp = ctx->FragmentProgram._Current; + assert((fp == NULL) || (fp->Base.Target == GL_FRAGMENT_PROGRAM_ARB)); + /* determine if fog is needed, and if so, which fog mode */ - swrast->_FogEnabled = GL_FALSE; - if (fp && fp->Base.Target == GL_FRAGMENT_PROGRAM_ARB) { - if (fp->FogOption != GL_NONE) { - swrast->_FogEnabled = GL_TRUE; - swrast->_FogMode = fp->FogOption; - } - } - else if (ctx->Fog.Enabled) { - swrast->_FogEnabled = GL_TRUE; - swrast->_FogMode = ctx->Fog.Mode; - } + swrast->_FogEnabled = (fp == NULL && ctx->Fog.Enabled); + swrast->_FogMode = ctx->Fog.Mode; } diff --git a/src/mesa/swrast/s_fragprog.c b/src/mesa/swrast/s_fragprog.c index e391043f4d9..b6bfeaed4a9 100644 --- a/src/mesa/swrast/s_fragprog.c +++ b/src/mesa/swrast/s_fragprog.c @@ -71,7 +71,7 @@ fetch_texel_lod( struct gl_context *ctx, const GLfloat texcoord[4], GLfloat lamb SWcontext *swrast = SWRAST_CONTEXT(ctx); GLfloat rgba[4]; - lambda = CLAMP(lambda, texObj->MinLod, texObj->MaxLod); + lambda = CLAMP(lambda, texObj->Sampler.MinLod, texObj->Sampler.MaxLod); swrast->TextureSample[unit](ctx, texObj, 1, (const GLfloat (*)[4]) texcoord, @@ -115,9 +115,9 @@ fetch_texel_deriv( struct gl_context *ctx, const GLfloat texcoord[4], texcoord[0], texcoord[1], texcoord[3], 1.0F / texcoord[3]); - lambda += lodBias + texUnit->LodBias + texObj->LodBias; + lambda += lodBias + texUnit->LodBias + texObj->Sampler.LodBias; - lambda = CLAMP(lambda, texObj->MinLod, texObj->MaxLod); + lambda = CLAMP(lambda, texObj->Sampler.MinLod, texObj->Sampler.MaxLod); swrast->TextureSample[unit](ctx, texObj, 1, (const GLfloat (*)[4]) texcoord, diff --git a/src/mesa/swrast/s_readpix.c b/src/mesa/swrast/s_readpix.c index 5c8d7e9c5cf..214f2ea1aaa 100644 --- a/src/mesa/swrast/s_readpix.c +++ b/src/mesa/swrast/s_readpix.c @@ -191,7 +191,13 @@ fast_read_rgba_pixels( struct gl_context *ctx, if (!rb) return GL_FALSE; - ASSERT(rb->_BaseFormat == GL_RGBA || rb->_BaseFormat == GL_RGB || + ASSERT(rb->_BaseFormat == GL_RGBA || + rb->_BaseFormat == GL_RGB || + rb->_BaseFormat == GL_RG || + rb->_BaseFormat == GL_RED || + rb->_BaseFormat == GL_LUMINANCE || + rb->_BaseFormat == GL_INTENSITY || + rb->_BaseFormat == GL_LUMINANCE_ALPHA || rb->_BaseFormat == GL_ALPHA); /* clipping should have already been done */ @@ -312,12 +318,12 @@ read_rgba_pixels( struct gl_context *ctx, if (!rb) return; - if (type == GL_FLOAT && ((ctx->Color.ClampReadColor == GL_TRUE) || - (ctx->Color.ClampReadColor == GL_FIXED_ONLY_ARB && - rb->DataType != GL_FLOAT))) + if ((ctx->Color._ClampReadColor == GL_TRUE || type != GL_FLOAT) && + !_mesa_is_integer_format(format)) { transferOps |= IMAGE_CLAMP_BIT; + } - /* Try optimized path first */ + /* Try the optimized path first. */ if (fast_read_rgba_pixels(ctx, x, y, width, height, format, type, pixels, packing, transferOps)) { return; /* done! */ @@ -341,9 +347,9 @@ read_rgba_pixels( struct gl_context *ctx, _swrast_read_rgba_span(ctx, rb, width, x, y, GL_FLOAT, rgba); /* apply fudge factor for shallow color buffers */ - if (fb->Visual.redBits < 8 || - fb->Visual.greenBits < 8 || - fb->Visual.blueBits < 8) { + if ((fb->Visual.redBits < 8 && fb->Visual.redBits != 0) || + (fb->Visual.greenBits < 8 && fb->Visual.greenBits != 0) || + (fb->Visual.blueBits < 8 && fb->Visual.blueBits != 0)) { adjust_colors(fb, width, rgba); } diff --git a/src/mesa/swrast/s_span.c b/src/mesa/swrast/s_span.c index ef38a6b22b8..f0524e0610e 100644 --- a/src/mesa/swrast/s_span.c +++ b/src/mesa/swrast/s_span.c @@ -490,7 +490,7 @@ interpolate_texcoords(struct gl_context *ctx, SWspan *span) if (obj) { const struct gl_texture_image *img = obj->Image[0][obj->BaseLevel]; - needLambda = (obj->MinFilter != obj->MagFilter) + needLambda = (obj->Sampler.MinFilter != obj->Sampler.MagFilter) || ctx->FragmentProgram._Current; texW = img->WidthScale; texH = img->HeightScale; @@ -1348,7 +1348,13 @@ _swrast_read_rgba_span( struct gl_context *ctx, struct gl_renderbuffer *rb, ASSERT(rb); ASSERT(rb->GetRow); - ASSERT(rb->_BaseFormat == GL_RGB || rb->_BaseFormat == GL_RGBA || + ASSERT(rb->_BaseFormat == GL_RGBA || + rb->_BaseFormat == GL_RGB || + rb->_BaseFormat == GL_RG || + rb->_BaseFormat == GL_RED || + rb->_BaseFormat == GL_LUMINANCE || + rb->_BaseFormat == GL_INTENSITY || + rb->_BaseFormat == GL_LUMINANCE_ALPHA || rb->_BaseFormat == GL_ALPHA); if (rb->DataType == dstType) { diff --git a/src/mesa/swrast/s_texcombine.c b/src/mesa/swrast/s_texcombine.c index 0c8cc9ff37b..7f49b6ffa50 100644 --- a/src/mesa/swrast/s_texcombine.c +++ b/src/mesa/swrast/s_texcombine.c @@ -631,9 +631,9 @@ _swrast_texture_span( struct gl_context *ctx, SWspan *span ) /* adjust texture lod (lambda) */ if (span->arrayMask & SPAN_LAMBDA) { - if (texUnit->LodBias + curObj->LodBias != 0.0F) { + if (texUnit->LodBias + curObj->Sampler.LodBias != 0.0F) { /* apply LOD bias, but don't clamp yet */ - const GLfloat bias = CLAMP(texUnit->LodBias + curObj->LodBias, + const GLfloat bias = CLAMP(texUnit->LodBias + curObj->Sampler.LodBias, -ctx->Const.MaxTextureLodBias, ctx->Const.MaxTextureLodBias); GLuint i; @@ -642,10 +642,11 @@ _swrast_texture_span( struct gl_context *ctx, SWspan *span ) } } - if (curObj->MinLod != -1000.0 || curObj->MaxLod != 1000.0) { + if (curObj->Sampler.MinLod != -1000.0 || + curObj->Sampler.MaxLod != 1000.0) { /* apply LOD clamping to lambda */ - const GLfloat min = curObj->MinLod; - const GLfloat max = curObj->MaxLod; + const GLfloat min = curObj->Sampler.MinLod; + const GLfloat max = curObj->Sampler.MaxLod; GLuint i; for (i = 0; i < span->end; i++) { GLfloat l = lambda[i]; @@ -686,9 +687,9 @@ _swrast_texture_span( struct gl_context *ctx, SWspan *span ) /* adjust texture lod (lambda) */ if (span->arrayMask & SPAN_LAMBDA) { - if (texUnit->LodBias + curObj->LodBias != 0.0F) { + if (texUnit->LodBias + curObj->Sampler.LodBias != 0.0F) { /* apply LOD bias, but don't clamp yet */ - const GLfloat bias = CLAMP(texUnit->LodBias + curObj->LodBias, + const GLfloat bias = CLAMP(texUnit->LodBias + curObj->Sampler.LodBias, -ctx->Const.MaxTextureLodBias, ctx->Const.MaxTextureLodBias); GLuint i; @@ -697,10 +698,11 @@ _swrast_texture_span( struct gl_context *ctx, SWspan *span ) } } - if (curObj->MinLod != -1000.0 || curObj->MaxLod != 1000.0) { + if (curObj->Sampler.MinLod != -1000.0 || + curObj->Sampler.MaxLod != 1000.0) { /* apply LOD clamping to lambda */ - const GLfloat min = curObj->MinLod; - const GLfloat max = curObj->MaxLod; + const GLfloat min = curObj->Sampler.MinLod; + const GLfloat max = curObj->Sampler.MaxLod; GLuint i; for (i = 0; i < span->end; i++) { GLfloat l = lambda[i]; diff --git a/src/mesa/swrast/s_texfilter.c b/src/mesa/swrast/s_texfilter.c index 42785400c0e..106f8b75f9e 100644 --- a/src/mesa/swrast/s_texfilter.c +++ b/src/mesa/swrast/s_texfilter.c @@ -505,28 +505,28 @@ nearest_texcoord(const struct gl_texture_object *texObj, switch (texObj->Target) { case GL_TEXTURE_RECTANGLE_ARB: - *i = clamp_rect_coord_nearest(texObj->WrapS, texcoord[0], width); - *j = clamp_rect_coord_nearest(texObj->WrapT, texcoord[1], height); + *i = clamp_rect_coord_nearest(texObj->Sampler.WrapS, texcoord[0], width); + *j = clamp_rect_coord_nearest(texObj->Sampler.WrapT, texcoord[1], height); *k = 0; break; case GL_TEXTURE_1D: - *i = nearest_texel_location(texObj->WrapS, img, width, texcoord[0]); + *i = nearest_texel_location(texObj->Sampler.WrapS, img, width, texcoord[0]); *j = 0; *k = 0; break; case GL_TEXTURE_2D: - *i = nearest_texel_location(texObj->WrapS, img, width, texcoord[0]); - *j = nearest_texel_location(texObj->WrapT, img, height, texcoord[1]); + *i = nearest_texel_location(texObj->Sampler.WrapS, img, width, texcoord[0]); + *j = nearest_texel_location(texObj->Sampler.WrapT, img, height, texcoord[1]); *k = 0; break; case GL_TEXTURE_1D_ARRAY_EXT: - *i = nearest_texel_location(texObj->WrapS, img, width, texcoord[0]); + *i = nearest_texel_location(texObj->Sampler.WrapS, img, width, texcoord[0]); *j = tex_array_slice(texcoord[1], height); *k = 0; break; case GL_TEXTURE_2D_ARRAY_EXT: - *i = nearest_texel_location(texObj->WrapS, img, width, texcoord[0]); - *j = nearest_texel_location(texObj->WrapT, img, height, texcoord[1]); + *i = nearest_texel_location(texObj->Sampler.WrapS, img, width, texcoord[0]); + *j = nearest_texel_location(texObj->Sampler.WrapT, img, height, texcoord[1]); *k = tex_array_slice(texcoord[2], depth); break; default: @@ -553,24 +553,24 @@ linear_texcoord(const struct gl_texture_object *texObj, switch (texObj->Target) { case GL_TEXTURE_RECTANGLE_ARB: - clamp_rect_coord_linear(texObj->WrapS, texcoord[0], + clamp_rect_coord_linear(texObj->Sampler.WrapS, texcoord[0], width, i0, i1, wi); - clamp_rect_coord_linear(texObj->WrapT, texcoord[1], + clamp_rect_coord_linear(texObj->Sampler.WrapT, texcoord[1], height, j0, j1, wj); *slice = 0; break; case GL_TEXTURE_1D: case GL_TEXTURE_2D: - linear_texel_locations(texObj->WrapS, img, width, + linear_texel_locations(texObj->Sampler.WrapS, img, width, texcoord[0], i0, i1, wi); - linear_texel_locations(texObj->WrapT, img, height, + linear_texel_locations(texObj->Sampler.WrapT, img, height, texcoord[1], j0, j1, wj); *slice = 0; break; case GL_TEXTURE_1D_ARRAY_EXT: - linear_texel_locations(texObj->WrapS, img, width, + linear_texel_locations(texObj->Sampler.WrapS, img, width, texcoord[0], i0, i1, wi); *j0 = tex_array_slice(texcoord[1], height); *j1 = *j0; @@ -578,9 +578,9 @@ linear_texcoord(const struct gl_texture_object *texObj, break; case GL_TEXTURE_2D_ARRAY_EXT: - linear_texel_locations(texObj->WrapS, img, width, + linear_texel_locations(texObj->Sampler.WrapS, img, width, texcoord[0], i0, i1, wi); - linear_texel_locations(texObj->WrapT, img, height, + linear_texel_locations(texObj->Sampler.WrapT, img, height, texcoord[1], j0, j1, wj); *slice = tex_array_slice(texcoord[2], depth); break; @@ -656,12 +656,12 @@ compute_min_mag_ranges(const struct gl_texture_object *tObj, GLfloat minMagThresh; /* we shouldn't be here if minfilter == magfilter */ - ASSERT(tObj->MinFilter != tObj->MagFilter); + ASSERT(tObj->Sampler.MinFilter != tObj->Sampler.MagFilter); /* This bit comes from the OpenGL spec: */ - if (tObj->MagFilter == GL_LINEAR - && (tObj->MinFilter == GL_NEAREST_MIPMAP_NEAREST || - tObj->MinFilter == GL_NEAREST_MIPMAP_LINEAR)) { + if (tObj->Sampler.MagFilter == GL_LINEAR + && (tObj->Sampler.MinFilter == GL_NEAREST_MIPMAP_NEAREST || + tObj->Sampler.MinFilter == GL_NEAREST_MIPMAP_LINEAR)) { minMagThresh = 0.5F; } else { @@ -763,28 +763,28 @@ get_border_color(const struct gl_texture_object *tObj, { switch (img->_BaseFormat) { case GL_RGB: - rgba[0] = tObj->BorderColor.f[0]; - rgba[1] = tObj->BorderColor.f[1]; - rgba[2] = tObj->BorderColor.f[2]; + rgba[0] = tObj->Sampler.BorderColor.f[0]; + rgba[1] = tObj->Sampler.BorderColor.f[1]; + rgba[2] = tObj->Sampler.BorderColor.f[2]; rgba[3] = 1.0F; break; case GL_ALPHA: rgba[0] = rgba[1] = rgba[2] = 0.0; - rgba[3] = tObj->BorderColor.f[3]; + rgba[3] = tObj->Sampler.BorderColor.f[3]; break; case GL_LUMINANCE: - rgba[0] = rgba[1] = rgba[2] = tObj->BorderColor.f[0]; + rgba[0] = rgba[1] = rgba[2] = tObj->Sampler.BorderColor.f[0]; rgba[3] = 1.0; break; case GL_LUMINANCE_ALPHA: - rgba[0] = rgba[1] = rgba[2] = tObj->BorderColor.f[0]; - rgba[3] = tObj->BorderColor.f[3]; + rgba[0] = rgba[1] = rgba[2] = tObj->Sampler.BorderColor.f[0]; + rgba[3] = tObj->Sampler.BorderColor.f[3]; break; case GL_INTENSITY: - rgba[0] = rgba[1] = rgba[2] = rgba[3] = tObj->BorderColor.f[0]; + rgba[0] = rgba[1] = rgba[2] = rgba[3] = tObj->Sampler.BorderColor.f[0]; break; default: - COPY_4V(rgba, tObj->BorderColor.f); + COPY_4V(rgba, tObj->Sampler.BorderColor.f); } } @@ -804,7 +804,7 @@ sample_1d_nearest(struct gl_context *ctx, { const GLint width = img->Width2; /* without border, power of two */ GLint i; - i = nearest_texel_location(tObj->WrapS, img, width, texcoord[0]); + i = nearest_texel_location(tObj->Sampler.WrapS, img, width, texcoord[0]); /* skip over the border, if any */ i += img->Border; if (i < 0 || i >= (GLint) img->Width) { @@ -832,7 +832,7 @@ sample_1d_linear(struct gl_context *ctx, GLfloat a; GLfloat t0[4], t1[4]; /* texels */ - linear_texel_locations(tObj->WrapS, img, width, texcoord[0], &i0, &i1, &a); + linear_texel_locations(tObj->Sampler.WrapS, img, width, texcoord[0], &i0, &i1, &a); if (img->Border) { i0 += img->Border; @@ -991,7 +991,7 @@ sample_lambda_1d( struct gl_context *ctx, if (minStart < minEnd) { /* do the minified texels */ const GLuint m = minEnd - minStart; - switch (tObj->MinFilter) { + switch (tObj->Sampler.MinFilter) { case GL_NEAREST: for (i = minStart; i < minEnd; i++) sample_1d_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel], @@ -1026,7 +1026,7 @@ sample_lambda_1d( struct gl_context *ctx, if (magStart < magEnd) { /* do the magnified texels */ - switch (tObj->MagFilter) { + switch (tObj->Sampler.MagFilter) { case GL_NEAREST: for (i = magStart; i < magEnd; i++) sample_1d_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel], @@ -1065,8 +1065,8 @@ sample_2d_nearest(struct gl_context *ctx, GLint i, j; (void) ctx; - i = nearest_texel_location(tObj->WrapS, img, width, texcoord[0]); - j = nearest_texel_location(tObj->WrapT, img, height, texcoord[1]); + i = nearest_texel_location(tObj->Sampler.WrapS, img, width, texcoord[0]); + j = nearest_texel_location(tObj->Sampler.WrapT, img, height, texcoord[1]); /* skip over the border, if any */ i += img->Border; @@ -1100,8 +1100,8 @@ sample_2d_linear(struct gl_context *ctx, GLfloat a, b; GLfloat t00[4], t10[4], t01[4], t11[4]; /* sampled texel colors */ - linear_texel_locations(tObj->WrapS, img, width, texcoord[0], &i0, &i1, &a); - linear_texel_locations(tObj->WrapT, img, height, texcoord[1], &j0, &j1, &b); + linear_texel_locations(tObj->Sampler.WrapS, img, width, texcoord[0], &i0, &i1, &a); + linear_texel_locations(tObj->Sampler.WrapT, img, height, texcoord[1], &j0, &j1, &b); if (img->Border) { i0 += img->Border; @@ -1165,8 +1165,8 @@ sample_2d_linear_repeat(struct gl_context *ctx, (void) ctx; - ASSERT(tObj->WrapS == GL_REPEAT); - ASSERT(tObj->WrapT == GL_REPEAT); + ASSERT(tObj->Sampler.WrapS == GL_REPEAT); + ASSERT(tObj->Sampler.WrapT == GL_REPEAT); ASSERT(img->Border == 0); ASSERT(img->_BaseFormat != GL_COLOR_INDEX); ASSERT(img->_IsPowerOfTwo); @@ -1270,8 +1270,8 @@ sample_2d_linear_mipmap_linear_repeat(struct gl_context *ctx, { GLuint i; ASSERT(lambda != NULL); - ASSERT(tObj->WrapS == GL_REPEAT); - ASSERT(tObj->WrapT == GL_REPEAT); + ASSERT(tObj->Sampler.WrapS == GL_REPEAT); + ASSERT(tObj->Sampler.WrapT == GL_REPEAT); for (i = 0; i < n; i++) { GLint level = linear_mipmap_level(tObj, lambda[i]); if (level >= tObj->_MaxLevel) { @@ -1317,8 +1317,8 @@ sample_linear_2d(struct gl_context *ctx, GLuint i; struct gl_texture_image *image = tObj->Image[0][tObj->BaseLevel]; (void) lambda; - if (tObj->WrapS == GL_REPEAT && - tObj->WrapT == GL_REPEAT && + if (tObj->Sampler.WrapS == GL_REPEAT && + tObj->Sampler.WrapT == GL_REPEAT && image->_IsPowerOfTwo && image->Border == 0) { for (i = 0; i < n; i++) { @@ -1356,8 +1356,8 @@ opt_sample_rgb_2d(struct gl_context *ctx, GLuint k; (void) ctx; (void) lambda; - ASSERT(tObj->WrapS==GL_REPEAT); - ASSERT(tObj->WrapT==GL_REPEAT); + ASSERT(tObj->Sampler.WrapS==GL_REPEAT); + ASSERT(tObj->Sampler.WrapT==GL_REPEAT); ASSERT(img->Border==0); ASSERT(img->TexFormat == MESA_FORMAT_RGB888); ASSERT(img->_IsPowerOfTwo); @@ -1398,8 +1398,8 @@ opt_sample_rgba_2d(struct gl_context *ctx, GLuint i; (void) ctx; (void) lambda; - ASSERT(tObj->WrapS==GL_REPEAT); - ASSERT(tObj->WrapT==GL_REPEAT); + ASSERT(tObj->Sampler.WrapS==GL_REPEAT); + ASSERT(tObj->Sampler.WrapT==GL_REPEAT); ASSERT(img->Border==0); ASSERT(img->TexFormat == MESA_FORMAT_RGBA8888); ASSERT(img->_IsPowerOfTwo); @@ -1428,8 +1428,8 @@ sample_lambda_2d(struct gl_context *ctx, GLuint minStart, minEnd; /* texels with minification */ GLuint magStart, magEnd; /* texels with magnification */ - const GLboolean repeatNoBorderPOT = (tObj->WrapS == GL_REPEAT) - && (tObj->WrapT == GL_REPEAT) + const GLboolean repeatNoBorderPOT = (tObj->Sampler.WrapS == GL_REPEAT) + && (tObj->Sampler.WrapT == GL_REPEAT) && (tImg->Border == 0 && (tImg->Width == tImg->RowStride)) && (tImg->_BaseFormat != GL_COLOR_INDEX) && tImg->_IsPowerOfTwo; @@ -1441,7 +1441,7 @@ sample_lambda_2d(struct gl_context *ctx, if (minStart < minEnd) { /* do the minified texels */ const GLuint m = minEnd - minStart; - switch (tObj->MinFilter) { + switch (tObj->Sampler.MinFilter) { case GL_NEAREST: if (repeatNoBorderPOT) { switch (tImg->TexFormat) { @@ -1498,7 +1498,7 @@ sample_lambda_2d(struct gl_context *ctx, /* do the magnified texels */ const GLuint m = magEnd - magStart; - switch (tObj->MagFilter) { + switch (tObj->Sampler.MagFilter) { case GL_NEAREST: if (repeatNoBorderPOT) { switch (tImg->TexFormat) { @@ -1552,9 +1552,9 @@ sample_3d_nearest(struct gl_context *ctx, GLint i, j, k; (void) ctx; - i = nearest_texel_location(tObj->WrapS, img, width, texcoord[0]); - j = nearest_texel_location(tObj->WrapT, img, height, texcoord[1]); - k = nearest_texel_location(tObj->WrapR, img, depth, texcoord[2]); + i = nearest_texel_location(tObj->Sampler.WrapS, img, width, texcoord[0]); + j = nearest_texel_location(tObj->Sampler.WrapT, img, height, texcoord[1]); + k = nearest_texel_location(tObj->Sampler.WrapR, img, depth, texcoord[2]); if (i < 0 || i >= (GLint) img->Width || j < 0 || j >= (GLint) img->Height || @@ -1587,9 +1587,9 @@ sample_3d_linear(struct gl_context *ctx, GLfloat t000[4], t010[4], t001[4], t011[4]; GLfloat t100[4], t110[4], t101[4], t111[4]; - linear_texel_locations(tObj->WrapS, img, width, texcoord[0], &i0, &i1, &a); - linear_texel_locations(tObj->WrapT, img, height, texcoord[1], &j0, &j1, &b); - linear_texel_locations(tObj->WrapR, img, depth, texcoord[2], &k0, &k1, &c); + linear_texel_locations(tObj->Sampler.WrapS, img, width, texcoord[0], &i0, &i1, &a); + linear_texel_locations(tObj->Sampler.WrapT, img, height, texcoord[1], &j0, &j1, &b); + linear_texel_locations(tObj->Sampler.WrapR, img, depth, texcoord[2], &k0, &k1, &c); if (img->Border) { i0 += img->Border; @@ -1794,7 +1794,7 @@ sample_lambda_3d(struct gl_context *ctx, if (minStart < minEnd) { /* do the minified texels */ GLuint m = minEnd - minStart; - switch (tObj->MinFilter) { + switch (tObj->Sampler.MinFilter) { case GL_NEAREST: for (i = minStart; i < minEnd; i++) sample_3d_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel], @@ -1829,7 +1829,7 @@ sample_lambda_3d(struct gl_context *ctx, if (magStart < magEnd) { /* do the magnified texels */ - switch (tObj->MagFilter) { + switch (tObj->Sampler.MagFilter) { case GL_NEAREST: for (i = magStart; i < magEnd; i++) sample_3d_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel], @@ -2091,7 +2091,7 @@ sample_lambda_cube(struct gl_context *ctx, if (minStart < minEnd) { /* do the minified texels */ const GLuint m = minEnd - minStart; - switch (tObj->MinFilter) { + switch (tObj->Sampler.MinFilter) { case GL_NEAREST: sample_nearest_cube(ctx, tObj, m, texcoords + minStart, lambda + minStart, rgba + minStart); @@ -2128,7 +2128,7 @@ sample_lambda_cube(struct gl_context *ctx, if (magStart < magEnd) { /* do the magnified texels */ const GLuint m = magEnd - magStart; - switch (tObj->MagFilter) { + switch (tObj->Sampler.MagFilter) { case GL_NEAREST: sample_nearest_cube(ctx, tObj, m, texcoords + magStart, lambda + magStart, rgba + magStart); @@ -2163,18 +2163,18 @@ sample_nearest_rect(struct gl_context *ctx, (void) ctx; (void) lambda; - ASSERT(tObj->WrapS == GL_CLAMP || - tObj->WrapS == GL_CLAMP_TO_EDGE || - tObj->WrapS == GL_CLAMP_TO_BORDER); - ASSERT(tObj->WrapT == GL_CLAMP || - tObj->WrapT == GL_CLAMP_TO_EDGE || - tObj->WrapT == GL_CLAMP_TO_BORDER); + ASSERT(tObj->Sampler.WrapS == GL_CLAMP || + tObj->Sampler.WrapS == GL_CLAMP_TO_EDGE || + tObj->Sampler.WrapS == GL_CLAMP_TO_BORDER); + ASSERT(tObj->Sampler.WrapT == GL_CLAMP || + tObj->Sampler.WrapT == GL_CLAMP_TO_EDGE || + tObj->Sampler.WrapT == GL_CLAMP_TO_BORDER); ASSERT(img->_BaseFormat != GL_COLOR_INDEX); for (i = 0; i < n; i++) { GLint row, col; - col = clamp_rect_coord_nearest(tObj->WrapS, texcoords[i][0], width); - row = clamp_rect_coord_nearest(tObj->WrapT, texcoords[i][1], height); + col = clamp_rect_coord_nearest(tObj->Sampler.WrapS, texcoords[i][0], width); + row = clamp_rect_coord_nearest(tObj->Sampler.WrapT, texcoords[i][1], height); if (col < 0 || col >= width || row < 0 || row >= height) get_border_color(tObj, img, rgba[i]); else @@ -2197,12 +2197,12 @@ sample_linear_rect(struct gl_context *ctx, (void) ctx; (void) lambda; - ASSERT(tObj->WrapS == GL_CLAMP || - tObj->WrapS == GL_CLAMP_TO_EDGE || - tObj->WrapS == GL_CLAMP_TO_BORDER); - ASSERT(tObj->WrapT == GL_CLAMP || - tObj->WrapT == GL_CLAMP_TO_EDGE || - tObj->WrapT == GL_CLAMP_TO_BORDER); + ASSERT(tObj->Sampler.WrapS == GL_CLAMP || + tObj->Sampler.WrapS == GL_CLAMP_TO_EDGE || + tObj->Sampler.WrapS == GL_CLAMP_TO_BORDER); + ASSERT(tObj->Sampler.WrapT == GL_CLAMP || + tObj->Sampler.WrapT == GL_CLAMP_TO_EDGE || + tObj->Sampler.WrapT == GL_CLAMP_TO_BORDER); ASSERT(img->_BaseFormat != GL_COLOR_INDEX); for (i = 0; i < n; i++) { @@ -2211,9 +2211,9 @@ sample_linear_rect(struct gl_context *ctx, GLfloat a, b; GLbitfield useBorderColor = 0x0; - clamp_rect_coord_linear(tObj->WrapS, texcoords[i][0], width, + clamp_rect_coord_linear(tObj->Sampler.WrapS, texcoords[i][0], width, &i0, &i1, &a); - clamp_rect_coord_linear(tObj->WrapT, texcoords[i][1], height, + clamp_rect_coord_linear(tObj->Sampler.WrapT, texcoords[i][1], height, &j0, &j1, &b); /* compute integer rows/columns */ @@ -2264,7 +2264,7 @@ sample_lambda_rect(struct gl_context *ctx, &minStart, &minEnd, &magStart, &magEnd); if (minStart < minEnd) { - if (tObj->MinFilter == GL_NEAREST) { + if (tObj->Sampler.MinFilter == GL_NEAREST) { sample_nearest_rect(ctx, tObj, minEnd - minStart, texcoords + minStart, NULL, rgba + minStart); } @@ -2274,7 +2274,7 @@ sample_lambda_rect(struct gl_context *ctx, } } if (magStart < magEnd) { - if (tObj->MagFilter == GL_NEAREST) { + if (tObj->Sampler.MagFilter == GL_NEAREST) { sample_nearest_rect(ctx, tObj, magEnd - magStart, texcoords + magStart, NULL, rgba + magStart); } @@ -2307,8 +2307,8 @@ sample_2d_array_nearest(struct gl_context *ctx, GLint array; (void) ctx; - i = nearest_texel_location(tObj->WrapS, img, width, texcoord[0]); - j = nearest_texel_location(tObj->WrapT, img, height, texcoord[1]); + i = nearest_texel_location(tObj->Sampler.WrapS, img, width, texcoord[0]); + j = nearest_texel_location(tObj->Sampler.WrapT, img, height, texcoord[1]); array = tex_array_slice(texcoord[2], depth); if (i < 0 || i >= (GLint) img->Width || @@ -2342,12 +2342,12 @@ sample_2d_array_linear(struct gl_context *ctx, GLfloat a, b; GLfloat t00[4], t01[4], t10[4], t11[4]; - linear_texel_locations(tObj->WrapS, img, width, texcoord[0], &i0, &i1, &a); - linear_texel_locations(tObj->WrapT, img, height, texcoord[1], &j0, &j1, &b); + linear_texel_locations(tObj->Sampler.WrapS, img, width, texcoord[0], &i0, &i1, &a); + linear_texel_locations(tObj->Sampler.WrapT, img, height, texcoord[1], &j0, &j1, &b); array = tex_array_slice(texcoord[2], depth); if (array < 0 || array >= depth) { - COPY_4V(rgba, tObj->BorderColor.f); + COPY_4V(rgba, tObj->Sampler.BorderColor.f); } else { if (img->Border) { @@ -2532,7 +2532,7 @@ sample_lambda_2d_array(struct gl_context *ctx, if (minStart < minEnd) { /* do the minified texels */ GLuint m = minEnd - minStart; - switch (tObj->MinFilter) { + switch (tObj->Sampler.MinFilter) { case GL_NEAREST: for (i = minStart; i < minEnd; i++) sample_2d_array_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel], @@ -2575,7 +2575,7 @@ sample_lambda_2d_array(struct gl_context *ctx, if (magStart < magEnd) { /* do the magnified texels */ - switch (tObj->MagFilter) { + switch (tObj->Sampler.MagFilter) { case GL_NEAREST: for (i = magStart; i < magEnd; i++) sample_2d_array_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel], @@ -2616,7 +2616,7 @@ sample_1d_array_nearest(struct gl_context *ctx, GLint array; (void) ctx; - i = nearest_texel_location(tObj->WrapS, img, width, texcoord[0]); + i = nearest_texel_location(tObj->Sampler.WrapS, img, width, texcoord[0]); array = tex_array_slice(texcoord[1], height); if (i < 0 || i >= (GLint) img->Width || @@ -2648,7 +2648,7 @@ sample_1d_array_linear(struct gl_context *ctx, GLfloat a; GLfloat t0[4], t1[4]; - linear_texel_locations(tObj->WrapS, img, width, texcoord[0], &i0, &i1, &a); + linear_texel_locations(tObj->Sampler.WrapS, img, width, texcoord[0], &i0, &i1, &a); array = tex_array_slice(texcoord[1], height); if (img->Border) { @@ -2813,7 +2813,7 @@ sample_lambda_1d_array(struct gl_context *ctx, if (minStart < minEnd) { /* do the minified texels */ GLuint m = minEnd - minStart; - switch (tObj->MinFilter) { + switch (tObj->Sampler.MinFilter) { case GL_NEAREST: for (i = minStart; i < minEnd; i++) sample_1d_array_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel], @@ -2852,7 +2852,7 @@ sample_lambda_1d_array(struct gl_context *ctx, if (magStart < magEnd) { /* do the magnified texels */ - switch (tObj->MagFilter) { + switch (tObj->Sampler.MagFilter) { case GL_NEAREST: for (i = magStart; i < magEnd; i++) sample_1d_array_nearest(ctx, tObj, tObj->Image[0][tObj->BaseLevel], @@ -2975,13 +2975,13 @@ choose_depth_texture_level(const struct gl_texture_object *tObj, GLfloat lambda) { GLint level; - if (tObj->MinFilter == GL_NEAREST || tObj->MinFilter == GL_LINEAR) { + if (tObj->Sampler.MinFilter == GL_NEAREST || tObj->Sampler.MinFilter == GL_LINEAR) { /* no mipmapping - use base level */ level = tObj->BaseLevel; } else { /* choose mipmap level */ - lambda = CLAMP(lambda, tObj->MinLod, tObj->MaxLod); + lambda = CLAMP(lambda, tObj->Sampler.MinLod, tObj->Sampler.MaxLod); level = (GLint) lambda; level = CLAMP(level, tObj->BaseLevel, tObj->_MaxLevel); } @@ -3020,14 +3020,14 @@ sample_depth_texture( struct gl_context *ctx, tObj->Target == GL_TEXTURE_1D_ARRAY_EXT || tObj->Target == GL_TEXTURE_2D_ARRAY_EXT); - ambient = tObj->CompareFailValue; + ambient = tObj->Sampler.CompareFailValue; - /* XXXX if tObj->MinFilter != tObj->MagFilter, we're ignoring lambda */ + /* XXXX if tObj->Sampler.MinFilter != tObj->Sampler.MagFilter, we're ignoring lambda */ - function = (tObj->CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB) ? - tObj->CompareFunc : GL_NONE; + function = (tObj->Sampler.CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB) ? + tObj->Sampler.CompareFunc : GL_NONE; - if (tObj->MagFilter == GL_NEAREST) { + if (tObj->Sampler.MagFilter == GL_NEAREST) { GLuint i; for (i = 0; i < n; i++) { GLfloat depthSample, depthRef; @@ -3040,14 +3040,14 @@ sample_depth_texture( struct gl_context *ctx, img->FetchTexelf(img, col, row, slice, &depthSample); } else { - depthSample = tObj->BorderColor.f[0]; + depthSample = tObj->Sampler.BorderColor.f[0]; } depthRef = CLAMP(texcoords[i][compare_coord], 0.0F, 1.0F); result = shadow_compare(function, depthRef, depthSample, ambient); - switch (tObj->DepthMode) { + switch (tObj->Sampler.DepthMode) { case GL_LUMINANCE: ASSIGN_4V(texel[i], result, result, result, 1.0F); break; @@ -3067,7 +3067,7 @@ sample_depth_texture( struct gl_context *ctx, } else { GLuint i; - ASSERT(tObj->MagFilter == GL_LINEAR); + ASSERT(tObj->Sampler.MagFilter == GL_LINEAR); for (i = 0; i < n; i++) { GLfloat depth00, depth01, depth10, depth11, depthRef; GLint i0, i1, j0, j1; @@ -3095,21 +3095,21 @@ sample_depth_texture( struct gl_context *ctx, } if (slice < 0 || slice >= (GLint) depth) { - depth00 = tObj->BorderColor.f[0]; - depth01 = tObj->BorderColor.f[0]; - depth10 = tObj->BorderColor.f[0]; - depth11 = tObj->BorderColor.f[0]; + depth00 = tObj->Sampler.BorderColor.f[0]; + depth01 = tObj->Sampler.BorderColor.f[0]; + depth10 = tObj->Sampler.BorderColor.f[0]; + depth11 = tObj->Sampler.BorderColor.f[0]; } else { /* get four depth samples from the texture */ if (useBorderTexel & (I0BIT | J0BIT)) { - depth00 = tObj->BorderColor.f[0]; + depth00 = tObj->Sampler.BorderColor.f[0]; } else { img->FetchTexelf(img, i0, j0, slice, &depth00); } if (useBorderTexel & (I1BIT | J0BIT)) { - depth10 = tObj->BorderColor.f[0]; + depth10 = tObj->Sampler.BorderColor.f[0]; } else { img->FetchTexelf(img, i1, j0, slice, &depth10); @@ -3117,13 +3117,13 @@ sample_depth_texture( struct gl_context *ctx, if (tObj->Target != GL_TEXTURE_1D_ARRAY_EXT) { if (useBorderTexel & (I0BIT | J1BIT)) { - depth01 = tObj->BorderColor.f[0]; + depth01 = tObj->Sampler.BorderColor.f[0]; } else { img->FetchTexelf(img, i0, j1, slice, &depth01); } if (useBorderTexel & (I1BIT | J1BIT)) { - depth11 = tObj->BorderColor.f[0]; + depth11 = tObj->Sampler.BorderColor.f[0]; } else { img->FetchTexelf(img, i1, j1, slice, &depth11); @@ -3141,7 +3141,7 @@ sample_depth_texture( struct gl_context *ctx, depth00, depth01, depth10, depth11, ambient, wi, wj); - switch (tObj->DepthMode) { + switch (tObj->Sampler.DepthMode) { case GL_LUMINANCE: ASSIGN_4V(texel[i], result, result, result, 1.0F); break; @@ -3197,7 +3197,8 @@ _swrast_choose_texture_sample_func( struct gl_context *ctx, return &null_sample_func; } else { - const GLboolean needLambda = (GLboolean) (t->MinFilter != t->MagFilter); + const GLboolean needLambda = + (GLboolean) (t->Sampler.MinFilter != t->Sampler.MagFilter); const GLenum format = t->Image[0][t->BaseLevel]->_BaseFormat; switch (t->Target) { @@ -3208,11 +3209,11 @@ _swrast_choose_texture_sample_func( struct gl_context *ctx, else if (needLambda) { return &sample_lambda_1d; } - else if (t->MinFilter == GL_LINEAR) { + else if (t->Sampler.MinFilter == GL_LINEAR) { return &sample_linear_1d; } else { - ASSERT(t->MinFilter == GL_NEAREST); + ASSERT(t->Sampler.MinFilter == GL_NEAREST); return &sample_nearest_1d; } case GL_TEXTURE_2D: @@ -3222,22 +3223,22 @@ _swrast_choose_texture_sample_func( struct gl_context *ctx, else if (needLambda) { return &sample_lambda_2d; } - else if (t->MinFilter == GL_LINEAR) { + else if (t->Sampler.MinFilter == GL_LINEAR) { return &sample_linear_2d; } else { /* check for a few optimized cases */ const struct gl_texture_image *img = t->Image[0][t->BaseLevel]; - ASSERT(t->MinFilter == GL_NEAREST); - if (t->WrapS == GL_REPEAT && - t->WrapT == GL_REPEAT && + ASSERT(t->Sampler.MinFilter == GL_NEAREST); + if (t->Sampler.WrapS == GL_REPEAT && + t->Sampler.WrapT == GL_REPEAT && img->_IsPowerOfTwo && img->Border == 0 && img->TexFormat == MESA_FORMAT_RGB888) { return &opt_sample_rgb_2d; } - else if (t->WrapS == GL_REPEAT && - t->WrapT == GL_REPEAT && + else if (t->Sampler.WrapS == GL_REPEAT && + t->Sampler.WrapT == GL_REPEAT && img->_IsPowerOfTwo && img->Border == 0 && img->TexFormat == MESA_FORMAT_RGBA8888) { @@ -3251,22 +3252,22 @@ _swrast_choose_texture_sample_func( struct gl_context *ctx, if (needLambda) { return &sample_lambda_3d; } - else if (t->MinFilter == GL_LINEAR) { + else if (t->Sampler.MinFilter == GL_LINEAR) { return &sample_linear_3d; } else { - ASSERT(t->MinFilter == GL_NEAREST); + ASSERT(t->Sampler.MinFilter == GL_NEAREST); return &sample_nearest_3d; } case GL_TEXTURE_CUBE_MAP: if (needLambda) { return &sample_lambda_cube; } - else if (t->MinFilter == GL_LINEAR) { + else if (t->Sampler.MinFilter == GL_LINEAR) { return &sample_linear_cube; } else { - ASSERT(t->MinFilter == GL_NEAREST); + ASSERT(t->Sampler.MinFilter == GL_NEAREST); return &sample_nearest_cube; } case GL_TEXTURE_RECTANGLE_NV: @@ -3276,33 +3277,33 @@ _swrast_choose_texture_sample_func( struct gl_context *ctx, else if (needLambda) { return &sample_lambda_rect; } - else if (t->MinFilter == GL_LINEAR) { + else if (t->Sampler.MinFilter == GL_LINEAR) { return &sample_linear_rect; } else { - ASSERT(t->MinFilter == GL_NEAREST); + ASSERT(t->Sampler.MinFilter == GL_NEAREST); return &sample_nearest_rect; } case GL_TEXTURE_1D_ARRAY_EXT: if (needLambda) { return &sample_lambda_1d_array; } - else if (t->MinFilter == GL_LINEAR) { + else if (t->Sampler.MinFilter == GL_LINEAR) { return &sample_linear_1d_array; } else { - ASSERT(t->MinFilter == GL_NEAREST); + ASSERT(t->Sampler.MinFilter == GL_NEAREST); return &sample_nearest_1d_array; } case GL_TEXTURE_2D_ARRAY_EXT: if (needLambda) { return &sample_lambda_2d_array; } - else if (t->MinFilter == GL_LINEAR) { + else if (t->Sampler.MinFilter == GL_LINEAR) { return &sample_linear_2d_array; } else { - ASSERT(t->MinFilter == GL_NEAREST); + ASSERT(t->Sampler.MinFilter == GL_NEAREST); return &sample_nearest_2d_array; } default: diff --git a/src/mesa/swrast/s_triangle.c b/src/mesa/swrast/s_triangle.c index d07a4ef7513..8a9671aa08a 100644 --- a/src/mesa/swrast/s_triangle.c +++ b/src/mesa/swrast/s_triangle.c @@ -540,7 +540,7 @@ affine_span(struct gl_context *ctx, SWspan *span, info.smask = texImg->Width - 1; \ info.tmask = texImg->Height - 1; \ info.format = texImg->TexFormat; \ - info.filter = obj->MinFilter; \ + info.filter = obj->Sampler.MinFilter; \ info.envmode = unit->EnvMode; \ info.er = 0; \ info.eg = 0; \ @@ -805,7 +805,7 @@ fast_persp_span(struct gl_context *ctx, SWspan *span, info.smask = texImg->Width - 1; \ info.tmask = texImg->Height - 1; \ info.format = texImg->TexFormat; \ - info.filter = obj->MinFilter; \ + info.filter = obj->Sampler.MinFilter; \ info.envmode = unit->EnvMode; \ info.er = 0; \ info.eg = 0; \ @@ -1044,8 +1044,8 @@ _swrast_choose_triangle( struct gl_context *ctx ) texImg = texObj2D ? texObj2D->Image[0][texObj2D->BaseLevel] : NULL; format = texImg ? texImg->TexFormat : MESA_FORMAT_NONE; - minFilter = texObj2D ? texObj2D->MinFilter : GL_NONE; - magFilter = texObj2D ? texObj2D->MagFilter : GL_NONE; + minFilter = texObj2D ? texObj2D->Sampler.MinFilter : GL_NONE; + magFilter = texObj2D ? texObj2D->Sampler.MagFilter : GL_NONE; envMode = ctx->Texture.Unit[0].EnvMode; /* First see if we can use an optimized 2-D texture function */ @@ -1054,8 +1054,8 @@ _swrast_choose_triangle( struct gl_context *ctx ) && !ctx->ATIFragmentShader._Enabled && ctx->Texture._EnabledUnits == 0x1 && ctx->Texture.Unit[0]._ReallyEnabled == TEXTURE_2D_BIT - && texObj2D->WrapS == GL_REPEAT - && texObj2D->WrapT == GL_REPEAT + && texObj2D->Sampler.WrapS == GL_REPEAT + && texObj2D->Sampler.WrapT == GL_REPEAT && texObj2D->_Swizzle == SWIZZLE_NOOP && texImg->_IsPowerOfTwo && texImg->Border == 0 diff --git a/src/mesa/tnl/t_context.c b/src/mesa/tnl/t_context.c index 5f5e2663b5f..a6da8cafe5a 100644 --- a/src/mesa/tnl/t_context.c +++ b/src/mesa/tnl/t_context.c @@ -138,16 +138,12 @@ _tnl_InvalidateState( struct gl_context *ctx, GLuint new_state ) } } - if (ctx->Fog.Enabled) { - /* fixed-function fog */ + if (ctx->Fog.Enabled + || (fp != NULL && (fp->Base.InputsRead & FRAG_BIT_FOGC) != 0)) { + /* Either fixed-function fog or a fragment program needs fog coord. + */ RENDERINPUTS_SET( tnl->render_inputs_bitset, _TNL_ATTRIB_FOG ); } - else if (fp) { - if (fp->FogOption != GL_NONE || (fp->Base.InputsRead & FRAG_BIT_FOGC)) { - /* fragment program needs fog coord */ - RENDERINPUTS_SET( tnl->render_inputs_bitset, _TNL_ATTRIB_FOG ); - } - } if (ctx->Polygon.FrontMode != GL_FILL || ctx->Polygon.BackMode != GL_FILL) diff --git a/src/mesa/vbo/vbo_context.c b/src/mesa/vbo/vbo_context.c index 6656ed89816..9de770d0bcf 100644 --- a/src/mesa/vbo/vbo_context.c +++ b/src/mesa/vbo/vbo_context.c @@ -72,6 +72,7 @@ static void init_legacy_currval(struct gl_context *ctx) cl->Type = GL_FLOAT; cl->Format = GL_RGBA; cl->Ptr = (const void *)ctx->Current.Attrib[i]; + cl->_ElementSize = cl->Size * sizeof(GLfloat); _mesa_reference_buffer_object(ctx, &cl->BufferObj, ctx->Shared->NullBufferObj); } @@ -98,6 +99,7 @@ static void init_generic_currval(struct gl_context *ctx) cl->Stride = 0; cl->StrideB = 0; cl->Enabled = 1; + cl->_ElementSize = cl->Size * sizeof(GLfloat); _mesa_reference_buffer_object(ctx, &cl->BufferObj, ctx->Shared->NullBufferObj); } @@ -143,6 +145,7 @@ static void init_mat_currval(struct gl_context *ctx) cl->Stride = 0; cl->StrideB = 0; cl->Enabled = 1; + cl->_ElementSize = cl->Size * sizeof(GLfloat); _mesa_reference_buffer_object(ctx, &cl->BufferObj, ctx->Shared->NullBufferObj); } diff --git a/src/mesa/vbo/vbo_exec_api.c b/src/mesa/vbo/vbo_exec_api.c index fcd544de763..3c7c439b64c 100644 --- a/src/mesa/vbo/vbo_exec_api.c +++ b/src/mesa/vbo/vbo_exec_api.c @@ -168,6 +168,8 @@ static void vbo_exec_copy_to_current( struct vbo_exec_context *exec ) * directly. */ vbo->currval[i].Size = exec->vtx.attrsz[i]; + assert(vbo->currval[i].Type == GL_FLOAT); + vbo->currval[i]._ElementSize = vbo->currval[i].Size * sizeof(GLfloat); /* This triggers rather too much recalculation of Mesa state * that doesn't get used (eg light positions). diff --git a/src/mesa/vbo/vbo_exec_array.c b/src/mesa/vbo/vbo_exec_array.c index 98d6badc47a..a49cd5017a3 100644 --- a/src/mesa/vbo/vbo_exec_array.c +++ b/src/mesa/vbo/vbo_exec_array.c @@ -585,15 +585,11 @@ vbo_draw_arrays(struct gl_context *ctx, GLenum mode, GLint start, if (ctx->NewState) _mesa_update_state(ctx); + /* init most fields to zero */ + memset(prim, 0, sizeof(prim)); prim[0].begin = 1; prim[0].end = 1; - prim[0].weak = 0; - prim[0].pad = 0; prim[0].mode = mode; - prim[0].start = 0; /* filled in below */ - prim[0].count = 0; /* filled in below */ - prim[0].indexed = 0; - prim[0].basevertex = 0; prim[0].num_instances = numInstances; /* Implement the primitive restart index */ @@ -943,8 +939,13 @@ vbo_exec_DrawRangeElementsBaseVertex(GLenum mode, /* Set 'end' to the max possible legal value */ assert(ctx->Array.ArrayObj->_MaxElement >= 1); end = ctx->Array.ArrayObj->_MaxElement - 1; + + if (end < start) { + return; + } } - else if (0) { + + if (0) { printf("glDraw[Range]Elements{,BaseVertex}" "(start %u, end %u, type 0x%x, count %d) ElemBuf %u, " "base %d\n", diff --git a/src/mesa/vbo/vbo_exec_draw.c b/src/mesa/vbo/vbo_exec_draw.c index 539658021e3..7e8d8602093 100644 --- a/src/mesa/vbo/vbo_exec_draw.c +++ b/src/mesa/vbo/vbo_exec_draw.c @@ -239,6 +239,7 @@ vbo_exec_bind_arrays( struct gl_context *ctx ) arrays[attr].Type = GL_FLOAT; arrays[attr].Format = GL_RGBA; arrays[attr].Enabled = 1; + arrays[attr]._ElementSize = arrays[attr].Size * sizeof(GLfloat); _mesa_reference_buffer_object(ctx, &arrays[attr].BufferObj, exec->vtx.bufferobj); diff --git a/src/mesa/vbo/vbo_save_draw.c b/src/mesa/vbo/vbo_save_draw.c index 634a6d3f84b..ca4cff38a89 100644 --- a/src/mesa/vbo/vbo_save_draw.c +++ b/src/mesa/vbo/vbo_save_draw.c @@ -90,6 +90,8 @@ _playback_copy_to_current(struct gl_context *ctx, memcpy(current, tmp, 4 * sizeof(GLfloat)); vbo->currval[i].Size = node->attrsz[i]; + assert(vbo->currval[i].Type == GL_FLOAT); + vbo->currval[i]._ElementSize = vbo->currval[i].Size * sizeof(GLfloat); if (i >= VBO_ATTRIB_FIRST_MATERIAL && i <= VBO_ATTRIB_LAST_MATERIAL) @@ -193,6 +195,7 @@ static void vbo_bind_vertex_list(struct gl_context *ctx, arrays[attr].Type = GL_FLOAT; arrays[attr].Format = GL_RGBA; arrays[attr].Enabled = 1; + arrays[attr]._ElementSize = arrays[attr].Size * sizeof(GLfloat); _mesa_reference_buffer_object(ctx, &arrays[attr].BufferObj, node->vertex_store->bufferobj); diff --git a/src/mesa/vbo/vbo_split_copy.c b/src/mesa/vbo/vbo_split_copy.c index 8c981f93e5c..ecca1171673 100644 --- a/src/mesa/vbo/vbo_split_copy.c +++ b/src/mesa/vbo/vbo_split_copy.c @@ -519,6 +519,7 @@ replay_init( struct copy_context *copy ) dst->Enabled = GL_TRUE; dst->Normalized = src->Normalized; dst->BufferObj = ctx->Shared->NullBufferObj; + dst->_ElementSize = src->_ElementSize; dst->_MaxElement = copy->dstbuf_size; /* may be less! */ offset += copy->varying[i].size; diff --git a/src/mesa/vf/vf.c b/src/mesa/vf/vf.c deleted file mode 100644 index defb7cbe2c6..00000000000 --- a/src/mesa/vf/vf.c +++ /dev/null @@ -1,372 +0,0 @@ -/* - * Copyright 2003 Tungsten Graphics, 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 - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, 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 NON-INFRINGEMENT. IN NO EVENT SHALL - * TUNGSTEN GRAPHICS AND/OR THEIR SUPPLIERS 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. - * - * Authors: - * Keith Whitwell <[email protected]> - */ - -#include "main/glheader.h" -#include "main/context.h" -#include "main/colormac.h" - -#include "vf.h" - -#define DBG 0 - - - -static GLboolean match_fastpath( struct vertex_fetch *vf, - const struct vf_fastpath *fp) -{ - GLuint j; - - if (vf->attr_count != fp->attr_count) - return GL_FALSE; - - for (j = 0; j < vf->attr_count; j++) - if (vf->attr[j].format != fp->attr[j].format || - vf->attr[j].inputsize != fp->attr[j].size || - vf->attr[j].vertoffset != fp->attr[j].offset) - return GL_FALSE; - - if (fp->match_strides) { - if (vf->vertex_stride != fp->vertex_stride) - return GL_FALSE; - - for (j = 0; j < vf->attr_count; j++) - if (vf->attr[j].inputstride != fp->attr[j].stride) - return GL_FALSE; - } - - return GL_TRUE; -} - -static GLboolean search_fastpath_emit( struct vertex_fetch *vf ) -{ - struct vf_fastpath *fp = vf->fastpath; - - for ( ; fp ; fp = fp->next) { - if (match_fastpath(vf, fp)) { - vf->emit = fp->func; - return GL_TRUE; - } - } - - return GL_FALSE; -} - -void vf_register_fastpath( struct vertex_fetch *vf, - GLboolean match_strides ) -{ - struct vf_fastpath *fastpath = CALLOC_STRUCT(vf_fastpath); - GLuint i; - - fastpath->vertex_stride = vf->vertex_stride; - fastpath->attr_count = vf->attr_count; - fastpath->match_strides = match_strides; - fastpath->func = vf->emit; - fastpath->attr = (struct vf_attr_type *) - malloc(vf->attr_count * sizeof(fastpath->attr[0])); - - for (i = 0; i < vf->attr_count; i++) { - fastpath->attr[i].format = vf->attr[i].format; - fastpath->attr[i].stride = vf->attr[i].inputstride; - fastpath->attr[i].size = vf->attr[i].inputsize; - fastpath->attr[i].offset = vf->attr[i].vertoffset; - } - - fastpath->next = vf->fastpath; - vf->fastpath = fastpath; -} - - - - -/*********************************************************************** - * Build codegen functions or return generic ones: - */ -static void choose_emit_func( struct vertex_fetch *vf, - GLuint count, - GLubyte *dest) -{ - vf->emit = NULL; - - /* Does this match an existing (hardwired, codegen or known-bad) - * fastpath? - */ - if (search_fastpath_emit(vf)) { - /* Use this result. If it is null, then it is already known - * that the current state will fail for codegen and there is no - * point trying again. - */ - } - else if (vf->codegen_emit) { - vf->codegen_emit( vf ); - } - - if (!vf->emit) { - vf_generate_hardwired_emit(vf); - } - - /* Otherwise use the generic version: - */ - if (!vf->emit) - vf->emit = vf_generic_emit; - - vf->emit( vf, count, dest ); -} - - - - - -/*********************************************************************** - * Public entrypoints, mostly dispatch to the above: - */ - - - -GLuint vf_set_vertex_attributes( struct vertex_fetch *vf, - const struct vf_attr_map *map, - GLuint nr, - GLuint vertex_stride ) -{ - GLuint offset = 0; - GLuint i, j; - - assert(nr < VF_ATTRIB_MAX); - - memset(vf->lookup, 0, sizeof(vf->lookup)); - - for (j = 0, i = 0; i < nr; i++) { - const GLuint format = map[i].format; - if (format == EMIT_PAD) { - if (DBG) - printf("%d: pad %d, offset %d\n", i, - map[i].offset, offset); - - offset += map[i].offset; - - } - else { - assert(vf->lookup[map[i].attrib] == 0); - vf->lookup[map[i].attrib] = &vf->attr[j]; - - vf->attr[j].attrib = map[i].attrib; - vf->attr[j].format = format; - vf->attr[j].insert = vf_format_info[format].insert; - vf->attr[j].extract = vf_format_info[format].extract; - vf->attr[j].vertattrsize = vf_format_info[format].attrsize; - vf->attr[j].vertoffset = offset; - - if (DBG) - printf("%d: %s, offset %d\n", i, - vf_format_info[format].name, - vf->attr[j].vertoffset); - - offset += vf_format_info[format].attrsize; - j++; - } - } - - vf->attr_count = j; - vf->vertex_stride = vertex_stride ? vertex_stride : offset; - vf->emit = choose_emit_func; - - assert(vf->vertex_stride >= offset); - return vf->vertex_stride; -} - - - -void vf_set_vp_matrix( struct vertex_fetch *vf, - const GLfloat *viewport ) -{ - assert(vf->allow_viewport_emits); - - /* scale */ - vf->vp[0] = viewport[MAT_SX]; - vf->vp[1] = viewport[MAT_SY]; - vf->vp[2] = viewport[MAT_SZ]; - vf->vp[3] = 1.0; - - /* translate */ - vf->vp[4] = viewport[MAT_TX]; - vf->vp[5] = viewport[MAT_TY]; - vf->vp[6] = viewport[MAT_TZ]; - vf->vp[7] = 0.0; -} - -void vf_set_vp_scale_translate( struct vertex_fetch *vf, - const GLfloat *scale, - const GLfloat *translate ) -{ - assert(vf->allow_viewport_emits); - - vf->vp[0] = scale[0]; - vf->vp[1] = scale[1]; - vf->vp[2] = scale[2]; - vf->vp[3] = scale[3]; - - vf->vp[4] = translate[0]; - vf->vp[5] = translate[1]; - vf->vp[6] = translate[2]; - vf->vp[7] = translate[3]; -} - - -/* Set attribute pointers, adjusted for start position: - */ -void vf_set_sources( struct vertex_fetch *vf, - GLvector4f * const sources[], - GLuint start ) -{ - struct vf_attr *a = vf->attr; - GLuint j; - - for (j = 0; j < vf->attr_count; j++) { - const GLvector4f *vptr = sources[a[j].attrib]; - - if ((a[j].inputstride != vptr->stride) || - (a[j].inputsize != vptr->size)) - vf->emit = choose_emit_func; - - a[j].inputstride = vptr->stride; - a[j].inputsize = vptr->size; - a[j].do_insert = a[j].insert[vptr->size - 1]; - a[j].inputptr = ((GLubyte *)vptr->data) + start * vptr->stride; - } -} - - - -/* Emit count VB vertices to dest. - */ -void vf_emit_vertices( struct vertex_fetch *vf, - GLuint count, - void *dest ) -{ - vf->emit( vf, count, (GLubyte*) dest ); -} - - -/* Extract a named attribute from a hardware vertex. Will have to - * reverse any viewport transformation, swizzling or other conversions - * which may have been applied. - * - * This is mainly required for on-the-fly vertex translations to - * swrast format. - */ -void vf_get_attr( struct vertex_fetch *vf, - const void *vertex, - GLenum attr, - const GLfloat *dflt, - GLfloat *dest ) -{ - const struct vf_attr *a = vf->attr; - const GLuint attr_count = vf->attr_count; - GLuint j; - - for (j = 0; j < attr_count; j++) { - if (a[j].attrib == attr) { - a[j].extract( &a[j], dest, (GLubyte *)vertex + a[j].vertoffset ); - return; - } - } - - /* Else return the value from ctx->Current. - */ - memcpy( dest, dflt, 4*sizeof(GLfloat)); -} - - - - -struct vertex_fetch *vf_create( GLboolean allow_viewport_emits ) -{ - struct vertex_fetch *vf = CALLOC_STRUCT(vertex_fetch); - GLuint i; - - for (i = 0; i < VF_ATTRIB_MAX; i++) - vf->attr[i].vf = vf; - - vf->allow_viewport_emits = allow_viewport_emits; - - switch(CHAN_TYPE) { - case GL_UNSIGNED_BYTE: - vf->chan_scale[0] = 255.0; - vf->chan_scale[1] = 255.0; - vf->chan_scale[2] = 255.0; - vf->chan_scale[3] = 255.0; - break; - case GL_UNSIGNED_SHORT: - vf->chan_scale[0] = 65535.0; - vf->chan_scale[1] = 65535.0; - vf->chan_scale[2] = 65535.0; - vf->chan_scale[3] = 65535.0; - break; - default: - vf->chan_scale[0] = 1.0; - vf->chan_scale[1] = 1.0; - vf->chan_scale[2] = 1.0; - vf->chan_scale[3] = 1.0; - break; - } - - vf->identity[0] = 0.0; - vf->identity[1] = 0.0; - vf->identity[2] = 0.0; - vf->identity[3] = 1.0; - - vf->codegen_emit = NULL; - -#ifdef USE_SSE_ASM - if (!_mesa_getenv("MESA_NO_CODEGEN")) - vf->codegen_emit = vf_generate_sse_emit; -#endif - - return vf; -} - - -void vf_destroy( struct vertex_fetch *vf ) -{ - struct vf_fastpath *fp, *tmp; - - for (fp = vf->fastpath ; fp ; fp = tmp) { - tmp = fp->next; - FREE(fp->attr); - - /* KW: At the moment, fp->func is constrained to be allocated by - * _mesa_exec_alloc(), as the hardwired fastpaths in - * t_vertex_generic.c are handled specially. It would be nice - * to unify them, but this probably won't change until this - * module gets another overhaul. - */ - _mesa_exec_free((void *) fp->func); - FREE(fp); - } - - vf->fastpath = NULL; - FREE(vf); -} diff --git a/src/mesa/vf/vf.h b/src/mesa/vf/vf.h deleted file mode 100644 index 5fe392bbe51..00000000000 --- a/src/mesa/vf/vf.h +++ /dev/null @@ -1,234 +0,0 @@ -/* - * Copyright 2003 Tungsten Graphics, 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 - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, 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 NON-INFRINGEMENT. IN NO EVENT SHALL - * TUNGSTEN GRAPHICS AND/OR THEIR SUPPLIERS 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. - * - * Authors: - * Keith Whitwell <[email protected]> - */ - -#ifndef VF_VERTEX_H -#define VF_VERTEX_H - -#include "main/glheader.h" -#include "math/m_vector.h" - -enum { - VF_ATTRIB_POS = 0, - VF_ATTRIB_WEIGHT = 1, - VF_ATTRIB_NORMAL = 2, - VF_ATTRIB_COLOR0 = 3, - VF_ATTRIB_COLOR1 = 4, - VF_ATTRIB_FOG = 5, - VF_ATTRIB_COLOR_INDEX = 6, - VF_ATTRIB_EDGEFLAG = 7, - VF_ATTRIB_TEX0 = 8, - VF_ATTRIB_TEX1 = 9, - VF_ATTRIB_TEX2 = 10, - VF_ATTRIB_TEX3 = 11, - VF_ATTRIB_TEX4 = 12, - VF_ATTRIB_TEX5 = 13, - VF_ATTRIB_TEX6 = 14, - VF_ATTRIB_TEX7 = 15, - VF_ATTRIB_VAR0 = 16, - VF_ATTRIB_VAR1 = 17, - VF_ATTRIB_VAR2 = 18, - VF_ATTRIB_VAR3 = 19, - VF_ATTRIB_VAR4 = 20, - VF_ATTRIB_VAR5 = 21, - VF_ATTRIB_VAR6 = 22, - VF_ATTRIB_VAR7 = 23, - VF_ATTRIB_POINTSIZE = 24, - VF_ATTRIB_BFC0 = 25, - VF_ATTRIB_BFC1 = 26, - VF_ATTRIB_CLIP_POS = 27, - VF_ATTRIB_VERTEX_HEADER = 28, - VF_ATTRIB_MAX = 29 -}; - - -enum vf_attr_format { - EMIT_1F, - EMIT_2F, - EMIT_3F, - EMIT_4F, - EMIT_2F_VIEWPORT, /* do viewport transform and emit */ - EMIT_3F_VIEWPORT, /* do viewport transform and emit */ - EMIT_4F_VIEWPORT, /* do viewport transform and emit */ - EMIT_3F_XYW, /* for projective texture */ - EMIT_1UB_1F, /* for fog coordinate */ - EMIT_3UB_3F_RGB, /* for specular color */ - EMIT_3UB_3F_BGR, /* for specular color */ - EMIT_4UB_4F_RGBA, /* for color */ - EMIT_4UB_4F_BGRA, /* for color */ - EMIT_4UB_4F_ARGB, /* for color */ - EMIT_4UB_4F_ABGR, /* for color */ - EMIT_4CHAN_4F_RGBA, /* for swrast color */ - EMIT_PAD, /* leave a hole of 'offset' bytes */ - EMIT_MAX -}; - -struct vf_attr_map { - GLuint attrib; - enum vf_attr_format format; - GLuint offset; -}; - -struct vertex_fetch; - -void vf_set_vp_matrix( struct vertex_fetch *vf, - const GLfloat *viewport ); - -void vf_set_vp_scale_translate( struct vertex_fetch *vf, - const GLfloat *scale, - const GLfloat *translate ); - -GLuint vf_set_vertex_attributes( struct vertex_fetch *vf, - const struct vf_attr_map *map, - GLuint nr, - GLuint vertex_stride ); - -void vf_set_sources( struct vertex_fetch *vf, - GLvector4f * const attrib[], - GLuint start ); - -void vf_emit_vertices( struct vertex_fetch *vf, - GLuint count, - void *dest ); - -void vf_get_attr( struct vertex_fetch *vf, - const void *vertex, - GLenum attr, - const GLfloat *dflt, - GLfloat *dest ); - -struct vertex_fetch *vf_create( GLboolean allow_viewport_emits ); - -void vf_destroy( struct vertex_fetch *vf ); - - - -/*********************************************************************** - * Internal functions and structs: - */ - -struct vf_attr; - -typedef void (*vf_extract_func)( const struct vf_attr *a, - GLfloat *out, - const GLubyte *v ); - -typedef void (*vf_insert_func)( const struct vf_attr *a, - GLubyte *v, - const GLfloat *in ); - -typedef void (*vf_emit_func)( struct vertex_fetch *vf, - GLuint count, - GLubyte *dest ); - - - -/* Describes how to convert/move a vertex attribute from a vertex - * array to a vertex structure. - */ -struct vf_attr -{ - struct vertex_fetch *vf; - - GLuint format; - GLuint inputsize; - GLuint inputstride; - GLuint vertoffset; /* position of the attrib in the vertex struct */ - - GLuint attrib; /* which vertex attrib (0=position, etc) */ - GLuint vertattrsize; /* size of the attribute in bytes */ - - GLubyte *inputptr; - const vf_insert_func *insert; - vf_insert_func do_insert; - vf_extract_func extract; -}; - -struct vertex_fetch -{ - struct vf_attr attr[VF_ATTRIB_MAX]; - GLuint attr_count; - GLuint vertex_stride; - - struct vf_attr *lookup[VF_ATTRIB_MAX]; - - vf_emit_func emit; - - /* Parameters and constants for codegen: - */ - GLboolean allow_viewport_emits; - GLfloat vp[8]; - GLfloat chan_scale[4]; - GLfloat identity[4]; - - struct vf_fastpath *fastpath; - - void (*codegen_emit)( struct vertex_fetch *vf ); -}; - - -struct vf_attr_type { - GLuint format; - GLuint size; - GLuint stride; - GLuint offset; -}; - -struct vf_fastpath { - GLuint vertex_stride; - GLuint attr_count; - GLboolean match_strides; - - struct vf_attr_type *attr; - - vf_emit_func func; - struct vf_fastpath *next; -}; - - -void vf_register_fastpath( struct vertex_fetch *vtx, - GLboolean match_strides ); - -void vf_generic_emit( struct vertex_fetch *vf, - GLuint count, - GLubyte *v ); - -void vf_generate_hardwired_emit( struct vertex_fetch *vf ); - -void vf_generate_sse_emit( struct vertex_fetch *vf ); - - -struct vf_format_info { - const char *name; - vf_extract_func extract; - vf_insert_func insert[4]; - const GLuint attrsize; -}; - -const struct vf_format_info vf_format_info[EMIT_MAX]; - - -#endif diff --git a/src/mesa/vf/vf_generic.c b/src/mesa/vf/vf_generic.c deleted file mode 100644 index 95a317e99db..00000000000 --- a/src/mesa/vf/vf_generic.c +++ /dev/null @@ -1,982 +0,0 @@ - -/* - * Copyright 2003 Tungsten Graphics, 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 - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, 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 NON-INFRINGEMENT. IN NO EVENT SHALL - * TUNGSTEN GRAPHICS AND/OR THEIR SUPPLIERS 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. - * - * Authors: - * Keith Whitwell <[email protected]> - */ - -#include "main/glheader.h" -#include "main/context.h" -#include "main/colormac.h" -#include "main/macros.h" -#include "main/simple_list.h" - -#include "vf/vf.h" - - -/* - * These functions take the NDC coordinates pointed to by 'in', apply the - * NDC->Viewport mapping and store the results at 'v'. - */ - -static INLINE void insert_4f_viewport_4( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)v; - const GLfloat *scale = a->vf->vp; - const GLfloat *trans = a->vf->vp + 4; - - out[0] = scale[0] * in[0] + trans[0]; - out[1] = scale[1] * in[1] + trans[1]; - out[2] = scale[2] * in[2] + trans[2]; - out[3] = in[3]; -} - -static INLINE void insert_4f_viewport_3( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)v; - const GLfloat *scale = a->vf->vp; - const GLfloat *trans = a->vf->vp + 4; - - out[0] = scale[0] * in[0] + trans[0]; - out[1] = scale[1] * in[1] + trans[1]; - out[2] = scale[2] * in[2] + trans[2]; - out[3] = 1; -} - -static INLINE void insert_4f_viewport_2( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)v; - const GLfloat *scale = a->vf->vp; - const GLfloat *trans = a->vf->vp + 4; - - out[0] = scale[0] * in[0] + trans[0]; - out[1] = scale[1] * in[1] + trans[1]; - out[2] = trans[2]; - out[3] = 1; -} - -static INLINE void insert_4f_viewport_1( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)v; - const GLfloat *scale = a->vf->vp; - const GLfloat *trans = a->vf->vp + 4; - - out[0] = scale[0] * in[0] + trans[0]; - out[1] = trans[1]; - out[2] = trans[2]; - out[3] = 1; -} - -static INLINE void insert_3f_viewport_3( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)v; - const GLfloat *scale = a->vf->vp; - const GLfloat *trans = a->vf->vp + 4; - - out[0] = scale[0] * in[0] + trans[0]; - out[1] = scale[1] * in[1] + trans[1]; - out[2] = scale[2] * in[2] + trans[2]; -} - -static INLINE void insert_3f_viewport_2( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)v; - const GLfloat *scale = a->vf->vp; - const GLfloat *trans = a->vf->vp + 4; - - out[0] = scale[0] * in[0] + trans[0]; - out[1] = scale[1] * in[1] + trans[1]; - out[2] = scale[2] * in[2] + trans[2]; -} - -static INLINE void insert_3f_viewport_1( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)v; - const GLfloat *scale = a->vf->vp; - const GLfloat *trans = a->vf->vp + 4; - - out[0] = scale[0] * in[0] + trans[0]; - out[1] = trans[1]; - out[2] = trans[2]; -} - -static INLINE void insert_2f_viewport_2( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)v; - const GLfloat *scale = a->vf->vp; - const GLfloat *trans = a->vf->vp + 4; - - out[0] = scale[0] * in[0] + trans[0]; - out[1] = scale[1] * in[1] + trans[1]; -} - -static INLINE void insert_2f_viewport_1( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)v; - const GLfloat *scale = a->vf->vp; - const GLfloat *trans = a->vf->vp + 4; - - out[0] = scale[0] * in[0] + trans[0]; - out[1] = trans[1]; -} - - -/* - * These functions do the same as above, except for the viewport mapping. - */ - -static INLINE void insert_4f_4( const struct vf_attr *a, GLubyte *v, const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)(v); - (void) a; - - out[0] = in[0]; - out[1] = in[1]; - out[2] = in[2]; - out[3] = in[3]; -} - -static INLINE void insert_4f_3( const struct vf_attr *a, GLubyte *v, const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)(v); - (void) a; - - out[0] = in[0]; - out[1] = in[1]; - out[2] = in[2]; - out[3] = 1; -} - -static INLINE void insert_4f_2( const struct vf_attr *a, GLubyte *v, const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)(v); - (void) a; - - out[0] = in[0]; - out[1] = in[1]; - out[2] = 0; - out[3] = 1; -} - -static INLINE void insert_4f_1( const struct vf_attr *a, GLubyte *v, const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)(v); - (void) a; - - out[0] = in[0]; - out[1] = 0; - out[2] = 0; - out[3] = 1; -} - -static INLINE void insert_3f_xyw_4( const struct vf_attr *a, GLubyte *v, const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)(v); - (void) a; - - out[0] = in[0]; - out[1] = in[1]; - out[2] = in[3]; -} - -static INLINE void insert_3f_xyw_err( const struct vf_attr *a, GLubyte *v, const GLfloat *in ) -{ - (void) a; (void) v; (void) in; - exit(1); -} - -static INLINE void insert_3f_3( const struct vf_attr *a, GLubyte *v, const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)(v); - (void) a; - - out[0] = in[0]; - out[1] = in[1]; - out[2] = in[2]; -} - -static INLINE void insert_3f_2( const struct vf_attr *a, GLubyte *v, const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)(v); - (void) a; - - out[0] = in[0]; - out[1] = in[1]; - out[2] = 0; -} - -static INLINE void insert_3f_1( const struct vf_attr *a, GLubyte *v, const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)(v); - (void) a; - - out[0] = in[0]; - out[1] = 0; - out[2] = 0; -} - - -static INLINE void insert_2f_2( const struct vf_attr *a, GLubyte *v, const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)(v); - (void) a; - - out[0] = in[0]; - out[1] = in[1]; -} - -static INLINE void insert_2f_1( const struct vf_attr *a, GLubyte *v, const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)(v); - (void) a; - - out[0] = in[0]; - out[1] = 0; -} - -static INLINE void insert_1f_1( const struct vf_attr *a, GLubyte *v, const GLfloat *in ) -{ - GLfloat *out = (GLfloat *)(v); - (void) a; - - out[0] = in[0]; -} - -static INLINE void insert_null( const struct vf_attr *a, GLubyte *v, const GLfloat *in ) -{ - (void) a; (void) v; (void) in; -} - -static INLINE void insert_4chan_4f_rgba_4( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - GLchan *c = (GLchan *)v; - (void) a; - UNCLAMPED_FLOAT_TO_CHAN(c[0], in[0]); - UNCLAMPED_FLOAT_TO_CHAN(c[1], in[1]); - UNCLAMPED_FLOAT_TO_CHAN(c[2], in[2]); - UNCLAMPED_FLOAT_TO_CHAN(c[3], in[3]); -} - -static INLINE void insert_4chan_4f_rgba_3( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - GLchan *c = (GLchan *)v; - (void) a; - UNCLAMPED_FLOAT_TO_CHAN(c[0], in[0]); - UNCLAMPED_FLOAT_TO_CHAN(c[1], in[1]); - UNCLAMPED_FLOAT_TO_CHAN(c[2], in[2]); - c[3] = CHAN_MAX; -} - -static INLINE void insert_4chan_4f_rgba_2( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - GLchan *c = (GLchan *)v; - (void) a; - UNCLAMPED_FLOAT_TO_CHAN(c[0], in[0]); - UNCLAMPED_FLOAT_TO_CHAN(c[1], in[1]); - c[2] = 0; - c[3] = CHAN_MAX; -} - -static INLINE void insert_4chan_4f_rgba_1( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - GLchan *c = (GLchan *)v; - (void) a; - UNCLAMPED_FLOAT_TO_CHAN(c[0], in[0]); - c[1] = 0; - c[2] = 0; - c[3] = CHAN_MAX; -} - -static INLINE void insert_4ub_4f_rgba_4( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[2]); - UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[3]); -} - -static INLINE void insert_4ub_4f_rgba_3( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[2]); - v[3] = 0xff; -} - -static INLINE void insert_4ub_4f_rgba_2( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); - v[2] = 0; - v[3] = 0xff; -} - -static INLINE void insert_4ub_4f_rgba_1( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]); - v[1] = 0; - v[2] = 0; - v[3] = 0xff; -} - -static INLINE void insert_4ub_4f_bgra_4( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); - UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[2]); - UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[3]); -} - -static INLINE void insert_4ub_4f_bgra_3( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); - UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[2]); - v[3] = 0xff; -} - -static INLINE void insert_4ub_4f_bgra_2( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); - v[0] = 0; - v[3] = 0xff; -} - -static INLINE void insert_4ub_4f_bgra_1( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]); - v[1] = 0; - v[0] = 0; - v[3] = 0xff; -} - -static INLINE void insert_4ub_4f_argb_4( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[1]); - UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[2]); - UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[3]); -} - -static INLINE void insert_4ub_4f_argb_3( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[1]); - UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[2]); - v[0] = 0xff; -} - -static INLINE void insert_4ub_4f_argb_2( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[1]); - v[3] = 0x00; - v[0] = 0xff; -} - -static INLINE void insert_4ub_4f_argb_1( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[0]); - v[2] = 0x00; - v[3] = 0x00; - v[0] = 0xff; -} - -static INLINE void insert_4ub_4f_abgr_4( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[1]); - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[2]); - UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[3]); -} - -static INLINE void insert_4ub_4f_abgr_3( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[1]); - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[2]); - v[0] = 0xff; -} - -static INLINE void insert_4ub_4f_abgr_2( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[1]); - v[1] = 0x00; - v[0] = 0xff; -} - -static INLINE void insert_4ub_4f_abgr_1( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[3], in[0]); - v[2] = 0x00; - v[1] = 0x00; - v[0] = 0xff; -} - -static INLINE void insert_3ub_3f_rgb_3( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[2]); -} - -static INLINE void insert_3ub_3f_rgb_2( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); - v[2] = 0; -} - -static INLINE void insert_3ub_3f_rgb_1( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]); - v[1] = 0; - v[2] = 0; -} - -static INLINE void insert_3ub_3f_bgr_3( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); - UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[2]); -} - -static INLINE void insert_3ub_3f_bgr_2( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]); - UNCLAMPED_FLOAT_TO_UBYTE(v[1], in[1]); - v[0] = 0; -} - -static INLINE void insert_3ub_3f_bgr_1( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[2], in[0]); - v[1] = 0; - v[0] = 0; -} - - -static INLINE void insert_1ub_1f_1( const struct vf_attr *a, GLubyte *v, - const GLfloat *in ) -{ - (void) a; - UNCLAMPED_FLOAT_TO_UBYTE(v[0], in[0]); -} - - -/*********************************************************************** - * Functions to perform the reverse operations to the above, for - * swrast translation and clip-interpolation. - * - * Currently always extracts a full 4 floats. - */ - -static void extract_4f_viewport( const struct vf_attr *a, GLfloat *out, - const GLubyte *v ) -{ - const GLfloat *in = (const GLfloat *)v; - const GLfloat *scale = a->vf->vp; - const GLfloat *trans = a->vf->vp + 4; - - /* Although included for completeness, the position coordinate is - * usually handled differently during clipping. - */ - out[0] = (in[0] - trans[0]) / scale[0]; - out[1] = (in[1] - trans[1]) / scale[1]; - out[2] = (in[2] - trans[2]) / scale[2]; - out[3] = in[3]; -} - -static void extract_3f_viewport( const struct vf_attr *a, GLfloat *out, - const GLubyte *v ) -{ - const GLfloat *in = (const GLfloat *)v; - const GLfloat *scale = a->vf->vp; - const GLfloat *trans = a->vf->vp + 4; - - out[0] = (in[0] - trans[0]) / scale[0]; - out[1] = (in[1] - trans[1]) / scale[1]; - out[2] = (in[2] - trans[2]) / scale[2]; - out[3] = 1; -} - - -static void extract_2f_viewport( const struct vf_attr *a, GLfloat *out, - const GLubyte *v ) -{ - const GLfloat *in = (const GLfloat *)v; - const GLfloat *scale = a->vf->vp; - const GLfloat *trans = a->vf->vp + 4; - - out[0] = (in[0] - trans[0]) / scale[0]; - out[1] = (in[1] - trans[1]) / scale[1]; - out[2] = 0; - out[3] = 1; -} - - -static void extract_4f( const struct vf_attr *a, GLfloat *out, const GLubyte *v ) -{ - const GLfloat *in = (const GLfloat *)v; - (void) a; - - out[0] = in[0]; - out[1] = in[1]; - out[2] = in[2]; - out[3] = in[3]; -} - -static void extract_3f_xyw( const struct vf_attr *a, GLfloat *out, const GLubyte *v ) -{ - const GLfloat *in = (const GLfloat *)v; - (void) a; - - out[0] = in[0]; - out[1] = in[1]; - out[2] = 0; - out[3] = in[2]; -} - - -static void extract_3f( const struct vf_attr *a, GLfloat *out, const GLubyte *v ) -{ - const GLfloat *in = (const GLfloat *)v; - (void) a; - - out[0] = in[0]; - out[1] = in[1]; - out[2] = in[2]; - out[3] = 1; -} - - -static void extract_2f( const struct vf_attr *a, GLfloat *out, const GLubyte *v ) -{ - const GLfloat *in = (const GLfloat *)v; - (void) a; - - out[0] = in[0]; - out[1] = in[1]; - out[2] = 0; - out[3] = 1; -} - -static void extract_1f( const struct vf_attr *a, GLfloat *out, const GLubyte *v ) -{ - const GLfloat *in = (const GLfloat *)v; - (void) a; - - out[0] = in[0]; - out[1] = 0; - out[2] = 0; - out[3] = 1; -} - -static void extract_4chan_4f_rgba( const struct vf_attr *a, GLfloat *out, - const GLubyte *v ) -{ - GLchan *c = (GLchan *)v; - (void) a; - - out[0] = CHAN_TO_FLOAT(c[0]); - out[1] = CHAN_TO_FLOAT(c[1]); - out[2] = CHAN_TO_FLOAT(c[2]); - out[3] = CHAN_TO_FLOAT(c[3]); -} - -static void extract_4ub_4f_rgba( const struct vf_attr *a, GLfloat *out, - const GLubyte *v ) -{ - (void) a; - out[0] = UBYTE_TO_FLOAT(v[0]); - out[1] = UBYTE_TO_FLOAT(v[1]); - out[2] = UBYTE_TO_FLOAT(v[2]); - out[3] = UBYTE_TO_FLOAT(v[3]); -} - -static void extract_4ub_4f_bgra( const struct vf_attr *a, GLfloat *out, - const GLubyte *v ) -{ - (void) a; - out[2] = UBYTE_TO_FLOAT(v[0]); - out[1] = UBYTE_TO_FLOAT(v[1]); - out[0] = UBYTE_TO_FLOAT(v[2]); - out[3] = UBYTE_TO_FLOAT(v[3]); -} - -static void extract_4ub_4f_argb( const struct vf_attr *a, GLfloat *out, - const GLubyte *v ) -{ - (void) a; - out[3] = UBYTE_TO_FLOAT(v[0]); - out[0] = UBYTE_TO_FLOAT(v[1]); - out[1] = UBYTE_TO_FLOAT(v[2]); - out[2] = UBYTE_TO_FLOAT(v[3]); -} - -static void extract_4ub_4f_abgr( const struct vf_attr *a, GLfloat *out, - const GLubyte *v ) -{ - (void) a; - out[3] = UBYTE_TO_FLOAT(v[0]); - out[2] = UBYTE_TO_FLOAT(v[1]); - out[1] = UBYTE_TO_FLOAT(v[2]); - out[0] = UBYTE_TO_FLOAT(v[3]); -} - -static void extract_3ub_3f_rgb( const struct vf_attr *a, GLfloat *out, - const GLubyte *v ) -{ - (void) a; - out[0] = UBYTE_TO_FLOAT(v[0]); - out[1] = UBYTE_TO_FLOAT(v[1]); - out[2] = UBYTE_TO_FLOAT(v[2]); - out[3] = 1; -} - -static void extract_3ub_3f_bgr( const struct vf_attr *a, GLfloat *out, - const GLubyte *v ) -{ - (void) a; - out[2] = UBYTE_TO_FLOAT(v[0]); - out[1] = UBYTE_TO_FLOAT(v[1]); - out[0] = UBYTE_TO_FLOAT(v[2]); - out[3] = 1; -} - -static void extract_1ub_1f( const struct vf_attr *a, GLfloat *out, const GLubyte *v ) -{ - (void) a; - out[0] = UBYTE_TO_FLOAT(v[0]); - out[1] = 0; - out[2] = 0; - out[3] = 1; -} - - -const struct vf_format_info vf_format_info[EMIT_MAX] = -{ - { "1f", - extract_1f, - { insert_1f_1, insert_1f_1, insert_1f_1, insert_1f_1 }, - sizeof(GLfloat) }, - - { "2f", - extract_2f, - { insert_2f_1, insert_2f_2, insert_2f_2, insert_2f_2 }, - 2 * sizeof(GLfloat) }, - - { "3f", - extract_3f, - { insert_3f_1, insert_3f_2, insert_3f_3, insert_3f_3 }, - 3 * sizeof(GLfloat) }, - - { "4f", - extract_4f, - { insert_4f_1, insert_4f_2, insert_4f_3, insert_4f_4 }, - 4 * sizeof(GLfloat) }, - - { "2f_viewport", - extract_2f_viewport, - { insert_2f_viewport_1, insert_2f_viewport_2, insert_2f_viewport_2, - insert_2f_viewport_2 }, - 2 * sizeof(GLfloat) }, - - { "3f_viewport", - extract_3f_viewport, - { insert_3f_viewport_1, insert_3f_viewport_2, insert_3f_viewport_3, - insert_3f_viewport_3 }, - 3 * sizeof(GLfloat) }, - - { "4f_viewport", - extract_4f_viewport, - { insert_4f_viewport_1, insert_4f_viewport_2, insert_4f_viewport_3, - insert_4f_viewport_4 }, - 4 * sizeof(GLfloat) }, - - { "3f_xyw", - extract_3f_xyw, - { insert_3f_xyw_err, insert_3f_xyw_err, insert_3f_xyw_err, - insert_3f_xyw_4 }, - 3 * sizeof(GLfloat) }, - - { "1ub_1f", - extract_1ub_1f, - { insert_1ub_1f_1, insert_1ub_1f_1, insert_1ub_1f_1, insert_1ub_1f_1 }, - sizeof(GLubyte) }, - - { "3ub_3f_rgb", - extract_3ub_3f_rgb, - { insert_3ub_3f_rgb_1, insert_3ub_3f_rgb_2, insert_3ub_3f_rgb_3, - insert_3ub_3f_rgb_3 }, - 3 * sizeof(GLubyte) }, - - { "3ub_3f_bgr", - extract_3ub_3f_bgr, - { insert_3ub_3f_bgr_1, insert_3ub_3f_bgr_2, insert_3ub_3f_bgr_3, - insert_3ub_3f_bgr_3 }, - 3 * sizeof(GLubyte) }, - - { "4ub_4f_rgba", - extract_4ub_4f_rgba, - { insert_4ub_4f_rgba_1, insert_4ub_4f_rgba_2, insert_4ub_4f_rgba_3, - insert_4ub_4f_rgba_4 }, - 4 * sizeof(GLubyte) }, - - { "4ub_4f_bgra", - extract_4ub_4f_bgra, - { insert_4ub_4f_bgra_1, insert_4ub_4f_bgra_2, insert_4ub_4f_bgra_3, - insert_4ub_4f_bgra_4 }, - 4 * sizeof(GLubyte) }, - - { "4ub_4f_argb", - extract_4ub_4f_argb, - { insert_4ub_4f_argb_1, insert_4ub_4f_argb_2, insert_4ub_4f_argb_3, - insert_4ub_4f_argb_4 }, - 4 * sizeof(GLubyte) }, - - { "4ub_4f_abgr", - extract_4ub_4f_abgr, - { insert_4ub_4f_abgr_1, insert_4ub_4f_abgr_2, insert_4ub_4f_abgr_3, - insert_4ub_4f_abgr_4 }, - 4 * sizeof(GLubyte) }, - - { "4chan_4f_rgba", - extract_4chan_4f_rgba, - { insert_4chan_4f_rgba_1, insert_4chan_4f_rgba_2, insert_4chan_4f_rgba_3, - insert_4chan_4f_rgba_4 }, - 4 * sizeof(GLchan) }, - - { "pad", - NULL, - { NULL, NULL, NULL, NULL }, - 0 } - -}; - - - - -/*********************************************************************** - * Hardwired fastpaths for emitting whole vertices or groups of - * vertices - */ -#define EMIT5(NR, F0, F1, F2, F3, F4, NAME) \ -static void NAME( struct vertex_fetch *vf, \ - GLuint count, \ - GLubyte *v ) \ -{ \ - struct vf_attr *a = vf->attr; \ - GLuint i; \ - \ - for (i = 0 ; i < count ; i++, v += vf->vertex_stride) { \ - if (NR > 0) { \ - F0( &a[0], v + a[0].vertoffset, (GLfloat *)a[0].inputptr ); \ - a[0].inputptr += a[0].inputstride; \ - } \ - \ - if (NR > 1) { \ - F1( &a[1], v + a[1].vertoffset, (GLfloat *)a[1].inputptr ); \ - a[1].inputptr += a[1].inputstride; \ - } \ - \ - if (NR > 2) { \ - F2( &a[2], v + a[2].vertoffset, (GLfloat *)a[2].inputptr ); \ - a[2].inputptr += a[2].inputstride; \ - } \ - \ - if (NR > 3) { \ - F3( &a[3], v + a[3].vertoffset, (GLfloat *)a[3].inputptr ); \ - a[3].inputptr += a[3].inputstride; \ - } \ - \ - if (NR > 4) { \ - F4( &a[4], v + a[4].vertoffset, (GLfloat *)a[4].inputptr ); \ - a[4].inputptr += a[4].inputstride; \ - } \ - } \ -} - - -#define EMIT2(F0, F1, NAME) EMIT5(2, F0, F1, insert_null, \ - insert_null, insert_null, NAME) - -#define EMIT3(F0, F1, F2, NAME) EMIT5(3, F0, F1, F2, insert_null, \ - insert_null, NAME) - -#define EMIT4(F0, F1, F2, F3, NAME) EMIT5(4, F0, F1, F2, F3, \ - insert_null, NAME) - - -EMIT2(insert_3f_viewport_3, insert_4ub_4f_rgba_4, emit_viewport3_rgba4) -EMIT2(insert_3f_viewport_3, insert_4ub_4f_bgra_4, emit_viewport3_bgra4) -EMIT2(insert_3f_3, insert_4ub_4f_rgba_4, emit_xyz3_rgba4) - -EMIT3(insert_4f_viewport_4, insert_4ub_4f_rgba_4, insert_2f_2, emit_viewport4_rgba4_st2) -EMIT3(insert_4f_viewport_4, insert_4ub_4f_bgra_4, insert_2f_2, emit_viewport4_bgra4_st2) -EMIT3(insert_4f_4, insert_4ub_4f_rgba_4, insert_2f_2, emit_xyzw4_rgba4_st2) - -EMIT4(insert_4f_viewport_4, insert_4ub_4f_rgba_4, insert_2f_2, insert_2f_2, emit_viewport4_rgba4_st2_st2) -EMIT4(insert_4f_viewport_4, insert_4ub_4f_bgra_4, insert_2f_2, insert_2f_2, emit_viewport4_bgra4_st2_st2) -EMIT4(insert_4f_4, insert_4ub_4f_rgba_4, insert_2f_2, insert_2f_2, emit_xyzw4_rgba4_st2_st2) - - -/* Use the codegen paths to select one of a number of hardwired - * fastpaths. - */ -void vf_generate_hardwired_emit( struct vertex_fetch *vf ) -{ - vf_emit_func func = NULL; - - /* Does it fit a hardwired fastpath? Help! this is growing out of - * control! - */ - switch (vf->attr_count) { - case 2: - if (vf->attr[0].do_insert == insert_3f_viewport_3) { - if (vf->attr[1].do_insert == insert_4ub_4f_bgra_4) - func = emit_viewport3_bgra4; - else if (vf->attr[1].do_insert == insert_4ub_4f_rgba_4) - func = emit_viewport3_rgba4; - } - else if (vf->attr[0].do_insert == insert_3f_3 && - vf->attr[1].do_insert == insert_4ub_4f_rgba_4) { - func = emit_xyz3_rgba4; - } - break; - case 3: - if (vf->attr[2].do_insert == insert_2f_2) { - if (vf->attr[1].do_insert == insert_4ub_4f_rgba_4) { - if (vf->attr[0].do_insert == insert_4f_viewport_4) - func = emit_viewport4_rgba4_st2; - else if (vf->attr[0].do_insert == insert_4f_4) - func = emit_xyzw4_rgba4_st2; - } - else if (vf->attr[1].do_insert == insert_4ub_4f_bgra_4 && - vf->attr[0].do_insert == insert_4f_viewport_4) - func = emit_viewport4_bgra4_st2; - } - break; - case 4: - if (vf->attr[2].do_insert == insert_2f_2 && - vf->attr[3].do_insert == insert_2f_2) { - if (vf->attr[1].do_insert == insert_4ub_4f_rgba_4) { - if (vf->attr[0].do_insert == insert_4f_viewport_4) - func = emit_viewport4_rgba4_st2_st2; - else if (vf->attr[0].do_insert == insert_4f_4) - func = emit_xyzw4_rgba4_st2_st2; - } - else if (vf->attr[1].do_insert == insert_4ub_4f_bgra_4 && - vf->attr[0].do_insert == insert_4f_viewport_4) - func = emit_viewport4_bgra4_st2_st2; - } - break; - } - - vf->emit = func; -} - -/*********************************************************************** - * Generic (non-codegen) functions for whole vertices or groups of - * vertices - */ - -void vf_generic_emit( struct vertex_fetch *vf, - GLuint count, - GLubyte *v ) -{ - struct vf_attr *a = vf->attr; - const GLuint attr_count = vf->attr_count; - const GLuint stride = vf->vertex_stride; - GLuint i, j; - - for (i = 0 ; i < count ; i++, v += stride) { - for (j = 0; j < attr_count; j++) { - GLfloat *in = (GLfloat *)a[j].inputptr; - a[j].inputptr += a[j].inputstride; - a[j].do_insert( &a[j], v + a[j].vertoffset, in ); - } - } -} - - diff --git a/src/mesa/vf/vf_sse.c b/src/mesa/vf/vf_sse.c deleted file mode 100644 index 7b947b74a65..00000000000 --- a/src/mesa/vf/vf_sse.c +++ /dev/null @@ -1,662 +0,0 @@ -/* - * Copyright 2003 Tungsten Graphics, 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 - * on the rights to use, copy, modify, merge, publish, distribute, sub - * license, 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 NON-INFRINGEMENT. IN NO EVENT SHALL - * TUNGSTEN GRAPHICS AND/OR THEIR SUPPLIERS 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. - * - * Authors: - * Keith Whitwell <[email protected]> - */ - -#include "main/glheader.h" -#include "main/colormac.h" -#include "main/simple_list.h" -#include "main/enums.h" - -#include "vf/vf.h" - -#if defined(USE_SSE_ASM) - -#include "x86/rtasm/x86sse.h" -#include "x86/common_x86_asm.h" - - -#define X 0 -#define Y 1 -#define Z 2 -#define W 3 - - -struct x86_program { - struct x86_function func; - - struct vertex_fetch *vf; - GLboolean inputs_safe; - GLboolean outputs_safe; - GLboolean have_sse2; - - struct x86_reg identity; - struct x86_reg chan0; -}; - - -static struct x86_reg get_identity( struct x86_program *p ) -{ - return p->identity; -} - -static void emit_load4f_4( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - sse_movups(&p->func, dest, arg0); -} - -static void emit_load4f_3( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - /* Have to jump through some hoops: - * - * c 0 0 0 - * c 0 0 1 - * 0 0 c 1 - * a b c 1 - */ - sse_movss(&p->func, dest, x86_make_disp(arg0, 8)); - sse_shufps(&p->func, dest, get_identity(p), SHUF(X,Y,Z,W) ); - sse_shufps(&p->func, dest, dest, SHUF(Y,Z,X,W) ); - sse_movlps(&p->func, dest, arg0); -} - -static void emit_load4f_2( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - /* Initialize from identity, then pull in low two words: - */ - sse_movups(&p->func, dest, get_identity(p)); - sse_movlps(&p->func, dest, arg0); -} - -static void emit_load4f_1( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - /* Pull in low word, then swizzle in identity */ - sse_movss(&p->func, dest, arg0); - sse_shufps(&p->func, dest, get_identity(p), SHUF(X,Y,Z,W) ); -} - - - -static void emit_load3f_3( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - /* Over-reads by 1 dword - potential SEGV if input is a vertex - * array. - */ - if (p->inputs_safe) { - sse_movups(&p->func, dest, arg0); - } - else { - /* c 0 0 0 - * c c c c - * a b c c - */ - sse_movss(&p->func, dest, x86_make_disp(arg0, 8)); - sse_shufps(&p->func, dest, dest, SHUF(X,X,X,X)); - sse_movlps(&p->func, dest, arg0); - } -} - -static void emit_load3f_2( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - emit_load4f_2(p, dest, arg0); -} - -static void emit_load3f_1( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - emit_load4f_1(p, dest, arg0); -} - -static void emit_load2f_2( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - sse_movlps(&p->func, dest, arg0); -} - -static void emit_load2f_1( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - emit_load4f_1(p, dest, arg0); -} - -static void emit_load1f_1( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - sse_movss(&p->func, dest, arg0); -} - -static void (*load[4][4])( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) = { - { emit_load1f_1, - emit_load1f_1, - emit_load1f_1, - emit_load1f_1 }, - - { emit_load2f_1, - emit_load2f_2, - emit_load2f_2, - emit_load2f_2 }, - - { emit_load3f_1, - emit_load3f_2, - emit_load3f_3, - emit_load3f_3 }, - - { emit_load4f_1, - emit_load4f_2, - emit_load4f_3, - emit_load4f_4 } -}; - -static void emit_load( struct x86_program *p, - struct x86_reg dest, - GLuint sz, - struct x86_reg src, - GLuint src_sz) -{ - load[sz-1][src_sz-1](p, dest, src); -} - -static void emit_store4f( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - sse_movups(&p->func, dest, arg0); -} - -static void emit_store3f( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - if (p->outputs_safe) { - /* Emit the extra dword anyway. This may hurt writecombining, - * may cause other problems. - */ - sse_movups(&p->func, dest, arg0); - } - else { - /* Alternate strategy - emit two, shuffle, emit one. - */ - sse_movlps(&p->func, dest, arg0); - sse_shufps(&p->func, arg0, arg0, SHUF(Z,Z,Z,Z) ); /* NOTE! destructive */ - sse_movss(&p->func, x86_make_disp(dest,8), arg0); - } -} - -static void emit_store2f( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - sse_movlps(&p->func, dest, arg0); -} - -static void emit_store1f( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) -{ - sse_movss(&p->func, dest, arg0); -} - - -static void (*store[4])( struct x86_program *p, - struct x86_reg dest, - struct x86_reg arg0 ) = -{ - emit_store1f, - emit_store2f, - emit_store3f, - emit_store4f -}; - -static void emit_store( struct x86_program *p, - struct x86_reg dest, - GLuint sz, - struct x86_reg temp ) - -{ - store[sz-1](p, dest, temp); -} - -static void emit_pack_store_4ub( struct x86_program *p, - struct x86_reg dest, - struct x86_reg temp ) -{ - /* Scale by 255.0 - */ - sse_mulps(&p->func, temp, p->chan0); - - if (p->have_sse2) { - sse2_cvtps2dq(&p->func, temp, temp); - sse2_packssdw(&p->func, temp, temp); - sse2_packuswb(&p->func, temp, temp); - sse_movss(&p->func, dest, temp); - } - else { - struct x86_reg mmx0 = x86_make_reg(file_MMX, 0); - struct x86_reg mmx1 = x86_make_reg(file_MMX, 1); - sse_cvtps2pi(&p->func, mmx0, temp); - sse_movhlps(&p->func, temp, temp); - sse_cvtps2pi(&p->func, mmx1, temp); - mmx_packssdw(&p->func, mmx0, mmx1); - mmx_packuswb(&p->func, mmx0, mmx0); - mmx_movd(&p->func, dest, mmx0); - } -} - -static GLint get_offset( const void *a, const void *b ) -{ - return (const char *)b - (const char *)a; -} - -/* Not much happens here. Eventually use this function to try and - * avoid saving/reloading the source pointers each vertex (if some of - * them can fit in registers). - */ -static void get_src_ptr( struct x86_program *p, - struct x86_reg srcREG, - struct x86_reg vfREG, - struct vf_attr *a ) -{ - struct vertex_fetch *vf = p->vf; - struct x86_reg ptr_to_src = x86_make_disp(vfREG, get_offset(vf, &a->inputptr)); - - /* Load current a[j].inputptr - */ - x86_mov(&p->func, srcREG, ptr_to_src); -} - -static void update_src_ptr( struct x86_program *p, - struct x86_reg srcREG, - struct x86_reg vfREG, - struct vf_attr *a ) -{ - if (a->inputstride) { - struct vertex_fetch *vf = p->vf; - struct x86_reg ptr_to_src = x86_make_disp(vfREG, get_offset(vf, &a->inputptr)); - - /* add a[j].inputstride (hardcoded value - could just as easily - * pull the stride value from memory each time). - */ - x86_lea(&p->func, srcREG, x86_make_disp(srcREG, a->inputstride)); - - /* save new value of a[j].inputptr - */ - x86_mov(&p->func, ptr_to_src, srcREG); - } -} - - -/* Lots of hardcoding - * - * EAX -- pointer to current output vertex - * ECX -- pointer to current attribute - * - */ -static GLboolean build_vertex_emit( struct x86_program *p ) -{ - struct vertex_fetch *vf = p->vf; - GLuint j = 0; - - struct x86_reg vertexEAX = x86_make_reg(file_REG32, reg_AX); - struct x86_reg srcECX = x86_make_reg(file_REG32, reg_CX); - struct x86_reg countEBP = x86_make_reg(file_REG32, reg_BP); - struct x86_reg vfESI = x86_make_reg(file_REG32, reg_SI); - struct x86_reg temp = x86_make_reg(file_XMM, 0); - struct x86_reg vp0 = x86_make_reg(file_XMM, 1); - struct x86_reg vp1 = x86_make_reg(file_XMM, 2); - GLubyte *fixup, *label; - - /* Push a few regs? - */ - x86_push(&p->func, countEBP); - x86_push(&p->func, vfESI); - - - /* Get vertex count, compare to zero - */ - x86_xor(&p->func, srcECX, srcECX); - x86_mov(&p->func, countEBP, x86_fn_arg(&p->func, 2)); - x86_cmp(&p->func, countEBP, srcECX); - fixup = x86_jcc_forward(&p->func, cc_E); - - /* Initialize destination register. - */ - x86_mov(&p->func, vertexEAX, x86_fn_arg(&p->func, 3)); - - /* Move argument 1 (vf) into a reg: - */ - x86_mov(&p->func, vfESI, x86_fn_arg(&p->func, 1)); - - - /* Possibly load vp0, vp1 for viewport calcs: - */ - if (vf->allow_viewport_emits) { - sse_movups(&p->func, vp0, x86_make_disp(vfESI, get_offset(vf, &vf->vp[0]))); - sse_movups(&p->func, vp1, x86_make_disp(vfESI, get_offset(vf, &vf->vp[4]))); - } - - /* always load, needed or not: - */ - sse_movups(&p->func, p->chan0, x86_make_disp(vfESI, get_offset(vf, &vf->chan_scale[0]))); - sse_movups(&p->func, p->identity, x86_make_disp(vfESI, get_offset(vf, &vf->identity[0]))); - - /* Note address for loop jump */ - label = x86_get_label(&p->func); - - /* Emit code for each of the attributes. Currently routes - * everything through SSE registers, even when it might be more - * efficient to stick with regular old x86. No optimization or - * other tricks - enough new ground to cover here just getting - * things working. - */ - while (j < vf->attr_count) { - struct vf_attr *a = &vf->attr[j]; - struct x86_reg dest = x86_make_disp(vertexEAX, a->vertoffset); - - /* Now, load an XMM reg from src, perhaps transform, then save. - * Could be shortcircuited in specific cases: - */ - switch (a->format) { - case EMIT_1F: - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 1, x86_deref(srcECX), a->inputsize); - emit_store(p, dest, 1, temp); - update_src_ptr(p, srcECX, vfESI, a); - break; - case EMIT_2F: - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 2, x86_deref(srcECX), a->inputsize); - emit_store(p, dest, 2, temp); - update_src_ptr(p, srcECX, vfESI, a); - break; - case EMIT_3F: - /* Potentially the worst case - hardcode 2+1 copying: - */ - if (0) { - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 3, x86_deref(srcECX), a->inputsize); - emit_store(p, dest, 3, temp); - update_src_ptr(p, srcECX, vfESI, a); - } - else { - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 2, x86_deref(srcECX), a->inputsize); - emit_store(p, dest, 2, temp); - if (a->inputsize > 2) { - emit_load(p, temp, 1, x86_make_disp(srcECX, 8), 1); - emit_store(p, x86_make_disp(dest,8), 1, temp); - } - else { - sse_movss(&p->func, x86_make_disp(dest,8), get_identity(p)); - } - update_src_ptr(p, srcECX, vfESI, a); - } - break; - case EMIT_4F: - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize); - emit_store(p, dest, 4, temp); - update_src_ptr(p, srcECX, vfESI, a); - break; - case EMIT_2F_VIEWPORT: - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 2, x86_deref(srcECX), a->inputsize); - sse_mulps(&p->func, temp, vp0); - sse_addps(&p->func, temp, vp1); - emit_store(p, dest, 2, temp); - update_src_ptr(p, srcECX, vfESI, a); - break; - case EMIT_3F_VIEWPORT: - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 3, x86_deref(srcECX), a->inputsize); - sse_mulps(&p->func, temp, vp0); - sse_addps(&p->func, temp, vp1); - emit_store(p, dest, 3, temp); - update_src_ptr(p, srcECX, vfESI, a); - break; - case EMIT_4F_VIEWPORT: - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize); - sse_mulps(&p->func, temp, vp0); - sse_addps(&p->func, temp, vp1); - emit_store(p, dest, 4, temp); - update_src_ptr(p, srcECX, vfESI, a); - break; - case EMIT_3F_XYW: - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize); - sse_shufps(&p->func, temp, temp, SHUF(X,Y,W,Z)); - emit_store(p, dest, 3, temp); - update_src_ptr(p, srcECX, vfESI, a); - break; - - case EMIT_1UB_1F: - /* Test for PAD3 + 1UB: - */ - if (j > 0 && - a[-1].vertoffset + a[-1].vertattrsize <= a->vertoffset - 3) - { - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 1, x86_deref(srcECX), a->inputsize); - sse_shufps(&p->func, temp, temp, SHUF(X,X,X,X)); - emit_pack_store_4ub(p, x86_make_disp(dest, -3), temp); /* overkill! */ - update_src_ptr(p, srcECX, vfESI, a); - } - else { - printf("Can't emit 1ub %x %x %d\n", a->vertoffset, a[-1].vertoffset, a[-1].vertattrsize ); - return GL_FALSE; - } - break; - case EMIT_3UB_3F_RGB: - case EMIT_3UB_3F_BGR: - /* Test for 3UB + PAD1: - */ - if (j == vf->attr_count - 1 || - a[1].vertoffset >= a->vertoffset + 4) { - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 3, x86_deref(srcECX), a->inputsize); - if (a->format == EMIT_3UB_3F_BGR) - sse_shufps(&p->func, temp, temp, SHUF(Z,Y,X,W)); - emit_pack_store_4ub(p, dest, temp); - update_src_ptr(p, srcECX, vfESI, a); - } - /* Test for 3UB + 1UB: - */ - else if (j < vf->attr_count - 1 && - a[1].format == EMIT_1UB_1F && - a[1].vertoffset == a->vertoffset + 3) { - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 3, x86_deref(srcECX), a->inputsize); - update_src_ptr(p, srcECX, vfESI, a); - - /* Make room for incoming value: - */ - sse_shufps(&p->func, temp, temp, SHUF(W,X,Y,Z)); - - get_src_ptr(p, srcECX, vfESI, &a[1]); - emit_load(p, temp, 1, x86_deref(srcECX), a[1].inputsize); - update_src_ptr(p, srcECX, vfESI, &a[1]); - - /* Rearrange and possibly do BGR conversion: - */ - if (a->format == EMIT_3UB_3F_BGR) - sse_shufps(&p->func, temp, temp, SHUF(W,Z,Y,X)); - else - sse_shufps(&p->func, temp, temp, SHUF(Y,Z,W,X)); - - emit_pack_store_4ub(p, dest, temp); - j++; /* NOTE: two attrs consumed */ - } - else { - printf("Can't emit 3ub\n"); - } - return GL_FALSE; /* add this later */ - break; - - case EMIT_4UB_4F_RGBA: - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize); - emit_pack_store_4ub(p, dest, temp); - update_src_ptr(p, srcECX, vfESI, a); - break; - case EMIT_4UB_4F_BGRA: - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize); - sse_shufps(&p->func, temp, temp, SHUF(Z,Y,X,W)); - emit_pack_store_4ub(p, dest, temp); - update_src_ptr(p, srcECX, vfESI, a); - break; - case EMIT_4UB_4F_ARGB: - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize); - sse_shufps(&p->func, temp, temp, SHUF(W,X,Y,Z)); - emit_pack_store_4ub(p, dest, temp); - update_src_ptr(p, srcECX, vfESI, a); - break; - case EMIT_4UB_4F_ABGR: - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize); - sse_shufps(&p->func, temp, temp, SHUF(W,Z,Y,X)); - emit_pack_store_4ub(p, dest, temp); - update_src_ptr(p, srcECX, vfESI, a); - break; - case EMIT_4CHAN_4F_RGBA: - switch (CHAN_TYPE) { - case GL_UNSIGNED_BYTE: - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize); - emit_pack_store_4ub(p, dest, temp); - update_src_ptr(p, srcECX, vfESI, a); - break; - case GL_FLOAT: - get_src_ptr(p, srcECX, vfESI, a); - emit_load(p, temp, 4, x86_deref(srcECX), a->inputsize); - emit_store(p, dest, 4, temp); - update_src_ptr(p, srcECX, vfESI, a); - break; - case GL_UNSIGNED_SHORT: - default: - printf("unknown CHAN_TYPE %s\n", _mesa_lookup_enum_by_nr(CHAN_TYPE)); - return GL_FALSE; - } - break; - default: - printf("unknown a[%d].format %d\n", j, a->format); - return GL_FALSE; /* catch any new opcodes */ - } - - /* Increment j by at least 1 - may have been incremented above also: - */ - j++; - } - - /* Next vertex: - */ - x86_lea(&p->func, vertexEAX, x86_make_disp(vertexEAX, vf->vertex_stride)); - - /* decr count, loop if not zero - */ - x86_dec(&p->func, countEBP); - x86_test(&p->func, countEBP, countEBP); - x86_jcc(&p->func, cc_NZ, label); - - /* Exit mmx state? - */ - if (p->func.need_emms) - mmx_emms(&p->func); - - /* Land forward jump here: - */ - x86_fixup_fwd_jump(&p->func, fixup); - - /* Pop regs and return - */ - x86_pop(&p->func, x86_get_base_reg(vfESI)); - x86_pop(&p->func, countEBP); - x86_ret(&p->func); - - vf->emit = (vf_emit_func)x86_get_func(&p->func); - return GL_TRUE; -} - - - -void vf_generate_sse_emit( struct vertex_fetch *vf ) -{ - struct x86_program p; - - if (!cpu_has_xmm) { - vf->codegen_emit = NULL; - return; - } - - memset(&p, 0, sizeof(p)); - - p.vf = vf; - p.inputs_safe = 0; /* for now */ - p.outputs_safe = 0; /* for now */ - p.have_sse2 = cpu_has_xmm2; - p.identity = x86_make_reg(file_XMM, 6); - p.chan0 = x86_make_reg(file_XMM, 7); - - x86_init_func(&p.func); - - if (build_vertex_emit(&p)) { - vf_register_fastpath( vf, GL_TRUE ); - } - else { - /* Note the failure so that we don't keep trying to codegen an - * impossible state: - */ - vf_register_fastpath( vf, GL_FALSE ); - x86_release_func(&p.func); - } -} - -#else - -void vf_generate_sse_emit( struct vertex_fetch *vf ) -{ - /* Dummy version for when USE_SSE_ASM not defined */ -} - -#endif |