diff options
author | Christian König <[email protected]> | 2011-05-07 14:11:40 +0200 |
---|---|---|
committer | Christian König <[email protected]> | 2011-05-07 14:11:40 +0200 |
commit | 213b9004a6ee033a16af3dcd187aa68b56c39858 (patch) | |
tree | f577f4dc276f70dad63f102f69f87f4d566186ef /src/mesa | |
parent | 6ad846ee78d9d8ba93dcecdefbf89f2b981333ef (diff) | |
parent | 03615c02d81437cf546609fc6a39c6c73be39360 (diff) |
Merge remote-tracking branch 'origin/master' into pipe-video
Conflicts:
src/gallium/drivers/r600/r600_state.c
Diffstat (limited to 'src/mesa')
166 files changed, 11610 insertions, 10921 deletions
diff --git a/src/mesa/drivers/common/driverfuncs.c b/src/mesa/drivers/common/driverfuncs.c index 854dea94504..0dbc7c3e853 100644 --- a/src/mesa/drivers/common/driverfuncs.c +++ b/src/mesa/drivers/common/driverfuncs.c @@ -41,6 +41,7 @@ #include "main/bufferobj.h" #include "main/fbobject.h" #include "main/texrender.h" +#include "main/samplerobj.h" #include "main/syncobj.h" #include "main/texturebarrier.h" #include "main/transformfeedback.h" @@ -200,6 +201,8 @@ _mesa_init_driver_functions(struct dd_function_table *driver) _mesa_init_transform_feedback_functions(driver); + _mesa_init_sampler_object_functions(driver); + /* T&L stuff */ driver->NeedValidate = GL_FALSE; driver->ValidateTnlModule = NULL; diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c index 6c35fa10d8a..08b6024639f 100644 --- a/src/mesa/drivers/common/meta.c +++ b/src/mesa/drivers/common/meta.c @@ -40,6 +40,7 @@ #include "main/bufferobj.h" #include "main/buffers.h" #include "main/colortab.h" +#include "main/condrender.h" #include "main/depth.h" #include "main/enable.h" #include "main/fbobject.h" @@ -94,6 +95,7 @@ #define META_VIEWPORT 0x4000 #define META_CLAMP_FRAGMENT_COLOR 0x8000 #define META_CLAMP_VERTEX_COLOR 0x10000 +#define META_CONDITIONAL_RENDER 0x20000 /*@}*/ @@ -188,6 +190,10 @@ struct save_state /** META_CLAMP_VERTEX_COLOR */ GLenum ClampVertexColor; + /** META_CONDITIONAL_RENDER */ + struct gl_query_object *CondRenderQuery; + GLenum CondRenderMode; + /** Miscellaneous (always disabled) */ GLboolean Lighting; }; @@ -597,6 +603,14 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state) _mesa_ClampColorARB(GL_CLAMP_VERTEX_COLOR, GL_FALSE); } + if (state & META_CONDITIONAL_RENDER) { + save->CondRenderQuery = ctx->Query.CondRenderQuery; + save->CondRenderMode = ctx->Query.CondRenderMode; + + if (ctx->Query.CondRenderQuery) + _mesa_EndConditionalRender(); + } + /* misc */ { save->Lighting = ctx->Light.Enabled; @@ -869,6 +883,12 @@ _mesa_meta_end(struct gl_context *ctx) _mesa_ClampColorARB(GL_CLAMP_VERTEX_COLOR, save->ClampVertexColor); } + if (state & META_CONDITIONAL_RENDER) { + if (save->CondRenderQuery) + _mesa_BeginConditionalRender(save->CondRenderQuery->Id, + save->CondRenderMode); + } + /* misc */ if (save->Lighting) { _mesa_set_enable(ctx, GL_LIGHTING, GL_TRUE); @@ -1442,7 +1462,10 @@ _mesa_meta_Clear(struct gl_context *ctx, GLbitfield buffers) }; struct vertex verts[4]; /* save all state but scissor, pixel pack/unpack */ - GLbitfield metaSave = META_ALL - META_SCISSOR - META_PIXEL_STORE; + GLbitfield metaSave = (META_ALL - + META_SCISSOR - + META_PIXEL_STORE - + META_CONDITIONAL_RENDER); const GLuint stencilMax = (1 << ctx->DrawBuffer->Visual.stencilBits) - 1; if (buffers & BUFFER_BITS_COLOR) { @@ -1848,7 +1871,8 @@ _mesa_meta_DrawPixels(struct gl_context *ctx, * just going for the matching set of channels, in floating * point. */ - if (ctx->Color.ClampFragmentColor != GL_TRUE) + if (ctx->Color.ClampFragmentColor != GL_TRUE && + ctx->Extensions.ARB_texture_float) texIntFormat = GL_RGBA32F; } else if (_mesa_is_stencil_format(format)) { diff --git a/src/mesa/drivers/dri/i915/i830_texstate.c b/src/mesa/drivers/dri/i915/i830_texstate.c index 7554bd5e7b9..3298dbb69f5 100644 --- a/src/mesa/drivers/dri/i915/i830_texstate.c +++ b/src/mesa/drivers/dri/i915/i830_texstate.c @@ -29,6 +29,7 @@ #include "main/enums.h" #include "main/colormac.h" #include "main/macros.h" +#include "main/samplerobj.h" #include "intel_mipmap_tree.h" #include "intel_tex.h" @@ -120,6 +121,7 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) struct gl_texture_object *tObj = tUnit->_Current; struct intel_texture_object *intelObj = intel_texture_object(tObj); struct gl_texture_image *firstImage; + struct gl_sampler_object *sampler = _mesa_get_samplerobj(ctx, unit); GLuint *state = i830->state.Tex[unit], format, pitch; GLint lodbias; GLubyte border[4]; @@ -193,7 +195,7 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) float maxlod; uint32_t minlod_fixed, maxlod_fixed; - switch (tObj->Sampler.MinFilter) { + switch (sampler->MinFilter) { case GL_NEAREST: minFilt = FILTER_NEAREST; mipFilt = MIPFILTER_NONE; @@ -222,12 +224,12 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) return GL_FALSE; } - if (tObj->Sampler.MaxAnisotropy > 1.0) { + if (sampler->MaxAnisotropy > 1.0) { minFilt = FILTER_ANISOTROPIC; magFilt = FILTER_ANISOTROPIC; } else { - switch (tObj->Sampler.MagFilter) { + switch (sampler->MagFilter) { case GL_NEAREST: magFilt = FILTER_NEAREST; break; @@ -239,7 +241,7 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) } } - lodbias = (int) ((tUnit->LodBias + tObj->Sampler.LodBias) * 16.0); + lodbias = (int) ((tUnit->LodBias + sampler->LodBias) * 16.0); if (lodbias < -64) lodbias = -64; if (lodbias > 63) @@ -259,8 +261,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->Sampler.MinLod, 0.0, 11), 4); - maxlod = MIN2(tObj->Sampler.MaxLod, tObj->_MaxLevel - tObj->BaseLevel); + minlod_fixed = U_FIXED(CLAMP(sampler->MinLod, 0.0, 11), 4); + maxlod = MIN2(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 +281,8 @@ i830_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) } { - GLenum ws = tObj->Sampler.WrapS; - GLenum wt = tObj->Sampler.WrapT; + GLenum ws = sampler->WrapS; + GLenum wt = sampler->WrapT; /* 3D textures not available on i830 @@ -300,10 +302,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->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]); + CLAMPED_FLOAT_TO_UBYTE(border[0], sampler->BorderColor.f[0]); + CLAMPED_FLOAT_TO_UBYTE(border[1], sampler->BorderColor.f[1]); + CLAMPED_FLOAT_TO_UBYTE(border[2], sampler->BorderColor.f[2]); + CLAMPED_FLOAT_TO_UBYTE(border[3], sampler->BorderColor.f[3]); state[I830_TEXREG_TM0S4] = PACK_COLOR_8888(border[3], border[0], diff --git a/src/mesa/drivers/dri/i915/i915_texstate.c b/src/mesa/drivers/dri/i915/i915_texstate.c index 742bb994adb..5aa2ea18048 100644 --- a/src/mesa/drivers/dri/i915/i915_texstate.c +++ b/src/mesa/drivers/dri/i915/i915_texstate.c @@ -29,6 +29,7 @@ #include "main/enums.h" #include "main/macros.h" #include "main/colormac.h" +#include "main/samplerobj.h" #include "intel_mipmap_tree.h" #include "intel_tex.h" @@ -136,6 +137,7 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) struct gl_texture_object *tObj = tUnit->_Current; struct intel_texture_object *intelObj = intel_texture_object(tObj); struct gl_texture_image *firstImage; + struct gl_sampler_object *sampler = _mesa_get_samplerobj(ctx, unit); GLuint *state = i915->state.Tex[unit], format, pitch; GLint lodbias, aniso = 0; GLubyte border[4]; @@ -164,7 +166,7 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) format = translate_texture_format(firstImage->TexFormat, firstImage->InternalFormat, - tObj->Sampler.DepthMode); + sampler->DepthMode); pitch = intelObj->mt->region->pitch * intelObj->mt->cpp; state[I915_TEXREG_MS3] = @@ -181,7 +183,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->Sampler.MaxLod, tObj->_MaxLevel - tObj->BaseLevel); + maxlod = MIN2(sampler->MaxLod, tObj->_MaxLevel - tObj->BaseLevel); state[I915_TEXREG_MS4] = ((((pitch / 4) - 1) << MS4_PITCH_SHIFT) | MS4_CUBE_FACE_ENA_MASK | @@ -192,7 +194,7 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) { GLuint minFilt, mipFilt, magFilt; - switch (tObj->Sampler.MinFilter) { + switch (sampler->MinFilter) { case GL_NEAREST: minFilt = FILTER_NEAREST; mipFilt = MIPFILTER_NONE; @@ -221,16 +223,16 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) return GL_FALSE; } - if (tObj->Sampler.MaxAnisotropy > 1.0) { + if (sampler->MaxAnisotropy > 1.0) { minFilt = FILTER_ANISOTROPIC; magFilt = FILTER_ANISOTROPIC; - if (tObj->Sampler.MaxAnisotropy > 2.0) + if (sampler->MaxAnisotropy > 2.0) aniso = SS2_MAX_ANISO_4; else aniso = SS2_MAX_ANISO_2; } else { - switch (tObj->Sampler.MagFilter) { + switch (sampler->MagFilter) { case GL_NEAREST: magFilt = FILTER_NEAREST; break; @@ -242,7 +244,7 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) } } - lodbias = (int) ((tUnit->LodBias + tObj->Sampler.LodBias) * 16.0); + lodbias = (int) ((tUnit->LodBias + sampler->LodBias) * 16.0); if (lodbias < -256) lodbias = -256; if (lodbias > 255) @@ -258,14 +260,14 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) /* Shadow: */ - if (tObj->Sampler.CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB && + if (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->Sampler.CompareFunc)); + intel_translate_shadow_compare_func(sampler->CompareFunc)); minFilt = FILTER_4X4_FLAT; magFilt = FILTER_4X4_FLAT; @@ -278,9 +280,9 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) } { - GLenum ws = tObj->Sampler.WrapS; - GLenum wt = tObj->Sampler.WrapT; - GLenum wr = tObj->Sampler.WrapR; + GLenum ws = sampler->WrapS; + GLenum wt = sampler->WrapT; + GLenum wr = sampler->WrapR; float minlod; /* We program 1D textures as 2D textures, so the 2D texcoord could @@ -298,8 +300,8 @@ i915_update_tex_unit(struct intel_context *intel, GLuint unit, GLuint ss3) * clamp_to_border. */ if (tObj->Target == GL_TEXTURE_3D && - (tObj->Sampler.MinFilter != GL_NEAREST || - tObj->Sampler.MagFilter != GL_NEAREST) && + (sampler->MinFilter != GL_NEAREST || + sampler->MagFilter != GL_NEAREST) && (ws == GL_CLAMP || wt == GL_CLAMP || wr == GL_CLAMP || @@ -322,7 +324,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->Sampler.MinLod, tObj->_MaxLevel - tObj->BaseLevel); + minlod = MIN2(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 +332,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->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]); + CLAMPED_FLOAT_TO_UBYTE(border[0], sampler->BorderColor.f[0]); + CLAMPED_FLOAT_TO_UBYTE(border[1], sampler->BorderColor.f[1]); + CLAMPED_FLOAT_TO_UBYTE(border[2], sampler->BorderColor.f[2]); + CLAMPED_FLOAT_TO_UBYTE(border[3], 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/i965/Makefile b/src/mesa/drivers/dri/i965/Makefile index b05ba35d65f..849018b74ae 100644 --- a/src/mesa/drivers/dri/i965/Makefile +++ b/src/mesa/drivers/dri/i965/Makefile @@ -61,7 +61,6 @@ DRIVER_SOURCES = \ brw_sf.c \ brw_sf_emit.c \ brw_sf_state.c \ - brw_state.c \ brw_state_batch.c \ brw_state_cache.c \ brw_state_dump.c \ diff --git a/src/mesa/drivers/dri/i965/brw_cc.c b/src/mesa/drivers/dri/i965/brw_cc.c index 74a66af31a5..94b8c20b019 100644 --- a/src/mesa/drivers/dri/i965/brw_cc.c +++ b/src/mesa/drivers/dri/i965/brw_cc.c @@ -37,28 +37,36 @@ #include "main/macros.h" #include "intel_batchbuffer.h" -void -brw_update_cc_vp(struct brw_context *brw) +static void +prepare_cc_vp(struct brw_context *brw) { struct gl_context *ctx = &brw->intel.ctx; - struct brw_cc_viewport ccv; + struct brw_cc_viewport *ccv; - memset(&ccv, 0, sizeof(ccv)); + ccv = brw_state_batch(brw, sizeof(*ccv), 32, &brw->cc.vp_offset); /* _NEW_TRANSOFORM */ if (ctx->Transform.DepthClamp) { /* _NEW_VIEWPORT */ - ccv.min_depth = MIN2(ctx->Viewport.Near, ctx->Viewport.Far); - ccv.max_depth = MAX2(ctx->Viewport.Near, ctx->Viewport.Far); + ccv->min_depth = MIN2(ctx->Viewport.Near, ctx->Viewport.Far); + ccv->max_depth = MAX2(ctx->Viewport.Near, ctx->Viewport.Far); } else { - ccv.min_depth = 0.0; - ccv.max_depth = 1.0; + ccv->min_depth = 0.0; + ccv->max_depth = 1.0; } - drm_intel_bo_unreference(brw->cc.vp_bo); - brw->cc.vp_bo = brw_cache_data(&brw->cache, BRW_CC_VP, &ccv, sizeof(ccv)); + brw->state.dirty.cache |= CACHE_NEW_CC_VP; } +const struct brw_tracked_state brw_cc_vp = { + .dirty = { + .mesa = _NEW_VIEWPORT | _NEW_TRANSFORM, + .brw = BRW_NEW_BATCH, + .cache = 0 + }, + .prepare = prepare_cc_vp +}; + /** * Modify blend function to force destination alpha to 1.0 * @@ -81,11 +89,6 @@ fix_xRGB_alpha(GLenum function) return function; } -static void prepare_cc_unit(struct brw_context *brw) -{ - brw_add_validated_bo(brw, brw->cc.vp_bo); -} - /** * Creates the state cache entry for the given CC unit key. */ @@ -209,7 +212,8 @@ static void upload_cc_unit(struct brw_context *brw) cc->cc5.statistics_enable = 1; /* CACHE_NEW_CC_VP */ - cc->cc4.cc_viewport_state_offset = brw->cc.vp_bo->offset >> 5; /* reloc */ + cc->cc4.cc_viewport_state_offset = (intel->batch.bo->offset + + brw->cc.vp_offset) >> 5; /* reloc */ brw->state.dirty.cache |= CACHE_NEW_CC_UNIT; @@ -217,7 +221,7 @@ static void upload_cc_unit(struct brw_context *brw) drm_intel_bo_emit_reloc(brw->intel.batch.bo, (brw->cc.state_offset + offsetof(struct brw_cc_unit_state, cc4)), - brw->cc.vp_bo, 0, + intel->batch.bo, brw->cc.vp_offset, I915_GEM_DOMAIN_INSTRUCTION, 0); } @@ -227,7 +231,6 @@ const struct brw_tracked_state brw_cc_unit = { .brw = BRW_NEW_BATCH, .cache = CACHE_NEW_CC_VP }, - .prepare = prepare_cc_unit, .emit = upload_cc_unit, }; diff --git a/src/mesa/drivers/dri/i965/brw_clip.c b/src/mesa/drivers/dri/i965/brw_clip.c index 1be165cc9a1..3c175515408 100644 --- a/src/mesa/drivers/dri/i965/brw_clip.c +++ b/src/mesa/drivers/dri/i965/brw_clip.c @@ -144,14 +144,12 @@ static void compile_clip_prog( struct brw_context *brw, /* Upload */ drm_intel_bo_unreference(brw->clip.prog_bo); - brw->clip.prog_bo = brw_upload_cache_with_auxdata(&brw->cache, - BRW_CLIP_PROG, - &c.key, sizeof(c.key), - NULL, 0, - program, program_size, - &c.prog_data, - sizeof(c.prog_data), - &brw->clip.prog_data); + brw->clip.prog_bo = brw_upload_cache(&brw->cache, + BRW_CLIP_PROG, + &c.key, sizeof(c.key), + program, program_size, + &c.prog_data, sizeof(c.prog_data), + &brw->clip.prog_data); } /* Calculate interpolants for triangle and line rasterization. @@ -270,7 +268,6 @@ static void upload_clip_prog(struct brw_context *brw) drm_intel_bo_unreference(brw->clip.prog_bo); brw->clip.prog_bo = brw_search_cache(&brw->cache, BRW_CLIP_PROG, &key, sizeof(key), - NULL, 0, &brw->clip.prog_data); if (brw->clip.prog_bo == NULL) compile_clip_prog( brw, &key ); diff --git a/src/mesa/drivers/dri/i965/brw_clip_state.c b/src/mesa/drivers/dri/i965/brw_clip_state.c index 60fd5fa7d9e..6015c8cbe9f 100644 --- a/src/mesa/drivers/dri/i965/brw_clip_state.c +++ b/src/mesa/drivers/dri/i965/brw_clip_state.c @@ -33,148 +33,101 @@ #include "brw_state.h" #include "brw_defines.h" -struct brw_clip_unit_key { - unsigned int total_grf; - unsigned int urb_entry_read_length; - unsigned int curb_entry_read_length; - unsigned int clip_mode; - - unsigned int curbe_offset; - - unsigned int nr_urb_entries, urb_size; - - GLboolean depth_clamp; -}; - static void -clip_unit_populate_key(struct brw_context *brw, struct brw_clip_unit_key *key) -{ - struct gl_context *ctx = &brw->intel.ctx; - memset(key, 0, sizeof(*key)); - - /* CACHE_NEW_CLIP_PROG */ - key->total_grf = brw->clip.prog_data->total_grf; - key->urb_entry_read_length = brw->clip.prog_data->urb_read_length; - key->curb_entry_read_length = brw->clip.prog_data->curb_read_length; - key->clip_mode = brw->clip.prog_data->clip_mode; - - /* BRW_NEW_CURBE_OFFSETS */ - key->curbe_offset = brw->curbe.clip_start; - - /* BRW_NEW_URB_FENCE */ - key->nr_urb_entries = brw->urb.nr_clip_entries; - key->urb_size = brw->urb.vsize; - - /* _NEW_TRANSOFORM */ - key->depth_clamp = ctx->Transform.DepthClamp; -} - -static drm_intel_bo * -clip_unit_create_from_key(struct brw_context *brw, - struct brw_clip_unit_key *key) +brw_prepare_clip_unit(struct brw_context *brw) { struct intel_context *intel = &brw->intel; - struct brw_clip_unit_state clip; - drm_intel_bo *bo; + struct gl_context *ctx = &intel->ctx; + struct brw_clip_unit_state *clip; - memset(&clip, 0, sizeof(clip)); + clip = brw_state_batch(brw, sizeof(*clip), 32, &brw->clip.state_offset); + memset(clip, 0, sizeof(*clip)); - clip.thread0.grf_reg_count = ALIGN(key->total_grf, 16) / 16 - 1; + /* CACHE_NEW_CLIP_PROG */ + clip->thread0.grf_reg_count = (ALIGN(brw->clip.prog_data->total_grf, 16) / + 16 - 1); /* reloc */ - clip.thread0.kernel_start_pointer = brw->clip.prog_bo->offset >> 6; + clip->thread0.kernel_start_pointer = brw->clip.prog_bo->offset >> 6; - clip.thread1.floating_point_mode = BRW_FLOATING_POINT_NON_IEEE_754; - clip.thread1.single_program_flow = 1; + clip->thread1.floating_point_mode = BRW_FLOATING_POINT_NON_IEEE_754; + clip->thread1.single_program_flow = 1; - clip.thread3.urb_entry_read_length = key->urb_entry_read_length; - clip.thread3.const_urb_entry_read_length = key->curb_entry_read_length; - clip.thread3.const_urb_entry_read_offset = key->curbe_offset * 2; - clip.thread3.dispatch_grf_start_reg = 1; - clip.thread3.urb_entry_read_offset = 0; + clip->thread3.urb_entry_read_length = brw->clip.prog_data->urb_read_length; + clip->thread3.const_urb_entry_read_length = + brw->clip.prog_data->curb_read_length; + + /* BRW_NEW_CURBE_OFFSETS */ + clip->thread3.const_urb_entry_read_offset = brw->curbe.clip_start * 2; + clip->thread3.dispatch_grf_start_reg = 1; + clip->thread3.urb_entry_read_offset = 0; - clip.thread4.nr_urb_entries = key->nr_urb_entries; - clip.thread4.urb_entry_allocation_size = key->urb_size - 1; + /* BRW_NEW_URB_FENCE */ + clip->thread4.nr_urb_entries = brw->urb.nr_clip_entries; + clip->thread4.urb_entry_allocation_size = brw->urb.vsize - 1; /* If we have enough clip URB entries to run two threads, do so. */ - if (key->nr_urb_entries >= 10) { + if (brw->urb.nr_clip_entries >= 10) { /* Half of the URB entries go to each thread, and it has to be an * even number. */ - assert(key->nr_urb_entries % 2 == 0); + assert(brw->urb.nr_clip_entries % 2 == 0); /* Although up to 16 concurrent Clip threads are allowed on Ironlake, * only 2 threads can output VUEs at a time. */ if (intel->gen == 5) - clip.thread4.max_threads = 16 - 1; + clip->thread4.max_threads = 16 - 1; else - clip.thread4.max_threads = 2 - 1; + clip->thread4.max_threads = 2 - 1; } else { - assert(key->nr_urb_entries >= 5); - clip.thread4.max_threads = 1 - 1; + assert(brw->urb.nr_clip_entries >= 5); + clip->thread4.max_threads = 1 - 1; } if (unlikely(INTEL_DEBUG & DEBUG_SINGLE_THREAD)) - clip.thread4.max_threads = 0; + clip->thread4.max_threads = 0; if (unlikely(INTEL_DEBUG & DEBUG_STATS)) - clip.thread4.stats_enable = 1; - - clip.clip5.userclip_enable_flags = 0x7f; - clip.clip5.userclip_must_clip = 1; - clip.clip5.guard_band_enable = 0; - if (!key->depth_clamp) - clip.clip5.viewport_z_clip_enable = 1; - clip.clip5.viewport_xy_clip_enable = 1; - clip.clip5.vertex_position_space = BRW_CLIP_NDCSPACE; - clip.clip5.api_mode = BRW_CLIP_API_OGL; - clip.clip5.clip_mode = key->clip_mode; + clip->thread4.stats_enable = 1; - if (intel->is_g4x) - clip.clip5.negative_w_clip_test = 1; + clip->clip5.userclip_enable_flags = 0x7f; + clip->clip5.userclip_must_clip = 1; + clip->clip5.guard_band_enable = 0; + /* _NEW_TRANSOFORM */ + if (!ctx->Transform.DepthClamp) + clip->clip5.viewport_z_clip_enable = 1; + clip->clip5.viewport_xy_clip_enable = 1; + clip->clip5.vertex_position_space = BRW_CLIP_NDCSPACE; + clip->clip5.api_mode = BRW_CLIP_API_OGL; + clip->clip5.clip_mode = brw->clip.prog_data->clip_mode; - clip.clip6.clipper_viewport_state_ptr = 0; - clip.viewport_xmin = -1; - clip.viewport_xmax = 1; - clip.viewport_ymin = -1; - clip.viewport_ymax = 1; + if (intel->is_g4x) + clip->clip5.negative_w_clip_test = 1; - bo = brw_upload_cache(&brw->cache, BRW_CLIP_UNIT, - key, sizeof(*key), - &brw->clip.prog_bo, 1, - &clip, sizeof(clip)); + clip->clip6.clipper_viewport_state_ptr = 0; + clip->viewport_xmin = -1; + clip->viewport_xmax = 1; + clip->viewport_ymin = -1; + clip->viewport_ymax = 1; /* Emit clip program relocation */ assert(brw->clip.prog_bo); - drm_intel_bo_emit_reloc(bo, offsetof(struct brw_clip_unit_state, thread0), - brw->clip.prog_bo, clip.thread0.grf_reg_count << 1, + drm_intel_bo_emit_reloc(intel->batch.bo, + (brw->clip.state_offset + + offsetof(struct brw_clip_unit_state, thread0)), + brw->clip.prog_bo, clip->thread0.grf_reg_count << 1, I915_GEM_DOMAIN_INSTRUCTION, 0); - return bo; -} - -static void upload_clip_unit( struct brw_context *brw ) -{ - struct brw_clip_unit_key key; - - clip_unit_populate_key(brw, &key); - - drm_intel_bo_unreference(brw->clip.state_bo); - brw->clip.state_bo = brw_search_cache(&brw->cache, BRW_CLIP_UNIT, - &key, sizeof(key), - &brw->clip.prog_bo, 1, - NULL); - if (brw->clip.state_bo == NULL) { - brw->clip.state_bo = clip_unit_create_from_key(brw, &key); - } + brw->state.dirty.cache |= CACHE_NEW_CLIP_UNIT; } const struct brw_tracked_state brw_clip_unit = { .dirty = { .mesa = _NEW_TRANSFORM, - .brw = (BRW_NEW_CURBE_OFFSETS | + .brw = (BRW_NEW_BATCH | + BRW_NEW_CURBE_OFFSETS | BRW_NEW_URB_FENCE), .cache = CACHE_NEW_CLIP_PROG }, - .prepare = upload_clip_unit, + .prepare = brw_prepare_clip_unit, }; diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index 230d326fa12..db6466ff1ae 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -51,9 +51,6 @@ static void brwInitDriverFunctions( struct dd_function_table *functions ) brwInitFragProgFuncs( functions ); brw_init_queryobj_functions(functions); - - functions->Enable = brw_enable; - functions->DepthRange = brw_depth_range; } GLboolean brwCreateContext( int api, @@ -232,11 +229,6 @@ GLboolean brwCreateContext( int api, brw_draw_init( brw ); - /* Now that most driver functions are hooked up, initialize some of the - * immediate state. - */ - brw_update_cc_vp(brw); - return GL_TRUE; } diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h index 1daa49abfb3..26cd8209c65 100644 --- a/src/mesa/drivers/dri/i965/brw_context.h +++ b/src/mesa/drivers/dri/i965/brw_context.h @@ -204,13 +204,16 @@ struct brw_wm_prog_data { GLuint urb_read_length; GLuint first_curbe_grf; + GLuint first_curbe_grf_16; GLuint total_grf; + GLuint total_grf_16; GLuint total_scratch; GLuint nr_params; /**< number of float params/constants */ GLuint nr_pull_params; GLboolean error; int dispatch_width; + uint32_t prog_offset_16; /* Pointer to tracked values (only valid once * _mesa_load_state_parameters has been called at runtime). @@ -308,7 +311,6 @@ enum brw_cache_id { BRW_CC_VP, BRW_CC_UNIT, BRW_WM_PROG, - BRW_SAMPLER_DEFAULT_COLOR, BRW_SAMPLER, BRW_WM_UNIT, BRW_SF_PROG, @@ -336,8 +338,6 @@ struct brw_cache_item { GLuint hash; GLuint key_size; /* for variable-sized keys */ const void *key; - drm_intel_bo **reloc_bufs; - GLuint nr_reloc_bufs; drm_intel_bo *bo; @@ -381,7 +381,6 @@ struct brw_tracked_state { #define CACHE_NEW_CC_VP (1<<BRW_CC_VP) #define CACHE_NEW_CC_UNIT (1<<BRW_CC_UNIT) #define CACHE_NEW_WM_PROG (1<<BRW_WM_PROG) -#define CACHE_NEW_SAMPLER_DEFAULT_COLOR (1<<BRW_SAMPLER_DEFAULT_COLOR) #define CACHE_NEW_SAMPLER (1<<BRW_SAMPLER) #define CACHE_NEW_WM_UNIT (1<<BRW_WM_UNIT) #define CACHE_NEW_SF_PROG (1<<BRW_SF_PROG) @@ -630,29 +629,38 @@ struct brw_context int8_t *constant_map; /* variable array following prog_data */ drm_intel_bo *prog_bo; - drm_intel_bo *state_bo; drm_intel_bo *const_bo; + uint32_t state_offset; /** Binding table of pointers to surf_bo entries */ uint32_t bind_bo_offset; uint32_t surf_offset[BRW_VS_MAX_SURF]; GLuint nr_surfaces; + + uint32_t push_const_offset; /* Offset in the batchbuffer */ + int push_const_size; /* in 256-bit register increments */ } vs; struct { struct brw_gs_prog_data *prog_data; GLboolean prog_active; + uint32_t state_offset; drm_intel_bo *prog_bo; - drm_intel_bo *state_bo; } gs; struct { struct brw_clip_prog_data *prog_data; drm_intel_bo *prog_bo; - drm_intel_bo *state_bo; - drm_intel_bo *vp_bo; + + /* Offset in the batch to the CLIP state on pre-gen6. */ + uint32_t state_offset; + + /* As of gen6, this is the offset in the batch to the CLIP VP, + * instead of vp_bo. + */ + uint32_t vp_offset; } clip; @@ -660,9 +668,7 @@ struct brw_context struct brw_sf_prog_data *prog_data; drm_intel_bo *prog_bo; - drm_intel_bo *state_bo; uint32_t state_offset; - drm_intel_bo *vp_bo; uint32_t vp_offset; } sf; @@ -675,8 +681,9 @@ struct brw_context */ GLbitfield input_size_masks[4]; - /** Array of surface default colors (texture border color) */ - drm_intel_bo *sdc_bo[BRW_MAX_TEX_UNIT]; + /** offsets in the batch to sampler default colors (texture border color) + */ + uint32_t sdc_offset[BRW_MAX_TEX_UNIT]; GLuint render_surf; GLuint nr_surfaces; @@ -685,35 +692,32 @@ struct brw_context drm_intel_bo *scratch_bo; GLuint sampler_count; - drm_intel_bo *sampler_bo; + uint32_t sampler_offset; /** Binding table of pointers to surf_bo entries */ uint32_t bind_bo_offset; uint32_t surf_offset[BRW_WM_MAX_SURF]; + uint32_t state_offset; /* offset in batchbuffer to pre-gen6 WM state */ drm_intel_bo *prog_bo; - drm_intel_bo *state_bo; drm_intel_bo *const_bo; /* pull constant buffer. */ /** - * This is the push constant BO on gen6. + * This is offset in the batch to the push constants on gen6. * * Pre-gen6, push constants live in the CURBE. */ - drm_intel_bo *push_const_bo; + uint32_t push_const_offset; } wm; struct { /* gen4 */ drm_intel_bo *prog_bo; - drm_intel_bo *vp_bo; - - /* gen6 */ - drm_intel_bo *blend_state_bo; - drm_intel_bo *depth_stencil_state_bo; - drm_intel_bo *color_calc_state_bo; uint32_t state_offset; + uint32_t blend_state_offset; + uint32_t depth_stencil_state_offset; + uint32_t vp_offset; } cc; struct { @@ -783,9 +787,6 @@ void brwInitFragProgFuncs( struct dd_function_table *functions ); */ void brw_upload_urb_fence(struct brw_context *brw); -/* brw_cc.c */ -void brw_update_cc_vp(struct brw_context *brw); - /* brw_curbe.c */ void brw_upload_cs_urb_state(struct brw_context *brw); @@ -793,10 +794,6 @@ void brw_upload_cs_urb_state(struct brw_context *brw); /* brw_disasm.c */ int brw_disasm (FILE *file, struct brw_instruction *inst, int gen); -/* brw_state.c */ -void brw_enable(struct gl_context * ctx, GLenum cap, GLboolean state); -void brw_depth_range(struct gl_context *ctx, GLclampd nearval, GLclampd farval); - /*====================================================================== * Inline conversion functions. These are better-typed than the * macros used previously: diff --git a/src/mesa/drivers/dri/i965/brw_draw.c b/src/mesa/drivers/dri/i965/brw_draw.c index 2db70c543ea..9ab533179b8 100644 --- a/src/mesa/drivers/dri/i965/brw_draw.c +++ b/src/mesa/drivers/dri/i965/brw_draw.c @@ -28,6 +28,8 @@ #include "main/glheader.h" #include "main/context.h" +#include "main/condrender.h" +#include "main/samplerobj.h" #include "main/state.h" #include "main/enums.h" #include "tnl/tnl.h" @@ -278,22 +280,25 @@ static GLboolean check_fallbacks( struct brw_context *brw, int u; for (u = 0; u < ctx->Const.MaxTextureCoordUnits; u++) { struct gl_texture_unit *texUnit = &ctx->Texture.Unit[u]; + if (texUnit->Enabled) { + struct gl_sampler_object *sampler = _mesa_get_samplerobj(ctx, u); + if (texUnit->Enabled & TEXTURE_1D_BIT) { - if (texUnit->CurrentTex[TEXTURE_1D_INDEX]->Sampler.WrapS == GL_CLAMP) { + if (sampler->WrapS == GL_CLAMP) { return GL_TRUE; } } if (texUnit->Enabled & TEXTURE_2D_BIT) { - if (texUnit->CurrentTex[TEXTURE_2D_INDEX]->Sampler.WrapS == GL_CLAMP || - texUnit->CurrentTex[TEXTURE_2D_INDEX]->Sampler.WrapT == GL_CLAMP) { + if (sampler->WrapS == GL_CLAMP || + sampler->WrapT == GL_CLAMP) { return GL_TRUE; } } if (texUnit->Enabled & TEXTURE_3D_BIT) { - 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) { + if (sampler->WrapS == GL_CLAMP || + sampler->WrapT == GL_CLAMP || + sampler->WrapR == GL_CLAMP) { return GL_TRUE; } } @@ -359,15 +364,21 @@ static GLboolean brw_try_draw_prims( struct gl_context *ctx, for (i = 0; i < nr_prims; i++) { uint32_t hw_prim; + int estimated_max_prim_size; + + estimated_max_prim_size = 512; /* batchbuffer commands */ + estimated_max_prim_size += (BRW_MAX_TEX_UNIT * + (sizeof(struct brw_sampler_state) + + sizeof(struct gen5_sampler_default_color))); + estimated_max_prim_size += 1024; /* gen6 VS push constants */ + estimated_max_prim_size += 1024; /* gen6 WM push constants */ + estimated_max_prim_size += 512; /* misc. pad */ /* Flush the batch if it's approaching full, so that we don't wrap while * we've got validated state that needs to be in the same batch as the - * primitives. This fraction is just a guess (minimal full state plus - * a primitive is around 512 bytes), and would be better if we had - * an upper bound of how much we might emit in a single - * brw_try_draw_prims(). + * primitives. */ - intel_batchbuffer_require_space(intel, 1024, false); + intel_batchbuffer_require_space(intel, estimated_max_prim_size, false); hw_prim = brw_set_prim(brw, &prim[i]); if (brw->state.dirty.brw) { @@ -438,6 +449,9 @@ void brw_draw_prims( struct gl_context *ctx, { GLboolean retval; + if (!_mesa_check_conditional_render(ctx)) + return; + if (!vbo_all_varyings_in_vbos(arrays)) { if (!index_bounds_valid) vbo_get_minmax_index(ctx, prim, ib, &min_index, &max_index); diff --git a/src/mesa/drivers/dri/i965/brw_eu.h b/src/mesa/drivers/dri/i965/brw_eu.h index 718b3800423..4eb67d57a5a 100644 --- a/src/mesa/drivers/dri/i965/brw_eu.h +++ b/src/mesa/drivers/dri/i965/brw_eu.h @@ -293,6 +293,14 @@ static INLINE struct brw_reg retype( struct brw_reg reg, return reg; } +static inline struct brw_reg +sechalf(struct brw_reg reg) +{ + if (reg.vstride) + reg.nr++; + return reg; +} + static INLINE struct brw_reg suboffset( struct brw_reg reg, GLuint delta ) { @@ -856,7 +864,6 @@ void brw_ff_sync(struct brw_compile *p, void brw_fb_WRITE(struct brw_compile *p, int dispatch_width, - struct brw_reg dest, GLuint msg_reg_nr, struct brw_reg src0, GLuint binding_table_index, diff --git a/src/mesa/drivers/dri/i965/brw_eu_emit.c b/src/mesa/drivers/dri/i965/brw_eu_emit.c index 71485cd1f71..859068ec4eb 100644 --- a/src/mesa/drivers/dri/i965/brw_eu_emit.c +++ b/src/mesa/drivers/dri/i965/brw_eu_emit.c @@ -1871,7 +1871,6 @@ void brw_dp_READ_4_vs_relative(struct brw_compile *p, void brw_fb_WRITE(struct brw_compile *p, int dispatch_width, - struct brw_reg dest, GLuint msg_reg_nr, struct brw_reg src0, GLuint binding_table_index, @@ -1883,6 +1882,12 @@ void brw_fb_WRITE(struct brw_compile *p, struct intel_context *intel = &p->brw->intel; struct brw_instruction *insn; GLuint msg_control, msg_type; + struct brw_reg dest; + + if (dispatch_width == 16) + dest = retype(vec16(brw_null_reg()), BRW_REGISTER_TYPE_UW); + else + dest = retype(vec8(brw_null_reg()), BRW_REGISTER_TYPE_UW); if (intel->gen >= 6 && binding_table_index == 0) { insn = next_insn(p, BRW_OPCODE_SENDC); diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index 5426925e372..21eb9e4e5e1 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -194,6 +194,32 @@ fs_visitor::fail(const char *format, ...) } } +void +fs_visitor::push_force_uncompressed() +{ + force_uncompressed_stack++; +} + +void +fs_visitor::pop_force_uncompressed() +{ + force_uncompressed_stack--; + assert(force_uncompressed_stack >= 0); +} + +void +fs_visitor::push_force_sechalf() +{ + force_sechalf_stack++; +} + +void +fs_visitor::pop_force_sechalf() +{ + force_sechalf_stack--; + assert(force_sechalf_stack >= 0); +} + /** * Returns how many MRFs an FS opcode will write over. * @@ -214,9 +240,9 @@ fs_visitor::implied_mrf_writes(fs_inst *inst) case FS_OPCODE_LOG2: case FS_OPCODE_SIN: case FS_OPCODE_COS: - return 1; + return 1 * c->dispatch_width / 8; case FS_OPCODE_POW: - return 2; + return 2 * c->dispatch_width / 8; case FS_OPCODE_TEX: case FS_OPCODE_TXB: case FS_OPCODE_TXD: @@ -313,6 +339,31 @@ fs_visitor::variable_storage(ir_variable *var) return (fs_reg *)hash_table_find(this->variable_ht, var); } +void +import_uniforms_callback(const void *key, + void *data, + void *closure) +{ + struct hash_table *dst_ht = (struct hash_table *)closure; + const fs_reg *reg = (const fs_reg *)data; + + if (reg->file != UNIFORM) + return; + + hash_table_insert(dst_ht, data, key); +} + +/* For 16-wide, we need to follow from the uniform setup of 8-wide dispatch. + * This brings in those uniform definitions + */ +void +fs_visitor::import_uniforms(struct hash_table *src_variable_ht) +{ + hash_table_call_foreach(src_variable_ht, + import_uniforms_callback, + variable_ht); +} + /* Our support for uniforms is piggy-backed on the struct * gl_fragment_program, because that's where the values actually * get stored, rather than in some global gl_shader_program uniform @@ -614,7 +665,7 @@ fs_visitor::emit_math(fs_opcodes opcode, fs_reg dst, fs_reg src) if (intel->gen < 6) { inst->base_mrf = 2; - inst->mlen = 1; + inst->mlen = c->dispatch_width / 8; } return inst; @@ -652,7 +703,7 @@ fs_visitor::emit_math(fs_opcodes opcode, fs_reg dst, fs_reg src0, fs_reg src1) inst = emit(opcode, dst, src0, reg_null_f); inst->base_mrf = base_mrf; - inst->mlen = 2; + inst->mlen = 2 * c->dispatch_width / 8; } return inst; } @@ -689,6 +740,13 @@ fs_visitor::visit(ir_variable *ir) if (ir->mode == ir_var_uniform) { int param_index = c->prog_data.nr_params; + if (c->dispatch_width == 16) { + if (!variable_storage(ir)) { + fail("Failed to find uniform '%s' in 16-wide\n", ir->name); + } + return; + } + if (!strncmp(ir->name, "gl_", 3)) { setup_builtin_uniform_values(ir); } else { @@ -1233,32 +1291,34 @@ fs_visitor::emit_texture_gen4(ir_texture *ir, fs_reg dst, fs_reg coordinate) return inst; } +/* gen5's sampler has slots for u, v, r, array index, then optional + * parameters like shadow comparitor or LOD bias. If optional + * parameters aren't present, those base slots are optional and don't + * need to be included in the message. + * + * We don't fill in the unnecessary slots regardless, which may look + * surprising in the disassembly. + */ fs_inst * fs_visitor::emit_texture_gen5(ir_texture *ir, fs_reg dst, fs_reg coordinate) { - /* gen5's SIMD8 sampler has slots for u, v, r, array index, then - * optional parameters like shadow comparitor or LOD bias. If - * optional parameters aren't present, those base slots are - * optional and don't need to be included in the message. - * - * We don't fill in the unnecessary slots regardless, which may - * look surprising in the disassembly. - */ int mlen = 1; /* g0 header always present. */ int base_mrf = 1; + int reg_width = c->dispatch_width / 8; for (int i = 0; i < ir->coordinate->type->vector_elements; i++) { - emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i), coordinate); + emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen + i * reg_width), + coordinate); coordinate.reg_offset++; } - mlen += ir->coordinate->type->vector_elements; + mlen += ir->coordinate->type->vector_elements * reg_width; if (ir->shadow_comparitor) { - mlen = MAX2(mlen, 5); + mlen = MAX2(mlen, 1 + 4 * reg_width); ir->shadow_comparitor->accept(this); emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result); - mlen++; + mlen += reg_width; } fs_inst *inst = NULL; @@ -1268,17 +1328,18 @@ fs_visitor::emit_texture_gen5(ir_texture *ir, fs_reg dst, fs_reg coordinate) break; case ir_txb: ir->lod_info.bias->accept(this); - mlen = MAX2(mlen, 5); + mlen = MAX2(mlen, 1 + 4 * reg_width); emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result); - mlen++; + mlen += reg_width; inst = emit(FS_OPCODE_TXB, dst); + break; case ir_txl: ir->lod_info.lod->accept(this); - mlen = MAX2(mlen, 5); + mlen = MAX2(mlen, 1 + 4 * reg_width); emit(BRW_OPCODE_MOV, fs_reg(MRF, base_mrf + mlen), this->result); - mlen++; + mlen += reg_width; inst = emit(FS_OPCODE_TXL, dst); break; @@ -1290,6 +1351,10 @@ fs_visitor::emit_texture_gen5(ir_texture *ir, fs_reg dst, fs_reg coordinate) inst->base_mrf = base_mrf; inst->mlen = mlen; + if (mlen > 11) { + fail("Message length >11 disallowed by hardware\n"); + } + return inst; } @@ -1355,6 +1420,12 @@ fs_visitor::visit(ir_texture *ir) 0 }; + if (c->dispatch_width == 16) { + fail("rectangle scale uniform setup not supported on 16-wide\n"); + this->result = fs_reg(this, ir->type); + return; + } + c->prog_data.param_convert[c->prog_data.nr_params] = PARAM_NO_CONVERT; c->prog_data.param_convert[c->prog_data.nr_params + 1] = @@ -1731,6 +1802,10 @@ fs_visitor::visit(ir_if *ir) { fs_inst *inst; + if (c->dispatch_width == 16) { + fail("Can't support (non-uniform) control flow on 16-wide\n"); + } + /* Don't point the annotation at the if statement, because then it plus * the then and else blocks get printed. */ @@ -1771,6 +1846,10 @@ fs_visitor::visit(ir_loop *ir) { fs_reg counter = reg_undef; + if (c->dispatch_width == 16) { + fail("Can't support (non-uniform) control flow on 16-wide\n"); + } + if (ir->counter) { this->base_ir = ir->counter; ir->counter->accept(this); @@ -1874,6 +1953,11 @@ fs_visitor::emit(fs_inst inst) fs_inst *list_inst = new(mem_ctx) fs_inst; *list_inst = inst; + if (force_uncompressed_stack > 0) + list_inst->force_uncompressed = true; + else if (force_sechalf_stack > 0) + list_inst->force_sechalf = true; + list_inst->annotation = this->current_annotation; list_inst->ir = this->base_ir; @@ -1916,21 +2000,14 @@ fs_visitor::interp_reg(int location, int channel) void fs_visitor::emit_interpolation_setup_gen4() { - struct brw_reg g1_uw = retype(brw_vec1_grf(1, 0), BRW_REGISTER_TYPE_UW); - this->current_annotation = "compute pixel centers"; this->pixel_x = fs_reg(this, glsl_type::uint_type); 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(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))); + + emit(FS_OPCODE_PIXEL_X, this->pixel_x); + emit(FS_OPCODE_PIXEL_Y, this->pixel_y); this->current_annotation = "compute pixel deltas from v0"; if (brw->has_pln) { @@ -2001,11 +2078,69 @@ fs_visitor::emit_interpolation_setup_gen6() } void +fs_visitor::emit_color_write(int index, int first_color_mrf, fs_reg color) +{ + int reg_width = c->dispatch_width / 8; + + if (c->dispatch_width == 8 || intel->gen == 6) { + /* SIMD8 write looks like: + * m + 0: r0 + * m + 1: r1 + * m + 2: g0 + * m + 3: g1 + * + * gen6 SIMD16 DP write looks like: + * m + 0: r0 + * m + 1: r1 + * m + 2: g0 + * m + 3: g1 + * m + 4: b0 + * m + 5: b1 + * m + 6: a0 + * m + 7: a1 + */ + emit(BRW_OPCODE_MOV, fs_reg(MRF, first_color_mrf + index * reg_width), + color); + } else { + /* pre-gen6 SIMD16 single source DP write looks like: + * m + 0: r0 + * m + 1: g0 + * m + 2: b0 + * m + 3: a0 + * m + 4: r1 + * m + 5: g1 + * m + 6: b1 + * m + 7: a1 + */ + if (brw->has_compr4) { + /* By setting the high bit of the MRF register number, we + * indicate that we want COMPR4 mode - instead of doing the + * usual destination + 1 for the second half we get + * destination + 4. + */ + emit(BRW_OPCODE_MOV, + fs_reg(MRF, BRW_MRF_COMPR4 + first_color_mrf + index), color); + } else { + push_force_uncompressed(); + emit(BRW_OPCODE_MOV, fs_reg(MRF, first_color_mrf + index), color); + pop_force_uncompressed(); + + push_force_sechalf(); + color.sechalf = true; + emit(BRW_OPCODE_MOV, fs_reg(MRF, first_color_mrf + index + 4), color); + pop_force_sechalf(); + color.sechalf = false; + } + } +} + +void fs_visitor::emit_fb_writes() { this->current_annotation = "FB write header"; GLboolean header_present = GL_TRUE; int nr = 0; + int reg_width = c->dispatch_width / 8; if (intel->gen >= 6 && !this->kill_emitted && @@ -2019,31 +2154,44 @@ fs_visitor::emit_fb_writes() } if (c->aa_dest_stencil_reg) { + push_force_uncompressed(); emit(BRW_OPCODE_MOV, fs_reg(MRF, nr++), fs_reg(brw_vec8_grf(c->aa_dest_stencil_reg, 0))); + pop_force_uncompressed(); } /* Reserve space for color. It'll be filled in per MRT below. */ int color_mrf = nr; - nr += 4; + nr += 4 * reg_width; if (c->source_depth_to_render_target) { + if (intel->gen == 6 && c->dispatch_width == 16) { + /* For outputting oDepth on gen6, SIMD8 writes have to be + * used. This would require 8-wide moves of each half to + * message regs, kind of like pre-gen5 SIMD16 FB writes. + * Just bail on doing so for now. + */ + fail("Missing support for simd16 depth writes on gen6\n"); + } + if (c->computes_depth) { /* Hand over gl_FragDepth. */ assert(this->frag_depth); fs_reg depth = *(variable_storage(this->frag_depth)); - emit(BRW_OPCODE_MOV, fs_reg(MRF, nr++), depth); + emit(BRW_OPCODE_MOV, fs_reg(MRF, nr), depth); } else { /* Pass through the payload depth. */ - emit(BRW_OPCODE_MOV, fs_reg(MRF, nr++), + emit(BRW_OPCODE_MOV, fs_reg(MRF, nr), fs_reg(brw_vec8_grf(c->source_depth_reg, 0))); } + nr += reg_width; } if (c->dest_depth_reg) { - emit(BRW_OPCODE_MOV, fs_reg(MRF, nr++), + emit(BRW_OPCODE_MOV, fs_reg(MRF, nr), fs_reg(brw_vec8_grf(c->dest_depth_reg, 0))); + nr += reg_width; } fs_reg color = reg_undef; @@ -2060,7 +2208,7 @@ fs_visitor::emit_fb_writes() target); if (this->frag_color || this->frag_data) { for (int i = 0; i < 4; i++) { - emit(BRW_OPCODE_MOV, fs_reg(MRF, color_mrf + i), color); + emit_color_write(i, color_mrf, color); color.reg_offset++; } } @@ -2084,7 +2232,7 @@ fs_visitor::emit_fb_writes() * renderbuffer. */ color.reg_offset += 3; - emit(BRW_OPCODE_MOV, fs_reg(MRF, color_mrf + 3), color); + emit_color_write(3, color_mrf, color); } fs_inst *inst = emit(FS_OPCODE_FB_WRITE); @@ -2144,8 +2292,7 @@ fs_visitor::generate_fb_write(fs_inst *inst) brw_pop_insn_state(p); brw_fb_WRITE(p, - 8, /* dispatch_width */ - retype(vec8(brw_null_reg()), BRW_REGISTER_TYPE_UW), + c->dispatch_width, inst->base_mrf, implied_header, inst->target, @@ -2155,6 +2302,40 @@ fs_visitor::generate_fb_write(fs_inst *inst) inst->header_present); } +/* Computes the integer pixel x,y values from the origin. + * + * This is the basis of gl_FragCoord computation, but is also used + * pre-gen6 for computing the deltas from v0 for computing + * interpolation. + */ +void +fs_visitor::generate_pixel_xy(struct brw_reg dst, bool is_x) +{ + struct brw_reg g1_uw = retype(brw_vec1_grf(1, 0), BRW_REGISTER_TYPE_UW); + struct brw_reg src; + struct brw_reg deltas; + + if (is_x) { + src = stride(suboffset(g1_uw, 4), 2, 4, 0); + deltas = brw_imm_v(0x10101010); + } else { + src = stride(suboffset(g1_uw, 5), 2, 4, 0); + deltas = brw_imm_v(0x11001100); + } + + if (c->dispatch_width == 16) { + dst = vec16(dst); + } + + /* We do this 8 or 16-wide, but since the destination is UW we + * don't do compression in the 16-wide case. + */ + brw_push_insn_state(p); + brw_set_compression_control(p, BRW_COMPRESSION_NONE); + brw_ADD(p, dst, src, deltas); + brw_pop_insn_state(p); +} + void fs_visitor::generate_linterp(fs_inst *inst, struct brw_reg dst, struct brw_reg *src) @@ -2214,8 +2395,16 @@ fs_visitor::generate_math(fs_inst *inst, assert(inst->mlen == 0); if (inst->opcode == FS_OPCODE_POW) { + brw_set_compression_control(p, BRW_COMPRESSION_NONE); brw_math2(p, dst, op, src[0], src[1]); + + if (c->dispatch_width == 16) { + brw_set_compression_control(p, BRW_COMPRESSION_2NDHALF); + brw_math2(p, sechalf(dst), op, sechalf(src[0]), sechalf(src[1])); + brw_set_compression_control(p, BRW_COMPRESSION_COMPRESSED); + } } else { + brw_set_compression_control(p, BRW_COMPRESSION_NONE); brw_math(p, dst, op, inst->saturate ? BRW_MATH_SATURATE_SATURATE : @@ -2223,10 +2412,23 @@ fs_visitor::generate_math(fs_inst *inst, 0, src[0], BRW_MATH_DATA_VECTOR, BRW_MATH_PRECISION_FULL); + + if (c->dispatch_width == 16) { + brw_set_compression_control(p, BRW_COMPRESSION_2NDHALF); + brw_math(p, sechalf(dst), + op, + inst->saturate ? BRW_MATH_SATURATE_SATURATE : + BRW_MATH_SATURATE_NONE, + 0, sechalf(src[0]), + BRW_MATH_DATA_VECTOR, + BRW_MATH_PRECISION_FULL); + brw_set_compression_control(p, BRW_COMPRESSION_COMPRESSED); + } } - } else { + } else /* gen <= 5 */{ assert(inst->mlen >= 1); + brw_set_compression_control(p, BRW_COMPRESSION_NONE); brw_math(p, dst, op, inst->saturate ? BRW_MATH_SATURATE_SATURATE : @@ -2234,6 +2436,19 @@ fs_visitor::generate_math(fs_inst *inst, inst->base_mrf, src[0], BRW_MATH_DATA_VECTOR, BRW_MATH_PRECISION_FULL); + + if (c->dispatch_width == 16) { + brw_set_compression_control(p, BRW_COMPRESSION_2NDHALF); + brw_math(p, sechalf(dst), + op, + inst->saturate ? BRW_MATH_SATURATE_SATURATE : + BRW_MATH_SATURATE_NONE, + inst->base_mrf + 1, sechalf(src[0]), + BRW_MATH_DATA_VECTOR, + BRW_MATH_PRECISION_FULL); + + brw_set_compression_control(p, BRW_COMPRESSION_COMPRESSED); + } } } @@ -2244,6 +2459,12 @@ fs_visitor::generate_tex(fs_inst *inst, struct brw_reg dst, struct brw_reg src) int rlen = 4; uint32_t simd_mode = BRW_SAMPLER_SIMD_MODE_SIMD8; + if (c->dispatch_width == 16) { + rlen = 8; + dst = vec16(dst); + simd_mode = BRW_SAMPLER_SIMD_MODE_SIMD16; + } + if (intel->gen >= 5) { switch (inst->opcode) { case FS_OPCODE_TEX: @@ -2311,11 +2532,6 @@ fs_visitor::generate_tex(fs_inst *inst, struct brw_reg dst, struct brw_reg src) } assert(msg_type != -1); - if (simd_mode == BRW_SAMPLER_SIMD_MODE_SIMD16) { - rlen = 8; - dst = vec16(dst); - } - brw_SAMPLE(p, retype(dst, BRW_REGISTER_TYPE_UW), inst->base_mrf, @@ -2408,6 +2624,7 @@ fs_visitor::generate_discard_not(fs_inst *inst, struct brw_reg mask) } else { brw_push_insn_state(p); brw_set_mask_control(p, BRW_MASK_DISABLE); + brw_set_compression_control(p, BRW_COMPRESSION_NONE); brw_NOT(p, mask, brw_mask_reg(1)); /* IMASK */ brw_pop_insn_state(p); } @@ -2432,6 +2649,7 @@ fs_visitor::generate_discard_and(fs_inst *inst, struct brw_reg mask) brw_push_insn_state(p); brw_set_mask_control(p, BRW_MASK_DISABLE); + brw_set_compression_control(p, BRW_COMPRESSION_NONE); brw_AND(p, g1, f0, g1); brw_pop_insn_state(p); } else { @@ -2441,6 +2659,7 @@ fs_visitor::generate_discard_and(fs_inst *inst, struct brw_reg mask) brw_push_insn_state(p); brw_set_mask_control(p, BRW_MASK_DISABLE); + brw_set_compression_control(p, BRW_COMPRESSION_NONE); brw_AND(p, g0, mask, g0); brw_pop_insn_state(p); } @@ -2527,6 +2746,9 @@ fs_visitor::generate_pull_constant_load(fs_inst *inst, struct brw_reg dst) void fs_visitor::setup_paramvalues_refs() { + if (c->dispatch_width != 8) + return; + /* Set up the pointers to ParamValues now that that array is finalized. */ for (unsigned int i = 0; i < c->prog_data.nr_params; i++) { c->prog_data.param[i] = @@ -2538,8 +2760,12 @@ fs_visitor::setup_paramvalues_refs() void fs_visitor::assign_curb_setup() { - c->prog_data.first_curbe_grf = c->nr_payload_regs; c->prog_data.curb_read_length = ALIGN(c->prog_data.nr_params, 8) / 8; + if (c->dispatch_width == 8) { + c->prog_data.first_curbe_grf = c->nr_payload_regs; + } else { + c->prog_data.first_curbe_grf_16 = c->nr_payload_regs; + } /* Map the offsets in the UNIFORM file to fixed HW regs. */ foreach_iter(exec_list_iterator, iter, this->instructions) { @@ -2548,7 +2774,7 @@ fs_visitor::assign_curb_setup() for (unsigned int i = 0; i < 3; i++) { if (inst->src[i].file == UNIFORM) { int constant_nr = inst->src[i].hw_reg + inst->src[i].reg_offset; - struct brw_reg brw_reg = brw_vec1_grf(c->prog_data.first_curbe_grf + + struct brw_reg brw_reg = brw_vec1_grf(c->nr_payload_regs + constant_nr / 8, constant_nr % 8); @@ -2600,7 +2826,7 @@ fs_visitor::calculate_urb_setup() void fs_visitor::assign_urb_setup() { - int urb_start = c->prog_data.first_curbe_grf + c->prog_data.curb_read_length; + int urb_start = c->nr_payload_regs + c->prog_data.curb_read_length; /* Offset all the urb_setup[] index by the actual position of the * setup regs, now that the location of the constants has been chosen. @@ -2725,6 +2951,11 @@ fs_visitor::setup_pull_constants() if (c->prog_data.nr_params <= max_uniform_components) return; + if (c->dispatch_width == 16) { + fail("Pull constants not supported in 16-wide\n"); + return; + } + /* Just demote the end of the list. We could probably do better * here, demoting things that are rarely used in the program first. */ @@ -2884,7 +3115,9 @@ fs_visitor::propagate_constants() if (inst->opcode != BRW_OPCODE_MOV || inst->predicated || inst->dst.file != GRF || inst->src[0].file != IMM || - inst->dst.type != inst->src[0].type) + inst->dst.type != inst->src[0].type || + (c->dispatch_width == 16 && + (inst->force_uncompressed || inst->force_sechalf))) continue; /* Don't bother with cases where we should have had the @@ -3152,6 +3385,20 @@ fs_visitor::compute_to_mrf() inst->src[0].abs || inst->src[0].negate || inst->src[0].smear != -1) continue; + /* Work out which hardware MRF registers are written by this + * instruction. + */ + int mrf_low = inst->dst.hw_reg & ~BRW_MRF_COMPR4; + int mrf_high; + if (inst->dst.hw_reg & BRW_MRF_COMPR4) { + mrf_high = mrf_low + 4; + } else if (c->dispatch_width == 16 && + (!inst->force_uncompressed && !inst->force_sechalf)) { + mrf_high = mrf_low + 1; + } else { + mrf_high = mrf_low; + } + /* Can't compute-to-MRF this GRF if someone else was going to * read it later. */ @@ -3179,11 +3426,21 @@ fs_visitor::compute_to_mrf() } /* If it's predicated, it (probably) didn't populate all - * the channels. + * the channels. We might be able to rewrite everything + * that writes that reg, but it would require smarter + * tracking to delay the rewriting until complete success. */ if (scan_inst->predicated) break; + /* If it's half of register setup and not the same half as + * our MOV we're trying to remove, bail for now. + */ + if (scan_inst->force_uncompressed != inst->force_uncompressed || + scan_inst->force_sechalf != inst->force_sechalf) { + break; + } + /* SEND instructions can't have MRF as a destination. */ if (scan_inst->mlen) break; @@ -3233,12 +3490,29 @@ fs_visitor::compute_to_mrf() if (interfered) break; - if (scan_inst->dst.file == MRF && - scan_inst->dst.hw_reg == inst->dst.hw_reg) { - /* Somebody else wrote our MRF here, so we can't can't + if (scan_inst->dst.file == MRF) { + /* If somebody else writes our MRF here, we can't * compute-to-MRF before that. */ - break; + int scan_mrf_low = scan_inst->dst.hw_reg & ~BRW_MRF_COMPR4; + int scan_mrf_high; + + if (scan_inst->dst.hw_reg & BRW_MRF_COMPR4) { + scan_mrf_high = scan_mrf_low + 4; + } else if (c->dispatch_width == 16 && + (!scan_inst->force_uncompressed && + !scan_inst->force_sechalf)) { + scan_mrf_high = scan_mrf_low + 1; + } else { + scan_mrf_high = scan_mrf_low; + } + + if (mrf_low == scan_mrf_low || + mrf_low == scan_mrf_high || + mrf_high == scan_mrf_low || + mrf_high == scan_mrf_high) { + break; + } } if (scan_inst->mlen > 0) { @@ -3247,8 +3521,12 @@ fs_visitor::compute_to_mrf() * scan_inst->mlen - 1. Don't go pushing our MRF write up * above it. */ - if (inst->dst.hw_reg >= scan_inst->base_mrf && - inst->dst.hw_reg < scan_inst->base_mrf + scan_inst->mlen) { + if (mrf_low >= scan_inst->base_mrf && + mrf_low < scan_inst->base_mrf + scan_inst->mlen) { + break; + } + if (mrf_high >= scan_inst->base_mrf && + mrf_high < scan_inst->base_mrf + scan_inst->mlen) { break; } } @@ -3268,6 +3546,10 @@ fs_visitor::remove_duplicate_mrf_writes() fs_inst *last_mrf_move[16]; bool progress = false; + /* Need to update the MRF tracking for compressed instructions. */ + if (c->dispatch_width == 16) + return false; + memset(last_mrf_move, 0, sizeof(last_mrf_move)); foreach_iter(exec_list_iterator, iter, this->instructions) { @@ -3347,6 +3629,29 @@ fs_visitor::virtual_grf_interferes(int a, int b) (this->virtual_grf_use[b] != -1 || this->virtual_grf_def[b] == MAX_INSTRUCTION)); + /* If the register is used to store 16 values of less than float + * size (only the case for pixel_[xy]), then we can't allocate + * another dword-sized thing to that register that would be used in + * the same instruction. This is because when the GPU decodes (for + * example): + * + * (declare (in ) vec4 gl_FragCoord@0x97766a0) + * add(16) g6<1>F g6<8,8,1>UW 0.5F { align1 compr }; + * + * it's actually processed as: + * add(8) g6<1>F g6<8,8,1>UW 0.5F { align1 }; + * add(8) g7<1>F g6.8<8,8,1>UW 0.5F { align1 sechalf }; + * + * so our second half values in g6 got overwritten in the first + * half. + */ + if (c->dispatch_width == 16 && (this->pixel_x.reg == a || + this->pixel_x.reg == b || + this->pixel_y.reg == a || + this->pixel_y.reg == b)) { + return start <= end; + } + return start < end; } @@ -3366,6 +3671,8 @@ static struct brw_reg brw_reg_from_fs_reg(fs_reg *reg) reg->hw_reg, reg->smear); } brw_reg = retype(brw_reg, reg->type); + if (reg->sechalf) + brw_reg = sechalf(brw_reg); break; case IMM: switch (reg->type) { @@ -3411,7 +3718,7 @@ static struct brw_reg brw_reg_from_fs_reg(fs_reg *reg) void fs_visitor::generate_code() { - int last_native_inst = 0; + int last_native_inst = p->nr_insn; const char *last_annotation_string = NULL; ir_instruction *last_annotation_ir = NULL; @@ -3427,8 +3734,8 @@ fs_visitor::generate_code() if (unlikely(INTEL_DEBUG & DEBUG_WM)) { - printf("Native code for fragment shader %d:\n", - ctx->Shader.CurrentFragmentProgram->Name); + printf("Native code for fragment shader %d (%d-wide dispatch):\n", + ctx->Shader.CurrentFragmentProgram->Name, c->dispatch_width); } foreach_iter(exec_list_iterator, iter, this->instructions) { @@ -3461,6 +3768,14 @@ fs_visitor::generate_code() brw_set_predicate_inverse(p, inst->predicate_inverse); brw_set_saturate(p, inst->saturate); + if (inst->force_uncompressed || c->dispatch_width == 8) { + brw_set_compression_control(p, BRW_COMPRESSION_NONE); + } else if (inst->force_sechalf) { + brw_set_compression_control(p, BRW_COMPRESSION_2NDHALF); + } else { + brw_set_compression_control(p, BRW_COMPRESSION_COMPRESSED); + } + switch (inst->opcode) { case BRW_OPCODE_MOV: brw_MOV(p, dst, src[0]); @@ -3602,6 +3917,12 @@ fs_visitor::generate_code() case FS_OPCODE_COS: generate_math(inst, dst, src); break; + case FS_OPCODE_PIXEL_X: + generate_pixel_xy(dst, true); + break; + case FS_OPCODE_PIXEL_Y: + generate_pixel_xy(dst, false); + break; case FS_OPCODE_CINTERP: brw_MOV(p, dst, src[0]); break; @@ -3668,6 +3989,10 @@ fs_visitor::generate_code() last_native_inst = p->nr_insn; } + if (unlikely(INTEL_DEBUG & DEBUG_WM)) { + printf("\n"); + } + ralloc_free(if_stack); ralloc_free(loop_stack); ralloc_free(if_depth_in_loop); @@ -3693,108 +4018,146 @@ fs_visitor::generate_code() } } -GLboolean -brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c) +bool +fs_visitor::run() { - struct intel_context *intel = &brw->intel; - struct gl_context *ctx = &intel->ctx; - struct gl_shader_program *prog = ctx->Shader.CurrentFragmentProgram; + uint32_t prog_offset_16 = 0; + uint32_t orig_nr_params = c->prog_data.nr_params; - if (!prog) - return GL_FALSE; + brw_wm_payload_setup(brw, c); - struct brw_shader *shader = - (brw_shader *) prog->_LinkedShaders[MESA_SHADER_FRAGMENT]; - if (!shader) - return GL_FALSE; + if (c->dispatch_width == 16) { + /* align to 64 byte boundary. */ + while ((c->func.nr_insn * sizeof(struct brw_instruction)) % 64) { + brw_NOP(p); + } - /* We always use 8-wide mode, at least for now. For one, flow - * control only works in 8-wide. Also, when we're fragment shader - * bound, we're almost always under register pressure as well, so - * 8-wide would save us from the performance cliff of spilling - * regs. - */ - c->dispatch_width = 8; + /* Save off the start of this 16-wide program in case we succeed. */ + prog_offset_16 = c->func.nr_insn * sizeof(struct brw_instruction); - if (unlikely(INTEL_DEBUG & DEBUG_WM)) { - printf("GLSL IR for native fragment shader %d:\n", prog->Name); - _mesa_print_ir(shader->ir, NULL); - printf("\n"); + brw_set_compression_control(p, BRW_COMPRESSION_COMPRESSED); } - /* Now the main event: Visit the shader IR and generate our FS IR for it. - */ - fs_visitor v(c, shader); - if (0) { - v.emit_dummy_fs(); + emit_dummy_fs(); } else { - v.calculate_urb_setup(); + calculate_urb_setup(); if (intel->gen < 6) - v.emit_interpolation_setup_gen4(); + emit_interpolation_setup_gen4(); else - v.emit_interpolation_setup_gen6(); + emit_interpolation_setup_gen6(); /* Generate FS IR for main(). (the visitor only descends into * functions called "main"). */ foreach_iter(exec_list_iterator, iter, *shader->ir) { ir_instruction *ir = (ir_instruction *)iter.get(); - v.base_ir = ir; - ir->accept(&v); + base_ir = ir; + ir->accept(this); } - v.emit_fb_writes(); + emit_fb_writes(); - v.split_virtual_grfs(); + split_virtual_grfs(); - v.setup_paramvalues_refs(); - v.setup_pull_constants(); + setup_paramvalues_refs(); + setup_pull_constants(); bool progress; do { progress = false; - progress = v.remove_duplicate_mrf_writes() || progress; + progress = remove_duplicate_mrf_writes() || progress; - progress = v.propagate_constants() || progress; - progress = v.register_coalesce() || progress; - progress = v.compute_to_mrf() || progress; - progress = v.dead_code_eliminate() || progress; + progress = propagate_constants() || progress; + progress = register_coalesce() || progress; + progress = compute_to_mrf() || progress; + progress = dead_code_eliminate() || progress; } while (progress); - v.schedule_instructions(); + schedule_instructions(); - v.assign_curb_setup(); - v.assign_urb_setup(); + assign_curb_setup(); + assign_urb_setup(); if (0) { /* Debug of register spilling: Go spill everything. */ - int virtual_grf_count = v.virtual_grf_next; + int virtual_grf_count = virtual_grf_next; for (int i = 1; i < virtual_grf_count; i++) { - v.spill_reg(i); + spill_reg(i); } } if (0) - v.assign_regs_trivial(); + assign_regs_trivial(); else { - while (!v.assign_regs()) { - if (v.failed) + while (!assign_regs()) { + if (failed) break; } } } + assert(force_uncompressed_stack == 0); + assert(force_sechalf_stack == 0); - if (!v.failed) - v.generate_code(); + if (failed) + return false; - assert(!v.failed); /* FINISHME: Cleanly fail, tested at link time, etc. */ + generate_code(); - if (v.failed) - return GL_FALSE; + if (c->dispatch_width == 8) { + c->prog_data.total_grf = grf_used; + } else { + c->prog_data.total_grf_16 = grf_used; + c->prog_data.prog_offset_16 = prog_offset_16; - c->prog_data.total_grf = v.grf_used; + /* Make sure we didn't try to sneak in an extra uniform */ + assert(orig_nr_params == c->prog_data.nr_params); + } - return GL_TRUE; + return !failed; +} + +bool +brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c) +{ + struct intel_context *intel = &brw->intel; + struct gl_context *ctx = &intel->ctx; + struct gl_shader_program *prog = ctx->Shader.CurrentFragmentProgram; + + if (!prog) + return false; + + struct brw_shader *shader = + (brw_shader *) prog->_LinkedShaders[MESA_SHADER_FRAGMENT]; + if (!shader) + return false; + + if (unlikely(INTEL_DEBUG & DEBUG_WM)) { + printf("GLSL IR for native fragment shader %d:\n", prog->Name); + _mesa_print_ir(shader->ir, NULL); + printf("\n\n"); + } + + /* Now the main event: Visit the shader IR and generate our FS IR for it. + */ + c->dispatch_width = 8; + + fs_visitor v(c, shader); + if (!v.run()) { + /* FINISHME: Cleanly fail, test at link time, etc. */ + assert(!"not reached"); + return false; + } + + if (intel->gen >= 5 && c->prog_data.nr_pull_params == 0) { + c->dispatch_width = 16; + fs_visitor v2(c, shader); + v2.import_uniforms(v.variable_ht); + v2.run(); + } + + c->prog_data.dispatch_width = 8; + + return true; } diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h index f792906cfe7..518d09180c4 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.h +++ b/src/mesa/drivers/dri/i965/brw_fs.h @@ -67,6 +67,8 @@ enum fs_opcodes { FS_OPCODE_COS, FS_OPCODE_DDX, FS_OPCODE_DDY, + FS_OPCODE_PIXEL_X, + FS_OPCODE_PIXEL_Y, FS_OPCODE_CINTERP, FS_OPCODE_LINTERP, FS_OPCODE_TEX, @@ -176,6 +178,7 @@ public: int type; bool negate; bool abs; + bool sechalf; struct brw_reg fixed_hw_reg; int smear; /* -1, or a channel of the reg to smear to all channels. */ @@ -341,6 +344,8 @@ public: bool eot; bool header_present; bool shadow_compare; + bool force_uncompressed; + bool force_sechalf; uint32_t offset; /* spill/unspill offset */ /** @{ @@ -403,6 +408,8 @@ public: this->live_intervals_valid = false; this->kill_emitted = false; + this->force_uncompressed_stack = 0; + this->force_sechalf_stack = 0; } ~fs_visitor() @@ -413,6 +420,7 @@ public: fs_reg *variable_storage(ir_variable *var); int virtual_grf_alloc(int size); + void import_uniforms(struct hash_table *src_variable_ht); void visit(ir_variable *ir); void visit(ir_assignment *ir); @@ -459,6 +467,7 @@ public: return emit(fs_inst(opcode, dst, src0, src1, src2)); } + bool run(); void setup_paramvalues_refs(); void assign_curb_setup(); void calculate_urb_setup(); @@ -479,8 +488,14 @@ public: void schedule_instructions(); void fail(const char *msg, ...); + void push_force_uncompressed(); + void pop_force_uncompressed(); + void push_force_sechalf(); + void pop_force_sechalf(); + void generate_code(); void generate_fb_write(fs_inst *inst); + void generate_pixel_xy(struct brw_reg dst, bool is_x); void generate_linterp(fs_inst *inst, struct brw_reg dst, struct brw_reg *src); void generate_tex(fs_inst *inst, struct brw_reg dst, struct brw_reg src); @@ -508,6 +523,7 @@ public: void emit_if_gen6(ir_if *ir); void emit_unspill(fs_inst *inst, fs_reg reg, uint32_t spill_offset); + void emit_color_write(int index, int first_color_mrf, fs_reg color); void emit_fb_writes(); void emit_assignment_writes(fs_reg &l, fs_reg &r, const glsl_type *type, bool predicated); @@ -565,6 +581,9 @@ public: fs_reg reg_null_cmp; int grf_used; + + int force_uncompressed_stack; + int force_sechalf_stack; }; GLboolean brw_do_channel_expressions(struct exec_list *instructions); 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 67f29ce1816..1e2cf917116 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_reg_allocate.cpp @@ -48,11 +48,11 @@ extern "C" { #include "../glsl/ir_print_visitor.h" static void -assign_reg(int *reg_hw_locations, fs_reg *reg) +assign_reg(int *reg_hw_locations, fs_reg *reg, int reg_width) { if (reg->file == GRF && reg->reg != 0) { assert(reg->reg_offset >= 0); - reg->hw_reg = reg_hw_locations[reg->reg] + reg->reg_offset; + reg->hw_reg = reg_hw_locations[reg->reg] + reg->reg_offset * reg_width; reg->reg = 0; } } @@ -63,32 +63,48 @@ fs_visitor::assign_regs_trivial() int last_grf = 0; int hw_reg_mapping[this->virtual_grf_next]; int i; + int reg_width = c->dispatch_width / 8; hw_reg_mapping[0] = 0; - hw_reg_mapping[1] = this->first_non_payload_grf; + /* Note that compressed instructions require alignment to 2 registers. */ + hw_reg_mapping[1] = ALIGN(this->first_non_payload_grf, reg_width); for (i = 2; i < this->virtual_grf_next; i++) { hw_reg_mapping[i] = (hw_reg_mapping[i - 1] + - this->virtual_grf_sizes[i - 1]); + this->virtual_grf_sizes[i - 1] * reg_width); } - last_grf = hw_reg_mapping[i - 1] + this->virtual_grf_sizes[i - 1]; + last_grf = hw_reg_mapping[i - 1] + (this->virtual_grf_sizes[i - 1] * + reg_width); foreach_iter(exec_list_iterator, iter, this->instructions) { fs_inst *inst = (fs_inst *)iter.get(); - assign_reg(hw_reg_mapping, &inst->dst); - assign_reg(hw_reg_mapping, &inst->src[0]); - assign_reg(hw_reg_mapping, &inst->src[1]); + assign_reg(hw_reg_mapping, &inst->dst, reg_width); + assign_reg(hw_reg_mapping, &inst->src[0], reg_width); + assign_reg(hw_reg_mapping, &inst->src[1], reg_width); } - this->grf_used = last_grf + 1; + if (last_grf >= BRW_MAX_GRF) { + fail("Ran out of regs on trivial allocator (%d/%d)\n", + last_grf, BRW_MAX_GRF); + } + + this->grf_used = last_grf + reg_width; } bool fs_visitor::assign_regs() { + /* Most of this allocation was written for a reg_width of 1 + * (dispatch_width == 8). In extending to 16-wide, the code was + * left in place and it was converted to have the hardware + * registers it's allocating be contiguous physical pairs of regs + * for reg_width == 2. + */ + int reg_width = c->dispatch_width / 8; int last_grf = 0; int hw_reg_mapping[this->virtual_grf_next + 1]; - int base_reg_count = BRW_MAX_GRF - this->first_non_payload_grf; + int first_assigned_grf = ALIGN(this->first_non_payload_grf, reg_width); + int base_reg_count = (BRW_MAX_GRF - first_assigned_grf) / reg_width; int class_sizes[base_reg_count]; int class_count = 0; int aligned_pair_class = -1; @@ -157,8 +173,8 @@ fs_visitor::assign_regs() if (0) { printf("%d/%d conflicts %d/%d\n", - class_sizes[i], this->first_non_payload_grf + i_r, - class_sizes[c], this->first_non_payload_grf + c_r); + class_sizes[i], first_assigned_grf + i_r, + class_sizes[c], first_assigned_grf + c_r); } ra_add_reg_conflict(regs, @@ -172,7 +188,7 @@ fs_visitor::assign_regs() /* Add a special class for aligned pairs, which we'll put delta_x/y * in on gen5 so that we can do PLN. */ - if (brw->has_pln && intel->gen < 6) { + if (brw->has_pln && reg_width == 1 && intel->gen < 6) { int reg_count = (base_reg_count - 1) / 2; int unaligned_pair_class = 1; assert(class_sizes[unaligned_pair_class] == 2); @@ -182,7 +198,7 @@ fs_visitor::assign_regs() class_sizes[aligned_pair_class] = 2; class_base_reg[aligned_pair_class] = 0; class_reg_count[aligned_pair_class] = 0; - int start = (this->first_non_payload_grf & 1) ? 1 : 0; + int start = (first_assigned_grf & 1) ? 1 : 0; for (int i = 0; i < reg_count; i++) { ra_class_add_reg(regs, classes[aligned_pair_class], @@ -228,6 +244,8 @@ fs_visitor::assign_regs() if (reg == -1) { fail("no register to spill\n"); + } else if (c->dispatch_width == 16) { + fail("no spilling support on 16-wide yet\n"); } else { spill_reg(reg); } @@ -257,7 +275,7 @@ fs_visitor::assign_regs() } assert(hw_reg >= 0); - hw_reg_mapping[i] = this->first_non_payload_grf + hw_reg; + hw_reg_mapping[i] = first_assigned_grf + hw_reg * reg_width; last_grf = MAX2(last_grf, hw_reg_mapping[i] + this->virtual_grf_sizes[i] - 1); } @@ -265,12 +283,12 @@ fs_visitor::assign_regs() foreach_iter(exec_list_iterator, iter, this->instructions) { fs_inst *inst = (fs_inst *)iter.get(); - assign_reg(hw_reg_mapping, &inst->dst); - assign_reg(hw_reg_mapping, &inst->src[0]); - assign_reg(hw_reg_mapping, &inst->src[1]); + assign_reg(hw_reg_mapping, &inst->dst, reg_width); + assign_reg(hw_reg_mapping, &inst->src[0], reg_width); + assign_reg(hw_reg_mapping, &inst->src[1], reg_width); } - this->grf_used = last_grf + 1; + this->grf_used = last_grf + reg_width; ralloc_free(g); ralloc_free(regs); diff --git a/src/mesa/drivers/dri/i965/brw_fs_schedule_instructions.cpp b/src/mesa/drivers/dri/i965/brw_fs_schedule_instructions.cpp index bff8f82f3f7..fb1192c810a 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_schedule_instructions.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_schedule_instructions.cpp @@ -145,6 +145,8 @@ public: void calculate_deps(); void schedule_instructions(fs_inst *next_block_header); + bool is_compressed(fs_inst *inst); + void *mem_ctx; int instructions_to_schedule; @@ -234,6 +236,17 @@ instruction_scheduler::add_barrier_deps(schedule_node *n) } } +/* instruction scheduling needs to be aware of when an MRF write + * actually writes 2 MRFs. + */ +bool +instruction_scheduler::is_compressed(fs_inst *inst) +{ + return (v->c->dispatch_width == 16 && + !inst->force_uncompressed && + !inst->force_sechalf); +} + void instruction_scheduler::calculate_deps() { @@ -297,11 +310,24 @@ instruction_scheduler::calculate_deps() } last_grf_write[inst->dst.reg] = n; } else if (inst->dst.file == MRF) { - if (last_mrf_write[inst->dst.hw_reg]) { - add_dep(last_mrf_write[inst->dst.hw_reg], n, - last_mrf_write[inst->dst.hw_reg]->latency); + int reg = inst->dst.hw_reg & ~BRW_MRF_COMPR4; + + if (last_mrf_write[reg]) { + add_dep(last_mrf_write[reg], n, + last_mrf_write[reg]->latency); + } + last_mrf_write[reg] = n; + if (is_compressed(inst)) { + if (inst->dst.hw_reg & BRW_MRF_COMPR4) + reg += 4; + else + reg++; + if (last_mrf_write[reg]) { + add_dep(last_mrf_write[reg], n, + last_mrf_write[reg]->latency); + } + last_mrf_write[reg] = n; } - last_mrf_write[inst->dst.hw_reg] = n; } else if (inst->dst.file != BAD_FILE) { add_barrier_deps(n); } @@ -369,7 +395,18 @@ instruction_scheduler::calculate_deps() if (inst->dst.file == GRF) { last_grf_write[inst->dst.reg] = n; } else if (inst->dst.file == MRF) { - last_mrf_write[inst->dst.hw_reg] = n; + int reg = inst->dst.hw_reg & ~BRW_MRF_COMPR4; + + last_mrf_write[reg] = n; + + if (is_compressed(inst)) { + if (inst->dst.hw_reg & BRW_MRF_COMPR4) + reg += 4; + else + reg++; + + last_mrf_write[reg] = n; + } } else if (inst->dst.file != BAD_FILE) { add_barrier_deps(n); } diff --git a/src/mesa/drivers/dri/i965/brw_gs.c b/src/mesa/drivers/dri/i965/brw_gs.c index 14ee6767cd5..f213ae20acd 100644 --- a/src/mesa/drivers/dri/i965/brw_gs.c +++ b/src/mesa/drivers/dri/i965/brw_gs.c @@ -121,13 +121,11 @@ static void compile_gs_prog( struct brw_context *brw, /* Upload */ drm_intel_bo_unreference(brw->gs.prog_bo); - brw->gs.prog_bo = brw_upload_cache_with_auxdata(&brw->cache, BRW_GS_PROG, - &c.key, sizeof(c.key), - NULL, 0, - program, program_size, - &c.prog_data, - sizeof(c.prog_data), - &brw->gs.prog_data); + brw->gs.prog_bo = brw_upload_cache(&brw->cache, BRW_GS_PROG, + &c.key, sizeof(c.key), + program, program_size, + &c.prog_data, sizeof(c.prog_data), + &brw->gs.prog_data); } static const GLenum gs_prim[GL_POLYGON+1] = { @@ -193,7 +191,6 @@ static void prepare_gs_prog(struct brw_context *brw) if (brw->gs.prog_active) { brw->gs.prog_bo = brw_search_cache(&brw->cache, BRW_GS_PROG, &key, sizeof(key), - NULL, 0, &brw->gs.prog_data); if (brw->gs.prog_bo == NULL) compile_gs_prog( brw, &key ); diff --git a/src/mesa/drivers/dri/i965/brw_gs_state.c b/src/mesa/drivers/dri/i965/brw_gs_state.c index 69a5f7a6667..542874b7706 100644 --- a/src/mesa/drivers/dri/i965/brw_gs_state.c +++ b/src/mesa/drivers/dri/i965/brw_gs_state.c @@ -35,112 +35,65 @@ #include "brw_state.h" #include "brw_defines.h" -struct brw_gs_unit_key { - unsigned int total_grf; - unsigned int urb_entry_read_length; - - unsigned int curbe_offset; - - unsigned int nr_urb_entries, urb_size; - GLboolean prog_active; -}; - static void -gs_unit_populate_key(struct brw_context *brw, struct brw_gs_unit_key *key) -{ - memset(key, 0, sizeof(*key)); - - /* CACHE_NEW_GS_PROG */ - key->prog_active = brw->gs.prog_active; - if (key->prog_active) { - key->total_grf = brw->gs.prog_data->total_grf; - key->urb_entry_read_length = brw->gs.prog_data->urb_read_length; - } else { - key->total_grf = 1; - key->urb_entry_read_length = 1; - } - - /* BRW_NEW_CURBE_OFFSETS */ - key->curbe_offset = brw->curbe.clip_start; - - /* BRW_NEW_URB_FENCE */ - key->nr_urb_entries = brw->urb.nr_gs_entries; - key->urb_size = brw->urb.vsize; -} - -static drm_intel_bo * -gs_unit_create_from_key(struct brw_context *brw, struct brw_gs_unit_key *key) +brw_prepare_gs_unit(struct brw_context *brw) { struct intel_context *intel = &brw->intel; - struct brw_gs_unit_state gs; - drm_intel_bo *bo; - - memset(&gs, 0, sizeof(gs)); - - gs.thread0.grf_reg_count = ALIGN(key->total_grf, 16) / 16 - 1; - if (key->prog_active) /* reloc */ - gs.thread0.kernel_start_pointer = brw->gs.prog_bo->offset >> 6; + struct brw_gs_unit_state *gs; - gs.thread1.floating_point_mode = BRW_FLOATING_POINT_NON_IEEE_754; - gs.thread1.single_program_flow = 1; + gs = brw_state_batch(brw, sizeof(*gs), 32, &brw->gs.state_offset); - gs.thread3.dispatch_grf_start_reg = 1; - gs.thread3.const_urb_entry_read_offset = 0; - gs.thread3.const_urb_entry_read_length = 0; - gs.thread3.urb_entry_read_offset = 0; - gs.thread3.urb_entry_read_length = key->urb_entry_read_length; + memset(gs, 0, sizeof(*gs)); - gs.thread4.nr_urb_entries = key->nr_urb_entries; - gs.thread4.urb_entry_allocation_size = key->urb_size - 1; - - if (key->nr_urb_entries >= 8) - gs.thread4.max_threads = 1; - else - gs.thread4.max_threads = 0; - - if (intel->gen == 5) - gs.thread4.rendering_enable = 1; - - if (unlikely(INTEL_DEBUG & DEBUG_STATS)) - gs.thread4.stats_enable = 1; - - bo = brw_upload_cache(&brw->cache, BRW_GS_UNIT, - key, sizeof(*key), - &brw->gs.prog_bo, 1, - &gs, sizeof(gs)); + /* CACHE_NEW_GS_PROG */ + if (brw->gs.prog_active) { + gs->thread0.grf_reg_count = (ALIGN(brw->gs.prog_data->total_grf, 16) / + 16 - 1); + /* reloc */ + gs->thread0.kernel_start_pointer = brw->gs.prog_bo->offset >> 6; + + gs->thread1.floating_point_mode = BRW_FLOATING_POINT_NON_IEEE_754; + gs->thread1.single_program_flow = 1; + + gs->thread3.dispatch_grf_start_reg = 1; + gs->thread3.const_urb_entry_read_offset = 0; + gs->thread3.const_urb_entry_read_length = 0; + gs->thread3.urb_entry_read_offset = 0; + gs->thread3.urb_entry_read_length = brw->gs.prog_data->urb_read_length; + + /* BRW_NEW_URB_FENCE */ + gs->thread4.nr_urb_entries = brw->urb.nr_gs_entries; + gs->thread4.urb_entry_allocation_size = brw->urb.vsize - 1; + + if (brw->urb.nr_gs_entries >= 8) + gs->thread4.max_threads = 1; + else + gs->thread4.max_threads = 0; - if (key->prog_active) { /* Emit GS program relocation */ - drm_intel_bo_emit_reloc(bo, offsetof(struct brw_gs_unit_state, thread0), - brw->gs.prog_bo, gs.thread0.grf_reg_count << 1, + drm_intel_bo_emit_reloc(intel->batch.bo, + (brw->gs.state_offset + + offsetof(struct brw_gs_unit_state, thread0)), + brw->gs.prog_bo, gs->thread0.grf_reg_count << 1, I915_GEM_DOMAIN_INSTRUCTION, 0); } - return bo; -} - -static void prepare_gs_unit(struct brw_context *brw) -{ - struct brw_gs_unit_key key; + if (intel->gen == 5) + gs->thread4.rendering_enable = 1; - gs_unit_populate_key(brw, &key); + if (unlikely(INTEL_DEBUG & DEBUG_STATS)) + gs->thread4.stats_enable = 1; - drm_intel_bo_unreference(brw->gs.state_bo); - brw->gs.state_bo = brw_search_cache(&brw->cache, BRW_GS_UNIT, - &key, sizeof(key), - &brw->gs.prog_bo, 1, - NULL); - if (brw->gs.state_bo == NULL) { - brw->gs.state_bo = gs_unit_create_from_key(brw, &key); - } + brw->state.dirty.cache |= CACHE_NEW_GS_UNIT; } const struct brw_tracked_state brw_gs_unit = { .dirty = { .mesa = 0, - .brw = (BRW_NEW_CURBE_OFFSETS | + .brw = (BRW_NEW_BATCH | + BRW_NEW_CURBE_OFFSETS | BRW_NEW_URB_FENCE), .cache = CACHE_NEW_GS_PROG }, - .prepare = prepare_gs_unit, + .prepare = brw_prepare_gs_unit, }; diff --git a/src/mesa/drivers/dri/i965/brw_misc_state.c b/src/mesa/drivers/dri/i965/brw_misc_state.c index 19eea07ebc6..7119786de42 100644 --- a/src/mesa/drivers/dri/i965/brw_misc_state.c +++ b/src/mesa/drivers/dri/i965/brw_misc_state.c @@ -143,15 +143,19 @@ static void upload_pipelined_state_pointers(struct brw_context *brw ) BEGIN_BATCH(7); OUT_BATCH(_3DSTATE_PIPELINED_POINTERS << 16 | (7 - 2)); - OUT_RELOC(brw->vs.state_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); + OUT_RELOC(intel->batch.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, + brw->vs.state_offset); if (brw->gs.prog_active) - OUT_RELOC(brw->gs.state_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 1); + OUT_RELOC(brw->intel.batch.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, + brw->gs.state_offset | 1); else OUT_BATCH(0); - OUT_RELOC(brw->clip.state_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 1); + OUT_RELOC(brw->intel.batch.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, + brw->clip.state_offset | 1); 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->wm.state_offset); OUT_RELOC(brw->intel.batch.bo, I915_GEM_DOMAIN_INSTRUCTION, 0, brw->cc.state_offset); ADVANCE_BATCH(); @@ -159,16 +163,6 @@ static void upload_pipelined_state_pointers(struct brw_context *brw ) brw->state.dirty.brw |= BRW_NEW_PSP; } - -static void prepare_psp_urb_cbs(struct brw_context *brw) -{ - brw_add_validated_bo(brw, brw->vs.state_bo); - brw_add_validated_bo(brw, brw->gs.state_bo); - brw_add_validated_bo(brw, brw->clip.state_bo); - brw_add_validated_bo(brw, brw->sf.state_bo); - brw_add_validated_bo(brw, brw->wm.state_bo); -} - static void upload_psp_urb_cbs(struct brw_context *brw ) { upload_pipelined_state_pointers(brw); @@ -188,7 +182,6 @@ const struct brw_tracked_state brw_psp_urb_cbs = { CACHE_NEW_WM_UNIT | CACHE_NEW_CC_UNIT) }, - .prepare = prepare_psp_urb_cbs, .emit = upload_psp_urb_cbs, }; @@ -551,12 +544,28 @@ static void upload_state_base_address( struct brw_context *brw ) if (intel->gen >= 6) { BEGIN_BATCH(10); OUT_BATCH(CMD_STATE_BASE_ADDRESS << 16 | (10 - 2)); - OUT_BATCH(1); /* General state base address */ - OUT_RELOC(intel->batch.bo, I915_GEM_DOMAIN_SAMPLER, 0, - 1); /* Surface state base address */ - OUT_BATCH(1); /* Dynamic state base address */ - OUT_BATCH(1); /* Indirect object base address */ - OUT_BATCH(1); /* Instruction base address */ + /* General state base address: stateless DP read/write requests */ + OUT_BATCH(1); + /* Surface state base address: + * BINDING_TABLE_STATE + * SURFACE_STATE + */ + OUT_RELOC(intel->batch.bo, I915_GEM_DOMAIN_SAMPLER, 0, 1); + /* Dynamic state base address: + * SAMPLER_STATE + * SAMPLER_BORDER_COLOR_STATE + * CLIP, SF, WM/CC viewport state + * COLOR_CALC_STATE + * DEPTH_STENCIL_STATE + * BLEND_STATE + * Push constants (when INSTPM: CONSTANT_BUFFER Address Offset + * Disable is clear, which we rely on) + */ + OUT_RELOC(intel->batch.bo, (I915_GEM_DOMAIN_RENDER | + I915_GEM_DOMAIN_INSTRUCTION), 0, 1); + + OUT_BATCH(1); /* Indirect object base address: MEDIA_OBJECT data */ + OUT_BATCH(1); /* Instruction base address: shader kernels (incl. SIP) */ OUT_BATCH(1); /* General state upper bound */ OUT_BATCH(1); /* Dynamic state upper bound */ OUT_BATCH(1); /* Indirect object upper bound */ diff --git a/src/mesa/drivers/dri/i965/brw_sf.c b/src/mesa/drivers/dri/i965/brw_sf.c index 6da155b1a9b..5a03851b8e6 100644 --- a/src/mesa/drivers/dri/i965/brw_sf.c +++ b/src/mesa/drivers/dri/i965/brw_sf.c @@ -119,13 +119,11 @@ static void compile_sf_prog( struct brw_context *brw, /* Upload */ drm_intel_bo_unreference(brw->sf.prog_bo); - brw->sf.prog_bo = brw_upload_cache_with_auxdata(&brw->cache, BRW_SF_PROG, - &c.key, sizeof(c.key), - NULL, 0, - program, program_size, - &c.prog_data, - sizeof(c.prog_data), - &brw->sf.prog_data); + brw->sf.prog_bo = brw_upload_cache(&brw->cache, BRW_SF_PROG, + &c.key, sizeof(c.key), + program, program_size, + &c.prog_data, sizeof(c.prog_data), + &brw->sf.prog_data); } /* Calculate interpolants for triangle and line rasterization. @@ -194,7 +192,6 @@ static void upload_sf_prog(struct brw_context *brw) drm_intel_bo_unreference(brw->sf.prog_bo); brw->sf.prog_bo = brw_search_cache(&brw->cache, BRW_SF_PROG, &key, sizeof(key), - NULL, 0, &brw->sf.prog_data); if (brw->sf.prog_bo == NULL) compile_sf_prog( brw, &key ); diff --git a/src/mesa/drivers/dri/i965/brw_sf_state.c b/src/mesa/drivers/dri/i965/brw_sf_state.c index 66d91a0bde7..78b22c4df3d 100644 --- a/src/mesa/drivers/dri/i965/brw_sf_state.c +++ b/src/mesa/drivers/dri/i965/brw_sf_state.c @@ -39,7 +39,7 @@ static void upload_sf_vp(struct brw_context *brw) { struct intel_context *intel = &brw->intel; - struct gl_context *ctx = &brw->intel.ctx; + struct gl_context *ctx = &intel->ctx; const GLfloat depth_scale = 1.0F / ctx->DrawBuffer->_DepthMaxF; struct brw_sf_viewport *sfv; GLfloat y_scale, y_bias; @@ -106,11 +106,6 @@ static void upload_sf_vp(struct brw_context *brw) 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); - drm_intel_bo_reference(intel->batch.bo); - brw->sf.vp_bo = intel->batch.bo; - brw->state.dirty.cache |= CACHE_NEW_SF_VP; } @@ -177,7 +172,7 @@ static void upload_sf_unit( struct brw_context *brw ) sf->thread4.stats_enable = 1; /* CACHE_NEW_SF_VP */ - sf->sf5.sf_viewport_state_offset = (brw->sf.vp_bo->offset + + sf->sf5.sf_viewport_state_offset = (intel->batch.bo->offset + brw->sf.vp_offset) >> 5; /* reloc */ sf->sf5.viewport_transform = 1; diff --git a/src/mesa/drivers/dri/i965/brw_state.c b/src/mesa/drivers/dri/i965/brw_state.c deleted file mode 100644 index 13b231d5cf5..00000000000 --- a/src/mesa/drivers/dri/i965/brw_state.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright © 2010 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including the next - * paragraph) shall be included in all copies or substantial portions of the - * Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - * IN THE SOFTWARE. - * - * Authors: - * Eric Anholt <[email protected]> - * - */ - -#include "brw_context.h" - -void -brw_enable(struct gl_context *ctx, GLenum cap, GLboolean state) -{ - struct brw_context *brw = brw_context(ctx); - - switch (cap) { - case GL_DEPTH_CLAMP: - brw_update_cc_vp(brw); - break; - } -} - -void -brw_depth_range(struct gl_context *ctx, GLclampd nearval, GLclampd farval) -{ - struct brw_context *brw = brw_context(ctx); - - if (ctx->Transform.DepthClamp) - brw_update_cc_vp(brw); -} diff --git a/src/mesa/drivers/dri/i965/brw_state.h b/src/mesa/drivers/dri/i965/brw_state.h index 86b0caa4a4e..8b9e3a4ec5d 100644 --- a/src/mesa/drivers/dri/i965/brw_state.h +++ b/src/mesa/drivers/dri/i965/brw_state.h @@ -47,6 +47,7 @@ brw_add_validated_bo(struct brw_context *brw, drm_intel_bo *bo) }; extern const struct brw_tracked_state brw_blend_constant_color; +extern const struct brw_tracked_state brw_cc_vp; extern const struct brw_tracked_state brw_cc_unit; extern const struct brw_tracked_state brw_check_fallback; extern const struct brw_tracked_state brw_clip_prog; @@ -102,11 +103,11 @@ extern const struct brw_tracked_state gen6_depth_stencil_state; extern const struct brw_tracked_state gen6_gs_state; extern const struct brw_tracked_state gen6_sampler_state; extern const struct brw_tracked_state gen6_scissor_state; -extern const struct brw_tracked_state gen6_scissor_state_pointers; extern const struct brw_tracked_state gen6_sf_state; extern const struct brw_tracked_state gen6_sf_vp; extern const struct brw_tracked_state gen6_urb; extern const struct brw_tracked_state gen6_viewport_state; +extern const struct brw_tracked_state gen6_vs_constants; extern const struct brw_tracked_state gen6_vs_state; extern const struct brw_tracked_state gen6_wm_constants; extern const struct brw_tracked_state gen6_wm_state; @@ -123,38 +124,21 @@ void brw_clear_validated_bos(struct brw_context *brw); /*********************************************************************** * brw_state_cache.c */ -drm_intel_bo *brw_cache_data(struct brw_cache *cache, - enum brw_cache_id cache_id, - const void *data, - GLuint size); drm_intel_bo *brw_upload_cache(struct brw_cache *cache, enum brw_cache_id cache_id, const void *key, GLuint key_sz, - drm_intel_bo **reloc_bufs, - GLuint nr_reloc_bufs, const void *data, - GLuint data_sz); - -drm_intel_bo *brw_upload_cache_with_auxdata(struct brw_cache *cache, - enum brw_cache_id cache_id, - const void *key, - GLuint key_sz, - drm_intel_bo **reloc_bufs, - GLuint nr_reloc_bufs, - const void *data, - GLuint data_sz, - const void *aux, - GLuint aux_sz, - void *aux_return); + GLuint data_sz, + const void *aux, + GLuint aux_sz, + void *aux_return); drm_intel_bo *brw_search_cache( struct brw_cache *cache, enum brw_cache_id cache_id, const void *key, GLuint key_size, - drm_intel_bo **reloc_bufs, - GLuint nr_reloc_bufs, void *aux_return); void brw_state_cache_check_size( struct brw_context *brw ); diff --git a/src/mesa/drivers/dri/i965/brw_state_cache.c b/src/mesa/drivers/dri/i965/brw_state_cache.c index 01eeb19a684..f13a41fa7cc 100644 --- a/src/mesa/drivers/dri/i965/brw_state_cache.c +++ b/src/mesa/drivers/dri/i965/brw_state_cache.c @@ -31,29 +31,17 @@ /** @file brw_state_cache.c * - * This file implements a simple static state cache for 965. The consumers - * can query the hash table of state using a cache_id, opaque key data, - * and list of buffers that will be used in relocations, and receive the - * corresponding state buffer object of state (plus associated auxiliary - * data) in return. + * This file implements a simple static state cache for 965. The + * consumers can query the hash table of state using a cache_id, + * opaque key data, and receive the corresponding state buffer object + * of state (plus associated auxiliary data) in return. Objects in + * the cache may not have relocations (pointers to other BOs) in them. * - * The inner workings are a simple hash table based on a CRC of the key data. - * The cache_id and relocation target buffers associated with the state - * buffer are included as auxiliary key data, but are not part of the hash - * value (this should be fixed, but will likely be fixed instead by making - * consumers use structured keys). + * The inner workings are a simple hash table based on a CRC of the + * key data. * - * Replacement is not implemented. Instead, when the cache gets too big, at - * a safe point (unlock) we throw out all of the cache data and let it - * regenerate for the next rendering operation. - * - * The reloc_buf pointers need to be included as key data, otherwise the - * non-unique values stuffed in the offset in key data through - * brw_cache_data() may result in successful probe for state buffers - * even when the buffer being referenced doesn't match. The result would be - * that the same state cache entry is used twice for different buffers, - * only one of the two buffers referenced gets put into the offset, and the - * incorrect program is run for the other instance. + * Replacement is not implemented. Instead, when the cache gets too + * big we throw out all of the cache data and let it get regenerated. */ #include "main/imports.h" @@ -76,13 +64,6 @@ hash_key(struct brw_cache_item *item) hash = (hash << 5) | (hash >> 27); } - /* Include the BO pointers as key data as well */ - ikey = (GLuint *)item->reloc_bufs; - for (i = 0; i < item->nr_reloc_bufs * sizeof(drm_intel_bo *) / 4; i++) { - hash ^= ikey[i]; - hash = (hash << 5) | (hash >> 27); - } - return hash; } @@ -110,10 +91,7 @@ brw_cache_item_equals(const struct brw_cache_item *a, return a->cache_id == b->cache_id && a->hash == b->hash && a->key_size == b->key_size && - (memcmp(a->key, b->key, a->key_size) == 0) && - a->nr_reloc_bufs == b->nr_reloc_bufs && - (memcmp(a->reloc_bufs, b->reloc_bufs, - a->nr_reloc_bufs * sizeof(drm_intel_bo *)) == 0); + (memcmp(a->key, b->key, a->key_size) == 0); } static struct brw_cache_item * @@ -170,9 +148,7 @@ rehash(struct brw_cache *cache) drm_intel_bo * brw_search_cache(struct brw_cache *cache, enum brw_cache_id cache_id, - const void *key, - GLuint key_size, - drm_intel_bo **reloc_bufs, GLuint nr_reloc_bufs, + const void *key, GLuint key_size, void *aux_return) { struct brw_cache_item *item; @@ -182,8 +158,6 @@ brw_search_cache(struct brw_cache *cache, lookup.cache_id = cache_id; lookup.key = key; lookup.key_size = key_size; - lookup.reloc_bufs = reloc_bufs; - lookup.nr_reloc_bufs = nr_reloc_bufs; hash = hash_key(&lookup); lookup.hash = hash; @@ -203,30 +177,24 @@ brw_search_cache(struct brw_cache *cache, drm_intel_bo * -brw_upload_cache_with_auxdata(struct brw_cache *cache, - enum brw_cache_id cache_id, - const void *key, - GLuint key_size, - drm_intel_bo **reloc_bufs, - GLuint nr_reloc_bufs, - const void *data, - GLuint data_size, - const void *aux, - GLuint aux_size, - void *aux_return) +brw_upload_cache(struct brw_cache *cache, + enum brw_cache_id cache_id, + const void *key, + GLuint key_size, + const void *data, + GLuint data_size, + const void *aux, + GLuint aux_size, + void *aux_return) { struct brw_cache_item *item = CALLOC_STRUCT(brw_cache_item); GLuint hash; - GLuint relocs_size = nr_reloc_bufs * sizeof(drm_intel_bo *); void *tmp; drm_intel_bo *bo; - int i; item->cache_id = cache_id; item->key = key; item->key_size = key_size; - item->reloc_bufs = reloc_bufs; - item->nr_reloc_bufs = nr_reloc_bufs; hash = hash_key(item); item->hash = hash; @@ -235,19 +203,13 @@ brw_upload_cache_with_auxdata(struct brw_cache *cache, cache->name[cache_id], data_size, 1 << 6); - /* Set up the memory containing the key, aux_data, and reloc_bufs */ - tmp = malloc(key_size + aux_size + relocs_size); + /* Set up the memory containing the key and aux_data */ + tmp = malloc(key_size + aux_size); memcpy(tmp, key, key_size); memcpy(tmp + key_size, aux, aux_size); - memcpy(tmp + key_size + aux_size, reloc_bufs, relocs_size); - for (i = 0; i < nr_reloc_bufs; i++) { - if (reloc_bufs[i] != NULL) - drm_intel_bo_reference(reloc_bufs[i]); - } item->key = tmp; - item->reloc_bufs = tmp + key_size + aux_size; item->bo = bo; drm_intel_bo_reference(bo); @@ -276,73 +238,6 @@ brw_upload_cache_with_auxdata(struct brw_cache *cache, return bo; } -drm_intel_bo * -brw_upload_cache(struct brw_cache *cache, - enum brw_cache_id cache_id, - const void *key, - GLuint key_size, - drm_intel_bo **reloc_bufs, - GLuint nr_reloc_bufs, - const void *data, - GLuint data_size) -{ - return brw_upload_cache_with_auxdata(cache, cache_id, - key, key_size, - reloc_bufs, nr_reloc_bufs, - data, data_size, - NULL, 0, - NULL); -} - -/** - * Wrapper around brw_cache_data_sz using the cache_id's canonical key size. - * - * If nr_reloc_bufs is nonzero, brw_search_cache()/brw_upload_cache() would be - * better to use, as the potentially changing offsets in the data-used-as-key - * will result in excessive cache misses. - * - * If aux data is involved, use search/upload instead. - - */ -drm_intel_bo * -brw_cache_data(struct brw_cache *cache, - enum brw_cache_id cache_id, - const void *data, - GLuint data_size) -{ - drm_intel_bo *bo; - struct brw_cache_item *item, lookup; - GLuint hash; - - lookup.cache_id = cache_id; - lookup.key = data; - lookup.key_size = data_size; - lookup.reloc_bufs = NULL; - lookup.nr_reloc_bufs = 0; - hash = hash_key(&lookup); - lookup.hash = hash; - - item = search_cache(cache, hash, &lookup); - if (item) { - update_cache_last(cache, cache_id, item->bo); - drm_intel_bo_reference(item->bo); - return item->bo; - } - - bo = brw_upload_cache(cache, cache_id, - data, data_size, - NULL, 0, - data, data_size); - - return bo; -} - -enum pool_type { - DW_SURFACE_STATE, - DW_GENERAL_STATE -}; - - static void brw_init_cache_id(struct brw_cache *cache, const char *name, @@ -352,8 +247,8 @@ brw_init_cache_id(struct brw_cache *cache, } -static void -brw_init_non_surface_cache(struct brw_context *brw) +void +brw_init_caches(struct brw_context *brw) { struct brw_cache *cache = &brw->cache; @@ -367,7 +262,6 @@ brw_init_non_surface_cache(struct brw_context *brw) brw_init_cache_id(cache, "CC_VP", BRW_CC_VP); brw_init_cache_id(cache, "CC_UNIT", BRW_CC_UNIT); brw_init_cache_id(cache, "WM_PROG", BRW_WM_PROG); - brw_init_cache_id(cache, "SAMPLER_DEFAULT_COLOR", BRW_SAMPLER_DEFAULT_COLOR); brw_init_cache_id(cache, "SAMPLER", BRW_SAMPLER); brw_init_cache_id(cache, "WM_UNIT", BRW_WM_UNIT); brw_init_cache_id(cache, "SF_PROG", BRW_SF_PROG); @@ -392,13 +286,6 @@ brw_init_non_surface_cache(struct brw_context *brw) brw_init_cache_id(cache, "DEPTH_STENCIL_STATE", BRW_DEPTH_STENCIL_STATE); } -void -brw_init_caches(struct brw_context *brw) -{ - brw_init_non_surface_cache(brw); -} - - static void brw_clear_cache(struct brw_context *brw, struct brw_cache *cache) { @@ -409,11 +296,7 @@ brw_clear_cache(struct brw_context *brw, struct brw_cache *cache) for (i = 0; i < cache->size; i++) { for (c = cache->items[i]; c; c = next) { - int j; - next = c->next; - for (j = 0; j < c->nr_reloc_bufs; j++) - drm_intel_bo_unreference(c->reloc_bufs[j]); drm_intel_bo_unreference(c->bo); free((void *)c->key); free(c); diff --git a/src/mesa/drivers/dri/i965/brw_state_dump.c b/src/mesa/drivers/dri/i965/brw_state_dump.c index b393259c915..3a3aa8c0346 100644 --- a/src/mesa/drivers/dri/i965/brw_state_dump.c +++ b/src/mesa/drivers/dri/i965/brw_state_dump.c @@ -140,19 +140,15 @@ static void dump_wm_surface_state(struct brw_context *brw) static void dump_wm_sampler_state(struct brw_context *brw) { + struct intel_context *intel = &brw->intel; struct gl_context *ctx = &brw->intel.ctx; int i; - if (!brw->wm.sampler_bo) { - fprintf(stderr, "WM_SAMPLER: NULL\n"); - return; - } - - drm_intel_bo_map(brw->wm.sampler_bo, GL_FALSE); + drm_intel_bo_map(intel->batch.bo, GL_FALSE); for (i = 0; i < BRW_MAX_TEX_UNIT; i++) { unsigned int offset; + uint32_t sdc_offset; struct brw_sampler_state *samp; - struct brw_sampler_default_color *sdc; char name[20]; if (!ctx->Texture.Unit[i]._ReallyEnabled) { @@ -160,9 +156,11 @@ static void dump_wm_sampler_state(struct brw_context *brw) continue; } - offset = brw->wm.sampler_bo->offset + - i * sizeof(struct brw_sampler_state); - samp = (struct brw_sampler_state *)(brw->wm.sampler_bo->virtual + + offset = (intel->batch.bo->offset + + brw->wm.sampler_offset + + i * sizeof(struct brw_sampler_state)); + samp = (struct brw_sampler_state *)(intel->batch.bo->virtual + + brw->wm.sampler_offset + i * sizeof(struct brw_sampler_state)); sprintf(name, "WM SAMP%d", i); @@ -173,30 +171,45 @@ static void dump_wm_sampler_state(struct brw_context *brw) sprintf(name, " WM SDC%d", i); - drm_intel_bo_map(brw->wm.sdc_bo[i], GL_FALSE); - sdc = (struct brw_sampler_default_color *)(brw->wm.sdc_bo[i]->virtual); - state_out(name, sdc, brw->wm.sdc_bo[i]->offset, 0, "r\n"); - state_out(name, sdc, brw->wm.sdc_bo[i]->offset, 1, "g\n"); - state_out(name, sdc, brw->wm.sdc_bo[i]->offset, 2, "b\n"); - state_out(name, sdc, brw->wm.sdc_bo[i]->offset, 3, "a\n"); - drm_intel_bo_unmap(brw->wm.sdc_bo[i]); + sdc_offset = intel->batch.bo->offset + brw->wm.sdc_offset[i]; + if (intel->gen >= 5) { + struct gen5_sampler_default_color *sdc = (intel->batch.bo->virtual + + brw->wm.sdc_offset[i]); + state_out(name, sdc, sdc_offset, 0, "unorm rgba\n"); + state_out(name, sdc, sdc_offset, 1, "r %f\n", sdc->f[0]); + state_out(name, sdc, sdc_offset, 2, "b %f\n", sdc->f[1]); + state_out(name, sdc, sdc_offset, 3, "g %f\n", sdc->f[2]); + state_out(name, sdc, sdc_offset, 4, "a %f\n", sdc->f[3]); + state_out(name, sdc, sdc_offset, 5, "half float rg\n"); + state_out(name, sdc, sdc_offset, 6, "half float ba\n"); + state_out(name, sdc, sdc_offset, 7, "u16 rg\n"); + state_out(name, sdc, sdc_offset, 8, "u16 ba\n"); + state_out(name, sdc, sdc_offset, 9, "s16 rg\n"); + state_out(name, sdc, sdc_offset, 10, "s16 ba\n"); + state_out(name, sdc, sdc_offset, 11, "s8 rgba\n"); + } else { + struct brw_sampler_default_color *sdc = (intel->batch.bo->virtual + + brw->wm.sdc_offset[i]); + state_out(name, sdc, sdc_offset, 0, "r %f\n", sdc->color[0]); + state_out(name, sdc, sdc_offset, 1, "g %f\n", sdc->color[1]); + state_out(name, sdc, sdc_offset, 2, "b %f\n", sdc->color[2]); + state_out(name, sdc, sdc_offset, 3, "a %f\n", sdc->color[3]); + } } - drm_intel_bo_unmap(brw->wm.sampler_bo); + drm_intel_bo_unmap(intel->batch.bo); } static void dump_sf_viewport_state(struct brw_context *brw) { + struct intel_context *intel = &brw->intel; const char *name = "SF VP"; struct brw_sf_viewport *vp; uint32_t vp_off; - if (brw->sf.vp_bo == NULL) - return; - - drm_intel_bo_map(brw->sf.vp_bo, GL_FALSE); + drm_intel_bo_map(intel->batch.bo, GL_FALSE); - vp = brw->sf.vp_bo->virtual + brw->sf.vp_offset; - vp_off = brw->sf.vp_bo->offset + brw->sf.vp_offset; + vp = intel->batch.bo->virtual + brw->sf.vp_offset; + vp_off = intel->batch.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); @@ -210,62 +223,56 @@ static void dump_sf_viewport_state(struct brw_context *brw) state_out(name, vp, vp_off, 7, "bottom right = %d,%d\n", vp->scissor.xmax, vp->scissor.ymax); - drm_intel_bo_unmap(brw->sf.vp_bo); + drm_intel_bo_unmap(intel->batch.bo); } static void dump_clip_viewport_state(struct brw_context *brw) { + struct intel_context *intel = &brw->intel; const char *name = "CLIP VP"; struct brw_clipper_viewport *vp; uint32_t vp_off; - if (brw->clip.vp_bo == NULL) - return; - - drm_intel_bo_map(brw->clip.vp_bo, GL_FALSE); + drm_intel_bo_map(intel->batch.bo, GL_FALSE); - vp = brw->clip.vp_bo->virtual; - vp_off = brw->clip.vp_bo->offset; + vp = intel->batch.bo->virtual + brw->clip.vp_offset; + vp_off = intel->batch.bo->offset + brw->clip.vp_offset; state_out(name, vp, vp_off, 0, "xmin = %f\n", vp->xmin); state_out(name, vp, vp_off, 1, "xmax = %f\n", vp->xmax); state_out(name, vp, vp_off, 2, "ymin = %f\n", vp->ymin); state_out(name, vp, vp_off, 3, "ymax = %f\n", vp->ymax); - drm_intel_bo_unmap(brw->clip.vp_bo); + drm_intel_bo_unmap(intel->batch.bo); } static void dump_cc_viewport_state(struct brw_context *brw) { + struct intel_context *intel = &brw->intel; const char *name = "CC VP"; struct brw_cc_viewport *vp; uint32_t vp_off; - if (brw->cc.vp_bo == NULL) - return; - - drm_intel_bo_map(brw->cc.vp_bo, GL_FALSE); + drm_intel_bo_map(intel->batch.bo, GL_FALSE); - vp = brw->cc.vp_bo->virtual; - vp_off = brw->cc.vp_bo->offset; + vp = intel->batch.bo->virtual + brw->cc.vp_offset; + vp_off = intel->batch.bo->offset + brw->cc.vp_offset; state_out(name, vp, vp_off, 0, "min_depth = %f\n", vp->min_depth); state_out(name, vp, vp_off, 1, "max_depth = %f\n", vp->max_depth); - drm_intel_bo_unmap(brw->cc.vp_bo); + drm_intel_bo_unmap(intel->batch.bo); } static void dump_depth_stencil_state(struct brw_context *brw) { + struct intel_context *intel = &brw->intel; const char *name = "DEPTH STENCIL"; struct gen6_depth_stencil_state *ds; uint32_t ds_off; - if (brw->cc.depth_stencil_state_bo == NULL) - return; + drm_intel_bo_map(intel->batch.bo, GL_FALSE); - drm_intel_bo_map(brw->cc.depth_stencil_state_bo, GL_FALSE); - - ds = brw->cc.depth_stencil_state_bo->virtual; - ds_off = brw->cc.depth_stencil_state_bo->offset; + ds = intel->batch.bo->virtual + brw->cc.depth_stencil_state_offset; + ds_off = intel->batch.bo->offset + brw->cc.depth_stencil_state_offset; state_out(name, ds, ds_off, 0, "stencil %sable, func %d, write %sable\n", ds->ds0.stencil_enable ? "en" : "dis", @@ -277,7 +284,7 @@ static void dump_depth_stencil_state(struct brw_context *brw) ds->ds2.depth_test_enable ? "en" : "dis", ds->ds2.depth_test_func, ds->ds2.depth_write_enable ? "en" : "dis"); - drm_intel_bo_unmap(brw->cc.depth_stencil_state_bo); + drm_intel_bo_unmap(intel->batch.bo); } static void dump_cc_state(struct brw_context *brw) @@ -291,8 +298,8 @@ static void dump_cc_state(struct brw_context *brw) return; drm_intel_bo_map(bo, GL_FALSE); - cc = bo->virtual; - cc_off = bo->offset; + cc = bo->virtual + brw->cc.state_offset; + cc_off = bo->offset + brw->cc.state_offset; state_out(name, cc, cc_off, 0, "alpha test format %s, round disable %d, stencil ref %d," "bf stencil ref %d\n", @@ -312,22 +319,20 @@ static void dump_cc_state(struct brw_context *brw) static void dump_blend_state(struct brw_context *brw) { + struct intel_context *intel = &brw->intel; const char *name = "BLEND"; struct gen6_blend_state *blend; uint32_t blend_off; - if (brw->cc.blend_state_bo == NULL) - return; - - drm_intel_bo_map(brw->cc.blend_state_bo, GL_FALSE); + drm_intel_bo_map(intel->batch.bo, GL_FALSE); - blend = brw->cc.blend_state_bo->virtual; - blend_off = brw->cc.blend_state_bo->offset; + blend = intel->batch.bo->virtual + brw->cc.blend_state_offset; + blend_off = intel->batch.bo->offset + brw->cc.blend_state_offset; state_out(name, blend, blend_off, 0, "\n"); state_out(name, blend, blend_off, 1, "\n"); - drm_intel_bo_unmap(brw->cc.blend_state_bo); + drm_intel_bo_unmap(intel->batch.bo); } @@ -383,21 +388,25 @@ void brw_debug_batch(struct intel_context *intel) dump_wm_sampler_state(brw); if (intel->gen < 6) - state_struct_out("VS", brw->vs.state_bo, 0, sizeof(struct brw_vs_unit_state)); + state_struct_out("VS", intel->batch.bo, brw->vs.state_offset, + sizeof(struct brw_vs_unit_state)); brw_debug_prog("VS prog", brw->vs.prog_bo); if (intel->gen < 6) - state_struct_out("GS", brw->gs.state_bo, 0, sizeof(struct brw_gs_unit_state)); + state_struct_out("GS", intel->batch.bo, brw->gs.state_offset, + sizeof(struct brw_gs_unit_state)); brw_debug_prog("GS prog", brw->gs.prog_bo); if (intel->gen < 6) { - state_struct_out("SF", brw->sf.state_bo, 0, sizeof(struct brw_sf_unit_state)); - brw_debug_prog("SF prog", brw->sf.prog_bo); + state_struct_out("SF", intel->batch.bo, brw->sf.state_offset, + sizeof(struct brw_sf_unit_state)); + brw_debug_prog("SF prog", brw->sf.prog_bo); } dump_sf_viewport_state(brw); if (intel->gen < 6) - state_struct_out("WM", brw->wm.state_bo, 0, sizeof(struct brw_wm_unit_state)); + state_struct_out("WM", intel->batch.bo, brw->wm.state_offset, + sizeof(struct brw_wm_unit_state)); brw_debug_prog("WM prog", brw->wm.prog_bo); if (intel->gen >= 6) { diff --git a/src/mesa/drivers/dri/i965/brw_state_upload.c b/src/mesa/drivers/dri/i965/brw_state_upload.c index 6f521be6599..008aceb222b 100644 --- a/src/mesa/drivers/dri/i965/brw_state_upload.c +++ b/src/mesa/drivers/dri/i965/brw_state_upload.c @@ -60,6 +60,7 @@ static const struct brw_tracked_state *gen4_atoms[] = &brw_curbe_offsets, &brw_recalculate_urb_fence, + &brw_cc_vp, &brw_cc_unit, &brw_vs_constants, /* Before vs_surfaces and constant_buffer */ @@ -119,6 +120,10 @@ static const struct brw_tracked_state *gen6_atoms[] = /* Command packets: */ &brw_invarient_state, + /* must do before binding table pointers, cc state ptrs */ + &brw_state_base_address, + + &brw_cc_vp, &gen6_viewport_state, /* must do after *_vp stages */ &gen6_urb, @@ -129,6 +134,7 @@ static const struct brw_tracked_state *gen6_atoms[] = &brw_vs_constants, /* Before vs_surfaces and constant_buffer */ &brw_wm_constants, /* Before wm_surfaces and constant_buffer */ + &gen6_vs_constants, /* Before vs_state */ &gen6_wm_constants, /* Before wm_state */ &brw_vs_surfaces, /* must do before unit */ @@ -146,9 +152,6 @@ static const struct brw_tracked_state *gen6_atoms[] = &gen6_wm_state, &gen6_scissor_state, - &gen6_scissor_state_pointers, - - &brw_state_base_address, &gen6_binding_table_pointers, @@ -314,7 +317,6 @@ static struct dirty_bit_map cache_bits[] = { DEFINE_BIT(CACHE_NEW_CC_VP), DEFINE_BIT(CACHE_NEW_CC_UNIT), DEFINE_BIT(CACHE_NEW_WM_PROG), - DEFINE_BIT(CACHE_NEW_SAMPLER_DEFAULT_COLOR), DEFINE_BIT(CACHE_NEW_SAMPLER), DEFINE_BIT(CACHE_NEW_WM_UNIT), DEFINE_BIT(CACHE_NEW_SF_PROG), diff --git a/src/mesa/drivers/dri/i965/brw_vs.c b/src/mesa/drivers/dri/i965/brw_vs.c index 63ae13191f9..31a2b518c40 100644 --- a/src/mesa/drivers/dri/i965/brw_vs.c +++ b/src/mesa/drivers/dri/i965/brw_vs.c @@ -103,13 +103,11 @@ static void do_vs_prog( struct brw_context *brw, aux_size += c.vp->program.Base.Parameters->NumParameters; drm_intel_bo_unreference(brw->vs.prog_bo); - brw->vs.prog_bo = brw_upload_cache_with_auxdata(&brw->cache, BRW_VS_PROG, - &c.key, sizeof(c.key), - NULL, 0, - program, program_size, - &c.prog_data, - aux_size, - &brw->vs.prog_data); + brw->vs.prog_bo = brw_upload_cache(&brw->cache, BRW_VS_PROG, + &c.key, sizeof(c.key), + program, program_size, + &c.prog_data, aux_size, + &brw->vs.prog_data); } @@ -148,7 +146,6 @@ static void brw_upload_vs_prog(struct brw_context *brw) drm_intel_bo_unreference(brw->vs.prog_bo); brw->vs.prog_bo = brw_search_cache(&brw->cache, BRW_VS_PROG, &key, sizeof(key), - NULL, 0, &brw->vs.prog_data); if (brw->vs.prog_bo == NULL) do_vs_prog(brw, vp, &key); diff --git a/src/mesa/drivers/dri/i965/brw_vs_emit.c b/src/mesa/drivers/dri/i965/brw_vs_emit.c index dd4e1e6c6ad..a28cdc0bfe9 100644 --- a/src/mesa/drivers/dri/i965/brw_vs_emit.c +++ b/src/mesa/drivers/dri/i965/brw_vs_emit.c @@ -1553,6 +1553,26 @@ static void emit_swz( struct brw_vs_compile *c, } } +static int +align_interleaved_urb_mlen(struct brw_context *brw, int mlen) +{ + struct intel_context *intel = &brw->intel; + + if (intel->gen >= 6) { + /* URB data written (does not include the message header reg) must + * be a multiple of 256 bits, or 2 VS registers. See vol5c.5, + * section 5.4.3.2.2: URB_INTERLEAVED. + * + * URB entries are allocated on a multiple of 1024 bits, so an + * extra 128 bits written here to make the end align to 256 is + * no problem. + */ + if ((mlen % 2) != 1) + mlen++; + } + + return mlen; +} /** * Post-vertex-program processing. Send the results to the URB. @@ -1734,12 +1754,11 @@ static void emit_vertex_write( struct brw_vs_compile *c) eot = (c->first_overflow_output == 0); - msg_len = c->nr_outputs + 2 + len_vertex_header; - if (intel->gen >= 6) { - /* interleaved urb write message length for gen6 should be multiple of 2 */ - if ((msg_len % 2) != 0) - msg_len++; - } + /* Message header, plus VUE header, plus the (first set of) outputs. */ + msg_len = 1 + len_vertex_header + c->nr_outputs; + msg_len = align_interleaved_urb_mlen(brw, msg_len); + /* Any outputs beyond BRW_MAX_MRF should be past first_overflow_output */ + msg_len = MIN2(msg_len, (BRW_MAX_MRF - 1)), brw_urb_WRITE(p, brw_null_reg(), /* dest */ @@ -1747,7 +1766,7 @@ static void emit_vertex_write( struct brw_vs_compile *c) c->r0, /* src */ 0, /* allocate */ 1, /* used */ - MIN2(msg_len - 1, (BRW_MAX_MRF - 1)), /* msg len */ + msg_len, 0, /* response len */ eot, /* eot */ eot, /* writes complete */ @@ -1774,7 +1793,7 @@ static void emit_vertex_write( struct brw_vs_compile *c) c->r0, /* src */ 0, /* allocate */ 1, /* used */ - mrf, /* msg len */ + align_interleaved_urb_mlen(brw, mrf), 0, /* response len */ 1, /* eot */ 1, /* writes complete */ diff --git a/src/mesa/drivers/dri/i965/brw_vs_state.c b/src/mesa/drivers/dri/i965/brw_vs_state.c index c3a7cc247c5..1eee5b7e5de 100644 --- a/src/mesa/drivers/dri/i965/brw_vs_state.c +++ b/src/mesa/drivers/dri/i965/brw_vs_state.c @@ -49,48 +49,19 @@ struct brw_vs_unit_key { }; static void -vs_unit_populate_key(struct brw_context *brw, struct brw_vs_unit_key *key) -{ - struct gl_context *ctx = &brw->intel.ctx; - - memset(key, 0, sizeof(*key)); - - /* CACHE_NEW_VS_PROG */ - key->total_grf = brw->vs.prog_data->total_grf; - key->urb_entry_read_length = brw->vs.prog_data->urb_read_length; - key->curb_entry_read_length = brw->vs.prog_data->curb_read_length; - - /* BRW_NEW_URB_FENCE */ - key->nr_urb_entries = brw->urb.nr_vs_entries; - key->urb_size = brw->urb.vsize; - - /* BRW_NEW_NR_VS_SURFACES */ - key->nr_surfaces = brw->vs.nr_surfaces; - - /* BRW_NEW_CURBE_OFFSETS, _NEW_TRANSFORM */ - if (ctx->Transform.ClipPlanesEnabled) { - /* Note that we read in the userclip planes as well, hence - * clip_start: - */ - key->curbe_offset = brw->curbe.clip_start; - } - else { - key->curbe_offset = brw->curbe.vs_start; - } -} - -static drm_intel_bo * -vs_unit_create_from_key(struct brw_context *brw, struct brw_vs_unit_key *key) +brw_prepare_vs_unit(struct brw_context *brw) { struct intel_context *intel = &brw->intel; - struct brw_vs_unit_state vs; - drm_intel_bo *bo; + struct gl_context *ctx = &intel->ctx; + struct brw_vs_unit_state *vs; - memset(&vs, 0, sizeof(vs)); + vs = brw_state_batch(brw, sizeof(*vs), 32, &brw->vs.state_offset); + memset(vs, 0, sizeof(*vs)); - vs.thread0.kernel_start_pointer = brw->vs.prog_bo->offset >> 6; /* reloc */ - vs.thread0.grf_reg_count = ALIGN(key->total_grf, 16) / 16 - 1; - vs.thread1.floating_point_mode = BRW_FLOATING_POINT_NON_IEEE_754; + /* CACHE_NEW_VS_PROG */ + vs->thread0.kernel_start_pointer = brw->vs.prog_bo->offset >> 6; /* reloc */ + vs->thread0.grf_reg_count = ALIGN(brw->vs.prog_data->total_grf, 16) / 16 - 1; + vs->thread1.floating_point_mode = BRW_FLOATING_POINT_NON_IEEE_754; /* Choosing multiple program flow means that we may get 2-vertex threads, * which will have the channel mask for dwords 4-7 enabled in the thread, * and those dwords will be written to the second URB handle when we @@ -103,21 +74,34 @@ vs_unit_create_from_key(struct brw_context *brw, struct brw_vs_unit_key *key) * The most notable and reliably failing application is the Humus * demo "CelShading" */ - vs.thread1.single_program_flow = (intel->gen == 5); + vs->thread1.single_program_flow = (intel->gen == 5); + /* BRW_NEW_NR_VS_SURFACES */ if (intel->gen == 5) - vs.thread1.binding_table_entry_count = 0; /* hardware requirement */ + vs->thread1.binding_table_entry_count = 0; /* hardware requirement */ else - vs.thread1.binding_table_entry_count = key->nr_surfaces; + vs->thread1.binding_table_entry_count = brw->vs.nr_surfaces; + + vs->thread3.urb_entry_read_length = brw->vs.prog_data->urb_read_length; + vs->thread3.const_urb_entry_read_length = brw->vs.prog_data->curb_read_length; + vs->thread3.dispatch_grf_start_reg = 1; + vs->thread3.urb_entry_read_offset = 0; - vs.thread3.urb_entry_read_length = key->urb_entry_read_length; - vs.thread3.const_urb_entry_read_length = key->curb_entry_read_length; - vs.thread3.dispatch_grf_start_reg = 1; - vs.thread3.urb_entry_read_offset = 0; - vs.thread3.const_urb_entry_read_offset = key->curbe_offset * 2; + /* BRW_NEW_CURBE_OFFSETS, _NEW_TRANSFORM */ + if (ctx->Transform.ClipPlanesEnabled) { + /* Note that we read in the userclip planes as well, hence + * clip_start: + */ + vs->thread3.const_urb_entry_read_offset = brw->curbe.clip_start * 2; + } + else { + vs->thread3.const_urb_entry_read_offset = brw->curbe.vs_start * 2; + } + + /* BRW_NEW_URB_FENCE */ if (intel->gen == 5) { - switch (key->nr_urb_entries) { + switch (brw->urb.nr_vs_entries) { case 8: case 12: case 16: @@ -129,13 +113,13 @@ vs_unit_create_from_key(struct brw_context *brw, struct brw_vs_unit_key *key) case 192: case 224: case 256: - vs.thread4.nr_urb_entries = key->nr_urb_entries >> 2; + vs->thread4.nr_urb_entries = brw->urb.nr_vs_entries >> 2; break; default: assert(0); } } else { - switch (key->nr_urb_entries) { + switch (brw->urb.nr_vs_entries) { case 8: case 12: case 16: @@ -147,63 +131,45 @@ vs_unit_create_from_key(struct brw_context *brw, struct brw_vs_unit_key *key) default: assert(0); } - vs.thread4.nr_urb_entries = key->nr_urb_entries; + vs->thread4.nr_urb_entries = brw->urb.nr_vs_entries; } - vs.thread4.urb_entry_allocation_size = key->urb_size - 1; + vs->thread4.urb_entry_allocation_size = brw->urb.vsize - 1; - vs.thread4.max_threads = CLAMP(key->nr_urb_entries / 2, - 1, brw->vs_max_threads) - 1; + vs->thread4.max_threads = CLAMP(brw->urb.nr_vs_entries / 2, + 1, brw->vs_max_threads) - 1; /* No samplers for ARB_vp programs: */ /* It has to be set to 0 for Ironlake */ - vs.vs5.sampler_count = 0; + vs->vs5.sampler_count = 0; if (unlikely(INTEL_DEBUG & DEBUG_STATS)) - vs.thread4.stats_enable = 1; + vs->thread4.stats_enable = 1; /* Vertex program always enabled: */ - vs.vs6.vs_enable = 1; - - bo = brw_upload_cache(&brw->cache, BRW_VS_UNIT, - key, sizeof(*key), - &brw->vs.prog_bo, 1, - &vs, sizeof(vs)); + vs->vs6.vs_enable = 1; /* Emit VS program relocation */ - drm_intel_bo_emit_reloc(bo, offsetof(struct brw_vs_unit_state, thread0), - brw->vs.prog_bo, vs.thread0.grf_reg_count << 1, + drm_intel_bo_emit_reloc(intel->batch.bo, (brw->vs.state_offset + + offsetof(struct brw_vs_unit_state, + thread0)), + brw->vs.prog_bo, vs->thread0.grf_reg_count << 1, I915_GEM_DOMAIN_INSTRUCTION, 0); - return bo; -} - -static void prepare_vs_unit(struct brw_context *brw) -{ - struct brw_vs_unit_key key; - - vs_unit_populate_key(brw, &key); - - drm_intel_bo_unreference(brw->vs.state_bo); - brw->vs.state_bo = brw_search_cache(&brw->cache, BRW_VS_UNIT, - &key, sizeof(key), - &brw->vs.prog_bo, 1, - NULL); - if (brw->vs.state_bo == NULL) { - brw->vs.state_bo = vs_unit_create_from_key(brw, &key); - } + brw->state.dirty.cache |= CACHE_NEW_VS_UNIT; } const struct brw_tracked_state brw_vs_unit = { .dirty = { .mesa = _NEW_TRANSFORM, - .brw = (BRW_NEW_CURBE_OFFSETS | + .brw = (BRW_NEW_BATCH | + BRW_NEW_CURBE_OFFSETS | BRW_NEW_NR_VS_SURFACES | BRW_NEW_URB_FENCE), .cache = CACHE_NEW_VS_PROG }, - .prepare = prepare_vs_unit, + .prepare = brw_prepare_vs_unit, }; diff --git a/src/mesa/drivers/dri/i965/brw_vtbl.c b/src/mesa/drivers/dri/i965/brw_vtbl.c index ce8712a260f..f2c417d8a81 100644 --- a/src/mesa/drivers/dri/i965/brw_vtbl.c +++ b/src/mesa/drivers/dri/i965/brw_vtbl.c @@ -60,7 +60,6 @@ dri_bo_release(drm_intel_bo **bo) static void brw_destroy_context( struct intel_context *intel ) { struct brw_context *brw = brw_context(&intel->ctx); - int i; brw_destroy_state(brw); brw_draw_destroy( brw ); @@ -77,28 +76,13 @@ static void brw_destroy_context( struct intel_context *intel ) dri_bo_release(&brw->curbe.curbe_bo); dri_bo_release(&brw->vs.prog_bo); - dri_bo_release(&brw->vs.state_bo); dri_bo_release(&brw->vs.const_bo); dri_bo_release(&brw->gs.prog_bo); - dri_bo_release(&brw->gs.state_bo); dri_bo_release(&brw->clip.prog_bo); - dri_bo_release(&brw->clip.state_bo); - dri_bo_release(&brw->clip.vp_bo); dri_bo_release(&brw->sf.prog_bo); - dri_bo_release(&brw->sf.state_bo); - dri_bo_release(&brw->sf.vp_bo); - for (i = 0; i < BRW_MAX_TEX_UNIT; i++) - dri_bo_release(&brw->wm.sdc_bo[i]); - dri_bo_release(&brw->wm.sampler_bo); dri_bo_release(&brw->wm.prog_bo); - dri_bo_release(&brw->wm.state_bo); dri_bo_release(&brw->wm.const_bo); - dri_bo_release(&brw->wm.push_const_bo); dri_bo_release(&brw->cc.prog_bo); - dri_bo_release(&brw->cc.vp_bo); - dri_bo_release(&brw->cc.blend_state_bo); - dri_bo_release(&brw->cc.depth_stencil_state_bo); - dri_bo_release(&brw->cc.color_calc_state_bo); free(brw->curbe.last_buf); free(brw->curbe.next_buf); diff --git a/src/mesa/drivers/dri/i965/brw_wm.c b/src/mesa/drivers/dri/i965/brw_wm.c index 65af227d831..06512de940f 100644 --- a/src/mesa/drivers/dri/i965/brw_wm.c +++ b/src/mesa/drivers/dri/i965/brw_wm.c @@ -33,6 +33,7 @@ #include "brw_wm.h" #include "brw_state.h" #include "main/formats.h" +#include "main/samplerobj.h" /** Return number of src args for given instruction */ GLuint brw_wm_nr_args( GLuint opcode ) @@ -119,7 +120,7 @@ brw_wm_non_glsl_emit(struct brw_context *brw, struct brw_wm_compile *c) brw_wm_emit(c); } -static void +void brw_wm_payload_setup(struct brw_context *brw, struct brw_wm_compile *c) { @@ -224,18 +225,13 @@ static void do_wm_prog( struct brw_context *brw, brw_init_compile(brw, &c->func); - brw_wm_payload_setup(brw, c); - if (!brw_wm_fs_emit(brw, c)) { - /* - * Shader which use GLSL features such as flow control are handled - * differently from "simple" shaders. - */ + /* Fallback for fixed function and ARB_fp shaders. */ c->dispatch_width = 16; brw_wm_payload_setup(brw, c); brw_wm_non_glsl_emit(brw, c); + c->prog_data.dispatch_width = 16; } - c->prog_data.dispatch_width = c->dispatch_width; /* Scratch space is used for register spilling */ if (c->last_scratch) { @@ -272,13 +268,11 @@ static void do_wm_prog( struct brw_context *brw, program = brw_get_program(&c->func, &program_size); drm_intel_bo_unreference(brw->wm.prog_bo); - brw->wm.prog_bo = brw_upload_cache_with_auxdata(&brw->cache, BRW_WM_PROG, - &c->key, sizeof(c->key), - NULL, 0, - program, program_size, - &c->prog_data, - sizeof(c->prog_data), - &brw->wm.prog_data); + brw->wm.prog_bo = brw_upload_cache(&brw->cache, BRW_WM_PROG, + &c->key, sizeof(c->key), + program, program_size, + &c->prog_data, sizeof(c->prog_data), + &brw->wm.prog_data); } @@ -373,6 +367,7 @@ static void brw_wm_populate_key( struct brw_context *brw, if (unit->_ReallyEnabled) { const struct gl_texture_object *t = unit->_Current; const struct gl_texture_image *img = t->Image[0][t->BaseLevel]; + struct gl_sampler_object *sampler = _mesa_get_samplerobj(ctx, i); int swizzles[SWIZZLE_NIL + 1] = { SWIZZLE_X, SWIZZLE_Y, @@ -388,14 +383,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->Sampler.CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB) { - if (t->Sampler.DepthMode == GL_ALPHA) { + if (sampler->CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB) { + if (sampler->DepthMode == GL_ALPHA) { swizzles[0] = SWIZZLE_ZERO; swizzles[1] = SWIZZLE_ZERO; swizzles[2] = SWIZZLE_ZERO; - } else if (t->Sampler.DepthMode == GL_LUMINANCE) { + } else if (sampler->DepthMode == GL_LUMINANCE) { swizzles[3] = SWIZZLE_ONE; - } else if (t->Sampler.DepthMode == GL_RED) { + } else if (sampler->DepthMode == GL_RED) { /* See table 3.23 of the GL 3.0 spec. */ swizzles[1] = SWIZZLE_ZERO; swizzles[2] = SWIZZLE_ZERO; @@ -465,7 +460,7 @@ static void brw_prepare_wm_prog(struct brw_context *brw) struct brw_wm_prog_key key; struct brw_fragment_program *fp = (struct brw_fragment_program *) brw->fragment_program; - + brw_wm_populate_key(brw, &key); /* Make an early check for the key. @@ -473,7 +468,6 @@ static void brw_prepare_wm_prog(struct brw_context *brw) drm_intel_bo_unreference(brw->wm.prog_bo); brw->wm.prog_bo = brw_search_cache(&brw->cache, BRW_WM_PROG, &key, sizeof(key), - NULL, 0, &brw->wm.prog_data); if (brw->wm.prog_bo == NULL) do_wm_prog(brw, fp, &key); diff --git a/src/mesa/drivers/dri/i965/brw_wm.h b/src/mesa/drivers/dri/i965/brw_wm.h index 40659f26025..a5f99a0a657 100644 --- a/src/mesa/drivers/dri/i965/brw_wm.h +++ b/src/mesa/drivers/dri/i965/brw_wm.h @@ -201,11 +201,11 @@ struct brw_wm_compile { PASS2_DONE } state; - GLuint source_depth_reg:3; - GLuint source_w_reg:3; - GLuint aa_dest_stencil_reg:3; - GLuint dest_depth_reg:3; - GLuint nr_payload_regs:4; + uint8_t source_depth_reg; + uint8_t source_w_reg; + uint8_t aa_dest_stencil_reg; + uint8_t dest_depth_reg; + uint8_t nr_payload_regs; GLuint computes_depth:1; /* could be derived from program string */ GLuint source_depth_to_render_target:1; GLuint runtime_check_aads_emit:1; @@ -218,7 +218,6 @@ struct brw_wm_compile { GLuint nr_fp_insns; GLuint fp_temp; GLuint fp_interp_emitted; - GLuint fp_fragcolor_emitted; struct prog_src_register pixel_xy; struct prog_src_register delta_xy; @@ -315,7 +314,7 @@ void brw_wm_print_program( struct brw_wm_compile *c, void brw_wm_lookup_iz(struct intel_context *intel, struct brw_wm_compile *c); -GLboolean brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c); +bool brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c); /* brw_wm_emit.c */ void emit_alu1(struct brw_compile *p, @@ -475,5 +474,7 @@ struct gl_shader_program *brw_new_shader_program(struct gl_context *ctx, GLuint bool brw_color_buffer_write_enabled(struct brw_context *brw); bool brw_render_target_supported(gl_format format); +void brw_wm_payload_setup(struct brw_context *brw, + struct brw_wm_compile *c); #endif diff --git a/src/mesa/drivers/dri/i965/brw_wm_emit.c b/src/mesa/drivers/dri/i965/brw_wm_emit.c index cdc1f367e5c..fd4cd892f41 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_emit.c +++ b/src/mesa/drivers/dri/i965/brw_wm_emit.c @@ -51,16 +51,6 @@ static GLboolean can_do_pln(struct intel_context *intel, return GL_TRUE; } -/* Not quite sure how correct this is - need to understand horiz - * vs. vertical strides a little better. - */ -static INLINE struct brw_reg sechalf( struct brw_reg reg ) -{ - if (reg.vstride) - reg.nr++; - return reg; -} - /* Return the SrcReg index of the channels that can be immediate float operands * instead of usage of PROGRAM_CONSTANT values through push/pull. */ @@ -1325,12 +1315,6 @@ static void fire_fb_write( struct brw_wm_compile *c, { struct brw_compile *p = &c->func; struct intel_context *intel = &p->brw->intel; - struct brw_reg dst; - - if (c->dispatch_width == 16) - dst = retype(vec16(brw_null_reg()), BRW_REGISTER_TYPE_UW); - else - dst = retype(vec8(brw_null_reg()), BRW_REGISTER_TYPE_UW); /* Pass through control information: * @@ -1352,7 +1336,6 @@ static void fire_fb_write( struct brw_wm_compile *c, /* send (16) null.0<1>:uw m0 r0.0<8;8,1>:uw 0x85a04000:ud { Align1 EOT } */ brw_fb_WRITE(p, c->dispatch_width, - dst, base_reg, retype(brw_vec8_grf(0, 0), BRW_REGISTER_TYPE_UW), target, diff --git a/src/mesa/drivers/dri/i965/brw_wm_fp.c b/src/mesa/drivers/dri/i965/brw_wm_fp.c index 4759b289a0c..9ddbee2edf4 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_fp.c +++ b/src/mesa/drivers/dri/i965/brw_wm_fp.c @@ -961,35 +961,31 @@ static void emit_render_target_writes( struct brw_wm_compile *c ) struct prog_src_register outcolor; GLuint i; - struct prog_instruction *inst, *last_inst = NULL; + struct prog_instruction *inst = NULL; /* The inst->Aux field is used for FB write target and the EOT marker */ - if (c->key.nr_color_regions > 1) { - for (i = 0 ; i < c->key.nr_color_regions; i++) { - outcolor = src_reg(PROGRAM_OUTPUT, FRAG_RESULT_DATA0 + i); - last_inst = inst = emit_op(c, WM_FB_WRITE, dst_mask(dst_undef(), 0), - 0, outcolor, payload_r0_depth, outdepth); - inst->Aux = INST_AUX_TARGET(i); - if (c->fp_fragcolor_emitted) { - outcolor = src_reg(PROGRAM_OUTPUT, FRAG_RESULT_COLOR); - last_inst = inst = emit_op(c, WM_FB_WRITE, dst_mask(dst_undef(), 0), - 0, outcolor, payload_r0_depth, outdepth); - inst->Aux = INST_AUX_TARGET(i); - } + for (i = 0; i < c->key.nr_color_regions; i++) { + if (c->fp->program.Base.OutputsWritten & (1 << FRAG_RESULT_COLOR)) { + outcolor = src_reg(PROGRAM_OUTPUT, FRAG_RESULT_COLOR); + } else { + outcolor = src_reg(PROGRAM_OUTPUT, FRAG_RESULT_DATA0 + i); } - last_inst->Aux |= INST_AUX_EOT; + inst = emit_op(c, WM_FB_WRITE, dst_mask(dst_undef(), 0), + 0, outcolor, payload_r0_depth, outdepth); + inst->Aux = INST_AUX_TARGET(i); } - else { - /* if gl_FragData[0] is written, use it, else use gl_FragColor */ - if (c->fp->program.Base.OutputsWritten & BITFIELD64_BIT(FRAG_RESULT_DATA0)) - outcolor = src_reg(PROGRAM_OUTPUT, FRAG_RESULT_DATA0); - else - outcolor = src_reg(PROGRAM_OUTPUT, FRAG_RESULT_COLOR); - inst = emit_op(c, WM_FB_WRITE, dst_mask(dst_undef(),0), - 0, outcolor, payload_r0_depth, outdepth); - inst->Aux = INST_AUX_EOT | INST_AUX_TARGET(0); + /* Mark the last FB write as final, or emit a dummy write if we had + * no render targets bound. + */ + if (c->key.nr_color_regions != 0) { + inst->Aux |= INST_AUX_EOT; + } else { + inst = emit_op(c, WM_FB_WRITE, dst_mask(dst_undef(), 0), + 0, src_reg(PROGRAM_OUTPUT, FRAG_RESULT_COLOR), + payload_r0_depth, outdepth); + inst->Aux = INST_AUX_TARGET(0) | INST_AUX_EOT; } } @@ -1015,16 +1011,6 @@ static void validate_src_regs( struct brw_wm_compile *c, } } } - -static void validate_dst_regs( struct brw_wm_compile *c, - const struct prog_instruction *inst ) -{ - if (inst->DstReg.File == PROGRAM_OUTPUT) { - GLuint idx = inst->DstReg.Index; - if (idx == FRAG_RESULT_COLOR) - c->fp_fragcolor_emitted = 1; - } -} static void print_insns( const struct prog_instruction *insn, GLuint nr ) @@ -1083,7 +1069,6 @@ void brw_wm_pass_fp( struct brw_wm_compile *c ) for (insn = 0; insn < fp->program.Base.NumInstructions; insn++) { const struct prog_instruction *inst = &fp->program.Base.Instructions[insn]; validate_src_regs(c, inst); - validate_dst_regs(c, inst); } /* Loop over all instructions doing assorted simplifications and 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 cfc30d8613f..7b93bf90241 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c @@ -35,7 +35,7 @@ #include "brw_defines.h" #include "main/macros.h" - +#include "main/samplerobj.h" /* Samplers aren't strictly wm state from the hardware's perspective, @@ -66,81 +66,93 @@ static GLuint translate_wrap_mode( GLenum wrap ) } } -static drm_intel_bo *upload_default_color( struct brw_context *brw, - const GLfloat *color ) +static void +upload_default_color(struct brw_context *brw, struct gl_sampler_object *sampler, + int unit) { struct intel_context *intel = &brw->intel; + struct gl_context *ctx = &intel->ctx; + struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit]; + struct gl_texture_object *texObj = texUnit->_Current; + struct gl_texture_image *firstImage = texObj->Image[0][texObj->BaseLevel]; + float color[4]; + + if (firstImage->_BaseFormat == GL_DEPTH_COMPONENT) { + /* GL specs that border color for depth textures is taken from the + * R channel, while the hardware uses A. Spam R into all the + * channels for safety. + */ + color[0] = sampler->BorderColor.f[0]; + color[1] = sampler->BorderColor.f[0]; + color[2] = sampler->BorderColor.f[0]; + color[3] = sampler->BorderColor.f[0]; + } else { + color[0] = sampler->BorderColor.f[0]; + color[1] = sampler->BorderColor.f[1]; + color[2] = sampler->BorderColor.f[2]; + color[3] = sampler->BorderColor.f[3]; + } if (intel->gen >= 5) { - struct gen5_sampler_default_color sdc; + struct gen5_sampler_default_color *sdc; + + sdc = brw_state_batch(brw, sizeof(*sdc), 32, &brw->wm.sdc_offset[unit]); - memset(&sdc, 0, sizeof(sdc)); + memset(sdc, 0, sizeof(*sdc)); - UNCLAMPED_FLOAT_TO_UBYTE(sdc.ub[0], color[0]); - UNCLAMPED_FLOAT_TO_UBYTE(sdc.ub[1], color[1]); - UNCLAMPED_FLOAT_TO_UBYTE(sdc.ub[2], color[2]); - UNCLAMPED_FLOAT_TO_UBYTE(sdc.ub[3], color[3]); + UNCLAMPED_FLOAT_TO_UBYTE(sdc->ub[0], color[0]); + UNCLAMPED_FLOAT_TO_UBYTE(sdc->ub[1], color[1]); + UNCLAMPED_FLOAT_TO_UBYTE(sdc->ub[2], color[2]); + UNCLAMPED_FLOAT_TO_UBYTE(sdc->ub[3], color[3]); - UNCLAMPED_FLOAT_TO_USHORT(sdc.us[0], color[0]); - UNCLAMPED_FLOAT_TO_USHORT(sdc.us[1], color[1]); - UNCLAMPED_FLOAT_TO_USHORT(sdc.us[2], color[2]); - UNCLAMPED_FLOAT_TO_USHORT(sdc.us[3], color[3]); + UNCLAMPED_FLOAT_TO_USHORT(sdc->us[0], color[0]); + UNCLAMPED_FLOAT_TO_USHORT(sdc->us[1], color[1]); + UNCLAMPED_FLOAT_TO_USHORT(sdc->us[2], color[2]); + UNCLAMPED_FLOAT_TO_USHORT(sdc->us[3], color[3]); - UNCLAMPED_FLOAT_TO_SHORT(sdc.s[0], color[0]); - UNCLAMPED_FLOAT_TO_SHORT(sdc.s[1], color[1]); - UNCLAMPED_FLOAT_TO_SHORT(sdc.s[2], color[2]); - UNCLAMPED_FLOAT_TO_SHORT(sdc.s[3], color[3]); + UNCLAMPED_FLOAT_TO_SHORT(sdc->s[0], color[0]); + UNCLAMPED_FLOAT_TO_SHORT(sdc->s[1], color[1]); + UNCLAMPED_FLOAT_TO_SHORT(sdc->s[2], color[2]); + UNCLAMPED_FLOAT_TO_SHORT(sdc->s[3], color[3]); - /* XXX: Fill in half floats */ - /* XXX: Fill in signed bytes */ + sdc->hf[0] = _mesa_float_to_half(color[0]); + sdc->hf[1] = _mesa_float_to_half(color[1]); + sdc->hf[2] = _mesa_float_to_half(color[2]); + sdc->hf[3] = _mesa_float_to_half(color[3]); - COPY_4V(sdc.f, color); + sdc->b[0] = sdc->s[0] >> 8; + sdc->b[1] = sdc->s[1] >> 8; + sdc->b[2] = sdc->s[2] >> 8; + sdc->b[3] = sdc->s[3] >> 8; - return brw_cache_data(&brw->cache, BRW_SAMPLER_DEFAULT_COLOR, - &sdc, sizeof(sdc)); + sdc->f[0] = color[0]; + sdc->f[1] = color[1]; + sdc->f[2] = color[2]; + sdc->f[3] = color[3]; } else { - struct brw_sampler_default_color sdc; + struct brw_sampler_default_color *sdc; - COPY_4V(sdc.color, color); + sdc = brw_state_batch(brw, sizeof(*sdc), 32, &brw->wm.sdc_offset[unit]); - return brw_cache_data(&brw->cache, BRW_SAMPLER_DEFAULT_COLOR, - &sdc, sizeof(sdc)); + COPY_4V(sdc->color, color); } } - -struct wm_sampler_key { - int sampler_count; - - struct wm_sampler_entry { - GLenum tex_target; - GLenum wrap_r, wrap_s, wrap_t; - float maxlod, minlod; - float lod_bias; - float max_aniso; - GLenum minfilter, magfilter; - GLenum comparemode, comparefunc; - - /** If target is cubemap, take context setting. - */ - GLboolean seamless_cube_map; - } sampler[BRW_MAX_TEX_UNIT]; -}; - /** * Sets the sampler state for a single unit based off of the sampler key * entry. */ static void brw_update_sampler_state(struct brw_context *brw, - struct wm_sampler_entry *key, - drm_intel_bo *sdc_bo, + int unit, struct brw_sampler_state *sampler) { struct intel_context *intel = &brw->intel; + struct gl_context *ctx = &intel->ctx; + struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit]; + struct gl_texture_object *texObj = texUnit->_Current; + struct gl_sampler_object *gl_sampler = _mesa_get_samplerobj(ctx, unit); - memset(sampler, 0, sizeof(*sampler)); - - switch (key->minfilter) { + switch (gl_sampler->MinFilter) { case GL_NEAREST: sampler->ss0.min_filter = BRW_MAPFILTER_NEAREST; sampler->ss0.mip_filter = BRW_MIPFILTER_NONE; @@ -171,17 +183,17 @@ static void brw_update_sampler_state(struct brw_context *brw, /* Set Anisotropy: */ - if (key->max_aniso > 1.0) { + if (gl_sampler->MaxAnisotropy > 1.0) { sampler->ss0.min_filter = BRW_MAPFILTER_ANISOTROPIC; sampler->ss0.mag_filter = BRW_MAPFILTER_ANISOTROPIC; - if (key->max_aniso > 2.0) { - sampler->ss3.max_aniso = MIN2((key->max_aniso - 2) / 2, + if (gl_sampler->MaxAnisotropy > 2.0) { + sampler->ss3.max_aniso = MIN2((gl_sampler->MaxAnisotropy - 2) / 2, BRW_ANISORATIO_16); } } else { - switch (key->magfilter) { + switch (gl_sampler->MagFilter) { case GL_NEAREST: sampler->ss0.mag_filter = BRW_MAPFILTER_NEAREST; break; @@ -193,9 +205,9 @@ static void brw_update_sampler_state(struct brw_context *brw, } } - sampler->ss1.r_wrap_mode = translate_wrap_mode(key->wrap_r); - sampler->ss1.s_wrap_mode = translate_wrap_mode(key->wrap_s); - sampler->ss1.t_wrap_mode = translate_wrap_mode(key->wrap_t); + sampler->ss1.r_wrap_mode = translate_wrap_mode(gl_sampler->WrapR); + sampler->ss1.s_wrap_mode = translate_wrap_mode(gl_sampler->WrapS); + sampler->ss1.t_wrap_mode = translate_wrap_mode(gl_sampler->WrapT); if (intel->gen >= 6 && sampler->ss0.min_filter != sampler->ss0.mag_filter) @@ -204,9 +216,10 @@ static void brw_update_sampler_state(struct brw_context *brw, /* Cube-maps on 965 and later must use the same wrap mode for all 3 * coordinate dimensions. Futher, only CUBE and CLAMP are valid. */ - if (key->tex_target == GL_TEXTURE_CUBE_MAP) { - if (key->seamless_cube_map && - (key->minfilter != GL_NEAREST || key->magfilter != GL_NEAREST)) { + if (texObj->Target == GL_TEXTURE_CUBE_MAP) { + if (ctx->Texture.CubeMapSeamless && + (gl_sampler->MinFilter != GL_NEAREST || + gl_sampler->MagFilter != GL_NEAREST)) { sampler->ss1.r_wrap_mode = BRW_TEXCOORDMODE_CUBE; sampler->ss1.s_wrap_mode = BRW_TEXCOORDMODE_CUBE; sampler->ss1.t_wrap_mode = BRW_TEXCOORDMODE_CUBE; @@ -215,7 +228,7 @@ static void brw_update_sampler_state(struct brw_context *brw, sampler->ss1.s_wrap_mode = BRW_TEXCOORDMODE_CLAMP; sampler->ss1.t_wrap_mode = BRW_TEXCOORDMODE_CLAMP; } - } else if (key->tex_target == GL_TEXTURE_1D) { + } else if (texObj->Target == GL_TEXTURE_1D) { /* There's a bug in 1D texture sampling - it actually pays * attention to the wrap_t value, though it should not. * Override the wrap_t value here to GL_REPEAT to keep @@ -227,18 +240,19 @@ static void brw_update_sampler_state(struct brw_context *brw, /* Set shadow function: */ - if (key->comparemode == GL_COMPARE_R_TO_TEXTURE_ARB) { + if (gl_sampler->CompareMode == GL_COMPARE_R_TO_TEXTURE_ARB) { /* Shadowing is "enabled" by emitting a particular sampler * message (sample_c). So need to recompile WM program when * shadow comparison is enabled on each/any texture unit. */ sampler->ss0.shadow_function = - intel_translate_shadow_compare_func(key->comparefunc); + intel_translate_shadow_compare_func(gl_sampler->CompareFunc); } /* Set LOD bias: */ - sampler->ss0.lod_bias = S_FIXED(CLAMP(key->lod_bias, -16, 15), 6); + sampler->ss0.lod_bias = S_FIXED(CLAMP(texUnit->LodBias + + gl_sampler->LodBias, -16, 15), 6); sampler->ss0.lod_preclamp = 1; /* OpenGL mode */ sampler->ss0.default_color_mode = 0; /* OpenGL/DX10 mode */ @@ -252,150 +266,67 @@ static void brw_update_sampler_state(struct brw_context *brw, */ sampler->ss0.base_level = U_FIXED(0, 1); - sampler->ss1.max_lod = U_FIXED(CLAMP(key->maxlod, 0, 13), 6); - sampler->ss1.min_lod = U_FIXED(CLAMP(key->minlod, 0, 13), 6); - - sampler->ss2.default_color_pointer = sdc_bo->offset >> 5; /* reloc */ -} + sampler->ss1.max_lod = U_FIXED(CLAMP(gl_sampler->MaxLod, 0, 13), 6); + sampler->ss1.min_lod = U_FIXED(CLAMP(gl_sampler->MinLod, 0, 13), 6); + upload_default_color(brw, gl_sampler, unit); -/** Sets up the cache key for sampler state for all texture units */ -static void -brw_wm_sampler_populate_key(struct brw_context *brw, - struct wm_sampler_key *key) -{ - struct gl_context *ctx = &brw->intel.ctx; - int unit; - char *last_entry_end = ((char*)&key->sampler_count) + - sizeof(key->sampler_count); - - key->sampler_count = 0; - - for (unit = 0; unit < BRW_MAX_TEX_UNIT; unit++) { - if (ctx->Texture.Unit[unit]._ReallyEnabled) { - struct wm_sampler_entry *entry = &key->sampler[unit]; - struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit]; - struct gl_texture_object *texObj = texUnit->_Current; - struct gl_texture_image *firstImage = - texObj->Image[0][texObj->BaseLevel]; - - memset(last_entry_end, 0, - (char*)entry - last_entry_end + sizeof(*entry)); - last_entry_end = ((char*)entry) + sizeof(*entry); - - entry->tex_target = texObj->Target; - - entry->seamless_cube_map = (texObj->Target == GL_TEXTURE_CUBE_MAP) - ? ctx->Texture.CubeMapSeamless : GL_FALSE; - - 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->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 - * channels for safety. - */ - brw->wm.sdc_bo[unit] = upload_default_color(brw, bordercolor); - } else { - brw->wm.sdc_bo[unit] = upload_default_color(brw, - texObj->Sampler.BorderColor.f); - } - key->sampler_count = unit + 1; - } + if (intel->gen >= 6) { + sampler->ss2.default_color_pointer = brw->wm.sdc_offset[unit] >> 5; + } else { + /* reloc */ + sampler->ss2.default_color_pointer = (intel->batch.bo->offset + + brw->wm.sdc_offset[unit]) >> 5; + + drm_intel_bo_emit_reloc(intel->batch.bo, + brw->wm.sampler_offset + + unit * sizeof(struct brw_sampler_state) + + offsetof(struct brw_sampler_state, ss2), + intel->batch.bo, brw->wm.sdc_offset[unit], + I915_GEM_DOMAIN_SAMPLER, 0); } - struct wm_sampler_entry *entry = &key->sampler[key->sampler_count]; - memset(last_entry_end, 0, (char*)entry - last_entry_end); } + /* All samplers must be uploaded in a single contiguous array, which * complicates various things. However, this is still too confusing - * FIXME: simplify all the different new texture state flags. */ -static void upload_wm_samplers( struct brw_context *brw ) +static void +prepare_wm_samplers(struct brw_context *brw) { struct gl_context *ctx = &brw->intel.ctx; - struct wm_sampler_key key; - int i, sampler_key_size; - - brw_wm_sampler_populate_key(brw, &key); + struct brw_sampler_state *samplers; + int i; - if (brw->wm.sampler_count != key.sampler_count) { - brw->wm.sampler_count = key.sampler_count; - brw->state.dirty.cache |= CACHE_NEW_SAMPLER; + brw->wm.sampler_count = 0; + for (i = 0; i < BRW_MAX_TEX_UNIT; i++) { + if (ctx->Texture.Unit[i]._ReallyEnabled) + brw->wm.sampler_count = i + 1; } - drm_intel_bo_unreference(brw->wm.sampler_bo); - brw->wm.sampler_bo = NULL; if (brw->wm.sampler_count == 0) return; - /* Only include the populated portion of the key in the search. */ - sampler_key_size = offsetof(struct wm_sampler_key, - sampler[key.sampler_count]); - brw->wm.sampler_bo = brw_search_cache(&brw->cache, BRW_SAMPLER, - &key, sampler_key_size, - brw->wm.sdc_bo, key.sampler_count, - NULL); + samplers = brw_state_batch(brw, brw->wm.sampler_count * sizeof(*samplers), + 32, &brw->wm.sampler_offset); + memset(samplers, 0, brw->wm.sampler_count * sizeof(*samplers)); - /* If we didnt find it in the cache, compute the state and put it in the - * cache. - */ - if (brw->wm.sampler_bo == NULL) { - struct brw_sampler_state sampler[BRW_MAX_TEX_UNIT]; - - memset(sampler, 0, sizeof(sampler)); - for (i = 0; i < key.sampler_count; i++) { - if (brw->wm.sdc_bo[i] == NULL) - continue; - - brw_update_sampler_state(brw, &key.sampler[i], brw->wm.sdc_bo[i], - &sampler[i]); - } - - brw->wm.sampler_bo = brw_upload_cache(&brw->cache, BRW_SAMPLER, - &key, sampler_key_size, - brw->wm.sdc_bo, key.sampler_count, - &sampler, sizeof(sampler)); - - /* Emit SDC relocations */ - for (i = 0; i < BRW_MAX_TEX_UNIT; i++) { - if (!ctx->Texture.Unit[i]._ReallyEnabled) - continue; - - drm_intel_bo_emit_reloc(brw->wm.sampler_bo, - i * sizeof(struct brw_sampler_state) + - offsetof(struct brw_sampler_state, ss2), - brw->wm.sdc_bo[i], 0, - I915_GEM_DOMAIN_SAMPLER, 0); - } + for (i = 0; i < brw->wm.sampler_count; i++) { + if (ctx->Texture.Unit[i]._ReallyEnabled) + brw_update_sampler_state(brw, i, &samplers[i]); } + + brw->state.dirty.cache |= CACHE_NEW_SAMPLER; } const struct brw_tracked_state brw_wm_samplers = { .dirty = { .mesa = _NEW_TEXTURE, - .brw = 0, + .brw = BRW_NEW_BATCH, .cache = 0 }, - .prepare = upload_wm_samplers, + .prepare = prepare_wm_samplers, }; diff --git a/src/mesa/drivers/dri/i965/brw_wm_state.c b/src/mesa/drivers/dri/i965/brw_wm_state.c index be4b260a5ff..a91ae511b7f 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_state.c @@ -40,21 +40,6 @@ * WM unit - fragment programs and rasterization */ -struct brw_wm_unit_key { - unsigned int total_grf, total_scratch; - unsigned int urb_entry_read_length; - unsigned int curb_entry_read_length; - unsigned int dispatch_grf_start_reg; - - unsigned int curbe_offset; - - unsigned int nr_surfaces, sampler_count; - GLboolean uses_depth, computes_depth, uses_kill, is_glsl; - GLboolean polygon_stipple, stats_wm, line_stipple, offset_enable; - GLboolean color_write_enable; - GLfloat offset_units, offset_factor; -}; - bool brw_color_buffer_write_enabled(struct brw_context *brw) { @@ -81,219 +66,192 @@ brw_color_buffer_write_enabled(struct brw_context *brw) return false; } +/** + * Setup wm hardware state. See page 225 of Volume 2 + */ static void -wm_unit_populate_key(struct brw_context *brw, struct brw_wm_unit_key *key) +brw_prepare_wm_unit(struct brw_context *brw) { - struct gl_context *ctx = &brw->intel.ctx; - const struct gl_fragment_program *fp = brw->fragment_program; struct intel_context *intel = &brw->intel; + struct gl_context *ctx = &intel->ctx; + const struct gl_fragment_program *fp = brw->fragment_program; + struct brw_wm_unit_state *wm; - memset(key, 0, sizeof(*key)); + wm = brw_state_batch(brw, sizeof(*wm), 32, &brw->wm.state_offset); + memset(wm, 0, sizeof(*wm)); + + if (brw->wm.prog_data->prog_offset_16) { + /* These two fields should be the same pre-gen6, which is why we + * only have one hardware field to program for both dispatch + * widths. + */ + assert(brw->wm.prog_data->first_curbe_grf == + brw->wm.prog_data->first_curbe_grf_16); + } /* CACHE_NEW_WM_PROG */ - key->total_grf = brw->wm.prog_data->total_grf; - key->urb_entry_read_length = brw->wm.prog_data->urb_read_length; - key->curb_entry_read_length = brw->wm.prog_data->curb_read_length; - key->dispatch_grf_start_reg = brw->wm.prog_data->first_curbe_grf; - key->total_scratch = brw->wm.prog_data->total_scratch; + wm->thread0.grf_reg_count = ALIGN(brw->wm.prog_data->total_grf, 16) / 16 - 1; + wm->wm9.grf_reg_count_2 = ALIGN(brw->wm.prog_data->total_grf_16, 16) / 16 - 1; + wm->thread0.kernel_start_pointer = brw->wm.prog_bo->offset >> 6; /* reloc */ + /* reloc */ + wm->wm9.kernel_start_pointer_2 = (brw->wm.prog_bo->offset + + brw->wm.prog_data->prog_offset_16) >> 6; + wm->thread1.depth_coef_urb_read_offset = 1; + wm->thread1.floating_point_mode = BRW_FLOATING_POINT_NON_IEEE_754; - /* BRW_NEW_CURBE_OFFSETS */ - key->curbe_offset = brw->curbe.wm_start; + if (intel->gen == 5) + wm->thread1.binding_table_entry_count = 0; /* hardware requirement */ + else { + /* BRW_NEW_NR_SURFACES */ + wm->thread1.binding_table_entry_count = brw->wm.nr_surfaces; + } - /* BRW_NEW_NR_SURFACEs */ - key->nr_surfaces = brw->wm.nr_surfaces; + if (brw->wm.prog_data->total_scratch != 0) { + wm->thread2.scratch_space_base_pointer = + brw->wm.scratch_bo->offset >> 10; /* reloc */ + wm->thread2.per_thread_scratch_space = + ffs(brw->wm.prog_data->total_scratch) - 11; + } else { + wm->thread2.scratch_space_base_pointer = 0; + wm->thread2.per_thread_scratch_space = 0; + } - /* CACHE_NEW_SAMPLER */ - key->sampler_count = brw->wm.sampler_count; + wm->thread3.dispatch_grf_start_reg = brw->wm.prog_data->first_curbe_grf; + wm->thread3.urb_entry_read_length = brw->wm.prog_data->urb_read_length; + wm->thread3.urb_entry_read_offset = 0; + wm->thread3.const_urb_entry_read_length = + brw->wm.prog_data->curb_read_length; + /* BRW_NEW_CURBE_OFFSETS */ + wm->thread3.const_urb_entry_read_offset = brw->curbe.wm_start * 2; - /* _NEW_POLYGONSTIPPLE */ - key->polygon_stipple = ctx->Polygon.StippleFlag; + if (intel->gen == 5) + wm->wm4.sampler_count = 0; /* hardware requirement */ + else { + /* CACHE_NEW_SAMPLER */ + wm->wm4.sampler_count = (brw->wm.sampler_count + 1) / 4; + } - /* BRW_NEW_FRAGMENT_PROGRAM */ - key->uses_depth = (fp->Base.InputsRead & (1 << FRAG_ATTRIB_WPOS)) != 0; + if (brw->wm.sampler_count) { + /* reloc */ + wm->wm4.sampler_state_pointer = (intel->batch.bo->offset + + brw->wm.sampler_offset) >> 5; + } else { + wm->wm4.sampler_state_pointer = 0; + } - /* as far as we can tell */ - key->computes_depth = - (fp->Base.OutputsWritten & BITFIELD64_BIT(FRAG_RESULT_DEPTH)) != 0; + /* BRW_NEW_FRAGMENT_PROGRAM */ + wm->wm5.program_uses_depth = (fp->Base.InputsRead & + (1 << FRAG_ATTRIB_WPOS)) != 0; + wm->wm5.program_computes_depth = (fp->Base.OutputsWritten & + BITFIELD64_BIT(FRAG_RESULT_DEPTH)) != 0; /* BRW_NEW_DEPTH_BUFFER * Override for NULL depthbuffer case, required by the Pixel Shader Computed * Depth field. */ if (brw->state.depth_region == NULL) - key->computes_depth = 0; - - /* _NEW_BUFFERS | _NEW_COLOR */ - key->color_write_enable = brw_color_buffer_write_enabled(brw); + wm->wm5.program_computes_depth = 0; /* _NEW_COLOR */ - key->uses_kill = fp->UsesKill || ctx->Color.AlphaEnabled; + wm->wm5.program_uses_killpixel = fp->UsesKill || ctx->Color.AlphaEnabled; - /* If using the fragment shader backend, the program is always - * 8-wide. + + /* BRW_NEW_FRAGMENT_PROGRAM + * + * If using the fragment shader backend, the program is always + * 8-wide. If not, it's always 16. */ if (ctx->Shader.CurrentFragmentProgram) { struct brw_shader *shader = (struct brw_shader *) ctx->Shader.CurrentFragmentProgram->_LinkedShaders[MESA_SHADER_FRAGMENT]; if (shader != NULL && shader->ir != NULL) { - key->is_glsl = GL_TRUE; + wm->wm5.enable_8_pix = 1; + if (brw->wm.prog_data->prog_offset_16) + wm->wm5.enable_16_pix = 1; } } + if (!wm->wm5.enable_8_pix) + wm->wm5.enable_16_pix = 1; - /* _NEW_DEPTH */ - key->stats_wm = intel->stats_wm; + wm->wm5.max_threads = brw->wm_max_threads - 1; - /* _NEW_LINE */ - key->line_stipple = ctx->Line.StippleFlag; - - /* _NEW_POLYGON */ - key->offset_enable = ctx->Polygon.OffsetFill; - key->offset_units = ctx->Polygon.OffsetUnits; - key->offset_factor = ctx->Polygon.OffsetFactor; -} - -/** - * Setup wm hardware state. See page 225 of Volume 2 - */ -static drm_intel_bo * -wm_unit_create_from_key(struct brw_context *brw, struct brw_wm_unit_key *key, - drm_intel_bo **reloc_bufs) -{ - struct intel_context *intel = &brw->intel; - struct brw_wm_unit_state wm; - drm_intel_bo *bo; - - memset(&wm, 0, sizeof(wm)); - - wm.thread0.grf_reg_count = ALIGN(key->total_grf, 16) / 16 - 1; - wm.thread0.kernel_start_pointer = brw->wm.prog_bo->offset >> 6; /* reloc */ - wm.thread1.depth_coef_urb_read_offset = 1; - wm.thread1.floating_point_mode = BRW_FLOATING_POINT_NON_IEEE_754; - - if (intel->gen == 5) - wm.thread1.binding_table_entry_count = 0; /* hardware requirement */ - else - wm.thread1.binding_table_entry_count = key->nr_surfaces; - - if (key->total_scratch != 0) { - wm.thread2.scratch_space_base_pointer = - brw->wm.scratch_bo->offset >> 10; /* reloc */ - wm.thread2.per_thread_scratch_space = ffs(key->total_scratch) - 11; - } else { - wm.thread2.scratch_space_base_pointer = 0; - wm.thread2.per_thread_scratch_space = 0; - } - - wm.thread3.dispatch_grf_start_reg = key->dispatch_grf_start_reg; - wm.thread3.urb_entry_read_length = key->urb_entry_read_length; - wm.thread3.urb_entry_read_offset = 0; - wm.thread3.const_urb_entry_read_length = key->curb_entry_read_length; - wm.thread3.const_urb_entry_read_offset = key->curbe_offset * 2; - - if (intel->gen == 5) - wm.wm4.sampler_count = 0; /* hardware requirement */ - else - wm.wm4.sampler_count = (key->sampler_count + 1) / 4; - - if (brw->wm.sampler_bo != NULL) { - /* reloc */ - wm.wm4.sampler_state_pointer = brw->wm.sampler_bo->offset >> 5; - } else { - wm.wm4.sampler_state_pointer = 0; - } - - wm.wm5.program_uses_depth = key->uses_depth; - wm.wm5.program_computes_depth = key->computes_depth; - wm.wm5.program_uses_killpixel = key->uses_kill; - - if (key->is_glsl) - wm.wm5.enable_8_pix = 1; - else - wm.wm5.enable_16_pix = 1; - - wm.wm5.max_threads = brw->wm_max_threads - 1; - - if (key->color_write_enable || - key->uses_kill || - key->computes_depth) { - wm.wm5.thread_dispatch_enable = 1; + /* _NEW_BUFFERS | _NEW_COLOR */ + if (brw_color_buffer_write_enabled(brw) || + wm->wm5.program_uses_killpixel || + wm->wm5.program_computes_depth) { + wm->wm5.thread_dispatch_enable = 1; } - wm.wm5.legacy_line_rast = 0; - wm.wm5.legacy_global_depth_bias = 0; - wm.wm5.early_depth_test = 1; /* never need to disable */ - wm.wm5.line_aa_region_width = 0; - wm.wm5.line_endcap_aa_region_width = 1; + wm->wm5.legacy_line_rast = 0; + wm->wm5.legacy_global_depth_bias = 0; + wm->wm5.early_depth_test = 1; /* never need to disable */ + wm->wm5.line_aa_region_width = 0; + wm->wm5.line_endcap_aa_region_width = 1; - wm.wm5.polygon_stipple = key->polygon_stipple; + /* _NEW_POLYGONSTIPPLE */ + wm->wm5.polygon_stipple = ctx->Polygon.StippleFlag; - if (key->offset_enable) { - wm.wm5.depth_offset = 1; + /* _NEW_POLYGON */ + if (ctx->Polygon.OffsetFill) { + wm->wm5.depth_offset = 1; /* Something wierd going on with legacy_global_depth_bias, * offset_constant, scaling and MRD. This value passes glean * but gives some odd results elsewere (eg. the * quad-offset-units test). */ - wm.global_depth_offset_constant = key->offset_units * 2; + wm->global_depth_offset_constant = ctx->Polygon.OffsetUnits * 2; /* This is the only value that passes glean: */ - wm.global_depth_offset_scale = key->offset_factor; + wm->global_depth_offset_scale = ctx->Polygon.OffsetFactor; } - wm.wm5.line_stipple = key->line_stipple; - - if (unlikely(INTEL_DEBUG & DEBUG_STATS) || key->stats_wm) - wm.wm4.stats_enable = 1; + /* _NEW_LINE */ + wm->wm5.line_stipple = ctx->Line.StippleFlag; - bo = brw_upload_cache(&brw->cache, BRW_WM_UNIT, - key, sizeof(*key), - reloc_bufs, 3, - &wm, sizeof(wm)); + /* _NEW_DEPTH */ + if (unlikely(INTEL_DEBUG & DEBUG_STATS) || intel->stats_wm) + wm->wm4.stats_enable = 1; /* Emit WM program relocation */ - drm_intel_bo_emit_reloc(bo, offsetof(struct brw_wm_unit_state, thread0), - brw->wm.prog_bo, wm.thread0.grf_reg_count << 1, + drm_intel_bo_emit_reloc(intel->batch.bo, + brw->wm.state_offset + + offsetof(struct brw_wm_unit_state, thread0), + brw->wm.prog_bo, wm->thread0.grf_reg_count << 1, I915_GEM_DOMAIN_INSTRUCTION, 0); + if (brw->wm.prog_data->prog_offset_16) { + drm_intel_bo_emit_reloc(intel->batch.bo, + brw->wm.state_offset + + offsetof(struct brw_wm_unit_state, wm9), + brw->wm.prog_bo, + ((wm->wm9.grf_reg_count_2 << 1) + + brw->wm.prog_data->prog_offset_16), + I915_GEM_DOMAIN_INSTRUCTION, 0); + } + /* Emit scratch space relocation */ - if (key->total_scratch != 0) { - drm_intel_bo_emit_reloc(bo, offsetof(struct brw_wm_unit_state, thread2), + if (brw->wm.prog_data->total_scratch != 0) { + drm_intel_bo_emit_reloc(intel->batch.bo, + brw->wm.state_offset + + offsetof(struct brw_wm_unit_state, thread2), brw->wm.scratch_bo, - wm.thread2.per_thread_scratch_space, + wm->thread2.per_thread_scratch_space, I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER); } /* Emit sampler state relocation */ - if (key->sampler_count != 0) { - drm_intel_bo_emit_reloc(bo, offsetof(struct brw_wm_unit_state, wm4), - brw->wm.sampler_bo, (wm.wm4.stats_enable | - (wm.wm4.sampler_count << 2)), + if (brw->wm.sampler_count != 0) { + drm_intel_bo_emit_reloc(intel->batch.bo, + brw->wm.state_offset + + offsetof(struct brw_wm_unit_state, wm4), + intel->batch.bo, (brw->wm.sampler_offset | + wm->wm4.stats_enable | + (wm->wm4.sampler_count << 2)), I915_GEM_DOMAIN_INSTRUCTION, 0); } - return bo; -} - - -static void upload_wm_unit( struct brw_context *brw ) -{ - struct brw_wm_unit_key key; - drm_intel_bo *reloc_bufs[3]; - wm_unit_populate_key(brw, &key); - - reloc_bufs[0] = brw->wm.prog_bo; - reloc_bufs[1] = brw->wm.scratch_bo; - reloc_bufs[2] = brw->wm.sampler_bo; - - drm_intel_bo_unreference(brw->wm.state_bo); - brw->wm.state_bo = brw_search_cache(&brw->cache, BRW_WM_UNIT, - &key, sizeof(key), - reloc_bufs, 3, - NULL); - if (brw->wm.state_bo == NULL) { - brw->wm.state_bo = wm_unit_create_from_key(brw, &key, reloc_bufs); - } + brw->state.dirty.cache |= CACHE_NEW_WM_UNIT; } const struct brw_tracked_state brw_wm_unit = { @@ -305,7 +263,8 @@ const struct brw_tracked_state brw_wm_unit = { _NEW_DEPTH | _NEW_BUFFERS), - .brw = (BRW_NEW_FRAGMENT_PROGRAM | + .brw = (BRW_NEW_BATCH | + BRW_NEW_FRAGMENT_PROGRAM | BRW_NEW_CURBE_OFFSETS | BRW_NEW_DEPTH_BUFFER | BRW_NEW_NR_WM_SURFACES), @@ -313,6 +272,6 @@ const struct brw_tracked_state brw_wm_unit = { .cache = (CACHE_NEW_WM_PROG | CACHE_NEW_SAMPLER) }, - .prepare = upload_wm_unit, + .prepare = brw_prepare_wm_unit, }; 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 e3396a3cbd4..47b8b511f05 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c @@ -31,6 +31,7 @@ #include "main/mtypes.h" +#include "main/samplerobj.h" #include "main/texstore.h" #include "program/prog_parameter.h" @@ -112,6 +113,10 @@ static uint32_t brw_format_for_mesa_format[MESA_FORMAT_COUNT] = [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, + [MESA_FORMAT_RED_RGTC1] = BRW_SURFACEFORMAT_BC4_UNORM, + [MESA_FORMAT_SIGNED_RED_RGTC1] = BRW_SURFACEFORMAT_BC4_SNORM, + [MESA_FORMAT_RG_RGTC2] = BRW_SURFACEFORMAT_BC5_UNORM, + [MESA_FORMAT_SIGNED_RG_RGTC2] = BRW_SURFACEFORMAT_BC5_SNORM, }; bool @@ -213,6 +218,7 @@ brw_update_texture_surface( struct gl_context *ctx, GLuint unit ) struct gl_texture_object *tObj = ctx->Texture.Unit[unit]._Current; struct intel_texture_object *intelObj = intel_texture_object(tObj); struct gl_texture_image *firstImage = tObj->Image[0][tObj->BaseLevel]; + struct gl_sampler_object *sampler = _mesa_get_samplerobj(ctx, unit); const GLuint surf_index = SURF_INDEX_TEXTURE(unit); struct brw_surface_state *surf; @@ -224,8 +230,8 @@ brw_update_texture_surface( struct gl_context *ctx, GLuint unit ) surf->ss0.surface_type = translate_tex_target(tObj->Target); surf->ss0.surface_format = translate_tex_format(firstImage->TexFormat, firstImage->InternalFormat, - tObj->Sampler.DepthMode, - tObj->Sampler.sRGBDecode); + sampler->DepthMode, + sampler->sRGBDecode); /* This is ok for all textures with channel width 8bit or less: */ @@ -309,7 +315,7 @@ brw_create_constant_surface(struct brw_context *brw, * state atom. */ static void -prepare_wm_constants(struct brw_context *brw) +prepare_wm_pull_constants(struct brw_context *brw) { struct gl_context *ctx = &brw->intel.ctx; struct intel_context *intel = &brw->intel; @@ -353,7 +359,7 @@ const struct brw_tracked_state brw_wm_constants = { .brw = (BRW_NEW_FRAGMENT_PROGRAM), .cache = 0 }, - .prepare = prepare_wm_constants, + .prepare = prepare_wm_pull_constants, }; /** diff --git a/src/mesa/drivers/dri/i965/gen6_cc.c b/src/mesa/drivers/dri/i965/gen6_cc.c index 1b935fb5e70..66357f00fa6 100644 --- a/src/mesa/drivers/dri/i965/gen6_cc.c +++ b/src/mesa/drivers/dri/i965/gen6_cc.c @@ -32,82 +32,39 @@ #include "intel_batchbuffer.h" #include "main/macros.h" -struct gen6_blend_state_key { - GLboolean color_blend, alpha_enabled; - GLboolean dither; - GLboolean color_mask[BRW_MAX_DRAW_BUFFERS][4]; - - GLenum logic_op; - - GLenum blend_eq_rgb, blend_eq_a; - GLenum blend_src_rgb, blend_src_a; - GLenum blend_dst_rgb, blend_dst_a; - - GLenum alpha_func; -}; - static void -blend_state_populate_key(struct brw_context *brw, - struct gen6_blend_state_key *key) +prepare_blend_state(struct brw_context *brw) { struct gl_context *ctx = &brw->intel.ctx; - - memset(key, 0, sizeof(*key)); - - /* _NEW_COLOR */ - memcpy(key->color_mask, ctx->Color.ColorMask, sizeof(key->color_mask)); - - /* _NEW_COLOR */ - if (ctx->Color._LogicOpEnabled) - key->logic_op = ctx->Color.LogicOp; - else - key->logic_op = GL_COPY; - - /* _NEW_COLOR */ - key->color_blend = ctx->Color.BlendEnabled; - if (key->color_blend) { - key->blend_eq_rgb = ctx->Color.Blend[0].EquationRGB; - key->blend_eq_a = ctx->Color.Blend[0].EquationA; - key->blend_src_rgb = ctx->Color.Blend[0].SrcRGB; - key->blend_dst_rgb = ctx->Color.Blend[0].DstRGB; - key->blend_src_a = ctx->Color.Blend[0].SrcA; - key->blend_dst_a = ctx->Color.Blend[0].DstA; - } - - /* _NEW_COLOR */ - key->alpha_enabled = ctx->Color.AlphaEnabled; - if (key->alpha_enabled) { - key->alpha_func = ctx->Color.AlphaFunc; - } - - /* _NEW_COLOR */ - key->dither = ctx->Color.DitherFlag; -} - -/** - * Creates the state cache entry for the given CC unit key. - */ -static drm_intel_bo * -blend_state_create_from_key(struct brw_context *brw, - struct gen6_blend_state_key *key) -{ - struct gen6_blend_state blend[BRW_MAX_DRAW_BUFFERS]; - drm_intel_bo *bo; + struct gen6_blend_state *blend; int b; - - memset(&blend, 0, sizeof(blend)); - - for (b = 0; b < BRW_MAX_DRAW_BUFFERS; b++) { - if (key->logic_op != GL_COPY) { - blend[b].blend1.logic_op_enable = 1; - blend[b].blend1.logic_op_func = intel_translate_logic_op(key->logic_op); - } else if (key->color_blend & (1 << b)) { - GLenum eqRGB = key->blend_eq_rgb; - GLenum eqA = key->blend_eq_a; - GLenum srcRGB = key->blend_src_rgb; - GLenum dstRGB = key->blend_dst_rgb; - GLenum srcA = key->blend_src_a; - GLenum dstA = key->blend_dst_a; + int nr_draw_buffers = ctx->DrawBuffer->_NumColorDrawBuffers; + int size = sizeof(*blend) * nr_draw_buffers; + + blend = brw_state_batch(brw, size, 64, &brw->cc.blend_state_offset); + + memset(blend, 0, size); + + for (b = 0; b < nr_draw_buffers; b++) { + /* _NEW_COLOR */ + if (ctx->Color._LogicOpEnabled) { + struct gl_renderbuffer *rb = ctx->DrawBuffer->_ColorDrawBuffers[b]; + /* _NEW_BUFFERS */ + /* Floating point RTs should have no effect from LogicOp, + * except for disabling of blending + */ + if (_mesa_get_format_datatype(rb->Format) != GL_FLOAT) { + blend[b].blend1.logic_op_enable = 1; + blend[b].blend1.logic_op_func = + intel_translate_logic_op(ctx->Color.LogicOp); + } + } else if (ctx->Color.BlendEnabled & (1 << b)) { + GLenum eqRGB = ctx->Color.Blend[0].EquationRGB; + GLenum eqA = ctx->Color.Blend[0].EquationA; + GLenum srcRGB = ctx->Color.Blend[0].SrcRGB; + GLenum dstRGB = ctx->Color.Blend[0].DstRGB; + GLenum srcA = ctx->Color.Blend[0].SrcA; + GLenum dstA = ctx->Color.Blend[0].DstA; if (eqRGB == GL_MIN || eqRGB == GL_MAX) { srcRGB = dstRGB = GL_ONE; @@ -131,146 +88,74 @@ blend_state_create_from_key(struct brw_context *brw, eqA != eqRGB); } - if (key->alpha_enabled) { + + /* _NEW_COLOR */ + if (ctx->Color.AlphaEnabled) { blend[b].blend1.alpha_test_enable = 1; - blend[b].blend1.alpha_test_func = intel_translate_compare_func(key->alpha_func); + blend[b].blend1.alpha_test_func = + intel_translate_compare_func(ctx->Color.AlphaFunc); } - if (key->dither) { + /* _NEW_COLOR */ + if (ctx->Color.DitherFlag) { blend[b].blend1.dither_enable = 1; blend[b].blend1.y_dither_offset = 0; blend[b].blend1.x_dither_offset = 0; } - blend[b].blend1.write_disable_r = !key->color_mask[b][0]; - blend[b].blend1.write_disable_g = !key->color_mask[b][1]; - blend[b].blend1.write_disable_b = !key->color_mask[b][2]; - blend[b].blend1.write_disable_a = !key->color_mask[b][3]; + blend[b].blend1.write_disable_r = !ctx->Color.ColorMask[b][0]; + blend[b].blend1.write_disable_g = !ctx->Color.ColorMask[b][1]; + blend[b].blend1.write_disable_b = !ctx->Color.ColorMask[b][2]; + blend[b].blend1.write_disable_a = !ctx->Color.ColorMask[b][3]; } - bo = brw_upload_cache(&brw->cache, BRW_BLEND_STATE, - key, sizeof(*key), - NULL, 0, - &blend, sizeof(blend)); - - return bo; -} - -static void -prepare_blend_state(struct brw_context *brw) -{ - struct gen6_blend_state_key key; - - blend_state_populate_key(brw, &key); - - drm_intel_bo_unreference(brw->cc.blend_state_bo); - brw->cc.blend_state_bo = brw_search_cache(&brw->cache, BRW_BLEND_STATE, - &key, sizeof(key), - NULL, 0, - NULL); - - if (brw->cc.blend_state_bo == NULL) - brw->cc.blend_state_bo = blend_state_create_from_key(brw, &key); + brw->state.dirty.cache |= CACHE_NEW_BLEND_STATE; } const struct brw_tracked_state gen6_blend_state = { .dirty = { - .mesa = _NEW_COLOR, - .brw = 0, + .mesa = (_NEW_COLOR | + _NEW_BUFFERS), + .brw = BRW_NEW_BATCH, .cache = 0, }, .prepare = prepare_blend_state, }; -struct gen6_color_calc_state_key { - float blend_constant_color[4]; - GLclampf alpha_ref; - GLubyte stencil_ref[2]; -}; - static void -color_calc_state_populate_key(struct brw_context *brw, - struct gen6_color_calc_state_key *key) +gen6_prepare_color_calc_state(struct brw_context *brw) { struct gl_context *ctx = &brw->intel.ctx; + struct gen6_color_calc_state *cc; - memset(key, 0, sizeof(*key)); - - /* _NEW_STENCIL */ - if (ctx->Stencil._Enabled) { - const unsigned back = ctx->Stencil._BackFace; - - key->stencil_ref[0] = ctx->Stencil.Ref[0]; - if (ctx->Stencil._TestTwoSide) - key->stencil_ref[1] = ctx->Stencil.Ref[back]; - } + cc = brw_state_batch(brw, sizeof(*cc), 64, &brw->cc.state_offset); + memset(cc, 0, sizeof(*cc)); /* _NEW_COLOR */ - if (ctx->Color.AlphaEnabled) - key->alpha_ref = ctx->Color.AlphaRef; - - 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]; -} - -/** - * Creates the state cache entry for the given CC state key. - */ -static drm_intel_bo * -color_calc_state_create_from_key(struct brw_context *brw, - struct gen6_color_calc_state_key *key) -{ - struct gen6_color_calc_state cc; - drm_intel_bo *bo; - - memset(&cc, 0, sizeof(cc)); + cc->cc0.alpha_test_format = BRW_ALPHATEST_FORMAT_UNORM8; + UNCLAMPED_FLOAT_TO_UBYTE(cc->cc1.alpha_ref_fi.ui, ctx->Color.AlphaRef); - cc.cc0.alpha_test_format = BRW_ALPHATEST_FORMAT_UNORM8; - UNCLAMPED_FLOAT_TO_UBYTE(cc.cc1.alpha_ref_fi.ui, key->alpha_ref); - - cc.cc0.stencil_ref = key->stencil_ref[0]; - cc.cc0.bf_stencil_ref = key->stencil_ref[1]; - - cc.constant_r = key->blend_constant_color[0]; - cc.constant_g = key->blend_constant_color[1]; - cc.constant_b = key->blend_constant_color[2]; - cc.constant_a = key->blend_constant_color[3]; - - bo = brw_upload_cache(&brw->cache, BRW_COLOR_CALC_STATE, - key, sizeof(*key), - NULL, 0, - &cc, sizeof(cc)); - - return bo; -} - -static void -prepare_color_calc_state(struct brw_context *brw) -{ - struct gen6_color_calc_state_key key; - - color_calc_state_populate_key(brw, &key); + /* _NEW_STENCIL */ + cc->cc0.stencil_ref = ctx->Stencil.Ref[0]; + cc->cc0.bf_stencil_ref = ctx->Stencil.Ref[ctx->Stencil._BackFace]; - drm_intel_bo_unreference(brw->cc.color_calc_state_bo); - brw->cc.color_calc_state_bo = brw_search_cache(&brw->cache, BRW_COLOR_CALC_STATE, - &key, sizeof(key), - NULL, 0, - NULL); + /* _NEW_COLOR */ + cc->constant_r = ctx->Color.BlendColorUnclamped[0]; + cc->constant_g = ctx->Color.BlendColorUnclamped[1]; + cc->constant_b = ctx->Color.BlendColorUnclamped[2]; + cc->constant_a = ctx->Color.BlendColorUnclamped[3]; - if (brw->cc.color_calc_state_bo == NULL) - brw->cc.color_calc_state_bo = color_calc_state_create_from_key(brw, &key); + brw->state.dirty.cache |= CACHE_NEW_COLOR_CALC_STATE; } const struct brw_tracked_state gen6_color_calc_state = { .dirty = { .mesa = _NEW_COLOR | _NEW_STENCIL, - .brw = 0, + .brw = BRW_NEW_BATCH, .cache = 0, }, - .prepare = prepare_color_calc_state, + .prepare = gen6_prepare_color_calc_state, }; static void upload_cc_state_pointers(struct brw_context *brw) @@ -279,20 +164,12 @@ static void upload_cc_state_pointers(struct brw_context *brw) BEGIN_BATCH(4); OUT_BATCH(_3DSTATE_CC_STATE_POINTERS << 16 | (4 - 2)); - OUT_RELOC(brw->cc.blend_state_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 1); - OUT_RELOC(brw->cc.depth_stencil_state_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 1); - OUT_RELOC(brw->cc.color_calc_state_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 1); + OUT_BATCH(brw->cc.blend_state_offset | 1); + OUT_BATCH(brw->cc.depth_stencil_state_offset | 1); + OUT_BATCH(brw->cc.state_offset | 1); ADVANCE_BATCH(); } - -static void prepare_cc_state_pointers(struct brw_context *brw) -{ - brw_add_validated_bo(brw, brw->cc.color_calc_state_bo); - brw_add_validated_bo(brw, brw->cc.blend_state_bo); - brw_add_validated_bo(brw, brw->cc.depth_stencil_state_bo); -} - const struct brw_tracked_state gen6_cc_state_pointers = { .dirty = { .mesa = 0, @@ -301,6 +178,5 @@ const struct brw_tracked_state gen6_cc_state_pointers = { CACHE_NEW_COLOR_CALC_STATE | CACHE_NEW_DEPTH_STENCIL_STATE) }, - .prepare = prepare_cc_state_pointers, .emit = upload_cc_state_pointers, }; diff --git a/src/mesa/drivers/dri/i965/gen6_depthstencil.c b/src/mesa/drivers/dri/i965/gen6_depthstencil.c index 96e6eade6b7..775e1ce2c9c 100644 --- a/src/mesa/drivers/dri/i965/gen6_depthstencil.c +++ b/src/mesa/drivers/dri/i965/gen6_depthstencil.c @@ -28,138 +28,68 @@ #include "brw_context.h" #include "brw_state.h" -struct brw_depth_stencil_state_key { - GLenum depth_func; - GLboolean depth_test, depth_write; - GLboolean stencil, stencil_two_side; - GLenum stencil_func[2], stencil_fail_op[2]; - GLenum stencil_pass_depth_fail_op[2], stencil_pass_depth_pass_op[2]; - GLubyte stencil_write_mask[2], stencil_test_mask[2]; -}; - static void -depth_stencil_state_populate_key(struct brw_context *brw, - struct brw_depth_stencil_state_key *key) +gen6_prepare_depth_stencil_state(struct brw_context *brw) { struct gl_context *ctx = &brw->intel.ctx; - const unsigned back = ctx->Stencil._BackFace; + struct gen6_depth_stencil_state *ds; - memset(key, 0, sizeof(*key)); + ds = brw_state_batch(brw, sizeof(*ds), 64, + &brw->cc.depth_stencil_state_offset); + memset(ds, 0, sizeof(*ds)); /* _NEW_STENCIL */ - key->stencil = ctx->Stencil._Enabled; - key->stencil_two_side = ctx->Stencil._TestTwoSide; - - if (key->stencil) { - key->stencil_func[0] = ctx->Stencil.Function[0]; - key->stencil_fail_op[0] = ctx->Stencil.FailFunc[0]; - key->stencil_pass_depth_fail_op[0] = ctx->Stencil.ZFailFunc[0]; - key->stencil_pass_depth_pass_op[0] = ctx->Stencil.ZPassFunc[0]; - key->stencil_write_mask[0] = ctx->Stencil.WriteMask[0]; - key->stencil_test_mask[0] = ctx->Stencil.ValueMask[0]; - } - if (key->stencil_two_side) { - key->stencil_func[1] = ctx->Stencil.Function[back]; - key->stencil_fail_op[1] = ctx->Stencil.FailFunc[back]; - key->stencil_pass_depth_fail_op[1] = ctx->Stencil.ZFailFunc[back]; - key->stencil_pass_depth_pass_op[1] = ctx->Stencil.ZPassFunc[back]; - key->stencil_write_mask[1] = ctx->Stencil.WriteMask[back]; - key->stencil_test_mask[1] = ctx->Stencil.ValueMask[back]; - } - - key->depth_test = ctx->Depth.Test; - if (key->depth_test) { - key->depth_func = ctx->Depth.Func; - key->depth_write = ctx->Depth.Mask; - } -} - -/** - * Creates the state cache entry for the given DEPTH_STENCIL_STATE state key. - */ -static drm_intel_bo * -depth_stencil_state_create_from_key(struct brw_context *brw, - struct brw_depth_stencil_state_key *key) -{ - struct gen6_depth_stencil_state ds; - drm_intel_bo *bo; - - memset(&ds, 0, sizeof(ds)); - - /* _NEW_STENCIL */ - if (key->stencil) { - ds.ds0.stencil_enable = 1; - ds.ds0.stencil_func = - intel_translate_compare_func(key->stencil_func[0]); - ds.ds0.stencil_fail_op = - intel_translate_stencil_op(key->stencil_fail_op[0]); - ds.ds0.stencil_pass_depth_fail_op = - intel_translate_stencil_op(key->stencil_pass_depth_fail_op[0]); - ds.ds0.stencil_pass_depth_pass_op = - intel_translate_stencil_op(key->stencil_pass_depth_pass_op[0]); - ds.ds1.stencil_write_mask = key->stencil_write_mask[0]; - ds.ds1.stencil_test_mask = key->stencil_test_mask[0]; - - if (key->stencil_two_side) { - ds.ds0.bf_stencil_enable = 1; - ds.ds0.bf_stencil_func = - intel_translate_compare_func(key->stencil_func[1]); - ds.ds0.bf_stencil_fail_op = - intel_translate_stencil_op(key->stencil_fail_op[1]); - ds.ds0.bf_stencil_pass_depth_fail_op = - intel_translate_stencil_op(key->stencil_pass_depth_fail_op[1]); - ds.ds0.bf_stencil_pass_depth_pass_op = - intel_translate_stencil_op(key->stencil_pass_depth_pass_op[1]); - ds.ds1.bf_stencil_write_mask = key->stencil_write_mask[1]; - ds.ds1.bf_stencil_test_mask = key->stencil_test_mask[1]; + if (ctx->Stencil._Enabled) { + int back = ctx->Stencil._BackFace; + + ds->ds0.stencil_enable = 1; + ds->ds0.stencil_func = + intel_translate_compare_func(ctx->Stencil.Function[0]); + ds->ds0.stencil_fail_op = + intel_translate_stencil_op(ctx->Stencil.FailFunc[0]); + ds->ds0.stencil_pass_depth_fail_op = + intel_translate_stencil_op(ctx->Stencil.ZFailFunc[0]); + ds->ds0.stencil_pass_depth_pass_op = + intel_translate_stencil_op(ctx->Stencil.ZPassFunc[0]); + ds->ds1.stencil_write_mask = ctx->Stencil.WriteMask[0]; + ds->ds1.stencil_test_mask = ctx->Stencil.ValueMask[0]; + + if (ctx->Stencil._TestTwoSide) { + ds->ds0.bf_stencil_enable = 1; + ds->ds0.bf_stencil_func = + intel_translate_compare_func(ctx->Stencil.Function[back]); + ds->ds0.bf_stencil_fail_op = + intel_translate_stencil_op(ctx->Stencil.FailFunc[back]); + ds->ds0.bf_stencil_pass_depth_fail_op = + intel_translate_stencil_op(ctx->Stencil.ZFailFunc[back]); + ds->ds0.bf_stencil_pass_depth_pass_op = + intel_translate_stencil_op(ctx->Stencil.ZPassFunc[back]); + ds->ds1.bf_stencil_write_mask = ctx->Stencil.WriteMask[back]; + ds->ds1.bf_stencil_test_mask = ctx->Stencil.ValueMask[back]; } /* Not really sure about this: */ - if (key->stencil_write_mask[0] || - (key->stencil_two_side && key->stencil_write_mask[1])) - ds.ds0.stencil_write_enable = 1; + if (ctx->Stencil.WriteMask[0] || + (ctx->Stencil._TestTwoSide && ctx->Stencil.WriteMask[back])) + ds->ds0.stencil_write_enable = 1; } /* _NEW_DEPTH */ - if (key->depth_test) { - ds.ds2.depth_test_enable = 1; - ds.ds2.depth_test_func = intel_translate_compare_func(key->depth_func); - ds.ds2.depth_write_enable = key->depth_write; + if (ctx->Depth.Test) { + ds->ds2.depth_test_enable = 1; + ds->ds2.depth_test_func = intel_translate_compare_func(ctx->Depth.Func); + ds->ds2.depth_write_enable = ctx->Depth.Mask; } - bo = brw_upload_cache(&brw->cache, BRW_DEPTH_STENCIL_STATE, - key, sizeof(*key), - NULL, 0, - &ds, sizeof(ds)); - - return bo; -} - -static void -prepare_depth_stencil_state(struct brw_context *brw) -{ - struct brw_depth_stencil_state_key key; - - depth_stencil_state_populate_key(brw, &key); - - drm_intel_bo_unreference(brw->cc.depth_stencil_state_bo); - brw->cc.depth_stencil_state_bo = brw_search_cache(&brw->cache, - BRW_DEPTH_STENCIL_STATE, - &key, sizeof(key), - NULL, 0, - NULL); - - if (brw->cc.depth_stencil_state_bo == NULL) - brw->cc.depth_stencil_state_bo = - depth_stencil_state_create_from_key(brw, &key); + brw->state.dirty.cache |= CACHE_NEW_DEPTH_STENCIL_STATE; } const struct brw_tracked_state gen6_depth_stencil_state = { .dirty = { .mesa = _NEW_DEPTH | _NEW_STENCIL, - .brw = 0, + .brw = BRW_NEW_BATCH, .cache = 0, }, - .prepare = prepare_depth_stencil_state, + .prepare = gen6_prepare_depth_stencil_state, }; diff --git a/src/mesa/drivers/dri/i965/gen6_sampler_state.c b/src/mesa/drivers/dri/i965/gen6_sampler_state.c index f65c651bdff..4cdec699df6 100644 --- a/src/mesa/drivers/dri/i965/gen6_sampler_state.c +++ b/src/mesa/drivers/dri/i965/gen6_sampler_state.c @@ -43,27 +43,15 @@ upload_sampler_state_pointers(struct brw_context *brw) (4 - 2)); OUT_BATCH(0); /* VS */ OUT_BATCH(0); /* GS */ - if (brw->wm.sampler_bo) - OUT_RELOC(brw->wm.sampler_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); - else - OUT_BATCH(0); - + OUT_BATCH(brw->wm.sampler_offset); ADVANCE_BATCH(); } - -static void -prepare_sampler_state_pointers(struct brw_context *brw) -{ - brw_add_validated_bo(brw, brw->wm.sampler_bo); -} - const struct brw_tracked_state gen6_sampler_state = { .dirty = { .mesa = 0, .brw = BRW_NEW_BATCH, .cache = CACHE_NEW_SAMPLER }, - .prepare = prepare_sampler_state_pointers, .emit = upload_sampler_state_pointers, }; diff --git a/src/mesa/drivers/dri/i965/gen6_scissor_state.c b/src/mesa/drivers/dri/i965/gen6_scissor_state.c index 12b65826ae9..fad3ca0dd04 100644 --- a/src/mesa/drivers/dri/i965/gen6_scissor_state.c +++ b/src/mesa/drivers/dri/i965/gen6_scissor_state.c @@ -31,11 +31,15 @@ #include "intel_batchbuffer.h" static void -prepare_scissor_state(struct brw_context *brw) +gen6_prepare_scissor_state(struct brw_context *brw) { - struct gl_context *ctx = &brw->intel.ctx; + struct intel_context *intel = &brw->intel; + struct gl_context *ctx = &intel->ctx; const GLboolean render_to_fbo = (ctx->DrawBuffer->Name != 0); - struct gen6_scissor_rect scissor; + struct gen6_scissor_rect *scissor; + uint32_t scissor_state_offset; + + scissor = brw_state_batch(brw, sizeof(*scissor), 32, &scissor_state_offset); /* _NEW_SCISSOR | _NEW_BUFFERS | _NEW_VIEWPORT */ @@ -54,62 +58,36 @@ prepare_scissor_state(struct brw_context *brw) * anything. Instead, just provide a min > max scissor inside * the bounds, which produces the expected no rendering. */ - scissor.xmin = 1; - scissor.xmax = 0; - scissor.ymin = 1; - scissor.ymax = 0; + scissor->xmin = 1; + scissor->xmax = 0; + scissor->ymin = 1; + scissor->ymax = 0; } else if (render_to_fbo) { /* texmemory: Y=0=bottom */ - scissor.xmin = ctx->DrawBuffer->_Xmin; - scissor.xmax = ctx->DrawBuffer->_Xmax - 1; - scissor.ymin = ctx->DrawBuffer->_Ymin; - scissor.ymax = ctx->DrawBuffer->_Ymax - 1; + scissor->xmin = ctx->DrawBuffer->_Xmin; + scissor->xmax = ctx->DrawBuffer->_Xmax - 1; + scissor->ymin = ctx->DrawBuffer->_Ymin; + scissor->ymax = ctx->DrawBuffer->_Ymax - 1; } else { /* memory: Y=0=top */ - scissor.xmin = ctx->DrawBuffer->_Xmin; - scissor.xmax = ctx->DrawBuffer->_Xmax - 1; - scissor.ymin = ctx->DrawBuffer->Height - ctx->DrawBuffer->_Ymax; - scissor.ymax = ctx->DrawBuffer->Height - ctx->DrawBuffer->_Ymin - 1; + scissor->xmin = ctx->DrawBuffer->_Xmin; + scissor->xmax = ctx->DrawBuffer->_Xmax - 1; + scissor->ymin = ctx->DrawBuffer->Height - ctx->DrawBuffer->_Ymax; + scissor->ymax = ctx->DrawBuffer->Height - ctx->DrawBuffer->_Ymin - 1; } - drm_intel_bo_unreference(brw->sf.state_bo); - brw->sf.state_bo = brw_cache_data(&brw->cache, BRW_SF_UNIT, - &scissor, sizeof(scissor)); -} - -const struct brw_tracked_state gen6_scissor_state = { - .dirty = { - .mesa = _NEW_SCISSOR | _NEW_BUFFERS | _NEW_VIEWPORT, - .brw = 0, - .cache = 0, - }, - .prepare = prepare_scissor_state, -}; - -static void upload_scissor_state_pointers(struct brw_context *brw) -{ - struct intel_context *intel = &brw->intel; - BEGIN_BATCH(2); OUT_BATCH(_3DSTATE_SCISSOR_STATE_POINTERS << 16 | (2 - 2)); - OUT_RELOC(brw->sf.state_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); + OUT_BATCH(scissor_state_offset); ADVANCE_BATCH(); - } - -static void prepare_scissor_state_pointers(struct brw_context *brw) -{ - brw_add_validated_bo(brw, brw->sf.state_bo); -} - -const struct brw_tracked_state gen6_scissor_state_pointers = { +const struct brw_tracked_state gen6_scissor_state = { .dirty = { - .mesa = 0, + .mesa = _NEW_SCISSOR | _NEW_BUFFERS | _NEW_VIEWPORT, .brw = BRW_NEW_BATCH, - .cache = CACHE_NEW_SF_UNIT + .cache = 0, }, - .prepare = prepare_scissor_state_pointers, - .emit = upload_scissor_state_pointers, + .prepare = gen6_prepare_scissor_state, }; diff --git a/src/mesa/drivers/dri/i965/gen6_viewport_state.c b/src/mesa/drivers/dri/i965/gen6_viewport_state.c index cd7d209e3ea..4116bdb96de 100644 --- a/src/mesa/drivers/dri/i965/gen6_viewport_state.c +++ b/src/mesa/drivers/dri/i965/gen6_viewport_state.c @@ -41,22 +41,22 @@ static void prepare_clip_vp(struct brw_context *brw) { - struct brw_clipper_viewport vp; + struct brw_clipper_viewport *vp; - vp.xmin = -1.0; - vp.xmax = 1.0; - vp.ymin = -1.0; - vp.ymax = 1.0; + vp = brw_state_batch(brw, sizeof(*vp), 32, &brw->clip.vp_offset); - drm_intel_bo_unreference(brw->clip.vp_bo); - brw->clip.vp_bo = brw_cache_data(&brw->cache, BRW_CLIP_VP, - &vp, sizeof(vp)); + vp->xmin = -1.0; + vp->xmax = 1.0; + vp->ymin = -1.0; + vp->ymax = 1.0; + + brw->state.dirty.cache |= CACHE_NEW_CLIP_VP; } const struct brw_tracked_state gen6_clip_vp = { .dirty = { - .mesa = _NEW_VIEWPORT, /* XXX: not really, but we need nonzero */ - .brw = 0, + .mesa = 0, + .brw = BRW_NEW_BATCH, .cache = 0, }, .prepare = prepare_clip_vp, @@ -67,12 +67,13 @@ prepare_sf_vp(struct brw_context *brw) { 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)); /* _NEW_BUFFERS */ if (render_to_fbo) { @@ -84,34 +85,25 @@ prepare_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; - drm_intel_bo_unreference(brw->sf.vp_bo); - brw->sf.vp_bo = brw_cache_data(&brw->cache, BRW_SF_VP, - &sfv, sizeof(sfv)); + brw->state.dirty.cache |= CACHE_NEW_SF_VP; } const struct brw_tracked_state gen6_sf_vp = { .dirty = { .mesa = _NEW_VIEWPORT | _NEW_BUFFERS, - .brw = 0, + .brw = BRW_NEW_BATCH, .cache = 0, }, .prepare = prepare_sf_vp, }; -static void prepare_viewport_state_pointers(struct brw_context *brw) -{ - brw_add_validated_bo(brw, brw->clip.vp_bo); - brw_add_validated_bo(brw, brw->sf.vp_bo); - brw_add_validated_bo(brw, brw->cc.vp_bo); -} - static void upload_viewport_state_pointers(struct brw_context *brw) { struct intel_context *intel = &brw->intel; @@ -121,9 +113,9 @@ static void upload_viewport_state_pointers(struct brw_context *brw) GEN6_CC_VIEWPORT_MODIFY | GEN6_SF_VIEWPORT_MODIFY | GEN6_CLIP_VIEWPORT_MODIFY); - OUT_RELOC(brw->clip.vp_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); - OUT_RELOC(brw->sf.vp_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); - OUT_RELOC(brw->cc.vp_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); + OUT_BATCH(brw->clip.vp_offset); + OUT_BATCH(brw->sf.vp_offset); + OUT_BATCH(brw->cc.vp_offset); ADVANCE_BATCH(); } @@ -135,6 +127,5 @@ const struct brw_tracked_state gen6_viewport_state = { CACHE_NEW_SF_VP | CACHE_NEW_CC_VP) }, - .prepare = prepare_viewport_state_pointers, .emit = upload_viewport_state_pointers, }; diff --git a/src/mesa/drivers/dri/i965/gen6_vs_state.c b/src/mesa/drivers/dri/i965/gen6_vs_state.c index a10cec318d6..b46368e36e2 100644 --- a/src/mesa/drivers/dri/i965/gen6_vs_state.c +++ b/src/mesa/drivers/dri/i965/gen6_vs_state.c @@ -34,43 +34,36 @@ #include "intel_batchbuffer.h" static void -upload_vs_state(struct brw_context *brw) +gen6_prepare_vs_push_constants(struct brw_context *brw) { struct intel_context *intel = &brw->intel; struct gl_context *ctx = &intel->ctx; + /* _BRW_NEW_VERTEX_PROGRAM */ const struct brw_vertex_program *vp = brw_vertex_program_const(brw->vertex_program); unsigned int nr_params = brw->vs.prog_data->nr_params / 4; - drm_intel_bo *constant_bo; - int i; + if (brw->vertex_program->IsNVProgram) + _mesa_load_tracked_matrices(ctx); + + /* Updates the ParamaterValues[i] pointers for all parameters of the + * basic type of PROGRAM_STATE_VAR. + */ + /* XXX: Should this happen somewhere before to get our state flag set? */ + _mesa_load_state_parameters(ctx, vp->program.Base.Parameters); + + /* CACHE_NEW_VS_PROG | _NEW_TRANSFORM */ if (brw->vs.prog_data->nr_params == 0 && !ctx->Transform.ClipPlanesEnabled) { - /* Disable the push constant buffers. */ - BEGIN_BATCH(5); - OUT_BATCH(_3DSTATE_CONSTANT_VS << 16 | (5 - 2)); - OUT_BATCH(0); - OUT_BATCH(0); - OUT_BATCH(0); - OUT_BATCH(0); - ADVANCE_BATCH(); + brw->vs.push_const_size = 0; } else { - int params_uploaded = 0, param_regs; + int params_uploaded = 0; float *param; + int i; - if (brw->vertex_program->IsNVProgram) - _mesa_load_tracked_matrices(ctx); - - /* Updates the ParamaterValues[i] pointers for all parameters of the - * basic type of PROGRAM_STATE_VAR. - */ - _mesa_load_state_parameters(ctx, vp->program.Base.Parameters); - - constant_bo = drm_intel_bo_alloc(intel->bufmgr, "VS constant_bo", - (MAX_CLIP_PLANES + nr_params) * - 4 * sizeof(float), - 4096); - drm_intel_gem_bo_map_gtt(constant_bo); - param = constant_bo->virtual; + param = brw_state_batch(brw, + (MAX_CLIP_PLANES + nr_params) * + 4 * sizeof(float), + 32, &brw->vs.push_const_offset); /* This should be loaded like any other param, but it's ad-hoc * until we redo the VS backend. @@ -100,30 +93,56 @@ upload_vs_state(struct brw_context *brw) if (0) { printf("VS constant buffer:\n"); for (i = 0; i < params_uploaded; i++) { - float *buf = (float *)constant_bo->virtual + i * 4; + float *buf = param + i * 4; printf("%d: %f %f %f %f\n", i, buf[0], buf[1], buf[2], buf[3]); } } - drm_intel_gem_bo_unmap_gtt(constant_bo); + brw->vs.push_const_size = (params_uploaded + 1) / 2; + /* We can only push 32 registers of constants at a time. */ + assert(brw->vs.push_const_size <= 32); + } +} + +const struct brw_tracked_state gen6_vs_constants = { + .dirty = { + .mesa = _NEW_TRANSFORM | _NEW_PROGRAM_CONSTANTS, + .brw = (BRW_NEW_BATCH | + BRW_NEW_VERTEX_PROGRAM), + .cache = 0, + }, + .prepare = gen6_prepare_vs_push_constants, +}; - param_regs = (params_uploaded + 1) / 2; - assert(param_regs <= 32); +static void +upload_vs_state(struct brw_context *brw) +{ + struct intel_context *intel = &brw->intel; + if (brw->vs.push_const_size == 0) { + /* Disable the push constant buffers. */ + BEGIN_BATCH(5); + OUT_BATCH(_3DSTATE_CONSTANT_VS << 16 | (5 - 2)); + OUT_BATCH(0); + OUT_BATCH(0); + OUT_BATCH(0); + OUT_BATCH(0); + ADVANCE_BATCH(); + } else { BEGIN_BATCH(5); OUT_BATCH(_3DSTATE_CONSTANT_VS << 16 | GEN6_CONSTANT_BUFFER_0_ENABLE | (5 - 2)); - OUT_RELOC(constant_bo, - I915_GEM_DOMAIN_RENDER, 0, /* XXX: bad domain */ - param_regs - 1); + /* Pointer to the VS constant buffer. Covered by the set of + * state flags from gen6_prepare_wm_constants + */ + OUT_BATCH(brw->vs.push_const_offset + + brw->vs.push_const_size - 1); OUT_BATCH(0); OUT_BATCH(0); OUT_BATCH(0); ADVANCE_BATCH(); - - drm_intel_bo_unreference(constant_bo); } BEGIN_BATCH(6); @@ -149,7 +168,9 @@ const struct brw_tracked_state gen6_vs_state = { .brw = (BRW_NEW_CURBE_OFFSETS | BRW_NEW_NR_VS_SURFACES | BRW_NEW_URB_FENCE | - BRW_NEW_CONTEXT), + BRW_NEW_CONTEXT | + BRW_NEW_VERTEX_PROGRAM | + BRW_NEW_BATCH), .cache = CACHE_NEW_VS_PROG }, .emit = upload_vs_state, diff --git a/src/mesa/drivers/dri/i965/gen6_wm_state.c b/src/mesa/drivers/dri/i965/gen6_wm_state.c index 8215cb15a9c..33b233414c6 100644 --- a/src/mesa/drivers/dri/i965/gen6_wm_state.c +++ b/src/mesa/drivers/dri/i965/gen6_wm_state.c @@ -35,16 +35,13 @@ #include "intel_batchbuffer.h" static void -prepare_wm_constants(struct brw_context *brw) +gen6_prepare_wm_push_constants(struct brw_context *brw) { struct intel_context *intel = &brw->intel; struct gl_context *ctx = &intel->ctx; const struct brw_fragment_program *fp = brw_fragment_program_const(brw->fragment_program); - drm_intel_bo_unreference(brw->wm.push_const_bo); - brw->wm.push_const_bo = NULL; - /* Updates the ParamaterValues[i] pointers for all parameters of the * basic type of PROGRAM_STATE_VAR. */ @@ -55,13 +52,11 @@ prepare_wm_constants(struct brw_context *brw) float *constants; unsigned int i; - brw->wm.push_const_bo = drm_intel_bo_alloc(intel->bufmgr, - "WM constant_bo", - brw->wm.prog_data->nr_params * - sizeof(float), - 4096); - drm_intel_gem_bo_map_gtt(brw->wm.push_const_bo); - constants = brw->wm.push_const_bo->virtual; + constants = brw_state_batch(brw, + brw->wm.prog_data->nr_params * + sizeof(float), + 32, &brw->wm.push_const_offset); + for (i = 0; i < brw->wm.prog_data->nr_params; i++) { constants[i] = convert_param(brw->wm.prog_data->param_convert[i], *brw->wm.prog_data->param[i]); @@ -80,18 +75,17 @@ prepare_wm_constants(struct brw_context *brw) printf("\n"); printf("\n"); } - - drm_intel_gem_bo_unmap_gtt(brw->wm.push_const_bo); } } const struct brw_tracked_state gen6_wm_constants = { .dirty = { .mesa = _NEW_PROGRAM_CONSTANTS, - .brw = BRW_NEW_FRAGMENT_PROGRAM, + .brw = (BRW_NEW_BATCH | + BRW_NEW_FRAGMENT_PROGRAM), .cache = 0, }, - .prepare = prepare_wm_constants, + .prepare = gen6_prepare_wm_push_constants, }; static void @@ -118,8 +112,10 @@ upload_wm_state(struct brw_context *brw) OUT_BATCH(_3DSTATE_CONSTANT_PS << 16 | GEN6_CONSTANT_BUFFER_0_ENABLE | (5 - 2)); - OUT_RELOC(brw->wm.push_const_bo, - I915_GEM_DOMAIN_RENDER, 0, /* XXX: bad domain */ + /* Pointer to the WM constant buffer. Covered by the set of + * state flags from gen6_prepare_wm_constants + */ + OUT_BATCH(brw->wm.push_const_offset + ALIGN(brw->wm.prog_data->nr_params, brw->wm.prog_data->dispatch_width) / 8 - 1); OUT_BATCH(0); @@ -143,14 +139,19 @@ upload_wm_state(struct brw_context *brw) dw2 |= (ALIGN(brw->wm.sampler_count, 4) / 4) << GEN6_WM_SAMPLER_COUNT_SHIFT; dw4 |= (brw->wm.prog_data->first_curbe_grf << GEN6_WM_DISPATCH_START_GRF_SHIFT_0); + dw4 |= (brw->wm.prog_data->first_curbe_grf_16 << + GEN6_WM_DISPATCH_START_GRF_SHIFT_2); dw5 |= (brw->wm_max_threads - 1) << GEN6_WM_MAX_THREADS_SHIFT; /* CACHE_NEW_WM_PROG */ - if (brw->wm.prog_data->dispatch_width == 8) + if (brw->wm.prog_data->dispatch_width == 8) { dw5 |= GEN6_WM_8_DISPATCH_ENABLE; - else + if (brw->wm.prog_data->prog_offset_16) + dw5 |= GEN6_WM_16_DISPATCH_ENABLE; + } else { dw5 |= GEN6_WM_16_DISPATCH_ENABLE; + } /* _NEW_LINE */ if (ctx->Line.StippleFlag) @@ -194,7 +195,12 @@ upload_wm_state(struct brw_context *brw) OUT_BATCH(dw5); OUT_BATCH(dw6); OUT_BATCH(0); /* kernel 1 pointer */ - OUT_BATCH(0); /* kernel 2 pointer */ + if (brw->wm.prog_data->prog_offset_16) { + OUT_RELOC(brw->wm.prog_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, + brw->wm.prog_data->prog_offset_16); + } else { + OUT_BATCH(0); /* kernel 2 pointer */ + } ADVANCE_BATCH(); } diff --git a/src/mesa/drivers/dri/intel/intel_batchbuffer.c b/src/mesa/drivers/dri/intel/intel_batchbuffer.c index 53d6e7c6acc..377989bcc14 100644 --- a/src/mesa/drivers/dri/intel/intel_batchbuffer.c +++ b/src/mesa/drivers/dri/intel/intel_batchbuffer.c @@ -128,6 +128,11 @@ _intel_batchbuffer_flush(struct intel_context *intel, if (intel->batch.used == 0) return; + if (intel->first_post_swapbuffers_batch == NULL) { + intel->first_post_swapbuffers_batch = intel->batch.bo; + drm_intel_bo_reference(intel->first_post_swapbuffers_batch); + } + if (unlikely(INTEL_DEBUG & DEBUG_BATCH)) fprintf(stderr, "%s:%d: Batchbuffer flush with %db used\n", file, line, 4*intel->batch.used); diff --git a/src/mesa/drivers/dri/intel/intel_clear.c b/src/mesa/drivers/dri/intel/intel_clear.c index 82d29e76712..5a96232107e 100644 --- a/src/mesa/drivers/dri/intel/intel_clear.c +++ b/src/mesa/drivers/dri/intel/intel_clear.c @@ -28,6 +28,7 @@ #include "main/glheader.h" #include "main/mtypes.h" +#include "main/condrender.h" #include "swrast/swrast.h" #include "drivers/common/meta.h" @@ -88,6 +89,9 @@ intelClear(struct gl_context *ctx, GLbitfield mask) struct intel_renderbuffer *irb; int i; + if (!_mesa_check_conditional_render(ctx)) + return; + if (mask & (BUFFER_BIT_FRONT_LEFT | BUFFER_BIT_FRONT_RIGHT)) { intel->front_buffer_dirty = GL_TRUE; } diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c index 02e7f7717fc..acdf35fc71b 100644 --- a/src/mesa/drivers/dri/intel/intel_context.c +++ b/src/mesa/drivers/dri/intel/intel_context.c @@ -466,9 +466,11 @@ intel_prepare_render(struct intel_context *intel) * the swap, and getting our hands on that doesn't seem worth it, * so we just us the first batch we emitted after the last swap. */ - if (intel->need_throttle) { - drmCommandNone(intel->driFd, DRM_I915_GEM_THROTTLE); - intel->need_throttle = GL_FALSE; + if (intel->need_throttle && intel->first_post_swapbuffers_batch) { + drm_intel_bo_wait_rendering(intel->first_post_swapbuffers_batch); + drm_intel_bo_unreference(intel->first_post_swapbuffers_batch); + intel->first_post_swapbuffers_batch = NULL; + intel->need_throttle = GL_FALSE; } } @@ -650,27 +652,23 @@ intelInitContext(struct intel_context *intel, intel->driFd = sPriv->fd; intel->has_xrgb_textures = GL_TRUE; + intel->gen = intelScreen->gen; if (IS_GEN6(intel->intelScreen->deviceID)) { - intel->gen = 6; intel->needs_ff_sync = GL_TRUE; intel->has_luminance_srgb = GL_TRUE; } else if (IS_GEN5(intel->intelScreen->deviceID)) { - intel->gen = 5; intel->needs_ff_sync = GL_TRUE; intel->has_luminance_srgb = GL_TRUE; } else if (IS_965(intel->intelScreen->deviceID)) { - intel->gen = 4; if (IS_G4X(intel->intelScreen->deviceID)) { intel->has_luminance_srgb = GL_TRUE; intel->is_g4x = GL_TRUE; } } else if (IS_9XX(intel->intelScreen->deviceID)) { - intel->gen = 3; if (IS_945(intel->intelScreen->deviceID)) { intel->is_945 = GL_TRUE; } } else { - intel->gen = 2; if (intel->intelScreen->deviceID == PCI_CHIP_I830_M || intel->intelScreen->deviceID == PCI_CHIP_845_G) { intel->has_xrgb_textures = GL_FALSE; @@ -718,6 +716,12 @@ intelInitContext(struct intel_context *intel, ctx->TextureFormatSupported[MESA_FORMAT_RGBA_DXT5] = GL_TRUE; #ifndef I915 + /* GL_ARB_texture_compression_rgtc */ + ctx->TextureFormatSupported[MESA_FORMAT_RED_RGTC1] = GL_TRUE; + ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_RED_RGTC1] = GL_TRUE; + ctx->TextureFormatSupported[MESA_FORMAT_RG_RGTC2] = GL_TRUE; + ctx->TextureFormatSupported[MESA_FORMAT_SIGNED_RG_RGTC2] = GL_TRUE; + /* GL_ARB_texture_rg */ ctx->TextureFormatSupported[MESA_FORMAT_R8] = GL_TRUE; ctx->TextureFormatSupported[MESA_FORMAT_R16] = GL_TRUE; @@ -936,6 +940,8 @@ intelDestroyContext(__DRIcontext * driContextPriv) intel->prim.vb = NULL; drm_intel_bo_unreference(intel->prim.vb_bo); intel->prim.vb_bo = NULL; + drm_intel_bo_unreference(intel->first_post_swapbuffers_batch); + intel->first_post_swapbuffers_batch = NULL; driDestroyOptionCache(&intel->optionCache); diff --git a/src/mesa/drivers/dri/intel/intel_context.h b/src/mesa/drivers/dri/intel/intel_context.h index c59119373da..d3a8a659caa 100644 --- a/src/mesa/drivers/dri/intel/intel_context.h +++ b/src/mesa/drivers/dri/intel/intel_context.h @@ -182,6 +182,7 @@ struct intel_context bool is_blit; } batch; + drm_intel_bo *first_post_swapbuffers_batch; GLboolean need_throttle; GLboolean no_batch_wrap; diff --git a/src/mesa/drivers/dri/intel/intel_extensions.c b/src/mesa/drivers/dri/intel/intel_extensions.c index e107534a4da..3fd987abd8c 100644 --- a/src/mesa/drivers/dri/intel/intel_extensions.c +++ b/src/mesa/drivers/dri/intel/intel_extensions.c @@ -91,6 +91,7 @@ static const struct dri_extension card_extensions[] = { { "GL_ARB_pixel_buffer_object", NULL }, { "GL_ARB_point_parameters", GL_ARB_point_parameters_functions }, { "GL_ARB_point_sprite", NULL }, + { "GL_ARB_sampler_objects", NULL }, { "GL_ARB_shader_objects", GL_ARB_shader_objects_functions }, { "GL_ARB_shading_language_100", GL_VERSION_2_0_functions }, { "GL_ARB_sync", GL_ARB_sync_functions }, @@ -176,6 +177,7 @@ static const struct dri_extension brw_extensions[] = { { "GL_ARB_texture_float", NULL }, #endif { "GL_MESA_texture_signed_rgba", NULL }, + { "GL_ARB_texture_compression_rgtc", NULL }, { "GL_ARB_texture_non_power_of_two", NULL }, { "GL_ARB_texture_rg", NULL }, { "GL_EXT_draw_buffers2", GL_EXT_draw_buffers2_functions }, @@ -189,6 +191,7 @@ static const struct dri_extension brw_extensions[] = { { "GL_ATI_envmap_bumpmap", GL_ATI_envmap_bumpmap_functions }, { "GL_ATI_separate_stencil", GL_ATI_separate_stencil_functions }, { "GL_ATI_texture_env_combine3", NULL }, + { "GL_NV_conditional_render", NULL }, { "GL_NV_texture_env_combine4", NULL }, { NULL, NULL } }; diff --git a/src/mesa/drivers/dri/intel/intel_pixel_bitmap.c b/src/mesa/drivers/dri/intel/intel_pixel_bitmap.c index 43cdd0d2bac..64c7acce1e9 100644 --- a/src/mesa/drivers/dri/intel/intel_pixel_bitmap.c +++ b/src/mesa/drivers/dri/intel/intel_pixel_bitmap.c @@ -29,6 +29,7 @@ #include "main/enums.h" #include "main/image.h" #include "main/colormac.h" +#include "main/condrender.h" #include "main/mtypes.h" #include "main/macros.h" #include "main/pbo.h" @@ -68,7 +69,7 @@ static const GLubyte *map_pbo( struct gl_context *ctx, if (!_mesa_validate_pbo_access(2, unpack, width, height, 1, GL_COLOR_INDEX, GL_BITMAP, - (GLvoid *) bitmap)) { + INT_MAX, (const GLvoid *) bitmap)) { _mesa_error(ctx, GL_INVALID_OPERATION,"glBitmap(invalid PBO access)"); return NULL; } @@ -329,6 +330,9 @@ intelBitmap(struct gl_context * ctx, { struct intel_context *intel = intel_context(ctx); + if (!_mesa_check_conditional_render(ctx)) + return; + if (do_blit_bitmap(ctx, x, y, width, height, unpack, pixels)) return; diff --git a/src/mesa/drivers/dri/intel/intel_pixel_copy.c b/src/mesa/drivers/dri/intel/intel_pixel_copy.c index a7ca780e944..e83f1bfab94 100644 --- a/src/mesa/drivers/dri/intel/intel_pixel_copy.c +++ b/src/mesa/drivers/dri/intel/intel_pixel_copy.c @@ -29,6 +29,7 @@ #include "main/image.h" #include "main/state.h" #include "main/mtypes.h" +#include "main/condrender.h" #include "drivers/common/meta.h" #include "intel_context.h" @@ -204,6 +205,9 @@ intelCopyPixels(struct gl_context * ctx, { DBG("%s\n", __FUNCTION__); + if (!_mesa_check_conditional_render(ctx)) + return; + if (do_blit_copypixels(ctx, srcx, srcy, width, height, destx, desty, type)) return; diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c index 64a21a147f0..5dacbb06633 100644 --- a/src/mesa/drivers/dri/intel/intel_screen.c +++ b/src/mesa/drivers/dri/intel/intel_screen.c @@ -216,8 +216,16 @@ intel_create_image(__DRIscreen *screen, { __DRIimage *image; struct intel_screen *intelScreen = screen->private; + uint32_t tiling; int cpp; + tiling = I915_TILING_X; + if (use & __DRI_IMAGE_USE_CURSOR) { + if (width != 64 || height != 64) + return NULL; + tiling = I915_TILING_NONE; + } + image = CALLOC(sizeof *image); if (image == NULL) return NULL; @@ -247,7 +255,7 @@ intel_create_image(__DRIscreen *screen, cpp = _mesa_get_format_bytes(image->format); image->region = - intel_region_alloc(intelScreen, I915_TILING_NONE, + intel_region_alloc(intelScreen, tiling, cpp, width, height, GL_TRUE); if (image->region == NULL) { FREE(image); @@ -548,6 +556,18 @@ __DRIconfig **intelInitScreen2(__DRIscreen *psp) intelScreen->deviceID = strtod(devid_override, NULL); } + if (IS_GEN6(intelScreen->deviceID)) { + intelScreen->gen = 6; + } else if (IS_GEN5(intelScreen->deviceID)) { + intelScreen->gen = 5; + } else if (IS_965(intelScreen->deviceID)) { + intelScreen->gen = 4; + } else if (IS_9XX(intelScreen->deviceID)) { + intelScreen->gen = 3; + } else { + intelScreen->gen = 2; + } + api_mask = (1 << __DRI_API_OPENGL); #if FEATURE_ES1 api_mask |= (1 << __DRI_API_GLES); @@ -660,12 +680,21 @@ intelAllocateBuffer(__DRIscreen *screen, { struct intel_buffer *intelBuffer; struct intel_screen *intelScreen = screen->private; + uint32_t tiling; intelBuffer = CALLOC(sizeof *intelBuffer); if (intelBuffer == NULL) return NULL; - intelBuffer->region = intel_region_alloc(intelScreen, I915_TILING_NONE, + if ((attachment == __DRI_BUFFER_DEPTH || + attachment == __DRI_BUFFER_STENCIL || + attachment == __DRI_BUFFER_DEPTH_STENCIL) && + intelScreen->gen >= 4) + tiling = I915_TILING_Y; + else + tiling = I915_TILING_X; + + intelBuffer->region = intel_region_alloc(intelScreen, tiling, format / 8, width, height, GL_TRUE); if (intelBuffer->region == NULL) { diff --git a/src/mesa/drivers/dri/intel/intel_screen.h b/src/mesa/drivers/dri/intel/intel_screen.h index 0f0b5be56dc..4613c9858c4 100644 --- a/src/mesa/drivers/dri/intel/intel_screen.h +++ b/src/mesa/drivers/dri/intel/intel_screen.h @@ -37,6 +37,7 @@ struct intel_screen { int deviceID; + int gen; int logTextureGranularity; diff --git a/src/mesa/drivers/dri/intel/intel_tex_validate.c b/src/mesa/drivers/dri/intel/intel_tex_validate.c index 5e705c93619..27f2646ebf5 100644 --- a/src/mesa/drivers/dri/intel/intel_tex_validate.c +++ b/src/mesa/drivers/dri/intel/intel_tex_validate.c @@ -1,5 +1,6 @@ #include "main/mtypes.h" #include "main/macros.h" +#include "main/samplerobj.h" #include "intel_context.h" #include "intel_mipmap_tree.h" @@ -14,11 +15,13 @@ */ static void intel_update_max_level(struct intel_context *intel, - struct intel_texture_object *intelObj) + struct intel_texture_object *intelObj, + struct gl_sampler_object *sampler) { struct gl_texture_object *tObj = &intelObj->base; - if (tObj->Sampler.MinFilter == GL_NEAREST || tObj->Sampler.MinFilter == GL_LINEAR) { + if (sampler->MinFilter == GL_NEAREST || + sampler->MinFilter == GL_LINEAR) { intelObj->_MaxLevel = tObj->BaseLevel; } else { intelObj->_MaxLevel = tObj->_MaxLevel; @@ -70,8 +73,10 @@ copy_image_data_to_tree(struct intel_context *intel, GLuint intel_finalize_mipmap_tree(struct intel_context *intel, GLuint unit) { + struct gl_context *ctx = &intel->ctx; struct gl_texture_object *tObj = intel->ctx.Texture.Unit[unit]._Current; struct intel_texture_object *intelObj = intel_texture_object(tObj); + struct gl_sampler_object *sampler = _mesa_get_samplerobj(ctx, unit); int comp_byte = 0; int cpp; GLuint face, i; @@ -84,7 +89,7 @@ intel_finalize_mipmap_tree(struct intel_context *intel, GLuint unit) /* What levels must the tree include at a minimum? */ - intel_update_max_level(intel, intelObj); + intel_update_max_level(intel, intelObj, sampler); firstImage = intel_texture_image(tObj->Image[0][tObj->BaseLevel]); /* Fallback case: diff --git a/src/mesa/drivers/dri/r300/compiler/Makefile b/src/mesa/drivers/dri/r300/compiler/Makefile index 51b896ae91f..5c9f57b4eac 100644 --- a/src/mesa/drivers/dri/r300/compiler/Makefile +++ b/src/mesa/drivers/dri/r300/compiler/Makefile @@ -20,12 +20,15 @@ C_SOURCES = \ radeon_pair_translate.c \ radeon_pair_schedule.c \ radeon_pair_regalloc.c \ + radeon_pair_dead_sources.c \ radeon_dataflow.c \ radeon_dataflow_deadcode.c \ radeon_dataflow_swizzles.c \ + radeon_list.c \ radeon_optimize.c \ radeon_remove_constants.c \ radeon_rename_regs.c \ + radeon_variable.c \ r3xx_fragprog.c \ r300_fragprog.c \ r300_fragprog_swizzle.c \ @@ -48,6 +51,7 @@ INCLUDES = \ -I. \ -I$(TOP)/include \ -I$(TOP)/src/mesa \ + -I$(TOP)/src/glsl \ ##### TARGETS ##### diff --git a/src/mesa/drivers/dri/r300/compiler/SConscript b/src/mesa/drivers/dri/r300/compiler/SConscript index 2b4bce1c08c..9931537492e 100755 --- a/src/mesa/drivers/dri/r300/compiler/SConscript +++ b/src/mesa/drivers/dri/r300/compiler/SConscript @@ -3,6 +3,7 @@ Import('*') env = env.Clone() env.Append(CPPPATH = '#/include') env.Append(CPPPATH = '#/src/mesa') +env.Append(CPPPATH = '#/src/glsl') # temporary fix env['CFLAGS'] = str(env['CFLAGS']).replace('-Werror=declaration-after-statement', '') @@ -22,6 +23,7 @@ r300compiler = env.ConvenienceLibrary( 'radeon_pair_translate.c', 'radeon_pair_schedule.c', 'radeon_pair_regalloc.c', + 'radeon_pair_dead_sources.c', 'radeon_optimize.c', 'radeon_remove_constants.c', 'radeon_rename_regs.c', @@ -30,6 +32,8 @@ r300compiler = env.ConvenienceLibrary( 'radeon_dataflow.c', 'radeon_dataflow_deadcode.c', 'radeon_dataflow_swizzles.c', + 'radeon_variable.c', + 'radeon_list.c', 'r3xx_fragprog.c', 'r300_fragprog.c', 'r300_fragprog_swizzle.c', 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 8b73409136f..e6fd1fde62d 100644 --- a/src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c +++ b/src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c @@ -93,7 +93,7 @@ static unsigned int use_source(struct r300_fragment_program_code* code, struct r if (src.File == RC_FILE_CONSTANT) { return src.Index | (1 << 5); - } else if (src.File == RC_FILE_TEMPORARY) { + } else if (src.File == RC_FILE_TEMPORARY || src.File == RC_FILE_INPUT) { use_temporary(code, src.Index); return src.Index & 0x1f; } diff --git a/src/mesa/drivers/dri/r300/compiler/r300_fragprog_swizzle.c b/src/mesa/drivers/dri/r300/compiler/r300_fragprog_swizzle.c index 5223aaa71a4..b7bca8c0cfa 100644 --- a/src/mesa/drivers/dri/r300/compiler/r300_fragprog_swizzle.c +++ b/src/mesa/drivers/dri/r300/compiler/r300_fragprog_swizzle.c @@ -87,6 +87,18 @@ static const struct swizzle_data* lookup_native_swizzle(unsigned int swizzle) return 0; } +/** + * Determines if the given swizzle is valid for r300/r400. In most situations + * it is better to use r300_swizzle_is_native() which can be accesed via + * struct radeon_compiler *c; c->SwizzleCaps->IsNative(). + */ +int r300_swizzle_is_native_basic(unsigned int swizzle) +{ + if(lookup_native_swizzle(swizzle)) + return 1; + else + return 0; +} /** * Check whether the given instruction supports the swizzle and negate @@ -140,7 +152,6 @@ static void r300_swizzle_split( split->NumPhases = 0; while(mask) { - const struct swizzle_data *best_swizzle = 0; unsigned int best_matchcount = 0; unsigned int best_matchmask = 0; int i, comp; @@ -167,7 +178,6 @@ static void r300_swizzle_split( } } if (matchcount > best_matchcount) { - best_swizzle = sd; best_matchcount = matchcount; best_matchmask = matchmask; if (matchmask == (mask & RC_MASK_XYZ)) diff --git a/src/mesa/drivers/dri/r300/compiler/r300_fragprog_swizzle.h b/src/mesa/drivers/dri/r300/compiler/r300_fragprog_swizzle.h index 118476af132..f2635be140d 100644 --- a/src/mesa/drivers/dri/r300/compiler/r300_fragprog_swizzle.h +++ b/src/mesa/drivers/dri/r300/compiler/r300_fragprog_swizzle.h @@ -34,5 +34,6 @@ extern struct rc_swizzle_caps r300_swizzle_caps; unsigned int r300FPTranslateRGBSwizzle(unsigned int src, unsigned int swizzle); unsigned int r300FPTranslateAlphaSwizzle(unsigned int src, unsigned int swizzle); +int r300_swizzle_is_native_basic(unsigned int swizzle); #endif /* __R300_FRAGPROG_SWIZZLE_H_ */ diff --git a/src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c b/src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c index 9286733635f..e2441e97d87 100644 --- a/src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c +++ b/src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c @@ -148,8 +148,8 @@ void r3xx_compile_fragment_program(struct r300_fragment_program_compiler* c) {"register rename", 1, !is_r500, rc_rename_regs, NULL}, {"pair translate", 1, 1, rc_pair_translate, NULL}, {"pair scheduling", 1, 1, rc_pair_schedule, NULL}, - {"register allocation", 1, opt, rc_pair_regalloc, NULL}, - {"dumb register allocation", 1, !opt, rc_pair_regalloc_inputs_only, NULL}, + {"dead sources", 1, 1, rc_pair_remove_dead_sources, NULL}, + {"register allocation", 1, 1, rc_pair_regalloc, &opt}, {"final code validation", 0, 1, rc_validate_final_shader, NULL}, {"machine code generation", 0, is_r500, r500BuildFragmentProgramHwCode, NULL}, {"machine code generation", 0, !is_r500, r300BuildFragmentProgramHwCode, NULL}, diff --git a/src/mesa/drivers/dri/r300/compiler/r500_fragprog.c b/src/mesa/drivers/dri/r300/compiler/r500_fragprog.c index 140eeed3de3..5e0be6b8881 100644 --- a/src/mesa/drivers/dri/r300/compiler/r500_fragprog.c +++ b/src/mesa/drivers/dri/r300/compiler/r500_fragprog.c @@ -70,6 +70,8 @@ static int r500_swizzle_is_native(rc_opcode opcode, struct rc_src_register reg) if (opcode == RC_OPCODE_TEX || opcode == RC_OPCODE_TXB || opcode == RC_OPCODE_TXP || + opcode == RC_OPCODE_TXD || + opcode == RC_OPCODE_TXL || opcode == RC_OPCODE_KIL) { if (reg.Abs) return 0; 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 c7f79bc53c7..c30cd753d15 100644 --- a/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c +++ b/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c @@ -207,7 +207,7 @@ static unsigned int use_source(struct r500_fragment_program_code* code, struct r if (src.File == RC_FILE_CONSTANT) { return src.Index | R500_RGB_ADDR0_CONST; - } else if (src.File == RC_FILE_TEMPORARY) { + } else if (src.File == RC_FILE_TEMPORARY || src.File == RC_FILE_INPUT) { use_temporary(code, src.Index); return src.Index; } @@ -396,6 +396,12 @@ static int emit_tex(struct r300_fragment_program_compiler *c, struct rc_sub_inst case RC_OPCODE_TXP: code->inst[ip].inst1 |= R500_TEX_INST_PROJ; break; + case RC_OPCODE_TXD: + code->inst[ip].inst1 |= R500_TEX_INST_DXDY; + break; + case RC_OPCODE_TXL: + code->inst[ip].inst1 |= R500_TEX_INST_LOD; + break; default: error("emit_tex can't handle opcode %s\n", rc_get_opcode_info(inst->Opcode)->Name); } @@ -407,8 +413,23 @@ static int emit_tex(struct r300_fragment_program_compiler *c, struct rc_sub_inst code->inst[ip].inst2 = R500_TEX_SRC_ADDR(inst->SrcReg[0].Index) | (translate_strq_swizzle(inst->SrcReg[0].Swizzle) << 8) | R500_TEX_DST_ADDR(inst->DstReg.Index) - | R500_TEX_DST_R_SWIZ_R | R500_TEX_DST_G_SWIZ_G - | R500_TEX_DST_B_SWIZ_B | R500_TEX_DST_A_SWIZ_A; + | (GET_SWZ(inst->TexSwizzle, 0) << 24) + | (GET_SWZ(inst->TexSwizzle, 1) << 26) + | (GET_SWZ(inst->TexSwizzle, 2) << 28) + | (GET_SWZ(inst->TexSwizzle, 3) << 30) + ; + + if (inst->Opcode == RC_OPCODE_TXD) { + use_temporary(code, inst->SrcReg[1].Index); + use_temporary(code, inst->SrcReg[2].Index); + + /* DX and DY parameters are specified in a separate register. */ + code->inst[ip].inst3 = + R500_DX_ADDR(inst->SrcReg[1].Index) | + (translate_strq_swizzle(inst->SrcReg[1].Swizzle) << 8) | + R500_DY_ADDR(inst->SrcReg[2].Index) | + (translate_strq_swizzle(inst->SrcReg[2].Swizzle) << 24); + } return 1; } diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.c b/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.c index 15ec4418cb8..b077e7b7d65 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.c @@ -124,6 +124,165 @@ unsigned swizzle_mask(unsigned swizzle, unsigned mask) return ret; } +static unsigned int srcs_need_rewrite(const struct rc_opcode_info * info) +{ + if (info->HasTexture) { + return 0; + } + switch (info->Opcode) { + case RC_OPCODE_DP2: + case RC_OPCODE_DP3: + case RC_OPCODE_DP4: + case RC_OPCODE_DDX: + case RC_OPCODE_DDY: + return 0; + default: + return 1; + } +} + +/** + * @return A swizzle the results from converting old_swizzle using + * conversion_swizzle + */ +unsigned int rc_adjust_channels( + unsigned int old_swizzle, + unsigned int conversion_swizzle) +{ + unsigned int i; + unsigned int new_swizzle = rc_init_swizzle(RC_SWIZZLE_UNUSED, 0); + for (i = 0; i < 4; i++) { + unsigned int new_chan = get_swz(conversion_swizzle, i); + if (new_chan == RC_SWIZZLE_UNUSED) { + continue; + } + SET_SWZ(new_swizzle, new_chan, GET_SWZ(old_swizzle, i)); + } + return new_swizzle; +} + +static unsigned int rewrite_writemask( + unsigned int old_mask, + unsigned int conversion_swizzle) +{ + unsigned int new_mask = 0; + unsigned int i; + + for (i = 0; i < 4; i++) { + if (!GET_BIT(old_mask, i) + || GET_SWZ(conversion_swizzle, i) == RC_SWIZZLE_UNUSED) { + continue; + } + new_mask |= (1 << GET_SWZ(conversion_swizzle, i)); + } + + return new_mask; +} + +/** + * This function rewrites the writemask of sub and adjusts the swizzles + * of all its source registers based on the conversion_swizzle. + * conversion_swizzle represents a mapping of the old writemask to the + * new writemask. For a detailed description of how conversion swizzles + * work see rc_rewrite_swizzle(). + */ +void rc_pair_rewrite_writemask( + struct rc_pair_sub_instruction * sub, + unsigned int conversion_swizzle) +{ + const struct rc_opcode_info * info = rc_get_opcode_info(sub->Opcode); + unsigned int i; + + sub->WriteMask = rewrite_writemask(sub->WriteMask, conversion_swizzle); + + if (!srcs_need_rewrite(info)) { + return ; + } + + for (i = 0; i < info->NumSrcRegs; i++) { + sub->Arg[i].Swizzle = + rc_adjust_channels(sub->Arg[i].Swizzle, + conversion_swizzle); + } +} + +static void normal_rewrite_writemask_cb( + void * userdata, + struct rc_instruction * inst, + struct rc_src_register * src) +{ + unsigned int * new_mask = (unsigned int *)userdata; + src->Swizzle = rc_adjust_channels(src->Swizzle, *new_mask); +} + +/** + * This function is the same as rc_pair_rewrite_writemask() except it + * operates on normal instructions. + */ +void rc_normal_rewrite_writemask( + struct rc_instruction * inst, + unsigned int conversion_swizzle) +{ + unsigned int new_mask; + struct rc_sub_instruction * sub = &inst->U.I; + const struct rc_opcode_info * info = rc_get_opcode_info(sub->Opcode); + sub->DstReg.WriteMask = + rewrite_writemask(sub->DstReg.WriteMask, conversion_swizzle); + + if (info->HasTexture) { + unsigned int i; + assert(sub->TexSwizzle == RC_SWIZZLE_XYZW); + for (i = 0; i < 4; i++) { + unsigned int swz = GET_SWZ(conversion_swizzle, i); + if (swz > 3) + continue; + SET_SWZ(sub->TexSwizzle, swz, i); + } + } + + if (!srcs_need_rewrite(info)) { + return; + } + + new_mask = sub->DstReg.WriteMask; + rc_for_all_reads_src(inst, normal_rewrite_writemask_cb, &new_mask); +} + +/** + * This function replaces each value 'swz' in swizzle with the value of + * GET_SWZ(conversion_swizzle, swz). So, if you want to change all the X's + * in swizzle to Y, then conversion_swizzle should be Y___ (0xff9). If you want + * to change all the Y's in swizzle to X, then conversion_swizzle should be + * _X__ (0xfc7). If you want to change the Y's to X and the X's to Y, then + * conversion swizzle should be YX__ (0xfc1). + * @param swizzle The swizzle to change + * @param conversion_swizzle Describes the conversion to perform on the swizzle + * @return A converted swizzle + */ +unsigned int rc_rewrite_swizzle( + unsigned int swizzle, + unsigned int conversion_swizzle) +{ + unsigned int chan; + unsigned int out_swizzle = swizzle; + + for (chan = 0; chan < 4; chan++) { + unsigned int swz = GET_SWZ(swizzle, chan); + unsigned int new_swz; + if (swz > 3) { + SET_SWZ(out_swizzle, chan, swz); + } else { + new_swz = GET_SWZ(conversion_swizzle, swz); + if (new_swz != RC_SWIZZLE_UNUSED) { + SET_SWZ(out_swizzle, chan, new_swz); + } else { + SET_SWZ(out_swizzle, chan, swz); + } + } + } + return out_swizzle; +} + /** * Left multiplication of a register with a swizzle */ @@ -281,3 +440,197 @@ unsigned int rc_inst_can_use_presub( return 1; } +struct max_data { + unsigned int Max; + unsigned int HasFileType; + rc_register_file File; +}; + +static void max_callback( + void * userdata, + struct rc_instruction * inst, + rc_register_file file, + unsigned int index, + unsigned int mask) +{ + struct max_data * d = (struct max_data*)userdata; + if (file == d->File && (!d->HasFileType || index > d->Max)) { + d->Max = index; + d->HasFileType = 1; + } +} + +/** + * @return The maximum index of the specified register file used by the + * program. + */ +int rc_get_max_index( + struct radeon_compiler * c, + rc_register_file file) +{ + struct max_data data; + data.Max = 0; + data.HasFileType = 0; + data.File = file; + struct rc_instruction * inst; + for (inst = c->Program.Instructions.Next; + inst != &c->Program.Instructions; + inst = inst->Next) { + rc_for_all_reads_mask(inst, max_callback, &data); + rc_for_all_writes_mask(inst, max_callback, &data); + } + if (!data.HasFileType) { + return -1; + } else { + return data.Max; + } +} + +static unsigned int get_source_readmask( + struct rc_pair_sub_instruction * sub, + unsigned int source, + unsigned int src_type) +{ + unsigned int i; + unsigned int readmask = 0; + const struct rc_opcode_info * info = rc_get_opcode_info(sub->Opcode); + + for (i = 0; i < info->NumSrcRegs; i++) { + if (sub->Arg[i].Source != source + || src_type != rc_source_type_swz(sub->Arg[i].Swizzle)) { + continue; + } + readmask |= rc_swizzle_to_writemask(sub->Arg[i].Swizzle); + } + return readmask; +} + +/** + * This function attempts to remove a source from a pair instructions. + * @param inst + * @param src_type RC_SOURCE_RGB, RC_SOURCE_ALPHA, or both bitwise or'd + * @param source The index of the source to remove + * @param new_readmask A mask representing the components that are read by + * the source that is intended to replace the one you are removing. If you + * want to remove a source only and not replace it, this parameter should be + * zero. + * @return 1 if the source was successfully removed, 0 if it was not + */ +unsigned int rc_pair_remove_src( + struct rc_instruction * inst, + unsigned int src_type, + unsigned int source, + unsigned int new_readmask) +{ + unsigned int readmask = 0; + + readmask |= get_source_readmask(&inst->U.P.RGB, source, src_type); + readmask |= get_source_readmask(&inst->U.P.Alpha, source, src_type); + + if ((new_readmask & readmask) != readmask) + return 0; + + if (src_type & RC_SOURCE_RGB) { + memset(&inst->U.P.RGB.Src[source], 0, + sizeof(struct rc_pair_instruction_source)); + } + + if (src_type & RC_SOURCE_ALPHA) { + memset(&inst->U.P.Alpha.Src[source], 0, + sizeof(struct rc_pair_instruction_source)); + } + + return 1; +} + +/** + * @return RC_OPCODE_NOOP if inst is not a flow control instruction. + * @return The opcode of inst if it is a flow control instruction. + */ +rc_opcode rc_get_flow_control_inst(struct rc_instruction * inst) +{ + const struct rc_opcode_info * info; + if (inst->Type == RC_INSTRUCTION_NORMAL) { + info = rc_get_opcode_info(inst->U.I.Opcode); + } else { + info = rc_get_opcode_info(inst->U.P.RGB.Opcode); + /*A flow control instruction shouldn't have an alpha + * instruction.*/ + assert(!info->IsFlowControl || + inst->U.P.Alpha.Opcode == RC_OPCODE_NOP); + } + + if (info->IsFlowControl) + return info->Opcode; + else + return RC_OPCODE_NOP; + +} + +/** + * @return The BGNLOOP instruction that starts the loop ended by endloop. + */ +struct rc_instruction * rc_match_endloop(struct rc_instruction * endloop) +{ + unsigned int endloop_count = 0; + struct rc_instruction * inst; + for (inst = endloop->Prev; inst != endloop; inst = inst->Prev) { + rc_opcode op = rc_get_flow_control_inst(inst); + if (op == RC_OPCODE_ENDLOOP) { + endloop_count++; + } else if (op == RC_OPCODE_BGNLOOP) { + if (endloop_count == 0) { + return inst; + } else { + endloop_count--; + } + } + } + return NULL; +} + +/** + * @return The ENDLOOP instruction that ends the loop started by bgnloop. + */ +struct rc_instruction * rc_match_bgnloop(struct rc_instruction * bgnloop) +{ + unsigned int bgnloop_count = 0; + struct rc_instruction * inst; + for (inst = bgnloop->Next; inst!=bgnloop; inst = inst->Next) { + rc_opcode op = rc_get_flow_control_inst(inst); + if (op == RC_OPCODE_BGNLOOP) { + bgnloop_count++; + } else if (op == RC_OPCODE_ENDLOOP) { + if (bgnloop_count == 0) { + return inst; + } else { + bgnloop_count--; + } + } + } + return NULL; +} + +/** + * @return A conversion swizzle for converting from old_mask->new_mask + */ +unsigned int rc_make_conversion_swizzle( + unsigned int old_mask, + unsigned int new_mask) +{ + unsigned int conversion_swizzle = rc_init_swizzle(RC_SWIZZLE_UNUSED, 0); + unsigned int old_idx; + unsigned int new_idx = 0; + for (old_idx = 0; old_idx < 4; old_idx++) { + if (!GET_BIT(old_mask, old_idx)) + continue; + for ( ; new_idx < 4; new_idx++) { + if (GET_BIT(new_mask, new_idx)) { + SET_SWZ(conversion_swizzle, old_idx, new_idx); + new_idx++; + break; + } + } + } + return conversion_swizzle; +} diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.h b/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.h index dd0f6c66156..2af289dfabd 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.h @@ -3,7 +3,12 @@ #ifndef RADEON_PROGRAM_UTIL_H #define RADEON_PROGRAM_UTIL_H +#include "radeon_opcodes.h" + +struct radeon_compiler; struct rc_instruction; +struct rc_pair_instruction; +struct rc_pair_sub_instruction; struct rc_src_register; unsigned int rc_swizzle_to_writemask(unsigned int swz); @@ -22,6 +27,22 @@ rc_swizzle rc_mask_to_swizzle(unsigned int mask); unsigned swizzle_mask(unsigned swizzle, unsigned mask); +unsigned int rc_adjust_channels( + unsigned int old_swizzle, + unsigned int conversion_swizzle); + +void rc_pair_rewrite_writemask( + struct rc_pair_sub_instruction * sub, + unsigned int conversion_swizzle); + +void rc_normal_rewrite_writemask( + struct rc_instruction * inst, + unsigned int conversion_swizzle); + +unsigned int rc_rewrite_swizzle( + unsigned int swizzle, + unsigned int new_mask); + struct rc_src_register lmul_swizzle(unsigned int swizzle, struct rc_src_register srcreg); void reset_srcreg(struct rc_src_register* reg); @@ -46,4 +67,23 @@ unsigned int rc_inst_can_use_presub( struct rc_src_register presub_src0, struct rc_src_register presub_src1); +int rc_get_max_index( + struct radeon_compiler * c, + rc_register_file file); + +unsigned int rc_pair_remove_src( + struct rc_instruction * inst, + unsigned int src_type, + unsigned int source, + unsigned int new_readmask); + +rc_opcode rc_get_flow_control_inst(struct rc_instruction * inst); + +struct rc_instruction * rc_match_endloop(struct rc_instruction * endloop); +struct rc_instruction * rc_match_bgnloop(struct rc_instruction * bgnloop); + +unsigned int rc_make_conversion_swizzle( + unsigned int old_mask, + unsigned int new_mask); + #endif /* RADEON_PROGRAM_UTIL_H */ diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c index d1a7eab50f7..b0deb751be0 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c @@ -151,6 +151,7 @@ static void pair_sub_for_all_args( unsigned int presub_src_count; struct rc_pair_instruction_source * src_array; unsigned int j; + if (src_type & RC_SOURCE_RGB) { presub_type = fullinst-> U.P.RGB.Src[RC_PAIR_PRESUB_SRC].Index; @@ -446,30 +447,6 @@ void rc_remap_registers(struct rc_instruction * inst, rc_remap_register_fn cb, v remap_pair_instruction(inst, cb, userdata); } -/** - * @return RC_OPCODE_NOOP if inst is not a flow control instruction. - * @return The opcode of inst if it is a flow control instruction. - */ -static rc_opcode get_flow_control_inst(struct rc_instruction * inst) -{ - const struct rc_opcode_info * info; - if (inst->Type == RC_INSTRUCTION_NORMAL) { - info = rc_get_opcode_info(inst->U.I.Opcode); - } else { - info = rc_get_opcode_info(inst->U.P.RGB.Opcode); - /*A flow control instruction shouldn't have an alpha - * instruction.*/ - assert(!info->IsFlowControl || - inst->U.P.Alpha.Opcode == RC_OPCODE_NOP); - } - - if (info->IsFlowControl) - return info->Opcode; - else - return RC_OPCODE_NOP; - -} - struct branch_write_mask { unsigned int IfWriteMask:4; unsigned int ElseWriteMask:4; @@ -495,12 +472,11 @@ struct get_readers_callback_data { struct branch_write_mask BranchMasks[R500_PFS_MAX_BRANCH_DEPTH_FULL + 1]; }; -static void add_reader( +static struct rc_reader * add_reader( struct memory_pool * pool, struct rc_reader_data * data, struct rc_instruction * inst, - unsigned int mask, - void * arg_or_src) + unsigned int mask) { struct rc_reader * new; memory_pool_array_reserve(pool, struct rc_reader, data->Readers, @@ -508,11 +484,32 @@ static void add_reader( new = &data->Readers[data->ReaderCount++]; new->Inst = inst; new->WriteMask = mask; - if (inst->Type == RC_INSTRUCTION_NORMAL) { - new->U.Src = arg_or_src; - } else { - new->U.Arg = arg_or_src; - } + return new; +} + +static void add_reader_normal( + struct memory_pool * pool, + struct rc_reader_data * data, + struct rc_instruction * inst, + unsigned int mask, + struct rc_src_register * src) +{ + struct rc_reader * new = add_reader(pool, data, inst, mask); + new->U.I.Src = src; +} + + +static void add_reader_pair( + struct memory_pool * pool, + struct rc_reader_data * data, + struct rc_instruction * inst, + unsigned int mask, + struct rc_pair_instruction_arg * arg, + struct rc_pair_instruction_source * src) +{ + struct rc_reader * new = add_reader(pool, data, inst, mask); + new->U.P.Src = src; + new->U.P.Arg = arg; } static unsigned int get_readers_read_callback( @@ -544,6 +541,11 @@ static unsigned int get_readers_read_callback( return shared_mask; } + if (cb_data->ReaderData->LoopDepth > 0) { + cb_data->ReaderData->AbortOnWrite |= + (read_mask & cb_data->AliveWriteMask); + } + /* XXX The behavior in this case should be configurable. */ if ((read_mask & cb_data->AliveWriteMask) != read_mask) { cb_data->ReaderData->Abort = 1; @@ -572,10 +574,10 @@ static void get_readers_pair_read_callback( if (d->ReadPairCB) d->ReadPairCB(d->ReaderData, inst, arg, src); - if (d->ReaderData->Abort) + if (d->ReaderData->ExitOnAbort && d->ReaderData->Abort) return; - add_reader(&d->C->Pool, d->ReaderData, inst, shared_mask, arg); + add_reader_pair(&d->C->Pool, d->ReaderData, inst, shared_mask, arg, src); } /** @@ -600,10 +602,10 @@ static void get_readers_normal_read_callback( if (d->ReadNormalCB) d->ReadNormalCB(d->ReaderData, inst, src); - if (d->ReaderData->Abort) + if (d->ReaderData->ExitOnAbort && d->ReaderData->Abort) return; - add_reader(&d->C->Pool, d->ReaderData, inst, shared_mask, src); + add_reader_normal(&d->C->Pool, d->ReaderData, inst, shared_mask, src); } /** @@ -624,12 +626,57 @@ static void get_readers_write_callback( unsigned int shared_mask = mask & d->DstMask; d->ReaderData->AbortOnRead &= ~shared_mask; d->AliveWriteMask &= ~shared_mask; + if (d->ReaderData->AbortOnWrite & shared_mask) { + d->ReaderData->Abort = 1; + } } if(d->WriteCB) d->WriteCB(d->ReaderData, inst, file, index, mask); } +static void push_branch_mask( + struct get_readers_callback_data * d, + unsigned int * branch_depth) +{ + (*branch_depth)++; + if (*branch_depth > R500_PFS_MAX_BRANCH_DEPTH_FULL) { + d->ReaderData->Abort = 1; + return; + } + d->BranchMasks[*branch_depth].IfWriteMask = + d->AliveWriteMask; +} + +static void pop_branch_mask( + struct get_readers_callback_data * d, + unsigned int * branch_depth) +{ + struct branch_write_mask * masks = &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) + & (masks->IfWriteMask ^ d->AliveWriteMask)); + } else { + d->ReaderData->AbortOnRead |= + masks->IfWriteMask & ~d->AliveWriteMask; + d->AliveWriteMask = masks->IfWriteMask; + + } + memset(masks, 0, sizeof(struct branch_write_mask)); + (*branch_depth)--; +} + static void get_readers_for_single_write( void * userdata, struct rc_instruction * writer, @@ -639,10 +686,14 @@ static void get_readers_for_single_write( { struct rc_instruction * tmp; unsigned int branch_depth = 0; + struct rc_instruction * endloop = NULL; + unsigned int abort_on_read_at_endloop; struct get_readers_callback_data * d = userdata; d->ReaderData->Writer = writer; d->ReaderData->AbortOnRead = 0; + d->ReaderData->AbortOnWrite = 0; + d->ReaderData->LoopDepth = 0; d->ReaderData->InElse = 0; d->DstFile = dst_file; d->DstIndex = dst_index; @@ -655,32 +706,43 @@ static void get_readers_for_single_write( for(tmp = writer->Next; tmp != &d->C->Program.Instructions; tmp = tmp->Next){ - rc_opcode opcode = get_flow_control_inst(tmp); + rc_opcode opcode = rc_get_flow_control_inst(tmp); switch(opcode) { case RC_OPCODE_BGNLOOP: - /* XXX We can do better when we see a BGNLOOP if we - * add a flag called AbortOnWrite to struct - * rc_reader_data and leave it set until the next - * ENDLOOP. */ + d->ReaderData->LoopDepth++; + push_branch_mask(d, &branch_depth); + break; case RC_OPCODE_ENDLOOP: - /* XXX We can do better when we see an ENDLOOP by - * searching backwards from writer and looking for - * readers of writer's destination index. If we find a - * reader before we get to the BGNLOOP, we must abort - * unless there is another writer between that reader - * and the BGNLOOP. */ - case RC_OPCODE_BRK: - case RC_OPCODE_CONT: - d->ReaderData->Abort = 1; - return; - case RC_OPCODE_IF: - branch_depth++; - if (branch_depth > R500_PFS_MAX_BRANCH_DEPTH_FULL) { - d->ReaderData->Abort = 1; - return; + if (d->ReaderData->LoopDepth > 0) { + d->ReaderData->LoopDepth--; + if (d->ReaderData->LoopDepth == 0) { + d->ReaderData->AbortOnWrite = 0; + } + pop_branch_mask(d, &branch_depth); + } else { + /* Here we have reached an ENDLOOP without + * seeing its BGNLOOP. These means that + * the writer was written inside of a loop, + * so it could have readers that are above it + * (i.e. they have a lower IP). To find these + * readers we jump to the BGNLOOP instruction + * and check each instruction until we get + * back to the writer. + */ + endloop = tmp; + tmp = rc_match_endloop(tmp); + if (!tmp) { + rc_error(d->C, "Failed to match endloop.\n"); + d->ReaderData->Abort = 1; + return; + } + abort_on_read_at_endloop = d->ReaderData->AbortOnRead; + d->ReaderData->AbortOnRead |= d->AliveWriteMask; + continue; } - d->BranchMasks[branch_depth].IfWriteMask = - d->AliveWriteMask; + break; + case RC_OPCODE_IF: + push_branch_mask(d, &branch_depth); break; case RC_OPCODE_ELSE: if (branch_depth == 0) { @@ -700,35 +762,7 @@ static void get_readers_for_single_write( d->ReaderData->InElse = 0; } else { - struct branch_write_mask * masks = - &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) - & (masks->IfWriteMask - ^ d->AliveWriteMask)); - } else { - d->ReaderData->AbortOnRead |= - masks->IfWriteMask - & ~d->AliveWriteMask; - d->AliveWriteMask = masks->IfWriteMask; - - } - memset(masks, 0, - sizeof(struct branch_write_mask)); - branch_depth--; + pop_branch_mask(d, &branch_depth); } break; default: @@ -745,9 +779,17 @@ static void get_readers_for_single_write( rc_pair_for_all_reads_arg(tmp, get_readers_pair_read_callback, d); } + + /* This can happen when we jump from an ENDLOOP to BGNLOOP */ + if (tmp == writer) { + tmp = endloop; + endloop = NULL; + d->ReaderData->AbortOnRead = abort_on_read_at_endloop; + continue; + } rc_for_all_writes_mask(tmp, get_readers_write_callback, d); - if (d->ReaderData->Abort) + if (d->ReaderData->ExitOnAbort && d->ReaderData->Abort) return; if (branch_depth == 0 && !d->AliveWriteMask) @@ -755,6 +797,26 @@ static void get_readers_for_single_write( } } +static void init_get_readers_callback_data( + struct get_readers_callback_data * d, + struct rc_reader_data * reader_data, + struct radeon_compiler * c, + rc_read_src_fn read_normal_cb, + rc_pair_read_arg_fn read_pair_cb, + rc_read_write_mask_fn write_cb) +{ + reader_data->Abort = 0; + reader_data->ReaderCount = 0; + reader_data->ReadersReserved = 0; + reader_data->Readers = NULL; + + d->C = c; + d->ReaderData = reader_data; + d->ReadNormalCB = read_normal_cb; + d->ReadPairCB = read_pair_cb; + d->WriteCB = write_cb; +} + /** * This function will create a list of readers via the rc_reader_data struct. * This function will abort (set the flag data->Abort) and return if it @@ -803,16 +865,28 @@ void rc_get_readers( { struct get_readers_callback_data d; - data->Abort = 0; - data->ReaderCount = 0; - data->ReadersReserved = 0; - data->Readers = NULL; - - d.C = c; - d.ReaderData = data; - d.ReadNormalCB = read_normal_cb; - d.ReadPairCB = read_pair_cb; - d.WriteCB = write_cb; + init_get_readers_callback_data(&d, data, c, read_normal_cb, + read_pair_cb, write_cb); rc_for_all_writes_mask(writer, get_readers_for_single_write, &d); } + +void rc_get_readers_sub( + struct radeon_compiler * c, + struct rc_instruction * writer, + struct rc_pair_sub_instruction * sub_writer, + struct rc_reader_data * data, + rc_read_src_fn read_normal_cb, + rc_pair_read_arg_fn read_pair_cb, + rc_read_write_mask_fn write_cb) +{ + struct get_readers_callback_data d; + + init_get_readers_callback_data(&d, data, c, read_normal_cb, + read_pair_cb, write_cb); + + if (sub_writer->WriteMask) { + get_readers_for_single_write(&d, writer, RC_FILE_TEMPORARY, + sub_writer->DestIndex, sub_writer->WriteMask); + } +} diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h index ef971c5b234..d8a627258ea 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h @@ -37,6 +37,7 @@ struct rc_swizzle_caps; struct rc_src_register; struct rc_pair_instruction_arg; struct rc_pair_instruction_source; +struct rc_pair_sub_instruction; struct rc_compiler; @@ -74,14 +75,21 @@ struct rc_reader { struct rc_instruction * Inst; unsigned int WriteMask; union { - struct rc_src_register * Src; - struct rc_pair_instruction_arg * Arg; + struct { + struct rc_src_register * Src; + } I; + struct { + struct rc_pair_instruction_arg * Arg; + struct rc_pair_instruction_source * Src; + } P; } U; }; struct rc_reader_data { unsigned int Abort; unsigned int AbortOnRead; + unsigned int AbortOnWrite; + unsigned int LoopDepth; unsigned int InElse; struct rc_instruction * Writer; @@ -89,6 +97,9 @@ struct rc_reader_data { unsigned int ReadersReserved; struct rc_reader * Readers; + /* If this flag is enabled, rc_get_readers will exit as soon possbile + * after the Abort flag is set.*/ + unsigned int ExitOnAbort; void * CbData; }; @@ -99,6 +110,15 @@ void rc_get_readers( rc_read_src_fn read_normal_cb, rc_pair_read_arg_fn read_pair_cb, rc_read_write_mask_fn write_cb); + +void rc_get_readers_sub( + struct radeon_compiler * c, + struct rc_instruction * writer, + struct rc_pair_sub_instruction * sub_writer, + struct rc_reader_data * data, + rc_read_src_fn read_normal_cb, + rc_pair_read_arg_fn read_pair_cb, + rc_read_write_mask_fn write_cb); /** * Compiler passes based on dataflow analysis. */ diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_list.c b/src/mesa/drivers/dri/r300/compiler/radeon_list.c new file mode 100644 index 00000000000..811c908a81a --- /dev/null +++ b/src/mesa/drivers/dri/r300/compiler/radeon_list.c @@ -0,0 +1,90 @@ +/* + * Copyright 2011 Tom Stellard <[email protected]> + * + * 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 (including the + * next paragraph) shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS 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. + * + */ + +#include "radeon_list.h" + +#include <stdlib.h> +#include <stdio.h> + +#include "memory_pool.h" + +struct rc_list * rc_list(struct memory_pool * pool, void * item) +{ + struct rc_list * new = memory_pool_malloc(pool, sizeof(struct rc_list)); + new->Item = item; + new->Next = NULL; + new->Prev = NULL; + + return new; +} + +void rc_list_add(struct rc_list ** list, struct rc_list * new_value) +{ + struct rc_list * temp; + + if (*list == NULL) { + *list = new_value; + return; + } + + for (temp = *list; temp->Next; temp = temp->Next); + + temp->Next = new_value; + new_value->Prev = temp; +} + +void rc_list_remove(struct rc_list ** list, struct rc_list * rm_value) +{ + if (*list == rm_value) { + *list = rm_value->Next; + return; + } + + rm_value->Prev->Next = rm_value->Next; + if (rm_value->Next) { + rm_value->Next->Prev = rm_value->Prev; + } +} + +unsigned int rc_list_count(struct rc_list * list) +{ + unsigned int count = 0; + while (list) { + count++; + list = list->Next; + } + return count; +} + +void rc_list_print(struct rc_list * list) +{ + while(list) { + fprintf(stderr, "%p->", list->Item); + list = list->Next; + } + fprintf(stderr, "\n"); +} diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_list.h b/src/mesa/drivers/dri/r300/compiler/radeon_list.h new file mode 100644 index 00000000000..b3c8f89cc68 --- /dev/null +++ b/src/mesa/drivers/dri/r300/compiler/radeon_list.h @@ -0,0 +1,46 @@ +/* + * Copyright 2011 Tom Stellard <[email protected]> + * + * 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 (including the + * next paragraph) shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS 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. + * + */ + +#ifndef RADEON_LIST_H +#define RADEON_LIST_H + +struct memory_pool; + +struct rc_list { + void * Item; + struct rc_list * Prev; + struct rc_list * Next; +}; + +struct rc_list * rc_list(struct memory_pool * pool, void * item); +void rc_list_add(struct rc_list ** list, struct rc_list * new_value); +void rc_list_remove(struct rc_list ** list, struct rc_list * rm_value); +unsigned int rc_list_count(struct rc_list * list); +void rc_list_print(struct rc_list * list); + +#endif /* RADEON_LIST_H */ + diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c b/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c index e3e498e8fb4..afd78ad79dd 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c @@ -481,6 +481,7 @@ void rc_compute_sources_for_writemask( break; case RC_OPCODE_TXB: case RC_OPCODE_TXP: + case RC_OPCODE_TXL: srcmasks[0] |= RC_MASK_W; /* Fall through */ case RC_OPCODE_TEX: @@ -500,6 +501,33 @@ void rc_compute_sources_for_writemask( break; } break; + case RC_OPCODE_TXD: + switch (inst->U.I.TexSrcTarget) { + case RC_TEXTURE_1D_ARRAY: + srcmasks[0] |= RC_MASK_Y; + /* Fall through. */ + case RC_TEXTURE_1D: + srcmasks[0] |= RC_MASK_X; + srcmasks[1] |= RC_MASK_X; + srcmasks[2] |= RC_MASK_X; + break; + case RC_TEXTURE_2D_ARRAY: + srcmasks[0] |= RC_MASK_Z; + /* Fall through. */ + case RC_TEXTURE_2D: + case RC_TEXTURE_RECT: + srcmasks[0] |= RC_MASK_XY; + srcmasks[1] |= RC_MASK_XY; + srcmasks[2] |= RC_MASK_XY; + break; + case RC_TEXTURE_3D: + case RC_TEXTURE_CUBE: + srcmasks[0] |= RC_MASK_XYZ; + srcmasks[1] |= RC_MASK_XYZ; + srcmasks[2] |= RC_MASK_XYZ; + break; + } + break; case RC_OPCODE_DST: srcmasks[0] |= RC_MASK_Y | RC_MASK_Z; srcmasks[1] |= RC_MASK_Y | RC_MASK_W; diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c b/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c index 79898e1047e..5b4fba80873 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c @@ -91,6 +91,8 @@ static void copy_propagate_scan_read(void * data, struct rc_instruction * inst, (inst->U.I.Opcode == RC_OPCODE_TEX || inst->U.I.Opcode == RC_OPCODE_TXB || inst->U.I.Opcode == RC_OPCODE_TXP || + inst->U.I.Opcode == RC_OPCODE_TXD || + inst->U.I.Opcode == RC_OPCODE_TXL || inst->U.I.Opcode == RC_OPCODE_KIL)){ reader_data->Abort = 1; return; @@ -144,6 +146,7 @@ static void copy_propagate(struct radeon_compiler * c, struct rc_instruction * i return; /* Get a list of all the readers of this MOV instruction. */ + reader_data.ExitOnAbort = 1; rc_get_readers(c, inst_mov, &reader_data, copy_propagate_scan_read, NULL, is_src_clobbered_scan_write); @@ -154,7 +157,7 @@ static void copy_propagate(struct radeon_compiler * c, struct rc_instruction * i /* Propagate the MOV instruction. */ for (i = 0; i < reader_data.ReaderCount; i++) { struct rc_instruction * inst = reader_data.Readers[i].Inst; - *reader_data.Readers[i].U.Src = chain_srcregs(*reader_data.Readers[i].U.Src, inst_mov->U.I.SrcReg[0]); + *reader_data.Readers[i].U.I.Src = chain_srcregs(*reader_data.Readers[i].U.I.Src, inst_mov->U.I.SrcReg[0]); if (inst_mov->U.I.SrcReg[0].File == RC_FILE_PRESUB) inst->U.I.PreSub = inst_mov->U.I.PreSub; @@ -453,6 +456,7 @@ static int presub_helper( rc_presubtract_op cb_op = presub_opcode; reader_data.CbData = &cb_op; + reader_data.ExitOnAbort = 1; rc_get_readers(c, inst_add, &reader_data, presub_scan_read, NULL, is_src_clobbered_scan_write); @@ -466,7 +470,7 @@ static int presub_helper( rc_get_opcode_info(reader.Inst->U.I.Opcode); for (src_index = 0; src_index < info->NumSrcRegs; src_index++) { - if (&reader.Inst->U.I.SrcReg[src_index] == reader.U.Src) + if (&reader.Inst->U.I.SrcReg[src_index] == reader.U.I.Src) presub_replace(inst_add, reader.Inst, src_index); } } @@ -619,13 +623,11 @@ static int peephole_add_presub_inv( struct radeon_compiler * c, struct rc_instruction * inst_add) { - unsigned int i, swz, mask; + unsigned int i, swz; if (!is_presub_candidate(c, inst_add)) return 0; - mask = inst_add->U.I.DstReg.WriteMask; - /* Check if src0 is 1. */ /* XXX It would be nice to use is_src_uniform_constant here, but that * function only works if the register's file is RC_FILE_NONE */ diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_pair_dead_sources.c b/src/mesa/drivers/dri/r300/compiler/radeon_pair_dead_sources.c new file mode 100644 index 00000000000..1e9a2c09d44 --- /dev/null +++ b/src/mesa/drivers/dri/r300/compiler/radeon_pair_dead_sources.c @@ -0,0 +1,62 @@ + +#include "radeon_compiler.h" +#include "radeon_compiler_util.h" +#include "radeon_opcodes.h" +#include "radeon_program_pair.h" + +static void mark_used_presub(struct rc_pair_sub_instruction * sub) +{ + if (sub->Src[RC_PAIR_PRESUB_SRC].Used) { + unsigned int presub_reg_count = rc_presubtract_src_reg_count( + sub->Src[RC_PAIR_PRESUB_SRC].Index); + unsigned int i; + for (i = 0; i < presub_reg_count; i++) { + sub->Src[i].Used = 1; + } + } +} + +static void mark_used( + struct rc_instruction * inst, + struct rc_pair_sub_instruction * sub) +{ + unsigned int i; + const struct rc_opcode_info * info = rc_get_opcode_info(sub->Opcode); + for (i = 0; i < info->NumSrcRegs; i++) { + unsigned int src_type = rc_source_type_swz(sub->Arg[i].Swizzle); + if (src_type & RC_SOURCE_RGB) { + inst->U.P.RGB.Src[sub->Arg[i].Source].Used = 1; + } + + if (src_type & RC_SOURCE_ALPHA) { + inst->U.P.Alpha.Src[sub->Arg[i].Source].Used = 1; + } + } +} + +/** + * This pass finds sources that are not used by their instruction and marks + * them as unused. + */ +void rc_pair_remove_dead_sources(struct radeon_compiler * c, void *user) +{ + struct rc_instruction * inst; + for (inst = c->Program.Instructions.Next; + inst != &c->Program.Instructions; + inst = inst->Next) { + unsigned int i; + if (inst->Type == RC_INSTRUCTION_NORMAL) + continue; + + /* Mark all sources as unused */ + for (i = 0; i < 4; i++) { + inst->U.P.RGB.Src[i].Used = 0; + inst->U.P.Alpha.Src[i].Used = 0; + } + mark_used(inst, &inst->U.P.RGB); + mark_used(inst, &inst->U.P.Alpha); + + mark_used_presub(&inst->U.P.RGB); + mark_used_presub(&inst->U.P.Alpha); + } +} diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_pair_regalloc.c b/src/mesa/drivers/dri/r300/compiler/radeon_pair_regalloc.c index d53181e1f75..49983d6ce75 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_pair_regalloc.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_pair_regalloc.c @@ -1,5 +1,6 @@ /* * Copyright (C) 2009 Nicolai Haehnle. + * Copyright 2011 Tom Stellard <[email protected]> * * All Rights Reserved. * @@ -29,125 +30,126 @@ #include <stdio.h> +#include "main/glheader.h" +#include "program/register_allocate.h" +#include "ralloc.h" + +#include "r300_fragprog_swizzle.h" #include "radeon_compiler.h" +#include "radeon_compiler_util.h" #include "radeon_dataflow.h" - +#include "radeon_list.h" +#include "radeon_variable.h" #define VERBOSE 0 #define DBG(...) do { if (VERBOSE) fprintf(stderr, __VA_ARGS__); } while(0) -struct live_intervals { - int Start; - int End; - struct live_intervals * Next; -}; struct register_info { - struct live_intervals Live; + struct live_intervals Live[4]; unsigned int Used:1; unsigned int Allocated:1; unsigned int File:3; unsigned int Index:RC_REGISTER_INDEX_BITS; -}; - -struct hardware_register { - struct live_intervals * Used; + unsigned int Writemask; }; struct regalloc_state { struct radeon_compiler * C; - struct register_info Input[RC_REGISTER_MAX_INDEX]; - struct register_info Temporary[RC_REGISTER_MAX_INDEX]; - - struct hardware_register * HwTemporary; - unsigned int NumHwTemporaries; - /** - * If an instruction is inside of a loop, EndLoop will be the - * IP of the ENDLOOP instruction, and BeginLoop will be the IP - * of the BGNLOOP instruction. Otherwise, EndLoop and BeginLoop - * will be -1. - */ - int EndLoop; - int BeginLoop; + struct register_info * Input; + unsigned int NumInputs; + + struct register_info * Temporary; + unsigned int NumTemporaries; + + unsigned int Simple; + int LoopEnd; +}; + +enum rc_reg_class { + RC_REG_CLASS_SINGLE, + RC_REG_CLASS_DOUBLE, + RC_REG_CLASS_TRIPLE, + RC_REG_CLASS_ALPHA, + RC_REG_CLASS_SINGLE_PLUS_ALPHA, + RC_REG_CLASS_DOUBLE_PLUS_ALPHA, + RC_REG_CLASS_TRIPLE_PLUS_ALPHA, + RC_REG_CLASS_X, + RC_REG_CLASS_Y, + RC_REG_CLASS_Z, + RC_REG_CLASS_XY, + RC_REG_CLASS_YZ, + RC_REG_CLASS_XZ, + RC_REG_CLASS_XW, + RC_REG_CLASS_YW, + RC_REG_CLASS_ZW, + RC_REG_CLASS_XYW, + RC_REG_CLASS_YZW, + RC_REG_CLASS_XZW, + RC_REG_CLASS_COUNT +}; + +struct rc_class { + enum rc_reg_class Class; + + unsigned int WritemaskCount; + + /** This is 1 if this class is being used by the register allocator + * and 0 otherwise */ + unsigned int Used; + + /** This is the ID number assigned to this class by ra. */ + unsigned int Id; + + /** List of writemasks that belong to this class */ + unsigned int Writemasks[3]; + + }; static void print_live_intervals(struct live_intervals * src) { - if (!src) { + if (!src || !src->Used) { DBG("(null)"); return; } - while(src) { - DBG("(%i,%i)", src->Start, src->End); - src = src->Next; - } + DBG("(%i,%i)", src->Start, src->End); } -static void add_live_intervals(struct regalloc_state * s, - struct live_intervals ** dst, struct live_intervals * src) +static int overlap_live_intervals(struct live_intervals * a, struct live_intervals * b) { - struct live_intervals ** dst_backup = dst; - if (VERBOSE) { - DBG("add_live_intervals: "); - print_live_intervals(*dst); + DBG("overlap_live_intervals: "); + print_live_intervals(a); DBG(" to "); - print_live_intervals(src); - DBG("\n"); - } - - while(src) { - if (*dst && (*dst)->End < src->Start) { - dst = &(*dst)->Next; - } else if (!*dst || (*dst)->Start > src->End) { - struct live_intervals * li = memory_pool_malloc(&s->C->Pool, sizeof(*li)); - li->Start = src->Start; - li->End = src->End; - li->Next = *dst; - *dst = li; - src = src->Next; - } else { - if (src->End > (*dst)->End) - (*dst)->End = src->End; - if (src->Start < (*dst)->Start) - (*dst)->Start = src->Start; - src = src->Next; - } - } - - if (VERBOSE) { - DBG(" result: "); - print_live_intervals(*dst_backup); + print_live_intervals(b); DBG("\n"); } -} -static int overlap_live_intervals(struct live_intervals * dst, struct live_intervals * src) -{ - if (VERBOSE) { - DBG("overlap_live_intervals: "); - print_live_intervals(dst); - DBG(" to "); - print_live_intervals(src); - DBG("\n"); + if (!a->Used || !b->Used) { + DBG(" unused interval\n"); + return 0; } - while(src && dst) { - if (dst->End <= src->Start) { - dst = dst->Next; - } else if (dst->End <= src->End) { + if (a->Start > b->Start) { + if (a->Start < b->End) { + DBG(" overlap\n"); + return 1; + } + } else if (b->Start > a->Start) { + if (b->Start < a->End) { DBG(" overlap\n"); return 1; - } else if (dst->Start < src->End) { + } + } else { /* a->Start == b->Start */ + if (a->Start != a->End && b->Start != b->End) { DBG(" overlap\n"); return 1; - } else { - src = src->Next; } } @@ -156,92 +158,27 @@ static int overlap_live_intervals(struct live_intervals * dst, struct live_inter return 0; } -static int try_add_live_intervals(struct regalloc_state * s, - struct live_intervals ** dst, struct live_intervals * src) -{ - if (overlap_live_intervals(*dst, src)) - return 0; - - add_live_intervals(s, dst, src); - return 1; -} - -static void scan_callback(void * data, struct rc_instruction * inst, +static void scan_read_callback(void * data, struct rc_instruction * inst, rc_register_file file, unsigned int index, unsigned int mask) { struct regalloc_state * s = data; struct register_info * reg; + unsigned int i; - if (file == RC_FILE_TEMPORARY) - reg = &s->Temporary[index]; - else if (file == RC_FILE_INPUT) - reg = &s->Input[index]; - else + if (file != RC_FILE_INPUT) return; - if (!reg->Used) { - reg->Used = 1; - if (file == RC_FILE_INPUT) - reg->Live.Start = -1; - else if (s->BeginLoop >= 0) - reg->Live.Start = s->BeginLoop; - else - reg->Live.Start = inst->IP; - reg->Live.End = inst->IP; - } else if (s->EndLoop >= 0) - reg->Live.End = s->EndLoop; - else if (inst->IP > reg->Live.End) - reg->Live.End = inst->IP; -} + s->Input[index].Used = 1; + reg = &s->Input[index]; -static void compute_live_intervals(struct radeon_compiler *c, - struct regalloc_state *s) -{ - memset(s, 0, sizeof(*s)); - s->C = c; - s->NumHwTemporaries = c->max_temp_regs; - s->BeginLoop = -1; - s->EndLoop = -1; - s->HwTemporary = - memory_pool_malloc(&c->Pool, - s->NumHwTemporaries * sizeof(struct hardware_register)); - memset(s->HwTemporary, 0, s->NumHwTemporaries * sizeof(struct hardware_register)); - - rc_recompute_ips(s->C); - - for(struct rc_instruction * inst = s->C->Program.Instructions.Next; - inst != &s->C->Program.Instructions; - inst = inst->Next) { - - /* For all instructions inside of a loop, the ENDLOOP - * instruction is used as the end of the live interval and - * the BGNLOOP instruction is used as the beginning. */ - if (inst->U.I.Opcode == RC_OPCODE_BGNLOOP && s->EndLoop < 0) { - int loops = 1; - struct rc_instruction * tmp; - s->BeginLoop = inst->IP; - for(tmp = inst->Next; - tmp != &s->C->Program.Instructions; - tmp = tmp->Next) { - if (tmp->U.I.Opcode == RC_OPCODE_BGNLOOP) { - loops++; - } else if (tmp->U.I.Opcode - == RC_OPCODE_ENDLOOP) { - if(!--loops) { - s->EndLoop = tmp->IP; - break; - } - } - } - } - - if (inst->IP == s->EndLoop) { - s->EndLoop = -1; - s->BeginLoop = -1; + for (i = 0; i < 4; i++) { + if (!((mask >> i) & 0x1)) { + continue; } - - rc_for_all_reads_mask(inst, scan_callback, s); - rc_for_all_writes_mask(inst, scan_callback, s); + reg->Live[i].Used = 1; + reg->Live[i].Start = 0; + reg->Live[i].End = + s->LoopEnd > inst->IP ? s->LoopEnd : inst->IP; } } @@ -251,7 +188,7 @@ static void remap_register(void * data, struct rc_instruction * inst, struct regalloc_state * s = data; const struct register_info * reg; - if (*file == RC_FILE_TEMPORARY) + if (*file == RC_FILE_TEMPORARY && s->Simple) reg = &s->Temporary[*index]; else if (*file == RC_FILE_INPUT) reg = &s->Input[*index]; @@ -259,106 +196,511 @@ static void remap_register(void * data, struct rc_instruction * inst, return; if (reg->Allocated) { - *file = reg->File; *index = reg->Index; } } -static void do_regalloc(struct regalloc_state * s) +static void alloc_input_simple(void * data, unsigned int input, + unsigned int hwreg) +{ + struct regalloc_state * s = data; + + if (input >= s->NumInputs) + return; + + s->Input[input].Allocated = 1; + s->Input[input].File = RC_FILE_TEMPORARY; + s->Input[input].Index = hwreg; +} + +/* This functions offsets the temporary register indices by the number + * of input registers, because input registers are actually temporaries and + * should not occupy the same space. + * + * This pass is supposed to be used to maintain correct allocation of inputs + * if the standard register allocation is disabled. */ +static void do_regalloc_inputs_only(struct regalloc_state * s) +{ + for (unsigned i = 0; i < s->NumTemporaries; i++) { + s->Temporary[i].Allocated = 1; + s->Temporary[i].File = RC_FILE_TEMPORARY; + s->Temporary[i].Index = i + s->NumInputs; + } +} + +static unsigned int is_derivative(rc_opcode op) { - /* Simple and stupid greedy register allocation */ - for(unsigned int index = 0; index < RC_REGISTER_MAX_INDEX; ++index) { - struct register_info * reg = &s->Temporary[index]; + return (op == RC_OPCODE_DDX || op == RC_OPCODE_DDY); +} - if (!reg->Used) +static int find_class( + struct rc_class * classes, + unsigned int writemask, + unsigned int max_writemask_count) +{ + unsigned int i; + for (i = 0; i < RC_REG_CLASS_COUNT; i++) { + unsigned int j; + if (classes[i].WritemaskCount > max_writemask_count) { continue; + } + for (j = 0; j < 3; j++) { + if (classes[i].Writemasks[j] == writemask) { + return i; + } + } + } + return -1; +} + +static enum rc_reg_class variable_get_class( + struct rc_variable * variable, + struct rc_class * classes) +{ + unsigned int i; + unsigned int can_change_writemask= 1; + unsigned int writemask = rc_variable_writemask_sum(variable); + struct rc_list * readers = rc_variable_readers_union(variable); + int class_index; + + if (!variable->C->is_r500) { + struct rc_class c; + /* The assumption here is that if an instruction has type + * RC_INSTRUCTION_NORMAL then it is a TEX instruction. + * r300 and r400 can't swizzle the result of a TEX lookup. */ + if (variable->Inst->Type == RC_INSTRUCTION_NORMAL) { + writemask = RC_MASK_XYZW; + } - for(unsigned int hwreg = 0; hwreg < s->NumHwTemporaries; ++hwreg) { - if (try_add_live_intervals(s, &s->HwTemporary[hwreg].Used, ®->Live)) { - reg->Allocated = 1; - reg->File = RC_FILE_TEMPORARY; - reg->Index = hwreg; - goto success; + /* Check if it is possible to do swizzle packing for r300/r400 + * without creating non-native swizzles. */ + class_index = find_class(classes, writemask, 3); + if (class_index < 0) { + goto error; + } + c = classes[class_index]; + for (i = 0; i < c.WritemaskCount; i++) { + int j; + unsigned int conversion_swizzle = + rc_make_conversion_swizzle( + writemask, c.Writemasks[i]); + for (j = 0; j < variable->ReaderCount; j++) { + unsigned int old_swizzle; + unsigned int new_swizzle; + struct rc_reader r = variable->Readers[j]; + if (r.Inst->Type == RC_INSTRUCTION_PAIR ) { + old_swizzle = r.U.P.Arg->Swizzle; + } else { + old_swizzle = r.U.I.Src->Swizzle; + } + new_swizzle = rc_adjust_channels( + old_swizzle, conversion_swizzle); + if (!r300_swizzle_is_native_basic(new_swizzle)) { + can_change_writemask = 0; + break; + } + } + if (!can_change_writemask) { + break; } } + } - rc_error(s->C, "Ran out of hardware temporaries\n"); - return; + if (variable->Inst->Type == RC_INSTRUCTION_PAIR) { + /* DDX/DDY seem to always fail when their writemasks are + * changed.*/ + if (is_derivative(variable->Inst->U.P.RGB.Opcode) + || is_derivative(variable->Inst->U.P.Alpha.Opcode)) { + can_change_writemask = 0; + } + } + for ( ; readers; readers = readers->Next) { + struct rc_reader * r = readers->Item; + if (r->Inst->Type == RC_INSTRUCTION_PAIR) { + if (r->U.P.Arg->Source == RC_PAIR_PRESUB_SRC) { + can_change_writemask = 0; + break; + } + /* DDX/DDY also fail when their swizzles are changed. */ + if (is_derivative(r->Inst->U.P.RGB.Opcode) + || is_derivative(r->Inst->U.P.Alpha.Opcode)) { + can_change_writemask = 0; + break; + } + } + } - success:; + class_index = find_class(classes, writemask, + can_change_writemask ? 3 : 1); + if (class_index > -1) { + return classes[class_index].Class; + } else { +error: + rc_error(variable->C, + "Could not find class for index=%u mask=%u\n", + variable->Dst.Index, writemask); + return 0; } +} - /* Rewrite all instructions based on the translation table we built */ - for(struct rc_instruction * inst = s->C->Program.Instructions.Next; - inst != &s->C->Program.Instructions; - inst = inst->Next) { - rc_remap_registers(inst, &remap_register, s); +static unsigned int overlap_live_intervals_array( + struct live_intervals * a, + struct live_intervals * b) +{ + unsigned int a_chan, b_chan; + for (a_chan = 0; a_chan < 4; a_chan++) { + for (b_chan = 0; b_chan < 4; b_chan++) { + if (overlap_live_intervals(&a[a_chan], &b[b_chan])) { + return 1; + } + } } + return 0; } -static void alloc_input(void * data, unsigned int input, unsigned int hwreg) +static unsigned int reg_get_index(int reg) { - struct regalloc_state * s = data; + return reg / RC_MASK_XYZW; +} - if (!s->Input[input].Used) - return; +static unsigned int reg_get_writemask(int reg) +{ + return (reg % RC_MASK_XYZW) + 1; +} - add_live_intervals(s, &s->HwTemporary[hwreg].Used, &s->Input[input].Live); +static int get_reg_id(unsigned int index, unsigned int writemask) +{ + assert(writemask); + if (writemask == 0) { + return 0; + } + return (index * RC_MASK_XYZW) + (writemask - 1); +} - s->Input[input].Allocated = 1; - s->Input[input].File = RC_FILE_TEMPORARY; - s->Input[input].Index = hwreg; +#if VERBOSE +static void print_reg(int reg) +{ + unsigned int index = reg_get_index(reg); + unsigned int mask = reg_get_writemask(reg); + fprintf(stderr, "Temp[%u].%c%c%c%c", index, + mask & RC_MASK_X ? 'x' : '_', + mask & RC_MASK_Y ? 'y' : '_', + mask & RC_MASK_Z ? 'z' : '_', + mask & RC_MASK_W ? 'w' : '_'); +} +#endif +static void add_register_conflicts( + struct ra_regs * regs, + unsigned int max_temp_regs) +{ + unsigned int index, a_mask, b_mask; + for (index = 0; index < max_temp_regs; index++) { + for(a_mask = 1; a_mask <= RC_MASK_XYZW; a_mask++) { + for (b_mask = a_mask + 1; b_mask <= RC_MASK_XYZW; + b_mask++) { + if (a_mask & b_mask) { + ra_add_reg_conflict(regs, + get_reg_id(index, a_mask), + get_reg_id(index, b_mask)); + } + } + } + } } -void rc_pair_regalloc(struct radeon_compiler *cc, void *user) +static void do_advanced_regalloc(struct regalloc_state * s) { - struct r300_fragment_program_compiler *c = (struct r300_fragment_program_compiler*)cc; - struct regalloc_state s; + struct rc_class rc_class_list [] = { + {RC_REG_CLASS_SINGLE, 3, 0, 0, + {RC_MASK_X, + RC_MASK_Y, + RC_MASK_Z}}, + {RC_REG_CLASS_DOUBLE, 3, 0, 0, + {RC_MASK_X | RC_MASK_Y, + RC_MASK_X | RC_MASK_Z, + RC_MASK_Y | RC_MASK_Z}}, + {RC_REG_CLASS_TRIPLE, 1, 0, 0, + {RC_MASK_X | RC_MASK_Y | RC_MASK_Z, + RC_MASK_NONE, + RC_MASK_NONE}}, + {RC_REG_CLASS_ALPHA, 1, 0, 0, + {RC_MASK_W, + RC_MASK_NONE, + RC_MASK_NONE}}, + {RC_REG_CLASS_SINGLE_PLUS_ALPHA, 3, 0, 0, + {RC_MASK_X | RC_MASK_W, + RC_MASK_Y | RC_MASK_W, + RC_MASK_Z | RC_MASK_W}}, + {RC_REG_CLASS_DOUBLE_PLUS_ALPHA, 3, 0, 0, + {RC_MASK_X | RC_MASK_Y | RC_MASK_W, + RC_MASK_X | RC_MASK_Z | RC_MASK_W, + RC_MASK_Y | RC_MASK_Z | RC_MASK_W}}, + {RC_REG_CLASS_TRIPLE_PLUS_ALPHA, 1, 0, 0, + {RC_MASK_X | RC_MASK_Y | RC_MASK_Z | RC_MASK_W, + RC_MASK_NONE, + RC_MASK_NONE}}, + {RC_REG_CLASS_X, 1, 0, 0, + {RC_MASK_X, + RC_MASK_NONE, + RC_MASK_NONE}}, + {RC_REG_CLASS_Y, 1, 0, 0, + {RC_MASK_Y, + RC_MASK_NONE, + RC_MASK_NONE}}, + {RC_REG_CLASS_Z, 1, 0, 0, + {RC_MASK_Z, + RC_MASK_NONE, + RC_MASK_NONE}}, + {RC_REG_CLASS_XY, 1, 0, 0, + {RC_MASK_X | RC_MASK_Y, + RC_MASK_NONE, + RC_MASK_NONE}}, + {RC_REG_CLASS_YZ, 1, 0, 0, + {RC_MASK_Y | RC_MASK_Z, + RC_MASK_NONE, + RC_MASK_NONE}}, + {RC_REG_CLASS_XZ, 1, 0, 0, + {RC_MASK_X | RC_MASK_Z, + RC_MASK_NONE, + RC_MASK_NONE}}, + {RC_REG_CLASS_XW, 1, 0, 0, + {RC_MASK_X | RC_MASK_W, + RC_MASK_NONE, + RC_MASK_NONE}}, + {RC_REG_CLASS_YW, 1, 0, 0, + {RC_MASK_Y | RC_MASK_W, + RC_MASK_NONE, + RC_MASK_NONE}}, + {RC_REG_CLASS_ZW, 1, 0, 0, + {RC_MASK_Z | RC_MASK_W, + RC_MASK_NONE, + RC_MASK_NONE}}, + {RC_REG_CLASS_XYW, 1, 0, 0, + {RC_MASK_X | RC_MASK_Y | RC_MASK_W, + RC_MASK_NONE, + RC_MASK_NONE}}, + {RC_REG_CLASS_YZW, 1, 0, 0, + {RC_MASK_Y | RC_MASK_Z | RC_MASK_W, + RC_MASK_NONE, + RC_MASK_NONE}}, + {RC_REG_CLASS_XZW, 1, 0, 0, + {RC_MASK_X | RC_MASK_Z | RC_MASK_W, + RC_MASK_NONE, + RC_MASK_NONE}} + }; + + unsigned int i, j, index, input_node, node_count, node_index; + unsigned int * node_classes; + unsigned int * input_classes; + struct rc_instruction * inst; + struct rc_list * var_ptr; + struct rc_list * variables; + struct ra_regs * regs; + struct ra_graph * graph; + + /* Allocate the main ra data structure */ + regs = ra_alloc_reg_set(s->C->max_temp_regs * RC_MASK_XYZW); + + /* Get list of program variables */ + variables = rc_get_variables(s->C); + node_count = rc_list_count(variables); + node_classes = memory_pool_malloc(&s->C->Pool, + node_count * sizeof(unsigned int)); + input_classes = memory_pool_malloc(&s->C->Pool, + s->NumInputs * sizeof(unsigned int)); + + for (var_ptr = variables, node_index = 0; var_ptr; + var_ptr = var_ptr->Next, node_index++) { + unsigned int class_index; + /* Compute the live intervals */ + rc_variable_compute_live_intervals(var_ptr->Item); + + class_index = variable_get_class(var_ptr->Item, rc_class_list); + + /* If we haven't used this register class yet, mark it + * as used and allocate space for it. */ + if (!rc_class_list[class_index].Used) { + rc_class_list[class_index].Used = 1; + rc_class_list[class_index].Id = ra_alloc_reg_class(regs); + } - compute_live_intervals(cc, &s); + node_classes[node_index] = rc_class_list[class_index].Id; + } - c->AllocateHwInputs(c, &alloc_input, &s); - do_regalloc(&s); -} + /* Assign registers to the classes */ + for (i = 0; i < RC_REG_CLASS_COUNT; i++) { + struct rc_class class = rc_class_list[i]; + if (!class.Used) { + continue; + } -/* This functions offsets the temporary register indices by the number - * of input registers, because input registers are actually temporaries and - * should not occupy the same space. - * - * This pass is supposed to be used to maintain correct allocation of inputs - * if the standard register allocation is disabled. */ -void rc_pair_regalloc_inputs_only(struct radeon_compiler *cc, void *user) -{ - struct r300_fragment_program_compiler *c = (struct r300_fragment_program_compiler*)cc; - struct regalloc_state s; - int temp_reg_offset; + for (index = 0; index < s->C->max_temp_regs; index++) { + for (j = 0; j < class.WritemaskCount; j++) { + int reg_id = get_reg_id(index, + class.Writemasks[j]); + ra_class_add_reg(regs, class.Id, reg_id); + } + } + } + + /* Add register conflicts */ + add_register_conflicts(regs, s->C->max_temp_regs); + + /* Calculate live intervals for input registers */ + for (inst = s->C->Program.Instructions.Next; + inst != &s->C->Program.Instructions; + inst = inst->Next) { + rc_opcode op = rc_get_flow_control_inst(inst); + if (op == RC_OPCODE_BGNLOOP) { + struct rc_instruction * endloop = + rc_match_bgnloop(inst); + if (endloop->IP > s->LoopEnd) { + s->LoopEnd = endloop->IP; + } + } + rc_for_all_reads_mask(inst, scan_read_callback, s); + } - compute_live_intervals(cc, &s); + /* Create classes for input registers */ + for (i = 0; i < s->NumInputs; i++) { + unsigned int chan, class_id, writemask = 0; + for (chan = 0; chan < 4; chan++) { + if (s->Input[i].Live[chan].Used) { + writemask |= (1 << chan); + } + } + s->Input[i].Writemask = writemask; + if (!writemask) { + continue; + } + + class_id = ra_alloc_reg_class(regs); + input_classes[i] = class_id; + ra_class_add_reg(regs, class_id, + get_reg_id(s->Input[i].Index, writemask)); + } - c->AllocateHwInputs(c, &alloc_input, &s); + ra_set_finalize(regs); - temp_reg_offset = 0; - for (unsigned i = 0; i < RC_REGISTER_MAX_INDEX; i++) { - if (s.Input[i].Allocated && temp_reg_offset <= s.Input[i].Index) - temp_reg_offset = s.Input[i].Index + 1; + graph = ra_alloc_interference_graph(regs, node_count + s->NumInputs); + + /* Build the interference graph */ + for (var_ptr = variables, node_index = 0; var_ptr; + var_ptr = var_ptr->Next,node_index++) { + struct rc_list * a, * b; + unsigned int b_index; + + ra_set_node_class(graph, node_index, node_classes[node_index]); + + for (a = var_ptr, b = var_ptr->Next, b_index = node_index + 1; + b; b = b->Next, b_index++) { + struct rc_variable * var_a = a->Item; + while (var_a) { + struct rc_variable * var_b = b->Item; + while (var_b) { + if (overlap_live_intervals_array(var_a->Live, var_b->Live)) { + ra_add_node_interference(graph, + node_index, b_index); + } + var_b = var_b->Friend; + } + var_a = var_a->Friend; + } + } } - if (temp_reg_offset) { - for (unsigned i = 0; i < RC_REGISTER_MAX_INDEX; i++) { - if (s.Temporary[i].Used) { - s.Temporary[i].Allocated = 1; - s.Temporary[i].File = RC_FILE_TEMPORARY; - s.Temporary[i].Index = i + temp_reg_offset; + /* Add input registers to the interference graph */ + for (i = 0, input_node = 0; i< s->NumInputs; i++) { + if (!s->Input[i].Writemask) { + continue; + } + ra_set_node_class(graph, node_count + input_node, + input_classes[i]); + for (var_ptr = variables, node_index = 0; + var_ptr; var_ptr = var_ptr->Next, node_index++) { + struct rc_variable * var = var_ptr->Item; + if (overlap_live_intervals_array(s->Input[i].Live, + var->Live)) { + ra_add_node_interference(graph, node_index, + node_count + input_node); } } + /* Manually allocate a register for this input */ + ra_set_node_reg(graph, node_count + input_node, get_reg_id( + s->Input[i].Index, s->Input[i].Writemask)); + input_node++; + } + + if (!ra_allocate_no_spills(graph)) { + rc_error(s->C, "Ran out of hardware temporaries\n"); + return; + } + + /* Rewrite the registers */ + for (var_ptr = variables, node_index = 0; var_ptr; + var_ptr = var_ptr->Next, node_index++) { + int reg = ra_get_node_reg(graph, node_index); + unsigned int writemask = reg_get_writemask(reg); + unsigned int index = reg_get_index(reg); + struct rc_variable * var = var_ptr->Item; + + if (!s->C->is_r500 && var->Inst->Type == RC_INSTRUCTION_NORMAL) { + writemask = rc_variable_writemask_sum(var); + } - /* Rewrite all registers. */ - for (struct rc_instruction *inst = cc->Program.Instructions.Next; - inst != &cc->Program.Instructions; - inst = inst->Next) { - rc_remap_registers(inst, &remap_register, &s); + if (var->Dst.File == RC_FILE_INPUT) { + continue; } + rc_variable_change_dst(var, index, writemask); + } + + ralloc_free(graph); + ralloc_free(regs); +} + +/** + * @param user This parameter should be a pointer to an integer value. If this + * integer value is zero, then a simple register allocator will be used that + * only allocates space for input registers (\sa do_regalloc_inputs_only). If + * user is non-zero, then the regular register allocator will be used + * (\sa do_regalloc). + */ +void rc_pair_regalloc(struct radeon_compiler *cc, void *user) +{ + struct r300_fragment_program_compiler *c = + (struct r300_fragment_program_compiler*)cc; + struct regalloc_state s; + int * do_full_regalloc = (int*)user; + + memset(&s, 0, sizeof(s)); + s.C = cc; + s.NumInputs = rc_get_max_index(cc, RC_FILE_INPUT) + 1; + s.Input = memory_pool_malloc(&cc->Pool, + s.NumInputs * sizeof(struct register_info)); + memset(s.Input, 0, s.NumInputs * sizeof(struct register_info)); + + s.NumTemporaries = rc_get_max_index(cc, RC_FILE_TEMPORARY) + 1; + s.Temporary = memory_pool_malloc(&cc->Pool, + s.NumTemporaries * sizeof(struct register_info)); + memset(s.Temporary, 0, s.NumTemporaries * sizeof(struct register_info)); + + rc_recompute_ips(s.C); + + c->AllocateHwInputs(c, &alloc_input_simple, &s); + if (*do_full_regalloc) { + do_advanced_regalloc(&s); + } else { + s.Simple = 1; + do_regalloc_inputs_only(&s); + } + + /* Rewrite inputs and if we are doing the simple allocation, rewrite + * temporaries too. */ + for (struct rc_instruction *inst = s.C->Program.Instructions.Next; + inst != &s.C->Program.Instructions; + inst = inst->Next) { + rc_remap_registers(inst, &remap_register, &s); } } diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_pair_schedule.c b/src/mesa/drivers/dri/r300/compiler/radeon_pair_schedule.c index 8e10813ff06..25cd52c9cd4 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_pair_schedule.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_pair_schedule.c @@ -709,7 +709,7 @@ static int convert_rgb_to_alpha( pair_inst->Alpha.Opcode = pair_inst->RGB.Opcode; pair_inst->Alpha.DestIndex = new_index; - pair_inst->Alpha.WriteMask = 1; + pair_inst->Alpha.WriteMask = RC_MASK_W; pair_inst->Alpha.Target = pair_inst->RGB.Target; pair_inst->Alpha.OutputWriteMask = pair_inst->RGB.OutputWriteMask; pair_inst->Alpha.DepthWriteMask = pair_inst->RGB.DepthWriteMask; @@ -739,7 +739,7 @@ static int convert_rgb_to_alpha( for(i = 0; i < sched_inst->GlobalReaders.ReaderCount; i++) { struct rc_reader reader = sched_inst->GlobalReaders.Readers[i]; - rgb_to_alpha_remap(reader.Inst, reader.U.Arg, + rgb_to_alpha_remap(reader.Inst, reader.U.P.Arg, RC_FILE_TEMPORARY, old_swz, new_index); } return 1; @@ -952,6 +952,7 @@ static void schedule_block(struct r300_fragment_program_compiler * c, instruction_ready(&s, s.Current); /* Get global readers for possible RGB->Alpha conversion. */ + s.Current->GlobalReaders.ExitOnAbort = 1; rc_get_readers(s.C, inst, &s.Current->GlobalReaders, is_rgb_to_alpha_possible_normal, is_rgb_to_alpha_possible, NULL); diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program.h b/src/mesa/drivers/dri/r300/compiler/radeon_program.h index a07f6b63c6e..b899eccbf53 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program.h @@ -108,6 +108,9 @@ struct rc_sub_instruction { /** True if tex instruction should do shadow comparison */ unsigned int TexShadow:1; + + /**R500 Only. How to swizzle the result of a TEX lookup*/ + unsigned int TexSwizzle:12; /*@}*/ /** This holds information about the presubtract operation used by diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program_constants.h b/src/mesa/drivers/dri/r300/compiler/radeon_program_constants.h index 45f79ece5ba..24577333450 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program_constants.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_constants.h @@ -129,6 +129,7 @@ typedef enum { #define RC_SWIZZLE_0000 RC_MAKE_SWIZZLE_SMEAR(RC_SWIZZLE_ZERO) #define RC_SWIZZLE_1111 RC_MAKE_SWIZZLE_SMEAR(RC_SWIZZLE_ONE) #define RC_SWIZZLE_HHHH RC_MAKE_SWIZZLE_SMEAR(RC_SWIZZLE_HALF) +#define RC_SWIZZLE_UUUU RC_MAKE_SWIZZLE_SMEAR(RC_SWIZZLE_UNUSED) /** * \name Bitmasks for components of vectors. diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.c b/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.c index 68874795b8a..52315957520 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.c @@ -223,3 +223,17 @@ struct rc_pair_instruction_source * rc_pair_get_src( return NULL; } } + +int rc_pair_get_src_index( + struct rc_pair_instruction * pair_inst, + struct rc_pair_instruction_source * src) +{ + int i; + for (i = 0; i < 3; i++) { + if (&pair_inst->RGB.Src[i] == src + || &pair_inst->Alpha.Src[i] == src) { + return i; + } + } + return -1; +} 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 d1a435fc530..a957ea9f7a0 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h @@ -114,6 +114,10 @@ void rc_pair_foreach_source_that_rgb_reads( struct rc_pair_instruction_source * rc_pair_get_src( struct rc_pair_instruction * pair_inst, struct rc_pair_instruction_arg * arg); + +int rc_pair_get_src_index( + struct rc_pair_instruction * pair_inst, + struct rc_pair_instruction_source * src); /*@}*/ @@ -127,6 +131,7 @@ void rc_pair_translate(struct radeon_compiler *cc, void *user); void rc_pair_schedule(struct radeon_compiler *cc, void *user); void rc_pair_regalloc(struct radeon_compiler *cc, void *user); void rc_pair_regalloc_inputs_only(struct radeon_compiler *cc, void *user); +void rc_pair_remove_dead_sources(struct radeon_compiler *c, void *user); /*@}*/ #endif /* __RADEON_PROGRAM_PAIR_H_ */ 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 cef448ee4e1..8d16b2cf9ec 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c @@ -142,6 +142,8 @@ int radeonTransformTEX( if (inst->U.I.Opcode != RC_OPCODE_TEX && inst->U.I.Opcode != RC_OPCODE_TXB && inst->U.I.Opcode != RC_OPCODE_TXP && + inst->U.I.Opcode != RC_OPCODE_TXD && + inst->U.I.Opcode != RC_OPCODE_TXL && inst->U.I.Opcode != RC_OPCODE_KIL) return 0; diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_rename_regs.c b/src/mesa/drivers/dri/r300/compiler/radeon_rename_regs.c index 5bd19c0b9c6..cafa0579734 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_rename_regs.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_rename_regs.c @@ -71,6 +71,7 @@ void rc_rename_regs(struct radeon_compiler *c, void *user) if (inst->U.I.DstReg.File != RC_FILE_TEMPORARY) continue; + reader_data.ExitOnAbort = 1; rc_get_readers(c, inst, &reader_data, NULL, NULL, NULL); if (reader_data.Abort || reader_data.ReaderCount == 0) @@ -85,7 +86,7 @@ void rc_rename_regs(struct radeon_compiler *c, void *user) reader_data.Writer->U.I.DstReg.Index = new_index; for(i = 0; i < reader_data.ReaderCount; i++) { - reader_data.Readers[i].U.Src->Index = new_index; + reader_data.Readers[i].U.I.Src->Index = new_index; } } } diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_variable.c b/src/mesa/drivers/dri/r300/compiler/radeon_variable.c new file mode 100644 index 00000000000..16fa5d28902 --- /dev/null +++ b/src/mesa/drivers/dri/r300/compiler/radeon_variable.c @@ -0,0 +1,484 @@ +/* + * Copyright 2011 Tom Stellard <[email protected]> + * + * 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 (including the + * next paragraph) shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS 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. + * + */ + +#include "radeon_variable.h" + +#include "memory_pool.h" +#include "radeon_compiler_util.h" +#include "radeon_dataflow.h" +#include "radeon_list.h" +#include "radeon_opcodes.h" +#include "radeon_program.h" + +/** + * Rewrite the index and writemask for the destination register of var + * and its friends to new_index and new_writemask. This function also takes + * care of rewriting the swizzles for the sources of var. + */ +void rc_variable_change_dst( + struct rc_variable * var, + unsigned int new_index, + unsigned int new_writemask) +{ + struct rc_variable * var_ptr; + struct rc_list * readers; + unsigned int old_mask = rc_variable_writemask_sum(var); + unsigned int conversion_swizzle = + rc_make_conversion_swizzle(old_mask, new_writemask); + + for (var_ptr = var; var_ptr; var_ptr = var_ptr->Friend) { + if (var_ptr->Inst->Type == RC_INSTRUCTION_NORMAL) { + rc_normal_rewrite_writemask(var_ptr->Inst, + conversion_swizzle); + var_ptr->Inst->U.I.DstReg.Index = new_index; + } else { + struct rc_pair_sub_instruction * sub; + if (var_ptr->Dst.WriteMask == RC_MASK_W) { + assert(new_writemask & RC_MASK_W); + sub = &var_ptr->Inst->U.P.Alpha; + } else { + sub = &var_ptr->Inst->U.P.RGB; + rc_pair_rewrite_writemask(sub, + conversion_swizzle); + } + sub->DestIndex = new_index; + } + } + + readers = rc_variable_readers_union(var); + + for ( ; readers; readers = readers->Next) { + struct rc_reader * reader = readers->Item; + if (reader->Inst->Type == RC_INSTRUCTION_NORMAL) { + reader->U.I.Src->Index = new_index; + reader->U.I.Src->Swizzle = rc_rewrite_swizzle( + reader->U.I.Src->Swizzle, conversion_swizzle); + } else { + struct rc_pair_instruction * pair_inst = + &reader->Inst->U.P; + unsigned int src_type = rc_source_type_swz( + reader->U.P.Arg->Swizzle); + + int src_index = reader->U.P.Arg->Source; + if (src_index == RC_PAIR_PRESUB_SRC) { + src_index = rc_pair_get_src_index( + pair_inst, reader->U.P.Src); + } + /* Try to delete the old src, it is OK if this fails, + * because rc_pair_alloc_source might be able to + * find a source the ca be reused. + */ + if (rc_pair_remove_src(reader->Inst, src_type, + src_index, old_mask)) { + /* Reuse the source index of the source that + * was just deleted and set its register + * index. We can't use rc_pair_alloc_source + * for this becuase it might return a source + * index that is already being used. */ + if (src_type & RC_SOURCE_RGB) { + pair_inst->RGB.Src[src_index] + .Used = 1; + pair_inst->RGB.Src[src_index] + .Index = new_index; + pair_inst->RGB.Src[src_index] + .File = RC_FILE_TEMPORARY; + } + if (src_type & RC_SOURCE_ALPHA) { + pair_inst->Alpha.Src[src_index] + .Used = 1; + pair_inst->Alpha.Src[src_index] + .Index = new_index; + pair_inst->Alpha.Src[src_index] + .File = RC_FILE_TEMPORARY; + } + } else { + src_index = rc_pair_alloc_source( + &reader->Inst->U.P, + src_type & RC_SOURCE_RGB, + src_type & RC_SOURCE_ALPHA, + RC_FILE_TEMPORARY, + new_index); + if (src_index < 0) { + rc_error(var->C, "Rewrite of inst %u failed " + "Can't allocate source for " + "Inst %u src_type=%x " + "new_index=%u new_mask=%u\n", + var->Inst->IP, reader->Inst->IP, src_type, new_index, new_writemask); + continue; + } + } + reader->U.P.Arg->Swizzle = rc_rewrite_swizzle( + reader->U.P.Arg->Swizzle, conversion_swizzle); + if (reader->U.P.Arg->Source != RC_PAIR_PRESUB_SRC) { + reader->U.P.Arg->Source = src_index; + } + } + } +} + +/** + * Compute the live intervals for var and its friends. + */ +void rc_variable_compute_live_intervals(struct rc_variable * var) +{ + while(var) { + unsigned int i; + unsigned int start = var->Inst->IP; + + for (i = 0; i < var->ReaderCount; i++) { + unsigned int chan; + unsigned int chan_start = start; + unsigned int chan_end = var->Readers[i].Inst->IP; + unsigned int mask = var->Readers[i].WriteMask; + struct rc_instruction * inst; + + /* Extend the live interval of T0 to the start of the + * loop for sequences like: + * BGNLOOP + * read T0 + * ... + * write T0 + * ENDLOOP + */ + if (var->Readers[i].Inst->IP < start) { + struct rc_instruction * bgnloop = + rc_match_endloop(var->Readers[i].Inst); + chan_start = bgnloop->IP; + } + + /* Extend the live interval of T0 to the start of the + * loop in case there is a BRK instruction in the loop + * (we don't actually check for a BRK instruction we + * assume there is one somewhere in the loop, which + * there usually is) for sequences like: + * BGNLOOP + * ... + * conditional BRK + * ... + * write T0 + * ENDLOOP + * read T0 + *************************************************** + * Extend the live interval of T0 to the end of the + * loop for sequences like: + * write T0 + * BGNLOOP + * ... + * read T0 + * ENDLOOP + */ + for (inst = var->Inst; inst != var->Readers[i].Inst; + inst = inst->Next) { + rc_opcode op = rc_get_flow_control_inst(inst); + if (op == RC_OPCODE_ENDLOOP) { + struct rc_instruction * bgnloop = + rc_match_endloop(inst); + if (bgnloop->IP < chan_start) { + chan_start = bgnloop->IP; + } + } else if (op == RC_OPCODE_BGNLOOP) { + struct rc_instruction * endloop = + rc_match_bgnloop(inst); + if (endloop->IP > chan_end) { + chan_end = endloop->IP; + } + } + } + + for (chan = 0; chan < 4; chan++) { + if ((mask >> chan) & 0x1) { + if (!var->Live[chan].Used + || chan_start < var->Live[chan].Start) { + var->Live[chan].Start = + chan_start; + } + if (!var->Live[chan].Used + || chan_end > var->Live[chan].End) { + var->Live[chan].End = chan_end; + } + var->Live[chan].Used = 1; + } + } + } + var = var->Friend; + } +} + +/** + * @return 1 if a and b share a reader + * @return 0 if they do not + */ +static unsigned int readers_intersect( + struct rc_variable * a, + struct rc_variable * b) +{ + unsigned int a_index, b_index; + for (a_index = 0; a_index < a->ReaderCount; a_index++) { + struct rc_reader reader_a = a->Readers[a_index]; + for (b_index = 0; b_index < b->ReaderCount; b_index++) { + struct rc_reader reader_b = b->Readers[b_index]; + if (reader_a.Inst->Type == RC_INSTRUCTION_NORMAL + && reader_b.Inst->Type == RC_INSTRUCTION_NORMAL + && reader_a.U.I.Src == reader_b.U.I.Src) { + + return 1; + } + if (reader_a.Inst->Type == RC_INSTRUCTION_PAIR + && reader_b.Inst->Type == RC_INSTRUCTION_PAIR + && reader_a.U.P.Src == reader_b.U.P.Src) { + + return 1; + } + } + } + return 0; +} + +void rc_variable_add_friend( + struct rc_variable * var, + struct rc_variable * friend) +{ + assert(var->Dst.Index == friend->Dst.Index); + while(var->Friend) { + var = var->Friend; + } + var->Friend = friend; +} + +struct rc_variable * rc_variable( + struct radeon_compiler * c, + unsigned int DstFile, + unsigned int DstIndex, + unsigned int DstWriteMask, + struct rc_reader_data * reader_data) +{ + struct rc_variable * new = + memory_pool_malloc(&c->Pool, sizeof(struct rc_variable)); + memset(new, 0, sizeof(struct rc_variable)); + new->C = c; + new->Dst.File = DstFile; + new->Dst.Index = DstIndex; + new->Dst.WriteMask = DstWriteMask; + if (reader_data) { + new->Inst = reader_data->Writer; + new->ReaderCount = reader_data->ReaderCount; + new->Readers = reader_data->Readers; + } + return new; +} + +static void get_variable_helper( + struct rc_list ** aborted_list, + struct rc_list ** variable_list, + unsigned int aborted, + struct rc_variable * variable) +{ + if (aborted) { + rc_list_add(aborted_list, rc_list(&variable->C->Pool, variable)); + } else { + rc_list_add(variable_list, rc_list(&variable->C->Pool, variable)); + } +} + +static void get_variable_pair_helper( + struct rc_list ** aborted_list, + struct rc_list ** variable_list, + struct radeon_compiler * c, + struct rc_instruction * inst, + struct rc_pair_sub_instruction * sub_inst) +{ + struct rc_reader_data reader_data; + struct rc_variable * new_var; + rc_register_file file; + unsigned int writemask; + + if (sub_inst->Opcode == RC_OPCODE_NOP) { + return; + } + memset(&reader_data, 0, sizeof(struct rc_reader_data)); + rc_get_readers_sub(c, inst, sub_inst, &reader_data, NULL, NULL, NULL); + + if (reader_data.ReaderCount == 0) { + return; + } + + if (sub_inst->WriteMask) { + file = RC_FILE_TEMPORARY; + writemask = sub_inst->WriteMask; + } else if (sub_inst->OutputWriteMask) { + file = RC_FILE_OUTPUT; + writemask = sub_inst->OutputWriteMask; + } else { + writemask = 0; + file = RC_FILE_NONE; + } + new_var = rc_variable(c, file, sub_inst->DestIndex, writemask, + &reader_data); + get_variable_helper(aborted_list, variable_list, reader_data.Abort, + new_var); +} + +/** + * Generate a list of variables used by the shader program. Each instruction + * that writes to a register is considered a variable. The struct rc_variable + * data structure includes a list of readers and is essentially a + * definition-use chain. Any two variables that share a reader are considered + * "friends" and they are linked together via the Friend attribute. + */ +struct rc_list * rc_get_variables(struct radeon_compiler * c) +{ + struct rc_instruction * inst; + struct rc_list * aborted_list = NULL; + struct rc_list * variable_list = NULL; + struct rc_list * var_ptr; + struct rc_list * search_ptr; + + for (inst = c->Program.Instructions.Next; + inst != &c->Program.Instructions; + inst = inst->Next) { + struct rc_reader_data reader_data; + struct rc_variable * new_var; + memset(&reader_data, 0, sizeof(reader_data)); + + if (inst->Type == RC_INSTRUCTION_NORMAL) { + rc_get_readers(c, inst, &reader_data, NULL, NULL, NULL); + if (reader_data.ReaderCount == 0) { + continue; + } + new_var = rc_variable(c, inst->U.I.DstReg.File, + inst->U.I.DstReg.Index, + inst->U.I.DstReg.WriteMask, &reader_data); + get_variable_helper(&aborted_list, &variable_list, + reader_data.Abort, new_var); + } else { + get_variable_pair_helper(&aborted_list, &variable_list, + c, inst, &inst->U.P.RGB); + get_variable_pair_helper(&aborted_list, &variable_list, + c, inst, &inst->U.P.Alpha); + } + } + + /* The aborted_list contains a list of variables that might share a + * reader with another variable. We need to search through this list + * and pair together variables that do share the same reader. + */ + while (aborted_list) { + struct rc_list * search_ptr_next; + var_ptr = aborted_list; + + search_ptr = var_ptr->Next; + while(search_ptr) { + search_ptr_next = search_ptr->Next; + if (readers_intersect(var_ptr->Item, search_ptr->Item)){ + rc_list_remove(&aborted_list, search_ptr); + rc_variable_add_friend(var_ptr->Item, + search_ptr->Item); + } + search_ptr = search_ptr_next; + } + rc_list_remove(&aborted_list, var_ptr); + rc_list_add(&variable_list, rc_list( + &((struct rc_variable*)(var_ptr->Item))->C->Pool, + var_ptr->Item)); + } + return variable_list; +} + +/** + * @return The bitwise or of the writemasks of a variable and all of its + * friends. + */ +unsigned int rc_variable_writemask_sum(struct rc_variable * var) +{ + unsigned int writemask = 0; + while(var) { + writemask |= var->Dst.WriteMask; + var = var->Friend; + } + return writemask; +} + +/* + * @return A list of readers for a variable and its friends. Readers + * that read from two different variable friends are only included once in + * this list. + */ +struct rc_list * rc_variable_readers_union(struct rc_variable * var) +{ + struct rc_list * list = NULL; + while (var) { + unsigned int i; + for (i = 0; i < var->ReaderCount; i++) { + struct rc_list * temp; + struct rc_reader * a = &var->Readers[i]; + unsigned int match = 0; + for (temp = list; temp; temp = temp->Next) { + struct rc_reader * b = temp->Item; + if (a->Inst->Type != b->Inst->Type) { + continue; + } + if (a->Inst->Type == RC_INSTRUCTION_NORMAL) { + if (a->U.I.Src == b->U.I.Src) { + match = 1; + break; + } + } + if (a->Inst->Type == RC_INSTRUCTION_PAIR) { + if (a->U.P.Arg == b->U.P.Arg + && a->U.P.Src == b->U.P.Src) { + match = 1; + break; + } + } + } + if (match) { + continue; + } + rc_list_add(&list, rc_list(&var->C->Pool, a)); + } + var = var->Friend; + } + return list; +} + +void rc_variable_print(struct rc_variable * var) +{ + unsigned int i; + while (var) { + fprintf(stderr, "%u: TEMP[%u].%u: ", + var->Inst->IP, var->Dst.Index, var->Dst.WriteMask); + for (i = 0; i < 4; i++) { + fprintf(stderr, "chan %u: start=%u end=%u ", i, + var->Live[i].Start, var->Live[i].End); + } + fprintf(stderr, "%u readers\n", var->ReaderCount); + if (var->Friend) { + fprintf(stderr, "Friend: \n\t"); + } + var = var->Friend; + } +} diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_variable.h b/src/mesa/drivers/dri/r300/compiler/radeon_variable.h new file mode 100644 index 00000000000..b8fbcaa4029 --- /dev/null +++ b/src/mesa/drivers/dri/r300/compiler/radeon_variable.h @@ -0,0 +1,84 @@ +/* + * Copyright 2011 Tom Stellard <[email protected]> + * + * 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 (including the + * next paragraph) shall be included in all copies or substantial + * portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS 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. + * + */ + +#ifndef RADEON_VARIABLE_H +#define RADEON_VARIABLE_H + +#include "radeon_compiler.h" + +struct radeon_compiler; +struct rc_list; +struct rc_reader_data; +struct rc_readers; + +struct live_intervals { + int Start; + int End; + int Used; +}; + +struct rc_variable { + struct radeon_compiler * C; + struct rc_dst_register Dst; + + struct rc_instruction * Inst; + unsigned int ReaderCount; + struct rc_reader * Readers; + struct live_intervals Live[4]; + + /* A friend is a variable that shares a reader with another variable. + */ + struct rc_variable * Friend; +}; + +void rc_variable_change_dst( + struct rc_variable * var, + unsigned int new_index, + unsigned int new_writemask); + +void rc_variable_compute_live_intervals(struct rc_variable * var); + +void rc_variable_add_friend( + struct rc_variable * var, + struct rc_variable * friend); + +struct rc_variable * rc_variable( + struct radeon_compiler * c, + unsigned int DstFile, + unsigned int DstIndex, + unsigned int DstWriteMask, + struct rc_reader_data * reader_data); + +struct rc_list * rc_get_variables(struct radeon_compiler * c); + +unsigned int rc_variable_writemask_sum(struct rc_variable * var); + +struct rc_list * rc_variable_readers_union(struct rc_variable * var); + +void rc_variable_print(struct rc_variable * var); + +#endif /* RADEON_VARIABLE_H */ diff --git a/src/mesa/drivers/dri/radeon/radeon_chipset.h b/src/mesa/drivers/dri/radeon/radeon_chipset.h index 88b68e3d191..9145023826e 100644 --- a/src/mesa/drivers/dri/radeon/radeon_chipset.h +++ b/src/mesa/drivers/dri/radeon/radeon_chipset.h @@ -406,6 +406,7 @@ #define PCI_CHIP_CEDAR_68E8 0x68E8 #define PCI_CHIP_CEDAR_68E9 0x68E9 #define PCI_CHIP_CEDAR_68F1 0x68F1 +#define PCI_CHIP_CEDAR_68F2 0x68F2 #define PCI_CHIP_CEDAR_68F8 0x68F8 #define PCI_CHIP_CEDAR_68F9 0x68F9 #define PCI_CHIP_CEDAR_68FE 0x68FE @@ -426,7 +427,9 @@ #define PCI_CHIP_JUNIPER_68B0 0x68B0 #define PCI_CHIP_JUNIPER_68B8 0x68B8 #define PCI_CHIP_JUNIPER_68B9 0x68B9 +#define PCI_CHIP_JUNIPER_68BA 0x68BA #define PCI_CHIP_JUNIPER_68BE 0x68BE +#define PCI_CHIP_JUNIPER_68BF 0x68BF #define PCI_CHIP_CYPRESS_6880 0x6880 #define PCI_CHIP_CYPRESS_6888 0x6888 @@ -434,6 +437,7 @@ #define PCI_CHIP_CYPRESS_688A 0x688A #define PCI_CHIP_CYPRESS_6898 0x6898 #define PCI_CHIP_CYPRESS_6899 0x6899 +#define PCI_CHIP_CYPRESS_689B 0x689B #define PCI_CHIP_CYPRESS_689E 0x689E #define PCI_CHIP_HEMLOCK_689C 0x689C @@ -458,6 +462,7 @@ #define PCI_CHIP_BARTS_6729 0x6729 #define PCI_CHIP_BARTS_6738 0x6738 #define PCI_CHIP_BARTS_6739 0x6739 +#define PCI_CHIP_BARTS_673E 0x673E #define PCI_CHIP_TURKS_6740 0x6740 #define PCI_CHIP_TURKS_6741 0x6741 diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c index 732efe8bd85..6449229e088 100644 --- a/src/mesa/drivers/dri/radeon/radeon_screen.c +++ b/src/mesa/drivers/dri/radeon/radeon_screen.c @@ -1106,6 +1106,7 @@ static int radeon_set_screen_flags(radeonScreenPtr screen, int device_id) case PCI_CHIP_CEDAR_68E8: case PCI_CHIP_CEDAR_68E9: case PCI_CHIP_CEDAR_68F1: + case PCI_CHIP_CEDAR_68F2: case PCI_CHIP_CEDAR_68F8: case PCI_CHIP_CEDAR_68F9: case PCI_CHIP_CEDAR_68FE: @@ -1132,7 +1133,9 @@ static int radeon_set_screen_flags(radeonScreenPtr screen, int device_id) case PCI_CHIP_JUNIPER_68B0: case PCI_CHIP_JUNIPER_68B8: case PCI_CHIP_JUNIPER_68B9: + case PCI_CHIP_JUNIPER_68BA: case PCI_CHIP_JUNIPER_68BE: + case PCI_CHIP_JUNIPER_68BF: screen->chip_family = CHIP_FAMILY_JUNIPER; screen->chip_flags = RADEON_CHIPSET_TCL; break; @@ -1143,6 +1146,7 @@ static int radeon_set_screen_flags(radeonScreenPtr screen, int device_id) case PCI_CHIP_CYPRESS_688A: case PCI_CHIP_CYPRESS_6898: case PCI_CHIP_CYPRESS_6899: + case PCI_CHIP_CYPRESS_689B: case PCI_CHIP_CYPRESS_689E: screen->chip_family = CHIP_FAMILY_CYPRESS; screen->chip_flags = RADEON_CHIPSET_TCL; @@ -1176,6 +1180,7 @@ static int radeon_set_screen_flags(radeonScreenPtr screen, int device_id) case PCI_CHIP_BARTS_6729: case PCI_CHIP_BARTS_6738: case PCI_CHIP_BARTS_6739: + case PCI_CHIP_BARTS_673E: screen->chip_family = CHIP_FAMILY_BARTS; screen->chip_flags = RADEON_CHIPSET_TCL; break; diff --git a/src/mesa/drivers/windows/fx/fx.rc b/src/mesa/drivers/windows/fx/fx.rc deleted file mode 100644 index f920b8768dd..00000000000 --- a/src/mesa/drivers/windows/fx/fx.rc +++ /dev/null @@ -1,39 +0,0 @@ -#include <windows.h> - -#define PRODNAME "Mesa 6.x" -#define CONTACTSTR "http://www.mesa3d.org" -#define HWSTR "3dfx Voodoo Graphics, Voodoo Rush, Voodoo^2, Voodoo Banshee, Velocity 100/200, Voodoo3, Voodoo4, Voodoo5" -#define COPYRIGHTSTR "Copyright \251 Brian E. Paul" - -#define VERSIONSTR "6.3.0.1" -#define MANVERSION 6 -#define MANREVISION 3 -#define BUILD_NUMBER 1 - -VS_VERSION_INFO VERSIONINFO - FILEVERSION MANVERSION, MANREVISION, 0, BUILD_NUMBER - PRODUCTVERSION MANVERSION, MANREVISION, 0, BUILD_NUMBER - FILEFLAGSMASK 0x0030003FL - - FILEOS VOS_DOS_WINDOWS32 - FILETYPE VFT_DRV - FILESUBTYPE VFT2_DRV_INSTALLABLE -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904E4" - BEGIN - VALUE "FileDescription", PRODNAME - VALUE "FileVersion", VERSIONSTR - VALUE "LegalCopyright", COPYRIGHTSTR - VALUE "ProductName", PRODNAME - VALUE "Graphics Subsystem", HWSTR - VALUE "Contact", CONTACTSTR - END - END - BLOCK "VarFileInfo" - BEGIN - /* the following line should be extended for localized versions */ - VALUE "Translation", 0x409, 1252 - END -END diff --git a/src/mesa/drivers/windows/fx/fxopengl.def b/src/mesa/drivers/windows/fx/fxopengl.def deleted file mode 100644 index bc615e93ae6..00000000000 --- a/src/mesa/drivers/windows/fx/fxopengl.def +++ /dev/null @@ -1,953 +0,0 @@ -LIBRARY OpenGL32 -DESCRIPTION "Mesa 5.1" -EXPORTS - glAccum - glActiveStencilFaceEXT - glActiveTexture - glActiveTextureARB - glAlphaFunc - glAreProgramsResidentNV - glAreTexturesResident - glAreTexturesResidentEXT - glArrayElement - glArrayElementEXT - glBegin - glBeginQueryARB - glBindBufferARB - glBindProgramARB - glBindProgramNV - glBindTexture - glBindTextureEXT - glBitmap -;glBlendColor -;glBlendColorEXT - glBlendEquation - glBlendEquationEXT - glBlendFunc - glBlendFuncSeparate - glBlendFuncSeparateEXT - glBlendFuncSeparateINGR - glBufferDataARB - glBufferSubDataARB - glCallList - glCallLists - glClear - glClearAccum - glClearColor - glClearDepth - glClearIndex - glClearStencil - glClientActiveTexture - glClientActiveTextureARB - glClipPlane - glColorMask - glColorMaterial - glColorPointer - glColorPointerEXT - glColorSubTable - glColorSubTableEXT - glColorTable - glColorTableEXT - glColorTableParameterfv - glColorTableParameterfvSGI - glColorTableParameteriv - glColorTableParameterivSGI - glColorTableSGI - glColor3b - glColor3bv - glColor3d - glColor3dv - glColor3f - glColor3fv - glColor3i - glColor3iv - glColor3s - glColor3sv - glColor3ub - glColor3ubv - glColor3ui - glColor3uiv - glColor3us - glColor3usv - glColor4b - glColor4bv - glColor4d - glColor4dv - glColor4f - glColor4fv - glColor4i - glColor4iv - glColor4s - glColor4sv - glColor4ub - glColor4ubv - glColor4ui - glColor4uiv - glColor4us - glColor4usv - glCombinerInputNV - glCombinerOutputNV - glCombinerParameterfNV - glCombinerParameterfvNV - glCombinerParameteriNV - glCombinerParameterivNV - glCompressedTexImage1D - glCompressedTexImage1DARB - glCompressedTexImage2D - glCompressedTexImage2DARB - glCompressedTexImage3D - glCompressedTexImage3DARB - glCompressedTexSubImage1D - glCompressedTexSubImage1DARB - glCompressedTexSubImage2D - glCompressedTexSubImage2DARB - glCompressedTexSubImage3D - glCompressedTexSubImage3DARB - glConvolutionFilter1D - glConvolutionFilter1DEXT - glConvolutionFilter2D - glConvolutionFilter2DEXT - glConvolutionParameterf - glConvolutionParameterfEXT - glConvolutionParameterfv - glConvolutionParameterfvEXT - glConvolutionParameteri - glConvolutionParameteriEXT - glConvolutionParameteriv - glConvolutionParameterivEXT - glCopyColorSubTable - glCopyColorSubTableEXT - glCopyColorTable - glCopyColorTableSGI - glCopyConvolutionFilter1D - glCopyConvolutionFilter1DEXT - glCopyConvolutionFilter2D - glCopyConvolutionFilter2DEXT - glCopyPixels - glCopyTexImage1D - glCopyTexImage1DEXT - glCopyTexImage2D - glCopyTexImage2DEXT - glCopyTexSubImage1D - glCopyTexSubImage1DEXT - glCopyTexSubImage2D - glCopyTexSubImage2DEXT - glCopyTexSubImage3D - glCopyTexSubImage3DEXT - glCullFace - glDeleteBuffersARB - glDeleteFencesNV - glDeleteLists - glDeleteProgramsARB - glDeleteProgramsNV - glDeleteQueriesARB - glDeleteTextures - glDeleteTexturesEXT - glDepthBoundsEXT - glDepthFunc - glDepthMask - glDepthRange - glDetailTexFuncSGIS - glDisable - glDisableClientState - glDisableVertexAttribArrayARB - glDrawArrays - glDrawArraysEXT - glDrawBuffer - glDrawElements - glDrawPixels - glDrawRangeElements - glDrawRangeElementsEXT - glEdgeFlag - glEdgeFlagPointer - glEdgeFlagPointerEXT - glEdgeFlagv - glEnable - glEnableClientState - glEnableVertexAttribArrayARB - glEnd - glEndList - glEndQueryARB - glEvalCoord1d - glEvalCoord1dv - glEvalCoord1f - glEvalCoord1fv - glEvalCoord2d - glEvalCoord2dv - glEvalCoord2f - glEvalCoord2fv - glEvalMesh1 - glEvalMesh2 - glEvalPoint1 - glEvalPoint2 - glExecuteProgramNV - glFeedbackBuffer - glFinalCombinerInputNV - glFinish - glFinishFenceNV - glFlush - glFlushRasterSGIX - glFlushVertexArrayRangeNV - glFogCoordd - glFogCoorddEXT - glFogCoorddv - glFogCoorddvEXT - glFogCoordf - glFogCoordfEXT - glFogCoordfv - glFogCoordfvEXT - glFogCoordPointer - glFogCoordPointerEXT - glFogf - glFogfv - glFogi - glFogiv - glFragmentColorMaterialSGIX - glFragmentLightfSGIX - glFragmentLightfvSGIX - glFragmentLightiSGIX - glFragmentLightivSGIX - glFragmentLightModelfSGIX - glFragmentLightModelfvSGIX - glFragmentLightModeliSGIX - glFragmentLightModelivSGIX - glFragmentMaterialfSGIX - glFragmentMaterialfvSGIX - glFragmentMaterialiSGIX - glFragmentMaterialivSGIX - glFrameZoomSGIX - glFrontFace - glFrustum - glGenBuffersARB - glGenFencesNV - glGenLists - glGenProgramsARB - glGenProgramsNV - glGenQueriesARB - glGenTextures - glGenTexturesEXT - glGetBooleanv - glGetBufferParameterivARB - glGetBufferPointervARB - glGetBufferSubDataARB - glGetClipPlane - glGetColorTable - glGetColorTableEXT - glGetColorTableParameterfv - glGetColorTableParameterfvEXT - glGetColorTableParameterfvSGI - glGetColorTableParameteriv - glGetColorTableParameterivEXT - glGetColorTableParameterivSGI - glGetColorTableSGI - glGetCombinerInputParameterfvNV - glGetCombinerInputParameterivNV - glGetCombinerOutputParameterfvNV - glGetCombinerOutputParameterivNV - glGetCompressedTexImage - glGetCompressedTexImageARB - glGetConvolutionFilter - glGetConvolutionFilterEXT - glGetConvolutionParameterfv - glGetConvolutionParameterfvEXT - glGetConvolutionParameteriv - glGetConvolutionParameterivEXT - glGetDetailTexFuncSGIS - glGetDoublev - glGetError - glGetFenceivNV - glGetFinalCombinerInputParameterfvNV - glGetFinalCombinerInputParameterivNV - glGetFloatv - glGetFragmentLightfvSGIX - glGetFragmentLightivSGIX - glGetFragmentMaterialfvSGIX - glGetFragmentMaterialivSGIX - glGetHistogram - glGetHistogramEXT - glGetHistogramParameterfv - glGetHistogramParameterfvEXT - glGetHistogramParameteriv - glGetHistogramParameterivEXT - glGetInstrumentsSGIX - glGetIntegerv - glGetLightfv - glGetLightiv - glGetListParameterfvSGIX - glGetListParameterivSGIX - glGetMapdv - glGetMapfv - glGetMapiv - glGetMaterialfv - glGetMaterialiv - glGetMinmax - glGetMinmaxEXT - glGetMinmaxParameterfv - glGetMinmaxParameterfvEXT - glGetMinmaxParameteriv - glGetMinmaxParameterivEXT - glGetPixelMapfv - glGetPixelMapuiv - glGetPixelMapusv - glGetPixelTexGenParameterfvSGIS - glGetPixelTexGenParameterivSGIS - glGetPointerv - glGetPointervEXT - glGetPolygonStipple - glGetProgramEnvParameterdvARB - glGetProgramEnvParameterfvARB - glGetProgramivARB - glGetProgramivNV - glGetProgramLocalParameterdvARB - glGetProgramLocalParameterfvARB - glGetProgramNamedParameterdvNV - glGetProgramNamedParameterfvNV - glGetProgramParameterdvNV - glGetProgramParameterfvNV - glGetProgramStringARB - glGetProgramStringNV - glGetQueryivARB - glGetQueryObjectivARB - glGetQueryObjectuivARB - glGetSeparableFilter - glGetSeparableFilterEXT - glGetSharpenTexFuncSGIS - glGetString - glGetTexEnvfv - glGetTexEnviv - glGetTexFilterFuncSGIS - glGetTexGendv - glGetTexGenfv - glGetTexGeniv - glGetTexImage - glGetTexLevelParameterfv - glGetTexLevelParameteriv - glGetTexParameterfv - glGetTexParameteriv - glGetTrackMatrixivNV - glGetVertexAttribdvARB - glGetVertexAttribdvNV - glGetVertexAttribfvARB - glGetVertexAttribfvNV - glGetVertexAttribivARB - glGetVertexAttribivNV - glGetVertexAttribPointervARB - glGetVertexAttribPointervNV - glHint - glHintPGI - glHistogram - glHistogramEXT - glIndexd - glIndexdv - glIndexf - glIndexFuncEXT - glIndexfv - glIndexi - glIndexiv - glIndexMask - glIndexMaterialEXT - glIndexPointer - glIndexPointerEXT - glIndexs - glIndexsv - glIndexub - glIndexubv - glInitNames - glInstrumentsBufferSGIX - glInterleavedArrays - glIsBufferARB - glIsEnabled - glIsFenceNV - glIsList - glIsProgramARB - glIsProgramNV - glIsQueryARB - glIsTexture - glIsTextureEXT - glLightEnviSGIX - glLightf - glLightfv - glLighti - glLightiv - glLightModelf - glLightModelfv - glLightModeli - glLightModeliv - glLineStipple - glLineWidth - glListBase - glListParameterfSGIX - glListParameterfvSGIX - glListParameteriSGIX - glListParameterivSGIX - glLoadIdentity - glLoadMatrixd - glLoadMatrixf - glLoadName - glLoadProgramNV - glLoadTransposeMatrixd - glLoadTransposeMatrixdARB - glLoadTransposeMatrixf - glLoadTransposeMatrixfARB - glLockArraysEXT - glLogicOp - glMapBufferARB - glMapGrid1d - glMapGrid1f - glMapGrid2d - glMapGrid2f - glMap1d - glMap1f - glMap2d - glMap2f - glMaterialf - glMaterialfv - glMateriali - glMaterialiv - glMatrixMode - glMinmax - glMinmaxEXT - glMultiDrawArrays - glMultiDrawArraysEXT - glMultiDrawElements - glMultiDrawElementsEXT - glMultiModeDrawArraysIBM - glMultiModeDrawElementsIBM - glMultiTexCoord1d - glMultiTexCoord1dARB - glMultiTexCoord1dv - glMultiTexCoord1dvARB - glMultiTexCoord1f - glMultiTexCoord1fARB - glMultiTexCoord1fv - glMultiTexCoord1fvARB - glMultiTexCoord1i - glMultiTexCoord1iARB - glMultiTexCoord1iv - glMultiTexCoord1ivARB - glMultiTexCoord1s - glMultiTexCoord1sARB - glMultiTexCoord1sv - glMultiTexCoord1svARB - glMultiTexCoord2d - glMultiTexCoord2dARB - glMultiTexCoord2dv - glMultiTexCoord2dvARB - glMultiTexCoord2f - glMultiTexCoord2fARB - glMultiTexCoord2fv - glMultiTexCoord2fvARB - glMultiTexCoord2i - glMultiTexCoord2iARB - glMultiTexCoord2iv - glMultiTexCoord2ivARB - glMultiTexCoord2s - glMultiTexCoord2sARB - glMultiTexCoord2sv - glMultiTexCoord2svARB - glMultiTexCoord3d - glMultiTexCoord3dARB - glMultiTexCoord3dv - glMultiTexCoord3dvARB - glMultiTexCoord3f - glMultiTexCoord3fARB - glMultiTexCoord3fv - glMultiTexCoord3fvARB - glMultiTexCoord3i - glMultiTexCoord3iARB - glMultiTexCoord3iv - glMultiTexCoord3ivARB - glMultiTexCoord3s - glMultiTexCoord3sARB - glMultiTexCoord3sv - glMultiTexCoord3svARB - glMultiTexCoord4d - glMultiTexCoord4dARB - glMultiTexCoord4dv - glMultiTexCoord4dvARB - glMultiTexCoord4f - glMultiTexCoord4fARB - glMultiTexCoord4fv - glMultiTexCoord4fvARB - glMultiTexCoord4i - glMultiTexCoord4iARB - glMultiTexCoord4iv - glMultiTexCoord4ivARB - glMultiTexCoord4s - glMultiTexCoord4sARB - glMultiTexCoord4sv - glMultiTexCoord4svARB - glMultMatrixd - glMultMatrixf - glMultTransposeMatrixd - glMultTransposeMatrixdARB - glMultTransposeMatrixf - glMultTransposeMatrixfARB - glNewList - glNormalPointer - glNormalPointerEXT - glNormal3b - glNormal3bv - glNormal3d - glNormal3dv - glNormal3f - glNormal3fv - glNormal3i - glNormal3iv - glNormal3s - glNormal3sv - glOrtho - glPassThrough - glPixelMapfv - glPixelMapuiv - glPixelMapusv - glPixelStoref - glPixelStorei - glPixelTexGenParameterfSGIS - glPixelTexGenParameterfvSGIS - glPixelTexGenParameteriSGIS - glPixelTexGenParameterivSGIS - glPixelTexGenSGIX - glPixelTransferf - glPixelTransferi - glPixelZoom - glPointParameterf - glPointParameterfARB - glPointParameterfEXT - glPointParameterfSGIS - glPointParameterfv - glPointParameterfvARB - glPointParameterfvEXT - glPointParameterfvSGIS - glPointParameteri - glPointParameteriNV - glPointParameteriv - glPointParameterivNV - glPointSize - glPollInstrumentsSGIX - glPolygonMode - glPolygonOffset - glPolygonOffsetEXT - glPolygonStipple - glPopAttrib - glPopClientAttrib - glPopMatrix - glPopName - glPrioritizeTextures - glPrioritizeTexturesEXT - glProgramEnvParameter4dARB - glProgramEnvParameter4dvARB - glProgramEnvParameter4fARB - glProgramEnvParameter4fvARB - glProgramLocalParameter4dARB - glProgramLocalParameter4dvARB - glProgramLocalParameter4fARB - glProgramLocalParameter4fvARB - glProgramNamedParameter4dNV - glProgramNamedParameter4dvNV - glProgramNamedParameter4fNV - glProgramNamedParameter4fvNV - glProgramParameters4dvNV - glProgramParameters4fvNV - glProgramParameter4dNV - glProgramParameter4dvNV - glProgramParameter4fNV - glProgramParameter4fvNV - glProgramStringARB - glPushAttrib - glPushClientAttrib - glPushMatrix - glPushName - glRasterPos2d - glRasterPos2dv - glRasterPos2f - glRasterPos2fv - glRasterPos2i - glRasterPos2iv - glRasterPos2s - glRasterPos2sv - glRasterPos3d - glRasterPos3dv - glRasterPos3f - glRasterPos3fv - glRasterPos3i - glRasterPos3iv - glRasterPos3s - glRasterPos3sv - glRasterPos4d - glRasterPos4dv - glRasterPos4f - glRasterPos4fv - glRasterPos4i - glRasterPos4iv - glRasterPos4s - glRasterPos4sv - glReadBuffer - glReadInstrumentsSGIX - glReadPixels - glRectd - glRectdv - glRectf - glRectfv - glRecti - glRectiv - glRects - glRectsv - glReferencePlaneSGIX - glRenderMode - glRequestResidentProgramsNV - glResetHistogram - glResetHistogramEXT - glResetMinmax - glResetMinmaxEXT - glResizeBuffersMESA - glRotated - glRotatef - glSampleCoverage - glSampleCoverageARB - glSampleMaskEXT - glSampleMaskSGIS - glSamplePatternEXT - glSamplePatternSGIS - glScaled - glScalef - glScissor - glSecondaryColorPointer - glSecondaryColorPointerEXT - glSecondaryColor3b - glSecondaryColor3bEXT - glSecondaryColor3bv - glSecondaryColor3bvEXT - glSecondaryColor3d - glSecondaryColor3dEXT - glSecondaryColor3dv - glSecondaryColor3dvEXT - glSecondaryColor3f - glSecondaryColor3fEXT - glSecondaryColor3fv - glSecondaryColor3fvEXT - glSecondaryColor3i - glSecondaryColor3iEXT - glSecondaryColor3iv - glSecondaryColor3ivEXT - glSecondaryColor3s - glSecondaryColor3sEXT - glSecondaryColor3sv - glSecondaryColor3svEXT - glSecondaryColor3ub - glSecondaryColor3ubEXT - glSecondaryColor3ubv - glSecondaryColor3ubvEXT - glSecondaryColor3ui - glSecondaryColor3uiEXT - glSecondaryColor3uiv - glSecondaryColor3uivEXT - glSecondaryColor3us - glSecondaryColor3usEXT - glSecondaryColor3usv - glSecondaryColor3usvEXT - glSelectBuffer - glSeparableFilter2D - glSeparableFilter2DEXT - glSetFenceNV - glShadeModel - glSharpenTexFuncSGIS - glSpriteParameterfSGIX - glSpriteParameterfvSGIX - glSpriteParameteriSGIX - glSpriteParameterivSGIX - glStartInstrumentsSGIX - glStencilFunc - glStencilMask - glStencilOp - glStopInstrumentsSGIX - glTagSampleBufferSGIX - glTbufferMask3DFX - glTestFenceNV - glTexCoordPointer - glTexCoordPointerEXT - glTexCoord1d - glTexCoord1dv - glTexCoord1f - glTexCoord1fv - glTexCoord1i - glTexCoord1iv - glTexCoord1s - glTexCoord1sv - glTexCoord2d - glTexCoord2dv - glTexCoord2f - glTexCoord2fv - glTexCoord2i - glTexCoord2iv - glTexCoord2s - glTexCoord2sv - glTexCoord3d - glTexCoord3dv - glTexCoord3f - glTexCoord3fv - glTexCoord3i - glTexCoord3iv - glTexCoord3s - glTexCoord3sv - glTexCoord4d - glTexCoord4dv - glTexCoord4f - glTexCoord4fv - glTexCoord4i - glTexCoord4iv - glTexCoord4s - glTexCoord4sv - glTexEnvf - glTexEnvfv - glTexEnvi - glTexEnviv - glTexFilterFuncSGIS - glTexGend - glTexGendv - glTexGenf - glTexGenfv - glTexGeni - glTexGeniv - glTexImage1D - glTexImage2D - glTexImage3D - glTexImage3DEXT - glTexImage4DSGIS - glTexParameterf - glTexParameterfv - glTexParameteri - glTexParameteriv - glTexSubImage1D - glTexSubImage1DEXT - glTexSubImage2D - glTexSubImage2DEXT - glTexSubImage3D - glTexSubImage3DEXT - glTexSubImage4DSGIS - glTrackMatrixNV - glTranslated - glTranslatef - glUnlockArraysEXT - glUnmapBufferARB - glVertexArrayRangeNV - glVertexAttribPointerARB - glVertexAttribPointerNV - glVertexAttribs1dvNV - glVertexAttribs1fvNV - glVertexAttribs1svNV - glVertexAttribs2dvNV - glVertexAttribs2fvNV - glVertexAttribs2svNV - glVertexAttribs3dvNV - glVertexAttribs3fvNV - glVertexAttribs3svNV - glVertexAttribs4dvNV - glVertexAttribs4fvNV - glVertexAttribs4svNV - glVertexAttribs4ubvNV - glVertexAttrib1dARB - glVertexAttrib1dNV - glVertexAttrib1dvARB - glVertexAttrib1dvNV - glVertexAttrib1fARB - glVertexAttrib1fNV - glVertexAttrib1fvARB - glVertexAttrib1fvNV - glVertexAttrib1sARB - glVertexAttrib1sNV - glVertexAttrib1svARB - glVertexAttrib1svNV - glVertexAttrib2dARB - glVertexAttrib2dNV - glVertexAttrib2dvARB - glVertexAttrib2dvNV - glVertexAttrib2fARB - glVertexAttrib2fNV - glVertexAttrib2fvARB - glVertexAttrib2fvNV - glVertexAttrib2sARB - glVertexAttrib2sNV - glVertexAttrib2svARB - glVertexAttrib2svNV - glVertexAttrib3dARB - glVertexAttrib3dNV - glVertexAttrib3dvARB - glVertexAttrib3dvNV - glVertexAttrib3fARB - glVertexAttrib3fNV - glVertexAttrib3fvARB - glVertexAttrib3fvNV - glVertexAttrib3sARB - glVertexAttrib3sNV - glVertexAttrib3svARB - glVertexAttrib3svNV - glVertexAttrib4bvARB - glVertexAttrib4dARB - glVertexAttrib4dNV - glVertexAttrib4dvARB - glVertexAttrib4dvNV - glVertexAttrib4fARB - glVertexAttrib4fNV - glVertexAttrib4fvARB - glVertexAttrib4fvNV - glVertexAttrib4ivARB - glVertexAttrib4NbvARB - glVertexAttrib4NivARB - glVertexAttrib4NsvARB - glVertexAttrib4NubARB - glVertexAttrib4NubvARB - glVertexAttrib4NuivARB - glVertexAttrib4NusvARB - glVertexAttrib4sARB - glVertexAttrib4sNV - glVertexAttrib4svARB - glVertexAttrib4svNV - glVertexAttrib4ubNV - glVertexAttrib4ubvARB - glVertexAttrib4ubvNV - glVertexAttrib4uivARB - glVertexAttrib4usvARB - glVertexPointer - glVertexPointerEXT - glVertexWeightfEXT - glVertexWeightfvEXT - glVertexWeightPointerEXT - glVertex2d - glVertex2dv - glVertex2f - glVertex2fv - glVertex2i - glVertex2iv - glVertex2s - glVertex2sv - glVertex3d - glVertex3dv - glVertex3f - glVertex3fv - glVertex3i - glVertex3iv - glVertex3s - glVertex3sv - glVertex4d - glVertex4dv - glVertex4f - glVertex4fv - glVertex4i - glVertex4iv - glVertex4s - glVertex4sv - glViewport - glWindowPos2d - glWindowPos2dARB - glWindowPos2dMESA - glWindowPos2dv - glWindowPos2dvARB - glWindowPos2dvMESA - glWindowPos2f - glWindowPos2fARB - glWindowPos2fMESA - glWindowPos2fv - glWindowPos2fvARB - glWindowPos2fvMESA - glWindowPos2i - glWindowPos2iARB - glWindowPos2iMESA - glWindowPos2iv - glWindowPos2ivARB - glWindowPos2ivMESA - glWindowPos2s - glWindowPos2sARB - glWindowPos2sMESA - glWindowPos2sv - glWindowPos2svARB - glWindowPos2svMESA - glWindowPos3d - glWindowPos3dARB - glWindowPos3dMESA - glWindowPos3dv - glWindowPos3dvARB - glWindowPos3dvMESA - glWindowPos3f - glWindowPos3fARB - glWindowPos3fMESA - glWindowPos3fv - glWindowPos3fvARB - glWindowPos3fvMESA - glWindowPos3i - glWindowPos3iARB - glWindowPos3iMESA - glWindowPos3iv - glWindowPos3ivARB - glWindowPos3ivMESA - glWindowPos3s - glWindowPos3sARB - glWindowPos3sMESA - glWindowPos3sv - glWindowPos3svARB - glWindowPos3svMESA - glWindowPos4dMESA - glWindowPos4dvMESA - glWindowPos4fMESA - glWindowPos4fvMESA - glWindowPos4iMESA - glWindowPos4ivMESA - glWindowPos4sMESA - glWindowPos4svMESA - fxCloseHardware -;fxGetScreenGeometry - fxMesaCreateBestContext - fxMesaCreateContext - fxMesaDestroyContext - fxMesaGetCurrentContext - fxMesaMakeCurrent - fxMesaSelectCurrentBoard -;fxMesaSetNearFar - fxMesaSwapBuffers - fxMesaUpdateScreenSize - wglChoosePixelFormat - wglCopyContext - wglCreateContext - wglCreateLayerContext - wglDeleteContext - wglDescribeLayerPlane - wglDescribePixelFormat - wglGetCurrentContext - wglGetCurrentDC - wglGetDefaultProcAddress - wglGetLayerPaletteEntries - wglGetPixelFormat - wglGetProcAddress - wglMakeCurrent - wglRealizeLayerPalette - wglSetLayerPaletteEntries - wglSetPixelFormat - wglShareLists - wglSwapBuffers - wglSwapLayerBuffers - wglUseFontBitmapsA - wglUseFontBitmapsW - wglUseFontOutlinesA - wglUseFontOutlinesW - ChoosePixelFormat - DescribePixelFormat - GetPixelFormat - SetPixelFormat - SwapBuffers - DrvCopyContext - DrvCreateContext - DrvCreateLayerContext - DrvDeleteContext - DrvDescribeLayerPlane - DrvDescribePixelFormat - DrvGetLayerPaletteEntries - DrvGetProcAddress - DrvReleaseContext - DrvRealizeLayerPalette - DrvSetContext - DrvSetLayerPaletteEntries - DrvSetPixelFormat - DrvShareLists - DrvSwapBuffers - DrvSwapLayerBuffers - DrvValidateVersion diff --git a/src/mesa/drivers/windows/fx/fxwgl.c b/src/mesa/drivers/windows/fx/fxwgl.c deleted file mode 100644 index ce76ecd1568..00000000000 --- a/src/mesa/drivers/windows/fx/fxwgl.c +++ /dev/null @@ -1,1307 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 4.0 - * - * Copyright (C) 1999-2001 Brian Paul All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN - * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -/* Authors: - * David Bucciarelli - * Brian Paul - * Keith Whitwell - * Hiroshi Morii - * Daniel Borca - */ - -/* fxwgl.c - Microsoft wgl functions emulation for - * 3Dfx VooDoo/Mesa interface - */ - - -#ifdef _WIN32 - -#ifdef __cplusplus -extern "C" { -#endif - -#include <windows.h> -#define GL_GLEXT_PROTOTYPES -#include "GL/gl.h" -#include "GL/glext.h" - -#ifdef __cplusplus -} -#endif - -#include "GL/fxmesa.h" -#include "glheader.h" -#include "glapi.h" -#include "imports.h" -#include "../../glide/fxdrv.h" - -#define MAX_MESA_ATTRS 20 - -#if (_MSC_VER >= 1200) -#pragma warning( push ) -#pragma warning( disable : 4273 ) -#endif - -struct __extensions__ { - PROC proc; - char *name; -}; - -struct __pixelformat__ { - PIXELFORMATDESCRIPTOR pfd; - GLint mesaAttr[MAX_MESA_ATTRS]; -}; - -WINGDIAPI void GLAPIENTRY gl3DfxSetPaletteEXT(GLuint *); -static GLushort gammaTable[3 * 256]; - -struct __pixelformat__ pix[] = { - /* 16bit RGB565 single buffer with depth */ - { - {sizeof(PIXELFORMATDESCRIPTOR), 1, - PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL, - PFD_TYPE_RGBA, - 16, - 5, 0, 6, 5, 5, 11, 0, 0, - 0, 0, 0, 0, 0, - 16, - 0, - 0, - PFD_MAIN_PLANE, - 0, 0, 0, 0} - , - {FXMESA_COLORDEPTH, 16, - FXMESA_ALPHA_SIZE, 0, - FXMESA_DEPTH_SIZE, 16, - FXMESA_STENCIL_SIZE, 0, - FXMESA_ACCUM_SIZE, 0, - FXMESA_NONE} - } - , - /* 16bit RGB565 double buffer with depth */ - { - {sizeof(PIXELFORMATDESCRIPTOR), 1, - PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | - PFD_DOUBLEBUFFER | PFD_SWAP_COPY, - PFD_TYPE_RGBA, - 16, - 5, 0, 6, 5, 5, 11, 0, 0, - 0, 0, 0, 0, 0, - 16, - 0, - 0, - PFD_MAIN_PLANE, - 0, 0, 0, 0} - , - {FXMESA_COLORDEPTH, 16, - FXMESA_DOUBLEBUFFER, - FXMESA_ALPHA_SIZE, 0, - FXMESA_DEPTH_SIZE, 16, - FXMESA_STENCIL_SIZE, 0, - FXMESA_ACCUM_SIZE, 0, - FXMESA_NONE} - } - , - /* 16bit ARGB1555 single buffer with depth */ - { - {sizeof(PIXELFORMATDESCRIPTOR), 1, - PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL, - PFD_TYPE_RGBA, - 16, - 5, 0, 5, 5, 5, 10, 1, 15, - 0, 0, 0, 0, 0, - 16, - 0, - 0, - PFD_MAIN_PLANE, - 0, 0, 0, 0} - , - {FXMESA_COLORDEPTH, 15, - FXMESA_ALPHA_SIZE, 1, - FXMESA_DEPTH_SIZE, 16, - FXMESA_STENCIL_SIZE, 0, - FXMESA_ACCUM_SIZE, 0, - FXMESA_NONE} - } - , - /* 16bit ARGB1555 double buffer with depth */ - { - {sizeof(PIXELFORMATDESCRIPTOR), 1, - PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | - PFD_DOUBLEBUFFER | PFD_SWAP_COPY, - PFD_TYPE_RGBA, - 16, - 5, 0, 5, 5, 5, 10, 1, 15, - 0, 0, 0, 0, 0, - 16, - 0, - 0, - PFD_MAIN_PLANE, - 0, 0, 0, 0} - , - {FXMESA_COLORDEPTH, 15, - FXMESA_DOUBLEBUFFER, - FXMESA_ALPHA_SIZE, 1, - FXMESA_DEPTH_SIZE, 16, - FXMESA_STENCIL_SIZE, 0, - FXMESA_ACCUM_SIZE, 0, - FXMESA_NONE} - } - , - /* 32bit ARGB8888 single buffer with depth */ - { - {sizeof(PIXELFORMATDESCRIPTOR), 1, - PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL, - PFD_TYPE_RGBA, - 32, - 8, 0, 8, 8, 8, 16, 8, 24, - 0, 0, 0, 0, 0, - 24, - 8, - 0, - PFD_MAIN_PLANE, - 0, 0, 0, 0} - , - {FXMESA_COLORDEPTH, 32, - FXMESA_ALPHA_SIZE, 8, - FXMESA_DEPTH_SIZE, 24, - FXMESA_STENCIL_SIZE, 8, - FXMESA_ACCUM_SIZE, 0, - FXMESA_NONE} - } - , - /* 32bit ARGB8888 double buffer with depth */ - { - {sizeof(PIXELFORMATDESCRIPTOR), 1, - PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | - PFD_DOUBLEBUFFER | PFD_SWAP_COPY, - PFD_TYPE_RGBA, - 32, - 8, 0, 8, 8, 8, 16, 8, 24, - 0, 0, 0, 0, 0, - 24, - 8, - 0, - PFD_MAIN_PLANE, - 0, 0, 0, 0} - , - {FXMESA_COLORDEPTH, 32, - FXMESA_DOUBLEBUFFER, - FXMESA_ALPHA_SIZE, 8, - FXMESA_DEPTH_SIZE, 24, - FXMESA_STENCIL_SIZE, 8, - FXMESA_ACCUM_SIZE, 0, - FXMESA_NONE} - } -}; - -static fxMesaContext ctx = NULL; -static WNDPROC hWNDOldProc; -static int curPFD = 0; -static HDC hDC; -static HWND hWND; - -static GLboolean haveDualHead; - -/* For the in-window-rendering hack */ - -#ifndef GR_CONTROL_RESIZE -/* Apparently GR_CONTROL_RESIZE can be ignored. OK? */ -#define GR_CONTROL_RESIZE -1 -#endif - -static GLboolean gdiWindowHack; -static void *dibSurfacePtr; -static BITMAPINFO *dibBMI; -static HBITMAP dibHBM; -static HWND dibWnd; - -static int -env_check (const char *var, int val) -{ - const char *env = getenv(var); - return (env && (env[0] == val)); -} - -static LRESULT APIENTRY -__wglMonitor (HWND hwnd, UINT message, UINT wParam, LONG lParam) -{ - long ret; /* Now gives the resized window at the end to hWNDOldProc */ - - if (ctx && hwnd == hWND) { - switch (message) { - case WM_PAINT: - case WM_MOVE: - break; - case WM_DISPLAYCHANGE: - case WM_SIZE: -#if 0 - if (wParam != SIZE_MINIMIZED) { - static int moving = 0; - if (!moving) { - if (!FX_grSstControl(GR_CONTROL_RESIZE)) { - moving = 1; - SetWindowPos(hwnd, 0, 0, 0, 300, 300, SWP_NOMOVE | SWP_NOZORDER); - moving = 0; - if (!FX_grSstControl(GR_CONTROL_RESIZE)) { - /*MessageBox(0,_T("Error changing windowsize"),_T("fxMESA"),MB_OK);*/ - PostMessage(hWND, WM_CLOSE, 0, 0); - } - } - /* Do the clipping in the glide library */ - grClipWindow(0, 0, FX_grSstScreenWidth(), FX_grSstScreenHeight()); - /* And let the new size set in the context */ - fxMesaUpdateScreenSize(ctx); - } - } -#endif - break; - case WM_ACTIVATE: - break; - case WM_SHOWWINDOW: - break; - case WM_SYSKEYDOWN: - case WM_SYSCHAR: - break; - } - } - - /* Finally call the hWNDOldProc, which handles the resize with the - * now changed window sizes */ - ret = CallWindowProc(hWNDOldProc, hwnd, message, wParam, lParam); - - return ret; -} - -static void -wgl_error (long error) -{ -#define WGL_INVALID_PIXELFORMAT ERROR_INVALID_PIXEL_FORMAT - SetLastError(0xC0000000 /* error severity */ - |0x00070000 /* error facility (who we are) */ - |error); -} - -GLAPI BOOL GLAPIENTRY -wglCopyContext (HGLRC hglrcSrc, HGLRC hglrcDst, UINT mask) -{ - return FALSE; -} - -GLAPI HGLRC GLAPIENTRY -wglCreateContext (HDC hdc) -{ - HWND hWnd; - WNDPROC oldProc; - int error; - - if (ctx) { - SetLastError(0); - return NULL; - } - - if (!(hWnd = WindowFromDC(hdc))) { - SetLastError(0); - return NULL; - } - - if (curPFD == 0) { - wgl_error(WGL_INVALID_PIXELFORMAT); - return NULL; - } - - if ((oldProc = (WNDPROC)GetWindowLong(hWnd, GWL_WNDPROC)) != __wglMonitor) { - hWNDOldProc = oldProc; - SetWindowLong(hWnd, GWL_WNDPROC, (LONG)__wglMonitor); - } - - /* always log when debugging, or if user demands */ - if (TDFX_DEBUG || env_check("MESA_FX_INFO", 'r')) { - freopen("MESA.LOG", "w", stderr); - } - - { - RECT cliRect; - ShowWindow(hWnd, SW_SHOWNORMAL); - SetForegroundWindow(hWnd); - Sleep(100); /* a hack for win95 */ - if (env_check("MESA_GLX_FX", 'w') && !(GetWindowLong(hWnd, GWL_STYLE) & WS_POPUP)) { - /* XXX todo - windowed modes */ - error = !(ctx = fxMesaCreateContext((GLuint) hWnd, GR_RESOLUTION_NONE, GR_REFRESH_NONE, pix[curPFD - 1].mesaAttr)); - } else { - GetClientRect(hWnd, &cliRect); - error = !(ctx = fxMesaCreateBestContext((GLuint) hWnd, cliRect.right, cliRect.bottom, pix[curPFD - 1].mesaAttr)); - } - } - - /*if (getenv("SST_DUALHEAD")) - haveDualHead = - ((atoi(getenv("SST_DUALHEAD")) == 1) ? GL_TRUE : GL_FALSE); - else - haveDualHead = GL_FALSE;*/ - - if (error) { - SetLastError(0); - return NULL; - } - - hDC = hdc; - hWND = hWnd; - - /* Required by the OpenGL Optimizer 1.1 (is it a Optimizer bug ?) */ - wglMakeCurrent(hdc, (HGLRC)1); - - return (HGLRC)1; -} - -GLAPI HGLRC GLAPIENTRY -wglCreateLayerContext (HDC hdc, int iLayerPlane) -{ - SetLastError(0); - return NULL; -} - -GLAPI BOOL GLAPIENTRY -wglDeleteContext (HGLRC hglrc) -{ - if (ctx && hglrc == (HGLRC)1) { - - fxMesaDestroyContext(ctx); - - SetWindowLong(WindowFromDC(hDC), GWL_WNDPROC, (LONG) hWNDOldProc); - - ctx = NULL; - hDC = 0; - return TRUE; - } - - SetLastError(0); - - return FALSE; -} - -GLAPI HGLRC GLAPIENTRY -wglGetCurrentContext (VOID) -{ - if (ctx) - return (HGLRC)1; - - SetLastError(0); - return NULL; -} - -GLAPI HDC GLAPIENTRY -wglGetCurrentDC (VOID) -{ - if (ctx) - return hDC; - - SetLastError(0); - return NULL; -} - -GLAPI BOOL GLAPIENTRY -wglSwapIntervalEXT (int interval) -{ - if (ctx == NULL) { - return FALSE; - } - if (interval < 0) { - interval = 0; - } else if (interval > 3) { - interval = 3; - } - ctx->swapInterval = interval; - return TRUE; -} - -GLAPI int GLAPIENTRY -wglGetSwapIntervalEXT (void) -{ - return (ctx == NULL) ? -1 : ctx->swapInterval; -} - -GLAPI BOOL GLAPIENTRY -wglGetDeviceGammaRamp3DFX (HDC hdc, LPVOID arrays) -{ - /* gammaTable should be per-context */ - memcpy(arrays, gammaTable, 3 * 256 * sizeof(GLushort)); - return TRUE; -} - -GLAPI BOOL GLAPIENTRY -wglSetDeviceGammaRamp3DFX (HDC hdc, LPVOID arrays) -{ - GLint i, tableSize, inc, index; - GLushort *red, *green, *blue; - FxU32 gammaTableR[256], gammaTableG[256], gammaTableB[256]; - - /* gammaTable should be per-context */ - memcpy(gammaTable, arrays, 3 * 256 * sizeof(GLushort)); - - tableSize = FX_grGetInteger(GR_GAMMA_TABLE_ENTRIES); - inc = 256 / tableSize; - red = (GLushort *)arrays; - green = (GLushort *)arrays + 256; - blue = (GLushort *)arrays + 512; - for (i = 0, index = 0; i < tableSize; i++, index += inc) { - gammaTableR[i] = red[index] >> 8; - gammaTableG[i] = green[index] >> 8; - gammaTableB[i] = blue[index] >> 8; - } - - grLoadGammaTable(tableSize, gammaTableR, gammaTableG, gammaTableB); - - return TRUE; -} - -typedef void *HPBUFFERARB; - -/* WGL_ARB_pixel_format */ -GLAPI BOOL GLAPIENTRY -wglGetPixelFormatAttribivARB (HDC hdc, - int iPixelFormat, - int iLayerPlane, - UINT nAttributes, - const int *piAttributes, - int *piValues) -{ - SetLastError(0); - return FALSE; -} - -GLAPI BOOL GLAPIENTRY -wglGetPixelFormatAttribfvARB (HDC hdc, - int iPixelFormat, - int iLayerPlane, - UINT nAttributes, - const int *piAttributes, - FLOAT *pfValues) -{ - SetLastError(0); - return FALSE; -} - -GLAPI BOOL GLAPIENTRY -wglChoosePixelFormatARB (HDC hdc, - const int *piAttribIList, - const FLOAT *pfAttribFList, - UINT nMaxFormats, - int *piFormats, - UINT *nNumFormats) -{ - SetLastError(0); - return FALSE; -} - -/* WGL_ARB_render_texture */ -GLAPI BOOL GLAPIENTRY -wglBindTexImageARB (HPBUFFERARB hPbuffer, int iBuffer) -{ - SetLastError(0); - return FALSE; -} - -GLAPI BOOL GLAPIENTRY -wglReleaseTexImageARB (HPBUFFERARB hPbuffer, int iBuffer) -{ - SetLastError(0); - return FALSE; -} - -GLAPI BOOL GLAPIENTRY -wglSetPbufferAttribARB (HPBUFFERARB hPbuffer, - const int *piAttribList) -{ - SetLastError(0); - return FALSE; -} - -/* WGL_ARB_pbuffer */ -GLAPI HPBUFFERARB GLAPIENTRY -wglCreatePbufferARB (HDC hDC, - int iPixelFormat, - int iWidth, - int iHeight, - const int *piAttribList) -{ - SetLastError(0); - return NULL; -} - -GLAPI HDC GLAPIENTRY -wglGetPbufferDCARB (HPBUFFERARB hPbuffer) -{ - SetLastError(0); - return NULL; -} - -GLAPI int GLAPIENTRY -wglReleasePbufferDCARB (HPBUFFERARB hPbuffer, HDC hDC) -{ - SetLastError(0); - return -1; -} - -GLAPI BOOL GLAPIENTRY -wglDestroyPbufferARB (HPBUFFERARB hPbuffer) -{ - SetLastError(0); - return FALSE; -} - -GLAPI BOOL GLAPIENTRY -wglQueryPbufferARB (HPBUFFERARB hPbuffer, - int iAttribute, - int *piValue) -{ - SetLastError(0); - return FALSE; -} - -GLAPI const char * GLAPIENTRY -wglGetExtensionsStringEXT (void) -{ - return "WGL_3DFX_gamma_control " - "WGL_EXT_swap_control " - "WGL_EXT_extensions_string WGL_ARB_extensions_string" - /*WGL_ARB_pixel_format WGL_ARB_render_texture WGL_ARB_pbuffer*/; -} - -GLAPI const char * GLAPIENTRY -wglGetExtensionsStringARB (HDC hdc) -{ - return wglGetExtensionsStringEXT(); -} - -static struct { - const char *name; - PROC func; -} wgl_ext[] = { - {"wglGetExtensionsStringARB", (PROC)wglGetExtensionsStringARB}, - {"wglGetExtensionsStringEXT", (PROC)wglGetExtensionsStringEXT}, - {"wglSwapIntervalEXT", (PROC)wglSwapIntervalEXT}, - {"wglGetSwapIntervalEXT", (PROC)wglGetSwapIntervalEXT}, - {"wglGetDeviceGammaRamp3DFX", (PROC)wglGetDeviceGammaRamp3DFX}, - {"wglSetDeviceGammaRamp3DFX", (PROC)wglSetDeviceGammaRamp3DFX}, - /* WGL_ARB_pixel_format */ - {"wglGetPixelFormatAttribivARB", (PROC)wglGetPixelFormatAttribivARB}, - {"wglGetPixelFormatAttribfvARB", (PROC)wglGetPixelFormatAttribfvARB}, - {"wglChoosePixelFormatARB", (PROC)wglChoosePixelFormatARB}, - /* WGL_ARB_render_texture */ - {"wglBindTexImageARB", (PROC)wglBindTexImageARB}, - {"wglReleaseTexImageARB", (PROC)wglReleaseTexImageARB}, - {"wglSetPbufferAttribARB", (PROC)wglSetPbufferAttribARB}, - /* WGL_ARB_pbuffer */ - {"wglCreatePbufferARB", (PROC)wglCreatePbufferARB}, - {"wglGetPbufferDCARB", (PROC)wglGetPbufferDCARB}, - {"wglReleasePbufferDCARB", (PROC)wglReleasePbufferDCARB}, - {"wglDestroyPbufferARB", (PROC)wglDestroyPbufferARB}, - {"wglQueryPbufferARB", (PROC)wglQueryPbufferARB}, - {NULL, NULL} -}; - -GLAPI PROC GLAPIENTRY -wglGetProcAddress (LPCSTR lpszProc) -{ - int i; - PROC p = (PROC)_glapi_get_proc_address((const char *)lpszProc); - - /* we can't BlendColor. work around buggy applications */ - if (p && strcmp(lpszProc, "glBlendColor") - && strcmp(lpszProc, "glBlendColorEXT")) - return p; - - for (i = 0; wgl_ext[i].name; i++) { - if (!strcmp(lpszProc, wgl_ext[i].name)) { - return wgl_ext[i].func; - } - } - - SetLastError(0); - return NULL; -} - -GLAPI PROC GLAPIENTRY -wglGetDefaultProcAddress (LPCSTR lpszProc) -{ - SetLastError(0); - return NULL; -} - -GLAPI BOOL GLAPIENTRY -wglMakeCurrent (HDC hdc, HGLRC hglrc) -{ - if ((hdc == NULL) && (hglrc == NULL)) - return TRUE; - - if (!ctx || hglrc != (HGLRC)1 || WindowFromDC(hdc) != hWND) { - SetLastError(0); - return FALSE; - } - - hDC = hdc; - - fxMesaMakeCurrent(ctx); - - return TRUE; -} - -GLAPI BOOL GLAPIENTRY -wglShareLists (HGLRC hglrc1, HGLRC hglrc2) -{ - if (!ctx || hglrc1 != (HGLRC)1 || hglrc1 != hglrc2) { - SetLastError(0); - return FALSE; - } - - return TRUE; -} - -static BOOL -wglUseFontBitmaps_FX (HDC fontDevice, DWORD firstChar, DWORD numChars, - DWORD listBase) -{ - TEXTMETRIC metric; - BITMAPINFO *dibInfo; - HDC bitDevice; - COLORREF tempColor; - int i; - - GetTextMetrics(fontDevice, &metric); - - dibInfo = (BITMAPINFO *)calloc(sizeof(BITMAPINFO) + sizeof(RGBQUAD), 1); - dibInfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); - dibInfo->bmiHeader.biPlanes = 1; - dibInfo->bmiHeader.biBitCount = 1; - dibInfo->bmiHeader.biCompression = BI_RGB; - - bitDevice = CreateCompatibleDC(fontDevice); - - /* Swap fore and back colors so the bitmap has the right polarity */ - tempColor = GetBkColor(bitDevice); - SetBkColor(bitDevice, GetTextColor(bitDevice)); - SetTextColor(bitDevice, tempColor); - - /* Place chars based on base line */ - SetTextAlign(bitDevice, TA_BASELINE); - - for (i = 0; i < (int)numChars; i++) { - SIZE size; - char curChar; - int charWidth, charHeight, bmapWidth, bmapHeight, numBytes, res; - HBITMAP bitObject; - HGDIOBJ origBmap; - unsigned char *bmap; - - curChar = (char)(i + firstChar); /* [koolsmoky] explicit cast */ - - /* Find how high/wide this character is */ - GetTextExtentPoint32(bitDevice, &curChar, 1, &size); - - /* Create the output bitmap */ - charWidth = size.cx; - charHeight = size.cy; - bmapWidth = ((charWidth + 31) / 32) * 32; /* Round up to the next multiple of 32 bits */ - bmapHeight = charHeight; - bitObject = CreateCompatibleBitmap(bitDevice, bmapWidth, bmapHeight); - /*VERIFY(bitObject);*/ - - /* Assign the output bitmap to the device */ - origBmap = SelectObject(bitDevice, bitObject); - - PatBlt(bitDevice, 0, 0, bmapWidth, bmapHeight, BLACKNESS); - - /* Use our source font on the device */ - SelectObject(bitDevice, GetCurrentObject(fontDevice, OBJ_FONT)); - - /* Draw the character */ - TextOut(bitDevice, 0, metric.tmAscent, &curChar, 1); - - /* Unselect our bmap object */ - SelectObject(bitDevice, origBmap); - - /* Convert the display dependant representation to a 1 bit deep DIB */ - numBytes = (bmapWidth * bmapHeight) / 8; - bmap = MALLOC(numBytes); - dibInfo->bmiHeader.biWidth = bmapWidth; - dibInfo->bmiHeader.biHeight = bmapHeight; - res = GetDIBits(bitDevice, bitObject, 0, bmapHeight, bmap, - dibInfo, DIB_RGB_COLORS); - - /* Create the GL object */ - glNewList(i + listBase, GL_COMPILE); - glBitmap(bmapWidth, bmapHeight, 0.0, metric.tmDescent, - charWidth, 0.0, bmap); - glEndList(); - /* CheckGL(); */ - - /* Destroy the bmap object */ - DeleteObject(bitObject); - - /* Deallocate the bitmap data */ - FREE(bmap); - } - - /* Destroy the DC */ - DeleteDC(bitDevice); - - FREE(dibInfo); - - return TRUE; -} - -GLAPI BOOL GLAPIENTRY -wglUseFontBitmapsW (HDC hdc, DWORD first, DWORD count, DWORD listBase) -{ - return FALSE; -} - -GLAPI BOOL GLAPIENTRY -wglUseFontOutlinesA (HDC hdc, DWORD first, DWORD count, - DWORD listBase, FLOAT deviation, - FLOAT extrusion, int format, LPGLYPHMETRICSFLOAT lpgmf) -{ - SetLastError(0); - return FALSE; -} - -GLAPI BOOL GLAPIENTRY -wglUseFontOutlinesW (HDC hdc, DWORD first, DWORD count, - DWORD listBase, FLOAT deviation, - FLOAT extrusion, int format, LPGLYPHMETRICSFLOAT lpgmf) -{ - SetLastError(0); - return FALSE; -} - - -GLAPI BOOL GLAPIENTRY -wglSwapLayerBuffers (HDC hdc, UINT fuPlanes) -{ - if (ctx && WindowFromDC(hdc) == hWND) { - fxMesaSwapBuffers(); - - return TRUE; - } - - SetLastError(0); - return FALSE; -} - -static int -pfd_tablen (void) -{ - /* we should take an envvar for `fxMesaSelectCurrentBoard' */ - return (fxMesaSelectCurrentBoard(0) < GR_SSTTYPE_Voodoo4) - ? 2 /* only 16bit entries */ - : sizeof(pix) / sizeof(pix[0]); /* full table */ -} - -GLAPI int GLAPIENTRY -wglChoosePixelFormat (HDC hdc, const PIXELFORMATDESCRIPTOR *ppfd) -{ - int i, best = -1, qt_valid_pix; - PIXELFORMATDESCRIPTOR pfd = *ppfd; - - qt_valid_pix = pfd_tablen(); - -#if 1 || QUAKE2 || GORE - /* QUAKE2: 24+32 */ - /* GORE : 24+16 */ - if ((pfd.cColorBits == 24) || (pfd.cColorBits == 32)) { - /* the first 2 entries are 16bit */ - pfd.cColorBits = (qt_valid_pix > 2) ? 32 : 16; - } - if (pfd.cColorBits == 32) { - pfd.cDepthBits = 24; - } else if (pfd.cColorBits == 16) { - pfd.cDepthBits = 16; - } -#endif - - if (pfd.nSize != sizeof(PIXELFORMATDESCRIPTOR) || pfd.nVersion != 1) { - SetLastError(0); - return 0; - } - - for (i = 0; i < qt_valid_pix; i++) { - if (pfd.cColorBits > 0 && pix[i].pfd.cColorBits != pfd.cColorBits) - continue; - - if ((pfd.dwFlags & PFD_DRAW_TO_WINDOW) - && !(pix[i].pfd.dwFlags & PFD_DRAW_TO_WINDOW)) continue; - if ((pfd.dwFlags & PFD_DRAW_TO_BITMAP) - && !(pix[i].pfd.dwFlags & PFD_DRAW_TO_BITMAP)) continue; - if ((pfd.dwFlags & PFD_SUPPORT_GDI) - && !(pix[i].pfd.dwFlags & PFD_SUPPORT_GDI)) continue; - if ((pfd.dwFlags & PFD_SUPPORT_OPENGL) - && !(pix[i].pfd.dwFlags & PFD_SUPPORT_OPENGL)) continue; - if (!(pfd.dwFlags & PFD_DOUBLEBUFFER_DONTCARE) - && ((pfd.dwFlags & PFD_DOUBLEBUFFER) != - (pix[i].pfd.dwFlags & PFD_DOUBLEBUFFER))) continue; -#if 1 /* Doom3 fails here! */ - if (!(pfd.dwFlags & PFD_STEREO_DONTCARE) - && ((pfd.dwFlags & PFD_STEREO) != - (pix[i].pfd.dwFlags & PFD_STEREO))) continue; -#endif - - if (pfd.cDepthBits > 0 && pix[i].pfd.cDepthBits == 0) - continue; /* need depth buffer */ - - if (pfd.cAlphaBits > 0 && pix[i].pfd.cAlphaBits == 0) - continue; /* need alpha buffer */ - -#if 0 /* regression bug? */ - if (pfd.cStencilBits > 0 && pix[i].pfd.cStencilBits == 0) - continue; /* need stencil buffer */ -#endif - - if (pfd.iPixelType == pix[i].pfd.iPixelType) { - best = i + 1; - break; - } - } - - if (best == -1) { - FILE *err = fopen("MESA.LOG", "w"); - if (err != NULL) { - fprintf(err, "wglChoosePixelFormat failed\n"); - fprintf(err, "\tnSize = %d\n", ppfd->nSize); - fprintf(err, "\tnVersion = %d\n", ppfd->nVersion); - fprintf(err, "\tdwFlags = %lu\n", ppfd->dwFlags); - fprintf(err, "\tiPixelType = %d\n", ppfd->iPixelType); - fprintf(err, "\tcColorBits = %d\n", ppfd->cColorBits); - fprintf(err, "\tcRedBits = %d\n", ppfd->cRedBits); - fprintf(err, "\tcRedShift = %d\n", ppfd->cRedShift); - fprintf(err, "\tcGreenBits = %d\n", ppfd->cGreenBits); - fprintf(err, "\tcGreenShift = %d\n", ppfd->cGreenShift); - fprintf(err, "\tcBlueBits = %d\n", ppfd->cBlueBits); - fprintf(err, "\tcBlueShift = %d\n", ppfd->cBlueShift); - fprintf(err, "\tcAlphaBits = %d\n", ppfd->cAlphaBits); - fprintf(err, "\tcAlphaShift = %d\n", ppfd->cAlphaShift); - fprintf(err, "\tcAccumBits = %d\n", ppfd->cAccumBits); - fprintf(err, "\tcAccumRedBits = %d\n", ppfd->cAccumRedBits); - fprintf(err, "\tcAccumGreenBits = %d\n", ppfd->cAccumGreenBits); - fprintf(err, "\tcAccumBlueBits = %d\n", ppfd->cAccumBlueBits); - fprintf(err, "\tcAccumAlphaBits = %d\n", ppfd->cAccumAlphaBits); - fprintf(err, "\tcDepthBits = %d\n", ppfd->cDepthBits); - fprintf(err, "\tcStencilBits = %d\n", ppfd->cStencilBits); - fprintf(err, "\tcAuxBuffers = %d\n", ppfd->cAuxBuffers); - fprintf(err, "\tiLayerType = %d\n", ppfd->iLayerType); - fprintf(err, "\tbReserved = %d\n", ppfd->bReserved); - fprintf(err, "\tdwLayerMask = %lu\n", ppfd->dwLayerMask); - fprintf(err, "\tdwVisibleMask = %lu\n", ppfd->dwVisibleMask); - fprintf(err, "\tdwDamageMask = %lu\n", ppfd->dwDamageMask); - fclose(err); - } - - SetLastError(0); - return 0; - } - - return best; -} - -GLAPI int GLAPIENTRY -ChoosePixelFormat (HDC hdc, const PIXELFORMATDESCRIPTOR *ppfd) -{ - - return wglChoosePixelFormat(hdc, ppfd); -} - -GLAPI int GLAPIENTRY -wglDescribePixelFormat (HDC hdc, int iPixelFormat, UINT nBytes, - LPPIXELFORMATDESCRIPTOR ppfd) -{ - int qt_valid_pix; - - qt_valid_pix = pfd_tablen(); - - if (iPixelFormat < 1 || iPixelFormat > qt_valid_pix || - ((nBytes != sizeof(PIXELFORMATDESCRIPTOR)) && (nBytes != 0))) { - SetLastError(0); - return qt_valid_pix; - } - - if (nBytes != 0) - *ppfd = pix[iPixelFormat - 1].pfd; - - return qt_valid_pix; -} - -GLAPI int GLAPIENTRY -DescribePixelFormat (HDC hdc, int iPixelFormat, UINT nBytes, - LPPIXELFORMATDESCRIPTOR ppfd) -{ - return wglDescribePixelFormat(hdc, iPixelFormat, nBytes, ppfd); -} - -GLAPI int GLAPIENTRY -wglGetPixelFormat (HDC hdc) -{ - if (curPFD == 0) { - SetLastError(0); - return 0; - } - - return curPFD; -} - -GLAPI int GLAPIENTRY -GetPixelFormat (HDC hdc) -{ - return wglGetPixelFormat(hdc); -} - -GLAPI BOOL GLAPIENTRY -wglSetPixelFormat (HDC hdc, int iPixelFormat, const PIXELFORMATDESCRIPTOR *ppfd) -{ - int qt_valid_pix; - - qt_valid_pix = pfd_tablen(); - - if (iPixelFormat < 1 || iPixelFormat > qt_valid_pix) { - if (ppfd == NULL) { - PIXELFORMATDESCRIPTOR my_pfd; - if (!wglDescribePixelFormat(hdc, iPixelFormat, sizeof(PIXELFORMATDESCRIPTOR), &my_pfd)) { - SetLastError(0); - return FALSE; - } - } else if (ppfd->nSize != sizeof(PIXELFORMATDESCRIPTOR)) { - SetLastError(0); - return FALSE; - } - } - curPFD = iPixelFormat; - - return TRUE; -} - -GLAPI BOOL GLAPIENTRY -wglSwapBuffers (HDC hdc) -{ - if (!ctx) { - SetLastError(0); - return FALSE; - } - - fxMesaSwapBuffers(); - - return TRUE; -} - -GLAPI BOOL GLAPIENTRY -SetPixelFormat (HDC hdc, int iPixelFormat, const PIXELFORMATDESCRIPTOR *ppfd) -{ - return wglSetPixelFormat(hdc, iPixelFormat, ppfd); -} - -GLAPI BOOL GLAPIENTRY -SwapBuffers(HDC hdc) -{ - return wglSwapBuffers(hdc); -} - -static FIXED -FixedFromDouble (double d) -{ - struct { - FIXED f; - long l; - } pun; - pun.l = (long)(d * 65536L); - return pun.f; -} - -/* -** This was yanked from windows/gdi/wgl.c -*/ -GLAPI BOOL GLAPIENTRY -wglUseFontBitmapsA (HDC hdc, DWORD first, DWORD count, DWORD listBase) -{ - int i; - GLuint font_list; - DWORD size; - GLYPHMETRICS gm; - HANDLE hBits; - LPSTR lpBits; - MAT2 mat; - int success = TRUE; - - font_list = listBase; - - mat.eM11 = FixedFromDouble(1); - mat.eM12 = FixedFromDouble(0); - mat.eM21 = FixedFromDouble(0); - mat.eM22 = FixedFromDouble(-1); - - memset(&gm, 0, sizeof(gm)); - - /* - ** If we can't get the glyph outline, it may be because this is a fixed - ** font. Try processing it that way. - */ - if (GetGlyphOutline(hdc, first, GGO_BITMAP, &gm, 0, NULL, &mat) == GDI_ERROR) { - return wglUseFontBitmaps_FX(hdc, first, count, listBase); - } - - /* - ** Otherwise process all desired characters. - */ - for (i = 0; i < count; i++) { - DWORD err; - - glNewList(font_list + i, GL_COMPILE); - - /* allocate space for the bitmap/outline */ - size = GetGlyphOutline(hdc, first + i, GGO_BITMAP, &gm, 0, NULL, &mat); - if (size == GDI_ERROR) { - glEndList(); - err = GetLastError(); - success = FALSE; - continue; - } - - hBits = GlobalAlloc(GHND, size + 1); - lpBits = GlobalLock(hBits); - - err = GetGlyphOutline(hdc, /* handle to device context */ - first + i, /* character to query */ - GGO_BITMAP, /* format of data to return */ - &gm, /* pointer to structure for metrics */ - size, /* size of buffer for data */ - lpBits, /* pointer to buffer for data */ - &mat /* pointer to transformation */ - /* matrix structure */ - ); - - if (err == GDI_ERROR) { - GlobalUnlock(hBits); - GlobalFree(hBits); - - glEndList(); - err = GetLastError(); - success = FALSE; - continue; - } - - glBitmap(gm.gmBlackBoxX, gm.gmBlackBoxY, - -gm.gmptGlyphOrigin.x, - gm.gmptGlyphOrigin.y, - gm.gmCellIncX, gm.gmCellIncY, - (const GLubyte *)lpBits); - - GlobalUnlock(hBits); - GlobalFree(hBits); - - glEndList(); - } - - return success; -} - -GLAPI BOOL GLAPIENTRY -wglDescribeLayerPlane (HDC hdc, int iPixelFormat, int iLayerPlane, - UINT nBytes, LPLAYERPLANEDESCRIPTOR ppfd) -{ - SetLastError(0); - return FALSE; -} - -GLAPI int GLAPIENTRY -wglGetLayerPaletteEntries (HDC hdc, int iLayerPlane, int iStart, - int cEntries, COLORREF *pcr) -{ - SetLastError(0); - return FALSE; -} - -GLAPI BOOL GLAPIENTRY -wglRealizeLayerPalette (HDC hdc, int iLayerPlane, BOOL bRealize) -{ - SetLastError(0); - return FALSE; -} - -GLAPI int GLAPIENTRY -wglSetLayerPaletteEntries (HDC hdc, int iLayerPlane, int iStart, - int cEntries, CONST COLORREF *pcr) -{ - SetLastError(0); - return FALSE; -} - - -/*************************************************************************** - * [dBorca] simplistic ICD implementation, based on ICD code by Gregor Anich - */ - -typedef struct _icdTable { - DWORD size; - PROC table[336]; -} ICDTABLE, *PICDTABLE; - -#ifdef USE_MGL_NAMESPACE -#define GL_FUNC(func) mgl##func -#else -#define GL_FUNC(func) gl##func -#endif - -static ICDTABLE icdTable = { 336, { -#define ICD_ENTRY(func) (PROC)GL_FUNC(func), -#include "../icd/icdlist.h" -#undef ICD_ENTRY -} }; - - -GLAPI BOOL GLAPIENTRY -DrvCopyContext (HGLRC hglrcSrc, HGLRC hglrcDst, UINT mask) -{ - return wglCopyContext(hglrcSrc, hglrcDst, mask); -} - - -GLAPI HGLRC GLAPIENTRY -DrvCreateContext (HDC hdc) -{ - return wglCreateContext(hdc); -} - - -GLAPI BOOL GLAPIENTRY -DrvDeleteContext (HGLRC hglrc) -{ - return wglDeleteContext(hglrc); -} - - -GLAPI HGLRC GLAPIENTRY -DrvCreateLayerContext (HDC hdc, int iLayerPlane) -{ - return wglCreateContext(hdc); -} - - -GLAPI PICDTABLE GLAPIENTRY -DrvSetContext (HDC hdc, HGLRC hglrc, void *callback) -{ - return wglMakeCurrent(hdc, hglrc) ? &icdTable : NULL; -} - - -GLAPI BOOL GLAPIENTRY -DrvReleaseContext (HGLRC hglrc) -{ - return TRUE; -} - - -GLAPI BOOL GLAPIENTRY -DrvShareLists (HGLRC hglrc1, HGLRC hglrc2) -{ - return wglShareLists(hglrc1, hglrc2); -} - - -GLAPI BOOL GLAPIENTRY -DrvDescribeLayerPlane (HDC hdc, int iPixelFormat, - int iLayerPlane, UINT nBytes, - LPLAYERPLANEDESCRIPTOR plpd) -{ - return wglDescribeLayerPlane(hdc, iPixelFormat, iLayerPlane, nBytes, plpd); -} - - -GLAPI int GLAPIENTRY -DrvSetLayerPaletteEntries (HDC hdc, int iLayerPlane, - int iStart, int cEntries, CONST COLORREF *pcr) -{ - return wglSetLayerPaletteEntries(hdc, iLayerPlane, iStart, cEntries, pcr); -} - - -GLAPI int GLAPIENTRY -DrvGetLayerPaletteEntries (HDC hdc, int iLayerPlane, - int iStart, int cEntries, COLORREF *pcr) -{ - return wglGetLayerPaletteEntries(hdc, iLayerPlane, iStart, cEntries, pcr); -} - - -GLAPI BOOL GLAPIENTRY -DrvRealizeLayerPalette (HDC hdc, int iLayerPlane, BOOL bRealize) -{ - return wglRealizeLayerPalette(hdc, iLayerPlane, bRealize); -} - - -GLAPI BOOL GLAPIENTRY -DrvSwapLayerBuffers (HDC hdc, UINT fuPlanes) -{ - return wglSwapLayerBuffers(hdc, fuPlanes); -} - -GLAPI int GLAPIENTRY -DrvDescribePixelFormat (HDC hdc, int iPixelFormat, UINT nBytes, - LPPIXELFORMATDESCRIPTOR ppfd) -{ - return wglDescribePixelFormat(hdc, iPixelFormat, nBytes, ppfd); -} - - -GLAPI PROC GLAPIENTRY -DrvGetProcAddress (LPCSTR lpszProc) -{ - return wglGetProcAddress(lpszProc); -} - - -GLAPI BOOL GLAPIENTRY -DrvSetPixelFormat (HDC hdc, int iPixelFormat) -{ - return wglSetPixelFormat(hdc, iPixelFormat, NULL); -} - - -GLAPI BOOL GLAPIENTRY -DrvSwapBuffers (HDC hdc) -{ - return wglSwapBuffers(hdc); -} - - -GLAPI BOOL GLAPIENTRY -DrvValidateVersion (DWORD version) -{ - (void)version; - return TRUE; -} - - -#if (_MSC_VER >= 1200) -#pragma warning( pop ) -#endif - -#endif /* FX */ diff --git a/src/mesa/drivers/windows/gdi/InitCritSections.cpp b/src/mesa/drivers/windows/gdi/InitCritSections.cpp deleted file mode 100644 index 69f03b8e47c..00000000000 --- a/src/mesa/drivers/windows/gdi/InitCritSections.cpp +++ /dev/null @@ -1,33 +0,0 @@ -#include "glapi.h" -#include "glThread.h" - -#ifdef WIN32 - -extern "C" _glthread_Mutex OneTimeLock; -extern "C" _glthread_Mutex GenTexturesLock; - -extern "C" void FreeAllTSD(void); - -class _CriticalSectionInit -{ -public: - static _CriticalSectionInit m_inst; - - _CriticalSectionInit() - { - _glthread_INIT_MUTEX(OneTimeLock); - _glthread_INIT_MUTEX(GenTexturesLock); - } - - ~_CriticalSectionInit() - { - _glthread_DESTROY_MUTEX(OneTimeLock); - _glthread_DESTROY_MUTEX(GenTexturesLock); - FreeAllTSD(); - } -}; - -_CriticalSectionInit _CriticalSectionInit::m_inst; - - -#endif /* WIN32 */ diff --git a/src/mesa/drivers/windows/gdi/wgl.c b/src/mesa/drivers/windows/gdi/wgl.c index 1dafe6e2952..bf4ca9c908f 100644 --- a/src/mesa/drivers/windows/gdi/wgl.c +++ b/src/mesa/drivers/windows/gdi/wgl.c @@ -390,7 +390,7 @@ static FIXED FixedFromDouble(double d) static BOOL wglUseFontBitmaps_FX(HDC fontDevice, DWORD firstChar, DWORD numChars, DWORD listBase) { -#define VERIFY(a) a +#define VERIFY(a) (void)(a) TEXTMETRIC metric; BITMAPINFO *dibInfo; diff --git a/src/mesa/drivers/windows/gdi/wmesa.c b/src/mesa/drivers/windows/gdi/wmesa.c index e3a37eb1ace..35a150d0687 100644 --- a/src/mesa/drivers/windows/gdi/wmesa.c +++ b/src/mesa/drivers/windows/gdi/wmesa.c @@ -5,7 +5,7 @@ #include "wmesadef.h" #include "colors.h" -#include <GL/wmesa.h> +#include "GL/wmesa.h" #include <winuser.h> #include "main/context.h" #include "main/extensions.h" @@ -30,7 +30,7 @@ static WMesaFramebuffer FirstFramebuffer = NULL; * Create a new WMesaFramebuffer object which will correspond to the * given HDC (Window handle). */ -WMesaFramebuffer +static WMesaFramebuffer wmesa_new_framebuffer(HDC hdc, struct gl_config *visual) { WMesaFramebuffer pwfb @@ -48,7 +48,7 @@ wmesa_new_framebuffer(HDC hdc, struct gl_config *visual) /** * Given an hdc, free the corresponding WMesaFramebuffer */ -void +static void wmesa_free_framebuffer(HDC hdc) { WMesaFramebuffer pwfb, prev; @@ -71,7 +71,7 @@ wmesa_free_framebuffer(HDC hdc) /** * Given an hdc, return the corresponding WMesaFramebuffer */ -WMesaFramebuffer +static WMesaFramebuffer wmesa_lookup_framebuffer(HDC hdc) { WMesaFramebuffer pwfb; @@ -147,9 +147,8 @@ static void wmSetPixelFormat(WMesaFramebuffer pwfb, HDC hDC) * We write into this memory with the span routines and then blit it * to the window on a buffer swap. */ -BOOL wmCreateBackingStore(WMesaFramebuffer pwfb, long lxSize, long lySize) +static BOOL wmCreateBackingStore(WMesaFramebuffer pwfb, long lxSize, long lySize) { - HDC hdc = pwfb->hDC; LPBITMAPINFO pbmi = &(pwfb->bmi); HDC hic; @@ -227,7 +226,6 @@ wmesa_get_buffer_size(struct gl_framebuffer *buffer, GLuint *width, GLuint *heig static void wmesa_flush(struct gl_context *ctx) { - WMesaContext pwc = wmesa_context(ctx); WMesaFramebuffer pwfb = wmesa_framebuffer(ctx->WinSysDrawBuffer); if (ctx->Visual.doubleBufferMode == 1) { @@ -254,9 +252,7 @@ static void wmesa_flush(struct gl_context *ctx) static void clear_color(struct gl_context *ctx, const GLfloat color[4]) { WMesaContext pwc = wmesa_context(ctx); - WMesaFramebuffer pwfb = wmesa_framebuffer(ctx->DrawBuffer); GLubyte col[3]; - UINT bytesPerPixel = pwfb->cColorBits / 8; CLAMPED_FLOAT_TO_UBYTE(col[0], color[0]); CLAMPED_FLOAT_TO_UBYTE(col[1], color[1]); @@ -448,21 +444,15 @@ static void clear(struct gl_context *ctx, GLbitfield mask) **/ /* Write a horizontal span of RGBA color pixels with a boolean mask. */ -static void write_rgba_span_front(const struct gl_context *ctx, - struct gl_renderbuffer *rb, - GLuint n, GLint x, GLint y, - const GLubyte rgba[][4], - const GLubyte mask[] ) +static void write_rgba_span_front(struct gl_context *ctx, + struct gl_renderbuffer *rb, + GLuint n, GLint x, GLint y, + const void *values, + const GLubyte *mask) { + const GLubyte (*rgba)[4] = (const GLubyte (*)[4])values; WMesaContext pwc = wmesa_context(ctx); WMesaFramebuffer pwfb = wmesa_lookup_framebuffer(pwc->hDC); - CONST BITMAPINFO bmi= - { - { - sizeof(BITMAPINFOHEADER), - n, 1, 1, 32, BI_RGB, 0, 1, 1, 0, 0 - } - }; HBITMAP bmp=0; HDC mdc=0; typedef union @@ -535,12 +525,13 @@ static void write_rgba_span_front(const struct gl_context *ctx, } /* Write a horizontal span of RGB color pixels with a boolean mask. */ -static void write_rgb_span_front(const struct gl_context *ctx, - struct gl_renderbuffer *rb, - GLuint n, GLint x, GLint y, - const GLubyte rgb[][3], - const GLubyte mask[] ) +static void write_rgb_span_front(struct gl_context *ctx, + struct gl_renderbuffer *rb, + GLuint n, GLint x, GLint y, + const void *values, + const GLubyte *mask) { + const GLubyte (*rgb)[3] = (const GLubyte (*)[3])values; WMesaContext pwc = wmesa_context(ctx); GLuint i; @@ -564,12 +555,13 @@ static void write_rgb_span_front(const struct gl_context *ctx, * Write a horizontal span of pixels with a boolean mask. The current color * is used for all pixels. */ -static void write_mono_rgba_span_front(const struct gl_context *ctx, - struct gl_renderbuffer *rb, - GLuint n, GLint x, GLint y, - const GLchan color[4], - const GLubyte mask[]) +static void write_mono_rgba_span_front(struct gl_context *ctx, + struct gl_renderbuffer *rb, + GLuint n, GLint x, GLint y, + const void *value, + const GLubyte *mask) { + const GLchan *color = (const GLchan *)value; GLuint i; WMesaContext pwc = wmesa_context(ctx); COLORREF colorref; @@ -589,13 +581,14 @@ static void write_mono_rgba_span_front(const struct gl_context *ctx, } /* Write an array of RGBA pixels with a boolean mask. */ -static void write_rgba_pixels_front(const struct gl_context *ctx, - struct gl_renderbuffer *rb, - GLuint n, - const GLint x[], const GLint y[], - const GLubyte rgba[][4], - const GLubyte mask[] ) +static void write_rgba_pixels_front(struct gl_context *ctx, + struct gl_renderbuffer *rb, + GLuint n, + const GLint x[], const GLint y[], + const void *values, + const GLubyte *mask) { + const GLubyte (*rgba)[4] = (const GLubyte (*)[4])values; GLuint i; WMesaContext pwc = wmesa_context(ctx); (void) ctx; @@ -612,13 +605,14 @@ static void write_rgba_pixels_front(const struct gl_context *ctx, * Write an array of pixels with a boolean mask. The current color * is used for all pixels. */ -static void write_mono_rgba_pixels_front(const struct gl_context *ctx, - struct gl_renderbuffer *rb, - GLuint n, - const GLint x[], const GLint y[], - const GLchan color[4], - const GLubyte mask[] ) +static void write_mono_rgba_pixels_front(struct gl_context *ctx, + struct gl_renderbuffer *rb, + GLuint n, + const GLint x[], const GLint y[], + const void *value, + const GLubyte *mask) { + const GLchan *color = (const GLchan *)value; GLuint i; WMesaContext pwc = wmesa_context(ctx); COLORREF colorref; @@ -630,11 +624,12 @@ static void write_mono_rgba_pixels_front(const struct gl_context *ctx, } /* Read a horizontal span of color pixels. */ -static void read_rgba_span_front(const struct gl_context *ctx, - struct gl_renderbuffer *rb, - GLuint n, GLint x, GLint y, - GLubyte rgba[][4] ) +static void read_rgba_span_front(struct gl_context *ctx, + struct gl_renderbuffer *rb, + GLuint n, GLint x, GLint y, + void *values) { + GLubyte (*rgba)[4] = (GLubyte (*)[4])values; WMesaContext pwc = wmesa_context(ctx); GLuint i; COLORREF Color; @@ -650,11 +645,12 @@ static void read_rgba_span_front(const struct gl_context *ctx, /* Read an array of color pixels. */ -static void read_rgba_pixels_front(const struct gl_context *ctx, - struct gl_renderbuffer *rb, - GLuint n, const GLint x[], const GLint y[], - GLubyte rgba[][4]) +static void read_rgba_pixels_front(struct gl_context *ctx, + struct gl_renderbuffer *rb, + GLuint n, const GLint x[], const GLint y[], + void *values) { + GLubyte (*rgba)[4] = (GLubyte (*)[4])values; WMesaContext pwc = wmesa_context(ctx); GLuint i; COLORREF Color; @@ -679,13 +675,13 @@ LPDWORD lpdw = ((LPDWORD)((pwc)->pbPixels + (pwc)->ScanWidth * (y)) + (x)); \ /* Write a horizontal span of RGBA color pixels with a boolean mask. */ -static void write_rgba_span_32(const struct gl_context *ctx, +static void write_rgba_span_32(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, - const GLubyte rgba[][4], - const GLubyte mask[] ) + const void *values, + const GLubyte *mask) { - WMesaContext pwc = wmesa_context(ctx); + const GLubyte (*rgba)[4] = (const GLubyte (*)[4])values; WMesaFramebuffer pwfb = wmesa_framebuffer(ctx->DrawBuffer); GLuint i; LPDWORD lpdw; @@ -709,13 +705,13 @@ static void write_rgba_span_32(const struct gl_context *ctx, /* Write a horizontal span of RGB color pixels with a boolean mask. */ -static void write_rgb_span_32(const struct gl_context *ctx, +static void write_rgb_span_32(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, - const GLubyte rgb[][3], - const GLubyte mask[] ) + const void *values, + const GLubyte *mask) { - WMesaContext pwc = wmesa_context(ctx); + const GLubyte (*rgb)[3] = (const GLubyte (*)[3])values; WMesaFramebuffer pwfb = wmesa_framebuffer(ctx->DrawBuffer); GLuint i; LPDWORD lpdw; @@ -741,16 +737,16 @@ static void write_rgb_span_32(const struct gl_context *ctx, * Write a horizontal span of pixels with a boolean mask. The current color * is used for all pixels. */ -static void write_mono_rgba_span_32(const struct gl_context *ctx, +static void write_mono_rgba_span_32(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, - const GLchan color[4], - const GLubyte mask[]) + const void *value, + const GLubyte *mask) { + const GLchan *color = (const GLchan *)value; LPDWORD lpdw; DWORD pixel; GLuint i; - WMesaContext pwc = wmesa_context(ctx); WMesaFramebuffer pwfb = wmesa_framebuffer(ctx->DrawBuffer); lpdw = ((LPDWORD)(pwfb->pbPixels + pwfb->ScanWidth * y)) + x; y=FLIP(y); @@ -767,14 +763,14 @@ static void write_mono_rgba_span_32(const struct gl_context *ctx, } /* Write an array of RGBA pixels with a boolean mask. */ -static void write_rgba_pixels_32(const struct gl_context *ctx, +static void write_rgba_pixels_32(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], - const GLubyte rgba[][4], - const GLubyte mask[]) + const void *values, + const GLubyte *mask) { + const GLubyte (*rgba)[4] = (const GLubyte (*)[4])values; GLuint i; - WMesaContext pwc = wmesa_context(ctx); WMesaFramebuffer pwfb = wmesa_framebuffer(ctx->DrawBuffer); for (i=0; i<n; i++) if (mask[i]) @@ -786,15 +782,15 @@ static void write_rgba_pixels_32(const struct gl_context *ctx, * Write an array of pixels with a boolean mask. The current color * is used for all pixels. */ -static void write_mono_rgba_pixels_32(const struct gl_context *ctx, +static void write_mono_rgba_pixels_32(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], - const GLchan color[4], - const GLubyte mask[]) + const void *value, + const GLubyte *mask) { + const GLchan *color = (const GLchan *)value; GLuint i; - WMesaContext pwc = wmesa_context(ctx); WMesaFramebuffer pwfb = wmesa_framebuffer(ctx->DrawBuffer); for (i=0; i<n; i++) if (mask[i]) @@ -803,15 +799,15 @@ static void write_mono_rgba_pixels_32(const struct gl_context *ctx, } /* Read a horizontal span of color pixels. */ -static void read_rgba_span_32(const struct gl_context *ctx, +static void read_rgba_span_32(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, - GLubyte rgba[][4] ) + void *values) { + GLubyte (*rgba)[4] = (GLubyte (*)[4])values; GLuint i; DWORD pixel; LPDWORD lpdw; - WMesaContext pwc = wmesa_context(ctx); WMesaFramebuffer pwfb = wmesa_framebuffer(ctx->DrawBuffer); y = FLIP(y); @@ -827,15 +823,15 @@ static void read_rgba_span_32(const struct gl_context *ctx, /* Read an array of color pixels. */ -static void read_rgba_pixels_32(const struct gl_context *ctx, +static void read_rgba_pixels_32(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], - GLubyte rgba[][4]) + void *values) { + GLubyte (*rgba)[4] = (GLubyte (*)[4])values; GLuint i; DWORD pixel; LPDWORD lpdw; - WMesaContext pwc = wmesa_context(ctx); WMesaFramebuffer pwfb = wmesa_framebuffer(ctx->DrawBuffer); for (i=0; i<n; i++) { @@ -861,13 +857,13 @@ lpb[1] = (g); \ lpb[2] = (r); } /* Write a horizontal span of RGBA color pixels with a boolean mask. */ -static void write_rgba_span_24(const struct gl_context *ctx, +static void write_rgba_span_24(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, - const GLubyte rgba[][4], - const GLubyte mask[] ) + const void *values, + const GLubyte *mask) { - WMesaContext pwc = wmesa_context(ctx); + const GLubyte (*rgba)[4] = (const GLubyte (*)[4])values; WMesaFramebuffer pwfb = wmesa_framebuffer(ctx->DrawBuffer); GLuint i; LPBYTE lpb; @@ -895,13 +891,13 @@ static void write_rgba_span_24(const struct gl_context *ctx, /* Write a horizontal span of RGB color pixels with a boolean mask. */ -static void write_rgb_span_24(const struct gl_context *ctx, +static void write_rgb_span_24(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, - const GLubyte rgb[][3], - const GLubyte mask[] ) + const void *values, + const GLubyte *mask) { - WMesaContext pwc = wmesa_context(ctx); + const GLubyte (*rgb)[3] = (const GLubyte (*)[3])values; WMesaFramebuffer pwfb = wmesa_framebuffer(ctx->DrawBuffer); GLuint i; LPBYTE lpb; @@ -931,15 +927,15 @@ static void write_rgb_span_24(const struct gl_context *ctx, * Write a horizontal span of pixels with a boolean mask. The current color * is used for all pixels. */ -static void write_mono_rgba_span_24(const struct gl_context *ctx, +static void write_mono_rgba_span_24(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, - const GLchan color[4], - const GLubyte mask[]) + const void *value, + const GLubyte *mask) { + const GLchan *color = (const GLchan *)value; LPBYTE lpb; GLuint i; - WMesaContext pwc = wmesa_context(ctx); WMesaFramebuffer pwfb = wmesa_framebuffer(ctx->DrawBuffer); lpb = ((LPBYTE)(pwfb->pbPixels + pwfb->ScanWidth * y)) + (3 * x); y=FLIP(y); @@ -960,14 +956,14 @@ static void write_mono_rgba_span_24(const struct gl_context *ctx, } /* Write an array of RGBA pixels with a boolean mask. */ -static void write_rgba_pixels_24(const struct gl_context *ctx, +static void write_rgba_pixels_24(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], - const GLubyte rgba[][4], - const GLubyte mask[]) + const void *values, + const GLubyte *mask) { + const GLubyte (*rgba)[4] = (const GLubyte (*)[4])values; GLuint i; - WMesaContext pwc = wmesa_context(ctx); WMesaFramebuffer pwfb = wmesa_framebuffer(ctx->DrawBuffer); for (i=0; i<n; i++) if (mask[i]) @@ -979,15 +975,15 @@ static void write_rgba_pixels_24(const struct gl_context *ctx, * Write an array of pixels with a boolean mask. The current color * is used for all pixels. */ -static void write_mono_rgba_pixels_24(const struct gl_context *ctx, +static void write_mono_rgba_pixels_24(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], - const GLchan color[4], - const GLubyte mask[]) + const void *value, + const GLubyte *mask) { + const GLchan *color = (const GLchan *)value; GLuint i; - WMesaContext pwc = wmesa_context(ctx); WMesaFramebuffer pwfb = wmesa_framebuffer(ctx->DrawBuffer); for (i=0; i<n; i++) if (mask[i]) @@ -996,14 +992,14 @@ static void write_mono_rgba_pixels_24(const struct gl_context *ctx, } /* Read a horizontal span of color pixels. */ -static void read_rgba_span_24(const struct gl_context *ctx, +static void read_rgba_span_24(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, - GLubyte rgba[][4] ) + void *values) { + GLubyte (*rgba)[4] = (GLubyte (*)[4])values; GLuint i; LPBYTE lpb; - WMesaContext pwc = wmesa_context(ctx); WMesaFramebuffer pwfb = wmesa_framebuffer(ctx->DrawBuffer); y = FLIP(y); @@ -1018,14 +1014,14 @@ static void read_rgba_span_24(const struct gl_context *ctx, /* Read an array of color pixels. */ -static void read_rgba_pixels_24(const struct gl_context *ctx, +static void read_rgba_pixels_24(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], - GLubyte rgba[][4]) + void *values) { + GLubyte (*rgba)[4] = (GLubyte (*)[4])values; GLuint i; LPBYTE lpb; - WMesaContext pwc = wmesa_context(ctx); WMesaFramebuffer pwfb = wmesa_framebuffer(ctx->DrawBuffer); for (i=0; i<n; i++) { @@ -1050,13 +1046,13 @@ LPWORD lpw = ((LPWORD)((pwc)->pbPixels + (pwc)->ScanWidth * (y)) + (x)); \ /* Write a horizontal span of RGBA color pixels with a boolean mask. */ -static void write_rgba_span_16(const struct gl_context *ctx, +static void write_rgba_span_16(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, - const GLubyte rgba[][4], - const GLubyte mask[] ) + const void *values, + const GLubyte *mask) { - WMesaContext pwc = wmesa_context(ctx); + const GLubyte (*rgba)[4] = (const GLubyte (*)[4])values; WMesaFramebuffer pwfb = wmesa_framebuffer(ctx->DrawBuffer); GLuint i; LPWORD lpw; @@ -1080,13 +1076,13 @@ static void write_rgba_span_16(const struct gl_context *ctx, /* Write a horizontal span of RGB color pixels with a boolean mask. */ -static void write_rgb_span_16(const struct gl_context *ctx, +static void write_rgb_span_16(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, - const GLubyte rgb[][3], - const GLubyte mask[] ) + const void *values, + const GLubyte *mask) { - WMesaContext pwc = wmesa_context(ctx); + const GLubyte (*rgb)[3] = (const GLubyte (*)[3])values; WMesaFramebuffer pwfb = wmesa_framebuffer(ctx->DrawBuffer); GLuint i; LPWORD lpw; @@ -1112,16 +1108,16 @@ static void write_rgb_span_16(const struct gl_context *ctx, * Write a horizontal span of pixels with a boolean mask. The current color * is used for all pixels. */ -static void write_mono_rgba_span_16(const struct gl_context *ctx, +static void write_mono_rgba_span_16(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, - const GLchan color[4], - const GLubyte mask[]) + const void *value, + const GLubyte *mask) { + const GLchan *color = (const GLchan *)value; LPWORD lpw; WORD pixel; GLuint i; - WMesaContext pwc = wmesa_context(ctx); WMesaFramebuffer pwfb = wmesa_framebuffer(ctx->DrawBuffer); (void) ctx; lpw = ((LPWORD)(pwfb->pbPixels + pwfb->ScanWidth * y)) + x; @@ -1139,14 +1135,14 @@ static void write_mono_rgba_span_16(const struct gl_context *ctx, } /* Write an array of RGBA pixels with a boolean mask. */ -static void write_rgba_pixels_16(const struct gl_context *ctx, +static void write_rgba_pixels_16(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], - const GLubyte rgba[][4], - const GLubyte mask[]) + const void *values, + const GLubyte *mask) { + const GLubyte (*rgba)[4] = (const GLubyte (*)[4])values; GLuint i; - WMesaContext pwc = wmesa_context(ctx); WMesaFramebuffer pwfb = wmesa_framebuffer(ctx->DrawBuffer); (void) ctx; for (i=0; i<n; i++) @@ -1159,15 +1155,15 @@ static void write_rgba_pixels_16(const struct gl_context *ctx, * Write an array of pixels with a boolean mask. The current color * is used for all pixels. */ -static void write_mono_rgba_pixels_16(const struct gl_context *ctx, +static void write_mono_rgba_pixels_16(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], - const GLchan color[4], - const GLubyte mask[]) + const void *value, + const GLubyte *mask) { + const GLchan *color = (const GLchan *)value; GLuint i; - WMesaContext pwc = wmesa_context(ctx); WMesaFramebuffer pwfb = wmesa_framebuffer(ctx->DrawBuffer); (void) ctx; for (i=0; i<n; i++) @@ -1177,14 +1173,14 @@ static void write_mono_rgba_pixels_16(const struct gl_context *ctx, } /* Read a horizontal span of color pixels. */ -static void read_rgba_span_16(const struct gl_context *ctx, +static void read_rgba_span_16(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, GLint x, GLint y, - GLubyte rgba[][4] ) + void *values) { + GLubyte (*rgba)[4] = (GLubyte (*)[4])values; GLuint i, pixel; LPWORD lpw; - WMesaContext pwc = wmesa_context(ctx); WMesaFramebuffer pwfb = wmesa_framebuffer(ctx->DrawBuffer); y = FLIP(y); @@ -1201,14 +1197,14 @@ static void read_rgba_span_16(const struct gl_context *ctx, /* Read an array of color pixels. */ -static void read_rgba_pixels_16(const struct gl_context *ctx, +static void read_rgba_pixels_16(struct gl_context *ctx, struct gl_renderbuffer *rb, GLuint n, const GLint x[], const GLint y[], - GLubyte rgba[][4]) + void *values) { + GLubyte (*rgba)[4] = (GLubyte (*)[4])values; GLuint i, pixel; LPWORD lpw; - WMesaContext pwc = wmesa_context(ctx); WMesaFramebuffer pwfb = wmesa_framebuffer(ctx->DrawBuffer); for (i=0; i<n; i++) { @@ -1261,8 +1257,9 @@ wmesa_renderbuffer_storage(struct gl_context *ctx, * Plug in the Get/PutRow/Values functions for a renderbuffer depending * on if we're drawing to the front or back color buffer. */ -void wmesa_set_renderbuffer_funcs(struct gl_renderbuffer *rb, int pixelformat, - int cColorBits, int double_buffer) +static void +wmesa_set_renderbuffer_funcs(struct gl_renderbuffer *rb, int pixelformat, + int cColorBits, int double_buffer) { if (double_buffer) { /* back buffer */ @@ -1324,7 +1321,6 @@ static void wmesa_resize_buffers(struct gl_context *ctx, struct gl_framebuffer *buffer, GLuint width, GLuint height) { - WMesaContext pwc = wmesa_context(ctx); WMesaFramebuffer pwfb = wmesa_framebuffer(buffer); if (pwfb->Base.Width != width || pwfb->Base.Height != height) { @@ -1353,7 +1349,6 @@ static void wmesa_viewport(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height) { - WMesaContext pwc = wmesa_context(ctx); GLuint new_width, new_height; wmesa_get_buffer_size(ctx->WinSysDrawBuffer, &new_width, &new_height); @@ -1553,7 +1548,7 @@ void WMesaDestroyContext( WMesaContext pwc ) /** * Create a new color renderbuffer. */ -struct gl_renderbuffer * +static struct gl_renderbuffer * wmesa_new_renderbuffer(void) { struct gl_renderbuffer *rb = CALLOC_STRUCT(gl_renderbuffer); diff --git a/src/mesa/drivers/windows/gdi/wmesadef.h b/src/mesa/drivers/windows/gdi/wmesadef.h index 32289ebc700..9fda8839014 100644 --- a/src/mesa/drivers/windows/gdi/wmesadef.h +++ b/src/mesa/drivers/windows/gdi/wmesadef.h @@ -1,8 +1,8 @@ #ifndef WMESADEF_H #define WMESADEF_H -#ifdef __MINGW32__ + #include <windows.h> -#endif + #include "main/context.h" diff --git a/src/mesa/drivers/x11/xm_dd.c b/src/mesa/drivers/x11/xm_dd.c index 3031b7b3273..81f48f9d95a 100644 --- a/src/mesa/drivers/x11/xm_dd.c +++ b/src/mesa/drivers/x11/xm_dd.c @@ -445,11 +445,11 @@ xmesa_DrawPixels_8R8G8B( struct gl_context *ctx, if (swrast->NewState) _swrast_validate_derived( ctx ); - if (unpack->BufferObj->Name) { + if (_mesa_is_bufferobj(unpack->BufferObj)) { /* unpack from PBO */ GLubyte *buf; if (!_mesa_validate_pbo_access(2, unpack, width, height, 1, - format, type, pixels)) { + format, type, INT_MAX, pixels)) { _mesa_error(ctx, GL_INVALID_OPERATION, "glDrawPixels(invalid PBO access)"); return; @@ -507,7 +507,7 @@ xmesa_DrawPixels_8R8G8B( struct gl_context *ctx, XPutImage(dpy, xrb->pixmap, gc, &ximage, 0, 0, dstX, dstY, w, h); } - if (unpack->BufferObj->Name) { + if (_mesa_is_bufferobj(unpack->BufferObj)) { ctx->Driver.UnmapBuffer(ctx, GL_PIXEL_UNPACK_BUFFER_EXT, unpack->BufferObj); } @@ -580,11 +580,11 @@ xmesa_DrawPixels_5R6G5B( struct gl_context *ctx, if (swrast->NewState) _swrast_validate_derived( ctx ); - if (unpack->BufferObj->Name) { + if (_mesa_is_bufferobj(unpack->BufferObj)) { /* unpack from PBO */ GLubyte *buf; if (!_mesa_validate_pbo_access(2, unpack, width, height, 1, - format, type, pixels)) { + format, type, INT_MAX, pixels)) { _mesa_error(ctx, GL_INVALID_OPERATION, "glDrawPixels(invalid PBO access)"); return; diff --git a/src/mesa/main/.gitignore b/src/mesa/main/.gitignore index 391c334ab71..2575f44df4a 100644 --- a/src/mesa/main/.gitignore +++ b/src/mesa/main/.gitignore @@ -2,3 +2,5 @@ api_exec_es1.c api_exec_es2.c get_es1.c get_es2.c +git_sha1.h +git_sha1.h.tmp diff --git a/src/mesa/main/api_exec.c b/src/mesa/main/api_exec.c index d0298df20cb..93214dd0ba6 100644 --- a/src/mesa/main/api_exec.c +++ b/src/mesa/main/api_exec.c @@ -502,6 +502,9 @@ _mesa_create_exec_table(void) SET_CompressedTexSubImage2DARB(exec, _mesa_CompressedTexSubImage2DARB); SET_CompressedTexSubImage1DARB(exec, _mesa_CompressedTexSubImage1DARB); SET_GetCompressedTexImageARB(exec, _mesa_GetCompressedTexImageARB); + + /* ARB 104. GL_ARB_robustness */ + SET_GetnCompressedTexImageARB(exec, _mesa_GetnCompressedTexImageARB); #endif /* ARB 14. GL_ARB_point_parameters */ @@ -597,6 +600,12 @@ _mesa_create_exec_table(void) SET_DrawBuffersARB(exec, _mesa_DrawBuffersARB); #endif + /* ARB 104. GL_ARB_robustness */ + SET_GetGraphicsResetStatusARB(exec, _mesa_GetGraphicsResetStatusARB); + SET_GetnPolygonStippleARB(exec, _mesa_GetnPolygonStippleARB); + SET_GetnTexImageARB(exec, _mesa_GetnTexImageARB); + SET_ReadnPixelsARB(exec, _mesa_ReadnPixelsARB); + /* GL_ARB_sync */ _mesa_init_sync_dispatch(exec); diff --git a/src/mesa/main/colortab.c b/src/mesa/main/colortab.c index 35b3096f650..ddb0f1f6579 100644 --- a/src/mesa/main/colortab.c +++ b/src/mesa/main/colortab.c @@ -190,7 +190,7 @@ store_colortable_entries(struct gl_context *ctx, struct gl_color_table *table, { data = _mesa_map_validate_pbo_source(ctx, 1, &ctx->Unpack, count, 1, 1, - format, type, data, + format, type, INT_MAX, data, "glColor[Sub]Table"); if (!data) return; @@ -509,8 +509,8 @@ _mesa_CopyColorSubTable(GLenum target, GLsizei start, static void GLAPIENTRY -_mesa_GetColorTable( GLenum target, GLenum format, - GLenum type, GLvoid *data ) +_mesa_GetnColorTableARB( GLenum target, GLenum format, GLenum type, + GLsizei bufSize, GLvoid *data ) { GET_CURRENT_CONTEXT(ctx); struct gl_texture_unit *texUnit = _mesa_get_current_tex_unit(ctx); @@ -614,7 +614,7 @@ _mesa_GetColorTable( GLenum target, GLenum format, data = _mesa_map_validate_pbo_dest(ctx, 1, &ctx->Pack, table->Size, 1, 1, - format, type, data, + format, type, bufSize, data, "glGetColorTable"); if (!data) return; @@ -630,6 +630,13 @@ _mesa_GetColorTable( GLenum target, GLenum format, } +static void GLAPIENTRY +_mesa_GetColorTable( GLenum target, GLenum format, + GLenum type, GLvoid *data ) +{ + _mesa_GetnColorTableARB(target, format, type, INT_MAX, data); +} + static void GLAPIENTRY _mesa_ColorTableParameterfv(GLenum target, GLenum pname, const GLfloat *params) @@ -790,6 +797,9 @@ _mesa_init_colortable_dispatch(struct _glapi_table *disp) SET_GetColorTable(disp, _mesa_GetColorTable); SET_GetColorTableParameterfv(disp, _mesa_GetColorTableParameterfv); SET_GetColorTableParameteriv(disp, _mesa_GetColorTableParameteriv); + + /* GL_ARB_robustness */ + SET_GetnColorTableARB(disp, _mesa_GetnColorTableARB); } diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index 8053edc23b2..ea13bdd6835 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -658,6 +658,9 @@ _mesa_init_constants(struct gl_context *ctx) /** GL_EXT_gpu_shader4 */ ctx->Const.MinProgramTexelOffset = -8; ctx->Const.MaxProgramTexelOffset = 7; + + /* GL_ARB_robustness */ + ctx->Const.ResetStrategy = GL_NO_RESET_NOTIFICATION_ARB; } @@ -793,6 +796,7 @@ init_attrib_groups(struct gl_context *ctx) /* Miscellaneous */ ctx->NewState = _NEW_ALL; ctx->ErrorValue = (GLenum) GL_NO_ERROR; + ctx->ResetStatus = (GLenum) GL_NO_ERROR; ctx->varying_vp_inputs = ~0; return GL_TRUE; diff --git a/src/mesa/main/convolve.c b/src/mesa/main/convolve.c index 5d286eb316b..74f28da87ee 100644 --- a/src/mesa/main/convolve.c +++ b/src/mesa/main/convolve.c @@ -115,8 +115,8 @@ _mesa_CopyConvolutionFilter2D(GLenum target, GLenum internalFormat, GLint x, GLi static void GLAPIENTRY -_mesa_GetConvolutionFilter(GLenum target, GLenum format, GLenum type, - GLvoid *image) +_mesa_GetnConvolutionFilterARB(GLenum target, GLenum format, GLenum type, + GLsizei bufSize, GLvoid *image) { GET_CURRENT_CONTEXT(ctx); @@ -125,6 +125,14 @@ _mesa_GetConvolutionFilter(GLenum target, GLenum format, GLenum type, static void GLAPIENTRY +_mesa_GetConvolutionFilter(GLenum target, GLenum format, GLenum type, + GLvoid *image) +{ + _mesa_GetnConvolutionFilterARB(target, format, type, INT_MAX, image); +} + + +static void GLAPIENTRY _mesa_GetConvolutionParameterfv(GLenum target, GLenum pname, GLfloat *params) { GET_CURRENT_CONTEXT(ctx); @@ -143,8 +151,10 @@ _mesa_GetConvolutionParameteriv(GLenum target, GLenum pname, GLint *params) static void GLAPIENTRY -_mesa_GetSeparableFilter(GLenum target, GLenum format, GLenum type, - GLvoid *row, GLvoid *column, GLvoid *span) +_mesa_GetnSeparableFilterARB(GLenum target, GLenum format, GLenum type, + GLsizei rowBufSize, GLvoid *row, + GLsizei columnBufSize, GLvoid *column, + GLvoid *span) { GET_CURRENT_CONTEXT(ctx); @@ -153,6 +163,15 @@ _mesa_GetSeparableFilter(GLenum target, GLenum format, GLenum type, static void GLAPIENTRY +_mesa_GetSeparableFilter(GLenum target, GLenum format, GLenum type, + GLvoid *row, GLvoid *column, GLvoid *span) +{ + _mesa_GetnSeparableFilterARB(target, format, type, INT_MAX, row, + INT_MAX, column, span); +} + + +static void GLAPIENTRY _mesa_SeparableFilter2D(GLenum target, GLenum internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column) { GET_CURRENT_CONTEXT(ctx); @@ -176,6 +195,10 @@ _mesa_init_convolve_dispatch(struct _glapi_table *disp) SET_GetConvolutionParameteriv(disp, _mesa_GetConvolutionParameteriv); SET_SeparableFilter2D(disp, _mesa_SeparableFilter2D); SET_GetSeparableFilter(disp, _mesa_GetSeparableFilter); + + /* GL_ARB_robustness */ + SET_GetnConvolutionFilterARB(disp, _mesa_GetnConvolutionFilterARB); + SET_GetnSeparableFilterARB(disp, _mesa_GetnSeparableFilterARB); } diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c index f66082e7fce..63653df4502 100644 --- a/src/mesa/main/dlist.c +++ b/src/mesa/main/dlist.c @@ -859,8 +859,8 @@ unpack_image(struct gl_context *ctx, GLuint dimensions, } return image; } - else if (_mesa_validate_pbo_access(dimensions, unpack, width, height, depth, - format, type, pixels)) { + else if (_mesa_validate_pbo_access(dimensions, unpack, width, height, + depth, format, type, INT_MAX, pixels)) { const GLubyte *map, *src; GLvoid *image; diff --git a/src/mesa/main/drawpix.c b/src/mesa/main/drawpix.c index ee379f71bf5..89c2b26973c 100644 --- a/src/mesa/main/drawpix.c +++ b/src/mesa/main/drawpix.c @@ -90,10 +90,10 @@ _mesa_DrawPixels( GLsizei width, GLsizei height, GLint x = IROUND(ctx->Current.RasterPos[0]); GLint y = IROUND(ctx->Current.RasterPos[1]); - if (ctx->Unpack.BufferObj->Name) { + if (_mesa_is_bufferobj(ctx->Unpack.BufferObj)) { /* unpack from PBO */ - if (!_mesa_validate_pbo_access(2, &ctx->Unpack, width, height, 1, - format, type, pixels)) { + if (!_mesa_validate_pbo_access(2, &ctx->Unpack, width, height, + 1, format, type, INT_MAX, pixels)) { _mesa_error(ctx, GL_INVALID_OPERATION, "glDrawPixels(invalid PBO access)"); goto end; @@ -249,11 +249,11 @@ _mesa_Bitmap( GLsizei width, GLsizei height, GLint x = IFLOOR(ctx->Current.RasterPos[0] + epsilon - xorig); GLint y = IFLOOR(ctx->Current.RasterPos[1] + epsilon - yorig); - if (ctx->Unpack.BufferObj->Name) { + if (_mesa_is_bufferobj(ctx->Unpack.BufferObj)) { /* unpack from PBO */ - if (!_mesa_validate_pbo_access(2, &ctx->Unpack, width, height, 1, - GL_COLOR_INDEX, GL_BITMAP, - (GLvoid *) bitmap)) { + if (!_mesa_validate_pbo_access(2, &ctx->Unpack, width, height, + 1, GL_COLOR_INDEX, GL_BITMAP, + INT_MAX, (const GLvoid *) bitmap)) { _mesa_error(ctx, GL_INVALID_OPERATION, "glBitmap(invalid PBO access)"); return; diff --git a/src/mesa/main/enable.c b/src/mesa/main/enable.c index 2ec19c8afbd..aac8b9c5eaf 100644 --- a/src/mesa/main/enable.c +++ b/src/mesa/main/enable.c @@ -885,15 +885,18 @@ _mesa_set_enable(struct gl_context *ctx, GLenum cap, GLboolean state) case GL_TEXTURE_CUBE_MAP_SEAMLESS: CHECK_EXTENSION(ARB_seamless_cube_map, cap); - ctx->Texture.CubeMapSeamless = state; + if (ctx->Texture.CubeMapSeamless != state) { + FLUSH_VERTICES(ctx, _NEW_TEXTURE); + ctx->Texture.CubeMapSeamless = state; + } break; #if FEATURE_EXT_transform_feedback case GL_RASTERIZER_DISCARD: CHECK_EXTENSION(EXT_transform_feedback, cap); if (ctx->TransformFeedback.RasterDiscard != state) { - ctx->TransformFeedback.RasterDiscard = state; FLUSH_VERTICES(ctx, _NEW_TRANSFORM); + ctx->TransformFeedback.RasterDiscard = state; } break; #endif diff --git a/src/mesa/main/enums.c b/src/mesa/main/enums.c index 98cbbf53b85..8a50e26569c 100644 --- a/src/mesa/main/enums.c +++ b/src/mesa/main/enums.c @@ -366,6 +366,7 @@ LONGSTRING static const char enum_string_table[] = "GL_CONTEXT_CORE_PROFILE_BIT\0" "GL_CONTEXT_FLAGS\0" "GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT\0" + "GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB\0" "GL_CONTEXT_PROFILE_MASK\0" "GL_CONVOLUTION_1D\0" "GL_CONVOLUTION_2D\0" @@ -739,6 +740,7 @@ LONGSTRING static const char enum_string_table[] = "GL_GREEN_INTEGER\0" "GL_GREEN_INTEGER_EXT\0" "GL_GREEN_SCALE\0" + "GL_GUILTY_CONTEXT_RESET_ARB\0" "GL_HALF_FLOAT\0" "GL_HALF_FLOAT_OES\0" "GL_HIGH_FLOAT\0" @@ -786,6 +788,7 @@ LONGSTRING static const char enum_string_table[] = "GL_INDEX_SHIFT\0" "GL_INDEX_WRITEMASK\0" "GL_INFO_LOG_LENGTH\0" + "GL_INNOCENT_CONTEXT_RESET_ARB\0" "GL_INT\0" "GL_INTENSITY\0" "GL_INTENSITY12\0" @@ -894,6 +897,7 @@ LONGSTRING static const char enum_string_table[] = "GL_LOAD\0" "GL_LOGIC_OP\0" "GL_LOGIC_OP_MODE\0" + "GL_LOSE_CONTEXT_ON_RESET_ARB\0" "GL_LOWER_LEFT\0" "GL_LOW_FLOAT\0" "GL_LOW_INT\0" @@ -1277,6 +1281,7 @@ LONGSTRING static const char enum_string_table[] = "GL_NORMAL_MAP_OES\0" "GL_NOTEQUAL\0" "GL_NO_ERROR\0" + "GL_NO_RESET_NOTIFICATION_ARB\0" "GL_NUM_COMPRESSED_TEXTURE_FORMATS\0" "GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB\0" "GL_NUM_EXTENSIONS\0" @@ -1637,6 +1642,7 @@ LONGSTRING static const char enum_string_table[] = "GL_REPLICATE_BORDER_HP\0" "GL_RESCALE_NORMAL\0" "GL_RESCALE_NORMAL_EXT\0" + "GL_RESET_NOTIFICATION_STRATEGY_ARB\0" "GL_RETAINED_APPLE\0" "GL_RETURN\0" "GL_RG16_SNORM\0" @@ -2193,6 +2199,7 @@ LONGSTRING static const char enum_string_table[] = "GL_TRIANGLE_STRIP_ADJACENCY_ARB\0" "GL_TRUE\0" "GL_UNDEFINED_APPLE\0" + "GL_UNKNOWN_CONTEXT_RESET_ARB\0" "GL_UNPACK_ALIGNMENT\0" "GL_UNPACK_IMAGE_HEIGHT\0" "GL_UNPACK_LSB_FIRST\0" @@ -2345,7 +2352,7 @@ LONGSTRING static const char enum_string_table[] = "GL_ZOOM_Y\0" ; -static const enum_elt all_enums[2306] = +static const enum_elt all_enums[2313] = { { 0, 0x00000600 }, /* GL_2D */ { 6, 0x00001407 }, /* GL_2_BYTES */ @@ -2676,2408 +2683,2415 @@ static const enum_elt all_enums[2306] = { 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 */ + { 6691, 0x00000004 }, /* GL_CONTEXT_FLAG_ROBUST_ACCESS_BIT_ARB */ + { 6729, 0x00009126 }, /* GL_CONTEXT_PROFILE_MASK */ + { 6753, 0x00008010 }, /* GL_CONVOLUTION_1D */ + { 6771, 0x00008011 }, /* GL_CONVOLUTION_2D */ + { 6789, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR */ + { 6817, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR_HP */ + { 6848, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE */ + { 6875, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE_EXT */ + { 6906, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS */ + { 6933, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS_EXT */ + { 6964, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE */ + { 6992, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE_EXT */ + { 7024, 0x00008017 }, /* GL_CONVOLUTION_FORMAT */ + { 7046, 0x00008017 }, /* GL_CONVOLUTION_FORMAT_EXT */ + { 7072, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT */ + { 7094, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT_EXT */ + { 7120, 0x00008018 }, /* GL_CONVOLUTION_WIDTH */ + { 7141, 0x00008018 }, /* GL_CONVOLUTION_WIDTH_EXT */ + { 7166, 0x00008862 }, /* GL_COORD_REPLACE */ + { 7183, 0x00008862 }, /* GL_COORD_REPLACE_ARB */ + { 7204, 0x00008862 }, /* GL_COORD_REPLACE_NV */ + { 7224, 0x00008862 }, /* GL_COORD_REPLACE_OES */ + { 7245, 0x00001503 }, /* GL_COPY */ + { 7253, 0x0000150C }, /* GL_COPY_INVERTED */ + { 7270, 0x00000706 }, /* GL_COPY_PIXEL_TOKEN */ + { 7290, 0x00008F36 }, /* GL_COPY_READ_BUFFER */ + { 7310, 0x00008F37 }, /* GL_COPY_WRITE_BUFFER */ + { 7331, 0x00000B44 }, /* GL_CULL_FACE */ + { 7344, 0x00000B45 }, /* GL_CULL_FACE_MODE */ + { 7362, 0x000081AA }, /* GL_CULL_VERTEX_EXT */ + { 7381, 0x000081AC }, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ + { 7413, 0x000081AB }, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ + { 7448, 0x00008626 }, /* GL_CURRENT_ATTRIB_NV */ + { 7469, 0x00000001 }, /* GL_CURRENT_BIT */ + { 7484, 0x00000B00 }, /* GL_CURRENT_COLOR */ + { 7501, 0x00008453 }, /* GL_CURRENT_FOG_COORD */ + { 7522, 0x00008453 }, /* GL_CURRENT_FOG_COORDINATE */ + { 7548, 0x00000B01 }, /* GL_CURRENT_INDEX */ + { 7565, 0x00008641 }, /* GL_CURRENT_MATRIX_ARB */ + { 7587, 0x00008845 }, /* GL_CURRENT_MATRIX_INDEX_ARB */ + { 7615, 0x00008641 }, /* GL_CURRENT_MATRIX_NV */ + { 7636, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ + { 7670, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_NV */ + { 7703, 0x00000B02 }, /* GL_CURRENT_NORMAL */ + { 7721, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_ARB */ + { 7751, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_OES */ + { 7781, 0x00008B8D }, /* GL_CURRENT_PROGRAM */ + { 7800, 0x00008865 }, /* GL_CURRENT_QUERY */ + { 7817, 0x00008865 }, /* GL_CURRENT_QUERY_ARB */ + { 7838, 0x00000B04 }, /* GL_CURRENT_RASTER_COLOR */ + { 7862, 0x00000B09 }, /* GL_CURRENT_RASTER_DISTANCE */ + { 7889, 0x00000B05 }, /* GL_CURRENT_RASTER_INDEX */ + { 7913, 0x00000B07 }, /* GL_CURRENT_RASTER_POSITION */ + { 7940, 0x00000B08 }, /* GL_CURRENT_RASTER_POSITION_VALID */ + { 7973, 0x0000845F }, /* GL_CURRENT_RASTER_SECONDARY_COLOR */ + { 8007, 0x00000B06 }, /* GL_CURRENT_RASTER_TEXTURE_COORDS */ + { 8040, 0x00008459 }, /* GL_CURRENT_SECONDARY_COLOR */ + { 8067, 0x00000B03 }, /* GL_CURRENT_TEXTURE_COORDS */ + { 8093, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB */ + { 8118, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB_ARB */ + { 8147, 0x000086A8 }, /* GL_CURRENT_WEIGHT_ARB */ + { 8169, 0x00000900 }, /* GL_CW */ + { 8175, 0x0000875B }, /* GL_DEBUG_ASSERT_MESA */ + { 8196, 0x00008759 }, /* GL_DEBUG_OBJECT_MESA */ + { 8217, 0x0000875A }, /* GL_DEBUG_PRINT_MESA */ + { 8237, 0x00002101 }, /* GL_DECAL */ + { 8246, 0x00001E03 }, /* GL_DECR */ + { 8254, 0x00008508 }, /* GL_DECR_WRAP */ + { 8267, 0x00008508 }, /* GL_DECR_WRAP_EXT */ + { 8284, 0x00008B80 }, /* GL_DELETE_STATUS */ + { 8301, 0x00001801 }, /* GL_DEPTH */ + { 8310, 0x000088F0 }, /* GL_DEPTH24_STENCIL8 */ + { 8330, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_EXT */ + { 8354, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_OES */ + { 8378, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT */ + { 8398, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_EXT */ + { 8422, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_OES */ + { 8446, 0x00000D1F }, /* GL_DEPTH_BIAS */ + { 8460, 0x00000D56 }, /* GL_DEPTH_BITS */ + { 8474, 0x00008891 }, /* GL_DEPTH_BOUNDS_EXT */ + { 8494, 0x00008890 }, /* GL_DEPTH_BOUNDS_TEST_EXT */ + { 8519, 0x00008223 }, /* GL_DEPTH_BUFFER */ + { 8535, 0x00000100 }, /* GL_DEPTH_BUFFER_BIT */ + { 8555, 0x0000864F }, /* GL_DEPTH_CLAMP */ + { 8570, 0x0000864F }, /* GL_DEPTH_CLAMP_NV */ + { 8588, 0x00000B73 }, /* GL_DEPTH_CLEAR_VALUE */ + { 8609, 0x00001902 }, /* GL_DEPTH_COMPONENT */ + { 8628, 0x000081A5 }, /* GL_DEPTH_COMPONENT16 */ + { 8649, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_ARB */ + { 8674, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_OES */ + { 8699, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_SGIX */ + { 8725, 0x000081A6 }, /* GL_DEPTH_COMPONENT24 */ + { 8746, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_ARB */ + { 8771, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_OES */ + { 8796, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_SGIX */ + { 8822, 0x000081A7 }, /* GL_DEPTH_COMPONENT32 */ + { 8843, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_ARB */ + { 8868, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_OES */ + { 8893, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_SGIX */ + { 8919, 0x00000B74 }, /* GL_DEPTH_FUNC */ + { 8933, 0x00000B70 }, /* GL_DEPTH_RANGE */ + { 8948, 0x00000D1E }, /* GL_DEPTH_SCALE */ + { 8963, 0x000084F9 }, /* GL_DEPTH_STENCIL */ + { 8980, 0x0000821A }, /* GL_DEPTH_STENCIL_ATTACHMENT */ + { 9008, 0x000084F9 }, /* GL_DEPTH_STENCIL_EXT */ + { 9029, 0x000084F9 }, /* GL_DEPTH_STENCIL_NV */ + { 9049, 0x000084F9 }, /* GL_DEPTH_STENCIL_OES */ + { 9070, 0x0000886F }, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ + { 9098, 0x0000886E }, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ + { 9126, 0x00000B71 }, /* GL_DEPTH_TEST */ + { 9140, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE */ + { 9162, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE_ARB */ + { 9188, 0x00000B72 }, /* GL_DEPTH_WRITEMASK */ + { 9207, 0x00001201 }, /* GL_DIFFUSE */ + { 9218, 0x00000BD0 }, /* GL_DITHER */ + { 9228, 0x00000A02 }, /* GL_DOMAIN */ + { 9238, 0x00001100 }, /* GL_DONT_CARE */ + { 9251, 0x000086AE }, /* GL_DOT3_RGB */ + { 9263, 0x000086AF }, /* GL_DOT3_RGBA */ + { 9276, 0x000086AF }, /* GL_DOT3_RGBA_ARB */ + { 9293, 0x00008741 }, /* GL_DOT3_RGBA_EXT */ + { 9310, 0x000086AE }, /* GL_DOT3_RGB_ARB */ + { 9326, 0x00008740 }, /* GL_DOT3_RGB_EXT */ + { 9342, 0x0000140A }, /* GL_DOUBLE */ + { 9352, 0x00000C32 }, /* GL_DOUBLEBUFFER */ + { 9368, 0x00000C01 }, /* GL_DRAW_BUFFER */ + { 9383, 0x00008825 }, /* GL_DRAW_BUFFER0 */ + { 9399, 0x00008825 }, /* GL_DRAW_BUFFER0_ARB */ + { 9419, 0x00008825 }, /* GL_DRAW_BUFFER0_ATI */ + { 9439, 0x00008826 }, /* GL_DRAW_BUFFER1 */ + { 9455, 0x0000882F }, /* GL_DRAW_BUFFER10 */ + { 9472, 0x0000882F }, /* GL_DRAW_BUFFER10_ARB */ + { 9493, 0x0000882F }, /* GL_DRAW_BUFFER10_ATI */ + { 9514, 0x00008830 }, /* GL_DRAW_BUFFER11 */ + { 9531, 0x00008830 }, /* GL_DRAW_BUFFER11_ARB */ + { 9552, 0x00008830 }, /* GL_DRAW_BUFFER11_ATI */ + { 9573, 0x00008831 }, /* GL_DRAW_BUFFER12 */ + { 9590, 0x00008831 }, /* GL_DRAW_BUFFER12_ARB */ + { 9611, 0x00008831 }, /* GL_DRAW_BUFFER12_ATI */ + { 9632, 0x00008832 }, /* GL_DRAW_BUFFER13 */ + { 9649, 0x00008832 }, /* GL_DRAW_BUFFER13_ARB */ + { 9670, 0x00008832 }, /* GL_DRAW_BUFFER13_ATI */ + { 9691, 0x00008833 }, /* GL_DRAW_BUFFER14 */ + { 9708, 0x00008833 }, /* GL_DRAW_BUFFER14_ARB */ + { 9729, 0x00008833 }, /* GL_DRAW_BUFFER14_ATI */ + { 9750, 0x00008834 }, /* GL_DRAW_BUFFER15 */ + { 9767, 0x00008834 }, /* GL_DRAW_BUFFER15_ARB */ + { 9788, 0x00008834 }, /* GL_DRAW_BUFFER15_ATI */ + { 9809, 0x00008826 }, /* GL_DRAW_BUFFER1_ARB */ + { 9829, 0x00008826 }, /* GL_DRAW_BUFFER1_ATI */ + { 9849, 0x00008827 }, /* GL_DRAW_BUFFER2 */ + { 9865, 0x00008827 }, /* GL_DRAW_BUFFER2_ARB */ + { 9885, 0x00008827 }, /* GL_DRAW_BUFFER2_ATI */ + { 9905, 0x00008828 }, /* GL_DRAW_BUFFER3 */ + { 9921, 0x00008828 }, /* GL_DRAW_BUFFER3_ARB */ + { 9941, 0x00008828 }, /* GL_DRAW_BUFFER3_ATI */ + { 9961, 0x00008829 }, /* GL_DRAW_BUFFER4 */ + { 9977, 0x00008829 }, /* GL_DRAW_BUFFER4_ARB */ + { 9997, 0x00008829 }, /* GL_DRAW_BUFFER4_ATI */ + { 10017, 0x0000882A }, /* GL_DRAW_BUFFER5 */ + { 10033, 0x0000882A }, /* GL_DRAW_BUFFER5_ARB */ + { 10053, 0x0000882A }, /* GL_DRAW_BUFFER5_ATI */ + { 10073, 0x0000882B }, /* GL_DRAW_BUFFER6 */ + { 10089, 0x0000882B }, /* GL_DRAW_BUFFER6_ARB */ + { 10109, 0x0000882B }, /* GL_DRAW_BUFFER6_ATI */ + { 10129, 0x0000882C }, /* GL_DRAW_BUFFER7 */ + { 10145, 0x0000882C }, /* GL_DRAW_BUFFER7_ARB */ + { 10165, 0x0000882C }, /* GL_DRAW_BUFFER7_ATI */ + { 10185, 0x0000882D }, /* GL_DRAW_BUFFER8 */ + { 10201, 0x0000882D }, /* GL_DRAW_BUFFER8_ARB */ + { 10221, 0x0000882D }, /* GL_DRAW_BUFFER8_ATI */ + { 10241, 0x0000882E }, /* GL_DRAW_BUFFER9 */ + { 10257, 0x0000882E }, /* GL_DRAW_BUFFER9_ARB */ + { 10277, 0x0000882E }, /* GL_DRAW_BUFFER9_ATI */ + { 10297, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER */ + { 10317, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING */ + { 10345, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */ + { 10377, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER_EXT */ + { 10401, 0x00000705 }, /* GL_DRAW_PIXEL_TOKEN */ + { 10421, 0x00000304 }, /* GL_DST_ALPHA */ + { 10434, 0x00000306 }, /* GL_DST_COLOR */ + { 10447, 0x0000877A }, /* GL_DU8DV8_ATI */ + { 10461, 0x00008779 }, /* GL_DUDV_ATI */ + { 10473, 0x000088EA }, /* GL_DYNAMIC_COPY */ + { 10489, 0x000088EA }, /* GL_DYNAMIC_COPY_ARB */ + { 10509, 0x000088E8 }, /* GL_DYNAMIC_DRAW */ + { 10525, 0x000088E8 }, /* GL_DYNAMIC_DRAW_ARB */ + { 10545, 0x000088E9 }, /* GL_DYNAMIC_READ */ + { 10561, 0x000088E9 }, /* GL_DYNAMIC_READ_ARB */ + { 10581, 0x00000B43 }, /* GL_EDGE_FLAG */ + { 10594, 0x00008079 }, /* GL_EDGE_FLAG_ARRAY */ + { 10613, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ + { 10647, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB */ + { 10685, 0x00008093 }, /* GL_EDGE_FLAG_ARRAY_POINTER */ + { 10712, 0x0000808C }, /* GL_EDGE_FLAG_ARRAY_STRIDE */ + { 10738, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER */ + { 10762, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ + { 10794, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB */ + { 10830, 0x00001600 }, /* GL_EMISSION */ + { 10842, 0x00002000 }, /* GL_ENABLE_BIT */ + { 10856, 0x00000202 }, /* GL_EQUAL */ + { 10865, 0x00001509 }, /* GL_EQUIV */ + { 10874, 0x00010000 }, /* GL_EVAL_BIT */ + { 10886, 0x00000800 }, /* GL_EXP */ + { 10893, 0x00000801 }, /* GL_EXP2 */ + { 10901, 0x00001F03 }, /* GL_EXTENSIONS */ + { 10915, 0x00002400 }, /* GL_EYE_LINEAR */ + { 10929, 0x00002502 }, /* GL_EYE_PLANE */ + { 10942, 0x0000855C }, /* GL_EYE_PLANE_ABSOLUTE_NV */ + { 10967, 0x0000855B }, /* GL_EYE_RADIAL_NV */ + { 10984, 0x00000000 }, /* GL_FALSE */ + { 10993, 0x00001101 }, /* GL_FASTEST */ + { 11004, 0x00001C01 }, /* GL_FEEDBACK */ + { 11016, 0x00000DF0 }, /* GL_FEEDBACK_BUFFER_POINTER */ + { 11043, 0x00000DF1 }, /* GL_FEEDBACK_BUFFER_SIZE */ + { 11067, 0x00000DF2 }, /* GL_FEEDBACK_BUFFER_TYPE */ + { 11091, 0x00001B02 }, /* GL_FILL */ + { 11099, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION */ + { 11126, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION_EXT */ + { 11157, 0x0000140C }, /* GL_FIXED */ + { 11166, 0x0000140C }, /* GL_FIXED_OES */ + { 11179, 0x0000891D }, /* GL_FIXED_ONLY */ + { 11193, 0x0000891D }, /* GL_FIXED_ONLY_ARB */ + { 11211, 0x00001D00 }, /* GL_FLAT */ + { 11219, 0x00001406 }, /* GL_FLOAT */ + { 11228, 0x00008B5A }, /* GL_FLOAT_MAT2 */ + { 11242, 0x00008B5A }, /* GL_FLOAT_MAT2_ARB */ + { 11260, 0x00008B65 }, /* GL_FLOAT_MAT2x3 */ + { 11276, 0x00008B66 }, /* GL_FLOAT_MAT2x4 */ + { 11292, 0x00008B5B }, /* GL_FLOAT_MAT3 */ + { 11306, 0x00008B5B }, /* GL_FLOAT_MAT3_ARB */ + { 11324, 0x00008B67 }, /* GL_FLOAT_MAT3x2 */ + { 11340, 0x00008B68 }, /* GL_FLOAT_MAT3x4 */ + { 11356, 0x00008B5C }, /* GL_FLOAT_MAT4 */ + { 11370, 0x00008B5C }, /* GL_FLOAT_MAT4_ARB */ + { 11388, 0x00008B69 }, /* GL_FLOAT_MAT4x2 */ + { 11404, 0x00008B6A }, /* GL_FLOAT_MAT4x3 */ + { 11420, 0x00008B50 }, /* GL_FLOAT_VEC2 */ + { 11434, 0x00008B50 }, /* GL_FLOAT_VEC2_ARB */ + { 11452, 0x00008B51 }, /* GL_FLOAT_VEC3 */ + { 11466, 0x00008B51 }, /* GL_FLOAT_VEC3_ARB */ + { 11484, 0x00008B52 }, /* GL_FLOAT_VEC4 */ + { 11498, 0x00008B52 }, /* GL_FLOAT_VEC4_ARB */ + { 11516, 0x00000B60 }, /* GL_FOG */ + { 11523, 0x00000080 }, /* GL_FOG_BIT */ + { 11534, 0x00000B66 }, /* GL_FOG_COLOR */ + { 11547, 0x00008451 }, /* GL_FOG_COORD */ + { 11560, 0x00008451 }, /* GL_FOG_COORDINATE */ + { 11578, 0x00008457 }, /* GL_FOG_COORDINATE_ARRAY */ + { 11602, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ + { 11641, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB */ + { 11684, 0x00008456 }, /* GL_FOG_COORDINATE_ARRAY_POINTER */ + { 11716, 0x00008455 }, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ + { 11747, 0x00008454 }, /* GL_FOG_COORDINATE_ARRAY_TYPE */ + { 11776, 0x00008450 }, /* GL_FOG_COORDINATE_SOURCE */ + { 11801, 0x00008457 }, /* GL_FOG_COORD_ARRAY */ + { 11820, 0x0000889D }, /* GL_FOG_COORD_ARRAY_BUFFER_BINDING */ + { 11854, 0x00008456 }, /* GL_FOG_COORD_ARRAY_POINTER */ + { 11881, 0x00008455 }, /* GL_FOG_COORD_ARRAY_STRIDE */ + { 11907, 0x00008454 }, /* GL_FOG_COORD_ARRAY_TYPE */ + { 11931, 0x00008450 }, /* GL_FOG_COORD_SRC */ + { 11948, 0x00000B62 }, /* GL_FOG_DENSITY */ + { 11963, 0x0000855A }, /* GL_FOG_DISTANCE_MODE_NV */ + { 11987, 0x00000B64 }, /* GL_FOG_END */ + { 11998, 0x00000C54 }, /* GL_FOG_HINT */ + { 12010, 0x00000B61 }, /* GL_FOG_INDEX */ + { 12023, 0x00000B65 }, /* GL_FOG_MODE */ + { 12035, 0x00008198 }, /* GL_FOG_OFFSET_SGIX */ + { 12054, 0x00008199 }, /* GL_FOG_OFFSET_VALUE_SGIX */ + { 12079, 0x00000B63 }, /* GL_FOG_START */ + { 12092, 0x00008452 }, /* GL_FRAGMENT_DEPTH */ + { 12110, 0x00008804 }, /* GL_FRAGMENT_PROGRAM_ARB */ + { 12134, 0x00008B30 }, /* GL_FRAGMENT_SHADER */ + { 12153, 0x00008B30 }, /* GL_FRAGMENT_SHADER_ARB */ + { 12176, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ + { 12211, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES */ + { 12250, 0x00008D40 }, /* GL_FRAMEBUFFER */ + { 12265, 0x00008215 }, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ + { 12302, 0x00008214 }, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ + { 12338, 0x00008210 }, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ + { 12379, 0x00008211 }, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ + { 12420, 0x00008216 }, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ + { 12457, 0x00008213 }, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ + { 12494, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */ + { 12528, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB */ + { 12566, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ + { 12604, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */ + { 12646, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES */ + { 12688, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ + { 12726, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */ + { 12768, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES */ + { 12810, 0x00008212 }, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ + { 12845, 0x00008217 }, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ + { 12884, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */ + { 12933, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES */ + { 12982, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ + { 13030, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */ + { 13082, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES */ + { 13134, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ + { 13174, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */ + { 13218, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ + { 13258, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */ + { 13302, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES */ + { 13346, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING */ + { 13369, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_EXT */ + { 13396, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_OES */ + { 13423, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE */ + { 13447, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_EXT */ + { 13475, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_OES */ + { 13503, 0x00008218 }, /* GL_FRAMEBUFFER_DEFAULT */ + { 13526, 0x00008D40 }, /* GL_FRAMEBUFFER_EXT */ + { 13545, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ + { 13582, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */ + { 13623, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES */ + { 13664, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS */ + { 13701, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ + { 13742, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES */ + { 13783, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ + { 13821, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */ + { 13863, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES */ + { 13905, 0x00008CD8 }, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ + { 13956, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ + { 13994, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES */ + { 14032, 0x00008DA9 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */ + { 14074, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */ + { 14114, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB */ + { 14158, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ + { 14203, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */ + { 14252, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES */ + { 14301, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ + { 14339, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT */ + { 14381, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ + { 14419, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */ + { 14461, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES */ + { 14503, 0x00008D40 }, /* GL_FRAMEBUFFER_OES */ + { 14522, 0x00008CDE }, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ + { 14554, 0x00008219 }, /* GL_FRAMEBUFFER_UNDEFINED */ + { 14579, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED */ + { 14606, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */ + { 14637, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_OES */ + { 14668, 0x00000404 }, /* GL_FRONT */ + { 14677, 0x00000408 }, /* GL_FRONT_AND_BACK */ + { 14695, 0x00000B46 }, /* GL_FRONT_FACE */ + { 14709, 0x00000400 }, /* GL_FRONT_LEFT */ + { 14723, 0x00000401 }, /* GL_FRONT_RIGHT */ + { 14738, 0x00008006 }, /* GL_FUNC_ADD */ + { 14750, 0x00008006 }, /* GL_FUNC_ADD_EXT */ + { 14766, 0x00008006 }, /* GL_FUNC_ADD_OES */ + { 14782, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT */ + { 14807, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_EXT */ + { 14836, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_OES */ + { 14865, 0x0000800A }, /* GL_FUNC_SUBTRACT */ + { 14882, 0x0000800A }, /* GL_FUNC_SUBTRACT_EXT */ + { 14903, 0x0000800A }, /* GL_FUNC_SUBTRACT_OES */ + { 14924, 0x00008191 }, /* GL_GENERATE_MIPMAP */ + { 14943, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT */ + { 14967, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT_SGIS */ + { 14996, 0x00008191 }, /* GL_GENERATE_MIPMAP_SGIS */ + { 15020, 0x00008917 }, /* GL_GEOMETRY_INPUT_TYPE */ + { 15043, 0x00008DDB }, /* GL_GEOMETRY_INPUT_TYPE_ARB */ + { 15070, 0x00008918 }, /* GL_GEOMETRY_OUTPUT_TYPE */ + { 15094, 0x00008DDC }, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */ + { 15122, 0x00008DD9 }, /* GL_GEOMETRY_SHADER */ + { 15141, 0x00008DD9 }, /* GL_GEOMETRY_SHADER_ARB */ + { 15164, 0x00008916 }, /* GL_GEOMETRY_VERTICES_OUT */ + { 15189, 0x00008DDA }, /* GL_GEOMETRY_VERTICES_OUT_ARB */ + { 15218, 0x00000206 }, /* GL_GEQUAL */ + { 15228, 0x00000204 }, /* GL_GREATER */ + { 15239, 0x00001904 }, /* GL_GREEN */ + { 15248, 0x00000D19 }, /* GL_GREEN_BIAS */ + { 15262, 0x00000D53 }, /* GL_GREEN_BITS */ + { 15276, 0x00008D95 }, /* GL_GREEN_INTEGER */ + { 15293, 0x00008D95 }, /* GL_GREEN_INTEGER_EXT */ + { 15314, 0x00000D18 }, /* GL_GREEN_SCALE */ + { 15329, 0x00008253 }, /* GL_GUILTY_CONTEXT_RESET_ARB */ + { 15357, 0x0000140B }, /* GL_HALF_FLOAT */ + { 15371, 0x00008D61 }, /* GL_HALF_FLOAT_OES */ + { 15389, 0x00008DF2 }, /* GL_HIGH_FLOAT */ + { 15403, 0x00008DF5 }, /* GL_HIGH_INT */ + { 15415, 0x00008000 }, /* GL_HINT_BIT */ + { 15427, 0x00008024 }, /* GL_HISTOGRAM */ + { 15440, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE */ + { 15464, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE_EXT */ + { 15492, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE */ + { 15515, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE_EXT */ + { 15542, 0x00008024 }, /* GL_HISTOGRAM_EXT */ + { 15559, 0x00008027 }, /* GL_HISTOGRAM_FORMAT */ + { 15579, 0x00008027 }, /* GL_HISTOGRAM_FORMAT_EXT */ + { 15603, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE */ + { 15627, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE_EXT */ + { 15655, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE */ + { 15683, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE_EXT */ + { 15715, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE */ + { 15737, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE_EXT */ + { 15763, 0x0000802D }, /* GL_HISTOGRAM_SINK */ + { 15781, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */ + { 15803, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */ + { 15822, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */ + { 15845, 0x0000862A }, /* GL_IDENTITY_NV */ + { 15860, 0x00008150 }, /* GL_IGNORE_BORDER_HP */ + { 15880, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */ + { 15916, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */ + { 15956, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */ + { 15990, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */ + { 16028, 0x00001E02 }, /* GL_INCR */ + { 16036, 0x00008507 }, /* GL_INCR_WRAP */ + { 16049, 0x00008507 }, /* GL_INCR_WRAP_EXT */ + { 16066, 0x00008222 }, /* GL_INDEX */ + { 16075, 0x00008077 }, /* GL_INDEX_ARRAY */ + { 16090, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */ + { 16120, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */ + { 16154, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */ + { 16177, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */ + { 16199, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */ + { 16219, 0x00000D51 }, /* GL_INDEX_BITS */ + { 16233, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */ + { 16254, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */ + { 16272, 0x00000C30 }, /* GL_INDEX_MODE */ + { 16286, 0x00000D13 }, /* GL_INDEX_OFFSET */ + { 16302, 0x00000D12 }, /* GL_INDEX_SHIFT */ + { 16317, 0x00000C21 }, /* GL_INDEX_WRITEMASK */ + { 16336, 0x00008B84 }, /* GL_INFO_LOG_LENGTH */ + { 16355, 0x00008254 }, /* GL_INNOCENT_CONTEXT_RESET_ARB */ + { 16385, 0x00001404 }, /* GL_INT */ + { 16392, 0x00008049 }, /* GL_INTENSITY */ + { 16405, 0x0000804C }, /* GL_INTENSITY12 */ + { 16420, 0x0000804C }, /* GL_INTENSITY12_EXT */ + { 16439, 0x0000804D }, /* GL_INTENSITY16 */ + { 16454, 0x00008D8B }, /* GL_INTENSITY16I_EXT */ + { 16474, 0x00008D79 }, /* GL_INTENSITY16UI_EXT */ + { 16495, 0x0000804D }, /* GL_INTENSITY16_EXT */ + { 16514, 0x00008D85 }, /* GL_INTENSITY32I_EXT */ + { 16534, 0x00008D73 }, /* GL_INTENSITY32UI_EXT */ + { 16555, 0x0000804A }, /* GL_INTENSITY4 */ + { 16569, 0x0000804A }, /* GL_INTENSITY4_EXT */ + { 16587, 0x0000804B }, /* GL_INTENSITY8 */ + { 16601, 0x00008D91 }, /* GL_INTENSITY8I_EXT */ + { 16620, 0x00008D7F }, /* GL_INTENSITY8UI_EXT */ + { 16640, 0x0000804B }, /* GL_INTENSITY8_EXT */ + { 16658, 0x00008049 }, /* GL_INTENSITY_EXT */ + { 16675, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS */ + { 16698, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS_EXT */ + { 16725, 0x00008575 }, /* GL_INTERPOLATE */ + { 16740, 0x00008575 }, /* GL_INTERPOLATE_ARB */ + { 16759, 0x00008575 }, /* GL_INTERPOLATE_EXT */ + { 16778, 0x00008DF7 }, /* GL_INT_10_10_10_2_OES */ + { 16800, 0x00008DC9 }, /* GL_INT_SAMPLER_1D */ + { 16818, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY */ + { 16842, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY_EXT */ + { 16870, 0x00008DC9 }, /* GL_INT_SAMPLER_1D_EXT */ + { 16892, 0x00008DCA }, /* GL_INT_SAMPLER_2D */ + { 16910, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY */ + { 16934, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY_EXT */ + { 16962, 0x00008DCA }, /* GL_INT_SAMPLER_2D_EXT */ + { 16984, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT */ + { 17007, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT_EXT */ + { 17034, 0x00008DCB }, /* GL_INT_SAMPLER_3D */ + { 17052, 0x00008DCB }, /* GL_INT_SAMPLER_3D_EXT */ + { 17074, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER */ + { 17096, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER_EXT */ + { 17122, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE */ + { 17142, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE_EXT */ + { 17166, 0x00008B53 }, /* GL_INT_VEC2 */ + { 17178, 0x00008B53 }, /* GL_INT_VEC2_ARB */ + { 17194, 0x00008B54 }, /* GL_INT_VEC3 */ + { 17206, 0x00008B54 }, /* GL_INT_VEC3_ARB */ + { 17222, 0x00008B55 }, /* GL_INT_VEC4 */ + { 17234, 0x00008B55 }, /* GL_INT_VEC4_ARB */ + { 17250, 0x00000500 }, /* GL_INVALID_ENUM */ + { 17266, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION */ + { 17299, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */ + { 17336, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_OES */ + { 17373, 0x00000502 }, /* GL_INVALID_OPERATION */ + { 17394, 0x00000501 }, /* GL_INVALID_VALUE */ + { 17411, 0x0000862B }, /* GL_INVERSE_NV */ + { 17425, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */ + { 17449, 0x0000150A }, /* GL_INVERT */ + { 17459, 0x00001E00 }, /* GL_KEEP */ + { 17467, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION */ + { 17493, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION_EXT */ + { 17523, 0x00000406 }, /* GL_LEFT */ + { 17531, 0x00000203 }, /* GL_LEQUAL */ + { 17541, 0x00000201 }, /* GL_LESS */ + { 17549, 0x00004000 }, /* GL_LIGHT0 */ + { 17559, 0x00004001 }, /* GL_LIGHT1 */ + { 17569, 0x00004002 }, /* GL_LIGHT2 */ + { 17579, 0x00004003 }, /* GL_LIGHT3 */ + { 17589, 0x00004004 }, /* GL_LIGHT4 */ + { 17599, 0x00004005 }, /* GL_LIGHT5 */ + { 17609, 0x00004006 }, /* GL_LIGHT6 */ + { 17619, 0x00004007 }, /* GL_LIGHT7 */ + { 17629, 0x00000B50 }, /* GL_LIGHTING */ + { 17641, 0x00000040 }, /* GL_LIGHTING_BIT */ + { 17657, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */ + { 17680, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */ + { 17709, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */ + { 17742, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ + { 17770, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */ + { 17794, 0x00001B01 }, /* GL_LINE */ + { 17802, 0x00002601 }, /* GL_LINEAR */ + { 17812, 0x00001208 }, /* GL_LINEAR_ATTENUATION */ + { 17834, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ + { 17864, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ + { 17895, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */ + { 17919, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */ + { 17944, 0x00000001 }, /* GL_LINES */ + { 17953, 0x0000000A }, /* GL_LINES_ADJACENCY */ + { 17972, 0x0000000A }, /* GL_LINES_ADJACENCY_ARB */ + { 17995, 0x00000004 }, /* GL_LINE_BIT */ + { 18007, 0x00000002 }, /* GL_LINE_LOOP */ + { 18020, 0x00000707 }, /* GL_LINE_RESET_TOKEN */ + { 18040, 0x00000B20 }, /* GL_LINE_SMOOTH */ + { 18055, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */ + { 18075, 0x00000B24 }, /* GL_LINE_STIPPLE */ + { 18091, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */ + { 18115, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */ + { 18138, 0x00000003 }, /* GL_LINE_STRIP */ + { 18152, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY */ + { 18176, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY_ARB */ + { 18204, 0x00000702 }, /* GL_LINE_TOKEN */ + { 18218, 0x00000B21 }, /* GL_LINE_WIDTH */ + { 18232, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */ + { 18258, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */ + { 18278, 0x00008B82 }, /* GL_LINK_STATUS */ + { 18293, 0x00000B32 }, /* GL_LIST_BASE */ + { 18306, 0x00020000 }, /* GL_LIST_BIT */ + { 18318, 0x00000B33 }, /* GL_LIST_INDEX */ + { 18332, 0x00000B30 }, /* GL_LIST_MODE */ + { 18345, 0x00000101 }, /* GL_LOAD */ + { 18353, 0x00000BF1 }, /* GL_LOGIC_OP */ + { 18365, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */ + { 18382, 0x00008252 }, /* GL_LOSE_CONTEXT_ON_RESET_ARB */ + { 18411, 0x00008CA1 }, /* GL_LOWER_LEFT */ + { 18425, 0x00008DF0 }, /* GL_LOW_FLOAT */ + { 18438, 0x00008DF3 }, /* GL_LOW_INT */ + { 18449, 0x00001909 }, /* GL_LUMINANCE */ + { 18462, 0x00008041 }, /* GL_LUMINANCE12 */ + { 18477, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */ + { 18500, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */ + { 18527, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */ + { 18549, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */ + { 18575, 0x00008041 }, /* GL_LUMINANCE12_EXT */ + { 18594, 0x00008042 }, /* GL_LUMINANCE16 */ + { 18609, 0x00008D8C }, /* GL_LUMINANCE16I_EXT */ + { 18629, 0x00008D7A }, /* GL_LUMINANCE16UI_EXT */ + { 18650, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */ + { 18673, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */ + { 18700, 0x00008042 }, /* GL_LUMINANCE16_EXT */ + { 18719, 0x00008D86 }, /* GL_LUMINANCE32I_EXT */ + { 18739, 0x00008D74 }, /* GL_LUMINANCE32UI_EXT */ + { 18760, 0x0000803F }, /* GL_LUMINANCE4 */ + { 18774, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */ + { 18795, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */ + { 18820, 0x0000803F }, /* GL_LUMINANCE4_EXT */ + { 18838, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */ + { 18859, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */ + { 18884, 0x00008040 }, /* GL_LUMINANCE8 */ + { 18898, 0x00008D92 }, /* GL_LUMINANCE8I_EXT */ + { 18917, 0x00008D80 }, /* GL_LUMINANCE8UI_EXT */ + { 18937, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */ + { 18958, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */ + { 18983, 0x00008040 }, /* GL_LUMINANCE8_EXT */ + { 19001, 0x0000190A }, /* GL_LUMINANCE_ALPHA */ + { 19020, 0x00008D8D }, /* GL_LUMINANCE_ALPHA16I_EXT */ + { 19046, 0x00008D7B }, /* GL_LUMINANCE_ALPHA16UI_EXT */ + { 19073, 0x00008D87 }, /* GL_LUMINANCE_ALPHA32I_EXT */ + { 19099, 0x00008D75 }, /* GL_LUMINANCE_ALPHA32UI_EXT */ + { 19126, 0x00008D93 }, /* GL_LUMINANCE_ALPHA8I_EXT */ + { 19151, 0x00008D81 }, /* GL_LUMINANCE_ALPHA8UI_EXT */ + { 19177, 0x00008D9D }, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */ + { 19208, 0x00008D9C }, /* GL_LUMINANCE_INTEGER_EXT */ + { 19233, 0x0000821B }, /* GL_MAJOR_VERSION */ + { 19250, 0x00000D90 }, /* GL_MAP1_COLOR_4 */ + { 19266, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */ + { 19286, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */ + { 19308, 0x00000D91 }, /* GL_MAP1_INDEX */ + { 19322, 0x00000D92 }, /* GL_MAP1_NORMAL */ + { 19337, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */ + { 19361, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */ + { 19385, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */ + { 19409, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */ + { 19433, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */ + { 19450, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */ + { 19467, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ + { 19495, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ + { 19524, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ + { 19553, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ + { 19582, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ + { 19611, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ + { 19640, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ + { 19669, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ + { 19697, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ + { 19725, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ + { 19753, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ + { 19781, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ + { 19809, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ + { 19837, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ + { 19865, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ + { 19893, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ + { 19921, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */ + { 19937, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */ + { 19957, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */ + { 19979, 0x00000DB1 }, /* GL_MAP2_INDEX */ + { 19993, 0x00000DB2 }, /* GL_MAP2_NORMAL */ + { 20008, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */ + { 20032, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */ + { 20056, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */ + { 20080, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */ + { 20104, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */ + { 20121, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */ + { 20138, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ + { 20166, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ + { 20195, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ + { 20224, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ + { 20253, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ + { 20282, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ + { 20311, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ + { 20340, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ + { 20368, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ + { 20396, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ + { 20424, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ + { 20452, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ + { 20480, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ + { 20508, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */ + { 20536, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ + { 20564, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ + { 20592, 0x00000D10 }, /* GL_MAP_COLOR */ + { 20605, 0x00000010 }, /* GL_MAP_FLUSH_EXPLICIT_BIT */ + { 20631, 0x00000008 }, /* GL_MAP_INVALIDATE_BUFFER_BIT */ + { 20660, 0x00000004 }, /* GL_MAP_INVALIDATE_RANGE_BIT */ + { 20688, 0x00000001 }, /* GL_MAP_READ_BIT */ + { 20704, 0x00000D11 }, /* GL_MAP_STENCIL */ + { 20719, 0x00000020 }, /* GL_MAP_UNSYNCHRONIZED_BIT */ + { 20745, 0x00000002 }, /* GL_MAP_WRITE_BIT */ + { 20762, 0x000088C0 }, /* GL_MATRIX0_ARB */ + { 20777, 0x00008630 }, /* GL_MATRIX0_NV */ + { 20791, 0x000088CA }, /* GL_MATRIX10_ARB */ + { 20807, 0x000088CB }, /* GL_MATRIX11_ARB */ + { 20823, 0x000088CC }, /* GL_MATRIX12_ARB */ + { 20839, 0x000088CD }, /* GL_MATRIX13_ARB */ + { 20855, 0x000088CE }, /* GL_MATRIX14_ARB */ + { 20871, 0x000088CF }, /* GL_MATRIX15_ARB */ + { 20887, 0x000088D0 }, /* GL_MATRIX16_ARB */ + { 20903, 0x000088D1 }, /* GL_MATRIX17_ARB */ + { 20919, 0x000088D2 }, /* GL_MATRIX18_ARB */ + { 20935, 0x000088D3 }, /* GL_MATRIX19_ARB */ + { 20951, 0x000088C1 }, /* GL_MATRIX1_ARB */ + { 20966, 0x00008631 }, /* GL_MATRIX1_NV */ + { 20980, 0x000088D4 }, /* GL_MATRIX20_ARB */ + { 20996, 0x000088D5 }, /* GL_MATRIX21_ARB */ + { 21012, 0x000088D6 }, /* GL_MATRIX22_ARB */ + { 21028, 0x000088D7 }, /* GL_MATRIX23_ARB */ + { 21044, 0x000088D8 }, /* GL_MATRIX24_ARB */ + { 21060, 0x000088D9 }, /* GL_MATRIX25_ARB */ + { 21076, 0x000088DA }, /* GL_MATRIX26_ARB */ + { 21092, 0x000088DB }, /* GL_MATRIX27_ARB */ + { 21108, 0x000088DC }, /* GL_MATRIX28_ARB */ + { 21124, 0x000088DD }, /* GL_MATRIX29_ARB */ + { 21140, 0x000088C2 }, /* GL_MATRIX2_ARB */ + { 21155, 0x00008632 }, /* GL_MATRIX2_NV */ + { 21169, 0x000088DE }, /* GL_MATRIX30_ARB */ + { 21185, 0x000088DF }, /* GL_MATRIX31_ARB */ + { 21201, 0x000088C3 }, /* GL_MATRIX3_ARB */ + { 21216, 0x00008633 }, /* GL_MATRIX3_NV */ + { 21230, 0x000088C4 }, /* GL_MATRIX4_ARB */ + { 21245, 0x00008634 }, /* GL_MATRIX4_NV */ + { 21259, 0x000088C5 }, /* GL_MATRIX5_ARB */ + { 21274, 0x00008635 }, /* GL_MATRIX5_NV */ + { 21288, 0x000088C6 }, /* GL_MATRIX6_ARB */ + { 21303, 0x00008636 }, /* GL_MATRIX6_NV */ + { 21317, 0x000088C7 }, /* GL_MATRIX7_ARB */ + { 21332, 0x00008637 }, /* GL_MATRIX7_NV */ + { 21346, 0x000088C8 }, /* GL_MATRIX8_ARB */ + { 21361, 0x000088C9 }, /* GL_MATRIX9_ARB */ + { 21376, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */ + { 21402, 0x00008B9E }, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */ + { 21443, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_OES */ + { 21469, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ + { 21503, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_OES */ + { 21537, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ + { 21568, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_OES */ + { 21599, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ + { 21632, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_OES */ + { 21665, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ + { 21696, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_OES */ + { 21727, 0x00000BA0 }, /* GL_MATRIX_MODE */ + { 21742, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */ + { 21764, 0x00008840 }, /* GL_MATRIX_PALETTE_OES */ + { 21786, 0x00008008 }, /* GL_MAX */ + { 21793, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */ + { 21816, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE_OES */ + { 21843, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS */ + { 21871, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */ + { 21903, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */ + { 21929, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ + { 21962, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ + { 21988, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + { 22022, 0x00000D32 }, /* GL_MAX_CLIP_DISTANCES */ + { 22044, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */ + { 22063, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS */ + { 22088, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */ + { 22117, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ + { 22149, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */ + { 22185, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ + { 22221, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */ + { 22261, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */ + { 22287, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */ + { 22317, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */ + { 22342, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */ + { 22371, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ + { 22400, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */ + { 22433, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES */ + { 22466, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS */ + { 22486, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */ + { 22510, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */ + { 22534, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */ + { 22558, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */ + { 22583, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */ + { 22601, 0x00008008 }, /* GL_MAX_EXT */ + { 22612, 0x00009125 }, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */ + { 22645, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ + { 22680, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */ + { 22719, 0x00008DFD }, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */ + { 22751, 0x00009123 }, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */ + { 22784, 0x00009124 }, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */ + { 22818, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */ + { 22850, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB */ + { 22886, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */ + { 22922, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB */ + { 22962, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */ + { 23002, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB */ + { 23046, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */ + { 23081, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB */ + { 23120, 0x00008DDD }, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */ + { 23159, 0x00000D31 }, /* GL_MAX_LIGHTS */ + { 23173, 0x00000B31 }, /* GL_MAX_LIST_NESTING */ + { 23193, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ + { 23231, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */ + { 23260, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */ + { 23284, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */ + { 23312, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_OES */ + { 23340, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */ + { 23363, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ + { 23400, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ + { 23436, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ + { 23463, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ + { 23492, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ + { 23526, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */ + { 23562, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ + { 23589, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ + { 23621, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ + { 23657, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ + { 23686, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ + { 23715, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */ + { 23743, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ + { 23781, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + { 23825, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + { 23868, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ + { 23902, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + { 23941, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ + { 23978, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ + { 24016, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + { 24059, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + { 24102, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ + { 24132, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ + { 24163, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET */ + { 24191, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET_EXT */ + { 24223, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ + { 24259, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ + { 24295, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */ + { 24325, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */ + { 24355, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */ + { 24389, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */ + { 24422, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE */ + { 24447, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */ + { 24476, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_OES */ + { 24505, 0x00008D57 }, /* GL_MAX_SAMPLES */ + { 24520, 0x00008D57 }, /* GL_MAX_SAMPLES_EXT */ + { 24539, 0x00009111 }, /* GL_MAX_SERVER_WAIT_TIMEOUT */ + { 24566, 0x00008504 }, /* GL_MAX_SHININESS_NV */ + { 24586, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */ + { 24610, 0x00008C2B }, /* GL_MAX_TEXTURE_BUFFER_SIZE */ + { 24637, 0x00008C2B }, /* GL_MAX_TEXTURE_BUFFER_SIZE_ARB */ + { 24668, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS */ + { 24690, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */ + { 24716, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS */ + { 24743, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */ + { 24774, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */ + { 24798, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS_EXT */ + { 24826, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ + { 24860, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */ + { 24880, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */ + { 24907, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */ + { 24928, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */ + { 24953, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */ + { 24978, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */ + { 25013, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */ + { 25062, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */ + { 25115, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */ + { 25158, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */ + { 25205, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */ + { 25251, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */ + { 25301, 0x00008B4B }, /* GL_MAX_VARYING_COMPONENTS */ + { 25327, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS */ + { 25349, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */ + { 25375, 0x00008DFC }, /* GL_MAX_VARYING_VECTORS */ + { 25398, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS */ + { 25420, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */ + { 25446, 0x00009122 }, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */ + { 25478, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ + { 25512, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */ + { 25550, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ + { 25583, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */ + { 25620, 0x00008DFB }, /* GL_MAX_VERTEX_UNIFORM_VECTORS */ + { 25650, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */ + { 25674, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_OES */ + { 25698, 0x00008DDE }, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */ + { 25735, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */ + { 25756, 0x00008DF1 }, /* GL_MEDIUM_FLOAT */ + { 25772, 0x00008DF4 }, /* GL_MEDIUM_INT */ + { 25786, 0x00008007 }, /* GL_MIN */ + { 25793, 0x0000802E }, /* GL_MINMAX */ + { 25803, 0x0000802E }, /* GL_MINMAX_EXT */ + { 25817, 0x0000802F }, /* GL_MINMAX_FORMAT */ + { 25834, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */ + { 25855, 0x00008030 }, /* GL_MINMAX_SINK */ + { 25870, 0x00008030 }, /* GL_MINMAX_SINK_EXT */ + { 25889, 0x0000821C }, /* GL_MINOR_VERSION */ + { 25906, 0x00008007 }, /* GL_MIN_EXT */ + { 25917, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET */ + { 25945, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET_EXT */ + { 25977, 0x00008370 }, /* GL_MIRRORED_REPEAT */ + { 25996, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */ + { 26019, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */ + { 26042, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */ + { 26062, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */ + { 26082, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ + { 26112, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */ + { 26140, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ + { 26168, 0x00001700 }, /* GL_MODELVIEW */ + { 26181, 0x00001700 }, /* GL_MODELVIEW0_ARB */ + { 26199, 0x0000872A }, /* GL_MODELVIEW10_ARB */ + { 26218, 0x0000872B }, /* GL_MODELVIEW11_ARB */ + { 26237, 0x0000872C }, /* GL_MODELVIEW12_ARB */ + { 26256, 0x0000872D }, /* GL_MODELVIEW13_ARB */ + { 26275, 0x0000872E }, /* GL_MODELVIEW14_ARB */ + { 26294, 0x0000872F }, /* GL_MODELVIEW15_ARB */ + { 26313, 0x00008730 }, /* GL_MODELVIEW16_ARB */ + { 26332, 0x00008731 }, /* GL_MODELVIEW17_ARB */ + { 26351, 0x00008732 }, /* GL_MODELVIEW18_ARB */ + { 26370, 0x00008733 }, /* GL_MODELVIEW19_ARB */ + { 26389, 0x0000850A }, /* GL_MODELVIEW1_ARB */ + { 26407, 0x00008734 }, /* GL_MODELVIEW20_ARB */ + { 26426, 0x00008735 }, /* GL_MODELVIEW21_ARB */ + { 26445, 0x00008736 }, /* GL_MODELVIEW22_ARB */ + { 26464, 0x00008737 }, /* GL_MODELVIEW23_ARB */ + { 26483, 0x00008738 }, /* GL_MODELVIEW24_ARB */ + { 26502, 0x00008739 }, /* GL_MODELVIEW25_ARB */ + { 26521, 0x0000873A }, /* GL_MODELVIEW26_ARB */ + { 26540, 0x0000873B }, /* GL_MODELVIEW27_ARB */ + { 26559, 0x0000873C }, /* GL_MODELVIEW28_ARB */ + { 26578, 0x0000873D }, /* GL_MODELVIEW29_ARB */ + { 26597, 0x00008722 }, /* GL_MODELVIEW2_ARB */ + { 26615, 0x0000873E }, /* GL_MODELVIEW30_ARB */ + { 26634, 0x0000873F }, /* GL_MODELVIEW31_ARB */ + { 26653, 0x00008723 }, /* GL_MODELVIEW3_ARB */ + { 26671, 0x00008724 }, /* GL_MODELVIEW4_ARB */ + { 26689, 0x00008725 }, /* GL_MODELVIEW5_ARB */ + { 26707, 0x00008726 }, /* GL_MODELVIEW6_ARB */ + { 26725, 0x00008727 }, /* GL_MODELVIEW7_ARB */ + { 26743, 0x00008728 }, /* GL_MODELVIEW8_ARB */ + { 26761, 0x00008729 }, /* GL_MODELVIEW9_ARB */ + { 26779, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */ + { 26799, 0x0000898D }, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */ + { 26841, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */ + { 26868, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */ + { 26893, 0x00002100 }, /* GL_MODULATE */ + { 26905, 0x00008744 }, /* GL_MODULATE_ADD_ATI */ + { 26925, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */ + { 26952, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */ + { 26977, 0x00000103 }, /* GL_MULT */ + { 26985, 0x0000809D }, /* GL_MULTISAMPLE */ + { 27000, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */ + { 27020, 0x0000809D }, /* GL_MULTISAMPLE_ARB */ + { 27039, 0x20000000 }, /* GL_MULTISAMPLE_BIT */ + { 27058, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */ + { 27082, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */ + { 27105, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */ + { 27135, 0x00002A25 }, /* GL_N3F_V3F */ + { 27146, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */ + { 27166, 0x0000150E }, /* GL_NAND */ + { 27174, 0x00002600 }, /* GL_NEAREST */ + { 27185, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ + { 27216, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ + { 27248, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */ + { 27273, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */ + { 27299, 0x00000200 }, /* GL_NEVER */ + { 27308, 0x00001102 }, /* GL_NICEST */ + { 27318, 0x00000000 }, /* GL_NONE */ + { 27326, 0x00000000 }, /* GL_NONE_OES */ + { 27338, 0x00001505 }, /* GL_NOOP */ + { 27346, 0x00001508 }, /* GL_NOR */ + { 27353, 0x00000BA1 }, /* GL_NORMALIZE */ + { 27366, 0x00008075 }, /* GL_NORMAL_ARRAY */ + { 27382, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ + { 27413, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */ + { 27448, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */ + { 27472, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */ + { 27495, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */ + { 27516, 0x00008511 }, /* GL_NORMAL_MAP */ + { 27530, 0x00008511 }, /* GL_NORMAL_MAP_ARB */ + { 27548, 0x00008511 }, /* GL_NORMAL_MAP_NV */ + { 27565, 0x00008511 }, /* GL_NORMAL_MAP_OES */ + { 27583, 0x00000205 }, /* GL_NOTEQUAL */ + { 27595, 0x00000000 }, /* GL_NO_ERROR */ + { 27607, 0x00008261 }, /* GL_NO_RESET_NOTIFICATION_ARB */ + { 27636, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ + { 27670, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB */ + { 27708, 0x0000821D }, /* GL_NUM_EXTENSIONS */ + { 27726, 0x000087FE }, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */ + { 27760, 0x00008DF9 }, /* GL_NUM_SHADER_BINARY_FORMATS */ + { 27789, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */ + { 27821, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */ + { 27863, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */ + { 27893, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */ + { 27933, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */ + { 27964, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */ + { 27993, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */ + { 28021, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */ + { 28051, 0x00002401 }, /* GL_OBJECT_LINEAR */ + { 28068, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */ + { 28094, 0x00002501 }, /* GL_OBJECT_PLANE */ + { 28110, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */ + { 28145, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */ + { 28167, 0x00009112 }, /* GL_OBJECT_TYPE */ + { 28182, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */ + { 28201, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */ + { 28231, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */ + { 28252, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */ + { 28280, 0x00000001 }, /* GL_ONE */ + { 28287, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */ + { 28315, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */ + { 28347, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */ + { 28375, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */ + { 28407, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */ + { 28430, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */ + { 28453, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */ + { 28476, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */ + { 28499, 0x00008598 }, /* GL_OPERAND0_ALPHA */ + { 28517, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */ + { 28539, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */ + { 28561, 0x00008590 }, /* GL_OPERAND0_RGB */ + { 28577, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */ + { 28597, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */ + { 28617, 0x00008599 }, /* GL_OPERAND1_ALPHA */ + { 28635, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */ + { 28657, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */ + { 28679, 0x00008591 }, /* GL_OPERAND1_RGB */ + { 28695, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */ + { 28715, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */ + { 28735, 0x0000859A }, /* GL_OPERAND2_ALPHA */ + { 28753, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */ + { 28775, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */ + { 28797, 0x00008592 }, /* GL_OPERAND2_RGB */ + { 28813, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */ + { 28833, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */ + { 28853, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */ + { 28874, 0x00008593 }, /* GL_OPERAND3_RGB_NV */ + { 28893, 0x00001507 }, /* GL_OR */ + { 28899, 0x00000A01 }, /* GL_ORDER */ + { 28908, 0x0000150D }, /* GL_OR_INVERTED */ + { 28923, 0x0000150B }, /* GL_OR_REVERSE */ + { 28937, 0x00000505 }, /* GL_OUT_OF_MEMORY */ + { 28954, 0x00000D05 }, /* GL_PACK_ALIGNMENT */ + { 28972, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */ + { 28993, 0x00008758 }, /* GL_PACK_INVERT_MESA */ + { 29013, 0x00000D01 }, /* GL_PACK_LSB_FIRST */ + { 29031, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */ + { 29050, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */ + { 29070, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */ + { 29090, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */ + { 29108, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */ + { 29127, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */ + { 29152, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */ + { 29176, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */ + { 29197, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */ + { 29219, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */ + { 29241, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */ + { 29266, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */ + { 29290, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */ + { 29311, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */ + { 29333, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */ + { 29355, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */ + { 29377, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */ + { 29408, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */ + { 29428, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */ + { 29453, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */ + { 29473, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */ + { 29498, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */ + { 29518, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */ + { 29543, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */ + { 29563, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */ + { 29588, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */ + { 29608, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */ + { 29633, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */ + { 29653, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */ + { 29678, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */ + { 29698, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */ + { 29723, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */ + { 29743, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */ + { 29768, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */ + { 29788, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */ + { 29813, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */ + { 29833, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */ + { 29858, 0x00000020 }, /* GL_PIXEL_MODE_BIT */ + { 29876, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER */ + { 29897, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING */ + { 29926, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */ + { 29959, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */ + { 29984, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER */ + { 30007, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING */ + { 30038, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */ + { 30073, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */ + { 30100, 0x00001B00 }, /* GL_POINT */ + { 30109, 0x00000000 }, /* GL_POINTS */ + { 30119, 0x00000002 }, /* GL_POINT_BIT */ + { 30132, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */ + { 30162, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */ + { 30196, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */ + { 30230, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */ + { 30265, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */ + { 30294, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */ + { 30327, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */ + { 30360, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */ + { 30394, 0x00000B11 }, /* GL_POINT_SIZE */ + { 30408, 0x00008B9F }, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */ + { 30447, 0x00008B9C }, /* GL_POINT_SIZE_ARRAY_OES */ + { 30471, 0x0000898C }, /* GL_POINT_SIZE_ARRAY_POINTER_OES */ + { 30503, 0x0000898B }, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */ + { 30534, 0x0000898A }, /* GL_POINT_SIZE_ARRAY_TYPE_OES */ + { 30563, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */ + { 30589, 0x00008127 }, /* GL_POINT_SIZE_MAX */ + { 30607, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */ + { 30629, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */ + { 30651, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */ + { 30674, 0x00008126 }, /* GL_POINT_SIZE_MIN */ + { 30692, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */ + { 30714, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */ + { 30736, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */ + { 30759, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */ + { 30779, 0x00000B10 }, /* GL_POINT_SMOOTH */ + { 30795, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */ + { 30816, 0x00008861 }, /* GL_POINT_SPRITE */ + { 30832, 0x00008861 }, /* GL_POINT_SPRITE_ARB */ + { 30852, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */ + { 30881, 0x00008861 }, /* GL_POINT_SPRITE_NV */ + { 30900, 0x00008861 }, /* GL_POINT_SPRITE_OES */ + { 30920, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */ + { 30946, 0x00000701 }, /* GL_POINT_TOKEN */ + { 30961, 0x00000009 }, /* GL_POLYGON */ + { 30972, 0x00000008 }, /* GL_POLYGON_BIT */ + { 30987, 0x00000B40 }, /* GL_POLYGON_MODE */ + { 31003, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */ + { 31026, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */ + { 31051, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */ + { 31074, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */ + { 31097, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */ + { 31121, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */ + { 31145, 0x00000B41 }, /* GL_POLYGON_SMOOTH */ + { 31163, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */ + { 31186, 0x00000B42 }, /* GL_POLYGON_STIPPLE */ + { 31205, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */ + { 31228, 0x00000703 }, /* GL_POLYGON_TOKEN */ + { 31245, 0x00001203 }, /* GL_POSITION */ + { 31257, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ + { 31289, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */ + { 31325, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ + { 31358, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */ + { 31395, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ + { 31426, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */ + { 31461, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ + { 31493, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */ + { 31529, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ + { 31562, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ + { 31594, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */ + { 31630, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ + { 31663, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */ + { 31700, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */ + { 31730, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */ + { 31764, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */ + { 31795, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */ + { 31830, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ + { 31861, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */ + { 31896, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ + { 31928, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */ + { 31964, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */ + { 31994, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */ + { 32028, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */ + { 32059, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */ + { 32094, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */ + { 32126, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */ + { 32157, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */ + { 32192, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */ + { 32224, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */ + { 32260, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */ + { 32289, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */ + { 32322, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */ + { 32352, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */ + { 32386, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ + { 32425, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ + { 32458, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ + { 32498, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ + { 32532, 0x00008578 }, /* GL_PREVIOUS */ + { 32544, 0x00008578 }, /* GL_PREVIOUS_ARB */ + { 32560, 0x00008578 }, /* GL_PREVIOUS_EXT */ + { 32576, 0x00008577 }, /* GL_PRIMARY_COLOR */ + { 32593, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */ + { 32614, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */ + { 32635, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED */ + { 32659, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED_EXT */ + { 32687, 0x00008F9D }, /* GL_PRIMITIVE_RESTART */ + { 32708, 0x00008F9E }, /* GL_PRIMITIVE_RESTART_INDEX */ + { 32735, 0x00008559 }, /* GL_PRIMITIVE_RESTART_INDEX_NV */ + { 32765, 0x00008558 }, /* GL_PRIMITIVE_RESTART_NV */ + { 32789, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ + { 32822, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ + { 32854, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */ + { 32877, 0x000087FF }, /* GL_PROGRAM_BINARY_FORMATS_OES */ + { 32907, 0x00008741 }, /* GL_PROGRAM_BINARY_LENGTH_OES */ + { 32936, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */ + { 32959, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */ + { 32989, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */ + { 33018, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */ + { 33046, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */ + { 33068, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */ + { 33096, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */ + { 33124, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */ + { 33146, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */ + { 33167, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + { 33207, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + { 33246, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ + { 33276, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + { 33311, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ + { 33344, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ + { 33378, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + { 33417, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + { 33456, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */ + { 33478, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */ + { 33504, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */ + { 33528, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE */ + { 33550, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE_ARB */ + { 33576, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */ + { 33599, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */ + { 33621, 0x00008628 }, /* GL_PROGRAM_STRING_NV */ + { 33642, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */ + { 33663, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */ + { 33690, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ + { 33722, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ + { 33754, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ + { 33789, 0x00001701 }, /* GL_PROJECTION */ + { 33803, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */ + { 33824, 0x0000898E }, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */ + { 33867, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */ + { 33893, 0x00008E4F }, /* GL_PROVOKING_VERTEX */ + { 33913, 0x00008E4F }, /* GL_PROVOKING_VERTEX_EXT */ + { 33937, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */ + { 33958, 0x00008025 }, /* GL_PROXY_HISTOGRAM */ + { 33977, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */ + { 34000, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ + { 34039, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ + { 34077, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */ + { 34097, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY */ + { 34123, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */ + { 34153, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */ + { 34177, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */ + { 34197, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY */ + { 34223, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */ + { 34253, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */ + { 34277, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */ + { 34297, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ + { 34330, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */ + { 34356, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */ + { 34386, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE */ + { 34413, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */ + { 34444, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */ + { 34474, 0x00008A1D }, /* GL_PURGEABLE_APPLE */ + { 34493, 0x00002003 }, /* GL_Q */ + { 34498, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */ + { 34523, 0x00000007 }, /* GL_QUADS */ + { 34532, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ + { 34576, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT */ + { 34624, 0x00008614 }, /* GL_QUAD_MESH_SUN */ + { 34641, 0x00000008 }, /* GL_QUAD_STRIP */ + { 34655, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT */ + { 34682, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT_NV */ + { 34712, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT */ + { 34736, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT_NV */ + { 34763, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */ + { 34785, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */ + { 34811, 0x00008E14 }, /* GL_QUERY_NO_WAIT */ + { 34828, 0x00008E14 }, /* GL_QUERY_NO_WAIT_NV */ + { 34848, 0x00008866 }, /* GL_QUERY_RESULT */ + { 34864, 0x00008866 }, /* GL_QUERY_RESULT_ARB */ + { 34884, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */ + { 34910, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */ + { 34940, 0x00008E13 }, /* GL_QUERY_WAIT */ + { 34954, 0x00008E13 }, /* GL_QUERY_WAIT_NV */ + { 34971, 0x00002002 }, /* GL_R */ + { 34976, 0x00008C3A }, /* GL_R11F_G11F_B10F */ + { 34994, 0x00008F98 }, /* GL_R16_SNORM */ + { 35007, 0x00002A10 }, /* GL_R3_G3_B2 */ + { 35019, 0x00008F94 }, /* GL_R8_SNORM */ + { 35031, 0x00008C89 }, /* GL_RASTERIZER_DISCARD */ + { 35053, 0x00008C89 }, /* GL_RASTERIZER_DISCARD_EXT */ + { 35079, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ + { 35112, 0x00000C02 }, /* GL_READ_BUFFER */ + { 35127, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER */ + { 35147, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING */ + { 35175, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */ + { 35207, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */ + { 35231, 0x000088B8 }, /* GL_READ_ONLY */ + { 35244, 0x000088B8 }, /* GL_READ_ONLY_ARB */ + { 35261, 0x000088BA }, /* GL_READ_WRITE */ + { 35275, 0x000088BA }, /* GL_READ_WRITE_ARB */ + { 35293, 0x00001903 }, /* GL_RED */ + { 35300, 0x00008016 }, /* GL_REDUCE */ + { 35310, 0x00008016 }, /* GL_REDUCE_EXT */ + { 35324, 0x00000D15 }, /* GL_RED_BIAS */ + { 35336, 0x00000D52 }, /* GL_RED_BITS */ + { 35348, 0x00008D94 }, /* GL_RED_INTEGER */ + { 35363, 0x00008D94 }, /* GL_RED_INTEGER_EXT */ + { 35382, 0x00000D14 }, /* GL_RED_SCALE */ + { 35395, 0x00008F90 }, /* GL_RED_SNORM */ + { 35408, 0x00008512 }, /* GL_REFLECTION_MAP */ + { 35426, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */ + { 35448, 0x00008512 }, /* GL_REFLECTION_MAP_NV */ + { 35469, 0x00008512 }, /* GL_REFLECTION_MAP_OES */ + { 35491, 0x00008A19 }, /* GL_RELEASED_APPLE */ + { 35509, 0x00001C00 }, /* GL_RENDER */ + { 35519, 0x00008D41 }, /* GL_RENDERBUFFER */ + { 35535, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE */ + { 35562, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE_OES */ + { 35593, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING */ + { 35617, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */ + { 35645, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_OES */ + { 35673, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE */ + { 35699, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE_OES */ + { 35729, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE */ + { 35756, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE_OES */ + { 35787, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */ + { 35807, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE */ + { 35834, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE_OES */ + { 35865, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT */ + { 35888, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */ + { 35915, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_OES */ + { 35942, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT */ + { 35974, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */ + { 36010, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_OES */ + { 36046, 0x00008D41 }, /* GL_RENDERBUFFER_OES */ + { 36066, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE */ + { 36091, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE_OES */ + { 36120, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES */ + { 36144, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES_EXT */ + { 36172, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE */ + { 36201, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE_OES */ + { 36234, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH */ + { 36256, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */ + { 36282, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_OES */ + { 36308, 0x00001F01 }, /* GL_RENDERER */ + { 36320, 0x00000C40 }, /* GL_RENDER_MODE */ + { 36335, 0x00002901 }, /* GL_REPEAT */ + { 36345, 0x00001E01 }, /* GL_REPLACE */ + { 36356, 0x00008062 }, /* GL_REPLACE_EXT */ + { 36371, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */ + { 36394, 0x0000803A }, /* GL_RESCALE_NORMAL */ + { 36412, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */ + { 36434, 0x00008256 }, /* GL_RESET_NOTIFICATION_STRATEGY_ARB */ + { 36469, 0x00008A1B }, /* GL_RETAINED_APPLE */ + { 36487, 0x00000102 }, /* GL_RETURN */ + { 36497, 0x00008F99 }, /* GL_RG16_SNORM */ + { 36511, 0x00008F95 }, /* GL_RG8_SNORM */ + { 36524, 0x00001907 }, /* GL_RGB */ + { 36531, 0x00008052 }, /* GL_RGB10 */ + { 36540, 0x00008059 }, /* GL_RGB10_A2 */ + { 36552, 0x00008059 }, /* GL_RGB10_A2_EXT */ + { 36568, 0x00008052 }, /* GL_RGB10_EXT */ + { 36581, 0x00008053 }, /* GL_RGB12 */ + { 36590, 0x00008053 }, /* GL_RGB12_EXT */ + { 36603, 0x00008054 }, /* GL_RGB16 */ + { 36612, 0x0000881B }, /* GL_RGB16F */ + { 36622, 0x00008D89 }, /* GL_RGB16I */ + { 36632, 0x00008D89 }, /* GL_RGB16I_EXT */ + { 36646, 0x00008D77 }, /* GL_RGB16UI */ + { 36657, 0x00008D77 }, /* GL_RGB16UI_EXT */ + { 36672, 0x00008054 }, /* GL_RGB16_EXT */ + { 36685, 0x00008F9A }, /* GL_RGB16_SNORM */ + { 36700, 0x0000804E }, /* GL_RGB2_EXT */ + { 36712, 0x00008815 }, /* GL_RGB32F */ + { 36722, 0x00008D83 }, /* GL_RGB32I */ + { 36732, 0x00008D83 }, /* GL_RGB32I_EXT */ + { 36746, 0x00008D71 }, /* GL_RGB32UI */ + { 36757, 0x00008D71 }, /* GL_RGB32UI_EXT */ + { 36772, 0x0000804F }, /* GL_RGB4 */ + { 36780, 0x0000804F }, /* GL_RGB4_EXT */ + { 36792, 0x000083A1 }, /* GL_RGB4_S3TC */ + { 36805, 0x00008050 }, /* GL_RGB5 */ + { 36813, 0x00008D62 }, /* GL_RGB565 */ + { 36823, 0x00008D62 }, /* GL_RGB565_OES */ + { 36837, 0x00008057 }, /* GL_RGB5_A1 */ + { 36848, 0x00008057 }, /* GL_RGB5_A1_EXT */ + { 36863, 0x00008057 }, /* GL_RGB5_A1_OES */ + { 36878, 0x00008050 }, /* GL_RGB5_EXT */ + { 36890, 0x00008051 }, /* GL_RGB8 */ + { 36898, 0x00008D8F }, /* GL_RGB8I */ + { 36907, 0x00008D8F }, /* GL_RGB8I_EXT */ + { 36920, 0x00008D7D }, /* GL_RGB8UI */ + { 36930, 0x00008D7D }, /* GL_RGB8UI_EXT */ + { 36944, 0x00008051 }, /* GL_RGB8_EXT */ + { 36956, 0x00008051 }, /* GL_RGB8_OES */ + { 36968, 0x00008F96 }, /* GL_RGB8_SNORM */ + { 36982, 0x00008C3D }, /* GL_RGB9_E5 */ + { 36993, 0x00001908 }, /* GL_RGBA */ + { 37001, 0x0000805A }, /* GL_RGBA12 */ + { 37011, 0x0000805A }, /* GL_RGBA12_EXT */ + { 37025, 0x0000805B }, /* GL_RGBA16 */ + { 37035, 0x0000881A }, /* GL_RGBA16F */ + { 37046, 0x00008D88 }, /* GL_RGBA16I */ + { 37057, 0x00008D88 }, /* GL_RGBA16I_EXT */ + { 37072, 0x00008D76 }, /* GL_RGBA16UI */ + { 37084, 0x00008D76 }, /* GL_RGBA16UI_EXT */ + { 37100, 0x0000805B }, /* GL_RGBA16_EXT */ + { 37114, 0x00008F9B }, /* GL_RGBA16_SNORM */ + { 37130, 0x00008055 }, /* GL_RGBA2 */ + { 37139, 0x00008055 }, /* GL_RGBA2_EXT */ + { 37152, 0x00008814 }, /* GL_RGBA32F */ + { 37163, 0x00008D82 }, /* GL_RGBA32I */ + { 37174, 0x00008D82 }, /* GL_RGBA32I_EXT */ + { 37189, 0x00008D70 }, /* GL_RGBA32UI */ + { 37201, 0x00008D70 }, /* GL_RGBA32UI_EXT */ + { 37217, 0x00008056 }, /* GL_RGBA4 */ + { 37226, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */ + { 37245, 0x00008056 }, /* GL_RGBA4_EXT */ + { 37258, 0x00008056 }, /* GL_RGBA4_OES */ + { 37271, 0x000083A3 }, /* GL_RGBA4_S3TC */ + { 37285, 0x00008058 }, /* GL_RGBA8 */ + { 37294, 0x00008D8E }, /* GL_RGBA8I */ + { 37304, 0x00008D8E }, /* GL_RGBA8I_EXT */ + { 37318, 0x00008D7C }, /* GL_RGBA8UI */ + { 37329, 0x00008D7C }, /* GL_RGBA8UI_EXT */ + { 37344, 0x00008058 }, /* GL_RGBA8_EXT */ + { 37357, 0x00008058 }, /* GL_RGBA8_OES */ + { 37370, 0x00008F97 }, /* GL_RGBA8_SNORM */ + { 37385, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */ + { 37403, 0x00008820 }, /* GL_RGBA_FLOAT_MODE_ARB */ + { 37426, 0x00008D99 }, /* GL_RGBA_INTEGER */ + { 37442, 0x00008D99 }, /* GL_RGBA_INTEGER_EXT */ + { 37462, 0x00008D9E }, /* GL_RGBA_INTEGER_MODE_EXT */ + { 37487, 0x00000C31 }, /* GL_RGBA_MODE */ + { 37500, 0x000083A2 }, /* GL_RGBA_S3TC */ + { 37513, 0x00008F93 }, /* GL_RGBA_SNORM */ + { 37527, 0x00008D98 }, /* GL_RGB_INTEGER */ + { 37542, 0x00008D98 }, /* GL_RGB_INTEGER_EXT */ + { 37561, 0x000083A0 }, /* GL_RGB_S3TC */ + { 37573, 0x00008573 }, /* GL_RGB_SCALE */ + { 37586, 0x00008573 }, /* GL_RGB_SCALE_ARB */ + { 37603, 0x00008573 }, /* GL_RGB_SCALE_EXT */ + { 37620, 0x00008F92 }, /* GL_RGB_SNORM */ + { 37633, 0x00008F91 }, /* GL_RG_SNORM */ + { 37645, 0x00000407 }, /* GL_RIGHT */ + { 37654, 0x00002000 }, /* GL_S */ + { 37659, 0x00008B5D }, /* GL_SAMPLER_1D */ + { 37673, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY */ + { 37693, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY_EXT */ + { 37717, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW */ + { 37744, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW_EXT */ + { 37775, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */ + { 37796, 0x00008B5E }, /* GL_SAMPLER_2D */ + { 37810, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY */ + { 37830, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY_EXT */ + { 37854, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW */ + { 37881, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW_EXT */ + { 37912, 0x00008B63 }, /* GL_SAMPLER_2D_RECT */ + { 37931, 0x00008B64 }, /* GL_SAMPLER_2D_RECT_SHADOW */ + { 37957, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */ + { 37978, 0x00008B5F }, /* GL_SAMPLER_3D */ + { 37992, 0x00008B5F }, /* GL_SAMPLER_3D_OES */ + { 38010, 0x00008919 }, /* GL_SAMPLER_BINDING */ + { 38029, 0x00008DC2 }, /* GL_SAMPLER_BUFFER */ + { 38047, 0x00008DC2 }, /* GL_SAMPLER_BUFFER_EXT */ + { 38069, 0x00008B60 }, /* GL_SAMPLER_CUBE */ + { 38085, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW */ + { 38108, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW_EXT */ + { 38135, 0x000080A9 }, /* GL_SAMPLES */ + { 38146, 0x000086B4 }, /* GL_SAMPLES_3DFX */ + { 38162, 0x000080A9 }, /* GL_SAMPLES_ARB */ + { 38177, 0x00008914 }, /* GL_SAMPLES_PASSED */ + { 38195, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */ + { 38217, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ + { 38245, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */ + { 38277, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */ + { 38300, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */ + { 38327, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */ + { 38345, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */ + { 38368, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */ + { 38390, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */ + { 38409, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */ + { 38432, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */ + { 38458, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */ + { 38488, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */ + { 38513, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */ + { 38542, 0x00080000 }, /* GL_SCISSOR_BIT */ + { 38557, 0x00000C10 }, /* GL_SCISSOR_BOX */ + { 38572, 0x00000C11 }, /* GL_SCISSOR_TEST */ + { 38588, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */ + { 38613, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ + { 38653, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */ + { 38697, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ + { 38730, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ + { 38760, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ + { 38792, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ + { 38822, 0x00001C02 }, /* GL_SELECT */ + { 38832, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */ + { 38860, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */ + { 38885, 0x00008012 }, /* GL_SEPARABLE_2D */ + { 38901, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS */ + { 38921, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS_EXT */ + { 38945, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */ + { 38972, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */ + { 39003, 0x0000150F }, /* GL_SET */ + { 39010, 0x00008DF8 }, /* GL_SHADER_BINARY_FORMATS */ + { 39035, 0x00008DFA }, /* GL_SHADER_COMPILER */ + { 39054, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */ + { 39075, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */ + { 39099, 0x00008B4F }, /* GL_SHADER_TYPE */ + { 39114, 0x00000B54 }, /* GL_SHADE_MODEL */ + { 39129, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */ + { 39157, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */ + { 39180, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */ + { 39210, 0x00001601 }, /* GL_SHININESS */ + { 39223, 0x00001402 }, /* GL_SHORT */ + { 39232, 0x00009119 }, /* GL_SIGNALED */ + { 39244, 0x00008F9C }, /* GL_SIGNED_NORMALIZED */ + { 39265, 0x000081F9 }, /* GL_SINGLE_COLOR */ + { 39281, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */ + { 39301, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */ + { 39320, 0x00008C46 }, /* GL_SLUMINANCE */ + { 39334, 0x00008C47 }, /* GL_SLUMINANCE8 */ + { 39349, 0x00008C45 }, /* GL_SLUMINANCE8_ALPHA8 */ + { 39371, 0x00008C44 }, /* GL_SLUMINANCE_ALPHA */ + { 39391, 0x00001D01 }, /* GL_SMOOTH */ + { 39401, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */ + { 39434, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */ + { 39461, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */ + { 39494, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */ + { 39521, 0x00008588 }, /* GL_SOURCE0_ALPHA */ + { 39538, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */ + { 39559, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */ + { 39580, 0x00008580 }, /* GL_SOURCE0_RGB */ + { 39595, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */ + { 39614, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */ + { 39633, 0x00008589 }, /* GL_SOURCE1_ALPHA */ + { 39650, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */ + { 39671, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */ + { 39692, 0x00008581 }, /* GL_SOURCE1_RGB */ + { 39707, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */ + { 39726, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */ + { 39745, 0x0000858A }, /* GL_SOURCE2_ALPHA */ + { 39762, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */ + { 39783, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */ + { 39804, 0x00008582 }, /* GL_SOURCE2_RGB */ + { 39819, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */ + { 39838, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */ + { 39857, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */ + { 39877, 0x00008583 }, /* GL_SOURCE3_RGB_NV */ + { 39895, 0x00001202 }, /* GL_SPECULAR */ + { 39907, 0x00002402 }, /* GL_SPHERE_MAP */ + { 39921, 0x00001206 }, /* GL_SPOT_CUTOFF */ + { 39936, 0x00001204 }, /* GL_SPOT_DIRECTION */ + { 39954, 0x00001205 }, /* GL_SPOT_EXPONENT */ + { 39971, 0x00008588 }, /* GL_SRC0_ALPHA */ + { 39985, 0x00008580 }, /* GL_SRC0_RGB */ + { 39997, 0x00008589 }, /* GL_SRC1_ALPHA */ + { 40011, 0x00008581 }, /* GL_SRC1_RGB */ + { 40023, 0x0000858A }, /* GL_SRC2_ALPHA */ + { 40037, 0x00008582 }, /* GL_SRC2_RGB */ + { 40049, 0x00000302 }, /* GL_SRC_ALPHA */ + { 40062, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */ + { 40084, 0x00000300 }, /* GL_SRC_COLOR */ + { 40097, 0x00008C40 }, /* GL_SRGB */ + { 40105, 0x00008C41 }, /* GL_SRGB8 */ + { 40114, 0x00008C43 }, /* GL_SRGB8_ALPHA8 */ + { 40130, 0x00008C42 }, /* GL_SRGB_ALPHA */ + { 40144, 0x00000503 }, /* GL_STACK_OVERFLOW */ + { 40162, 0x00000504 }, /* GL_STACK_UNDERFLOW */ + { 40181, 0x000088E6 }, /* GL_STATIC_COPY */ + { 40196, 0x000088E6 }, /* GL_STATIC_COPY_ARB */ + { 40215, 0x000088E4 }, /* GL_STATIC_DRAW */ + { 40230, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */ + { 40249, 0x000088E5 }, /* GL_STATIC_READ */ + { 40264, 0x000088E5 }, /* GL_STATIC_READ_ARB */ + { 40283, 0x00001802 }, /* GL_STENCIL */ + { 40294, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT */ + { 40316, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */ + { 40342, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_OES */ + { 40368, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */ + { 40389, 0x00008801 }, /* GL_STENCIL_BACK_FAIL_ATI */ + { 40414, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */ + { 40435, 0x00008800 }, /* GL_STENCIL_BACK_FUNC_ATI */ + { 40460, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ + { 40492, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI */ + { 40528, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ + { 40560, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI */ + { 40596, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */ + { 40616, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */ + { 40643, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */ + { 40669, 0x00000D57 }, /* GL_STENCIL_BITS */ + { 40685, 0x00008224 }, /* GL_STENCIL_BUFFER */ + { 40703, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */ + { 40725, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */ + { 40748, 0x00000B94 }, /* GL_STENCIL_FAIL */ + { 40764, 0x00000B92 }, /* GL_STENCIL_FUNC */ + { 40780, 0x00001901 }, /* GL_STENCIL_INDEX */ + { 40797, 0x00008D46 }, /* GL_STENCIL_INDEX1 */ + { 40815, 0x00008D49 }, /* GL_STENCIL_INDEX16 */ + { 40834, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */ + { 40857, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */ + { 40879, 0x00008D46 }, /* GL_STENCIL_INDEX1_OES */ + { 40901, 0x00008D47 }, /* GL_STENCIL_INDEX4 */ + { 40919, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */ + { 40941, 0x00008D47 }, /* GL_STENCIL_INDEX4_OES */ + { 40963, 0x00008D48 }, /* GL_STENCIL_INDEX8 */ + { 40981, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */ + { 41003, 0x00008D48 }, /* GL_STENCIL_INDEX8_OES */ + { 41025, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */ + { 41046, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */ + { 41073, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */ + { 41100, 0x00000B97 }, /* GL_STENCIL_REF */ + { 41115, 0x00000B90 }, /* GL_STENCIL_TEST */ + { 41131, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ + { 41160, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */ + { 41182, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */ + { 41203, 0x00000C33 }, /* GL_STEREO */ + { 41213, 0x000085BE }, /* GL_STORAGE_CACHED_APPLE */ + { 41237, 0x000085BD }, /* GL_STORAGE_PRIVATE_APPLE */ + { 41262, 0x000085BF }, /* GL_STORAGE_SHARED_APPLE */ + { 41286, 0x000088E2 }, /* GL_STREAM_COPY */ + { 41301, 0x000088E2 }, /* GL_STREAM_COPY_ARB */ + { 41320, 0x000088E0 }, /* GL_STREAM_DRAW */ + { 41335, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */ + { 41354, 0x000088E1 }, /* GL_STREAM_READ */ + { 41369, 0x000088E1 }, /* GL_STREAM_READ_ARB */ + { 41388, 0x00000D50 }, /* GL_SUBPIXEL_BITS */ + { 41405, 0x000084E7 }, /* GL_SUBTRACT */ + { 41417, 0x000084E7 }, /* GL_SUBTRACT_ARB */ + { 41433, 0x00009113 }, /* GL_SYNC_CONDITION */ + { 41451, 0x00009116 }, /* GL_SYNC_FENCE */ + { 41465, 0x00009115 }, /* GL_SYNC_FLAGS */ + { 41479, 0x00000001 }, /* GL_SYNC_FLUSH_COMMANDS_BIT */ + { 41506, 0x00009117 }, /* GL_SYNC_GPU_COMMANDS_COMPLETE */ + { 41536, 0x00009114 }, /* GL_SYNC_STATUS */ + { 41551, 0x00002001 }, /* GL_T */ + { 41556, 0x00002A2A }, /* GL_T2F_C3F_V3F */ + { 41571, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */ + { 41590, 0x00002A29 }, /* GL_T2F_C4UB_V3F */ + { 41606, 0x00002A2B }, /* GL_T2F_N3F_V3F */ + { 41621, 0x00002A27 }, /* GL_T2F_V3F */ + { 41632, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */ + { 41651, 0x00002A28 }, /* GL_T4F_V4F */ + { 41662, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */ + { 41685, 0x00001702 }, /* GL_TEXTURE */ + { 41696, 0x000084C0 }, /* GL_TEXTURE0 */ + { 41708, 0x000084C0 }, /* GL_TEXTURE0_ARB */ + { 41724, 0x000084C1 }, /* GL_TEXTURE1 */ + { 41736, 0x000084CA }, /* GL_TEXTURE10 */ + { 41749, 0x000084CA }, /* GL_TEXTURE10_ARB */ + { 41766, 0x000084CB }, /* GL_TEXTURE11 */ + { 41779, 0x000084CB }, /* GL_TEXTURE11_ARB */ + { 41796, 0x000084CC }, /* GL_TEXTURE12 */ + { 41809, 0x000084CC }, /* GL_TEXTURE12_ARB */ + { 41826, 0x000084CD }, /* GL_TEXTURE13 */ + { 41839, 0x000084CD }, /* GL_TEXTURE13_ARB */ + { 41856, 0x000084CE }, /* GL_TEXTURE14 */ + { 41869, 0x000084CE }, /* GL_TEXTURE14_ARB */ + { 41886, 0x000084CF }, /* GL_TEXTURE15 */ + { 41899, 0x000084CF }, /* GL_TEXTURE15_ARB */ + { 41916, 0x000084D0 }, /* GL_TEXTURE16 */ + { 41929, 0x000084D0 }, /* GL_TEXTURE16_ARB */ + { 41946, 0x000084D1 }, /* GL_TEXTURE17 */ + { 41959, 0x000084D1 }, /* GL_TEXTURE17_ARB */ + { 41976, 0x000084D2 }, /* GL_TEXTURE18 */ + { 41989, 0x000084D2 }, /* GL_TEXTURE18_ARB */ + { 42006, 0x000084D3 }, /* GL_TEXTURE19 */ + { 42019, 0x000084D3 }, /* GL_TEXTURE19_ARB */ + { 42036, 0x000084C1 }, /* GL_TEXTURE1_ARB */ + { 42052, 0x000084C2 }, /* GL_TEXTURE2 */ + { 42064, 0x000084D4 }, /* GL_TEXTURE20 */ + { 42077, 0x000084D4 }, /* GL_TEXTURE20_ARB */ + { 42094, 0x000084D5 }, /* GL_TEXTURE21 */ + { 42107, 0x000084D5 }, /* GL_TEXTURE21_ARB */ + { 42124, 0x000084D6 }, /* GL_TEXTURE22 */ + { 42137, 0x000084D6 }, /* GL_TEXTURE22_ARB */ + { 42154, 0x000084D7 }, /* GL_TEXTURE23 */ + { 42167, 0x000084D7 }, /* GL_TEXTURE23_ARB */ + { 42184, 0x000084D8 }, /* GL_TEXTURE24 */ + { 42197, 0x000084D8 }, /* GL_TEXTURE24_ARB */ + { 42214, 0x000084D9 }, /* GL_TEXTURE25 */ + { 42227, 0x000084D9 }, /* GL_TEXTURE25_ARB */ + { 42244, 0x000084DA }, /* GL_TEXTURE26 */ + { 42257, 0x000084DA }, /* GL_TEXTURE26_ARB */ + { 42274, 0x000084DB }, /* GL_TEXTURE27 */ + { 42287, 0x000084DB }, /* GL_TEXTURE27_ARB */ + { 42304, 0x000084DC }, /* GL_TEXTURE28 */ + { 42317, 0x000084DC }, /* GL_TEXTURE28_ARB */ + { 42334, 0x000084DD }, /* GL_TEXTURE29 */ + { 42347, 0x000084DD }, /* GL_TEXTURE29_ARB */ + { 42364, 0x000084C2 }, /* GL_TEXTURE2_ARB */ + { 42380, 0x000084C3 }, /* GL_TEXTURE3 */ + { 42392, 0x000084DE }, /* GL_TEXTURE30 */ + { 42405, 0x000084DE }, /* GL_TEXTURE30_ARB */ + { 42422, 0x000084DF }, /* GL_TEXTURE31 */ + { 42435, 0x000084DF }, /* GL_TEXTURE31_ARB */ + { 42452, 0x000084C3 }, /* GL_TEXTURE3_ARB */ + { 42468, 0x000084C4 }, /* GL_TEXTURE4 */ + { 42480, 0x000084C4 }, /* GL_TEXTURE4_ARB */ + { 42496, 0x000084C5 }, /* GL_TEXTURE5 */ + { 42508, 0x000084C5 }, /* GL_TEXTURE5_ARB */ + { 42524, 0x000084C6 }, /* GL_TEXTURE6 */ + { 42536, 0x000084C6 }, /* GL_TEXTURE6_ARB */ + { 42552, 0x000084C7 }, /* GL_TEXTURE7 */ + { 42564, 0x000084C7 }, /* GL_TEXTURE7_ARB */ + { 42580, 0x000084C8 }, /* GL_TEXTURE8 */ + { 42592, 0x000084C8 }, /* GL_TEXTURE8_ARB */ + { 42608, 0x000084C9 }, /* GL_TEXTURE9 */ + { 42620, 0x000084C9 }, /* GL_TEXTURE9_ARB */ + { 42636, 0x00000DE0 }, /* GL_TEXTURE_1D */ + { 42650, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY */ + { 42670, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY_EXT */ + { 42694, 0x00000DE1 }, /* GL_TEXTURE_2D */ + { 42708, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY */ + { 42728, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY_EXT */ + { 42752, 0x0000806F }, /* GL_TEXTURE_3D */ + { 42766, 0x0000806F }, /* GL_TEXTURE_3D_OES */ + { 42784, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */ + { 42806, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */ + { 42832, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */ + { 42854, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */ + { 42876, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY */ + { 42904, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */ + { 42936, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */ + { 42958, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY */ + { 42986, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */ + { 43018, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */ + { 43040, 0x0000806A }, /* GL_TEXTURE_BINDING_3D_OES */ + { 43066, 0x00008C2C }, /* GL_TEXTURE_BINDING_BUFFER */ + { 43092, 0x00008C2C }, /* GL_TEXTURE_BINDING_BUFFER_ARB */ + { 43122, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */ + { 43150, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */ + { 43182, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_OES */ + { 43214, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE */ + { 43243, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */ + { 43276, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */ + { 43308, 0x00040000 }, /* GL_TEXTURE_BIT */ + { 43323, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */ + { 43344, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */ + { 43369, 0x00001005 }, /* GL_TEXTURE_BORDER */ + { 43387, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */ + { 43411, 0x00008C2A }, /* GL_TEXTURE_BUFFER */ + { 43429, 0x00008C2A }, /* GL_TEXTURE_BUFFER_ARB */ + { 43451, 0x00008C2D }, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */ + { 43488, 0x00008C2D }, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB */ + { 43529, 0x00008C2E }, /* GL_TEXTURE_BUFFER_FORMAT */ + { 43554, 0x00008C2E }, /* GL_TEXTURE_BUFFER_FORMAT_ARB */ + { 43583, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ + { 43614, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ + { 43644, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ + { 43674, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ + { 43709, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ + { 43740, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + { 43778, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */ + { 43805, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ + { 43837, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ + { 43871, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */ + { 43895, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */ + { 43923, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */ + { 43947, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */ + { 43975, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ + { 44008, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */ + { 44032, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */ + { 44054, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */ + { 44076, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */ + { 44102, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */ + { 44136, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ + { 44169, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */ + { 44206, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */ + { 44234, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */ + { 44266, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */ + { 44289, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ + { 44327, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */ + { 44369, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */ + { 44400, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */ + { 44428, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ + { 44458, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */ + { 44486, 0x00008B9D }, /* GL_TEXTURE_CROP_RECT_OES */ + { 44511, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */ + { 44531, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */ + { 44555, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ + { 44586, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */ + { 44621, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES */ + { 44656, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ + { 44687, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */ + { 44722, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES */ + { 44757, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ + { 44788, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */ + { 44823, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES */ + { 44858, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_OES */ + { 44882, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ + { 44913, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */ + { 44948, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES */ + { 44983, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ + { 45014, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */ + { 45049, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES */ + { 45084, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ + { 45115, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */ + { 45150, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES */ + { 45185, 0x000088F4 }, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */ + { 45214, 0x00008071 }, /* GL_TEXTURE_DEPTH */ + { 45231, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */ + { 45253, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */ + { 45279, 0x00002300 }, /* GL_TEXTURE_ENV */ + { 45294, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */ + { 45315, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */ + { 45335, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */ + { 45361, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL_EXT */ + { 45391, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */ + { 45411, 0x00002500 }, /* GL_TEXTURE_GEN_MODE_OES */ + { 45435, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */ + { 45452, 0x00000C62 }, /* GL_TEXTURE_GEN_R */ + { 45469, 0x00000C60 }, /* GL_TEXTURE_GEN_S */ + { 45486, 0x00008D60 }, /* GL_TEXTURE_GEN_STR_OES */ + { 45509, 0x00000C61 }, /* GL_TEXTURE_GEN_T */ + { 45526, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */ + { 45551, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */ + { 45573, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */ + { 45599, 0x00001001 }, /* GL_TEXTURE_HEIGHT */ + { 45617, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */ + { 45643, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */ + { 45669, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */ + { 45699, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */ + { 45726, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */ + { 45751, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */ + { 45771, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */ + { 45795, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ + { 45822, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ + { 45849, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ + { 45876, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */ + { 45902, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */ + { 45932, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */ + { 45954, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */ + { 45972, 0x0000898F }, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */ + { 46012, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ + { 46042, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ + { 46070, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ + { 46098, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ + { 46126, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */ + { 46147, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */ + { 46166, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */ + { 46188, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */ + { 46207, 0x00008066 }, /* GL_TEXTURE_PRIORITY */ + { 46227, 0x000085B7 }, /* GL_TEXTURE_RANGE_LENGTH_APPLE */ + { 46257, 0x000085B8 }, /* GL_TEXTURE_RANGE_POINTER_APPLE */ + { 46288, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE */ + { 46309, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */ + { 46334, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */ + { 46358, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */ + { 46378, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */ + { 46402, 0x00008067 }, /* GL_TEXTURE_RESIDENT */ + { 46422, 0x00008C3F }, /* GL_TEXTURE_SHARED_SIZE */ + { 46445, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */ + { 46468, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE */ + { 46492, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE_EXT */ + { 46520, 0x000085BC }, /* GL_TEXTURE_STORAGE_HINT_APPLE */ + { 46550, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */ + { 46575, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ + { 46609, 0x00001000 }, /* GL_TEXTURE_WIDTH */ + { 46626, 0x00008072 }, /* GL_TEXTURE_WRAP_R */ + { 46644, 0x00008072 }, /* GL_TEXTURE_WRAP_R_OES */ + { 46666, 0x00002802 }, /* GL_TEXTURE_WRAP_S */ + { 46684, 0x00002803 }, /* GL_TEXTURE_WRAP_T */ + { 46702, 0x0000911B }, /* GL_TIMEOUT_EXPIRED */ + { 46721, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */ + { 46741, 0x00008648 }, /* GL_TRACK_MATRIX_NV */ + { 46760, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */ + { 46789, 0x00001000 }, /* GL_TRANSFORM_BIT */ + { 46806, 0x00008E22 }, /* GL_TRANSFORM_FEEDBACK */ + { 46828, 0x00008E25 }, /* GL_TRANSFORM_FEEDBACK_BINDING */ + { 46858, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER */ + { 46887, 0x00008E24 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */ + { 46923, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */ + { 46960, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */ + { 47001, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */ + { 47034, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */ + { 47068, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */ + { 47106, 0x00008E23 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */ + { 47142, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */ + { 47176, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */ + { 47214, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */ + { 47249, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */ + { 47288, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */ + { 47329, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */ + { 47374, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS */ + { 47405, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */ + { 47440, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */ + { 47481, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */ + { 47526, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */ + { 47552, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */ + { 47582, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ + { 47614, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ + { 47644, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */ + { 47678, 0x0000862C }, /* GL_TRANSPOSE_NV */ + { 47694, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */ + { 47725, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */ + { 47760, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */ + { 47788, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */ + { 47820, 0x00000004 }, /* GL_TRIANGLES */ + { 47833, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY */ + { 47856, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY_ARB */ + { 47883, 0x00000006 }, /* GL_TRIANGLE_FAN */ + { 47899, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */ + { 47920, 0x00000005 }, /* GL_TRIANGLE_STRIP */ + { 47938, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY */ + { 47966, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY_ARB */ + { 47998, 0x00000001 }, /* GL_TRUE */ + { 48006, 0x00008A1C }, /* GL_UNDEFINED_APPLE */ + { 48025, 0x00008255 }, /* GL_UNKNOWN_CONTEXT_RESET_ARB */ + { 48054, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */ + { 48074, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */ + { 48097, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */ + { 48117, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */ + { 48138, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */ + { 48160, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */ + { 48182, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */ + { 48202, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */ + { 48223, 0x00009118 }, /* GL_UNSIGNALED */ + { 48237, 0x00001401 }, /* GL_UNSIGNED_BYTE */ + { 48254, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */ + { 48281, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */ + { 48304, 0x00001405 }, /* GL_UNSIGNED_INT */ + { 48320, 0x00008C3B }, /* GL_UNSIGNED_INT_10F_11F_11F_REV */ + { 48352, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */ + { 48379, 0x00008DF6 }, /* GL_UNSIGNED_INT_10_10_10_2_OES */ + { 48410, 0x000084FA }, /* GL_UNSIGNED_INT_24_8 */ + { 48431, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_EXT */ + { 48456, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */ + { 48480, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_OES */ + { 48505, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */ + { 48536, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV_EXT */ + { 48571, 0x00008C3E }, /* GL_UNSIGNED_INT_5_9_9_9_REV */ + { 48599, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */ + { 48623, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */ + { 48651, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D */ + { 48678, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */ + { 48711, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT */ + { 48748, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D_EXT */ + { 48779, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D */ + { 48806, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */ + { 48839, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT */ + { 48876, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D_EXT */ + { 48907, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */ + { 48939, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT */ + { 48975, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D */ + { 49002, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D_EXT */ + { 49033, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */ + { 49064, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT */ + { 49099, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE */ + { 49128, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE_EXT */ + { 49161, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2 */ + { 49182, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2_EXT */ + { 49207, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3 */ + { 49228, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3_EXT */ + { 49253, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4 */ + { 49274, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4_EXT */ + { 49299, 0x00008C17 }, /* GL_UNSIGNED_NORMALIZED */ + { 49322, 0x00001403 }, /* GL_UNSIGNED_SHORT */ + { 49340, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ + { 49370, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT */ + { 49404, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */ + { 49430, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ + { 49460, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT */ + { 49494, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */ + { 49520, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */ + { 49544, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */ + { 49572, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */ + { 49600, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */ + { 49627, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ + { 49659, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */ + { 49690, 0x00008CA2 }, /* GL_UPPER_LEFT */ + { 49704, 0x00002A20 }, /* GL_V2F */ + { 49711, 0x00002A21 }, /* GL_V3F */ + { 49718, 0x00008B83 }, /* GL_VALIDATE_STATUS */ + { 49737, 0x00001F00 }, /* GL_VENDOR */ + { 49747, 0x00001F02 }, /* GL_VERSION */ + { 49758, 0x00008074 }, /* GL_VERTEX_ARRAY */ + { 49774, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING */ + { 49798, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */ + { 49828, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ + { 49859, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */ + { 49894, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */ + { 49918, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */ + { 49939, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */ + { 49962, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */ + { 49983, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ + { 50010, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ + { 50038, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ + { 50066, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ + { 50094, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ + { 50122, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ + { 50150, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ + { 50178, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ + { 50205, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ + { 50232, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ + { 50259, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ + { 50286, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ + { 50313, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ + { 50340, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ + { 50367, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ + { 50394, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ + { 50421, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ + { 50459, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */ + { 50501, 0x000088FE }, /* GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB */ + { 50536, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ + { 50567, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */ + { 50602, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */ + { 50633, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT */ + { 50668, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ + { 50702, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */ + { 50740, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ + { 50771, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */ + { 50806, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ + { 50834, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */ + { 50866, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ + { 50896, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */ + { 50930, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ + { 50958, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */ + { 50990, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */ + { 51010, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */ + { 51032, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */ + { 51061, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */ + { 51082, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */ + { 51111, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */ + { 51144, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */ + { 51176, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */ + { 51203, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */ + { 51234, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */ + { 51264, 0x00008B31 }, /* GL_VERTEX_SHADER */ + { 51281, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */ + { 51302, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */ + { 51329, 0x00000BA2 }, /* GL_VIEWPORT */ + { 51341, 0x00000800 }, /* GL_VIEWPORT_BIT */ + { 51357, 0x00008A1A }, /* GL_VOLATILE_APPLE */ + { 51375, 0x0000911D }, /* GL_WAIT_FAILED */ + { 51390, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */ + { 51410, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ + { 51441, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */ + { 51476, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_OES */ + { 51511, 0x000086AD }, /* GL_WEIGHT_ARRAY_OES */ + { 51531, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */ + { 51559, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_OES */ + { 51587, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */ + { 51612, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_OES */ + { 51637, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ + { 51664, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_OES */ + { 51691, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */ + { 51716, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_OES */ + { 51741, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */ + { 51765, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */ + { 51784, 0x000088B9 }, /* GL_WRITE_ONLY */ + { 51798, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */ + { 51816, 0x000088B9 }, /* GL_WRITE_ONLY_OES */ + { 51834, 0x00001506 }, /* GL_XOR */ + { 51841, 0x000085B9 }, /* GL_YCBCR_422_APPLE */ + { 51860, 0x00008757 }, /* GL_YCBCR_MESA */ + { 51874, 0x00000000 }, /* GL_ZERO */ + { 51882, 0x00000D16 }, /* GL_ZOOM_X */ + { 51892, 0x00000D17 }, /* GL_ZOOM_Y */ }; -static const unsigned reduced_enums[1556] = +static const unsigned reduced_enums[1562] = { - 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 */ + 539, /* GL_FALSE */ + 834, /* GL_LINES */ + 838, /* GL_LINE_LOOP */ + 845, /* GL_LINE_STRIP */ + 2152, /* GL_TRIANGLES */ + 2157, /* GL_TRIANGLE_STRIP */ + 2155, /* GL_TRIANGLE_FAN */ + 1517, /* GL_QUADS */ + 1521, /* GL_QUAD_STRIP */ + 1388, /* GL_POLYGON */ + 835, /* GL_LINES_ADJACENCY */ + 846, /* GL_LINE_STRIP_ADJACENCY */ + 2153, /* GL_TRIANGLES_ADJACENCY */ + 2158, /* GL_TRIANGLE_STRIP_ADJACENCY */ + 1400, /* GL_POLYGON_STIPPLE_BIT */ + 1343, /* GL_PIXEL_MODE_BIT */ + 821, /* GL_LIGHTING_BIT */ + 573, /* GL_FOG_BIT */ 8, /* GL_ACCUM */ - 854, /* GL_LOAD */ - 1601, /* GL_RETURN */ - 1205, /* GL_MULT */ + 857, /* GL_LOAD */ + 1607, /* GL_RETURN */ + 1209, /* GL_MULT */ 24, /* GL_ADD */ - 1221, /* GL_NEVER */ - 808, /* GL_LESS */ - 528, /* GL_EQUAL */ - 807, /* GL_LEQUAL */ - 695, /* GL_GREATER */ - 1238, /* GL_NOTEQUAL */ - 694, /* GL_GEQUAL */ + 1225, /* GL_NEVER */ + 811, /* GL_LESS */ + 529, /* GL_EQUAL */ + 810, /* GL_LEQUAL */ + 696, /* GL_GREATER */ + 1242, /* GL_NOTEQUAL */ + 695, /* GL_GEQUAL */ 55, /* GL_ALWAYS */ - 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 */ + 1816, /* GL_SRC_COLOR */ + 1276, /* GL_ONE_MINUS_SRC_COLOR */ + 1814, /* GL_SRC_ALPHA */ + 1275, /* GL_ONE_MINUS_SRC_ALPHA */ + 508, /* GL_DST_ALPHA */ + 1273, /* GL_ONE_MINUS_DST_ALPHA */ + 509, /* GL_DST_COLOR */ + 1274, /* GL_ONE_MINUS_DST_COLOR */ + 1815, /* GL_SRC_ALPHA_SATURATE */ + 672, /* GL_FRONT_LEFT */ + 673, /* GL_FRONT_RIGHT */ 77, /* GL_BACK_LEFT */ 78, /* GL_BACK_RIGHT */ - 668, /* GL_FRONT */ + 669, /* GL_FRONT */ 76, /* GL_BACK */ - 806, /* GL_LEFT */ - 1691, /* GL_RIGHT */ - 669, /* GL_FRONT_AND_BACK */ + 809, /* GL_LEFT */ + 1697, /* GL_RIGHT */ + 670, /* GL_FRONT_AND_BACK */ 71, /* GL_AUX0 */ 72, /* GL_AUX1 */ 73, /* GL_AUX2 */ 74, /* GL_AUX3 */ - 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 */ + 797, /* GL_INVALID_ENUM */ + 802, /* GL_INVALID_VALUE */ + 801, /* GL_INVALID_OPERATION */ + 1821, /* GL_STACK_OVERFLOW */ + 1822, /* GL_STACK_UNDERFLOW */ + 1301, /* GL_OUT_OF_MEMORY */ + 798, /* GL_INVALID_FRAMEBUFFER_OPERATION */ 0, /* GL_2D */ 2, /* GL_3D */ 3, /* GL_3D_COLOR */ 4, /* GL_3D_COLOR_TEXTURE */ 6, /* GL_4D_COLOR_TEXTURE */ - 1316, /* GL_PASS_THROUGH_TOKEN */ - 1382, /* GL_POINT_TOKEN */ - 845, /* GL_LINE_TOKEN */ - 1396, /* GL_POLYGON_TOKEN */ + 1321, /* GL_PASS_THROUGH_TOKEN */ + 1387, /* GL_POINT_TOKEN */ + 848, /* GL_LINE_TOKEN */ + 1401, /* GL_POLYGON_TOKEN */ 87, /* GL_BITMAP_TOKEN */ - 506, /* GL_DRAW_PIXEL_TOKEN */ - 352, /* GL_COPY_PIXEL_TOKEN */ - 836, /* GL_LINE_RESET_TOKEN */ - 531, /* GL_EXP */ - 532, /* GL_EXP2 */ - 389, /* GL_CW */ + 507, /* GL_DRAW_PIXEL_TOKEN */ + 353, /* GL_COPY_PIXEL_TOKEN */ + 839, /* GL_LINE_RESET_TOKEN */ + 532, /* GL_EXP */ + 533, /* GL_EXP2 */ + 390, /* GL_CW */ 154, /* GL_CCW */ 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 */ + 1298, /* GL_ORDER */ + 444, /* GL_DOMAIN */ + 363, /* GL_CURRENT_COLOR */ + 366, /* GL_CURRENT_INDEX */ + 372, /* GL_CURRENT_NORMAL */ + 386, /* GL_CURRENT_TEXTURE_COORDS */ + 378, /* GL_CURRENT_RASTER_COLOR */ + 380, /* GL_CURRENT_RASTER_INDEX */ + 384, /* GL_CURRENT_RASTER_TEXTURE_COORDS */ + 381, /* GL_CURRENT_RASTER_POSITION */ + 382, /* GL_CURRENT_RASTER_POSITION_VALID */ + 379, /* GL_CURRENT_RASTER_DISTANCE */ + 1379, /* GL_POINT_SMOOTH */ + 1363, /* GL_POINT_SIZE */ + 1378, /* GL_POINT_SIZE_RANGE */ + 1369, /* GL_POINT_SIZE_GRANULARITY */ + 840, /* GL_LINE_SMOOTH */ + 849, /* GL_LINE_WIDTH */ + 851, /* GL_LINE_WIDTH_RANGE */ + 850, /* GL_LINE_WIDTH_GRANULARITY */ + 842, /* GL_LINE_STIPPLE */ + 843, /* GL_LINE_STIPPLE_PATTERN */ + 844, /* GL_LINE_STIPPLE_REPEAT */ + 856, /* GL_LIST_MODE */ + 1064, /* GL_MAX_LIST_NESTING */ + 853, /* GL_LIST_BASE */ + 855, /* GL_LIST_INDEX */ + 1390, /* GL_POLYGON_MODE */ + 1397, /* GL_POLYGON_SMOOTH */ + 1399, /* GL_POLYGON_STIPPLE */ + 518, /* GL_EDGE_FLAG */ + 356, /* GL_CULL_FACE */ + 357, /* GL_CULL_FACE_MODE */ + 671, /* GL_FRONT_FACE */ + 820, /* GL_LIGHTING */ + 825, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ + 826, /* GL_LIGHT_MODEL_TWO_SIDE */ + 822, /* GL_LIGHT_MODEL_AMBIENT */ + 1763, /* 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 */ + 572, /* GL_FOG */ + 594, /* GL_FOG_INDEX */ + 590, /* GL_FOG_DENSITY */ + 598, /* GL_FOG_START */ + 592, /* GL_FOG_END */ + 595, /* GL_FOG_MODE */ + 574, /* GL_FOG_COLOR */ + 429, /* GL_DEPTH_RANGE */ + 438, /* GL_DEPTH_TEST */ + 441, /* GL_DEPTH_WRITEMASK */ + 414, /* GL_DEPTH_CLEAR_VALUE */ + 428, /* GL_DEPTH_FUNC */ 12, /* GL_ACCUM_CLEAR_VALUE */ - 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 */ + 1866, /* GL_STENCIL_TEST */ + 1847, /* GL_STENCIL_CLEAR_VALUE */ + 1849, /* GL_STENCIL_FUNC */ + 1868, /* GL_STENCIL_VALUE_MASK */ + 1848, /* GL_STENCIL_FAIL */ + 1863, /* GL_STENCIL_PASS_DEPTH_FAIL */ + 1864, /* GL_STENCIL_PASS_DEPTH_PASS */ + 1865, /* GL_STENCIL_REF */ + 1869, /* GL_STENCIL_WRITEMASK */ + 1014, /* GL_MATRIX_MODE */ + 1231, /* GL_NORMALIZE */ + 2285, /* GL_VIEWPORT */ + 1204, /* GL_MODELVIEW_STACK_DEPTH */ + 1491, /* GL_PROJECTION_STACK_DEPTH */ + 2106, /* GL_TEXTURE_STACK_DEPTH */ + 1201, /* GL_MODELVIEW_MATRIX */ + 1489, /* GL_PROJECTION_MATRIX */ + 2086, /* GL_TEXTURE_MATRIX */ 69, /* GL_ATTRIB_STACK_DEPTH */ 169, /* GL_CLIENT_ATTRIB_STACK_DEPTH */ 51, /* GL_ALPHA_TEST */ 52, /* GL_ALPHA_TEST_FUNC */ 53, /* GL_ALPHA_TEST_REF */ - 442, /* GL_DITHER */ + 443, /* GL_DITHER */ 91, /* GL_BLEND_DST */ 105, /* GL_BLEND_SRC */ 88, /* GL_BLEND */ - 856, /* GL_LOGIC_OP_MODE */ - 743, /* GL_INDEX_LOGIC_OP */ + 859, /* GL_LOGIC_OP_MODE */ + 745, /* GL_INDEX_LOGIC_OP */ 233, /* GL_COLOR_LOGIC_OP */ 75, /* GL_AUX_BUFFERS */ - 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 */ + 454, /* GL_DRAW_BUFFER */ + 1544, /* GL_READ_BUFFER */ + 1740, /* GL_SCISSOR_BOX */ + 1741, /* GL_SCISSOR_TEST */ + 744, /* GL_INDEX_CLEAR_VALUE */ + 749, /* 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 */ + 746, /* GL_INDEX_MODE */ + 1686, /* GL_RGBA_MODE */ + 453, /* GL_DOUBLEBUFFER */ + 1870, /* GL_STEREO */ + 1598, /* GL_RENDER_MODE */ + 1322, /* GL_PERSPECTIVE_CORRECTION_HINT */ + 1380, /* GL_POINT_SMOOTH_HINT */ + 841, /* GL_LINE_SMOOTH_HINT */ + 1398, /* GL_POLYGON_SMOOTH_HINT */ + 593, /* GL_FOG_HINT */ + 2066, /* GL_TEXTURE_GEN_S */ + 2068, /* GL_TEXTURE_GEN_T */ + 2065, /* GL_TEXTURE_GEN_R */ + 2064, /* GL_TEXTURE_GEN_Q */ + 1335, /* GL_PIXEL_MAP_I_TO_I */ + 1341, /* GL_PIXEL_MAP_S_TO_S */ + 1337, /* GL_PIXEL_MAP_I_TO_R */ + 1333, /* GL_PIXEL_MAP_I_TO_G */ + 1331, /* GL_PIXEL_MAP_I_TO_B */ + 1329, /* GL_PIXEL_MAP_I_TO_A */ + 1339, /* GL_PIXEL_MAP_R_TO_R */ + 1327, /* GL_PIXEL_MAP_G_TO_G */ + 1325, /* GL_PIXEL_MAP_B_TO_B */ + 1323, /* GL_PIXEL_MAP_A_TO_A */ + 1336, /* GL_PIXEL_MAP_I_TO_I_SIZE */ + 1342, /* GL_PIXEL_MAP_S_TO_S_SIZE */ + 1338, /* GL_PIXEL_MAP_I_TO_R_SIZE */ + 1334, /* GL_PIXEL_MAP_I_TO_G_SIZE */ + 1332, /* GL_PIXEL_MAP_I_TO_B_SIZE */ + 1330, /* GL_PIXEL_MAP_I_TO_A_SIZE */ + 1340, /* GL_PIXEL_MAP_R_TO_R_SIZE */ + 1328, /* GL_PIXEL_MAP_G_TO_G_SIZE */ + 1326, /* GL_PIXEL_MAP_B_TO_B_SIZE */ + 1324, /* GL_PIXEL_MAP_A_TO_A_SIZE */ + 2170, /* GL_UNPACK_SWAP_BYTES */ + 2165, /* GL_UNPACK_LSB_FIRST */ + 2166, /* GL_UNPACK_ROW_LENGTH */ + 2169, /* GL_UNPACK_SKIP_ROWS */ + 2168, /* GL_UNPACK_SKIP_PIXELS */ + 2163, /* GL_UNPACK_ALIGNMENT */ + 1310, /* GL_PACK_SWAP_BYTES */ + 1305, /* GL_PACK_LSB_FIRST */ + 1306, /* GL_PACK_ROW_LENGTH */ + 1309, /* GL_PACK_SKIP_ROWS */ + 1308, /* GL_PACK_SKIP_PIXELS */ + 1302, /* GL_PACK_ALIGNMENT */ + 955, /* GL_MAP_COLOR */ + 960, /* GL_MAP_STENCIL */ + 748, /* GL_INDEX_SHIFT */ + 747, /* GL_INDEX_OFFSET */ + 1560, /* GL_RED_SCALE */ + 1556, /* GL_RED_BIAS */ + 2311, /* GL_ZOOM_X */ + 2312, /* GL_ZOOM_Y */ + 702, /* GL_GREEN_SCALE */ + 698, /* GL_GREEN_BIAS */ 115, /* GL_BLUE_SCALE */ 111, /* GL_BLUE_BIAS */ 50, /* GL_ALPHA_SCALE */ 47, /* GL_ALPHA_BIAS */ - 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 */ + 430, /* GL_DEPTH_SCALE */ + 406, /* GL_DEPTH_BIAS */ + 1046, /* GL_MAX_EVAL_ORDER */ + 1063, /* GL_MAX_LIGHTS */ + 1026, /* GL_MAX_CLIP_DISTANCES */ + 1119, /* GL_MAX_TEXTURE_SIZE */ + 1070, /* GL_MAX_PIXEL_MAP_TABLE */ + 1022, /* GL_MAX_ATTRIB_STACK_DEPTH */ + 1066, /* GL_MAX_MODELVIEW_STACK_DEPTH */ + 1067, /* GL_MAX_NAME_STACK_DEPTH */ + 1098, /* GL_MAX_PROJECTION_STACK_DEPTH */ + 1120, /* GL_MAX_TEXTURE_STACK_DEPTH */ + 1146, /* GL_MAX_VIEWPORT_DIMS */ + 1023, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ + 1880, /* GL_SUBPIXEL_BITS */ + 743, /* GL_INDEX_BITS */ + 1557, /* GL_RED_BITS */ + 699, /* GL_GREEN_BITS */ 112, /* GL_BLUE_BITS */ 48, /* GL_ALPHA_BITS */ - 406, /* GL_DEPTH_BITS */ - 1838, /* GL_STENCIL_BITS */ + 407, /* GL_DEPTH_BITS */ + 1844, /* GL_STENCIL_BITS */ 14, /* GL_ACCUM_RED_BITS */ 13, /* GL_ACCUM_GREEN_BITS */ 10, /* GL_ACCUM_BLUE_BITS */ 9, /* GL_ACCUM_ALPHA_BITS */ - 1214, /* GL_NAME_STACK_DEPTH */ + 1218, /* GL_NAME_STACK_DEPTH */ 70, /* GL_AUTO_NORMAL */ - 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 */ + 901, /* GL_MAP1_COLOR_4 */ + 904, /* GL_MAP1_INDEX */ + 905, /* GL_MAP1_NORMAL */ + 906, /* GL_MAP1_TEXTURE_COORD_1 */ + 907, /* GL_MAP1_TEXTURE_COORD_2 */ + 908, /* GL_MAP1_TEXTURE_COORD_3 */ + 909, /* GL_MAP1_TEXTURE_COORD_4 */ + 910, /* GL_MAP1_VERTEX_3 */ + 911, /* GL_MAP1_VERTEX_4 */ + 928, /* GL_MAP2_COLOR_4 */ + 931, /* GL_MAP2_INDEX */ + 932, /* GL_MAP2_NORMAL */ + 933, /* GL_MAP2_TEXTURE_COORD_1 */ + 934, /* GL_MAP2_TEXTURE_COORD_2 */ + 935, /* GL_MAP2_TEXTURE_COORD_3 */ + 936, /* GL_MAP2_TEXTURE_COORD_4 */ + 937, /* GL_MAP2_VERTEX_3 */ + 938, /* GL_MAP2_VERTEX_4 */ + 902, /* GL_MAP1_GRID_DOMAIN */ + 903, /* GL_MAP1_GRID_SEGMENTS */ + 929, /* GL_MAP2_GRID_DOMAIN */ + 930, /* GL_MAP2_GRID_SEGMENTS */ + 1963, /* GL_TEXTURE_1D */ + 1966, /* GL_TEXTURE_2D */ + 542, /* GL_FEEDBACK_BUFFER_POINTER */ + 543, /* GL_FEEDBACK_BUFFER_SIZE */ + 544, /* GL_FEEDBACK_BUFFER_TYPE */ + 1750, /* GL_SELECTION_BUFFER_POINTER */ + 1751, /* GL_SELECTION_BUFFER_SIZE */ + 2112, /* GL_TEXTURE_WIDTH */ + 2072, /* GL_TEXTURE_HEIGHT */ + 2016, /* GL_TEXTURE_COMPONENTS */ + 1994, /* GL_TEXTURE_BORDER_COLOR */ + 1993, /* GL_TEXTURE_BORDER */ + 445, /* GL_DONT_CARE */ + 540, /* GL_FASTEST */ + 1226, /* GL_NICEST */ 56, /* GL_AMBIENT */ - 441, /* GL_DIFFUSE */ - 1797, /* GL_SPECULAR */ - 1397, /* GL_POSITION */ - 1800, /* GL_SPOT_DIRECTION */ - 1801, /* GL_SPOT_EXPONENT */ - 1799, /* GL_SPOT_CUTOFF */ + 442, /* GL_DIFFUSE */ + 1803, /* GL_SPECULAR */ + 1402, /* GL_POSITION */ + 1806, /* GL_SPOT_DIRECTION */ + 1807, /* GL_SPOT_EXPONENT */ + 1805, /* GL_SPOT_CUTOFF */ 320, /* GL_CONSTANT_ATTENUATION */ - 826, /* GL_LINEAR_ATTENUATION */ - 1511, /* GL_QUADRATIC_ATTENUATION */ + 829, /* GL_LINEAR_ATTENUATION */ + 1516, /* GL_QUADRATIC_ATTENUATION */ 287, /* GL_COMPILE */ 288, /* GL_COMPILE_AND_EXECUTE */ 149, /* GL_BYTE */ - 2165, /* GL_UNSIGNED_BYTE */ - 1762, /* GL_SHORT */ - 2204, /* GL_UNSIGNED_SHORT */ - 749, /* GL_INT */ - 2168, /* GL_UNSIGNED_INT */ - 552, /* GL_FLOAT */ + 2172, /* GL_UNSIGNED_BYTE */ + 1768, /* GL_SHORT */ + 2211, /* GL_UNSIGNED_SHORT */ + 752, /* GL_INT */ + 2175, /* GL_UNSIGNED_INT */ + 553, /* GL_FLOAT */ 1, /* GL_2_BYTES */ 5, /* GL_3_BYTES */ 7, /* GL_4_BYTES */ - 451, /* GL_DOUBLE */ - 702, /* GL_HALF_FLOAT */ - 547, /* GL_FIXED */ + 452, /* GL_DOUBLE */ + 704, /* GL_HALF_FLOAT */ + 548, /* GL_FIXED */ 165, /* GL_CLEAR */ 58, /* GL_AND */ 60, /* GL_AND_REVERSE */ - 350, /* GL_COPY */ + 351, /* GL_COPY */ 59, /* GL_AND_INVERTED */ - 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 */ + 1229, /* GL_NOOP */ + 2307, /* GL_XOR */ + 1297, /* GL_OR */ + 1230, /* GL_NOR */ + 530, /* GL_EQUIV */ + 805, /* GL_INVERT */ + 1300, /* GL_OR_REVERSE */ + 352, /* GL_COPY_INVERTED */ + 1299, /* GL_OR_INVERTED */ + 1219, /* GL_NAND */ + 1757, /* GL_SET */ + 527, /* GL_EMISSION */ + 1767, /* GL_SHININESS */ 57, /* GL_AMBIENT_AND_DIFFUSE */ 232, /* GL_COLOR_INDEXES */ - 1164, /* GL_MODELVIEW */ - 1483, /* GL_PROJECTION */ - 1892, /* GL_TEXTURE */ + 1168, /* GL_MODELVIEW */ + 1488, /* GL_PROJECTION */ + 1898, /* GL_TEXTURE */ 188, /* GL_COLOR */ - 398, /* GL_DEPTH */ - 1823, /* GL_STENCIL */ + 399, /* GL_DEPTH */ + 1829, /* GL_STENCIL */ 231, /* GL_COLOR_INDEX */ - 1844, /* GL_STENCIL_INDEX */ - 414, /* GL_DEPTH_COMPONENT */ - 1548, /* GL_RED */ - 696, /* GL_GREEN */ + 1850, /* GL_STENCIL_INDEX */ + 415, /* GL_DEPTH_COMPONENT */ + 1553, /* GL_RED */ + 697, /* GL_GREEN */ 110, /* GL_BLUE */ 32, /* GL_ALPHA */ - 1604, /* GL_RGB */ - 1644, /* GL_RGBA */ - 860, /* GL_LUMINANCE */ - 887, /* GL_LUMINANCE_ALPHA */ + 1610, /* GL_RGB */ + 1650, /* GL_RGBA */ + 864, /* GL_LUMINANCE */ + 891, /* GL_LUMINANCE_ALPHA */ 86, /* GL_BITMAP */ - 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 */ + 1352, /* GL_POINT */ + 827, /* GL_LINE */ + 545, /* GL_FILL */ + 1567, /* GL_RENDER */ + 541, /* GL_FEEDBACK */ + 1749, /* GL_SELECT */ + 552, /* GL_FLAT */ + 1778, /* GL_SMOOTH */ + 806, /* GL_KEEP */ + 1600, /* GL_REPLACE */ + 733, /* GL_INCR */ + 395, /* GL_DECR */ + 2228, /* GL_VENDOR */ + 1597, /* GL_RENDERER */ + 2229, /* GL_VERSION */ + 534, /* GL_EXTENSIONS */ + 1698, /* GL_S */ + 1889, /* GL_T */ + 1536, /* GL_R */ + 1515, /* GL_Q */ + 1205, /* GL_MODULATE */ + 394, /* GL_DECAL */ + 2059, /* GL_TEXTURE_ENV_MODE */ + 2058, /* GL_TEXTURE_ENV_COLOR */ + 2057, /* GL_TEXTURE_ENV */ + 535, /* GL_EYE_LINEAR */ + 1258, /* GL_OBJECT_LINEAR */ + 1804, /* GL_SPHERE_MAP */ + 2062, /* GL_TEXTURE_GEN_MODE */ + 1260, /* GL_OBJECT_PLANE */ + 536, /* GL_EYE_PLANE */ + 1220, /* GL_NEAREST */ + 828, /* GL_LINEAR */ + 1224, /* GL_NEAREST_MIPMAP_NEAREST */ + 833, /* GL_LINEAR_MIPMAP_NEAREST */ + 1223, /* GL_NEAREST_MIPMAP_LINEAR */ + 832, /* GL_LINEAR_MIPMAP_LINEAR */ + 2085, /* GL_TEXTURE_MAG_FILTER */ + 2094, /* GL_TEXTURE_MIN_FILTER */ + 2115, /* GL_TEXTURE_WRAP_S */ + 2116, /* GL_TEXTURE_WRAP_T */ 155, /* GL_CLAMP */ - 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 */ + 1599, /* GL_REPEAT */ + 1396, /* GL_POLYGON_OFFSET_UNITS */ + 1395, /* GL_POLYGON_OFFSET_POINT */ + 1394, /* GL_POLYGON_OFFSET_LINE */ + 1539, /* GL_R3_G3_B2 */ + 2225, /* GL_V2F */ + 2226, /* GL_V3F */ 152, /* GL_C4UB_V2F */ 153, /* GL_C4UB_V3F */ 150, /* GL_C3F_V3F */ - 1213, /* GL_N3F_V3F */ + 1217, /* GL_N3F_V3F */ 151, /* GL_C4F_N3F_V3F */ - 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 */ + 1894, /* GL_T2F_V3F */ + 1896, /* GL_T4F_V4F */ + 1892, /* GL_T2F_C4UB_V3F */ + 1890, /* GL_T2F_C3F_V3F */ + 1893, /* GL_T2F_N3F_V3F */ + 1891, /* GL_T2F_C4F_N3F_V3F */ + 1895, /* GL_T4F_C4F_N3F_V4F */ 172, /* GL_CLIP_DISTANCE0 */ 173, /* GL_CLIP_DISTANCE1 */ 174, /* GL_CLIP_DISTANCE2 */ @@ -5086,184 +5100,184 @@ static const unsigned reduced_enums[1556] = 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 */ + 812, /* GL_LIGHT0 */ + 813, /* GL_LIGHT1 */ + 814, /* GL_LIGHT2 */ + 815, /* GL_LIGHT3 */ + 816, /* GL_LIGHT4 */ + 817, /* GL_LIGHT5 */ + 818, /* GL_LIGHT6 */ + 819, /* GL_LIGHT7 */ + 708, /* GL_HINT_BIT */ 322, /* GL_CONSTANT_COLOR */ - 1266, /* GL_ONE_MINUS_CONSTANT_COLOR */ + 1271, /* GL_ONE_MINUS_CONSTANT_COLOR */ 317, /* GL_CONSTANT_ALPHA */ - 1264, /* GL_ONE_MINUS_CONSTANT_ALPHA */ + 1269, /* GL_ONE_MINUS_CONSTANT_ALPHA */ 89, /* GL_BLEND_COLOR */ - 673, /* GL_FUNC_ADD */ - 1145, /* GL_MIN */ - 1013, /* GL_MAX */ + 674, /* GL_FUNC_ADD */ + 1149, /* GL_MIN */ + 1017, /* GL_MAX */ 96, /* GL_BLEND_EQUATION */ - 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 */ + 680, /* GL_FUNC_SUBTRACT */ + 677, /* GL_FUNC_REVERSE_SUBTRACT */ + 331, /* GL_CONVOLUTION_1D */ + 332, /* GL_CONVOLUTION_2D */ + 1752, /* GL_SEPARABLE_2D */ + 335, /* GL_CONVOLUTION_BORDER_MODE */ + 339, /* GL_CONVOLUTION_FILTER_SCALE */ + 337, /* GL_CONVOLUTION_FILTER_BIAS */ + 1554, /* GL_REDUCE */ + 341, /* GL_CONVOLUTION_FORMAT */ + 345, /* GL_CONVOLUTION_WIDTH */ + 343, /* GL_CONVOLUTION_HEIGHT */ + 1036, /* GL_MAX_CONVOLUTION_WIDTH */ + 1034, /* GL_MAX_CONVOLUTION_HEIGHT */ + 1435, /* GL_POST_CONVOLUTION_RED_SCALE */ + 1431, /* GL_POST_CONVOLUTION_GREEN_SCALE */ + 1426, /* GL_POST_CONVOLUTION_BLUE_SCALE */ + 1422, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ + 1433, /* GL_POST_CONVOLUTION_RED_BIAS */ + 1429, /* GL_POST_CONVOLUTION_GREEN_BIAS */ + 1424, /* GL_POST_CONVOLUTION_BLUE_BIAS */ + 1420, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ + 709, /* GL_HISTOGRAM */ + 1495, /* GL_PROXY_HISTOGRAM */ + 725, /* GL_HISTOGRAM_WIDTH */ + 715, /* GL_HISTOGRAM_FORMAT */ + 721, /* GL_HISTOGRAM_RED_SIZE */ + 717, /* GL_HISTOGRAM_GREEN_SIZE */ + 712, /* GL_HISTOGRAM_BLUE_SIZE */ + 710, /* GL_HISTOGRAM_ALPHA_SIZE */ + 719, /* GL_HISTOGRAM_LUMINANCE_SIZE */ + 723, /* GL_HISTOGRAM_SINK */ + 1150, /* GL_MINMAX */ + 1152, /* GL_MINMAX_FORMAT */ + 1154, /* GL_MINMAX_SINK */ + 1897, /* GL_TABLE_TOO_LARGE_EXT */ + 2174, /* GL_UNSIGNED_BYTE_3_3_2 */ + 2214, /* GL_UNSIGNED_SHORT_4_4_4_4 */ + 2217, /* GL_UNSIGNED_SHORT_5_5_5_1 */ + 2186, /* GL_UNSIGNED_INT_8_8_8_8 */ + 2177, /* GL_UNSIGNED_INT_10_10_10_2 */ + 1393, /* GL_POLYGON_OFFSET_FILL */ + 1392, /* GL_POLYGON_OFFSET_FACTOR */ + 1391, /* GL_POLYGON_OFFSET_BIAS */ + 1603, /* GL_RESCALE_NORMAL */ 41, /* GL_ALPHA4 */ 43, /* GL_ALPHA8 */ 33, /* GL_ALPHA12 */ 35, /* GL_ALPHA16 */ - 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 */ + 879, /* GL_LUMINANCE4 */ + 885, /* GL_LUMINANCE8 */ + 865, /* GL_LUMINANCE12 */ + 871, /* GL_LUMINANCE16 */ + 880, /* GL_LUMINANCE4_ALPHA4 */ + 883, /* GL_LUMINANCE6_ALPHA2 */ + 888, /* GL_LUMINANCE8_ALPHA8 */ + 868, /* GL_LUMINANCE12_ALPHA4 */ + 866, /* GL_LUMINANCE12_ALPHA12 */ + 874, /* GL_LUMINANCE16_ALPHA16 */ + 753, /* GL_INTENSITY */ + 762, /* GL_INTENSITY4 */ + 764, /* GL_INTENSITY8 */ + 754, /* GL_INTENSITY12 */ + 756, /* GL_INTENSITY16 */ + 1625, /* GL_RGB2_EXT */ + 1631, /* GL_RGB4 */ + 1634, /* GL_RGB5 */ + 1641, /* GL_RGB8 */ + 1611, /* GL_RGB10 */ + 1615, /* GL_RGB12 */ + 1617, /* GL_RGB16 */ + 1661, /* GL_RGBA2 */ + 1668, /* GL_RGBA4 */ + 1637, /* GL_RGB5_A1 */ + 1673, /* GL_RGBA8 */ + 1612, /* GL_RGB10_A2 */ + 1651, /* GL_RGBA12 */ + 1653, /* GL_RGBA16 */ + 2102, /* GL_TEXTURE_RED_SIZE */ + 2070, /* GL_TEXTURE_GREEN_SIZE */ + 1991, /* GL_TEXTURE_BLUE_SIZE */ + 1971, /* GL_TEXTURE_ALPHA_SIZE */ + 2083, /* GL_TEXTURE_LUMINANCE_SIZE */ + 2074, /* GL_TEXTURE_INTENSITY_SIZE */ + 1601, /* GL_REPLACE_EXT */ + 1499, /* GL_PROXY_TEXTURE_1D */ + 1503, /* GL_PROXY_TEXTURE_2D */ + 2110, /* GL_TEXTURE_TOO_LARGE_EXT */ + 2096, /* GL_TEXTURE_PRIORITY */ + 2104, /* GL_TEXTURE_RESIDENT */ + 1974, /* GL_TEXTURE_BINDING_1D */ + 1977, /* GL_TEXTURE_BINDING_2D */ + 1980, /* GL_TEXTURE_BINDING_3D */ + 1307, /* GL_PACK_SKIP_IMAGES */ + 1303, /* GL_PACK_IMAGE_HEIGHT */ + 2167, /* GL_UNPACK_SKIP_IMAGES */ + 2164, /* GL_UNPACK_IMAGE_HEIGHT */ + 1969, /* GL_TEXTURE_3D */ + 1507, /* GL_PROXY_TEXTURE_3D */ + 2054, /* GL_TEXTURE_DEPTH */ + 2113, /* GL_TEXTURE_WRAP_R */ + 1018, /* GL_MAX_3D_TEXTURE_SIZE */ + 2230, /* GL_VERTEX_ARRAY */ + 1232, /* 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 */ + 737, /* GL_INDEX_ARRAY */ + 2024, /* GL_TEXTURE_COORD_ARRAY */ + 519, /* GL_EDGE_FLAG_ARRAY */ + 2236, /* GL_VERTEX_ARRAY_SIZE */ + 2238, /* GL_VERTEX_ARRAY_TYPE */ + 2237, /* GL_VERTEX_ARRAY_STRIDE */ + 1237, /* GL_NORMAL_ARRAY_TYPE */ + 1236, /* 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 */ + 742, /* GL_INDEX_ARRAY_TYPE */ + 741, /* GL_INDEX_ARRAY_STRIDE */ + 2028, /* GL_TEXTURE_COORD_ARRAY_SIZE */ + 2030, /* GL_TEXTURE_COORD_ARRAY_TYPE */ + 2029, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ + 523, /* GL_EDGE_FLAG_ARRAY_STRIDE */ + 2235, /* GL_VERTEX_ARRAY_POINTER */ + 1235, /* 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 */ + 740, /* GL_INDEX_ARRAY_POINTER */ + 2027, /* GL_TEXTURE_COORD_ARRAY_POINTER */ + 522, /* GL_EDGE_FLAG_ARRAY_POINTER */ + 1210, /* GL_MULTISAMPLE */ + 1726, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ + 1728, /* GL_SAMPLE_ALPHA_TO_ONE */ + 1733, /* GL_SAMPLE_COVERAGE */ + 1730, /* GL_SAMPLE_BUFFERS */ + 1721, /* GL_SAMPLES */ + 1737, /* GL_SAMPLE_COVERAGE_VALUE */ + 1735, /* 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 */ + 1030, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ + 1418, /* GL_POST_COLOR_MATRIX_RED_SCALE */ + 1414, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ + 1409, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ + 1405, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ + 1416, /* GL_POST_COLOR_MATRIX_RED_BIAS */ + 1412, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ + 1407, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ + 1403, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ + 2007, /* GL_TEXTURE_COLOR_TABLE_SGI */ + 1508, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ + 2009, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ 94, /* GL_BLEND_DST_RGB */ 108, /* GL_BLEND_SRC_RGB */ 92, /* GL_BLEND_DST_ALPHA */ 106, /* GL_BLEND_SRC_ALPHA */ 243, /* GL_COLOR_TABLE */ - 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 */ + 1428, /* GL_POST_CONVOLUTION_COLOR_TABLE */ + 1411, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ + 1494, /* GL_PROXY_COLOR_TABLE */ + 1498, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ + 1497, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ 267, /* GL_COLOR_TABLE_SCALE */ 247, /* GL_COLOR_TABLE_BIAS */ 252, /* GL_COLOR_TABLE_FORMAT */ @@ -5276,748 +5290,754 @@ static const unsigned reduced_enums[1556] = 258, /* GL_COLOR_TABLE_INTENSITY_SIZE */ 79, /* GL_BGR */ 80, /* GL_BGRA */ - 1041, /* GL_MAX_ELEMENTS_VERTICES */ - 1040, /* GL_MAX_ELEMENTS_INDICES */ - 2067, /* GL_TEXTURE_INDEX_SIZE_EXT */ + 1045, /* GL_MAX_ELEMENTS_VERTICES */ + 1044, /* GL_MAX_ELEMENTS_INDICES */ + 2073, /* 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 */ + 1374, /* GL_POINT_SIZE_MIN */ + 1370, /* GL_POINT_SIZE_MAX */ + 1359, /* GL_POINT_FADE_THRESHOLD_SIZE */ + 1355, /* 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 */ + 2095, /* GL_TEXTURE_MIN_LOD */ + 2093, /* GL_TEXTURE_MAX_LOD */ + 1973, /* GL_TEXTURE_BASE_LEVEL */ + 2092, /* GL_TEXTURE_MAX_LEVEL */ + 728, /* 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 */ + 1602, /* GL_REPLICATE_BORDER_HP */ + 333, /* GL_CONVOLUTION_BORDER_COLOR */ + 1266, /* GL_OCCLUSION_TEST_HP */ + 1267, /* GL_OCCLUSION_TEST_RESULT_HP */ + 830, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ + 2001, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ + 2003, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ + 2005, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ + 2006, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + 2004, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ + 2002, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ + 1024, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ + 1025, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + 1438, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ + 1440, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ + 1437, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ + 1439, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ + 2081, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ + 2082, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ + 2080, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ + 683, /* GL_GENERATE_MIPMAP */ + 684, /* GL_GENERATE_MIPMAP_HINT */ + 596, /* GL_FOG_OFFSET_SGIX */ + 597, /* GL_FOG_OFFSET_VALUE_SGIX */ + 2015, /* GL_TEXTURE_COMPARE_SGIX */ + 2014, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ + 2077, /* GL_TEXTURE_LEQUAL_R_SGIX */ + 2069, /* GL_TEXTURE_GEQUAL_R_SGIX */ + 416, /* GL_DEPTH_COMPONENT16 */ + 420, /* GL_DEPTH_COMPONENT24 */ + 424, /* GL_DEPTH_COMPONENT32 */ + 358, /* GL_CULL_VERTEX_EXT */ + 360, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ + 359, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ + 2303, /* GL_WRAP_BORDER_SUN */ + 2008, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ + 823, /* GL_LIGHT_MODEL_COLOR_CONTROL */ + 1771, /* GL_SINGLE_COLOR */ + 1755, /* GL_SEPARATE_SPECULAR_COLOR */ + 1766, /* GL_SHARED_TEXTURE_PALETTE_EXT */ + 608, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ + 609, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ + 620, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ + 611, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ + 607, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ + 606, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ + 610, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ + 621, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ + 638, /* GL_FRAMEBUFFER_DEFAULT */ + 665, /* GL_FRAMEBUFFER_UNDEFINED */ + 432, /* GL_DEPTH_STENCIL_ATTACHMENT */ + 900, /* GL_MAJOR_VERSION */ + 1156, /* GL_MINOR_VERSION */ + 1247, /* GL_NUM_EXTENSIONS */ 327, /* GL_CONTEXT_FLAGS */ - 734, /* GL_INDEX */ - 409, /* GL_DEPTH_BUFFER */ - 1839, /* GL_STENCIL_BUFFER */ + 736, /* GL_INDEX */ + 410, /* GL_DEPTH_BUFFER */ + 1845, /* 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 */ + 860, /* GL_LOSE_CONTEXT_ON_RESET_ARB */ + 703, /* GL_GUILTY_CONTEXT_RESET_ARB */ + 751, /* GL_INNOCENT_CONTEXT_RESET_ARB */ + 2162, /* GL_UNKNOWN_CONTEXT_RESET_ARB */ + 1605, /* GL_RESET_NOTIFICATION_STRATEGY_ARB */ + 1244, /* GL_NO_RESET_NOTIFICATION_ARB */ + 2173, /* GL_UNSIGNED_BYTE_2_3_3_REV */ + 2218, /* GL_UNSIGNED_SHORT_5_6_5 */ + 2219, /* GL_UNSIGNED_SHORT_5_6_5_REV */ + 2215, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ + 2212, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ + 2187, /* GL_UNSIGNED_INT_8_8_8_8_REV */ + 2183, /* GL_UNSIGNED_INT_2_10_10_10_REV */ + 2090, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ + 2091, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ + 2089, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ + 1160, /* GL_MIRRORED_REPEAT */ + 1691, /* GL_RGB_S3TC */ + 1633, /* GL_RGB4_S3TC */ + 1687, /* GL_RGBA_S3TC */ + 1672, /* GL_RGBA4_S3TC */ + 1681, /* GL_RGBA_DXT5_S3TC */ + 1669, /* 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 */ + 1222, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ + 1221, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ + 831, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ + 583, /* GL_FOG_COORDINATE_SOURCE */ + 575, /* GL_FOG_COORD */ + 599, /* GL_FRAGMENT_DEPTH */ + 364, /* GL_CURRENT_FOG_COORD */ + 582, /* GL_FOG_COORDINATE_ARRAY_TYPE */ + 581, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ + 580, /* GL_FOG_COORDINATE_ARRAY_POINTER */ + 577, /* GL_FOG_COORDINATE_ARRAY */ 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 */ + 385, /* GL_CURRENT_SECONDARY_COLOR */ + 1746, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ + 1748, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ + 1747, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ + 1745, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ + 1742, /* GL_SECONDARY_COLOR_ARRAY */ + 383, /* GL_CURRENT_RASTER_SECONDARY_COLOR */ 29, /* GL_ALIASED_POINT_SIZE_RANGE */ 28, /* GL_ALIASED_LINE_WIDTH_RANGE */ - 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 */ + 1899, /* GL_TEXTURE0 */ + 1901, /* GL_TEXTURE1 */ + 1923, /* GL_TEXTURE2 */ + 1945, /* GL_TEXTURE3 */ + 1951, /* GL_TEXTURE4 */ + 1953, /* GL_TEXTURE5 */ + 1955, /* GL_TEXTURE6 */ + 1957, /* GL_TEXTURE7 */ + 1959, /* GL_TEXTURE8 */ + 1961, /* GL_TEXTURE9 */ + 1902, /* GL_TEXTURE10 */ + 1904, /* GL_TEXTURE11 */ + 1906, /* GL_TEXTURE12 */ + 1908, /* GL_TEXTURE13 */ + 1910, /* GL_TEXTURE14 */ + 1912, /* GL_TEXTURE15 */ + 1914, /* GL_TEXTURE16 */ + 1916, /* GL_TEXTURE17 */ + 1918, /* GL_TEXTURE18 */ + 1920, /* GL_TEXTURE19 */ + 1924, /* GL_TEXTURE20 */ + 1926, /* GL_TEXTURE21 */ + 1928, /* GL_TEXTURE22 */ + 1930, /* GL_TEXTURE23 */ + 1932, /* GL_TEXTURE24 */ + 1934, /* GL_TEXTURE25 */ + 1936, /* GL_TEXTURE26 */ + 1938, /* GL_TEXTURE27 */ + 1940, /* GL_TEXTURE28 */ + 1942, /* GL_TEXTURE29 */ + 1946, /* GL_TEXTURE30 */ + 1948, /* GL_TEXTURE31 */ 19, /* GL_ACTIVE_TEXTURE */ 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 */ + 1121, /* GL_MAX_TEXTURE_UNITS */ + 2145, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ + 2148, /* GL_TRANSPOSE_PROJECTION_MATRIX */ + 2150, /* GL_TRANSPOSE_TEXTURE_MATRIX */ + 2142, /* GL_TRANSPOSE_COLOR_MATRIX */ + 1881, /* GL_SUBTRACT */ + 1102, /* 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 */ + 2022, /* GL_TEXTURE_COMPRESSION_HINT */ + 2099, /* GL_TEXTURE_RECTANGLE */ + 1987, /* GL_TEXTURE_BINDING_RECTANGLE */ + 1511, /* GL_PROXY_TEXTURE_RECTANGLE */ + 1099, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */ + 431, /* GL_DEPTH_STENCIL */ + 2179, /* GL_UNSIGNED_INT_24_8 */ + 1116, /* GL_MAX_TEXTURE_LOD_BIAS */ + 2088, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ + 1118, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ + 2060, /* GL_TEXTURE_FILTER_CONTROL */ + 2078, /* 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 */ + 1108, /* GL_MAX_SHININESS_NV */ + 1109, /* GL_MAX_SPOT_EXPONENT_NV */ + 734, /* GL_INCR_WRAP */ + 396, /* GL_DECR_WRAP */ + 1180, /* GL_MODELVIEW1_ARB */ + 1238, /* GL_NORMAL_MAP */ + 1562, /* GL_REFLECTION_MAP */ + 2032, /* GL_TEXTURE_CUBE_MAP */ + 1984, /* GL_TEXTURE_BINDING_CUBE_MAP */ + 2044, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ + 2034, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ + 2047, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ + 2037, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ + 2050, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ + 2040, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ + 1509, /* GL_PROXY_TEXTURE_CUBE_MAP */ + 1038, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ + 1216, /* GL_MULTISAMPLE_FILTER_HINT_NV */ + 1452, /* GL_PRIMITIVE_RESTART_NV */ + 1451, /* GL_PRIMITIVE_RESTART_INDEX_NV */ + 591, /* GL_FOG_DISTANCE_MODE_NV */ + 538, /* GL_EYE_RADIAL_NV */ + 537, /* GL_EYE_PLANE_ABSOLUTE_NV */ 273, /* GL_COMBINE */ 280, /* GL_COMBINE_RGB */ 275, /* GL_COMBINE_ALPHA */ - 1686, /* GL_RGB_SCALE */ + 1692, /* GL_RGB_SCALE */ 25, /* GL_ADD_SIGNED */ - 768, /* GL_INTERPOLATE */ + 771, /* 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 */ + 1444, /* GL_PRIMARY_COLOR */ + 1441, /* GL_PREVIOUS */ + 1786, /* GL_SOURCE0_RGB */ + 1792, /* GL_SOURCE1_RGB */ + 1798, /* GL_SOURCE2_RGB */ + 1802, /* GL_SOURCE3_RGB_NV */ + 1783, /* GL_SOURCE0_ALPHA */ + 1789, /* GL_SOURCE1_ALPHA */ + 1795, /* GL_SOURCE2_ALPHA */ + 1801, /* GL_SOURCE3_ALPHA_NV */ + 1280, /* GL_OPERAND0_RGB */ + 1286, /* GL_OPERAND1_RGB */ + 1292, /* GL_OPERAND2_RGB */ + 1296, /* GL_OPERAND3_RGB_NV */ + 1277, /* GL_OPERAND0_ALPHA */ + 1283, /* GL_OPERAND1_ALPHA */ + 1289, /* GL_OPERAND2_ALPHA */ + 1295, /* GL_OPERAND3_ALPHA_NV */ 137, /* GL_BUFFER_OBJECT_APPLE */ - 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 */ + 2231, /* GL_VERTEX_ARRAY_BINDING */ + 2097, /* GL_TEXTURE_RANGE_LENGTH_APPLE */ + 2098, /* GL_TEXTURE_RANGE_POINTER_APPLE */ + 2308, /* GL_YCBCR_422_APPLE */ + 2220, /* GL_UNSIGNED_SHORT_8_8_APPLE */ + 2222, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ + 2109, /* GL_TEXTURE_STORAGE_HINT_APPLE */ + 1872, /* GL_STORAGE_PRIVATE_APPLE */ + 1871, /* GL_STORAGE_CACHED_APPLE */ + 1873, /* GL_STORAGE_SHARED_APPLE */ + 1773, /* GL_SLICE_ACCUM_SUN */ + 1520, /* GL_QUAD_MESH_SUN */ + 2156, /* GL_TRIANGLE_MESH_SUN */ + 2273, /* GL_VERTEX_PROGRAM_ARB */ + 2284, /* GL_VERTEX_STATE_PROGRAM_NV */ + 2258, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ + 2266, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ + 2268, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ + 2270, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ + 387, /* GL_CURRENT_VERTEX_ATTRIB */ + 1465, /* GL_PROGRAM_LENGTH_ARB */ + 1481, /* GL_PROGRAM_STRING_ARB */ + 1203, /* GL_MODELVIEW_PROJECTION_NV */ + 727, /* GL_IDENTITY_NV */ + 803, /* GL_INVERSE_NV */ + 2147, /* GL_TRANSPOSE_NV */ + 804, /* GL_INVERSE_TRANSPOSE_NV */ + 1083, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ + 1082, /* GL_MAX_PROGRAM_MATRICES_ARB */ + 964, /* GL_MATRIX0_NV */ + 976, /* GL_MATRIX1_NV */ + 988, /* GL_MATRIX2_NV */ + 992, /* GL_MATRIX3_NV */ + 994, /* GL_MATRIX4_NV */ + 996, /* GL_MATRIX5_NV */ + 998, /* GL_MATRIX6_NV */ + 1000, /* GL_MATRIX7_NV */ + 370, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ + 367, /* GL_CURRENT_MATRIX_ARB */ + 1478, /* GL_PROGRAM_POINT_SIZE */ + 2279, /* GL_VERTEX_PROGRAM_TWO_SIDE */ + 1477, /* GL_PROGRAM_PARAMETER_NV */ + 2264, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ + 1483, /* GL_PROGRAM_TARGET_NV */ + 1480, /* GL_PROGRAM_RESIDENT_NV */ + 2119, /* GL_TRACK_MATRIX_NV */ + 2120, /* GL_TRACK_MATRIX_TRANSFORM_NV */ + 2274, /* GL_VERTEX_PROGRAM_BINDING_NV */ + 1459, /* GL_PROGRAM_ERROR_POSITION_ARB */ + 412, /* GL_DEPTH_CLAMP */ + 2239, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ + 2246, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ + 2247, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ + 2248, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ + 2249, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ + 2250, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ + 2251, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ + 2252, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ + 2253, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ + 2254, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ + 2240, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ + 2241, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ + 2242, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ + 2243, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ + 2244, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ + 2245, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ + 912, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ + 919, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ + 920, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ + 921, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ + 922, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ + 923, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ + 924, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ + 925, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ + 926, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ + 927, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ + 913, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ + 914, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ + 915, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ + 916, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ + 917, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ + 918, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ + 939, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ + 946, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ + 947, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ + 948, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ + 949, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ + 950, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ + 951, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ + 1458, /* GL_PROGRAM_BINDING_ARB */ + 953, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ + 954, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ + 940, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ + 941, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ + 942, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ + 943, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ + 944, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ + 945, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ + 2020, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ + 2017, /* GL_TEXTURE_COMPRESSED */ + 1245, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ 314, /* GL_COMPRESSED_TEXTURE_FORMATS */ - 1139, /* GL_MAX_VERTEX_UNITS_ARB */ + 1143, /* GL_MAX_VERTEX_UNITS_ARB */ 23, /* GL_ACTIVE_VERTEX_UNITS_ARB */ - 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 */ + 2302, /* GL_WEIGHT_SUM_UNITY_ARB */ + 2272, /* GL_VERTEX_BLEND_ARB */ + 389, /* GL_CURRENT_WEIGHT_ARB */ + 2300, /* GL_WEIGHT_ARRAY_TYPE_ARB */ + 2298, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ + 2296, /* GL_WEIGHT_ARRAY_SIZE_ARB */ + 2294, /* GL_WEIGHT_ARRAY_POINTER_ARB */ + 2289, /* GL_WEIGHT_ARRAY_ARB */ + 446, /* GL_DOT3_RGB */ + 447, /* 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 */ + 1211, /* GL_MULTISAMPLE_3DFX */ + 1731, /* GL_SAMPLE_BUFFERS_3DFX */ + 1722, /* GL_SAMPLES_3DFX */ + 1191, /* GL_MODELVIEW2_ARB */ + 1194, /* GL_MODELVIEW3_ARB */ + 1195, /* GL_MODELVIEW4_ARB */ + 1196, /* GL_MODELVIEW5_ARB */ + 1197, /* GL_MODELVIEW6_ARB */ + 1198, /* GL_MODELVIEW7_ARB */ + 1199, /* GL_MODELVIEW8_ARB */ + 1200, /* GL_MODELVIEW9_ARB */ + 1170, /* GL_MODELVIEW10_ARB */ + 1171, /* GL_MODELVIEW11_ARB */ + 1172, /* GL_MODELVIEW12_ARB */ + 1173, /* GL_MODELVIEW13_ARB */ + 1174, /* GL_MODELVIEW14_ARB */ + 1175, /* GL_MODELVIEW15_ARB */ + 1176, /* GL_MODELVIEW16_ARB */ + 1177, /* GL_MODELVIEW17_ARB */ + 1178, /* GL_MODELVIEW18_ARB */ + 1179, /* GL_MODELVIEW19_ARB */ + 1181, /* GL_MODELVIEW20_ARB */ + 1182, /* GL_MODELVIEW21_ARB */ + 1183, /* GL_MODELVIEW22_ARB */ + 1184, /* GL_MODELVIEW23_ARB */ + 1185, /* GL_MODELVIEW24_ARB */ + 1186, /* GL_MODELVIEW25_ARB */ + 1187, /* GL_MODELVIEW26_ARB */ + 1188, /* GL_MODELVIEW27_ARB */ + 1189, /* GL_MODELVIEW28_ARB */ + 1190, /* GL_MODELVIEW29_ARB */ + 1192, /* GL_MODELVIEW30_ARB */ + 1193, /* GL_MODELVIEW31_ARB */ + 451, /* GL_DOT3_RGB_EXT */ + 449, /* GL_DOT3_RGBA_EXT */ + 1164, /* GL_MIRROR_CLAMP_EXT */ + 1167, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ + 1206, /* GL_MODULATE_ADD_ATI */ + 1207, /* GL_MODULATE_SIGNED_ADD_ATI */ + 1208, /* GL_MODULATE_SUBTRACT_ATI */ + 2309, /* GL_YCBCR_MESA */ + 1304, /* GL_PACK_INVERT_MESA */ + 392, /* GL_DEBUG_OBJECT_MESA */ + 393, /* GL_DEBUG_PRINT_MESA */ + 391, /* 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 */ - 510, /* GL_DUDV_ATI */ - 509, /* GL_DU8DV8_ATI */ + 511, /* GL_DUDV_ATI */ + 510, /* GL_DU8DV8_ATI */ 143, /* GL_BUMP_ENVMAP_ATI */ 147, /* GL_BUMP_TARGET_ATI */ - 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 */ + 1248, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */ + 1456, /* GL_PROGRAM_BINARY_FORMATS_OES */ + 1835, /* GL_STENCIL_BACK_FUNC */ + 1833, /* GL_STENCIL_BACK_FAIL */ + 1837, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ + 1839, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ + 600, /* GL_FRAGMENT_PROGRAM_ARB */ + 1454, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ + 1486, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ + 1485, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ + 1468, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + 1474, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + 1473, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + 1072, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ + 1097, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ + 1096, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ + 1085, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + 1091, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + 1090, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + 1663, /* GL_RGBA32F */ + 1626, /* GL_RGB32F */ + 1654, /* GL_RGBA16F */ + 1618, /* GL_RGB16F */ + 1682, /* GL_RGBA_FLOAT_MODE_ARB */ + 1041, /* GL_MAX_DRAW_BUFFERS */ + 455, /* GL_DRAW_BUFFER0 */ + 458, /* GL_DRAW_BUFFER1 */ + 479, /* GL_DRAW_BUFFER2 */ + 482, /* GL_DRAW_BUFFER3 */ + 485, /* GL_DRAW_BUFFER4 */ + 488, /* GL_DRAW_BUFFER5 */ + 491, /* GL_DRAW_BUFFER6 */ + 494, /* GL_DRAW_BUFFER7 */ + 497, /* GL_DRAW_BUFFER8 */ + 500, /* GL_DRAW_BUFFER9 */ + 459, /* GL_DRAW_BUFFER10 */ + 462, /* GL_DRAW_BUFFER11 */ + 465, /* GL_DRAW_BUFFER12 */ + 468, /* GL_DRAW_BUFFER13 */ + 471, /* GL_DRAW_BUFFER14 */ + 474, /* GL_DRAW_BUFFER15 */ 97, /* GL_BLEND_EQUATION_ALPHA */ - 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 */ + 1015, /* GL_MATRIX_PALETTE_ARB */ + 1065, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ + 1068, /* GL_MAX_PALETTE_MATRICES_ARB */ + 373, /* GL_CURRENT_PALETTE_MATRIX_ARB */ + 1003, /* GL_MATRIX_INDEX_ARRAY_ARB */ + 368, /* GL_CURRENT_MATRIX_INDEX_ARB */ + 1008, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ + 1012, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ + 1010, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ + 1006, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ + 2055, /* GL_TEXTURE_DEPTH_SIZE */ + 439, /* GL_DEPTH_TEXTURE_MODE */ + 2012, /* GL_TEXTURE_COMPARE_MODE */ + 2010, /* 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 */ + 1381, /* GL_POINT_SPRITE */ + 347, /* GL_COORD_REPLACE */ + 1386, /* GL_POINT_SPRITE_R_MODE_NV */ + 1526, /* GL_QUERY_COUNTER_BITS */ + 376, /* GL_CURRENT_QUERY */ + 1530, /* GL_QUERY_RESULT */ + 1532, /* GL_QUERY_RESULT_AVAILABLE */ + 1135, /* GL_MAX_VERTEX_ATTRIBS */ + 2262, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ + 437, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ + 436, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ + 1112, /* GL_MAX_TEXTURE_COORDS */ + 1114, /* GL_MAX_TEXTURE_IMAGE_UNITS */ + 1461, /* GL_PROGRAM_ERROR_STRING_ARB */ + 1463, /* GL_PROGRAM_FORMAT_ASCII_ARB */ + 1462, /* GL_PROGRAM_FORMAT_ARB */ + 2111, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ + 409, /* GL_DEPTH_BOUNDS_TEST_EXT */ + 408, /* GL_DEPTH_BOUNDS_EXT */ 61, /* GL_ARRAY_BUFFER */ - 523, /* GL_ELEMENT_ARRAY_BUFFER */ + 524, /* GL_ELEMENT_ARRAY_BUFFER */ 62, /* GL_ARRAY_BUFFER_BINDING */ - 524, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ - 2226, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ - 1229, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ + 525, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ + 2233, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ + 1233, /* 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 */ + 738, /* GL_INDEX_ARRAY_BUFFER_BINDING */ + 2025, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ + 520, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ + 1743, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ + 578, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ + 2290, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ + 2255, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ + 1464, /* GL_PROGRAM_INSTRUCTIONS_ARB */ + 1078, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ + 1470, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + 1087, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + 1484, /* GL_PROGRAM_TEMPORARIES_ARB */ + 1093, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ + 1472, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ + 1089, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ + 1476, /* GL_PROGRAM_PARAMETERS_ARB */ + 1092, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ + 1471, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ + 1088, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ + 1455, /* GL_PROGRAM_ATTRIBS_ARB */ + 1073, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ + 1469, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ + 1086, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ + 1453, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ + 1071, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ + 1467, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + 1084, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + 1079, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ + 1075, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ + 1487, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ + 2144, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ + 1549, /* GL_READ_ONLY */ + 2304, /* GL_WRITE_ONLY */ + 1551, /* GL_READ_WRITE */ 124, /* GL_BUFFER_ACCESS */ 129, /* GL_BUFFER_MAPPED */ 134, /* GL_BUFFER_MAP_POINTER */ - 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 */ + 2118, /* GL_TIME_ELAPSED_EXT */ + 963, /* GL_MATRIX0_ARB */ + 975, /* GL_MATRIX1_ARB */ + 987, /* GL_MATRIX2_ARB */ + 991, /* GL_MATRIX3_ARB */ + 993, /* GL_MATRIX4_ARB */ + 995, /* GL_MATRIX5_ARB */ + 997, /* GL_MATRIX6_ARB */ + 999, /* GL_MATRIX7_ARB */ + 1001, /* GL_MATRIX8_ARB */ + 1002, /* GL_MATRIX9_ARB */ + 965, /* GL_MATRIX10_ARB */ + 966, /* GL_MATRIX11_ARB */ + 967, /* GL_MATRIX12_ARB */ + 968, /* GL_MATRIX13_ARB */ + 969, /* GL_MATRIX14_ARB */ + 970, /* GL_MATRIX15_ARB */ + 971, /* GL_MATRIX16_ARB */ + 972, /* GL_MATRIX17_ARB */ + 973, /* GL_MATRIX18_ARB */ + 974, /* GL_MATRIX19_ARB */ + 977, /* GL_MATRIX20_ARB */ + 978, /* GL_MATRIX21_ARB */ + 979, /* GL_MATRIX22_ARB */ + 980, /* GL_MATRIX23_ARB */ + 981, /* GL_MATRIX24_ARB */ + 982, /* GL_MATRIX25_ARB */ + 983, /* GL_MATRIX26_ARB */ + 984, /* GL_MATRIX27_ARB */ + 985, /* GL_MATRIX28_ARB */ + 986, /* GL_MATRIX29_ARB */ + 989, /* GL_MATRIX30_ARB */ + 990, /* GL_MATRIX31_ARB */ + 1876, /* GL_STREAM_DRAW */ + 1878, /* GL_STREAM_READ */ + 1874, /* GL_STREAM_COPY */ + 1825, /* GL_STATIC_DRAW */ + 1827, /* GL_STATIC_READ */ + 1823, /* GL_STATIC_COPY */ + 514, /* GL_DYNAMIC_DRAW */ + 516, /* GL_DYNAMIC_READ */ + 512, /* GL_DYNAMIC_COPY */ + 1344, /* GL_PIXEL_PACK_BUFFER */ + 1348, /* GL_PIXEL_UNPACK_BUFFER */ + 1345, /* GL_PIXEL_PACK_BUFFER_BINDING */ + 1349, /* GL_PIXEL_UNPACK_BUFFER_BINDING */ + 400, /* GL_DEPTH24_STENCIL8 */ + 2107, /* GL_TEXTURE_STENCIL_SIZE */ + 2053, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */ + 1074, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ + 1077, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ + 1081, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ + 1080, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ + 2260, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */ + 2257, /* GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB */ + 1020, /* GL_MAX_ARRAY_TEXTURE_LAYERS */ + 1158, /* GL_MIN_PROGRAM_TEXEL_OFFSET */ + 1094, /* GL_MAX_PROGRAM_TEXEL_OFFSET */ + 1867, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ 18, /* GL_ACTIVE_STENCIL_FACE_EXT */ - 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 */ + 1165, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ + 1724, /* GL_SAMPLES_PASSED */ + 693, /* GL_GEOMETRY_VERTICES_OUT */ + 687, /* GL_GEOMETRY_INPUT_TYPE */ + 689, /* GL_GEOMETRY_OUTPUT_TYPE */ + 1715, /* 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 */ + 550, /* GL_FIXED_ONLY */ + 1368, /* GL_POINT_SIZE_ARRAY_TYPE_OES */ + 1367, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */ + 1366, /* GL_POINT_SIZE_ARRAY_POINTER_OES */ + 1202, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */ + 1490, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */ + 2087, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */ 138, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */ 128, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */ - 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 */ + 1566, /* GL_RELEASED_APPLE */ + 2287, /* GL_VOLATILE_APPLE */ + 1606, /* GL_RETAINED_APPLE */ + 2161, /* GL_UNDEFINED_APPLE */ + 1514, /* GL_PURGEABLE_APPLE */ + 601, /* GL_FRAGMENT_SHADER */ + 2282, /* GL_VERTEX_SHADER */ + 1475, /* GL_PROGRAM_OBJECT_ARB */ + 1760, /* GL_SHADER_OBJECT_ARB */ + 1049, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ + 1140, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ + 1131, /* GL_MAX_VARYING_COMPONENTS */ + 1138, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ + 1032, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ + 1264, /* GL_OBJECT_TYPE_ARB */ + 1762, /* GL_SHADER_TYPE */ + 566, /* GL_FLOAT_VEC2 */ + 568, /* GL_FLOAT_VEC3 */ + 570, /* GL_FLOAT_VEC4 */ + 791, /* GL_INT_VEC2 */ + 793, /* GL_INT_VEC3 */ + 795, /* GL_INT_VEC4 */ 116, /* GL_BOOL */ 118, /* GL_BOOL_VEC2 */ 120, /* GL_BOOL_VEC3 */ 122, /* GL_BOOL_VEC4 */ - 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 */ + 554, /* GL_FLOAT_MAT2 */ + 558, /* GL_FLOAT_MAT3 */ + 562, /* GL_FLOAT_MAT4 */ + 1699, /* GL_SAMPLER_1D */ + 1705, /* GL_SAMPLER_2D */ + 1713, /* GL_SAMPLER_3D */ + 1718, /* GL_SAMPLER_CUBE */ + 1704, /* GL_SAMPLER_1D_SHADOW */ + 1712, /* GL_SAMPLER_2D_SHADOW */ + 1710, /* GL_SAMPLER_2D_RECT */ + 1711, /* GL_SAMPLER_2D_RECT_SHADOW */ + 556, /* GL_FLOAT_MAT2x3 */ + 557, /* GL_FLOAT_MAT2x4 */ + 560, /* GL_FLOAT_MAT3x2 */ + 561, /* GL_FLOAT_MAT3x4 */ + 564, /* GL_FLOAT_MAT4x2 */ + 565, /* GL_FLOAT_MAT4x3 */ + 398, /* GL_DELETE_STATUS */ 289, /* GL_COMPILE_STATUS */ - 849, /* GL_LINK_STATUS */ - 2220, /* GL_VALIDATE_STATUS */ - 748, /* GL_INFO_LOG_LENGTH */ + 852, /* GL_LINK_STATUS */ + 2227, /* GL_VALIDATE_STATUS */ + 750, /* GL_INFO_LOG_LENGTH */ 64, /* GL_ATTACHED_SHADERS */ 21, /* GL_ACTIVE_UNIFORMS */ 22, /* GL_ACTIVE_UNIFORM_MAX_LENGTH */ - 1755, /* GL_SHADER_SOURCE_LENGTH */ + 1761, /* GL_SHADER_SOURCE_LENGTH */ 15, /* GL_ACTIVE_ATTRIBUTES */ 16, /* GL_ACTIVE_ATTRIBUTE_MAX_LENGTH */ - 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 */ + 603, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ + 1764, /* GL_SHADING_LANGUAGE_VERSION */ + 375, /* GL_CURRENT_PROGRAM */ + 1313, /* GL_PALETTE4_RGB8_OES */ + 1315, /* GL_PALETTE4_RGBA8_OES */ + 1311, /* GL_PALETTE4_R5_G6_B5_OES */ + 1314, /* GL_PALETTE4_RGBA4_OES */ + 1312, /* GL_PALETTE4_RGB5_A1_OES */ + 1318, /* GL_PALETTE8_RGB8_OES */ + 1320, /* GL_PALETTE8_RGBA8_OES */ + 1316, /* GL_PALETTE8_R5_G6_B5_OES */ + 1319, /* GL_PALETTE8_RGBA4_OES */ + 1317, /* GL_PALETTE8_RGB5_A1_OES */ + 731, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */ + 729, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */ + 1365, /* GL_POINT_SIZE_ARRAY_OES */ + 2031, /* GL_TEXTURE_CROP_RECT_OES */ + 1004, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */ + 1364, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */ + 2210, /* GL_UNSIGNED_NORMALIZED */ + 1964, /* GL_TEXTURE_1D_ARRAY */ + 1500, /* GL_PROXY_TEXTURE_1D_ARRAY */ + 1967, /* GL_TEXTURE_2D_ARRAY */ + 1504, /* GL_PROXY_TEXTURE_2D_ARRAY */ + 1975, /* GL_TEXTURE_BINDING_1D_ARRAY */ + 1978, /* GL_TEXTURE_BINDING_2D_ARRAY */ + 1056, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */ + 1995, /* GL_TEXTURE_BUFFER */ + 1110, /* GL_MAX_TEXTURE_BUFFER_SIZE */ + 1982, /* GL_TEXTURE_BINDING_BUFFER */ + 1997, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */ + 1999, /* GL_TEXTURE_BUFFER_FORMAT */ + 1537, /* GL_R11F_G11F_B10F */ + 2176, /* GL_UNSIGNED_INT_10F_11F_11F_REV */ + 1649, /* GL_RGB9_E5 */ + 2185, /* GL_UNSIGNED_INT_5_9_9_9_REV */ + 2105, /* GL_TEXTURE_SHARED_SIZE */ + 1817, /* GL_SRGB */ + 1818, /* GL_SRGB8 */ + 1820, /* GL_SRGB_ALPHA */ + 1819, /* GL_SRGB8_ALPHA8 */ + 1777, /* GL_SLUMINANCE_ALPHA */ + 1776, /* GL_SLUMINANCE8_ALPHA8 */ + 1774, /* GL_SLUMINANCE */ + 1775, /* 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 */ + 2140, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */ + 2129, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */ + 1129, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */ + 2138, /* GL_TRANSFORM_FEEDBACK_VARYINGS */ + 2134, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */ + 2132, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */ + 1447, /* GL_PRIMITIVES_GENERATED */ + 2136, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */ + 1541, /* GL_RASTERIZER_DISCARD */ + 1125, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */ + 1127, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */ + 769, /* GL_INTERLEAVED_ATTRIBS */ + 1753, /* GL_SEPARATE_ATTRIBS */ + 2124, /* GL_TRANSFORM_FEEDBACK_BUFFER */ + 2126, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */ + 1383, /* GL_POINT_SPRITE_COORD_ORIGIN */ + 861, /* GL_LOWER_LEFT */ + 2224, /* GL_UPPER_LEFT */ + 1841, /* GL_STENCIL_BACK_REF */ + 1842, /* GL_STENCIL_BACK_VALUE_MASK */ + 1843, /* GL_STENCIL_BACK_WRITEMASK */ + 504, /* GL_DRAW_FRAMEBUFFER_BINDING */ + 1571, /* GL_RENDERBUFFER_BINDING */ + 1545, /* GL_READ_FRAMEBUFFER */ + 503, /* GL_DRAW_FRAMEBUFFER */ + 1546, /* GL_READ_FRAMEBUFFER_BINDING */ + 1590, /* GL_RENDERBUFFER_SAMPLES */ + 617, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ + 614, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ + 629, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ + 624, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ + 627, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ + 635, /* GL_FRAMEBUFFER_COMPLETE */ + 640, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ + 655, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ + 649, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ + 644, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ + 650, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ + 646, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ + 660, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ + 666, /* GL_FRAMEBUFFER_UNSUPPORTED */ + 664, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ + 1028, /* GL_MAX_COLOR_ATTACHMENTS */ 196, /* GL_COLOR_ATTACHMENT0 */ 199, /* GL_COLOR_ATTACHMENT1 */ 213, /* GL_COLOR_ATTACHMENT2 */ @@ -6034,184 +6054,184 @@ static const unsigned reduced_enums[1556] = 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 */ + 403, /* GL_DEPTH_ATTACHMENT */ + 1830, /* GL_STENCIL_ATTACHMENT */ + 605, /* GL_FRAMEBUFFER */ + 1568, /* GL_RENDERBUFFER */ + 1594, /* GL_RENDERBUFFER_WIDTH */ + 1581, /* GL_RENDERBUFFER_HEIGHT */ + 1584, /* GL_RENDERBUFFER_INTERNAL_FORMAT */ + 1862, /* GL_STENCIL_INDEX_EXT */ + 1851, /* GL_STENCIL_INDEX1 */ + 1856, /* GL_STENCIL_INDEX4 */ + 1859, /* GL_STENCIL_INDEX8 */ + 1852, /* GL_STENCIL_INDEX16 */ + 1588, /* GL_RENDERBUFFER_RED_SIZE */ + 1579, /* GL_RENDERBUFFER_GREEN_SIZE */ + 1574, /* GL_RENDERBUFFER_BLUE_SIZE */ + 1569, /* GL_RENDERBUFFER_ALPHA_SIZE */ + 1576, /* GL_RENDERBUFFER_DEPTH_SIZE */ + 1592, /* GL_RENDERBUFFER_STENCIL_SIZE */ + 658, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ + 1105, /* GL_MAX_SAMPLES */ + 2067, /* GL_TEXTURE_GEN_STR_OES */ + 705, /* GL_HALF_FLOAT_OES */ + 1636, /* GL_RGB565_OES */ + 1666, /* GL_RGBA32UI */ + 1629, /* GL_RGB32UI */ 40, /* GL_ALPHA32UI_EXT */ - 758, /* GL_INTENSITY32UI_EXT */ - 874, /* GL_LUMINANCE32UI_EXT */ - 891, /* GL_LUMINANCE_ALPHA32UI_EXT */ - 1651, /* GL_RGBA16UI */ - 1615, /* GL_RGB16UI */ + 761, /* GL_INTENSITY32UI_EXT */ + 878, /* GL_LUMINANCE32UI_EXT */ + 895, /* GL_LUMINANCE_ALPHA32UI_EXT */ + 1657, /* GL_RGBA16UI */ + 1621, /* GL_RGB16UI */ 37, /* GL_ALPHA16UI_EXT */ - 755, /* GL_INTENSITY16UI_EXT */ - 869, /* GL_LUMINANCE16UI_EXT */ - 889, /* GL_LUMINANCE_ALPHA16UI_EXT */ - 1670, /* GL_RGBA8UI */ - 1638, /* GL_RGB8UI */ + 758, /* GL_INTENSITY16UI_EXT */ + 873, /* GL_LUMINANCE16UI_EXT */ + 893, /* GL_LUMINANCE_ALPHA16UI_EXT */ + 1676, /* GL_RGBA8UI */ + 1644, /* GL_RGB8UI */ 45, /* GL_ALPHA8UI_EXT */ - 763, /* GL_INTENSITY8UI_EXT */ - 883, /* GL_LUMINANCE8UI_EXT */ - 893, /* GL_LUMINANCE_ALPHA8UI_EXT */ - 1658, /* GL_RGBA32I */ - 1621, /* GL_RGB32I */ + 766, /* GL_INTENSITY8UI_EXT */ + 887, /* GL_LUMINANCE8UI_EXT */ + 897, /* GL_LUMINANCE_ALPHA8UI_EXT */ + 1664, /* GL_RGBA32I */ + 1627, /* GL_RGB32I */ 39, /* GL_ALPHA32I_EXT */ - 757, /* GL_INTENSITY32I_EXT */ - 873, /* GL_LUMINANCE32I_EXT */ - 890, /* GL_LUMINANCE_ALPHA32I_EXT */ - 1649, /* GL_RGBA16I */ - 1613, /* GL_RGB16I */ + 760, /* GL_INTENSITY32I_EXT */ + 877, /* GL_LUMINANCE32I_EXT */ + 894, /* GL_LUMINANCE_ALPHA32I_EXT */ + 1655, /* GL_RGBA16I */ + 1619, /* GL_RGB16I */ 36, /* GL_ALPHA16I_EXT */ - 754, /* GL_INTENSITY16I_EXT */ - 868, /* GL_LUMINANCE16I_EXT */ - 888, /* GL_LUMINANCE_ALPHA16I_EXT */ - 1668, /* GL_RGBA8I */ - 1636, /* GL_RGB8I */ + 757, /* GL_INTENSITY16I_EXT */ + 872, /* GL_LUMINANCE16I_EXT */ + 892, /* GL_LUMINANCE_ALPHA16I_EXT */ + 1674, /* GL_RGBA8I */ + 1642, /* GL_RGB8I */ 44, /* GL_ALPHA8I_EXT */ - 762, /* GL_INTENSITY8I_EXT */ - 882, /* GL_LUMINANCE8I_EXT */ - 892, /* GL_LUMINANCE_ALPHA8I_EXT */ - 1553, /* GL_RED_INTEGER */ - 699, /* GL_GREEN_INTEGER */ + 765, /* GL_INTENSITY8I_EXT */ + 886, /* GL_LUMINANCE8I_EXT */ + 896, /* GL_LUMINANCE_ALPHA8I_EXT */ + 1558, /* GL_RED_INTEGER */ + 700, /* GL_GREEN_INTEGER */ 113, /* GL_BLUE_INTEGER */ 49, /* GL_ALPHA_INTEGER_EXT */ - 1683, /* GL_RGB_INTEGER */ - 1677, /* GL_RGBA_INTEGER */ + 1689, /* GL_RGB_INTEGER */ + 1683, /* GL_RGBA_INTEGER */ 84, /* GL_BGR_INTEGER */ 82, /* GL_BGRA_INTEGER */ - 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 */ + 899, /* GL_LUMINANCE_INTEGER_EXT */ + 898, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */ + 1685, /* GL_RGBA_INTEGER_MODE_EXT */ + 612, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */ + 653, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */ + 652, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */ + 1700, /* GL_SAMPLER_1D_ARRAY */ + 1706, /* GL_SAMPLER_2D_ARRAY */ + 1716, /* GL_SAMPLER_BUFFER */ + 1702, /* GL_SAMPLER_1D_ARRAY_SHADOW */ + 1708, /* GL_SAMPLER_2D_ARRAY_SHADOW */ + 1719, /* GL_SAMPLER_CUBE_SHADOW */ + 2204, /* GL_UNSIGNED_INT_VEC2 */ + 2206, /* GL_UNSIGNED_INT_VEC3 */ + 2208, /* GL_UNSIGNED_INT_VEC4 */ + 775, /* GL_INT_SAMPLER_1D */ + 779, /* GL_INT_SAMPLER_2D */ + 785, /* GL_INT_SAMPLER_3D */ + 789, /* GL_INT_SAMPLER_CUBE */ + 783, /* GL_INT_SAMPLER_2D_RECT */ + 776, /* GL_INT_SAMPLER_1D_ARRAY */ + 780, /* GL_INT_SAMPLER_2D_ARRAY */ + 787, /* GL_INT_SAMPLER_BUFFER */ + 2188, /* GL_UNSIGNED_INT_SAMPLER_1D */ + 2192, /* GL_UNSIGNED_INT_SAMPLER_2D */ + 2198, /* GL_UNSIGNED_INT_SAMPLER_3D */ + 2202, /* GL_UNSIGNED_INT_SAMPLER_CUBE */ + 2196, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */ + 2189, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */ + 2193, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */ + 2200, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */ + 691, /* GL_GEOMETRY_SHADER */ + 694, /* GL_GEOMETRY_VERTICES_OUT_ARB */ + 688, /* GL_GEOMETRY_INPUT_TYPE_ARB */ + 690, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */ + 1062, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */ + 1145, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */ + 1060, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */ + 1054, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */ + 1058, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */ + 862, /* GL_LOW_FLOAT */ + 1147, /* GL_MEDIUM_FLOAT */ + 706, /* GL_HIGH_FLOAT */ + 863, /* GL_LOW_INT */ + 1148, /* GL_MEDIUM_INT */ + 707, /* GL_HIGH_INT */ + 2178, /* GL_UNSIGNED_INT_10_10_10_2_OES */ + 774, /* GL_INT_10_10_10_2_OES */ + 1758, /* GL_SHADER_BINARY_FORMATS */ + 1249, /* GL_NUM_SHADER_BINARY_FORMATS */ + 1759, /* GL_SHADER_COMPILER */ + 1142, /* GL_MAX_VERTEX_UNIFORM_VECTORS */ + 1134, /* GL_MAX_VARYING_VECTORS */ + 1051, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */ + 1534, /* GL_QUERY_WAIT */ + 1528, /* GL_QUERY_NO_WAIT */ + 1524, /* GL_QUERY_BY_REGION_WAIT */ + 1522, /* GL_QUERY_BY_REGION_NO_WAIT */ + 2122, /* GL_TRANSFORM_FEEDBACK */ + 2131, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */ + 2125, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */ + 2123, /* GL_TRANSFORM_FEEDBACK_BINDING */ + 1518, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ + 546, /* GL_FIRST_VERTEX_CONVENTION */ + 807, /* GL_LAST_VERTEX_CONVENTION */ + 1492, /* GL_PROVOKING_VERTEX */ + 354, /* GL_COPY_READ_BUFFER */ + 355, /* GL_COPY_WRITE_BUFFER */ + 1561, /* GL_RED_SNORM */ + 1696, /* GL_RG_SNORM */ + 1695, /* GL_RGB_SNORM */ + 1688, /* GL_RGBA_SNORM */ + 1540, /* GL_R8_SNORM */ + 1609, /* GL_RG8_SNORM */ + 1648, /* GL_RGB8_SNORM */ + 1680, /* GL_RGBA8_SNORM */ + 1538, /* GL_R16_SNORM */ + 1608, /* GL_RG16_SNORM */ + 1624, /* GL_RGB16_SNORM */ + 1660, /* GL_RGBA16_SNORM */ + 1770, /* GL_SIGNED_NORMALIZED */ + 1449, /* GL_PRIMITIVE_RESTART */ + 1450, /* GL_PRIMITIVE_RESTART_INDEX */ + 1107, /* GL_MAX_SERVER_WAIT_TIMEOUT */ + 1263, /* GL_OBJECT_TYPE */ + 1883, /* GL_SYNC_CONDITION */ + 1888, /* GL_SYNC_STATUS */ + 1885, /* GL_SYNC_FLAGS */ + 1884, /* GL_SYNC_FENCE */ + 1887, /* GL_SYNC_GPU_COMMANDS_COMPLETE */ + 2171, /* GL_UNSIGNALED */ + 1769, /* GL_SIGNALED */ 54, /* GL_ALREADY_SIGNALED */ - 2111, /* GL_TIMEOUT_EXPIRED */ + 2117, /* GL_TIMEOUT_EXPIRED */ 315, /* GL_CONDITION_SATISFIED */ - 2281, /* GL_WAIT_FAILED */ + 2288, /* GL_WAIT_FAILED */ 126, /* GL_BUFFER_ACCESS_FLAGS */ 132, /* GL_BUFFER_MAP_LENGTH */ 133, /* GL_BUFFER_MAP_OFFSET */ - 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 */ + 1137, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */ + 1052, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */ + 1053, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */ + 1048, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */ + 330, /* GL_CONTEXT_PROFILE_MASK */ + 531, /* GL_EVAL_BIT */ + 1543, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ + 854, /* GL_LIST_BIT */ + 1990, /* GL_TEXTURE_BIT */ + 1739, /* GL_SCISSOR_BIT */ 30, /* GL_ALL_ATTRIB_BITS */ - 1209, /* GL_MULTISAMPLE_BIT */ + 1213, /* GL_MULTISAMPLE_BIT */ 31, /* GL_ALL_CLIENT_ATTRIB_BITS */ }; diff --git a/src/mesa/main/eval.c b/src/mesa/main/eval.c index 9ab55072f00..e651715f788 100644 --- a/src/mesa/main/eval.c +++ b/src/mesa/main/eval.c @@ -545,7 +545,7 @@ _mesa_Map2d( GLenum target, static void GLAPIENTRY -_mesa_GetMapdv( GLenum target, GLenum query, GLdouble *v ) +_mesa_GetnMapdvARB( GLenum target, GLenum query, GLsizei bufSize, GLdouble *v ) { GET_CURRENT_CONTEXT(ctx); struct gl_1d_map *map1d; @@ -553,6 +553,7 @@ _mesa_GetMapdv( GLenum target, GLenum query, GLdouble *v ) GLint i, n; GLfloat *data; GLuint comps; + GLsizei numBytes; ASSERT_OUTSIDE_BEGIN_END(ctx); @@ -577,6 +578,9 @@ _mesa_GetMapdv( GLenum target, GLenum query, GLdouble *v ) n = map2d->Uorder * map2d->Vorder * comps; } if (data) { + numBytes = n * sizeof *v; + if (bufSize < numBytes) + goto overflow; for (i=0;i<n;i++) { v[i] = data[i]; } @@ -584,19 +588,31 @@ _mesa_GetMapdv( GLenum target, GLenum query, GLdouble *v ) break; case GL_ORDER: if (map1d) { + numBytes = 1 * sizeof *v; + if (bufSize < numBytes) + goto overflow; v[0] = (GLdouble) map1d->Order; } else { + numBytes = 2 * sizeof *v; + if (bufSize < numBytes) + goto overflow; v[0] = (GLdouble) map2d->Uorder; v[1] = (GLdouble) map2d->Vorder; } break; case GL_DOMAIN: if (map1d) { + numBytes = 2 * sizeof *v; + if (bufSize < numBytes) + goto overflow; v[0] = (GLdouble) map1d->u1; v[1] = (GLdouble) map1d->u2; } else { + numBytes = 4 * sizeof *v; + if (bufSize < numBytes) + goto overflow; v[0] = (GLdouble) map2d->u1; v[1] = (GLdouble) map2d->u2; v[2] = (GLdouble) map2d->v1; @@ -606,11 +622,22 @@ _mesa_GetMapdv( GLenum target, GLenum query, GLdouble *v ) default: _mesa_error( ctx, GL_INVALID_ENUM, "glGetMapdv(query)" ); } + return; + +overflow: + _mesa_error( ctx, GL_INVALID_OPERATION, + "glGetnMapdvARB(out of bounds: bufSize is %d," + " but %d bytes are required)", bufSize, numBytes ); } +static void GLAPIENTRY +_mesa_GetMapdv( GLenum target, GLenum query, GLdouble *v ) +{ + _mesa_GetnMapdvARB(target, query, INT_MAX, v); +} static void GLAPIENTRY -_mesa_GetMapfv( GLenum target, GLenum query, GLfloat *v ) +_mesa_GetnMapfvARB( GLenum target, GLenum query, GLsizei bufSize, GLfloat *v ) { GET_CURRENT_CONTEXT(ctx); struct gl_1d_map *map1d; @@ -618,6 +645,7 @@ _mesa_GetMapfv( GLenum target, GLenum query, GLfloat *v ) GLint i, n; GLfloat *data; GLuint comps; + GLsizei numBytes; ASSERT_OUTSIDE_BEGIN_END(ctx); @@ -642,6 +670,9 @@ _mesa_GetMapfv( GLenum target, GLenum query, GLfloat *v ) n = map2d->Uorder * map2d->Vorder * comps; } if (data) { + numBytes = n * sizeof *v; + if (bufSize < numBytes) + goto overflow; for (i=0;i<n;i++) { v[i] = data[i]; } @@ -649,19 +680,31 @@ _mesa_GetMapfv( GLenum target, GLenum query, GLfloat *v ) break; case GL_ORDER: if (map1d) { + numBytes = 1 * sizeof *v; + if (bufSize < numBytes) + goto overflow; v[0] = (GLfloat) map1d->Order; } else { + numBytes = 2 * sizeof *v; + if (bufSize < numBytes) + goto overflow; v[0] = (GLfloat) map2d->Uorder; v[1] = (GLfloat) map2d->Vorder; } break; case GL_DOMAIN: if (map1d) { + numBytes = 2 * sizeof *v; + if (bufSize < numBytes) + goto overflow; v[0] = map1d->u1; v[1] = map1d->u2; } else { + numBytes = 4 * sizeof *v; + if (bufSize < numBytes) + goto overflow; v[0] = map2d->u1; v[1] = map2d->u2; v[2] = map2d->v1; @@ -671,11 +714,24 @@ _mesa_GetMapfv( GLenum target, GLenum query, GLfloat *v ) default: _mesa_error( ctx, GL_INVALID_ENUM, "glGetMapfv(query)" ); } + return; + +overflow: + _mesa_error( ctx, GL_INVALID_OPERATION, + "glGetnMapfvARB(out of bounds: bufSize is %d," + " but %d bytes are required)", bufSize, numBytes ); } static void GLAPIENTRY -_mesa_GetMapiv( GLenum target, GLenum query, GLint *v ) +_mesa_GetMapfv( GLenum target, GLenum query, GLfloat *v ) +{ + _mesa_GetnMapfvARB(target, query, INT_MAX, v); +} + + +static void GLAPIENTRY +_mesa_GetnMapivARB( GLenum target, GLenum query, GLsizei bufSize, GLint *v ) { GET_CURRENT_CONTEXT(ctx); struct gl_1d_map *map1d; @@ -683,6 +739,7 @@ _mesa_GetMapiv( GLenum target, GLenum query, GLint *v ) GLuint i, n; GLfloat *data; GLuint comps; + GLsizei numBytes; ASSERT_OUTSIDE_BEGIN_END(ctx); @@ -707,6 +764,9 @@ _mesa_GetMapiv( GLenum target, GLenum query, GLint *v ) n = map2d->Uorder * map2d->Vorder * comps; } if (data) { + numBytes = n * sizeof *v; + if (bufSize < numBytes) + goto overflow; for (i=0;i<n;i++) { v[i] = IROUND(data[i]); } @@ -714,19 +774,31 @@ _mesa_GetMapiv( GLenum target, GLenum query, GLint *v ) break; case GL_ORDER: if (map1d) { + numBytes = 1 * sizeof *v; + if (bufSize < numBytes) + goto overflow; v[0] = map1d->Order; } else { + numBytes = 2 * sizeof *v; + if (bufSize < numBytes) + goto overflow; v[0] = map2d->Uorder; v[1] = map2d->Vorder; } break; case GL_DOMAIN: if (map1d) { + numBytes = 2 * sizeof *v; + if (bufSize < numBytes) + goto overflow; v[0] = IROUND(map1d->u1); v[1] = IROUND(map1d->u2); } else { + numBytes = 4 * sizeof *v; + if (bufSize < numBytes) + goto overflow; v[0] = IROUND(map2d->u1); v[1] = IROUND(map2d->u2); v[2] = IROUND(map2d->v1); @@ -736,9 +808,21 @@ _mesa_GetMapiv( GLenum target, GLenum query, GLint *v ) default: _mesa_error( ctx, GL_INVALID_ENUM, "glGetMapiv(query)" ); } + return; + +overflow: + _mesa_error( ctx, GL_INVALID_OPERATION, + "glGetnMapivARB(out of bounds: bufSize is %d," + " but %d bytes are required)", bufSize, numBytes ); } +static void GLAPIENTRY +_mesa_GetMapiv( GLenum target, GLenum query, GLint *v ) +{ + _mesa_GetnMapivARB(target, query, INT_MAX, v); +} + static void GLAPIENTRY _mesa_MapGrid1f( GLint un, GLfloat u1, GLfloat u2 ) @@ -832,6 +916,11 @@ _mesa_init_eval_dispatch(struct _glapi_table *disp) SET_MapGrid1f(disp, _mesa_MapGrid1f); SET_MapGrid2d(disp, _mesa_MapGrid2d); SET_MapGrid2f(disp, _mesa_MapGrid2f); + + /* GL_ARB_robustness */ + SET_GetnMapdvARB(disp, _mesa_GetnMapdvARB); + SET_GetnMapfvARB(disp, _mesa_GetnMapfvARB); + SET_GetnMapivARB(disp, _mesa_GetnMapivARB); } diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c index 8a0ab961523..a9ef8fa4cb7 100644 --- a/src/mesa/main/extensions.c +++ b/src/mesa/main/extensions.c @@ -107,6 +107,7 @@ static const struct extension extension_table[] = { { "GL_ARB_point_parameters", o(EXT_point_parameters), GL, 1997 }, { "GL_ARB_point_sprite", o(ARB_point_sprite), GL, 2003 }, { "GL_ARB_provoking_vertex", o(EXT_provoking_vertex), GL, 2009 }, + { "GL_ARB_robustness", o(dummy_true), GL, 2010 }, { "GL_ARB_sampler_objects", o(ARB_sampler_objects), GL, 2009 }, { "GL_ARB_seamless_cube_map", o(ARB_seamless_cube_map), GL, 2009 }, { "GL_ARB_shader_objects", o(ARB_shader_objects), GL, 2002 }, @@ -258,6 +259,9 @@ static const struct extension extension_table[] = { /* Vendor extensions */ { "GL_3DFX_texture_compression_FXT1", o(TDFX_texture_compression_FXT1), GL, 1999 }, { "GL_AMD_conservative_depth", o(AMD_conservative_depth), GL, 2009 }, + { "GL_AMD_draw_buffers_blend", o(ARB_draw_buffers_blend), GL, 2009 }, + { "GL_AMD_seamless_cubemap_per_texture", o(AMD_seamless_cubemap_per_texture), GL, 2009 }, + { "GL_AMD_shader_stencil_export", o(ARB_shader_stencil_export), GL, 2009 }, { "GL_APPLE_client_storage", o(APPLE_client_storage), GL, 2002 }, { "GL_APPLE_object_purgeable", o(APPLE_object_purgeable), GL, 2006 }, { "GL_APPLE_packed_pixels", o(APPLE_packed_pixels), GL, 2002 }, @@ -501,6 +505,7 @@ _mesa_enable_sw_extensions(struct gl_context *ctx) ctx->Extensions.EXT_texture_env_dot3 = GL_TRUE; ctx->Extensions.EXT_texture_mirror_clamp = GL_TRUE; ctx->Extensions.EXT_texture_lod_bias = GL_TRUE; + ctx->Extensions.EXT_texture_shared_exponent = GL_TRUE; #if FEATURE_EXT_texture_sRGB ctx->Extensions.EXT_texture_sRGB = GL_TRUE; ctx->Extensions.EXT_texture_sRGB_decode = GL_TRUE; diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index 1edb310ea13..64f135e21dd 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -418,6 +418,15 @@ _mesa_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb) case GL_RG: fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED; return; + case GL_RGB: + switch (rb->Format) { + case MESA_FORMAT_RGB9_E5_FLOAT: + fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED; + return; + default:; + } + break; + default: /* render buffer format is supported by software rendering */ ; @@ -1175,6 +1184,10 @@ _mesa_base_fbo_format(struct gl_context *ctx, GLenum internalFormat) case GL_INTENSITY32F_ARB: return ctx->Extensions.ARB_texture_float && ctx->Extensions.ARB_framebuffer_object ? GL_INTENSITY : 0; + case GL_RGB9_E5: + return ctx->Extensions.EXT_texture_shared_exponent ? GL_RGB : 0; + case GL_R11F_G11F_B10F: + return ctx->Extensions.EXT_packed_float ? GL_RGB : 0; /* XXX add integer formats eventually */ default: return 0; diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c index 4c31ccb763c..60e8ae390a5 100644 --- a/src/mesa/main/formats.c +++ b/src/mesa/main/formats.c @@ -1072,7 +1072,25 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] = 0, 0, 0, 0, 0, 16, 0, 0, 0, 1, 1, 2 - } + }, + { + MESA_FORMAT_RGB9_E5_FLOAT, + "MESA_FORMAT_RGB9_E5", + GL_RGB, + GL_FLOAT, + 9, 9, 9, 0, + 0, 0, 0, 0, 0, + 1, 1, 4 + }, + { + MESA_FORMAT_R11_G11_B10_FLOAT, + "MESA_FORMAT_R11_G11_B10_FLOAT", + GL_RGB, + GL_FLOAT, + 11, 11, 10, 0, + 0, 0, 0, 0, 0, + 1, 1, 4 + }, }; @@ -1803,6 +1821,16 @@ _mesa_format_to_type_and_comps(gl_format format, *comps = 4; return; + case MESA_FORMAT_RGB9_E5_FLOAT: + *datatype = GL_UNSIGNED_INT_5_9_9_9_REV; + *comps = 3; + return; + + case MESA_FORMAT_R11_G11_B10_FLOAT: + *datatype = GL_UNSIGNED_INT_10F_11F_11F_REV; + *comps = 3; + return; + case MESA_FORMAT_COUNT: assert(0); return; diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h index 15ac62cfef9..df9ed70a3e0 100644 --- a/src/mesa/main/formats.h +++ b/src/mesa/main/formats.h @@ -206,6 +206,9 @@ typedef enum MESA_FORMAT_SIGNED_AL1616, /* AAAA AAAA AAAA AAAA LLLL LLLL LLLL LLLL */ MESA_FORMAT_SIGNED_I16, /* IIII IIII IIII IIII */ + MESA_FORMAT_RGB9_E5_FLOAT, + MESA_FORMAT_R11_G11_B10_FLOAT, + MESA_FORMAT_COUNT } gl_format; diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c index e18803280c1..0492e1585c3 100644 --- a/src/mesa/main/get.c +++ b/src/mesa/main/get.c @@ -1163,7 +1163,7 @@ static const struct value_desc values[] = { /* GL_EXT_provoking_vertex */ { GL_PROVOKING_VERTEX_EXT, - CONTEXT_BOOL(Light.ProvokingVertex), extra_EXT_provoking_vertex }, + CONTEXT_ENUM(Light.ProvokingVertex), extra_EXT_provoking_vertex }, { GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT, CONTEXT_BOOL(Const.QuadsFollowProvokingVertexConvention), extra_EXT_provoking_vertex }, @@ -1281,6 +1281,9 @@ static const struct value_desc values[] = { /* GL 3.2 */ { GL_CONTEXT_PROFILE_MASK, CONTEXT_INT(Const.ProfileMask), extra_version_32 }, + + /* GL_ARB_robustness */ + { GL_RESET_NOTIFICATION_STRATEGY_ARB, CONTEXT_ENUM(Const.ResetStrategy), NO_EXTRA }, #endif /* FEATURE_GL */ }; diff --git a/src/mesa/main/get.h b/src/mesa/main/get.h index 99a004b71dd..9422efec565 100644 --- a/src/mesa/main/get.h +++ b/src/mesa/main/get.h @@ -74,4 +74,8 @@ _mesa_GetStringi(GLenum name, GLuint index); extern GLenum GLAPIENTRY _mesa_GetError( void ); +/* GL_ARB_robustness */ +extern GLenum GLAPIENTRY +_mesa_GetGraphicsResetStatusARB( void ); + #endif diff --git a/src/mesa/main/getstring.c b/src/mesa/main/getstring.c index f8866f68581..c381fb2dfdf 100644 --- a/src/mesa/main/getstring.c +++ b/src/mesa/main/getstring.c @@ -251,3 +251,20 @@ _mesa_GetError( void ) ctx->ErrorDebugCount = 0; return e; } + +/** + * Returns an error code specified by GL_ARB_robustness, or GL_NO_ERROR. + * \return current context status + */ +GLenum GLAPIENTRY +_mesa_GetGraphicsResetStatusARB( void ) +{ + GET_CURRENT_CONTEXT(ctx); + GLenum status = ctx->ResetStatus; + + if (MESA_VERBOSE & VERBOSE_API) + _mesa_debug(ctx, "glGetGraphicsResetStatusARB" + "(always returns GL_NO_ERROR)\n"); + + return status; +} diff --git a/src/mesa/main/glapidispatch.h b/src/mesa/main/glapidispatch.h index c1cc6cb1254..93cc0122df0 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 908 +#define _gloffset_COUNT 928 #define _gloffset_NewList 0 #define _gloffset_EndList 1 @@ -690,292 +690,312 @@ #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 +#define _gloffset_GetGraphicsResetStatusARB 626 +#define _gloffset_GetnColorTableARB 627 +#define _gloffset_GetnCompressedTexImageARB 628 +#define _gloffset_GetnConvolutionFilterARB 629 +#define _gloffset_GetnHistogramARB 630 +#define _gloffset_GetnMapdvARB 631 +#define _gloffset_GetnMapfvARB 632 +#define _gloffset_GetnMapivARB 633 +#define _gloffset_GetnMinmaxARB 634 +#define _gloffset_GetnPixelMapfvARB 635 +#define _gloffset_GetnPixelMapuivARB 636 +#define _gloffset_GetnPixelMapusvARB 637 +#define _gloffset_GetnPolygonStippleARB 638 +#define _gloffset_GetnSeparableFilterARB 639 +#define _gloffset_GetnTexImageARB 640 +#define _gloffset_GetnUniformdvARB 641 +#define _gloffset_GetnUniformfvARB 642 +#define _gloffset_GetnUniformivARB 643 +#define _gloffset_GetnUniformuivARB 644 +#define _gloffset_ReadnPixelsARB 645 +#define _gloffset_PolygonOffsetEXT 646 +#define _gloffset_GetPixelTexGenParameterfvSGIS 647 +#define _gloffset_GetPixelTexGenParameterivSGIS 648 +#define _gloffset_PixelTexGenParameterfSGIS 649 +#define _gloffset_PixelTexGenParameterfvSGIS 650 +#define _gloffset_PixelTexGenParameteriSGIS 651 +#define _gloffset_PixelTexGenParameterivSGIS 652 +#define _gloffset_SampleMaskSGIS 653 +#define _gloffset_SamplePatternSGIS 654 +#define _gloffset_ColorPointerEXT 655 +#define _gloffset_EdgeFlagPointerEXT 656 +#define _gloffset_IndexPointerEXT 657 +#define _gloffset_NormalPointerEXT 658 +#define _gloffset_TexCoordPointerEXT 659 +#define _gloffset_VertexPointerEXT 660 +#define _gloffset_PointParameterfEXT 661 +#define _gloffset_PointParameterfvEXT 662 +#define _gloffset_LockArraysEXT 663 +#define _gloffset_UnlockArraysEXT 664 +#define _gloffset_SecondaryColor3bEXT 665 +#define _gloffset_SecondaryColor3bvEXT 666 +#define _gloffset_SecondaryColor3dEXT 667 +#define _gloffset_SecondaryColor3dvEXT 668 +#define _gloffset_SecondaryColor3fEXT 669 +#define _gloffset_SecondaryColor3fvEXT 670 +#define _gloffset_SecondaryColor3iEXT 671 +#define _gloffset_SecondaryColor3ivEXT 672 +#define _gloffset_SecondaryColor3sEXT 673 +#define _gloffset_SecondaryColor3svEXT 674 +#define _gloffset_SecondaryColor3ubEXT 675 +#define _gloffset_SecondaryColor3ubvEXT 676 +#define _gloffset_SecondaryColor3uiEXT 677 +#define _gloffset_SecondaryColor3uivEXT 678 +#define _gloffset_SecondaryColor3usEXT 679 +#define _gloffset_SecondaryColor3usvEXT 680 +#define _gloffset_SecondaryColorPointerEXT 681 +#define _gloffset_MultiDrawArraysEXT 682 +#define _gloffset_MultiDrawElementsEXT 683 +#define _gloffset_FogCoordPointerEXT 684 +#define _gloffset_FogCoorddEXT 685 +#define _gloffset_FogCoorddvEXT 686 +#define _gloffset_FogCoordfEXT 687 +#define _gloffset_FogCoordfvEXT 688 +#define _gloffset_PixelTexGenSGIX 689 +#define _gloffset_BlendFuncSeparateEXT 690 +#define _gloffset_FlushVertexArrayRangeNV 691 +#define _gloffset_VertexArrayRangeNV 692 +#define _gloffset_CombinerInputNV 693 +#define _gloffset_CombinerOutputNV 694 +#define _gloffset_CombinerParameterfNV 695 +#define _gloffset_CombinerParameterfvNV 696 +#define _gloffset_CombinerParameteriNV 697 +#define _gloffset_CombinerParameterivNV 698 +#define _gloffset_FinalCombinerInputNV 699 +#define _gloffset_GetCombinerInputParameterfvNV 700 +#define _gloffset_GetCombinerInputParameterivNV 701 +#define _gloffset_GetCombinerOutputParameterfvNV 702 +#define _gloffset_GetCombinerOutputParameterivNV 703 +#define _gloffset_GetFinalCombinerInputParameterfvNV 704 +#define _gloffset_GetFinalCombinerInputParameterivNV 705 +#define _gloffset_ResizeBuffersMESA 706 +#define _gloffset_WindowPos2dMESA 707 +#define _gloffset_WindowPos2dvMESA 708 +#define _gloffset_WindowPos2fMESA 709 +#define _gloffset_WindowPos2fvMESA 710 +#define _gloffset_WindowPos2iMESA 711 +#define _gloffset_WindowPos2ivMESA 712 +#define _gloffset_WindowPos2sMESA 713 +#define _gloffset_WindowPos2svMESA 714 +#define _gloffset_WindowPos3dMESA 715 +#define _gloffset_WindowPos3dvMESA 716 +#define _gloffset_WindowPos3fMESA 717 +#define _gloffset_WindowPos3fvMESA 718 +#define _gloffset_WindowPos3iMESA 719 +#define _gloffset_WindowPos3ivMESA 720 +#define _gloffset_WindowPos3sMESA 721 +#define _gloffset_WindowPos3svMESA 722 +#define _gloffset_WindowPos4dMESA 723 +#define _gloffset_WindowPos4dvMESA 724 +#define _gloffset_WindowPos4fMESA 725 +#define _gloffset_WindowPos4fvMESA 726 +#define _gloffset_WindowPos4iMESA 727 +#define _gloffset_WindowPos4ivMESA 728 +#define _gloffset_WindowPos4sMESA 729 +#define _gloffset_WindowPos4svMESA 730 +#define _gloffset_MultiModeDrawArraysIBM 731 +#define _gloffset_MultiModeDrawElementsIBM 732 +#define _gloffset_DeleteFencesNV 733 +#define _gloffset_FinishFenceNV 734 +#define _gloffset_GenFencesNV 735 +#define _gloffset_GetFenceivNV 736 +#define _gloffset_IsFenceNV 737 +#define _gloffset_SetFenceNV 738 +#define _gloffset_TestFenceNV 739 +#define _gloffset_AreProgramsResidentNV 740 +#define _gloffset_BindProgramNV 741 +#define _gloffset_DeleteProgramsNV 742 +#define _gloffset_ExecuteProgramNV 743 +#define _gloffset_GenProgramsNV 744 +#define _gloffset_GetProgramParameterdvNV 745 +#define _gloffset_GetProgramParameterfvNV 746 +#define _gloffset_GetProgramStringNV 747 +#define _gloffset_GetProgramivNV 748 +#define _gloffset_GetTrackMatrixivNV 749 +#define _gloffset_GetVertexAttribPointervNV 750 +#define _gloffset_GetVertexAttribdvNV 751 +#define _gloffset_GetVertexAttribfvNV 752 +#define _gloffset_GetVertexAttribivNV 753 +#define _gloffset_IsProgramNV 754 +#define _gloffset_LoadProgramNV 755 +#define _gloffset_ProgramParameters4dvNV 756 +#define _gloffset_ProgramParameters4fvNV 757 +#define _gloffset_RequestResidentProgramsNV 758 +#define _gloffset_TrackMatrixNV 759 +#define _gloffset_VertexAttrib1dNV 760 +#define _gloffset_VertexAttrib1dvNV 761 +#define _gloffset_VertexAttrib1fNV 762 +#define _gloffset_VertexAttrib1fvNV 763 +#define _gloffset_VertexAttrib1sNV 764 +#define _gloffset_VertexAttrib1svNV 765 +#define _gloffset_VertexAttrib2dNV 766 +#define _gloffset_VertexAttrib2dvNV 767 +#define _gloffset_VertexAttrib2fNV 768 +#define _gloffset_VertexAttrib2fvNV 769 +#define _gloffset_VertexAttrib2sNV 770 +#define _gloffset_VertexAttrib2svNV 771 +#define _gloffset_VertexAttrib3dNV 772 +#define _gloffset_VertexAttrib3dvNV 773 +#define _gloffset_VertexAttrib3fNV 774 +#define _gloffset_VertexAttrib3fvNV 775 +#define _gloffset_VertexAttrib3sNV 776 +#define _gloffset_VertexAttrib3svNV 777 +#define _gloffset_VertexAttrib4dNV 778 +#define _gloffset_VertexAttrib4dvNV 779 +#define _gloffset_VertexAttrib4fNV 780 +#define _gloffset_VertexAttrib4fvNV 781 +#define _gloffset_VertexAttrib4sNV 782 +#define _gloffset_VertexAttrib4svNV 783 +#define _gloffset_VertexAttrib4ubNV 784 +#define _gloffset_VertexAttrib4ubvNV 785 +#define _gloffset_VertexAttribPointerNV 786 +#define _gloffset_VertexAttribs1dvNV 787 +#define _gloffset_VertexAttribs1fvNV 788 +#define _gloffset_VertexAttribs1svNV 789 +#define _gloffset_VertexAttribs2dvNV 790 +#define _gloffset_VertexAttribs2fvNV 791 +#define _gloffset_VertexAttribs2svNV 792 +#define _gloffset_VertexAttribs3dvNV 793 +#define _gloffset_VertexAttribs3fvNV 794 +#define _gloffset_VertexAttribs3svNV 795 +#define _gloffset_VertexAttribs4dvNV 796 +#define _gloffset_VertexAttribs4fvNV 797 +#define _gloffset_VertexAttribs4svNV 798 +#define _gloffset_VertexAttribs4ubvNV 799 +#define _gloffset_GetTexBumpParameterfvATI 800 +#define _gloffset_GetTexBumpParameterivATI 801 +#define _gloffset_TexBumpParameterfvATI 802 +#define _gloffset_TexBumpParameterivATI 803 +#define _gloffset_AlphaFragmentOp1ATI 804 +#define _gloffset_AlphaFragmentOp2ATI 805 +#define _gloffset_AlphaFragmentOp3ATI 806 +#define _gloffset_BeginFragmentShaderATI 807 +#define _gloffset_BindFragmentShaderATI 808 +#define _gloffset_ColorFragmentOp1ATI 809 +#define _gloffset_ColorFragmentOp2ATI 810 +#define _gloffset_ColorFragmentOp3ATI 811 +#define _gloffset_DeleteFragmentShaderATI 812 +#define _gloffset_EndFragmentShaderATI 813 +#define _gloffset_GenFragmentShadersATI 814 +#define _gloffset_PassTexCoordATI 815 +#define _gloffset_SampleMapATI 816 +#define _gloffset_SetFragmentShaderConstantATI 817 +#define _gloffset_PointParameteriNV 818 +#define _gloffset_PointParameterivNV 819 +#define _gloffset_ActiveStencilFaceEXT 820 +#define _gloffset_BindVertexArrayAPPLE 821 +#define _gloffset_DeleteVertexArraysAPPLE 822 +#define _gloffset_GenVertexArraysAPPLE 823 +#define _gloffset_IsVertexArrayAPPLE 824 +#define _gloffset_GetProgramNamedParameterdvNV 825 +#define _gloffset_GetProgramNamedParameterfvNV 826 +#define _gloffset_ProgramNamedParameter4dNV 827 +#define _gloffset_ProgramNamedParameter4dvNV 828 +#define _gloffset_ProgramNamedParameter4fNV 829 +#define _gloffset_ProgramNamedParameter4fvNV 830 +#define _gloffset_PrimitiveRestartIndexNV 831 +#define _gloffset_PrimitiveRestartNV 832 +#define _gloffset_DepthBoundsEXT 833 +#define _gloffset_BlendEquationSeparateEXT 834 +#define _gloffset_BindFramebufferEXT 835 +#define _gloffset_BindRenderbufferEXT 836 +#define _gloffset_CheckFramebufferStatusEXT 837 +#define _gloffset_DeleteFramebuffersEXT 838 +#define _gloffset_DeleteRenderbuffersEXT 839 +#define _gloffset_FramebufferRenderbufferEXT 840 +#define _gloffset_FramebufferTexture1DEXT 841 +#define _gloffset_FramebufferTexture2DEXT 842 +#define _gloffset_FramebufferTexture3DEXT 843 +#define _gloffset_GenFramebuffersEXT 844 +#define _gloffset_GenRenderbuffersEXT 845 +#define _gloffset_GenerateMipmapEXT 846 +#define _gloffset_GetFramebufferAttachmentParameterivEXT 847 +#define _gloffset_GetRenderbufferParameterivEXT 848 +#define _gloffset_IsFramebufferEXT 849 +#define _gloffset_IsRenderbufferEXT 850 +#define _gloffset_RenderbufferStorageEXT 851 +#define _gloffset_BlitFramebufferEXT 852 +#define _gloffset_BufferParameteriAPPLE 853 +#define _gloffset_FlushMappedBufferRangeAPPLE 854 +#define _gloffset_BindFragDataLocationEXT 855 +#define _gloffset_GetFragDataLocationEXT 856 +#define _gloffset_GetUniformuivEXT 857 +#define _gloffset_GetVertexAttribIivEXT 858 +#define _gloffset_GetVertexAttribIuivEXT 859 +#define _gloffset_Uniform1uiEXT 860 +#define _gloffset_Uniform1uivEXT 861 +#define _gloffset_Uniform2uiEXT 862 +#define _gloffset_Uniform2uivEXT 863 +#define _gloffset_Uniform3uiEXT 864 +#define _gloffset_Uniform3uivEXT 865 +#define _gloffset_Uniform4uiEXT 866 +#define _gloffset_Uniform4uivEXT 867 +#define _gloffset_VertexAttribI1iEXT 868 +#define _gloffset_VertexAttribI1ivEXT 869 +#define _gloffset_VertexAttribI1uiEXT 870 +#define _gloffset_VertexAttribI1uivEXT 871 +#define _gloffset_VertexAttribI2iEXT 872 +#define _gloffset_VertexAttribI2ivEXT 873 +#define _gloffset_VertexAttribI2uiEXT 874 +#define _gloffset_VertexAttribI2uivEXT 875 +#define _gloffset_VertexAttribI3iEXT 876 +#define _gloffset_VertexAttribI3ivEXT 877 +#define _gloffset_VertexAttribI3uiEXT 878 +#define _gloffset_VertexAttribI3uivEXT 879 +#define _gloffset_VertexAttribI4bvEXT 880 +#define _gloffset_VertexAttribI4iEXT 881 +#define _gloffset_VertexAttribI4ivEXT 882 +#define _gloffset_VertexAttribI4svEXT 883 +#define _gloffset_VertexAttribI4ubvEXT 884 +#define _gloffset_VertexAttribI4uiEXT 885 +#define _gloffset_VertexAttribI4uivEXT 886 +#define _gloffset_VertexAttribI4usvEXT 887 +#define _gloffset_VertexAttribIPointerEXT 888 +#define _gloffset_FramebufferTextureLayerEXT 889 +#define _gloffset_ColorMaskIndexedEXT 890 +#define _gloffset_DisableIndexedEXT 891 +#define _gloffset_EnableIndexedEXT 892 +#define _gloffset_GetBooleanIndexedvEXT 893 +#define _gloffset_GetIntegerIndexedvEXT 894 +#define _gloffset_IsEnabledIndexedEXT 895 +#define _gloffset_ClearColorIiEXT 896 +#define _gloffset_ClearColorIuiEXT 897 +#define _gloffset_GetTexParameterIivEXT 898 +#define _gloffset_GetTexParameterIuivEXT 899 +#define _gloffset_TexParameterIivEXT 900 +#define _gloffset_TexParameterIuivEXT 901 +#define _gloffset_BeginConditionalRenderNV 902 +#define _gloffset_EndConditionalRenderNV 903 +#define _gloffset_BeginTransformFeedbackEXT 904 +#define _gloffset_BindBufferBaseEXT 905 +#define _gloffset_BindBufferOffsetEXT 906 +#define _gloffset_BindBufferRangeEXT 907 +#define _gloffset_EndTransformFeedbackEXT 908 +#define _gloffset_GetTransformFeedbackVaryingEXT 909 +#define _gloffset_TransformFeedbackVaryingsEXT 910 +#define _gloffset_ProvokingVertexEXT 911 +#define _gloffset_GetTexParameterPointervAPPLE 912 +#define _gloffset_TextureRangeAPPLE 913 +#define _gloffset_GetObjectParameterivAPPLE 914 +#define _gloffset_ObjectPurgeableAPPLE 915 +#define _gloffset_ObjectUnpurgeableAPPLE 916 +#define _gloffset_ActiveProgramEXT 917 +#define _gloffset_CreateShaderProgramEXT 918 +#define _gloffset_UseShaderProgramEXT 919 +#define _gloffset_TextureBarrierNV 920 +#define _gloffset_StencilFuncSeparateATI 921 +#define _gloffset_ProgramEnvParameters4fvEXT 922 +#define _gloffset_ProgramLocalParameters4fvEXT 923 +#define _gloffset_GetQueryObjecti64vEXT 924 +#define _gloffset_GetQueryObjectui64vEXT 925 +#define _gloffset_EGLImageTargetRenderbufferStorageOES 926 +#define _gloffset_EGLImageTargetTexture2DOES 927 #else /* !_GLAPI_USE_REMAP_TABLE */ -#define driDispatchRemapTable_size 500 +#define driDispatchRemapTable_size 520 extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define AttachShader_remap_index 0 @@ -1196,288 +1216,308 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #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 GetGraphicsResetStatusARB_remap_index 218 +#define GetnColorTableARB_remap_index 219 +#define GetnCompressedTexImageARB_remap_index 220 +#define GetnConvolutionFilterARB_remap_index 221 +#define GetnHistogramARB_remap_index 222 +#define GetnMapdvARB_remap_index 223 +#define GetnMapfvARB_remap_index 224 +#define GetnMapivARB_remap_index 225 +#define GetnMinmaxARB_remap_index 226 +#define GetnPixelMapfvARB_remap_index 227 +#define GetnPixelMapuivARB_remap_index 228 +#define GetnPixelMapusvARB_remap_index 229 +#define GetnPolygonStippleARB_remap_index 230 +#define GetnSeparableFilterARB_remap_index 231 +#define GetnTexImageARB_remap_index 232 +#define GetnUniformdvARB_remap_index 233 +#define GetnUniformfvARB_remap_index 234 +#define GetnUniformivARB_remap_index 235 +#define GetnUniformuivARB_remap_index 236 +#define ReadnPixelsARB_remap_index 237 +#define PolygonOffsetEXT_remap_index 238 +#define GetPixelTexGenParameterfvSGIS_remap_index 239 +#define GetPixelTexGenParameterivSGIS_remap_index 240 +#define PixelTexGenParameterfSGIS_remap_index 241 +#define PixelTexGenParameterfvSGIS_remap_index 242 +#define PixelTexGenParameteriSGIS_remap_index 243 +#define PixelTexGenParameterivSGIS_remap_index 244 +#define SampleMaskSGIS_remap_index 245 +#define SamplePatternSGIS_remap_index 246 +#define ColorPointerEXT_remap_index 247 +#define EdgeFlagPointerEXT_remap_index 248 +#define IndexPointerEXT_remap_index 249 +#define NormalPointerEXT_remap_index 250 +#define TexCoordPointerEXT_remap_index 251 +#define VertexPointerEXT_remap_index 252 +#define PointParameterfEXT_remap_index 253 +#define PointParameterfvEXT_remap_index 254 +#define LockArraysEXT_remap_index 255 +#define UnlockArraysEXT_remap_index 256 +#define SecondaryColor3bEXT_remap_index 257 +#define SecondaryColor3bvEXT_remap_index 258 +#define SecondaryColor3dEXT_remap_index 259 +#define SecondaryColor3dvEXT_remap_index 260 +#define SecondaryColor3fEXT_remap_index 261 +#define SecondaryColor3fvEXT_remap_index 262 +#define SecondaryColor3iEXT_remap_index 263 +#define SecondaryColor3ivEXT_remap_index 264 +#define SecondaryColor3sEXT_remap_index 265 +#define SecondaryColor3svEXT_remap_index 266 +#define SecondaryColor3ubEXT_remap_index 267 +#define SecondaryColor3ubvEXT_remap_index 268 +#define SecondaryColor3uiEXT_remap_index 269 +#define SecondaryColor3uivEXT_remap_index 270 +#define SecondaryColor3usEXT_remap_index 271 +#define SecondaryColor3usvEXT_remap_index 272 +#define SecondaryColorPointerEXT_remap_index 273 +#define MultiDrawArraysEXT_remap_index 274 +#define MultiDrawElementsEXT_remap_index 275 +#define FogCoordPointerEXT_remap_index 276 +#define FogCoorddEXT_remap_index 277 +#define FogCoorddvEXT_remap_index 278 +#define FogCoordfEXT_remap_index 279 +#define FogCoordfvEXT_remap_index 280 +#define PixelTexGenSGIX_remap_index 281 +#define BlendFuncSeparateEXT_remap_index 282 +#define FlushVertexArrayRangeNV_remap_index 283 +#define VertexArrayRangeNV_remap_index 284 +#define CombinerInputNV_remap_index 285 +#define CombinerOutputNV_remap_index 286 +#define CombinerParameterfNV_remap_index 287 +#define CombinerParameterfvNV_remap_index 288 +#define CombinerParameteriNV_remap_index 289 +#define CombinerParameterivNV_remap_index 290 +#define FinalCombinerInputNV_remap_index 291 +#define GetCombinerInputParameterfvNV_remap_index 292 +#define GetCombinerInputParameterivNV_remap_index 293 +#define GetCombinerOutputParameterfvNV_remap_index 294 +#define GetCombinerOutputParameterivNV_remap_index 295 +#define GetFinalCombinerInputParameterfvNV_remap_index 296 +#define GetFinalCombinerInputParameterivNV_remap_index 297 +#define ResizeBuffersMESA_remap_index 298 +#define WindowPos2dMESA_remap_index 299 +#define WindowPos2dvMESA_remap_index 300 +#define WindowPos2fMESA_remap_index 301 +#define WindowPos2fvMESA_remap_index 302 +#define WindowPos2iMESA_remap_index 303 +#define WindowPos2ivMESA_remap_index 304 +#define WindowPos2sMESA_remap_index 305 +#define WindowPos2svMESA_remap_index 306 +#define WindowPos3dMESA_remap_index 307 +#define WindowPos3dvMESA_remap_index 308 +#define WindowPos3fMESA_remap_index 309 +#define WindowPos3fvMESA_remap_index 310 +#define WindowPos3iMESA_remap_index 311 +#define WindowPos3ivMESA_remap_index 312 +#define WindowPos3sMESA_remap_index 313 +#define WindowPos3svMESA_remap_index 314 +#define WindowPos4dMESA_remap_index 315 +#define WindowPos4dvMESA_remap_index 316 +#define WindowPos4fMESA_remap_index 317 +#define WindowPos4fvMESA_remap_index 318 +#define WindowPos4iMESA_remap_index 319 +#define WindowPos4ivMESA_remap_index 320 +#define WindowPos4sMESA_remap_index 321 +#define WindowPos4svMESA_remap_index 322 +#define MultiModeDrawArraysIBM_remap_index 323 +#define MultiModeDrawElementsIBM_remap_index 324 +#define DeleteFencesNV_remap_index 325 +#define FinishFenceNV_remap_index 326 +#define GenFencesNV_remap_index 327 +#define GetFenceivNV_remap_index 328 +#define IsFenceNV_remap_index 329 +#define SetFenceNV_remap_index 330 +#define TestFenceNV_remap_index 331 +#define AreProgramsResidentNV_remap_index 332 +#define BindProgramNV_remap_index 333 +#define DeleteProgramsNV_remap_index 334 +#define ExecuteProgramNV_remap_index 335 +#define GenProgramsNV_remap_index 336 +#define GetProgramParameterdvNV_remap_index 337 +#define GetProgramParameterfvNV_remap_index 338 +#define GetProgramStringNV_remap_index 339 +#define GetProgramivNV_remap_index 340 +#define GetTrackMatrixivNV_remap_index 341 +#define GetVertexAttribPointervNV_remap_index 342 +#define GetVertexAttribdvNV_remap_index 343 +#define GetVertexAttribfvNV_remap_index 344 +#define GetVertexAttribivNV_remap_index 345 +#define IsProgramNV_remap_index 346 +#define LoadProgramNV_remap_index 347 +#define ProgramParameters4dvNV_remap_index 348 +#define ProgramParameters4fvNV_remap_index 349 +#define RequestResidentProgramsNV_remap_index 350 +#define TrackMatrixNV_remap_index 351 +#define VertexAttrib1dNV_remap_index 352 +#define VertexAttrib1dvNV_remap_index 353 +#define VertexAttrib1fNV_remap_index 354 +#define VertexAttrib1fvNV_remap_index 355 +#define VertexAttrib1sNV_remap_index 356 +#define VertexAttrib1svNV_remap_index 357 +#define VertexAttrib2dNV_remap_index 358 +#define VertexAttrib2dvNV_remap_index 359 +#define VertexAttrib2fNV_remap_index 360 +#define VertexAttrib2fvNV_remap_index 361 +#define VertexAttrib2sNV_remap_index 362 +#define VertexAttrib2svNV_remap_index 363 +#define VertexAttrib3dNV_remap_index 364 +#define VertexAttrib3dvNV_remap_index 365 +#define VertexAttrib3fNV_remap_index 366 +#define VertexAttrib3fvNV_remap_index 367 +#define VertexAttrib3sNV_remap_index 368 +#define VertexAttrib3svNV_remap_index 369 +#define VertexAttrib4dNV_remap_index 370 +#define VertexAttrib4dvNV_remap_index 371 +#define VertexAttrib4fNV_remap_index 372 +#define VertexAttrib4fvNV_remap_index 373 +#define VertexAttrib4sNV_remap_index 374 +#define VertexAttrib4svNV_remap_index 375 +#define VertexAttrib4ubNV_remap_index 376 +#define VertexAttrib4ubvNV_remap_index 377 +#define VertexAttribPointerNV_remap_index 378 +#define VertexAttribs1dvNV_remap_index 379 +#define VertexAttribs1fvNV_remap_index 380 +#define VertexAttribs1svNV_remap_index 381 +#define VertexAttribs2dvNV_remap_index 382 +#define VertexAttribs2fvNV_remap_index 383 +#define VertexAttribs2svNV_remap_index 384 +#define VertexAttribs3dvNV_remap_index 385 +#define VertexAttribs3fvNV_remap_index 386 +#define VertexAttribs3svNV_remap_index 387 +#define VertexAttribs4dvNV_remap_index 388 +#define VertexAttribs4fvNV_remap_index 389 +#define VertexAttribs4svNV_remap_index 390 +#define VertexAttribs4ubvNV_remap_index 391 +#define GetTexBumpParameterfvATI_remap_index 392 +#define GetTexBumpParameterivATI_remap_index 393 +#define TexBumpParameterfvATI_remap_index 394 +#define TexBumpParameterivATI_remap_index 395 +#define AlphaFragmentOp1ATI_remap_index 396 +#define AlphaFragmentOp2ATI_remap_index 397 +#define AlphaFragmentOp3ATI_remap_index 398 +#define BeginFragmentShaderATI_remap_index 399 +#define BindFragmentShaderATI_remap_index 400 +#define ColorFragmentOp1ATI_remap_index 401 +#define ColorFragmentOp2ATI_remap_index 402 +#define ColorFragmentOp3ATI_remap_index 403 +#define DeleteFragmentShaderATI_remap_index 404 +#define EndFragmentShaderATI_remap_index 405 +#define GenFragmentShadersATI_remap_index 406 +#define PassTexCoordATI_remap_index 407 +#define SampleMapATI_remap_index 408 +#define SetFragmentShaderConstantATI_remap_index 409 +#define PointParameteriNV_remap_index 410 +#define PointParameterivNV_remap_index 411 +#define ActiveStencilFaceEXT_remap_index 412 +#define BindVertexArrayAPPLE_remap_index 413 +#define DeleteVertexArraysAPPLE_remap_index 414 +#define GenVertexArraysAPPLE_remap_index 415 +#define IsVertexArrayAPPLE_remap_index 416 +#define GetProgramNamedParameterdvNV_remap_index 417 +#define GetProgramNamedParameterfvNV_remap_index 418 +#define ProgramNamedParameter4dNV_remap_index 419 +#define ProgramNamedParameter4dvNV_remap_index 420 +#define ProgramNamedParameter4fNV_remap_index 421 +#define ProgramNamedParameter4fvNV_remap_index 422 +#define PrimitiveRestartIndexNV_remap_index 423 +#define PrimitiveRestartNV_remap_index 424 +#define DepthBoundsEXT_remap_index 425 +#define BlendEquationSeparateEXT_remap_index 426 +#define BindFramebufferEXT_remap_index 427 +#define BindRenderbufferEXT_remap_index 428 +#define CheckFramebufferStatusEXT_remap_index 429 +#define DeleteFramebuffersEXT_remap_index 430 +#define DeleteRenderbuffersEXT_remap_index 431 +#define FramebufferRenderbufferEXT_remap_index 432 +#define FramebufferTexture1DEXT_remap_index 433 +#define FramebufferTexture2DEXT_remap_index 434 +#define FramebufferTexture3DEXT_remap_index 435 +#define GenFramebuffersEXT_remap_index 436 +#define GenRenderbuffersEXT_remap_index 437 +#define GenerateMipmapEXT_remap_index 438 +#define GetFramebufferAttachmentParameterivEXT_remap_index 439 +#define GetRenderbufferParameterivEXT_remap_index 440 +#define IsFramebufferEXT_remap_index 441 +#define IsRenderbufferEXT_remap_index 442 +#define RenderbufferStorageEXT_remap_index 443 +#define BlitFramebufferEXT_remap_index 444 +#define BufferParameteriAPPLE_remap_index 445 +#define FlushMappedBufferRangeAPPLE_remap_index 446 +#define BindFragDataLocationEXT_remap_index 447 +#define GetFragDataLocationEXT_remap_index 448 +#define GetUniformuivEXT_remap_index 449 +#define GetVertexAttribIivEXT_remap_index 450 +#define GetVertexAttribIuivEXT_remap_index 451 +#define Uniform1uiEXT_remap_index 452 +#define Uniform1uivEXT_remap_index 453 +#define Uniform2uiEXT_remap_index 454 +#define Uniform2uivEXT_remap_index 455 +#define Uniform3uiEXT_remap_index 456 +#define Uniform3uivEXT_remap_index 457 +#define Uniform4uiEXT_remap_index 458 +#define Uniform4uivEXT_remap_index 459 +#define VertexAttribI1iEXT_remap_index 460 +#define VertexAttribI1ivEXT_remap_index 461 +#define VertexAttribI1uiEXT_remap_index 462 +#define VertexAttribI1uivEXT_remap_index 463 +#define VertexAttribI2iEXT_remap_index 464 +#define VertexAttribI2ivEXT_remap_index 465 +#define VertexAttribI2uiEXT_remap_index 466 +#define VertexAttribI2uivEXT_remap_index 467 +#define VertexAttribI3iEXT_remap_index 468 +#define VertexAttribI3ivEXT_remap_index 469 +#define VertexAttribI3uiEXT_remap_index 470 +#define VertexAttribI3uivEXT_remap_index 471 +#define VertexAttribI4bvEXT_remap_index 472 +#define VertexAttribI4iEXT_remap_index 473 +#define VertexAttribI4ivEXT_remap_index 474 +#define VertexAttribI4svEXT_remap_index 475 +#define VertexAttribI4ubvEXT_remap_index 476 +#define VertexAttribI4uiEXT_remap_index 477 +#define VertexAttribI4uivEXT_remap_index 478 +#define VertexAttribI4usvEXT_remap_index 479 +#define VertexAttribIPointerEXT_remap_index 480 +#define FramebufferTextureLayerEXT_remap_index 481 +#define ColorMaskIndexedEXT_remap_index 482 +#define DisableIndexedEXT_remap_index 483 +#define EnableIndexedEXT_remap_index 484 +#define GetBooleanIndexedvEXT_remap_index 485 +#define GetIntegerIndexedvEXT_remap_index 486 +#define IsEnabledIndexedEXT_remap_index 487 +#define ClearColorIiEXT_remap_index 488 +#define ClearColorIuiEXT_remap_index 489 +#define GetTexParameterIivEXT_remap_index 490 +#define GetTexParameterIuivEXT_remap_index 491 +#define TexParameterIivEXT_remap_index 492 +#define TexParameterIuivEXT_remap_index 493 +#define BeginConditionalRenderNV_remap_index 494 +#define EndConditionalRenderNV_remap_index 495 +#define BeginTransformFeedbackEXT_remap_index 496 +#define BindBufferBaseEXT_remap_index 497 +#define BindBufferOffsetEXT_remap_index 498 +#define BindBufferRangeEXT_remap_index 499 +#define EndTransformFeedbackEXT_remap_index 500 +#define GetTransformFeedbackVaryingEXT_remap_index 501 +#define TransformFeedbackVaryingsEXT_remap_index 502 +#define ProvokingVertexEXT_remap_index 503 +#define GetTexParameterPointervAPPLE_remap_index 504 +#define TextureRangeAPPLE_remap_index 505 +#define GetObjectParameterivAPPLE_remap_index 506 +#define ObjectPurgeableAPPLE_remap_index 507 +#define ObjectUnpurgeableAPPLE_remap_index 508 +#define ActiveProgramEXT_remap_index 509 +#define CreateShaderProgramEXT_remap_index 510 +#define UseShaderProgramEXT_remap_index 511 +#define TextureBarrierNV_remap_index 512 +#define StencilFuncSeparateATI_remap_index 513 +#define ProgramEnvParameters4fvEXT_remap_index 514 +#define ProgramLocalParameters4fvEXT_remap_index 515 +#define GetQueryObjecti64vEXT_remap_index 516 +#define GetQueryObjectui64vEXT_remap_index 517 +#define EGLImageTargetRenderbufferStorageOES_remap_index 518 +#define EGLImageTargetTexture2DOES_remap_index 519 #define _gloffset_AttachShader driDispatchRemapTable[AttachShader_remap_index] #define _gloffset_CreateProgram driDispatchRemapTable[CreateProgram_remap_index] @@ -1697,6 +1737,26 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define _gloffset_GetShaderPrecisionFormat driDispatchRemapTable[GetShaderPrecisionFormat_remap_index] #define _gloffset_ReleaseShaderCompiler driDispatchRemapTable[ReleaseShaderCompiler_remap_index] #define _gloffset_ShaderBinary driDispatchRemapTable[ShaderBinary_remap_index] +#define _gloffset_GetGraphicsResetStatusARB driDispatchRemapTable[GetGraphicsResetStatusARB_remap_index] +#define _gloffset_GetnColorTableARB driDispatchRemapTable[GetnColorTableARB_remap_index] +#define _gloffset_GetnCompressedTexImageARB driDispatchRemapTable[GetnCompressedTexImageARB_remap_index] +#define _gloffset_GetnConvolutionFilterARB driDispatchRemapTable[GetnConvolutionFilterARB_remap_index] +#define _gloffset_GetnHistogramARB driDispatchRemapTable[GetnHistogramARB_remap_index] +#define _gloffset_GetnMapdvARB driDispatchRemapTable[GetnMapdvARB_remap_index] +#define _gloffset_GetnMapfvARB driDispatchRemapTable[GetnMapfvARB_remap_index] +#define _gloffset_GetnMapivARB driDispatchRemapTable[GetnMapivARB_remap_index] +#define _gloffset_GetnMinmaxARB driDispatchRemapTable[GetnMinmaxARB_remap_index] +#define _gloffset_GetnPixelMapfvARB driDispatchRemapTable[GetnPixelMapfvARB_remap_index] +#define _gloffset_GetnPixelMapuivARB driDispatchRemapTable[GetnPixelMapuivARB_remap_index] +#define _gloffset_GetnPixelMapusvARB driDispatchRemapTable[GetnPixelMapusvARB_remap_index] +#define _gloffset_GetnPolygonStippleARB driDispatchRemapTable[GetnPolygonStippleARB_remap_index] +#define _gloffset_GetnSeparableFilterARB driDispatchRemapTable[GetnSeparableFilterARB_remap_index] +#define _gloffset_GetnTexImageARB driDispatchRemapTable[GetnTexImageARB_remap_index] +#define _gloffset_GetnUniformdvARB driDispatchRemapTable[GetnUniformdvARB_remap_index] +#define _gloffset_GetnUniformfvARB driDispatchRemapTable[GetnUniformfvARB_remap_index] +#define _gloffset_GetnUniformivARB driDispatchRemapTable[GetnUniformivARB_remap_index] +#define _gloffset_GetnUniformuivARB driDispatchRemapTable[GetnUniformuivARB_remap_index] +#define _gloffset_ReadnPixelsARB driDispatchRemapTable[ReadnPixelsARB_remap_index] #define _gloffset_PolygonOffsetEXT driDispatchRemapTable[PolygonOffsetEXT_remap_index] #define _gloffset_GetPixelTexGenParameterfvSGIS driDispatchRemapTable[GetPixelTexGenParameterfvSGIS_remap_index] #define _gloffset_GetPixelTexGenParameterivSGIS driDispatchRemapTable[GetPixelTexGenParameterivSGIS_remap_index] @@ -3860,6 +3920,66 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define CALL_ShaderBinary(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *, GLenum, const GLvoid *, GLsizei)), _gloffset_ShaderBinary, parameters) #define GET_ShaderBinary(disp) GET_by_offset(disp, _gloffset_ShaderBinary) #define SET_ShaderBinary(disp, fn) SET_by_offset(disp, _gloffset_ShaderBinary, fn) +#define CALL_GetGraphicsResetStatusARB(disp, parameters) CALL_by_offset(disp, (GLenum (GLAPIENTRYP)(void)), _gloffset_GetGraphicsResetStatusARB, parameters) +#define GET_GetGraphicsResetStatusARB(disp) GET_by_offset(disp, _gloffset_GetGraphicsResetStatusARB) +#define SET_GetGraphicsResetStatusARB(disp, fn) SET_by_offset(disp, _gloffset_GetGraphicsResetStatusARB, fn) +#define CALL_GetnColorTableARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLsizei, GLvoid *)), _gloffset_GetnColorTableARB, parameters) +#define GET_GetnColorTableARB(disp) GET_by_offset(disp, _gloffset_GetnColorTableARB) +#define SET_GetnColorTableARB(disp, fn) SET_by_offset(disp, _gloffset_GetnColorTableARB, fn) +#define CALL_GetnCompressedTexImageARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLsizei, GLvoid *)), _gloffset_GetnCompressedTexImageARB, parameters) +#define GET_GetnCompressedTexImageARB(disp) GET_by_offset(disp, _gloffset_GetnCompressedTexImageARB) +#define SET_GetnCompressedTexImageARB(disp, fn) SET_by_offset(disp, _gloffset_GetnCompressedTexImageARB, fn) +#define CALL_GetnConvolutionFilterARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLsizei, GLvoid *)), _gloffset_GetnConvolutionFilterARB, parameters) +#define GET_GetnConvolutionFilterARB(disp) GET_by_offset(disp, _gloffset_GetnConvolutionFilterARB) +#define SET_GetnConvolutionFilterARB(disp, fn) SET_by_offset(disp, _gloffset_GetnConvolutionFilterARB, fn) +#define CALL_GetnHistogramARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLboolean, GLenum, GLenum, GLsizei, GLvoid *)), _gloffset_GetnHistogramARB, parameters) +#define GET_GetnHistogramARB(disp) GET_by_offset(disp, _gloffset_GetnHistogramARB) +#define SET_GetnHistogramARB(disp, fn) SET_by_offset(disp, _gloffset_GetnHistogramARB, fn) +#define CALL_GetnMapdvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLsizei, GLdouble *)), _gloffset_GetnMapdvARB, parameters) +#define GET_GetnMapdvARB(disp) GET_by_offset(disp, _gloffset_GetnMapdvARB) +#define SET_GetnMapdvARB(disp, fn) SET_by_offset(disp, _gloffset_GetnMapdvARB, fn) +#define CALL_GetnMapfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLsizei, GLfloat *)), _gloffset_GetnMapfvARB, parameters) +#define GET_GetnMapfvARB(disp) GET_by_offset(disp, _gloffset_GetnMapfvARB) +#define SET_GetnMapfvARB(disp, fn) SET_by_offset(disp, _gloffset_GetnMapfvARB, fn) +#define CALL_GetnMapivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLsizei, GLint *)), _gloffset_GetnMapivARB, parameters) +#define GET_GetnMapivARB(disp) GET_by_offset(disp, _gloffset_GetnMapivARB) +#define SET_GetnMapivARB(disp, fn) SET_by_offset(disp, _gloffset_GetnMapivARB, fn) +#define CALL_GetnMinmaxARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLboolean, GLenum, GLenum, GLsizei, GLvoid *)), _gloffset_GetnMinmaxARB, parameters) +#define GET_GetnMinmaxARB(disp) GET_by_offset(disp, _gloffset_GetnMinmaxARB) +#define SET_GetnMinmaxARB(disp, fn) SET_by_offset(disp, _gloffset_GetnMinmaxARB, fn) +#define CALL_GetnPixelMapfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLfloat *)), _gloffset_GetnPixelMapfvARB, parameters) +#define GET_GetnPixelMapfvARB(disp) GET_by_offset(disp, _gloffset_GetnPixelMapfvARB) +#define SET_GetnPixelMapfvARB(disp, fn) SET_by_offset(disp, _gloffset_GetnPixelMapfvARB, fn) +#define CALL_GetnPixelMapuivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLuint *)), _gloffset_GetnPixelMapuivARB, parameters) +#define GET_GetnPixelMapuivARB(disp) GET_by_offset(disp, _gloffset_GetnPixelMapuivARB) +#define SET_GetnPixelMapuivARB(disp, fn) SET_by_offset(disp, _gloffset_GetnPixelMapuivARB, fn) +#define CALL_GetnPixelMapusvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLushort *)), _gloffset_GetnPixelMapusvARB, parameters) +#define GET_GetnPixelMapusvARB(disp) GET_by_offset(disp, _gloffset_GetnPixelMapusvARB) +#define SET_GetnPixelMapusvARB(disp, fn) SET_by_offset(disp, _gloffset_GetnPixelMapusvARB, fn) +#define CALL_GetnPolygonStippleARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLubyte *)), _gloffset_GetnPolygonStippleARB, parameters) +#define GET_GetnPolygonStippleARB(disp) GET_by_offset(disp, _gloffset_GetnPolygonStippleARB) +#define SET_GetnPolygonStippleARB(disp, fn) SET_by_offset(disp, _gloffset_GetnPolygonStippleARB, fn) +#define CALL_GetnSeparableFilterARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLsizei, GLvoid *, GLsizei, GLvoid *, GLvoid *)), _gloffset_GetnSeparableFilterARB, parameters) +#define GET_GetnSeparableFilterARB(disp) GET_by_offset(disp, _gloffset_GetnSeparableFilterARB) +#define SET_GetnSeparableFilterARB(disp, fn) SET_by_offset(disp, _gloffset_GetnSeparableFilterARB, fn) +#define CALL_GetnTexImageARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLenum, GLenum, GLsizei, GLvoid *)), _gloffset_GetnTexImageARB, parameters) +#define GET_GetnTexImageARB(disp) GET_by_offset(disp, _gloffset_GetnTexImageARB) +#define SET_GetnTexImageARB(disp, fn) SET_by_offset(disp, _gloffset_GetnTexImageARB, fn) +#define CALL_GetnUniformdvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLint, GLsizei, GLdouble *)), _gloffset_GetnUniformdvARB, parameters) +#define GET_GetnUniformdvARB(disp) GET_by_offset(disp, _gloffset_GetnUniformdvARB) +#define SET_GetnUniformdvARB(disp, fn) SET_by_offset(disp, _gloffset_GetnUniformdvARB, fn) +#define CALL_GetnUniformfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLint, GLsizei, GLfloat *)), _gloffset_GetnUniformfvARB, parameters) +#define GET_GetnUniformfvARB(disp) GET_by_offset(disp, _gloffset_GetnUniformfvARB) +#define SET_GetnUniformfvARB(disp, fn) SET_by_offset(disp, _gloffset_GetnUniformfvARB, fn) +#define CALL_GetnUniformivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLint, GLsizei, GLint *)), _gloffset_GetnUniformivARB, parameters) +#define GET_GetnUniformivARB(disp) GET_by_offset(disp, _gloffset_GetnUniformivARB) +#define SET_GetnUniformivARB(disp, fn) SET_by_offset(disp, _gloffset_GetnUniformivARB, fn) +#define CALL_GetnUniformuivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLint, GLsizei, GLuint *)), _gloffset_GetnUniformuivARB, parameters) +#define GET_GetnUniformuivARB(disp) GET_by_offset(disp, _gloffset_GetnUniformuivARB) +#define SET_GetnUniformuivARB(disp, fn) SET_by_offset(disp, _gloffset_GetnUniformuivARB, fn) +#define CALL_ReadnPixelsARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLsizei, GLvoid *)), _gloffset_ReadnPixelsARB, parameters) +#define GET_ReadnPixelsARB(disp) GET_by_offset(disp, _gloffset_ReadnPixelsARB) +#define SET_ReadnPixelsARB(disp, fn) SET_by_offset(disp, _gloffset_ReadnPixelsARB, fn) #define CALL_PolygonOffsetEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat)), _gloffset_PolygonOffsetEXT, parameters) #define GET_PolygonOffsetEXT(disp) GET_by_offset(disp, _gloffset_PolygonOffsetEXT) #define SET_PolygonOffsetEXT(disp, fn) SET_by_offset(disp, _gloffset_PolygonOffsetEXT, fn) diff --git a/src/mesa/main/histogram.c b/src/mesa/main/histogram.c index 75bb9259416..44fc1325ceb 100644 --- a/src/mesa/main/histogram.c +++ b/src/mesa/main/histogram.c @@ -44,7 +44,8 @@ static void GLAPIENTRY _mesa_ResetMinmax(GLenum target); static void GLAPIENTRY -_mesa_GetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +_mesa_GetnMinmaxARB(GLenum target, GLboolean reset, GLenum format, + GLenum type, GLsizei bufSize, GLvoid *values) { GET_CURRENT_CONTEXT(ctx); @@ -53,7 +54,16 @@ _mesa_GetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvo static void GLAPIENTRY -_mesa_GetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values) +_mesa_GetMinmax(GLenum target, GLboolean reset, GLenum format, GLenum type, + GLvoid *values) +{ + _mesa_GetnMinmaxARB(target, reset, format, type, INT_MAX, values); +} + + +static void GLAPIENTRY +_mesa_GetnHistogramARB(GLenum target, GLboolean reset, GLenum format, + GLenum type, GLsizei bufSize, GLvoid *values) { GET_CURRENT_CONTEXT(ctx); @@ -62,6 +72,14 @@ _mesa_GetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, G static void GLAPIENTRY +_mesa_GetHistogram(GLenum target, GLboolean reset, GLenum format, GLenum type, + GLvoid *values) +{ + _mesa_GetnHistogramARB(target, reset, format, type, INT_MAX, values); +} + + +static void GLAPIENTRY _mesa_GetHistogramParameterfv(GLenum target, GLenum pname, GLfloat *params) { GET_CURRENT_CONTEXT(ctx); @@ -146,6 +164,10 @@ _mesa_init_histogram_dispatch(struct _glapi_table *disp) SET_Minmax(disp, _mesa_Minmax); SET_ResetHistogram(disp, _mesa_ResetHistogram); SET_ResetMinmax(disp, _mesa_ResetMinmax); + + /* GL_ARB_robustness */ + SET_GetnHistogramARB(disp, _mesa_GetnHistogramARB); + SET_GetnMinmaxARB(disp, _mesa_GetnMinmaxARB); } #endif /* FEATURE_histogram */ diff --git a/src/mesa/main/image.c b/src/mesa/main/image.c index 28841c25102..6d7bc735887 100644 --- a/src/mesa/main/image.c +++ b/src/mesa/main/image.c @@ -82,6 +82,8 @@ _mesa_type_is_packed(GLenum type) case GL_UNSIGNED_SHORT_8_8_MESA: case GL_UNSIGNED_SHORT_8_8_REV_MESA: case GL_UNSIGNED_INT_24_8_EXT: + case GL_UNSIGNED_INT_5_9_9_9_REV: + case GL_UNSIGNED_INT_10F_11F_11F_REV: return GL_TRUE; } @@ -222,6 +224,10 @@ _mesa_sizeof_packed_type( GLenum type ) return sizeof(GLushort); case GL_UNSIGNED_INT_24_8_EXT: return sizeof(GLuint); + case GL_UNSIGNED_INT_5_9_9_9_REV: + return sizeof(GLuint); + case GL_UNSIGNED_INT_10F_11F_11F_REV: + return sizeof(GLuint); default: return -1; } @@ -363,6 +369,16 @@ _mesa_bytes_per_pixel( GLenum format, GLenum type ) return sizeof(GLuint); else return -1; + case GL_UNSIGNED_INT_5_9_9_9_REV: + if (format == GL_RGB) + return sizeof(GLuint); + else + return -1; + case GL_UNSIGNED_INT_10F_11F_11F_REV: + if (format == GL_RGB) + return sizeof(GLuint); + else + return -1; default: return -1; } @@ -458,6 +474,10 @@ _mesa_is_legal_format_and_type(const struct gl_context *ctx, return GL_TRUE; case GL_HALF_FLOAT_ARB: return ctx->Extensions.ARB_half_float_pixel; + case GL_UNSIGNED_INT_5_9_9_9_REV: + return ctx->Extensions.EXT_texture_shared_exponent; + case GL_UNSIGNED_INT_10F_11F_11F_REV: + return ctx->Extensions.EXT_packed_float; default: return GL_FALSE; } @@ -821,6 +841,8 @@ _mesa_is_color_format(GLenum format) case GL_INTENSITY_SNORM: case GL_INTENSITY8_SNORM: case GL_INTENSITY16_SNORM: + case GL_RGB9_E5: + case GL_R11F_G11F_B10F: 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 86a58cc6b43..01e4d20afbf 100644 --- a/src/mesa/main/macros.h +++ b/src/mesa/main/macros.h @@ -669,6 +669,10 @@ do { \ /** Maximum of two values: */ #define MAX2( A, B ) ( (A)>(B) ? (A) : (B) ) +/** Minimum and maximum of three values: */ +#define MIN3( A, B, C ) ((A) < (B) ? MIN2(A, C) : MIN2(B, C)) +#define MAX3( A, B, C ) ((A) > (B) ? MAX2(A, C) : MAX2(B, C)) + /** Dot product of two 2-element vectors */ #define DOT2( a, b ) ( (a)[0]*(b)[0] + (a)[1]*(b)[1] ) diff --git a/src/mesa/main/mipmap.c b/src/mesa/main/mipmap.c index e594160ad9e..e9fcb545a1e 100644 --- a/src/mesa/main/mipmap.c +++ b/src/mesa/main/mipmap.c @@ -34,6 +34,9 @@ #include "teximage.h" #include "texstore.h" #include "image.h" +#include "macros.h" +#include "../../gallium/auxiliary/util/u_format_rgb9e5.h" +#include "../../gallium/auxiliary/util/u_format_r11g11b10f.h" @@ -634,6 +637,75 @@ do_row(GLenum datatype, GLuint comps, GLint srcWidth, } } + else if (datatype == GL_UNSIGNED_INT_2_10_10_10_REV && comps == 4) { + GLuint i, j, k; + const GLuint *rowA = (const GLuint *) srcRowA; + const GLuint *rowB = (const GLuint *) srcRowB; + GLuint *dst = (GLuint *) dstRow; + for (i = j = 0, k = k0; i < (GLuint) dstWidth; + i++, j += colStride, k += colStride) { + const GLint rowAr0 = rowA[j] & 0x3ff; + const GLint rowAr1 = rowA[k] & 0x3ff; + const GLint rowBr0 = rowB[j] & 0x3ff; + const GLint rowBr1 = rowB[k] & 0x3ff; + const GLint rowAg0 = (rowA[j] >> 10) & 0x3ff; + const GLint rowAg1 = (rowA[k] >> 10) & 0x3ff; + const GLint rowBg0 = (rowB[j] >> 10) & 0x3ff; + const GLint rowBg1 = (rowB[k] >> 10) & 0x3ff; + const GLint rowAb0 = (rowA[j] >> 20) & 0x3ff; + const GLint rowAb1 = (rowA[k] >> 20) & 0x3ff; + const GLint rowBb0 = (rowB[j] >> 20) & 0x3ff; + const GLint rowBb1 = (rowB[k] >> 20) & 0x3ff; + const GLint rowAa0 = (rowA[j] >> 30) & 0x3; + const GLint rowAa1 = (rowA[k] >> 30) & 0x3; + const GLint rowBa0 = (rowB[j] >> 30) & 0x3; + const GLint rowBa1 = (rowB[k] >> 30) & 0x3; + const GLint red = (rowAr0 + rowAr1 + rowBr0 + rowBr1) >> 2; + const GLint green = (rowAg0 + rowAg1 + rowBg0 + rowBg1) >> 2; + const GLint blue = (rowAb0 + rowAb1 + rowBb0 + rowBb1) >> 2; + const GLint alpha = (rowAa0 + rowAa1 + rowBa0 + rowBa1) >> 2; + dst[i] = (alpha << 30) | (blue << 20) | (green << 10) | red; + } + } + + else if (datatype == GL_UNSIGNED_INT_5_9_9_9_REV && comps == 3) { + GLuint i, j, k; + const GLuint *rowA = (const GLuint*) srcRowA; + const GLuint *rowB = (const GLuint*) srcRowB; + GLuint *dst = (GLuint*)dstRow; + GLfloat res[3], rowAj[3], rowBj[3], rowAk[3], rowBk[3]; + for (i = j = 0, k = k0; i < (GLuint) dstWidth; + i++, j += colStride, k += colStride) { + rgb9e5_to_float3(rowA[j], rowAj); + rgb9e5_to_float3(rowB[j], rowBj); + rgb9e5_to_float3(rowA[k], rowAk); + rgb9e5_to_float3(rowB[k], rowBk); + res[0] = (rowAj[0] + rowAk[0] + rowBj[0] + rowBk[0]) * 0.25F; + res[1] = (rowAj[1] + rowAk[1] + rowBj[1] + rowBk[1]) * 0.25F; + res[2] = (rowAj[2] + rowAk[2] + rowBj[2] + rowBk[2]) * 0.25F; + dst[i] = float3_to_rgb9e5(res); + } + } + + else if (datatype == GL_UNSIGNED_INT_10F_11F_11F_REV && comps == 3) { + GLuint i, j, k; + const GLuint *rowA = (const GLuint*) srcRowA; + const GLuint *rowB = (const GLuint*) srcRowB; + GLuint *dst = (GLuint*)dstRow; + GLfloat res[3], rowAj[3], rowBj[3], rowAk[3], rowBk[3]; + for (i = j = 0, k = k0; i < (GLuint) dstWidth; + i++, j += colStride, k += colStride) { + r11g11b10f_to_float3(rowA[j], rowAj); + r11g11b10f_to_float3(rowB[j], rowBj); + r11g11b10f_to_float3(rowA[k], rowAk); + r11g11b10f_to_float3(rowB[k], rowBk); + res[0] = (rowAj[0] + rowAk[0] + rowBj[0] + rowBk[0]) * 0.25F; + res[1] = (rowAj[1] + rowAk[1] + rowBj[1] + rowBk[1]) * 0.25F; + res[2] = (rowAj[2] + rowAk[2] + rowBj[2] + rowBk[2]) * 0.25F; + dst[i] = float3_to_r11g11b10f(res); + } + } + else { _mesa_problem(NULL, "bad format in do_row()"); } @@ -1165,6 +1237,110 @@ do_row_3D(GLenum datatype, GLuint comps, GLint srcWidth, dst[i] = (g << 4) | r; } } + else if ((datatype == GL_UNSIGNED_INT_2_10_10_10_REV) && (comps == 4)) { + DECLARE_ROW_POINTERS0(GLuint); + + for (i = j = 0, k = k0; i < (GLuint) dstWidth; + i++, j += colStride, k += colStride) { + const GLint rowAr0 = rowA[j] & 0x3ff; + const GLint rowAr1 = rowA[k] & 0x3ff; + const GLint rowBr0 = rowB[j] & 0x3ff; + const GLint rowBr1 = rowB[k] & 0x3ff; + const GLint rowCr0 = rowC[j] & 0x3ff; + const GLint rowCr1 = rowC[k] & 0x3ff; + const GLint rowDr0 = rowD[j] & 0x3ff; + const GLint rowDr1 = rowD[k] & 0x3ff; + const GLint rowAg0 = (rowA[j] >> 10) & 0x3ff; + const GLint rowAg1 = (rowA[k] >> 10) & 0x3ff; + const GLint rowBg0 = (rowB[j] >> 10) & 0x3ff; + const GLint rowBg1 = (rowB[k] >> 10) & 0x3ff; + const GLint rowCg0 = (rowC[j] >> 10) & 0x3ff; + const GLint rowCg1 = (rowC[k] >> 10) & 0x3ff; + const GLint rowDg0 = (rowD[j] >> 10) & 0x3ff; + const GLint rowDg1 = (rowD[k] >> 10) & 0x3ff; + const GLint rowAb0 = (rowA[j] >> 20) & 0x3ff; + const GLint rowAb1 = (rowA[k] >> 20) & 0x3ff; + const GLint rowBb0 = (rowB[j] >> 20) & 0x3ff; + const GLint rowBb1 = (rowB[k] >> 20) & 0x3ff; + const GLint rowCb0 = (rowC[j] >> 20) & 0x3ff; + const GLint rowCb1 = (rowC[k] >> 20) & 0x3ff; + const GLint rowDb0 = (rowD[j] >> 20) & 0x3ff; + const GLint rowDb1 = (rowD[k] >> 20) & 0x3ff; + const GLint rowAa0 = (rowA[j] >> 30) & 0x3; + const GLint rowAa1 = (rowA[k] >> 30) & 0x3; + const GLint rowBa0 = (rowB[j] >> 30) & 0x3; + const GLint rowBa1 = (rowB[k] >> 30) & 0x3; + const GLint rowCa0 = (rowC[j] >> 30) & 0x3; + const GLint rowCa1 = (rowC[k] >> 30) & 0x3; + const GLint rowDa0 = (rowD[j] >> 30) & 0x3; + const GLint rowDa1 = (rowD[k] >> 30) & 0x3; + const GLint r = FILTER_SUM_3D(rowAr0, rowAr1, rowBr0, rowBr1, + rowCr0, rowCr1, rowDr0, rowDr1); + const GLint g = FILTER_SUM_3D(rowAg0, rowAg1, rowBg0, rowBg1, + rowCg0, rowCg1, rowDg0, rowDg1); + const GLint b = FILTER_SUM_3D(rowAb0, rowAb1, rowBb0, rowBb1, + rowCb0, rowCb1, rowDb0, rowDb1); + const GLint a = FILTER_SUM_3D(rowAa0, rowAa1, rowBa0, rowBa1, + rowCa0, rowCa1, rowDa0, rowDa1); + + dst[i] = (a << 30) | (b << 20) | (g << 10) | r; + } + } + + else if (datatype == GL_UNSIGNED_INT_5_9_9_9_REV && comps == 3) { + DECLARE_ROW_POINTERS0(GLuint); + + GLfloat res[3]; + GLfloat rowAj[3], rowBj[3], rowCj[3], rowDj[3]; + GLfloat rowAk[3], rowBk[3], rowCk[3], rowDk[3]; + + for (i = j = 0, k = k0; i < (GLuint) dstWidth; + i++, j += colStride, k += colStride) { + rgb9e5_to_float3(rowA[j], rowAj); + rgb9e5_to_float3(rowB[j], rowBj); + rgb9e5_to_float3(rowC[j], rowCj); + rgb9e5_to_float3(rowD[j], rowDj); + rgb9e5_to_float3(rowA[k], rowAk); + rgb9e5_to_float3(rowB[k], rowBk); + rgb9e5_to_float3(rowC[k], rowCk); + rgb9e5_to_float3(rowD[k], rowDk); + res[0] = (rowAj[0] + rowAk[0] + rowBj[0] + rowBk[0] + + rowCj[0] + rowCk[0] + rowDj[0] + rowDk[0]) * 0.125F; + res[1] = (rowAj[1] + rowAk[1] + rowBj[1] + rowBk[1] + + rowCj[1] + rowCk[1] + rowDj[1] + rowDk[1]) * 0.125F; + res[2] = (rowAj[2] + rowAk[2] + rowBj[2] + rowBk[2] + + rowCj[2] + rowCk[2] + rowDj[2] + rowDk[2]) * 0.125F; + dst[i] = float3_to_rgb9e5(res); + } + } + + else if (datatype == GL_UNSIGNED_INT_10F_11F_11F_REV && comps == 3) { + DECLARE_ROW_POINTERS0(GLuint); + + GLfloat res[3]; + GLfloat rowAj[3], rowBj[3], rowCj[3], rowDj[3]; + GLfloat rowAk[3], rowBk[3], rowCk[3], rowDk[3]; + + for (i = j = 0, k = k0; i < (GLuint) dstWidth; + i++, j += colStride, k += colStride) { + r11g11b10f_to_float3(rowA[j], rowAj); + r11g11b10f_to_float3(rowB[j], rowBj); + r11g11b10f_to_float3(rowC[j], rowCj); + r11g11b10f_to_float3(rowD[j], rowDj); + r11g11b10f_to_float3(rowA[k], rowAk); + r11g11b10f_to_float3(rowB[k], rowBk); + r11g11b10f_to_float3(rowC[k], rowCk); + r11g11b10f_to_float3(rowD[k], rowDk); + res[0] = (rowAj[0] + rowAk[0] + rowBj[0] + rowBk[0] + + rowCj[0] + rowCk[0] + rowDj[0] + rowDk[0]) * 0.125F; + res[1] = (rowAj[1] + rowAk[1] + rowBj[1] + rowBk[1] + + rowCj[1] + rowCk[1] + rowDj[1] + rowDk[1]) * 0.125F; + res[2] = (rowAj[2] + rowAk[2] + rowBj[2] + rowBk[2] + + rowCj[2] + rowCk[2] + rowDj[2] + rowDk[2]) * 0.125F; + dst[i] = float3_to_r11g11b10f(res); + } + } + else { _mesa_problem(NULL, "bad format in do_row()"); } @@ -1896,7 +2072,6 @@ _mesa_generate_mipmap(struct gl_context *ctx, GLenum target, const GLenum srcFormat = _mesa_get_format_base_format(convertFormat); GLint dstRowStride = _mesa_format_row_stride(dstImage->TexFormat, dstWidth); - ASSERT(srcFormat == GL_RGB || srcFormat == GL_RGBA); _mesa_texstore(ctx, 2, dstImage->_BaseFormat, dstImage->TexFormat, diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 160ae9d2622..29c8cfd2363 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -376,7 +376,15 @@ typedef enum { FRAG_RESULT_DEPTH = 0, FRAG_RESULT_STENCIL = 1, + /* If a single color should be written to all render targets, this + * register is written. No FRAG_RESULT_DATAn will be written. + */ FRAG_RESULT_COLOR = 2, + + /* FRAG_RESULT_DATAn are the per-render-target (GLSL gl_FragData[n] + * or ARB_fragment_program fragment.color[n]) color results. If + * any are written, FRAG_RESULT_COLOR will not be written. + */ FRAG_RESULT_DATA0 = 3, FRAG_RESULT_MAX = (FRAG_RESULT_DATA0 + MAX_DRAW_BUFFERS) } gl_frag_result; @@ -1331,6 +1339,7 @@ struct gl_sampler_object GLenum CompareFunc; /**< GL_ARB_shadow */ GLfloat CompareFailValue; /**< GL_ARB_shadow_ambient */ GLenum sRGBDecode; /**< GL_DECODE_EXT or GL_SKIP_DECODE_EXT */ + GLboolean CubeMapSeamless; /**< GL_AMD_seamless_cubemap_per_texture */ /* deprecated sampler state */ GLenum DepthMode; /**< GL_ARB_depth_texture */ @@ -2738,6 +2747,9 @@ struct gl_constants /* GL_EXT_framebuffer_sRGB */ GLboolean sRGBCapable; /* can enable sRGB blend/update on FBOs */ + + /* GL_ARB_robustness */ + GLenum ResetStrategy; }; @@ -2874,6 +2886,7 @@ struct gl_extensions GLboolean OES_standard_derivatives; /* vendor extensions */ GLboolean AMD_conservative_depth; + GLboolean AMD_seamless_cubemap_per_texture; GLboolean APPLE_client_storage; GLboolean APPLE_packed_pixels; GLboolean APPLE_vertex_array_object; @@ -3297,6 +3310,9 @@ struct gl_context GLenum ErrorValue; /**< Last error code */ + /* GL_ARB_robustness */ + GLenum ResetStatus; + /** * Recognize and silence repeated error debug messages in buggy apps. */ diff --git a/src/mesa/main/pack.c b/src/mesa/main/pack.c index 4bb0a90045e..d6470e351b8 100644 --- a/src/mesa/main/pack.c +++ b/src/mesa/main/pack.c @@ -38,6 +38,8 @@ #include "pack.h" #include "pixeltransfer.h" #include "imports.h" +#include "../../gallium/auxiliary/util/u_format_rgb9e5.h" +#include "../../gallium/auxiliary/util/u_format_r11g11b10f.h" /** @@ -1893,6 +1895,22 @@ _mesa_pack_rgba_span_float(struct gl_context *ctx, GLuint n, GLfloat rgba[][4], } } break; + case GL_UNSIGNED_INT_5_9_9_9_REV: + { + GLuint *dst = (GLuint *) dstAddr; + for (i = 0; i < n; i++) { + dst[i] = float3_to_rgb9e5(rgba[i]); + } + } + break; + case GL_UNSIGNED_INT_10F_11F_11F_REV: + { + GLuint *dst = (GLuint *) dstAddr; + for (i = 0; i < n; i++) { + dst[i] = float3_to_r11g11b10f(rgba[i]); + } + } + break; default: _mesa_problem(ctx, "bad type in _mesa_pack_rgba_span_float"); return; @@ -2331,7 +2349,9 @@ extract_float_rgba(GLuint n, GLfloat rgba[][4], srcType == GL_UNSIGNED_INT_8_8_8_8 || srcType == GL_UNSIGNED_INT_8_8_8_8_REV || srcType == GL_UNSIGNED_INT_10_10_10_2 || - srcType == GL_UNSIGNED_INT_2_10_10_10_REV); + srcType == GL_UNSIGNED_INT_2_10_10_10_REV || + srcType == GL_UNSIGNED_INT_5_9_9_9_REV || + srcType == GL_UNSIGNED_INT_10F_11F_11F_REV); get_component_mapping(srcFormat, &rSrc, &gSrc, &bSrc, &aSrc, @@ -2801,6 +2821,62 @@ extract_float_rgba(GLuint n, GLfloat rgba[][4], } } break; + case GL_UNSIGNED_INT_5_9_9_9_REV: + if (swapBytes) { + const GLuint *uisrc = (const GLuint *) src; + GLuint i; + GLfloat f[3]; + for (i = 0; i < n; i ++) { + GLuint p = uisrc[i]; + SWAP4BYTE(p); + rgb9e5_to_float3(p, f); + rgba[i][rDst] = f[0]; + rgba[i][gDst] = f[1]; + rgba[i][bDst] = f[2]; + rgba[i][aDst] = 1.0F; + } + } + else { + const GLuint *uisrc = (const GLuint *) src; + GLuint i; + GLfloat f[3]; + for (i = 0; i < n; i ++) { + rgb9e5_to_float3(uisrc[i], f); + rgba[i][rDst] = f[0]; + rgba[i][gDst] = f[1]; + rgba[i][bDst] = f[2]; + rgba[i][aDst] = 1.0F; + } + } + break; + case GL_UNSIGNED_INT_10F_11F_11F_REV: + if (swapBytes) { + const GLuint *uisrc = (const GLuint *) src; + GLuint i; + GLfloat f[3]; + for (i = 0; i < n; i ++) { + GLuint p = uisrc[i]; + SWAP4BYTE(p); + r11g11b10f_to_float3(p, f); + rgba[i][rDst] = f[0]; + rgba[i][gDst] = f[1]; + rgba[i][bDst] = f[2]; + rgba[i][aDst] = 1.0F; + } + } + else { + const GLuint *uisrc = (const GLuint *) src; + GLuint i; + GLfloat f[3]; + for (i = 0; i < n; i ++) { + r11g11b10f_to_float3(uisrc[i], f); + rgba[i][rDst] = f[0]; + rgba[i][gDst] = f[1]; + rgba[i][bDst] = f[2]; + rgba[i][aDst] = 1.0F; + } + } + break; default: _mesa_problem(NULL, "bad srcType in extract float data"); break; @@ -2856,7 +2932,6 @@ extract_uint_rgba(GLuint n, GLuint rgba[][4], GLint rSrc, gSrc, bSrc, aSrc; GLint stride; GLint rDst, bDst, gDst, aDst; - GLboolean intFormat; ASSERT(srcFormat == GL_RED || srcFormat == GL_GREEN || @@ -2903,7 +2978,9 @@ extract_uint_rgba(GLuint n, GLuint rgba[][4], srcType == GL_UNSIGNED_INT_8_8_8_8 || srcType == GL_UNSIGNED_INT_8_8_8_8_REV || srcType == GL_UNSIGNED_INT_10_10_10_2 || - srcType == GL_UNSIGNED_INT_2_10_10_10_REV); + srcType == GL_UNSIGNED_INT_2_10_10_10_REV || + srcType == GL_UNSIGNED_INT_5_9_9_9_REV || + srcType == GL_UNSIGNED_INT_10F_11F_11F_REV); get_component_mapping(srcFormat, &rSrc, &gSrc, &bSrc, &aSrc, @@ -2911,8 +2988,6 @@ extract_uint_rgba(GLuint n, GLuint rgba[][4], stride = _mesa_components_in_format(srcFormat); - intFormat = _mesa_is_integer_format(srcFormat); - #define PROCESS(SRC_INDEX, DST_INDEX, DEFAULT, TYPE, CONVERSION) \ if ((SRC_INDEX) < 0) { \ GLuint i; \ @@ -3267,6 +3342,64 @@ extract_uint_rgba(GLuint n, GLuint rgba[][4], } } break; + case GL_UNSIGNED_INT_5_9_9_9_REV: + if (swapBytes) { + const GLuint *uisrc = (const GLuint *) src; + GLuint i; + float f[3]; + for (i = 0; i < n; i ++) { + GLuint p = uisrc[i]; + SWAP4BYTE(p); + rgb9e5_to_float3(p, f); + rgba[i][rDst] = clamp_float_to_uint(f[0]); + rgba[i][gDst] = clamp_float_to_uint(f[1]); + rgba[i][bDst] = clamp_float_to_uint(f[2]); + rgba[i][aDst] = 1; + } + } + else { + const GLuint *uisrc = (const GLuint *) src; + GLuint i; + float f[3]; + for (i = 0; i < n; i ++) { + GLuint p = uisrc[i]; + rgb9e5_to_float3(p, f); + rgba[i][rDst] = clamp_float_to_uint(f[0]); + rgba[i][gDst] = clamp_float_to_uint(f[1]); + rgba[i][bDst] = clamp_float_to_uint(f[2]); + rgba[i][aDst] = 1; + } + } + break; + case GL_UNSIGNED_INT_10F_11F_11F_REV: + if (swapBytes) { + const GLuint *uisrc = (const GLuint *) src; + GLuint i; + float f[3]; + for (i = 0; i < n; i ++) { + GLuint p = uisrc[i]; + SWAP4BYTE(p); + r11g11b10f_to_float3(p, f); + rgba[i][rDst] = clamp_float_to_uint(f[0]); + rgba[i][gDst] = clamp_float_to_uint(f[1]); + rgba[i][bDst] = clamp_float_to_uint(f[2]); + rgba[i][aDst] = 1; + } + } + else { + const GLuint *uisrc = (const GLuint *) src; + GLuint i; + float f[3]; + for (i = 0; i < n; i ++) { + GLuint p = uisrc[i]; + r11g11b10f_to_float3(p, f); + rgba[i][rDst] = clamp_float_to_uint(f[0]); + rgba[i][gDst] = clamp_float_to_uint(f[1]); + rgba[i][bDst] = clamp_float_to_uint(f[2]); + rgba[i][aDst] = 1; + } + } + break; default: _mesa_problem(NULL, "bad srcType in extract uint data"); break; @@ -3346,7 +3479,9 @@ _mesa_unpack_color_span_chan( struct gl_context *ctx, srcType == GL_UNSIGNED_INT_8_8_8_8 || srcType == GL_UNSIGNED_INT_8_8_8_8_REV || srcType == GL_UNSIGNED_INT_10_10_10_2 || - srcType == GL_UNSIGNED_INT_2_10_10_10_REV); + srcType == GL_UNSIGNED_INT_2_10_10_10_REV || + srcType == GL_UNSIGNED_INT_5_9_9_9_REV || + srcType == GL_UNSIGNED_INT_10F_11F_11F_REV); /* Try simple cases first */ if (transferOps == 0) { @@ -3668,7 +3803,9 @@ _mesa_unpack_color_span_float( struct gl_context *ctx, srcType == GL_UNSIGNED_INT_8_8_8_8 || srcType == GL_UNSIGNED_INT_8_8_8_8_REV || srcType == GL_UNSIGNED_INT_10_10_10_2 || - srcType == GL_UNSIGNED_INT_2_10_10_10_REV); + srcType == GL_UNSIGNED_INT_2_10_10_10_REV || + srcType == GL_UNSIGNED_INT_5_9_9_9_REV || + srcType == GL_UNSIGNED_INT_10F_11F_11F_REV); /* general solution, no special cases, yet */ { @@ -3874,7 +4011,9 @@ _mesa_unpack_color_span_uint(struct gl_context *ctx, srcType == GL_UNSIGNED_INT_8_8_8_8 || srcType == GL_UNSIGNED_INT_8_8_8_8_REV || srcType == GL_UNSIGNED_INT_10_10_10_2 || - srcType == GL_UNSIGNED_INT_2_10_10_10_REV); + srcType == GL_UNSIGNED_INT_2_10_10_10_REV || + srcType == GL_UNSIGNED_INT_5_9_9_9_REV || + srcType == GL_UNSIGNED_INT_10F_11F_11F_REV); /* Extract image data as uint[4] pixels */ diff --git a/src/mesa/main/pbo.c b/src/mesa/main/pbo.c index 56b26a954bd..15e0480e9f1 100644 --- a/src/mesa/main/pbo.c +++ b/src/mesa/main/pbo.c @@ -43,7 +43,7 @@ * When we're about to read pixel data out of a PBO (via glDrawPixels, * glTexImage, etc) or write data into a PBO (via glReadPixels, * glGetTexImage, etc) we call this function to check that we're not - * going to read out of bounds. + * going to read/write out of bounds. * * XXX This would also be a convenient time to check that the PBO isn't * currently mapped. Whoever calls this function should check for that. @@ -56,43 +56,52 @@ * \param depth depth of image to read/write * \param format format of image to read/write * \param type datatype of image to read/write + * \param clientMemSize the maximum number of bytes to read/write * \param ptr the user-provided pointer/offset - * \return GL_TRUE if the PBO access is OK, GL_FALSE if the access would + * \return GL_TRUE if the buffer access is OK, GL_FALSE if the access would * go out of bounds. */ GLboolean _mesa_validate_pbo_access(GLuint dimensions, const struct gl_pixelstore_attrib *pack, GLsizei width, GLsizei height, GLsizei depth, - GLenum format, GLenum type, const GLvoid *ptr) + GLenum format, GLenum type, GLsizei clientMemSize, + const GLvoid *ptr) { - GLvoid *start, *end; + const GLvoid *start, *end, *offset; const GLubyte *sizeAddr; /* buffer size, cast to a pointer */ - if (!_mesa_is_bufferobj(pack->BufferObj)) - return GL_TRUE; /* no PBO, OK */ + /* If no PBO is bound, 'ptr' is a pointer to client memory containing + 'clientMemSize' bytes. + If a PBO is bound, 'ptr' is an offset into the bound PBO. + In that case 'clientMemSize' is ignored: we just use the PBO's size. + */ + if (!_mesa_is_bufferobj(pack->BufferObj)) { + offset = 0; + sizeAddr = ((const GLubyte *) 0) + clientMemSize; + } else { + offset = ptr; + sizeAddr = ((const GLubyte *) 0) + pack->BufferObj->Size; + } - if (pack->BufferObj->Size == 0) + if (sizeAddr == 0) /* no buffer! */ return GL_FALSE; - /* get address of first pixel we'll read */ - start = _mesa_image_address(dimensions, pack, ptr, width, height, + /* get the offset to the first pixel we'll read/write */ + start = _mesa_image_address(dimensions, pack, offset, width, height, 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); - - - sizeAddr = ((const GLubyte *) 0) + pack->BufferObj->Size; + /* get the offset to just past the last pixel we'll read/write */ + end = _mesa_image_address(dimensions, pack, offset, width, height, + format, type, depth-1, height-1, width); if ((const GLubyte *) start > sizeAddr) { /* This will catch negative values / wrap-around */ return GL_FALSE; } if ((const GLubyte *) end > sizeAddr) { - /* Image read goes beyond end of buffer */ + /* Image read/write goes beyond end of buffer */ return GL_FALSE; } @@ -146,24 +155,30 @@ _mesa_map_pbo_source(struct gl_context *ctx, */ const GLvoid * _mesa_map_validate_pbo_source(struct gl_context *ctx, - GLuint dimensions, - const struct gl_pixelstore_attrib *unpack, - GLsizei width, GLsizei height, GLsizei depth, - GLenum format, GLenum type, const GLvoid *ptr, - const char *where) + GLuint dimensions, + const struct gl_pixelstore_attrib *unpack, + GLsizei width, GLsizei height, GLsizei depth, + GLenum format, GLenum type, GLsizei clientMemSize, + const GLvoid *ptr, const char *where) { ASSERT(dimensions == 1 || dimensions == 2 || dimensions == 3); - if (!_mesa_is_bufferobj(unpack->BufferObj)) { - /* non-PBO access: no validation to be done */ - return ptr; + if (!_mesa_validate_pbo_access(dimensions, unpack, width, height, depth, + format, type, clientMemSize, ptr)) { + if (_mesa_is_bufferobj(unpack->BufferObj)) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "%s(out of bounds PBO access)", where); + } else { + _mesa_error(ctx, GL_INVALID_OPERATION, + "%s(out of bounds access: bufSize (%d) is too small)", + where, clientMemSize); + } + return NULL; } - if (!_mesa_validate_pbo_access(dimensions, unpack, - width, height, depth, format, type, ptr)) { - _mesa_error(ctx, GL_INVALID_OPERATION, - "%s(out of bounds PBO access)", where); - return NULL; + if (!_mesa_is_bufferobj(unpack->BufferObj)) { + /* non-PBO access: no further validation to be done */ + return ptr; } if (_mesa_bufferobj_mapped(unpack->BufferObj)) { @@ -236,24 +251,30 @@ _mesa_map_pbo_dest(struct gl_context *ctx, */ GLvoid * _mesa_map_validate_pbo_dest(struct gl_context *ctx, - GLuint dimensions, - const struct gl_pixelstore_attrib *unpack, - GLsizei width, GLsizei height, GLsizei depth, - GLenum format, GLenum type, GLvoid *ptr, - const char *where) + GLuint dimensions, + const struct gl_pixelstore_attrib *unpack, + GLsizei width, GLsizei height, GLsizei depth, + GLenum format, GLenum type, GLsizei clientMemSize, + GLvoid *ptr, const char *where) { ASSERT(dimensions == 1 || dimensions == 2 || dimensions == 3); - if (!_mesa_is_bufferobj(unpack->BufferObj)) { - /* non-PBO access: no validation to be done */ - return ptr; + if (!_mesa_validate_pbo_access(dimensions, unpack, width, height, depth, + format, type, clientMemSize, ptr)) { + if (_mesa_is_bufferobj(unpack->BufferObj)) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "%s(out of bounds PBO access)", where); + } else { + _mesa_error(ctx, GL_INVALID_OPERATION, + "%s(out of bounds access: bufSize (%d) is too small)", + where, clientMemSize); + } + return NULL; } - if (!_mesa_validate_pbo_access(dimensions, unpack, - width, height, depth, format, type, ptr)) { - _mesa_error(ctx, GL_INVALID_OPERATION, - "%s(out of bounds PBO access)", where); - return NULL; + if (!_mesa_is_bufferobj(unpack->BufferObj)) { + /* non-PBO access: no further validation to be done */ + return ptr; } if (_mesa_bufferobj_mapped(unpack->BufferObj)) { @@ -281,7 +302,6 @@ _mesa_unmap_pbo_dest(struct gl_context *ctx, } - /** * Check if an unpack PBO is active prior to fetching a texture image. * If so, do bounds checking and map the buffer into main memory. @@ -302,7 +322,7 @@ _mesa_validate_pbo_teximage(struct gl_context *ctx, GLuint dimensions, return pixels; } if (!_mesa_validate_pbo_access(dimensions, unpack, width, height, depth, - format, type, pixels)) { + format, type, INT_MAX, pixels)) { _mesa_error(ctx, GL_INVALID_OPERATION, funcName, "(invalid PBO access)"); return NULL; } diff --git a/src/mesa/main/pbo.h b/src/mesa/main/pbo.h index 0cddd72ba7f..00a6e617f22 100644 --- a/src/mesa/main/pbo.h +++ b/src/mesa/main/pbo.h @@ -34,7 +34,8 @@ extern GLboolean _mesa_validate_pbo_access(GLuint dimensions, const struct gl_pixelstore_attrib *pack, GLsizei width, GLsizei height, GLsizei depth, - GLenum format, GLenum type, const GLvoid *ptr); + GLenum format, GLenum type, GLsizei clientMemSize, + const GLvoid *ptr); extern const GLvoid * _mesa_map_pbo_source(struct gl_context *ctx, @@ -46,8 +47,8 @@ _mesa_map_validate_pbo_source(struct gl_context *ctx, GLuint dimensions, const struct gl_pixelstore_attrib *unpack, GLsizei width, GLsizei height, GLsizei depth, - GLenum format, GLenum type, const GLvoid *ptr, - const char *where); + GLenum format, GLenum type, GLsizei clientMemSize, + const GLvoid *ptr, const char *where); extern void _mesa_unmap_pbo_source(struct gl_context *ctx, @@ -63,8 +64,8 @@ _mesa_map_validate_pbo_dest(struct gl_context *ctx, GLuint dimensions, const struct gl_pixelstore_attrib *unpack, GLsizei width, GLsizei height, GLsizei depth, - GLenum format, GLenum type, GLvoid *ptr, - const char *where); + GLenum format, GLenum type, GLsizei clientMemSize, + GLvoid *ptr, const char *where); extern void _mesa_unmap_pbo_dest(struct gl_context *ctx, diff --git a/src/mesa/main/pixel.c b/src/mesa/main/pixel.c index da99c9b6f35..775746270d1 100644 --- a/src/mesa/main/pixel.c +++ b/src/mesa/main/pixel.c @@ -145,8 +145,9 @@ store_pixelmap(struct gl_context *ctx, GLenum map, GLsizei mapsize, * Convenience wrapper for _mesa_validate_pbo_access() for gl[Get]PixelMap(). */ static GLboolean -validate_pbo_access(struct gl_context *ctx, struct gl_pixelstore_attrib *pack, - GLsizei mapsize, GLenum format, GLenum type, +validate_pbo_access(struct gl_context *ctx, + struct gl_pixelstore_attrib *pack, GLsizei mapsize, + GLenum format, GLenum type, GLsizei clientMemSize, const GLvoid *ptr) { GLboolean ok; @@ -157,7 +158,7 @@ validate_pbo_access(struct gl_context *ctx, struct gl_pixelstore_attrib *pack, pack->BufferObj); ok = _mesa_validate_pbo_access(1, &ctx->DefaultPacking, mapsize, 1, 1, - format, type, ptr); + format, type, clientMemSize, ptr); /* restore */ _mesa_reference_buffer_object(ctx, @@ -165,8 +166,14 @@ validate_pbo_access(struct gl_context *ctx, struct gl_pixelstore_attrib *pack, ctx->Shared->NullBufferObj); if (!ok) { - _mesa_error(ctx, GL_INVALID_OPERATION, - "glPixelMap(invalid PBO access)"); + if (_mesa_is_bufferobj(pack->BufferObj)) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "gl[Get]PixelMap*v(out of bounds PBO access)"); + } else { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glGetnPixelMap*vARB(out of bounds access:" + " bufSize (%d) is too small)", clientMemSize); + } } return ok; } @@ -194,8 +201,8 @@ _mesa_PixelMapfv( GLenum map, GLsizei mapsize, const GLfloat *values ) FLUSH_VERTICES(ctx, _NEW_PIXEL); - if (!validate_pbo_access(ctx, &ctx->Unpack, mapsize, - GL_INTENSITY, GL_FLOAT, values)) { + if (!validate_pbo_access(ctx, &ctx->Unpack, mapsize, GL_INTENSITY, + GL_FLOAT, INT_MAX, values)) { return; } @@ -236,8 +243,8 @@ _mesa_PixelMapuiv(GLenum map, GLsizei mapsize, const GLuint *values ) FLUSH_VERTICES(ctx, _NEW_PIXEL); - if (!validate_pbo_access(ctx, &ctx->Unpack, mapsize, - GL_INTENSITY, GL_UNSIGNED_INT, values)) { + if (!validate_pbo_access(ctx, &ctx->Unpack, mapsize, GL_INTENSITY, + GL_UNSIGNED_INT, INT_MAX, values)) { return; } @@ -292,8 +299,8 @@ _mesa_PixelMapusv(GLenum map, GLsizei mapsize, const GLushort *values ) FLUSH_VERTICES(ctx, _NEW_PIXEL); - if (!validate_pbo_access(ctx, &ctx->Unpack, mapsize, - GL_INTENSITY, GL_UNSIGNED_SHORT, values)) { + if (!validate_pbo_access(ctx, &ctx->Unpack, mapsize, GL_INTENSITY, + GL_UNSIGNED_SHORT, INT_MAX, values)) { return; } @@ -327,10 +334,10 @@ _mesa_PixelMapusv(GLenum map, GLsizei mapsize, const GLushort *values ) static void GLAPIENTRY -_mesa_GetPixelMapfv( GLenum map, GLfloat *values ) +_mesa_GetnPixelMapfvARB( GLenum map, GLsizei bufSize, GLfloat *values ) { GET_CURRENT_CONTEXT(ctx); - GLuint mapsize, i; + GLint mapsize, i; const struct gl_pixelmap *pm; ASSERT_OUTSIDE_BEGIN_END(ctx); @@ -343,8 +350,8 @@ _mesa_GetPixelMapfv( GLenum map, GLfloat *values ) mapsize = pm->Size; - if (!validate_pbo_access(ctx, &ctx->Pack, mapsize, - GL_INTENSITY, GL_FLOAT, values)) { + if (!validate_pbo_access(ctx, &ctx->Pack, mapsize, GL_INTENSITY, + GL_FLOAT, bufSize, values)) { return; } @@ -372,7 +379,13 @@ _mesa_GetPixelMapfv( GLenum map, GLfloat *values ) static void GLAPIENTRY -_mesa_GetPixelMapuiv( GLenum map, GLuint *values ) +_mesa_GetPixelMapfv( GLenum map, GLfloat *values ) +{ + _mesa_GetnPixelMapfvARB(map, INT_MAX, values); +} + +static void GLAPIENTRY +_mesa_GetnPixelMapuivARB( GLenum map, GLsizei bufSize, GLuint *values ) { GET_CURRENT_CONTEXT(ctx); GLint mapsize, i; @@ -385,10 +398,11 @@ _mesa_GetPixelMapuiv( GLenum map, GLuint *values ) _mesa_error(ctx, GL_INVALID_ENUM, "glGetPixelMapuiv(map)"); return; } + mapsize = pm->Size; - if (!validate_pbo_access(ctx, &ctx->Pack, mapsize, - GL_INTENSITY, GL_UNSIGNED_INT, values)) { + if (!validate_pbo_access(ctx, &ctx->Pack, mapsize, GL_INTENSITY, + GL_UNSIGNED_INT, bufSize, values)) { return; } @@ -416,7 +430,13 @@ _mesa_GetPixelMapuiv( GLenum map, GLuint *values ) static void GLAPIENTRY -_mesa_GetPixelMapusv( GLenum map, GLushort *values ) +_mesa_GetPixelMapuiv( GLenum map, GLuint *values ) +{ + _mesa_GetnPixelMapuivARB(map, INT_MAX, values); +} + +static void GLAPIENTRY +_mesa_GetnPixelMapusvARB( GLenum map, GLsizei bufSize, GLushort *values ) { GET_CURRENT_CONTEXT(ctx); GLint mapsize, i; @@ -429,10 +449,11 @@ _mesa_GetPixelMapusv( GLenum map, GLushort *values ) _mesa_error(ctx, GL_INVALID_ENUM, "glGetPixelMapusv(map)"); return; } + mapsize = pm->Size; - if (!validate_pbo_access(ctx, &ctx->Pack, mapsize, - GL_INTENSITY, GL_UNSIGNED_SHORT, values)) { + if (!validate_pbo_access(ctx, &ctx->Pack, mapsize, GL_INTENSITY, + GL_UNSIGNED_SHORT, bufSize, values)) { return; } @@ -467,6 +488,12 @@ _mesa_GetPixelMapusv( GLenum map, GLushort *values ) } +static void GLAPIENTRY +_mesa_GetPixelMapusv( GLenum map, GLushort *values ) +{ + _mesa_GetnPixelMapusvARB(map, INT_MAX, values); +} + /**********************************************************************/ /***** glPixelTransfer *****/ @@ -634,6 +661,11 @@ _mesa_init_pixel_dispatch(struct _glapi_table *disp) SET_PixelTransferf(disp, _mesa_PixelTransferf); SET_PixelTransferi(disp, _mesa_PixelTransferi); SET_PixelZoom(disp, _mesa_PixelZoom); + + /* GL_ARB_robustness */ + SET_GetnPixelMapfvARB(disp, _mesa_GetnPixelMapfvARB); + SET_GetnPixelMapuivARB(disp, _mesa_GetnPixelMapuivARB); + SET_GetnPixelMapusvARB(disp, _mesa_GetnPixelMapusvARB); } diff --git a/src/mesa/main/polygon.c b/src/mesa/main/polygon.c index ff4232ecc39..addca0228d5 100644 --- a/src/mesa/main/polygon.c +++ b/src/mesa/main/polygon.c @@ -195,7 +195,8 @@ _mesa_polygon_stipple(struct gl_context *ctx, const GLubyte *pattern) { pattern = _mesa_map_validate_pbo_source(ctx, 2, &ctx->Unpack, 32, 32, 1, - GL_COLOR_INDEX, GL_BITMAP, pattern, + GL_COLOR_INDEX, GL_BITMAP, + INT_MAX, pattern, "glPolygonStipple"); if (!pattern) return; @@ -231,7 +232,7 @@ _mesa_PolygonStipple( const GLubyte *pattern ) * Called by glPolygonStipple. */ void GLAPIENTRY -_mesa_GetPolygonStipple( GLubyte *dest ) +_mesa_GetnPolygonStippleARB( GLsizei bufSize, GLubyte *dest ) { GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END(ctx); @@ -241,8 +242,8 @@ _mesa_GetPolygonStipple( GLubyte *dest ) dest = _mesa_map_validate_pbo_dest(ctx, 2, &ctx->Pack, 32, 32, 1, - GL_COLOR_INDEX, GL_BITMAP, dest, - "glGetPolygonStipple"); + GL_COLOR_INDEX, GL_BITMAP, + bufSize, dest, "glGetPolygonStipple"); if (!dest) return; @@ -253,6 +254,13 @@ _mesa_GetPolygonStipple( GLubyte *dest ) void GLAPIENTRY +_mesa_GetPolygonStipple( GLubyte *dest ) +{ + _mesa_GetnPolygonStippleARB(INT_MAX, dest); +} + + +void GLAPIENTRY _mesa_PolygonOffset( GLfloat factor, GLfloat units ) { GET_CURRENT_CONTEXT(ctx); diff --git a/src/mesa/main/polygon.h b/src/mesa/main/polygon.h index 13f7c91ed07..35f222f269d 100644 --- a/src/mesa/main/polygon.h +++ b/src/mesa/main/polygon.h @@ -36,6 +36,9 @@ struct gl_context; +extern void GLAPIENTRY +_mesa_GetnPolygonStippleARB( GLsizei bufSize, GLubyte *dest ); + extern void _mesa_polygon_stipple(struct gl_context *ctx, const GLubyte *pattern); diff --git a/src/mesa/main/readpix.c b/src/mesa/main/readpix.c index a172a0000f5..0331a8ca2fe 100644 --- a/src/mesa/main/readpix.c +++ b/src/mesa/main/readpix.c @@ -167,8 +167,9 @@ _mesa_error_check_format_type(struct gl_context *ctx, GLenum format, void GLAPIENTRY -_mesa_ReadPixels( GLint x, GLint y, GLsizei width, GLsizei height, - GLenum format, GLenum type, GLvoid *pixels ) +_mesa_ReadnPixelsARB( GLint x, GLint y, GLsizei width, GLsizei height, + GLenum format, GLenum type, GLsizei bufSize, + GLvoid *pixels ) { GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); @@ -224,21 +225,33 @@ _mesa_ReadPixels( GLint x, GLint y, GLsizei width, GLsizei height, if (width == 0 || height == 0) return; /* nothing to do */ - if (_mesa_is_bufferobj(ctx->Pack.BufferObj)) { - if (!_mesa_validate_pbo_access(2, &ctx->Pack, width, height, 1, - format, type, pixels)) { + if (!_mesa_validate_pbo_access(2, &ctx->Pack, width, height, 1, + format, type, bufSize, pixels)) { + if (_mesa_is_bufferobj(ctx->Pack.BufferObj)) { _mesa_error(ctx, GL_INVALID_OPERATION, - "glReadPixels(invalid PBO access)"); - return; + "glReadPixels(out of bounds PBO access)"); + } else { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glReadnPixelsARB(out of bounds access:" + " bufSize (%d) is too small)", bufSize); } + return; + } - if (_mesa_bufferobj_mapped(ctx->Pack.BufferObj)) { - /* buffer is mapped - that's an error */ - _mesa_error(ctx, GL_INVALID_OPERATION, "glReadPixels(PBO is mapped)"); - return; - } + if (_mesa_is_bufferobj(ctx->Pack.BufferObj) && + _mesa_bufferobj_mapped(ctx->Pack.BufferObj)) { + /* buffer is mapped - that's an error */ + _mesa_error(ctx, GL_INVALID_OPERATION, "glReadPixels(PBO is mapped)"); + return; } ctx->Driver.ReadPixels(ctx, x, y, width, height, format, type, &ctx->Pack, pixels); } + +void GLAPIENTRY +_mesa_ReadPixels( GLint x, GLint y, GLsizei width, GLsizei height, + GLenum format, GLenum type, GLvoid *pixels ) +{ + _mesa_ReadnPixelsARB(x, y, width, height, format, type, INT_MAX, pixels); +} diff --git a/src/mesa/main/readpix.h b/src/mesa/main/readpix.h index fd25e703e04..f6bb3d6e273 100644 --- a/src/mesa/main/readpix.h +++ b/src/mesa/main/readpix.h @@ -39,5 +39,9 @@ extern void GLAPIENTRY _mesa_ReadPixels( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels ); +extern void GLAPIENTRY +_mesa_ReadnPixelsARB( GLint x, GLint y, GLsizei width, GLsizei height, + GLenum format, GLenum type, GLsizei bufSize, + GLvoid *pixels ); #endif diff --git a/src/mesa/main/remap_helper.h b/src/mesa/main/remap_helper.h index 72a2f1e0b81..fdb86d3e38a 100644 --- a/src/mesa/main/remap_helper.h +++ b/src/mesa/main/remap_helper.h @@ -70,4774 +70,4858 @@ static const char _mesa_function_pool[] = "\0" "glLoadIdentity\0" "\0" - /* _mesa_function_pool[216]: SampleCoverageARB (will be remapped) */ + /* _mesa_function_pool[216]: GetCombinerOutputParameterfvNV (will be remapped) */ + "iiip\0" + "glGetCombinerOutputParameterfvNV\0" + "\0" + /* _mesa_function_pool[255]: SampleCoverageARB (will be remapped) */ "fi\0" "glSampleCoverage\0" "glSampleCoverageARB\0" "\0" - /* _mesa_function_pool[257]: ConvolutionFilter1D (offset 348) */ + /* _mesa_function_pool[296]: ConvolutionFilter1D (offset 348) */ "iiiiip\0" "glConvolutionFilter1D\0" "glConvolutionFilter1DEXT\0" "\0" - /* _mesa_function_pool[312]: BeginQueryARB (will be remapped) */ + /* _mesa_function_pool[351]: BeginQueryARB (will be remapped) */ "ii\0" "glBeginQuery\0" "glBeginQueryARB\0" "\0" - /* _mesa_function_pool[345]: RasterPos3dv (offset 71) */ + /* _mesa_function_pool[384]: RasterPos3dv (offset 71) */ "p\0" "glRasterPos3dv\0" "\0" - /* _mesa_function_pool[363]: PointParameteriNV (will be remapped) */ + /* _mesa_function_pool[402]: PointParameteriNV (will be remapped) */ "ii\0" "glPointParameteri\0" "glPointParameteriNV\0" "\0" - /* _mesa_function_pool[405]: GetProgramiv (will be remapped) */ + /* _mesa_function_pool[444]: GetProgramiv (will be remapped) */ "iip\0" "glGetProgramiv\0" "\0" - /* _mesa_function_pool[425]: MultiTexCoord3sARB (offset 398) */ + /* _mesa_function_pool[464]: MultiTexCoord3sARB (offset 398) */ "iiii\0" "glMultiTexCoord3s\0" "glMultiTexCoord3sARB\0" "\0" - /* _mesa_function_pool[470]: SecondaryColor3iEXT (will be remapped) */ + /* _mesa_function_pool[509]: SecondaryColor3iEXT (will be remapped) */ "iii\0" "glSecondaryColor3i\0" "glSecondaryColor3iEXT\0" "\0" - /* _mesa_function_pool[516]: WindowPos3fMESA (will be remapped) */ + /* _mesa_function_pool[555]: WindowPos3fMESA (will be remapped) */ "fff\0" "glWindowPos3f\0" "glWindowPos3fARB\0" "glWindowPos3fMESA\0" "\0" - /* _mesa_function_pool[570]: TexCoord1iv (offset 99) */ + /* _mesa_function_pool[609]: TexCoord1iv (offset 99) */ "p\0" "glTexCoord1iv\0" "\0" - /* _mesa_function_pool[587]: TexCoord4sv (offset 125) */ + /* _mesa_function_pool[626]: TexCoord4sv (offset 125) */ "p\0" "glTexCoord4sv\0" "\0" - /* _mesa_function_pool[604]: RasterPos4s (offset 84) */ + /* _mesa_function_pool[643]: RasterPos4s (offset 84) */ "iiii\0" "glRasterPos4s\0" "\0" - /* _mesa_function_pool[624]: PixelTexGenParameterfvSGIS (will be remapped) */ + /* _mesa_function_pool[663]: PixelTexGenParameterfvSGIS (will be remapped) */ "ip\0" "glPixelTexGenParameterfvSGIS\0" "\0" - /* _mesa_function_pool[657]: ActiveTextureARB (offset 374) */ + /* _mesa_function_pool[696]: ActiveTextureARB (offset 374) */ "i\0" "glActiveTexture\0" "glActiveTextureARB\0" "\0" - /* _mesa_function_pool[695]: BlitFramebufferEXT (will be remapped) */ + /* _mesa_function_pool[734]: BlitFramebufferEXT (will be remapped) */ "iiiiiiiiii\0" "glBlitFramebuffer\0" "glBlitFramebufferEXT\0" "\0" - /* _mesa_function_pool[746]: TexCoord1f (offset 96) */ + /* _mesa_function_pool[785]: TexCoord1f (offset 96) */ "f\0" "glTexCoord1f\0" "\0" - /* _mesa_function_pool[762]: TexCoord1d (offset 94) */ + /* _mesa_function_pool[801]: TexCoord1d (offset 94) */ "d\0" "glTexCoord1d\0" "\0" - /* _mesa_function_pool[778]: VertexAttrib4ubvNV (will be remapped) */ + /* _mesa_function_pool[817]: VertexAttrib4ubvNV (will be remapped) */ "ip\0" "glVertexAttrib4ubvNV\0" "\0" - /* _mesa_function_pool[803]: TexCoord1i (offset 98) */ + /* _mesa_function_pool[842]: TexCoord1i (offset 98) */ "i\0" "glTexCoord1i\0" "\0" - /* _mesa_function_pool[819]: GetProgramNamedParameterdvNV (will be remapped) */ + /* _mesa_function_pool[858]: GetProgramNamedParameterdvNV (will be remapped) */ "iipp\0" "glGetProgramNamedParameterdvNV\0" "\0" - /* _mesa_function_pool[856]: Histogram (offset 367) */ + /* _mesa_function_pool[895]: Histogram (offset 367) */ "iiii\0" "glHistogram\0" "glHistogramEXT\0" "\0" - /* _mesa_function_pool[889]: TexCoord1s (offset 100) */ + /* _mesa_function_pool[928]: TexCoord1s (offset 100) */ "i\0" "glTexCoord1s\0" "\0" - /* _mesa_function_pool[905]: GetMapfv (offset 267) */ + /* _mesa_function_pool[944]: GetMapfv (offset 267) */ "iip\0" "glGetMapfv\0" "\0" - /* _mesa_function_pool[921]: EvalCoord1f (offset 230) */ + /* _mesa_function_pool[960]: EvalCoord1f (offset 230) */ "f\0" "glEvalCoord1f\0" "\0" - /* _mesa_function_pool[938]: FramebufferTexture (will be remapped) */ + /* _mesa_function_pool[977]: FramebufferTexture (will be remapped) */ "iiii\0" "glFramebufferTexture\0" "\0" - /* _mesa_function_pool[965]: VertexAttribI1ivEXT (will be remapped) */ - "ip\0" - "glVertexAttribI1ivEXT\0" - "glVertexAttribI1iv\0" + /* _mesa_function_pool[1004]: GetGraphicsResetStatusARB (will be remapped) */ "\0" - /* _mesa_function_pool[1010]: TexImage4DSGIS (dynamic) */ + "glGetGraphicsResetStatusARB\0" + "\0" + /* _mesa_function_pool[1034]: TexImage4DSGIS (dynamic) */ "iiiiiiiiiip\0" "glTexImage4DSGIS\0" "\0" - /* _mesa_function_pool[1040]: PolygonStipple (offset 175) */ + /* _mesa_function_pool[1064]: PolygonStipple (offset 175) */ "p\0" "glPolygonStipple\0" "\0" - /* _mesa_function_pool[1060]: WindowPos2dvMESA (will be remapped) */ + /* _mesa_function_pool[1084]: WindowPos2dvMESA (will be remapped) */ "p\0" "glWindowPos2dv\0" "glWindowPos2dvARB\0" "glWindowPos2dvMESA\0" "\0" - /* _mesa_function_pool[1115]: ReplacementCodeuiColor3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[1139]: ReplacementCodeuiColor3fVertex3fvSUN (dynamic) */ "ppp\0" "glReplacementCodeuiColor3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[1159]: BlendEquationSeparateEXT (will be remapped) */ + /* _mesa_function_pool[1183]: BlendEquationSeparateEXT (will be remapped) */ "ii\0" "glBlendEquationSeparate\0" "glBlendEquationSeparateEXT\0" "glBlendEquationSeparateATI\0" "\0" - /* _mesa_function_pool[1241]: ListParameterfSGIX (dynamic) */ + /* _mesa_function_pool[1265]: ListParameterfSGIX (dynamic) */ "iif\0" "glListParameterfSGIX\0" "\0" - /* _mesa_function_pool[1267]: SecondaryColor3bEXT (will be remapped) */ + /* _mesa_function_pool[1291]: SecondaryColor3bEXT (will be remapped) */ "iii\0" "glSecondaryColor3b\0" "glSecondaryColor3bEXT\0" "\0" - /* _mesa_function_pool[1313]: TexCoord4fColor4fNormal3fVertex4fvSUN (dynamic) */ + /* _mesa_function_pool[1337]: TexCoord4fColor4fNormal3fVertex4fvSUN (dynamic) */ "pppp\0" "glTexCoord4fColor4fNormal3fVertex4fvSUN\0" "\0" - /* _mesa_function_pool[1359]: GetPixelMapfv (offset 271) */ + /* _mesa_function_pool[1383]: GetnPolygonStippleARB (will be remapped) */ + "ip\0" + "glGetnPolygonStippleARB\0" + "\0" + /* _mesa_function_pool[1411]: GetPixelMapfv (offset 271) */ "ip\0" "glGetPixelMapfv\0" "\0" - /* _mesa_function_pool[1379]: Color3uiv (offset 22) */ + /* _mesa_function_pool[1431]: Color3uiv (offset 22) */ "p\0" "glColor3uiv\0" "\0" - /* _mesa_function_pool[1394]: IsEnabled (offset 286) */ + /* _mesa_function_pool[1446]: IsEnabled (offset 286) */ "i\0" "glIsEnabled\0" "\0" - /* _mesa_function_pool[1409]: VertexAttrib4svNV (will be remapped) */ + /* _mesa_function_pool[1461]: VertexAttrib4svNV (will be remapped) */ "ip\0" "glVertexAttrib4svNV\0" "\0" - /* _mesa_function_pool[1433]: EvalCoord2fv (offset 235) */ + /* _mesa_function_pool[1485]: EvalCoord2fv (offset 235) */ "p\0" "glEvalCoord2fv\0" "\0" - /* _mesa_function_pool[1451]: GetBufferSubDataARB (will be remapped) */ + /* _mesa_function_pool[1503]: GetBufferSubDataARB (will be remapped) */ "iiip\0" "glGetBufferSubData\0" "glGetBufferSubDataARB\0" "\0" - /* _mesa_function_pool[1498]: BufferSubDataARB (will be remapped) */ + /* _mesa_function_pool[1550]: BufferSubDataARB (will be remapped) */ "iiip\0" "glBufferSubData\0" "glBufferSubDataARB\0" "\0" - /* _mesa_function_pool[1539]: TexCoord2fColor4ubVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[1591]: TexCoord2fColor4ubVertex3fvSUN (dynamic) */ "ppp\0" "glTexCoord2fColor4ubVertex3fvSUN\0" "\0" - /* _mesa_function_pool[1577]: AttachShader (will be remapped) */ + /* _mesa_function_pool[1629]: AttachShader (will be remapped) */ "ii\0" "glAttachShader\0" "\0" - /* _mesa_function_pool[1596]: VertexAttrib2fARB (will be remapped) */ + /* _mesa_function_pool[1648]: GetCombinerInputParameterfvNV (will be remapped) */ + "iiiip\0" + "glGetCombinerInputParameterfvNV\0" + "\0" + /* _mesa_function_pool[1687]: VertexAttrib2fARB (will be remapped) */ "iff\0" "glVertexAttrib2f\0" "glVertexAttrib2fARB\0" "\0" - /* _mesa_function_pool[1638]: GetDebugLogLengthMESA (dynamic) */ + /* _mesa_function_pool[1729]: GetDebugLogLengthMESA (dynamic) */ "iii\0" "glGetDebugLogLengthMESA\0" "\0" - /* _mesa_function_pool[1667]: GetMapiv (offset 268) */ + /* _mesa_function_pool[1758]: GetMapiv (offset 268) */ "iip\0" "glGetMapiv\0" "\0" - /* _mesa_function_pool[1683]: VertexAttrib3fARB (will be remapped) */ + /* _mesa_function_pool[1774]: VertexAttrib3fARB (will be remapped) */ "ifff\0" "glVertexAttrib3f\0" "glVertexAttrib3fARB\0" "\0" - /* _mesa_function_pool[1726]: Indexubv (offset 316) */ + /* _mesa_function_pool[1817]: Indexubv (offset 316) */ "p\0" "glIndexubv\0" "\0" - /* _mesa_function_pool[1740]: GetQueryivARB (will be remapped) */ + /* _mesa_function_pool[1831]: GetQueryivARB (will be remapped) */ "iip\0" "glGetQueryiv\0" "glGetQueryivARB\0" "\0" - /* _mesa_function_pool[1774]: TexImage3D (offset 371) */ + /* _mesa_function_pool[1865]: TexImage3D (offset 371) */ "iiiiiiiiip\0" "glTexImage3D\0" "glTexImage3DEXT\0" "\0" - /* _mesa_function_pool[1815]: BindFragDataLocationEXT (will be remapped) */ + /* _mesa_function_pool[1906]: BindFragDataLocationEXT (will be remapped) */ "iip\0" "glBindFragDataLocationEXT\0" "glBindFragDataLocation\0" "\0" - /* _mesa_function_pool[1869]: ReplacementCodeuiVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[1960]: ReplacementCodeuiVertex3fvSUN (dynamic) */ "pp\0" "glReplacementCodeuiVertex3fvSUN\0" "\0" - /* _mesa_function_pool[1905]: EdgeFlagPointer (offset 312) */ + /* _mesa_function_pool[1996]: EdgeFlagPointer (offset 312) */ "ip\0" "glEdgeFlagPointer\0" "\0" - /* _mesa_function_pool[1927]: Color3ubv (offset 20) */ + /* _mesa_function_pool[2018]: Color3ubv (offset 20) */ "p\0" "glColor3ubv\0" "\0" - /* _mesa_function_pool[1942]: GetQueryObjectivARB (will be remapped) */ + /* _mesa_function_pool[2033]: GetQueryObjectivARB (will be remapped) */ "iip\0" "glGetQueryObjectiv\0" "glGetQueryObjectivARB\0" "\0" - /* _mesa_function_pool[1988]: Vertex3dv (offset 135) */ + /* _mesa_function_pool[2079]: Vertex3dv (offset 135) */ "p\0" "glVertex3dv\0" "\0" - /* _mesa_function_pool[2003]: ReplacementCodeuiTexCoord2fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[2094]: ReplacementCodeuiTexCoord2fVertex3fvSUN (dynamic) */ "ppp\0" "glReplacementCodeuiTexCoord2fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[2050]: CompressedTexSubImage2DARB (will be remapped) */ + /* _mesa_function_pool[2141]: CompressedTexSubImage2DARB (will be remapped) */ "iiiiiiiip\0" "glCompressedTexSubImage2D\0" "glCompressedTexSubImage2DARB\0" "\0" - /* _mesa_function_pool[2116]: CombinerOutputNV (will be remapped) */ + /* _mesa_function_pool[2207]: CombinerOutputNV (will be remapped) */ "iiiiiiiiii\0" "glCombinerOutputNV\0" "\0" - /* _mesa_function_pool[2147]: VertexAttribs3fvNV (will be remapped) */ + /* _mesa_function_pool[2238]: VertexAttribs3fvNV (will be remapped) */ "iip\0" "glVertexAttribs3fvNV\0" "\0" - /* _mesa_function_pool[2173]: Uniform2fARB (will be remapped) */ + /* _mesa_function_pool[2264]: GetnMapivARB (will be remapped) */ + "iiip\0" + "glGetnMapivARB\0" + "\0" + /* _mesa_function_pool[2285]: Uniform2fARB (will be remapped) */ "iff\0" "glUniform2f\0" "glUniform2fARB\0" "\0" - /* _mesa_function_pool[2205]: LightModeliv (offset 166) */ + /* _mesa_function_pool[2317]: LightModeliv (offset 166) */ "ip\0" "glLightModeliv\0" "\0" - /* _mesa_function_pool[2224]: VertexAttrib1svARB (will be remapped) */ + /* _mesa_function_pool[2336]: VertexAttrib1svARB (will be remapped) */ "ip\0" "glVertexAttrib1sv\0" "glVertexAttrib1svARB\0" "\0" - /* _mesa_function_pool[2267]: VertexAttribs1dvNV (will be remapped) */ + /* _mesa_function_pool[2379]: VertexAttribs1dvNV (will be remapped) */ "iip\0" "glVertexAttribs1dvNV\0" "\0" - /* _mesa_function_pool[2293]: Uniform2ivARB (will be remapped) */ + /* _mesa_function_pool[2405]: Uniform2ivARB (will be remapped) */ "iip\0" "glUniform2iv\0" "glUniform2ivARB\0" "\0" - /* _mesa_function_pool[2327]: GetImageTransformParameterfvHP (dynamic) */ + /* _mesa_function_pool[2439]: GetImageTransformParameterfvHP (dynamic) */ "iip\0" "glGetImageTransformParameterfvHP\0" "\0" - /* _mesa_function_pool[2365]: Normal3bv (offset 53) */ + /* _mesa_function_pool[2477]: Normal3bv (offset 53) */ "p\0" "glNormal3bv\0" "\0" - /* _mesa_function_pool[2380]: TexGeniv (offset 193) */ + /* _mesa_function_pool[2492]: TexGeniv (offset 193) */ "iip\0" "glTexGeniv\0" "\0" - /* _mesa_function_pool[2396]: WeightubvARB (dynamic) */ + /* _mesa_function_pool[2508]: WeightubvARB (dynamic) */ "ip\0" "glWeightubvARB\0" "\0" - /* _mesa_function_pool[2415]: VertexAttrib1fvNV (will be remapped) */ + /* _mesa_function_pool[2527]: VertexAttrib1fvNV (will be remapped) */ "ip\0" "glVertexAttrib1fvNV\0" "\0" - /* _mesa_function_pool[2439]: Vertex3iv (offset 139) */ + /* _mesa_function_pool[2551]: Vertex3iv (offset 139) */ "p\0" "glVertex3iv\0" "\0" - /* _mesa_function_pool[2454]: CopyConvolutionFilter1D (offset 354) */ + /* _mesa_function_pool[2566]: CopyConvolutionFilter1D (offset 354) */ "iiiii\0" "glCopyConvolutionFilter1D\0" "glCopyConvolutionFilter1DEXT\0" "\0" - /* _mesa_function_pool[2516]: VertexAttribI1uiEXT (will be remapped) */ + /* _mesa_function_pool[2628]: VertexAttribI1uiEXT (will be remapped) */ "ii\0" "glVertexAttribI1uiEXT\0" "glVertexAttribI1ui\0" "\0" - /* _mesa_function_pool[2561]: ReplacementCodeuiNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[2673]: ReplacementCodeuiNormal3fVertex3fSUN (dynamic) */ "iffffff\0" "glReplacementCodeuiNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[2609]: DeleteSync (will be remapped) */ + /* _mesa_function_pool[2721]: DeleteSync (will be remapped) */ "i\0" "glDeleteSync\0" "\0" - /* _mesa_function_pool[2625]: FragmentMaterialfvSGIX (dynamic) */ + /* _mesa_function_pool[2737]: FragmentMaterialfvSGIX (dynamic) */ "iip\0" "glFragmentMaterialfvSGIX\0" "\0" - /* _mesa_function_pool[2655]: BlendColor (offset 336) */ + /* _mesa_function_pool[2767]: BlendColor (offset 336) */ "ffff\0" "glBlendColor\0" "glBlendColorEXT\0" "\0" - /* _mesa_function_pool[2690]: UniformMatrix4fvARB (will be remapped) */ + /* _mesa_function_pool[2802]: UniformMatrix4fvARB (will be remapped) */ "iiip\0" "glUniformMatrix4fv\0" "glUniformMatrix4fvARB\0" "\0" - /* _mesa_function_pool[2737]: DeleteVertexArraysAPPLE (will be remapped) */ + /* _mesa_function_pool[2849]: DeleteVertexArraysAPPLE (will be remapped) */ "ip\0" "glDeleteVertexArrays\0" "glDeleteVertexArraysAPPLE\0" "\0" - /* _mesa_function_pool[2788]: TexBuffer (will be remapped) */ + /* _mesa_function_pool[2900]: TexBuffer (will be remapped) */ "iii\0" "glTexBuffer\0" "\0" - /* _mesa_function_pool[2805]: ReadInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[2917]: ReadInstrumentsSGIX (dynamic) */ "i\0" "glReadInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[2830]: CallLists (offset 3) */ + /* _mesa_function_pool[2942]: CallLists (offset 3) */ "iip\0" "glCallLists\0" "\0" - /* _mesa_function_pool[2847]: UniformMatrix2x4fv (will be remapped) */ + /* _mesa_function_pool[2959]: DeformationMap3dSGIX (dynamic) */ + "iddiiddiiddiip\0" + "glDeformationMap3dSGIX\0" + "\0" + /* _mesa_function_pool[2998]: UniformMatrix2x4fv (will be remapped) */ "iiip\0" "glUniformMatrix2x4fv\0" "\0" - /* _mesa_function_pool[2874]: Color4ubVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[3025]: ReadnPixelsARB (will be remapped) */ + "iiiiiiip\0" + "glReadnPixelsARB\0" + "\0" + /* _mesa_function_pool[3052]: Color4ubVertex3fvSUN (dynamic) */ "pp\0" "glColor4ubVertex3fvSUN\0" "\0" - /* _mesa_function_pool[2901]: Normal3iv (offset 59) */ + /* _mesa_function_pool[3079]: Normal3iv (offset 59) */ "p\0" "glNormal3iv\0" "\0" - /* _mesa_function_pool[2916]: PassThrough (offset 199) */ + /* _mesa_function_pool[3094]: PassThrough (offset 199) */ "f\0" "glPassThrough\0" "\0" - /* _mesa_function_pool[2933]: GetVertexAttribIivEXT (will be remapped) */ + /* _mesa_function_pool[3111]: GetnPixelMapusvARB (will be remapped) */ "iip\0" - "glGetVertexAttribIivEXT\0" - "glGetVertexAttribIiv\0" + "glGetnPixelMapusvARB\0" "\0" - /* _mesa_function_pool[2983]: TexParameterIivEXT (will be remapped) */ + /* _mesa_function_pool[3137]: TexParameterIivEXT (will be remapped) */ "iip\0" "glTexParameterIivEXT\0" "glTexParameterIiv\0" "\0" - /* _mesa_function_pool[3027]: FramebufferTextureLayerEXT (will be remapped) */ + /* _mesa_function_pool[3181]: FramebufferTextureLayerEXT (will be remapped) */ "iiiii\0" "glFramebufferTextureLayer\0" "glFramebufferTextureLayerEXT\0" "\0" - /* _mesa_function_pool[3089]: GetListParameterfvSGIX (dynamic) */ + /* _mesa_function_pool[3243]: GetListParameterfvSGIX (dynamic) */ "iip\0" "glGetListParameterfvSGIX\0" "\0" - /* _mesa_function_pool[3119]: Viewport (offset 305) */ + /* _mesa_function_pool[3273]: Viewport (offset 305) */ "iiii\0" "glViewport\0" "\0" - /* _mesa_function_pool[3136]: VertexAttrib4NusvARB (will be remapped) */ + /* _mesa_function_pool[3290]: VertexAttrib4NusvARB (will be remapped) */ "ip\0" "glVertexAttrib4Nusv\0" "glVertexAttrib4NusvARB\0" "\0" - /* _mesa_function_pool[3183]: WindowPos4svMESA (will be remapped) */ + /* _mesa_function_pool[3337]: WindowPos4svMESA (will be remapped) */ "p\0" "glWindowPos4svMESA\0" "\0" - /* _mesa_function_pool[3205]: CreateProgramObjectARB (will be remapped) */ + /* _mesa_function_pool[3359]: CreateProgramObjectARB (will be remapped) */ "\0" "glCreateProgramObjectARB\0" "\0" - /* _mesa_function_pool[3232]: DeleteTransformFeedbacks (will be remapped) */ + /* _mesa_function_pool[3386]: DeleteTransformFeedbacks (will be remapped) */ "ip\0" "glDeleteTransformFeedbacks\0" "\0" - /* _mesa_function_pool[3263]: UniformMatrix4x3fv (will be remapped) */ + /* _mesa_function_pool[3417]: UniformMatrix4x3fv (will be remapped) */ "iiip\0" "glUniformMatrix4x3fv\0" "\0" - /* _mesa_function_pool[3290]: PrioritizeTextures (offset 331) */ + /* _mesa_function_pool[3444]: PrioritizeTextures (offset 331) */ "ipp\0" "glPrioritizeTextures\0" "glPrioritizeTexturesEXT\0" "\0" - /* _mesa_function_pool[3340]: VertexAttribI3uiEXT (will be remapped) */ + /* _mesa_function_pool[3494]: VertexAttribI3uiEXT (will be remapped) */ "iiii\0" "glVertexAttribI3uiEXT\0" "glVertexAttribI3ui\0" "\0" - /* _mesa_function_pool[3387]: AsyncMarkerSGIX (dynamic) */ + /* _mesa_function_pool[3541]: AsyncMarkerSGIX (dynamic) */ "i\0" "glAsyncMarkerSGIX\0" "\0" - /* _mesa_function_pool[3408]: GlobalAlphaFactorubSUN (dynamic) */ + /* _mesa_function_pool[3562]: GlobalAlphaFactorubSUN (dynamic) */ "i\0" "glGlobalAlphaFactorubSUN\0" "\0" - /* _mesa_function_pool[3436]: ClearColorIuiEXT (will be remapped) */ + /* _mesa_function_pool[3590]: ClearColorIuiEXT (will be remapped) */ "iiii\0" "glClearColorIuiEXT\0" "\0" - /* _mesa_function_pool[3461]: ClearDebugLogMESA (dynamic) */ + /* _mesa_function_pool[3615]: ClearDebugLogMESA (dynamic) */ "iii\0" "glClearDebugLogMESA\0" "\0" - /* _mesa_function_pool[3486]: Uniform4uiEXT (will be remapped) */ + /* _mesa_function_pool[3640]: Uniform4uiEXT (will be remapped) */ "iiiii\0" "glUniform4uiEXT\0" "glUniform4ui\0" "\0" - /* _mesa_function_pool[3522]: ResetHistogram (offset 369) */ + /* _mesa_function_pool[3676]: ResetHistogram (offset 369) */ "i\0" "glResetHistogram\0" "glResetHistogramEXT\0" "\0" - /* _mesa_function_pool[3562]: GetProgramNamedParameterfvNV (will be remapped) */ + /* _mesa_function_pool[3716]: GetProgramNamedParameterfvNV (will be remapped) */ "iipp\0" "glGetProgramNamedParameterfvNV\0" "\0" - /* _mesa_function_pool[3599]: PointParameterfEXT (will be remapped) */ + /* _mesa_function_pool[3753]: PointParameterfEXT (will be remapped) */ "if\0" "glPointParameterf\0" "glPointParameterfARB\0" "glPointParameterfEXT\0" "glPointParameterfSGIS\0" "\0" - /* _mesa_function_pool[3685]: LoadIdentityDeformationMapSGIX (dynamic) */ + /* _mesa_function_pool[3839]: LoadIdentityDeformationMapSGIX (dynamic) */ "i\0" "glLoadIdentityDeformationMapSGIX\0" "\0" - /* _mesa_function_pool[3721]: GenFencesNV (will be remapped) */ + /* _mesa_function_pool[3875]: GenFencesNV (will be remapped) */ "ip\0" "glGenFencesNV\0" "\0" - /* _mesa_function_pool[3739]: ImageTransformParameterfHP (dynamic) */ + /* _mesa_function_pool[3893]: ImageTransformParameterfHP (dynamic) */ "iif\0" "glImageTransformParameterfHP\0" "\0" - /* _mesa_function_pool[3773]: MatrixIndexusvARB (dynamic) */ + /* _mesa_function_pool[3927]: MatrixIndexusvARB (dynamic) */ "ip\0" "glMatrixIndexusvARB\0" "\0" - /* _mesa_function_pool[3797]: DrawElementsBaseVertex (will be remapped) */ + /* _mesa_function_pool[3951]: DrawElementsBaseVertex (will be remapped) */ "iiipi\0" "glDrawElementsBaseVertex\0" "\0" - /* _mesa_function_pool[3829]: DisableVertexAttribArrayARB (will be remapped) */ + /* _mesa_function_pool[3983]: DisableVertexAttribArrayARB (will be remapped) */ "i\0" "glDisableVertexAttribArray\0" "glDisableVertexAttribArrayARB\0" "\0" - /* _mesa_function_pool[3889]: TexCoord2sv (offset 109) */ + /* _mesa_function_pool[4043]: VertexAttribI4ubvEXT (will be remapped) */ + "ip\0" + "glVertexAttribI4ubvEXT\0" + "glVertexAttribI4ubv\0" + "\0" + /* _mesa_function_pool[4090]: GetnConvolutionFilterARB (will be remapped) */ + "iiiip\0" + "glGetnConvolutionFilterARB\0" + "\0" + /* _mesa_function_pool[4124]: TexCoord2sv (offset 109) */ "p\0" "glTexCoord2sv\0" "\0" - /* _mesa_function_pool[3906]: Vertex4dv (offset 143) */ + /* _mesa_function_pool[4141]: Vertex4dv (offset 143) */ "p\0" "glVertex4dv\0" "\0" - /* _mesa_function_pool[3921]: StencilMaskSeparate (will be remapped) */ + /* _mesa_function_pool[4156]: StencilMaskSeparate (will be remapped) */ "ii\0" "glStencilMaskSeparate\0" "\0" - /* _mesa_function_pool[3947]: ProgramLocalParameter4dARB (will be remapped) */ + /* _mesa_function_pool[4182]: ProgramLocalParameter4dARB (will be remapped) */ "iidddd\0" "glProgramLocalParameter4dARB\0" "\0" - /* _mesa_function_pool[3984]: CompressedTexImage3DARB (will be remapped) */ + /* _mesa_function_pool[4219]: CompressedTexImage3DARB (will be remapped) */ "iiiiiiiip\0" "glCompressedTexImage3D\0" "glCompressedTexImage3DARB\0" "\0" - /* _mesa_function_pool[4044]: Color3sv (offset 18) */ + /* _mesa_function_pool[4279]: Color3sv (offset 18) */ "p\0" "glColor3sv\0" "\0" - /* _mesa_function_pool[4058]: GetConvolutionParameteriv (offset 358) */ + /* _mesa_function_pool[4293]: GetConvolutionParameteriv (offset 358) */ "iip\0" "glGetConvolutionParameteriv\0" "glGetConvolutionParameterivEXT\0" "\0" - /* _mesa_function_pool[4122]: DeleteSamplers (will be remapped) */ + /* _mesa_function_pool[4357]: DeleteSamplers (will be remapped) */ "ip\0" "glDeleteSamplers\0" "\0" - /* _mesa_function_pool[4143]: VertexAttrib1fARB (will be remapped) */ + /* _mesa_function_pool[4378]: VertexAttrib1fARB (will be remapped) */ "if\0" "glVertexAttrib1f\0" "glVertexAttrib1fARB\0" "\0" - /* _mesa_function_pool[4184]: Vertex2dv (offset 127) */ + /* _mesa_function_pool[4419]: Vertex2dv (offset 127) */ "p\0" "glVertex2dv\0" "\0" - /* _mesa_function_pool[4199]: TestFenceNV (will be remapped) */ + /* _mesa_function_pool[4434]: TestFenceNV (will be remapped) */ "i\0" "glTestFenceNV\0" "\0" - /* _mesa_function_pool[4216]: GetVertexAttribIuivEXT (will be remapped) */ - "iip\0" - "glGetVertexAttribIuivEXT\0" - "glGetVertexAttribIuiv\0" - "\0" - /* _mesa_function_pool[4268]: MultiTexCoord1fvARB (offset 379) */ + /* _mesa_function_pool[4451]: MultiTexCoord1fvARB (offset 379) */ "ip\0" "glMultiTexCoord1fv\0" "glMultiTexCoord1fvARB\0" "\0" - /* _mesa_function_pool[4313]: TexCoord3iv (offset 115) */ + /* _mesa_function_pool[4496]: TexCoord3iv (offset 115) */ "p\0" "glTexCoord3iv\0" "\0" - /* _mesa_function_pool[4330]: Uniform2uivEXT (will be remapped) */ + /* _mesa_function_pool[4513]: Uniform2uivEXT (will be remapped) */ "iip\0" "glUniform2uivEXT\0" "glUniform2uiv\0" "\0" - /* _mesa_function_pool[4366]: ColorFragmentOp2ATI (will be remapped) */ + /* _mesa_function_pool[4549]: ColorFragmentOp2ATI (will be remapped) */ "iiiiiiiiii\0" "glColorFragmentOp2ATI\0" "\0" - /* _mesa_function_pool[4400]: SecondaryColorPointerListIBM (dynamic) */ + /* _mesa_function_pool[4583]: SecondaryColorPointerListIBM (dynamic) */ "iiipi\0" "glSecondaryColorPointerListIBM\0" "\0" - /* _mesa_function_pool[4438]: GetPixelTexGenParameterivSGIS (will be remapped) */ + /* _mesa_function_pool[4621]: GetPixelTexGenParameterivSGIS (will be remapped) */ "ip\0" "glGetPixelTexGenParameterivSGIS\0" "\0" - /* _mesa_function_pool[4474]: Color3fv (offset 14) */ + /* _mesa_function_pool[4657]: Color3fv (offset 14) */ "p\0" "glColor3fv\0" "\0" - /* _mesa_function_pool[4488]: VertexAttrib4fNV (will be remapped) */ - "iffff\0" - "glVertexAttrib4fNV\0" + /* _mesa_function_pool[4671]: GetnPixelMapfvARB (will be remapped) */ + "iip\0" + "glGetnPixelMapfvARB\0" "\0" - /* _mesa_function_pool[4514]: ReplacementCodeubSUN (dynamic) */ + /* _mesa_function_pool[4696]: ReplacementCodeubSUN (dynamic) */ "i\0" "glReplacementCodeubSUN\0" "\0" - /* _mesa_function_pool[4540]: FinishAsyncSGIX (dynamic) */ + /* _mesa_function_pool[4722]: FinishAsyncSGIX (dynamic) */ "p\0" "glFinishAsyncSGIX\0" "\0" - /* _mesa_function_pool[4561]: GetDebugLogMESA (dynamic) */ + /* _mesa_function_pool[4743]: GetnUniformfvARB (will be remapped) */ + "iiip\0" + "glGetnUniformfvARB\0" + "\0" + /* _mesa_function_pool[4768]: GetDebugLogMESA (dynamic) */ "iiiipp\0" "glGetDebugLogMESA\0" "\0" - /* _mesa_function_pool[4587]: FogCoorddEXT (will be remapped) */ + /* _mesa_function_pool[4794]: FogCoorddEXT (will be remapped) */ "d\0" "glFogCoordd\0" "glFogCoorddEXT\0" "\0" - /* _mesa_function_pool[4617]: BeginConditionalRenderNV (will be remapped) */ + /* _mesa_function_pool[4824]: BeginConditionalRenderNV (will be remapped) */ "ii\0" "glBeginConditionalRenderNV\0" "glBeginConditionalRender\0" "\0" - /* _mesa_function_pool[4673]: Color4ubVertex3fSUN (dynamic) */ + /* _mesa_function_pool[4880]: Color4ubVertex3fSUN (dynamic) */ "iiiifff\0" "glColor4ubVertex3fSUN\0" "\0" - /* _mesa_function_pool[4704]: FogCoordfEXT (will be remapped) */ + /* _mesa_function_pool[4911]: FogCoordfEXT (will be remapped) */ "f\0" "glFogCoordf\0" "glFogCoordfEXT\0" "\0" - /* _mesa_function_pool[4734]: PointSize (offset 173) */ + /* _mesa_function_pool[4941]: PointSize (offset 173) */ "f\0" "glPointSize\0" "\0" - /* _mesa_function_pool[4749]: VertexAttribI2uivEXT (will be remapped) */ + /* _mesa_function_pool[4956]: VertexAttribI2uivEXT (will be remapped) */ "ip\0" "glVertexAttribI2uivEXT\0" "glVertexAttribI2uiv\0" "\0" - /* _mesa_function_pool[4796]: TexCoord2fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[5003]: TexCoord2fVertex3fSUN (dynamic) */ "fffff\0" "glTexCoord2fVertex3fSUN\0" "\0" - /* _mesa_function_pool[4827]: PopName (offset 200) */ + /* _mesa_function_pool[5034]: PopName (offset 200) */ "\0" "glPopName\0" "\0" - /* _mesa_function_pool[4839]: GetSamplerParameterfv (will be remapped) */ + /* _mesa_function_pool[5046]: GetSamplerParameterfv (will be remapped) */ "iip\0" "glGetSamplerParameterfv\0" "\0" - /* _mesa_function_pool[4868]: GlobalAlphaFactoriSUN (dynamic) */ + /* _mesa_function_pool[5075]: GlobalAlphaFactoriSUN (dynamic) */ "i\0" "glGlobalAlphaFactoriSUN\0" "\0" - /* _mesa_function_pool[4895]: VertexAttrib2dNV (will be remapped) */ + /* _mesa_function_pool[5102]: VertexAttrib2dNV (will be remapped) */ "idd\0" "glVertexAttrib2dNV\0" "\0" - /* _mesa_function_pool[4919]: GetProgramInfoLog (will be remapped) */ + /* _mesa_function_pool[5126]: GetProgramInfoLog (will be remapped) */ "iipp\0" "glGetProgramInfoLog\0" "\0" - /* _mesa_function_pool[4945]: VertexAttrib4NbvARB (will be remapped) */ + /* _mesa_function_pool[5152]: VertexAttrib4NbvARB (will be remapped) */ "ip\0" "glVertexAttrib4Nbv\0" "glVertexAttrib4NbvARB\0" "\0" - /* _mesa_function_pool[4990]: GetActiveAttribARB (will be remapped) */ + /* _mesa_function_pool[5197]: GetActiveAttribARB (will be remapped) */ "iiipppp\0" "glGetActiveAttrib\0" "glGetActiveAttribARB\0" "\0" - /* _mesa_function_pool[5038]: Vertex4sv (offset 149) */ + /* _mesa_function_pool[5245]: Vertex4sv (offset 149) */ "p\0" "glVertex4sv\0" "\0" - /* _mesa_function_pool[5053]: VertexAttrib4ubNV (will be remapped) */ + /* _mesa_function_pool[5260]: VertexAttrib4ubNV (will be remapped) */ "iiiii\0" "glVertexAttrib4ubNV\0" "\0" - /* _mesa_function_pool[5080]: ClampColor (will be remapped) */ + /* _mesa_function_pool[5287]: VertexAttribI1ivEXT (will be remapped) */ + "ip\0" + "glVertexAttribI1ivEXT\0" + "glVertexAttribI1iv\0" + "\0" + /* _mesa_function_pool[5332]: ClampColor (will be remapped) */ "ii\0" "glClampColor\0" "\0" - /* _mesa_function_pool[5097]: TextureRangeAPPLE (will be remapped) */ + /* _mesa_function_pool[5349]: TextureRangeAPPLE (will be remapped) */ "iip\0" "glTextureRangeAPPLE\0" "\0" - /* _mesa_function_pool[5122]: GetTexEnvfv (offset 276) */ + /* _mesa_function_pool[5374]: GetTexEnvfv (offset 276) */ "iip\0" "glGetTexEnvfv\0" "\0" - /* _mesa_function_pool[5141]: BindTransformFeedback (will be remapped) */ + /* _mesa_function_pool[5393]: BindTransformFeedback (will be remapped) */ "ii\0" "glBindTransformFeedback\0" "\0" - /* _mesa_function_pool[5169]: TexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[5421]: TexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */ "ffffffffffff\0" "glTexCoord2fColor4fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[5222]: Indexub (offset 315) */ + /* _mesa_function_pool[5474]: Indexub (offset 315) */ "i\0" "glIndexub\0" "\0" - /* _mesa_function_pool[5235]: TexEnvi (offset 186) */ + /* _mesa_function_pool[5487]: VertexAttrib4fNV (will be remapped) */ + "iffff\0" + "glVertexAttrib4fNV\0" + "\0" + /* _mesa_function_pool[5513]: TexEnvi (offset 186) */ "iii\0" "glTexEnvi\0" "\0" - /* _mesa_function_pool[5250]: GetClipPlane (offset 259) */ + /* _mesa_function_pool[5528]: GetClipPlane (offset 259) */ "ip\0" "glGetClipPlane\0" "\0" - /* _mesa_function_pool[5269]: CombinerParameterfvNV (will be remapped) */ + /* _mesa_function_pool[5547]: CombinerParameterfvNV (will be remapped) */ "ip\0" "glCombinerParameterfvNV\0" "\0" - /* _mesa_function_pool[5297]: VertexAttribs3dvNV (will be remapped) */ + /* _mesa_function_pool[5575]: VertexAttribs3dvNV (will be remapped) */ "iip\0" "glVertexAttribs3dvNV\0" "\0" - /* _mesa_function_pool[5323]: VertexAttribI2uiEXT (will be remapped) */ + /* _mesa_function_pool[5601]: VertexAttribI2uiEXT (will be remapped) */ "iii\0" "glVertexAttribI2uiEXT\0" "glVertexAttribI2ui\0" "\0" - /* _mesa_function_pool[5369]: VertexAttribs4fvNV (will be remapped) */ + /* _mesa_function_pool[5647]: VertexAttribs4fvNV (will be remapped) */ "iip\0" "glVertexAttribs4fvNV\0" "\0" - /* _mesa_function_pool[5395]: VertexArrayRangeNV (will be remapped) */ + /* _mesa_function_pool[5673]: VertexArrayRangeNV (will be remapped) */ "ip\0" "glVertexArrayRangeNV\0" "\0" - /* _mesa_function_pool[5420]: FragmentLightiSGIX (dynamic) */ + /* _mesa_function_pool[5698]: FragmentLightiSGIX (dynamic) */ "iii\0" "glFragmentLightiSGIX\0" "\0" - /* _mesa_function_pool[5446]: PolygonOffsetEXT (will be remapped) */ + /* _mesa_function_pool[5724]: PolygonOffsetEXT (will be remapped) */ "ff\0" "glPolygonOffsetEXT\0" "\0" - /* _mesa_function_pool[5469]: VertexAttribI4uivEXT (will be remapped) */ + /* _mesa_function_pool[5747]: VertexAttribI4uivEXT (will be remapped) */ "ip\0" "glVertexAttribI4uivEXT\0" "glVertexAttribI4uiv\0" "\0" - /* _mesa_function_pool[5516]: PollAsyncSGIX (dynamic) */ + /* _mesa_function_pool[5794]: PollAsyncSGIX (dynamic) */ "p\0" "glPollAsyncSGIX\0" "\0" - /* _mesa_function_pool[5535]: DeleteFragmentShaderATI (will be remapped) */ + /* _mesa_function_pool[5813]: DeleteFragmentShaderATI (will be remapped) */ "i\0" "glDeleteFragmentShaderATI\0" "\0" - /* _mesa_function_pool[5564]: Scaled (offset 301) */ + /* _mesa_function_pool[5842]: Scaled (offset 301) */ "ddd\0" "glScaled\0" "\0" - /* _mesa_function_pool[5578]: ResumeTransformFeedback (will be remapped) */ + /* _mesa_function_pool[5856]: ResumeTransformFeedback (will be remapped) */ "\0" "glResumeTransformFeedback\0" "\0" - /* _mesa_function_pool[5606]: Scalef (offset 302) */ + /* _mesa_function_pool[5884]: Scalef (offset 302) */ "fff\0" "glScalef\0" "\0" - /* _mesa_function_pool[5620]: TexCoord2fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[5898]: TexCoord2fNormal3fVertex3fvSUN (dynamic) */ "ppp\0" "glTexCoord2fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[5658]: ProgramEnvParameters4fvEXT (will be remapped) */ + /* _mesa_function_pool[5936]: ProgramEnvParameters4fvEXT (will be remapped) */ "iiip\0" "glProgramEnvParameters4fvEXT\0" "\0" - /* _mesa_function_pool[5693]: MultTransposeMatrixdARB (will be remapped) */ + /* _mesa_function_pool[5971]: MultTransposeMatrixdARB (will be remapped) */ "p\0" "glMultTransposeMatrixd\0" "glMultTransposeMatrixdARB\0" "\0" - /* _mesa_function_pool[5745]: ColorMaskIndexedEXT (will be remapped) */ - "iiiii\0" - "glColorMaskIndexedEXT\0" - "glColorMaski\0" - "\0" - /* _mesa_function_pool[5787]: ObjectUnpurgeableAPPLE (will be remapped) */ + /* _mesa_function_pool[6023]: ObjectUnpurgeableAPPLE (will be remapped) */ "iii\0" "glObjectUnpurgeableAPPLE\0" "\0" - /* _mesa_function_pool[5817]: AlphaFunc (offset 240) */ + /* _mesa_function_pool[6053]: AlphaFunc (offset 240) */ "if\0" "glAlphaFunc\0" "\0" - /* _mesa_function_pool[5833]: WindowPos2svMESA (will be remapped) */ + /* _mesa_function_pool[6069]: WindowPos2svMESA (will be remapped) */ "p\0" "glWindowPos2sv\0" "glWindowPos2svARB\0" "glWindowPos2svMESA\0" "\0" - /* _mesa_function_pool[5888]: EdgeFlag (offset 41) */ + /* _mesa_function_pool[6124]: EdgeFlag (offset 41) */ "i\0" "glEdgeFlag\0" "\0" - /* _mesa_function_pool[5902]: TexCoord2iv (offset 107) */ + /* _mesa_function_pool[6138]: TexCoord2iv (offset 107) */ "p\0" "glTexCoord2iv\0" "\0" - /* _mesa_function_pool[5919]: CompressedTexImage1DARB (will be remapped) */ + /* _mesa_function_pool[6155]: CompressedTexImage1DARB (will be remapped) */ "iiiiiip\0" "glCompressedTexImage1D\0" "glCompressedTexImage1DARB\0" "\0" - /* _mesa_function_pool[5977]: Rotated (offset 299) */ + /* _mesa_function_pool[6213]: Rotated (offset 299) */ "dddd\0" "glRotated\0" "\0" - /* _mesa_function_pool[5993]: GetTexParameterIuivEXT (will be remapped) */ + /* _mesa_function_pool[6229]: GetTexParameterIuivEXT (will be remapped) */ "iip\0" "glGetTexParameterIuivEXT\0" "glGetTexParameterIuiv\0" "\0" - /* _mesa_function_pool[6045]: VertexAttrib2sNV (will be remapped) */ + /* _mesa_function_pool[6281]: VertexAttrib2sNV (will be remapped) */ "iii\0" "glVertexAttrib2sNV\0" "\0" - /* _mesa_function_pool[6069]: ReadPixels (offset 256) */ + /* _mesa_function_pool[6305]: ReadPixels (offset 256) */ "iiiiiip\0" "glReadPixels\0" "\0" - /* _mesa_function_pool[6091]: EdgeFlagv (offset 42) */ + /* _mesa_function_pool[6327]: VertexAttribDivisorARB (will be remapped) */ + "ii\0" + "glVertexAttribDivisorARB\0" + "\0" + /* _mesa_function_pool[6356]: EdgeFlagv (offset 42) */ "p\0" "glEdgeFlagv\0" "\0" - /* _mesa_function_pool[6106]: NormalPointerListIBM (dynamic) */ + /* _mesa_function_pool[6371]: NormalPointerListIBM (dynamic) */ "iipi\0" "glNormalPointerListIBM\0" "\0" - /* _mesa_function_pool[6135]: IndexPointerEXT (will be remapped) */ + /* _mesa_function_pool[6400]: IndexPointerEXT (will be remapped) */ "iiip\0" "glIndexPointerEXT\0" "\0" - /* _mesa_function_pool[6159]: Color4iv (offset 32) */ + /* _mesa_function_pool[6424]: Color4iv (offset 32) */ "p\0" "glColor4iv\0" "\0" - /* _mesa_function_pool[6173]: TexParameterf (offset 178) */ + /* _mesa_function_pool[6438]: TexParameterf (offset 178) */ "iif\0" "glTexParameterf\0" "\0" - /* _mesa_function_pool[6194]: TexParameteri (offset 180) */ + /* _mesa_function_pool[6459]: TexParameteri (offset 180) */ "iii\0" "glTexParameteri\0" "\0" - /* _mesa_function_pool[6215]: NormalPointerEXT (will be remapped) */ + /* _mesa_function_pool[6480]: NormalPointerEXT (will be remapped) */ "iiip\0" "glNormalPointerEXT\0" "\0" - /* _mesa_function_pool[6240]: MultiTexCoord3dARB (offset 392) */ + /* _mesa_function_pool[6505]: MultiTexCoord3dARB (offset 392) */ "iddd\0" "glMultiTexCoord3d\0" "glMultiTexCoord3dARB\0" "\0" - /* _mesa_function_pool[6285]: MultiTexCoord2iARB (offset 388) */ + /* _mesa_function_pool[6550]: MultiTexCoord2iARB (offset 388) */ "iii\0" "glMultiTexCoord2i\0" "glMultiTexCoord2iARB\0" "\0" - /* _mesa_function_pool[6329]: DrawPixels (offset 257) */ + /* _mesa_function_pool[6594]: DrawPixels (offset 257) */ "iiiip\0" "glDrawPixels\0" "\0" - /* _mesa_function_pool[6349]: ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[6614]: ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (dynamic) */ "iffffffff\0" "glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[6409]: MultiTexCoord2svARB (offset 391) */ + /* _mesa_function_pool[6674]: MultiTexCoord2svARB (offset 391) */ "ip\0" "glMultiTexCoord2sv\0" "glMultiTexCoord2svARB\0" "\0" - /* _mesa_function_pool[6454]: ReplacementCodeubvSUN (dynamic) */ + /* _mesa_function_pool[6719]: ReplacementCodeubvSUN (dynamic) */ "p\0" "glReplacementCodeubvSUN\0" "\0" - /* _mesa_function_pool[6481]: Uniform3iARB (will be remapped) */ + /* _mesa_function_pool[6746]: Uniform3iARB (will be remapped) */ "iiii\0" "glUniform3i\0" "glUniform3iARB\0" "\0" - /* _mesa_function_pool[6514]: DrawTransformFeedback (will be remapped) */ + /* _mesa_function_pool[6779]: DrawTransformFeedback (will be remapped) */ "ii\0" "glDrawTransformFeedback\0" "\0" - /* _mesa_function_pool[6542]: DrawElementsInstancedARB (will be remapped) */ + /* _mesa_function_pool[6807]: DrawElementsInstancedARB (will be remapped) */ "iiipi\0" "glDrawElementsInstancedARB\0" "glDrawElementsInstancedEXT\0" "glDrawElementsInstanced\0" "\0" - /* _mesa_function_pool[6627]: GetShaderInfoLog (will be remapped) */ + /* _mesa_function_pool[6892]: GetShaderInfoLog (will be remapped) */ "iipp\0" "glGetShaderInfoLog\0" "\0" - /* _mesa_function_pool[6652]: WeightivARB (dynamic) */ + /* _mesa_function_pool[6917]: WeightivARB (dynamic) */ "ip\0" "glWeightivARB\0" "\0" - /* _mesa_function_pool[6670]: PollInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[6935]: PollInstrumentsSGIX (dynamic) */ "p\0" "glPollInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[6695]: GlobalAlphaFactordSUN (dynamic) */ + /* _mesa_function_pool[6960]: GlobalAlphaFactordSUN (dynamic) */ "d\0" "glGlobalAlphaFactordSUN\0" "\0" - /* _mesa_function_pool[6722]: GetFinalCombinerInputParameterfvNV (will be remapped) */ + /* _mesa_function_pool[6987]: GetFinalCombinerInputParameterfvNV (will be remapped) */ "iip\0" "glGetFinalCombinerInputParameterfvNV\0" "\0" - /* _mesa_function_pool[6764]: GenerateMipmapEXT (will be remapped) */ + /* _mesa_function_pool[7029]: GenerateMipmapEXT (will be remapped) */ "i\0" "glGenerateMipmap\0" "glGenerateMipmapEXT\0" "\0" - /* _mesa_function_pool[6804]: GenLists (offset 5) */ + /* _mesa_function_pool[7069]: GenLists (offset 5) */ "i\0" "glGenLists\0" "\0" - /* _mesa_function_pool[6818]: DepthRangef (will be remapped) */ + /* _mesa_function_pool[7083]: DepthRangef (will be remapped) */ "ff\0" "glDepthRangef\0" "\0" - /* _mesa_function_pool[6836]: GetMapAttribParameterivNV (dynamic) */ + /* _mesa_function_pool[7101]: GetMapAttribParameterivNV (dynamic) */ "iiip\0" "glGetMapAttribParameterivNV\0" "\0" - /* _mesa_function_pool[6870]: CreateShaderObjectARB (will be remapped) */ + /* _mesa_function_pool[7135]: CreateShaderObjectARB (will be remapped) */ "i\0" "glCreateShaderObjectARB\0" "\0" - /* _mesa_function_pool[6897]: GetSharpenTexFuncSGIS (dynamic) */ + /* _mesa_function_pool[7162]: GetSharpenTexFuncSGIS (dynamic) */ "ip\0" "glGetSharpenTexFuncSGIS\0" "\0" - /* _mesa_function_pool[6925]: BufferDataARB (will be remapped) */ + /* _mesa_function_pool[7190]: BufferDataARB (will be remapped) */ "iipi\0" "glBufferData\0" "glBufferDataARB\0" "\0" - /* _mesa_function_pool[6960]: FlushVertexArrayRangeNV (will be remapped) */ + /* _mesa_function_pool[7225]: FlushVertexArrayRangeNV (will be remapped) */ "\0" "glFlushVertexArrayRangeNV\0" "\0" - /* _mesa_function_pool[6988]: MapGrid2d (offset 226) */ + /* _mesa_function_pool[7253]: MapGrid2d (offset 226) */ "iddidd\0" "glMapGrid2d\0" "\0" - /* _mesa_function_pool[7008]: MapGrid2f (offset 227) */ + /* _mesa_function_pool[7273]: MapGrid2f (offset 227) */ "iffiff\0" "glMapGrid2f\0" "\0" - /* _mesa_function_pool[7028]: SampleMapATI (will be remapped) */ + /* _mesa_function_pool[7293]: SampleMapATI (will be remapped) */ "iii\0" "glSampleMapATI\0" "\0" - /* _mesa_function_pool[7048]: VertexPointerEXT (will be remapped) */ + /* _mesa_function_pool[7313]: VertexPointerEXT (will be remapped) */ "iiiip\0" "glVertexPointerEXT\0" "\0" - /* _mesa_function_pool[7074]: GetTexFilterFuncSGIS (dynamic) */ + /* _mesa_function_pool[7339]: GetTexFilterFuncSGIS (dynamic) */ "iip\0" "glGetTexFilterFuncSGIS\0" "\0" - /* _mesa_function_pool[7102]: Scissor (offset 176) */ + /* _mesa_function_pool[7367]: Scissor (offset 176) */ "iiii\0" "glScissor\0" "\0" - /* _mesa_function_pool[7118]: Fogf (offset 153) */ + /* _mesa_function_pool[7383]: Fogf (offset 153) */ "if\0" "glFogf\0" "\0" - /* _mesa_function_pool[7129]: ReplacementCodeuiColor4ubVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[7394]: ReplacementCodeuiColor4ubVertex3fvSUN (dynamic) */ "ppp\0" "glReplacementCodeuiColor4ubVertex3fvSUN\0" "\0" - /* _mesa_function_pool[7174]: TexSubImage1D (offset 332) */ + /* _mesa_function_pool[7439]: TexSubImage1D (offset 332) */ "iiiiiip\0" "glTexSubImage1D\0" "glTexSubImage1DEXT\0" "\0" - /* _mesa_function_pool[7218]: VertexAttrib1sARB (will be remapped) */ + /* _mesa_function_pool[7483]: VertexAttrib1sARB (will be remapped) */ "ii\0" "glVertexAttrib1s\0" "glVertexAttrib1sARB\0" "\0" - /* _mesa_function_pool[7259]: FenceSync (will be remapped) */ + /* _mesa_function_pool[7524]: FenceSync (will be remapped) */ "ii\0" "glFenceSync\0" "\0" - /* _mesa_function_pool[7275]: Color4usv (offset 40) */ + /* _mesa_function_pool[7540]: Color4usv (offset 40) */ "p\0" "glColor4usv\0" "\0" - /* _mesa_function_pool[7290]: Fogi (offset 155) */ + /* _mesa_function_pool[7555]: Fogi (offset 155) */ "ii\0" "glFogi\0" "\0" - /* _mesa_function_pool[7301]: DepthRange (offset 288) */ + /* _mesa_function_pool[7566]: DepthRange (offset 288) */ "dd\0" "glDepthRange\0" "\0" - /* _mesa_function_pool[7318]: RasterPos3iv (offset 75) */ + /* _mesa_function_pool[7583]: RasterPos3iv (offset 75) */ "p\0" "glRasterPos3iv\0" "\0" - /* _mesa_function_pool[7336]: FinalCombinerInputNV (will be remapped) */ + /* _mesa_function_pool[7601]: FinalCombinerInputNV (will be remapped) */ "iiii\0" "glFinalCombinerInputNV\0" "\0" - /* _mesa_function_pool[7365]: TexCoord2i (offset 106) */ + /* _mesa_function_pool[7630]: TexCoord2i (offset 106) */ "ii\0" "glTexCoord2i\0" "\0" - /* _mesa_function_pool[7382]: PixelMapfv (offset 251) */ + /* _mesa_function_pool[7647]: PixelMapfv (offset 251) */ "iip\0" "glPixelMapfv\0" "\0" - /* _mesa_function_pool[7400]: Color4ui (offset 37) */ + /* _mesa_function_pool[7665]: Color4ui (offset 37) */ "iiii\0" "glColor4ui\0" "\0" - /* _mesa_function_pool[7417]: RasterPos3s (offset 76) */ + /* _mesa_function_pool[7682]: RasterPos3s (offset 76) */ "iii\0" "glRasterPos3s\0" "\0" - /* _mesa_function_pool[7436]: Color3usv (offset 24) */ + /* _mesa_function_pool[7701]: Color3usv (offset 24) */ "p\0" "glColor3usv\0" "\0" - /* _mesa_function_pool[7451]: FlushRasterSGIX (dynamic) */ + /* _mesa_function_pool[7716]: FlushRasterSGIX (dynamic) */ "\0" "glFlushRasterSGIX\0" "\0" - /* _mesa_function_pool[7471]: TexCoord2f (offset 104) */ + /* _mesa_function_pool[7736]: TexCoord2f (offset 104) */ "ff\0" "glTexCoord2f\0" "\0" - /* _mesa_function_pool[7488]: ReplacementCodeuiTexCoord2fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[7753]: ReplacementCodeuiTexCoord2fVertex3fSUN (dynamic) */ "ifffff\0" "glReplacementCodeuiTexCoord2fVertex3fSUN\0" "\0" - /* _mesa_function_pool[7537]: TexCoord2d (offset 102) */ + /* _mesa_function_pool[7802]: TexCoord2d (offset 102) */ "dd\0" "glTexCoord2d\0" "\0" - /* _mesa_function_pool[7554]: RasterPos3d (offset 70) */ + /* _mesa_function_pool[7819]: RasterPos3d (offset 70) */ "ddd\0" "glRasterPos3d\0" "\0" - /* _mesa_function_pool[7573]: RasterPos3f (offset 72) */ + /* _mesa_function_pool[7838]: RasterPos3f (offset 72) */ "fff\0" "glRasterPos3f\0" "\0" - /* _mesa_function_pool[7592]: Uniform1fARB (will be remapped) */ + /* _mesa_function_pool[7857]: Uniform1fARB (will be remapped) */ "if\0" "glUniform1f\0" "glUniform1fARB\0" "\0" - /* _mesa_function_pool[7623]: AreTexturesResident (offset 322) */ + /* _mesa_function_pool[7888]: AreTexturesResident (offset 322) */ "ipp\0" "glAreTexturesResident\0" "glAreTexturesResidentEXT\0" "\0" - /* _mesa_function_pool[7675]: TexCoord2s (offset 108) */ + /* _mesa_function_pool[7940]: TexCoord2s (offset 108) */ "ii\0" "glTexCoord2s\0" "\0" - /* _mesa_function_pool[7692]: StencilOpSeparate (will be remapped) */ + /* _mesa_function_pool[7957]: StencilOpSeparate (will be remapped) */ "iiii\0" "glStencilOpSeparate\0" "glStencilOpSeparateATI\0" "\0" - /* _mesa_function_pool[7741]: ColorTableParameteriv (offset 341) */ + /* _mesa_function_pool[8006]: ColorTableParameteriv (offset 341) */ "iip\0" "glColorTableParameteriv\0" "glColorTableParameterivSGI\0" "\0" - /* _mesa_function_pool[7797]: FogCoordPointerListIBM (dynamic) */ + /* _mesa_function_pool[8062]: FogCoordPointerListIBM (dynamic) */ "iipi\0" "glFogCoordPointerListIBM\0" "\0" - /* _mesa_function_pool[7828]: WindowPos3dMESA (will be remapped) */ + /* _mesa_function_pool[8093]: WindowPos3dMESA (will be remapped) */ "ddd\0" "glWindowPos3d\0" "glWindowPos3dARB\0" "glWindowPos3dMESA\0" "\0" - /* _mesa_function_pool[7882]: Color4us (offset 39) */ + /* _mesa_function_pool[8147]: Color4us (offset 39) */ "iiii\0" "glColor4us\0" "\0" - /* _mesa_function_pool[7899]: PointParameterfvEXT (will be remapped) */ + /* _mesa_function_pool[8164]: PointParameterfvEXT (will be remapped) */ "ip\0" "glPointParameterfv\0" "glPointParameterfvARB\0" "glPointParameterfvEXT\0" "glPointParameterfvSGIS\0" "\0" - /* _mesa_function_pool[7989]: Color3bv (offset 10) */ + /* _mesa_function_pool[8254]: Color3bv (offset 10) */ "p\0" "glColor3bv\0" "\0" - /* _mesa_function_pool[8003]: WindowPos2fvMESA (will be remapped) */ + /* _mesa_function_pool[8268]: GetnCompressedTexImageARB (will be remapped) */ + "iiip\0" + "glGetnCompressedTexImageARB\0" + "\0" + /* _mesa_function_pool[8302]: WindowPos2fvMESA (will be remapped) */ "p\0" "glWindowPos2fv\0" "glWindowPos2fvARB\0" "glWindowPos2fvMESA\0" "\0" - /* _mesa_function_pool[8058]: SecondaryColor3bvEXT (will be remapped) */ + /* _mesa_function_pool[8357]: SecondaryColor3bvEXT (will be remapped) */ "p\0" "glSecondaryColor3bv\0" "glSecondaryColor3bvEXT\0" "\0" - /* _mesa_function_pool[8104]: VertexPointerListIBM (dynamic) */ + /* _mesa_function_pool[8403]: VertexPointerListIBM (dynamic) */ "iiipi\0" "glVertexPointerListIBM\0" "\0" - /* _mesa_function_pool[8134]: GetProgramLocalParameterfvARB (will be remapped) */ + /* _mesa_function_pool[8433]: GetProgramLocalParameterfvARB (will be remapped) */ "iip\0" "glGetProgramLocalParameterfvARB\0" "\0" - /* _mesa_function_pool[8171]: FragmentMaterialfSGIX (dynamic) */ + /* _mesa_function_pool[8470]: FragmentMaterialfSGIX (dynamic) */ "iif\0" "glFragmentMaterialfSGIX\0" "\0" - /* _mesa_function_pool[8200]: BindSampler (will be remapped) */ + /* _mesa_function_pool[8499]: BindSampler (will be remapped) */ "ii\0" "glBindSampler\0" "\0" - /* _mesa_function_pool[8218]: RenderbufferStorageEXT (will be remapped) */ + /* _mesa_function_pool[8517]: RenderbufferStorageEXT (will be remapped) */ "iiii\0" "glRenderbufferStorage\0" "glRenderbufferStorageEXT\0" "\0" - /* _mesa_function_pool[8271]: IsFenceNV (will be remapped) */ + /* _mesa_function_pool[8570]: IsFenceNV (will be remapped) */ "i\0" "glIsFenceNV\0" "\0" - /* _mesa_function_pool[8286]: AttachObjectARB (will be remapped) */ + /* _mesa_function_pool[8585]: AttachObjectARB (will be remapped) */ "ii\0" "glAttachObjectARB\0" "\0" - /* _mesa_function_pool[8308]: GetFragmentLightivSGIX (dynamic) */ + /* _mesa_function_pool[8607]: GetFragmentLightivSGIX (dynamic) */ "iip\0" "glGetFragmentLightivSGIX\0" "\0" - /* _mesa_function_pool[8338]: UniformMatrix2fvARB (will be remapped) */ + /* _mesa_function_pool[8637]: UniformMatrix2fvARB (will be remapped) */ "iiip\0" "glUniformMatrix2fv\0" "glUniformMatrix2fvARB\0" "\0" - /* _mesa_function_pool[8385]: MultiTexCoord2fARB (offset 386) */ + /* _mesa_function_pool[8684]: MultiTexCoord2fARB (offset 386) */ "iff\0" "glMultiTexCoord2f\0" "glMultiTexCoord2fARB\0" "\0" - /* _mesa_function_pool[8429]: ColorTable (offset 339) */ + /* _mesa_function_pool[8728]: ColorTable (offset 339) */ "iiiiip\0" "glColorTable\0" "glColorTableSGI\0" "glColorTableEXT\0" "\0" - /* _mesa_function_pool[8482]: IndexPointer (offset 314) */ + /* _mesa_function_pool[8781]: IndexPointer (offset 314) */ "iip\0" "glIndexPointer\0" "\0" - /* _mesa_function_pool[8502]: Accum (offset 213) */ + /* _mesa_function_pool[8801]: Accum (offset 213) */ "if\0" "glAccum\0" "\0" - /* _mesa_function_pool[8514]: GetTexImage (offset 281) */ + /* _mesa_function_pool[8813]: GetTexImage (offset 281) */ "iiiip\0" "glGetTexImage\0" "\0" - /* _mesa_function_pool[8535]: MapControlPointsNV (dynamic) */ + /* _mesa_function_pool[8834]: MapControlPointsNV (dynamic) */ "iiiiiiiip\0" "glMapControlPointsNV\0" "\0" - /* _mesa_function_pool[8567]: ConvolutionFilter2D (offset 349) */ + /* _mesa_function_pool[8866]: ConvolutionFilter2D (offset 349) */ "iiiiiip\0" "glConvolutionFilter2D\0" "glConvolutionFilter2DEXT\0" "\0" - /* _mesa_function_pool[8623]: Finish (offset 216) */ + /* _mesa_function_pool[8922]: Finish (offset 216) */ "\0" "glFinish\0" "\0" - /* _mesa_function_pool[8634]: MapParameterfvNV (dynamic) */ + /* _mesa_function_pool[8933]: MapParameterfvNV (dynamic) */ "iip\0" "glMapParameterfvNV\0" "\0" - /* _mesa_function_pool[8658]: ClearStencil (offset 207) */ + /* _mesa_function_pool[8957]: ClearStencil (offset 207) */ "i\0" "glClearStencil\0" "\0" - /* _mesa_function_pool[8676]: VertexAttrib3dvARB (will be remapped) */ + /* _mesa_function_pool[8975]: VertexAttrib3dvARB (will be remapped) */ "ip\0" "glVertexAttrib3dv\0" "glVertexAttrib3dvARB\0" "\0" - /* _mesa_function_pool[8719]: Uniform4uivEXT (will be remapped) */ + /* _mesa_function_pool[9018]: Uniform4uivEXT (will be remapped) */ "iip\0" "glUniform4uivEXT\0" "glUniform4uiv\0" "\0" - /* _mesa_function_pool[8755]: HintPGI (dynamic) */ + /* _mesa_function_pool[9054]: HintPGI (dynamic) */ "ii\0" "glHintPGI\0" "\0" - /* _mesa_function_pool[8769]: ConvolutionParameteriv (offset 353) */ + /* _mesa_function_pool[9068]: ConvolutionParameteriv (offset 353) */ "iip\0" "glConvolutionParameteriv\0" "glConvolutionParameterivEXT\0" "\0" - /* _mesa_function_pool[8827]: Color4s (offset 33) */ + /* _mesa_function_pool[9126]: Color4s (offset 33) */ "iiii\0" "glColor4s\0" "\0" - /* _mesa_function_pool[8843]: InterleavedArrays (offset 317) */ + /* _mesa_function_pool[9142]: InterleavedArrays (offset 317) */ "iip\0" "glInterleavedArrays\0" "\0" - /* _mesa_function_pool[8868]: RasterPos2fv (offset 65) */ + /* _mesa_function_pool[9167]: RasterPos2fv (offset 65) */ "p\0" "glRasterPos2fv\0" "\0" - /* _mesa_function_pool[8886]: TexCoord1fv (offset 97) */ + /* _mesa_function_pool[9185]: TexCoord1fv (offset 97) */ "p\0" "glTexCoord1fv\0" "\0" - /* _mesa_function_pool[8903]: Vertex2d (offset 126) */ + /* _mesa_function_pool[9202]: Vertex2d (offset 126) */ "dd\0" "glVertex2d\0" "\0" - /* _mesa_function_pool[8918]: CullParameterdvEXT (dynamic) */ + /* _mesa_function_pool[9217]: CullParameterdvEXT (dynamic) */ "ip\0" "glCullParameterdvEXT\0" "\0" - /* _mesa_function_pool[8943]: ProgramNamedParameter4fNV (will be remapped) */ + /* _mesa_function_pool[9242]: ProgramNamedParameter4fNV (will be remapped) */ "iipffff\0" "glProgramNamedParameter4fNV\0" "\0" - /* _mesa_function_pool[8980]: Color3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[9279]: Color3fVertex3fSUN (dynamic) */ "ffffff\0" "glColor3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[9009]: ProgramEnvParameter4fvARB (will be remapped) */ + /* _mesa_function_pool[9308]: ProgramEnvParameter4fvARB (will be remapped) */ "iip\0" "glProgramEnvParameter4fvARB\0" "glProgramParameter4fvNV\0" "\0" - /* _mesa_function_pool[9066]: Color4i (offset 31) */ + /* _mesa_function_pool[9365]: Color4i (offset 31) */ "iiii\0" "glColor4i\0" "\0" - /* _mesa_function_pool[9082]: Color4f (offset 29) */ + /* _mesa_function_pool[9381]: Color4f (offset 29) */ "ffff\0" "glColor4f\0" "\0" - /* _mesa_function_pool[9098]: RasterPos4fv (offset 81) */ + /* _mesa_function_pool[9397]: RasterPos4fv (offset 81) */ "p\0" "glRasterPos4fv\0" "\0" - /* _mesa_function_pool[9116]: Color4d (offset 27) */ + /* _mesa_function_pool[9415]: Color4d (offset 27) */ "dddd\0" "glColor4d\0" "\0" - /* _mesa_function_pool[9132]: ClearIndex (offset 205) */ + /* _mesa_function_pool[9431]: ClearIndex (offset 205) */ "f\0" "glClearIndex\0" "\0" - /* _mesa_function_pool[9148]: Color4b (offset 25) */ + /* _mesa_function_pool[9447]: Color4b (offset 25) */ "iiii\0" "glColor4b\0" "\0" - /* _mesa_function_pool[9164]: LoadMatrixd (offset 292) */ + /* _mesa_function_pool[9463]: LoadMatrixd (offset 292) */ "p\0" "glLoadMatrixd\0" "\0" - /* _mesa_function_pool[9181]: FragmentLightModeliSGIX (dynamic) */ + /* _mesa_function_pool[9480]: FragmentLightModeliSGIX (dynamic) */ "ii\0" "glFragmentLightModeliSGIX\0" "\0" - /* _mesa_function_pool[9211]: RasterPos2dv (offset 63) */ + /* _mesa_function_pool[9510]: RasterPos2dv (offset 63) */ "p\0" "glRasterPos2dv\0" "\0" - /* _mesa_function_pool[9229]: ConvolutionParameterfv (offset 351) */ + /* _mesa_function_pool[9528]: ConvolutionParameterfv (offset 351) */ "iip\0" "glConvolutionParameterfv\0" "glConvolutionParameterfvEXT\0" "\0" - /* _mesa_function_pool[9287]: TbufferMask3DFX (dynamic) */ + /* _mesa_function_pool[9586]: TbufferMask3DFX (dynamic) */ "i\0" "glTbufferMask3DFX\0" "\0" - /* _mesa_function_pool[9308]: GetTexGendv (offset 278) */ + /* _mesa_function_pool[9607]: GetTexGendv (offset 278) */ "iip\0" "glGetTexGendv\0" "\0" - /* _mesa_function_pool[9327]: GetVertexAttribfvNV (will be remapped) */ + /* _mesa_function_pool[9626]: GetVertexAttribfvNV (will be remapped) */ "iip\0" "glGetVertexAttribfvNV\0" "\0" - /* _mesa_function_pool[9354]: BeginTransformFeedbackEXT (will be remapped) */ + /* _mesa_function_pool[9653]: BeginTransformFeedbackEXT (will be remapped) */ "i\0" "glBeginTransformFeedbackEXT\0" "glBeginTransformFeedback\0" "\0" - /* _mesa_function_pool[9410]: LoadProgramNV (will be remapped) */ + /* _mesa_function_pool[9709]: LoadProgramNV (will be remapped) */ "iiip\0" "glLoadProgramNV\0" "\0" - /* _mesa_function_pool[9432]: WaitSync (will be remapped) */ + /* _mesa_function_pool[9731]: WaitSync (will be remapped) */ "iii\0" "glWaitSync\0" "\0" - /* _mesa_function_pool[9448]: EndList (offset 1) */ + /* _mesa_function_pool[9747]: EndList (offset 1) */ "\0" "glEndList\0" "\0" - /* _mesa_function_pool[9460]: VertexAttrib4fvNV (will be remapped) */ + /* _mesa_function_pool[9759]: VertexAttrib4fvNV (will be remapped) */ "ip\0" "glVertexAttrib4fvNV\0" "\0" - /* _mesa_function_pool[9484]: GetAttachedObjectsARB (will be remapped) */ + /* _mesa_function_pool[9783]: GetAttachedObjectsARB (will be remapped) */ "iipp\0" "glGetAttachedObjectsARB\0" "\0" - /* _mesa_function_pool[9514]: Uniform3fvARB (will be remapped) */ + /* _mesa_function_pool[9813]: Uniform3fvARB (will be remapped) */ "iip\0" "glUniform3fv\0" "glUniform3fvARB\0" "\0" - /* _mesa_function_pool[9548]: EvalCoord1fv (offset 231) */ + /* _mesa_function_pool[9847]: EvalCoord1fv (offset 231) */ "p\0" "glEvalCoord1fv\0" "\0" - /* _mesa_function_pool[9566]: DrawRangeElements (offset 338) */ + /* _mesa_function_pool[9865]: DrawRangeElements (offset 338) */ "iiiiip\0" "glDrawRangeElements\0" "glDrawRangeElementsEXT\0" "\0" - /* _mesa_function_pool[9617]: EvalMesh2 (offset 238) */ + /* _mesa_function_pool[9916]: EvalMesh2 (offset 238) */ "iiiii\0" "glEvalMesh2\0" "\0" - /* _mesa_function_pool[9636]: Vertex4fv (offset 145) */ + /* _mesa_function_pool[9935]: Vertex4fv (offset 145) */ "p\0" "glVertex4fv\0" "\0" - /* _mesa_function_pool[9651]: GenTransformFeedbacks (will be remapped) */ + /* _mesa_function_pool[9950]: GenTransformFeedbacks (will be remapped) */ "ip\0" "glGenTransformFeedbacks\0" "\0" - /* _mesa_function_pool[9679]: SpriteParameterfvSGIX (dynamic) */ + /* _mesa_function_pool[9978]: SpriteParameterfvSGIX (dynamic) */ "ip\0" "glSpriteParameterfvSGIX\0" "\0" - /* _mesa_function_pool[9707]: CheckFramebufferStatusEXT (will be remapped) */ + /* _mesa_function_pool[10006]: CheckFramebufferStatusEXT (will be remapped) */ "i\0" "glCheckFramebufferStatus\0" "glCheckFramebufferStatusEXT\0" "\0" - /* _mesa_function_pool[9763]: GlobalAlphaFactoruiSUN (dynamic) */ + /* _mesa_function_pool[10062]: GlobalAlphaFactoruiSUN (dynamic) */ "i\0" "glGlobalAlphaFactoruiSUN\0" "\0" - /* _mesa_function_pool[9791]: GetHandleARB (will be remapped) */ + /* _mesa_function_pool[10090]: GetHandleARB (will be remapped) */ "i\0" "glGetHandleARB\0" "\0" - /* _mesa_function_pool[9809]: GetVertexAttribivARB (will be remapped) */ + /* _mesa_function_pool[10108]: GetVertexAttribivARB (will be remapped) */ "iip\0" "glGetVertexAttribiv\0" "glGetVertexAttribivARB\0" "\0" - /* _mesa_function_pool[9857]: BlendFunciARB (will be remapped) */ + /* _mesa_function_pool[10156]: BlendFunciARB (will be remapped) */ "iii\0" "glBlendFunciARB\0" + "glBlendFuncIndexedAMD\0" "\0" - /* _mesa_function_pool[9878]: GetCombinerInputParameterfvNV (will be remapped) */ - "iiiip\0" - "glGetCombinerInputParameterfvNV\0" + /* _mesa_function_pool[10199]: GetnUniformivARB (will be remapped) */ + "iiip\0" + "glGetnUniformivARB\0" "\0" - /* _mesa_function_pool[9917]: GetTexParameterIivEXT (will be remapped) */ + /* _mesa_function_pool[10224]: GetTexParameterIivEXT (will be remapped) */ "iip\0" "glGetTexParameterIivEXT\0" "glGetTexParameterIiv\0" "\0" - /* _mesa_function_pool[9967]: CreateProgram (will be remapped) */ + /* _mesa_function_pool[10274]: CreateProgram (will be remapped) */ "\0" "glCreateProgram\0" "\0" - /* _mesa_function_pool[9985]: LoadTransposeMatrixdARB (will be remapped) */ + /* _mesa_function_pool[10292]: LoadTransposeMatrixdARB (will be remapped) */ "p\0" "glLoadTransposeMatrixd\0" "glLoadTransposeMatrixdARB\0" "\0" - /* _mesa_function_pool[10037]: ReleaseShaderCompiler (will be remapped) */ + /* _mesa_function_pool[10344]: ReleaseShaderCompiler (will be remapped) */ "\0" "glReleaseShaderCompiler\0" "\0" - /* _mesa_function_pool[10063]: GetMinmax (offset 364) */ + /* _mesa_function_pool[10370]: GetMinmax (offset 364) */ "iiiip\0" "glGetMinmax\0" "glGetMinmaxEXT\0" "\0" - /* _mesa_function_pool[10097]: StencilFuncSeparate (will be remapped) */ + /* _mesa_function_pool[10404]: StencilFuncSeparate (will be remapped) */ "iiii\0" "glStencilFuncSeparate\0" "\0" - /* _mesa_function_pool[10125]: SecondaryColor3sEXT (will be remapped) */ + /* _mesa_function_pool[10432]: SecondaryColor3sEXT (will be remapped) */ "iii\0" "glSecondaryColor3s\0" "glSecondaryColor3sEXT\0" "\0" - /* _mesa_function_pool[10171]: Color3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[10478]: Color3fVertex3fvSUN (dynamic) */ "pp\0" "glColor3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[10197]: GetInteger64i_v (will be remapped) */ + /* _mesa_function_pool[10504]: GetInteger64i_v (will be remapped) */ "iip\0" "glGetInteger64i_v\0" "\0" - /* _mesa_function_pool[10220]: Normal3fv (offset 57) */ + /* _mesa_function_pool[10527]: GetVertexAttribdvNV (will be remapped) */ + "iip\0" + "glGetVertexAttribdvNV\0" + "\0" + /* _mesa_function_pool[10554]: Normal3fv (offset 57) */ "p\0" "glNormal3fv\0" "\0" - /* _mesa_function_pool[10235]: GlobalAlphaFactorbSUN (dynamic) */ + /* _mesa_function_pool[10569]: GlobalAlphaFactorbSUN (dynamic) */ "i\0" "glGlobalAlphaFactorbSUN\0" "\0" - /* _mesa_function_pool[10262]: Color3us (offset 23) */ + /* _mesa_function_pool[10596]: Color3us (offset 23) */ "iii\0" "glColor3us\0" "\0" - /* _mesa_function_pool[10278]: ImageTransformParameterfvHP (dynamic) */ + /* _mesa_function_pool[10612]: ImageTransformParameterfvHP (dynamic) */ "iip\0" "glImageTransformParameterfvHP\0" "\0" - /* _mesa_function_pool[10313]: VertexAttrib4ivARB (will be remapped) */ + /* _mesa_function_pool[10647]: VertexAttrib4ivARB (will be remapped) */ "ip\0" "glVertexAttrib4iv\0" "glVertexAttrib4ivARB\0" "\0" - /* _mesa_function_pool[10356]: End (offset 43) */ + /* _mesa_function_pool[10690]: End (offset 43) */ "\0" "glEnd\0" "\0" - /* _mesa_function_pool[10364]: VertexAttrib3fNV (will be remapped) */ + /* _mesa_function_pool[10698]: VertexAttrib3fNV (will be remapped) */ "ifff\0" "glVertexAttrib3fNV\0" "\0" - /* _mesa_function_pool[10389]: VertexAttribs2dvNV (will be remapped) */ + /* _mesa_function_pool[10723]: VertexAttribs2dvNV (will be remapped) */ "iip\0" "glVertexAttribs2dvNV\0" "\0" - /* _mesa_function_pool[10415]: GetQueryObjectui64vEXT (will be remapped) */ + /* _mesa_function_pool[10749]: GetQueryObjectui64vEXT (will be remapped) */ "iip\0" "glGetQueryObjectui64vEXT\0" "\0" - /* _mesa_function_pool[10445]: MultiTexCoord3fvARB (offset 395) */ + /* _mesa_function_pool[10779]: MultiTexCoord3fvARB (offset 395) */ "ip\0" "glMultiTexCoord3fv\0" "glMultiTexCoord3fvARB\0" "\0" - /* _mesa_function_pool[10490]: SecondaryColor3dEXT (will be remapped) */ + /* _mesa_function_pool[10824]: SecondaryColor3dEXT (will be remapped) */ "ddd\0" "glSecondaryColor3d\0" "glSecondaryColor3dEXT\0" "\0" - /* _mesa_function_pool[10536]: Color3ub (offset 19) */ + /* _mesa_function_pool[10870]: Color3ub (offset 19) */ "iii\0" "glColor3ub\0" "\0" - /* _mesa_function_pool[10552]: GetProgramParameterfvNV (will be remapped) */ + /* _mesa_function_pool[10886]: GetProgramParameterfvNV (will be remapped) */ "iiip\0" "glGetProgramParameterfvNV\0" "\0" - /* _mesa_function_pool[10584]: TangentPointerEXT (dynamic) */ + /* _mesa_function_pool[10918]: TangentPointerEXT (dynamic) */ "iip\0" "glTangentPointerEXT\0" "\0" - /* _mesa_function_pool[10609]: Color4fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[10943]: Color4fNormal3fVertex3fvSUN (dynamic) */ "ppp\0" "glColor4fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[10644]: GetInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[10978]: GetInstrumentsSGIX (dynamic) */ "\0" "glGetInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[10667]: GetUniformuivEXT (will be remapped) */ + /* _mesa_function_pool[11001]: GetUniformuivEXT (will be remapped) */ "iip\0" "glGetUniformuivEXT\0" "glGetUniformuiv\0" "\0" - /* _mesa_function_pool[10707]: Color3ui (offset 21) */ + /* _mesa_function_pool[11041]: Color3ui (offset 21) */ "iii\0" "glColor3ui\0" "\0" - /* _mesa_function_pool[10723]: EvalMapsNV (dynamic) */ + /* _mesa_function_pool[11057]: EvalMapsNV (dynamic) */ "ii\0" "glEvalMapsNV\0" "\0" - /* _mesa_function_pool[10740]: TexSubImage2D (offset 333) */ + /* _mesa_function_pool[11074]: TexSubImage2D (offset 333) */ "iiiiiiiip\0" "glTexSubImage2D\0" "glTexSubImage2DEXT\0" "\0" - /* _mesa_function_pool[10786]: FragmentLightivSGIX (dynamic) */ + /* _mesa_function_pool[11120]: FragmentLightivSGIX (dynamic) */ "iip\0" "glFragmentLightivSGIX\0" "\0" - /* _mesa_function_pool[10813]: GetTexParameterPointervAPPLE (will be remapped) */ + /* _mesa_function_pool[11147]: GetTexParameterPointervAPPLE (will be remapped) */ "iip\0" "glGetTexParameterPointervAPPLE\0" "\0" - /* _mesa_function_pool[10849]: TexGenfv (offset 191) */ + /* _mesa_function_pool[11183]: TexGenfv (offset 191) */ "iip\0" "glTexGenfv\0" "\0" - /* _mesa_function_pool[10865]: GetTransformFeedbackVaryingEXT (will be remapped) */ + /* _mesa_function_pool[11199]: GetTransformFeedbackVaryingEXT (will be remapped) */ "iiipppp\0" "glGetTransformFeedbackVaryingEXT\0" "glGetTransformFeedbackVarying\0" "\0" - /* _mesa_function_pool[10937]: VertexAttrib4bvARB (will be remapped) */ + /* _mesa_function_pool[11271]: VertexAttrib4bvARB (will be remapped) */ "ip\0" "glVertexAttrib4bv\0" "glVertexAttrib4bvARB\0" "\0" - /* _mesa_function_pool[10980]: ShaderBinary (will be remapped) */ + /* _mesa_function_pool[11314]: ShaderBinary (will be remapped) */ "ipipi\0" "glShaderBinary\0" "\0" - /* _mesa_function_pool[11002]: GetIntegerIndexedvEXT (will be remapped) */ + /* _mesa_function_pool[11336]: GetIntegerIndexedvEXT (will be remapped) */ "iip\0" "glGetIntegerIndexedvEXT\0" "glGetIntegeri_v\0" "\0" - /* _mesa_function_pool[11047]: MultiTexCoord4sARB (offset 406) */ + /* _mesa_function_pool[11381]: MultiTexCoord4sARB (offset 406) */ "iiiii\0" "glMultiTexCoord4s\0" "glMultiTexCoord4sARB\0" "\0" - /* _mesa_function_pool[11093]: GetFragmentMaterialivSGIX (dynamic) */ + /* _mesa_function_pool[11427]: GetFragmentMaterialivSGIX (dynamic) */ "iip\0" "glGetFragmentMaterialivSGIX\0" "\0" - /* _mesa_function_pool[11126]: WindowPos4dMESA (will be remapped) */ + /* _mesa_function_pool[11460]: WindowPos4dMESA (will be remapped) */ "dddd\0" "glWindowPos4dMESA\0" "\0" - /* _mesa_function_pool[11150]: WeightPointerARB (dynamic) */ + /* _mesa_function_pool[11484]: WeightPointerARB (dynamic) */ "iiip\0" "glWeightPointerARB\0" "\0" - /* _mesa_function_pool[11175]: WindowPos2dMESA (will be remapped) */ + /* _mesa_function_pool[11509]: WindowPos2dMESA (will be remapped) */ "dd\0" "glWindowPos2d\0" "glWindowPos2dARB\0" "glWindowPos2dMESA\0" "\0" - /* _mesa_function_pool[11228]: FramebufferTexture3DEXT (will be remapped) */ + /* _mesa_function_pool[11562]: FramebufferTexture3DEXT (will be remapped) */ "iiiiii\0" "glFramebufferTexture3D\0" "glFramebufferTexture3DEXT\0" "\0" - /* _mesa_function_pool[11285]: BlendEquation (offset 337) */ + /* _mesa_function_pool[11619]: BlendEquation (offset 337) */ "i\0" "glBlendEquation\0" "glBlendEquationEXT\0" "\0" - /* _mesa_function_pool[11323]: VertexAttrib3dNV (will be remapped) */ + /* _mesa_function_pool[11657]: VertexAttrib3dNV (will be remapped) */ "iddd\0" "glVertexAttrib3dNV\0" "\0" - /* _mesa_function_pool[11348]: VertexAttrib3dARB (will be remapped) */ + /* _mesa_function_pool[11682]: VertexAttrib3dARB (will be remapped) */ "iddd\0" "glVertexAttrib3d\0" "glVertexAttrib3dARB\0" "\0" - /* _mesa_function_pool[11391]: VertexAttribI4usvEXT (will be remapped) */ + /* _mesa_function_pool[11725]: VertexAttribI4usvEXT (will be remapped) */ "ip\0" "glVertexAttribI4usvEXT\0" "glVertexAttribI4usv\0" "\0" - /* _mesa_function_pool[11438]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[11772]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */ "ppppp\0" "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[11502]: VertexAttrib4fARB (will be remapped) */ + /* _mesa_function_pool[11836]: VertexAttrib4fARB (will be remapped) */ "iffff\0" "glVertexAttrib4f\0" "glVertexAttrib4fARB\0" "\0" - /* _mesa_function_pool[11546]: GetError (offset 261) */ + /* _mesa_function_pool[11880]: GetError (offset 261) */ "\0" "glGetError\0" "\0" - /* _mesa_function_pool[11559]: IndexFuncEXT (dynamic) */ + /* _mesa_function_pool[11893]: IndexFuncEXT (dynamic) */ "if\0" "glIndexFuncEXT\0" "\0" - /* _mesa_function_pool[11578]: TexCoord3dv (offset 111) */ + /* _mesa_function_pool[11912]: TexCoord3dv (offset 111) */ "p\0" "glTexCoord3dv\0" "\0" - /* _mesa_function_pool[11595]: Indexdv (offset 45) */ + /* _mesa_function_pool[11929]: Indexdv (offset 45) */ "p\0" "glIndexdv\0" "\0" - /* _mesa_function_pool[11608]: FramebufferTexture2DEXT (will be remapped) */ + /* _mesa_function_pool[11942]: FramebufferTexture2DEXT (will be remapped) */ "iiiii\0" "glFramebufferTexture2D\0" "glFramebufferTexture2DEXT\0" "\0" - /* _mesa_function_pool[11664]: Normal3s (offset 60) */ + /* _mesa_function_pool[11998]: Normal3s (offset 60) */ "iii\0" "glNormal3s\0" "\0" - /* _mesa_function_pool[11680]: GetObjectParameterivAPPLE (will be remapped) */ + /* _mesa_function_pool[12014]: GetObjectParameterivAPPLE (will be remapped) */ "iiip\0" "glGetObjectParameterivAPPLE\0" "\0" - /* _mesa_function_pool[11714]: PushName (offset 201) */ + /* _mesa_function_pool[12048]: PushName (offset 201) */ "i\0" "glPushName\0" "\0" - /* _mesa_function_pool[11728]: MultiTexCoord2dvARB (offset 385) */ + /* _mesa_function_pool[12062]: MultiTexCoord2dvARB (offset 385) */ "ip\0" "glMultiTexCoord2dv\0" "glMultiTexCoord2dvARB\0" "\0" - /* _mesa_function_pool[11773]: CullParameterfvEXT (dynamic) */ + /* _mesa_function_pool[12107]: CullParameterfvEXT (dynamic) */ "ip\0" "glCullParameterfvEXT\0" "\0" - /* _mesa_function_pool[11798]: Normal3i (offset 58) */ + /* _mesa_function_pool[12132]: Normal3i (offset 58) */ "iii\0" "glNormal3i\0" "\0" - /* _mesa_function_pool[11814]: ProgramNamedParameter4fvNV (will be remapped) */ + /* _mesa_function_pool[12148]: ProgramNamedParameter4fvNV (will be remapped) */ "iipp\0" "glProgramNamedParameter4fvNV\0" "\0" - /* _mesa_function_pool[11849]: SecondaryColorPointerEXT (will be remapped) */ + /* _mesa_function_pool[12183]: SecondaryColorPointerEXT (will be remapped) */ "iiip\0" "glSecondaryColorPointer\0" "glSecondaryColorPointerEXT\0" "\0" - /* _mesa_function_pool[11906]: VertexAttrib4fvARB (will be remapped) */ + /* _mesa_function_pool[12240]: VertexAttrib4fvARB (will be remapped) */ "ip\0" "glVertexAttrib4fv\0" "glVertexAttrib4fvARB\0" "\0" - /* _mesa_function_pool[11949]: PixelTexGenSGIX (will be remapped) */ + /* _mesa_function_pool[12283]: PixelTexGenSGIX (will be remapped) */ "i\0" "glPixelTexGenSGIX\0" "\0" - /* _mesa_function_pool[11970]: GetActiveUniformARB (will be remapped) */ + /* _mesa_function_pool[12304]: GetActiveUniformARB (will be remapped) */ "iiipppp\0" "glGetActiveUniform\0" "glGetActiveUniformARB\0" "\0" - /* _mesa_function_pool[12020]: ImageTransformParameteriHP (dynamic) */ + /* _mesa_function_pool[12354]: ImageTransformParameteriHP (dynamic) */ "iii\0" "glImageTransformParameteriHP\0" "\0" - /* _mesa_function_pool[12054]: Normal3b (offset 52) */ + /* _mesa_function_pool[12388]: Normal3b (offset 52) */ "iii\0" "glNormal3b\0" "\0" - /* _mesa_function_pool[12070]: Normal3d (offset 54) */ + /* _mesa_function_pool[12404]: Normal3d (offset 54) */ "ddd\0" "glNormal3d\0" "\0" - /* _mesa_function_pool[12086]: Uniform1uiEXT (will be remapped) */ + /* _mesa_function_pool[12420]: Uniform1uiEXT (will be remapped) */ "ii\0" "glUniform1uiEXT\0" "glUniform1ui\0" "\0" - /* _mesa_function_pool[12119]: Normal3f (offset 56) */ + /* _mesa_function_pool[12453]: Normal3f (offset 56) */ "fff\0" "glNormal3f\0" "\0" - /* _mesa_function_pool[12135]: MultiTexCoord1svARB (offset 383) */ + /* _mesa_function_pool[12469]: MultiTexCoord1svARB (offset 383) */ "ip\0" "glMultiTexCoord1sv\0" "glMultiTexCoord1svARB\0" "\0" - /* _mesa_function_pool[12180]: Indexi (offset 48) */ + /* _mesa_function_pool[12514]: Indexi (offset 48) */ "i\0" "glIndexi\0" "\0" - /* _mesa_function_pool[12192]: EGLImageTargetTexture2DOES (will be remapped) */ + /* _mesa_function_pool[12526]: EGLImageTargetTexture2DOES (will be remapped) */ "ip\0" "glEGLImageTargetTexture2DOES\0" "\0" - /* _mesa_function_pool[12225]: EndQueryARB (will be remapped) */ + /* _mesa_function_pool[12559]: EndQueryARB (will be remapped) */ "i\0" "glEndQuery\0" "glEndQueryARB\0" "\0" - /* _mesa_function_pool[12253]: DeleteFencesNV (will be remapped) */ + /* _mesa_function_pool[12587]: DeleteFencesNV (will be remapped) */ "ip\0" "glDeleteFencesNV\0" "\0" - /* _mesa_function_pool[12274]: ColorPointerListIBM (dynamic) */ + /* _mesa_function_pool[12608]: ColorPointerListIBM (dynamic) */ "iiipi\0" "glColorPointerListIBM\0" "\0" - /* _mesa_function_pool[12303]: BindBufferRangeEXT (will be remapped) */ + /* _mesa_function_pool[12637]: BindBufferRangeEXT (will be remapped) */ "iiiii\0" "glBindBufferRangeEXT\0" "glBindBufferRange\0" "\0" - /* _mesa_function_pool[12349]: DepthMask (offset 211) */ + /* _mesa_function_pool[12683]: DepthMask (offset 211) */ "i\0" "glDepthMask\0" "\0" - /* _mesa_function_pool[12364]: IsShader (will be remapped) */ + /* _mesa_function_pool[12698]: IsShader (will be remapped) */ "i\0" "glIsShader\0" "\0" - /* _mesa_function_pool[12378]: Indexf (offset 46) */ + /* _mesa_function_pool[12712]: Indexf (offset 46) */ "f\0" "glIndexf\0" "\0" - /* _mesa_function_pool[12390]: GetImageTransformParameterivHP (dynamic) */ + /* _mesa_function_pool[12724]: GetImageTransformParameterivHP (dynamic) */ "iip\0" "glGetImageTransformParameterivHP\0" "\0" - /* _mesa_function_pool[12428]: Indexd (offset 44) */ + /* _mesa_function_pool[12762]: Indexd (offset 44) */ "d\0" "glIndexd\0" "\0" - /* _mesa_function_pool[12440]: GetMaterialiv (offset 270) */ + /* _mesa_function_pool[12774]: GetMaterialiv (offset 270) */ "iip\0" "glGetMaterialiv\0" "\0" - /* _mesa_function_pool[12461]: StencilOp (offset 244) */ + /* _mesa_function_pool[12795]: StencilOp (offset 244) */ "iii\0" "glStencilOp\0" "\0" - /* _mesa_function_pool[12478]: WindowPos4ivMESA (will be remapped) */ + /* _mesa_function_pool[12812]: WindowPos4ivMESA (will be remapped) */ "p\0" "glWindowPos4ivMESA\0" "\0" - /* _mesa_function_pool[12500]: FramebufferTextureLayer (dynamic) */ + /* _mesa_function_pool[12834]: FramebufferTextureLayer (dynamic) */ "iiiii\0" "glFramebufferTextureLayerARB\0" "\0" - /* _mesa_function_pool[12536]: MultiTexCoord3svARB (offset 399) */ + /* _mesa_function_pool[12870]: MultiTexCoord3svARB (offset 399) */ "ip\0" "glMultiTexCoord3sv\0" "glMultiTexCoord3svARB\0" "\0" - /* _mesa_function_pool[12581]: TexEnvfv (offset 185) */ + /* _mesa_function_pool[12915]: TexEnvfv (offset 185) */ "iip\0" "glTexEnvfv\0" "\0" - /* _mesa_function_pool[12597]: MultiTexCoord4iARB (offset 404) */ + /* _mesa_function_pool[12931]: MultiTexCoord4iARB (offset 404) */ "iiiii\0" "glMultiTexCoord4i\0" "glMultiTexCoord4iARB\0" "\0" - /* _mesa_function_pool[12643]: Indexs (offset 50) */ + /* _mesa_function_pool[12977]: Indexs (offset 50) */ "i\0" "glIndexs\0" "\0" - /* _mesa_function_pool[12655]: Binormal3ivEXT (dynamic) */ + /* _mesa_function_pool[12989]: Binormal3ivEXT (dynamic) */ "p\0" "glBinormal3ivEXT\0" "\0" - /* _mesa_function_pool[12675]: ResizeBuffersMESA (will be remapped) */ + /* _mesa_function_pool[13009]: ResizeBuffersMESA (will be remapped) */ "\0" "glResizeBuffersMESA\0" "\0" - /* _mesa_function_pool[12697]: BlendFuncSeparateiARB (will be remapped) */ + /* _mesa_function_pool[13031]: BlendFuncSeparateiARB (will be remapped) */ "iiiii\0" "glBlendFuncSeparateiARB\0" + "glBlendFuncSeparateIndexedAMD\0" "\0" - /* _mesa_function_pool[12728]: GetUniformivARB (will be remapped) */ + /* _mesa_function_pool[13092]: GetUniformivARB (will be remapped) */ "iip\0" "glGetUniformiv\0" "glGetUniformivARB\0" "\0" - /* _mesa_function_pool[12766]: PixelTexGenParameteriSGIS (will be remapped) */ + /* _mesa_function_pool[13130]: PixelTexGenParameteriSGIS (will be remapped) */ "ii\0" "glPixelTexGenParameteriSGIS\0" "\0" - /* _mesa_function_pool[12798]: VertexPointervINTEL (dynamic) */ + /* _mesa_function_pool[13162]: VertexPointervINTEL (dynamic) */ "iip\0" "glVertexPointervINTEL\0" "\0" - /* _mesa_function_pool[12825]: Vertex2i (offset 130) */ + /* _mesa_function_pool[13189]: Vertex2i (offset 130) */ "ii\0" "glVertex2i\0" "\0" - /* _mesa_function_pool[12840]: LoadMatrixf (offset 291) */ + /* _mesa_function_pool[13204]: LoadMatrixf (offset 291) */ "p\0" "glLoadMatrixf\0" "\0" - /* _mesa_function_pool[12857]: VertexAttribI1uivEXT (will be remapped) */ + /* _mesa_function_pool[13221]: VertexAttribI1uivEXT (will be remapped) */ "ip\0" "glVertexAttribI1uivEXT\0" "glVertexAttribI1uiv\0" "\0" - /* _mesa_function_pool[12904]: Vertex2f (offset 128) */ + /* _mesa_function_pool[13268]: Vertex2f (offset 128) */ "ff\0" "glVertex2f\0" "\0" - /* _mesa_function_pool[12919]: ReplacementCodeuiColor4fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[13283]: ReplacementCodeuiColor4fNormal3fVertex3fvSUN (dynamic) */ "pppp\0" "glReplacementCodeuiColor4fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[12972]: Color4bv (offset 26) */ + /* _mesa_function_pool[13336]: Color4bv (offset 26) */ "p\0" "glColor4bv\0" "\0" - /* _mesa_function_pool[12986]: VertexPointer (offset 321) */ + /* _mesa_function_pool[13350]: VertexPointer (offset 321) */ "iiip\0" "glVertexPointer\0" "\0" - /* _mesa_function_pool[13008]: SecondaryColor3uiEXT (will be remapped) */ + /* _mesa_function_pool[13372]: SecondaryColor3uiEXT (will be remapped) */ "iii\0" "glSecondaryColor3ui\0" "glSecondaryColor3uiEXT\0" "\0" - /* _mesa_function_pool[13056]: StartInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[13420]: StartInstrumentsSGIX (dynamic) */ "\0" "glStartInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[13081]: SecondaryColor3usvEXT (will be remapped) */ + /* _mesa_function_pool[13445]: SecondaryColor3usvEXT (will be remapped) */ "p\0" "glSecondaryColor3usv\0" "glSecondaryColor3usvEXT\0" "\0" - /* _mesa_function_pool[13129]: VertexAttrib2fvNV (will be remapped) */ + /* _mesa_function_pool[13493]: VertexAttrib2fvNV (will be remapped) */ "ip\0" "glVertexAttrib2fvNV\0" "\0" - /* _mesa_function_pool[13153]: ProgramLocalParameter4dvARB (will be remapped) */ + /* _mesa_function_pool[13517]: ProgramLocalParameter4dvARB (will be remapped) */ "iip\0" "glProgramLocalParameter4dvARB\0" "\0" - /* _mesa_function_pool[13188]: DeleteLists (offset 4) */ + /* _mesa_function_pool[13552]: DeleteLists (offset 4) */ "ii\0" "glDeleteLists\0" "\0" - /* _mesa_function_pool[13206]: LogicOp (offset 242) */ + /* _mesa_function_pool[13570]: LogicOp (offset 242) */ "i\0" "glLogicOp\0" "\0" - /* _mesa_function_pool[13219]: MatrixIndexuivARB (dynamic) */ + /* _mesa_function_pool[13583]: MatrixIndexuivARB (dynamic) */ "ip\0" "glMatrixIndexuivARB\0" "\0" - /* _mesa_function_pool[13243]: Vertex2s (offset 132) */ + /* _mesa_function_pool[13607]: Vertex2s (offset 132) */ "ii\0" "glVertex2s\0" "\0" - /* _mesa_function_pool[13258]: RenderbufferStorageMultisample (will be remapped) */ + /* _mesa_function_pool[13622]: RenderbufferStorageMultisample (will be remapped) */ "iiiii\0" "glRenderbufferStorageMultisample\0" "glRenderbufferStorageMultisampleEXT\0" "\0" - /* _mesa_function_pool[13334]: TexCoord4fv (offset 121) */ + /* _mesa_function_pool[13698]: TexCoord4fv (offset 121) */ "p\0" "glTexCoord4fv\0" "\0" - /* _mesa_function_pool[13351]: Tangent3sEXT (dynamic) */ + /* _mesa_function_pool[13715]: Tangent3sEXT (dynamic) */ "iii\0" "glTangent3sEXT\0" "\0" - /* _mesa_function_pool[13371]: GlobalAlphaFactorfSUN (dynamic) */ + /* _mesa_function_pool[13735]: GlobalAlphaFactorfSUN (dynamic) */ "f\0" "glGlobalAlphaFactorfSUN\0" "\0" - /* _mesa_function_pool[13398]: MultiTexCoord3iARB (offset 396) */ + /* _mesa_function_pool[13762]: MultiTexCoord3iARB (offset 396) */ "iiii\0" "glMultiTexCoord3i\0" "glMultiTexCoord3iARB\0" "\0" - /* _mesa_function_pool[13443]: IsProgram (will be remapped) */ + /* _mesa_function_pool[13807]: IsProgram (will be remapped) */ "i\0" "glIsProgram\0" "\0" - /* _mesa_function_pool[13458]: TexCoordPointerListIBM (dynamic) */ + /* _mesa_function_pool[13822]: TexCoordPointerListIBM (dynamic) */ "iiipi\0" "glTexCoordPointerListIBM\0" "\0" - /* _mesa_function_pool[13490]: VertexAttribI4svEXT (will be remapped) */ + /* _mesa_function_pool[13854]: VertexAttribI4svEXT (will be remapped) */ "ip\0" "glVertexAttribI4svEXT\0" "glVertexAttribI4sv\0" "\0" - /* _mesa_function_pool[13535]: GlobalAlphaFactorusSUN (dynamic) */ + /* _mesa_function_pool[13899]: GlobalAlphaFactorusSUN (dynamic) */ "i\0" "glGlobalAlphaFactorusSUN\0" "\0" - /* _mesa_function_pool[13563]: VertexAttrib2dvNV (will be remapped) */ + /* _mesa_function_pool[13927]: VertexAttrib2dvNV (will be remapped) */ "ip\0" "glVertexAttrib2dvNV\0" "\0" - /* _mesa_function_pool[13587]: FramebufferRenderbufferEXT (will be remapped) */ + /* _mesa_function_pool[13951]: FramebufferRenderbufferEXT (will be remapped) */ "iiii\0" "glFramebufferRenderbuffer\0" "glFramebufferRenderbufferEXT\0" "\0" - /* _mesa_function_pool[13648]: ClearBufferuiv (will be remapped) */ + /* _mesa_function_pool[14012]: ClearBufferuiv (will be remapped) */ "iip\0" "glClearBufferuiv\0" "\0" - /* _mesa_function_pool[13670]: VertexAttrib1dvNV (will be remapped) */ + /* _mesa_function_pool[14034]: VertexAttrib1dvNV (will be remapped) */ "ip\0" "glVertexAttrib1dvNV\0" "\0" - /* _mesa_function_pool[13694]: GenTextures (offset 328) */ + /* _mesa_function_pool[14058]: GenTextures (offset 328) */ "ip\0" "glGenTextures\0" "glGenTexturesEXT\0" "\0" - /* _mesa_function_pool[13729]: FramebufferTextureARB (will be remapped) */ + /* _mesa_function_pool[14093]: FramebufferTextureARB (will be remapped) */ "iiii\0" "glFramebufferTextureARB\0" "\0" - /* _mesa_function_pool[13759]: SetFenceNV (will be remapped) */ + /* _mesa_function_pool[14123]: SetFenceNV (will be remapped) */ "ii\0" "glSetFenceNV\0" "\0" - /* _mesa_function_pool[13776]: FramebufferTexture1DEXT (will be remapped) */ + /* _mesa_function_pool[14140]: FramebufferTexture1DEXT (will be remapped) */ "iiiii\0" "glFramebufferTexture1D\0" "glFramebufferTexture1DEXT\0" "\0" - /* _mesa_function_pool[13832]: GetCombinerOutputParameterivNV (will be remapped) */ + /* _mesa_function_pool[14196]: GetCombinerOutputParameterivNV (will be remapped) */ "iiip\0" "glGetCombinerOutputParameterivNV\0" "\0" - /* _mesa_function_pool[13871]: MultiModeDrawArraysIBM (will be remapped) */ - "pppii\0" - "glMultiModeDrawArraysIBM\0" - "\0" - /* _mesa_function_pool[13903]: PixelTexGenParameterivSGIS (will be remapped) */ + /* _mesa_function_pool[14235]: PixelTexGenParameterivSGIS (will be remapped) */ "ip\0" "glPixelTexGenParameterivSGIS\0" "\0" - /* _mesa_function_pool[13936]: TextureNormalEXT (dynamic) */ + /* _mesa_function_pool[14268]: TextureNormalEXT (dynamic) */ "i\0" "glTextureNormalEXT\0" "\0" - /* _mesa_function_pool[13958]: IndexPointerListIBM (dynamic) */ + /* _mesa_function_pool[14290]: IndexPointerListIBM (dynamic) */ "iipi\0" "glIndexPointerListIBM\0" "\0" - /* _mesa_function_pool[13986]: WeightfvARB (dynamic) */ + /* _mesa_function_pool[14318]: WeightfvARB (dynamic) */ "ip\0" "glWeightfvARB\0" "\0" - /* _mesa_function_pool[14004]: GetCombinerOutputParameterfvNV (will be remapped) */ - "iiip\0" - "glGetCombinerOutputParameterfvNV\0" - "\0" - /* _mesa_function_pool[14043]: RasterPos2sv (offset 69) */ + /* _mesa_function_pool[14336]: RasterPos2sv (offset 69) */ "p\0" "glRasterPos2sv\0" "\0" - /* _mesa_function_pool[14061]: Color4ubv (offset 36) */ + /* _mesa_function_pool[14354]: Color4ubv (offset 36) */ "p\0" "glColor4ubv\0" "\0" - /* _mesa_function_pool[14076]: DrawBuffer (offset 202) */ + /* _mesa_function_pool[14369]: DrawBuffer (offset 202) */ "i\0" "glDrawBuffer\0" "\0" - /* _mesa_function_pool[14092]: TexCoord2fv (offset 105) */ + /* _mesa_function_pool[14385]: TexCoord2fv (offset 105) */ "p\0" "glTexCoord2fv\0" "\0" - /* _mesa_function_pool[14109]: WindowPos4fMESA (will be remapped) */ + /* _mesa_function_pool[14402]: WindowPos4fMESA (will be remapped) */ "ffff\0" "glWindowPos4fMESA\0" "\0" - /* _mesa_function_pool[14133]: TexCoord1sv (offset 101) */ + /* _mesa_function_pool[14426]: TexCoord1sv (offset 101) */ "p\0" "glTexCoord1sv\0" "\0" - /* _mesa_function_pool[14150]: WindowPos3dvMESA (will be remapped) */ + /* _mesa_function_pool[14443]: WindowPos3dvMESA (will be remapped) */ "p\0" "glWindowPos3dv\0" "glWindowPos3dvARB\0" "glWindowPos3dvMESA\0" "\0" - /* _mesa_function_pool[14205]: DepthFunc (offset 245) */ + /* _mesa_function_pool[14498]: DepthFunc (offset 245) */ "i\0" "glDepthFunc\0" "\0" - /* _mesa_function_pool[14220]: PixelMapusv (offset 253) */ + /* _mesa_function_pool[14513]: PixelMapusv (offset 253) */ "iip\0" "glPixelMapusv\0" "\0" - /* _mesa_function_pool[14239]: GetQueryObjecti64vEXT (will be remapped) */ + /* _mesa_function_pool[14532]: GetQueryObjecti64vEXT (will be remapped) */ "iip\0" "glGetQueryObjecti64vEXT\0" "\0" - /* _mesa_function_pool[14268]: MultiTexCoord1dARB (offset 376) */ + /* _mesa_function_pool[14561]: MultiTexCoord1dARB (offset 376) */ "id\0" "glMultiTexCoord1d\0" "glMultiTexCoord1dARB\0" "\0" - /* _mesa_function_pool[14311]: PointParameterivNV (will be remapped) */ + /* _mesa_function_pool[14604]: PointParameterivNV (will be remapped) */ "ip\0" "glPointParameteriv\0" "glPointParameterivNV\0" "\0" - /* _mesa_function_pool[14355]: IsSampler (will be remapped) */ + /* _mesa_function_pool[14648]: IsSampler (will be remapped) */ "i\0" "glIsSampler\0" "\0" - /* _mesa_function_pool[14370]: BlendFunc (offset 241) */ + /* _mesa_function_pool[14663]: BlendFunc (offset 241) */ "ii\0" "glBlendFunc\0" "\0" - /* _mesa_function_pool[14386]: EndTransformFeedbackEXT (will be remapped) */ + /* _mesa_function_pool[14679]: EndTransformFeedbackEXT (will be remapped) */ "\0" "glEndTransformFeedbackEXT\0" "glEndTransformFeedback\0" "\0" - /* _mesa_function_pool[14437]: Uniform2fvARB (will be remapped) */ + /* _mesa_function_pool[14730]: Uniform2fvARB (will be remapped) */ "iip\0" "glUniform2fv\0" "glUniform2fvARB\0" "\0" - /* _mesa_function_pool[14471]: BufferParameteriAPPLE (will be remapped) */ + /* _mesa_function_pool[14764]: BufferParameteriAPPLE (will be remapped) */ "iii\0" "glBufferParameteriAPPLE\0" "\0" - /* _mesa_function_pool[14500]: MultiTexCoord3dvARB (offset 393) */ + /* _mesa_function_pool[14793]: MultiTexCoord3dvARB (offset 393) */ "ip\0" "glMultiTexCoord3dv\0" "glMultiTexCoord3dvARB\0" "\0" - /* _mesa_function_pool[14545]: ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[14838]: ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (dynamic) */ "pppp\0" "glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[14601]: DeleteObjectARB (will be remapped) */ + /* _mesa_function_pool[14894]: DeleteObjectARB (will be remapped) */ "i\0" "glDeleteObjectARB\0" "\0" - /* _mesa_function_pool[14622]: GetShaderPrecisionFormat (will be remapped) */ + /* _mesa_function_pool[14915]: GetShaderPrecisionFormat (will be remapped) */ "iipp\0" "glGetShaderPrecisionFormat\0" "\0" - /* _mesa_function_pool[14655]: MatrixIndexPointerARB (dynamic) */ + /* _mesa_function_pool[14948]: MatrixIndexPointerARB (dynamic) */ "iiip\0" "glMatrixIndexPointerARB\0" "\0" - /* _mesa_function_pool[14685]: ProgramNamedParameter4dvNV (will be remapped) */ + /* _mesa_function_pool[14978]: ProgramNamedParameter4dvNV (will be remapped) */ "iipp\0" "glProgramNamedParameter4dvNV\0" "\0" - /* _mesa_function_pool[14720]: Tangent3fvEXT (dynamic) */ + /* _mesa_function_pool[15013]: Tangent3fvEXT (dynamic) */ "p\0" "glTangent3fvEXT\0" "\0" - /* _mesa_function_pool[14739]: Flush (offset 217) */ + /* _mesa_function_pool[15032]: Flush (offset 217) */ "\0" "glFlush\0" "\0" - /* _mesa_function_pool[14749]: Color4uiv (offset 38) */ + /* _mesa_function_pool[15042]: Color4uiv (offset 38) */ "p\0" "glColor4uiv\0" "\0" - /* _mesa_function_pool[14764]: VertexAttribI4iEXT (will be remapped) */ + /* _mesa_function_pool[15057]: VertexAttribI4iEXT (will be remapped) */ "iiiii\0" "glVertexAttribI4iEXT\0" "glVertexAttribI4i\0" "\0" - /* _mesa_function_pool[14810]: GenVertexArrays (will be remapped) */ + /* _mesa_function_pool[15103]: GenVertexArrays (will be remapped) */ "ip\0" "glGenVertexArrays\0" "\0" - /* _mesa_function_pool[14832]: Uniform3uivEXT (will be remapped) */ + /* _mesa_function_pool[15125]: Uniform3uivEXT (will be remapped) */ "iip\0" "glUniform3uivEXT\0" "glUniform3uiv\0" "\0" - /* _mesa_function_pool[14868]: RasterPos3sv (offset 77) */ + /* _mesa_function_pool[15161]: RasterPos3sv (offset 77) */ "p\0" "glRasterPos3sv\0" "\0" - /* _mesa_function_pool[14886]: BindFramebufferEXT (will be remapped) */ + /* _mesa_function_pool[15179]: BindFramebufferEXT (will be remapped) */ "ii\0" "glBindFramebuffer\0" "glBindFramebufferEXT\0" "\0" - /* _mesa_function_pool[14929]: ReferencePlaneSGIX (dynamic) */ + /* _mesa_function_pool[15222]: ReferencePlaneSGIX (dynamic) */ "p\0" "glReferencePlaneSGIX\0" "\0" - /* _mesa_function_pool[14953]: PushAttrib (offset 219) */ + /* _mesa_function_pool[15246]: PushAttrib (offset 219) */ "i\0" "glPushAttrib\0" "\0" - /* _mesa_function_pool[14969]: RasterPos2i (offset 66) */ + /* _mesa_function_pool[15262]: RasterPos2i (offset 66) */ "ii\0" "glRasterPos2i\0" "\0" - /* _mesa_function_pool[14987]: ValidateProgramARB (will be remapped) */ + /* _mesa_function_pool[15280]: ValidateProgramARB (will be remapped) */ "i\0" "glValidateProgram\0" "glValidateProgramARB\0" "\0" - /* _mesa_function_pool[15029]: TexParameteriv (offset 181) */ + /* _mesa_function_pool[15322]: TexParameteriv (offset 181) */ "iip\0" "glTexParameteriv\0" "\0" - /* _mesa_function_pool[15051]: UnlockArraysEXT (will be remapped) */ + /* _mesa_function_pool[15344]: UnlockArraysEXT (will be remapped) */ "\0" "glUnlockArraysEXT\0" "\0" - /* _mesa_function_pool[15071]: TexCoord2fColor3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[15364]: TexCoord2fColor3fVertex3fSUN (dynamic) */ "ffffffff\0" "glTexCoord2fColor3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[15112]: WindowPos3fvMESA (will be remapped) */ + /* _mesa_function_pool[15405]: WindowPos3fvMESA (will be remapped) */ "p\0" "glWindowPos3fv\0" "glWindowPos3fvARB\0" "glWindowPos3fvMESA\0" "\0" - /* _mesa_function_pool[15167]: RasterPos2f (offset 64) */ + /* _mesa_function_pool[15460]: RasterPos2f (offset 64) */ "ff\0" "glRasterPos2f\0" "\0" - /* _mesa_function_pool[15185]: VertexAttrib1svNV (will be remapped) */ + /* _mesa_function_pool[15478]: VertexAttrib1svNV (will be remapped) */ "ip\0" "glVertexAttrib1svNV\0" "\0" - /* _mesa_function_pool[15209]: RasterPos2d (offset 62) */ + /* _mesa_function_pool[15502]: RasterPos2d (offset 62) */ "dd\0" "glRasterPos2d\0" "\0" - /* _mesa_function_pool[15227]: RasterPos3fv (offset 73) */ + /* _mesa_function_pool[15520]: RasterPos3fv (offset 73) */ "p\0" "glRasterPos3fv\0" "\0" - /* _mesa_function_pool[15245]: CopyTexSubImage3D (offset 373) */ + /* _mesa_function_pool[15538]: CopyTexSubImage3D (offset 373) */ "iiiiiiiii\0" "glCopyTexSubImage3D\0" "glCopyTexSubImage3DEXT\0" "\0" - /* _mesa_function_pool[15299]: VertexAttrib2dARB (will be remapped) */ + /* _mesa_function_pool[15592]: VertexAttrib2dARB (will be remapped) */ "idd\0" "glVertexAttrib2d\0" "glVertexAttrib2dARB\0" "\0" - /* _mesa_function_pool[15341]: Color4ub (offset 35) */ + /* _mesa_function_pool[15634]: Color4ub (offset 35) */ "iiii\0" "glColor4ub\0" "\0" - /* _mesa_function_pool[15358]: GetInteger64v (will be remapped) */ + /* _mesa_function_pool[15651]: GetInteger64v (will be remapped) */ "ip\0" "glGetInteger64v\0" "\0" - /* _mesa_function_pool[15378]: TextureColorMaskSGIS (dynamic) */ + /* _mesa_function_pool[15671]: TextureColorMaskSGIS (dynamic) */ "iiii\0" "glTextureColorMaskSGIS\0" "\0" - /* _mesa_function_pool[15407]: RasterPos2s (offset 68) */ + /* _mesa_function_pool[15700]: RasterPos2s (offset 68) */ "ii\0" "glRasterPos2s\0" "\0" - /* _mesa_function_pool[15425]: GetColorTable (offset 343) */ + /* _mesa_function_pool[15718]: GetColorTable (offset 343) */ "iiip\0" "glGetColorTable\0" "glGetColorTableSGI\0" "glGetColorTableEXT\0" "\0" - /* _mesa_function_pool[15485]: SelectBuffer (offset 195) */ + /* _mesa_function_pool[15778]: SelectBuffer (offset 195) */ "ip\0" "glSelectBuffer\0" "\0" - /* _mesa_function_pool[15504]: Indexiv (offset 49) */ + /* _mesa_function_pool[15797]: Indexiv (offset 49) */ "p\0" "glIndexiv\0" "\0" - /* _mesa_function_pool[15517]: TexCoord3i (offset 114) */ + /* _mesa_function_pool[15810]: TexCoord3i (offset 114) */ "iii\0" "glTexCoord3i\0" "\0" - /* _mesa_function_pool[15535]: CopyColorTable (offset 342) */ + /* _mesa_function_pool[15828]: CopyColorTable (offset 342) */ "iiiii\0" "glCopyColorTable\0" "glCopyColorTableSGI\0" "\0" - /* _mesa_function_pool[15579]: GetHistogramParameterfv (offset 362) */ + /* _mesa_function_pool[15872]: GetHistogramParameterfv (offset 362) */ "iip\0" "glGetHistogramParameterfv\0" "glGetHistogramParameterfvEXT\0" "\0" - /* _mesa_function_pool[15639]: Frustum (offset 289) */ + /* _mesa_function_pool[15932]: Frustum (offset 289) */ "dddddd\0" "glFrustum\0" "\0" - /* _mesa_function_pool[15657]: GetString (offset 275) */ + /* _mesa_function_pool[15950]: GetString (offset 275) */ "i\0" "glGetString\0" "\0" - /* _mesa_function_pool[15672]: ColorPointervINTEL (dynamic) */ + /* _mesa_function_pool[15965]: ColorPointervINTEL (dynamic) */ "iip\0" "glColorPointervINTEL\0" "\0" - /* _mesa_function_pool[15698]: TexEnvf (offset 184) */ + /* _mesa_function_pool[15991]: TexEnvf (offset 184) */ "iif\0" "glTexEnvf\0" "\0" - /* _mesa_function_pool[15713]: TexCoord3d (offset 110) */ + /* _mesa_function_pool[16006]: TexCoord3d (offset 110) */ "ddd\0" "glTexCoord3d\0" "\0" - /* _mesa_function_pool[15731]: AlphaFragmentOp1ATI (will be remapped) */ + /* _mesa_function_pool[16024]: AlphaFragmentOp1ATI (will be remapped) */ "iiiiii\0" "glAlphaFragmentOp1ATI\0" "\0" - /* _mesa_function_pool[15761]: TexCoord3f (offset 112) */ + /* _mesa_function_pool[16054]: TexCoord3f (offset 112) */ "fff\0" "glTexCoord3f\0" "\0" - /* _mesa_function_pool[15779]: MultiTexCoord3ivARB (offset 397) */ + /* _mesa_function_pool[16072]: MultiTexCoord3ivARB (offset 397) */ "ip\0" "glMultiTexCoord3iv\0" "glMultiTexCoord3ivARB\0" "\0" - /* _mesa_function_pool[15824]: MultiTexCoord2sARB (offset 390) */ + /* _mesa_function_pool[16117]: MultiTexCoord2sARB (offset 390) */ "iii\0" "glMultiTexCoord2s\0" "glMultiTexCoord2sARB\0" "\0" - /* _mesa_function_pool[15868]: VertexAttrib1dvARB (will be remapped) */ + /* _mesa_function_pool[16161]: VertexAttrib1dvARB (will be remapped) */ "ip\0" "glVertexAttrib1dv\0" "glVertexAttrib1dvARB\0" "\0" - /* _mesa_function_pool[15911]: DeleteTextures (offset 327) */ + /* _mesa_function_pool[16204]: GetnHistogramARB (will be remapped) */ + "iiiiip\0" + "glGetnHistogramARB\0" + "\0" + /* _mesa_function_pool[16231]: DeleteTextures (offset 327) */ "ip\0" "glDeleteTextures\0" "glDeleteTexturesEXT\0" "\0" - /* _mesa_function_pool[15952]: TexCoordPointerEXT (will be remapped) */ + /* _mesa_function_pool[16272]: TexCoordPointerEXT (will be remapped) */ "iiiip\0" "glTexCoordPointerEXT\0" "\0" - /* _mesa_function_pool[15980]: TexSubImage4DSGIS (dynamic) */ + /* _mesa_function_pool[16300]: TexSubImage4DSGIS (dynamic) */ "iiiiiiiiiiiip\0" "glTexSubImage4DSGIS\0" "\0" - /* _mesa_function_pool[16015]: TexCoord3s (offset 116) */ + /* _mesa_function_pool[16335]: TexCoord3s (offset 116) */ "iii\0" "glTexCoord3s\0" "\0" - /* _mesa_function_pool[16033]: GetTexLevelParameteriv (offset 285) */ + /* _mesa_function_pool[16353]: GetTexLevelParameteriv (offset 285) */ "iiip\0" "glGetTexLevelParameteriv\0" "\0" - /* _mesa_function_pool[16064]: CombinerStageParameterfvNV (dynamic) */ + /* _mesa_function_pool[16384]: CombinerStageParameterfvNV (dynamic) */ "iip\0" "glCombinerStageParameterfvNV\0" "\0" - /* _mesa_function_pool[16098]: StopInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[16418]: StopInstrumentsSGIX (dynamic) */ "i\0" "glStopInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[16123]: TexCoord4fColor4fNormal3fVertex4fSUN (dynamic) */ + /* _mesa_function_pool[16443]: TexCoord4fColor4fNormal3fVertex4fSUN (dynamic) */ "fffffffffffffff\0" "glTexCoord4fColor4fNormal3fVertex4fSUN\0" "\0" - /* _mesa_function_pool[16179]: ClearAccum (offset 204) */ + /* _mesa_function_pool[16499]: ClearAccum (offset 204) */ "ffff\0" "glClearAccum\0" "\0" - /* _mesa_function_pool[16198]: DeformSGIX (dynamic) */ + /* _mesa_function_pool[16518]: DeformSGIX (dynamic) */ "i\0" "glDeformSGIX\0" "\0" - /* _mesa_function_pool[16214]: GetVertexAttribfvARB (will be remapped) */ + /* _mesa_function_pool[16534]: GetVertexAttribfvARB (will be remapped) */ "iip\0" "glGetVertexAttribfv\0" "glGetVertexAttribfvARB\0" "\0" - /* _mesa_function_pool[16262]: SecondaryColor3ivEXT (will be remapped) */ + /* _mesa_function_pool[16582]: SecondaryColor3ivEXT (will be remapped) */ "p\0" "glSecondaryColor3iv\0" "glSecondaryColor3ivEXT\0" "\0" - /* _mesa_function_pool[16308]: TexCoord4iv (offset 123) */ + /* _mesa_function_pool[16628]: TexCoord4iv (offset 123) */ "p\0" "glTexCoord4iv\0" "\0" - /* _mesa_function_pool[16325]: VertexAttribI4uiEXT (will be remapped) */ + /* _mesa_function_pool[16645]: VertexAttribI4uiEXT (will be remapped) */ "iiiii\0" "glVertexAttribI4uiEXT\0" "glVertexAttribI4ui\0" "\0" - /* _mesa_function_pool[16373]: GetFragmentMaterialfvSGIX (dynamic) */ + /* _mesa_function_pool[16693]: GetFragmentMaterialfvSGIX (dynamic) */ "iip\0" "glGetFragmentMaterialfvSGIX\0" "\0" - /* _mesa_function_pool[16406]: UniformMatrix4x2fv (will be remapped) */ + /* _mesa_function_pool[16726]: UniformMatrix4x2fv (will be remapped) */ "iiip\0" "glUniformMatrix4x2fv\0" "\0" - /* _mesa_function_pool[16433]: GetDetailTexFuncSGIS (dynamic) */ + /* _mesa_function_pool[16753]: GetDetailTexFuncSGIS (dynamic) */ "ip\0" "glGetDetailTexFuncSGIS\0" "\0" - /* _mesa_function_pool[16460]: GetCombinerStageParameterfvNV (dynamic) */ + /* _mesa_function_pool[16780]: GetCombinerStageParameterfvNV (dynamic) */ "iip\0" "glGetCombinerStageParameterfvNV\0" "\0" - /* _mesa_function_pool[16497]: SamplerParameterIiv (will be remapped) */ + /* _mesa_function_pool[16817]: SamplerParameterIiv (will be remapped) */ "iip\0" "glSamplerParameterIiv\0" "\0" - /* _mesa_function_pool[16524]: PolygonOffset (offset 319) */ + /* _mesa_function_pool[16844]: PolygonOffset (offset 319) */ "ff\0" "glPolygonOffset\0" "\0" - /* _mesa_function_pool[16544]: BindVertexArray (will be remapped) */ + /* _mesa_function_pool[16864]: BindVertexArray (will be remapped) */ "i\0" "glBindVertexArray\0" "\0" - /* _mesa_function_pool[16565]: Color4ubVertex2fvSUN (dynamic) */ + /* _mesa_function_pool[16885]: Color4ubVertex2fvSUN (dynamic) */ "pp\0" "glColor4ubVertex2fvSUN\0" "\0" - /* _mesa_function_pool[16592]: Rectd (offset 86) */ + /* _mesa_function_pool[16912]: Rectd (offset 86) */ "dddd\0" "glRectd\0" "\0" - /* _mesa_function_pool[16606]: TexFilterFuncSGIS (dynamic) */ + /* _mesa_function_pool[16926]: TexFilterFuncSGIS (dynamic) */ "iiip\0" "glTexFilterFuncSGIS\0" "\0" - /* _mesa_function_pool[16632]: TextureBarrierNV (will be remapped) */ + /* _mesa_function_pool[16952]: TextureBarrierNV (will be remapped) */ "\0" "glTextureBarrierNV\0" "\0" - /* _mesa_function_pool[16653]: SamplerParameterfv (will be remapped) */ + /* _mesa_function_pool[16973]: SamplerParameterfv (will be remapped) */ "iip\0" "glSamplerParameterfv\0" "\0" - /* _mesa_function_pool[16679]: VertexAttribI4ubvEXT (will be remapped) */ - "ip\0" - "glVertexAttribI4ubvEXT\0" - "glVertexAttribI4ubv\0" + /* _mesa_function_pool[16999]: ColorMaskIndexedEXT (will be remapped) */ + "iiiii\0" + "glColorMaskIndexedEXT\0" + "glColorMaski\0" "\0" - /* _mesa_function_pool[16726]: GetAttribLocationARB (will be remapped) */ + /* _mesa_function_pool[17041]: GetAttribLocationARB (will be remapped) */ "ip\0" "glGetAttribLocation\0" "glGetAttribLocationARB\0" "\0" - /* _mesa_function_pool[16773]: RasterPos3i (offset 74) */ + /* _mesa_function_pool[17088]: RasterPos3i (offset 74) */ "iii\0" "glRasterPos3i\0" "\0" - /* _mesa_function_pool[16792]: BlendEquationSeparateiARB (will be remapped) */ - "iii\0" - "glBlendEquationSeparateiARB\0" - "\0" - /* _mesa_function_pool[16825]: VertexAttrib4ubvARB (will be remapped) */ + /* _mesa_function_pool[17107]: VertexAttrib4ubvARB (will be remapped) */ "ip\0" "glVertexAttrib4ubv\0" "glVertexAttrib4ubvARB\0" "\0" - /* _mesa_function_pool[16870]: DetailTexFuncSGIS (dynamic) */ + /* _mesa_function_pool[17152]: DetailTexFuncSGIS (dynamic) */ "iip\0" "glDetailTexFuncSGIS\0" "\0" - /* _mesa_function_pool[16895]: Normal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[17177]: Normal3fVertex3fSUN (dynamic) */ "ffffff\0" "glNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[16925]: CopyTexImage2D (offset 324) */ + /* _mesa_function_pool[17207]: CopyTexImage2D (offset 324) */ "iiiiiiii\0" "glCopyTexImage2D\0" "glCopyTexImage2DEXT\0" "\0" - /* _mesa_function_pool[16972]: GetBufferPointervARB (will be remapped) */ + /* _mesa_function_pool[17254]: GetBufferPointervARB (will be remapped) */ "iip\0" "glGetBufferPointerv\0" "glGetBufferPointervARB\0" "\0" - /* _mesa_function_pool[17020]: ProgramEnvParameter4fARB (will be remapped) */ + /* _mesa_function_pool[17302]: ProgramEnvParameter4fARB (will be remapped) */ "iiffff\0" "glProgramEnvParameter4fARB\0" "glProgramParameter4fNV\0" "\0" - /* _mesa_function_pool[17078]: Uniform3ivARB (will be remapped) */ + /* _mesa_function_pool[17360]: Uniform3ivARB (will be remapped) */ "iip\0" "glUniform3iv\0" "glUniform3ivARB\0" "\0" - /* _mesa_function_pool[17112]: Lightfv (offset 160) */ + /* _mesa_function_pool[17394]: Lightfv (offset 160) */ "iip\0" "glLightfv\0" "\0" - /* _mesa_function_pool[17127]: PrimitiveRestartIndexNV (will be remapped) */ + /* _mesa_function_pool[17409]: PrimitiveRestartIndexNV (will be remapped) */ "i\0" "glPrimitiveRestartIndexNV\0" "glPrimitiveRestartIndex\0" "\0" - /* _mesa_function_pool[17180]: ClearDepth (offset 208) */ + /* _mesa_function_pool[17462]: ClearDepth (offset 208) */ "d\0" "glClearDepth\0" "\0" - /* _mesa_function_pool[17196]: GetFenceivNV (will be remapped) */ + /* _mesa_function_pool[17478]: GetFenceivNV (will be remapped) */ "iip\0" "glGetFenceivNV\0" "\0" - /* _mesa_function_pool[17216]: WindowPos4dvMESA (will be remapped) */ + /* _mesa_function_pool[17498]: WindowPos4dvMESA (will be remapped) */ "p\0" "glWindowPos4dvMESA\0" "\0" - /* _mesa_function_pool[17238]: ColorSubTable (offset 346) */ + /* _mesa_function_pool[17520]: ColorSubTable (offset 346) */ "iiiiip\0" "glColorSubTable\0" "glColorSubTableEXT\0" "\0" - /* _mesa_function_pool[17281]: Color4fv (offset 30) */ + /* _mesa_function_pool[17563]: Color4fv (offset 30) */ "p\0" "glColor4fv\0" "\0" - /* _mesa_function_pool[17295]: MultiTexCoord4ivARB (offset 405) */ + /* _mesa_function_pool[17577]: MultiTexCoord4ivARB (offset 405) */ "ip\0" "glMultiTexCoord4iv\0" "glMultiTexCoord4ivARB\0" "\0" - /* _mesa_function_pool[17340]: ProgramLocalParameters4fvEXT (will be remapped) */ + /* _mesa_function_pool[17622]: GetnMinmaxARB (will be remapped) */ + "iiiiip\0" + "glGetnMinmaxARB\0" + "\0" + /* _mesa_function_pool[17646]: ProgramLocalParameters4fvEXT (will be remapped) */ "iiip\0" "glProgramLocalParameters4fvEXT\0" "\0" - /* _mesa_function_pool[17377]: ColorPointer (offset 308) */ + /* _mesa_function_pool[17683]: ColorPointer (offset 308) */ "iiip\0" "glColorPointer\0" "\0" - /* _mesa_function_pool[17398]: Rects (offset 92) */ + /* _mesa_function_pool[17704]: Rects (offset 92) */ "iiii\0" "glRects\0" "\0" - /* _mesa_function_pool[17412]: GetMapAttribParameterfvNV (dynamic) */ + /* _mesa_function_pool[17718]: GetMapAttribParameterfvNV (dynamic) */ "iiip\0" "glGetMapAttribParameterfvNV\0" "\0" - /* _mesa_function_pool[17446]: CreateShaderProgramEXT (will be remapped) */ + /* _mesa_function_pool[17752]: CreateShaderProgramEXT (will be remapped) */ "ip\0" "glCreateShaderProgramEXT\0" "\0" - /* _mesa_function_pool[17475]: ActiveProgramEXT (will be remapped) */ + /* _mesa_function_pool[17781]: ActiveProgramEXT (will be remapped) */ "i\0" "glActiveProgramEXT\0" "\0" - /* _mesa_function_pool[17497]: Lightiv (offset 162) */ + /* _mesa_function_pool[17803]: Lightiv (offset 162) */ "iip\0" "glLightiv\0" "\0" - /* _mesa_function_pool[17512]: VertexAttrib4sARB (will be remapped) */ + /* _mesa_function_pool[17818]: VertexAttrib4sARB (will be remapped) */ "iiiii\0" "glVertexAttrib4s\0" "glVertexAttrib4sARB\0" "\0" - /* _mesa_function_pool[17556]: GetQueryObjectuivARB (will be remapped) */ + /* _mesa_function_pool[17862]: GetQueryObjectuivARB (will be remapped) */ "iip\0" "glGetQueryObjectuiv\0" "glGetQueryObjectuivARB\0" "\0" - /* _mesa_function_pool[17604]: GetTexParameteriv (offset 283) */ + /* _mesa_function_pool[17910]: GetTexParameteriv (offset 283) */ "iip\0" "glGetTexParameteriv\0" "\0" - /* _mesa_function_pool[17629]: MapParameterivNV (dynamic) */ + /* _mesa_function_pool[17935]: MapParameterivNV (dynamic) */ "iip\0" "glMapParameterivNV\0" "\0" - /* _mesa_function_pool[17653]: GenRenderbuffersEXT (will be remapped) */ + /* _mesa_function_pool[17959]: GenRenderbuffersEXT (will be remapped) */ "ip\0" "glGenRenderbuffers\0" "glGenRenderbuffersEXT\0" "\0" - /* _mesa_function_pool[17698]: ClearBufferfv (will be remapped) */ + /* _mesa_function_pool[18004]: ClearBufferfv (will be remapped) */ "iip\0" "glClearBufferfv\0" "\0" - /* _mesa_function_pool[17719]: VertexAttrib2dvARB (will be remapped) */ + /* _mesa_function_pool[18025]: VertexAttrib2dvARB (will be remapped) */ "ip\0" "glVertexAttrib2dv\0" "glVertexAttrib2dvARB\0" "\0" - /* _mesa_function_pool[17762]: EdgeFlagPointerEXT (will be remapped) */ + /* _mesa_function_pool[18068]: EdgeFlagPointerEXT (will be remapped) */ "iip\0" "glEdgeFlagPointerEXT\0" "\0" - /* _mesa_function_pool[17788]: VertexAttribs2svNV (will be remapped) */ + /* _mesa_function_pool[18094]: VertexAttribs2svNV (will be remapped) */ "iip\0" "glVertexAttribs2svNV\0" "\0" - /* _mesa_function_pool[17814]: WeightbvARB (dynamic) */ + /* _mesa_function_pool[18120]: WeightbvARB (dynamic) */ "ip\0" "glWeightbvARB\0" "\0" - /* _mesa_function_pool[17832]: VertexAttrib2fvARB (will be remapped) */ + /* _mesa_function_pool[18138]: VertexAttrib2fvARB (will be remapped) */ "ip\0" "glVertexAttrib2fv\0" "glVertexAttrib2fvARB\0" "\0" - /* _mesa_function_pool[17875]: GetBufferParameterivARB (will be remapped) */ + /* _mesa_function_pool[18181]: GetBufferParameterivARB (will be remapped) */ "iip\0" "glGetBufferParameteriv\0" "glGetBufferParameterivARB\0" "\0" - /* _mesa_function_pool[17929]: Rectdv (offset 87) */ + /* _mesa_function_pool[18235]: Rectdv (offset 87) */ "pp\0" "glRectdv\0" "\0" - /* _mesa_function_pool[17942]: ListParameteriSGIX (dynamic) */ + /* _mesa_function_pool[18248]: ListParameteriSGIX (dynamic) */ "iii\0" "glListParameteriSGIX\0" "\0" - /* _mesa_function_pool[17968]: BlendEquationiARB (will be remapped) */ + /* _mesa_function_pool[18274]: BlendEquationiARB (will be remapped) */ "ii\0" "glBlendEquationiARB\0" + "glBlendEquationIndexedAMD\0" "\0" - /* _mesa_function_pool[17992]: ReplacementCodeuiColor4fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[18324]: ReplacementCodeuiColor4fNormal3fVertex3fSUN (dynamic) */ "iffffffffff\0" "glReplacementCodeuiColor4fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[18051]: InstrumentsBufferSGIX (dynamic) */ + /* _mesa_function_pool[18383]: InstrumentsBufferSGIX (dynamic) */ "ip\0" "glInstrumentsBufferSGIX\0" "\0" - /* _mesa_function_pool[18079]: VertexAttrib4NivARB (will be remapped) */ + /* _mesa_function_pool[18411]: VertexAttrib4NivARB (will be remapped) */ "ip\0" "glVertexAttrib4Niv\0" "glVertexAttrib4NivARB\0" "\0" - /* _mesa_function_pool[18124]: DrawArraysInstancedARB (will be remapped) */ + /* _mesa_function_pool[18456]: DrawArraysInstancedARB (will be remapped) */ "iiii\0" "glDrawArraysInstancedARB\0" "glDrawArraysInstancedEXT\0" "glDrawArraysInstanced\0" "\0" - /* _mesa_function_pool[18202]: GetAttachedShaders (will be remapped) */ + /* _mesa_function_pool[18534]: GetAttachedShaders (will be remapped) */ "iipp\0" "glGetAttachedShaders\0" "\0" - /* _mesa_function_pool[18229]: GenVertexArraysAPPLE (will be remapped) */ + /* _mesa_function_pool[18561]: GenVertexArraysAPPLE (will be remapped) */ "ip\0" "glGenVertexArraysAPPLE\0" "\0" - /* _mesa_function_pool[18256]: ClearBufferfi (will be remapped) */ + /* _mesa_function_pool[18588]: ClearBufferfi (will be remapped) */ "iifi\0" "glClearBufferfi\0" "\0" - /* _mesa_function_pool[18278]: Materialiv (offset 172) */ + /* _mesa_function_pool[18610]: Materialiv (offset 172) */ "iip\0" "glMaterialiv\0" "\0" - /* _mesa_function_pool[18296]: PushClientAttrib (offset 335) */ + /* _mesa_function_pool[18628]: PushClientAttrib (offset 335) */ "i\0" "glPushClientAttrib\0" "\0" - /* _mesa_function_pool[18318]: SamplerParameteriv (will be remapped) */ + /* _mesa_function_pool[18650]: SamplerParameteriv (will be remapped) */ "iip\0" "glSamplerParameteriv\0" "\0" - /* _mesa_function_pool[18344]: TexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[18676]: TexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */ "pppp\0" "glTexCoord2fColor4fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[18390]: WindowPos2iMESA (will be remapped) */ + /* _mesa_function_pool[18722]: WindowPos2iMESA (will be remapped) */ "ii\0" "glWindowPos2i\0" "glWindowPos2iARB\0" "glWindowPos2iMESA\0" "\0" - /* _mesa_function_pool[18443]: SampleMaskSGIS (will be remapped) */ + /* _mesa_function_pool[18775]: SampleMaskSGIS (will be remapped) */ "fi\0" "glSampleMaskSGIS\0" "glSampleMaskEXT\0" "\0" - /* _mesa_function_pool[18480]: SecondaryColor3fvEXT (will be remapped) */ + /* _mesa_function_pool[18812]: SecondaryColor3fvEXT (will be remapped) */ "p\0" "glSecondaryColor3fv\0" "glSecondaryColor3fvEXT\0" "\0" - /* _mesa_function_pool[18526]: PolygonMode (offset 174) */ + /* _mesa_function_pool[18858]: PolygonMode (offset 174) */ "ii\0" "glPolygonMode\0" "\0" - /* _mesa_function_pool[18544]: CompressedTexSubImage1DARB (will be remapped) */ + /* _mesa_function_pool[18876]: CompressedTexSubImage1DARB (will be remapped) */ "iiiiiip\0" "glCompressedTexSubImage1D\0" "glCompressedTexSubImage1DARB\0" "\0" - /* _mesa_function_pool[18608]: VertexAttribI1iEXT (will be remapped) */ + /* _mesa_function_pool[18940]: VertexAttribI1iEXT (will be remapped) */ "ii\0" "glVertexAttribI1iEXT\0" "glVertexAttribI1i\0" "\0" - /* _mesa_function_pool[18651]: TexCoord2fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[18983]: TexCoord2fNormal3fVertex3fSUN (dynamic) */ "ffffffff\0" "glTexCoord2fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[18693]: GetVertexAttribivNV (will be remapped) */ + /* _mesa_function_pool[19025]: GetVertexAttribivNV (will be remapped) */ "iip\0" "glGetVertexAttribivNV\0" "\0" - /* _mesa_function_pool[18720]: GetProgramStringARB (will be remapped) */ + /* _mesa_function_pool[19052]: GetProgramStringARB (will be remapped) */ "iip\0" "glGetProgramStringARB\0" "\0" - /* _mesa_function_pool[18747]: VertexAttribIPointerEXT (will be remapped) */ + /* _mesa_function_pool[19079]: GetnUniformdvARB (will be remapped) */ + "iiip\0" + "glGetnUniformdvARB\0" + "\0" + /* _mesa_function_pool[19104]: VertexAttribIPointerEXT (will be remapped) */ "iiiip\0" "glVertexAttribIPointerEXT\0" "glVertexAttribIPointer\0" "\0" - /* _mesa_function_pool[18803]: TexBumpParameterfvATI (will be remapped) */ + /* _mesa_function_pool[19160]: TexBumpParameterfvATI (will be remapped) */ "ip\0" "glTexBumpParameterfvATI\0" "\0" - /* _mesa_function_pool[18831]: Tangent3ivEXT (dynamic) */ + /* _mesa_function_pool[19188]: Tangent3ivEXT (dynamic) */ "p\0" "glTangent3ivEXT\0" "\0" - /* _mesa_function_pool[18850]: CompileShaderARB (will be remapped) */ + /* _mesa_function_pool[19207]: CompileShaderARB (will be remapped) */ "i\0" "glCompileShader\0" "glCompileShaderARB\0" "\0" - /* _mesa_function_pool[18888]: DeleteShader (will be remapped) */ + /* _mesa_function_pool[19245]: DeleteShader (will be remapped) */ "i\0" "glDeleteShader\0" "\0" - /* _mesa_function_pool[18906]: DisableClientState (offset 309) */ + /* _mesa_function_pool[19263]: DisableClientState (offset 309) */ "i\0" "glDisableClientState\0" "\0" - /* _mesa_function_pool[18930]: TexGeni (offset 192) */ + /* _mesa_function_pool[19287]: TexGeni (offset 192) */ "iii\0" "glTexGeni\0" "\0" - /* _mesa_function_pool[18945]: TexGenf (offset 190) */ + /* _mesa_function_pool[19302]: TexGenf (offset 190) */ "iif\0" "glTexGenf\0" "\0" - /* _mesa_function_pool[18960]: Uniform3fARB (will be remapped) */ + /* _mesa_function_pool[19317]: Uniform3fARB (will be remapped) */ "ifff\0" "glUniform3f\0" "glUniform3fARB\0" "\0" - /* _mesa_function_pool[18993]: TexGend (offset 188) */ + /* _mesa_function_pool[19350]: TexGend (offset 188) */ "iid\0" "glTexGend\0" "\0" - /* _mesa_function_pool[19008]: ListParameterfvSGIX (dynamic) */ + /* _mesa_function_pool[19365]: ListParameterfvSGIX (dynamic) */ "iip\0" "glListParameterfvSGIX\0" "\0" - /* _mesa_function_pool[19035]: GetPolygonStipple (offset 274) */ + /* _mesa_function_pool[19392]: GetPolygonStipple (offset 274) */ "p\0" "glGetPolygonStipple\0" "\0" - /* _mesa_function_pool[19058]: Tangent3dvEXT (dynamic) */ + /* _mesa_function_pool[19415]: Tangent3dvEXT (dynamic) */ "p\0" "glTangent3dvEXT\0" "\0" - /* _mesa_function_pool[19077]: BindBufferOffsetEXT (will be remapped) */ + /* _mesa_function_pool[19434]: BindBufferOffsetEXT (will be remapped) */ "iiii\0" "glBindBufferOffsetEXT\0" "\0" - /* _mesa_function_pool[19105]: WindowPos3sMESA (will be remapped) */ + /* _mesa_function_pool[19462]: WindowPos3sMESA (will be remapped) */ "iii\0" "glWindowPos3s\0" "glWindowPos3sARB\0" "glWindowPos3sMESA\0" "\0" - /* _mesa_function_pool[19159]: VertexAttrib2svNV (will be remapped) */ + /* _mesa_function_pool[19516]: VertexAttrib2svNV (will be remapped) */ "ip\0" "glVertexAttrib2svNV\0" "\0" - /* _mesa_function_pool[19183]: DisableIndexedEXT (will be remapped) */ + /* _mesa_function_pool[19540]: DisableIndexedEXT (will be remapped) */ "ii\0" "glDisableIndexedEXT\0" "glDisablei\0" "\0" - /* _mesa_function_pool[19218]: BindBufferBaseEXT (will be remapped) */ + /* _mesa_function_pool[19575]: BindBufferBaseEXT (will be remapped) */ "iii\0" "glBindBufferBaseEXT\0" "glBindBufferBase\0" "\0" - /* _mesa_function_pool[19260]: TexCoord2fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[19617]: TexCoord2fVertex3fvSUN (dynamic) */ "pp\0" "glTexCoord2fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[19289]: WindowPos4sMESA (will be remapped) */ + /* _mesa_function_pool[19646]: WindowPos4sMESA (will be remapped) */ "iiii\0" "glWindowPos4sMESA\0" "\0" - /* _mesa_function_pool[19313]: VertexAttrib4NuivARB (will be remapped) */ + /* _mesa_function_pool[19670]: GetnPixelMapuivARB (will be remapped) */ + "iip\0" + "glGetnPixelMapuivARB\0" + "\0" + /* _mesa_function_pool[19696]: VertexAttrib4NuivARB (will be remapped) */ "ip\0" "glVertexAttrib4Nuiv\0" "glVertexAttrib4NuivARB\0" "\0" - /* _mesa_function_pool[19360]: ClientActiveTextureARB (offset 375) */ + /* _mesa_function_pool[19743]: ClientActiveTextureARB (offset 375) */ "i\0" "glClientActiveTexture\0" "glClientActiveTextureARB\0" "\0" - /* _mesa_function_pool[19410]: GetSamplerParameterIuiv (will be remapped) */ + /* _mesa_function_pool[19793]: GetSamplerParameterIuiv (will be remapped) */ "iip\0" "glGetSamplerParameterIuiv\0" "\0" - /* _mesa_function_pool[19441]: ReplacementCodeusvSUN (dynamic) */ + /* _mesa_function_pool[19824]: ReplacementCodeusvSUN (dynamic) */ "p\0" "glReplacementCodeusvSUN\0" "\0" - /* _mesa_function_pool[19468]: Uniform4fARB (will be remapped) */ + /* _mesa_function_pool[19851]: Uniform4fARB (will be remapped) */ "iffff\0" "glUniform4f\0" "glUniform4fARB\0" "\0" - /* _mesa_function_pool[19502]: Color4sv (offset 34) */ + /* _mesa_function_pool[19885]: Color4sv (offset 34) */ "p\0" "glColor4sv\0" "\0" - /* _mesa_function_pool[19516]: FlushMappedBufferRange (will be remapped) */ + /* _mesa_function_pool[19899]: FlushMappedBufferRange (will be remapped) */ "iii\0" "glFlushMappedBufferRange\0" "\0" - /* _mesa_function_pool[19546]: IsProgramNV (will be remapped) */ + /* _mesa_function_pool[19929]: IsProgramNV (will be remapped) */ "i\0" "glIsProgramARB\0" "glIsProgramNV\0" "\0" - /* _mesa_function_pool[19578]: FlushMappedBufferRangeAPPLE (will be remapped) */ + /* _mesa_function_pool[19961]: FlushMappedBufferRangeAPPLE (will be remapped) */ "iii\0" "glFlushMappedBufferRangeAPPLE\0" "\0" - /* _mesa_function_pool[19613]: PixelZoom (offset 246) */ + /* _mesa_function_pool[19996]: PixelZoom (offset 246) */ "ff\0" "glPixelZoom\0" "\0" - /* _mesa_function_pool[19629]: ReplacementCodePointerSUN (dynamic) */ + /* _mesa_function_pool[20012]: ReplacementCodePointerSUN (dynamic) */ "iip\0" "glReplacementCodePointerSUN\0" "\0" - /* _mesa_function_pool[19662]: ProgramEnvParameter4dARB (will be remapped) */ + /* _mesa_function_pool[20045]: ProgramEnvParameter4dARB (will be remapped) */ "iidddd\0" "glProgramEnvParameter4dARB\0" "glProgramParameter4dNV\0" "\0" - /* _mesa_function_pool[19720]: ColorTableParameterfv (offset 340) */ + /* _mesa_function_pool[20103]: ColorTableParameterfv (offset 340) */ "iip\0" "glColorTableParameterfv\0" "glColorTableParameterfvSGI\0" "\0" - /* _mesa_function_pool[19776]: FragmentLightModelfSGIX (dynamic) */ + /* _mesa_function_pool[20159]: FragmentLightModelfSGIX (dynamic) */ "if\0" "glFragmentLightModelfSGIX\0" "\0" - /* _mesa_function_pool[19806]: Binormal3bvEXT (dynamic) */ + /* _mesa_function_pool[20189]: Binormal3bvEXT (dynamic) */ "p\0" "glBinormal3bvEXT\0" "\0" - /* _mesa_function_pool[19826]: PixelMapuiv (offset 252) */ + /* _mesa_function_pool[20209]: PixelMapuiv (offset 252) */ "iip\0" "glPixelMapuiv\0" "\0" - /* _mesa_function_pool[19845]: Color3dv (offset 12) */ + /* _mesa_function_pool[20228]: Color3dv (offset 12) */ "p\0" "glColor3dv\0" "\0" - /* _mesa_function_pool[19859]: IsTexture (offset 330) */ + /* _mesa_function_pool[20242]: IsTexture (offset 330) */ "i\0" "glIsTexture\0" "glIsTextureEXT\0" "\0" - /* _mesa_function_pool[19889]: GenSamplers (will be remapped) */ + /* _mesa_function_pool[20272]: GenSamplers (will be remapped) */ "ip\0" "glGenSamplers\0" "\0" - /* _mesa_function_pool[19907]: VertexWeightfvEXT (dynamic) */ + /* _mesa_function_pool[20290]: VertexWeightfvEXT (dynamic) */ "p\0" "glVertexWeightfvEXT\0" "\0" - /* _mesa_function_pool[19930]: VertexAttrib1dARB (will be remapped) */ + /* _mesa_function_pool[20313]: VertexAttrib1dARB (will be remapped) */ "id\0" "glVertexAttrib1d\0" "glVertexAttrib1dARB\0" "\0" - /* _mesa_function_pool[19971]: ImageTransformParameterivHP (dynamic) */ + /* _mesa_function_pool[20354]: ImageTransformParameterivHP (dynamic) */ "iip\0" "glImageTransformParameterivHP\0" "\0" - /* _mesa_function_pool[20006]: TexCoord4i (offset 122) */ + /* _mesa_function_pool[20389]: TexCoord4i (offset 122) */ "iiii\0" "glTexCoord4i\0" "\0" - /* _mesa_function_pool[20025]: DeleteQueriesARB (will be remapped) */ + /* _mesa_function_pool[20408]: DeleteQueriesARB (will be remapped) */ "ip\0" "glDeleteQueries\0" "glDeleteQueriesARB\0" "\0" - /* _mesa_function_pool[20064]: Color4ubVertex2fSUN (dynamic) */ + /* _mesa_function_pool[20447]: Color4ubVertex2fSUN (dynamic) */ "iiiiff\0" "glColor4ubVertex2fSUN\0" "\0" - /* _mesa_function_pool[20094]: FragmentColorMaterialSGIX (dynamic) */ + /* _mesa_function_pool[20477]: FragmentColorMaterialSGIX (dynamic) */ "ii\0" "glFragmentColorMaterialSGIX\0" "\0" - /* _mesa_function_pool[20126]: CurrentPaletteMatrixARB (dynamic) */ + /* _mesa_function_pool[20509]: CurrentPaletteMatrixARB (dynamic) */ "i\0" "glCurrentPaletteMatrixARB\0" "\0" - /* _mesa_function_pool[20155]: GetMapdv (offset 266) */ + /* _mesa_function_pool[20538]: GetMapdv (offset 266) */ "iip\0" "glGetMapdv\0" "\0" - /* _mesa_function_pool[20171]: ObjectPurgeableAPPLE (will be remapped) */ + /* _mesa_function_pool[20554]: ObjectPurgeableAPPLE (will be remapped) */ "iii\0" "glObjectPurgeableAPPLE\0" "\0" - /* _mesa_function_pool[20199]: GetStringi (will be remapped) */ + /* _mesa_function_pool[20582]: GetStringi (will be remapped) */ "ii\0" "glGetStringi\0" "\0" - /* _mesa_function_pool[20216]: SamplePatternSGIS (will be remapped) */ + /* _mesa_function_pool[20599]: SamplePatternSGIS (will be remapped) */ "i\0" "glSamplePatternSGIS\0" "glSamplePatternEXT\0" "\0" - /* _mesa_function_pool[20258]: PixelStoref (offset 249) */ + /* _mesa_function_pool[20641]: PixelStoref (offset 249) */ "if\0" "glPixelStoref\0" "\0" - /* _mesa_function_pool[20276]: IsQueryARB (will be remapped) */ + /* _mesa_function_pool[20659]: IsQueryARB (will be remapped) */ "i\0" "glIsQuery\0" "glIsQueryARB\0" "\0" - /* _mesa_function_pool[20302]: ReplacementCodeuiColor4ubVertex3fSUN (dynamic) */ + /* _mesa_function_pool[20685]: ReplacementCodeuiColor4ubVertex3fSUN (dynamic) */ "iiiiifff\0" "glReplacementCodeuiColor4ubVertex3fSUN\0" "\0" - /* _mesa_function_pool[20351]: PixelStorei (offset 250) */ + /* _mesa_function_pool[20734]: PixelStorei (offset 250) */ "ii\0" "glPixelStorei\0" "\0" - /* _mesa_function_pool[20369]: VertexAttrib4usvARB (will be remapped) */ + /* _mesa_function_pool[20752]: VertexAttrib4usvARB (will be remapped) */ "ip\0" "glVertexAttrib4usv\0" "glVertexAttrib4usvARB\0" "\0" - /* _mesa_function_pool[20414]: LinkProgramARB (will be remapped) */ + /* _mesa_function_pool[20797]: LinkProgramARB (will be remapped) */ "i\0" "glLinkProgram\0" "glLinkProgramARB\0" "\0" - /* _mesa_function_pool[20448]: VertexAttrib2fNV (will be remapped) */ + /* _mesa_function_pool[20831]: VertexAttrib2fNV (will be remapped) */ "iff\0" "glVertexAttrib2fNV\0" "\0" - /* _mesa_function_pool[20472]: ShaderSourceARB (will be remapped) */ + /* _mesa_function_pool[20855]: ShaderSourceARB (will be remapped) */ "iipp\0" "glShaderSource\0" "glShaderSourceARB\0" "\0" - /* _mesa_function_pool[20511]: FragmentMaterialiSGIX (dynamic) */ + /* _mesa_function_pool[20894]: FragmentMaterialiSGIX (dynamic) */ "iii\0" "glFragmentMaterialiSGIX\0" "\0" - /* _mesa_function_pool[20540]: EvalCoord2dv (offset 233) */ + /* _mesa_function_pool[20923]: EvalCoord2dv (offset 233) */ "p\0" "glEvalCoord2dv\0" "\0" - /* _mesa_function_pool[20558]: VertexAttrib3svARB (will be remapped) */ + /* _mesa_function_pool[20941]: VertexAttrib3svARB (will be remapped) */ "ip\0" "glVertexAttrib3sv\0" "glVertexAttrib3svARB\0" "\0" - /* _mesa_function_pool[20601]: ColorMaterial (offset 151) */ + /* _mesa_function_pool[20984]: ColorMaterial (offset 151) */ "ii\0" "glColorMaterial\0" "\0" - /* _mesa_function_pool[20621]: CompressedTexSubImage3DARB (will be remapped) */ + /* _mesa_function_pool[21004]: CompressedTexSubImage3DARB (will be remapped) */ "iiiiiiiiiip\0" "glCompressedTexSubImage3D\0" "glCompressedTexSubImage3DARB\0" "\0" - /* _mesa_function_pool[20689]: WindowPos2ivMESA (will be remapped) */ + /* _mesa_function_pool[21072]: WindowPos2ivMESA (will be remapped) */ "p\0" "glWindowPos2iv\0" "glWindowPos2ivARB\0" "glWindowPos2ivMESA\0" "\0" - /* _mesa_function_pool[20744]: IsFramebufferEXT (will be remapped) */ + /* _mesa_function_pool[21127]: IsFramebufferEXT (will be remapped) */ "i\0" "glIsFramebuffer\0" "glIsFramebufferEXT\0" "\0" - /* _mesa_function_pool[20782]: Uniform4ivARB (will be remapped) */ + /* _mesa_function_pool[21165]: Uniform4ivARB (will be remapped) */ "iip\0" "glUniform4iv\0" "glUniform4ivARB\0" "\0" - /* _mesa_function_pool[20816]: GetVertexAttribdvARB (will be remapped) */ + /* _mesa_function_pool[21199]: GetVertexAttribdvARB (will be remapped) */ "iip\0" "glGetVertexAttribdv\0" "glGetVertexAttribdvARB\0" "\0" - /* _mesa_function_pool[20864]: TexBumpParameterivATI (will be remapped) */ + /* _mesa_function_pool[21247]: TexBumpParameterivATI (will be remapped) */ "ip\0" "glTexBumpParameterivATI\0" "\0" - /* _mesa_function_pool[20892]: GetSeparableFilter (offset 359) */ + /* _mesa_function_pool[21275]: GetSeparableFilter (offset 359) */ "iiippp\0" "glGetSeparableFilter\0" "glGetSeparableFilterEXT\0" "\0" - /* _mesa_function_pool[20945]: Binormal3dEXT (dynamic) */ + /* _mesa_function_pool[21328]: Binormal3dEXT (dynamic) */ "ddd\0" "glBinormal3dEXT\0" "\0" - /* _mesa_function_pool[20966]: SpriteParameteriSGIX (dynamic) */ + /* _mesa_function_pool[21349]: SpriteParameteriSGIX (dynamic) */ "ii\0" "glSpriteParameteriSGIX\0" "\0" - /* _mesa_function_pool[20993]: RequestResidentProgramsNV (will be remapped) */ + /* _mesa_function_pool[21376]: RequestResidentProgramsNV (will be remapped) */ "ip\0" "glRequestResidentProgramsNV\0" "\0" - /* _mesa_function_pool[21025]: TagSampleBufferSGIX (dynamic) */ + /* _mesa_function_pool[21408]: TagSampleBufferSGIX (dynamic) */ "\0" "glTagSampleBufferSGIX\0" "\0" - /* _mesa_function_pool[21049]: TransformFeedbackVaryingsEXT (will be remapped) */ + /* _mesa_function_pool[21432]: TransformFeedbackVaryingsEXT (will be remapped) */ "iipi\0" "glTransformFeedbackVaryingsEXT\0" "glTransformFeedbackVaryings\0" "\0" - /* _mesa_function_pool[21114]: FeedbackBuffer (offset 194) */ + /* _mesa_function_pool[21497]: FeedbackBuffer (offset 194) */ "iip\0" "glFeedbackBuffer\0" "\0" - /* _mesa_function_pool[21136]: RasterPos2iv (offset 67) */ + /* _mesa_function_pool[21519]: RasterPos2iv (offset 67) */ "p\0" "glRasterPos2iv\0" "\0" - /* _mesa_function_pool[21154]: TexImage1D (offset 182) */ + /* _mesa_function_pool[21537]: TexImage1D (offset 182) */ "iiiiiiip\0" "glTexImage1D\0" "\0" - /* _mesa_function_pool[21177]: ListParameterivSGIX (dynamic) */ + /* _mesa_function_pool[21560]: ListParameterivSGIX (dynamic) */ "iip\0" "glListParameterivSGIX\0" "\0" - /* _mesa_function_pool[21204]: MultiDrawElementsEXT (will be remapped) */ + /* _mesa_function_pool[21587]: MultiDrawElementsEXT (will be remapped) */ "ipipi\0" "glMultiDrawElements\0" "glMultiDrawElementsEXT\0" "\0" - /* _mesa_function_pool[21254]: Color3s (offset 17) */ + /* _mesa_function_pool[21637]: Color3s (offset 17) */ "iii\0" "glColor3s\0" "\0" - /* _mesa_function_pool[21269]: Uniform1ivARB (will be remapped) */ + /* _mesa_function_pool[21652]: Uniform1ivARB (will be remapped) */ "iip\0" "glUniform1iv\0" "glUniform1ivARB\0" "\0" - /* _mesa_function_pool[21303]: WindowPos2sMESA (will be remapped) */ + /* _mesa_function_pool[21686]: WindowPos2sMESA (will be remapped) */ "ii\0" "glWindowPos2s\0" "glWindowPos2sARB\0" "glWindowPos2sMESA\0" "\0" - /* _mesa_function_pool[21356]: WeightusvARB (dynamic) */ + /* _mesa_function_pool[21739]: WeightusvARB (dynamic) */ "ip\0" "glWeightusvARB\0" "\0" - /* _mesa_function_pool[21375]: TexCoordPointer (offset 320) */ + /* _mesa_function_pool[21758]: TexCoordPointer (offset 320) */ "iiip\0" "glTexCoordPointer\0" "\0" - /* _mesa_function_pool[21399]: FogCoordPointerEXT (will be remapped) */ + /* _mesa_function_pool[21782]: FogCoordPointerEXT (will be remapped) */ "iip\0" "glFogCoordPointer\0" "glFogCoordPointerEXT\0" "\0" - /* _mesa_function_pool[21443]: IndexMaterialEXT (dynamic) */ + /* _mesa_function_pool[21826]: GetnSeparableFilterARB (will be remapped) */ + "iiiipipp\0" + "glGetnSeparableFilterARB\0" + "\0" + /* _mesa_function_pool[21861]: IndexMaterialEXT (dynamic) */ "ii\0" "glIndexMaterialEXT\0" "\0" - /* _mesa_function_pool[21466]: Color3i (offset 15) */ + /* _mesa_function_pool[21884]: Color3i (offset 15) */ "iii\0" "glColor3i\0" "\0" - /* _mesa_function_pool[21481]: FrontFace (offset 157) */ + /* _mesa_function_pool[21899]: FrontFace (offset 157) */ "i\0" "glFrontFace\0" "\0" - /* _mesa_function_pool[21496]: EvalCoord2d (offset 232) */ + /* _mesa_function_pool[21914]: EvalCoord2d (offset 232) */ "dd\0" "glEvalCoord2d\0" "\0" - /* _mesa_function_pool[21514]: SecondaryColor3ubvEXT (will be remapped) */ + /* _mesa_function_pool[21932]: SecondaryColor3ubvEXT (will be remapped) */ "p\0" "glSecondaryColor3ubv\0" "glSecondaryColor3ubvEXT\0" "\0" - /* _mesa_function_pool[21562]: EvalCoord2f (offset 234) */ + /* _mesa_function_pool[21980]: EvalCoord2f (offset 234) */ "ff\0" "glEvalCoord2f\0" "\0" - /* _mesa_function_pool[21580]: VertexAttrib4dvARB (will be remapped) */ + /* _mesa_function_pool[21998]: VertexAttrib4dvARB (will be remapped) */ "ip\0" "glVertexAttrib4dv\0" "glVertexAttrib4dvARB\0" "\0" - /* _mesa_function_pool[21623]: BindAttribLocationARB (will be remapped) */ + /* _mesa_function_pool[22041]: BindAttribLocationARB (will be remapped) */ "iip\0" "glBindAttribLocation\0" "glBindAttribLocationARB\0" "\0" - /* _mesa_function_pool[21673]: Color3b (offset 9) */ + /* _mesa_function_pool[22091]: Color3b (offset 9) */ "iii\0" "glColor3b\0" "\0" - /* _mesa_function_pool[21688]: MultiTexCoord2dARB (offset 384) */ + /* _mesa_function_pool[22106]: MultiTexCoord2dARB (offset 384) */ "idd\0" "glMultiTexCoord2d\0" "glMultiTexCoord2dARB\0" "\0" - /* _mesa_function_pool[21732]: ExecuteProgramNV (will be remapped) */ + /* _mesa_function_pool[22150]: ExecuteProgramNV (will be remapped) */ "iip\0" "glExecuteProgramNV\0" "\0" - /* _mesa_function_pool[21756]: Color3f (offset 13) */ + /* _mesa_function_pool[22174]: Color3f (offset 13) */ "fff\0" "glColor3f\0" "\0" - /* _mesa_function_pool[21771]: LightEnviSGIX (dynamic) */ + /* _mesa_function_pool[22189]: LightEnviSGIX (dynamic) */ "ii\0" "glLightEnviSGIX\0" "\0" - /* _mesa_function_pool[21791]: Color3d (offset 11) */ + /* _mesa_function_pool[22209]: Color3d (offset 11) */ "ddd\0" "glColor3d\0" "\0" - /* _mesa_function_pool[21806]: Normal3dv (offset 55) */ + /* _mesa_function_pool[22224]: Normal3dv (offset 55) */ "p\0" "glNormal3dv\0" "\0" - /* _mesa_function_pool[21821]: Lightf (offset 159) */ + /* _mesa_function_pool[22239]: Lightf (offset 159) */ "iif\0" "glLightf\0" "\0" - /* _mesa_function_pool[21835]: ReplacementCodeuiSUN (dynamic) */ + /* _mesa_function_pool[22253]: ReplacementCodeuiSUN (dynamic) */ "i\0" "glReplacementCodeuiSUN\0" "\0" - /* _mesa_function_pool[21861]: MatrixMode (offset 293) */ + /* _mesa_function_pool[22279]: MatrixMode (offset 293) */ "i\0" "glMatrixMode\0" "\0" - /* _mesa_function_pool[21877]: GetPixelMapusv (offset 273) */ + /* _mesa_function_pool[22295]: GetPixelMapusv (offset 273) */ "ip\0" "glGetPixelMapusv\0" "\0" - /* _mesa_function_pool[21898]: Lighti (offset 161) */ + /* _mesa_function_pool[22316]: Lighti (offset 161) */ "iii\0" "glLighti\0" "\0" - /* _mesa_function_pool[21912]: VertexAttribPointerNV (will be remapped) */ + /* _mesa_function_pool[22330]: VertexAttribPointerNV (will be remapped) */ "iiiip\0" "glVertexAttribPointerNV\0" "\0" - /* _mesa_function_pool[21943]: ClearDepthf (will be remapped) */ + /* _mesa_function_pool[22361]: ClearDepthf (will be remapped) */ "f\0" "glClearDepthf\0" "\0" - /* _mesa_function_pool[21960]: GetBooleanIndexedvEXT (will be remapped) */ + /* _mesa_function_pool[22378]: GetBooleanIndexedvEXT (will be remapped) */ "iip\0" "glGetBooleanIndexedvEXT\0" "glGetBooleani_v\0" "\0" - /* _mesa_function_pool[22005]: GetFramebufferAttachmentParameterivEXT (will be remapped) */ + /* _mesa_function_pool[22423]: GetFramebufferAttachmentParameterivEXT (will be remapped) */ "iiip\0" "glGetFramebufferAttachmentParameteriv\0" "glGetFramebufferAttachmentParameterivEXT\0" "\0" - /* _mesa_function_pool[22090]: PixelTransformParameterfEXT (dynamic) */ + /* _mesa_function_pool[22508]: PixelTransformParameterfEXT (dynamic) */ "iif\0" "glPixelTransformParameterfEXT\0" "\0" - /* _mesa_function_pool[22125]: MultiTexCoord4dvARB (offset 401) */ + /* _mesa_function_pool[22543]: MultiTexCoord4dvARB (offset 401) */ "ip\0" "glMultiTexCoord4dv\0" "glMultiTexCoord4dvARB\0" "\0" - /* _mesa_function_pool[22170]: PixelTransformParameteriEXT (dynamic) */ + /* _mesa_function_pool[22588]: PixelTransformParameteriEXT (dynamic) */ "iii\0" "glPixelTransformParameteriEXT\0" "\0" - /* _mesa_function_pool[22205]: GetDoublev (offset 260) */ + /* _mesa_function_pool[22623]: GetDoublev (offset 260) */ "ip\0" "glGetDoublev\0" "\0" - /* _mesa_function_pool[22222]: MultMatrixd (offset 295) */ + /* _mesa_function_pool[22640]: MultMatrixd (offset 295) */ "p\0" "glMultMatrixd\0" "\0" - /* _mesa_function_pool[22239]: MultMatrixf (offset 294) */ + /* _mesa_function_pool[22657]: MultMatrixf (offset 294) */ "p\0" "glMultMatrixf\0" "\0" - /* _mesa_function_pool[22256]: VertexAttribI4bvEXT (will be remapped) */ + /* _mesa_function_pool[22674]: VertexAttribI4bvEXT (will be remapped) */ "ip\0" "glVertexAttribI4bvEXT\0" "glVertexAttribI4bv\0" "\0" - /* _mesa_function_pool[22301]: TexCoord2fColor4ubVertex3fSUN (dynamic) */ + /* _mesa_function_pool[22719]: TexCoord2fColor4ubVertex3fSUN (dynamic) */ "ffiiiifff\0" "glTexCoord2fColor4ubVertex3fSUN\0" "\0" - /* _mesa_function_pool[22344]: Uniform1iARB (will be remapped) */ + /* _mesa_function_pool[22762]: Uniform1iARB (will be remapped) */ "ii\0" "glUniform1i\0" "glUniform1iARB\0" "\0" - /* _mesa_function_pool[22375]: VertexAttribPointerARB (will be remapped) */ + /* _mesa_function_pool[22793]: GetnMapfvARB (will be remapped) */ + "iiip\0" + "glGetnMapfvARB\0" + "\0" + /* _mesa_function_pool[22814]: VertexAttribPointerARB (will be remapped) */ "iiiiip\0" "glVertexAttribPointer\0" "glVertexAttribPointerARB\0" "\0" - /* _mesa_function_pool[22430]: VertexAttrib3sNV (will be remapped) */ + /* _mesa_function_pool[22869]: VertexAttrib3sNV (will be remapped) */ "iiii\0" "glVertexAttrib3sNV\0" "\0" - /* _mesa_function_pool[22455]: SharpenTexFuncSGIS (dynamic) */ + /* _mesa_function_pool[22894]: SharpenTexFuncSGIS (dynamic) */ "iip\0" "glSharpenTexFuncSGIS\0" "\0" - /* _mesa_function_pool[22481]: MultiTexCoord4fvARB (offset 403) */ + /* _mesa_function_pool[22920]: MultiTexCoord4fvARB (offset 403) */ "ip\0" "glMultiTexCoord4fv\0" "glMultiTexCoord4fvARB\0" "\0" - /* _mesa_function_pool[22526]: Uniform2uiEXT (will be remapped) */ + /* _mesa_function_pool[22965]: Uniform2uiEXT (will be remapped) */ "iii\0" "glUniform2uiEXT\0" "glUniform2ui\0" "\0" - /* _mesa_function_pool[22560]: UniformMatrix2x3fv (will be remapped) */ + /* _mesa_function_pool[22999]: UniformMatrix2x3fv (will be remapped) */ "iiip\0" "glUniformMatrix2x3fv\0" "\0" - /* _mesa_function_pool[22587]: SamplerParameteri (will be remapped) */ + /* _mesa_function_pool[23026]: SamplerParameteri (will be remapped) */ "iii\0" "glSamplerParameteri\0" "\0" - /* _mesa_function_pool[22612]: SamplerParameterf (will be remapped) */ + /* _mesa_function_pool[23051]: SamplerParameterf (will be remapped) */ "iif\0" "glSamplerParameterf\0" "\0" - /* _mesa_function_pool[22637]: CombinerParameteriNV (will be remapped) */ + /* _mesa_function_pool[23076]: CombinerParameteriNV (will be remapped) */ "ii\0" "glCombinerParameteriNV\0" "\0" - /* _mesa_function_pool[22664]: DeleteAsyncMarkersSGIX (dynamic) */ + /* _mesa_function_pool[23103]: DeleteAsyncMarkersSGIX (dynamic) */ "ii\0" "glDeleteAsyncMarkersSGIX\0" "\0" - /* _mesa_function_pool[22693]: ReplacementCodeusSUN (dynamic) */ + /* _mesa_function_pool[23132]: ReplacementCodeusSUN (dynamic) */ "i\0" "glReplacementCodeusSUN\0" "\0" - /* _mesa_function_pool[22719]: IsAsyncMarkerSGIX (dynamic) */ + /* _mesa_function_pool[23158]: IsAsyncMarkerSGIX (dynamic) */ "i\0" "glIsAsyncMarkerSGIX\0" "\0" - /* _mesa_function_pool[22742]: FrameZoomSGIX (dynamic) */ + /* _mesa_function_pool[23181]: FrameZoomSGIX (dynamic) */ "i\0" "glFrameZoomSGIX\0" "\0" - /* _mesa_function_pool[22761]: Normal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[23200]: Normal3fVertex3fvSUN (dynamic) */ "pp\0" "glNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[22788]: RasterPos4sv (offset 85) */ + /* _mesa_function_pool[23227]: GetnUniformuivARB (will be remapped) */ + "iiip\0" + "glGetnUniformuivARB\0" + "\0" + /* _mesa_function_pool[23253]: RasterPos4sv (offset 85) */ "p\0" "glRasterPos4sv\0" "\0" - /* _mesa_function_pool[22806]: VertexAttrib4NsvARB (will be remapped) */ + /* _mesa_function_pool[23271]: VertexAttrib4NsvARB (will be remapped) */ "ip\0" "glVertexAttrib4Nsv\0" "glVertexAttrib4NsvARB\0" "\0" - /* _mesa_function_pool[22851]: VertexAttrib3fvARB (will be remapped) */ + /* _mesa_function_pool[23316]: VertexAttrib3fvARB (will be remapped) */ "ip\0" "glVertexAttrib3fv\0" "glVertexAttrib3fvARB\0" "\0" - /* _mesa_function_pool[22894]: ClearColor (offset 206) */ + /* _mesa_function_pool[23359]: ClearColor (offset 206) */ "ffff\0" "glClearColor\0" "\0" - /* _mesa_function_pool[22913]: GetSynciv (will be remapped) */ + /* _mesa_function_pool[23378]: GetSynciv (will be remapped) */ "iiipp\0" "glGetSynciv\0" "\0" - /* _mesa_function_pool[22932]: ClearColorIiEXT (will be remapped) */ + /* _mesa_function_pool[23397]: ClearColorIiEXT (will be remapped) */ "iiii\0" "glClearColorIiEXT\0" "\0" - /* _mesa_function_pool[22956]: DeleteFramebuffersEXT (will be remapped) */ + /* _mesa_function_pool[23421]: DeleteFramebuffersEXT (will be remapped) */ "ip\0" "glDeleteFramebuffers\0" "glDeleteFramebuffersEXT\0" "\0" - /* _mesa_function_pool[23005]: GlobalAlphaFactorsSUN (dynamic) */ + /* _mesa_function_pool[23470]: GlobalAlphaFactorsSUN (dynamic) */ "i\0" "glGlobalAlphaFactorsSUN\0" "\0" - /* _mesa_function_pool[23032]: IsEnabledIndexedEXT (will be remapped) */ + /* _mesa_function_pool[23497]: IsEnabledIndexedEXT (will be remapped) */ "ii\0" "glIsEnabledIndexedEXT\0" "glIsEnabledi\0" "\0" - /* _mesa_function_pool[23071]: TexEnviv (offset 187) */ + /* _mesa_function_pool[23536]: TexEnviv (offset 187) */ "iip\0" "glTexEnviv\0" "\0" - /* _mesa_function_pool[23087]: TexSubImage3D (offset 372) */ + /* _mesa_function_pool[23552]: TexSubImage3D (offset 372) */ "iiiiiiiiiip\0" "glTexSubImage3D\0" "glTexSubImage3DEXT\0" "\0" - /* _mesa_function_pool[23135]: Tangent3fEXT (dynamic) */ + /* _mesa_function_pool[23600]: Tangent3fEXT (dynamic) */ "fff\0" "glTangent3fEXT\0" "\0" - /* _mesa_function_pool[23155]: SecondaryColor3uivEXT (will be remapped) */ + /* _mesa_function_pool[23620]: SecondaryColor3uivEXT (will be remapped) */ "p\0" "glSecondaryColor3uiv\0" "glSecondaryColor3uivEXT\0" "\0" - /* _mesa_function_pool[23203]: MatrixIndexubvARB (dynamic) */ + /* _mesa_function_pool[23668]: MatrixIndexubvARB (dynamic) */ "ip\0" "glMatrixIndexubvARB\0" "\0" - /* _mesa_function_pool[23227]: Color4fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[23692]: Color4fNormal3fVertex3fSUN (dynamic) */ "ffffffffff\0" "glColor4fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[23268]: PixelTexGenParameterfSGIS (will be remapped) */ + /* _mesa_function_pool[23733]: PixelTexGenParameterfSGIS (will be remapped) */ "if\0" "glPixelTexGenParameterfSGIS\0" "\0" - /* _mesa_function_pool[23300]: CreateShader (will be remapped) */ + /* _mesa_function_pool[23765]: CreateShader (will be remapped) */ "i\0" "glCreateShader\0" "\0" - /* _mesa_function_pool[23318]: GetColorTableParameterfv (offset 344) */ + /* _mesa_function_pool[23783]: GetColorTableParameterfv (offset 344) */ "iip\0" "glGetColorTableParameterfv\0" "glGetColorTableParameterfvSGI\0" "glGetColorTableParameterfvEXT\0" "\0" - /* _mesa_function_pool[23410]: FragmentLightModelfvSGIX (dynamic) */ + /* _mesa_function_pool[23875]: FragmentLightModelfvSGIX (dynamic) */ "ip\0" "glFragmentLightModelfvSGIX\0" "\0" - /* _mesa_function_pool[23441]: Bitmap (offset 8) */ + /* _mesa_function_pool[23906]: Bitmap (offset 8) */ "iiffffp\0" "glBitmap\0" "\0" - /* _mesa_function_pool[23459]: MultiTexCoord3fARB (offset 394) */ + /* _mesa_function_pool[23924]: MultiTexCoord3fARB (offset 394) */ "ifff\0" "glMultiTexCoord3f\0" "glMultiTexCoord3fARB\0" "\0" - /* _mesa_function_pool[23504]: GetTexLevelParameterfv (offset 284) */ + /* _mesa_function_pool[23969]: GetTexLevelParameterfv (offset 284) */ "iiip\0" "glGetTexLevelParameterfv\0" "\0" - /* _mesa_function_pool[23535]: GetPixelTexGenParameterfvSGIS (will be remapped) */ + /* _mesa_function_pool[24000]: GetPixelTexGenParameterfvSGIS (will be remapped) */ "ip\0" "glGetPixelTexGenParameterfvSGIS\0" "\0" - /* _mesa_function_pool[23571]: GenFramebuffersEXT (will be remapped) */ + /* _mesa_function_pool[24036]: GenFramebuffersEXT (will be remapped) */ "ip\0" "glGenFramebuffers\0" "glGenFramebuffersEXT\0" "\0" - /* _mesa_function_pool[23614]: VertexAttribDivisor (will be remapped) */ + /* _mesa_function_pool[24079]: VertexAttribDivisor (will be remapped) */ "ii\0" "glVertexAttribDivisor\0" "\0" - /* _mesa_function_pool[23640]: GetProgramParameterdvNV (will be remapped) */ + /* _mesa_function_pool[24105]: GetProgramParameterdvNV (will be remapped) */ "iiip\0" "glGetProgramParameterdvNV\0" "\0" - /* _mesa_function_pool[23672]: Vertex2sv (offset 133) */ + /* _mesa_function_pool[24137]: Vertex2sv (offset 133) */ "p\0" "glVertex2sv\0" "\0" - /* _mesa_function_pool[23687]: GetIntegerv (offset 263) */ + /* _mesa_function_pool[24152]: GetIntegerv (offset 263) */ "ip\0" "glGetIntegerv\0" "\0" - /* _mesa_function_pool[23705]: IsVertexArrayAPPLE (will be remapped) */ + /* _mesa_function_pool[24170]: IsVertexArrayAPPLE (will be remapped) */ "i\0" "glIsVertexArray\0" "glIsVertexArrayAPPLE\0" "\0" - /* _mesa_function_pool[23745]: FragmentLightfvSGIX (dynamic) */ + /* _mesa_function_pool[24210]: FragmentLightfvSGIX (dynamic) */ "iip\0" "glFragmentLightfvSGIX\0" "\0" - /* _mesa_function_pool[23772]: VertexAttribDivisorARB (will be remapped) */ - "ii\0" - "glVertexAttribDivisorARB\0" + /* _mesa_function_pool[24237]: GetnMapdvARB (will be remapped) */ + "iiip\0" + "glGetnMapdvARB\0" "\0" - /* _mesa_function_pool[23801]: DetachShader (will be remapped) */ + /* _mesa_function_pool[24258]: DetachShader (will be remapped) */ "ii\0" "glDetachShader\0" "\0" - /* _mesa_function_pool[23820]: VertexAttrib4NubARB (will be remapped) */ + /* _mesa_function_pool[24277]: VertexAttrib4NubARB (will be remapped) */ "iiiii\0" "glVertexAttrib4Nub\0" "glVertexAttrib4NubARB\0" "\0" - /* _mesa_function_pool[23868]: GetProgramEnvParameterfvARB (will be remapped) */ + /* _mesa_function_pool[24325]: GetProgramEnvParameterfvARB (will be remapped) */ "iip\0" "glGetProgramEnvParameterfvARB\0" "\0" - /* _mesa_function_pool[23903]: GetTrackMatrixivNV (will be remapped) */ + /* _mesa_function_pool[24360]: GetTrackMatrixivNV (will be remapped) */ "iiip\0" "glGetTrackMatrixivNV\0" "\0" - /* _mesa_function_pool[23930]: VertexAttrib3svNV (will be remapped) */ + /* _mesa_function_pool[24387]: VertexAttrib3svNV (will be remapped) */ "ip\0" "glVertexAttrib3svNV\0" "\0" - /* _mesa_function_pool[23954]: Uniform4fvARB (will be remapped) */ + /* _mesa_function_pool[24411]: Uniform4fvARB (will be remapped) */ "iip\0" "glUniform4fv\0" "glUniform4fvARB\0" "\0" - /* _mesa_function_pool[23988]: MultTransposeMatrixfARB (will be remapped) */ + /* _mesa_function_pool[24445]: MultTransposeMatrixfARB (will be remapped) */ "p\0" "glMultTransposeMatrixf\0" "glMultTransposeMatrixfARB\0" "\0" - /* _mesa_function_pool[24040]: GetTexEnviv (offset 277) */ + /* _mesa_function_pool[24497]: GetTexEnviv (offset 277) */ "iip\0" "glGetTexEnviv\0" "\0" - /* _mesa_function_pool[24059]: ColorFragmentOp1ATI (will be remapped) */ + /* _mesa_function_pool[24516]: ColorFragmentOp1ATI (will be remapped) */ "iiiiiii\0" "glColorFragmentOp1ATI\0" "\0" - /* _mesa_function_pool[24090]: GetUniformfvARB (will be remapped) */ + /* _mesa_function_pool[24547]: GetUniformfvARB (will be remapped) */ "iip\0" "glGetUniformfv\0" "glGetUniformfvARB\0" "\0" - /* _mesa_function_pool[24128]: EGLImageTargetRenderbufferStorageOES (will be remapped) */ + /* _mesa_function_pool[24585]: EGLImageTargetRenderbufferStorageOES (will be remapped) */ "ip\0" "glEGLImageTargetRenderbufferStorageOES\0" "\0" - /* _mesa_function_pool[24171]: VertexAttribI2ivEXT (will be remapped) */ + /* _mesa_function_pool[24628]: VertexAttribI2ivEXT (will be remapped) */ "ip\0" "glVertexAttribI2ivEXT\0" "glVertexAttribI2iv\0" "\0" - /* _mesa_function_pool[24216]: PopClientAttrib (offset 334) */ + /* _mesa_function_pool[24673]: PopClientAttrib (offset 334) */ "\0" "glPopClientAttrib\0" "\0" - /* _mesa_function_pool[24236]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[24693]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */ "iffffffffffff\0" "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[24307]: DetachObjectARB (will be remapped) */ + /* _mesa_function_pool[24764]: DetachObjectARB (will be remapped) */ "ii\0" "glDetachObjectARB\0" "\0" - /* _mesa_function_pool[24329]: VertexBlendARB (dynamic) */ + /* _mesa_function_pool[24786]: VertexBlendARB (dynamic) */ "i\0" "glVertexBlendARB\0" "\0" - /* _mesa_function_pool[24349]: WindowPos3iMESA (will be remapped) */ + /* _mesa_function_pool[24806]: WindowPos3iMESA (will be remapped) */ "iii\0" "glWindowPos3i\0" "glWindowPos3iARB\0" "glWindowPos3iMESA\0" "\0" - /* _mesa_function_pool[24403]: SeparableFilter2D (offset 360) */ + /* _mesa_function_pool[24860]: SeparableFilter2D (offset 360) */ "iiiiiipp\0" "glSeparableFilter2D\0" "glSeparableFilter2DEXT\0" "\0" - /* _mesa_function_pool[24456]: ProgramParameteriARB (will be remapped) */ + /* _mesa_function_pool[24913]: ProgramParameteriARB (will be remapped) */ "iii\0" "glProgramParameteriARB\0" "\0" - /* _mesa_function_pool[24484]: Map1d (offset 220) */ + /* _mesa_function_pool[24941]: Map1d (offset 220) */ "iddiip\0" "glMap1d\0" "\0" - /* _mesa_function_pool[24500]: Map1f (offset 221) */ + /* _mesa_function_pool[24957]: Map1f (offset 221) */ "iffiip\0" "glMap1f\0" "\0" - /* _mesa_function_pool[24516]: CompressedTexImage2DARB (will be remapped) */ + /* _mesa_function_pool[24973]: CompressedTexImage2DARB (will be remapped) */ "iiiiiiip\0" "glCompressedTexImage2D\0" "glCompressedTexImage2DARB\0" "\0" - /* _mesa_function_pool[24575]: ArrayElement (offset 306) */ + /* _mesa_function_pool[25032]: ArrayElement (offset 306) */ "i\0" "glArrayElement\0" "glArrayElementEXT\0" "\0" - /* _mesa_function_pool[24611]: TexImage2D (offset 183) */ + /* _mesa_function_pool[25068]: TexImage2D (offset 183) */ "iiiiiiiip\0" "glTexImage2D\0" "\0" - /* _mesa_function_pool[24635]: DepthBoundsEXT (will be remapped) */ + /* _mesa_function_pool[25092]: DepthBoundsEXT (will be remapped) */ "dd\0" "glDepthBoundsEXT\0" "\0" - /* _mesa_function_pool[24656]: ProgramParameters4fvNV (will be remapped) */ + /* _mesa_function_pool[25113]: ProgramParameters4fvNV (will be remapped) */ "iiip\0" "glProgramParameters4fvNV\0" "\0" - /* _mesa_function_pool[24687]: DeformationMap3fSGIX (dynamic) */ + /* _mesa_function_pool[25144]: DeformationMap3fSGIX (dynamic) */ "iffiiffiiffiip\0" "glDeformationMap3fSGIX\0" "\0" - /* _mesa_function_pool[24726]: GetProgramivNV (will be remapped) */ + /* _mesa_function_pool[25183]: GetProgramivNV (will be remapped) */ "iip\0" "glGetProgramivNV\0" "\0" - /* _mesa_function_pool[24748]: GetFragDataLocationEXT (will be remapped) */ + /* _mesa_function_pool[25205]: GetFragDataLocationEXT (will be remapped) */ "ip\0" "glGetFragDataLocationEXT\0" "glGetFragDataLocation\0" "\0" - /* _mesa_function_pool[24799]: GetMinmaxParameteriv (offset 366) */ + /* _mesa_function_pool[25256]: GetMinmaxParameteriv (offset 366) */ "iip\0" "glGetMinmaxParameteriv\0" "glGetMinmaxParameterivEXT\0" "\0" - /* _mesa_function_pool[24853]: PixelTransferf (offset 247) */ + /* _mesa_function_pool[25310]: PixelTransferf (offset 247) */ "if\0" "glPixelTransferf\0" "\0" - /* _mesa_function_pool[24874]: CopyTexImage1D (offset 323) */ + /* _mesa_function_pool[25331]: CopyTexImage1D (offset 323) */ "iiiiiii\0" "glCopyTexImage1D\0" "glCopyTexImage1DEXT\0" "\0" - /* _mesa_function_pool[24920]: PushMatrix (offset 298) */ + /* _mesa_function_pool[25377]: PushMatrix (offset 298) */ "\0" "glPushMatrix\0" "\0" - /* _mesa_function_pool[24935]: Fogiv (offset 156) */ + /* _mesa_function_pool[25392]: Fogiv (offset 156) */ "ip\0" "glFogiv\0" "\0" - /* _mesa_function_pool[24947]: TexCoord1dv (offset 95) */ + /* _mesa_function_pool[25404]: TexCoord1dv (offset 95) */ "p\0" "glTexCoord1dv\0" "\0" - /* _mesa_function_pool[24964]: AlphaFragmentOp3ATI (will be remapped) */ + /* _mesa_function_pool[25421]: AlphaFragmentOp3ATI (will be remapped) */ "iiiiiiiiiiii\0" "glAlphaFragmentOp3ATI\0" "\0" - /* _mesa_function_pool[25000]: PixelTransferi (offset 248) */ + /* _mesa_function_pool[25457]: PixelTransferi (offset 248) */ "ii\0" "glPixelTransferi\0" "\0" - /* _mesa_function_pool[25021]: GetVertexAttribdvNV (will be remapped) */ - "iip\0" - "glGetVertexAttribdvNV\0" + /* _mesa_function_pool[25478]: GetnColorTableARB (will be remapped) */ + "iiiip\0" + "glGetnColorTableARB\0" "\0" - /* _mesa_function_pool[25048]: VertexAttrib3fvNV (will be remapped) */ + /* _mesa_function_pool[25505]: VertexAttrib3fvNV (will be remapped) */ "ip\0" "glVertexAttrib3fvNV\0" "\0" - /* _mesa_function_pool[25072]: Rotatef (offset 300) */ + /* _mesa_function_pool[25529]: Rotatef (offset 300) */ "ffff\0" "glRotatef\0" "\0" - /* _mesa_function_pool[25088]: GetFinalCombinerInputParameterivNV (will be remapped) */ + /* _mesa_function_pool[25545]: GetFinalCombinerInputParameterivNV (will be remapped) */ "iip\0" "glGetFinalCombinerInputParameterivNV\0" "\0" - /* _mesa_function_pool[25130]: Vertex3i (offset 138) */ + /* _mesa_function_pool[25587]: Vertex3i (offset 138) */ "iii\0" "glVertex3i\0" "\0" - /* _mesa_function_pool[25146]: Vertex3f (offset 136) */ + /* _mesa_function_pool[25603]: Vertex3f (offset 136) */ "fff\0" "glVertex3f\0" "\0" - /* _mesa_function_pool[25162]: Clear (offset 203) */ + /* _mesa_function_pool[25619]: Clear (offset 203) */ "i\0" "glClear\0" "\0" - /* _mesa_function_pool[25173]: Vertex3d (offset 134) */ + /* _mesa_function_pool[25630]: Vertex3d (offset 134) */ "ddd\0" "glVertex3d\0" "\0" - /* _mesa_function_pool[25189]: GetMapParameterivNV (dynamic) */ + /* _mesa_function_pool[25646]: GetMapParameterivNV (dynamic) */ "iip\0" "glGetMapParameterivNV\0" "\0" - /* _mesa_function_pool[25216]: Uniform4iARB (will be remapped) */ + /* _mesa_function_pool[25673]: Uniform4iARB (will be remapped) */ "iiiii\0" "glUniform4i\0" "glUniform4iARB\0" "\0" - /* _mesa_function_pool[25250]: ReadBuffer (offset 254) */ + /* _mesa_function_pool[25707]: ReadBuffer (offset 254) */ "i\0" "glReadBuffer\0" "\0" - /* _mesa_function_pool[25266]: ConvolutionParameteri (offset 352) */ + /* _mesa_function_pool[25723]: ConvolutionParameteri (offset 352) */ "iii\0" "glConvolutionParameteri\0" "glConvolutionParameteriEXT\0" "\0" - /* _mesa_function_pool[25322]: Ortho (offset 296) */ + /* _mesa_function_pool[25779]: Ortho (offset 296) */ "dddddd\0" "glOrtho\0" "\0" - /* _mesa_function_pool[25338]: Binormal3sEXT (dynamic) */ + /* _mesa_function_pool[25795]: Binormal3sEXT (dynamic) */ "iii\0" "glBinormal3sEXT\0" "\0" - /* _mesa_function_pool[25359]: ListBase (offset 6) */ + /* _mesa_function_pool[25816]: ListBase (offset 6) */ "i\0" "glListBase\0" "\0" - /* _mesa_function_pool[25373]: VertexAttribI3ivEXT (will be remapped) */ + /* _mesa_function_pool[25830]: VertexAttribI3ivEXT (will be remapped) */ "ip\0" "glVertexAttribI3ivEXT\0" "glVertexAttribI3iv\0" "\0" - /* _mesa_function_pool[25418]: Vertex3s (offset 140) */ + /* _mesa_function_pool[25875]: Vertex3s (offset 140) */ "iii\0" "glVertex3s\0" "\0" - /* _mesa_function_pool[25434]: ConvolutionParameterf (offset 350) */ + /* _mesa_function_pool[25891]: ConvolutionParameterf (offset 350) */ "iif\0" "glConvolutionParameterf\0" "glConvolutionParameterfEXT\0" "\0" - /* _mesa_function_pool[25490]: GetColorTableParameteriv (offset 345) */ + /* _mesa_function_pool[25947]: GetColorTableParameteriv (offset 345) */ "iip\0" "glGetColorTableParameteriv\0" "glGetColorTableParameterivSGI\0" "glGetColorTableParameterivEXT\0" "\0" - /* _mesa_function_pool[25582]: ProgramEnvParameter4dvARB (will be remapped) */ + /* _mesa_function_pool[26039]: ProgramEnvParameter4dvARB (will be remapped) */ "iip\0" "glProgramEnvParameter4dvARB\0" "glProgramParameter4dvNV\0" "\0" - /* _mesa_function_pool[25639]: ShadeModel (offset 177) */ + /* _mesa_function_pool[26096]: ShadeModel (offset 177) */ "i\0" "glShadeModel\0" "\0" - /* _mesa_function_pool[25655]: VertexAttribs2fvNV (will be remapped) */ + /* _mesa_function_pool[26112]: VertexAttribs2fvNV (will be remapped) */ "iip\0" "glVertexAttribs2fvNV\0" "\0" - /* _mesa_function_pool[25681]: Rectiv (offset 91) */ + /* _mesa_function_pool[26138]: Rectiv (offset 91) */ "pp\0" "glRectiv\0" "\0" - /* _mesa_function_pool[25694]: UseProgramObjectARB (will be remapped) */ + /* _mesa_function_pool[26151]: UseProgramObjectARB (will be remapped) */ "i\0" "glUseProgram\0" "glUseProgramObjectARB\0" "\0" - /* _mesa_function_pool[25732]: GetMapParameterfvNV (dynamic) */ + /* _mesa_function_pool[26189]: GetMapParameterfvNV (dynamic) */ "iip\0" "glGetMapParameterfvNV\0" "\0" - /* _mesa_function_pool[25759]: EndConditionalRenderNV (will be remapped) */ + /* _mesa_function_pool[26216]: EndConditionalRenderNV (will be remapped) */ "\0" "glEndConditionalRenderNV\0" "glEndConditionalRender\0" "\0" - /* _mesa_function_pool[25809]: PassTexCoordATI (will be remapped) */ + /* _mesa_function_pool[26266]: PassTexCoordATI (will be remapped) */ "iii\0" "glPassTexCoordATI\0" "\0" - /* _mesa_function_pool[25832]: DeleteProgram (will be remapped) */ + /* _mesa_function_pool[26289]: DeleteProgram (will be remapped) */ "i\0" "glDeleteProgram\0" "\0" - /* _mesa_function_pool[25851]: GetSamplerParameteriv (will be remapped) */ + /* _mesa_function_pool[26308]: GetSamplerParameteriv (will be remapped) */ "iip\0" "glGetSamplerParameteriv\0" "\0" - /* _mesa_function_pool[25880]: Tangent3dEXT (dynamic) */ + /* _mesa_function_pool[26337]: Tangent3dEXT (dynamic) */ "ddd\0" "glTangent3dEXT\0" "\0" - /* _mesa_function_pool[25900]: SecondaryColor3dvEXT (will be remapped) */ + /* _mesa_function_pool[26357]: SecondaryColor3dvEXT (will be remapped) */ "p\0" "glSecondaryColor3dv\0" "glSecondaryColor3dvEXT\0" "\0" - /* _mesa_function_pool[25946]: AlphaFragmentOp2ATI (will be remapped) */ + /* _mesa_function_pool[26403]: AlphaFragmentOp2ATI (will be remapped) */ "iiiiiiiii\0" "glAlphaFragmentOp2ATI\0" "\0" - /* _mesa_function_pool[25979]: Vertex2fv (offset 129) */ + /* _mesa_function_pool[26436]: Vertex2fv (offset 129) */ "p\0" "glVertex2fv\0" "\0" - /* _mesa_function_pool[25994]: MultiDrawArraysEXT (will be remapped) */ + /* _mesa_function_pool[26451]: MultiDrawArraysEXT (will be remapped) */ "ippi\0" "glMultiDrawArrays\0" "glMultiDrawArraysEXT\0" "\0" - /* _mesa_function_pool[26039]: BindRenderbufferEXT (will be remapped) */ + /* _mesa_function_pool[26496]: BindRenderbufferEXT (will be remapped) */ "ii\0" "glBindRenderbuffer\0" "glBindRenderbufferEXT\0" "\0" - /* _mesa_function_pool[26084]: MultiTexCoord4dARB (offset 400) */ + /* _mesa_function_pool[26541]: MultiTexCoord4dARB (offset 400) */ "idddd\0" "glMultiTexCoord4d\0" "glMultiTexCoord4dARB\0" "\0" - /* _mesa_function_pool[26130]: FramebufferTextureFaceARB (will be remapped) */ + /* _mesa_function_pool[26587]: FramebufferTextureFaceARB (will be remapped) */ "iiiii\0" "glFramebufferTextureFaceARB\0" "\0" - /* _mesa_function_pool[26165]: Vertex3sv (offset 141) */ + /* _mesa_function_pool[26622]: Vertex3sv (offset 141) */ "p\0" "glVertex3sv\0" "\0" - /* _mesa_function_pool[26180]: SecondaryColor3usEXT (will be remapped) */ + /* _mesa_function_pool[26637]: SecondaryColor3usEXT (will be remapped) */ "iii\0" "glSecondaryColor3us\0" "glSecondaryColor3usEXT\0" "\0" - /* _mesa_function_pool[26228]: ProgramLocalParameter4fvARB (will be remapped) */ + /* _mesa_function_pool[26685]: ProgramLocalParameter4fvARB (will be remapped) */ "iip\0" "glProgramLocalParameter4fvARB\0" "\0" - /* _mesa_function_pool[26263]: DeleteProgramsNV (will be remapped) */ + /* _mesa_function_pool[26720]: DeleteProgramsNV (will be remapped) */ "ip\0" "glDeleteProgramsARB\0" "glDeleteProgramsNV\0" "\0" - /* _mesa_function_pool[26306]: EvalMesh1 (offset 236) */ + /* _mesa_function_pool[26763]: EvalMesh1 (offset 236) */ "iii\0" "glEvalMesh1\0" "\0" - /* _mesa_function_pool[26323]: PauseTransformFeedback (will be remapped) */ + /* _mesa_function_pool[26780]: PauseTransformFeedback (will be remapped) */ "\0" "glPauseTransformFeedback\0" "\0" - /* _mesa_function_pool[26350]: MultiTexCoord1sARB (offset 382) */ + /* _mesa_function_pool[26807]: MultiTexCoord1sARB (offset 382) */ "ii\0" "glMultiTexCoord1s\0" "glMultiTexCoord1sARB\0" "\0" - /* _mesa_function_pool[26393]: ReplacementCodeuiColor3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[26850]: ReplacementCodeuiColor3fVertex3fSUN (dynamic) */ "iffffff\0" "glReplacementCodeuiColor3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[26440]: GetVertexAttribPointervNV (will be remapped) */ + /* _mesa_function_pool[26897]: GetVertexAttribPointervNV (will be remapped) */ "iip\0" "glGetVertexAttribPointerv\0" "glGetVertexAttribPointervARB\0" "glGetVertexAttribPointervNV\0" "\0" - /* _mesa_function_pool[26528]: VertexAttribs1fvNV (will be remapped) */ + /* _mesa_function_pool[26985]: VertexAttribs1fvNV (will be remapped) */ "iip\0" "glVertexAttribs1fvNV\0" "\0" - /* _mesa_function_pool[26554]: MultiTexCoord1dvARB (offset 377) */ + /* _mesa_function_pool[27011]: MultiTexCoord1dvARB (offset 377) */ "ip\0" "glMultiTexCoord1dv\0" "glMultiTexCoord1dvARB\0" "\0" - /* _mesa_function_pool[26599]: Uniform2iARB (will be remapped) */ + /* _mesa_function_pool[27056]: Uniform2iARB (will be remapped) */ "iii\0" "glUniform2i\0" "glUniform2iARB\0" "\0" - /* _mesa_function_pool[26631]: Vertex2iv (offset 131) */ + /* _mesa_function_pool[27088]: Vertex2iv (offset 131) */ "p\0" "glVertex2iv\0" "\0" - /* _mesa_function_pool[26646]: GetProgramStringNV (will be remapped) */ + /* _mesa_function_pool[27103]: GetProgramStringNV (will be remapped) */ "iip\0" "glGetProgramStringNV\0" "\0" - /* _mesa_function_pool[26672]: ColorPointerEXT (will be remapped) */ + /* _mesa_function_pool[27129]: ColorPointerEXT (will be remapped) */ "iiiip\0" "glColorPointerEXT\0" "\0" - /* _mesa_function_pool[26697]: LineWidth (offset 168) */ + /* _mesa_function_pool[27154]: LineWidth (offset 168) */ "f\0" "glLineWidth\0" "\0" - /* _mesa_function_pool[26712]: MapBufferARB (will be remapped) */ + /* _mesa_function_pool[27169]: MapBufferARB (will be remapped) */ "ii\0" "glMapBuffer\0" "glMapBufferARB\0" "\0" - /* _mesa_function_pool[26743]: MultiDrawElementsBaseVertex (will be remapped) */ + /* _mesa_function_pool[27200]: MultiDrawElementsBaseVertex (will be remapped) */ "ipipip\0" "glMultiDrawElementsBaseVertex\0" "\0" - /* _mesa_function_pool[26781]: TexParameterIuivEXT (will be remapped) */ + /* _mesa_function_pool[27238]: TexParameterIuivEXT (will be remapped) */ "iip\0" "glTexParameterIuivEXT\0" "glTexParameterIuiv\0" "\0" - /* _mesa_function_pool[26827]: Binormal3svEXT (dynamic) */ + /* _mesa_function_pool[27284]: Binormal3svEXT (dynamic) */ "p\0" "glBinormal3svEXT\0" "\0" - /* _mesa_function_pool[26847]: ApplyTextureEXT (dynamic) */ + /* _mesa_function_pool[27304]: ApplyTextureEXT (dynamic) */ "i\0" "glApplyTextureEXT\0" "\0" - /* _mesa_function_pool[26868]: GetBufferParameteri64v (will be remapped) */ + /* _mesa_function_pool[27325]: GetBufferParameteri64v (will be remapped) */ "iip\0" "glGetBufferParameteri64v\0" "\0" - /* _mesa_function_pool[26898]: TexGendv (offset 189) */ + /* _mesa_function_pool[27355]: TexGendv (offset 189) */ "iip\0" "glTexGendv\0" "\0" - /* _mesa_function_pool[26914]: VertexAttribI3iEXT (will be remapped) */ + /* _mesa_function_pool[27371]: VertexAttribI3iEXT (will be remapped) */ "iiii\0" "glVertexAttribI3iEXT\0" "glVertexAttribI3i\0" "\0" - /* _mesa_function_pool[26959]: EnableIndexedEXT (will be remapped) */ + /* _mesa_function_pool[27416]: EnableIndexedEXT (will be remapped) */ "ii\0" "glEnableIndexedEXT\0" "glEnablei\0" "\0" - /* _mesa_function_pool[26992]: TextureMaterialEXT (dynamic) */ + /* _mesa_function_pool[27449]: TextureMaterialEXT (dynamic) */ "ii\0" "glTextureMaterialEXT\0" "\0" - /* _mesa_function_pool[27017]: TextureLightEXT (dynamic) */ + /* _mesa_function_pool[27474]: TextureLightEXT (dynamic) */ "i\0" "glTextureLightEXT\0" "\0" - /* _mesa_function_pool[27038]: ResetMinmax (offset 370) */ + /* _mesa_function_pool[27495]: ResetMinmax (offset 370) */ "i\0" "glResetMinmax\0" "glResetMinmaxEXT\0" "\0" - /* _mesa_function_pool[27072]: SpriteParameterfSGIX (dynamic) */ + /* _mesa_function_pool[27529]: SpriteParameterfSGIX (dynamic) */ "if\0" "glSpriteParameterfSGIX\0" "\0" - /* _mesa_function_pool[27099]: EnableClientState (offset 313) */ + /* _mesa_function_pool[27556]: EnableClientState (offset 313) */ "i\0" "glEnableClientState\0" "\0" - /* _mesa_function_pool[27122]: VertexAttrib4sNV (will be remapped) */ + /* _mesa_function_pool[27579]: VertexAttrib4sNV (will be remapped) */ "iiiii\0" "glVertexAttrib4sNV\0" "\0" - /* _mesa_function_pool[27148]: GetConvolutionParameterfv (offset 357) */ + /* _mesa_function_pool[27605]: GetConvolutionParameterfv (offset 357) */ "iip\0" "glGetConvolutionParameterfv\0" "glGetConvolutionParameterfvEXT\0" "\0" - /* _mesa_function_pool[27212]: VertexAttribs4dvNV (will be remapped) */ + /* _mesa_function_pool[27669]: VertexAttribs4dvNV (will be remapped) */ "iip\0" "glVertexAttribs4dvNV\0" "\0" - /* _mesa_function_pool[27238]: VertexAttrib4dARB (will be remapped) */ + /* _mesa_function_pool[27695]: MultiModeDrawArraysIBM (will be remapped) */ + "pppii\0" + "glMultiModeDrawArraysIBM\0" + "\0" + /* _mesa_function_pool[27727]: VertexAttrib4dARB (will be remapped) */ "idddd\0" "glVertexAttrib4d\0" "glVertexAttrib4dARB\0" "\0" - /* _mesa_function_pool[27282]: GetTexBumpParameterfvATI (will be remapped) */ + /* _mesa_function_pool[27771]: GetTexBumpParameterfvATI (will be remapped) */ "ip\0" "glGetTexBumpParameterfvATI\0" "\0" - /* _mesa_function_pool[27313]: ProgramNamedParameter4dNV (will be remapped) */ + /* _mesa_function_pool[27802]: ProgramNamedParameter4dNV (will be remapped) */ "iipdddd\0" "glProgramNamedParameter4dNV\0" "\0" - /* _mesa_function_pool[27350]: GetMaterialfv (offset 269) */ + /* _mesa_function_pool[27839]: GetMaterialfv (offset 269) */ "iip\0" "glGetMaterialfv\0" "\0" - /* _mesa_function_pool[27371]: VertexWeightfEXT (dynamic) */ + /* _mesa_function_pool[27860]: VertexWeightfEXT (dynamic) */ "f\0" "glVertexWeightfEXT\0" "\0" - /* _mesa_function_pool[27393]: SetFragmentShaderConstantATI (will be remapped) */ + /* _mesa_function_pool[27882]: SetFragmentShaderConstantATI (will be remapped) */ "ip\0" "glSetFragmentShaderConstantATI\0" "\0" - /* _mesa_function_pool[27428]: Binormal3fEXT (dynamic) */ + /* _mesa_function_pool[27917]: Binormal3fEXT (dynamic) */ "fff\0" "glBinormal3fEXT\0" "\0" - /* _mesa_function_pool[27449]: CallList (offset 2) */ + /* _mesa_function_pool[27938]: CallList (offset 2) */ "i\0" "glCallList\0" "\0" - /* _mesa_function_pool[27463]: Materialfv (offset 170) */ + /* _mesa_function_pool[27952]: Materialfv (offset 170) */ "iip\0" "glMaterialfv\0" "\0" - /* _mesa_function_pool[27481]: TexCoord3fv (offset 113) */ + /* _mesa_function_pool[27970]: TexCoord3fv (offset 113) */ "p\0" "glTexCoord3fv\0" "\0" - /* _mesa_function_pool[27498]: FogCoordfvEXT (will be remapped) */ + /* _mesa_function_pool[27987]: FogCoordfvEXT (will be remapped) */ "p\0" "glFogCoordfv\0" "glFogCoordfvEXT\0" "\0" - /* _mesa_function_pool[27530]: MultiTexCoord1ivARB (offset 381) */ + /* _mesa_function_pool[28019]: MultiTexCoord1ivARB (offset 381) */ "ip\0" "glMultiTexCoord1iv\0" "glMultiTexCoord1ivARB\0" "\0" - /* _mesa_function_pool[27575]: SecondaryColor3ubEXT (will be remapped) */ + /* _mesa_function_pool[28064]: SecondaryColor3ubEXT (will be remapped) */ "iii\0" "glSecondaryColor3ub\0" "glSecondaryColor3ubEXT\0" "\0" - /* _mesa_function_pool[27623]: MultiTexCoord2ivARB (offset 389) */ + /* _mesa_function_pool[28112]: MultiTexCoord2ivARB (offset 389) */ "ip\0" "glMultiTexCoord2iv\0" "glMultiTexCoord2ivARB\0" "\0" - /* _mesa_function_pool[27668]: FogFuncSGIS (dynamic) */ + /* _mesa_function_pool[28157]: FogFuncSGIS (dynamic) */ "ip\0" "glFogFuncSGIS\0" "\0" - /* _mesa_function_pool[27686]: CopyTexSubImage2D (offset 326) */ + /* _mesa_function_pool[28175]: CopyTexSubImage2D (offset 326) */ "iiiiiiii\0" "glCopyTexSubImage2D\0" "glCopyTexSubImage2DEXT\0" "\0" - /* _mesa_function_pool[27739]: GetObjectParameterivARB (will be remapped) */ + /* _mesa_function_pool[28228]: GetObjectParameterivARB (will be remapped) */ "iip\0" "glGetObjectParameterivARB\0" "\0" - /* _mesa_function_pool[27770]: Color3iv (offset 16) */ + /* _mesa_function_pool[28259]: Color3iv (offset 16) */ "p\0" "glColor3iv\0" "\0" - /* _mesa_function_pool[27784]: TexCoord4fVertex4fSUN (dynamic) */ + /* _mesa_function_pool[28273]: TexCoord4fVertex4fSUN (dynamic) */ "ffffffff\0" "glTexCoord4fVertex4fSUN\0" "\0" - /* _mesa_function_pool[27818]: DrawElements (offset 311) */ + /* _mesa_function_pool[28307]: DrawElements (offset 311) */ "iiip\0" "glDrawElements\0" "\0" - /* _mesa_function_pool[27839]: BindVertexArrayAPPLE (will be remapped) */ + /* _mesa_function_pool[28328]: BindVertexArrayAPPLE (will be remapped) */ "i\0" "glBindVertexArrayAPPLE\0" "\0" - /* _mesa_function_pool[27865]: GetProgramLocalParameterdvARB (will be remapped) */ + /* _mesa_function_pool[28354]: GetProgramLocalParameterdvARB (will be remapped) */ "iip\0" "glGetProgramLocalParameterdvARB\0" "\0" - /* _mesa_function_pool[27902]: GetHistogramParameteriv (offset 363) */ + /* _mesa_function_pool[28391]: GetHistogramParameteriv (offset 363) */ "iip\0" "glGetHistogramParameteriv\0" "glGetHistogramParameterivEXT\0" "\0" - /* _mesa_function_pool[27962]: MultiTexCoord1iARB (offset 380) */ + /* _mesa_function_pool[28451]: MultiTexCoord1iARB (offset 380) */ "ii\0" "glMultiTexCoord1i\0" "glMultiTexCoord1iARB\0" "\0" - /* _mesa_function_pool[28005]: GetConvolutionFilter (offset 356) */ + /* _mesa_function_pool[28494]: GetConvolutionFilter (offset 356) */ "iiip\0" "glGetConvolutionFilter\0" "glGetConvolutionFilterEXT\0" "\0" - /* _mesa_function_pool[28060]: GetProgramivARB (will be remapped) */ + /* _mesa_function_pool[28549]: GetProgramivARB (will be remapped) */ "iip\0" "glGetProgramivARB\0" "\0" - /* _mesa_function_pool[28083]: TexBufferARB (will be remapped) */ + /* _mesa_function_pool[28572]: TexBufferARB (will be remapped) */ "iii\0" "glTexBufferARB\0" "\0" - /* _mesa_function_pool[28103]: BlendFuncSeparateEXT (will be remapped) */ + /* _mesa_function_pool[28592]: BlendFuncSeparateEXT (will be remapped) */ "iiii\0" "glBlendFuncSeparate\0" "glBlendFuncSeparateEXT\0" "glBlendFuncSeparateINGR\0" "\0" - /* _mesa_function_pool[28176]: MapBufferRange (will be remapped) */ + /* _mesa_function_pool[28665]: MapBufferRange (will be remapped) */ "iiii\0" "glMapBufferRange\0" "\0" - /* _mesa_function_pool[28199]: ProgramParameters4dvNV (will be remapped) */ + /* _mesa_function_pool[28688]: ProgramParameters4dvNV (will be remapped) */ "iiip\0" "glProgramParameters4dvNV\0" "\0" - /* _mesa_function_pool[28230]: TexCoord2fColor3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[28719]: TexCoord2fColor3fVertex3fvSUN (dynamic) */ "ppp\0" "glTexCoord2fColor3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[28267]: EvalPoint2 (offset 239) */ + /* _mesa_function_pool[28756]: EvalPoint2 (offset 239) */ "ii\0" "glEvalPoint2\0" "\0" - /* _mesa_function_pool[28284]: Uniform1uivEXT (will be remapped) */ + /* _mesa_function_pool[28773]: Uniform1uivEXT (will be remapped) */ "iip\0" "glUniform1uivEXT\0" "glUniform1uiv\0" "\0" - /* _mesa_function_pool[28320]: EvalPoint1 (offset 237) */ + /* _mesa_function_pool[28809]: EvalPoint1 (offset 237) */ "i\0" "glEvalPoint1\0" "\0" - /* _mesa_function_pool[28336]: Binormal3dvEXT (dynamic) */ + /* _mesa_function_pool[28825]: Binormal3dvEXT (dynamic) */ "p\0" "glBinormal3dvEXT\0" "\0" - /* _mesa_function_pool[28356]: PopMatrix (offset 297) */ + /* _mesa_function_pool[28845]: PopMatrix (offset 297) */ "\0" "glPopMatrix\0" "\0" - /* _mesa_function_pool[28370]: FinishFenceNV (will be remapped) */ + /* _mesa_function_pool[28859]: GetVertexAttribIuivEXT (will be remapped) */ + "iip\0" + "glGetVertexAttribIuivEXT\0" + "glGetVertexAttribIuiv\0" + "\0" + /* _mesa_function_pool[28911]: FinishFenceNV (will be remapped) */ "i\0" "glFinishFenceNV\0" "\0" - /* _mesa_function_pool[28389]: GetFogFuncSGIS (dynamic) */ + /* _mesa_function_pool[28930]: GetFogFuncSGIS (dynamic) */ "p\0" "glGetFogFuncSGIS\0" "\0" - /* _mesa_function_pool[28409]: GetUniformLocationARB (will be remapped) */ + /* _mesa_function_pool[28950]: GetUniformLocationARB (will be remapped) */ "ip\0" "glGetUniformLocation\0" "glGetUniformLocationARB\0" "\0" - /* _mesa_function_pool[28458]: SecondaryColor3fEXT (will be remapped) */ + /* _mesa_function_pool[28999]: SecondaryColor3fEXT (will be remapped) */ "fff\0" "glSecondaryColor3f\0" "glSecondaryColor3fEXT\0" "\0" - /* _mesa_function_pool[28504]: GetTexGeniv (offset 280) */ + /* _mesa_function_pool[29045]: GetTexGeniv (offset 280) */ "iip\0" "glGetTexGeniv\0" "\0" - /* _mesa_function_pool[28523]: CombinerInputNV (will be remapped) */ + /* _mesa_function_pool[29064]: CombinerInputNV (will be remapped) */ "iiiiii\0" "glCombinerInputNV\0" "\0" - /* _mesa_function_pool[28549]: VertexAttrib3sARB (will be remapped) */ + /* _mesa_function_pool[29090]: VertexAttrib3sARB (will be remapped) */ "iiii\0" "glVertexAttrib3s\0" "glVertexAttrib3sARB\0" "\0" - /* _mesa_function_pool[28592]: IsTransformFeedback (will be remapped) */ + /* _mesa_function_pool[29133]: IsTransformFeedback (will be remapped) */ "i\0" "glIsTransformFeedback\0" "\0" - /* _mesa_function_pool[28617]: ReplacementCodeuiNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[29158]: ReplacementCodeuiNormal3fVertex3fvSUN (dynamic) */ "ppp\0" "glReplacementCodeuiNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[28662]: Map2d (offset 222) */ + /* _mesa_function_pool[29203]: Map2d (offset 222) */ "iddiiddiip\0" "glMap2d\0" "\0" - /* _mesa_function_pool[28682]: Map2f (offset 223) */ + /* _mesa_function_pool[29223]: Map2f (offset 223) */ "iffiiffiip\0" "glMap2f\0" "\0" - /* _mesa_function_pool[28702]: ProgramStringARB (will be remapped) */ + /* _mesa_function_pool[29243]: ProgramStringARB (will be remapped) */ "iiip\0" "glProgramStringARB\0" "\0" - /* _mesa_function_pool[28727]: Vertex4s (offset 148) */ + /* _mesa_function_pool[29268]: Vertex4s (offset 148) */ "iiii\0" "glVertex4s\0" "\0" - /* _mesa_function_pool[28744]: TexCoord4fVertex4fvSUN (dynamic) */ + /* _mesa_function_pool[29285]: TexCoord4fVertex4fvSUN (dynamic) */ "pp\0" "glTexCoord4fVertex4fvSUN\0" "\0" - /* _mesa_function_pool[28773]: FragmentLightModelivSGIX (dynamic) */ + /* _mesa_function_pool[29314]: FragmentLightModelivSGIX (dynamic) */ "ip\0" "glFragmentLightModelivSGIX\0" "\0" - /* _mesa_function_pool[28804]: VertexAttrib1fNV (will be remapped) */ + /* _mesa_function_pool[29345]: VertexAttrib1fNV (will be remapped) */ "if\0" "glVertexAttrib1fNV\0" "\0" - /* _mesa_function_pool[28827]: Vertex4f (offset 144) */ + /* _mesa_function_pool[29368]: Vertex4f (offset 144) */ "ffff\0" "glVertex4f\0" "\0" - /* _mesa_function_pool[28844]: EvalCoord1d (offset 228) */ + /* _mesa_function_pool[29385]: EvalCoord1d (offset 228) */ "d\0" "glEvalCoord1d\0" "\0" - /* _mesa_function_pool[28861]: Vertex4d (offset 142) */ + /* _mesa_function_pool[29402]: Vertex4d (offset 142) */ "dddd\0" "glVertex4d\0" "\0" - /* _mesa_function_pool[28878]: RasterPos4dv (offset 79) */ + /* _mesa_function_pool[29419]: RasterPos4dv (offset 79) */ "p\0" "glRasterPos4dv\0" "\0" - /* _mesa_function_pool[28896]: UseShaderProgramEXT (will be remapped) */ + /* _mesa_function_pool[29437]: UseShaderProgramEXT (will be remapped) */ "ii\0" "glUseShaderProgramEXT\0" "\0" - /* _mesa_function_pool[28922]: FragmentLightfSGIX (dynamic) */ + /* _mesa_function_pool[29463]: FragmentLightfSGIX (dynamic) */ "iif\0" "glFragmentLightfSGIX\0" "\0" - /* _mesa_function_pool[28948]: GetCompressedTexImageARB (will be remapped) */ + /* _mesa_function_pool[29489]: GetCompressedTexImageARB (will be remapped) */ "iip\0" "glGetCompressedTexImage\0" "glGetCompressedTexImageARB\0" "\0" - /* _mesa_function_pool[29004]: GetTexGenfv (offset 279) */ + /* _mesa_function_pool[29545]: GetTexGenfv (offset 279) */ "iip\0" "glGetTexGenfv\0" "\0" - /* _mesa_function_pool[29023]: Vertex4i (offset 146) */ + /* _mesa_function_pool[29564]: Vertex4i (offset 146) */ "iiii\0" "glVertex4i\0" "\0" - /* _mesa_function_pool[29040]: VertexWeightPointerEXT (dynamic) */ + /* _mesa_function_pool[29581]: VertexWeightPointerEXT (dynamic) */ "iiip\0" "glVertexWeightPointerEXT\0" "\0" - /* _mesa_function_pool[29071]: GetHistogram (offset 361) */ + /* _mesa_function_pool[29612]: GetHistogram (offset 361) */ "iiiip\0" "glGetHistogram\0" "glGetHistogramEXT\0" "\0" - /* _mesa_function_pool[29111]: ActiveStencilFaceEXT (will be remapped) */ + /* _mesa_function_pool[29652]: ActiveStencilFaceEXT (will be remapped) */ "i\0" "glActiveStencilFaceEXT\0" "\0" - /* _mesa_function_pool[29137]: StencilFuncSeparateATI (will be remapped) */ + /* _mesa_function_pool[29678]: StencilFuncSeparateATI (will be remapped) */ "iiii\0" "glStencilFuncSeparateATI\0" "\0" - /* _mesa_function_pool[29168]: Materialf (offset 169) */ + /* _mesa_function_pool[29709]: Materialf (offset 169) */ "iif\0" "glMaterialf\0" "\0" - /* _mesa_function_pool[29185]: GetShaderSourceARB (will be remapped) */ + /* _mesa_function_pool[29726]: GetShaderSourceARB (will be remapped) */ "iipp\0" "glGetShaderSource\0" "glGetShaderSourceARB\0" "\0" - /* _mesa_function_pool[29230]: IglooInterfaceSGIX (dynamic) */ + /* _mesa_function_pool[29771]: IglooInterfaceSGIX (dynamic) */ "ip\0" "glIglooInterfaceSGIX\0" "\0" - /* _mesa_function_pool[29255]: Materiali (offset 171) */ + /* _mesa_function_pool[29796]: Materiali (offset 171) */ "iii\0" "glMateriali\0" "\0" - /* _mesa_function_pool[29272]: VertexAttrib4dNV (will be remapped) */ + /* _mesa_function_pool[29813]: VertexAttrib4dNV (will be remapped) */ "idddd\0" "glVertexAttrib4dNV\0" "\0" - /* _mesa_function_pool[29298]: MultiModeDrawElementsIBM (will be remapped) */ + /* _mesa_function_pool[29839]: MultiModeDrawElementsIBM (will be remapped) */ "ppipii\0" "glMultiModeDrawElementsIBM\0" "\0" - /* _mesa_function_pool[29333]: Indexsv (offset 51) */ + /* _mesa_function_pool[29874]: Indexsv (offset 51) */ "p\0" "glIndexsv\0" "\0" - /* _mesa_function_pool[29346]: MultiTexCoord4svARB (offset 407) */ + /* _mesa_function_pool[29887]: MultiTexCoord4svARB (offset 407) */ "ip\0" "glMultiTexCoord4sv\0" "glMultiTexCoord4svARB\0" "\0" - /* _mesa_function_pool[29391]: LightModelfv (offset 164) */ + /* _mesa_function_pool[29932]: LightModelfv (offset 164) */ "ip\0" "glLightModelfv\0" "\0" - /* _mesa_function_pool[29410]: TexCoord2dv (offset 103) */ + /* _mesa_function_pool[29951]: TexCoord2dv (offset 103) */ "p\0" "glTexCoord2dv\0" "\0" - /* _mesa_function_pool[29427]: GenQueriesARB (will be remapped) */ + /* _mesa_function_pool[29968]: GenQueriesARB (will be remapped) */ "ip\0" "glGenQueries\0" "glGenQueriesARB\0" "\0" - /* _mesa_function_pool[29460]: EvalCoord1dv (offset 229) */ + /* _mesa_function_pool[30001]: EvalCoord1dv (offset 229) */ "p\0" "glEvalCoord1dv\0" "\0" - /* _mesa_function_pool[29478]: ReplacementCodeuiVertex3fSUN (dynamic) */ + /* _mesa_function_pool[30019]: ReplacementCodeuiVertex3fSUN (dynamic) */ "ifff\0" "glReplacementCodeuiVertex3fSUN\0" "\0" - /* _mesa_function_pool[29515]: Translated (offset 303) */ + /* _mesa_function_pool[30056]: Translated (offset 303) */ "ddd\0" "glTranslated\0" "\0" - /* _mesa_function_pool[29533]: Translatef (offset 304) */ + /* _mesa_function_pool[30074]: Translatef (offset 304) */ "fff\0" "glTranslatef\0" "\0" - /* _mesa_function_pool[29551]: Uniform3uiEXT (will be remapped) */ + /* _mesa_function_pool[30092]: Uniform3uiEXT (will be remapped) */ "iiii\0" "glUniform3uiEXT\0" "glUniform3ui\0" "\0" - /* _mesa_function_pool[29586]: StencilMask (offset 209) */ + /* _mesa_function_pool[30127]: StencilMask (offset 209) */ "i\0" "glStencilMask\0" "\0" - /* _mesa_function_pool[29603]: Tangent3iEXT (dynamic) */ + /* _mesa_function_pool[30144]: Tangent3iEXT (dynamic) */ "iii\0" "glTangent3iEXT\0" "\0" - /* _mesa_function_pool[29623]: ClampColorARB (will be remapped) */ + /* _mesa_function_pool[30164]: ClampColorARB (will be remapped) */ "ii\0" "glClampColorARB\0" "\0" - /* _mesa_function_pool[29643]: GetLightiv (offset 265) */ + /* _mesa_function_pool[30184]: GetLightiv (offset 265) */ "iip\0" "glGetLightiv\0" "\0" - /* _mesa_function_pool[29661]: GetSamplerParameterIiv (will be remapped) */ + /* _mesa_function_pool[30202]: GetSamplerParameterIiv (will be remapped) */ "iip\0" "glGetSamplerParameterIiv\0" "\0" - /* _mesa_function_pool[29691]: DrawMeshArraysSUN (dynamic) */ + /* _mesa_function_pool[30232]: DrawMeshArraysSUN (dynamic) */ "iiii\0" "glDrawMeshArraysSUN\0" "\0" - /* _mesa_function_pool[29717]: IsList (offset 287) */ + /* _mesa_function_pool[30258]: IsList (offset 287) */ "i\0" "glIsList\0" "\0" - /* _mesa_function_pool[29729]: IsSync (will be remapped) */ + /* _mesa_function_pool[30270]: IsSync (will be remapped) */ "i\0" "glIsSync\0" "\0" - /* _mesa_function_pool[29741]: RenderMode (offset 196) */ + /* _mesa_function_pool[30282]: RenderMode (offset 196) */ "i\0" "glRenderMode\0" "\0" - /* _mesa_function_pool[29757]: GetMapControlPointsNV (dynamic) */ + /* _mesa_function_pool[30298]: GetMapControlPointsNV (dynamic) */ "iiiiiip\0" "glGetMapControlPointsNV\0" "\0" - /* _mesa_function_pool[29790]: DrawBuffersARB (will be remapped) */ + /* _mesa_function_pool[30331]: DrawBuffersARB (will be remapped) */ "ip\0" "glDrawBuffers\0" "glDrawBuffersARB\0" "glDrawBuffersATI\0" "\0" - /* _mesa_function_pool[29842]: ClearBufferiv (will be remapped) */ + /* _mesa_function_pool[30383]: ClearBufferiv (will be remapped) */ "iip\0" "glClearBufferiv\0" "\0" - /* _mesa_function_pool[29863]: ProgramLocalParameter4fARB (will be remapped) */ + /* _mesa_function_pool[30404]: ProgramLocalParameter4fARB (will be remapped) */ "iiffff\0" "glProgramLocalParameter4fARB\0" "\0" - /* _mesa_function_pool[29900]: SpriteParameterivSGIX (dynamic) */ + /* _mesa_function_pool[30441]: SpriteParameterivSGIX (dynamic) */ "ip\0" "glSpriteParameterivSGIX\0" "\0" - /* _mesa_function_pool[29928]: ProvokingVertexEXT (will be remapped) */ + /* _mesa_function_pool[30469]: ProvokingVertexEXT (will be remapped) */ "i\0" "glProvokingVertexEXT\0" "glProvokingVertex\0" "\0" - /* _mesa_function_pool[29970]: MultiTexCoord1fARB (offset 378) */ + /* _mesa_function_pool[30511]: MultiTexCoord1fARB (offset 378) */ "if\0" "glMultiTexCoord1f\0" "glMultiTexCoord1fARB\0" "\0" - /* _mesa_function_pool[30013]: LoadName (offset 198) */ + /* _mesa_function_pool[30554]: LoadName (offset 198) */ "i\0" "glLoadName\0" "\0" - /* _mesa_function_pool[30027]: VertexAttribs4ubvNV (will be remapped) */ + /* _mesa_function_pool[30568]: VertexAttribs4ubvNV (will be remapped) */ "iip\0" "glVertexAttribs4ubvNV\0" "\0" - /* _mesa_function_pool[30054]: WeightsvARB (dynamic) */ + /* _mesa_function_pool[30595]: WeightsvARB (dynamic) */ "ip\0" "glWeightsvARB\0" "\0" - /* _mesa_function_pool[30072]: Uniform1fvARB (will be remapped) */ + /* _mesa_function_pool[30613]: Uniform1fvARB (will be remapped) */ "iip\0" "glUniform1fv\0" "glUniform1fvARB\0" "\0" - /* _mesa_function_pool[30106]: CopyTexSubImage1D (offset 325) */ + /* _mesa_function_pool[30647]: CopyTexSubImage1D (offset 325) */ "iiiiii\0" "glCopyTexSubImage1D\0" "glCopyTexSubImage1DEXT\0" "\0" - /* _mesa_function_pool[30157]: CullFace (offset 152) */ + /* _mesa_function_pool[30698]: CullFace (offset 152) */ "i\0" "glCullFace\0" "\0" - /* _mesa_function_pool[30171]: BindTexture (offset 307) */ + /* _mesa_function_pool[30712]: BindTexture (offset 307) */ "ii\0" "glBindTexture\0" "glBindTextureEXT\0" "\0" - /* _mesa_function_pool[30206]: BeginFragmentShaderATI (will be remapped) */ + /* _mesa_function_pool[30747]: BeginFragmentShaderATI (will be remapped) */ "\0" "glBeginFragmentShaderATI\0" "\0" - /* _mesa_function_pool[30233]: MultiTexCoord4fARB (offset 402) */ + /* _mesa_function_pool[30774]: MultiTexCoord4fARB (offset 402) */ "iffff\0" "glMultiTexCoord4f\0" "glMultiTexCoord4fARB\0" "\0" - /* _mesa_function_pool[30279]: VertexAttribs3svNV (will be remapped) */ + /* _mesa_function_pool[30820]: VertexAttribs3svNV (will be remapped) */ "iip\0" "glVertexAttribs3svNV\0" "\0" - /* _mesa_function_pool[30305]: StencilFunc (offset 243) */ + /* _mesa_function_pool[30846]: StencilFunc (offset 243) */ "iii\0" "glStencilFunc\0" "\0" - /* _mesa_function_pool[30324]: CopyPixels (offset 255) */ + /* _mesa_function_pool[30865]: CopyPixels (offset 255) */ "iiiii\0" "glCopyPixels\0" "\0" - /* _mesa_function_pool[30344]: Rectsv (offset 93) */ + /* _mesa_function_pool[30885]: Rectsv (offset 93) */ "pp\0" "glRectsv\0" "\0" - /* _mesa_function_pool[30357]: ReplacementCodeuivSUN (dynamic) */ + /* _mesa_function_pool[30898]: ReplacementCodeuivSUN (dynamic) */ "p\0" "glReplacementCodeuivSUN\0" "\0" - /* _mesa_function_pool[30384]: EnableVertexAttribArrayARB (will be remapped) */ + /* _mesa_function_pool[30925]: EnableVertexAttribArrayARB (will be remapped) */ "i\0" "glEnableVertexAttribArray\0" "glEnableVertexAttribArrayARB\0" "\0" - /* _mesa_function_pool[30442]: NormalPointervINTEL (dynamic) */ + /* _mesa_function_pool[30983]: NormalPointervINTEL (dynamic) */ "ip\0" "glNormalPointervINTEL\0" "\0" - /* _mesa_function_pool[30468]: CopyConvolutionFilter2D (offset 355) */ + /* _mesa_function_pool[31009]: CopyConvolutionFilter2D (offset 355) */ "iiiiii\0" "glCopyConvolutionFilter2D\0" "glCopyConvolutionFilter2DEXT\0" "\0" - /* _mesa_function_pool[30531]: WindowPos3ivMESA (will be remapped) */ + /* _mesa_function_pool[31072]: WindowPos3ivMESA (will be remapped) */ "p\0" "glWindowPos3iv\0" "glWindowPos3ivARB\0" "glWindowPos3ivMESA\0" "\0" - /* _mesa_function_pool[30586]: CopyBufferSubData (will be remapped) */ + /* _mesa_function_pool[31127]: CopyBufferSubData (will be remapped) */ "iiiii\0" "glCopyBufferSubData\0" "\0" - /* _mesa_function_pool[30613]: NormalPointer (offset 318) */ + /* _mesa_function_pool[31154]: NormalPointer (offset 318) */ "iip\0" "glNormalPointer\0" "\0" - /* _mesa_function_pool[30634]: TexParameterfv (offset 179) */ + /* _mesa_function_pool[31175]: TexParameterfv (offset 179) */ "iip\0" "glTexParameterfv\0" "\0" - /* _mesa_function_pool[30656]: IsBufferARB (will be remapped) */ + /* _mesa_function_pool[31197]: IsBufferARB (will be remapped) */ "i\0" "glIsBuffer\0" "glIsBufferARB\0" "\0" - /* _mesa_function_pool[30684]: WindowPos4iMESA (will be remapped) */ + /* _mesa_function_pool[31225]: WindowPos4iMESA (will be remapped) */ "iiii\0" "glWindowPos4iMESA\0" "\0" - /* _mesa_function_pool[30708]: VertexAttrib4uivARB (will be remapped) */ + /* _mesa_function_pool[31249]: VertexAttrib4uivARB (will be remapped) */ "ip\0" "glVertexAttrib4uiv\0" "glVertexAttrib4uivARB\0" "\0" - /* _mesa_function_pool[30753]: Tangent3bvEXT (dynamic) */ + /* _mesa_function_pool[31294]: Tangent3bvEXT (dynamic) */ "p\0" "glTangent3bvEXT\0" "\0" - /* _mesa_function_pool[30772]: VertexAttribI3uivEXT (will be remapped) */ + /* _mesa_function_pool[31313]: VertexAttribI3uivEXT (will be remapped) */ "ip\0" "glVertexAttribI3uivEXT\0" "glVertexAttribI3uiv\0" "\0" - /* _mesa_function_pool[30819]: UniformMatrix3x4fv (will be remapped) */ + /* _mesa_function_pool[31360]: UniformMatrix3x4fv (will be remapped) */ "iiip\0" "glUniformMatrix3x4fv\0" "\0" - /* _mesa_function_pool[30846]: ClipPlane (offset 150) */ + /* _mesa_function_pool[31387]: ClipPlane (offset 150) */ "ip\0" "glClipPlane\0" "\0" - /* _mesa_function_pool[30862]: Recti (offset 90) */ + /* _mesa_function_pool[31403]: Recti (offset 90) */ "iiii\0" "glRecti\0" "\0" - /* _mesa_function_pool[30876]: TrackMatrixNV (will be remapped) */ + /* _mesa_function_pool[31417]: TrackMatrixNV (will be remapped) */ "iiii\0" "glTrackMatrixNV\0" "\0" - /* _mesa_function_pool[30898]: DrawRangeElementsBaseVertex (will be remapped) */ + /* _mesa_function_pool[31439]: DrawRangeElementsBaseVertex (will be remapped) */ "iiiiipi\0" "glDrawRangeElementsBaseVertex\0" "\0" - /* _mesa_function_pool[30937]: SamplerParameterIuiv (will be remapped) */ + /* _mesa_function_pool[31478]: SamplerParameterIuiv (will be remapped) */ "iip\0" "glSamplerParameterIuiv\0" "\0" - /* _mesa_function_pool[30965]: TexCoordPointervINTEL (dynamic) */ + /* _mesa_function_pool[31506]: TexCoordPointervINTEL (dynamic) */ "iip\0" "glTexCoordPointervINTEL\0" "\0" - /* _mesa_function_pool[30994]: DeleteBuffersARB (will be remapped) */ + /* _mesa_function_pool[31535]: DeleteBuffersARB (will be remapped) */ "ip\0" "glDeleteBuffers\0" "glDeleteBuffersARB\0" "\0" - /* _mesa_function_pool[31033]: PixelTransformParameterfvEXT (dynamic) */ + /* _mesa_function_pool[31574]: PixelTransformParameterfvEXT (dynamic) */ "iip\0" "glPixelTransformParameterfvEXT\0" "\0" - /* _mesa_function_pool[31069]: PrimitiveRestartNV (will be remapped) */ + /* _mesa_function_pool[31610]: PrimitiveRestartNV (will be remapped) */ "\0" "glPrimitiveRestartNV\0" "\0" - /* _mesa_function_pool[31092]: WindowPos4fvMESA (will be remapped) */ + /* _mesa_function_pool[31633]: WindowPos4fvMESA (will be remapped) */ "p\0" "glWindowPos4fvMESA\0" "\0" - /* _mesa_function_pool[31114]: GetPixelMapuiv (offset 272) */ + /* _mesa_function_pool[31655]: GetPixelMapuiv (offset 272) */ "ip\0" "glGetPixelMapuiv\0" "\0" - /* _mesa_function_pool[31135]: Rectf (offset 88) */ + /* _mesa_function_pool[31676]: Rectf (offset 88) */ "ffff\0" "glRectf\0" "\0" - /* _mesa_function_pool[31149]: VertexAttrib1sNV (will be remapped) */ + /* _mesa_function_pool[31690]: VertexAttrib1sNV (will be remapped) */ "ii\0" "glVertexAttrib1sNV\0" "\0" - /* _mesa_function_pool[31172]: Indexfv (offset 47) */ + /* _mesa_function_pool[31713]: Indexfv (offset 47) */ "p\0" "glIndexfv\0" "\0" - /* _mesa_function_pool[31185]: SecondaryColor3svEXT (will be remapped) */ + /* _mesa_function_pool[31726]: SecondaryColor3svEXT (will be remapped) */ "p\0" "glSecondaryColor3sv\0" "glSecondaryColor3svEXT\0" "\0" - /* _mesa_function_pool[31231]: LoadTransposeMatrixfARB (will be remapped) */ + /* _mesa_function_pool[31772]: LoadTransposeMatrixfARB (will be remapped) */ "p\0" "glLoadTransposeMatrixf\0" "glLoadTransposeMatrixfARB\0" "\0" - /* _mesa_function_pool[31283]: GetPointerv (offset 329) */ + /* _mesa_function_pool[31824]: GetPointerv (offset 329) */ "ip\0" "glGetPointerv\0" "glGetPointervEXT\0" "\0" - /* _mesa_function_pool[31318]: Tangent3bEXT (dynamic) */ + /* _mesa_function_pool[31859]: Tangent3bEXT (dynamic) */ "iii\0" "glTangent3bEXT\0" "\0" - /* _mesa_function_pool[31338]: CombinerParameterfNV (will be remapped) */ + /* _mesa_function_pool[31879]: CombinerParameterfNV (will be remapped) */ "if\0" "glCombinerParameterfNV\0" "\0" - /* _mesa_function_pool[31365]: IndexMask (offset 212) */ + /* _mesa_function_pool[31906]: IndexMask (offset 212) */ "i\0" "glIndexMask\0" "\0" - /* _mesa_function_pool[31380]: BindProgramNV (will be remapped) */ + /* _mesa_function_pool[31921]: BindProgramNV (will be remapped) */ "ii\0" "glBindProgramARB\0" "glBindProgramNV\0" "\0" - /* _mesa_function_pool[31417]: VertexAttrib4svARB (will be remapped) */ + /* _mesa_function_pool[31958]: VertexAttrib4svARB (will be remapped) */ "ip\0" "glVertexAttrib4sv\0" "glVertexAttrib4svARB\0" "\0" - /* _mesa_function_pool[31460]: GetFloatv (offset 262) */ + /* _mesa_function_pool[32001]: GetFloatv (offset 262) */ "ip\0" "glGetFloatv\0" "\0" - /* _mesa_function_pool[31476]: CreateDebugObjectMESA (dynamic) */ + /* _mesa_function_pool[32017]: CreateDebugObjectMESA (dynamic) */ "\0" "glCreateDebugObjectMESA\0" "\0" - /* _mesa_function_pool[31502]: GetShaderiv (will be remapped) */ + /* _mesa_function_pool[32043]: GetShaderiv (will be remapped) */ "iip\0" "glGetShaderiv\0" "\0" - /* _mesa_function_pool[31521]: ClientWaitSync (will be remapped) */ + /* _mesa_function_pool[32062]: ClientWaitSync (will be remapped) */ "iii\0" "glClientWaitSync\0" "\0" - /* _mesa_function_pool[31543]: TexCoord4s (offset 124) */ + /* _mesa_function_pool[32084]: TexCoord4s (offset 124) */ "iiii\0" "glTexCoord4s\0" "\0" - /* _mesa_function_pool[31562]: TexCoord3sv (offset 117) */ + /* _mesa_function_pool[32103]: TexCoord3sv (offset 117) */ "p\0" "glTexCoord3sv\0" "\0" - /* _mesa_function_pool[31579]: BindFragmentShaderATI (will be remapped) */ + /* _mesa_function_pool[32120]: BindFragmentShaderATI (will be remapped) */ "i\0" "glBindFragmentShaderATI\0" "\0" - /* _mesa_function_pool[31606]: PopAttrib (offset 218) */ + /* _mesa_function_pool[32147]: PopAttrib (offset 218) */ "\0" "glPopAttrib\0" "\0" - /* _mesa_function_pool[31620]: Fogfv (offset 154) */ + /* _mesa_function_pool[32161]: Fogfv (offset 154) */ "ip\0" "glFogfv\0" "\0" - /* _mesa_function_pool[31632]: UnmapBufferARB (will be remapped) */ + /* _mesa_function_pool[32173]: UnmapBufferARB (will be remapped) */ "i\0" "glUnmapBuffer\0" "glUnmapBufferARB\0" "\0" - /* _mesa_function_pool[31666]: InitNames (offset 197) */ + /* _mesa_function_pool[32207]: InitNames (offset 197) */ "\0" "glInitNames\0" "\0" - /* _mesa_function_pool[31680]: Normal3sv (offset 61) */ + /* _mesa_function_pool[32221]: Normal3sv (offset 61) */ "p\0" "glNormal3sv\0" "\0" - /* _mesa_function_pool[31695]: Minmax (offset 368) */ + /* _mesa_function_pool[32236]: Minmax (offset 368) */ "iii\0" "glMinmax\0" "glMinmaxEXT\0" "\0" - /* _mesa_function_pool[31721]: TexCoord4d (offset 118) */ + /* _mesa_function_pool[32262]: TexCoord4d (offset 118) */ "dddd\0" "glTexCoord4d\0" "\0" - /* _mesa_function_pool[31740]: DeformationMap3dSGIX (dynamic) */ - "iddiiddiiddiip\0" - "glDeformationMap3dSGIX\0" - "\0" - /* _mesa_function_pool[31779]: TexCoord4f (offset 120) */ + /* _mesa_function_pool[32281]: TexCoord4f (offset 120) */ "ffff\0" "glTexCoord4f\0" "\0" - /* _mesa_function_pool[31798]: FogCoorddvEXT (will be remapped) */ + /* _mesa_function_pool[32300]: FogCoorddvEXT (will be remapped) */ "p\0" "glFogCoorddv\0" "glFogCoorddvEXT\0" "\0" - /* _mesa_function_pool[31830]: FinishTextureSUNX (dynamic) */ + /* _mesa_function_pool[32332]: FinishTextureSUNX (dynamic) */ "\0" "glFinishTextureSUNX\0" "\0" - /* _mesa_function_pool[31852]: GetFragmentLightfvSGIX (dynamic) */ + /* _mesa_function_pool[32354]: GetFragmentLightfvSGIX (dynamic) */ "iip\0" "glGetFragmentLightfvSGIX\0" "\0" - /* _mesa_function_pool[31882]: Binormal3fvEXT (dynamic) */ + /* _mesa_function_pool[32384]: Binormal3fvEXT (dynamic) */ "p\0" "glBinormal3fvEXT\0" "\0" - /* _mesa_function_pool[31902]: GetBooleanv (offset 258) */ + /* _mesa_function_pool[32404]: GetBooleanv (offset 258) */ "ip\0" "glGetBooleanv\0" "\0" - /* _mesa_function_pool[31920]: ColorFragmentOp3ATI (will be remapped) */ + /* _mesa_function_pool[32422]: ColorFragmentOp3ATI (will be remapped) */ "iiiiiiiiiiiii\0" "glColorFragmentOp3ATI\0" "\0" - /* _mesa_function_pool[31957]: Hint (offset 158) */ + /* _mesa_function_pool[32459]: Hint (offset 158) */ "ii\0" "glHint\0" "\0" - /* _mesa_function_pool[31968]: Color4dv (offset 28) */ + /* _mesa_function_pool[32470]: Color4dv (offset 28) */ "p\0" "glColor4dv\0" "\0" - /* _mesa_function_pool[31982]: VertexAttrib2svARB (will be remapped) */ + /* _mesa_function_pool[32484]: VertexAttrib2svARB (will be remapped) */ "ip\0" "glVertexAttrib2sv\0" "glVertexAttrib2svARB\0" "\0" - /* _mesa_function_pool[32025]: AreProgramsResidentNV (will be remapped) */ + /* _mesa_function_pool[32527]: AreProgramsResidentNV (will be remapped) */ "ipp\0" "glAreProgramsResidentNV\0" "\0" - /* _mesa_function_pool[32054]: WindowPos3svMESA (will be remapped) */ + /* _mesa_function_pool[32556]: WindowPos3svMESA (will be remapped) */ "p\0" "glWindowPos3sv\0" "glWindowPos3svARB\0" "glWindowPos3svMESA\0" "\0" - /* _mesa_function_pool[32109]: CopyColorSubTable (offset 347) */ + /* _mesa_function_pool[32611]: CopyColorSubTable (offset 347) */ "iiiii\0" "glCopyColorSubTable\0" "glCopyColorSubTableEXT\0" "\0" - /* _mesa_function_pool[32159]: WeightdvARB (dynamic) */ + /* _mesa_function_pool[32661]: WeightdvARB (dynamic) */ "ip\0" "glWeightdvARB\0" "\0" - /* _mesa_function_pool[32177]: DeleteRenderbuffersEXT (will be remapped) */ + /* _mesa_function_pool[32679]: DeleteRenderbuffersEXT (will be remapped) */ "ip\0" "glDeleteRenderbuffers\0" "glDeleteRenderbuffersEXT\0" "\0" - /* _mesa_function_pool[32228]: VertexAttrib4NubvARB (will be remapped) */ + /* _mesa_function_pool[32730]: VertexAttrib4NubvARB (will be remapped) */ "ip\0" "glVertexAttrib4Nubv\0" "glVertexAttrib4NubvARB\0" "\0" - /* _mesa_function_pool[32275]: VertexAttrib3dvNV (will be remapped) */ + /* _mesa_function_pool[32777]: VertexAttrib3dvNV (will be remapped) */ "ip\0" "glVertexAttrib3dvNV\0" "\0" - /* _mesa_function_pool[32299]: GetObjectParameterfvARB (will be remapped) */ + /* _mesa_function_pool[32801]: GetObjectParameterfvARB (will be remapped) */ "iip\0" "glGetObjectParameterfvARB\0" "\0" - /* _mesa_function_pool[32330]: Vertex4iv (offset 147) */ + /* _mesa_function_pool[32832]: Vertex4iv (offset 147) */ "p\0" "glVertex4iv\0" "\0" - /* _mesa_function_pool[32345]: GetProgramEnvParameterdvARB (will be remapped) */ + /* _mesa_function_pool[32847]: GetProgramEnvParameterdvARB (will be remapped) */ "iip\0" "glGetProgramEnvParameterdvARB\0" "\0" - /* _mesa_function_pool[32380]: TexCoord4dv (offset 119) */ + /* _mesa_function_pool[32882]: TexCoord4dv (offset 119) */ "p\0" "glTexCoord4dv\0" "\0" - /* _mesa_function_pool[32397]: LockArraysEXT (will be remapped) */ + /* _mesa_function_pool[32899]: LockArraysEXT (will be remapped) */ "ii\0" "glLockArraysEXT\0" "\0" - /* _mesa_function_pool[32417]: Begin (offset 7) */ + /* _mesa_function_pool[32919]: Begin (offset 7) */ "i\0" "glBegin\0" "\0" - /* _mesa_function_pool[32428]: LightModeli (offset 165) */ + /* _mesa_function_pool[32930]: LightModeli (offset 165) */ "ii\0" "glLightModeli\0" "\0" - /* _mesa_function_pool[32446]: VertexAttribI4ivEXT (will be remapped) */ + /* _mesa_function_pool[32948]: VertexAttribI4ivEXT (will be remapped) */ "ip\0" "glVertexAttribI4ivEXT\0" "glVertexAttribI4iv\0" "\0" - /* _mesa_function_pool[32491]: Rectfv (offset 89) */ + /* _mesa_function_pool[32993]: Rectfv (offset 89) */ "pp\0" "glRectfv\0" "\0" - /* _mesa_function_pool[32504]: LightModelf (offset 163) */ + /* _mesa_function_pool[33006]: BlendEquationSeparateiARB (will be remapped) */ + "iii\0" + "glBlendEquationSeparateiARB\0" + "glBlendEquationSeparateIndexedAMD\0" + "\0" + /* _mesa_function_pool[33073]: LightModelf (offset 163) */ "if\0" "glLightModelf\0" "\0" - /* _mesa_function_pool[32522]: GetTexParameterfv (offset 282) */ + /* _mesa_function_pool[33091]: GetTexParameterfv (offset 282) */ "iip\0" "glGetTexParameterfv\0" "\0" - /* _mesa_function_pool[32547]: GetLightfv (offset 264) */ + /* _mesa_function_pool[33116]: GetLightfv (offset 264) */ "iip\0" "glGetLightfv\0" "\0" - /* _mesa_function_pool[32565]: PixelTransformParameterivEXT (dynamic) */ + /* _mesa_function_pool[33134]: PixelTransformParameterivEXT (dynamic) */ "iip\0" "glPixelTransformParameterivEXT\0" "\0" - /* _mesa_function_pool[32601]: BinormalPointerEXT (dynamic) */ + /* _mesa_function_pool[33170]: BinormalPointerEXT (dynamic) */ "iip\0" "glBinormalPointerEXT\0" "\0" - /* _mesa_function_pool[32627]: VertexAttrib1dNV (will be remapped) */ + /* _mesa_function_pool[33196]: VertexAttrib1dNV (will be remapped) */ "id\0" "glVertexAttrib1dNV\0" "\0" - /* _mesa_function_pool[32650]: GetCombinerInputParameterivNV (will be remapped) */ + /* _mesa_function_pool[33219]: GetCombinerInputParameterivNV (will be remapped) */ "iiiip\0" "glGetCombinerInputParameterivNV\0" "\0" - /* _mesa_function_pool[32689]: Disable (offset 214) */ + /* _mesa_function_pool[33258]: Disable (offset 214) */ "i\0" "glDisable\0" "\0" - /* _mesa_function_pool[32702]: MultiTexCoord2fvARB (offset 387) */ + /* _mesa_function_pool[33271]: MultiTexCoord2fvARB (offset 387) */ "ip\0" "glMultiTexCoord2fv\0" "glMultiTexCoord2fvARB\0" "\0" - /* _mesa_function_pool[32747]: GetRenderbufferParameterivEXT (will be remapped) */ + /* _mesa_function_pool[33316]: GetRenderbufferParameterivEXT (will be remapped) */ "iip\0" "glGetRenderbufferParameteriv\0" "glGetRenderbufferParameterivEXT\0" "\0" - /* _mesa_function_pool[32813]: CombinerParameterivNV (will be remapped) */ + /* _mesa_function_pool[33382]: CombinerParameterivNV (will be remapped) */ "ip\0" "glCombinerParameterivNV\0" "\0" - /* _mesa_function_pool[32841]: GenFragmentShadersATI (will be remapped) */ + /* _mesa_function_pool[33410]: GenFragmentShadersATI (will be remapped) */ "i\0" "glGenFragmentShadersATI\0" "\0" - /* _mesa_function_pool[32868]: DrawArrays (offset 310) */ + /* _mesa_function_pool[33437]: DrawArrays (offset 310) */ "iii\0" "glDrawArrays\0" "glDrawArraysEXT\0" "\0" - /* _mesa_function_pool[32902]: WeightuivARB (dynamic) */ + /* _mesa_function_pool[33471]: WeightuivARB (dynamic) */ "ip\0" "glWeightuivARB\0" "\0" - /* _mesa_function_pool[32921]: VertexAttrib2sARB (will be remapped) */ + /* _mesa_function_pool[33490]: GetVertexAttribIivEXT (will be remapped) */ + "iip\0" + "glGetVertexAttribIivEXT\0" + "glGetVertexAttribIiv\0" + "\0" + /* _mesa_function_pool[33540]: VertexAttrib2sARB (will be remapped) */ "iii\0" "glVertexAttrib2s\0" "glVertexAttrib2sARB\0" "\0" - /* _mesa_function_pool[32963]: ColorMask (offset 210) */ + /* _mesa_function_pool[33582]: GetnTexImageARB (will be remapped) */ + "iiiiip\0" + "glGetnTexImageARB\0" + "\0" + /* _mesa_function_pool[33608]: ColorMask (offset 210) */ "iiii\0" "glColorMask\0" "\0" - /* _mesa_function_pool[32981]: GenAsyncMarkersSGIX (dynamic) */ + /* _mesa_function_pool[33626]: GenAsyncMarkersSGIX (dynamic) */ "i\0" "glGenAsyncMarkersSGIX\0" "\0" - /* _mesa_function_pool[33006]: Tangent3svEXT (dynamic) */ + /* _mesa_function_pool[33651]: Tangent3svEXT (dynamic) */ "p\0" "glTangent3svEXT\0" "\0" - /* _mesa_function_pool[33025]: GetListParameterivSGIX (dynamic) */ + /* _mesa_function_pool[33670]: GetListParameterivSGIX (dynamic) */ "iip\0" "glGetListParameterivSGIX\0" "\0" - /* _mesa_function_pool[33055]: BindBufferARB (will be remapped) */ + /* _mesa_function_pool[33700]: BindBufferARB (will be remapped) */ "ii\0" "glBindBuffer\0" "glBindBufferARB\0" "\0" - /* _mesa_function_pool[33088]: GetInfoLogARB (will be remapped) */ + /* _mesa_function_pool[33733]: GetInfoLogARB (will be remapped) */ "iipp\0" "glGetInfoLogARB\0" "\0" - /* _mesa_function_pool[33110]: RasterPos4iv (offset 83) */ + /* _mesa_function_pool[33755]: RasterPos4iv (offset 83) */ "p\0" "glRasterPos4iv\0" "\0" - /* _mesa_function_pool[33128]: Enable (offset 215) */ + /* _mesa_function_pool[33773]: Enable (offset 215) */ "i\0" "glEnable\0" "\0" - /* _mesa_function_pool[33140]: LineStipple (offset 167) */ + /* _mesa_function_pool[33785]: LineStipple (offset 167) */ "ii\0" "glLineStipple\0" "\0" - /* _mesa_function_pool[33158]: VertexAttribs4svNV (will be remapped) */ + /* _mesa_function_pool[33803]: VertexAttribs4svNV (will be remapped) */ "iip\0" "glVertexAttribs4svNV\0" "\0" - /* _mesa_function_pool[33184]: EdgeFlagPointerListIBM (dynamic) */ + /* _mesa_function_pool[33829]: EdgeFlagPointerListIBM (dynamic) */ "ipi\0" "glEdgeFlagPointerListIBM\0" "\0" - /* _mesa_function_pool[33214]: UniformMatrix3x2fv (will be remapped) */ + /* _mesa_function_pool[33859]: UniformMatrix3x2fv (will be remapped) */ "iiip\0" "glUniformMatrix3x2fv\0" "\0" - /* _mesa_function_pool[33241]: GetMinmaxParameterfv (offset 365) */ + /* _mesa_function_pool[33886]: GetMinmaxParameterfv (offset 365) */ "iip\0" "glGetMinmaxParameterfv\0" "glGetMinmaxParameterfvEXT\0" "\0" - /* _mesa_function_pool[33295]: VertexAttrib1fvARB (will be remapped) */ + /* _mesa_function_pool[33940]: VertexAttrib1fvARB (will be remapped) */ "ip\0" "glVertexAttrib1fv\0" "glVertexAttrib1fvARB\0" "\0" - /* _mesa_function_pool[33338]: GenBuffersARB (will be remapped) */ + /* _mesa_function_pool[33983]: GenBuffersARB (will be remapped) */ "ip\0" "glGenBuffers\0" "glGenBuffersARB\0" "\0" - /* _mesa_function_pool[33371]: VertexAttribs1svNV (will be remapped) */ + /* _mesa_function_pool[34016]: VertexAttribs1svNV (will be remapped) */ "iip\0" "glVertexAttribs1svNV\0" "\0" - /* _mesa_function_pool[33397]: Vertex3fv (offset 137) */ + /* _mesa_function_pool[34042]: Vertex3fv (offset 137) */ "p\0" "glVertex3fv\0" "\0" - /* _mesa_function_pool[33412]: GetTexBumpParameterivATI (will be remapped) */ + /* _mesa_function_pool[34057]: GetTexBumpParameterivATI (will be remapped) */ "ip\0" "glGetTexBumpParameterivATI\0" "\0" - /* _mesa_function_pool[33443]: Binormal3bEXT (dynamic) */ + /* _mesa_function_pool[34088]: Binormal3bEXT (dynamic) */ "iii\0" "glBinormal3bEXT\0" "\0" - /* _mesa_function_pool[33464]: FragmentMaterialivSGIX (dynamic) */ + /* _mesa_function_pool[34109]: FragmentMaterialivSGIX (dynamic) */ "iip\0" "glFragmentMaterialivSGIX\0" "\0" - /* _mesa_function_pool[33494]: IsRenderbufferEXT (will be remapped) */ + /* _mesa_function_pool[34139]: IsRenderbufferEXT (will be remapped) */ "i\0" "glIsRenderbuffer\0" "glIsRenderbufferEXT\0" "\0" - /* _mesa_function_pool[33534]: GenProgramsNV (will be remapped) */ + /* _mesa_function_pool[34179]: GenProgramsNV (will be remapped) */ "ip\0" "glGenProgramsARB\0" "glGenProgramsNV\0" "\0" - /* _mesa_function_pool[33571]: VertexAttrib4dvNV (will be remapped) */ + /* _mesa_function_pool[34216]: VertexAttrib4dvNV (will be remapped) */ "ip\0" "glVertexAttrib4dvNV\0" "\0" - /* _mesa_function_pool[33595]: EndFragmentShaderATI (will be remapped) */ + /* _mesa_function_pool[34240]: EndFragmentShaderATI (will be remapped) */ "\0" "glEndFragmentShaderATI\0" "\0" - /* _mesa_function_pool[33620]: Binormal3iEXT (dynamic) */ + /* _mesa_function_pool[34265]: Binormal3iEXT (dynamic) */ "iii\0" "glBinormal3iEXT\0" "\0" - /* _mesa_function_pool[33641]: WindowPos2fMESA (will be remapped) */ + /* _mesa_function_pool[34286]: WindowPos2fMESA (will be remapped) */ "ff\0" "glWindowPos2f\0" "glWindowPos2fARB\0" @@ -4847,616 +4931,636 @@ static const char _mesa_function_pool[] = /* these functions need to be remapped */ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { - { 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 }, + { 1629, AttachShader_remap_index }, + { 10274, CreateProgram_remap_index }, + { 23765, CreateShader_remap_index }, + { 26289, DeleteProgram_remap_index }, + { 19245, DeleteShader_remap_index }, + { 24258, DetachShader_remap_index }, + { 18534, GetAttachedShaders_remap_index }, + { 5126, GetProgramInfoLog_remap_index }, + { 444, GetProgramiv_remap_index }, + { 6892, GetShaderInfoLog_remap_index }, + { 32043, GetShaderiv_remap_index }, + { 13807, IsProgram_remap_index }, + { 12698, IsShader_remap_index }, + { 10404, StencilFuncSeparate_remap_index }, + { 4156, StencilMaskSeparate_remap_index }, + { 7957, StencilOpSeparate_remap_index }, + { 22999, UniformMatrix2x3fv_remap_index }, + { 2998, UniformMatrix2x4fv_remap_index }, + { 33859, UniformMatrix3x2fv_remap_index }, + { 31360, UniformMatrix3x4fv_remap_index }, + { 16726, UniformMatrix4x2fv_remap_index }, + { 3417, UniformMatrix4x3fv_remap_index }, + { 5332, ClampColor_remap_index }, + { 18588, ClearBufferfi_remap_index }, + { 18004, ClearBufferfv_remap_index }, + { 30383, ClearBufferiv_remap_index }, + { 14012, ClearBufferuiv_remap_index }, + { 20582, GetStringi_remap_index }, + { 2900, TexBuffer_remap_index }, + { 977, FramebufferTexture_remap_index }, + { 27325, GetBufferParameteri64v_remap_index }, + { 10504, GetInteger64i_v_remap_index }, + { 24079, VertexAttribDivisor_remap_index }, + { 10292, LoadTransposeMatrixdARB_remap_index }, + { 31772, LoadTransposeMatrixfARB_remap_index }, + { 5971, MultTransposeMatrixdARB_remap_index }, + { 24445, MultTransposeMatrixfARB_remap_index }, + { 255, SampleCoverageARB_remap_index }, + { 6155, CompressedTexImage1DARB_remap_index }, + { 24973, CompressedTexImage2DARB_remap_index }, + { 4219, CompressedTexImage3DARB_remap_index }, + { 18876, CompressedTexSubImage1DARB_remap_index }, + { 2141, CompressedTexSubImage2DARB_remap_index }, + { 21004, CompressedTexSubImage3DARB_remap_index }, + { 29489, GetCompressedTexImageARB_remap_index }, + { 3983, DisableVertexAttribArrayARB_remap_index }, + { 30925, EnableVertexAttribArrayARB_remap_index }, + { 32847, GetProgramEnvParameterdvARB_remap_index }, + { 24325, GetProgramEnvParameterfvARB_remap_index }, + { 28354, GetProgramLocalParameterdvARB_remap_index }, + { 8433, GetProgramLocalParameterfvARB_remap_index }, + { 19052, GetProgramStringARB_remap_index }, + { 28549, GetProgramivARB_remap_index }, + { 21199, GetVertexAttribdvARB_remap_index }, + { 16534, GetVertexAttribfvARB_remap_index }, + { 10108, GetVertexAttribivARB_remap_index }, + { 20045, ProgramEnvParameter4dARB_remap_index }, + { 26039, ProgramEnvParameter4dvARB_remap_index }, + { 17302, ProgramEnvParameter4fARB_remap_index }, + { 9308, ProgramEnvParameter4fvARB_remap_index }, + { 4182, ProgramLocalParameter4dARB_remap_index }, + { 13517, ProgramLocalParameter4dvARB_remap_index }, + { 30404, ProgramLocalParameter4fARB_remap_index }, + { 26685, ProgramLocalParameter4fvARB_remap_index }, + { 29243, ProgramStringARB_remap_index }, + { 20313, VertexAttrib1dARB_remap_index }, + { 16161, VertexAttrib1dvARB_remap_index }, + { 4378, VertexAttrib1fARB_remap_index }, + { 33940, VertexAttrib1fvARB_remap_index }, + { 7483, VertexAttrib1sARB_remap_index }, + { 2336, VertexAttrib1svARB_remap_index }, + { 15592, VertexAttrib2dARB_remap_index }, + { 18025, VertexAttrib2dvARB_remap_index }, + { 1687, VertexAttrib2fARB_remap_index }, + { 18138, VertexAttrib2fvARB_remap_index }, + { 33540, VertexAttrib2sARB_remap_index }, + { 32484, VertexAttrib2svARB_remap_index }, + { 11682, VertexAttrib3dARB_remap_index }, + { 8975, VertexAttrib3dvARB_remap_index }, + { 1774, VertexAttrib3fARB_remap_index }, + { 23316, VertexAttrib3fvARB_remap_index }, + { 29090, VertexAttrib3sARB_remap_index }, + { 20941, VertexAttrib3svARB_remap_index }, + { 5152, VertexAttrib4NbvARB_remap_index }, + { 18411, VertexAttrib4NivARB_remap_index }, + { 23271, VertexAttrib4NsvARB_remap_index }, + { 24277, VertexAttrib4NubARB_remap_index }, + { 32730, VertexAttrib4NubvARB_remap_index }, + { 19696, VertexAttrib4NuivARB_remap_index }, + { 3290, VertexAttrib4NusvARB_remap_index }, + { 11271, VertexAttrib4bvARB_remap_index }, + { 27727, VertexAttrib4dARB_remap_index }, + { 21998, VertexAttrib4dvARB_remap_index }, + { 11836, VertexAttrib4fARB_remap_index }, + { 12240, VertexAttrib4fvARB_remap_index }, + { 10647, VertexAttrib4ivARB_remap_index }, + { 17818, VertexAttrib4sARB_remap_index }, + { 31958, VertexAttrib4svARB_remap_index }, + { 17107, VertexAttrib4ubvARB_remap_index }, + { 31249, VertexAttrib4uivARB_remap_index }, + { 20752, VertexAttrib4usvARB_remap_index }, + { 22814, VertexAttribPointerARB_remap_index }, + { 33700, BindBufferARB_remap_index }, + { 7190, BufferDataARB_remap_index }, + { 1550, BufferSubDataARB_remap_index }, + { 31535, DeleteBuffersARB_remap_index }, + { 33983, GenBuffersARB_remap_index }, + { 18181, GetBufferParameterivARB_remap_index }, + { 17254, GetBufferPointervARB_remap_index }, + { 1503, GetBufferSubDataARB_remap_index }, + { 31197, IsBufferARB_remap_index }, + { 27169, MapBufferARB_remap_index }, + { 32173, UnmapBufferARB_remap_index }, + { 351, BeginQueryARB_remap_index }, + { 20408, DeleteQueriesARB_remap_index }, + { 12559, EndQueryARB_remap_index }, + { 29968, GenQueriesARB_remap_index }, + { 2033, GetQueryObjectivARB_remap_index }, + { 17862, GetQueryObjectuivARB_remap_index }, + { 1831, GetQueryivARB_remap_index }, + { 20659, IsQueryARB_remap_index }, + { 8585, AttachObjectARB_remap_index }, + { 19207, CompileShaderARB_remap_index }, + { 3359, CreateProgramObjectARB_remap_index }, + { 7135, CreateShaderObjectARB_remap_index }, + { 14894, DeleteObjectARB_remap_index }, + { 24764, DetachObjectARB_remap_index }, + { 12304, GetActiveUniformARB_remap_index }, + { 9783, GetAttachedObjectsARB_remap_index }, + { 10090, GetHandleARB_remap_index }, + { 33733, GetInfoLogARB_remap_index }, + { 32801, GetObjectParameterfvARB_remap_index }, + { 28228, GetObjectParameterivARB_remap_index }, + { 29726, GetShaderSourceARB_remap_index }, + { 28950, GetUniformLocationARB_remap_index }, + { 24547, GetUniformfvARB_remap_index }, + { 13092, GetUniformivARB_remap_index }, + { 20797, LinkProgramARB_remap_index }, + { 20855, ShaderSourceARB_remap_index }, + { 7857, Uniform1fARB_remap_index }, + { 30613, Uniform1fvARB_remap_index }, + { 22762, Uniform1iARB_remap_index }, + { 21652, Uniform1ivARB_remap_index }, + { 2285, Uniform2fARB_remap_index }, + { 14730, Uniform2fvARB_remap_index }, + { 27056, Uniform2iARB_remap_index }, + { 2405, Uniform2ivARB_remap_index }, + { 19317, Uniform3fARB_remap_index }, + { 9813, Uniform3fvARB_remap_index }, + { 6746, Uniform3iARB_remap_index }, + { 17360, Uniform3ivARB_remap_index }, + { 19851, Uniform4fARB_remap_index }, + { 24411, Uniform4fvARB_remap_index }, + { 25673, Uniform4iARB_remap_index }, + { 21165, Uniform4ivARB_remap_index }, + { 8637, UniformMatrix2fvARB_remap_index }, { 17, UniformMatrix3fvARB_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 }, + { 2802, UniformMatrix4fvARB_remap_index }, + { 26151, UseProgramObjectARB_remap_index }, + { 15280, ValidateProgramARB_remap_index }, + { 22041, BindAttribLocationARB_remap_index }, + { 5197, GetActiveAttribARB_remap_index }, + { 17041, GetAttribLocationARB_remap_index }, + { 30331, DrawBuffersARB_remap_index }, + { 30164, ClampColorARB_remap_index }, + { 18456, DrawArraysInstancedARB_remap_index }, + { 6807, DrawElementsInstancedARB_remap_index }, + { 13622, RenderbufferStorageMultisample_remap_index }, + { 14093, FramebufferTextureARB_remap_index }, + { 26587, FramebufferTextureFaceARB_remap_index }, + { 24913, ProgramParameteriARB_remap_index }, + { 6327, VertexAttribDivisorARB_remap_index }, + { 19899, FlushMappedBufferRange_remap_index }, + { 28665, MapBufferRange_remap_index }, + { 28572, TexBufferARB_remap_index }, + { 16864, BindVertexArray_remap_index }, + { 15103, GenVertexArrays_remap_index }, + { 31127, CopyBufferSubData_remap_index }, + { 32062, ClientWaitSync_remap_index }, + { 2721, DeleteSync_remap_index }, + { 7524, FenceSync_remap_index }, + { 15651, GetInteger64v_remap_index }, + { 23378, GetSynciv_remap_index }, + { 30270, IsSync_remap_index }, + { 9731, WaitSync_remap_index }, + { 3951, DrawElementsBaseVertex_remap_index }, + { 31439, DrawRangeElementsBaseVertex_remap_index }, + { 27200, MultiDrawElementsBaseVertex_remap_index }, + { 33006, BlendEquationSeparateiARB_remap_index }, + { 18274, BlendEquationiARB_remap_index }, + { 13031, BlendFuncSeparateiARB_remap_index }, + { 10156, BlendFunciARB_remap_index }, + { 8499, BindSampler_remap_index }, + { 4357, DeleteSamplers_remap_index }, + { 20272, GenSamplers_remap_index }, + { 30202, GetSamplerParameterIiv_remap_index }, + { 19793, GetSamplerParameterIuiv_remap_index }, + { 5046, GetSamplerParameterfv_remap_index }, + { 26308, GetSamplerParameteriv_remap_index }, + { 14648, IsSampler_remap_index }, + { 16817, SamplerParameterIiv_remap_index }, + { 31478, SamplerParameterIuiv_remap_index }, + { 23051, SamplerParameterf_remap_index }, + { 16973, SamplerParameterfv_remap_index }, + { 23026, SamplerParameteri_remap_index }, + { 18650, SamplerParameteriv_remap_index }, + { 5393, BindTransformFeedback_remap_index }, + { 3386, DeleteTransformFeedbacks_remap_index }, + { 6779, DrawTransformFeedback_remap_index }, + { 9950, GenTransformFeedbacks_remap_index }, + { 29133, IsTransformFeedback_remap_index }, + { 26780, PauseTransformFeedback_remap_index }, + { 5856, ResumeTransformFeedback_remap_index }, + { 22361, ClearDepthf_remap_index }, + { 7083, DepthRangef_remap_index }, + { 14915, GetShaderPrecisionFormat_remap_index }, + { 10344, ReleaseShaderCompiler_remap_index }, + { 11314, ShaderBinary_remap_index }, + { 1004, GetGraphicsResetStatusARB_remap_index }, + { 25478, GetnColorTableARB_remap_index }, + { 8268, GetnCompressedTexImageARB_remap_index }, + { 4090, GetnConvolutionFilterARB_remap_index }, + { 16204, GetnHistogramARB_remap_index }, + { 24237, GetnMapdvARB_remap_index }, + { 22793, GetnMapfvARB_remap_index }, + { 2264, GetnMapivARB_remap_index }, + { 17622, GetnMinmaxARB_remap_index }, + { 4671, GetnPixelMapfvARB_remap_index }, + { 19670, GetnPixelMapuivARB_remap_index }, + { 3111, GetnPixelMapusvARB_remap_index }, + { 1383, GetnPolygonStippleARB_remap_index }, + { 21826, GetnSeparableFilterARB_remap_index }, + { 33582, GetnTexImageARB_remap_index }, + { 19079, GetnUniformdvARB_remap_index }, + { 4743, GetnUniformfvARB_remap_index }, + { 10199, GetnUniformivARB_remap_index }, + { 23227, GetnUniformuivARB_remap_index }, + { 3025, ReadnPixelsARB_remap_index }, + { 5724, PolygonOffsetEXT_remap_index }, + { 24000, GetPixelTexGenParameterfvSGIS_remap_index }, + { 4621, GetPixelTexGenParameterivSGIS_remap_index }, + { 23733, PixelTexGenParameterfSGIS_remap_index }, + { 663, PixelTexGenParameterfvSGIS_remap_index }, + { 13130, PixelTexGenParameteriSGIS_remap_index }, + { 14235, PixelTexGenParameterivSGIS_remap_index }, + { 18775, SampleMaskSGIS_remap_index }, + { 20599, SamplePatternSGIS_remap_index }, + { 27129, ColorPointerEXT_remap_index }, + { 18068, EdgeFlagPointerEXT_remap_index }, + { 6400, IndexPointerEXT_remap_index }, + { 6480, NormalPointerEXT_remap_index }, + { 16272, TexCoordPointerEXT_remap_index }, + { 7313, VertexPointerEXT_remap_index }, + { 3753, PointParameterfEXT_remap_index }, + { 8164, PointParameterfvEXT_remap_index }, + { 32899, LockArraysEXT_remap_index }, + { 15344, UnlockArraysEXT_remap_index }, + { 1291, SecondaryColor3bEXT_remap_index }, + { 8357, SecondaryColor3bvEXT_remap_index }, + { 10824, SecondaryColor3dEXT_remap_index }, + { 26357, SecondaryColor3dvEXT_remap_index }, + { 28999, SecondaryColor3fEXT_remap_index }, + { 18812, SecondaryColor3fvEXT_remap_index }, + { 509, SecondaryColor3iEXT_remap_index }, + { 16582, SecondaryColor3ivEXT_remap_index }, + { 10432, SecondaryColor3sEXT_remap_index }, + { 31726, SecondaryColor3svEXT_remap_index }, + { 28064, SecondaryColor3ubEXT_remap_index }, + { 21932, SecondaryColor3ubvEXT_remap_index }, + { 13372, SecondaryColor3uiEXT_remap_index }, + { 23620, SecondaryColor3uivEXT_remap_index }, + { 26637, SecondaryColor3usEXT_remap_index }, + { 13445, SecondaryColor3usvEXT_remap_index }, + { 12183, SecondaryColorPointerEXT_remap_index }, + { 26451, MultiDrawArraysEXT_remap_index }, + { 21587, MultiDrawElementsEXT_remap_index }, + { 21782, FogCoordPointerEXT_remap_index }, + { 4794, FogCoorddEXT_remap_index }, + { 32300, FogCoorddvEXT_remap_index }, + { 4911, FogCoordfEXT_remap_index }, + { 27987, FogCoordfvEXT_remap_index }, + { 12283, PixelTexGenSGIX_remap_index }, + { 28592, BlendFuncSeparateEXT_remap_index }, + { 7225, FlushVertexArrayRangeNV_remap_index }, + { 5673, VertexArrayRangeNV_remap_index }, + { 29064, CombinerInputNV_remap_index }, + { 2207, CombinerOutputNV_remap_index }, + { 31879, CombinerParameterfNV_remap_index }, + { 5547, CombinerParameterfvNV_remap_index }, + { 23076, CombinerParameteriNV_remap_index }, + { 33382, CombinerParameterivNV_remap_index }, + { 7601, FinalCombinerInputNV_remap_index }, + { 1648, GetCombinerInputParameterfvNV_remap_index }, + { 33219, GetCombinerInputParameterivNV_remap_index }, + { 216, GetCombinerOutputParameterfvNV_remap_index }, + { 14196, GetCombinerOutputParameterivNV_remap_index }, + { 6987, GetFinalCombinerInputParameterfvNV_remap_index }, + { 25545, GetFinalCombinerInputParameterivNV_remap_index }, + { 13009, ResizeBuffersMESA_remap_index }, + { 11509, WindowPos2dMESA_remap_index }, + { 1084, WindowPos2dvMESA_remap_index }, + { 34286, WindowPos2fMESA_remap_index }, + { 8302, WindowPos2fvMESA_remap_index }, + { 18722, WindowPos2iMESA_remap_index }, + { 21072, WindowPos2ivMESA_remap_index }, + { 21686, WindowPos2sMESA_remap_index }, + { 6069, WindowPos2svMESA_remap_index }, + { 8093, WindowPos3dMESA_remap_index }, + { 14443, WindowPos3dvMESA_remap_index }, + { 555, WindowPos3fMESA_remap_index }, + { 15405, WindowPos3fvMESA_remap_index }, + { 24806, WindowPos3iMESA_remap_index }, + { 31072, WindowPos3ivMESA_remap_index }, + { 19462, WindowPos3sMESA_remap_index }, + { 32556, WindowPos3svMESA_remap_index }, + { 11460, WindowPos4dMESA_remap_index }, + { 17498, WindowPos4dvMESA_remap_index }, + { 14402, WindowPos4fMESA_remap_index }, + { 31633, WindowPos4fvMESA_remap_index }, + { 31225, WindowPos4iMESA_remap_index }, + { 12812, WindowPos4ivMESA_remap_index }, + { 19646, WindowPos4sMESA_remap_index }, + { 3337, WindowPos4svMESA_remap_index }, + { 27695, MultiModeDrawArraysIBM_remap_index }, + { 29839, MultiModeDrawElementsIBM_remap_index }, + { 12587, DeleteFencesNV_remap_index }, + { 28911, FinishFenceNV_remap_index }, + { 3875, GenFencesNV_remap_index }, + { 17478, GetFenceivNV_remap_index }, + { 8570, IsFenceNV_remap_index }, + { 14123, SetFenceNV_remap_index }, + { 4434, TestFenceNV_remap_index }, + { 32527, AreProgramsResidentNV_remap_index }, + { 31921, BindProgramNV_remap_index }, + { 26720, DeleteProgramsNV_remap_index }, + { 22150, ExecuteProgramNV_remap_index }, + { 34179, GenProgramsNV_remap_index }, + { 24105, GetProgramParameterdvNV_remap_index }, + { 10886, GetProgramParameterfvNV_remap_index }, + { 27103, GetProgramStringNV_remap_index }, + { 25183, GetProgramivNV_remap_index }, + { 24360, GetTrackMatrixivNV_remap_index }, + { 26897, GetVertexAttribPointervNV_remap_index }, + { 10527, GetVertexAttribdvNV_remap_index }, + { 9626, GetVertexAttribfvNV_remap_index }, + { 19025, GetVertexAttribivNV_remap_index }, + { 19929, IsProgramNV_remap_index }, + { 9709, LoadProgramNV_remap_index }, + { 28688, ProgramParameters4dvNV_remap_index }, + { 25113, ProgramParameters4fvNV_remap_index }, + { 21376, RequestResidentProgramsNV_remap_index }, + { 31417, TrackMatrixNV_remap_index }, + { 33196, VertexAttrib1dNV_remap_index }, + { 14034, VertexAttrib1dvNV_remap_index }, + { 29345, VertexAttrib1fNV_remap_index }, + { 2527, VertexAttrib1fvNV_remap_index }, + { 31690, VertexAttrib1sNV_remap_index }, + { 15478, VertexAttrib1svNV_remap_index }, + { 5102, VertexAttrib2dNV_remap_index }, + { 13927, VertexAttrib2dvNV_remap_index }, + { 20831, VertexAttrib2fNV_remap_index }, + { 13493, VertexAttrib2fvNV_remap_index }, + { 6281, VertexAttrib2sNV_remap_index }, + { 19516, VertexAttrib2svNV_remap_index }, + { 11657, VertexAttrib3dNV_remap_index }, + { 32777, VertexAttrib3dvNV_remap_index }, + { 10698, VertexAttrib3fNV_remap_index }, + { 25505, VertexAttrib3fvNV_remap_index }, + { 22869, VertexAttrib3sNV_remap_index }, + { 24387, VertexAttrib3svNV_remap_index }, + { 29813, VertexAttrib4dNV_remap_index }, + { 34216, VertexAttrib4dvNV_remap_index }, + { 5487, VertexAttrib4fNV_remap_index }, + { 9759, VertexAttrib4fvNV_remap_index }, + { 27579, VertexAttrib4sNV_remap_index }, + { 1461, VertexAttrib4svNV_remap_index }, + { 5260, VertexAttrib4ubNV_remap_index }, + { 817, VertexAttrib4ubvNV_remap_index }, + { 22330, VertexAttribPointerNV_remap_index }, + { 2379, VertexAttribs1dvNV_remap_index }, + { 26985, VertexAttribs1fvNV_remap_index }, + { 34016, VertexAttribs1svNV_remap_index }, + { 10723, VertexAttribs2dvNV_remap_index }, + { 26112, VertexAttribs2fvNV_remap_index }, + { 18094, VertexAttribs2svNV_remap_index }, + { 5575, VertexAttribs3dvNV_remap_index }, + { 2238, VertexAttribs3fvNV_remap_index }, + { 30820, VertexAttribs3svNV_remap_index }, + { 27669, VertexAttribs4dvNV_remap_index }, + { 5647, VertexAttribs4fvNV_remap_index }, + { 33803, VertexAttribs4svNV_remap_index }, + { 30568, VertexAttribs4ubvNV_remap_index }, + { 27771, GetTexBumpParameterfvATI_remap_index }, + { 34057, GetTexBumpParameterivATI_remap_index }, + { 19160, TexBumpParameterfvATI_remap_index }, + { 21247, TexBumpParameterivATI_remap_index }, + { 16024, AlphaFragmentOp1ATI_remap_index }, + { 26403, AlphaFragmentOp2ATI_remap_index }, + { 25421, AlphaFragmentOp3ATI_remap_index }, + { 30747, BeginFragmentShaderATI_remap_index }, + { 32120, BindFragmentShaderATI_remap_index }, + { 24516, ColorFragmentOp1ATI_remap_index }, + { 4549, ColorFragmentOp2ATI_remap_index }, + { 32422, ColorFragmentOp3ATI_remap_index }, + { 5813, DeleteFragmentShaderATI_remap_index }, + { 34240, EndFragmentShaderATI_remap_index }, + { 33410, GenFragmentShadersATI_remap_index }, + { 26266, PassTexCoordATI_remap_index }, + { 7293, SampleMapATI_remap_index }, + { 27882, SetFragmentShaderConstantATI_remap_index }, + { 402, PointParameteriNV_remap_index }, + { 14604, PointParameterivNV_remap_index }, + { 29652, ActiveStencilFaceEXT_remap_index }, + { 28328, BindVertexArrayAPPLE_remap_index }, + { 2849, DeleteVertexArraysAPPLE_remap_index }, + { 18561, GenVertexArraysAPPLE_remap_index }, + { 24170, IsVertexArrayAPPLE_remap_index }, + { 858, GetProgramNamedParameterdvNV_remap_index }, + { 3716, GetProgramNamedParameterfvNV_remap_index }, + { 27802, ProgramNamedParameter4dNV_remap_index }, + { 14978, ProgramNamedParameter4dvNV_remap_index }, + { 9242, ProgramNamedParameter4fNV_remap_index }, + { 12148, ProgramNamedParameter4fvNV_remap_index }, + { 17409, PrimitiveRestartIndexNV_remap_index }, + { 31610, PrimitiveRestartNV_remap_index }, + { 25092, DepthBoundsEXT_remap_index }, + { 1183, BlendEquationSeparateEXT_remap_index }, + { 15179, BindFramebufferEXT_remap_index }, + { 26496, BindRenderbufferEXT_remap_index }, + { 10006, CheckFramebufferStatusEXT_remap_index }, + { 23421, DeleteFramebuffersEXT_remap_index }, + { 32679, DeleteRenderbuffersEXT_remap_index }, + { 13951, FramebufferRenderbufferEXT_remap_index }, + { 14140, FramebufferTexture1DEXT_remap_index }, + { 11942, FramebufferTexture2DEXT_remap_index }, + { 11562, FramebufferTexture3DEXT_remap_index }, + { 24036, GenFramebuffersEXT_remap_index }, + { 17959, GenRenderbuffersEXT_remap_index }, + { 7029, GenerateMipmapEXT_remap_index }, + { 22423, GetFramebufferAttachmentParameterivEXT_remap_index }, + { 33316, GetRenderbufferParameterivEXT_remap_index }, + { 21127, IsFramebufferEXT_remap_index }, + { 34139, IsRenderbufferEXT_remap_index }, + { 8517, RenderbufferStorageEXT_remap_index }, + { 734, BlitFramebufferEXT_remap_index }, + { 14764, BufferParameteriAPPLE_remap_index }, + { 19961, FlushMappedBufferRangeAPPLE_remap_index }, + { 1906, BindFragDataLocationEXT_remap_index }, + { 25205, GetFragDataLocationEXT_remap_index }, + { 11001, GetUniformuivEXT_remap_index }, + { 33490, GetVertexAttribIivEXT_remap_index }, + { 28859, GetVertexAttribIuivEXT_remap_index }, + { 12420, Uniform1uiEXT_remap_index }, + { 28773, Uniform1uivEXT_remap_index }, + { 22965, Uniform2uiEXT_remap_index }, + { 4513, Uniform2uivEXT_remap_index }, + { 30092, Uniform3uiEXT_remap_index }, + { 15125, Uniform3uivEXT_remap_index }, + { 3640, Uniform4uiEXT_remap_index }, + { 9018, Uniform4uivEXT_remap_index }, + { 18940, VertexAttribI1iEXT_remap_index }, + { 5287, VertexAttribI1ivEXT_remap_index }, + { 2628, VertexAttribI1uiEXT_remap_index }, + { 13221, VertexAttribI1uivEXT_remap_index }, { 81, VertexAttribI2iEXT_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 }, + { 24628, VertexAttribI2ivEXT_remap_index }, + { 5601, VertexAttribI2uiEXT_remap_index }, + { 4956, VertexAttribI2uivEXT_remap_index }, + { 27371, VertexAttribI3iEXT_remap_index }, + { 25830, VertexAttribI3ivEXT_remap_index }, + { 3494, VertexAttribI3uiEXT_remap_index }, + { 31313, VertexAttribI3uivEXT_remap_index }, + { 22674, VertexAttribI4bvEXT_remap_index }, + { 15057, VertexAttribI4iEXT_remap_index }, + { 32948, VertexAttribI4ivEXT_remap_index }, + { 13854, VertexAttribI4svEXT_remap_index }, + { 4043, VertexAttribI4ubvEXT_remap_index }, + { 16645, VertexAttribI4uiEXT_remap_index }, + { 5747, VertexAttribI4uivEXT_remap_index }, + { 11725, VertexAttribI4usvEXT_remap_index }, + { 19104, VertexAttribIPointerEXT_remap_index }, + { 3181, FramebufferTextureLayerEXT_remap_index }, + { 16999, ColorMaskIndexedEXT_remap_index }, + { 19540, DisableIndexedEXT_remap_index }, + { 27416, EnableIndexedEXT_remap_index }, + { 22378, GetBooleanIndexedvEXT_remap_index }, + { 11336, GetIntegerIndexedvEXT_remap_index }, + { 23497, IsEnabledIndexedEXT_remap_index }, + { 23397, ClearColorIiEXT_remap_index }, + { 3590, ClearColorIuiEXT_remap_index }, + { 10224, GetTexParameterIivEXT_remap_index }, + { 6229, GetTexParameterIuivEXT_remap_index }, + { 3137, TexParameterIivEXT_remap_index }, + { 27238, TexParameterIuivEXT_remap_index }, + { 4824, BeginConditionalRenderNV_remap_index }, + { 26216, EndConditionalRenderNV_remap_index }, + { 9653, BeginTransformFeedbackEXT_remap_index }, + { 19575, BindBufferBaseEXT_remap_index }, + { 19434, BindBufferOffsetEXT_remap_index }, + { 12637, BindBufferRangeEXT_remap_index }, + { 14679, EndTransformFeedbackEXT_remap_index }, + { 11199, GetTransformFeedbackVaryingEXT_remap_index }, + { 21432, TransformFeedbackVaryingsEXT_remap_index }, + { 30469, ProvokingVertexEXT_remap_index }, + { 11147, GetTexParameterPointervAPPLE_remap_index }, + { 5349, TextureRangeAPPLE_remap_index }, + { 12014, GetObjectParameterivAPPLE_remap_index }, + { 20554, ObjectPurgeableAPPLE_remap_index }, + { 6023, ObjectUnpurgeableAPPLE_remap_index }, + { 17781, ActiveProgramEXT_remap_index }, + { 17752, CreateShaderProgramEXT_remap_index }, + { 29437, UseShaderProgramEXT_remap_index }, + { 16952, TextureBarrierNV_remap_index }, + { 29678, StencilFuncSeparateATI_remap_index }, + { 5936, ProgramEnvParameters4fvEXT_remap_index }, + { 17646, ProgramLocalParameters4fvEXT_remap_index }, + { 14532, GetQueryObjecti64vEXT_remap_index }, + { 10749, GetQueryObjectui64vEXT_remap_index }, + { 24585, EGLImageTargetRenderbufferStorageOES_remap_index }, + { 12526, 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 */ - { 2655, _gloffset_BlendColor }, + { 2767, _gloffset_BlendColor }, /* from GL_EXT_blend_minmax */ - { 11285, _gloffset_BlendEquation }, + { 11619, _gloffset_BlendEquation }, /* from GL_EXT_color_subtable */ - { 17238, _gloffset_ColorSubTable }, - { 32109, _gloffset_CopyColorSubTable }, + { 17520, _gloffset_ColorSubTable }, + { 32611, _gloffset_CopyColorSubTable }, /* from GL_EXT_convolution */ - { 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 }, + { 296, _gloffset_ConvolutionFilter1D }, + { 2566, _gloffset_CopyConvolutionFilter1D }, + { 4293, _gloffset_GetConvolutionParameteriv }, + { 8866, _gloffset_ConvolutionFilter2D }, + { 9068, _gloffset_ConvolutionParameteriv }, + { 9528, _gloffset_ConvolutionParameterfv }, + { 21275, _gloffset_GetSeparableFilter }, + { 24860, _gloffset_SeparableFilter2D }, + { 25723, _gloffset_ConvolutionParameteri }, + { 25891, _gloffset_ConvolutionParameterf }, + { 27605, _gloffset_GetConvolutionParameterfv }, + { 28494, _gloffset_GetConvolutionFilter }, + { 31009, _gloffset_CopyConvolutionFilter2D }, /* from GL_EXT_copy_texture */ - { 15245, _gloffset_CopyTexSubImage3D }, - { 16925, _gloffset_CopyTexImage2D }, - { 24874, _gloffset_CopyTexImage1D }, - { 27686, _gloffset_CopyTexSubImage2D }, - { 30106, _gloffset_CopyTexSubImage1D }, + { 15538, _gloffset_CopyTexSubImage3D }, + { 17207, _gloffset_CopyTexImage2D }, + { 25331, _gloffset_CopyTexImage1D }, + { 28175, _gloffset_CopyTexSubImage2D }, + { 30647, _gloffset_CopyTexSubImage1D }, /* from GL_EXT_draw_range_elements */ - { 9566, _gloffset_DrawRangeElements }, + { 9865, _gloffset_DrawRangeElements }, /* from GL_EXT_histogram */ - { 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 }, + { 895, _gloffset_Histogram }, + { 3676, _gloffset_ResetHistogram }, + { 10370, _gloffset_GetMinmax }, + { 15872, _gloffset_GetHistogramParameterfv }, + { 25256, _gloffset_GetMinmaxParameteriv }, + { 27495, _gloffset_ResetMinmax }, + { 28391, _gloffset_GetHistogramParameteriv }, + { 29612, _gloffset_GetHistogram }, + { 32236, _gloffset_Minmax }, + { 33886, _gloffset_GetMinmaxParameterfv }, /* from GL_EXT_paletted_texture */ - { 8429, _gloffset_ColorTable }, - { 15425, _gloffset_GetColorTable }, - { 23318, _gloffset_GetColorTableParameterfv }, - { 25490, _gloffset_GetColorTableParameteriv }, + { 8728, _gloffset_ColorTable }, + { 15718, _gloffset_GetColorTable }, + { 23783, _gloffset_GetColorTableParameterfv }, + { 25947, _gloffset_GetColorTableParameteriv }, /* from GL_EXT_subtexture */ - { 7174, _gloffset_TexSubImage1D }, - { 10740, _gloffset_TexSubImage2D }, + { 7439, _gloffset_TexSubImage1D }, + { 11074, _gloffset_TexSubImage2D }, /* from GL_EXT_texture3D */ - { 1774, _gloffset_TexImage3D }, - { 23087, _gloffset_TexSubImage3D }, + { 1865, _gloffset_TexImage3D }, + { 23552, _gloffset_TexSubImage3D }, /* from GL_EXT_texture_object */ - { 3290, _gloffset_PrioritizeTextures }, - { 7623, _gloffset_AreTexturesResident }, - { 13694, _gloffset_GenTextures }, - { 15911, _gloffset_DeleteTextures }, - { 19859, _gloffset_IsTexture }, - { 30171, _gloffset_BindTexture }, + { 3444, _gloffset_PrioritizeTextures }, + { 7888, _gloffset_AreTexturesResident }, + { 14058, _gloffset_GenTextures }, + { 16231, _gloffset_DeleteTextures }, + { 20242, _gloffset_IsTexture }, + { 30712, _gloffset_BindTexture }, /* from GL_EXT_vertex_array */ - { 24575, _gloffset_ArrayElement }, - { 31283, _gloffset_GetPointerv }, - { 32868, _gloffset_DrawArrays }, + { 25032, _gloffset_ArrayElement }, + { 31824, _gloffset_GetPointerv }, + { 33437, _gloffset_DrawArrays }, /* from GL_SGI_color_table */ - { 7741, _gloffset_ColorTableParameteriv }, - { 8429, _gloffset_ColorTable }, - { 15425, _gloffset_GetColorTable }, - { 15535, _gloffset_CopyColorTable }, - { 19720, _gloffset_ColorTableParameterfv }, - { 23318, _gloffset_GetColorTableParameterfv }, - { 25490, _gloffset_GetColorTableParameteriv }, + { 8006, _gloffset_ColorTableParameteriv }, + { 8728, _gloffset_ColorTable }, + { 15718, _gloffset_GetColorTable }, + { 15828, _gloffset_CopyColorTable }, + { 20103, _gloffset_ColorTableParameterfv }, + { 23783, _gloffset_GetColorTableParameterfv }, + { 25947, _gloffset_GetColorTableParameteriv }, /* from GL_VERSION_1_3 */ - { 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 }, + { 464, _gloffset_MultiTexCoord3sARB }, + { 696, _gloffset_ActiveTextureARB }, + { 4451, _gloffset_MultiTexCoord1fvARB }, + { 6505, _gloffset_MultiTexCoord3dARB }, + { 6550, _gloffset_MultiTexCoord2iARB }, + { 6674, _gloffset_MultiTexCoord2svARB }, + { 8684, _gloffset_MultiTexCoord2fARB }, + { 10779, _gloffset_MultiTexCoord3fvARB }, + { 11381, _gloffset_MultiTexCoord4sARB }, + { 12062, _gloffset_MultiTexCoord2dvARB }, + { 12469, _gloffset_MultiTexCoord1svARB }, + { 12870, _gloffset_MultiTexCoord3svARB }, + { 12931, _gloffset_MultiTexCoord4iARB }, + { 13762, _gloffset_MultiTexCoord3iARB }, + { 14561, _gloffset_MultiTexCoord1dARB }, + { 14793, _gloffset_MultiTexCoord3dvARB }, + { 16072, _gloffset_MultiTexCoord3ivARB }, + { 16117, _gloffset_MultiTexCoord2sARB }, + { 17577, _gloffset_MultiTexCoord4ivARB }, + { 19743, _gloffset_ClientActiveTextureARB }, + { 22106, _gloffset_MultiTexCoord2dARB }, + { 22543, _gloffset_MultiTexCoord4dvARB }, + { 22920, _gloffset_MultiTexCoord4fvARB }, + { 23924, _gloffset_MultiTexCoord3fARB }, + { 26541, _gloffset_MultiTexCoord4dARB }, + { 26807, _gloffset_MultiTexCoord1sARB }, + { 27011, _gloffset_MultiTexCoord1dvARB }, + { 28019, _gloffset_MultiTexCoord1ivARB }, + { 28112, _gloffset_MultiTexCoord2ivARB }, + { 28451, _gloffset_MultiTexCoord1iARB }, + { 29887, _gloffset_MultiTexCoord4svARB }, + { 30511, _gloffset_MultiTexCoord1fARB }, + { 30774, _gloffset_MultiTexCoord4fARB }, + { 33271, _gloffset_MultiTexCoord2fvARB }, { -1, -1 } }; @@ -5464,7 +5568,14 @@ 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[] = { - { 9287, -1 }, /* TbufferMask3DFX */ + { 9586, -1 }, /* TbufferMask3DFX */ + { -1, -1 } +}; +#endif + +#if defined(need_GL_AMD_draw_buffers_blend) +/* functions defined in MESA_remap_table_functions are excluded */ +static const struct gl_function_remap GL_AMD_draw_buffers_blend_functions[] = { { -1, -1 } }; #endif @@ -5556,7 +5667,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[] = { - { 12500, -1 }, /* FramebufferTextureLayer */ + { 12834, -1 }, /* FramebufferTextureLayer */ { -1, -1 } }; #endif @@ -5577,11 +5688,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[] = { - { 3773, -1 }, /* MatrixIndexusvARB */ - { 13219, -1 }, /* MatrixIndexuivARB */ - { 14655, -1 }, /* MatrixIndexPointerARB */ - { 20126, -1 }, /* CurrentPaletteMatrixARB */ - { 23203, -1 }, /* MatrixIndexubvARB */ + { 3927, -1 }, /* MatrixIndexusvARB */ + { 13583, -1 }, /* MatrixIndexuivARB */ + { 14948, -1 }, /* MatrixIndexPointerARB */ + { 20509, -1 }, /* CurrentPaletteMatrixARB */ + { 23668, -1 }, /* MatrixIndexubvARB */ { -1, -1 } }; #endif @@ -5614,6 +5725,13 @@ static const struct gl_function_remap GL_ARB_provoking_vertex_functions[] = { }; #endif +#if defined(need_GL_ARB_robustness) +/* functions defined in MESA_remap_table_functions are excluded */ +static const struct gl_function_remap GL_ARB_robustness_functions[] = { + { -1, -1 } +}; +#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[] = { @@ -5672,16 +5790,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[] = { - { 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 */ + { 2508, -1 }, /* WeightubvARB */ + { 6917, -1 }, /* WeightivARB */ + { 11484, -1 }, /* WeightPointerARB */ + { 14318, -1 }, /* WeightfvARB */ + { 18120, -1 }, /* WeightbvARB */ + { 21739, -1 }, /* WeightusvARB */ + { 24786, -1 }, /* VertexBlendARB */ + { 30595, -1 }, /* WeightsvARB */ + { 32661, -1 }, /* WeightdvARB */ + { 33471, -1 }, /* WeightuivARB */ { -1, -1 } }; #endif @@ -5751,7 +5869,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[] = { - { 2655, _gloffset_BlendColor }, + { 2767, _gloffset_BlendColor }, { -1, -1 } }; #endif @@ -5772,15 +5890,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[] = { - { 11285, _gloffset_BlendEquation }, + { 11619, _gloffset_BlendEquation }, { -1, -1 } }; #endif #if defined(need_GL_EXT_color_subtable) static const struct gl_function_remap GL_EXT_color_subtable_functions[] = { - { 17238, _gloffset_ColorSubTable }, - { 32109, _gloffset_CopyColorSubTable }, + { 17520, _gloffset_ColorSubTable }, + { 32611, _gloffset_CopyColorSubTable }, { -1, -1 } }; #endif @@ -5794,66 +5912,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[] = { - { 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 }, + { 296, _gloffset_ConvolutionFilter1D }, + { 2566, _gloffset_CopyConvolutionFilter1D }, + { 4293, _gloffset_GetConvolutionParameteriv }, + { 8866, _gloffset_ConvolutionFilter2D }, + { 9068, _gloffset_ConvolutionParameteriv }, + { 9528, _gloffset_ConvolutionParameterfv }, + { 21275, _gloffset_GetSeparableFilter }, + { 24860, _gloffset_SeparableFilter2D }, + { 25723, _gloffset_ConvolutionParameteri }, + { 25891, _gloffset_ConvolutionParameterf }, + { 27605, _gloffset_GetConvolutionParameterfv }, + { 28494, _gloffset_GetConvolutionFilter }, + { 31009, _gloffset_CopyConvolutionFilter2D }, { -1, -1 } }; #endif #if defined(need_GL_EXT_coordinate_frame) static const struct gl_function_remap GL_EXT_coordinate_frame_functions[] = { - { 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 */ + { 10918, -1 }, /* TangentPointerEXT */ + { 12989, -1 }, /* Binormal3ivEXT */ + { 13715, -1 }, /* Tangent3sEXT */ + { 15013, -1 }, /* Tangent3fvEXT */ + { 19188, -1 }, /* Tangent3ivEXT */ + { 19415, -1 }, /* Tangent3dvEXT */ + { 20189, -1 }, /* Binormal3bvEXT */ + { 21328, -1 }, /* Binormal3dEXT */ + { 23600, -1 }, /* Tangent3fEXT */ + { 25795, -1 }, /* Binormal3sEXT */ + { 26337, -1 }, /* Tangent3dEXT */ + { 27284, -1 }, /* Binormal3svEXT */ + { 27917, -1 }, /* Binormal3fEXT */ + { 28825, -1 }, /* Binormal3dvEXT */ + { 30144, -1 }, /* Tangent3iEXT */ + { 31294, -1 }, /* Tangent3bvEXT */ + { 31859, -1 }, /* Tangent3bEXT */ + { 32384, -1 }, /* Binormal3fvEXT */ + { 33170, -1 }, /* BinormalPointerEXT */ + { 33651, -1 }, /* Tangent3svEXT */ + { 34088, -1 }, /* Binormal3bEXT */ + { 34265, -1 }, /* Binormal3iEXT */ { -1, -1 } }; #endif #if defined(need_GL_EXT_copy_texture) static const struct gl_function_remap GL_EXT_copy_texture_functions[] = { - { 15245, _gloffset_CopyTexSubImage3D }, - { 16925, _gloffset_CopyTexImage2D }, - { 24874, _gloffset_CopyTexImage1D }, - { 27686, _gloffset_CopyTexSubImage2D }, - { 30106, _gloffset_CopyTexSubImage1D }, + { 15538, _gloffset_CopyTexSubImage3D }, + { 17207, _gloffset_CopyTexImage2D }, + { 25331, _gloffset_CopyTexImage1D }, + { 28175, _gloffset_CopyTexSubImage2D }, + { 30647, _gloffset_CopyTexSubImage1D }, { -1, -1 } }; #endif #if defined(need_GL_EXT_cull_vertex) static const struct gl_function_remap GL_EXT_cull_vertex_functions[] = { - { 8918, -1 }, /* CullParameterdvEXT */ - { 11773, -1 }, /* CullParameterfvEXT */ + { 9217, -1 }, /* CullParameterdvEXT */ + { 12107, -1 }, /* CullParameterfvEXT */ { -1, -1 } }; #endif @@ -5881,7 +5999,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[] = { - { 9566, _gloffset_DrawRangeElements }, + { 9865, _gloffset_DrawRangeElements }, { -1, -1 } }; #endif @@ -5930,39 +6048,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[] = { - { 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 }, + { 895, _gloffset_Histogram }, + { 3676, _gloffset_ResetHistogram }, + { 10370, _gloffset_GetMinmax }, + { 15872, _gloffset_GetHistogramParameterfv }, + { 25256, _gloffset_GetMinmaxParameteriv }, + { 27495, _gloffset_ResetMinmax }, + { 28391, _gloffset_GetHistogramParameteriv }, + { 29612, _gloffset_GetHistogram }, + { 32236, _gloffset_Minmax }, + { 33886, _gloffset_GetMinmaxParameterfv }, { -1, -1 } }; #endif #if defined(need_GL_EXT_index_func) static const struct gl_function_remap GL_EXT_index_func_functions[] = { - { 11559, -1 }, /* IndexFuncEXT */ + { 11893, -1 }, /* IndexFuncEXT */ { -1, -1 } }; #endif #if defined(need_GL_EXT_index_material) static const struct gl_function_remap GL_EXT_index_material_functions[] = { - { 21443, -1 }, /* IndexMaterialEXT */ + { 21861, -1 }, /* IndexMaterialEXT */ { -1, -1 } }; #endif #if defined(need_GL_EXT_light_texture) static const struct gl_function_remap GL_EXT_light_texture_functions[] = { - { 26847, -1 }, /* ApplyTextureEXT */ - { 26992, -1 }, /* TextureMaterialEXT */ - { 27017, -1 }, /* TextureLightEXT */ + { 27304, -1 }, /* ApplyTextureEXT */ + { 27449, -1 }, /* TextureMaterialEXT */ + { 27474, -1 }, /* TextureLightEXT */ { -1, -1 } }; #endif @@ -5983,20 +6101,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[] = { - { 8429, _gloffset_ColorTable }, - { 15425, _gloffset_GetColorTable }, - { 23318, _gloffset_GetColorTableParameterfv }, - { 25490, _gloffset_GetColorTableParameteriv }, + { 8728, _gloffset_ColorTable }, + { 15718, _gloffset_GetColorTable }, + { 23783, _gloffset_GetColorTableParameterfv }, + { 25947, _gloffset_GetColorTableParameteriv }, { -1, -1 } }; #endif #if defined(need_GL_EXT_pixel_transform) static const struct gl_function_remap GL_EXT_pixel_transform_functions[] = { - { 22090, -1 }, /* PixelTransformParameterfEXT */ - { 22170, -1 }, /* PixelTransformParameteriEXT */ - { 31033, -1 }, /* PixelTransformParameterfvEXT */ - { 32565, -1 }, /* PixelTransformParameterivEXT */ + { 22508, -1 }, /* PixelTransformParameterfEXT */ + { 22588, -1 }, /* PixelTransformParameteriEXT */ + { 31574, -1 }, /* PixelTransformParameterfvEXT */ + { 33134, -1 }, /* PixelTransformParameterivEXT */ { -1, -1 } }; #endif @@ -6045,16 +6163,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[] = { - { 7174, _gloffset_TexSubImage1D }, - { 10740, _gloffset_TexSubImage2D }, + { 7439, _gloffset_TexSubImage1D }, + { 11074, _gloffset_TexSubImage2D }, { -1, -1 } }; #endif #if defined(need_GL_EXT_texture3D) static const struct gl_function_remap GL_EXT_texture3D_functions[] = { - { 1774, _gloffset_TexImage3D }, - { 23087, _gloffset_TexSubImage3D }, + { 1865, _gloffset_TexImage3D }, + { 23552, _gloffset_TexSubImage3D }, { -1, -1 } }; #endif @@ -6075,19 +6193,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[] = { - { 3290, _gloffset_PrioritizeTextures }, - { 7623, _gloffset_AreTexturesResident }, - { 13694, _gloffset_GenTextures }, - { 15911, _gloffset_DeleteTextures }, - { 19859, _gloffset_IsTexture }, - { 30171, _gloffset_BindTexture }, + { 3444, _gloffset_PrioritizeTextures }, + { 7888, _gloffset_AreTexturesResident }, + { 14058, _gloffset_GenTextures }, + { 16231, _gloffset_DeleteTextures }, + { 20242, _gloffset_IsTexture }, + { 30712, _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[] = { - { 13936, -1 }, /* TextureNormalEXT */ + { 14268, -1 }, /* TextureNormalEXT */ { -1, -1 } }; #endif @@ -6109,30 +6227,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[] = { - { 24575, _gloffset_ArrayElement }, - { 31283, _gloffset_GetPointerv }, - { 32868, _gloffset_DrawArrays }, + { 25032, _gloffset_ArrayElement }, + { 31824, _gloffset_GetPointerv }, + { 33437, _gloffset_DrawArrays }, { -1, -1 } }; #endif #if defined(need_GL_EXT_vertex_weighting) static const struct gl_function_remap GL_EXT_vertex_weighting_functions[] = { - { 19907, -1 }, /* VertexWeightfvEXT */ - { 27371, -1 }, /* VertexWeightfEXT */ - { 29040, -1 }, /* VertexWeightPointerEXT */ + { 20290, -1 }, /* VertexWeightfvEXT */ + { 27860, -1 }, /* VertexWeightfEXT */ + { 29581, -1 }, /* VertexWeightPointerEXT */ { -1, -1 } }; #endif #if defined(need_GL_HP_image_transform) static const struct gl_function_remap GL_HP_image_transform_functions[] = { - { 2327, -1 }, /* GetImageTransformParameterfvHP */ - { 3739, -1 }, /* ImageTransformParameterfHP */ - { 10278, -1 }, /* ImageTransformParameterfvHP */ - { 12020, -1 }, /* ImageTransformParameteriHP */ - { 12390, -1 }, /* GetImageTransformParameterivHP */ - { 19971, -1 }, /* ImageTransformParameterivHP */ + { 2439, -1 }, /* GetImageTransformParameterfvHP */ + { 3893, -1 }, /* ImageTransformParameterfHP */ + { 10612, -1 }, /* ImageTransformParameterfvHP */ + { 12354, -1 }, /* ImageTransformParameteriHP */ + { 12724, -1 }, /* GetImageTransformParameterivHP */ + { 20354, -1 }, /* ImageTransformParameterivHP */ { -1, -1 } }; #endif @@ -6146,14 +6264,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[] = { - { 4400, -1 }, /* SecondaryColorPointerListIBM */ - { 6106, -1 }, /* NormalPointerListIBM */ - { 7797, -1 }, /* FogCoordPointerListIBM */ - { 8104, -1 }, /* VertexPointerListIBM */ - { 12274, -1 }, /* ColorPointerListIBM */ - { 13458, -1 }, /* TexCoordPointerListIBM */ - { 13958, -1 }, /* IndexPointerListIBM */ - { 33184, -1 }, /* EdgeFlagPointerListIBM */ + { 4583, -1 }, /* SecondaryColorPointerListIBM */ + { 6371, -1 }, /* NormalPointerListIBM */ + { 8062, -1 }, /* FogCoordPointerListIBM */ + { 8403, -1 }, /* VertexPointerListIBM */ + { 12608, -1 }, /* ColorPointerListIBM */ + { 13822, -1 }, /* TexCoordPointerListIBM */ + { 14290, -1 }, /* IndexPointerListIBM */ + { 33829, -1 }, /* EdgeFlagPointerListIBM */ { -1, -1 } }; #endif @@ -6167,10 +6285,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[] = { - { 12798, -1 }, /* VertexPointervINTEL */ - { 15672, -1 }, /* ColorPointervINTEL */ - { 30442, -1 }, /* NormalPointervINTEL */ - { 30965, -1 }, /* TexCoordPointervINTEL */ + { 13162, -1 }, /* VertexPointervINTEL */ + { 15965, -1 }, /* ColorPointervINTEL */ + { 30983, -1 }, /* NormalPointervINTEL */ + { 31506, -1 }, /* TexCoordPointervINTEL */ { -1, -1 } }; #endif @@ -6184,10 +6302,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[] = { - { 1638, -1 }, /* GetDebugLogLengthMESA */ - { 3461, -1 }, /* ClearDebugLogMESA */ - { 4561, -1 }, /* GetDebugLogMESA */ - { 31476, -1 }, /* CreateDebugObjectMESA */ + { 1729, -1 }, /* GetDebugLogLengthMESA */ + { 3615, -1 }, /* ClearDebugLogMESA */ + { 4768, -1 }, /* GetDebugLogMESA */ + { 32017, -1 }, /* CreateDebugObjectMESA */ { -1, -1 } }; #endif @@ -6208,15 +6326,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[] = { - { 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 */ + { 7101, -1 }, /* GetMapAttribParameterivNV */ + { 8834, -1 }, /* MapControlPointsNV */ + { 8933, -1 }, /* MapParameterfvNV */ + { 11057, -1 }, /* EvalMapsNV */ + { 17718, -1 }, /* GetMapAttribParameterfvNV */ + { 17935, -1 }, /* MapParameterivNV */ + { 25646, -1 }, /* GetMapParameterivNV */ + { 26189, -1 }, /* GetMapParameterfvNV */ + { 30298, -1 }, /* GetMapControlPointsNV */ { -1, -1 } }; #endif @@ -6258,8 +6376,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[] = { - { 16064, -1 }, /* CombinerStageParameterfvNV */ - { 16460, -1 }, /* GetCombinerStageParameterfvNV */ + { 16384, -1 }, /* CombinerStageParameterfvNV */ + { 16780, -1 }, /* GetCombinerStageParameterfvNV */ { -1, -1 } }; #endif @@ -6294,23 +6412,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[] = { - { 8755, -1 }, /* HintPGI */ + { 9054, -1 }, /* HintPGI */ { -1, -1 } }; #endif #if defined(need_GL_SGIS_detail_texture) static const struct gl_function_remap GL_SGIS_detail_texture_functions[] = { - { 16433, -1 }, /* GetDetailTexFuncSGIS */ - { 16870, -1 }, /* DetailTexFuncSGIS */ + { 16753, -1 }, /* GetDetailTexFuncSGIS */ + { 17152, -1 }, /* DetailTexFuncSGIS */ { -1, -1 } }; #endif #if defined(need_GL_SGIS_fog_function) static const struct gl_function_remap GL_SGIS_fog_function_functions[] = { - { 27668, -1 }, /* FogFuncSGIS */ - { 28389, -1 }, /* GetFogFuncSGIS */ + { 28157, -1 }, /* FogFuncSGIS */ + { 28930, -1 }, /* GetFogFuncSGIS */ { -1, -1 } }; #endif @@ -6338,112 +6456,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[] = { - { 6897, -1 }, /* GetSharpenTexFuncSGIS */ - { 22455, -1 }, /* SharpenTexFuncSGIS */ + { 7162, -1 }, /* GetSharpenTexFuncSGIS */ + { 22894, -1 }, /* SharpenTexFuncSGIS */ { -1, -1 } }; #endif #if defined(need_GL_SGIS_texture4D) static const struct gl_function_remap GL_SGIS_texture4D_functions[] = { - { 1010, -1 }, /* TexImage4DSGIS */ - { 15980, -1 }, /* TexSubImage4DSGIS */ + { 1034, -1 }, /* TexImage4DSGIS */ + { 16300, -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[] = { - { 15378, -1 }, /* TextureColorMaskSGIS */ + { 15671, -1 }, /* TextureColorMaskSGIS */ { -1, -1 } }; #endif #if defined(need_GL_SGIS_texture_filter4) static const struct gl_function_remap GL_SGIS_texture_filter4_functions[] = { - { 7074, -1 }, /* GetTexFilterFuncSGIS */ - { 16606, -1 }, /* TexFilterFuncSGIS */ + { 7339, -1 }, /* GetTexFilterFuncSGIS */ + { 16926, -1 }, /* TexFilterFuncSGIS */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_async) static const struct gl_function_remap GL_SGIX_async_functions[] = { - { 3387, -1 }, /* AsyncMarkerSGIX */ - { 4540, -1 }, /* FinishAsyncSGIX */ - { 5516, -1 }, /* PollAsyncSGIX */ - { 22664, -1 }, /* DeleteAsyncMarkersSGIX */ - { 22719, -1 }, /* IsAsyncMarkerSGIX */ - { 32981, -1 }, /* GenAsyncMarkersSGIX */ + { 3541, -1 }, /* AsyncMarkerSGIX */ + { 4722, -1 }, /* FinishAsyncSGIX */ + { 5794, -1 }, /* PollAsyncSGIX */ + { 23103, -1 }, /* DeleteAsyncMarkersSGIX */ + { 23158, -1 }, /* IsAsyncMarkerSGIX */ + { 33626, -1 }, /* GenAsyncMarkersSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_flush_raster) static const struct gl_function_remap GL_SGIX_flush_raster_functions[] = { - { 7451, -1 }, /* FlushRasterSGIX */ + { 7716, -1 }, /* FlushRasterSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_fragment_lighting) static const struct gl_function_remap GL_SGIX_fragment_lighting_functions[] = { - { 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 */ + { 2737, -1 }, /* FragmentMaterialfvSGIX */ + { 5698, -1 }, /* FragmentLightiSGIX */ + { 8470, -1 }, /* FragmentMaterialfSGIX */ + { 8607, -1 }, /* GetFragmentLightivSGIX */ + { 9480, -1 }, /* FragmentLightModeliSGIX */ + { 11120, -1 }, /* FragmentLightivSGIX */ + { 11427, -1 }, /* GetFragmentMaterialivSGIX */ + { 16693, -1 }, /* GetFragmentMaterialfvSGIX */ + { 20159, -1 }, /* FragmentLightModelfSGIX */ + { 20477, -1 }, /* FragmentColorMaterialSGIX */ + { 20894, -1 }, /* FragmentMaterialiSGIX */ + { 22189, -1 }, /* LightEnviSGIX */ + { 23875, -1 }, /* FragmentLightModelfvSGIX */ + { 24210, -1 }, /* FragmentLightfvSGIX */ + { 29314, -1 }, /* FragmentLightModelivSGIX */ + { 29463, -1 }, /* FragmentLightfSGIX */ + { 32354, -1 }, /* GetFragmentLightfvSGIX */ + { 34109, -1 }, /* FragmentMaterialivSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_framezoom) static const struct gl_function_remap GL_SGIX_framezoom_functions[] = { - { 22742, -1 }, /* FrameZoomSGIX */ + { 23181, -1 }, /* FrameZoomSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_igloo_interface) static const struct gl_function_remap GL_SGIX_igloo_interface_functions[] = { - { 29230, -1 }, /* IglooInterfaceSGIX */ + { 29771, -1 }, /* IglooInterfaceSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_instruments) static const struct gl_function_remap GL_SGIX_instruments_functions[] = { - { 2805, -1 }, /* ReadInstrumentsSGIX */ - { 6670, -1 }, /* PollInstrumentsSGIX */ - { 10644, -1 }, /* GetInstrumentsSGIX */ - { 13056, -1 }, /* StartInstrumentsSGIX */ - { 16098, -1 }, /* StopInstrumentsSGIX */ - { 18051, -1 }, /* InstrumentsBufferSGIX */ + { 2917, -1 }, /* ReadInstrumentsSGIX */ + { 6935, -1 }, /* PollInstrumentsSGIX */ + { 10978, -1 }, /* GetInstrumentsSGIX */ + { 13420, -1 }, /* StartInstrumentsSGIX */ + { 16418, -1 }, /* StopInstrumentsSGIX */ + { 18383, -1 }, /* InstrumentsBufferSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_list_priority) static const struct gl_function_remap GL_SGIX_list_priority_functions[] = { - { 1241, -1 }, /* ListParameterfSGIX */ - { 3089, -1 }, /* GetListParameterfvSGIX */ - { 17942, -1 }, /* ListParameteriSGIX */ - { 19008, -1 }, /* ListParameterfvSGIX */ - { 21177, -1 }, /* ListParameterivSGIX */ - { 33025, -1 }, /* GetListParameterivSGIX */ + { 1265, -1 }, /* ListParameterfSGIX */ + { 3243, -1 }, /* GetListParameterfvSGIX */ + { 18248, -1 }, /* ListParameteriSGIX */ + { 19365, -1 }, /* ListParameterfvSGIX */ + { 21560, -1 }, /* ListParameterivSGIX */ + { 33670, -1 }, /* GetListParameterivSGIX */ { -1, -1 } }; #endif @@ -6457,134 +6575,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[] = { - { 3685, -1 }, /* LoadIdentityDeformationMapSGIX */ - { 16198, -1 }, /* DeformSGIX */ - { 24687, -1 }, /* DeformationMap3fSGIX */ - { 31740, -1 }, /* DeformationMap3dSGIX */ + { 2959, -1 }, /* DeformationMap3dSGIX */ + { 3839, -1 }, /* LoadIdentityDeformationMapSGIX */ + { 16518, -1 }, /* DeformSGIX */ + { 25144, -1 }, /* DeformationMap3fSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_reference_plane) static const struct gl_function_remap GL_SGIX_reference_plane_functions[] = { - { 14929, -1 }, /* ReferencePlaneSGIX */ + { 15222, -1 }, /* ReferencePlaneSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_sprite) static const struct gl_function_remap GL_SGIX_sprite_functions[] = { - { 9679, -1 }, /* SpriteParameterfvSGIX */ - { 20966, -1 }, /* SpriteParameteriSGIX */ - { 27072, -1 }, /* SpriteParameterfSGIX */ - { 29900, -1 }, /* SpriteParameterivSGIX */ + { 9978, -1 }, /* SpriteParameterfvSGIX */ + { 21349, -1 }, /* SpriteParameteriSGIX */ + { 27529, -1 }, /* SpriteParameterfSGIX */ + { 30441, -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[] = { - { 21025, -1 }, /* TagSampleBufferSGIX */ + { 21408, -1 }, /* TagSampleBufferSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGI_color_table) static const struct gl_function_remap GL_SGI_color_table_functions[] = { - { 7741, _gloffset_ColorTableParameteriv }, - { 8429, _gloffset_ColorTable }, - { 15425, _gloffset_GetColorTable }, - { 15535, _gloffset_CopyColorTable }, - { 19720, _gloffset_ColorTableParameterfv }, - { 23318, _gloffset_GetColorTableParameterfv }, - { 25490, _gloffset_GetColorTableParameteriv }, + { 8006, _gloffset_ColorTableParameteriv }, + { 8728, _gloffset_ColorTable }, + { 15718, _gloffset_GetColorTable }, + { 15828, _gloffset_CopyColorTable }, + { 20103, _gloffset_ColorTableParameterfv }, + { 23783, _gloffset_GetColorTableParameterfv }, + { 25947, _gloffset_GetColorTableParameteriv }, { -1, -1 } }; #endif #if defined(need_GL_SUNX_constant_data) static const struct gl_function_remap GL_SUNX_constant_data_functions[] = { - { 31830, -1 }, /* FinishTextureSUNX */ + { 32332, -1 }, /* FinishTextureSUNX */ { -1, -1 } }; #endif #if defined(need_GL_SUN_global_alpha) static const struct gl_function_remap GL_SUN_global_alpha_functions[] = { - { 3408, -1 }, /* GlobalAlphaFactorubSUN */ - { 4868, -1 }, /* GlobalAlphaFactoriSUN */ - { 6695, -1 }, /* GlobalAlphaFactordSUN */ - { 9763, -1 }, /* GlobalAlphaFactoruiSUN */ - { 10235, -1 }, /* GlobalAlphaFactorbSUN */ - { 13371, -1 }, /* GlobalAlphaFactorfSUN */ - { 13535, -1 }, /* GlobalAlphaFactorusSUN */ - { 23005, -1 }, /* GlobalAlphaFactorsSUN */ + { 3562, -1 }, /* GlobalAlphaFactorubSUN */ + { 5075, -1 }, /* GlobalAlphaFactoriSUN */ + { 6960, -1 }, /* GlobalAlphaFactordSUN */ + { 10062, -1 }, /* GlobalAlphaFactoruiSUN */ + { 10569, -1 }, /* GlobalAlphaFactorbSUN */ + { 13735, -1 }, /* GlobalAlphaFactorfSUN */ + { 13899, -1 }, /* GlobalAlphaFactorusSUN */ + { 23470, -1 }, /* GlobalAlphaFactorsSUN */ { -1, -1 } }; #endif #if defined(need_GL_SUN_mesh_array) static const struct gl_function_remap GL_SUN_mesh_array_functions[] = { - { 29691, -1 }, /* DrawMeshArraysSUN */ + { 30232, -1 }, /* DrawMeshArraysSUN */ { -1, -1 } }; #endif #if defined(need_GL_SUN_triangle_list) static const struct gl_function_remap GL_SUN_triangle_list_functions[] = { - { 4514, -1 }, /* ReplacementCodeubSUN */ - { 6454, -1 }, /* ReplacementCodeubvSUN */ - { 19441, -1 }, /* ReplacementCodeusvSUN */ - { 19629, -1 }, /* ReplacementCodePointerSUN */ - { 21835, -1 }, /* ReplacementCodeuiSUN */ - { 22693, -1 }, /* ReplacementCodeusSUN */ - { 30357, -1 }, /* ReplacementCodeuivSUN */ + { 4696, -1 }, /* ReplacementCodeubSUN */ + { 6719, -1 }, /* ReplacementCodeubvSUN */ + { 19824, -1 }, /* ReplacementCodeusvSUN */ + { 20012, -1 }, /* ReplacementCodePointerSUN */ + { 22253, -1 }, /* ReplacementCodeuiSUN */ + { 23132, -1 }, /* ReplacementCodeusSUN */ + { 30898, -1 }, /* ReplacementCodeuivSUN */ { -1, -1 } }; #endif #if defined(need_GL_SUN_vertex) static const struct gl_function_remap GL_SUN_vertex_functions[] = { - { 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 */ + { 1139, -1 }, /* ReplacementCodeuiColor3fVertex3fvSUN */ + { 1337, -1 }, /* TexCoord4fColor4fNormal3fVertex4fvSUN */ + { 1591, -1 }, /* TexCoord2fColor4ubVertex3fvSUN */ + { 1960, -1 }, /* ReplacementCodeuiVertex3fvSUN */ + { 2094, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fvSUN */ + { 2673, -1 }, /* ReplacementCodeuiNormal3fVertex3fSUN */ + { 3052, -1 }, /* Color4ubVertex3fvSUN */ + { 4880, -1 }, /* Color4ubVertex3fSUN */ + { 5003, -1 }, /* TexCoord2fVertex3fSUN */ + { 5421, -1 }, /* TexCoord2fColor4fNormal3fVertex3fSUN */ + { 5898, -1 }, /* TexCoord2fNormal3fVertex3fvSUN */ + { 6614, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN */ + { 7394, -1 }, /* ReplacementCodeuiColor4ubVertex3fvSUN */ + { 7753, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fSUN */ + { 9279, -1 }, /* Color3fVertex3fSUN */ + { 10478, -1 }, /* Color3fVertex3fvSUN */ + { 10943, -1 }, /* Color4fNormal3fVertex3fvSUN */ + { 11772, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN */ + { 13283, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fvSUN */ + { 14838, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN */ + { 15364, -1 }, /* TexCoord2fColor3fVertex3fSUN */ + { 16443, -1 }, /* TexCoord4fColor4fNormal3fVertex4fSUN */ + { 16885, -1 }, /* Color4ubVertex2fvSUN */ + { 17177, -1 }, /* Normal3fVertex3fSUN */ + { 18324, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fSUN */ + { 18676, -1 }, /* TexCoord2fColor4fNormal3fVertex3fvSUN */ + { 18983, -1 }, /* TexCoord2fNormal3fVertex3fSUN */ + { 19617, -1 }, /* TexCoord2fVertex3fvSUN */ + { 20447, -1 }, /* Color4ubVertex2fSUN */ + { 20685, -1 }, /* ReplacementCodeuiColor4ubVertex3fSUN */ + { 22719, -1 }, /* TexCoord2fColor4ubVertex3fSUN */ + { 23200, -1 }, /* Normal3fVertex3fvSUN */ + { 23692, -1 }, /* Color4fNormal3fVertex3fSUN */ + { 24693, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN */ + { 26850, -1 }, /* ReplacementCodeuiColor3fVertex3fSUN */ + { 28273, -1 }, /* TexCoord4fVertex4fSUN */ + { 28719, -1 }, /* TexCoord2fColor3fVertex3fvSUN */ + { 29158, -1 }, /* ReplacementCodeuiNormal3fVertex3fvSUN */ + { 29285, -1 }, /* TexCoord4fVertex4fvSUN */ + { 30019, -1 }, /* ReplacementCodeuiVertex3fSUN */ { -1, -1 } }; #endif @@ -6592,40 +6710,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[] = { - { 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 }, + { 464, _gloffset_MultiTexCoord3sARB }, + { 696, _gloffset_ActiveTextureARB }, + { 4451, _gloffset_MultiTexCoord1fvARB }, + { 6505, _gloffset_MultiTexCoord3dARB }, + { 6550, _gloffset_MultiTexCoord2iARB }, + { 6674, _gloffset_MultiTexCoord2svARB }, + { 8684, _gloffset_MultiTexCoord2fARB }, + { 10779, _gloffset_MultiTexCoord3fvARB }, + { 11381, _gloffset_MultiTexCoord4sARB }, + { 12062, _gloffset_MultiTexCoord2dvARB }, + { 12469, _gloffset_MultiTexCoord1svARB }, + { 12870, _gloffset_MultiTexCoord3svARB }, + { 12931, _gloffset_MultiTexCoord4iARB }, + { 13762, _gloffset_MultiTexCoord3iARB }, + { 14561, _gloffset_MultiTexCoord1dARB }, + { 14793, _gloffset_MultiTexCoord3dvARB }, + { 16072, _gloffset_MultiTexCoord3ivARB }, + { 16117, _gloffset_MultiTexCoord2sARB }, + { 17577, _gloffset_MultiTexCoord4ivARB }, + { 19743, _gloffset_ClientActiveTextureARB }, + { 22106, _gloffset_MultiTexCoord2dARB }, + { 22543, _gloffset_MultiTexCoord4dvARB }, + { 22920, _gloffset_MultiTexCoord4fvARB }, + { 23924, _gloffset_MultiTexCoord3fARB }, + { 26541, _gloffset_MultiTexCoord4dARB }, + { 26807, _gloffset_MultiTexCoord1sARB }, + { 27011, _gloffset_MultiTexCoord1dvARB }, + { 28019, _gloffset_MultiTexCoord1ivARB }, + { 28112, _gloffset_MultiTexCoord2ivARB }, + { 28451, _gloffset_MultiTexCoord1iARB }, + { 29887, _gloffset_MultiTexCoord4svARB }, + { 30511, _gloffset_MultiTexCoord1fARB }, + { 30774, _gloffset_MultiTexCoord4fARB }, + { 33271, _gloffset_MultiTexCoord2fvARB }, { -1, -1 } }; #endif diff --git a/src/mesa/main/restart.c b/src/mesa/main/restart.c deleted file mode 100644 index ff366496f0a..00000000000 --- a/src/mesa/main/restart.c +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 7.9 - * - * Copyright (C) 2010 VMware, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - - -#include "glheader.h" -#include "imports.h" -#include "context.h" -#include "restart.h" - - -/** - */ -void GLAPIENTRY -_mesa_PrimitiveRestart(void) -{ - GET_CURRENT_CONTEXT(ctx); - - if (ctx->VersionMajor * 10 + ctx->VersionMinor < 31) { - _mesa_error(ctx, GL_INVALID_OPERATION, "glPrimitiveRestart()"); - return; - } - - /* XXX call into vbo module */ -} - - - -/** - */ -void GLAPIENTRY -_mesa_PrimitiveRestartIndex(GLuint index) -{ - GET_CURRENT_CONTEXT(ctx); - - if (ctx->VersionMajor * 10 + ctx->VersionMinor < 31) { - _mesa_error(ctx, GL_INVALID_OPERATION, "glPrimitiveRestartIndex()"); - return; - } - - ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - - FLUSH_VERTICES(ctx, _NEW_TRANSFORM); - - ctx->Array.RestartIndex = index; -} diff --git a/src/mesa/main/restart.h b/src/mesa/main/restart.h deleted file mode 100644 index 25f58f24c35..00000000000 --- a/src/mesa/main/restart.h +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Mesa 3-D graphics library - * Version: 7.9 - * - * Copyright (C) 2010 VMware, Inc. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - - -#ifndef RESTART_H -#define RESTART_H - -#include "glheader.h" - -extern void GLAPIENTRY -_mesa_PrimitiveRestart(void); - - -extern void GLAPIENTRY -_mesa_PrimitiveRestartIndex(GLuint index); - - -#endif diff --git a/src/mesa/main/samplerobj.c b/src/mesa/main/samplerobj.c index 4a28c917cd7..229267f8c94 100644 --- a/src/mesa/main/samplerobj.c +++ b/src/mesa/main/samplerobj.c @@ -133,6 +133,7 @@ _mesa_init_sampler_object(struct gl_sampler_object *sampObj, GLuint name) sampObj->CompareFunc = GL_LEQUAL; sampObj->CompareFailValue = 0.0; sampObj->sRGBDecode = GL_FALSE; + sampObj->CubeMapSeamless = GL_FALSE; sampObj->DepthMode = 0; } @@ -567,6 +568,25 @@ set_sampler_max_anisotropy(struct gl_context *ctx, } +static GLuint +set_sampler_cube_map_seamless(struct gl_context *ctx, + struct gl_sampler_object *samp, GLboolean param) +{ + if (!ctx->Extensions.AMD_seamless_cubemap_per_texture) + return INVALID_PNAME; + + if (samp->CubeMapSeamless == param) + return GL_FALSE; + + if (param != GL_TRUE && param != GL_FALSE) + return INVALID_VALUE; + + flush(ctx); + samp->CubeMapSeamless = param; + return GL_TRUE; +} + + static void GLAPIENTRY _mesa_SamplerParameteri(GLuint sampler, GLenum pname, GLint param) { @@ -615,6 +635,9 @@ _mesa_SamplerParameteri(GLuint sampler, GLenum pname, GLint param) case GL_TEXTURE_MAX_ANISOTROPY_EXT: res = set_sampler_max_anisotropy(ctx, sampObj, (GLfloat) param); break; + case GL_TEXTURE_CUBE_MAP_SEAMLESS: + res = set_sampler_cube_map_seamless(ctx, sampObj, param); + break; case GL_TEXTURE_BORDER_COLOR: /* fall-through */ default: @@ -696,6 +719,9 @@ _mesa_SamplerParameterf(GLuint sampler, GLenum pname, GLfloat param) case GL_TEXTURE_MAX_ANISOTROPY_EXT: res = set_sampler_max_anisotropy(ctx, sampObj, param); break; + case GL_TEXTURE_CUBE_MAP_SEAMLESS: + res = set_sampler_cube_map_seamless(ctx, sampObj, (GLboolean) param); + break; case GL_TEXTURE_BORDER_COLOR: /* fall-through */ default: @@ -774,6 +800,9 @@ _mesa_SamplerParameteriv(GLuint sampler, GLenum pname, const GLint *params) case GL_TEXTURE_MAX_ANISOTROPY_EXT: res = set_sampler_max_anisotropy(ctx, sampObj, (GLfloat) params[0]); break; + case GL_TEXTURE_CUBE_MAP_SEAMLESS: + res = set_sampler_cube_map_seamless(ctx, sampObj, params[0]); + break; case GL_TEXTURE_BORDER_COLOR: { GLfloat c[4]; @@ -862,6 +891,9 @@ _mesa_SamplerParameterfv(GLuint sampler, GLenum pname, const GLfloat *params) case GL_TEXTURE_MAX_ANISOTROPY_EXT: res = set_sampler_max_anisotropy(ctx, sampObj, params[0]); break; + case GL_TEXTURE_CUBE_MAP_SEAMLESS: + res = set_sampler_cube_map_seamless(ctx, sampObj, (GLboolean) params[0]); + break; case GL_TEXTURE_BORDER_COLOR: res = set_sampler_border_colorf(ctx, sampObj, params); break; @@ -941,6 +973,9 @@ _mesa_SamplerParameterIiv(GLuint sampler, GLenum pname, const GLint *params) case GL_TEXTURE_MAX_ANISOTROPY_EXT: res = set_sampler_max_anisotropy(ctx, sampObj, (GLfloat) params[0]); break; + case GL_TEXTURE_CUBE_MAP_SEAMLESS: + res = set_sampler_cube_map_seamless(ctx, sampObj, params[0]); + break; case GL_TEXTURE_BORDER_COLOR: res = set_sampler_border_colori(ctx, sampObj, params); break; @@ -1021,6 +1056,9 @@ _mesa_SamplerParameterIuiv(GLuint sampler, GLenum pname, const GLuint *params) case GL_TEXTURE_MAX_ANISOTROPY_EXT: res = set_sampler_max_anisotropy(ctx, sampObj, (GLfloat) params[0]); break; + case GL_TEXTURE_CUBE_MAP_SEAMLESS: + res = set_sampler_cube_map_seamless(ctx, sampObj, params[0]); + break; case GL_TEXTURE_BORDER_COLOR: res = set_sampler_border_colorui(ctx, sampObj, params); break; @@ -1110,6 +1148,11 @@ _mesa_GetSamplerParameteriv(GLuint sampler, GLenum pname, GLint *params) params[2] = FLOAT_TO_INT(sampObj->BorderColor.f[2]); params[3] = FLOAT_TO_INT(sampObj->BorderColor.f[3]); break; + case GL_TEXTURE_CUBE_MAP_SEAMLESS: + if (!ctx->Extensions.AMD_seamless_cubemap_per_texture) + goto invalid_pname; + *params = sampObj->CubeMapSeamless; + break; default: goto invalid_pname; } @@ -1178,6 +1221,11 @@ _mesa_GetSamplerParameterfv(GLuint sampler, GLenum pname, GLfloat *params) params[2] = sampObj->BorderColor.f[2]; params[3] = sampObj->BorderColor.f[3]; break; + case GL_TEXTURE_CUBE_MAP_SEAMLESS: + if (!ctx->Extensions.AMD_seamless_cubemap_per_texture) + goto invalid_pname; + *params = (GLfloat) sampObj->CubeMapSeamless; + break; default: goto invalid_pname; } @@ -1247,6 +1295,11 @@ _mesa_GetSamplerParameterIiv(GLuint sampler, GLenum pname, GLint *params) params[2] = sampObj->BorderColor.i[2]; params[3] = sampObj->BorderColor.i[3]; break; + case GL_TEXTURE_CUBE_MAP_SEAMLESS: + if (!ctx->Extensions.AMD_seamless_cubemap_per_texture) + goto invalid_pname; + *params = sampObj->CubeMapSeamless; + break; default: goto invalid_pname; } @@ -1316,6 +1369,11 @@ _mesa_GetSamplerParameterIuiv(GLuint sampler, GLenum pname, GLuint *params) params[2] = sampObj->BorderColor.ui[2]; params[3] = sampObj->BorderColor.ui[3]; break; + case GL_TEXTURE_CUBE_MAP_SEAMLESS: + if (!ctx->Extensions.AMD_seamless_cubemap_per_texture) + goto invalid_pname; + *params = sampObj->CubeMapSeamless; + break; default: goto invalid_pname; } diff --git a/src/mesa/main/samplerobj.h b/src/mesa/main/samplerobj.h index ed495c3760b..a839010b7b9 100644 --- a/src/mesa/main/samplerobj.h +++ b/src/mesa/main/samplerobj.h @@ -28,6 +28,14 @@ struct dd_function_table; +static INLINE struct gl_sampler_object * +_mesa_get_samplerobj(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 void _mesa_reference_sampler_object(struct gl_context *ctx, diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c index 451735faf76..514eed5d0b1 100644 --- a/src/mesa/main/shaderapi.c +++ b/src/mesa/main/shaderapi.c @@ -362,7 +362,7 @@ bind_attrib_location(struct gl_context *ctx, GLuint program, GLuint index, { struct gl_shader_program *shProg; const GLint size = -1; /* unknown size */ - GLint i, oldIndex; + GLint i; GLenum datatype = GL_FLOAT_VEC4; shProg = _mesa_lookup_shader_program_err(ctx, program, @@ -385,14 +385,6 @@ bind_attrib_location(struct gl_context *ctx, GLuint program, GLuint index, return; } - if (shProg->LinkStatus) { - /* get current index/location for the attribute */ - oldIndex = get_attrib_location(ctx, program, name); - } - else { - oldIndex = -1; - } - /* this will replace the current value if it's already in the list */ i = _mesa_add_attribute(shProg->Attributes, name, size, datatype, index); if (i < 0) { diff --git a/src/mesa/main/texcompress_s3tc.c b/src/mesa/main/texcompress_s3tc.c index 25257ecc3d3..86f962e9890 100644 --- a/src/mesa/main/texcompress_s3tc.c +++ b/src/mesa/main/texcompress_s3tc.c @@ -163,7 +163,6 @@ GLboolean _mesa_texstore_rgb_dxt1(TEXSTORE_PARAMS) { const GLchan *pixels; - GLint srcRowStride; GLubyte *dst; const GLint texWidth = dstRowStride * 4 / 8; /* a bit of a hack */ const GLchan *tempImage = NULL; @@ -190,13 +189,10 @@ _mesa_texstore_rgb_dxt1(TEXSTORE_PARAMS) if (!tempImage) return GL_FALSE; /* out of memory */ pixels = tempImage; - srcRowStride = 3 * srcWidth; srcFormat = GL_RGB; } else { pixels = (const GLchan *) srcAddr; - srcRowStride = _mesa_image_row_stride(srcPacking, srcWidth, srcFormat, - srcType) / sizeof(GLchan); } dst = _mesa_compressed_image_address(dstXoffset, dstYoffset, 0, @@ -226,7 +222,6 @@ GLboolean _mesa_texstore_rgba_dxt1(TEXSTORE_PARAMS) { const GLchan *pixels; - GLint srcRowStride; GLubyte *dst; const GLint texWidth = dstRowStride * 4 / 8; /* a bit of a hack */ const GLchan *tempImage = NULL; @@ -253,13 +248,10 @@ _mesa_texstore_rgba_dxt1(TEXSTORE_PARAMS) if (!tempImage) return GL_FALSE; /* out of memory */ pixels = tempImage; - srcRowStride = 4 * srcWidth; srcFormat = GL_RGBA; } else { pixels = (const GLchan *) srcAddr; - srcRowStride = _mesa_image_row_stride(srcPacking, srcWidth, srcFormat, - srcType) / sizeof(GLchan); } dst = _mesa_compressed_image_address(dstXoffset, dstYoffset, 0, @@ -288,7 +280,6 @@ GLboolean _mesa_texstore_rgba_dxt3(TEXSTORE_PARAMS) { const GLchan *pixels; - GLint srcRowStride; GLubyte *dst; const GLint texWidth = dstRowStride * 4 / 16; /* a bit of a hack */ const GLchan *tempImage = NULL; @@ -315,12 +306,9 @@ _mesa_texstore_rgba_dxt3(TEXSTORE_PARAMS) if (!tempImage) return GL_FALSE; /* out of memory */ pixels = tempImage; - srcRowStride = 4 * srcWidth; } else { pixels = (const GLchan *) srcAddr; - srcRowStride = _mesa_image_row_stride(srcPacking, srcWidth, srcFormat, - srcType) / sizeof(GLchan); } dst = _mesa_compressed_image_address(dstXoffset, dstYoffset, 0, @@ -349,7 +337,6 @@ GLboolean _mesa_texstore_rgba_dxt5(TEXSTORE_PARAMS) { const GLchan *pixels; - GLint srcRowStride; GLubyte *dst; const GLint texWidth = dstRowStride * 4 / 16; /* a bit of a hack */ const GLchan *tempImage = NULL; @@ -376,12 +363,9 @@ _mesa_texstore_rgba_dxt5(TEXSTORE_PARAMS) if (!tempImage) return GL_FALSE; /* out of memory */ pixels = tempImage; - srcRowStride = 4 * srcWidth; } else { pixels = (const GLchan *) srcAddr; - srcRowStride = _mesa_image_row_stride(srcPacking, srcWidth, srcFormat, - srcType) / sizeof(GLchan); } dst = _mesa_compressed_image_address(dstXoffset, dstYoffset, 0, diff --git a/src/mesa/main/texfetch.c b/src/mesa/main/texfetch.c index d091789ff16..6716ce1b071 100644 --- a/src/mesa/main/texfetch.c +++ b/src/mesa/main/texfetch.c @@ -41,6 +41,8 @@ #include "texcompress_rgtc.h" #include "texfetch.h" #include "teximage.h" +#include "../../gallium/auxiliary/util/u_format_rgb9e5.h" +#include "../../gallium/auxiliary/util/u_format_r11g11b10f.h" /** @@ -898,6 +900,20 @@ texfetch_funcs[MESA_FORMAT_COUNT] = fetch_texel_3d_signed_i16, store_texel_signed_i16 }, + { + MESA_FORMAT_RGB9_E5_FLOAT, + fetch_texel_1d_rgb9_e5, + fetch_texel_2d_rgb9_e5, + fetch_texel_3d_rgb9_e5, + store_texel_rgb9_e5 + }, + { + MESA_FORMAT_R11_G11_B10_FLOAT, + fetch_texel_1d_r11_g11_b10f, + fetch_texel_2d_r11_g11_b10f, + fetch_texel_3d_r11_g11_b10f, + store_texel_r11_g11_b10f + } }; diff --git a/src/mesa/main/texfetch_tmp.h b/src/mesa/main/texfetch_tmp.h index 0b9d5da07e8..e6fd81d4d57 100644 --- a/src/mesa/main/texfetch_tmp.h +++ b/src/mesa/main/texfetch_tmp.h @@ -2332,6 +2332,48 @@ static void store_texel_s8_z24(struct gl_texture_image *texImage, #endif +/* MESA_FORMAT_RGB9_E5 ******************************************************/ + +static void FETCH(rgb9_e5)( const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel ) +{ + const GLuint *src = TEXEL_ADDR(GLuint, texImage, i, j, k, 1); + rgb9e5_to_float3(*src, texel); + texel[ACOMP] = 1.0F; +} + +#if DIM == 3 +static void store_texel_rgb9_e5(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) +{ + const GLfloat *src = (const GLfloat *) texel; + GLuint *dst = TEXEL_ADDR(GLuint, texImage, i, j, k, 1); + *dst = float3_to_rgb9e5(src); +} +#endif + + +/* MESA_FORMAT_R11_G11_B10_FLOAT *********************************************/ + +static void FETCH(r11_g11_b10f)( const struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, GLfloat *texel ) +{ + const GLuint *src = TEXEL_ADDR(GLuint, texImage, i, j, k, 1); + r11g11b10f_to_float3(*src, texel); + texel[ACOMP] = 1.0F; +} + +#if DIM == 3 +static void store_texel_r11_g11_b10f(struct gl_texture_image *texImage, + GLint i, GLint j, GLint k, const void *texel) +{ + const GLfloat *src = (const GLfloat *) texel; + GLuint *dst = TEXEL_ADDR(GLuint, texImage, i, j, k, 1); + *dst = float3_to_r11g11b10f(src); +} +#endif + + #undef TEXEL_ADDR #undef DIM #undef FETCH diff --git a/src/mesa/main/texformat.c b/src/mesa/main/texformat.c index c85a7c05030..456687b0c5c 100644 --- a/src/mesa/main/texformat.c +++ b/src/mesa/main/texformat.c @@ -382,6 +382,26 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat, } } + if (ctx->Extensions.EXT_texture_shared_exponent) { + switch (internalFormat) { + case GL_RGB9_E5: + ASSERT(ctx->TextureFormatSupported[MESA_FORMAT_RGB9_E5_FLOAT]); + return MESA_FORMAT_RGB9_E5_FLOAT; + default: + ; /* fallthrough */ + } + } + + if (ctx->Extensions.EXT_packed_float) { + switch (internalFormat) { + case GL_R11F_G11F_B10F: + ASSERT(ctx->TextureFormatSupported[MESA_FORMAT_R11_G11_B10_FLOAT]); + return MESA_FORMAT_R11_G11_B10_FLOAT; + default: + ; /* fallthrough */ + } + } + if (ctx->Extensions.EXT_packed_depth_stencil) { switch (internalFormat) { case GL_DEPTH_STENCIL_EXT: @@ -621,7 +641,11 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat, switch (internalFormat) { case GL_R8: case GL_RED: + RETURN_IF_SUPPORTED(MESA_FORMAT_R8); + break; + case GL_COMPRESSED_RED: + RETURN_IF_SUPPORTED(MESA_FORMAT_RED_RGTC1); RETURN_IF_SUPPORTED(MESA_FORMAT_R8); break; @@ -631,7 +655,11 @@ _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat, case GL_RG: case GL_RG8: + RETURN_IF_SUPPORTED(MESA_FORMAT_RG88); + break; + case GL_COMPRESSED_RG: + RETURN_IF_SUPPORTED(MESA_FORMAT_RG_RGTC2); RETURN_IF_SUPPORTED(MESA_FORMAT_RG88); break; diff --git a/src/mesa/main/texgetimage.c b/src/mesa/main/texgetimage.c index 7070a29fb9d..467baa20af4 100644 --- a/src/mesa/main/texgetimage.c +++ b/src/mesa/main/texgetimage.c @@ -623,11 +623,13 @@ _mesa_get_compressed_teximage(struct gl_context *ctx, GLenum target, GLint level */ static GLboolean getteximage_error_check(struct gl_context *ctx, GLenum target, GLint level, - GLenum format, GLenum type, GLvoid *pixels ) + GLenum format, GLenum type, GLsizei clientMemSize, + GLvoid *pixels ) { struct gl_texture_object *texObj; struct gl_texture_image *texImage; const GLint maxLevels = _mesa_max_texture_levels(ctx, target); + const GLuint dimensions = (target == GL_TEXTURE_3D) ? 3 : 2; GLenum baseFormat; if (maxLevels == 0) { @@ -730,17 +732,21 @@ getteximage_error_check(struct gl_context *ctx, GLenum target, GLint level, return GL_TRUE; } - if (_mesa_is_bufferobj(ctx->Pack.BufferObj)) { - /* packing texture image into a PBO */ - const GLuint dimensions = (target == GL_TEXTURE_3D) ? 3 : 2; - if (!_mesa_validate_pbo_access(dimensions, &ctx->Pack, texImage->Width, - texImage->Height, texImage->Depth, - format, type, pixels)) { + if (!_mesa_validate_pbo_access(dimensions, &ctx->Pack, texImage->Width, + texImage->Height, texImage->Depth, + format, type, clientMemSize, pixels)) { + if (_mesa_is_bufferobj(ctx->Pack.BufferObj)) { _mesa_error(ctx, GL_INVALID_OPERATION, - "glGetTexImage(out of bounds PBO write)"); - return GL_TRUE; + "glGetTexImage(out of bounds PBO access)"); + } else { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glGetnTexImageARB(out of bounds access:" + " bufSize (%d) is too small)", clientMemSize); } + return GL_TRUE; + } + if (_mesa_is_bufferobj(ctx->Pack.BufferObj)) { /* PBO should not be mapped */ if (_mesa_bufferobj_mapped(ctx->Pack.BufferObj)) { _mesa_error(ctx, GL_INVALID_OPERATION, @@ -761,18 +767,20 @@ getteximage_error_check(struct gl_context *ctx, GLenum target, GLint level, * \param level image level. * \param format pixel data format for returned image. * \param type pixel data type for returned image. + * \param bufSize size of the pixels data buffer. * \param pixels returned pixel data. */ void GLAPIENTRY -_mesa_GetTexImage( GLenum target, GLint level, GLenum format, - GLenum type, GLvoid *pixels ) +_mesa_GetnTexImageARB( GLenum target, GLint level, GLenum format, + GLenum type, GLsizei bufSize, GLvoid *pixels ) { struct gl_texture_object *texObj; struct gl_texture_image *texImage; GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - if (getteximage_error_check(ctx, target, level, format, type, pixels)) { + if (getteximage_error_check(ctx, target, level, format, type, + bufSize, pixels)) { return; } @@ -802,6 +810,13 @@ _mesa_GetTexImage( GLenum target, GLint level, GLenum format, } +void GLAPIENTRY +_mesa_GetTexImage( GLenum target, GLint level, GLenum format, + GLenum type, GLvoid *pixels ) +{ + _mesa_GetnTexImageARB(target, level, format, type, INT_MAX, pixels); +} + /** * Do error checking for a glGetCompressedTexImage() call. @@ -809,11 +824,12 @@ _mesa_GetTexImage( GLenum target, GLint level, GLenum format, */ static GLboolean getcompressedteximage_error_check(struct gl_context *ctx, GLenum target, - GLint level, GLvoid *img) + GLint level, GLsizei clientMemSize, GLvoid *img) { struct gl_texture_object *texObj; struct gl_texture_image *texImage; const GLint maxLevels = _mesa_max_texture_levels(ctx, target); + GLuint compressedSize; if (maxLevels == 0) { _mesa_error(ctx, GL_INVALID_ENUM, "glGetCompressedTexImage(target=0x%x)", @@ -855,26 +871,31 @@ getcompressedteximage_error_check(struct gl_context *ctx, GLenum target, return GL_TRUE; } - if (_mesa_is_bufferobj(ctx->Pack.BufferObj)) { - GLuint compressedSize; + compressedSize = _mesa_format_image_size(texImage->TexFormat, + texImage->Width, + texImage->Height, + texImage->Depth); - /* make sure PBO is not mapped */ - if (_mesa_bufferobj_mapped(ctx->Pack.BufferObj)) { + if (!_mesa_is_bufferobj(ctx->Pack.BufferObj)) { + /* do bounds checking on writing to client memory */ + if (clientMemSize < compressedSize) { _mesa_error(ctx, GL_INVALID_OPERATION, - "glGetCompressedTexImage(PBO is mapped)"); - return GL_TRUE; + "glGetnCompressedTexImageARB(out of bounds access:" + " bufSize (%d) is too small)", clientMemSize); } - - compressedSize = _mesa_format_image_size(texImage->TexFormat, - texImage->Width, - texImage->Height, - texImage->Depth); - + } else { /* do bounds checking on PBO write */ if ((const GLubyte *) img + compressedSize > (const GLubyte *) ctx->Pack.BufferObj->Size) { _mesa_error(ctx, GL_INVALID_OPERATION, - "glGetCompressedTexImage(out of bounds PBO write)"); + "glGetCompressedTexImage(out of bounds PBO access)"); + return GL_TRUE; + } + + /* make sure PBO is not mapped */ + if (_mesa_bufferobj_mapped(ctx->Pack.BufferObj)) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glGetCompressedTexImage(PBO is mapped)"); return GL_TRUE; } } @@ -884,14 +905,15 @@ getcompressedteximage_error_check(struct gl_context *ctx, GLenum target, void GLAPIENTRY -_mesa_GetCompressedTexImageARB(GLenum target, GLint level, GLvoid *img) +_mesa_GetnCompressedTexImageARB(GLenum target, GLint level, GLsizei bufSize, + GLvoid *img) { struct gl_texture_object *texObj; struct gl_texture_image *texImage; GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - if (getcompressedteximage_error_check(ctx, target, level, img)) { + if (getcompressedteximage_error_check(ctx, target, level, bufSize, img)) { return; } @@ -918,3 +940,9 @@ _mesa_GetCompressedTexImageARB(GLenum target, GLint level, GLvoid *img) } _mesa_unlock_texture(ctx, texObj); } + +void GLAPIENTRY +_mesa_GetCompressedTexImageARB(GLenum target, GLint level, GLvoid *img) +{ + _mesa_GetnCompressedTexImageARB(target, level, INT_MAX, img); +} diff --git a/src/mesa/main/texgetimage.h b/src/mesa/main/texgetimage.h index ef420ddabf5..8612705ca88 100644 --- a/src/mesa/main/texgetimage.h +++ b/src/mesa/main/texgetimage.h @@ -51,10 +51,15 @@ _mesa_get_compressed_teximage(struct gl_context *ctx, GLenum target, GLint level extern void GLAPIENTRY _mesa_GetTexImage( GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels ); - +extern void GLAPIENTRY +_mesa_GetnTexImageARB( GLenum target, GLint level, GLenum format, + GLenum type, GLsizei bufSize, GLvoid *pixels ); extern void GLAPIENTRY _mesa_GetCompressedTexImageARB(GLenum target, GLint lod, GLvoid *img); +extern void GLAPIENTRY +_mesa_GetnCompressedTexImageARB(GLenum target, GLint level, GLsizei bufSize, + GLvoid *img); #endif /* TEXGETIMAGE_H */ diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c index 43d6e52dfe9..f2d214f931b 100644 --- a/src/mesa/main/texobj.c +++ b/src/mesa/main/texobj.c @@ -141,6 +141,7 @@ _mesa_initialize_texture_object( struct gl_texture_object *obj, obj->Sampler.CompareFunc = GL_LEQUAL; /* ARB_shadow */ obj->Sampler.CompareFailValue = 0.0F; /* ARB_shadow_ambient */ obj->Sampler.DepthMode = GL_LUMINANCE; /* ARB_depth_texture */ + obj->Sampler.CubeMapSeamless = GL_FALSE; obj->Swizzle[0] = GL_RED; obj->Swizzle[1] = GL_GREEN; obj->Swizzle[2] = GL_BLUE; @@ -251,6 +252,7 @@ _mesa_copy_texture_object( struct gl_texture_object *dest, dest->Sampler.CompareMode = src->Sampler.CompareMode; dest->Sampler.CompareFunc = src->Sampler.CompareFunc; dest->Sampler.CompareFailValue = src->Sampler.CompareFailValue; + dest->Sampler.CubeMapSeamless = src->Sampler.CubeMapSeamless; dest->Sampler.DepthMode = src->Sampler.DepthMode; dest->_MaxLevel = src->_MaxLevel; dest->_MaxLambda = src->_MaxLambda; diff --git a/src/mesa/main/texparam.c b/src/mesa/main/texparam.c index 3d56dac3f91..4b9dcb5d3b5 100644 --- a/src/mesa/main/texparam.c +++ b/src/mesa/main/texparam.c @@ -439,6 +439,20 @@ set_tex_parameteri(struct gl_context *ctx, } goto invalid_pname; + case GL_TEXTURE_CUBE_MAP_SEAMLESS: + if (ctx->Extensions.AMD_seamless_cubemap_per_texture) { + GLenum param = params[0]; + if (param != GL_TRUE && param != GL_FALSE) { + goto invalid_param; + } + if (param != texObj->Sampler.CubeMapSeamless) { + flush(ctx); + texObj->Sampler.CubeMapSeamless = param; + } + return GL_TRUE; + } + goto invalid_pname; + default: goto invalid_pname; } @@ -580,6 +594,7 @@ _mesa_TexParameterf(GLenum target, GLenum pname, GLfloat param) case GL_TEXTURE_COMPARE_FUNC_ARB: case GL_DEPTH_TEXTURE_MODE_ARB: case GL_TEXTURE_SRGB_DECODE_EXT: + case GL_TEXTURE_CUBE_MAP_SEAMLESS: { /* convert float param to int */ GLint p[4]; @@ -629,6 +644,7 @@ _mesa_TexParameterfv(GLenum target, GLenum pname, const GLfloat *params) case GL_TEXTURE_COMPARE_FUNC_ARB: case GL_DEPTH_TEXTURE_MODE_ARB: case GL_TEXTURE_SRGB_DECODE_EXT: + case GL_TEXTURE_CUBE_MAP_SEAMLESS: { /* convert float param to int */ GLint p[4]; @@ -979,11 +995,9 @@ _mesa_GetTexLevelParameteriv( GLenum target, GLint level, } break; case GL_TEXTURE_SHARED_SIZE: - if (ctx->VersionMajor >= 3) { - /* XXX return number of exponent bits for shared exponent texture - * formats, like GL_RGB9_E5. - */ - *params = 0; + if (ctx->VersionMajor >= 3 || + ctx->Extensions.EXT_texture_shared_exponent) { + *params = texFormat == MESA_FORMAT_RGB9_E5_FLOAT ? 5 : 0; } else { goto invalid_pname; @@ -1237,6 +1251,14 @@ _mesa_GetTexParameterfv( GLenum target, GLenum pname, GLfloat *params ) } break; + case GL_TEXTURE_CUBE_MAP_SEAMLESS: + if (ctx->Extensions.AMD_seamless_cubemap_per_texture) { + *params = (GLfloat) obj->Sampler.CubeMapSeamless; + } + else { + error = GL_TRUE; + } + default: error = GL_TRUE; break; @@ -1398,6 +1420,14 @@ _mesa_GetTexParameteriv( GLenum target, GLenum pname, GLint *params ) } break; + case GL_TEXTURE_CUBE_MAP_SEAMLESS: + if (ctx->Extensions.AMD_seamless_cubemap_per_texture) { + *params = (GLint) obj->Sampler.CubeMapSeamless; + } + else { + error = GL_TRUE; + } + default: ; /* silence warnings */ } diff --git a/src/mesa/main/texrender.c b/src/mesa/main/texrender.c index a7641a5f9a4..8ba78b8b477 100644 --- a/src/mesa/main/texrender.c +++ b/src/mesa/main/texrender.c @@ -530,6 +530,7 @@ update_wrapper(struct gl_context *ctx, struct gl_renderbuffer_attachment *att) { struct texture_renderbuffer *trb = (struct texture_renderbuffer *) att->Renderbuffer; + GLuint unused; (void) ctx; ASSERT(trb); @@ -602,8 +603,10 @@ update_wrapper(struct gl_context *ctx, struct gl_renderbuffer_attachment *att) trb->Base._BaseFormat = GL_RGBA; break; default: - trb->Base.DataType = CHAN_TYPE; - trb->Base._BaseFormat = GL_RGBA; + _mesa_format_to_type_and_comps(trb->TexImage->TexFormat, + &trb->Base.DataType, &unused); + trb->Base._BaseFormat = + _mesa_base_fbo_format(ctx, trb->TexImage->InternalFormat); } trb->Base.Data = trb->TexImage->Data; } diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c index 9a690529a83..6da3e4eb7b4 100644 --- a/src/mesa/main/texstore.c +++ b/src/mesa/main/texstore.c @@ -63,7 +63,6 @@ #include "pack.h" #include "pbo.h" #include "imports.h" -#include "pack.h" #include "texcompress.h" #include "texcompress_fxt1.h" #include "texcompress_rgtc.h" @@ -71,6 +70,8 @@ #include "teximage.h" #include "texstore.h" #include "enums.h" +#include "../../gallium/auxiliary/util/u_format_rgb9e5.h" +#include "../../gallium/auxiliary/util/u_format_r11g11b10f.h" enum { @@ -3551,6 +3552,7 @@ _mesa_texstore_rgba_float32(TEXSTORE_PARAMS) if (!ctx->_ImageTransferState && !srcPacking->SwapBytes && baseInternalFormat == srcFormat && + baseInternalFormat == baseFormat && srcType == GL_FLOAT) { /* simple memcpy path */ memcpy_texture(ctx, dims, @@ -3625,6 +3627,7 @@ _mesa_texstore_rgba_float16(TEXSTORE_PARAMS) if (!ctx->_ImageTransferState && !srcPacking->SwapBytes && baseInternalFormat == srcFormat && + baseInternalFormat == baseFormat && srcType == GL_HALF_FLOAT_ARB) { /* simple memcpy path */ memcpy_texture(ctx, dims, @@ -4175,6 +4178,111 @@ _mesa_texstore_sla8(TEXSTORE_PARAMS) #endif /* FEATURE_EXT_texture_sRGB */ +static GLboolean +_mesa_texstore_rgb9_e5(TEXSTORE_PARAMS) +{ + const GLenum baseFormat = _mesa_get_format_base_format(dstFormat); + + ASSERT(dstFormat == MESA_FORMAT_RGB9_E5_FLOAT); + ASSERT(baseInternalFormat == GL_RGB); + + if (!ctx->_ImageTransferState && + !srcPacking->SwapBytes && + srcFormat == GL_RGB && + srcType == GL_UNSIGNED_INT_5_9_9_9_REV) { + /* 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 *srcRow = tempImage; + GLint img, row, col; + if (!tempImage) + return GL_FALSE; + for (img = 0; img < srcDepth; img++) { + GLubyte *dstRow = (GLubyte *) dstAddr + + dstImageOffsets[dstZoffset + img] * 4 + + dstYoffset * dstRowStride + + dstXoffset * 4; + for (row = 0; row < srcHeight; row++) { + GLuint *dstUI = (GLuint*)dstRow; + for (col = 0; col < srcWidth; col++) { + dstUI[col] = float3_to_rgb9e5(&srcRow[col * 3]); + } + dstRow += dstRowStride; + srcRow += srcWidth * 3; + } + } + + free((void *) tempImage); + } + return GL_TRUE; +} + +static GLboolean +_mesa_texstore_r11_g11_b10f(TEXSTORE_PARAMS) +{ + const GLenum baseFormat = _mesa_get_format_base_format(dstFormat); + + ASSERT(dstFormat == MESA_FORMAT_R11_G11_B10_FLOAT); + ASSERT(baseInternalFormat == GL_RGB); + + if (!ctx->_ImageTransferState && + !srcPacking->SwapBytes && + srcFormat == GL_RGB && + srcType == GL_UNSIGNED_INT_10F_11F_11F_REV) { + /* 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 *srcRow = tempImage; + GLint img, row, col; + if (!tempImage) + return GL_FALSE; + for (img = 0; img < srcDepth; img++) { + GLubyte *dstRow = (GLubyte *) dstAddr + + dstImageOffsets[dstZoffset + img] * 4 + + dstYoffset * dstRowStride + + dstXoffset * 4; + for (row = 0; row < srcHeight; row++) { + GLuint *dstUI = (GLuint*)dstRow; + for (col = 0; col < srcWidth; col++) { + dstUI[col] = float3_to_r11g11b10f(&srcRow[col * 3]); + } + dstRow += dstRowStride; + srcRow += srcWidth * 3; + } + } + + free((void *) tempImage); + } + return GL_TRUE; +} @@ -4308,6 +4416,9 @@ texstore_funcs[MESA_FORMAT_COUNT] = { MESA_FORMAT_SIGNED_L16, _mesa_texstore_snorm16 }, { MESA_FORMAT_SIGNED_AL1616, _mesa_texstore_snorm1616 }, { MESA_FORMAT_SIGNED_I16, _mesa_texstore_snorm16 }, + + { MESA_FORMAT_RGB9_E5_FLOAT, _mesa_texstore_rgb9_e5 }, + { MESA_FORMAT_R11_G11_B10_FLOAT, _mesa_texstore_r11_g11_b10f }, }; diff --git a/src/mesa/main/transformfeedback.c b/src/mesa/main/transformfeedback.c index fbd70d56ca9..47efad12109 100644 --- a/src/mesa/main/transformfeedback.c +++ b/src/mesa/main/transformfeedback.c @@ -42,7 +42,6 @@ #include "main/dispatch.h" #include "program/prog_parameter.h" -//#include "program/shader_api.h" #if FEATURE_EXT_transform_feedback @@ -507,7 +506,7 @@ _mesa_BindBufferBase(GLenum target, GLuint index, GLuint buffer) if (obj->Active) { _mesa_error(ctx, GL_INVALID_OPERATION, - "glBindBufferRange(transform feedback active)"); + "glBindBufferBase(transform feedback active)"); return; } @@ -555,7 +554,7 @@ _mesa_BindBufferOffsetEXT(GLenum target, GLuint index, GLuint buffer, if (obj->Active) { _mesa_error(ctx, GL_INVALID_OPERATION, - "glBindBufferRange(transform feedback active)"); + "glBindBufferOffsetEXT(transform feedback active)"); return; } @@ -885,7 +884,7 @@ _mesa_ResumeTransformFeedback(void) if (!obj->Active || !obj->Paused) { _mesa_error(ctx, GL_INVALID_OPERATION, - "glPauseTransformFeedback(feedback not active or not paused)"); + "glResumeTransformFeedback(feedback not active or not paused)"); return; } @@ -932,15 +931,4 @@ _mesa_DrawTransformFeedback(GLenum mode, GLuint name) } -/* -XXX misc to do: - -glGet*() for - -GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED -GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE -GL_TRANSFORM_FEEDBACK_BINDING -*/ - - #endif /* FEATURE_EXT_transform_feedback */ diff --git a/src/mesa/main/uniforms.c b/src/mesa/main/uniforms.c index f984ce3bc56..12fe7b5e226 100644 --- a/src/mesa/main/uniforms.c +++ b/src/mesa/main/uniforms.c @@ -412,11 +412,10 @@ split_location_offset(GLint *location, GLint *offset) */ static void _mesa_get_uniformfv(struct gl_context *ctx, GLuint program, GLint location, - GLfloat *params) + GLsizei bufSize, GLfloat *params) { struct gl_program *prog; - GLint paramPos; - GLint offset; + GLint paramPos, offset; split_location_offset(&location, &offset); @@ -426,9 +425,18 @@ _mesa_get_uniformfv(struct gl_context *ctx, GLuint program, GLint location, const struct gl_program_parameter *p = &prog->Parameters->Parameters[paramPos]; GLint rows, cols, i, j, k; + GLsizei numBytes; get_uniform_rows_cols(p, &rows, &cols); + numBytes = rows * cols * sizeof *params; + if (bufSize < numBytes) { + _mesa_error( ctx, GL_INVALID_OPERATION, + "glGetnUniformfvARB(out of bounds: bufSize is %d," + " but %d bytes are required)", bufSize, numBytes ); + return; + } + k = 0; for (i = 0; i < rows; i++) { const int base = paramPos + offset + i; @@ -447,11 +455,10 @@ _mesa_get_uniformfv(struct gl_context *ctx, GLuint program, GLint location, */ static void _mesa_get_uniformiv(struct gl_context *ctx, GLuint program, GLint location, - GLint *params) + GLsizei bufSize, GLint *params) { struct gl_program *prog; - GLint paramPos; - GLint offset; + GLint paramPos, offset; split_location_offset(&location, &offset); @@ -461,9 +468,18 @@ _mesa_get_uniformiv(struct gl_context *ctx, GLuint program, GLint location, const struct gl_program_parameter *p = &prog->Parameters->Parameters[paramPos]; GLint rows, cols, i, j, k; + GLsizei numBytes; get_uniform_rows_cols(p, &rows, &cols); + numBytes = rows * cols * sizeof *params; + if (bufSize < numBytes) { + _mesa_error( ctx, GL_INVALID_OPERATION, + "glGetnUniformivARB(out of bounds: bufSize is %d," + " but %d bytes are required)", bufSize, numBytes ); + return; + } + k = 0; for (i = 0; i < rows; i++) { const int base = paramPos + offset + i; @@ -483,11 +499,10 @@ _mesa_get_uniformiv(struct gl_context *ctx, GLuint program, GLint location, */ static void _mesa_get_uniformuiv(struct gl_context *ctx, GLuint program, GLint location, - GLuint *params) + GLsizei bufSize, GLuint *params) { struct gl_program *prog; - GLint paramPos; - GLint offset; + GLint paramPos, offset; split_location_offset(&location, &offset); @@ -497,9 +512,18 @@ _mesa_get_uniformuiv(struct gl_context *ctx, GLuint program, GLint location, const struct gl_program_parameter *p = &prog->Parameters->Parameters[paramPos]; GLint rows, cols, i, j, k; + GLsizei numBytes; get_uniform_rows_cols(p, &rows, &cols); + numBytes = rows * cols * sizeof *params; + if (bufSize < numBytes) { + _mesa_error( ctx, GL_INVALID_OPERATION, + "glGetnUniformuivARB(out of bounds: bufSize is %d," + " but %d bytes are required)", bufSize, numBytes ); + return; + } + k = 0; for (i = 0; i < rows; i++) { const int base = paramPos + offset + i; @@ -513,6 +537,19 @@ _mesa_get_uniformuiv(struct gl_context *ctx, GLuint program, GLint location, /** + * Called via glGetUniformdv(). + * New in GL_ARB_gpu_shader_fp64, OpenGL 4.0 + */ +static void +_mesa_get_uniformdv(struct gl_context *ctx, GLuint program, GLint location, + GLsizei bufSize, GLdouble *params) +{ + _mesa_error(ctx, GL_INVALID_OPERATION, "glGetUniformdvARB" + "(GL_ARB_gpu_shader_fp64 not implemented)"); +} + + +/** * Called via glGetUniformLocation(). * * The return value will encode two values, the uniform location and an @@ -1350,29 +1387,65 @@ _mesa_UniformMatrix4x3fv(GLint location, GLsizei count, GLboolean transpose, void GLAPIENTRY -_mesa_GetUniformfvARB(GLhandleARB program, GLint location, GLfloat *params) +_mesa_GetnUniformfvARB(GLhandleARB program, GLint location, + GLsizei bufSize, GLfloat *params) { GET_CURRENT_CONTEXT(ctx); - _mesa_get_uniformfv(ctx, program, location, params); + _mesa_get_uniformfv(ctx, program, location, bufSize, params); +} + +void GLAPIENTRY +_mesa_GetUniformfvARB(GLhandleARB program, GLint location, GLfloat *params) +{ + _mesa_GetnUniformfvARB(program, location, INT_MAX, params); } void GLAPIENTRY -_mesa_GetUniformivARB(GLhandleARB program, GLint location, GLint *params) +_mesa_GetnUniformivARB(GLhandleARB program, GLint location, + GLsizei bufSize, GLint *params) { GET_CURRENT_CONTEXT(ctx); - _mesa_get_uniformiv(ctx, program, location, params); + _mesa_get_uniformiv(ctx, program, location, bufSize, params); +} + +void GLAPIENTRY +_mesa_GetUniformivARB(GLhandleARB program, GLint location, GLint *params) +{ + _mesa_GetnUniformivARB(program, location, INT_MAX, params); } /* GL3 */ void GLAPIENTRY +_mesa_GetnUniformuivARB(GLhandleARB program, GLint location, + GLsizei bufSize, GLuint *params) +{ + GET_CURRENT_CONTEXT(ctx); + _mesa_get_uniformuiv(ctx, program, location, bufSize, params); +} + +void GLAPIENTRY _mesa_GetUniformuiv(GLhandleARB program, GLint location, GLuint *params) { + _mesa_GetnUniformuivARB(program, location, INT_MAX, params); +} + + +/* GL4 */ +void GLAPIENTRY +_mesa_GetnUniformdvARB(GLhandleARB program, GLint location, + GLsizei bufSize, GLdouble *params) +{ GET_CURRENT_CONTEXT(ctx); - _mesa_get_uniformuiv(ctx, program, location, params); + _mesa_get_uniformdv(ctx, program, location, bufSize, params); } +void GLAPIENTRY +_mesa_GetUniformdv(GLhandleARB program, GLint location, GLdouble *params) +{ + _mesa_GetnUniformdvARB(program, location, INT_MAX, params); +} GLint GLAPIENTRY @@ -1454,6 +1527,11 @@ _mesa_init_shader_uniform_dispatch(struct _glapi_table *exec) SET_Uniform4uivEXT(exec, _mesa_Uniform4uiv); SET_GetUniformuivEXT(exec, _mesa_GetUniformuiv); + /* GL_ARB_robustness */ + SET_GetnUniformfvARB(exec, _mesa_GetnUniformfvARB); + SET_GetnUniformivARB(exec, _mesa_GetnUniformivARB); + SET_GetnUniformuivARB(exec, _mesa_GetnUniformuivARB); + SET_GetnUniformdvARB(exec, _mesa_GetnUniformdvARB); /* GL 4.0 */ #endif /* FEATURE_GL */ } diff --git a/src/mesa/main/uniforms.h b/src/mesa/main/uniforms.h index 54abb08ba59..b024cb30ba5 100644 --- a/src/mesa/main/uniforms.h +++ b/src/mesa/main/uniforms.h @@ -146,10 +146,25 @@ extern void GLAPIENTRY _mesa_GetUniformfvARB(GLhandleARB, GLint, GLfloat *); extern void GLAPIENTRY +_mesa_GetnUniformfvARB(GLhandleARB, GLint, GLsizei, GLfloat *); + +extern void GLAPIENTRY _mesa_GetUniformivARB(GLhandleARB, GLint, GLint *); extern void GLAPIENTRY -_mesa_GetUniformuiv(GLhandleARB program, GLint location, GLuint *params); +_mesa_GetnUniformivARB(GLhandleARB, GLint, GLsizei, GLint *); + +extern void GLAPIENTRY +_mesa_GetUniformuiv(GLhandleARB, GLint, GLuint *); + +extern void GLAPIENTRY +_mesa_GetnUniformuivARB(GLhandleARB, GLint, GLsizei, GLuint *); + +extern void GLAPIENTRY +_mesa_GetUniformdv(GLhandleARB, GLint, GLdouble *); + +extern void GLAPIENTRY +_mesa_GetnUniformdvARB(GLhandleARB, GLint, GLsizei, GLdouble *); extern GLint GLAPIENTRY _mesa_GetUniformLocationARB(GLhandleARB, const GLcharARB *); diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c index d20e2c7193e..29a345f9425 100644 --- a/src/mesa/main/varray.c +++ b/src/mesa/main/varray.c @@ -57,8 +57,8 @@ #define HALF_BIT 0x80 #define FLOAT_BIT 0x100 #define DOUBLE_BIT 0x200 -#define FIXED_BIT 0x400 - +#define FIXED_ES_BIT 0x400 +#define FIXED_GL_BIT 0x800 /** Convert GL datatype enum into a <type>_BIT value seen above */ @@ -90,7 +90,7 @@ type_to_bit(const struct gl_context *ctx, GLenum type) case GL_DOUBLE: return DOUBLE_BIT; case GL_FIXED: - return FIXED_BIT; + return ctx->API == API_OPENGL ? FIXED_GL_BIT : FIXED_ES_BIT; default: return 0; } @@ -130,7 +130,10 @@ update_array(struct gl_context *ctx, if (ctx->API != API_OPENGLES && ctx->API != API_OPENGLES2) { /* fixed point arrays / data is only allowed with OpenGL ES 1.x/2.0 */ - legalTypesMask &= ~FIXED_BIT; + legalTypesMask &= ~FIXED_ES_BIT; + } + if (!ctx->Extensions.ARB_ES2_compatibility) { + legalTypesMask &= ~FIXED_GL_BIT; } typeBit = type_to_bit(ctx, type); @@ -198,7 +201,7 @@ void GLAPIENTRY _mesa_VertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr) { GLbitfield legalTypes = (SHORT_BIT | INT_BIT | FLOAT_BIT | - DOUBLE_BIT | HALF_BIT | FIXED_BIT); + DOUBLE_BIT | HALF_BIT | FIXED_ES_BIT); GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); @@ -217,7 +220,7 @@ _mesa_NormalPointer(GLenum type, GLsizei stride, const GLvoid *ptr ) { const GLbitfield legalTypes = (BYTE_BIT | SHORT_BIT | INT_BIT | HALF_BIT | FLOAT_BIT | DOUBLE_BIT | - FIXED_BIT); + FIXED_ES_BIT); GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); @@ -235,7 +238,7 @@ _mesa_ColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr) SHORT_BIT | UNSIGNED_SHORT_BIT | INT_BIT | UNSIGNED_INT_BIT | HALF_BIT | FLOAT_BIT | DOUBLE_BIT | - FIXED_BIT); + FIXED_ES_BIT); GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); @@ -299,7 +302,7 @@ _mesa_TexCoordPointer(GLint size, GLenum type, GLsizei stride, { GLbitfield legalTypes = (SHORT_BIT | INT_BIT | HALF_BIT | FLOAT_BIT | DOUBLE_BIT | - FIXED_BIT); + FIXED_ES_BIT); GET_CURRENT_CONTEXT(ctx); const GLuint unit = ctx->Array.ActiveTexture; ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); @@ -337,7 +340,7 @@ _mesa_EdgeFlagPointer(GLsizei stride, const GLvoid *ptr) void GLAPIENTRY _mesa_PointSizePointer(GLenum type, GLsizei stride, const GLvoid *ptr) { - const GLbitfield legalTypes = (FLOAT_BIT | FIXED_BIT); + const GLbitfield legalTypes = (FLOAT_BIT | FIXED_ES_BIT); GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); @@ -405,7 +408,7 @@ _mesa_VertexAttribPointerARB(GLuint index, GLint size, GLenum type, SHORT_BIT | UNSIGNED_SHORT_BIT | INT_BIT | UNSIGNED_INT_BIT | HALF_BIT | FLOAT_BIT | DOUBLE_BIT | - FIXED_BIT); + FIXED_ES_BIT | FIXED_GL_BIT); GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END(ctx); diff --git a/src/mesa/program/hash_table.c b/src/mesa/program/hash_table.c index f7ef366c1a0..877a9e2ffc3 100644 --- a/src/mesa/program/hash_table.c +++ b/src/mesa/program/hash_table.c @@ -160,6 +160,25 @@ hash_table_remove(struct hash_table *ht, const void *key) } } +void +hash_table_call_foreach(struct hash_table *ht, + void (*callback)(const void *key, + void *data, + void *closure), + void *closure) +{ + int bucket; + + for (bucket = 0; bucket < ht->num_buckets; bucket++) { + struct node *node, *temp; + foreach_s(node, temp, &ht->buckets[bucket]) { + struct hash_node *hn = (struct hash_node *) node; + + callback(hn->key, hn->data, closure); + } + } +} + unsigned hash_table_string_hash(const void *key) { diff --git a/src/mesa/program/hash_table.h b/src/mesa/program/hash_table.h index f1c4fdcd1fa..e715bb1cc62 100644 --- a/src/mesa/program/hash_table.h +++ b/src/mesa/program/hash_table.h @@ -144,6 +144,13 @@ hash_table_pointer_hash(const void *key); int hash_table_pointer_compare(const void *key1, const void *key2); +void +hash_table_call_foreach(struct hash_table *ht, + void (*callback)(const void *key, + void *data, + void *closure), + void *closure); + #ifdef __cplusplus } #endif diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp index 3c9b9733832..bc10b455b8b 100644 --- a/src/mesa/program/ir_to_mesa.cpp +++ b/src/mesa/program/ir_to_mesa.cpp @@ -1481,7 +1481,6 @@ ir_to_mesa_visitor::visit(ir_dereference_array *ir) if (index) { src.index += index->value.i[0] * element_size; } else { - 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. @@ -2163,7 +2162,7 @@ ir_to_mesa_visitor::visit(ir_discard *ir) void ir_to_mesa_visitor::visit(ir_if *ir) { - ir_to_mesa_instruction *cond_inst, *if_inst, *else_inst = NULL; + ir_to_mesa_instruction *cond_inst, *if_inst; ir_to_mesa_instruction *prev_inst; prev_inst = (ir_to_mesa_instruction *)this->instructions.get_tail(); @@ -2195,7 +2194,7 @@ ir_to_mesa_visitor::visit(ir_if *ir) visit_exec_list(&ir->then_instructions, this); if (!ir->else_instructions.is_empty()) { - else_inst = emit(ir->condition, OPCODE_ELSE); + emit(ir->condition, OPCODE_ELSE); visit_exec_list(&ir->else_instructions, this); } diff --git a/src/mesa/program/prog_print.c b/src/mesa/program/prog_print.c index 484596af760..7c3b4909e73 100644 --- a/src/mesa/program/prog_print.c +++ b/src/mesa/program/prog_print.c @@ -647,6 +647,7 @@ _mesa_fprint_instruction_opt(FILE *f, case OPCODE_TXP: case OPCODE_TXL: case OPCODE_TXB: + case OPCODE_TXD: fprintf(f, "%s", _mesa_opcode_string(inst->Opcode)); if (inst->SaturateMode == SATURATE_ZERO_ONE) fprintf(f, "_SAT"); @@ -654,6 +655,12 @@ _mesa_fprint_instruction_opt(FILE *f, fprint_dst_reg(f, &inst->DstReg, mode, prog); fprintf(f, ", "); fprint_src_reg(f, &inst->SrcReg[0], mode, prog); + if (inst->Opcode == OPCODE_TXD) { + fprintf(f, ", "); + fprint_src_reg(f, &inst->SrcReg[1], mode, prog); + fprintf(f, ", "); + fprint_src_reg(f, &inst->SrcReg[2], mode, prog); + } fprintf(f, ", texture[%d], ", inst->TexSrcUnit); switch (inst->TexSrcTarget) { case TEXTURE_1D_INDEX: fprintf(f, "1D"); break; diff --git a/src/mesa/program/prog_statevars.c b/src/mesa/program/prog_statevars.c index 1fd26f44d56..d94d7fe5dfb 100644 --- a/src/mesa/program/prog_statevars.c +++ b/src/mesa/program/prog_statevars.c @@ -602,11 +602,11 @@ _mesa_fetch_state(struct gl_context *ctx, const gl_state_index state[], value[0] = 1.0F; value[1] = 0.0F; value[2] = -1.0F; - value[3] = (GLfloat) (ctx->DrawBuffer->Height - 1); + value[3] = (GLfloat) ctx->DrawBuffer->Height; } else { /* Flipping Y upside down (XY) followed by identity (ZW). */ value[0] = -1.0F; - value[1] = (GLfloat) (ctx->DrawBuffer->Height - 1); + value[1] = (GLfloat) ctx->DrawBuffer->Height; value[2] = 1.0F; value[3] = 0.0F; } diff --git a/src/mesa/program/prog_statevars.h b/src/mesa/program/prog_statevars.h index 9fe8d81b3dd..04af3f4cf3a 100644 --- a/src/mesa/program/prog_statevars.h +++ b/src/mesa/program/prog_statevars.h @@ -120,7 +120,7 @@ typedef enum gl_state_index_ { STATE_PT_BIAS, /**< Pixel transfer RGBA bias */ STATE_SHADOW_AMBIENT, /**< ARB_shadow_ambient fail value; token[2] is texture unit index */ STATE_FB_SIZE, /**< (width-1, height-1, 0, 0) */ - STATE_FB_WPOS_Y_TRANSFORM, /**< (1, 0, -1, height-1) if a FBO is bound, (-1, height-1, 1, 0) otherwise */ + STATE_FB_WPOS_Y_TRANSFORM, /**< (1, 0, -1, height) if a FBO is bound, (-1, height, 1, 0) otherwise */ STATE_ROT_MATRIX_0, /**< ATI_envmap_bumpmap, rot matrix row 0 */ STATE_ROT_MATRIX_1, /**< ATI_envmap_bumpmap, rot matrix row 1 */ STATE_INTERNAL_DRIVER /* first available state index for drivers (must be last) */ diff --git a/src/mesa/program/program_parse.y b/src/mesa/program/program_parse.y index b35bc5a7cae..dbf5abaa617 100644 --- a/src/mesa/program/program_parse.y +++ b/src/mesa/program/program_parse.y @@ -1258,7 +1258,11 @@ optArraySize: | INTEGER { if (($1 < 1) || ((unsigned) $1 > state->limits->MaxParameters)) { - yyerror(& @1, state, "invalid parameter array size"); + char msg[100]; + _mesa_snprintf(msg, sizeof(msg), + "invalid parameter array size (size=%d max=%u)", + $1, state->limits->MaxParameters); + yyerror(& @1, state, msg); YYERROR; } else { $$ = $1; @@ -2060,9 +2064,14 @@ resultColBinding: COLOR optResultFaceType optResultColorType optResultFaceType: { - $$ = (state->mode == ARB_vertex) - ? VERT_RESULT_COL0 - : FRAG_RESULT_COLOR; + if (state->mode == ARB_vertex) { + $$ = VERT_RESULT_COL0; + } else { + if (state->option.DrawBuffers) + $$ = FRAG_RESULT_DATA0; + else + $$ = FRAG_RESULT_COLOR; + } } | '[' INTEGER ']' { diff --git a/src/mesa/program/register_allocate.c b/src/mesa/program/register_allocate.c index 95a9bde401a..de96eb42c9b 100644 --- a/src/mesa/program/register_allocate.c +++ b/src/mesa/program/register_allocate.c @@ -28,6 +28,46 @@ /** @file register_allocate.c * * Graph-coloring register allocator. + * + * The basic idea of graph coloring is to make a node in a graph for + * every thing that needs a register (color) number assigned, and make + * edges in the graph between nodes that interfere (can't be allocated + * to the same register at the same time). + * + * During the "simplify" process, any any node with fewer edges than + * there are registers means that that edge can get assigned a + * register regardless of what its neighbors choose, so that node is + * pushed on a stack and removed (with its edges) from the graph. + * That likely causes other nodes to become trivially colorable as well. + * + * Then during the "select" process, nodes are popped off of that + * stack, their edges restored, and assigned a color different from + * their neighbors. Because they were pushed on the stack only when + * they were trivially colorable, any color chosen won't interfere + * with the registers to be popped later. + * + * The downside to most graph coloring is that real hardware often has + * limitations, like registers that need to be allocated to a node in + * pairs, or aligned on some boundary. This implementation follows + * the paper "Retargetable Graph-Coloring Register Allocation for + * Irregular Architectures" by Johan Runeson and Sven-Olof Nyström. + * + * In this system, there are register classes each containing various + * registers, and registers may interfere with other registers. For + * example, one might have a class of base registers, and a class of + * aligned register pairs that would each interfere with their pair of + * the base registers. Each node has a register class it needs to be + * assigned to. Define p(B) to be the size of register class B, and + * q(B,C) to be the number of registers in B that the worst choice + * register in C could conflict with. Then, this system replaces the + * basic graph coloring test of "fewer edges from this node than there + * are registers" with "For this node of class B, the sum of q(B,C) + * for each neighbor node of class C is less than pB". + * + * A nice feature of the pq test is that q(B,C) can be computed once + * up front and stored in a 2-dimensional array, so that the cost of + * coloring a node is constant with the number of registers. We do + * this during ra_set_finalize(). */ #include <ralloc.h> @@ -37,6 +77,8 @@ #include "main/mtypes.h" #include "register_allocate.h" +#define NO_REG ~0 + struct ra_reg { GLboolean *conflicts; unsigned int *conflict_list; @@ -56,25 +98,47 @@ struct ra_class { GLboolean *regs; /** - * p_B in Runeson/Nyström paper. + * p(B) in Runeson/Nyström paper. * * This is "how many regs are in the set." */ unsigned int p; /** - * q_B,C in Runeson/Nyström paper. + * q(B,C) (indexed by C, B is this register class) in + * Runeson/Nyström paper. This is "how many registers of B could + * the worst choice register from C conflict with". */ unsigned int *q; }; struct ra_node { + /** @{ + * + * List of which nodes this node interferes with. This should be + * symmetric with the other node. + */ GLboolean *adjacency; unsigned int *adjacency_list; - unsigned int class; unsigned int adjacency_count; + /** @} */ + + unsigned int class; + + /* Register, if assigned, or NO_REG. */ unsigned int reg; + + /** + * Set when the node is in the trivially colorable stack. When + * set, the adjacency to this node is ignored, to implement the + * "remove the edge from the graph" in simplification without + * having to actually modify the adjacency_list. + */ GLboolean in_stack; + + /* For an implementation that needs register spilling, this is the + * approximate cost of spilling this node. + */ float spill_cost; }; @@ -227,7 +291,7 @@ ra_alloc_interference_graph(struct ra_regs *regs, unsigned int count) g->nodes[i].adjacency_list = ralloc_array(g, unsigned int, count); g->nodes[i].adjacency_count = 0; ra_add_node_adjacency(g, i, i); - g->nodes[i].reg = ~0; + g->nodes[i].reg = NO_REG; } return g; @@ -287,7 +351,7 @@ ra_simplify(struct ra_graph *g) progress = GL_FALSE; for (i = g->count - 1; i >= 0; i--) { - if (g->nodes[i].in_stack) + if (g->nodes[i].in_stack || g->nodes[i].reg != NO_REG) continue; if (pq_test(g, i)) { @@ -367,7 +431,7 @@ ra_optimistic_color(struct ra_graph *g) unsigned int i; for (i = 0; i < g->count; i++) { - if (g->nodes[i].in_stack) + if (g->nodes[i].in_stack || g->nodes[i].reg != NO_REG) continue; g->stack[g->stack_count] = i; @@ -391,6 +455,24 @@ ra_get_node_reg(struct ra_graph *g, unsigned int n) return g->nodes[n].reg; } +/** + * Forces a node to a specific register. This can be used to avoid + * creating a register class containing one node when handling data + * that must live in a fixed location and is known to not conflict + * with other forced register assignment (as is common with shader + * input data). These nodes do not end up in the stack during + * ra_simplify(), and thus at ra_select() time it is as if they were + * the first popped off the stack and assigned their fixed locations. + * + * Must be called before ra_simplify(). + */ +void +ra_set_node_reg(struct ra_graph *g, unsigned int n, unsigned int reg) +{ + g->nodes[n].reg = reg; + g->nodes[n].in_stack = GL_FALSE; +} + static float ra_get_spill_benefit(struct ra_graph *g, unsigned int n) { diff --git a/src/mesa/program/register_allocate.h b/src/mesa/program/register_allocate.h index 198b89f2d7d..5b95833f394 100644 --- a/src/mesa/program/register_allocate.h +++ b/src/mesa/program/register_allocate.h @@ -65,6 +65,7 @@ GLboolean ra_select(struct ra_graph *g); GLboolean ra_allocate_no_spills(struct ra_graph *g); unsigned int ra_get_node_reg(struct ra_graph *g, unsigned int n); +void ra_set_node_reg(struct ra_graph * g, unsigned int n, unsigned int reg); void ra_set_node_spill_cost(struct ra_graph *g, unsigned int n, float cost); int ra_get_best_spill_node(struct ra_graph *g); /** @} */ diff --git a/src/mesa/state_tracker/st_atom_pixeltransfer.c b/src/mesa/state_tracker/st_atom_pixeltransfer.c index 9557adc2d8b..57430b36f8d 100644 --- a/src/mesa/state_tracker/st_atom_pixeltransfer.c +++ b/src/mesa/state_tracker/st_atom_pixeltransfer.c @@ -195,18 +195,8 @@ get_pixel_transfer_program(struct gl_context *ctx, const struct state_key *key) { STATE_INTERNAL, STATE_PT_SCALE, 0, 0, 0 }; static const gl_state_index bias_state[STATE_LENGTH] = { STATE_INTERNAL, STATE_PT_BIAS, 0, 0, 0 }; - GLfloat scale[4], bias[4]; GLint scale_p, bias_p; - scale[0] = ctx->Pixel.RedScale; - scale[1] = ctx->Pixel.GreenScale; - scale[2] = ctx->Pixel.BlueScale; - scale[3] = ctx->Pixel.AlphaScale; - bias[0] = ctx->Pixel.RedBias; - bias[1] = ctx->Pixel.GreenBias; - bias[2] = ctx->Pixel.BlueBias; - bias[3] = ctx->Pixel.AlphaBias; - scale_p = _mesa_add_state_reference(params, scale_state); bias_p = _mesa_add_state_reference(params, bias_state); diff --git a/src/mesa/state_tracker/st_atom_sampler.c b/src/mesa/state_tracker/st_atom_sampler.c index 808aa73a083..e3d6cbb8e12 100644 --- a/src/mesa/state_tracker/st_atom_sampler.c +++ b/src/mesa/state_tracker/st_atom_sampler.c @@ -33,6 +33,8 @@ #include "main/macros.h" +#include "main/mtypes.h" +#include "main/samplerobj.h" #include "st_context.h" #include "st_cb_texture.h" @@ -154,7 +156,7 @@ update_samplers(struct st_context *st) teximg = texobj->Image[0][texobj->BaseLevel]; - msamp = st_get_mesa_sampler(st->ctx, texUnit); + msamp = _mesa_get_samplerobj(st->ctx, texUnit); sampler->wrap_s = gl_wrap_xlate(msamp->WrapS); sampler->wrap_t = gl_wrap_xlate(msamp->WrapT); @@ -199,6 +201,9 @@ update_samplers(struct st_context *st) = st_compare_func_to_pipe(msamp->CompareFunc); } + sampler->seamless_cube_map = + st->ctx->Texture.CubeMapSeamless || msamp->CubeMapSeamless; + st->state.num_samplers = su + 1; /*printf("%s su=%u non-null\n", __FUNCTION__, su);*/ diff --git a/src/mesa/state_tracker/st_atom_texture.c b/src/mesa/state_tracker/st_atom_texture.c index 19ad2e8cc4a..9d437ad086f 100644 --- a/src/mesa/state_tracker/st_atom_texture.c +++ b/src/mesa/state_tracker/st_atom_texture.c @@ -33,6 +33,8 @@ #include "main/macros.h" +#include "main/mtypes.h" +#include "main/samplerobj.h" #include "program/prog_instruction.h" #include "st_context.h" @@ -209,7 +211,7 @@ update_textures(struct st_context *st) else texUnit = vprog->Base.SamplerUnits[su]; - samp = st_get_mesa_sampler(st->ctx, texUnit); + samp = _mesa_get_samplerobj(st->ctx, texUnit); texObj = st->ctx->Texture.Unit[texUnit]._Current; diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c index 1707f827cc8..e377861b8d2 100644 --- a/src/mesa/state_tracker/st_cb_drawpixels.c +++ b/src/mesa/state_tracker/st_cb_drawpixels.c @@ -372,6 +372,14 @@ internal_format(struct gl_context *ctx, GLenum format, GLenum type) return ctx->Extensions.ARB_texture_float ? GL_RGBA32F : ctx->Extensions.EXT_texture_snorm ? GL_RGBA16_SNORM : GL_RGBA16; + + case GL_UNSIGNED_INT_5_9_9_9_REV: + assert(ctx->Extensions.EXT_texture_shared_exponent); + return GL_RGB9_E5; + + case GL_UNSIGNED_INT_10F_11F_11F_REV: + assert(ctx->Extensions.EXT_packed_float); + return GL_R11F_G11F_B10F; } } } @@ -411,7 +419,6 @@ make_texture(struct st_context *st, gl_format mformat; struct pipe_resource *pt; enum pipe_format pipeFormat; - GLuint cpp; GLenum baseFormat, intFormat; baseFormat = base_format(format); @@ -423,7 +430,6 @@ make_texture(struct st_context *st, pipeFormat = st_mesa_format_to_pipe_format(mformat); assert(pipeFormat); - cpp = util_format_get_blocksize(pipeFormat); pixels = _mesa_map_pbo_source(ctx, unpack, pixels); if (!pixels) diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c index ab7f6a51684..a27c30e51fe 100644 --- a/src/mesa/state_tracker/st_cb_texture.c +++ b/src/mesa/state_tracker/st_cb_texture.c @@ -1843,9 +1843,9 @@ 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) { - if (stImage->base.Width == u_minify(stObj->width0, level) && + if (level == 0 || (stImage->base.Width == u_minify(stObj->width0, level) && stImage->base.Height == u_minify(stObj->height0, level) && - stImage->base.Depth == u_minify(stObj->depth0, 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); } diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c index d27043ec296..46a4f9cf8c5 100644 --- a/src/mesa/state_tracker/st_draw.c +++ b/src/mesa/state_tracker/st_draw.c @@ -247,7 +247,7 @@ is_interleaved_arrays(const struct st_vertex_program *vp, const struct gl_buffer_object *firstBufObj = NULL; GLint firstStride = -1; const GLubyte *client_addr = NULL; - GLboolean user_memory; + GLboolean user_memory = GL_FALSE; for (attr = 0; attr < vpv->num_inputs; attr++) { const GLuint mesaAttr = vp->index_to_input[attr]; diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index bdc08949dd4..ad8e6bb9ec9 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -167,6 +167,8 @@ void st_init_limits(struct st_context *st) pc->MaxNativeAddressRegs = screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_ADDRS); pc->MaxNativeParameters = screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_CONSTS); pc->MaxUniformComponents = 4 * MIN2(pc->MaxNativeParameters, MAX_UNIFORMS); + /* raise MaxParameters if native support is higher */ + pc->MaxParameters = MAX2(pc->MaxParameters, pc->MaxNativeParameters); options->EmitNoNoise = TRUE; @@ -187,7 +189,7 @@ void st_init_limits(struct st_context *st) options->EmitNoIndirectUniform = !screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_INDIRECT_CONST_ADDR); - if(options->EmitNoLoops) + if (options->EmitNoLoops) options->MaxUnrollIterations = MIN2(screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_INSTRUCTIONS), 65536); } @@ -513,6 +515,12 @@ void st_init_extensions(struct st_context *st) ctx->Extensions.ARB_half_float_vertex = GL_TRUE; } + if (screen->is_format_supported(screen, PIPE_FORMAT_R32G32B32A32_FIXED, + PIPE_BUFFER, 0, + PIPE_BIND_VERTEX_BUFFER)) { + ctx->Extensions.ARB_ES2_compatibility = GL_TRUE; + } + if (screen->get_shader_param(screen, PIPE_SHADER_GEOMETRY, PIPE_SHADER_CAP_MAX_INSTRUCTIONS) > 0) { #if 0 /* XXX re-enable when GLSL compiler again supports geometry shaders */ ctx->Extensions.ARB_geometry_shader4 = GL_TRUE; @@ -539,8 +547,8 @@ void st_init_extensions(struct st_context *st) 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) && + 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) && @@ -574,4 +582,25 @@ void st_init_extensions(struct st_context *st) if (st->pipe->texture_barrier) { ctx->Extensions.NV_texture_barrier = GL_TRUE; } + + if (screen->is_format_supported(screen, PIPE_FORMAT_R9G9B9E5_FLOAT, + PIPE_TEXTURE_2D, 0, + PIPE_BIND_SAMPLER_VIEW)) { + ctx->Extensions.EXT_texture_shared_exponent = GL_TRUE; + } + + if (screen->is_format_supported(screen, PIPE_FORMAT_R11G11B10_FLOAT, + PIPE_TEXTURE_2D, 0, + PIPE_BIND_RENDER_TARGET | + PIPE_BIND_SAMPLER_VIEW)) { + ctx->Extensions.EXT_packed_float = GL_TRUE; + } + + if (screen->get_param(screen, PIPE_CAP_SEAMLESS_CUBE_MAP_PER_TEXTURE)) { + ctx->Extensions.ARB_seamless_cube_map = GL_TRUE; + ctx->Extensions.AMD_seamless_cubemap_per_texture = GL_TRUE; + } + else if (screen->get_param(screen, PIPE_CAP_SEAMLESS_CUBE_MAP)) { + ctx->Extensions.ARB_seamless_cube_map = GL_TRUE; + } } diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c index bbaa84d7fdf..acfafe351d2 100644 --- a/src/mesa/state_tracker/st_format.c +++ b/src/mesa/state_tracker/st_format.c @@ -325,6 +325,11 @@ st_mesa_format_to_pipe_format(gl_format mesaFormat) case MESA_FORMAT_SIGNED_I16: return PIPE_FORMAT_I16_SNORM; + case MESA_FORMAT_RGB9_E5_FLOAT: + return PIPE_FORMAT_R9G9B9E5_FLOAT; + case MESA_FORMAT_R11_G11_B10_FLOAT: + return PIPE_FORMAT_R11G11B10_FLOAT; + default: assert(0); return PIPE_FORMAT_NONE; @@ -545,6 +550,11 @@ st_pipe_format_to_mesa_format(enum pipe_format format) case PIPE_FORMAT_I16_SNORM: return MESA_FORMAT_SIGNED_I16; + case PIPE_FORMAT_R9G9B9E5_FLOAT: + return MESA_FORMAT_RGB9_E5_FLOAT; + case PIPE_FORMAT_R11G11B10_FLOAT: + return MESA_FORMAT_R11_G11_B10_FLOAT; + default: assert(0); return MESA_FORMAT_NONE; @@ -954,14 +964,24 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat, /* prefer formats in order of data size, choosing 16-bit ones if equal sized */ case GL_RGBA16F_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_RGB16F_ARB: { static const enum pipe_format formats[] = { + PIPE_FORMAT_R16G16B16_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT, + PIPE_FORMAT_R32G32B32_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT }; return find_supported_format(screen, formats, Elements(formats), - target, sample_count, bindings); + target, sample_count, bindings); } case GL_LUMINANCE_ALPHA16F_ARB: { @@ -1040,14 +1060,23 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat, /* try a 32-bit format if available, otherwise fallback to a 16-bit one */ case GL_RGBA32F_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_RGB32F_ARB: { static const enum pipe_format formats[] = { + PIPE_FORMAT_R32G32B32_FLOAT, PIPE_FORMAT_R32G32B32A32_FLOAT, PIPE_FORMAT_R16G16B16A16_FLOAT }; return find_supported_format(screen, formats, Elements(formats), - target, sample_count, bindings); + target, sample_count, bindings); } case GL_LUMINANCE_ALPHA32F_ARB: { @@ -1464,6 +1493,20 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat, target, sample_count, bindings); } + case GL_RGB9_E5: + if (screen->is_format_supported(screen, PIPE_FORMAT_R9G9B9E5_FLOAT, target, + sample_count, bindings)) { + return PIPE_FORMAT_R9G9B9E5_FLOAT; + } + return PIPE_FORMAT_NONE; + + case GL_R11F_G11F_B10F: + if (screen->is_format_supported(screen, PIPE_FORMAT_R11G11B10_FLOAT, target, + sample_count, bindings)) { + return PIPE_FORMAT_R11G11B10_FLOAT; + } + return PIPE_FORMAT_NONE; + default: return PIPE_FORMAT_NONE; } diff --git a/src/mesa/state_tracker/st_mesa_to_tgsi.c b/src/mesa/state_tracker/st_mesa_to_tgsi.c index c07739f9d53..a41e5b16a85 100644 --- a/src/mesa/state_tracker/st_mesa_to_tgsi.c +++ b/src/mesa/state_tracker/st_mesa_to_tgsi.c @@ -752,37 +752,15 @@ compile_instruction( /** - * Emit the TGSI instructions to adjust the WPOS pixel center convention - * Basically, add (adjX, adjY) to the fragment position. - */ -static void -emit_adjusted_wpos( struct st_translate *t, - const struct gl_program *program, - GLfloat adjX, GLfloat adjY) -{ - struct ureg_program *ureg = t->ureg; - struct ureg_dst wpos_temp = ureg_DECL_temporary(ureg); - struct ureg_src wpos_input = t->inputs[t->inputMapping[FRAG_ATTRIB_WPOS]]; - - /* Note that we bias X and Y and pass Z and W through unchanged. - * The shader might also use gl_FragCoord.w and .z. - */ - ureg_ADD(ureg, wpos_temp, wpos_input, - ureg_imm4f(ureg, adjX, adjY, 0.0f, 0.0f)); - - t->inputs[t->inputMapping[FRAG_ATTRIB_WPOS]] = ureg_src(wpos_temp); -} - - -/** - * Emit the TGSI instructions for inverting the WPOS y coordinate. + * Emit the TGSI instructions for inverting and adjusting WPOS. * This code is unavoidable because it also depends on whether * a FBO is bound (STATE_FB_WPOS_Y_TRANSFORM). */ static void -emit_wpos_inversion( struct st_translate *t, - const struct gl_program *program, - boolean invert) +emit_wpos_adjustment( struct st_translate *t, + const struct gl_program *program, + boolean invert, + GLfloat adjX, GLfloat adjY[2]) { struct ureg_program *ureg = t->ureg; @@ -801,18 +779,38 @@ emit_wpos_inversion( struct st_translate *t, wposTransformState); struct ureg_src wpostrans = ureg_DECL_constant( ureg, wposTransConst ); - struct ureg_dst wpos_temp; + struct ureg_dst wpos_temp = ureg_DECL_temporary( ureg ); struct ureg_src wpos_input = t->inputs[t->inputMapping[FRAG_ATTRIB_WPOS]]; - /* MOV wpos_temp, input[wpos] - */ - if (wpos_input.File == TGSI_FILE_TEMPORARY) - wpos_temp = ureg_dst(wpos_input); - else { - wpos_temp = ureg_DECL_temporary( ureg ); + /* First, apply the coordinate shift: */ + if (adjX || adjY[0] || adjY[1]) { + if (adjY[0] != adjY[1]) { + /* Adjust the y coordinate by adjY[1] or adjY[0] respectively + * depending on whether inversion is actually going to be applied + * or not, which is determined by testing against the inversion + * state variable used below, which will be either +1 or -1. + */ + struct ureg_dst adj_temp = ureg_DECL_temporary(ureg); + + ureg_CMP(ureg, adj_temp, + ureg_scalar(wpostrans, invert ? 2 : 0), + ureg_imm4f(ureg, adjX, adjY[0], 0.0f, 0.0f), + ureg_imm4f(ureg, adjX, adjY[1], 0.0f, 0.0f)); + ureg_ADD(ureg, wpos_temp, wpos_input, ureg_src(adj_temp)); + } else { + ureg_ADD(ureg, wpos_temp, wpos_input, + ureg_imm4f(ureg, adjX, adjY[0], 0.0f, 0.0f)); + } + wpos_input = ureg_src(wpos_temp); + } else { + /* MOV wpos_temp, input[wpos] + */ ureg_MOV( ureg, wpos_temp, wpos_input ); } + /* Now the conditional y flip: STATE_FB_WPOS_Y_TRANSFORM.xy/zw will be + * inversion/identity, or the other way around if we're drawing to an FBO. + */ if (invert) { /* MAD wpos_temp.y, wpos_input, wpostrans.xxxx, wpostrans.yyyy */ @@ -849,8 +847,37 @@ emit_wpos(struct st_context *st, const struct gl_fragment_program *fp = (const struct gl_fragment_program *) program; struct pipe_screen *pscreen = st->pipe->screen; + GLfloat adjX = 0.0f; + GLfloat adjY[2] = { 0.0f, 0.0f }; boolean invert = FALSE; + /* Query the pixel center conventions supported by the pipe driver and set + * adjX, adjY to help out if it cannot handle the requested one internally. + * + * The bias of the y-coordinate depends on whether y-inversion takes place + * (adjY[1]) or not (adjY[0]), which is in turn dependent on whether we are + * drawing to an FBO (causes additional inversion), and whether the the pipe + * driver origin and the requested origin differ (the latter condition is + * stored in the 'invert' variable). + * + * For height = 100 (i = integer, h = half-integer, l = lower, u = upper): + * + * center shift only: + * i -> h: +0.5 + * h -> i: -0.5 + * + * inversion only: + * l,i -> u,i: ( 0.0 + 1.0) * -1 + 100 = 99 + * l,h -> u,h: ( 0.5 + 0.0) * -1 + 100 = 99.5 + * u,i -> l,i: (99.0 + 1.0) * -1 + 100 = 0 + * u,h -> l,h: (99.5 + 0.0) * -1 + 100 = 0.5 + * + * inversion and center shift: + * l,i -> u,h: ( 0.0 + 0.5) * -1 + 100 = 99.5 + * l,h -> u,i: ( 0.5 + 0.5) * -1 + 100 = 99 + * u,i -> l,h: (99.0 + 0.5) * -1 + 100 = 0.5 + * u,h -> l,i: (99.5 + 0.5) * -1 + 100 = 0 + */ if (fp->OriginUpperLeft) { /* Fragment shader wants origin in upper-left */ if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT)) { @@ -878,12 +905,17 @@ emit_wpos(struct st_context *st, if (fp->PixelCenterInteger) { /* Fragment shader wants pixel center integer */ - if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER)) + if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER)) { /* the driver supports pixel center integer */ + adjY[1] = 1.0f; ureg_property_fs_coord_pixel_center(ureg, TGSI_FS_COORD_PIXEL_CENTER_INTEGER); - else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER)) + } + else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER)) { /* the driver supports pixel center half integer, need to bias X,Y */ - emit_adjusted_wpos(t, program, 0.5f, invert ? 0.5f : -0.5f); + adjX = -0.5f; + adjY[0] = -0.5f; + adjY[1] = 0.5f; + } else assert(0); } @@ -894,8 +926,8 @@ emit_wpos(struct st_context *st, } else if (pscreen->get_param(pscreen, PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER)) { /* the driver supports pixel center integer, need to bias X,Y */ + adjX = adjY[0] = adjY[1] = 0.5f; ureg_property_fs_coord_pixel_center(ureg, TGSI_FS_COORD_PIXEL_CENTER_INTEGER); - emit_adjusted_wpos(t, program, 0.5f, invert ? -0.5f : 0.5f); } else assert(0); @@ -903,7 +935,7 @@ emit_wpos(struct st_context *st, /* we invert after adjustment so that we avoid the MOV to temporary, * and reuse the adjustment ADD instead */ - emit_wpos_inversion(t, program, invert); + emit_wpos_adjustment(t, program, invert, adjX, adjY); } diff --git a/src/mesa/state_tracker/st_texture.h b/src/mesa/state_tracker/st_texture.h index 903e30df52f..d50c3c9af79 100644 --- a/src/mesa/state_tracker/st_texture.h +++ b/src/mesa/state_tracker/st_texture.h @@ -163,21 +163,6 @@ 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_accum.c b/src/mesa/swrast/s_accum.c index 88d107a17da..0ec907d7979 100644 --- a/src/mesa/swrast/s_accum.c +++ b/src/mesa/swrast/s_accum.c @@ -24,6 +24,7 @@ #include "main/glheader.h" +#include "main/condrender.h" #include "main/context.h" #include "main/macros.h" #include "main/imports.h" @@ -553,6 +554,9 @@ _swrast_Accum(struct gl_context *ctx, GLenum op, GLfloat value) return; } + if (!_mesa_check_conditional_render(ctx)) + return; + swrast_render_start(ctx); /* Compute region after calling swrast_render_start() so that we know the diff --git a/src/mesa/swrast/s_context.c b/src/mesa/swrast/s_context.c index b3e39689cfa..def1531d7ff 100644 --- a/src/mesa/swrast/s_context.c +++ b/src/mesa/swrast/s_context.c @@ -252,7 +252,6 @@ _swrast_update_fog_state( struct gl_context *ctx ) /* determine if fog is needed, and if so, which fog mode */ swrast->_FogEnabled = (fp == NULL && ctx->Fog.Enabled); - swrast->_FogMode = ctx->Fog.Mode; } diff --git a/src/mesa/swrast/s_context.h b/src/mesa/swrast/s_context.h index 5dbdd609adb..8d7458c2dd9 100644 --- a/src/mesa/swrast/s_context.h +++ b/src/mesa/swrast/s_context.h @@ -135,7 +135,6 @@ typedef struct GLboolean _TextureCombinePrimary; GLboolean _FogEnabled; GLboolean _DeferredTexture; - GLenum _FogMode; /* either GL_FOG_MODE or fragment program's fog mode */ /** List/array of the fragment attributes to interpolate */ GLuint _ActiveAttribs[FRAG_ATTRIB_MAX]; diff --git a/src/mesa/swrast/s_fog.c b/src/mesa/swrast/s_fog.c index d808e2b2a2b..ea59de16020 100644 --- a/src/mesa/swrast/s_fog.c +++ b/src/mesa/swrast/s_fog.c @@ -158,7 +158,7 @@ _swrast_fog_rgba_span( const struct gl_context *ctx, SWspan *span ) /* The span's fog values are fog coordinates, now compute blend factors * and blend the fragment colors with the fog color. */ - switch (swrast->_FogMode) { + switch (ctx->Fog.Mode) { case GL_LINEAR: { const GLfloat fogEnd = ctx->Fog.End; |