diff options
Diffstat (limited to 'src/mesa')
275 files changed, 20996 insertions, 17649 deletions
diff --git a/src/mesa/SConscript b/src/mesa/SConscript index 5fe5d39fb1d..cc4ad09fa33 100644 --- a/src/mesa/SConscript +++ b/src/mesa/SConscript @@ -16,9 +16,12 @@ if env['platform'] == 'windows': env.Append(CPPDEFINES = [ '_GDI32_', # prevent gl* being declared __declspec(dllimport) in MS headers 'BUILD_GL32', # declare gl* as __declspec(dllexport) in Mesa headers - 'WIN32_THREADS', # use Win32 thread API ]) env.Prepend(CPPPATH = ['#src/talloc']) +else: + env.Append(CPPDEFINES = [ + 'IN_DRI_DRIVER', # enable the remap table (for DRI drivers) + ]) # # Source files diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c index 4533d827432..cdb2500f7c2 100644 --- a/src/mesa/drivers/common/meta.c +++ b/src/mesa/drivers/common/meta.c @@ -266,13 +266,16 @@ struct gen_mipmap_state GLuint FBO; }; - +#define MAX_META_OPS_DEPTH 2 /** * All per-context meta state. */ struct gl_meta_state { - struct save_state Save; /**< state saved during meta-ops */ + /** Stack of state saved during meta-ops */ + struct save_state Save[MAX_META_OPS_DEPTH]; + /** Save stack depth */ + GLuint SaveStackDepth; struct temp_texture TempTex; @@ -324,8 +327,13 @@ _mesa_meta_free(struct gl_context *ctx) static void _mesa_meta_begin(struct gl_context *ctx, GLbitfield state) { - struct save_state *save = &ctx->Meta->Save; + struct save_state *save; + + /* hope MAX_META_OPS_DEPTH is large enough */ + assert(ctx->Meta->SaveStackDepth < MAX_META_OPS_DEPTH); + save = &ctx->Meta->Save[ctx->Meta->SaveStackDepth++]; + memset(save, 0, sizeof(*save)); save->SavedState = state; if (state & META_ALPHA_TEST) { @@ -575,7 +583,7 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state) static void _mesa_meta_end(struct gl_context *ctx) { - struct save_state *save = &ctx->Meta->Save; + struct save_state *save = &ctx->Meta->Save[--ctx->Meta->SaveStackDepth]; const GLbitfield state = save->SavedState; if (state & META_ALPHA_TEST) { @@ -1398,6 +1406,7 @@ _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; + const GLuint stencilMax = (1 << ctx->DrawBuffer->Visual.stencilBits) - 1; if (buffers & BUFFER_BITS_COLOR) { /* if clearing color buffers, don't save/restore colormask */ @@ -1453,7 +1462,7 @@ _mesa_meta_Clear(struct gl_context *ctx, GLbitfield buffers) _mesa_StencilOpSeparate(GL_FRONT_AND_BACK, GL_REPLACE, GL_REPLACE, GL_REPLACE); _mesa_StencilFuncSeparate(GL_FRONT_AND_BACK, GL_ALWAYS, - ctx->Stencil.Clear & 0x7fffffff, + ctx->Stencil.Clear & stencilMax, ctx->Stencil.WriteMask[0]); } else { @@ -2593,7 +2602,6 @@ copy_tex_image(struct gl_context *ctx, GLuint dims, GLenum target, GLint level, { struct gl_texture_object *texObj; struct gl_texture_image *texImage; - GLsizei postConvWidth = width, postConvHeight = height; GLenum format, type; GLint bpp; void *buf; @@ -2601,6 +2609,7 @@ copy_tex_image(struct gl_context *ctx, GLuint dims, GLenum target, GLint level, texObj = _mesa_get_current_tex_object(ctx, target); texImage = _mesa_get_tex_image(ctx, texObj, target, level); + /* Choose format/type for temporary image buffer */ format = _mesa_base_tex_format(ctx, internalFormat); type = get_temp_image_type(ctx, format); bpp = _mesa_bytes_per_pixel(format, type); @@ -2632,12 +2641,8 @@ copy_tex_image(struct gl_context *ctx, GLuint dims, GLenum target, GLint level, ctx->Driver.FreeTexImageData(ctx, texImage); } - _mesa_init_teximage_fields(ctx, target, texImage, - postConvWidth, postConvHeight, 1, - border, internalFormat); - - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, GL_NONE, GL_NONE); + /* The texture's format was already chosen in _mesa_CopyTexImage() */ + ASSERT(texImage->TexFormat != MESA_FORMAT_NONE); /* * Store texture data (with pixel transfer ops) @@ -2690,7 +2695,8 @@ _mesa_meta_CopyTexImage2D(struct gl_context *ctx, GLenum target, GLint level, * Have to be careful with locking and meta state for pixel transfer. */ static void -copy_tex_sub_image(struct gl_context *ctx, GLuint dims, GLenum target, GLint level, +copy_tex_sub_image(struct gl_context *ctx, + GLuint dims, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height) @@ -2704,6 +2710,7 @@ copy_tex_sub_image(struct gl_context *ctx, GLuint dims, GLenum target, GLint lev texObj = _mesa_get_current_tex_object(ctx, target); texImage = _mesa_select_tex_image(ctx, texObj, target, level); + /* Choose format/type for temporary image buffer */ format = _mesa_get_format_base_format(texImage->TexFormat); type = get_temp_image_type(ctx, format); bpp = _mesa_bytes_per_pixel(format, type); diff --git a/src/mesa/drivers/dri/Makefile.template b/src/mesa/drivers/dri/Makefile.template index a00018cafa7..4ecddbc0483 100644 --- a/src/mesa/drivers/dri/Makefile.template +++ b/src/mesa/drivers/dri/Makefile.template @@ -86,11 +86,12 @@ subdirs: symlinks: -depend: $(C_SOURCES) $(ASM_SOURCES) $(SYMLINKS) +depend: $(C_SOURCES) $(CXX_SOURCES) $(ASM_SOURCES) $(SYMLINKS) @ echo "running $(MKDEP)" @ rm -f depend @ touch depend - @ $(MKDEP) $(MKDEP_OPTIONS) $(DRIVER_DEFINES) $(INCLUDES) $(C_SOURCES) \ + @ $(MKDEP) $(MKDEP_OPTIONS) $(DRIVER_DEFINES) $(INCLUDES) \ + $(C_SOURCES) $(CXX_SOURCES) \ $(ASM_SOURCES) > /dev/null 2>/dev/null diff --git a/src/mesa/drivers/dri/common/spantmp2.h b/src/mesa/drivers/dri/common/spantmp2.h index abd79562f98..f436d1398c2 100644 --- a/src/mesa/drivers/dri/common/spantmp2.h +++ b/src/mesa/drivers/dri/common/spantmp2.h @@ -48,6 +48,15 @@ #define HW_WRITE_CLIPLOOP() HW_CLIPLOOP() #endif +#ifdef SPANTMP_MESA_FMT +#define SPANTMP_PIXEL_FMT GL_NONE +#define SPANTMP_PIXEL_TYPE GL_NONE +#endif + +#ifndef SPANTMP_MESA_FMT +#define SPANTMP_MESA_FMT MESA_FORMAT_COUNT +#endif + #if (SPANTMP_PIXEL_FMT == GL_RGB) && (SPANTMP_PIXEL_TYPE == GL_UNSIGNED_SHORT_5_6_5) /** @@ -445,6 +454,118 @@ rgba[3] = p; \ } while (0) +#elif (SPANTMP_MESA_FMT == MESA_FORMAT_R8) + +#ifndef GET_VALUE +#ifndef GET_PTR +#define GET_PTR(_x, _y) ( buf + (_x) + (_y) * pitch) +#endif + +#define GET_VALUE(_x, _y) *(volatile GLubyte *)(GET_PTR(_x, _y)) +#define PUT_VALUE(_x, _y, _v) *(volatile GLubyte *)(GET_PTR(_x, _y)) = (_v) +#endif /* GET_VALUE */ + +# define INIT_MONO_PIXEL(p, color) \ + p = color[0] + +# define WRITE_RGBA(_x, _y, r, g, b, a) \ + PUT_VALUE(_x, _y, r) + +#define WRITE_PIXEL(_x, _y, p) PUT_VALUE(_x, _y, p) + +#define READ_RGBA( rgba, _x, _y ) \ + do { \ + GLubyte p = GET_VALUE(_x, _y); \ + rgba[0] = p; \ + rgba[1] = 0; \ + rgba[2] = 0; \ + rgba[3] = 0; \ + } while (0) + +#elif (SPANTMP_MESA_FMT == MESA_FORMAT_RG88) + +#ifndef GET_VALUE +#ifndef GET_PTR +#define GET_PTR(_x, _y) ( buf + (_x) * 2 + (_y) * pitch) +#endif + +#define GET_VALUE(_x, _y) *(volatile GLushort *)(GET_PTR(_x, _y)) +#define PUT_VALUE(_x, _y, _v) *(volatile GLushort *)(GET_PTR(_x, _y)) = (_v) +#endif /* GET_VALUE */ + +# define INIT_MONO_PIXEL(p, color) \ + PACK_COLOR_8888(color[0], color[1], 0, 0) + +# define WRITE_RGBA(_x, _y, r, g, b, a) \ + PUT_VALUE(_x, _y, r) + +#define WRITE_PIXEL(_x, _y, p) PUT_VALUE(_x, _y, p) + +#define READ_RGBA( rgba, _x, _y ) \ + do { \ + GLushort p = GET_VALUE(_x, _y); \ + rgba[0] = p & 0xff; \ + rgba[1] = (p >> 8) & 0xff; \ + rgba[2] = 0; \ + rgba[3] = 0; \ + } while (0) + +#elif (SPANTMP_MESA_FMT == MESA_FORMAT_R16) + +#ifndef GET_VALUE +#ifndef GET_PTR +#define GET_PTR(_x, _y) ( buf + (_x) * 2 + (_y) * pitch) +#endif + +#define GET_VALUE(_x, _y) *(volatile GLushort *)(GET_PTR(_x, _y)) +#define PUT_VALUE(_x, _y, _v) *(volatile GLushort *)(GET_PTR(_x, _y)) = (_v) +#endif /* GET_VALUE */ + +# define INIT_MONO_PIXEL(p, color) \ + p = color[0] + +# define WRITE_RGBA(_x, _y, r, g, b, a) \ + PUT_VALUE(_x, _y, r) + +#define WRITE_PIXEL(_x, _y, p) PUT_VALUE(_x, _y, p) + +#define READ_RGBA( rgba, _x, _y ) \ + do { \ + GLushort p = GET_VALUE(_x, _y); \ + rgba[0] = p; \ + rgba[1] = 0; \ + rgba[2] = 0; \ + rgba[3] = 0; \ + } while (0) + +#elif (SPANTMP_MESA_FMT == MESA_FORMAT_RG1616) + +#ifndef GET_VALUE +#ifndef GET_PTR +#define GET_PTR(_x, _y) ( buf + (_x) * 4 + (_y) * pitch) +#endif + +#define GET_VALUE(_x, _y) *(volatile GLuint *)(GET_PTR(_x, _y)) +#define PUT_VALUE(_x, _y, _v) *(volatile GLuint *)(GET_PTR(_x, _y)) = (_v) +#endif /* GET_VALUE */ + +# define INIT_MONO_PIXEL(p, color) \ + ((color[1] << 16) | (color[0])) + +# define WRITE_RGBA(_x, _y, r, g, b, a) \ + PUT_VALUE(_x, _y, r) + +#define WRITE_PIXEL(_x, _y, p) PUT_VALUE(_x, _y, p) + +#define READ_RGBA( rgba, _x, _y ) \ + do { \ + GLuint p = GET_VALUE(_x, _y); \ + rgba[0] = p & 0xffff; \ + rgba[1] = (p >> 16) & 0xffff; \ + rgba[2] = 0; \ + rgba[3] = 0; \ + } while (0) + #else #error SPANTMP_PIXEL_FMT must be set to a valid value! #endif @@ -914,3 +1035,4 @@ static void TAG(InitPointers)(struct gl_renderbuffer *rb) #undef GET_PTR #undef SPANTMP_PIXEL_FMT #undef SPANTMP_PIXEL_TYPE +#undef SPANTMP_MESA_FMT diff --git a/src/mesa/drivers/dri/i915/i830_vtbl.c b/src/mesa/drivers/dri/i915/i830_vtbl.c index f7fdb78d059..1621c9544ac 100644 --- a/src/mesa/drivers/dri/i915/i830_vtbl.c +++ b/src/mesa/drivers/dri/i915/i830_vtbl.c @@ -364,7 +364,7 @@ i830_emit_invarient_state(struct intel_context *intel) #define emit( intel, state, size ) \ - intel_batchbuffer_data(intel->batch, state, size ) + intel_batchbuffer_data(intel->batch, state, size, false) static GLuint get_dirty(struct i830_hw_state *state) @@ -429,7 +429,8 @@ i830_emit_state(struct intel_context *intel) * batchbuffer fills up. */ intel_batchbuffer_require_space(intel->batch, - get_state_size(state) + INTEL_PRIM_EMIT_SIZE); + get_state_size(state) + INTEL_PRIM_EMIT_SIZE, + false); count = 0; again: aper_count = 0; diff --git a/src/mesa/drivers/dri/i915/i915_context.c b/src/mesa/drivers/dri/i915/i915_context.c index f943f81dd05..f32f3cf6020 100644 --- a/src/mesa/drivers/dri/i915/i915_context.c +++ b/src/mesa/drivers/dri/i915/i915_context.c @@ -176,6 +176,7 @@ i915CreateContext(int api, ctx->ShaderCompilerOptions[MESA_SHADER_VERTEX].EmitCondCodes = GL_TRUE; ctx->ShaderCompilerOptions[MESA_SHADER_FRAGMENT].EmitNoIfs = GL_TRUE; ctx->ShaderCompilerOptions[MESA_SHADER_FRAGMENT].EmitNoNoise = GL_TRUE; + ctx->ShaderCompilerOptions[MESA_SHADER_FRAGMENT].EmitNoPow = GL_TRUE; ctx->Const.MaxDrawBuffers = 1; diff --git a/src/mesa/drivers/dri/i915/i915_fragprog.c b/src/mesa/drivers/dri/i915/i915_fragprog.c index c00ee415b6b..1c6e9845172 100644 --- a/src/mesa/drivers/dri/i915/i915_fragprog.c +++ b/src/mesa/drivers/dri/i915/i915_fragprog.c @@ -569,10 +569,14 @@ upload_program(struct i915_fragment_program *p) if (inst->DstReg.CondMask == COND_TR) { tmp = i915_get_utemp(p); + /* The KIL instruction discards the fragment if any component of + * the source is < 0. Emit an immediate operand of {-1}.xywz. + */ i915_emit_texld(p, get_live_regs(p, inst), tmp, A0_DEST_CHANNEL_ALL, 0, /* use a dummy dest reg */ - swizzle(tmp, ONE, ONE, ONE, ONE), /* always */ + negate(swizzle(tmp, ONE, ONE, ONE, ONE), + 1, 1, 1, 1), T0_TEXKILL); } else { p->error = 1; @@ -1158,11 +1162,6 @@ translate_program(struct i915_fragment_program *p) fixup_depth_write(p); i915_fini_program(p); - if (INTEL_DEBUG & DEBUG_WM) { - printf("i915:\n"); - i915_disassemble_program(i915->state.Program, i915->state.ProgramSize); - } - p->translated = 1; } @@ -1423,6 +1422,11 @@ i915ValidateFragmentProgram(struct i915_context *i915) if (!p->on_hardware) i915_upload_program(i915, p); + + if (INTEL_DEBUG & DEBUG_WM) { + printf("i915:\n"); + i915_disassemble_program(i915->state.Program, i915->state.ProgramSize); + } } void diff --git a/src/mesa/drivers/dri/i915/i915_vtbl.c b/src/mesa/drivers/dri/i915/i915_vtbl.c index 59dfe085632..8d9020f5ef3 100644 --- a/src/mesa/drivers/dri/i915/i915_vtbl.c +++ b/src/mesa/drivers/dri/i915/i915_vtbl.c @@ -217,7 +217,7 @@ i915_emit_invarient_state(struct intel_context *intel) #define emit(intel, state, size ) \ - intel_batchbuffer_data(intel->batch, state, size) + intel_batchbuffer_data(intel->batch, state, size, false) static GLuint get_dirty(struct i915_hw_state *state) @@ -300,7 +300,8 @@ i915_emit_state(struct intel_context *intel) * batchbuffer fills up. */ intel_batchbuffer_require_space(intel->batch, - get_state_size(state) + INTEL_PRIM_EMIT_SIZE); + get_state_size(state) + INTEL_PRIM_EMIT_SIZE, + false); count = 0; again: aper_count = 0; diff --git a/src/mesa/drivers/dri/i965/Makefile b/src/mesa/drivers/dri/i965/Makefile index e3ca863fe51..7c3ac0c14ef 100644 --- a/src/mesa/drivers/dri/i965/Makefile +++ b/src/mesa/drivers/dri/i965/Makefile @@ -81,7 +81,6 @@ DRIVER_SOURCES = \ brw_wm_emit.c \ brw_wm_fp.c \ brw_wm_iz.c \ - brw_wm_glsl.c \ brw_wm_pass0.c \ brw_wm_pass1.c \ brw_wm_pass2.c \ diff --git a/src/mesa/drivers/dri/i965/brw_cc.c b/src/mesa/drivers/dri/i965/brw_cc.c index a8369b07c35..d3a1233aac0 100644 --- a/src/mesa/drivers/dri/i965/brw_cc.c +++ b/src/mesa/drivers/dri/i965/brw_cc.c @@ -232,3 +232,28 @@ const struct brw_tracked_state brw_cc_unit = { .prepare = prepare_cc_unit, .emit = upload_cc_unit, }; + +static void upload_blend_constant_color(struct brw_context *brw) +{ + struct gl_context *ctx = &brw->intel.ctx; + struct brw_blend_constant_color bcc; + + memset(&bcc, 0, sizeof(bcc)); + bcc.header.opcode = CMD_BLEND_CONSTANT_COLOR; + bcc.header.length = sizeof(bcc)/4-2; + bcc.blend_constant_color[0] = ctx->Color.BlendColor[0]; + bcc.blend_constant_color[1] = ctx->Color.BlendColor[1]; + bcc.blend_constant_color[2] = ctx->Color.BlendColor[2]; + bcc.blend_constant_color[3] = ctx->Color.BlendColor[3]; + + BRW_CACHED_BATCH_STRUCT(brw, &bcc); +} + +const struct brw_tracked_state brw_blend_constant_color = { + .dirty = { + .mesa = _NEW_COLOR, + .brw = BRW_NEW_CONTEXT, + .cache = 0 + }, + .emit = upload_blend_constant_color +}; diff --git a/src/mesa/drivers/dri/i965/brw_context.c b/src/mesa/drivers/dri/i965/brw_context.c index cb0a8b96c9c..28549f2574a 100644 --- a/src/mesa/drivers/dri/i965/brw_context.c +++ b/src/mesa/drivers/dri/i965/brw_context.c @@ -122,9 +122,6 @@ GLboolean brwCreateContext( int api, (i == MESA_SHADER_FRAGMENT); ctx->ShaderCompilerOptions[i].EmitNoIndirectTemp = (i == MESA_SHADER_FRAGMENT); - - if (intel->gen == 6) - ctx->ShaderCompilerOptions[i].EmitNoIfs = (i == MESA_SHADER_VERTEX); } ctx->Const.VertexProgram.MaxNativeInstructions = (16 * 1024); diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h index 335339515a2..7069724466a 100644 --- a/src/mesa/drivers/dri/i965/brw_context.h +++ b/src/mesa/drivers/dri/i965/brw_context.h @@ -171,7 +171,6 @@ struct brw_vertex_program { struct brw_fragment_program { struct gl_fragment_program program; GLuint id; /**< serial no. to identify frag progs, never re-used */ - GLboolean isGLSL; /**< really, any IF/LOOP/CONT/BREAK instructions */ /** for debugging, which texture units are referenced */ GLbitfield tex_units_used; @@ -211,6 +210,7 @@ struct brw_wm_prog_data { GLuint nr_params; /**< number of float params/constants */ GLuint nr_pull_params; GLboolean error; + int dispatch_width; /* Pointer to tracked values (only valid once * _mesa_load_state_parameters has been called at runtime). diff --git a/src/mesa/drivers/dri/i965/brw_curbe.c b/src/mesa/drivers/dri/i965/brw_curbe.c index 7b823eb201b..877b22fec19 100644 --- a/src/mesa/drivers/dri/i965/brw_curbe.c +++ b/src/mesa/drivers/dri/i965/brw_curbe.c @@ -242,21 +242,13 @@ static void prepare_constant_buffer(struct brw_context *brw) GLuint offset = brw->curbe.vs_start * 16; GLuint nr = brw->vs.prog_data->nr_params / 4; - if (vp->use_const_buffer) { - /* Load the subset of push constants that will get used when - * we also have a pull constant buffer. - */ - for (i = 0; i < vp->program.Base.Parameters->NumParameters; i++) { - if (brw->vs.constant_map[i] != -1) { - assert(brw->vs.constant_map[i] <= nr); - memcpy(buf + offset + brw->vs.constant_map[i] * 4, - vp->program.Base.Parameters->ParameterValues[i], - 4 * sizeof(float)); - } - } - } else { - for (i = 0; i < nr; i++) { - memcpy(buf + offset + i * 4, + /* Load the subset of push constants that will get used when + * we also have a pull constant buffer. + */ + for (i = 0; i < vp->program.Base.Parameters->NumParameters; i++) { + if (brw->vs.constant_map[i] != -1) { + assert(brw->vs.constant_map[i] <= nr); + memcpy(buf + offset + brw->vs.constant_map[i] * 4, vp->program.Base.Parameters->ParameterValues[i], 4 * sizeof(float)); } diff --git a/src/mesa/drivers/dri/i965/brw_defines.h b/src/mesa/drivers/dri/i965/brw_defines.h index 239586a0366..b48a30d6be9 100644 --- a/src/mesa/drivers/dri/i965/brw_defines.h +++ b/src/mesa/drivers/dri/i965/brw_defines.h @@ -462,6 +462,13 @@ #define BRW_COMPRESSION_2NDHALF 1 #define BRW_COMPRESSION_COMPRESSED 2 +#define GEN6_COMPRESSION_1Q 0 +#define GEN6_COMPRESSION_2Q 1 +#define GEN6_COMPRESSION_3Q 2 +#define GEN6_COMPRESSION_4Q 3 +#define GEN6_COMPRESSION_1H 0 +#define GEN6_COMPRESSION_2H 2 + #define BRW_CONDITIONAL_NONE 0 #define BRW_CONDITIONAL_Z 1 #define BRW_CONDITIONAL_NZ 2 @@ -899,6 +906,8 @@ # define GEN6_VS_VECTOR_MASK_ENABLE (1 << 30) # define GEN6_VS_SAMPLER_COUNT_SHIFT 27 # define GEN6_VS_BINDING_TABLE_ENTRY_COUNT_SHIFT 18 +# define GEN6_VS_FLOATING_POINT_MODE_IEEE_754 (0 << 16) +# define GEN6_VS_FLOATING_POINT_MODE_ALT (1 << 16) /* DW4 */ # define GEN6_VS_DISPATCH_START_GRF_SHIFT 20 # define GEN6_VS_URB_READ_LENGTH_SHIFT 11 @@ -1022,6 +1031,13 @@ # define ATTRIBUTE_0_CONST_SOURCE_SHIFT 9 # define ATTRIBUTE_0_SWIZZLE_SHIFT 6 # define ATTRIBUTE_0_SOURCE_SHIFT 0 + +# define ATTRIBUTE_SWIZZLE_INPUTATTR 0 +# define ATTRIBUTE_SWIZZLE_INPUTATTR_FACING 1 +# define ATTRIBUTE_SWIZZLE_INPUTATTR_W 2 +# define ATTRIBUTE_SWIZZLE_INPUTATTR_FACING_W 3 +# define ATTRIBUTE_SWIZZLE_SHIFT 6 + /* DW16: Point sprite texture coordinate enables */ /* DW17: Constant interpolation enables */ /* DW18: attr 0-7 wrap shortest enables */ @@ -1034,6 +1050,8 @@ # define GEN6_WM_VECTOR_MASK_ENABLE (1 << 30) # define GEN6_WM_SAMPLER_COUNT_SHIFT 27 # define GEN6_WM_BINDING_TABLE_ENTRY_COUNT_SHIFT 18 +# define GEN6_WM_FLOATING_POINT_MODE_IEEE_754 (0 << 16) +# define GEN6_WM_FLOATING_POINT_MODE_ALT (1 << 16) /* DW3: scratch space */ /* DW4 */ # define GEN6_WM_STATISTICS_ENABLE (1 << 31) diff --git a/src/mesa/drivers/dri/i965/brw_disasm.c b/src/mesa/drivers/dri/i965/brw_disasm.c index 962c04128b8..6b61f7af15d 100644 --- a/src/mesa/drivers/dri/i965/brw_disasm.c +++ b/src/mesa/drivers/dri/i965/brw_disasm.c @@ -899,7 +899,8 @@ int brw_disasm (FILE *file, struct brw_instruction *inst, int gen) err |= dest (file, inst); } else if (gen >= 6 && (inst->header.opcode == BRW_OPCODE_IF || inst->header.opcode == BRW_OPCODE_ELSE || - inst->header.opcode == BRW_OPCODE_ENDIF)) { + inst->header.opcode == BRW_OPCODE_ENDIF || + inst->header.opcode == BRW_OPCODE_WHILE)) { format (file, " %d", inst->bits1.branch_gen6.jump_count); } diff --git a/src/mesa/drivers/dri/i965/brw_draw.c b/src/mesa/drivers/dri/i965/brw_draw.c index a1f403ca4e6..7eb16b71f4a 100644 --- a/src/mesa/drivers/dri/i965/brw_draw.c +++ b/src/mesa/drivers/dri/i965/brw_draw.c @@ -159,7 +159,7 @@ static void brw_emit_prim(struct brw_context *brw, } if (prim_packet.verts_per_instance) { intel_batchbuffer_data( brw->intel.batch, &prim_packet, - sizeof(prim_packet)); + sizeof(prim_packet), false); } if (intel->always_flush_cache) { intel_batchbuffer_emit_mi_flush(intel->batch); @@ -351,7 +351,8 @@ static GLboolean brw_try_draw_prims( struct gl_context *ctx, * an upper bound of how much we might emit in a single * brw_try_draw_prims(). */ - intel_batchbuffer_require_space(intel->batch, intel->batch->size / 4); + intel_batchbuffer_require_space(intel->batch, intel->batch->size / 4, + false); hw_prim = brw_set_prim(brw, &prim[i]); diff --git a/src/mesa/drivers/dri/i965/brw_eu.c b/src/mesa/drivers/dri/i965/brw_eu.c index 2ff39e8e64a..3b5c4c071e3 100644 --- a/src/mesa/drivers/dri/i965/brw_eu.c +++ b/src/mesa/drivers/dri/i965/brw_eu.c @@ -72,7 +72,37 @@ void brw_set_access_mode( struct brw_compile *p, GLuint access_mode ) void brw_set_compression_control( struct brw_compile *p, GLboolean compression_control ) { - p->current->header.compression_control = compression_control; + p->compressed = (compression_control == BRW_COMPRESSION_COMPRESSED); + + if (p->brw->intel.gen >= 6) { + /* Since we don't use the 32-wide support in gen6, we translate + * the pre-gen6 compression control here. + */ + switch (compression_control) { + case BRW_COMPRESSION_NONE: + /* This is the "use the first set of bits of dmask/vmask/arf + * according to execsize" option. + */ + p->current->header.compression_control = GEN6_COMPRESSION_1Q; + break; + case BRW_COMPRESSION_2NDHALF: + /* For 8-wide, this is "use the second set of 8 bits." */ + p->current->header.compression_control = GEN6_COMPRESSION_2Q; + break; + case BRW_COMPRESSION_COMPRESSED: + /* For 16-wide instruction compression, use the first set of 16 bits + * since we don't do 32-wide dispatch. + */ + p->current->header.compression_control = GEN6_COMPRESSION_1H; + break; + default: + assert(!"not reached"); + p->current->header.compression_control = GEN6_COMPRESSION_1H; + break; + } + } else { + p->current->header.compression_control = compression_control; + } } void brw_set_mask_control( struct brw_compile *p, GLuint value ) @@ -95,6 +125,7 @@ void brw_push_insn_state( struct brw_compile *p ) { assert(p->current != &p->stack[BRW_EU_MAX_INSN_STACK-1]); memcpy(p->current+1, p->current, sizeof(struct brw_instruction)); + p->compressed_stack[p->current - p->stack] = p->compressed; p->current++; } @@ -102,6 +133,7 @@ void brw_pop_insn_state( struct brw_compile *p ) { assert(p->current != p->stack); p->current--; + p->compressed = p->compressed_stack[p->current - p->stack]; } @@ -112,6 +144,7 @@ void brw_init_compile( struct brw_context *brw, struct brw_compile *p ) p->brw = brw; p->nr_insn = 0; p->current = p->stack; + p->compressed = false; memset(p->current, 0, sizeof(p->current[0])); /* Some defaults? diff --git a/src/mesa/drivers/dri/i965/brw_eu.h b/src/mesa/drivers/dri/i965/brw_eu.h index b4538e6e8a7..4dbdc522100 100644 --- a/src/mesa/drivers/dri/i965/brw_eu.h +++ b/src/mesa/drivers/dri/i965/brw_eu.h @@ -33,6 +33,7 @@ #ifndef BRW_EU_H #define BRW_EU_H +#include <stdbool.h> #include "brw_structs.h" #include "brw_defines.h" #include "program/prog_instruction.h" @@ -106,10 +107,12 @@ struct brw_compile { /* Allow clients to push/pop instruction state: */ struct brw_instruction stack[BRW_EU_MAX_INSN_STACK]; + bool compressed_stack[BRW_EU_MAX_INSN_STACK]; struct brw_instruction *current; GLuint flag_value; GLboolean single_program_flow; + bool compressed; struct brw_context *brw; struct brw_glsl_label *first_label; /**< linked list of labels */ @@ -954,6 +957,8 @@ struct brw_instruction *brw_WHILE(struct brw_compile *p, struct brw_instruction *patch_insn); struct brw_instruction *brw_BREAK(struct brw_compile *p, int pop_count); +struct brw_instruction *brw_CONT_gen6(struct brw_compile *p, + struct brw_instruction *do_insn); struct brw_instruction *brw_CONT(struct brw_compile *p, int pop_count); /* Forward jumps: */ @@ -1009,6 +1014,7 @@ void brw_math_invert( struct brw_compile *p, void brw_set_src1( struct brw_instruction *insn, struct brw_reg reg ); +void brw_set_uip_jip(struct brw_compile *p); /* brw_optimize.c */ void brw_optimize(struct brw_compile *p); diff --git a/src/mesa/drivers/dri/i965/brw_eu_emit.c b/src/mesa/drivers/dri/i965/brw_eu_emit.c index 9cb941dacfd..9c764fe779d 100644 --- a/src/mesa/drivers/dri/i965/brw_eu_emit.c +++ b/src/mesa/drivers/dri/i965/brw_eu_emit.c @@ -41,19 +41,20 @@ * Internal helper for constructing instructions */ -static void guess_execution_size( struct brw_instruction *insn, - struct brw_reg reg ) +static void guess_execution_size(struct brw_compile *p, + struct brw_instruction *insn, + struct brw_reg reg) { - if (reg.width == BRW_WIDTH_8 && - insn->header.compression_control == BRW_COMPRESSION_COMPRESSED) + if (reg.width == BRW_WIDTH_8 && p->compressed) insn->header.execution_size = BRW_EXECUTE_16; else insn->header.execution_size = reg.width; /* note - definitions are compatible */ } -static void brw_set_dest( struct brw_instruction *insn, - struct brw_reg dest ) +static void brw_set_dest(struct brw_compile *p, + struct brw_instruction *insn, + struct brw_reg dest) { if (dest.file != BRW_ARCHITECTURE_REGISTER_FILE && dest.file != BRW_MESSAGE_REGISTER_FILE) @@ -100,7 +101,7 @@ static void brw_set_dest( struct brw_instruction *insn, /* NEW: Set the execution size based on dest.width and * insn->compression_control: */ - guess_execution_size(insn, dest); + guess_execution_size(p, insn, dest); } extern int reg_type_size[]; @@ -629,7 +630,7 @@ static struct brw_instruction *brw_alu1( struct brw_compile *p, struct brw_reg src ) { struct brw_instruction *insn = next_insn(p, opcode); - brw_set_dest(insn, dest); + brw_set_dest(p, insn, dest); brw_set_src0(insn, src); return insn; } @@ -641,7 +642,7 @@ static struct brw_instruction *brw_alu2(struct brw_compile *p, struct brw_reg src1 ) { struct brw_instruction *insn = next_insn(p, opcode); - brw_set_dest(insn, dest); + brw_set_dest(p, insn, dest); brw_set_src0(insn, src0); brw_set_src1(insn, src1); return insn; @@ -680,7 +681,7 @@ void brw_##OP(struct brw_compile *p, \ { \ struct brw_instruction *rnd, *add; \ rnd = next_insn(p, BRW_OPCODE_##OP); \ - brw_set_dest(rnd, dest); \ + brw_set_dest(p, rnd, dest); \ brw_set_src0(rnd, src); \ rnd->header.destreg__conditionalmod = 0x7; /* turn on round-increments */ \ \ @@ -779,7 +780,7 @@ struct brw_instruction *brw_MUL(struct brw_compile *p, void brw_NOP(struct brw_compile *p) { struct brw_instruction *insn = next_insn(p, BRW_OPCODE_NOP); - brw_set_dest(insn, retype(brw_vec4_grf(0,0), BRW_REGISTER_TYPE_UD)); + brw_set_dest(p, insn, retype(brw_vec4_grf(0,0), BRW_REGISTER_TYPE_UD)); brw_set_src0(insn, retype(brw_vec4_grf(0,0), BRW_REGISTER_TYPE_UD)); brw_set_src1(insn, brw_imm_ud(0x0)); } @@ -840,11 +841,11 @@ struct brw_instruction *brw_IF(struct brw_compile *p, GLuint execute_size) /* Override the defaults for this instruction: */ if (intel->gen < 6) { - brw_set_dest(insn, brw_ip_reg()); + brw_set_dest(p, insn, brw_ip_reg()); brw_set_src0(insn, brw_ip_reg()); brw_set_src1(insn, brw_imm_d(0x0)); } else { - brw_set_dest(insn, brw_imm_w(0)); + brw_set_dest(p, insn, brw_imm_w(0)); insn->bits1.branch_gen6.jump_count = 0; brw_set_src0(insn, retype(brw_null_reg(), BRW_REGISTER_TYPE_D)); brw_set_src1(insn, retype(brw_null_reg(), BRW_REGISTER_TYPE_D)); @@ -870,7 +871,7 @@ brw_IF_gen6(struct brw_compile *p, uint32_t conditional, insn = next_insn(p, BRW_OPCODE_IF); - brw_set_dest(insn, brw_imm_w(0)); + brw_set_dest(p, insn, brw_imm_w(0)); insn->header.execution_size = BRW_EXECUTE_8; insn->bits1.branch_gen6.jump_count = 0; brw_set_src0(insn, src0); @@ -905,11 +906,11 @@ struct brw_instruction *brw_ELSE(struct brw_compile *p, } if (intel->gen < 6) { - brw_set_dest(insn, brw_ip_reg()); + brw_set_dest(p, insn, brw_ip_reg()); brw_set_src0(insn, brw_ip_reg()); brw_set_src1(insn, brw_imm_d(0x0)); } else { - brw_set_dest(insn, brw_imm_w(0)); + brw_set_dest(p, insn, brw_imm_w(0)); insn->bits1.branch_gen6.jump_count = 0; brw_set_src0(insn, retype(brw_null_reg(), BRW_REGISTER_TYPE_D)); brw_set_src1(insn, retype(brw_null_reg(), BRW_REGISTER_TYPE_D)); @@ -965,11 +966,11 @@ void brw_ENDIF(struct brw_compile *p, struct brw_instruction *insn = next_insn(p, BRW_OPCODE_ENDIF); if (intel->gen < 6) { - brw_set_dest(insn, retype(brw_vec4_grf(0,0), BRW_REGISTER_TYPE_UD)); + brw_set_dest(p, insn, retype(brw_vec4_grf(0,0), BRW_REGISTER_TYPE_UD)); brw_set_src0(insn, retype(brw_vec4_grf(0,0), BRW_REGISTER_TYPE_UD)); brw_set_src1(insn, brw_imm_d(0x0)); } else { - brw_set_dest(insn, brw_imm_w(0)); + brw_set_dest(p, insn, brw_imm_w(0)); brw_set_src0(insn, retype(brw_null_reg(), BRW_REGISTER_TYPE_D)); brw_set_src1(insn, retype(brw_null_reg(), BRW_REGISTER_TYPE_D)); } @@ -1029,16 +1030,44 @@ void brw_ENDIF(struct brw_compile *p, struct brw_instruction *brw_BREAK(struct brw_compile *p, int pop_count) { + struct intel_context *intel = &p->brw->intel; struct brw_instruction *insn; + insn = next_insn(p, BRW_OPCODE_BREAK); - brw_set_dest(insn, brw_ip_reg()); + if (intel->gen >= 6) { + brw_set_dest(p, insn, retype(brw_null_reg(), BRW_REGISTER_TYPE_D)); + brw_set_src0(insn, retype(brw_null_reg(), BRW_REGISTER_TYPE_D)); + brw_set_src1(insn, brw_imm_d(0x0)); + } else { + brw_set_dest(p, insn, brw_ip_reg()); + brw_set_src0(insn, brw_ip_reg()); + brw_set_src1(insn, brw_imm_d(0x0)); + insn->bits3.if_else.pad0 = 0; + insn->bits3.if_else.pop_count = pop_count; + } + insn->header.compression_control = BRW_COMPRESSION_NONE; + insn->header.execution_size = BRW_EXECUTE_8; + + return insn; +} + +struct brw_instruction *brw_CONT_gen6(struct brw_compile *p, + struct brw_instruction *do_insn) +{ + struct brw_instruction *insn; + int br = 2; + + insn = next_insn(p, BRW_OPCODE_CONTINUE); + brw_set_dest(p, insn, retype(brw_null_reg(), BRW_REGISTER_TYPE_D)); + brw_set_src0(insn, retype(brw_null_reg(), BRW_REGISTER_TYPE_D)); + brw_set_dest(p, insn, brw_ip_reg()); brw_set_src0(insn, brw_ip_reg()); brw_set_src1(insn, brw_imm_d(0x0)); + + insn->bits3.break_cont.uip = br * (do_insn - insn); + insn->header.compression_control = BRW_COMPRESSION_NONE; insn->header.execution_size = BRW_EXECUTE_8; - /* insn->header.mask_control = BRW_MASK_DISABLE; */ - insn->bits3.if_else.pad0 = 0; - insn->bits3.if_else.pop_count = pop_count; return insn; } @@ -1046,7 +1075,7 @@ struct brw_instruction *brw_CONT(struct brw_compile *p, int pop_count) { struct brw_instruction *insn; insn = next_insn(p, BRW_OPCODE_CONTINUE); - brw_set_dest(insn, brw_ip_reg()); + brw_set_dest(p, insn, brw_ip_reg()); brw_set_src0(insn, brw_ip_reg()); brw_set_src1(insn, brw_imm_d(0x0)); insn->header.compression_control = BRW_COMPRESSION_NONE; @@ -1058,17 +1087,33 @@ struct brw_instruction *brw_CONT(struct brw_compile *p, int pop_count) } /* DO/WHILE loop: + * + * The DO/WHILE is just an unterminated loop -- break or continue are + * used for control within the loop. We have a few ways they can be + * done. + * + * For uniform control flow, the WHILE is just a jump, so ADD ip, ip, + * jip and no DO instruction. + * + * For non-uniform control flow pre-gen6, there's a DO instruction to + * push the mask, and a WHILE to jump back, and BREAK to get out and + * pop the mask. + * + * For gen6, there's no more mask stack, so no need for DO. WHILE + * just points back to the first instruction of the loop. */ struct brw_instruction *brw_DO(struct brw_compile *p, GLuint execute_size) { - if (p->single_program_flow) { + struct intel_context *intel = &p->brw->intel; + + if (intel->gen >= 6 || p->single_program_flow) { return &p->store[p->nr_insn]; } else { struct brw_instruction *insn = next_insn(p, BRW_OPCODE_DO); /* Override the defaults for this instruction: */ - brw_set_dest(insn, brw_null_reg()); + brw_set_dest(p, insn, brw_null_reg()); brw_set_src0(insn, brw_null_reg()); brw_set_src1(insn, brw_null_reg()); @@ -1094,34 +1139,42 @@ struct brw_instruction *brw_WHILE(struct brw_compile *p, if (intel->gen >= 5) br = 2; - if (p->single_program_flow) - insn = next_insn(p, BRW_OPCODE_ADD); - else + if (intel->gen >= 6) { insn = next_insn(p, BRW_OPCODE_WHILE); - brw_set_dest(insn, brw_ip_reg()); - brw_set_src0(insn, brw_ip_reg()); - brw_set_src1(insn, brw_imm_d(0x0)); + brw_set_dest(p, insn, brw_imm_w(0)); + insn->bits1.branch_gen6.jump_count = br * (do_insn - insn); + brw_set_src0(insn, retype(brw_null_reg(), BRW_REGISTER_TYPE_D)); + brw_set_src1(insn, retype(brw_null_reg(), BRW_REGISTER_TYPE_D)); - insn->header.compression_control = BRW_COMPRESSION_NONE; + insn->header.execution_size = do_insn->header.execution_size; + assert(insn->header.execution_size == BRW_EXECUTE_8); + } else { + if (p->single_program_flow) { + insn = next_insn(p, BRW_OPCODE_ADD); - if (p->single_program_flow) { - insn->header.execution_size = BRW_EXECUTE_1; + brw_set_dest(p, insn, brw_ip_reg()); + brw_set_src0(insn, brw_ip_reg()); + brw_set_src1(insn, brw_imm_d((do_insn - insn) * 16)); + insn->header.execution_size = BRW_EXECUTE_1; + } else { + insn = next_insn(p, BRW_OPCODE_WHILE); - insn->bits3.d = (do_insn - insn) * 16; - } else { - insn->header.execution_size = do_insn->header.execution_size; + assert(do_insn->header.opcode == BRW_OPCODE_DO); - assert(do_insn->header.opcode == BRW_OPCODE_DO); - insn->bits3.if_else.jump_count = br * (do_insn - insn + 1); - insn->bits3.if_else.pop_count = 0; - insn->bits3.if_else.pad0 = 0; - } + brw_set_dest(p, insn, brw_ip_reg()); + brw_set_src0(insn, brw_ip_reg()); + brw_set_src1(insn, brw_imm_d(0)); -/* insn->header.mask_control = BRW_MASK_ENABLE; */ + insn->header.execution_size = do_insn->header.execution_size; + insn->bits3.if_else.jump_count = br * (do_insn - insn + 1); + insn->bits3.if_else.pop_count = 0; + insn->bits3.if_else.pad0 = 0; + } + } + insn->header.compression_control = BRW_COMPRESSION_NONE; + p->current->header.predicate_control = BRW_PREDICATE_NONE; - /* insn->header.mask_control = BRW_MASK_DISABLE; */ - p->current->header.predicate_control = BRW_PREDICATE_NONE; return insn; } @@ -1159,7 +1212,7 @@ void brw_CMP(struct brw_compile *p, struct brw_instruction *insn = next_insn(p, BRW_OPCODE_CMP); insn->header.destreg__conditionalmod = conditional; - brw_set_dest(insn, dest); + brw_set_dest(p, insn, dest); brw_set_src0(insn, src0); brw_set_src1(insn, src1); @@ -1184,7 +1237,7 @@ void brw_WAIT (struct brw_compile *p) struct brw_instruction *insn = next_insn(p, BRW_OPCODE_WAIT); struct brw_reg src = brw_notification_1_reg(); - brw_set_dest(insn, src); + brw_set_dest(p, insn, src); brw_set_src0(insn, src); brw_set_src1(insn, brw_null_reg()); insn->header.execution_size = 0; /* must */ @@ -1219,6 +1272,10 @@ void brw_math( struct brw_compile *p, assert(dest.hstride == BRW_HORIZONTAL_STRIDE_1); assert(src.hstride == BRW_HORIZONTAL_STRIDE_1); + /* Source modifiers are ignored for extended math instructions. */ + assert(!src.negate); + assert(!src.abs); + if (function != BRW_MATH_FUNCTION_INT_DIV_QUOTIENT && function != BRW_MATH_FUNCTION_INT_DIV_QUOTIENT_AND_REMAINDER) { assert(src.type == BRW_REGISTER_TYPE_F); @@ -1228,8 +1285,9 @@ void brw_math( struct brw_compile *p, * becomes FC[3:0] and ThreadCtrl becomes FC[5:4]. */ insn->header.destreg__conditionalmod = function; + insn->header.saturate = saturate; - brw_set_dest(insn, dest); + brw_set_dest(p, insn, dest); brw_set_src0(insn, src); brw_set_src1(insn, brw_null_reg()); } else { @@ -1242,7 +1300,7 @@ void brw_math( struct brw_compile *p, insn->header.predicate_control = 0; insn->header.destreg__conditionalmod = msg_reg_nr; - brw_set_dest(insn, dest); + brw_set_dest(p, insn, dest); brw_set_src0(insn, src); brw_set_math_message(p->brw, insn, @@ -1284,12 +1342,18 @@ void brw_math2(struct brw_compile *p, assert(src1.type == BRW_REGISTER_TYPE_F); } + /* Source modifiers are ignored for extended math instructions. */ + assert(!src0.negate); + assert(!src0.abs); + assert(!src1.negate); + assert(!src1.abs); + /* Math is the same ISA format as other opcodes, except that CondModifier * becomes FC[3:0] and ThreadCtrl becomes FC[5:4]. */ insn->header.destreg__conditionalmod = function; - brw_set_dest(insn, dest); + brw_set_dest(p, insn, dest); brw_set_src0(insn, src0); brw_set_src1(insn, src1); } @@ -1318,8 +1382,13 @@ void brw_math_16( struct brw_compile *p, * becomes FC[3:0] and ThreadCtrl becomes FC[5:4]. */ insn->header.destreg__conditionalmod = function; + insn->header.saturate = saturate; + + /* Source modifiers are ignored for extended math instructions. */ + assert(!src.negate); + assert(!src.abs); - brw_set_dest(insn, dest); + brw_set_dest(p, insn, dest); brw_set_src0(insn, src); brw_set_src1(insn, brw_null_reg()); return; @@ -1334,7 +1403,7 @@ void brw_math_16( struct brw_compile *p, insn = next_insn(p, BRW_OPCODE_SEND); insn->header.destreg__conditionalmod = msg_reg_nr; - brw_set_dest(insn, dest); + brw_set_dest(p, insn, dest); brw_set_src0(insn, src); brw_set_math_message(p->brw, insn, @@ -1351,7 +1420,7 @@ void brw_math_16( struct brw_compile *p, insn->header.compression_control = BRW_COMPRESSION_2NDHALF; insn->header.destreg__conditionalmod = msg_reg_nr+1; - brw_set_dest(insn, offset(dest,1)); + brw_set_dest(p, insn, offset(dest,1)); brw_set_src0(insn, src); brw_set_math_message(p->brw, insn, @@ -1446,7 +1515,7 @@ void brw_oword_block_write_scratch(struct brw_compile *p, send_commit_msg = 1; } - brw_set_dest(insn, dest); + brw_set_dest(p, insn, dest); brw_set_src0(insn, brw_null_reg()); brw_set_dp_write_message(p->brw, @@ -1516,7 +1585,7 @@ brw_oword_block_read_scratch(struct brw_compile *p, insn->header.compression_control = BRW_COMPRESSION_NONE; insn->header.destreg__conditionalmod = mrf.nr; - brw_set_dest(insn, dest); /* UW? */ + brw_set_dest(p, insn, dest); /* UW? */ brw_set_src0(insn, brw_null_reg()); brw_set_dp_read_message(p->brw, @@ -1569,7 +1638,7 @@ void brw_oword_block_read(struct brw_compile *p, /* cast dest to a uword[8] vector */ dest = retype(vec8(dest), BRW_REGISTER_TYPE_UW); - brw_set_dest(insn, dest); + brw_set_dest(p, insn, dest); if (intel->gen >= 6) { brw_set_src0(insn, mrf); } else { @@ -1614,7 +1683,7 @@ void brw_dword_scattered_read(struct brw_compile *p, /* cast dest to a uword[8] vector */ dest = retype(vec8(dest), BRW_REGISTER_TYPE_UW); - brw_set_dest(insn, dest); + brw_set_dest(p, insn, dest); brw_set_src0(insn, brw_null_reg()); brw_set_dp_read_message(p->brw, @@ -1639,29 +1708,21 @@ void brw_dp_READ_4_vs(struct brw_compile *p, GLuint location, GLuint bind_table_index) { + struct intel_context *intel = &p->brw->intel; struct brw_instruction *insn; GLuint msg_reg_nr = 1; - struct brw_reg b; - /* - printf("vs const read msg, location %u, msg_reg_nr %d\n", - location, msg_reg_nr); - */ + if (intel->gen >= 6) + location /= 16; /* Setup MRF[1] with location/offset into const buffer */ brw_push_insn_state(p); brw_set_compression_control(p, BRW_COMPRESSION_NONE); brw_set_mask_control(p, BRW_MASK_DISABLE); brw_set_predicate_control(p, BRW_PREDICATE_NONE); - - /* XXX I think we're setting all the dwords of MRF[1] to 'location'. - * when the docs say only dword[2] should be set. Hmmm. But it works. - */ - b = brw_message_reg(msg_reg_nr); - b = retype(b, BRW_REGISTER_TYPE_UD); - /*b = get_element_ud(b, 2);*/ - brw_MOV(p, b, brw_imm_ud(location)); - + brw_MOV(p, retype(brw_vec1_reg(BRW_MESSAGE_REGISTER_FILE, msg_reg_nr, 2), + BRW_REGISTER_TYPE_UD), + brw_imm_ud(location)); brw_pop_insn_state(p); insn = next_insn(p, BRW_OPCODE_SEND); @@ -1671,8 +1732,12 @@ void brw_dp_READ_4_vs(struct brw_compile *p, insn->header.destreg__conditionalmod = msg_reg_nr; insn->header.mask_control = BRW_MASK_DISABLE; - brw_set_dest(insn, dest); - brw_set_src0(insn, brw_null_reg()); + brw_set_dest(p, insn, dest); + if (intel->gen >= 6) { + brw_set_src0(insn, brw_message_reg(msg_reg_nr)); + } else { + brw_set_src0(insn, brw_null_reg()); + } brw_set_dp_read_message(p->brw, insn, @@ -1706,7 +1771,7 @@ void brw_dp_READ_4_vs_relative(struct brw_compile *p, /* M1.0 is block offset 0, M1.4 is block offset 1, all other * fields ignored. */ - brw_ADD(p, retype(brw_message_reg(1), BRW_REGISTER_TYPE_UD), + brw_ADD(p, retype(brw_message_reg(1), BRW_REGISTER_TYPE_D), addr_reg, brw_imm_d(offset)); brw_pop_insn_state(p); @@ -1717,7 +1782,7 @@ void brw_dp_READ_4_vs_relative(struct brw_compile *p, insn->header.destreg__conditionalmod = 0; insn->header.mask_control = BRW_MASK_DISABLE; - brw_set_dest(insn, dest); + brw_set_dest(p, insn, dest); brw_set_src0(insn, brw_vec8_grf(0, 0)); if (intel->gen == 6) @@ -1782,7 +1847,7 @@ void brw_fb_WRITE(struct brw_compile *p, else msg_control = BRW_DATAPORT_RENDER_TARGET_WRITE_SIMD8_SINGLE_SOURCE_SUBSPAN01; - brw_set_dest(insn, dest); + brw_set_dest(p, insn, dest); brw_set_src0(insn, src0); brw_set_dp_write_message(p->brw, insn, @@ -1860,7 +1925,7 @@ void brw_SAMPLE(struct brw_compile *p, struct brw_reg m1 = brw_message_reg(msg_reg_nr); - guess_execution_size(p->current, dest); + guess_execution_size(p, p->current, dest); if (p->current->header.execution_size == BRW_EXECUTE_16) dispatch_16 = GL_TRUE; @@ -1895,12 +1960,15 @@ void brw_SAMPLE(struct brw_compile *p, * and the first message register index comes from src0. */ if (intel->gen >= 6) { - brw_push_insn_state(p); - brw_set_mask_control( p, BRW_MASK_DISABLE ); - /* m1 contains header? */ - brw_MOV(p, brw_message_reg(msg_reg_nr), src0); - brw_pop_insn_state(p); - src0 = brw_message_reg(msg_reg_nr); + if (src0.file != BRW_ARCHITECTURE_REGISTER_FILE || + src0.nr != BRW_ARF_NULL) { + brw_push_insn_state(p); + brw_set_mask_control( p, BRW_MASK_DISABLE ); + brw_set_compression_control(p, BRW_COMPRESSION_NONE); + brw_MOV(p, retype(brw_message_reg(msg_reg_nr), src0.type), src0); + brw_pop_insn_state(p); + } + src0 = brw_message_reg(msg_reg_nr); } insn = next_insn(p, BRW_OPCODE_SEND); @@ -1909,7 +1977,7 @@ void brw_SAMPLE(struct brw_compile *p, if (intel->gen < 6) insn->header.destreg__conditionalmod = msg_reg_nr; - brw_set_dest(insn, dest); + brw_set_dest(p, insn, dest); brw_set_src0(insn, src0); brw_set_sampler_message(p->brw, insn, binding_table_index, @@ -1970,7 +2038,7 @@ void brw_urb_WRITE(struct brw_compile *p, assert(msg_length < BRW_MAX_MRF); - brw_set_dest(insn, dest); + brw_set_dest(p, insn, dest); brw_set_src0(insn, src0); brw_set_src1(insn, brw_imm_d(0)); @@ -1989,6 +2057,80 @@ void brw_urb_WRITE(struct brw_compile *p, swizzle); } +static int +brw_find_next_block_end(struct brw_compile *p, int start) +{ + int ip; + + for (ip = start + 1; ip < p->nr_insn; ip++) { + struct brw_instruction *insn = &p->store[ip]; + + switch (insn->header.opcode) { + case BRW_OPCODE_ENDIF: + case BRW_OPCODE_ELSE: + case BRW_OPCODE_WHILE: + return ip; + } + } + assert(!"not reached"); + return start + 1; +} + +/* There is no DO instruction on gen6, so to find the end of the loop + * we have to see if the loop is jumping back before our start + * instruction. + */ +static int +brw_find_loop_end(struct brw_compile *p, int start) +{ + int ip; + int br = 2; + + for (ip = start + 1; ip < p->nr_insn; ip++) { + struct brw_instruction *insn = &p->store[ip]; + + if (insn->header.opcode == BRW_OPCODE_WHILE) { + if (ip + insn->bits1.branch_gen6.jump_count / br < start) + return ip; + } + } + assert(!"not reached"); + return start + 1; +} + +/* After program generation, go back and update the UIP and JIP of + * BREAK and CONT instructions to their correct locations. + */ +void +brw_set_uip_jip(struct brw_compile *p) +{ + struct intel_context *intel = &p->brw->intel; + int ip; + int br = 2; + + if (intel->gen < 6) + return; + + for (ip = 0; ip < p->nr_insn; ip++) { + struct brw_instruction *insn = &p->store[ip]; + + switch (insn->header.opcode) { + case BRW_OPCODE_BREAK: + insn->bits3.break_cont.jip = br * (brw_find_next_block_end(p, ip) - ip); + insn->bits3.break_cont.uip = br * (brw_find_loop_end(p, ip) - ip + 1); + break; + case BRW_OPCODE_CONTINUE: + /* JIP is set at CONTINUE emit time, since that's when we + * know where the start of the loop is. + */ + insn->bits3.break_cont.jip = br * (brw_find_next_block_end(p, ip) - ip); + assert(insn->bits3.break_cont.uip != 0); + assert(insn->bits3.break_cont.jip != 0); + break; + } + } +} + void brw_ff_sync(struct brw_compile *p, struct brw_reg dest, GLuint msg_reg_nr, @@ -2013,7 +2155,7 @@ void brw_ff_sync(struct brw_compile *p, } insn = next_insn(p, BRW_OPCODE_SEND); - brw_set_dest(insn, dest); + brw_set_dest(p, insn, dest); brw_set_src0(insn, src0); brw_set_src1(insn, brw_imm_d(0)); diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp index 283d5aad496..4eead32cbbd 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp @@ -101,10 +101,12 @@ brw_link_shader(struct gl_context *ctx, struct gl_shader_program *prog) clone_ir_list(mem_ctx, shader->ir, shader->base.ir); do_mat_op_to_vec(shader->ir); - do_mod_to_fract(shader->ir); - do_div_to_mul_rcp(shader->ir); - do_sub_to_add_neg(shader->ir); - do_explog_to_explog2(shader->ir); + lower_instructions(shader->ir, + MOD_TO_FRACT | + DIV_TO_MUL_RCP | + SUB_TO_ADD_NEG | + EXP_TO_EXP2 | + LOG_TO_LOG2); do_lower_texture_projection(shader->ir); brw_do_cubemap_normalize(shader->ir); @@ -130,6 +132,7 @@ brw_link_shader(struct gl_context *ctx, struct gl_shader_program *prog) GL_TRUE, /* temp */ GL_TRUE /* uniform */ ) || progress; + progress = lower_quadop_vector(shader->ir, false) || progress; } while (progress); validate_ir_tree(shader->ir); @@ -174,6 +177,46 @@ type_size(const struct glsl_type *type) } } +/** + * Returns how many MRFs an FS opcode will write over. + * + * Note that this is not the 0 or 1 implied writes in an actual gen + * instruction -- the FS opcodes often generate MOVs in addition. + */ +int +fs_visitor::implied_mrf_writes(fs_inst *inst) +{ + if (inst->mlen == 0) + return 0; + + switch (inst->opcode) { + case FS_OPCODE_RCP: + case FS_OPCODE_RSQ: + case FS_OPCODE_SQRT: + case FS_OPCODE_EXP2: + case FS_OPCODE_LOG2: + case FS_OPCODE_SIN: + case FS_OPCODE_COS: + return 1; + case FS_OPCODE_POW: + return 2; + case FS_OPCODE_TEX: + case FS_OPCODE_TXB: + case FS_OPCODE_TXL: + return 1; + case FS_OPCODE_FB_WRITE: + return 2; + case FS_OPCODE_PULL_CONSTANT_LOAD: + case FS_OPCODE_UNSPILL: + return 1; + case FS_OPCODE_SPILL: + return 2; + default: + assert(!"not reached"); + return inst->mlen; + } +} + int fs_visitor::virtual_grf_alloc(int size) { @@ -299,6 +342,10 @@ fs_visitor::setup_uniform_values(int loc, const glsl_type *type) case GLSL_TYPE_BOOL: c->prog_data.param_convert[param] = PARAM_CONVERT_F2B; break; + default: + assert(!"not reached"); + c->prog_data.param_convert[param] = PARAM_NO_CONVERT; + break; } c->prog_data.param[param] = &vec_values[i]; @@ -400,6 +447,7 @@ fs_visitor::emit_fragcoord_interpolation(ir_variable *ir) fs_reg wpos = *reg; fs_reg neg_y = this->pixel_y; neg_y.negate = true; + bool flip = !ir->origin_upper_left ^ c->key.render_to_fbo; /* gl_FragCoord.x */ if (ir->pixel_center_integer) { @@ -410,13 +458,13 @@ fs_visitor::emit_fragcoord_interpolation(ir_variable *ir) wpos.reg_offset++; /* gl_FragCoord.y */ - if (ir->origin_upper_left && ir->pixel_center_integer) { + if (!flip && ir->pixel_center_integer) { emit(fs_inst(BRW_OPCODE_MOV, wpos, this->pixel_y)); } else { fs_reg pixel_y = this->pixel_y; float offset = (ir->pixel_center_integer ? 0.0 : 0.5); - if (!ir->origin_upper_left) { + if (flip) { pixel_y.negate = true; offset += c->key.drawable_height - 1.0; } @@ -426,8 +474,13 @@ fs_visitor::emit_fragcoord_interpolation(ir_variable *ir) wpos.reg_offset++; /* gl_FragCoord.z */ - emit(fs_inst(FS_OPCODE_LINTERP, wpos, this->delta_x, this->delta_y, - interp_reg(FRAG_ATTRIB_WPOS, 2))); + if (intel->gen >= 6) { + emit(fs_inst(BRW_OPCODE_MOV, wpos, + fs_reg(brw_vec8_grf(c->source_depth_reg, 0)))); + } else { + emit(fs_inst(FS_OPCODE_LINTERP, wpos, this->delta_x, this->delta_y, + interp_reg(FRAG_ATTRIB_WPOS, 2))); + } wpos.reg_offset++; /* gl_FragCoord.w: Already set up in emit_interpolation */ @@ -552,8 +605,13 @@ fs_visitor::emit_math(fs_opcodes opcode, fs_reg dst, fs_reg src) * might be able to do better by doing execsize = 1 math and then * expanding that result out, but we would need to be careful with * masking. + * + * The hardware ignores source modifiers (negate and abs) on math + * instructions, so we also move to a temp to set those up. */ - if (intel->gen >= 6 && src.file == UNIFORM) { + if (intel->gen >= 6 && (src.file == UNIFORM || + src.abs || + src.negate)) { fs_reg expanded = fs_reg(this, glsl_type::float_type); emit(fs_inst(BRW_OPCODE_MOV, expanded, src)); src = expanded; @@ -696,6 +754,27 @@ fs_visitor::visit(ir_dereference_array *ir) } } +/* Instruction selection: Produce a MOV.sat instead of + * MIN(MAX(val, 0), 1) when possible. + */ +bool +fs_visitor::try_emit_saturate(ir_expression *ir) +{ + ir_rvalue *sat_val = ir->as_rvalue_to_saturate(); + + if (!sat_val) + return false; + + sat_val->accept(this); + fs_reg src = this->result; + + this->result = fs_reg(this, ir->type); + fs_inst *inst = emit(fs_inst(BRW_OPCODE_MOV, this->result, src)); + inst->saturate = true; + + return true; +} + void fs_visitor::visit(ir_expression *ir) { @@ -703,6 +782,11 @@ fs_visitor::visit(ir_expression *ir) fs_reg op[2], temp; fs_inst *inst; + assert(ir->get_num_operands() <= 2); + + if (try_emit_saturate(ir)) + return; + for (operand = 0; operand < ir->get_num_operands(); operand++) { ir->operands[operand]->accept(this); if (this->result.file == BAD_FILE) { @@ -773,9 +857,11 @@ fs_visitor::visit(ir_expression *ir) assert(!"not reached: should be handled by ir_explog_to_explog2"); break; case ir_unop_sin: + case ir_unop_sin_reduced: emit_math(FS_OPCODE_SIN, this->result, op[0]); break; case ir_unop_cos: + case ir_unop_cos_reduced: emit_math(FS_OPCODE_COS, this->result, op[0]); break; @@ -849,7 +935,6 @@ fs_visitor::visit(ir_expression *ir) break; case ir_binop_dot: - case ir_binop_cross: case ir_unop_any: assert(!"not reached: should be handled by brw_fs_channel_expressions"); break; @@ -858,6 +943,10 @@ fs_visitor::visit(ir_expression *ir) assert(!"not reached: should be handled by lower_noise"); break; + case ir_quadop_vector: + assert(!"not reached: should be handled by lower_quadop_vector"); + break; + case ir_unop_sqrt: emit_math(FS_OPCODE_SQRT, this->result, op[0]); break; @@ -1348,28 +1437,70 @@ fs_visitor::visit(ir_discard *ir) void fs_visitor::visit(ir_constant *ir) { - fs_reg reg(this, ir->type); - this->result = reg; + /* Set this->result to reg at the bottom of the function because some code + * paths will cause this visitor to be applied to other fields. This will + * cause the value stored in this->result to be modified. + * + * Make reg constant so that it doesn't get accidentally modified along the + * way. Yes, I actually had this problem. :( + */ + const fs_reg reg(this, ir->type); + fs_reg dst_reg = reg; - for (unsigned int i = 0; i < ir->type->vector_elements; i++) { - switch (ir->type->base_type) { - case GLSL_TYPE_FLOAT: - emit(fs_inst(BRW_OPCODE_MOV, reg, fs_reg(ir->value.f[i]))); - break; - case GLSL_TYPE_UINT: - emit(fs_inst(BRW_OPCODE_MOV, reg, fs_reg(ir->value.u[i]))); - break; - case GLSL_TYPE_INT: - emit(fs_inst(BRW_OPCODE_MOV, reg, fs_reg(ir->value.i[i]))); - break; - case GLSL_TYPE_BOOL: - emit(fs_inst(BRW_OPCODE_MOV, reg, fs_reg((int)ir->value.b[i]))); - break; - default: - assert(!"Non-float/uint/int/bool constant"); + if (ir->type->is_array()) { + const unsigned size = type_size(ir->type->fields.array); + + for (unsigned i = 0; i < ir->type->length; i++) { + ir->array_elements[i]->accept(this); + fs_reg src_reg = this->result; + + dst_reg.type = src_reg.type; + for (unsigned j = 0; j < size; j++) { + emit(fs_inst(BRW_OPCODE_MOV, dst_reg, src_reg)); + src_reg.reg_offset++; + dst_reg.reg_offset++; + } + } + } else if (ir->type->is_record()) { + foreach_list(node, &ir->components) { + ir_instruction *const field = (ir_instruction *) node; + const unsigned size = type_size(field->type); + + field->accept(this); + fs_reg src_reg = this->result; + + dst_reg.type = src_reg.type; + for (unsigned j = 0; j < size; j++) { + emit(fs_inst(BRW_OPCODE_MOV, dst_reg, src_reg)); + src_reg.reg_offset++; + dst_reg.reg_offset++; + } + } + } else { + const unsigned size = type_size(ir->type); + + for (unsigned i = 0; i < size; i++) { + switch (ir->type->base_type) { + case GLSL_TYPE_FLOAT: + emit(fs_inst(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.f[i]))); + break; + case GLSL_TYPE_UINT: + emit(fs_inst(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.u[i]))); + break; + case GLSL_TYPE_INT: + emit(fs_inst(BRW_OPCODE_MOV, dst_reg, fs_reg(ir->value.i[i]))); + break; + case GLSL_TYPE_BOOL: + emit(fs_inst(BRW_OPCODE_MOV, dst_reg, fs_reg((int)ir->value.b[i]))); + break; + default: + assert(!"Non-float/uint/int/bool constant"); + } + dst_reg.reg_offset++; } - reg.reg_offset++; } + + this->result = reg; } void @@ -1381,6 +1512,7 @@ fs_visitor::emit_bool_to_cond_code(ir_rvalue *ir) fs_reg op[2]; fs_inst *inst; + assert(expr->get_num_operands() <= 2); for (unsigned int i = 0; i < expr->get_num_operands(); i++) { assert(expr->operands[i]->type->is_scalar()); @@ -1488,6 +1620,7 @@ fs_visitor::emit_if_gen6(ir_if *ir) fs_inst *inst; fs_reg temp; + assert(expr->get_num_operands() <= 2); for (unsigned int i = 0; i < expr->get_num_operands(); i++) { assert(expr->operands[i]->type->is_scalar()); @@ -1497,7 +1630,7 @@ fs_visitor::emit_if_gen6(ir_if *ir) switch (expr->operation) { case ir_unop_logic_not: - inst = emit(fs_inst(BRW_OPCODE_IF, temp, op[0], fs_reg(1))); + inst = emit(fs_inst(BRW_OPCODE_IF, temp, op[0], fs_reg(0))); inst->conditional_mod = BRW_CONDITIONAL_Z; return; @@ -1874,7 +2007,7 @@ fs_visitor::emit_interpolation_setup_gen6() emit(fs_inst(BRW_OPCODE_MOV, this->pixel_y, int_pixel_y)); this->current_annotation = "compute 1/pos.w"; - this->wpos_w = fs_reg(brw_vec8_grf(c->key.source_w_reg, 0)); + this->wpos_w = fs_reg(brw_vec8_grf(c->source_w_reg, 0)); this->pixel_w = fs_reg(this, glsl_type::float_type); emit_math(FS_OPCODE_RCP, this->pixel_w, wpos_w); @@ -1902,17 +2035,17 @@ fs_visitor::emit_fb_writes() nr += 2; } - if (c->key.aa_dest_stencil_reg) { + if (c->aa_dest_stencil_reg) { emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, nr++), - fs_reg(brw_vec8_grf(c->key.aa_dest_stencil_reg, 0)))); + fs_reg(brw_vec8_grf(c->aa_dest_stencil_reg, 0)))); } /* Reserve space for color. It'll be filled in per MRT below. */ int color_mrf = nr; nr += 4; - if (c->key.source_depth_to_render_target) { - if (c->key.computes_depth) { + if (c->source_depth_to_render_target) { + if (c->computes_depth) { /* Hand over gl_FragDepth. */ assert(this->frag_depth); fs_reg depth = *(variable_storage(this->frag_depth)); @@ -1921,20 +2054,22 @@ fs_visitor::emit_fb_writes() } else { /* Pass through the payload depth. */ emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, nr++), - fs_reg(brw_vec8_grf(c->key.source_depth_reg, 0)))); + fs_reg(brw_vec8_grf(c->source_depth_reg, 0)))); } } - if (c->key.dest_depth_reg) { + if (c->dest_depth_reg) { emit(fs_inst(BRW_OPCODE_MOV, fs_reg(MRF, nr++), - fs_reg(brw_vec8_grf(c->key.dest_depth_reg, 0)))); + fs_reg(brw_vec8_grf(c->dest_depth_reg, 0)))); } fs_reg color = reg_undef; if (this->frag_color) color = *(variable_storage(this->frag_color)); - else if (this->frag_data) + else if (this->frag_data) { color = *(variable_storage(this->frag_data)); + color.type = BRW_REGISTER_TYPE_F; + } for (int target = 0; target < c->key.nr_color_regions; target++) { this->current_annotation = talloc_asprintf(this->mem_ctx, @@ -2375,7 +2510,7 @@ fs_visitor::generate_pull_constant_load(fs_inst *inst, struct brw_reg dst) void fs_visitor::assign_curb_setup() { - c->prog_data.first_curbe_grf = c->key.nr_payload_regs; + c->prog_data.first_curbe_grf = c->nr_payload_regs; c->prog_data.curb_read_length = ALIGN(c->prog_data.nr_params, 8) / 8; /* Map the offsets in the UNIFORM file to fixed HW regs. */ @@ -2515,6 +2650,7 @@ fs_visitor::split_virtual_grfs() for (int j = 2; j < this->virtual_grf_sizes[i]; j++) { int reg = virtual_grf_alloc(1); assert(reg == new_virtual_grf[i] + j - 1); + (void) reg; } this->virtual_grf_sizes[i] = 1; } @@ -2768,6 +2904,7 @@ fs_visitor::propagate_constants() } break; case BRW_OPCODE_CMP: + case BRW_OPCODE_SEL: if (i == 1) { scan_inst->src[i] = inst->src[0]; progress = true; @@ -2796,26 +2933,17 @@ bool fs_visitor::dead_code_eliminate() { bool progress = false; - int num_vars = this->virtual_grf_next; - bool dead[num_vars]; - - for (int i = 0; i < num_vars; i++) { - dead[i] = this->virtual_grf_def[i] >= this->virtual_grf_use[i]; - - if (dead[i]) { - /* Mark off its interval so it won't interfere with anything. */ - this->virtual_grf_def[i] = -1; - this->virtual_grf_use[i] = -1; - } - } + int pc = 0; foreach_iter(exec_list_iterator, iter, this->instructions) { fs_inst *inst = (fs_inst *)iter.get(); - if (inst->dst.file == GRF && dead[inst->dst.reg]) { + if (inst->dst.file == GRF && this->virtual_grf_use[inst->dst.reg] <= pc) { inst->remove(); progress = true; } + + pc++; } return progress; @@ -2933,11 +3061,60 @@ fs_visitor::compute_to_mrf() /* Found a move of a GRF to a MRF. Let's see if we can go * rewrite the thing that made this GRF to write into the MRF. */ - bool found = false; fs_inst *scan_inst; for (scan_inst = (fs_inst *)inst->prev; scan_inst->prev != NULL; scan_inst = (fs_inst *)scan_inst->prev) { + if (scan_inst->dst.file == GRF && + scan_inst->dst.reg == inst->src[0].reg) { + /* Found the last thing to write our reg we want to turn + * into a compute-to-MRF. + */ + + if (scan_inst->opcode == FS_OPCODE_TEX) { + /* texturing writes several continuous regs, so we can't + * compute-to-mrf that. + */ + break; + } + + /* If it's predicated, it (probably) didn't populate all + * the channels. + */ + if (scan_inst->predicated) + break; + + /* SEND instructions can't have MRF as a destination. */ + if (scan_inst->mlen) + break; + + if (intel->gen >= 6) { + /* gen6 math instructions must have the destination be + * GRF, so no compute-to-MRF for them. + */ + if (scan_inst->opcode == FS_OPCODE_RCP || + scan_inst->opcode == FS_OPCODE_RSQ || + scan_inst->opcode == FS_OPCODE_SQRT || + scan_inst->opcode == FS_OPCODE_EXP2 || + scan_inst->opcode == FS_OPCODE_LOG2 || + scan_inst->opcode == FS_OPCODE_SIN || + scan_inst->opcode == FS_OPCODE_COS || + scan_inst->opcode == FS_OPCODE_POW) { + break; + } + } + + if (scan_inst->dst.reg_offset == inst->src[0].reg_offset) { + /* Found the creator of our MRF's source value. */ + scan_inst->dst.file = MRF; + scan_inst->dst.hw_reg = inst->dst.hw_reg; + scan_inst->saturate |= inst->saturate; + inst->remove(); + progress = true; + } + break; + } + /* We don't handle flow control here. Most computation of * values that end up in MRFs are shortly before the MRF * write anyway. @@ -2971,71 +3148,88 @@ fs_visitor::compute_to_mrf() } if (scan_inst->mlen > 0) { - /* Found a SEND instruction, which will do some amount of - * implied write that may overwrite our MRF that we were - * hoping to compute-to-MRF somewhere above it. Nothing - * we have implied-writes more than 2 MRFs from base_mrf, - * though. + /* Found a SEND instruction, which means that there are + * live values in MRFs from base_mrf to base_mrf + + * scan_inst->mlen - 1. Don't go pushing our MRF write up + * above it. */ - int implied_write_len = MIN2(scan_inst->mlen, 2); if (inst->dst.hw_reg >= scan_inst->base_mrf && - inst->dst.hw_reg < scan_inst->base_mrf + implied_write_len) { + inst->dst.hw_reg < scan_inst->base_mrf + scan_inst->mlen) { break; } } + } + } - if (scan_inst->dst.file == GRF && - scan_inst->dst.reg == inst->src[0].reg) { - /* Found the last thing to write our reg we want to turn - * into a compute-to-MRF. - */ + return progress; +} - if (scan_inst->opcode == FS_OPCODE_TEX) { - /* texturing writes several continuous regs, so we can't - * compute-to-mrf that. - */ - break; - } +/** + * Walks through basic blocks, locking for repeated MRF writes and + * removing the later ones. + */ +bool +fs_visitor::remove_duplicate_mrf_writes() +{ + fs_inst *last_mrf_move[16]; + bool progress = false; - /* If it's predicated, it (probably) didn't populate all - * the channels. - */ - if (scan_inst->predicated) - break; + memset(last_mrf_move, 0, sizeof(last_mrf_move)); - /* SEND instructions can't have MRF as a destination. */ - if (scan_inst->mlen) - break; + foreach_iter(exec_list_iterator, iter, this->instructions) { + fs_inst *inst = (fs_inst *)iter.get(); - if (intel->gen >= 6) { - /* gen6 math instructions must have the destination be - * GRF, so no compute-to-MRF for them. - */ - if (scan_inst->opcode == FS_OPCODE_RCP || - scan_inst->opcode == FS_OPCODE_RSQ || - scan_inst->opcode == FS_OPCODE_SQRT || - scan_inst->opcode == FS_OPCODE_EXP2 || - scan_inst->opcode == FS_OPCODE_LOG2 || - scan_inst->opcode == FS_OPCODE_SIN || - scan_inst->opcode == FS_OPCODE_COS || - scan_inst->opcode == FS_OPCODE_POW) { - break; - } - } + switch (inst->opcode) { + case BRW_OPCODE_DO: + case BRW_OPCODE_WHILE: + case BRW_OPCODE_IF: + case BRW_OPCODE_ELSE: + case BRW_OPCODE_ENDIF: + memset(last_mrf_move, 0, sizeof(last_mrf_move)); + continue; + default: + break; + } - if (scan_inst->dst.reg_offset == inst->src[0].reg_offset) { - /* Found the creator of our MRF's source value. */ - found = true; - break; + if (inst->opcode == BRW_OPCODE_MOV && + inst->dst.file == MRF) { + fs_inst *prev_inst = last_mrf_move[inst->dst.hw_reg]; + if (prev_inst && inst->equals(prev_inst)) { + inst->remove(); + progress = true; + continue; + } + } + + /* Clear out the last-write records for MRFs that were overwritten. */ + if (inst->dst.file == MRF) { + last_mrf_move[inst->dst.hw_reg] = NULL; + } + + if (inst->mlen > 0) { + /* Found a SEND instruction, which will include two of fewer + * implied MRF writes. We could do better here. + */ + for (int i = 0; i < implied_mrf_writes(inst); i++) { + last_mrf_move[inst->base_mrf + i] = NULL; + } + } + + /* Clear out any MRF move records whose sources got overwritten. */ + if (inst->dst.file == GRF) { + for (unsigned int i = 0; i < Elements(last_mrf_move); i++) { + if (last_mrf_move[i] && + last_mrf_move[i]->src[0].reg == inst->dst.reg) { + last_mrf_move[i] = NULL; } } } - if (found) { - scan_inst->dst.file = MRF; - scan_inst->dst.hw_reg = inst->dst.hw_reg; - scan_inst->saturate |= inst->saturate; - inst->remove(); - progress = true; + + if (inst->opcode == BRW_OPCODE_MOV && + inst->dst.file == MRF && + inst->src[0].file == GRF && + !inst->predicated) { + last_mrf_move[inst->dst.hw_reg] = inst; } } @@ -3091,6 +3285,7 @@ static struct brw_reg brw_reg_from_fs_reg(fs_reg *reg) break; default: assert(!"not reached"); + brw_reg = brw_null_reg(); break; } break; @@ -3105,6 +3300,10 @@ static struct brw_reg brw_reg_from_fs_reg(fs_reg *reg) assert(!"not reached"); brw_reg = brw_null_reg(); break; + default: + assert(!"not reached"); + brw_reg = brw_null_reg(); + break; } if (reg->abs) brw_reg = brw_abs(brw_reg); @@ -3159,6 +3358,7 @@ fs_visitor::generate_code() brw_set_conditionalmod(p, inst->conditional_mod); brw_set_predicate_control(p, inst->predicated); + brw_set_saturate(p, inst->saturate); switch (inst->opcode) { case BRW_OPCODE_MOV: @@ -3245,7 +3445,11 @@ fs_visitor::generate_code() brw_set_predicate_control(p, BRW_PREDICATE_NONE); break; case BRW_OPCODE_CONTINUE: - brw_CONT(p, if_depth_in_loop[loop_stack_depth]); + /* FINISHME: We need to write the loop instruction support still. */ + if (intel->gen >= 6) + brw_CONT_gen6(p, loop_stack[loop_stack_depth - 1]); + else + brw_CONT(p, if_depth_in_loop[loop_stack_depth]); brw_set_predicate_control(p, BRW_PREDICATE_NONE); break; @@ -3259,16 +3463,18 @@ fs_visitor::generate_code() assert(loop_stack_depth > 0); loop_stack_depth--; inst0 = inst1 = brw_WHILE(p, loop_stack[loop_stack_depth]); - /* patch all the BREAK/CONT instructions from last BGNLOOP */ - while (inst0 > loop_stack[loop_stack_depth]) { - inst0--; - if (inst0->header.opcode == BRW_OPCODE_BREAK && - inst0->bits3.if_else.jump_count == 0) { - inst0->bits3.if_else.jump_count = br * (inst1 - inst0 + 1); + if (intel->gen < 6) { + /* patch all the BREAK/CONT instructions from last BGNLOOP */ + while (inst0 > loop_stack[loop_stack_depth]) { + inst0--; + if (inst0->header.opcode == BRW_OPCODE_BREAK && + inst0->bits3.if_else.jump_count == 0) { + inst0->bits3.if_else.jump_count = br * (inst1 - inst0 + 1); } - else if (inst0->header.opcode == BRW_OPCODE_CONTINUE && - inst0->bits3.if_else.jump_count == 0) { - inst0->bits3.if_else.jump_count = br * (inst1 - inst0); + else if (inst0->header.opcode == BRW_OPCODE_CONTINUE && + inst0->bits3.if_else.jump_count == 0) { + inst0->bits3.if_else.jump_count = br * (inst1 - inst0); + } } } } @@ -3340,12 +3546,31 @@ fs_visitor::generate_code() ((uint32_t *)&p->store[i])[0]); } brw_disasm(stdout, &p->store[i], intel->gen); - printf("\n"); } } last_native_inst = p->nr_insn; } + + brw_set_uip_jip(p); + + /* OK, while the INTEL_DEBUG=wm above is very nice for debugging FS + * emit issues, it doesn't get the jump distances into the output, + * which is often something we want to debug. So this is here in + * case you're doing that. + */ + if (0) { + if (unlikely(INTEL_DEBUG & DEBUG_WM)) { + for (unsigned int i = 0; i < p->nr_insn; i++) { + printf("0x%08x 0x%08x 0x%08x 0x%08x ", + ((uint32_t *)&p->store[i])[3], + ((uint32_t *)&p->store[i])[2], + ((uint32_t *)&p->store[i])[1], + ((uint32_t *)&p->store[i])[0]); + brw_disasm(stdout, &p->store[i], intel->gen); + } + } + } } GLboolean @@ -3410,6 +3635,9 @@ brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c) bool progress; do { progress = false; + + progress = v.remove_duplicate_mrf_writes() || progress; + v.calculate_live_intervals(); progress = v.propagate_constants() || progress; progress = v.register_coalesce() || progress; diff --git a/src/mesa/drivers/dri/i965/brw_fs.h b/src/mesa/drivers/dri/i965/brw_fs.h index 9b7fcde8580..de7b15312a5 100644 --- a/src/mesa/drivers/dri/i965/brw_fs.h +++ b/src/mesa/drivers/dri/i965/brw_fs.h @@ -96,10 +96,7 @@ public: void init() { - this->reg = 0; - this->reg_offset = 0; - this->negate = 0; - this->abs = 0; + memset(this, 0, sizeof(*this)); this->hw_reg = -1; this->smear = -1; } @@ -151,6 +148,21 @@ public: fs_reg(enum register_file file, int hw_reg, uint32_t type); fs_reg(class fs_visitor *v, const struct glsl_type *type); + bool equals(fs_reg *r) + { + return (file == r->file && + reg == r->reg && + reg_offset == r->reg_offset && + hw_reg == r->hw_reg && + type == r->type && + negate == r->negate && + abs == r->abs && + memcmp(&fixed_hw_reg, &r->fixed_hw_reg, + sizeof(fixed_hw_reg)) == 0 && + smear == r->smear && + imm.u == r->imm.u); + } + /** Register file: ARF, GRF, MRF, IMM. */ enum register_file file; /** virtual register number. 0 = fixed hw reg */ @@ -174,6 +186,10 @@ public: } imm; }; +static const fs_reg reg_undef; +static const fs_reg reg_null_f(ARF, BRW_ARF_NULL, BRW_REGISTER_TYPE_F); +static const fs_reg reg_null_d(ARF, BRW_ARF_NULL, BRW_REGISTER_TYPE_D); + class fs_inst : public exec_node { public: /* Callers of this talloc-based new need not call delete. It's @@ -190,18 +206,14 @@ public: void init() { + memset(this, 0, sizeof(*this)); this->opcode = BRW_OPCODE_NOP; - this->saturate = false; this->conditional_mod = BRW_CONDITIONAL_NONE; - this->predicated = false; - this->sampler = 0; - this->target = 0; - this->eot = false; - this->header_present = false; - this->shadow_compare = false; - this->mlen = 0; - this->base_mrf = 0; - this->offset = 0; + + this->dst = reg_undef; + this->src[0] = reg_undef; + this->src[1] = reg_undef; + this->src[2] = reg_undef; } fs_inst() @@ -273,6 +285,26 @@ public: assert(src[2].reg_offset >= 0); } + bool equals(fs_inst *inst) + { + return (opcode == inst->opcode && + dst.equals(&inst->dst) && + src[0].equals(&inst->src[0]) && + src[1].equals(&inst->src[1]) && + src[2].equals(&inst->src[2]) && + saturate == inst->saturate && + predicated == inst->predicated && + conditional_mod == inst->conditional_mod && + mlen == inst->mlen && + base_mrf == inst->base_mrf && + sampler == inst->sampler && + target == inst->target && + eot == inst->eot && + header_present == inst->header_present && + shadow_compare == inst->shadow_compare && + offset == inst->offset); + } + int opcode; /* BRW_OPCODE_* or FS_OPCODE_* */ fs_reg dst; fs_reg src[3]; @@ -375,6 +407,7 @@ public: bool register_coalesce(); bool compute_to_mrf(); bool dead_code_eliminate(); + bool remove_duplicate_mrf_writes(); bool virtual_grf_interferes(int a, int b); void generate_code(); void generate_fb_write(fs_inst *inst); @@ -400,6 +433,7 @@ public: fs_inst *emit_texture_gen5(ir_texture *ir, fs_reg dst, fs_reg coordinate); fs_inst *emit_math(fs_opcodes op, fs_reg dst, fs_reg src0); fs_inst *emit_math(fs_opcodes op, fs_reg dst, fs_reg src0, fs_reg src1); + bool try_emit_saturate(ir_expression *ir); void emit_bool_to_cond_code(ir_rvalue *condition); void emit_if_gen6(ir_if *ir); void emit_unspill(fs_inst *inst, fs_reg reg, uint32_t spill_offset); @@ -411,6 +445,7 @@ public: struct brw_reg interp_reg(int location, int channel); int setup_uniform_values(int loc, const glsl_type *type); void setup_builtin_uniform_values(ir_variable *ir); + int implied_mrf_writes(fs_inst *inst); struct brw_context *brw; const struct gl_fragment_program *fp; @@ -454,9 +489,5 @@ public: int grf_used; }; -static const fs_reg reg_undef; -static const fs_reg reg_null_f(ARF, BRW_ARF_NULL, BRW_REGISTER_TYPE_F); -static const fs_reg reg_null_d(ARF, BRW_ARF_NULL, BRW_REGISTER_TYPE_D); - GLboolean brw_do_channel_expressions(struct exec_list *instructions); GLboolean brw_do_vector_splitting(struct exec_list *instructions); diff --git a/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp b/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp index 2a6da4058b8..20bfa4c3ea3 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp @@ -205,6 +205,8 @@ ir_channel_expressions_visitor::visit_leave(ir_assignment *ir) case ir_unop_round_even: case ir_unop_sin: case ir_unop_cos: + case ir_unop_sin_reduced: + case ir_unop_cos_reduced: case ir_unop_dFdx: case ir_unop_dFdy: for (i = 0; i < vector_elements; i++) { @@ -288,34 +290,6 @@ ir_channel_expressions_visitor::visit_leave(ir_assignment *ir) break; } - case ir_binop_cross: { - for (i = 0; i < vector_elements; i++) { - int swiz0 = (i + 1) % 3; - int swiz1 = (i + 2) % 3; - ir_expression *temp1, *temp2; - - temp1 = new(mem_ctx) ir_expression(ir_binop_mul, - element_type, - get_element(op_var[0], swiz0), - get_element(op_var[1], swiz1)); - - temp2 = new(mem_ctx) ir_expression(ir_binop_mul, - element_type, - get_element(op_var[1], swiz0), - get_element(op_var[0], swiz1)); - - temp2 = new(mem_ctx) ir_expression(ir_unop_neg, - element_type, - temp2, - NULL); - - assign(ir, i, new(mem_ctx) ir_expression(ir_binop_add, - element_type, - temp1, temp2)); - } - break; - } - case ir_binop_logic_and: case ir_binop_logic_xor: case ir_binop_logic_or: @@ -356,6 +330,9 @@ ir_channel_expressions_visitor::visit_leave(ir_assignment *ir) case ir_unop_noise: assert(!"noise should have been broken down to function call"); break; + case ir_quadop_vector: + assert(!"should have been lowered"); + break; } ir->remove(); diff --git a/src/mesa/drivers/dri/i965/brw_gs.c b/src/mesa/drivers/dri/i965/brw_gs.c index b0c76f4094d..73b41fdbcef 100644 --- a/src/mesa/drivers/dri/i965/brw_gs.c +++ b/src/mesa/drivers/dri/i965/brw_gs.c @@ -166,6 +166,9 @@ static void populate_key( struct brw_context *brw, struct brw_gs_prog_key *key ) { struct gl_context *ctx = &brw->intel.ctx; + struct intel_context *intel = &brw->intel; + int prim_gs_always; + memset(key, 0, sizeof(*key)); /* CACHE_NEW_VS_PROG */ @@ -185,10 +188,14 @@ static void populate_key( struct brw_context *brw, key->pv_first = GL_TRUE; } - key->need_gs_prog = (key->hint_gs_always || - brw->primitive == GL_QUADS || + if (intel->gen == 6) + prim_gs_always = brw->primitive == GL_LINE_LOOP; + else + prim_gs_always = brw->primitive == GL_QUADS || brw->primitive == GL_QUAD_STRIP || - brw->primitive == GL_LINE_LOOP); + brw->primitive == GL_LINE_LOOP; + + key->need_gs_prog = (key->hint_gs_always || prim_gs_always); } /* Calculate interpolants for triangle and line rasterization. @@ -205,8 +212,10 @@ static void prepare_gs_prog(struct brw_context *brw) brw->gs.prog_active = key.need_gs_prog; } + drm_intel_bo_unreference(brw->gs.prog_bo); + brw->gs.prog_bo = NULL; + if (brw->gs.prog_active) { - drm_intel_bo_unreference(brw->gs.prog_bo); brw->gs.prog_bo = brw_search_cache(&brw->cache, BRW_GS_PROG, &key, sizeof(key), NULL, 0, diff --git a/src/mesa/drivers/dri/i965/brw_misc_state.c b/src/mesa/drivers/dri/i965/brw_misc_state.c index 1d350bc0413..a91b0528fac 100644 --- a/src/mesa/drivers/dri/i965/brw_misc_state.c +++ b/src/mesa/drivers/dri/i965/brw_misc_state.c @@ -38,40 +38,6 @@ #include "brw_state.h" #include "brw_defines.h" - - - - -/*********************************************************************** - * Blend color - */ - -static void upload_blend_constant_color(struct brw_context *brw) -{ - struct gl_context *ctx = &brw->intel.ctx; - struct brw_blend_constant_color bcc; - - memset(&bcc, 0, sizeof(bcc)); - bcc.header.opcode = CMD_BLEND_CONSTANT_COLOR; - bcc.header.length = sizeof(bcc)/4-2; - bcc.blend_constant_color[0] = ctx->Color.BlendColor[0]; - bcc.blend_constant_color[1] = ctx->Color.BlendColor[1]; - bcc.blend_constant_color[2] = ctx->Color.BlendColor[2]; - bcc.blend_constant_color[3] = ctx->Color.BlendColor[3]; - - BRW_CACHED_BATCH_STRUCT(brw, &bcc); -} - - -const struct brw_tracked_state brw_blend_constant_color = { - .dirty = { - .mesa = _NEW_COLOR, - .brw = BRW_NEW_CONTEXT, - .cache = 0 - }, - .emit = upload_blend_constant_color -}; - /* Constant single cliprect for framebuffer object or DRI2 drawing */ static void upload_drawing_rect(struct brw_context *brw) { @@ -339,6 +305,9 @@ static void upload_polygon_stipple(struct brw_context *brw) struct brw_polygon_stipple bps; GLuint i; + if (!ctx->Polygon.StippleFlag) + return; + memset(&bps, 0, sizeof(bps)); bps.header.opcode = CMD_POLY_STIPPLE_PATTERN; bps.header.length = sizeof(bps)/4-2; @@ -381,6 +350,9 @@ static void upload_polygon_stipple_offset(struct brw_context *brw) struct gl_context *ctx = &brw->intel.ctx; struct brw_polygon_stipple_offset bpso; + if (!ctx->Polygon.StippleFlag) + return; + memset(&bpso, 0, sizeof(bpso)); bpso.header.opcode = CMD_POLY_STIPPLE_OFFSET; bpso.header.length = sizeof(bpso)/4-2; @@ -409,7 +381,7 @@ static void upload_polygon_stipple_offset(struct brw_context *brw) const struct brw_tracked_state brw_polygon_stipple_offset = { .dirty = { - .mesa = _NEW_WINDOW_POS, + .mesa = _NEW_WINDOW_POS | _NEW_POLYGONSTIPPLE, .brw = BRW_NEW_CONTEXT, .cache = 0 }, @@ -421,9 +393,10 @@ const struct brw_tracked_state brw_polygon_stipple_offset = { */ static void upload_aa_line_parameters(struct brw_context *brw) { + struct gl_context *ctx = &brw->intel.ctx; struct brw_aa_line_parameters balp; - if (!brw->has_aa_line_parameters) + if (!ctx->Line.SmoothFlag || !brw->has_aa_line_parameters) return; /* use legacy aa line coverage computation */ @@ -436,7 +409,7 @@ static void upload_aa_line_parameters(struct brw_context *brw) const struct brw_tracked_state brw_aa_line_parameters = { .dirty = { - .mesa = 0, + .mesa = _NEW_LINE, .brw = BRW_NEW_CONTEXT, .cache = 0 }, @@ -454,6 +427,9 @@ static void upload_line_stipple(struct brw_context *brw) GLfloat tmp; GLint tmpi; + if (!ctx->Line.StippleFlag) + return; + memset(&bls, 0, sizeof(bls)); bls.header.opcode = CMD_LINE_STIPPLE_PATTERN; bls.header.length = sizeof(bls)/4 - 2; diff --git a/src/mesa/drivers/dri/i965/brw_program.c b/src/mesa/drivers/dri/i965/brw_program.c index 1367d814696..94efa791091 100644 --- a/src/mesa/drivers/dri/i965/brw_program.c +++ b/src/mesa/drivers/dri/i965/brw_program.c @@ -142,7 +142,6 @@ static GLboolean brwProgramStringNotify( struct gl_context *ctx, if (newFP == curFP) brw->state.dirty.brw |= BRW_NEW_FRAGMENT_PROGRAM; newFP->id = brw->program_id++; - newFP->isGLSL = brw_wm_is_glsl(fprog); /* Don't reject fragment shaders for their Mesa IR state when we're * using the new FS backend. diff --git a/src/mesa/drivers/dri/i965/brw_state.h b/src/mesa/drivers/dri/i965/brw_state.h index 3beed16945b..4bb93e73369 100644 --- a/src/mesa/drivers/dri/i965/brw_state.h +++ b/src/mesa/drivers/dri/i965/brw_state.h @@ -164,7 +164,8 @@ void brw_destroy_caches( struct brw_context *brw ); /*********************************************************************** * brw_state_batch.c */ -#define BRW_BATCH_STRUCT(brw, s) intel_batchbuffer_data( brw->intel.batch, (s), sizeof(*(s))) +#define BRW_BATCH_STRUCT(brw, s) intel_batchbuffer_data(brw->intel.batch, (s), \ + sizeof(*(s)), false) #define BRW_CACHED_BATCH_STRUCT(brw, s) brw_cached_batch_struct( brw, (s), sizeof(*(s)) ) GLboolean brw_cached_batch_struct( struct brw_context *brw, diff --git a/src/mesa/drivers/dri/i965/brw_state_batch.c b/src/mesa/drivers/dri/i965/brw_state_batch.c index be3989eb7db..a21af13caa3 100644 --- a/src/mesa/drivers/dri/i965/brw_state_batch.c +++ b/src/mesa/drivers/dri/i965/brw_state_batch.c @@ -48,7 +48,7 @@ GLboolean brw_cached_batch_struct( struct brw_context *brw, struct header *newheader = (struct header *)data; if (brw->emit_state_always) { - intel_batchbuffer_data(brw->intel.batch, data, sz); + intel_batchbuffer_data(brw->intel.batch, data, sz, false); return GL_TRUE; } @@ -75,7 +75,7 @@ GLboolean brw_cached_batch_struct( struct brw_context *brw, emit: memcpy(item->header, newheader, sz); - intel_batchbuffer_data(brw->intel.batch, data, sz); + intel_batchbuffer_data(brw->intel.batch, data, sz, false); return GL_TRUE; } diff --git a/src/mesa/drivers/dri/i965/brw_state_dump.c b/src/mesa/drivers/dri/i965/brw_state_dump.c index b79b33c2e32..e2628874712 100644 --- a/src/mesa/drivers/dri/i965/brw_state_dump.c +++ b/src/mesa/drivers/dri/i965/brw_state_dump.c @@ -107,14 +107,14 @@ static void dump_wm_surface_state(struct brw_context *brw) char name[20]; if (surf_bo == NULL) { - fprintf(stderr, " WM SS%d: NULL\n", i); + fprintf(stderr, "WM SURF%d: NULL\n", i); continue; } drm_intel_bo_map(surf_bo, GL_FALSE); surfoff = surf_bo->offset + brw->wm.surf_offset[i]; surf = (struct brw_surface_state *)(surf_bo->virtual + brw->wm.surf_offset[i]); - sprintf(name, "WM SS%d", i); + sprintf(name, "WM SURF%d", i); state_out(name, surf, surfoff, 0, "%s %s\n", get_965_surfacetype(surf->ss0.surface_type), get_965_surface_format(surf->ss0.surface_format)); @@ -132,6 +132,53 @@ static void dump_wm_surface_state(struct brw_context *brw) } } + +static void dump_wm_sampler_state(struct brw_context *brw) +{ + 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); + for (i = 0; i < BRW_MAX_TEX_UNIT; i++) { + unsigned int offset; + struct brw_sampler_state *samp; + struct brw_sampler_default_color *sdc; + char name[20]; + + if (!ctx->Texture.Unit[i]._ReallyEnabled) { + fprintf(stderr, "WM SAMP%d: disabled\n", i); + continue; + } + + offset = brw->wm.sampler_bo->offset + + i * sizeof(struct brw_sampler_state); + samp = (struct brw_sampler_state *)(brw->wm.sampler_bo->virtual + + i * sizeof(struct brw_sampler_state)); + + sprintf(name, "WM SAMP%d", i); + state_out(name, samp, offset, 0, "filtering\n"); + state_out(name, samp, offset, 1, "wrapping, lod\n"); + state_out(name, samp, offset, 2, "default color pointer\n"); + state_out(name, samp, offset, 3, "chroma key, aniso\n"); + + 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]); + } + drm_intel_bo_unmap(brw->wm.sampler_bo); +} + static void dump_sf_viewport_state(struct brw_context *brw) { const char *name = "SF VP"; @@ -324,6 +371,7 @@ void brw_debug_batch(struct intel_context *intel) state_struct_out("WM bind", brw->wm.bind_bo, 4 * brw->wm.nr_surfaces); dump_wm_surface_state(brw); + dump_wm_sampler_state(brw); if (intel->gen < 6) state_struct_out("VS", brw->vs.state_bo, sizeof(struct brw_vs_unit_state)); diff --git a/src/mesa/drivers/dri/i965/brw_state_upload.c b/src/mesa/drivers/dri/i965/brw_state_upload.c index 338f3876b31..eba4411ca70 100644 --- a/src/mesa/drivers/dri/i965/brw_state_upload.c +++ b/src/mesa/drivers/dri/i965/brw_state_upload.c @@ -129,7 +129,7 @@ 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_wm_constants, /* Before wm_surfaces and constant_buffer */ + &gen6_wm_constants, /* Before wm_state */ &brw_vs_surfaces, /* must do before unit */ &brw_wm_constant_surface, /* must do before wm surfaces/bind bo */ diff --git a/src/mesa/drivers/dri/i965/brw_structs.h b/src/mesa/drivers/dri/i965/brw_structs.h index 8ce9af9c4fe..461f27048cc 100644 --- a/src/mesa/drivers/dri/i965/brw_structs.h +++ b/src/mesa/drivers/dri/i965/brw_structs.h @@ -1064,6 +1064,15 @@ struct brw_sampler_default_color { GLfloat color[4]; }; +struct gen5_sampler_default_color { + uint8_t ub[4]; + float f[4]; + uint16_t hf[4]; + uint16_t us[4]; + int16_t s[4]; + uint8_t b[4]; +}; + struct brw_sampler_state { @@ -1169,7 +1178,12 @@ struct brw_surface_state GLuint cube_neg_y:1; GLuint cube_pos_x:1; GLuint cube_neg_x:1; - GLuint pad:4; + GLuint pad:2; + /* Required on gen6 for surfaces accessed through render cache messages. + */ + GLuint render_cache_read_write:1; + /* Ironlake and newer: instead of replicating one of the texels */ + GLuint cube_corner_average:1; GLuint mipmap_layout_mode:1; GLuint vert_line_stride_ofs:1; GLuint vert_line_stride:1; @@ -1539,6 +1553,21 @@ struct brw_instruction GLuint pad0:12; } if_else; + struct + { + /* Signed jump distance to the ip to jump to if all channels + * are disabled after the break or continue. It should point + * to the end of the innermost control flow block, as that's + * where some channel could get re-enabled. + */ + int jip:16; + + /* Signed jump distance to the location to resume execution + * of this channel if it's enabled for the break or continue. + */ + int uip:16; + } break_cont; + struct { GLuint function:4; GLuint int_type:1; diff --git a/src/mesa/drivers/dri/i965/brw_vs.c b/src/mesa/drivers/dri/i965/brw_vs.c index 4a41c7a5176..6ae75d22c14 100644 --- a/src/mesa/drivers/dri/i965/brw_vs.c +++ b/src/mesa/drivers/dri/i965/brw_vs.c @@ -99,8 +99,8 @@ static void do_vs_prog( struct brw_context *brw, (void) ctx; aux_size = sizeof(c.prog_data); - if (c.vp->use_const_buffer) - aux_size += c.vp->program.Base.Parameters->NumParameters; + /* constant_map */ + 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, @@ -130,6 +130,7 @@ static void brw_upload_vs_prog(struct brw_context *brw) key.nr_userclip = brw_count_bits(ctx->Transform.ClipPlanesEnabled); key.copy_edgeflag = (ctx->Polygon.FrontMode != GL_FILL || ctx->Polygon.BackMode != GL_FILL); + key.two_side_color = (ctx->Light.Enabled && ctx->Light.Model.TwoSide); /* _NEW_POINT */ if (ctx->Point.PointSprite) { @@ -157,7 +158,7 @@ static void brw_upload_vs_prog(struct brw_context *brw) */ const struct brw_tracked_state brw_vs_prog = { .dirty = { - .mesa = _NEW_TRANSFORM | _NEW_POLYGON | _NEW_POINT, + .mesa = _NEW_TRANSFORM | _NEW_POLYGON | _NEW_POINT | _NEW_LIGHT, .brw = BRW_NEW_VERTEX_PROGRAM, .cache = 0 }, diff --git a/src/mesa/drivers/dri/i965/brw_vs.h b/src/mesa/drivers/dri/i965/brw_vs.h index 9338a6b7dbf..0b88cc1ec76 100644 --- a/src/mesa/drivers/dri/i965/brw_vs.h +++ b/src/mesa/drivers/dri/i965/brw_vs.h @@ -44,6 +44,7 @@ struct brw_vs_prog_key { GLuint nr_userclip:4; GLuint copy_edgeflag:1; GLuint point_coord_replace:8; + GLuint two_side_color: 1; }; diff --git a/src/mesa/drivers/dri/i965/brw_vs_emit.c b/src/mesa/drivers/dri/i965/brw_vs_emit.c index 7e43324a1f9..326bb1e562f 100644 --- a/src/mesa/drivers/dri/i965/brw_vs_emit.c +++ b/src/mesa/drivers/dri/i965/brw_vs_emit.c @@ -140,9 +140,13 @@ clear_current_const(struct brw_vs_compile *c) static void brw_vs_alloc_regs( struct brw_vs_compile *c ) { struct intel_context *intel = &c->func.brw->intel; - GLuint i, reg = 0, mrf; + GLuint i, reg = 0, mrf, j; int attributes_in_vue; int first_reladdr_output; + int max_constant; + int constant = 0; + int vert_result_reoder[VERT_RESULT_MAX]; + int bfc = 0; /* Determine whether to use a real constant buffer or use a block * of GRF registers for constants. The later is faster but only @@ -181,62 +185,81 @@ static void brw_vs_alloc_regs( struct brw_vs_compile *c ) } - /* Vertex program parameters from curbe: + /* Assign some (probably all) of the vertex program constants to + * the push constant buffer/CURBE. + * + * There's an obvious limit to the numer of push constants equal to + * the number of register available, and that number is smaller + * than the minimum maximum number of vertex program parameters, so + * support for pull constants is required if we overflow. + * Additionally, on gen6 the number of push constants is even + * lower. + * + * When there's relative addressing, we don't know what range of + * Mesa IR registers can be accessed. And generally, when relative + * addressing is used we also have too many constants to load them + * all as push constants. So, we'll just support relative + * addressing out of the pull constant buffers, and try to load as + * many statically-accessed constants into the push constant buffer + * as we can. */ - if (c->vp->use_const_buffer) { - int max_constant = BRW_MAX_GRF - 20 - c->vp->program.Base.NumTemporaries; - int constant = 0; - - /* We've got more constants than we can load with the push - * mechanism. This is often correlated with reladdr loads where - * we should probably be using a pull mechanism anyway to avoid - * excessive reading. However, the pull mechanism is slow in - * general. So, we try to allocate as many non-reladdr-loaded - * constants through the push buffer as we can before giving up. - */ - memset(c->constant_map, -1, c->vp->program.Base.Parameters->NumParameters); - for (i = 0; - i < c->vp->program.Base.NumInstructions && constant < max_constant; - i++) { - struct prog_instruction *inst = &c->vp->program.Base.Instructions[i]; - int arg; - - for (arg = 0; arg < 3 && constant < max_constant; arg++) { - if ((inst->SrcReg[arg].File != PROGRAM_STATE_VAR && - inst->SrcReg[arg].File != PROGRAM_CONSTANT && - inst->SrcReg[arg].File != PROGRAM_UNIFORM && - inst->SrcReg[arg].File != PROGRAM_ENV_PARAM && - inst->SrcReg[arg].File != PROGRAM_LOCAL_PARAM) || - inst->SrcReg[arg].RelAddr) - continue; - - if (c->constant_map[inst->SrcReg[arg].Index] == -1) { - c->constant_map[inst->SrcReg[arg].Index] = constant++; - } + if (intel->gen >= 6) { + /* We can only load 32 regs of push constants. */ + max_constant = 32 * 2 - c->key.nr_userclip; + } else { + max_constant = BRW_MAX_GRF - 20 - c->vp->program.Base.NumTemporaries; + } + + /* constant_map maps from ParameterValues[] index to index in the + * push constant buffer, or -1 if it's only in the pull constant + * buffer. + */ + memset(c->constant_map, -1, c->vp->program.Base.Parameters->NumParameters); + for (i = 0; + i < c->vp->program.Base.NumInstructions && constant < max_constant; + i++) { + struct prog_instruction *inst = &c->vp->program.Base.Instructions[i]; + int arg; + + for (arg = 0; arg < 3 && constant < max_constant; arg++) { + if (inst->SrcReg[arg].File != PROGRAM_STATE_VAR && + inst->SrcReg[arg].File != PROGRAM_CONSTANT && + inst->SrcReg[arg].File != PROGRAM_UNIFORM && + inst->SrcReg[arg].File != PROGRAM_ENV_PARAM && + inst->SrcReg[arg].File != PROGRAM_LOCAL_PARAM) { + continue; } - } - for (i = 0; i < constant; i++) { - c->regs[PROGRAM_STATE_VAR][i] = stride( brw_vec4_grf(reg+i/2, - (i%2) * 4), - 0, 4, 1); + if (inst->SrcReg[arg].RelAddr) { + c->vp->use_const_buffer = GL_TRUE; + continue; + } + + if (c->constant_map[inst->SrcReg[arg].Index] == -1) { + c->constant_map[inst->SrcReg[arg].Index] = constant++; + } } - reg += (constant + 1) / 2; - c->prog_data.curb_read_length = reg - 1; - /* XXX 0 causes a bug elsewhere... */ - c->prog_data.nr_params = MAX2(constant * 4, 4); } - else { - /* use a section of the GRF for constants */ - GLuint nr_params = c->vp->program.Base.Parameters->NumParameters; - for (i = 0; i < nr_params; i++) { - c->regs[PROGRAM_STATE_VAR][i] = stride( brw_vec4_grf(reg+i/2, (i%2) * 4), 0, 4, 1); - } - reg += (nr_params + 1) / 2; - c->prog_data.curb_read_length = reg - 1; - c->prog_data.nr_params = nr_params * 4; + /* If we ran out of push constant space, then we'll also upload all + * constants through the pull constant buffer so that they can be + * accessed no matter what. For relative addressing (the common + * case) we need them all in place anyway. + */ + if (constant == max_constant) + c->vp->use_const_buffer = GL_TRUE; + + for (i = 0; i < constant; i++) { + c->regs[PROGRAM_STATE_VAR][i] = stride(brw_vec4_grf(reg + i / 2, + (i % 2) * 4), + 0, 4, 1); } + reg += (constant + 1) / 2; + c->prog_data.curb_read_length = reg - 1; + c->prog_data.nr_params = constant * 4; + /* XXX 0 causes a bug elsewhere... */ + if (intel->gen < 6 && c->prog_data.nr_params == 0) + c->prog_data.nr_params = 4; /* Allocate input regs: */ @@ -270,7 +293,36 @@ static void brw_vs_alloc_regs( struct brw_vs_compile *c ) mrf = 4; first_reladdr_output = get_first_reladdr_output(&c->vp->program); - for (i = 0; i < VERT_RESULT_MAX; i++) { + + for (i = 0; i < VERT_RESULT_MAX; i++) + vert_result_reoder[i] = i; + + /* adjust attribute order in VUE for BFC0/BFC1 on Gen6+ */ + if (intel->gen >= 6 && c->key.two_side_color) { + if ((c->prog_data.outputs_written & BITFIELD64_BIT(VERT_RESULT_COL1)) && + (c->prog_data.outputs_written & BITFIELD64_BIT(VERT_RESULT_BFC1))) { + assert(c->prog_data.outputs_written & BITFIELD64_BIT(VERT_RESULT_COL0)); + assert(c->prog_data.outputs_written & BITFIELD64_BIT(VERT_RESULT_BFC0)); + bfc = 2; + } else if ((c->prog_data.outputs_written & BITFIELD64_BIT(VERT_RESULT_COL0)) && + (c->prog_data.outputs_written & BITFIELD64_BIT(VERT_RESULT_BFC0))) + bfc = 1; + + if (bfc) { + for (i = 0; i < bfc; i++) { + vert_result_reoder[VERT_RESULT_COL0 + i * 2 + 0] = VERT_RESULT_COL0 + i; + vert_result_reoder[VERT_RESULT_COL0 + i * 2 + 1] = VERT_RESULT_BFC0 + i; + } + + for (i = VERT_RESULT_COL0 + bfc * 2; i < VERT_RESULT_BFC0 + bfc; i++) { + vert_result_reoder[i] = i - bfc; + } + } + } + + for (j = 0; j < VERT_RESULT_MAX; j++) { + i = vert_result_reoder[j]; + if (c->prog_data.outputs_written & BITFIELD64_BIT(i)) { c->nr_outputs++; assert(i < Elements(c->regs[PROGRAM_OUTPUT])); @@ -281,7 +333,6 @@ static void brw_vs_alloc_regs( struct brw_vs_compile *c ) else if (i == VERT_RESULT_PSIZ) { c->regs[PROGRAM_OUTPUT][i] = brw_vec8_grf(reg, 0); reg++; - mrf++; /* just a placeholder? XXX fix later stages & remove this */ } else { /* Two restrictions on our compute-to-MRF here. The @@ -574,9 +625,18 @@ static void emit_max( struct brw_compile *p, struct brw_reg arg0, struct brw_reg arg1 ) { - brw_CMP(p, brw_null_reg(), BRW_CONDITIONAL_GE, arg0, arg1); - brw_SEL(p, dst, arg0, arg1); - brw_set_predicate_control(p, BRW_PREDICATE_NONE); + struct intel_context *intel = &p->brw->intel; + + if (intel->gen >= 6) { + brw_set_conditionalmod(p, BRW_CONDITIONAL_GE); + brw_SEL(p, dst, arg0, arg1); + brw_set_conditionalmod(p, BRW_CONDITIONAL_NONE); + brw_set_predicate_control(p, BRW_PREDICATE_NONE); + } else { + brw_CMP(p, brw_null_reg(), BRW_CONDITIONAL_GE, arg0, arg1); + brw_SEL(p, dst, arg0, arg1); + brw_set_predicate_control(p, BRW_PREDICATE_NONE); + } } static void emit_min( struct brw_compile *p, @@ -584,9 +644,34 @@ static void emit_min( struct brw_compile *p, struct brw_reg arg0, struct brw_reg arg1 ) { - brw_CMP(p, brw_null_reg(), BRW_CONDITIONAL_L, arg0, arg1); - brw_SEL(p, dst, arg0, arg1); - brw_set_predicate_control(p, BRW_PREDICATE_NONE); + struct intel_context *intel = &p->brw->intel; + + if (intel->gen >= 6) { + brw_set_conditionalmod(p, BRW_CONDITIONAL_L); + brw_SEL(p, dst, arg0, arg1); + brw_set_conditionalmod(p, BRW_CONDITIONAL_NONE); + brw_set_predicate_control(p, BRW_PREDICATE_NONE); + } else { + brw_CMP(p, brw_null_reg(), BRW_CONDITIONAL_L, arg0, arg1); + brw_SEL(p, dst, arg0, arg1); + brw_set_predicate_control(p, BRW_PREDICATE_NONE); + } +} + +static void emit_arl(struct brw_compile *p, + struct brw_reg dst, + struct brw_reg src) +{ + struct intel_context *intel = &p->brw->intel; + + if (intel->gen >= 6) { + struct brw_reg dst_f = retype(dst, BRW_REGISTER_TYPE_F); + + brw_RNDD(p, dst_f, src); + brw_MOV(p, dst, dst_f); + } else { + brw_RNDD(p, dst, src); + } } static void emit_math1_gen4(struct brw_vs_compile *c, @@ -680,7 +765,7 @@ emit_math1(struct brw_vs_compile *c, emit_math1_gen4(c, function, dst, arg0, precision); } -static void emit_math2( struct brw_vs_compile *c, +static void emit_math2_gen4( struct brw_vs_compile *c, GLuint function, struct brw_reg dst, struct brw_reg arg0, @@ -688,14 +773,11 @@ static void emit_math2( struct brw_vs_compile *c, GLuint precision) { struct brw_compile *p = &c->func; - struct intel_context *intel = &p->brw->intel; struct brw_reg tmp = dst; GLboolean need_tmp = GL_FALSE; - if (dst.file != BRW_GENERAL_REGISTER_FILE) - need_tmp = GL_TRUE; - - if (intel->gen < 6 && dst.dw1.bits.writemask != 0xf) + if (dst.file != BRW_GENERAL_REGISTER_FILE || + dst.dw1.bits.writemask != 0xf) need_tmp = GL_TRUE; if (need_tmp) @@ -718,6 +800,53 @@ static void emit_math2( struct brw_vs_compile *c, } } +static void emit_math2_gen6( struct brw_vs_compile *c, + GLuint function, + struct brw_reg dst, + struct brw_reg arg0, + struct brw_reg arg1, + GLuint precision) +{ + struct brw_compile *p = &c->func; + struct brw_reg tmp_src0, tmp_src1, tmp_dst; + + tmp_src0 = get_tmp(c); + tmp_src1 = get_tmp(c); + tmp_dst = get_tmp(c); + + brw_MOV(p, tmp_src0, arg0); + brw_MOV(p, tmp_src1, arg1); + + brw_set_access_mode(p, BRW_ALIGN_1); + brw_math2(p, + tmp_dst, + function, + tmp_src0, + tmp_src1); + brw_set_access_mode(p, BRW_ALIGN_16); + + brw_MOV(p, dst, tmp_dst); + + release_tmp(c, tmp_src0); + release_tmp(c, tmp_src1); + release_tmp(c, tmp_dst); +} + +static void emit_math2( struct brw_vs_compile *c, + GLuint function, + struct brw_reg dst, + struct brw_reg arg0, + struct brw_reg arg1, + GLuint precision) +{ + struct brw_compile *p = &c->func; + struct intel_context *intel = &p->brw->intel; + + if (intel->gen >= 6) + emit_math2_gen6(c, function, dst, arg0, arg1, precision); + else + emit_math2_gen4(c, function, dst, arg0, arg1, precision); +} static void emit_exp_noalias( struct brw_vs_compile *c, struct brw_reg dst, @@ -990,8 +1119,6 @@ get_constant(struct brw_vs_compile *c, assert(argIndex < 3); - assert(c->func.brw->intel.gen < 6); /* FINISHME */ - if (c->current_const[argIndex].index != src->Index) { /* Keep track of the last constant loaded in this slot, for reuse. */ c->current_const[argIndex].index = src->Index; @@ -1022,14 +1149,14 @@ get_reladdr_constant(struct brw_vs_compile *c, { const struct prog_src_register *src = &inst->SrcReg[argIndex]; struct brw_compile *p = &c->func; + struct brw_context *brw = p->brw; + struct intel_context *intel = &brw->intel; struct brw_reg const_reg = c->current_const[argIndex].reg; - struct brw_reg addrReg = c->regs[PROGRAM_ADDRESS][0]; - struct brw_reg byte_addr_reg = retype(get_tmp(c), BRW_REGISTER_TYPE_D); + struct brw_reg addr_reg = c->regs[PROGRAM_ADDRESS][0]; + uint32_t offset; assert(argIndex < 3); - assert(c->func.brw->intel.gen < 6); /* FINISHME */ - /* Can't reuse a reladdr constant load. */ c->current_const[argIndex].index = -1; @@ -1038,15 +1165,21 @@ get_reladdr_constant(struct brw_vs_compile *c, src->Index, argIndex, c->current_const[argIndex].reg.nr); #endif - brw_MUL(p, byte_addr_reg, addrReg, brw_imm_ud(16)); + if (intel->gen >= 6) { + offset = src->Index; + } else { + struct brw_reg byte_addr_reg = retype(get_tmp(c), BRW_REGISTER_TYPE_D); + brw_MUL(p, byte_addr_reg, addr_reg, brw_imm_d(16)); + addr_reg = byte_addr_reg; + offset = 16 * src->Index; + } /* fetch the first vec4 */ brw_dp_READ_4_vs_relative(p, - const_reg, /* writeback dest */ - byte_addr_reg, /* address register */ - 16 * src->Index, /* byte offset */ - SURF_INDEX_VERT_CONST_BUFFER /* binding table index */ - ); + const_reg, + addr_reg, + offset, + SURF_INDEX_VERT_CONST_BUFFER); return const_reg; } @@ -1241,22 +1374,18 @@ get_src_reg( struct brw_vs_compile *c, case PROGRAM_UNIFORM: case PROGRAM_ENV_PARAM: case PROGRAM_LOCAL_PARAM: - if (c->vp->use_const_buffer) { - if (!relAddr && c->constant_map[index] != -1) { - assert(c->regs[PROGRAM_STATE_VAR][c->constant_map[index]].nr != 0); - return c->regs[PROGRAM_STATE_VAR][c->constant_map[index]]; - } else if (relAddr) + if (!relAddr && c->constant_map[index] != -1) { + /* Take from the push constant buffer if possible. */ + assert(c->regs[PROGRAM_STATE_VAR][c->constant_map[index]].nr != 0); + return c->regs[PROGRAM_STATE_VAR][c->constant_map[index]]; + } else { + /* Must be in the pull constant buffer then .*/ + assert(c->vp->use_const_buffer); + if (relAddr) return get_reladdr_constant(c, inst, argIndex); else return get_constant(c, inst, argIndex); } - else if (relAddr) { - return deref(c, c->regs[PROGRAM_STATE_VAR][0], index, 16); - } - else { - assert(c->regs[PROGRAM_STATE_VAR][index].nr != 0); - return c->regs[PROGRAM_STATE_VAR][index]; - } case PROGRAM_ADDRESS: assert(index == 0); return c->regs[file][index]; @@ -1585,6 +1714,8 @@ static void emit_vertex_write( struct brw_vs_compile *c) break; if (!(c->prog_data.outputs_written & BITFIELD64_BIT(i))) continue; + if (i == VERT_RESULT_PSIZ) + continue; if (i >= VERT_RESULT_TEX0 && c->regs[PROGRAM_OUTPUT][i].file == BRW_GENERAL_REGISTER_FILE) { @@ -1848,7 +1979,7 @@ void brw_vs_emit(struct brw_vs_compile *c ) emit_math1(c, BRW_MATH_FUNCTION_EXP, dst, args[0], BRW_MATH_PRECISION_FULL); break; case OPCODE_ARL: - brw_RNDD(p, dst, args[0]); + emit_arl(p, dst, args[0]); break; case OPCODE_FLR: brw_RNDD(p, dst, args[0]); @@ -1895,7 +2026,7 @@ void brw_vs_emit(struct brw_vs_compile *c ) emit_math1(c, BRW_MATH_FUNCTION_INV, dst, args[0], BRW_MATH_PRECISION_FULL); break; case OPCODE_RSQ: - emit_math1(c, BRW_MATH_FUNCTION_RSQ, dst, args[0], BRW_MATH_PRECISION_FULL); + emit_math1(c, BRW_MATH_FUNCTION_RSQ, dst, brw_abs(args[0]), BRW_MATH_PRECISION_FULL); break; case OPCODE_SEQ: @@ -1969,35 +2100,42 @@ void brw_vs_emit(struct brw_vs_compile *c ) break; case OPCODE_CONT: brw_set_predicate_control(p, get_predicate(inst)); - brw_CONT(p, if_depth_in_loop[loop_depth]); + if (intel->gen >= 6) { + brw_CONT_gen6(p, loop_inst[loop_depth - 1]); + } else { + brw_CONT(p, if_depth_in_loop[loop_depth]); + } brw_set_predicate_control(p, BRW_PREDICATE_NONE); break; - case OPCODE_ENDLOOP: - { - clear_current_const(c); - struct brw_instruction *inst0, *inst1; - GLuint br = 1; - - loop_depth--; - - if (intel->gen == 5) - br = 2; - - inst0 = inst1 = brw_WHILE(p, loop_inst[loop_depth]); - /* patch all the BREAK/CONT instructions from last BEGINLOOP */ - while (inst0 > loop_inst[loop_depth]) { - inst0--; - if (inst0->header.opcode == BRW_OPCODE_BREAK && + + case OPCODE_ENDLOOP: { + clear_current_const(c); + struct brw_instruction *inst0, *inst1; + GLuint br = 1; + + loop_depth--; + + if (intel->gen == 5) + br = 2; + + inst0 = inst1 = brw_WHILE(p, loop_inst[loop_depth]); + + if (intel->gen < 6) { + /* patch all the BREAK/CONT instructions from last BEGINLOOP */ + while (inst0 > loop_inst[loop_depth]) { + inst0--; + if (inst0->header.opcode == BRW_OPCODE_BREAK && inst0->bits3.if_else.jump_count == 0) { - inst0->bits3.if_else.jump_count = br * (inst1 - inst0 + 1); - } - else if (inst0->header.opcode == BRW_OPCODE_CONTINUE && - inst0->bits3.if_else.jump_count == 0) { - inst0->bits3.if_else.jump_count = br * (inst1 - inst0); - } - } - } + inst0->bits3.if_else.jump_count = br * (inst1 - inst0 + 1); + } else if (inst0->header.opcode == BRW_OPCODE_CONTINUE && + inst0->bits3.if_else.jump_count == 0) { + inst0->bits3.if_else.jump_count = br * (inst1 - inst0); + } + } + } + } break; + case OPCODE_BRA: brw_set_predicate_control(p, get_predicate(inst)); brw_ADD(p, brw_ip_reg(), brw_ip_reg(), brw_imm_d(1*16)); @@ -2088,6 +2226,7 @@ void brw_vs_emit(struct brw_vs_compile *c ) } brw_resolve_cals(p); + brw_set_uip_jip(p); brw_optimize(p); diff --git a/src/mesa/drivers/dri/i965/brw_wm.c b/src/mesa/drivers/dri/i965/brw_wm.c index a6d2a2377f6..656501b4f79 100644 --- a/src/mesa/drivers/dri/i965/brw_wm.c +++ b/src/mesa/drivers/dri/i965/brw_wm.c @@ -119,6 +119,62 @@ brw_wm_non_glsl_emit(struct brw_context *brw, struct brw_wm_compile *c) brw_wm_emit(c); } +static void +brw_wm_payload_setup(struct brw_context *brw, + struct brw_wm_compile *c) +{ + struct intel_context *intel = &brw->intel; + bool uses_depth = (c->fp->program.Base.InputsRead & + (1 << FRAG_ATTRIB_WPOS)) != 0; + + if (intel->gen >= 6) { + /* R0-1: masks, pixel X/Y coordinates. */ + c->nr_payload_regs = 2; + /* R2: only for 32-pixel dispatch.*/ + /* R3-4: perspective pixel location barycentric */ + c->nr_payload_regs += 2; + /* R5-6: perspective pixel location bary for dispatch width != 8 */ + if (c->dispatch_width == 16) { + c->nr_payload_regs += 2; + } + /* R7-10: perspective centroid barycentric */ + /* R11-14: perspective sample barycentric */ + /* R15-18: linear pixel location barycentric */ + /* R19-22: linear centroid barycentric */ + /* R23-26: linear sample barycentric */ + + /* R27: interpolated depth if uses source depth */ + if (uses_depth) { + c->source_depth_reg = c->nr_payload_regs; + c->nr_payload_regs++; + if (c->dispatch_width == 16) { + /* R28: interpolated depth if not 8-wide. */ + c->nr_payload_regs++; + } + } + /* R29: interpolated W set if GEN6_WM_USES_SOURCE_W. + */ + if (uses_depth) { + c->source_w_reg = c->nr_payload_regs; + c->nr_payload_regs++; + if (c->dispatch_width == 16) { + /* R30: interpolated W if not 8-wide. */ + c->nr_payload_regs++; + } + } + /* R31: MSAA position offsets. */ + /* R32-: bary for 32-pixel. */ + /* R58-59: interp W for 32-pixel. */ + + if (c->fp->program.Base.OutputsWritten & + BITFIELD64_BIT(FRAG_RESULT_DEPTH)) { + c->source_depth_to_render_target = GL_TRUE; + c->computes_depth = GL_TRUE; + } + } else { + brw_wm_lookup_iz(intel, c); + } +} /** * All Mesa program -> GPU code generation goes through this function. @@ -167,23 +223,18 @@ static void do_wm_prog( struct brw_context *brw, brw_init_compile(brw, &c->func); - /* temporary sanity check assertion */ - ASSERT(fp->isGLSL == brw_wm_is_glsl(&c->fp->program)); + 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. */ - if (fp->isGLSL) { - c->dispatch_width = 8; - brw_wm_glsl_emit(brw, c); - } - else { - c->dispatch_width = 16; - brw_wm_non_glsl_emit(brw, c); - } + c->dispatch_width = 16; + brw_wm_payload_setup(brw, c); + brw_wm_non_glsl_emit(brw, c); } + c->prog_data.dispatch_width = c->dispatch_width; /* Scratch space is used for register spilling */ if (c->last_scratch) { @@ -220,12 +271,10 @@ static void do_wm_prog( struct brw_context *brw, static void brw_wm_populate_key( struct brw_context *brw, struct brw_wm_prog_key *key ) { - struct intel_context *intel = &brw->intel; struct gl_context *ctx = &brw->intel.ctx; /* BRW_NEW_FRAGMENT_PROGRAM */ const struct brw_fragment_program *fp = (struct brw_fragment_program *)brw->fragment_program; - GLboolean uses_depth = (fp->program.Base.InputsRead & (1 << FRAG_ATTRIB_WPOS)) != 0; GLuint lookup = 0; GLuint line_aa; GLuint i; @@ -285,57 +334,9 @@ static void brw_wm_populate_key( struct brw_context *brw, } } - if (intel->gen >= 6) { - /* R0-1: masks, pixel X/Y coordinates. */ - key->nr_payload_regs = 2; - /* R2: only for 32-pixel dispatch.*/ - /* R3-4: perspective pixel location barycentric */ - key->nr_payload_regs += 2; - /* R5-6: perspective pixel location bary for dispatch width != 8 */ - if (!fp->isGLSL) { /* dispatch_width != 8 */ - key->nr_payload_regs += 2; - } - /* R7-10: perspective centroid barycentric */ - /* R11-14: perspective sample barycentric */ - /* R15-18: linear pixel location barycentric */ - /* R19-22: linear centroid barycentric */ - /* R23-26: linear sample barycentric */ - - /* R27: interpolated depth if uses source depth */ - if (uses_depth) { - key->source_depth_reg = key->nr_payload_regs; - key->nr_payload_regs++; - if (!fp->isGLSL) { /* dispatch_width != 8 */ - /* R28: interpolated depth if not 8-wide. */ - key->nr_payload_regs++; - } - } - /* R29: interpolated W set if GEN6_WM_USES_SOURCE_W. - */ - if (uses_depth) { - key->source_w_reg = key->nr_payload_regs; - key->nr_payload_regs++; - if (!fp->isGLSL) { /* dispatch_width != 8 */ - /* R30: interpolated W if not 8-wide. */ - key->nr_payload_regs++; - } - } - /* R31: MSAA position offsets. */ - /* R32-: bary for 32-pixel. */ - /* R58-59: interp W for 32-pixel. */ - - if (fp->program.Base.OutputsWritten & BITFIELD64_BIT(FRAG_RESULT_DEPTH)) { - key->source_depth_to_render_target = GL_TRUE; - key->computes_depth = GL_TRUE; - } - - } else { - brw_wm_lookup_iz(intel, - line_aa, - lookup, - uses_depth, - key); - } + key->iz_lookup = lookup; + key->line_aa = line_aa; + key->stats_wm = brw->intel.stats_wm; /* BRW_NEW_WM_INPUT_DIMENSIONS */ key->proj_attrib_mask = brw->wm.input_size_masks[4-1]; @@ -377,6 +378,10 @@ static void brw_wm_populate_key( struct brw_context *brw, swizzles[2] = SWIZZLE_ZERO; } else if (t->DepthMode == GL_LUMINANCE) { swizzles[3] = SWIZZLE_ONE; + } else if (t->DepthMode == GL_RED) { + swizzles[1] = SWIZZLE_ZERO; + swizzles[2] = SWIZZLE_ZERO; + swizzles[3] = SWIZZLE_ZERO; } } @@ -423,6 +428,7 @@ static void brw_wm_populate_key( struct brw_context *brw, */ if (fp->program.Base.InputsRead & FRAG_BIT_WPOS) { key->drawable_height = ctx->DrawBuffer->Height; + key->render_to_fbo = ctx->DrawBuffer->Name != 0; } key->nr_color_regions = brw->state.nr_color_regions; diff --git a/src/mesa/drivers/dri/i965/brw_wm.h b/src/mesa/drivers/dri/i965/brw_wm.h index 99bd15c187f..e7f3cfbb75f 100644 --- a/src/mesa/drivers/dri/i965/brw_wm.h +++ b/src/mesa/drivers/dri/i965/brw_wm.h @@ -59,18 +59,12 @@ #define AA_ALWAYS 2 struct brw_wm_prog_key { - 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; - GLuint computes_depth:1; /* could be derived from program string */ - GLuint source_depth_to_render_target:1; + GLuint stats_wm:1; GLuint flat_shade:1; GLuint linear_color:1; /**< linear interpolation vs perspective interp */ - GLuint runtime_check_aads_emit:1; GLuint nr_color_regions:5; - + GLuint render_to_fbo:1; + GLbitfield proj_attrib_mask; /**< one bit per fragment program attribute */ GLuint shadowtex_mask:16; GLuint yuvtex_mask:16; @@ -80,6 +74,8 @@ struct brw_wm_prog_key { GLushort drawable_height; GLbitfield64 vp_outputs_written; + GLuint iz_lookup; + GLuint line_aa; GLuint program_string_id:32; }; @@ -203,6 +199,15 @@ 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; + GLuint computes_depth:1; /* could be derived from program string */ + GLuint source_depth_to_render_target:1; + GLuint runtime_check_aads_emit:1; + /* Initial pass - translate fp instructions to fp instructions, * simplifying and adding instructions for interpolation and * framebuffer writes. @@ -305,14 +310,9 @@ void brw_wm_print_insn( struct brw_wm_compile *c, void brw_wm_print_program( struct brw_wm_compile *c, const char *stage ); -void brw_wm_lookup_iz( struct intel_context *intel, - GLuint line_aa, - GLuint lookup, - GLboolean ps_uses_depth, - struct brw_wm_prog_key *key ); +void brw_wm_lookup_iz(struct intel_context *intel, + struct brw_wm_compile *c); -GLboolean brw_wm_is_glsl(const struct gl_fragment_program *fp); -void brw_wm_glsl_emit(struct brw_context *brw, struct brw_wm_compile *c); GLboolean brw_wm_fs_emit(struct brw_context *brw, struct brw_wm_compile *c); /* brw_wm_emit.c */ @@ -380,7 +380,6 @@ void emit_fb_write(struct brw_wm_compile *c, void emit_frontfacing(struct brw_compile *p, const struct brw_reg *dst, GLuint mask); -void emit_kil_nv(struct brw_wm_compile *c); void emit_linterp(struct brw_compile *p, const struct brw_reg *dst, GLuint mask, diff --git a/src/mesa/drivers/dri/i965/brw_wm_emit.c b/src/mesa/drivers/dri/i965/brw_wm_emit.c index 96fecc97ee2..be86e0e1287 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_emit.c +++ b/src/mesa/drivers/dri/i965/brw_wm_emit.c @@ -219,43 +219,45 @@ void emit_wpos_xy(struct brw_wm_compile *c, const struct brw_reg *arg0) { struct brw_compile *p = &c->func; + struct intel_context *intel = &p->brw->intel; + struct brw_reg delta_x = retype(arg0[0], BRW_REGISTER_TYPE_W); + struct brw_reg delta_y = retype(arg0[1], BRW_REGISTER_TYPE_W); if (mask & WRITEMASK_X) { + if (intel->gen >= 6) { + struct brw_reg delta_x_f = retype(delta_x, BRW_REGISTER_TYPE_F); + brw_MOV(p, delta_x_f, delta_x); + delta_x = delta_x_f; + } + if (c->fp->program.PixelCenterInteger) { /* X' = X */ - brw_MOV(p, - dst[0], - retype(arg0[0], BRW_REGISTER_TYPE_W)); + brw_MOV(p, dst[0], delta_x); } else { /* X' = X + 0.5 */ - brw_ADD(p, - dst[0], - retype(arg0[0], BRW_REGISTER_TYPE_W), - brw_imm_f(0.5)); + brw_ADD(p, dst[0], delta_x, brw_imm_f(0.5)); } } if (mask & WRITEMASK_Y) { + if (intel->gen >= 6) { + struct brw_reg delta_y_f = retype(delta_y, BRW_REGISTER_TYPE_F); + brw_MOV(p, delta_y_f, delta_y); + delta_y = delta_y_f; + } + if (c->fp->program.OriginUpperLeft) { if (c->fp->program.PixelCenterInteger) { /* Y' = Y */ - brw_MOV(p, - dst[1], - retype(arg0[1], BRW_REGISTER_TYPE_W)); + brw_MOV(p, dst[1], delta_y); } else { - /* Y' = Y + 0.5 */ - brw_ADD(p, - dst[1], - retype(arg0[1], BRW_REGISTER_TYPE_W), - brw_imm_f(0.5)); + brw_ADD(p, dst[1], delta_y, brw_imm_f(0.5)); } } else { float center_offset = c->fp->program.PixelCenterInteger ? 0.0 : 0.5; /* Y' = (height - 1) - Y + center */ - brw_ADD(p, - dst[1], - negate(retype(arg0[1], BRW_REGISTER_TYPE_W)), + brw_ADD(p, dst[1], negate(delta_y), brw_imm_f(c->key.drawable_height - 1 + center_offset)); } } @@ -896,10 +898,14 @@ void emit_math1(struct brw_wm_compile *c, BRW_MATH_SATURATE_NONE); struct brw_reg src; - if (intel->gen >= 6 && (arg0[0].hstride == BRW_HORIZONTAL_STRIDE_0 || - arg0[0].file != BRW_GENERAL_REGISTER_FILE)) { + if (intel->gen >= 6 && ((arg0[0].hstride == BRW_HORIZONTAL_STRIDE_0 || + arg0[0].file != BRW_GENERAL_REGISTER_FILE) || + arg0[0].negate || arg0[0].abs)) { /* Gen6 math requires that source and dst horizontal stride be 1, * and that the argument be in the GRF. + * + * The hardware ignores source modifiers (negate and abs) on math + * instructions, so we also move to a temp to set those up. */ src = dst[dst_chan]; brw_MOV(p, src, arg0[0]); @@ -967,34 +973,23 @@ void emit_math2(struct brw_wm_compile *c, struct brw_reg temp_dst = dst[dst_chan]; if (arg0[0].hstride == BRW_HORIZONTAL_STRIDE_0) { - if (arg1[0].hstride == BRW_HORIZONTAL_STRIDE_0) { - /* Both scalar arguments. Do scalar calc. */ - src0.hstride = BRW_HORIZONTAL_STRIDE_1; - src1.hstride = BRW_HORIZONTAL_STRIDE_1; - temp_dst.hstride = BRW_HORIZONTAL_STRIDE_1; - temp_dst.width = BRW_WIDTH_1; - - if (arg0[0].subnr != 0) { - brw_MOV(p, temp_dst, src0); - src0 = temp_dst; - - /* Ouch. We've used the temp as a dst, and we still - * need a temp to store arg1 in, because src and dst - * offsets have to be equal. Leaving this up to - * glsl2-965 to handle correctly. - */ - assert(arg1[0].subnr == 0); - } else if (arg1[0].subnr != 0) { - brw_MOV(p, temp_dst, src1); - src1 = temp_dst; - } - } else { - brw_MOV(p, temp_dst, src0); - src0 = temp_dst; - } - } else if (arg1[0].hstride == BRW_HORIZONTAL_STRIDE_0) { - brw_MOV(p, temp_dst, src1); - src1 = temp_dst; + brw_MOV(p, temp_dst, src0); + src0 = temp_dst; + } + + if (arg1[0].hstride == BRW_HORIZONTAL_STRIDE_0) { + /* This is a heinous hack to get a temporary register for use + * in case both arg0 and arg1 are constants. Why you're + * doing exponentiation on constant values in the shader, we + * don't know. + * + * max_wm_grf is almost surely less than the maximum GRF, and + * gen6 doesn't care about the number of GRFs used in a + * shader like pre-gen6 did. + */ + struct brw_reg temp = brw_vec8_grf(c->max_wm_grf, 0); + brw_MOV(p, temp, src1); + src1 = temp; } brw_set_saturate(p, (mask & SATURATE) ? 1 : 0); @@ -1012,14 +1007,6 @@ void emit_math2(struct brw_wm_compile *c, sechalf(src0), sechalf(src1)); } - - /* Splat a scalar result into all the channels. */ - if (arg0[0].hstride == BRW_HORIZONTAL_STRIDE_0 && - arg1[0].hstride == BRW_HORIZONTAL_STRIDE_0) { - temp_dst.hstride = BRW_HORIZONTAL_STRIDE_0; - temp_dst.vstride = BRW_VERTICAL_STRIDE_0; - brw_MOV(p, dst[dst_chan], temp_dst); - } } else { GLuint saturate = ((mask & SATURATE) ? BRW_MATH_SATURATE_SATURATE : @@ -1301,9 +1288,15 @@ static void emit_kil( struct brw_wm_compile *c, struct brw_reg *arg0) { struct brw_compile *p = &c->func; - struct brw_reg r0uw = retype(brw_vec1_grf(0, 0), BRW_REGISTER_TYPE_UW); + struct intel_context *intel = &p->brw->intel; + struct brw_reg pixelmask; GLuint i, j; + if (intel->gen >= 6) + pixelmask = retype(brw_vec1_grf(1, 7), BRW_REGISTER_TYPE_UW); + else + pixelmask = retype(brw_vec1_grf(0, 0), BRW_REGISTER_TYPE_UW); + for (i = 0; i < 4; i++) { /* Check if we've already done the comparison for this reg * -- common when someone does KIL TEMP.wwww. @@ -1319,26 +1312,11 @@ static void emit_kil( struct brw_wm_compile *c, brw_CMP(p, brw_null_reg(), BRW_CONDITIONAL_GE, arg0[i], brw_imm_f(0)); brw_set_predicate_control_flag_value(p, 0xff); brw_set_compression_control(p, BRW_COMPRESSION_NONE); - brw_AND(p, r0uw, brw_flag_reg(), r0uw); + brw_AND(p, pixelmask, brw_flag_reg(), pixelmask); brw_pop_insn_state(p); } } -/* KIL_NV kills the pixels that are currently executing, not based on a test - * of the arguments. - */ -void emit_kil_nv( struct brw_wm_compile *c ) -{ - struct brw_compile *p = &c->func; - struct brw_reg r0uw = retype(brw_vec1_grf(0, 0), BRW_REGISTER_TYPE_UW); - - brw_push_insn_state(p); - brw_set_mask_control(p, BRW_MASK_DISABLE); - brw_NOT(p, c->emit_mask_reg, brw_mask_reg(1)); /* IMASK */ - brw_AND(p, r0uw, c->emit_mask_reg, r0uw); - brw_pop_insn_state(p); -} - static void fire_fb_write( struct brw_wm_compile *c, GLuint base_reg, GLuint nr, @@ -1387,8 +1365,8 @@ static void emit_aa( struct brw_wm_compile *c, GLuint reg ) { struct brw_compile *p = &c->func; - GLuint comp = c->key.aa_dest_stencil_reg / 2; - GLuint off = c->key.aa_dest_stencil_reg % 2; + GLuint comp = c->aa_dest_stencil_reg / 2; + GLuint off = c->aa_dest_stencil_reg % 2; struct brw_reg aa = offset(arg1[comp], off); brw_push_insn_state(p); @@ -1416,11 +1394,10 @@ void emit_fb_write(struct brw_wm_compile *c, struct intel_context *intel = &brw->intel; GLuint nr = 2; GLuint channel; - int base_reg; /* For gen6 fb write with no header, starting from color payload directly!. */ /* Reserve a space for AA - may not be needed: */ - if (c->key.aa_dest_stencil_reg) + if (c->aa_dest_stencil_reg) nr += 1; /* I don't really understand how this achieves the color interleave @@ -1428,11 +1405,6 @@ void emit_fb_write(struct brw_wm_compile *c, */ brw_push_insn_state(p); - if (intel->gen >= 6) - base_reg = nr; - else - base_reg = 0; - for (channel = 0; channel < 4; channel++) { if (intel->gen >= 6) { /* gen6 SIMD16 single source DP write looks like: @@ -1493,9 +1465,9 @@ void emit_fb_write(struct brw_wm_compile *c, brw_pop_insn_state(p); - if (c->key.source_depth_to_render_target) + if (c->source_depth_to_render_target) { - if (c->key.computes_depth) + if (c->computes_depth) brw_MOV(p, brw_message_reg(nr), arg2[2]); else brw_MOV(p, brw_message_reg(nr), arg1[1]); /* ? */ @@ -1503,10 +1475,10 @@ void emit_fb_write(struct brw_wm_compile *c, nr += 2; } - if (c->key.dest_depth_reg) + if (c->dest_depth_reg) { - GLuint comp = c->key.dest_depth_reg / 2; - GLuint off = c->key.dest_depth_reg % 2; + GLuint comp = c->dest_depth_reg / 2; + GLuint off = c->dest_depth_reg % 2; if (off != 0) { brw_push_insn_state(p); @@ -1524,15 +1496,27 @@ void emit_fb_write(struct brw_wm_compile *c, } if (intel->gen >= 6) { - /* Subtract off the message header, since we send headerless. */ - nr -= 2; + /* Load the message header. There's no implied move from src0 + * to the base mrf on gen6. + */ + brw_push_insn_state(p); + brw_set_mask_control(p, BRW_MASK_DISABLE); + brw_MOV(p, brw_message_reg(0), brw_vec8_grf(0, 0)); + brw_pop_insn_state(p); + + if (target != 0) { + brw_MOV(p, retype(brw_vec1_reg(BRW_MESSAGE_REGISTER_FILE, + 0, + 2), BRW_REGISTER_TYPE_UD), + brw_imm_ud(target)); + } } - if (!c->key.runtime_check_aads_emit) { - if (c->key.aa_dest_stencil_reg) + if (!c->runtime_check_aads_emit) { + if (c->aa_dest_stencil_reg) emit_aa(c, arg1, 2); - fire_fb_write(c, base_reg, nr, target, eot); + fire_fb_write(c, 0, nr, target, eot); } else { struct brw_reg v1_null_ud = vec1(retype(brw_null_reg(), BRW_REGISTER_TYPE_UD)); @@ -1897,10 +1881,6 @@ void brw_wm_emit( struct brw_wm_compile *c ) emit_kil(c, args[0]); break; - case OPCODE_KIL_NV: - emit_kil_nv(c); - break; - default: printf("Unsupported opcode %i (%s) in fragment shader\n", inst->opcode, inst->opcode < MAX_OPCODE ? diff --git a/src/mesa/drivers/dri/i965/brw_wm_fp.c b/src/mesa/drivers/dri/i965/brw_wm_fp.c index 2cae6988804..4759b289a0c 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_fp.c +++ b/src/mesa/drivers/dri/i965/brw_wm_fp.c @@ -338,11 +338,13 @@ static struct prog_src_register get_delta_xy( struct brw_wm_compile *c ) static struct prog_src_register get_pixel_w( struct brw_wm_compile *c ) { - /* This is only called for producing 1/w in pre-gen6 interp. for - * gen6, the interp opcodes don't use this argument. + /* This is called for producing 1/w in pre-gen6 interp. for gen6, + * the interp opcodes don't use this argument. But to keep the + * nr_args = 3 expectations of pinterp happy, just stuff delta_xy + * into the slot. */ if (c->func.brw->intel.gen >= 6) - return src_undef(); + return c->delta_xy; if (src_is_undef(c->pixel_w)) { struct prog_dst_register pixel_w = get_temp(c); @@ -373,11 +375,7 @@ static void emit_interp( struct brw_wm_compile *c, struct prog_src_register interp = src_reg(PROGRAM_PAYLOAD, idx); struct prog_src_register deltas; - if (c->func.brw->intel.gen < 6) { - deltas = get_delta_xy(c); - } else { - deltas = src_undef(); - } + deltas = get_delta_xy(c); /* Need to use PINTERP on attributes which have been * multiplied by 1/W in the SF program, and LINTERP on those @@ -1133,6 +1131,11 @@ void brw_wm_pass_fp( struct brw_wm_compile *c ) precalc_lit(c, inst); break; + case OPCODE_RSQ: + out = emit_scalar_insn(c, inst); + out->SrcReg[0].Abs = GL_TRUE; + break; + case OPCODE_TEX: precalc_tex(c, inst); break; diff --git a/src/mesa/drivers/dri/i965/brw_wm_glsl.c b/src/mesa/drivers/dri/i965/brw_wm_glsl.c deleted file mode 100644 index 7fe8ab1f334..00000000000 --- a/src/mesa/drivers/dri/i965/brw_wm_glsl.c +++ /dev/null @@ -1,1035 +0,0 @@ -#include "main/macros.h" -#include "program/prog_parameter.h" -#include "program/prog_print.h" -#include "program/prog_optimize.h" -#include "brw_context.h" -#include "brw_eu.h" -#include "brw_wm.h" - -static struct brw_reg get_dst_reg(struct brw_wm_compile *c, - const struct prog_instruction *inst, - GLuint component); - -/** - * Determine if the given fragment program uses GLSL features such - * as flow conditionals, loops, subroutines. - * Some GLSL shaders may use these features, others might not. - */ -GLboolean brw_wm_is_glsl(const struct gl_fragment_program *fp) -{ - int i; - - if (unlikely(INTEL_DEBUG & DEBUG_GLSL_FORCE)) - return GL_TRUE; - - for (i = 0; i < fp->Base.NumInstructions; i++) { - const struct prog_instruction *inst = &fp->Base.Instructions[i]; - switch (inst->Opcode) { - case OPCODE_ARL: - case OPCODE_IF: - case OPCODE_ENDIF: - case OPCODE_CAL: - case OPCODE_BRK: - case OPCODE_RET: - case OPCODE_BGNLOOP: - return GL_TRUE; - default: - break; - } - } - return GL_FALSE; -} - - - -static void -reclaim_temps(struct brw_wm_compile *c); - - -/** Mark GRF register as used. */ -static void -prealloc_grf(struct brw_wm_compile *c, int r) -{ - c->used_grf[r] = GL_TRUE; -} - - -/** Mark given GRF register as not in use. */ -static void -release_grf(struct brw_wm_compile *c, int r) -{ - /*assert(c->used_grf[r]);*/ - c->used_grf[r] = GL_FALSE; - c->first_free_grf = MIN2(c->first_free_grf, r); -} - - -/** Return index of a free GRF, mark it as used. */ -static int -alloc_grf(struct brw_wm_compile *c) -{ - GLuint r; - for (r = c->first_free_grf; r < BRW_WM_MAX_GRF; r++) { - if (!c->used_grf[r]) { - c->used_grf[r] = GL_TRUE; - c->first_free_grf = r + 1; /* a guess */ - return r; - } - } - - /* no free temps, try to reclaim some */ - reclaim_temps(c); - c->first_free_grf = 0; - - /* try alloc again */ - for (r = c->first_free_grf; r < BRW_WM_MAX_GRF; r++) { - if (!c->used_grf[r]) { - c->used_grf[r] = GL_TRUE; - c->first_free_grf = r + 1; /* a guess */ - return r; - } - } - - for (r = 0; r < BRW_WM_MAX_GRF; r++) { - assert(c->used_grf[r]); - } - - /* really, no free GRF regs found */ - if (!c->out_of_regs) { - /* print warning once per compilation */ - _mesa_warning(NULL, "i965: ran out of registers for fragment program"); - c->out_of_regs = GL_TRUE; - } - - return -1; -} - - -/** Return number of GRF registers used */ -static int -num_grf_used(const struct brw_wm_compile *c) -{ - int r; - for (r = BRW_WM_MAX_GRF - 1; r >= 0; r--) - if (c->used_grf[r]) - return r + 1; - return 0; -} - - - -/** - * Record the mapping of a Mesa register to a hardware register. - */ -static void set_reg(struct brw_wm_compile *c, int file, int index, - int component, struct brw_reg reg) -{ - c->wm_regs[file][index][component].reg = reg; - c->wm_regs[file][index][component].inited = GL_TRUE; -} - -static struct brw_reg alloc_tmp(struct brw_wm_compile *c) -{ - struct brw_reg reg; - - /* if we need to allocate another temp, grow the tmp_regs[] array */ - if (c->tmp_index == c->tmp_max) { - int r = alloc_grf(c); - if (r < 0) { - /*printf("Out of temps in %s\n", __FUNCTION__);*/ - r = 50; /* XXX random register! */ - } - c->tmp_regs[ c->tmp_max++ ] = r; - } - - /* form the GRF register */ - reg = brw_vec8_grf(c->tmp_regs[ c->tmp_index++ ], 0); - /*printf("alloc_temp %d\n", reg.nr);*/ - assert(reg.nr < BRW_WM_MAX_GRF); - return reg; - -} - -/** - * Save current temp register info. - * There must be a matching call to release_tmps(). - */ -static int mark_tmps(struct brw_wm_compile *c) -{ - return c->tmp_index; -} - -static void release_tmps(struct brw_wm_compile *c, int mark) -{ - c->tmp_index = mark; -} - -/** - * Convert Mesa src register to brw register. - * - * Since we're running in SOA mode each Mesa register corresponds to four - * hardware registers. We allocate the hardware registers as needed here. - * - * \param file register file, one of PROGRAM_x - * \param index register number - * \param component src component (X=0, Y=1, Z=2, W=3) - * \param nr not used?!? - * \param neg negate value? - * \param abs take absolute value? - */ -static struct brw_reg -get_reg(struct brw_wm_compile *c, int file, int index, int component, - int nr, GLuint neg, GLuint abs) -{ - struct brw_reg reg; - switch (file) { - case PROGRAM_STATE_VAR: - case PROGRAM_CONSTANT: - case PROGRAM_UNIFORM: - file = PROGRAM_STATE_VAR; - break; - case PROGRAM_UNDEFINED: - return brw_null_reg(); - case PROGRAM_TEMPORARY: - case PROGRAM_INPUT: - case PROGRAM_OUTPUT: - case PROGRAM_PAYLOAD: - break; - default: - _mesa_problem(NULL, "Unexpected file in get_reg()"); - return brw_null_reg(); - } - - assert(index < 256); - assert(component < 4); - - /* see if we've already allocated a HW register for this Mesa register */ - if (c->wm_regs[file][index][component].inited) { - /* yes, re-use */ - reg = c->wm_regs[file][index][component].reg; - } - else { - /* no, allocate new register */ - int grf = alloc_grf(c); - /*printf("alloc grf %d for reg %d:%d.%d\n", grf, file, index, component);*/ - if (grf < 0) { - /* totally out of temps */ - grf = 51; /* XXX random register! */ - } - - reg = brw_vec8_grf(grf, 0); - /*printf("Alloc new grf %d for %d.%d\n", reg.nr, index, component);*/ - - set_reg(c, file, index, component, reg); - } - - if (neg & (1 << component)) { - reg = negate(reg); - } - if (abs) - reg = brw_abs(reg); - return reg; -} - - - -/** - * This is called if we run out of GRF registers. Examine the live intervals - * of temp regs in the program and free those which won't be used again. - */ -static void -reclaim_temps(struct brw_wm_compile *c) -{ - GLint intBegin[MAX_PROGRAM_TEMPS]; - GLint intEnd[MAX_PROGRAM_TEMPS]; - int index; - - /*printf("Reclaim temps:\n");*/ - - _mesa_find_temp_intervals(c->prog_instructions, c->nr_fp_insns, - intBegin, intEnd); - - for (index = 0; index < MAX_PROGRAM_TEMPS; index++) { - if (intEnd[index] != -1 && intEnd[index] < c->cur_inst) { - /* program temp[i] can be freed */ - int component; - /*printf(" temp[%d] is dead\n", index);*/ - for (component = 0; component < 4; component++) { - if (c->wm_regs[PROGRAM_TEMPORARY][index][component].inited) { - int r = c->wm_regs[PROGRAM_TEMPORARY][index][component].reg.nr; - release_grf(c, r); - /* - printf(" Reclaim temp %d, reg %d at inst %d\n", - index, r, c->cur_inst); - */ - c->wm_regs[PROGRAM_TEMPORARY][index][component].inited = GL_FALSE; - } - } - } - } -} - - - - -/** - * Preallocate registers. This sets up the Mesa to hardware register - * mapping for certain registers, such as constants (uniforms/state vars) - * and shader inputs. - */ -static void prealloc_reg(struct brw_wm_compile *c) -{ - struct intel_context *intel = &c->func.brw->intel; - int i, j; - struct brw_reg reg; - int urb_read_length = 0; - GLuint inputs = FRAG_BIT_WPOS | c->fp_interp_emitted; - GLuint reg_index = 0; - - memset(c->used_grf, GL_FALSE, sizeof(c->used_grf)); - c->first_free_grf = 0; - - for (i = 0; i < 4; i++) { - if (i < (c->key.nr_payload_regs + 1) / 2) - reg = brw_vec8_grf(i * 2, 0); - else - reg = brw_vec8_grf(0, 0); - set_reg(c, PROGRAM_PAYLOAD, PAYLOAD_DEPTH, i, reg); - } - set_reg(c, PROGRAM_PAYLOAD, PAYLOAD_W, 0, - brw_vec8_grf(c->key.source_w_reg, 0)); - reg_index += c->key.nr_payload_regs; - - /* constants */ - { - const GLuint nr_params = c->fp->program.Base.Parameters->NumParameters; - const GLuint nr_temps = c->fp->program.Base.NumTemporaries; - - /* use a real constant buffer, or just use a section of the GRF? */ - /* XXX this heuristic may need adjustment... */ - if ((nr_params + nr_temps) * 4 + reg_index > 80) { - for (i = 0; i < nr_params; i++) { - float *pv = c->fp->program.Base.Parameters->ParameterValues[i]; - for (j = 0; j < 4; j++) { - c->prog_data.pull_param[c->prog_data.nr_pull_params] = &pv[j]; - c->prog_data.nr_pull_params++; - } - } - - c->prog_data.nr_params = 0; - } - /*printf("WM use_const_buffer = %d\n", c->fp->use_const_buffer);*/ - - if (!c->prog_data.nr_pull_params) { - const struct gl_program_parameter_list *plist = - c->fp->program.Base.Parameters; - int index = 0; - - /* number of float constants in CURBE */ - c->prog_data.nr_params = 4 * nr_params; - - /* loop over program constants (float[4]) */ - for (i = 0; i < nr_params; i++) { - /* loop over XYZW channels */ - for (j = 0; j < 4; j++, index++) { - reg = brw_vec1_grf(reg_index + index / 8, index % 8); - /* Save pointer to parameter/constant value. - * Constants will be copied in prepare_constant_buffer() - */ - c->prog_data.param[index] = &plist->ParameterValues[i][j]; - set_reg(c, PROGRAM_STATE_VAR, i, j, reg); - } - } - /* number of constant regs used (each reg is float[8]) */ - c->nr_creg = ALIGN(nr_params, 2) / 2; - reg_index += c->nr_creg; - } - } - - /* fragment shader inputs: One 2-reg pair of interpolation - * coefficients for each vec4 to be set up. - */ - if (intel->gen >= 6) { - for (i = 0; i < FRAG_ATTRIB_MAX; i++) { - if (!(c->fp->program.Base.InputsRead & BITFIELD64_BIT(i))) - continue; - - reg = brw_vec8_grf(reg_index, 0); - for (j = 0; j < 4; j++) { - set_reg(c, PROGRAM_PAYLOAD, i, j, reg); - } - reg_index += 2; - } - urb_read_length = reg_index; - } else { - for (i = 0; i < VERT_RESULT_MAX; i++) { - int fp_input; - - if (i >= VERT_RESULT_VAR0) - fp_input = i - VERT_RESULT_VAR0 + FRAG_ATTRIB_VAR0; - else if (i <= VERT_RESULT_TEX7) - fp_input = i; - else - fp_input = -1; - - if (fp_input >= 0 && inputs & (1 << fp_input)) { - urb_read_length = reg_index; - reg = brw_vec8_grf(reg_index, 0); - for (j = 0; j < 4; j++) - set_reg(c, PROGRAM_PAYLOAD, fp_input, j, reg); - } - if (c->key.vp_outputs_written & BITFIELD64_BIT(i)) { - reg_index += 2; - } - } - } - - c->prog_data.first_curbe_grf = c->key.nr_payload_regs; - c->prog_data.urb_read_length = urb_read_length; - c->prog_data.curb_read_length = c->nr_creg; - c->emit_mask_reg = brw_uw1_reg(BRW_GENERAL_REGISTER_FILE, reg_index, 0); - reg_index++; - c->stack = brw_uw16_reg(BRW_GENERAL_REGISTER_FILE, reg_index, 0); - reg_index += 2; - - /* mark GRF regs [0..reg_index-1] as in-use */ - for (i = 0; i < reg_index; i++) - prealloc_grf(c, i); - - /* Don't use GRF 126, 127. Using them seems to lead to GPU lock-ups */ - prealloc_grf(c, 126); - prealloc_grf(c, 127); - - for (i = 0; i < c->nr_fp_insns; i++) { - const struct prog_instruction *inst = &c->prog_instructions[i]; - struct brw_reg dst[4]; - - switch (inst->Opcode) { - case OPCODE_TEX: - case OPCODE_TXB: - /* Allocate the channels of texture results contiguously, - * since they are written out that way by the sampler unit. - */ - for (j = 0; j < 4; j++) { - dst[j] = get_dst_reg(c, inst, j); - if (j != 0) - assert(dst[j].nr == dst[j - 1].nr + 1); - } - break; - default: - break; - } - } - - for (i = 0; i < c->nr_fp_insns; i++) { - const struct prog_instruction *inst = &c->prog_instructions[i]; - - switch (inst->Opcode) { - case WM_DELTAXY: - /* Allocate WM_DELTAXY destination on G45/GM45 to an - * even-numbered GRF if possible so that we can use the PLN - * instruction. - */ - if (inst->DstReg.WriteMask == WRITEMASK_XY && - !c->wm_regs[inst->DstReg.File][inst->DstReg.Index][0].inited && - !c->wm_regs[inst->DstReg.File][inst->DstReg.Index][1].inited && - (IS_G4X(intel->intelScreen->deviceID) || intel->gen == 5)) { - int grf; - - for (grf = c->first_free_grf & ~1; - grf < BRW_WM_MAX_GRF; - grf += 2) - { - if (!c->used_grf[grf] && !c->used_grf[grf + 1]) { - c->used_grf[grf] = GL_TRUE; - c->used_grf[grf + 1] = GL_TRUE; - c->first_free_grf = grf + 2; /* a guess */ - - set_reg(c, inst->DstReg.File, inst->DstReg.Index, 0, - brw_vec8_grf(grf, 0)); - set_reg(c, inst->DstReg.File, inst->DstReg.Index, 1, - brw_vec8_grf(grf + 1, 0)); - break; - } - } - } - default: - break; - } - } - - /* An instruction may reference up to three constants. - * They'll be found in these registers. - * XXX alloc these on demand! - */ - if (c->prog_data.nr_pull_params) { - for (i = 0; i < 3; i++) { - c->current_const[i].index = -1; - c->current_const[i].reg = brw_vec8_grf(alloc_grf(c), 0); - } - } -#if 0 - printf("USE CONST BUFFER? %d\n", c->fp->use_const_buffer); - printf("AFTER PRE_ALLOC, reg_index = %d\n", reg_index); -#endif -} - - -/** - * Check if any of the instruction's src registers are constants, uniforms, - * or statevars. If so, fetch any constants that we don't already have in - * the three GRF slots. - */ -static void fetch_constants(struct brw_wm_compile *c, - const struct prog_instruction *inst) -{ - struct brw_compile *p = &c->func; - GLuint i; - - /* loop over instruction src regs */ - for (i = 0; i < 3; i++) { - const struct prog_src_register *src = &inst->SrcReg[i]; - if (src->File == PROGRAM_STATE_VAR || - src->File == PROGRAM_CONSTANT || - src->File == PROGRAM_UNIFORM) { - c->current_const[i].index = src->Index; - -#if 0 - printf(" fetch const[%d] for arg %d into reg %d\n", - src->Index, i, c->current_const[i].reg.nr); -#endif - - /* need to fetch the constant now */ - brw_oword_block_read(p, - c->current_const[i].reg, - brw_message_reg(1), - 16 * src->Index, - SURF_INDEX_FRAG_CONST_BUFFER); - } - } -} - - -/** - * Convert Mesa dst register to brw register. - */ -static struct brw_reg get_dst_reg(struct brw_wm_compile *c, - const struct prog_instruction *inst, - GLuint component) -{ - const int nr = 1; - return get_reg(c, inst->DstReg.File, inst->DstReg.Index, component, nr, - 0, 0); -} - - -static struct brw_reg -get_src_reg_const(struct brw_wm_compile *c, - const struct prog_instruction *inst, - GLuint srcRegIndex, GLuint component) -{ - /* We should have already fetched the constant from the constant - * buffer in fetch_constants(). Now we just have to return a - * register description that extracts the needed component and - * smears it across all eight vector components. - */ - const struct prog_src_register *src = &inst->SrcReg[srcRegIndex]; - struct brw_reg const_reg; - - assert(component < 4); - assert(srcRegIndex < 3); - assert(c->current_const[srcRegIndex].index != -1); - const_reg = c->current_const[srcRegIndex].reg; - - /* extract desired float from the const_reg, and smear */ - const_reg = stride(const_reg, 0, 1, 0); - const_reg.subnr = component * 4; - - if (src->Negate & (1 << component)) - const_reg = negate(const_reg); - if (src->Abs) - const_reg = brw_abs(const_reg); - -#if 0 - printf(" form const[%d].%d for arg %d, reg %d\n", - c->current_const[srcRegIndex].index, - component, - srcRegIndex, - const_reg.nr); -#endif - - return const_reg; -} - - -/** - * Convert Mesa src register to brw register. - */ -static struct brw_reg get_src_reg(struct brw_wm_compile *c, - const struct prog_instruction *inst, - GLuint srcRegIndex, GLuint channel) -{ - const struct prog_src_register *src = &inst->SrcReg[srcRegIndex]; - const GLuint nr = 1; - const GLuint component = GET_SWZ(src->Swizzle, channel); - - /* Only one immediate value can be used per native opcode, and it - * has be in the src1 slot, so not all Mesa instructions will get - * to take advantage of immediate constants. - */ - if (brw_wm_arg_can_be_immediate(inst->Opcode, srcRegIndex)) { - const struct gl_program_parameter_list *params; - - params = c->fp->program.Base.Parameters; - - /* Extended swizzle terms */ - if (component == SWIZZLE_ZERO) { - return brw_imm_f(0.0F); - } else if (component == SWIZZLE_ONE) { - if (src->Negate) - return brw_imm_f(-1.0F); - else - return brw_imm_f(1.0F); - } - - if (src->File == PROGRAM_CONSTANT) { - float f = params->ParameterValues[src->Index][component]; - - if (src->Abs) - f = fabs(f); - if (src->Negate) - f = -f; - - return brw_imm_f(f); - } - } - - if (c->prog_data.nr_pull_params && - (src->File == PROGRAM_STATE_VAR || - src->File == PROGRAM_CONSTANT || - src->File == PROGRAM_UNIFORM)) { - return get_src_reg_const(c, inst, srcRegIndex, component); - } - else { - /* other type of source register */ - return get_reg(c, src->File, src->Index, component, nr, - src->Negate, src->Abs); - } -} - -static void emit_arl(struct brw_wm_compile *c, - const struct prog_instruction *inst) -{ - struct brw_compile *p = &c->func; - struct brw_reg src0, addr_reg; - brw_set_saturate(p, (inst->SaturateMode != SATURATE_OFF) ? 1 : 0); - addr_reg = brw_uw8_reg(BRW_ARCHITECTURE_REGISTER_FILE, - BRW_ARF_ADDRESS, 0); - src0 = get_src_reg(c, inst, 0, 0); /* channel 0 */ - brw_MOV(p, addr_reg, src0); - brw_set_saturate(p, 0); -} - -static INLINE struct brw_reg high_words( struct brw_reg reg ) -{ - return stride( suboffset( retype( reg, BRW_REGISTER_TYPE_W ), 1 ), - 0, 8, 2 ); -} - -static INLINE struct brw_reg low_words( struct brw_reg reg ) -{ - return stride( retype( reg, BRW_REGISTER_TYPE_W ), 0, 8, 2 ); -} - -static INLINE struct brw_reg even_bytes( struct brw_reg reg ) -{ - return stride( retype( reg, BRW_REGISTER_TYPE_B ), 0, 16, 2 ); -} - -static INLINE struct brw_reg odd_bytes( struct brw_reg reg ) -{ - return stride( suboffset( retype( reg, BRW_REGISTER_TYPE_B ), 1 ), - 0, 16, 2 ); -} - -/** - * Resolve subroutine calls after code emit is done. - */ -static void post_wm_emit( struct brw_wm_compile *c ) -{ - brw_resolve_cals(&c->func); -} - -static void -get_argument_regs(struct brw_wm_compile *c, - const struct prog_instruction *inst, - int index, - struct brw_reg *dst, - struct brw_reg *regs, - int mask) -{ - struct brw_compile *p = &c->func; - int i, j; - - for (i = 0; i < 4; i++) { - if (mask & (1 << i)) { - regs[i] = get_src_reg(c, inst, index, i); - - /* Unalias destination registers from our sources. */ - if (regs[i].file == BRW_GENERAL_REGISTER_FILE) { - for (j = 0; j < 4; j++) { - if (memcmp(®s[i], &dst[j], sizeof(regs[0])) == 0) { - struct brw_reg tmp = alloc_tmp(c); - brw_MOV(p, tmp, regs[i]); - regs[i] = tmp; - break; - } - } - } - } - } -} - -static void brw_wm_emit_glsl(struct brw_context *brw, struct brw_wm_compile *c) -{ - struct intel_context *intel = &brw->intel; -#define MAX_IF_DEPTH 32 -#define MAX_LOOP_DEPTH 32 - struct brw_instruction *if_inst[MAX_IF_DEPTH], *loop_inst[MAX_LOOP_DEPTH]; - int if_depth_in_loop[MAX_LOOP_DEPTH]; - GLuint i, if_depth = 0, loop_depth = 0; - struct brw_compile *p = &c->func; - struct brw_indirect stack_index = brw_indirect(0, 0); - - c->out_of_regs = GL_FALSE; - - if_depth_in_loop[loop_depth] = 0; - - prealloc_reg(c); - brw_set_compression_control(p, BRW_COMPRESSION_NONE); - brw_MOV(p, get_addr_reg(stack_index), brw_address(c->stack)); - - if (intel->gen >= 6) - brw_set_acc_write_control(p, 1); - - for (i = 0; i < c->nr_fp_insns; i++) { - const struct prog_instruction *inst = &c->prog_instructions[i]; - int dst_flags; - struct brw_reg args[3][4], dst[4]; - int j; - int mark = mark_tmps( c ); - - c->cur_inst = i; - -#if 0 - printf("Inst %d: ", i); - _mesa_print_instruction(inst); -#endif - - /* fetch any constants that this instruction needs */ - if (c->prog_data.nr_pull_params) - fetch_constants(c, inst); - - if (inst->Opcode != OPCODE_ARL) { - for (j = 0; j < 4; j++) { - if (inst->DstReg.WriteMask & (1 << j)) - dst[j] = get_dst_reg(c, inst, j); - else - dst[j] = brw_null_reg(); - } - } - for (j = 0; j < brw_wm_nr_args(inst->Opcode); j++) - get_argument_regs(c, inst, j, dst, args[j], WRITEMASK_XYZW); - - dst_flags = inst->DstReg.WriteMask; - if (inst->SaturateMode == SATURATE_ZERO_ONE) - dst_flags |= SATURATE; - - if (inst->CondUpdate) - brw_set_conditionalmod(p, BRW_CONDITIONAL_NZ); - else - brw_set_conditionalmod(p, BRW_CONDITIONAL_NONE); - - switch (inst->Opcode) { - case WM_PIXELXY: - emit_pixel_xy(c, dst, dst_flags); - break; - case WM_DELTAXY: - emit_delta_xy(p, dst, dst_flags, args[0]); - break; - case WM_PIXELW: - emit_pixel_w(c, dst, dst_flags, args[0], args[1]); - break; - case WM_LINTERP: - emit_linterp(p, dst, dst_flags, args[0], args[1]); - break; - case WM_PINTERP: - emit_pinterp(p, dst, dst_flags, args[0], args[1], args[2]); - break; - case WM_CINTERP: - emit_cinterp(p, dst, dst_flags, args[0]); - break; - case WM_WPOSXY: - emit_wpos_xy(c, dst, dst_flags, args[0]); - break; - case WM_FB_WRITE: - emit_fb_write(c, args[0], args[1], args[2], - INST_AUX_GET_TARGET(inst->Aux), - inst->Aux & INST_AUX_EOT); - break; - case WM_FRONTFACING: - emit_frontfacing(p, dst, dst_flags); - break; - case OPCODE_ADD: - emit_alu2(p, brw_ADD, dst, dst_flags, args[0], args[1]); - break; - case OPCODE_ARL: - emit_arl(c, inst); - break; - case OPCODE_FRC: - emit_alu1(p, brw_FRC, dst, dst_flags, args[0]); - break; - case OPCODE_FLR: - emit_alu1(p, brw_RNDD, dst, dst_flags, args[0]); - break; - case OPCODE_LRP: - emit_lrp(p, dst, dst_flags, args[0], args[1], args[2]); - break; - case OPCODE_TRUNC: - emit_alu1(p, brw_RNDZ, dst, dst_flags, args[0]); - break; - case OPCODE_MOV: - case OPCODE_SWZ: - emit_alu1(p, brw_MOV, dst, dst_flags, args[0]); - break; - case OPCODE_DP2: - emit_dp2(p, dst, dst_flags, args[0], args[1]); - break; - case OPCODE_DP3: - emit_dp3(p, dst, dst_flags, args[0], args[1]); - break; - case OPCODE_DP4: - emit_dp4(p, dst, dst_flags, args[0], args[1]); - break; - case OPCODE_XPD: - emit_xpd(p, dst, dst_flags, args[0], args[1]); - break; - case OPCODE_DPH: - emit_dph(p, dst, dst_flags, args[0], args[1]); - break; - case OPCODE_RCP: - emit_math1(c, BRW_MATH_FUNCTION_INV, dst, dst_flags, args[0]); - break; - case OPCODE_RSQ: - emit_math1(c, BRW_MATH_FUNCTION_RSQ, dst, dst_flags, args[0]); - break; - case OPCODE_SIN: - emit_math1(c, BRW_MATH_FUNCTION_SIN, dst, dst_flags, args[0]); - break; - case OPCODE_COS: - emit_math1(c, BRW_MATH_FUNCTION_COS, dst, dst_flags, args[0]); - break; - case OPCODE_EX2: - emit_math1(c, BRW_MATH_FUNCTION_EXP, dst, dst_flags, args[0]); - break; - case OPCODE_LG2: - emit_math1(c, BRW_MATH_FUNCTION_LOG, dst, dst_flags, args[0]); - break; - case OPCODE_CMP: - emit_cmp(p, dst, dst_flags, args[0], args[1], args[2]); - break; - case OPCODE_MIN: - emit_min(p, dst, dst_flags, args[0], args[1]); - break; - case OPCODE_MAX: - emit_max(p, dst, dst_flags, args[0], args[1]); - break; - case OPCODE_DDX: - case OPCODE_DDY: - emit_ddxy(p, dst, dst_flags, (inst->Opcode == OPCODE_DDX), - args[0]); - break; - case OPCODE_SLT: - emit_sop(p, dst, dst_flags, - BRW_CONDITIONAL_L, args[0], args[1]); - break; - case OPCODE_SLE: - emit_sop(p, dst, dst_flags, - BRW_CONDITIONAL_LE, args[0], args[1]); - break; - case OPCODE_SGT: - emit_sop(p, dst, dst_flags, - BRW_CONDITIONAL_G, args[0], args[1]); - break; - case OPCODE_SGE: - emit_sop(p, dst, dst_flags, - BRW_CONDITIONAL_GE, args[0], args[1]); - break; - case OPCODE_SEQ: - emit_sop(p, dst, dst_flags, - BRW_CONDITIONAL_EQ, args[0], args[1]); - break; - case OPCODE_SNE: - emit_sop(p, dst, dst_flags, - BRW_CONDITIONAL_NEQ, args[0], args[1]); - break; - case OPCODE_SSG: - emit_sign(p, dst, dst_flags, args[0]); - break; - case OPCODE_MUL: - emit_alu2(p, brw_MUL, dst, dst_flags, args[0], args[1]); - break; - case OPCODE_POW: - emit_math2(c, BRW_MATH_FUNCTION_POW, - dst, dst_flags, args[0], args[1]); - break; - case OPCODE_MAD: - emit_mad(p, dst, dst_flags, args[0], args[1], args[2]); - break; - case OPCODE_TEX: - emit_tex(c, dst, dst_flags, args[0], - get_reg(c, PROGRAM_PAYLOAD, PAYLOAD_DEPTH, - 0, 1, 0, 0), - inst->TexSrcTarget, - inst->TexSrcUnit, - (c->key.shadowtex_mask & (1 << inst->TexSrcUnit)) != 0); - break; - case OPCODE_TXB: - emit_txb(c, dst, dst_flags, args[0], - get_reg(c, PROGRAM_PAYLOAD, PAYLOAD_DEPTH, - 0, 1, 0, 0), - inst->TexSrcTarget, - c->fp->program.Base.SamplerUnits[inst->TexSrcUnit]); - break; - case OPCODE_KIL_NV: - emit_kil_nv(c); - break; - case OPCODE_IF: - assert(if_depth < MAX_IF_DEPTH); - if_inst[if_depth++] = brw_IF(p, BRW_EXECUTE_8); - if_depth_in_loop[loop_depth]++; - break; - case OPCODE_ELSE: - assert(if_depth > 0); - if_inst[if_depth-1] = brw_ELSE(p, if_inst[if_depth-1]); - break; - case OPCODE_ENDIF: - assert(if_depth > 0); - brw_ENDIF(p, if_inst[--if_depth]); - if_depth_in_loop[loop_depth]--; - break; - case OPCODE_BGNSUB: - brw_save_label(p, inst->Comment, p->nr_insn); - break; - case OPCODE_ENDSUB: - /* no-op */ - break; - case OPCODE_CAL: - brw_push_insn_state(p); - brw_set_mask_control(p, BRW_MASK_DISABLE); - brw_set_access_mode(p, BRW_ALIGN_1); - brw_ADD(p, deref_1ud(stack_index, 0), brw_ip_reg(), brw_imm_d(3*16)); - brw_set_access_mode(p, BRW_ALIGN_16); - brw_ADD(p, get_addr_reg(stack_index), - get_addr_reg(stack_index), brw_imm_d(4)); - brw_save_call(&c->func, inst->Comment, p->nr_insn); - brw_ADD(p, brw_ip_reg(), brw_ip_reg(), brw_imm_d(1*16)); - brw_pop_insn_state(p); - break; - - case OPCODE_RET: - brw_push_insn_state(p); - brw_set_mask_control(p, BRW_MASK_DISABLE); - brw_ADD(p, get_addr_reg(stack_index), - get_addr_reg(stack_index), brw_imm_d(-4)); - brw_set_access_mode(p, BRW_ALIGN_1); - brw_MOV(p, brw_ip_reg(), deref_1ud(stack_index, 0)); - brw_set_access_mode(p, BRW_ALIGN_16); - brw_pop_insn_state(p); - - break; - case OPCODE_BGNLOOP: - /* XXX may need to invalidate the current_constant regs */ - loop_inst[loop_depth++] = brw_DO(p, BRW_EXECUTE_8); - if_depth_in_loop[loop_depth] = 0; - break; - case OPCODE_BRK: - brw_BREAK(p, if_depth_in_loop[loop_depth]); - brw_set_predicate_control(p, BRW_PREDICATE_NONE); - break; - case OPCODE_CONT: - brw_CONT(p, if_depth_in_loop[loop_depth]); - brw_set_predicate_control(p, BRW_PREDICATE_NONE); - break; - case OPCODE_ENDLOOP: - { - struct brw_instruction *inst0, *inst1; - GLuint br = 1; - - if (intel->gen == 5) - br = 2; - - assert(loop_depth > 0); - loop_depth--; - inst0 = inst1 = brw_WHILE(p, loop_inst[loop_depth]); - /* patch all the BREAK/CONT instructions from last BGNLOOP */ - while (inst0 > loop_inst[loop_depth]) { - inst0--; - if (inst0->header.opcode == BRW_OPCODE_BREAK && - inst0->bits3.if_else.jump_count == 0) { - inst0->bits3.if_else.jump_count = br * (inst1 - inst0 + 1); - } - else if (inst0->header.opcode == BRW_OPCODE_CONTINUE && - inst0->bits3.if_else.jump_count == 0) { - inst0->bits3.if_else.jump_count = br * (inst1 - inst0); - } - } - } - break; - default: - printf("unsupported opcode %d (%s) in fragment shader\n", - inst->Opcode, inst->Opcode < MAX_OPCODE ? - _mesa_opcode_string(inst->Opcode) : "unknown"); - } - - /* Release temporaries containing any unaliased source regs. */ - release_tmps( c, mark ); - - if (inst->CondUpdate) - brw_set_predicate_control(p, BRW_PREDICATE_NORMAL); - else - brw_set_predicate_control(p, BRW_PREDICATE_NONE); - } - post_wm_emit(c); - - if (unlikely(INTEL_DEBUG & DEBUG_WM)) { - printf("wm-native:\n"); - for (i = 0; i < p->nr_insn; i++) - brw_disasm(stdout, &p->store[i], intel->gen); - printf("\n"); - } -} - -/** - * Do GPU code generation for shaders that use GLSL features such as - * flow control. Other shaders will be compiled with the - */ -void brw_wm_glsl_emit(struct brw_context *brw, struct brw_wm_compile *c) -{ - if (unlikely(INTEL_DEBUG & DEBUG_WM)) { - printf("brw_wm_glsl_emit:\n"); - } - - /* initial instruction translation/simplification */ - brw_wm_pass_fp(c); - - /* actual code generation */ - brw_wm_emit_glsl(brw, c); - - if (unlikely(INTEL_DEBUG & DEBUG_WM)) { - brw_wm_print_program(c, "brw_wm_glsl_emit done"); - } - - c->prog_data.total_grf = num_grf_used(c); - c->prog_data.total_scratch = 0; -} diff --git a/src/mesa/drivers/dri/i965/brw_wm_iz.c b/src/mesa/drivers/dri/i965/brw_wm_iz.c index 62e556698ba..471ea1c18d6 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_iz.c +++ b/src/mesa/drivers/dri/i965/brw_wm_iz.c @@ -120,14 +120,14 @@ const struct { * \param line_aa AA_NEVER, AA_ALWAYS or AA_SOMETIMES * \param lookup bitmask of IZ_* flags */ -void brw_wm_lookup_iz( struct intel_context *intel, - GLuint line_aa, - GLuint lookup, - GLboolean ps_uses_depth, - struct brw_wm_prog_key *key ) +void brw_wm_lookup_iz(struct intel_context *intel, + struct brw_wm_compile *c) { GLuint reg = 2; GLboolean kill_stats_promoted_workaround = GL_FALSE; + int lookup = c->key.iz_lookup; + bool uses_depth = (c->fp->program.Base.InputsRead & + (1 << FRAG_ATTRIB_WPOS)) != 0; assert (lookup < IZ_BIT_MAX); @@ -136,36 +136,36 @@ void brw_wm_lookup_iz( struct intel_context *intel, * statistics are enabled..." paragraph of 11.5.3.2: Early Depth * Test Cases [Pre-DevGT] of the 3D Pipeline - Windower B-Spec. */ - if (intel->stats_wm && + if (c->key.stats_wm && (lookup & IZ_PS_KILL_ALPHATEST_BIT) && wm_iz_table[lookup].mode == P) { kill_stats_promoted_workaround = GL_TRUE; } if (lookup & IZ_PS_COMPUTES_DEPTH_BIT) - key->computes_depth = 1; + c->computes_depth = 1; - if (wm_iz_table[lookup].sd_present || ps_uses_depth || + if (wm_iz_table[lookup].sd_present || uses_depth || kill_stats_promoted_workaround) { - key->source_depth_reg = reg; + c->source_depth_reg = reg; reg += 2; } if (wm_iz_table[lookup].sd_to_rt || kill_stats_promoted_workaround) - key->source_depth_to_render_target = 1; + c->source_depth_to_render_target = 1; - if (wm_iz_table[lookup].ds_present || line_aa != AA_NEVER) { - key->aa_dest_stencil_reg = reg; - key->runtime_check_aads_emit = (!wm_iz_table[lookup].ds_present && - line_aa == AA_SOMETIMES); + if (wm_iz_table[lookup].ds_present || c->key.line_aa != AA_NEVER) { + c->aa_dest_stencil_reg = reg; + c->runtime_check_aads_emit = (!wm_iz_table[lookup].ds_present && + c->key.line_aa == AA_SOMETIMES); reg++; } if (wm_iz_table[lookup].dd_present) { - key->dest_depth_reg = reg; + c->dest_depth_reg = reg; reg+=2; } - key->nr_payload_regs = reg; + c->nr_payload_regs = reg; } diff --git a/src/mesa/drivers/dri/i965/brw_wm_pass0.c b/src/mesa/drivers/dri/i965/brw_wm_pass0.c index 83152526b3a..f78bdc31866 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_pass0.c +++ b/src/mesa/drivers/dri/i965/brw_wm_pass0.c @@ -380,7 +380,7 @@ static void pass0_init_payload( struct brw_wm_compile *c ) GLuint i; for (i = 0; i < 4; i++) { - GLuint j = i >= (c->key.nr_payload_regs + 1) / 2 ? 0 : i; + GLuint j = i >= (c->nr_payload_regs + 1) / 2 ? 0 : i; pass0_set_fpreg_value( c, PROGRAM_PAYLOAD, PAYLOAD_DEPTH, i, &c->payload.depth[j] ); } diff --git a/src/mesa/drivers/dri/i965/brw_wm_pass1.c b/src/mesa/drivers/dri/i965/brw_wm_pass1.c index 3a2874b6ddf..7d6a3fa9f12 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_pass1.c +++ b/src/mesa/drivers/dri/i965/brw_wm_pass1.c @@ -128,8 +128,7 @@ void brw_wm_pass1( struct brw_wm_compile *c ) if (inst->opcode == WM_FB_WRITE) { track_arg(c, inst, 0, WRITEMASK_XYZW); track_arg(c, inst, 1, WRITEMASK_XYZW); - if (c->key.source_depth_to_render_target && - c->key.computes_depth) + if (c->source_depth_to_render_target && c->computes_depth) track_arg(c, inst, 2, WRITEMASK_Z); else track_arg(c, inst, 2, 0); @@ -281,7 +280,6 @@ void brw_wm_pass1( struct brw_wm_compile *c ) case OPCODE_DST: case WM_FRONTFACING: - case OPCODE_KIL_NV: default: break; } diff --git a/src/mesa/drivers/dri/i965/brw_wm_pass2.c b/src/mesa/drivers/dri/i965/brw_wm_pass2.c index 44e39538145..8c2b9e7020b 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_pass2.c +++ b/src/mesa/drivers/dri/i965/brw_wm_pass2.c @@ -69,6 +69,8 @@ static void prealloc_reg(struct brw_wm_compile *c, */ static void init_registers( struct brw_wm_compile *c ) { + struct brw_context *brw = c->func.brw; + struct intel_context *intel = &brw->intel; GLuint nr_interp_regs = 0; GLuint i = 0; GLuint j; @@ -76,32 +78,41 @@ static void init_registers( struct brw_wm_compile *c ) for (j = 0; j < c->grf_limit; j++) c->pass2_grf[j].nextuse = BRW_WM_MAX_INSN; - for (j = 0; j < (c->key.nr_payload_regs + 1) / 2; j++) + for (j = 0; j < (c->nr_payload_regs + 1) / 2; j++) prealloc_reg(c, &c->payload.depth[j], i++); for (j = 0; j < c->nr_creg; j++) prealloc_reg(c, &c->creg[j], i++); - for (j = 0; j < VERT_RESULT_MAX; j++) { - if (c->key.vp_outputs_written & BITFIELD64_BIT(j)) { - int fp_index; - - if (j >= VERT_RESULT_VAR0) - fp_index = j - (VERT_RESULT_VAR0 - FRAG_ATTRIB_VAR0); - else if (j <= VERT_RESULT_TEX7) - fp_index = j; - else - fp_index = -1; - - nr_interp_regs++; - if (fp_index >= 0) - prealloc_reg(c, &c->payload.input_interp[fp_index], i++); + if (intel->gen >= 6) { + for (unsigned int j = 0; j < FRAG_ATTRIB_MAX; j++) { + if (brw->fragment_program->Base.InputsRead & BITFIELD64_BIT(j)) { + nr_interp_regs++; + prealloc_reg(c, &c->payload.input_interp[j], i++); + } + } + } else { + for (j = 0; j < VERT_RESULT_MAX; j++) { + if (c->key.vp_outputs_written & BITFIELD64_BIT(j)) { + int fp_index; + + if (j >= VERT_RESULT_VAR0) + fp_index = j - (VERT_RESULT_VAR0 - FRAG_ATTRIB_VAR0); + else if (j <= VERT_RESULT_TEX7) + fp_index = j; + else + fp_index = -1; + + nr_interp_regs++; + if (fp_index >= 0) + prealloc_reg(c, &c->payload.input_interp[fp_index], i++); + } } + assert(nr_interp_regs >= 1); } - assert(nr_interp_regs >= 1); - c->prog_data.first_curbe_grf = ALIGN(c->key.nr_payload_regs, 2); + c->prog_data.first_curbe_grf = ALIGN(c->nr_payload_regs, 2); c->prog_data.urb_read_length = nr_interp_regs * 2; c->prog_data.curb_read_length = c->nr_creg * 2; 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 fea96d35381..e7c97a1cb05 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c @@ -69,12 +69,43 @@ static GLuint translate_wrap_mode( GLenum wrap ) static drm_intel_bo *upload_default_color( struct brw_context *brw, const GLfloat *color ) { - struct brw_sampler_default_color sdc; + struct intel_context *intel = &brw->intel; - COPY_4V(sdc.color, color); - - return brw_cache_data(&brw->cache, BRW_SAMPLER_DEFAULT_COLOR, - &sdc, sizeof(sdc)); + if (intel->gen >= 5) { + struct gen5_sampler_default_color 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_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]); + + /* XXX: Fill in half floats */ + /* XXX: Fill in signed bytes */ + + COPY_4V(sdc.f, color); + + return brw_cache_data(&brw->cache, BRW_SAMPLER_DEFAULT_COLOR, + &sdc, sizeof(sdc)); + } else { + struct brw_sampler_default_color sdc; + + COPY_4V(sdc.color, color); + + return brw_cache_data(&brw->cache, BRW_SAMPLER_DEFAULT_COLOR, + &sdc, sizeof(sdc)); + } } diff --git a/src/mesa/drivers/dri/i965/brw_wm_state.c b/src/mesa/drivers/dri/i965/brw_wm_state.c index 76de7b7b6f6..e9ef635bca2 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_state.c @@ -87,7 +87,6 @@ wm_unit_populate_key(struct brw_context *brw, struct brw_wm_unit_key *key) { struct gl_context *ctx = &brw->intel.ctx; const struct gl_fragment_program *fp = brw->fragment_program; - const struct brw_fragment_program *bfp = (struct brw_fragment_program *) fp; struct intel_context *intel = &brw->intel; memset(key, 0, sizeof(*key)); @@ -132,7 +131,6 @@ wm_unit_populate_key(struct brw_context *brw, struct brw_wm_unit_key *key) /* _NEW_COLOR */ key->uses_kill = fp->UsesKill || ctx->Color.AlphaEnabled; - key->is_glsl = bfp->isGLSL; /* If using the fragment shader backend, the program is always * 8-wide. 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 76fc94df1f6..1cd736a1119 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c @@ -68,104 +68,54 @@ static GLuint translate_tex_target( GLenum target ) } } +static uint32_t brw_format_for_mesa_format[MESA_FORMAT_COUNT] = +{ + [MESA_FORMAT_L8] = BRW_SURFACEFORMAT_L8_UNORM, + [MESA_FORMAT_I8] = BRW_SURFACEFORMAT_I8_UNORM, + [MESA_FORMAT_A8] = BRW_SURFACEFORMAT_A8_UNORM, + [MESA_FORMAT_AL88] = BRW_SURFACEFORMAT_L8A8_UNORM, + [MESA_FORMAT_AL1616] = BRW_SURFACEFORMAT_L16A16_UNORM, + [MESA_FORMAT_R8] = BRW_SURFACEFORMAT_R8_UNORM, + [MESA_FORMAT_R16] = BRW_SURFACEFORMAT_R16_UNORM, + [MESA_FORMAT_RG88] = BRW_SURFACEFORMAT_R8G8_UNORM, + [MESA_FORMAT_RG1616] = BRW_SURFACEFORMAT_R16G16_UNORM, + [MESA_FORMAT_ARGB8888] = BRW_SURFACEFORMAT_B8G8R8A8_UNORM, + [MESA_FORMAT_XRGB8888] = BRW_SURFACEFORMAT_B8G8R8X8_UNORM, + [MESA_FORMAT_RGB565] = BRW_SURFACEFORMAT_B5G6R5_UNORM, + [MESA_FORMAT_ARGB1555] = BRW_SURFACEFORMAT_B5G5R5A1_UNORM, + [MESA_FORMAT_ARGB4444] = BRW_SURFACEFORMAT_B4G4R4A4_UNORM, + [MESA_FORMAT_YCBCR_REV] = BRW_SURFACEFORMAT_YCRCB_NORMAL, + [MESA_FORMAT_YCBCR] = BRW_SURFACEFORMAT_YCRCB_SWAPUVY, + [MESA_FORMAT_RGB_FXT1] = BRW_SURFACEFORMAT_FXT1, + [MESA_FORMAT_RGBA_FXT1] = BRW_SURFACEFORMAT_FXT1, + [MESA_FORMAT_RGB_DXT1] = BRW_SURFACEFORMAT_DXT1_RGB, + [MESA_FORMAT_RGBA_DXT1] = BRW_SURFACEFORMAT_BC1_UNORM, + [MESA_FORMAT_RGBA_DXT3] = BRW_SURFACEFORMAT_BC2_UNORM, + [MESA_FORMAT_RGBA_DXT5] = BRW_SURFACEFORMAT_BC3_UNORM, + [MESA_FORMAT_SRGB_DXT1] = BRW_SURFACEFORMAT_BC1_UNORM_SRGB, + [MESA_FORMAT_SARGB8] = BRW_SURFACEFORMAT_B8G8R8A8_UNORM_SRGB, + [MESA_FORMAT_SLA8] = BRW_SURFACEFORMAT_L8A8_UNORM_SRGB, + [MESA_FORMAT_SL8] = BRW_SURFACEFORMAT_L8_UNORM_SRGB, + [MESA_FORMAT_DUDV8] = BRW_SURFACEFORMAT_R8G8_SNORM, + [MESA_FORMAT_SIGNED_RGBA8888_REV] = BRW_SURFACEFORMAT_R8G8B8A8_SNORM, +}; static GLuint translate_tex_format( gl_format mesa_format, GLenum internal_format, GLenum depth_mode ) { switch( mesa_format ) { - case MESA_FORMAT_L8: - return BRW_SURFACEFORMAT_L8_UNORM; - - case MESA_FORMAT_I8: - return BRW_SURFACEFORMAT_I8_UNORM; - - case MESA_FORMAT_A8: - return BRW_SURFACEFORMAT_A8_UNORM; - - case MESA_FORMAT_AL88: - return BRW_SURFACEFORMAT_L8A8_UNORM; - - case MESA_FORMAT_AL1616: - return BRW_SURFACEFORMAT_L16A16_UNORM; - - case MESA_FORMAT_R8: - return BRW_SURFACEFORMAT_R8_UNORM; - - case MESA_FORMAT_R16: - return BRW_SURFACEFORMAT_R16_UNORM; - - case MESA_FORMAT_RG88: - return BRW_SURFACEFORMAT_R8G8_UNORM; - - case MESA_FORMAT_RG1616: - return BRW_SURFACEFORMAT_R16G16_UNORM; - - case MESA_FORMAT_RGB888: - assert(0); /* not supported for sampling */ - return BRW_SURFACEFORMAT_R8G8B8_UNORM; - - case MESA_FORMAT_ARGB8888: - return BRW_SURFACEFORMAT_B8G8R8A8_UNORM; - - case MESA_FORMAT_XRGB8888: - return BRW_SURFACEFORMAT_B8G8R8X8_UNORM; - - case MESA_FORMAT_RGBA8888_REV: - _mesa_problem(NULL, "unexpected format in i965:translate_tex_format()"); - return BRW_SURFACEFORMAT_R8G8B8A8_UNORM; - - case MESA_FORMAT_RGB565: - return BRW_SURFACEFORMAT_B5G6R5_UNORM; - - case MESA_FORMAT_ARGB1555: - return BRW_SURFACEFORMAT_B5G5R5A1_UNORM; - - case MESA_FORMAT_ARGB4444: - return BRW_SURFACEFORMAT_B4G4R4A4_UNORM; - - case MESA_FORMAT_YCBCR_REV: - return BRW_SURFACEFORMAT_YCRCB_NORMAL; - - case MESA_FORMAT_YCBCR: - return BRW_SURFACEFORMAT_YCRCB_SWAPUVY; - - case MESA_FORMAT_RGB_FXT1: - case MESA_FORMAT_RGBA_FXT1: - return BRW_SURFACEFORMAT_FXT1; case MESA_FORMAT_Z16: if (depth_mode == GL_INTENSITY) return BRW_SURFACEFORMAT_I16_UNORM; else if (depth_mode == GL_ALPHA) return BRW_SURFACEFORMAT_A16_UNORM; + else if (depth_mode == GL_RED) + return BRW_SURFACEFORMAT_R16_UNORM; else return BRW_SURFACEFORMAT_L16_UNORM; - case MESA_FORMAT_RGB_DXT1: - return BRW_SURFACEFORMAT_DXT1_RGB; - - case MESA_FORMAT_RGBA_DXT1: - return BRW_SURFACEFORMAT_BC1_UNORM; - - case MESA_FORMAT_RGBA_DXT3: - return BRW_SURFACEFORMAT_BC2_UNORM; - - case MESA_FORMAT_RGBA_DXT5: - return BRW_SURFACEFORMAT_BC3_UNORM; - - case MESA_FORMAT_SARGB8: - return BRW_SURFACEFORMAT_B8G8R8A8_UNORM_SRGB; - - case MESA_FORMAT_SLA8: - return BRW_SURFACEFORMAT_L8A8_UNORM_SRGB; - - case MESA_FORMAT_SL8: - return BRW_SURFACEFORMAT_L8_UNORM_SRGB; - - case MESA_FORMAT_SRGB_DXT1: - return BRW_SURFACEFORMAT_BC1_UNORM_SRGB; - case MESA_FORMAT_S8_Z24: /* XXX: these different surface formats don't seem to * make any difference for shadow sampler/compares. @@ -174,18 +124,14 @@ static GLuint translate_tex_format( gl_format mesa_format, return BRW_SURFACEFORMAT_I24X8_UNORM; else if (depth_mode == GL_ALPHA) return BRW_SURFACEFORMAT_A24X8_UNORM; + else if (depth_mode == GL_RED) + return BRW_SURFACEFORMAT_R24_UNORM_X8_TYPELESS; else return BRW_SURFACEFORMAT_L24X8_UNORM; - case MESA_FORMAT_DUDV8: - return BRW_SURFACEFORMAT_R8G8_SNORM; - - case MESA_FORMAT_SIGNED_RGBA8888_REV: - return BRW_SURFACEFORMAT_R8G8B8A8_SNORM; - default: - assert(0); - return 0; + assert(brw_format_for_mesa_format[mesa_format] != 0); + return brw_format_for_mesa_format[mesa_format]; } } @@ -274,6 +220,7 @@ brw_create_constant_surface(struct brw_context *brw, drm_intel_bo **out_bo, uint32_t *out_offset) { + struct intel_context *intel = &brw->intel; const GLint w = width - 1; struct brw_surface_state surf; void *map; @@ -284,6 +231,9 @@ brw_create_constant_surface(struct brw_context *brw, surf.ss0.surface_type = BRW_SURFACE_BUFFER; surf.ss0.surface_format = BRW_SURFACEFORMAT_R32G32B32A32_FLOAT; + if (intel->gen >= 6) + surf.ss0.render_cache_read_write = 1; + assert(bo); surf.ss1.base_addr = bo->offset; /* reloc */ @@ -440,45 +390,19 @@ brw_update_renderbuffer_surface(struct brw_context *brw, key.surface_type = BRW_SURFACE_2D; switch (irb->Base.Format) { - /* XRGB and ARGB are treated the same here because the chips in this - * family cannot render to XRGB targets. This means that we have to - * mask writes to alpha (ala glColorMask) and reconfigure the alpha - * blending hardware to use GL_ONE (or GL_ZERO) for cases where - * GL_DST_ALPHA (or GL_ONE_MINUS_DST_ALPHA) is used. - */ - case MESA_FORMAT_ARGB8888: case MESA_FORMAT_XRGB8888: + /* XRGB is handled as ARGB because the chips in this family + * cannot render to XRGB targets. This means that we have to + * mask writes to alpha (ala glColorMask) and reconfigure the + * alpha blending hardware to use GL_ONE (or GL_ZERO) for + * cases where GL_DST_ALPHA (or GL_ONE_MINUS_DST_ALPHA) is + * used. + */ key.surface_format = BRW_SURFACEFORMAT_B8G8R8A8_UNORM; break; - case MESA_FORMAT_SARGB8: - key.surface_format = BRW_SURFACEFORMAT_B8G8R8A8_UNORM_SRGB; - break; - case MESA_FORMAT_RGB565: - key.surface_format = BRW_SURFACEFORMAT_B5G6R5_UNORM; - break; - case MESA_FORMAT_ARGB1555: - key.surface_format = BRW_SURFACEFORMAT_B5G5R5A1_UNORM; - break; - case MESA_FORMAT_ARGB4444: - key.surface_format = BRW_SURFACEFORMAT_B4G4R4A4_UNORM; - break; - case MESA_FORMAT_A8: - key.surface_format = BRW_SURFACEFORMAT_A8_UNORM; - break; - case MESA_FORMAT_R8: - key.surface_format = BRW_SURFACEFORMAT_R8_UNORM; - break; - case MESA_FORMAT_R16: - key.surface_format = BRW_SURFACEFORMAT_R16_UNORM; - break; - case MESA_FORMAT_RG88: - key.surface_format = BRW_SURFACEFORMAT_R8G8_UNORM; - break; - case MESA_FORMAT_RG1616: - key.surface_format = BRW_SURFACEFORMAT_R16G16_UNORM; - break; default: - _mesa_problem(ctx, "Bad renderbuffer format: %d\n", irb->Base.Format); + key.surface_format = brw_format_for_mesa_format[irb->Base.Format]; + assert(key.surface_format != 0); } key.tiling = region->tiling; key.width = rb->Width; diff --git a/src/mesa/drivers/dri/i965/gen6_cc.c b/src/mesa/drivers/dri/i965/gen6_cc.c index 800a2555214..c2631a7b4df 100644 --- a/src/mesa/drivers/dri/i965/gen6_cc.c +++ b/src/mesa/drivers/dri/i965/gen6_cc.c @@ -35,6 +35,7 @@ struct gen6_blend_state_key { GLboolean color_blend, alpha_enabled; GLboolean dither; + GLboolean color_mask[BRW_MAX_DRAW_BUFFERS][4]; GLenum logic_op; @@ -54,6 +55,9 @@ blend_state_populate_key(struct brw_context *brw, 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 @@ -87,54 +91,62 @@ static drm_intel_bo * blend_state_create_from_key(struct brw_context *brw, struct gen6_blend_state_key *key) { - struct gen6_blend_state blend; + struct gen6_blend_state blend[BRW_MAX_DRAW_BUFFERS]; drm_intel_bo *bo; + int b; memset(&blend, 0, sizeof(blend)); - if (key->logic_op != GL_COPY) { - blend.blend1.logic_op_enable = 1; - blend.blend1.logic_op_func = intel_translate_logic_op(key->logic_op); - } else if (key->color_blend) { - 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; - - if (eqRGB == GL_MIN || eqRGB == GL_MAX) { - srcRGB = dstRGB = GL_ONE; - } - - if (eqA == GL_MIN || eqA == GL_MAX) { - srcA = dstA = GL_ONE; + 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; + + if (eqRGB == GL_MIN || eqRGB == GL_MAX) { + srcRGB = dstRGB = GL_ONE; + } + + if (eqA == GL_MIN || eqA == GL_MAX) { + srcA = dstA = GL_ONE; + } + + blend[b].blend0.dest_blend_factor = brw_translate_blend_factor(dstRGB); + blend[b].blend0.source_blend_factor = brw_translate_blend_factor(srcRGB); + blend[b].blend0.blend_func = brw_translate_blend_equation(eqRGB); + + blend[b].blend0.ia_dest_blend_factor = brw_translate_blend_factor(dstA); + blend[b].blend0.ia_source_blend_factor = brw_translate_blend_factor(srcA); + blend[b].blend0.ia_blend_func = brw_translate_blend_equation(eqA); + + blend[b].blend0.blend_enable = 1; + blend[b].blend0.ia_blend_enable = (srcA != srcRGB || + dstA != dstRGB || + eqA != eqRGB); } - blend.blend0.dest_blend_factor = brw_translate_blend_factor(dstRGB); - blend.blend0.source_blend_factor = brw_translate_blend_factor(srcRGB); - blend.blend0.blend_func = brw_translate_blend_equation(eqRGB); - - blend.blend0.ia_dest_blend_factor = brw_translate_blend_factor(dstA); - blend.blend0.ia_source_blend_factor = brw_translate_blend_factor(srcA); - blend.blend0.ia_blend_func = brw_translate_blend_equation(eqA); + if (key->alpha_enabled) { + blend[b].blend1.alpha_test_enable = 1; + blend[b].blend1.alpha_test_func = intel_translate_compare_func(key->alpha_func); - blend.blend0.blend_enable = 1; - blend.blend0.ia_blend_enable = (srcA != srcRGB || - dstA != dstRGB || - eqA != eqRGB); - } - - if (key->alpha_enabled) { - blend.blend1.alpha_test_enable = 1; - blend.blend1.alpha_test_func = intel_translate_compare_func(key->alpha_func); + } - } + if (key->dither) { + blend[b].blend1.dither_enable = 1; + blend[b].blend1.y_dither_offset = 0; + blend[b].blend1.x_dither_offset = 0; + } - if (key->dither) { - blend.blend1.dither_enable = 1; - blend.blend1.y_dither_offset = 0; - blend.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]; } bo = brw_upload_cache(&brw->cache, BRW_BLEND_STATE, @@ -172,7 +184,7 @@ const struct brw_tracked_state gen6_blend_state = { }; struct gen6_color_calc_state_key { - GLubyte blend_constant_color[4]; + float blend_constant_color[4]; GLclampf alpha_ref; GLubyte stencil_ref[2]; }; diff --git a/src/mesa/drivers/dri/i965/gen6_clip_state.c b/src/mesa/drivers/dri/i965/gen6_clip_state.c index c65b41e2b6b..c7c4eb1f27d 100644 --- a/src/mesa/drivers/dri/i965/gen6_clip_state.c +++ b/src/mesa/drivers/dri/i965/gen6_clip_state.c @@ -64,7 +64,9 @@ upload_clip_state(struct brw_context *brw) userclip << GEN6_USER_CLIP_CLIP_DISTANCES_SHIFT | depth_clamp | provoking); - OUT_BATCH(GEN6_CLIP_FORCE_ZERO_RTAINDEX); + OUT_BATCH(U_FIXED(0.125, 3) << GEN6_CLIP_MIN_POINT_WIDTH_SHIFT | + U_FIXED(225.875, 3) << GEN6_CLIP_MAX_POINT_WIDTH_SHIFT | + GEN6_CLIP_FORCE_ZERO_RTAINDEX); ADVANCE_BATCH(); } diff --git a/src/mesa/drivers/dri/i965/gen6_sf_state.c b/src/mesa/drivers/dri/i965/gen6_sf_state.c index 471067e8f02..45c148baedd 100644 --- a/src/mesa/drivers/dri/i965/gen6_sf_state.c +++ b/src/mesa/drivers/dri/i965/gen6_sf_state.c @@ -33,9 +33,10 @@ #include "intel_batchbuffer.h" static uint32_t -get_attr_override(struct brw_context *brw, int fs_attr) +get_attr_override(struct brw_context *brw, int fs_attr, int two_side_color) { int attr_index = 0, i, vs_attr; + int bfc = 0; if (fs_attr <= FRAG_ATTRIB_TEX7) vs_attr = fs_attr; @@ -57,6 +58,30 @@ get_attr_override(struct brw_context *brw, int fs_attr) attr_index++; } + assert(attr_index < 32); + + if (two_side_color) { + if ((brw->vs.prog_data->outputs_written & BITFIELD64_BIT(VERT_RESULT_COL1)) && + (brw->vs.prog_data->outputs_written & BITFIELD64_BIT(VERT_RESULT_BFC1))) { + assert(brw->vs.prog_data->outputs_written & BITFIELD64_BIT(VERT_RESULT_COL0)); + assert(brw->vs.prog_data->outputs_written & BITFIELD64_BIT(VERT_RESULT_BFC0)); + bfc = 2; + } else if ((brw->vs.prog_data->outputs_written & BITFIELD64_BIT(VERT_RESULT_COL0)) && + (brw->vs.prog_data->outputs_written & BITFIELD64_BIT(VERT_RESULT_BFC0))) + bfc = 1; + } + + if (bfc && (fs_attr <= FRAG_ATTRIB_TEX7 && fs_attr > FRAG_ATTRIB_WPOS)) { + if (fs_attr == FRAG_ATTRIB_COL0) + attr_index |= (ATTRIBUTE_SWIZZLE_INPUTATTR_FACING << ATTRIBUTE_SWIZZLE_SHIFT); + else if (fs_attr == FRAG_ATTRIB_COL1 && bfc == 2) { + attr_index++; + attr_index |= (ATTRIBUTE_SWIZZLE_INPUTATTR_FACING << ATTRIBUTE_SWIZZLE_SHIFT); + } else { + attr_index += bfc; + } + } + return attr_index; } @@ -67,13 +92,15 @@ upload_sf_state(struct brw_context *brw) struct gl_context *ctx = &intel->ctx; /* CACHE_NEW_VS_PROG */ uint32_t num_inputs = brw_count_bits(brw->vs.prog_data->outputs_written); + /* BRW_NEW_FRAGMENT_PROGRAM */ uint32_t num_outputs = brw_count_bits(brw->fragment_program->Base.InputsRead); - uint32_t dw1, dw2, dw3, dw4, dw16; + uint32_t dw1, dw2, dw3, dw4, dw16, dw17; int i; /* _NEW_BUFFER */ GLboolean render_to_fbo = brw->intel.ctx.DrawBuffer->Name != 0; int attr = 0; int urb_start; + int two_side_color = (ctx->Light.Enabled && ctx->Light.Model.TwoSide); /* _NEW_TRANSFORM */ if (ctx->Transform.ClipPlanesEnabled) @@ -91,6 +118,7 @@ upload_sf_state(struct brw_context *brw) dw3 = 0; dw4 = 0; dw16 = 0; + dw17 = 0; /* _NEW_POLYGON */ if ((ctx->Polygon.FrontFace == GL_CCW) ^ render_to_fbo) @@ -99,6 +127,48 @@ upload_sf_state(struct brw_context *brw) if (ctx->Polygon.OffsetFill) dw2 |= GEN6_SF_GLOBAL_DEPTH_OFFSET_SOLID; + if (ctx->Polygon.OffsetLine) + dw2 |= GEN6_SF_GLOBAL_DEPTH_OFFSET_WIREFRAME; + + if (ctx->Polygon.OffsetPoint) + dw2 |= GEN6_SF_GLOBAL_DEPTH_OFFSET_POINT; + + switch (ctx->Polygon.FrontMode) { + case GL_FILL: + dw2 |= GEN6_SF_FRONT_SOLID; + break; + + case GL_LINE: + dw2 |= GEN6_SF_FRONT_WIREFRAME; + break; + + case GL_POINT: + dw2 |= GEN6_SF_FRONT_POINT; + break; + + default: + assert(0); + break; + } + + switch (ctx->Polygon.BackMode) { + case GL_FILL: + dw2 |= GEN6_SF_BACK_SOLID; + break; + + case GL_LINE: + dw2 |= GEN6_SF_BACK_WIREFRAME; + break; + + case GL_POINT: + dw2 |= GEN6_SF_BACK_POINT; + break; + + default: + assert(0); + break; + } + /* _NEW_SCISSOR */ if (ctx->Scissor.Enabled) dw3 |= GEN6_SF_SCISSOR_ENABLE; @@ -160,6 +230,12 @@ upload_sf_state(struct brw_context *brw) } } + /* flat shading */ + if (ctx->Light.ShadeModel == GL_FLAT) { + dw17 |= ((brw->fragment_program->Base.InputsRead & (FRAG_BIT_COL0 | FRAG_BIT_COL1)) >> + ((brw->fragment_program->Base.InputsRead & FRAG_BIT_WPOS) ? 0 : 1)); + } + BEGIN_BATCH(20); OUT_BATCH(CMD_3D_SF_STATE << 16 | (20 - 2)); OUT_BATCH(dw1); @@ -174,7 +250,7 @@ upload_sf_state(struct brw_context *brw) for (; attr < 64; attr++) { if (brw->fragment_program->Base.InputsRead & BITFIELD64_BIT(attr)) { - attr_overrides |= get_attr_override(brw, attr); + attr_overrides |= get_attr_override(brw, attr, two_side_color); attr++; break; } @@ -182,7 +258,7 @@ upload_sf_state(struct brw_context *brw) for (; attr < 64; attr++) { if (brw->fragment_program->Base.InputsRead & BITFIELD64_BIT(attr)) { - attr_overrides |= get_attr_override(brw, attr) << 16; + attr_overrides |= get_attr_override(brw, attr, two_side_color) << 16; attr++; break; } @@ -190,7 +266,7 @@ upload_sf_state(struct brw_context *brw) OUT_BATCH(attr_overrides); } OUT_BATCH(dw16); /* point sprite texcoord bitmask */ - OUT_BATCH(0); /* constant interp bitmask */ + OUT_BATCH(dw17); /* constant interp bitmask */ OUT_BATCH(0); /* wrapshortest enables 0-7 */ OUT_BATCH(0); /* wrapshortest enables 8-15 */ ADVANCE_BATCH(); @@ -205,7 +281,8 @@ const struct brw_tracked_state gen6_sf_state = { _NEW_BUFFERS | _NEW_POINT | _NEW_TRANSFORM), - .brw = BRW_NEW_CONTEXT, + .brw = (BRW_NEW_CONTEXT | + BRW_NEW_FRAGMENT_PROGRAM), .cache = CACHE_NEW_VS_PROG }, .emit = upload_sf_state, diff --git a/src/mesa/drivers/dri/i965/gen6_urb.c b/src/mesa/drivers/dri/i965/gen6_urb.c index a34123478fb..de97fd3783d 100644 --- a/src/mesa/drivers/dri/i965/gen6_urb.c +++ b/src/mesa/drivers/dri/i965/gen6_urb.c @@ -72,7 +72,7 @@ const struct brw_tracked_state gen6_urb = { .dirty = { .mesa = 0, .brw = BRW_NEW_CONTEXT, - .cache = CACHE_NEW_VS_PROG, + .cache = (CACHE_NEW_VS_PROG | CACHE_NEW_GS_PROG), }, .prepare = prepare_urb, .emit = upload_urb, diff --git a/src/mesa/drivers/dri/i965/gen6_vs_state.c b/src/mesa/drivers/dri/i965/gen6_vs_state.c index e94d0c0ddbb..ed132bdbd93 100644 --- a/src/mesa/drivers/dri/i965/gen6_vs_state.c +++ b/src/mesa/drivers/dri/i965/gen6_vs_state.c @@ -54,7 +54,7 @@ upload_vs_state(struct brw_context *brw) OUT_BATCH(0); ADVANCE_BATCH(); } else { - int params_uploaded = 0; + int params_uploaded = 0, param_regs; float *param; if (brw->vertex_program->IsNVProgram) @@ -88,20 +88,11 @@ upload_vs_state(struct brw_context *brw) params_uploaded++; } - if (vp->use_const_buffer) { - for (i = 0; i < vp->program.Base.Parameters->NumParameters; i++) { - if (brw->vs.constant_map[i] != -1) { - memcpy(param + brw->vs.constant_map[i] * 4, - vp->program.Base.Parameters->ParameterValues[i], - 4 * sizeof(float)); - params_uploaded++; - } - } - } else { - for (i = 0; i < nr_params; i++) { - memcpy(param, vp->program.Base.Parameters->ParameterValues[i], + for (i = 0; i < vp->program.Base.Parameters->NumParameters; i++) { + if (brw->vs.constant_map[i] != -1) { + memcpy(param + brw->vs.constant_map[i] * 4, + vp->program.Base.Parameters->ParameterValues[i], 4 * sizeof(float)); - param += 4; params_uploaded++; } } @@ -117,13 +108,16 @@ upload_vs_state(struct brw_context *brw) drm_intel_gem_bo_unmap_gtt(constant_bo); + param_regs = (params_uploaded + 1) / 2; + assert(param_regs <= 32); + BEGIN_BATCH(5); OUT_BATCH(CMD_3D_CONSTANT_VS_STATE << 16 | GEN6_CONSTANT_BUFFER_0_ENABLE | (5 - 2)); OUT_RELOC(constant_bo, I915_GEM_DOMAIN_RENDER, 0, /* XXX: bad domain */ - ALIGN(params_uploaded, 2) / 2 - 1); + param_regs - 1); OUT_BATCH(0); OUT_BATCH(0); OUT_BATCH(0); @@ -136,6 +130,7 @@ upload_vs_state(struct brw_context *brw) OUT_BATCH(CMD_3D_VS_STATE << 16 | (6 - 2)); OUT_RELOC(brw->vs.prog_bo, I915_GEM_DOMAIN_INSTRUCTION, 0, 0); OUT_BATCH((0 << GEN6_VS_SAMPLER_COUNT_SHIFT) | + GEN6_VS_FLOATING_POINT_MODE_ALT | (brw->vs.nr_surfaces << GEN6_VS_BINDING_TABLE_ENTRY_COUNT_SHIFT)); OUT_BATCH(0); /* scratch space base offset */ OUT_BATCH((1 << GEN6_VS_DISPATCH_START_GRF_SHIFT) | diff --git a/src/mesa/drivers/dri/i965/gen6_wm_state.c b/src/mesa/drivers/dri/i965/gen6_wm_state.c index ea5418bacf1..2ae0c093ebe 100644 --- a/src/mesa/drivers/dri/i965/gen6_wm_state.c +++ b/src/mesa/drivers/dri/i965/gen6_wm_state.c @@ -66,6 +66,21 @@ prepare_wm_constants(struct brw_context *brw) constants[i] = convert_param(brw->wm.prog_data->param_convert[i], *brw->wm.prog_data->param[i]); } + + if (0) { + printf("WM constants:\n"); + for (i = 0; i < brw->wm.prog_data->nr_params; i++) { + if ((i & 7) == 0) + printf("g%d: ", brw->wm.prog_data->first_curbe_grf + i / 8); + printf("%8f ", constants[i]); + if ((i & 7) == 7) + printf("\n"); + } + if ((i & 7) != 0) + printf("\n"); + printf("\n"); + } + drm_intel_gem_bo_unmap_gtt(brw->wm.push_const_bo); } } @@ -88,6 +103,7 @@ upload_wm_state(struct brw_context *brw) brw_fragment_program_const(brw->fragment_program); uint32_t dw2, dw4, dw5, dw6; + /* CACHE_NEW_WM_PROG */ if (brw->wm.prog_data->nr_params == 0) { /* Disable the push constant buffers. */ BEGIN_BATCH(5); @@ -104,7 +120,8 @@ upload_wm_state(struct brw_context *brw) (5 - 2)); OUT_RELOC(brw->wm.push_const_bo, I915_GEM_DOMAIN_RENDER, 0, /* XXX: bad domain */ - ALIGN(brw->wm.prog_data->nr_params, 8) / 8 - 1); + ALIGN(brw->wm.prog_data->nr_params, + brw->wm.prog_data->dispatch_width) / 8 - 1); OUT_BATCH(0); OUT_BATCH(0); OUT_BATCH(0); @@ -116,6 +133,9 @@ upload_wm_state(struct brw_context *brw) dw5 |= GEN6_WM_LINE_AA_WIDTH_1_0; dw5 |= GEN6_WM_LINE_END_CAP_AA_WIDTH_0_5; + /* OpenGL non-ieee floating point mode */ + dw2 |= GEN6_WM_FLOATING_POINT_MODE_ALT; + /* BRW_NEW_NR_WM_SURFACES */ dw2 |= brw->wm.nr_surfaces << GEN6_WM_BINDING_TABLE_ENTRY_COUNT_SHIFT; @@ -126,8 +146,8 @@ upload_wm_state(struct brw_context *brw) dw5 |= (40 - 1) << GEN6_WM_MAX_THREADS_SHIFT; - /* BRW_NEW_FRAGMENT_PROGRAM */ - if (fp->isGLSL) + /* CACHE_NEW_WM_PROG */ + if (brw->wm.prog_data->dispatch_width == 8) dw5 |= GEN6_WM_8_DISPATCH_ENABLE; else dw5 |= GEN6_WM_16_DISPATCH_ENABLE; @@ -176,13 +196,14 @@ upload_wm_state(struct brw_context *brw) const struct brw_tracked_state gen6_wm_state = { .dirty = { .mesa = (_NEW_LINE | _NEW_POLYGONSTIPPLE | _NEW_COLOR | _NEW_BUFFERS | - _NEW_PROGRAM_CONSTANTS), + _NEW_PROGRAM_CONSTANTS | _NEW_POLYGON), .brw = (BRW_NEW_CURBE_OFFSETS | BRW_NEW_FRAGMENT_PROGRAM | BRW_NEW_NR_WM_SURFACES | BRW_NEW_URB_FENCE | BRW_NEW_BATCH), - .cache = CACHE_NEW_SAMPLER + .cache = (CACHE_NEW_SAMPLER | + CACHE_NEW_WM_PROG) }, .emit = upload_wm_state, }; diff --git a/src/mesa/drivers/dri/intel/intel_batchbuffer.c b/src/mesa/drivers/dri/intel/intel_batchbuffer.c index 4b498f8c5b2..20574ab5462 100644 --- a/src/mesa/drivers/dri/intel/intel_batchbuffer.c +++ b/src/mesa/drivers/dri/intel/intel_batchbuffer.c @@ -92,9 +92,17 @@ do_flush_locked(struct intel_batchbuffer *batch, GLuint used) batch->ptr = NULL; - if (!intel->no_hw) { - drm_intel_bo_exec(batch->buf, used, NULL, 0, - (x_off & 0xffff) | (y_off << 16)); + if (!intel->intelScreen->no_hw) { + int ring; + + if (intel->gen < 6 || !intel->batch->is_blit) { + ring = I915_EXEC_RENDER; + } else { + ring = I915_EXEC_BLT; + } + + drm_intel_bo_mrb_exec(batch->buf, used, NULL, 0, + (x_off & 0xffff) | (y_off << 16), ring); } if (unlikely(INTEL_DEBUG & DEBUG_BATCH)) { @@ -242,10 +250,10 @@ intel_batchbuffer_emit_reloc_fenced(struct intel_batchbuffer *batch, void intel_batchbuffer_data(struct intel_batchbuffer *batch, - const void *data, GLuint bytes) + const void *data, GLuint bytes, bool is_blit) { assert((bytes & 3) == 0); - intel_batchbuffer_require_space(batch, bytes); + intel_batchbuffer_require_space(batch, bytes, is_blit); __memcpy(batch->ptr, data, bytes); batch->ptr += bytes; } @@ -262,22 +270,29 @@ intel_batchbuffer_emit_mi_flush(struct intel_batchbuffer *batch) struct intel_context *intel = batch->intel; if (intel->gen >= 6) { - BEGIN_BATCH(8); - - /* XXX workaround: issue any post sync != 0 before write cache flush = 1 */ - OUT_BATCH(_3DSTATE_PIPE_CONTROL); - OUT_BATCH(PIPE_CONTROL_WRITE_IMMEDIATE); - OUT_BATCH(0); /* write address */ - OUT_BATCH(0); /* write data */ - - OUT_BATCH(_3DSTATE_PIPE_CONTROL); - OUT_BATCH(PIPE_CONTROL_INSTRUCTION_FLUSH | - PIPE_CONTROL_WRITE_FLUSH | - PIPE_CONTROL_DEPTH_CACHE_FLUSH | - PIPE_CONTROL_NO_WRITE); - OUT_BATCH(0); /* write address */ - OUT_BATCH(0); /* write data */ - ADVANCE_BATCH(); + if (intel->batch->is_blit) { + BEGIN_BATCH_BLT(1); + OUT_BATCH(MI_FLUSH); + ADVANCE_BATCH(); + } else { + BEGIN_BATCH(8); + /* XXX workaround: issue any post sync != 0 before write + * cache flush = 1 + */ + OUT_BATCH(_3DSTATE_PIPE_CONTROL); + OUT_BATCH(PIPE_CONTROL_WRITE_IMMEDIATE); + OUT_BATCH(0); /* write address */ + OUT_BATCH(0); /* write data */ + + OUT_BATCH(_3DSTATE_PIPE_CONTROL); + OUT_BATCH(PIPE_CONTROL_INSTRUCTION_FLUSH | + PIPE_CONTROL_WRITE_FLUSH | + PIPE_CONTROL_DEPTH_CACHE_FLUSH | + PIPE_CONTROL_NO_WRITE); + OUT_BATCH(0); /* write address */ + OUT_BATCH(0); /* write data */ + ADVANCE_BATCH(); + } } else if (intel->gen >= 4) { BEGIN_BATCH(4); OUT_BATCH(_3DSTATE_PIPE_CONTROL | diff --git a/src/mesa/drivers/dri/intel/intel_batchbuffer.h b/src/mesa/drivers/dri/intel/intel_batchbuffer.h index 428c027c2f1..635708587a6 100644 --- a/src/mesa/drivers/dri/intel/intel_batchbuffer.h +++ b/src/mesa/drivers/dri/intel/intel_batchbuffer.h @@ -31,6 +31,7 @@ struct intel_batchbuffer } emit; #endif + bool is_blit; GLuint dirty_state; GLuint reserved_space; }; @@ -55,7 +56,7 @@ void intel_batchbuffer_reset(struct intel_batchbuffer *batch); * intel_buffer_dword() calls. */ void intel_batchbuffer_data(struct intel_batchbuffer *batch, - const void *data, GLuint bytes); + const void *data, GLuint bytes, bool is_blit); void intel_batchbuffer_release_space(struct intel_batchbuffer *batch, GLuint bytes); @@ -114,8 +115,16 @@ intel_batchbuffer_emit_float(struct intel_batchbuffer *batch, float f) static INLINE void intel_batchbuffer_require_space(struct intel_batchbuffer *batch, - GLuint sz) + GLuint sz, int is_blit) { + + if (batch->intel->gen >= 6 && batch->is_blit != is_blit && + batch->ptr != batch->map) { + intel_batchbuffer_flush(batch); + } + + batch->is_blit = is_blit; + #ifdef DEBUG assert(sz < batch->size - 8); #endif @@ -124,9 +133,10 @@ intel_batchbuffer_require_space(struct intel_batchbuffer *batch, } static INLINE void -intel_batchbuffer_begin(struct intel_batchbuffer *batch, int n) +intel_batchbuffer_begin(struct intel_batchbuffer *batch, int n, bool is_blit) { - intel_batchbuffer_require_space(batch, n * 4); + intel_batchbuffer_require_space(batch, n * 4, is_blit); + #ifdef DEBUG assert(batch->map); assert(batch->emit.start_ptr == NULL); @@ -154,7 +164,8 @@ intel_batchbuffer_advance(struct intel_batchbuffer *batch) */ #define BATCH_LOCALS -#define BEGIN_BATCH(n) intel_batchbuffer_begin(intel->batch, n) +#define BEGIN_BATCH(n) intel_batchbuffer_begin(intel->batch, n, false) +#define BEGIN_BATCH_BLT(n) intel_batchbuffer_begin(intel->batch, n, true) #define OUT_BATCH(d) intel_batchbuffer_emit_dword(intel->batch, d) #define OUT_BATCH_F(f) intel_batchbuffer_emit_float(intel->batch,f) #define OUT_RELOC(buf, read_domains, write_domain, delta) do { \ diff --git a/src/mesa/drivers/dri/intel/intel_blit.c b/src/mesa/drivers/dri/intel/intel_blit.c index c2917e9b07e..a2822b11d96 100644 --- a/src/mesa/drivers/dri/intel/intel_blit.c +++ b/src/mesa/drivers/dri/intel/intel_blit.c @@ -38,6 +38,8 @@ #include "intel_reg.h" #include "intel_regions.h" #include "intel_batchbuffer.h" +#include "intel_tex.h" +#include "intel_mipmap_tree.h" #define FILE_DEBUG_FLAG DEBUG_BLIT @@ -107,10 +109,6 @@ intelEmitCopyBlit(struct intel_context *intel, drm_intel_bo *aper_array[3]; BATCH_LOCALS; - /* Blits are in a different ringbuffer so we don't use them. */ - if (intel->gen >= 6) - return GL_FALSE; - if (dst_tiling != I915_TILING_NONE) { if (dst_offset & 4095) return GL_FALSE; @@ -140,7 +138,7 @@ intelEmitCopyBlit(struct intel_context *intel, if (pass >= 2) return GL_FALSE; - intel_batchbuffer_require_space(intel->batch, 8 * 4); + intel_batchbuffer_require_space(intel->batch, 8 * 4, true); DBG("%s src:buf(%p)/%d+%d %d,%d dst:buf(%p)/%d+%d %d,%d sz:%dx%d\n", __FUNCTION__, src_buffer, src_pitch, src_offset, src_x, src_y, @@ -181,7 +179,7 @@ intelEmitCopyBlit(struct intel_context *intel, assert(dst_x < dst_x2); assert(dst_y < dst_y2); - BEGIN_BATCH(8); + BEGIN_BATCH_BLT(8); OUT_BATCH(CMD); OUT_BATCH(BR13 | (uint16_t)dst_pitch); OUT_BATCH((dst_y << 16) | dst_x); @@ -219,9 +217,6 @@ intelClearWithBlit(struct gl_context *ctx, GLbitfield mask) GLint cx, cy, cw, ch; BATCH_LOCALS; - /* Blits are in a different ringbuffer so we don't use them. */ - assert(intel->gen < 6); - /* * Compute values for clearing the buffers. */ @@ -356,7 +351,7 @@ intelClearWithBlit(struct gl_context *ctx, GLbitfield mask) intel_batchbuffer_flush(intel->batch); } - BEGIN_BATCH(6); + BEGIN_BATCH_BLT(6); OUT_BATCH(CMD); OUT_BATCH(BR13); OUT_BATCH((y1 << 16) | x1); @@ -393,10 +388,6 @@ intelEmitImmediateColorExpandBlit(struct intel_context *intel, int dwords = ALIGN(src_size, 8) / 4; uint32_t opcode, br13, blit_cmd; - /* Blits are in a different ringbuffer so we don't use them. */ - if (intel->gen >= 6) - return GL_FALSE; - if (dst_tiling != I915_TILING_NONE) { if (dst_offset & 4095) return GL_FALSE; @@ -420,7 +411,7 @@ intelEmitImmediateColorExpandBlit(struct intel_context *intel, intel_batchbuffer_require_space( intel->batch, (8 * 4) + (3 * 4) + - dwords * 4 ); + dwords * 4, true); opcode = XY_SETUP_BLT_CMD; if (cpp == 4) @@ -439,7 +430,7 @@ intelEmitImmediateColorExpandBlit(struct intel_context *intel, if (dst_tiling != I915_TILING_NONE) blit_cmd |= XY_DST_TILED; - BEGIN_BATCH(8 + 3); + BEGIN_BATCH_BLT(8 + 3); OUT_BATCH(opcode); OUT_BATCH(br13); OUT_BATCH((0 << 16) | 0); /* clip x1, y1 */ @@ -456,9 +447,9 @@ intelEmitImmediateColorExpandBlit(struct intel_context *intel, OUT_BATCH(((y + h) << 16) | (x + w)); ADVANCE_BATCH(); - intel_batchbuffer_data( intel->batch, - src_bits, - dwords * 4 ); + intel_batchbuffer_data(intel->batch, + src_bits, + dwords * 4, true); intel_batchbuffer_emit_mi_flush(intel->batch); @@ -480,9 +471,6 @@ intel_emit_linear_blit(struct intel_context *intel, GLuint pitch, height; GLboolean ok; - /* Blits are in a different ringbuffer so we don't use them. */ - assert(intel->gen < 6); - /* The pitch given to the GPU must be DWORD aligned, and * we want width to match pitch. Max width is (1 << 15 - 1), * rounding that down to the nearest DWORD is 1 << 15 - 4 @@ -514,3 +502,81 @@ intel_emit_linear_blit(struct intel_context *intel, assert(ok); } } + +/** + * Used to initialize the alpha value of an ARGB8888 teximage after + * loading it from an XRGB8888 source. + * + * This is very common with glCopyTexImage2D(). + */ +void +intel_set_teximage_alpha_to_one(struct gl_context *ctx, + struct intel_texture_image *intel_image) +{ + struct intel_context *intel = intel_context(ctx); + unsigned int image_x, image_y; + uint32_t x1, y1, x2, y2; + uint32_t BR13, CMD; + int pitch, cpp; + drm_intel_bo *aper_array[2]; + struct intel_region *region = intel_image->mt->region; + BATCH_LOCALS; + + assert(intel_image->base.TexFormat == MESA_FORMAT_ARGB8888); + + /* get dest x/y in destination texture */ + intel_miptree_get_image_offset(intel_image->mt, + intel_image->level, + intel_image->face, + 0, + &image_x, &image_y); + + x1 = image_x; + y1 = image_y; + x2 = image_x + intel_image->base.Width; + y2 = image_y + intel_image->base.Height; + + pitch = region->pitch; + cpp = region->cpp; + + DBG("%s dst:buf(%p)/%d %d,%d sz:%dx%d\n", + __FUNCTION__, + intel_image->mt->region->buffer, (pitch * region->cpp), + x1, y1, x2 - x1, y2 - y1); + + BR13 = br13_for_cpp(region->cpp) | 0xf0 << 16; + CMD = XY_COLOR_BLT_CMD; + CMD |= XY_BLT_WRITE_ALPHA; + + assert(region->tiling != I915_TILING_Y); + +#ifndef I915 + if (region->tiling != I915_TILING_NONE) { + CMD |= XY_DST_TILED; + pitch /= 4; + } +#endif + BR13 |= (pitch * region->cpp); + + /* do space check before going any further */ + aper_array[0] = intel->batch->buf; + aper_array[1] = region->buffer; + + if (drm_intel_bufmgr_check_aperture_space(aper_array, + ARRAY_SIZE(aper_array)) != 0) { + intel_batchbuffer_flush(intel->batch); + } + + BEGIN_BATCH_BLT(6); + OUT_BATCH(CMD); + OUT_BATCH(BR13); + OUT_BATCH((y1 << 16) | x1); + OUT_BATCH((y2 << 16) | x2); + OUT_RELOC_FENCED(region->buffer, + I915_GEM_DOMAIN_RENDER, I915_GEM_DOMAIN_RENDER, + 0); + OUT_BATCH(0xffffffff); /* white, but only alpha gets written */ + ADVANCE_BATCH(); + + intel_batchbuffer_emit_mi_flush(intel->batch); +} diff --git a/src/mesa/drivers/dri/intel/intel_blit.h b/src/mesa/drivers/dri/intel/intel_blit.h index 01631465735..ff69e4f8f8f 100644 --- a/src/mesa/drivers/dri/intel/intel_blit.h +++ b/src/mesa/drivers/dri/intel/intel_blit.h @@ -69,5 +69,7 @@ void intel_emit_linear_blit(struct intel_context *intel, drm_intel_bo *src_bo, unsigned int src_offset, unsigned int size); +void intel_set_teximage_alpha_to_one(struct gl_context *ctx, + struct intel_texture_image *intel_image); #endif diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c index 152cdcaf37d..9c222c7b485 100644 --- a/src/mesa/drivers/dri/intel/intel_context.c +++ b/src/mesa/drivers/dri/intel/intel_context.c @@ -519,7 +519,6 @@ static const struct dri_debug_control debug_control[] = { { "sing", DEBUG_SINGLE_THREAD }, { "thre", DEBUG_SINGLE_THREAD }, { "wm", DEBUG_WM }, - { "glsl_force", DEBUG_GLSL_FORCE }, { "urb", DEBUG_URB }, { "vs", DEBUG_VS }, { "clip", DEBUG_CLIP }, @@ -800,11 +799,6 @@ intelInitContext(struct intel_context *intel, if (INTEL_DEBUG & DEBUG_BUFMGR) dri_bufmgr_set_debug(intel->bufmgr, GL_TRUE); - /* XXX force SIMD8 kernel for Sandybridge before we fixed - SIMD16 interpolation. */ - if (intel->gen == 6) - INTEL_DEBUG |= DEBUG_GLSL_FORCE; - intel->batch = intel_batchbuffer_alloc(intel); intel_fbo_init(intel); @@ -838,11 +832,6 @@ intelInitContext(struct intel_context *intel, intel->always_flush_cache = 1; } - /* Disable all hardware rendering (skip emitting batches and fences/waits - * to the kernel) - */ - intel->no_hw = getenv("INTEL_NO_HW") != NULL; - return GL_TRUE; } diff --git a/src/mesa/drivers/dri/intel/intel_context.h b/src/mesa/drivers/dri/intel/intel_context.h index 9d5139c0000..53a11ba9a7e 100644 --- a/src/mesa/drivers/dri/intel/intel_context.h +++ b/src/mesa/drivers/dri/intel/intel_context.h @@ -29,7 +29,7 @@ #define INTELCONTEXT_INC - +#include <stdbool.h> #include "main/mtypes.h" #include "main/mm.h" #include "dri_metaops.h" @@ -207,7 +207,6 @@ struct intel_context GLboolean hw_stipple; GLboolean depth_buffer_is_float; GLboolean no_rast; - GLboolean no_hw; GLboolean always_flush_batch; GLboolean always_flush_cache; @@ -362,7 +361,6 @@ extern int INTEL_DEBUG; #define DEBUG_WM 0x800000 #define DEBUG_URB 0x1000000 #define DEBUG_VS 0x2000000 -#define DEBUG_GLSL_FORCE 0x4000000 #define DEBUG_CLIP 0x8000000 #define DBG(...) do { \ diff --git a/src/mesa/drivers/dri/intel/intel_fbo.c b/src/mesa/drivers/dri/intel/intel_fbo.c index 862a13d2ea5..f6fe7b17536 100644 --- a/src/mesa/drivers/dri/intel/intel_fbo.c +++ b/src/mesa/drivers/dri/intel/intel_fbo.c @@ -42,6 +42,8 @@ #include "intel_fbo.h" #include "intel_mipmap_tree.h" #include "intel_regions.h" +#include "intel_tex.h" +#include "intel_span.h" #define FILE_DEBUG_FLAG DEBUG_FBO @@ -107,79 +109,27 @@ intel_alloc_renderbuffer_storage(struct gl_context * ctx, struct gl_renderbuffer ASSERT(rb->Name != 0); switch (internalFormat) { - case GL_RED: - case GL_R8: - rb->Format = MESA_FORMAT_R8; - rb->DataType = GL_UNSIGNED_BYTE; - break; - case GL_R16: - rb->Format = MESA_FORMAT_R16; - rb->DataType = GL_UNSIGNED_SHORT; - break; - case GL_RG: - case GL_RG8: - rb->Format = MESA_FORMAT_RG88; - rb->DataType = GL_UNSIGNED_BYTE; - break; - case GL_RG16: - rb->Format = MESA_FORMAT_RG1616; - rb->DataType = GL_UNSIGNED_SHORT; - break; - case GL_R3_G3_B2: - case GL_RGB4: - case GL_RGB5: - rb->Format = MESA_FORMAT_RGB565; - rb->DataType = GL_UNSIGNED_BYTE; - break; - case GL_RGB: - case GL_RGB8: - case GL_RGB10: - case GL_RGB12: - case GL_RGB16: - rb->Format = MESA_FORMAT_XRGB8888; - rb->DataType = GL_UNSIGNED_BYTE; - break; - case GL_RGBA: - case GL_RGBA2: - case GL_RGBA4: - case GL_RGB5_A1: - case GL_RGBA8: - case GL_RGB10_A2: - case GL_RGBA12: - case GL_RGBA16: - rb->Format = MESA_FORMAT_ARGB8888; - rb->DataType = GL_UNSIGNED_BYTE; - break; - case GL_ALPHA: - case GL_ALPHA8: - rb->Format = MESA_FORMAT_A8; - rb->DataType = GL_UNSIGNED_BYTE; - break; - case GL_DEPTH_COMPONENT16: - rb->Format = MESA_FORMAT_Z16; - rb->DataType = GL_UNSIGNED_SHORT; + default: + /* Use the same format-choice logic as for textures. + * Renderbuffers aren't any different from textures for us, + * except they're less useful because you can't texture with + * them. + */ + rb->Format = intelChooseTextureFormat(ctx, internalFormat, + GL_NONE, GL_NONE); break; case GL_STENCIL_INDEX: case GL_STENCIL_INDEX1_EXT: case GL_STENCIL_INDEX4_EXT: case GL_STENCIL_INDEX8_EXT: case GL_STENCIL_INDEX16_EXT: - case GL_DEPTH_COMPONENT: - case GL_DEPTH_COMPONENT24: - case GL_DEPTH_COMPONENT32: - case GL_DEPTH_STENCIL_EXT: - case GL_DEPTH24_STENCIL8_EXT: - /* alloc a depth+stencil buffer */ + /* These aren't actual texture formats, so force them here. */ rb->Format = MESA_FORMAT_S8_Z24; - rb->DataType = GL_UNSIGNED_INT_24_8_EXT; break; - default: - _mesa_problem(ctx, - "Unexpected format in intel_alloc_renderbuffer_storage"); - return GL_FALSE; } rb->_BaseFormat = _mesa_base_fbo_format(ctx, internalFormat); + rb->DataType = intel_mesa_format_to_rb_datatype(rb->Format); cpp = _mesa_get_format_bytes(rb->Format); intel_flush(ctx); @@ -338,39 +288,30 @@ intel_create_renderbuffer(gl_format format) switch (format) { case MESA_FORMAT_RGB565: irb->Base._BaseFormat = GL_RGB; - irb->Base.DataType = GL_UNSIGNED_BYTE; break; case MESA_FORMAT_XRGB8888: irb->Base._BaseFormat = GL_RGB; - irb->Base.DataType = GL_UNSIGNED_BYTE; break; case MESA_FORMAT_ARGB8888: irb->Base._BaseFormat = GL_RGBA; - irb->Base.DataType = GL_UNSIGNED_BYTE; break; case MESA_FORMAT_Z16: irb->Base._BaseFormat = GL_DEPTH_COMPONENT; - irb->Base.DataType = GL_UNSIGNED_SHORT; break; case MESA_FORMAT_X8_Z24: irb->Base._BaseFormat = GL_DEPTH_COMPONENT; - irb->Base.DataType = GL_UNSIGNED_INT; break; case MESA_FORMAT_S8_Z24: irb->Base._BaseFormat = GL_DEPTH_STENCIL; - irb->Base.DataType = GL_UNSIGNED_INT_24_8_EXT; break; case MESA_FORMAT_A8: irb->Base._BaseFormat = GL_ALPHA; - irb->Base.DataType = GL_UNSIGNED_BYTE; break; case MESA_FORMAT_R8: irb->Base._BaseFormat = GL_RED; - irb->Base.DataType = GL_UNSIGNED_BYTE; break; case MESA_FORMAT_RG88: irb->Base._BaseFormat = GL_RG; - irb->Base.DataType = GL_UNSIGNED_BYTE; break; default: _mesa_problem(NULL, @@ -381,6 +322,7 @@ intel_create_renderbuffer(gl_format format) irb->Base.Format = format; irb->Base.InternalFormat = irb->Base._BaseFormat; + irb->Base.DataType = intel_mesa_format_to_rb_datatype(format); /* intel-specific methods */ irb->Base.Delete = intel_delete_renderbuffer; @@ -457,66 +399,16 @@ static GLboolean intel_update_wrapper(struct gl_context *ctx, struct intel_renderbuffer *irb, struct gl_texture_image *texImage) { - if (texImage->TexFormat == MESA_FORMAT_ARGB8888) { - irb->Base.DataType = GL_UNSIGNED_BYTE; - DBG("Render to RGBA8 texture OK\n"); - } - else if (texImage->TexFormat == MESA_FORMAT_XRGB8888) { - irb->Base.DataType = GL_UNSIGNED_BYTE; - DBG("Render to XGBA8 texture OK\n"); - } - else if (texImage->TexFormat == MESA_FORMAT_SARGB8) { - irb->Base.DataType = GL_UNSIGNED_BYTE; - DBG("Render to SARGB8 texture OK\n"); - } - else if (texImage->TexFormat == MESA_FORMAT_RGB565) { - irb->Base.DataType = GL_UNSIGNED_BYTE; - DBG("Render to RGB5 texture OK\n"); - } - else if (texImage->TexFormat == MESA_FORMAT_ARGB1555) { - irb->Base.DataType = GL_UNSIGNED_BYTE; - DBG("Render to ARGB1555 texture OK\n"); - } - else if (texImage->TexFormat == MESA_FORMAT_ARGB4444) { - irb->Base.DataType = GL_UNSIGNED_BYTE; - DBG("Render to ARGB4444 texture OK\n"); - } - else if (texImage->TexFormat == MESA_FORMAT_A8) { - irb->Base.DataType = GL_UNSIGNED_BYTE; - DBG("Render to A8 texture OK\n"); - } - else if (texImage->TexFormat == MESA_FORMAT_R8) { - irb->Base.DataType = GL_UNSIGNED_BYTE; - DBG("Render to R8 texture OK\n"); - } - else if (texImage->TexFormat == MESA_FORMAT_RG88) { - irb->Base.DataType = GL_UNSIGNED_BYTE; - DBG("Render to RG88 texture OK\n"); - } - else if (texImage->TexFormat == MESA_FORMAT_R16) { - irb->Base.DataType = GL_UNSIGNED_SHORT; - DBG("Render to R8 texture OK\n"); - } - else if (texImage->TexFormat == MESA_FORMAT_RG1616) { - irb->Base.DataType = GL_UNSIGNED_SHORT; - DBG("Render to RG88 texture OK\n"); - } - else if (texImage->TexFormat == MESA_FORMAT_Z16) { - irb->Base.DataType = GL_UNSIGNED_SHORT; - DBG("Render to DEPTH16 texture OK\n"); - } - else if (texImage->TexFormat == MESA_FORMAT_S8_Z24) { - irb->Base.DataType = GL_UNSIGNED_INT_24_8_EXT; - DBG("Render to DEPTH_STENCIL texture OK\n"); - } - else { + if (!intel_span_supports_format(texImage->TexFormat)) { DBG("Render to texture BAD FORMAT %s\n", _mesa_get_format_name(texImage->TexFormat)); return GL_FALSE; + } else { + DBG("Render to texture %s\n", _mesa_get_format_name(texImage->TexFormat)); } irb->Base.Format = texImage->TexFormat; - + irb->Base.DataType = intel_mesa_format_to_rb_datatype(texImage->TexFormat); irb->Base.InternalFormat = texImage->InternalFormat; irb->Base._BaseFormat = _mesa_base_fbo_format(ctx, irb->Base.InternalFormat); irb->Base.Width = texImage->Width; @@ -707,20 +599,9 @@ intel_validate_framebuffer(struct gl_context *ctx, struct gl_framebuffer *fb) continue; } - switch (irb->Base.Format) { - case MESA_FORMAT_ARGB8888: - case MESA_FORMAT_XRGB8888: - case MESA_FORMAT_SARGB8: - case MESA_FORMAT_RGB565: - case MESA_FORMAT_ARGB1555: - case MESA_FORMAT_ARGB4444: - case MESA_FORMAT_A8: - case MESA_FORMAT_R8: - case MESA_FORMAT_R16: - case MESA_FORMAT_RG88: - case MESA_FORMAT_RG1616: - break; - default: + if (!intel_span_supports_format(irb->Base.Format)) { + DBG("Unsupported texture/renderbuffer format attached: %s\n", + _mesa_get_format_name(irb->Base.Format)); fb->_Status = GL_FRAMEBUFFER_UNSUPPORTED_EXT; } } diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c index 061f0d278d6..d683e675328 100644 --- a/src/mesa/drivers/dri/intel/intel_screen.c +++ b/src/mesa/drivers/dri/intel/intel_screen.c @@ -35,19 +35,6 @@ #include "utils.h" #include "xmlpool.h" -#include "intel_batchbuffer.h" -#include "intel_buffers.h" -#include "intel_bufmgr.h" -#include "intel_chipset.h" -#include "intel_fbo.h" -#include "intel_screen.h" -#include "intel_tex.h" -#include "intel_regions.h" - -#include "i915_drm.h" - -#define DRI_CONF_TEXTURE_TILING(def) \ - PUBLIC const char __driConfigOptions[] = DRI_CONF_BEGIN DRI_CONF_SECTION_PERFORMANCE @@ -92,6 +79,17 @@ DRI_CONF_END; const GLuint __driNConfigOptions = 11; +#include "intel_batchbuffer.h" +#include "intel_buffers.h" +#include "intel_bufmgr.h" +#include "intel_chipset.h" +#include "intel_fbo.h" +#include "intel_screen.h" +#include "intel_tex.h" +#include "intel_regions.h" + +#include "i915_drm.h" + #ifdef USE_NEW_INTERFACE static PFNGLXCREATECONTEXTMODES create_context_modes = NULL; #endif /*USE_NEW_INTERFACE */ @@ -452,7 +450,7 @@ intelCreateContext(gl_api api, return brwCreateContext(api, mesaVis, driContextPriv, sharedContextPrivate); #endif - fprintf(stderr, "Unrecognized deviceID %x\n", intelScreen->deviceID); + fprintf(stderr, "Unrecognized deviceID 0x%x\n", intelScreen->deviceID); return GL_FALSE; } @@ -462,7 +460,8 @@ intel_init_bufmgr(struct intel_screen *intelScreen) __DRIscreen *spriv = intelScreen->driScrnPriv; int num_fences = 0; - intelScreen->no_hw = getenv("INTEL_NO_HW") != NULL; + intelScreen->no_hw = (getenv("INTEL_NO_HW") != NULL || + getenv("INTEL_DEVID_OVERRIDE") != NULL); intelScreen->bufmgr = intel_bufmgr_gem_init(spriv->fd, BATCH_SZ); if (intelScreen->bufmgr == NULL) { @@ -497,6 +496,7 @@ __DRIconfig **intelInitScreen2(__DRIscreen *psp) GLenum fb_format[3]; GLenum fb_type[3]; unsigned int api_mask; + char *devid_override; static const GLenum back_buffer_modes[] = { GLX_NONE, GLX_SWAP_UNDEFINED_OML, GLX_SWAP_COPY_OML @@ -523,6 +523,16 @@ __DRIconfig **intelInitScreen2(__DRIscreen *psp) &intelScreen->deviceID)) return GL_FALSE; + /* Allow an override of the device ID for the purpose of making the + * driver produce dumps for debugging of new chipset enablement. + * This implies INTEL_NO_HW, to avoid programming your actual GPU + * incorrectly. + */ + devid_override = getenv("INTEL_DEVID_OVERRIDE"); + if (devid_override) { + intelScreen->deviceID = strtod(devid_override, NULL); + } + api_mask = (1 << __DRI_API_OPENGL); #if FEATURE_ES1 api_mask |= (1 << __DRI_API_GLES); diff --git a/src/mesa/drivers/dri/intel/intel_span.c b/src/mesa/drivers/dri/intel/intel_span.c index 104cadf0f9e..1f41518535c 100644 --- a/src/mesa/drivers/dri/intel/intel_span.c +++ b/src/mesa/drivers/dri/intel/intel_span.c @@ -25,6 +25,7 @@ * **************************************************************************/ +#include <stdbool.h> #include "main/glheader.h" #include "main/macros.h" #include "main/mtypes.h" @@ -113,6 +114,26 @@ intel_set_span_functions(struct intel_context *intel, #define TAG2(x,y) intel_##x##y##_A8 #include "spantmp2.h" +#define SPANTMP_MESA_FMT MESA_FORMAT_R8 +#define TAG(x) intel_##x##_R8 +#define TAG2(x,y) intel_##x##y##_R8 +#include "spantmp2.h" + +#define SPANTMP_MESA_FMT MESA_FORMAT_RG88 +#define TAG(x) intel_##x##_RG88 +#define TAG2(x,y) intel_##x##y##_RG88 +#include "spantmp2.h" + +#define SPANTMP_MESA_FMT MESA_FORMAT_R16 +#define TAG(x) intel_##x##_R16 +#define TAG2(x,y) intel_##x##y##_R16 +#include "spantmp2.h" + +#define SPANTMP_MESA_FMT MESA_FORMAT_RG1616 +#define TAG(x) intel_##x##_RG1616 +#define TAG2(x,y) intel_##x##y##_RG1616 +#include "spantmp2.h" + #define LOCAL_DEPTH_VARS \ struct intel_renderbuffer *irb = intel_renderbuffer(rb); \ const GLint yScale = rb->Name ? 1 : -1; \ @@ -339,6 +360,32 @@ intel_unmap_vertex_shader_textures(struct gl_context *ctx) } } +typedef void (*span_init_func)(struct gl_renderbuffer *rb); + +static span_init_func intel_span_init_funcs[MESA_FORMAT_COUNT] = +{ + [MESA_FORMAT_A8] = intel_InitPointers_A8, + [MESA_FORMAT_RGB565] = intel_InitPointers_RGB565, + [MESA_FORMAT_ARGB4444] = intel_InitPointers_ARGB4444, + [MESA_FORMAT_ARGB1555] = intel_InitPointers_ARGB1555, + [MESA_FORMAT_XRGB8888] = intel_InitPointers_xRGB8888, + [MESA_FORMAT_ARGB8888] = intel_InitPointers_ARGB8888, + [MESA_FORMAT_SARGB8] = intel_InitPointers_ARGB8888, + [MESA_FORMAT_Z16] = intel_InitDepthPointers_z16, + [MESA_FORMAT_X8_Z24] = intel_InitDepthPointers_z24_s8, + [MESA_FORMAT_S8_Z24] = intel_InitDepthPointers_z24_s8, + [MESA_FORMAT_R8] = intel_InitPointers_R8, + [MESA_FORMAT_RG88] = intel_InitPointers_RG88, + [MESA_FORMAT_R16] = intel_InitPointers_R16, + [MESA_FORMAT_RG1616] = intel_InitPointers_RG1616, +}; + +bool +intel_span_supports_format(gl_format format) +{ + return intel_span_init_funcs[format] != NULL; +} + /** * Plug in appropriate span read/write functions for the given renderbuffer. * These are used for the software fallbacks. @@ -349,37 +396,6 @@ intel_set_span_functions(struct intel_context *intel, { struct intel_renderbuffer *irb = (struct intel_renderbuffer *) rb; - switch (irb->Base.Format) { - case MESA_FORMAT_A8: - intel_InitPointers_A8(rb); - break; - case MESA_FORMAT_RGB565: - intel_InitPointers_RGB565(rb); - break; - case MESA_FORMAT_ARGB4444: - intel_InitPointers_ARGB4444(rb); - break; - case MESA_FORMAT_ARGB1555: - intel_InitPointers_ARGB1555(rb); - break; - case MESA_FORMAT_XRGB8888: - intel_InitPointers_xRGB8888(rb); - break; - case MESA_FORMAT_ARGB8888: - case MESA_FORMAT_SARGB8: - intel_InitPointers_ARGB8888(rb); - break; - case MESA_FORMAT_Z16: - intel_InitDepthPointers_z16(rb); - break; - case MESA_FORMAT_X8_Z24: - case MESA_FORMAT_S8_Z24: - intel_InitDepthPointers_z24_s8(rb); - break; - default: - _mesa_problem(NULL, - "Unexpected MesaFormat %d in intelSetSpanFunctions", - irb->Base.Format); - break; - } + assert(intel_span_init_funcs[irb->Base.Format]); + intel_span_init_funcs[irb->Base.Format](rb); } diff --git a/src/mesa/drivers/dri/intel/intel_span.h b/src/mesa/drivers/dri/intel/intel_span.h index aa8d08e843a..5a4c4e8e52a 100644 --- a/src/mesa/drivers/dri/intel/intel_span.h +++ b/src/mesa/drivers/dri/intel/intel_span.h @@ -28,6 +28,9 @@ #ifndef _INTEL_SPAN_H #define _INTEL_SPAN_H +#include "main/formats.h" +#include <stdbool.h> + extern void intelInitSpanFuncs(struct gl_context * ctx); extern void intelSpanRenderFinish(struct gl_context * ctx); @@ -38,5 +41,6 @@ void intel_renderbuffer_unmap(struct intel_context *intel, struct gl_renderbuffer *rb); void intel_map_vertex_shader_textures(struct gl_context *ctx); void intel_unmap_vertex_shader_textures(struct gl_context *ctx); +bool intel_span_supports_format(gl_format format); #endif diff --git a/src/mesa/drivers/dri/intel/intel_tex.h b/src/mesa/drivers/dri/intel/intel_tex.h index 7906554e453..b638628c711 100644 --- a/src/mesa/drivers/dri/intel/intel_tex.h +++ b/src/mesa/drivers/dri/intel/intel_tex.h @@ -42,6 +42,7 @@ void intelInitTextureCopyImageFuncs(struct dd_function_table *functions); gl_format intelChooseTextureFormat(struct gl_context *ctx, GLint internalFormat, GLenum format, GLenum type); +GLenum intel_mesa_format_to_rb_datatype(gl_format format); void intelSetTexBuffer(__DRIcontext *pDRICtx, GLint target, __DRIdrawable *pDraw); diff --git a/src/mesa/drivers/dri/intel/intel_tex_copy.c b/src/mesa/drivers/dri/intel/intel_tex_copy.c index 284ba19e8a3..c6bc3d962ab 100644 --- a/src/mesa/drivers/dri/intel/intel_tex_copy.c +++ b/src/mesa/drivers/dri/intel/intel_tex_copy.c @@ -30,7 +30,6 @@ #include "main/image.h" #include "main/teximage.h" #include "main/texstate.h" -#include "main/mipmap.h" #include "drivers/common/meta.h" @@ -51,44 +50,20 @@ * Do the best we can using the blitter. A future project is to use * the texture engine and fragment programs for these copies. */ -static const struct intel_region * -get_teximage_source(struct intel_context *intel, GLenum internalFormat) +static struct intel_renderbuffer * +get_teximage_readbuffer(struct intel_context *intel, GLenum internalFormat) { - struct intel_renderbuffer *irb; - DBG("%s %s\n", __FUNCTION__, _mesa_lookup_enum_by_nr(internalFormat)); switch (internalFormat) { case GL_DEPTH_COMPONENT: case GL_DEPTH_COMPONENT16: - irb = intel_get_renderbuffer(intel->ctx.ReadBuffer, BUFFER_DEPTH); - if (irb && irb->region && irb->region->cpp == 2) - return irb->region; - return NULL; case GL_DEPTH24_STENCIL8_EXT: case GL_DEPTH_STENCIL_EXT: - irb = intel_get_renderbuffer(intel->ctx.ReadBuffer, BUFFER_DEPTH); - if (irb && irb->region && irb->region->cpp == 4) - return irb->region; - return NULL; - case 4: - case GL_RGBA: - case GL_RGBA8: - irb = intel_renderbuffer(intel->ctx.ReadBuffer->_ColorReadBuffer); - /* We're required to set alpha to 1.0 in this case, but we can't - * do that with the blitter, so fall back. We could use the 3D - * engine or do two passes with the blitter, but it doesn't seem - * worth it for this case. */ - if (irb->Base._BaseFormat == GL_RGB) - return NULL; - return irb->region; - case 3: - case GL_RGB: - case GL_RGB8: - return intel_readbuf_region(intel); + return intel_get_renderbuffer(intel->ctx.ReadBuffer, BUFFER_DEPTH); default: - return NULL; + return intel_renderbuffer(intel->ctx.ReadBuffer->_ColorReadBuffer); } } @@ -102,23 +77,34 @@ do_copy_texsubimage(struct intel_context *intel, GLint x, GLint y, GLsizei width, GLsizei height) { struct gl_context *ctx = &intel->ctx; - const struct intel_region *src = get_teximage_source(intel, internalFormat); + struct intel_renderbuffer *irb; + bool copy_supported_with_alpha_override = false; + + intel_prepare_render(intel); - if (!intelImage->mt || !src || !src->buffer) { + irb = get_teximage_readbuffer(intel, internalFormat); + if (!intelImage->mt || !irb || !irb->region) { if (unlikely(INTEL_DEBUG & DEBUG_FALLBACKS)) fprintf(stderr, "%s fail %p %p (0x%08x)\n", - __FUNCTION__, intelImage->mt, src, internalFormat); + __FUNCTION__, intelImage->mt, irb, internalFormat); return GL_FALSE; } - if (intelImage->mt->cpp != src->cpp) { - fallback_debug("%s fail %d vs %d cpp\n", - __FUNCTION__, intelImage->mt->cpp, src->cpp); + if (irb->Base.Format == MESA_FORMAT_XRGB8888 && + intelImage->base.TexFormat == MESA_FORMAT_ARGB8888) { + copy_supported_with_alpha_override = true; + } + + if (intelImage->base.TexFormat != irb->Base.Format && + !copy_supported_with_alpha_override) { + if (unlikely(INTEL_DEBUG & DEBUG_FALLBACKS)) + fprintf(stderr, "%s mismatched formats %s, %s\n", + __FUNCTION__, + _mesa_get_format_name(intelImage->base.TexFormat), + _mesa_get_format_name(irb->Base.Format)); return GL_FALSE; } - /* intel_flush(ctx); */ - intel_prepare_render(intel); { drm_intel_bo *dst_bo = intel_region_buffer(intel, intelImage->mt->region, @@ -141,24 +127,24 @@ do_copy_texsubimage(struct intel_context *intel, if (ctx->ReadBuffer->Name == 0) { /* Flip vertical orientation for system framebuffers */ y = ctx->ReadBuffer->Height - (y + height); - src_pitch = -src->pitch; + src_pitch = -irb->region->pitch; } else { /* reading from a FBO, y is already oriented the way we like */ - src_pitch = src->pitch; + src_pitch = irb->region->pitch; } /* blit from src buffer to texture */ if (!intelEmitCopyBlit(intel, intelImage->mt->cpp, src_pitch, - src->buffer, + irb->region->buffer, 0, - src->tiling, + irb->region->tiling, intelImage->mt->region->pitch, dst_bo, 0, intelImage->mt->region->tiling, - src->draw_x + x, src->draw_y + y, + irb->region->draw_x + x, irb->region->draw_y + y, image_x + dstx, image_y + dsty, width, height, GL_COPY)) { @@ -166,6 +152,9 @@ do_copy_texsubimage(struct intel_context *intel, } } + if (copy_supported_with_alpha_override) + intel_set_teximage_alpha_to_one(ctx, intelImage); + return GL_TRUE; } diff --git a/src/mesa/drivers/dri/intel/intel_tex_format.c b/src/mesa/drivers/dri/intel/intel_tex_format.c index 9d73a2fb375..c9763c9ae16 100644 --- a/src/mesa/drivers/dri/intel/intel_tex_format.c +++ b/src/mesa/drivers/dri/intel/intel_tex_format.c @@ -4,6 +4,39 @@ #include "main/formats.h" /** + * Returns the renderbuffer DataType for a MESA_FORMAT. + */ +GLenum +intel_mesa_format_to_rb_datatype(gl_format format) +{ + switch (format) { + case MESA_FORMAT_ARGB8888: + case MESA_FORMAT_XRGB8888: + case MESA_FORMAT_SARGB8: + case MESA_FORMAT_R8: + case MESA_FORMAT_RG88: + case MESA_FORMAT_A8: + case MESA_FORMAT_AL88: + case MESA_FORMAT_RGB565: + case MESA_FORMAT_ARGB1555: + case MESA_FORMAT_ARGB4444: + return GL_UNSIGNED_BYTE; + case MESA_FORMAT_R16: + case MESA_FORMAT_RG1616: + case MESA_FORMAT_Z16: + return GL_UNSIGNED_SHORT; + case MESA_FORMAT_X8_Z24: + return GL_UNSIGNED_INT; + case MESA_FORMAT_S8_Z24: + return GL_UNSIGNED_INT_24_8_EXT; + default: + _mesa_problem(NULL, "unexpected MESA_FORMAT for renderbuffer"); + return GL_UNSIGNED_BYTE; + } +} + + +/** * Choose hardware texture format given the user's glTexImage parameters. * * It works out that this function is fine for all the supported @@ -204,11 +237,13 @@ intelChooseTextureFormat(struct gl_context * ctx, GLint internalFormat, * { R, G, 1.0, 1.0 } from a red-green texture would be useful. */ case GL_RED: + case GL_COMPRESSED_RED: case GL_R8: return MESA_FORMAT_R8; case GL_R16: return MESA_FORMAT_R16; case GL_RG: + case GL_COMPRESSED_RG: case GL_RG8: return MESA_FORMAT_RG88; case GL_RG16: diff --git a/src/mesa/drivers/dri/intel/intel_tex_image.c b/src/mesa/drivers/dri/intel/intel_tex_image.c index 50fe9bd9f33..41cdbfd2cbd 100644 --- a/src/mesa/drivers/dri/intel/intel_tex_image.c +++ b/src/mesa/drivers/dri/intel/intel_tex_image.c @@ -682,6 +682,7 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, struct gl_texture_object *texObj; struct gl_texture_image *texImage; int level = 0, internalFormat; + gl_format texFormat; texObj = _mesa_get_current_tex_object(ctx, target); intelObj = intel_texture_object(texObj); @@ -700,10 +701,14 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, if (rb->region == NULL) return; - if (texture_format == __DRI_TEXTURE_FORMAT_RGB) + if (texture_format == __DRI_TEXTURE_FORMAT_RGB) { internalFormat = GL_RGB; - else + texFormat = MESA_FORMAT_XRGB8888; + } + else { internalFormat = GL_RGBA; + texFormat = MESA_FORMAT_ARGB8888; + } mt = intel_miptree_create_for_region(intel, target, internalFormat, @@ -724,16 +729,13 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, intel_miptree_release(intel, &intelObj->mt); intelObj->mt = mt; + _mesa_init_teximage_fields(&intel->ctx, target, texImage, rb->region->width, rb->region->height, 1, - 0, internalFormat); + 0, internalFormat, texFormat); intelImage->face = target_to_face(target); intelImage->level = level; - if (texture_format == __DRI_TEXTURE_FORMAT_RGB) - texImage->TexFormat = MESA_FORMAT_XRGB8888; - else - texImage->TexFormat = MESA_FORMAT_ARGB8888; texImage->RowStride = rb->region->pitch; intel_miptree_reference(&intelImage->mt, intelObj->mt); @@ -789,11 +791,10 @@ intel_image_target_texture_2d(struct gl_context *ctx, GLenum target, intelObj->mt = mt; _mesa_init_teximage_fields(&intel->ctx, target, texImage, image->region->width, image->region->height, 1, - 0, image->internal_format); + 0, image->internal_format, image->format); intelImage->face = target_to_face(target); intelImage->level = 0; - texImage->TexFormat = image->format; texImage->RowStride = image->region->pitch; intel_miptree_reference(&intelImage->mt, intelObj->mt); diff --git a/src/mesa/drivers/dri/nouveau/nouveau_class.h b/src/mesa/drivers/dri/nouveau/nouveau_class.h deleted file mode 100644 index 687b847797b..00000000000 --- a/src/mesa/drivers/dri/nouveau/nouveau_class.h +++ /dev/null @@ -1,4961 +0,0 @@ -/************************************************************************* - - Autogenerated file, do not edit ! - - This file was generated by renouveau-gen from renouveau.xml, the - XML database of nvidia objects and methods. renouveau-gen and - renouveau.xml can be found in CVS module renouveau of sourceforge.net - project nouveau: - -cvs -z3 -d:pserver:[email protected]:/cvsroot/nouveau co -P renouveau - -************************************************************************** - - Copyright (C) 2006-2008 : - Dmitry Baryshkov, - Laurent Carlier, - Matthieu Castet, - Dawid Gajownik, - Jeremy Kolb, - Stephane Loeuillet, - Patrice Mandin, - Stephane Marchesin, - Serge Martin, - Sylvain Munaut, - Simon Raffeiner, - Ben Skeggs, - Erik Waling, - koala_br, - -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 NOUVEAU_REG_H -#define NOUVEAU_REG_H 1 - - -#define NV01_ROOT 0x00000001 - - - -#define NV01_CONTEXT_DMA 0x00000002 - - - -#define NV01_DEVICE 0x00000003 - - - -#define NV01_TIMER 0x00000004 - -#define NV01_TIMER_SYNCHRONIZE 0x00000100 -#define NV01_TIMER_STOP_ALARM 0x00000104 -#define NV01_TIMER_DMA_NOTIFY 0x00000180 -#define NV01_TIMER_TIME(x) (0x00000300+((x)*4)) -#define NV01_TIMER_TIME__SIZE 0x00000002 -#define NV01_TIMER_ALARM_NOTIFY 0x00000308 - - -#define NV01_CONTEXT_BETA1 0x00000012 - -#define NV01_CONTEXT_BETA1_NOP 0x00000100 -#define NV01_CONTEXT_BETA1_NOTIFY 0x00000104 -#define NV01_CONTEXT_BETA1_DMA_NOTIFY 0x00000180 -#define NV01_CONTEXT_BETA1_BETA_1D31 0x00000300 - - -#define NV01_CONTEXT_COLOR_KEY 0x00000017 - -#define NV01_CONTEXT_COLOR_KEY_NOP 0x00000100 -#define NV01_CONTEXT_COLOR_KEY_NOTIFY 0x00000104 -#define NV01_CONTEXT_COLOR_KEY_DMA_NOTIFY 0x00000180 -#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT 0x00000300 -#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_X16A8Y8 0x00000001 -#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_X24Y8 0x00000002 -#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_X16A1R5G5B5 0x00000003 -#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_X17R5G5B5 0x00000004 -#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_A8R8G8B8 0x00000005 -#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_X8R8G8B8 0x00000006 -#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_A16Y16 0x00000007 -#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_X16Y16 0x00000008 -#define NV01_CONTEXT_COLOR_KEY_COLOR 0x00000304 - - -#define NV04_CONTEXT_COLOR_KEY 0x00000057 - - - -#define NV01_CONTEXT_PATTERN 0x00000018 - -#define NV01_CONTEXT_PATTERN_NOP 0x00000100 -#define NV01_CONTEXT_PATTERN_NOTIFY 0x00000104 -#define NV01_CONTEXT_PATTERN_DMA_NOTIFY 0x00000180 -#define NV01_CONTEXT_PATTERN_COLOR_FORMAT 0x00000300 -#define NV01_CONTEXT_PATTERN_MONOCHROME_FORMAT 0x00000304 -#define NV01_CONTEXT_PATTERN_SHAPE 0x00000308 -#define NV01_CONTEXT_PATTERN_COLOR(x) (0x00000310+((x)*4)) -#define NV01_CONTEXT_PATTERN_COLOR__SIZE 0x00000002 -#define NV01_CONTEXT_PATTERN_PATTERN(x) (0x00000318+((x)*4)) -#define NV01_CONTEXT_PATTERN_PATTERN__SIZE 0x00000002 - - -#define NV01_CONTEXT_CLIP_RECTANGLE 0x00000019 - -#define NV01_CONTEXT_CLIP_RECTANGLE_NOP 0x00000100 -#define NV01_CONTEXT_CLIP_RECTANGLE_NOTIFY 0x00000104 -#define NV01_CONTEXT_CLIP_RECTANGLE_DMA_NOTIFY 0x00000180 -#define NV01_CONTEXT_CLIP_RECTANGLE_POINT 0x00000300 -#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_X_SHIFT 0 -#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_X_MASK 0x0000ffff -#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_Y_SHIFT 16 -#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_Y_MASK 0xffff0000 -#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE 0x00000304 -#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_W_SHIFT 0 -#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_W_MASK 0x0000ffff -#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_H_SHIFT 16 -#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_H_MASK 0xffff0000 - - -#define NV01_RENDER_SOLID_LINE 0x0000001c - -#define NV01_RENDER_SOLID_LINE_NOP 0x00000100 -#define NV01_RENDER_SOLID_LINE_NOTIFY 0x00000104 -#define NV01_RENDER_SOLID_LINE_PATCH 0x0000010c -#define NV01_RENDER_SOLID_LINE_DMA_NOTIFY 0x00000180 -#define NV01_RENDER_SOLID_LINE_CLIP_RECTANGLE 0x00000184 -#define NV01_RENDER_SOLID_LINE_PATTERN 0x00000188 -#define NV01_RENDER_SOLID_LINE_ROP 0x0000018c -#define NV01_RENDER_SOLID_LINE_BETA1 0x00000190 -#define NV01_RENDER_SOLID_LINE_SURFACE 0x00000194 -#define NV01_RENDER_SOLID_LINE_OPERATION 0x000002fc -#define NV01_RENDER_SOLID_LINE_OPERATION_SRCCOPY_AND 0x00000000 -#define NV01_RENDER_SOLID_LINE_OPERATION_ROP_AND 0x00000001 -#define NV01_RENDER_SOLID_LINE_OPERATION_BLEND_AND 0x00000002 -#define NV01_RENDER_SOLID_LINE_OPERATION_SRCCOPY 0x00000003 -#define NV01_RENDER_SOLID_LINE_OPERATION_SRCCOPY_PREMULT 0x00000004 -#define NV01_RENDER_SOLID_LINE_OPERATION_BLEND_PREMULT 0x00000005 -#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT 0x00000300 -#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_X16A8Y8 0x00000001 -#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_X24Y8 0x00000002 -#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_X16A1R5G5B5 0x00000003 -#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_X17R5G5B5 0x00000004 -#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_A8R8G8B8 0x00000005 -#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_X8R8G8B8 0x00000006 -#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_A16Y16 0x00000007 -#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_X16Y16 0x00000008 -#define NV01_RENDER_SOLID_LINE_COLOR 0x00000304 -#define NV01_RENDER_SOLID_LINE_LINE_POINT0(x) (0x00000400+((x)*8)) -#define NV01_RENDER_SOLID_LINE_LINE_POINT0__SIZE 0x00000010 -#define NV01_RENDER_SOLID_LINE_LINE_POINT0_X_SHIFT 0 -#define NV01_RENDER_SOLID_LINE_LINE_POINT0_X_MASK 0x0000ffff -#define NV01_RENDER_SOLID_LINE_LINE_POINT0_Y_SHIFT 16 -#define NV01_RENDER_SOLID_LINE_LINE_POINT0_Y_MASK 0xffff0000 -#define NV01_RENDER_SOLID_LINE_LINE_POINT1(x) (0x00000404+((x)*8)) -#define NV01_RENDER_SOLID_LINE_LINE_POINT1__SIZE 0x00000010 -#define NV01_RENDER_SOLID_LINE_LINE_POINT1_X_SHIFT 0 -#define NV01_RENDER_SOLID_LINE_LINE_POINT1_X_MASK 0x0000ffff -#define NV01_RENDER_SOLID_LINE_LINE_POINT1_Y_SHIFT 16 -#define NV01_RENDER_SOLID_LINE_LINE_POINT1_Y_MASK 0xffff0000 -#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_X(x) (0x00000480+((x)*16)) -#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_X__SIZE 0x00000010 -#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_Y(x) (0x00000484+((x)*16)) -#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_Y__SIZE 0x00000010 -#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_X(x) (0x00000488+((x)*16)) -#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_X__SIZE 0x00000010 -#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_Y(x) (0x0000048c+((x)*16)) -#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_Y__SIZE 0x00000010 -#define NV01_RENDER_SOLID_LINE_POLYLINE(x) (0x00000500+((x)*4)) -#define NV01_RENDER_SOLID_LINE_POLYLINE__SIZE 0x00000020 -#define NV01_RENDER_SOLID_LINE_POLYLINE_X_SHIFT 0 -#define NV01_RENDER_SOLID_LINE_POLYLINE_X_MASK 0x0000ffff -#define NV01_RENDER_SOLID_LINE_POLYLINE_Y_SHIFT 16 -#define NV01_RENDER_SOLID_LINE_POLYLINE_Y_MASK 0xffff0000 -#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_X(x) (0x00000580+((x)*8)) -#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_X__SIZE 0x00000010 -#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_Y(x) (0x00000584+((x)*8)) -#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_Y__SIZE 0x00000010 -#define NV01_RENDER_SOLID_LINE_CPOLYLINE_COLOR(x) (0x00000600+((x)*8)) -#define NV01_RENDER_SOLID_LINE_CPOLYLINE_COLOR__SIZE 0x00000010 -#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT(x) (0x00000604+((x)*8)) -#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT__SIZE 0x00000010 -#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_X_SHIFT 0 -#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_X_MASK 0x0000ffff -#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_Y_SHIFT 16 -#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_Y_MASK 0xffff0000 - - -#define NV04_RENDER_SOLID_LINE 0x0000005c - -#define NV04_RENDER_SOLID_LINE_BETA4 0x00000194 -#define NV04_RENDER_SOLID_LINE_SURFACE 0x00000198 - - -#define NV01_RENDER_SOLID_TRIANGLE 0x0000001d - -#define NV01_RENDER_SOLID_TRIANGLE_NOP 0x00000100 -#define NV01_RENDER_SOLID_TRIANGLE_NOTIFY 0x00000104 -#define NV01_RENDER_SOLID_TRIANGLE_PATCH 0x0000010c -#define NV01_RENDER_SOLID_TRIANGLE_DMA_NOTIFY 0x00000180 -#define NV01_RENDER_SOLID_TRIANGLE_CLIP_RECTANGLE 0x00000184 -#define NV01_RENDER_SOLID_TRIANGLE_PATTERN 0x00000188 -#define NV01_RENDER_SOLID_TRIANGLE_ROP 0x0000018c -#define NV01_RENDER_SOLID_TRIANGLE_BETA1 0x00000190 -#define NV01_RENDER_SOLID_TRIANGLE_SURFACE 0x00000194 -#define NV01_RENDER_SOLID_TRIANGLE_OPERATION 0x000002fc -#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_SRCCOPY_AND 0x00000000 -#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_ROP_AND 0x00000001 -#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_BLEND_AND 0x00000002 -#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_SRCCOPY 0x00000003 -#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_SRCCOPY_PREMULT 0x00000004 -#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_BLEND_PREMULT 0x00000005 -#define NV01_RENDER_SOLID_TRIANGLE_COLOR_FORMAT 0x00000300 -#define NV01_RENDER_SOLID_TRIANGLE_COLOR 0x00000304 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0 0x00000310 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_X_SHIFT 0 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_X_MASK 0x0000ffff -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_Y_SHIFT 16 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_Y_MASK 0xffff0000 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1 0x00000314 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_X_SHIFT 0 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_X_MASK 0x0000ffff -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_Y_SHIFT 16 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_Y_MASK 0xffff0000 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2 0x00000318 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_X_SHIFT 0 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_X_MASK 0x0000ffff -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_Y_SHIFT 16 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_Y_MASK 0xffff0000 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT0_X 0x00000320 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT0_Y 0x00000324 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT1_X 0x00000328 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT1_Y 0x0000032c -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT2_X 0x00000330 -#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT2_Y 0x00000334 -#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH(x) (0x00000400+((x)*4)) -#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH__SIZE 0x00000020 -#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_X_SHIFT 0 -#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_X_MASK 0x0000ffff -#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_Y_SHIFT 16 -#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_Y_MASK 0xffff0000 -#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_X(x) (0x00000480+((x)*8)) -#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_X__SIZE 0x00000010 -#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_Y(x) (0x00000484+((x)*8)) -#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_Y__SIZE 0x00000010 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_COLOR(x) (0x00000500+((x)*16)) -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_COLOR__SIZE 0x00000008 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0(x) (0x00000504+((x)*16)) -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0__SIZE 0x00000008 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_X_SHIFT 0 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_X_MASK 0x0000ffff -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_Y_SHIFT 16 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_Y_MASK 0xffff0000 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1(x) (0x00000508+((x)*16)) -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1__SIZE 0x00000008 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_X_SHIFT 0 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_X_MASK 0x0000ffff -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_Y_SHIFT 16 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_Y_MASK 0xffff0000 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2(x) (0x0000050c+((x)*16)) -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2__SIZE 0x00000008 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_X_SHIFT 0 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_X_MASK 0x0000ffff -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_Y_SHIFT 16 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_Y_MASK 0xffff0000 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_COLOR(x) (0x00000580+((x)*8)) -#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_COLOR__SIZE 0x00000010 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT(x) (0x00000584+((x)*8)) -#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT__SIZE 0x00000010 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_X_SHIFT 0 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_X_MASK 0x0000ffff -#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_Y_SHIFT 16 -#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_Y_MASK 0xffff0000 - - -#define NV04_RENDER_SOLID_TRIANGLE 0x0000005d - -#define NV04_RENDER_SOLID_TRIANGLE_BETA4 0x00000194 -#define NV04_RENDER_SOLID_TRIANGLE_SURFACE 0x00000198 - - -#define NV01_RENDER_SOLID_RECTANGLE 0x0000001e - -#define NV01_RENDER_SOLID_RECTANGLE_NOP 0x00000100 -#define NV01_RENDER_SOLID_RECTANGLE_NOTIFY 0x00000104 -#define NV01_RENDER_SOLID_RECTANGLE_PATCH 0x0000010c -#define NV01_RENDER_SOLID_RECTANGLE_DMA_NOTIFY 0x00000180 -#define NV01_RENDER_SOLID_RECTANGLE_CLIP_RECTANGLE 0x00000184 -#define NV01_RENDER_SOLID_RECTANGLE_PATTERN 0x00000188 -#define NV01_RENDER_SOLID_RECTANGLE_ROP 0x0000018c -#define NV01_RENDER_SOLID_RECTANGLE_BETA1 0x00000190 -#define NV01_RENDER_SOLID_RECTANGLE_SURFACE 0x00000194 -#define NV01_RENDER_SOLID_RECTANGLE_OPERATION 0x000002fc -#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_SRCCOPY_AND 0x00000000 -#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_ROP_AND 0x00000001 -#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_BLEND_AND 0x00000002 -#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_SRCCOPY 0x00000003 -#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_SRCCOPY_PREMULT 0x00000004 -#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_BLEND_PREMULT 0x00000005 -#define NV01_RENDER_SOLID_RECTANGLE_COLOR_FORMAT 0x00000300 -#define NV01_RENDER_SOLID_RECTANGLE_COLOR 0x00000304 -#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT(x) (0x00000400+((x)*8)) -#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT__SIZE 0x00000010 -#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_X_SHIFT 0 -#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_X_MASK 0x0000ffff -#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_Y_SHIFT 16 -#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_Y_MASK 0xffff0000 -#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE(x) (0x00000404+((x)*8)) -#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE__SIZE 0x00000010 -#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_W_SHIFT 0 -#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_W_MASK 0x0000ffff -#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_H_SHIFT 16 -#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_H_MASK 0xffff0000 - - -#define NV04_RENDER_SOLID_RECTANGLE 0x0000005e - -#define NV04_RENDER_SOLID_RECTANGLE_BETA4 0x00000194 -#define NV04_RENDER_SOLID_RECTANGLE_SURFACE 0x00000198 - - -#define NV01_IMAGE_BLIT 0x0000001f - -#define NV01_IMAGE_BLIT_NOP 0x00000100 -#define NV01_IMAGE_BLIT_NOTIFY 0x00000104 -#define NV01_IMAGE_BLIT_PATCH 0x0000010c -#define NV01_IMAGE_BLIT_DMA_NOTIFY 0x00000180 -#define NV01_IMAGE_BLIT_COLOR_KEY 0x00000184 -#define NV01_IMAGE_BLIT_CLIP_RECTANGLE 0x00000188 -#define NV01_IMAGE_BLIT_PATTERN 0x0000018c -#define NV01_IMAGE_BLIT_ROP 0x00000190 -#define NV01_IMAGE_BLIT_BETA1 0x00000194 -#define NV01_IMAGE_BLIT_SURFACE 0x0000019c -#define NV01_IMAGE_BLIT_OPERATION 0x000002fc -#define NV01_IMAGE_BLIT_OPERATION_SRCCOPY_AND 0x00000000 -#define NV01_IMAGE_BLIT_OPERATION_ROP_AND 0x00000001 -#define NV01_IMAGE_BLIT_OPERATION_BLEND_AND 0x00000002 -#define NV01_IMAGE_BLIT_OPERATION_SRCCOPY 0x00000003 -#define NV01_IMAGE_BLIT_OPERATION_SRCCOPY_PREMULT 0x00000004 -#define NV01_IMAGE_BLIT_OPERATION_BLEND_PREMULT 0x00000005 -#define NV01_IMAGE_BLIT_IMAGE_INPUT 0x00000204 -#define NV01_IMAGE_BLIT_POINT_IN 0x00000300 -#define NV01_IMAGE_BLIT_POINT_IN_X_SHIFT 0 -#define NV01_IMAGE_BLIT_POINT_IN_X_MASK 0x0000ffff -#define NV01_IMAGE_BLIT_POINT_IN_Y_SHIFT 16 -#define NV01_IMAGE_BLIT_POINT_IN_Y_MASK 0xffff0000 -#define NV01_IMAGE_BLIT_POINT_OUT 0x00000304 -#define NV01_IMAGE_BLIT_POINT_OUT_X_SHIFT 0 -#define NV01_IMAGE_BLIT_POINT_OUT_X_MASK 0x0000ffff -#define NV01_IMAGE_BLIT_POINT_OUT_Y_SHIFT 16 -#define NV01_IMAGE_BLIT_POINT_OUT_Y_MASK 0xffff0000 -#define NV01_IMAGE_BLIT_SIZE 0x00000308 -#define NV01_IMAGE_BLIT_SIZE_W_SHIFT 0 -#define NV01_IMAGE_BLIT_SIZE_W_MASK 0x0000ffff -#define NV01_IMAGE_BLIT_SIZE_H_SHIFT 16 -#define NV01_IMAGE_BLIT_SIZE_H_MASK 0xffff0000 - - -#define NV04_IMAGE_BLIT 0x0000005f - -#define NV04_IMAGE_BLIT_ROP 0x00000190 -#define NV04_IMAGE_BLIT_BETA4 0x00000198 -#define NV04_IMAGE_BLIT_SURFACE 0x0000019c - - -#define NV12_IMAGE_BLIT 0x0000009f - -#define NV12_IMAGE_BLIT_WAIT_FOR_IDLE 0x00000108 - - -#define NV01_IMAGE_FROM_CPU 0x00000021 - -#define NV01_IMAGE_FROM_CPU_NOP 0x00000100 -#define NV01_IMAGE_FROM_CPU_NOTIFY 0x00000104 -#define NV01_IMAGE_FROM_CPU_PATCH 0x0000010c -#define NV01_IMAGE_FROM_CPU_DMA_NOTIFY 0x00000180 -#define NV01_IMAGE_FROM_CPU_COLOR_KEY 0x00000184 -#define NV01_IMAGE_FROM_CPU_CLIP_RECTANGLE 0x00000188 -#define NV01_IMAGE_FROM_CPU_PATTERN 0x0000018c -#define NV01_IMAGE_FROM_CPU_ROP 0x00000190 -#define NV01_IMAGE_FROM_CPU_BETA1 0x00000194 -#define NV01_IMAGE_FROM_CPU_SURFACE 0x00000198 -#define NV01_IMAGE_FROM_CPU_OPERATION 0x000002fc -#define NV01_IMAGE_FROM_CPU_OPERATION_SRCCOPY_AND 0x00000000 -#define NV01_IMAGE_FROM_CPU_OPERATION_ROP_AND 0x00000001 -#define NV01_IMAGE_FROM_CPU_OPERATION_BLEND_AND 0x00000002 -#define NV01_IMAGE_FROM_CPU_OPERATION_SRCCOPY 0x00000003 -#define NV01_IMAGE_FROM_CPU_OPERATION_SRCCOPY_PREMULT 0x00000004 -#define NV01_IMAGE_FROM_CPU_OPERATION_BLEND_PREMULT 0x00000005 -#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT 0x00000300 -#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_Y8 0x00000001 -#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_A1R5G5B5 0x00000002 -#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_X1R5G5B5 0x00000003 -#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_A8R8G8B8 0x00000004 -#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_X8R8G8B8 0x00000005 -#define NV01_IMAGE_FROM_CPU_POINT 0x00000304 -#define NV01_IMAGE_FROM_CPU_POINT_X_SHIFT 0 -#define NV01_IMAGE_FROM_CPU_POINT_X_MASK 0x0000ffff -#define NV01_IMAGE_FROM_CPU_POINT_Y_SHIFT 16 -#define NV01_IMAGE_FROM_CPU_POINT_Y_MASK 0xffff0000 -#define NV01_IMAGE_FROM_CPU_SIZE_OUT 0x00000308 -#define NV01_IMAGE_FROM_CPU_SIZE_OUT_W_SHIFT 0 -#define NV01_IMAGE_FROM_CPU_SIZE_OUT_W_MASK 0x0000ffff -#define NV01_IMAGE_FROM_CPU_SIZE_OUT_H_SHIFT 16 -#define NV01_IMAGE_FROM_CPU_SIZE_OUT_H_MASK 0xffff0000 -#define NV01_IMAGE_FROM_CPU_SIZE_IN 0x0000030c -#define NV01_IMAGE_FROM_CPU_SIZE_IN_W_SHIFT 0 -#define NV01_IMAGE_FROM_CPU_SIZE_IN_W_MASK 0x0000ffff -#define NV01_IMAGE_FROM_CPU_SIZE_IN_H_SHIFT 16 -#define NV01_IMAGE_FROM_CPU_SIZE_IN_H_MASK 0xffff0000 -#define NV01_IMAGE_FROM_CPU_COLOR(x) (0x00000400+((x)*4)) -#define NV01_IMAGE_FROM_CPU_COLOR__SIZE 0x00000020 - - -#define NV04_IMAGE_FROM_CPU 0x00000061 - -#define NV04_IMAGE_FROM_CPU_BETA4 0x00000198 -#define NV04_IMAGE_FROM_CPU_SURFACE 0x0000019c - - -#define NV05_IMAGE_FROM_CPU 0x00000065 - -#define NV05_IMAGE_FROM_CPU_COLOR_CONVERSION 0x000002f8 - - -#define NV10_IMAGE_FROM_CPU 0x0000008a - -#define NV10_IMAGE_FROM_CPU_WAIT_FOR_IDLE 0x00000108 - - -#define NV30_IMAGE_FROM_CPU 0x0000038a - - - -#define NV40_IMAGE_FROM_CPU 0x0000308a - - - -#define NV01_NULL 0x00000030 - - - -#define NV03_STRETCHED_IMAGE_FROM_CPU 0x00000036 - -#define NV03_STRETCHED_IMAGE_FROM_CPU_NOP 0x00000100 -#define NV03_STRETCHED_IMAGE_FROM_CPU_NOTIFY 0x00000104 -#define NV03_STRETCHED_IMAGE_FROM_CPU_PATCH 0x0000010c -#define NV03_STRETCHED_IMAGE_FROM_CPU_DMA_NOTIFY 0x00000180 -#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR_KEY 0x00000184 -#define NV03_STRETCHED_IMAGE_FROM_CPU_PATTERN 0x00000188 -#define NV03_STRETCHED_IMAGE_FROM_CPU_ROP 0x0000018c -#define NV03_STRETCHED_IMAGE_FROM_CPU_BETA1 0x00000190 -#define NV03_STRETCHED_IMAGE_FROM_CPU_SURFACE 0x00000194 -#define NV03_STRETCHED_IMAGE_FROM_CPU_OPERATION 0x000002fc -#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR_FORMAT 0x00000300 -#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN 0x00000304 -#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_W_SHIFT 0 -#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_W_MASK 0x0000ffff -#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_H_SHIFT 16 -#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_H_MASK 0xffff0000 -#define NV03_STRETCHED_IMAGE_FROM_CPU_DX_DU 0x00000308 -#define NV03_STRETCHED_IMAGE_FROM_CPU_DY_DV 0x0000030c -#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT 0x00000310 -#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_X_SHIFT 0 -#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_X_MASK 0x0000ffff -#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_Y_SHIFT 16 -#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_Y_MASK 0xffff0000 -#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE 0x00000314 -#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_W_SHIFT 0 -#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_W_MASK 0x0000ffff -#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_H_SHIFT 16 -#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_H_MASK 0xffff0000 -#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4 0x00000318 -#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_X_SHIFT 0 -#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_X_MASK 0x0000ffff -#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_Y_SHIFT 16 -#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_Y_MASK 0xffff0000 -#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR(x) (0x00000400+((x)*4)) -#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR__SIZE 0x00000020 - - -#define NV04_STRETCHED_IMAGE_FROM_CPU 0x00000076 - -#define NV04_STRETCHED_IMAGE_FROM_CPU_BETA4 0x00000194 -#define NV04_STRETCHED_IMAGE_FROM_CPU_SURFACE 0x00000198 - - -#define NV05_STRETCHED_IMAGE_FROM_CPU 0x00000066 - -#define NV05_STRETCHED_IMAGE_FROM_CPU_COLOR_CONVERSION 0x000002f8 - - -#define NV30_STRETCHED_IMAGE_FROM_CPU 0x00000366 - - - -#define NV40_STRETCHED_IMAGE_FROM_CPU 0x00003066 - - - -#define NV03_SCALED_IMAGE_FROM_MEMORY 0x00000037 - -#define NV03_SCALED_IMAGE_FROM_MEMORY_NOP 0x00000100 -#define NV03_SCALED_IMAGE_FROM_MEMORY_NOTIFY 0x00000104 -#define NV03_SCALED_IMAGE_FROM_MEMORY_DMA_NOTIFY 0x00000180 -#define NV03_SCALED_IMAGE_FROM_MEMORY_DMA_IMAGE 0x00000184 -#define NV03_SCALED_IMAGE_FROM_MEMORY_PATTERN 0x00000188 -#define NV03_SCALED_IMAGE_FROM_MEMORY_ROP 0x0000018c -#define NV03_SCALED_IMAGE_FROM_MEMORY_BETA1 0x00000190 -#define NV03_SCALED_IMAGE_FROM_MEMORY_SURFACE 0x00000194 -#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT 0x00000300 -#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_A1R5G5B5 0x00000001 -#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_X1R5G5B5 0x00000002 -#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_A8R8G8B8 0x00000003 -#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_X8R8G8B8 0x00000004 -#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_V8YB8U8YA8 0x00000005 -#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_YB8V8YA8U8 0x00000006 -#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_R5G6B5 0x00000007 -#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_Y8 0x00000008 -#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_AY8 0x00000009 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION 0x00000304 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_SRCCOPY_AND 0x00000000 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_ROP_AND 0x00000001 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_BLEND_AND 0x00000002 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_SRCCOPY 0x00000003 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_SRCCOPY_PREMULT 0x00000004 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_BLEND_PREMULT 0x00000005 -#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT 0x00000308 -#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_X_SHIFT 0 -#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_X_MASK 0x0000ffff -#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_Y_SHIFT 16 -#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_Y_MASK 0xffff0000 -#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE 0x0000030c -#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_W_SHIFT 0 -#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_W_MASK 0x0000ffff -#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_H_SHIFT 16 -#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_H_MASK 0xffff0000 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT 0x00000310 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_X_SHIFT 0 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_X_MASK 0x0000ffff -#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_Y_SHIFT 16 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_Y_MASK 0xffff0000 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE 0x00000314 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_W_SHIFT 0 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_W_MASK 0x0000ffff -#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_H_SHIFT 16 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_H_MASK 0xffff0000 -#define NV03_SCALED_IMAGE_FROM_MEMORY_DU_DX 0x00000318 -#define NV03_SCALED_IMAGE_FROM_MEMORY_DV_DY 0x0000031c -#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE 0x00000400 -#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_W_SHIFT 0 -#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_W_MASK 0x0000ffff -#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_H_SHIFT 16 -#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_H_MASK 0xffff0000 -#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT 0x00000404 -#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_PITCH_SHIFT 0 -#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_PITCH_MASK 0x0000ffff -#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN_SHIFT 16 -#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN_MASK 0x00ff0000 -#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN_CENTER 0x00010000 -#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN_CORNER 0x00020000 -#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER_SHIFT 24 -#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER_MASK 0xff000000 -#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER_POINT_SAMPLE 0x00000000 -#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER_BILINEAR 0x01000000 -#define NV03_SCALED_IMAGE_FROM_MEMORY_OFFSET 0x00000408 -#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT 0x0000040c -#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_U_SHIFT 0 -#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_U_MASK 0x0000ffff -#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_V_SHIFT 16 -#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_V_MASK 0xffff0000 - - -#define NV04_SCALED_IMAGE_FROM_MEMORY 0x00000077 - -#define NV04_SCALED_IMAGE_FROM_MEMORY_BETA4 0x00000194 -#define NV04_SCALED_IMAGE_FROM_MEMORY_SURFACE 0x00000198 - - -#define NV05_SCALED_IMAGE_FROM_MEMORY 0x00000063 - -#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION 0x000002fc -#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION_DITHER 0x00000000 -#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION_TRUNCATE 0x00000001 -#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION_SUBTR_TRUNCATE 0x00000002 - - -#define NV10_SCALED_IMAGE_FROM_MEMORY 0x00000089 - -#define NV10_SCALED_IMAGE_FROM_MEMORY_WAIT_FOR_IDLE 0x00000108 - - -#define NV30_SCALED_IMAGE_FROM_MEMORY 0x00000389 - - - -#define NV40_SCALED_IMAGE_FROM_MEMORY 0x00003089 - - - -#define NV04_DVD_SUBPICTURE 0x00000038 - -#define NV04_DVD_SUBPICTURE_NOP 0x00000100 -#define NV04_DVD_SUBPICTURE_NOTIFY 0x00000104 -#define NV04_DVD_SUBPICTURE_DMA_NOTIFY 0x00000180 -#define NV04_DVD_SUBPICTURE_DMA_OVERLAY 0x00000184 -#define NV04_DVD_SUBPICTURE_DMA_IMAGEIN 0x00000188 -#define NV04_DVD_SUBPICTURE_DMA_IMAGEOUT 0x0000018c -#define NV04_DVD_SUBPICTURE_IMAGEOUT_POINT 0x00000300 -#define NV04_DVD_SUBPICTURE_IMAGEOUT_POINT_X_SHIFT 0 -#define NV04_DVD_SUBPICTURE_IMAGEOUT_POINT_X_MASK 0x0000ffff -#define NV04_DVD_SUBPICTURE_IMAGEOUT_POINT_Y_SHIFT 16 -#define NV04_DVD_SUBPICTURE_IMAGEOUT_POINT_Y_MASK 0xffff0000 -#define NV04_DVD_SUBPICTURE_IMAGEOUT_SIZE 0x00000304 -#define NV04_DVD_SUBPICTURE_IMAGEOUT_SIZE_W_SHIFT 0 -#define NV04_DVD_SUBPICTURE_IMAGEOUT_SIZE_W_MASK 0x0000ffff -#define NV04_DVD_SUBPICTURE_IMAGEOUT_SIZE_H_SHIFT 16 -#define NV04_DVD_SUBPICTURE_IMAGEOUT_SIZE_H_MASK 0xffff0000 -#define NV04_DVD_SUBPICTURE_IMAGEOUT_FORMAT 0x00000308 -#define NV04_DVD_SUBPICTURE_IMAGEOUT_FORMAT_PITCH_SHIFT 0 -#define NV04_DVD_SUBPICTURE_IMAGEOUT_FORMAT_PITCH_MASK 0x0000ffff -#define NV04_DVD_SUBPICTURE_IMAGEOUT_FORMAT_COLOR_SHIFT 16 -#define NV04_DVD_SUBPICTURE_IMAGEOUT_FORMAT_COLOR_MASK 0xffff0000 -#define NV04_DVD_SUBPICTURE_IMAGEOUT_OFFSET 0x0000030c -#define NV04_DVD_SUBPICTURE_IMAGEIN_DELTA_DU_DX 0x00000310 -#define NV04_DVD_SUBPICTURE_IMAGEIN_DELTA_DV_DY 0x00000314 -#define NV04_DVD_SUBPICTURE_IMAGEIN_SIZE 0x00000318 -#define NV04_DVD_SUBPICTURE_IMAGEIN_SIZE_W_SHIFT 0 -#define NV04_DVD_SUBPICTURE_IMAGEIN_SIZE_W_MASK 0x0000ffff -#define NV04_DVD_SUBPICTURE_IMAGEIN_SIZE_H_SHIFT 16 -#define NV04_DVD_SUBPICTURE_IMAGEIN_SIZE_H_MASK 0xffff0000 -#define NV04_DVD_SUBPICTURE_IMAGEIN_FORMAT 0x0000031c -#define NV04_DVD_SUBPICTURE_IMAGEIN_FORMAT_PITCH_SHIFT 0 -#define NV04_DVD_SUBPICTURE_IMAGEIN_FORMAT_PITCH_MASK 0x0000ffff -#define NV04_DVD_SUBPICTURE_IMAGEIN_FORMAT_COLOR_SHIFT 16 -#define NV04_DVD_SUBPICTURE_IMAGEIN_FORMAT_COLOR_MASK 0xffff0000 -#define NV04_DVD_SUBPICTURE_IMAGEIN_OFFSET 0x00000320 -#define NV04_DVD_SUBPICTURE_IMAGEIN_POINT 0x00000324 -#define NV04_DVD_SUBPICTURE_IMAGEIN_POINT_U_SHIFT 0 -#define NV04_DVD_SUBPICTURE_IMAGEIN_POINT_U_MASK 0x0000ffff -#define NV04_DVD_SUBPICTURE_IMAGEIN_POINT_V_SHIFT 16 -#define NV04_DVD_SUBPICTURE_IMAGEIN_POINT_V_MASK 0xffff0000 -#define NV04_DVD_SUBPICTURE_OVERLAY_DELTA_DU_DX 0x00000328 -#define NV04_DVD_SUBPICTURE_OVERLAY_DELTA_DV_DY 0x0000032c -#define NV04_DVD_SUBPICTURE_OVERLAY_SIZE 0x00000330 -#define NV04_DVD_SUBPICTURE_OVERLAY_SIZE_W_SHIFT 0 -#define NV04_DVD_SUBPICTURE_OVERLAY_SIZE_W_MASK 0x0000ffff -#define NV04_DVD_SUBPICTURE_OVERLAY_SIZE_H_SHIFT 16 -#define NV04_DVD_SUBPICTURE_OVERLAY_SIZE_H_MASK 0xffff0000 -#define NV04_DVD_SUBPICTURE_OVERLAY_FORMAT 0x00000334 -#define NV04_DVD_SUBPICTURE_OVERLAY_FORMAT_PITCH_SHIFT 0 -#define NV04_DVD_SUBPICTURE_OVERLAY_FORMAT_PITCH_MASK 0x0000ffff -#define NV04_DVD_SUBPICTURE_OVERLAY_FORMAT_COLOR_SHIFT 16 -#define NV04_DVD_SUBPICTURE_OVERLAY_FORMAT_COLOR_MASK 0xffff0000 -#define NV04_DVD_SUBPICTURE_OVERLAY_OFFSET 0x00000338 -#define NV04_DVD_SUBPICTURE_OVERLAY_POINT 0x0000033c -#define NV04_DVD_SUBPICTURE_OVERLAY_POINT_U_SHIFT 0 -#define NV04_DVD_SUBPICTURE_OVERLAY_POINT_U_MASK 0x0000ffff -#define NV04_DVD_SUBPICTURE_OVERLAY_POINT_V_SHIFT 16 -#define NV04_DVD_SUBPICTURE_OVERLAY_POINT_V_MASK 0xffff0000 - - -#define NV10_DVD_SUBPICTURE 0x00000088 - -#define NV10_DVD_SUBPICTURE_WAIT_FOR_IDLE 0x00000108 - - -#define NV04_MEMORY_TO_MEMORY_FORMAT 0x00000039 - -#define NV04_MEMORY_TO_MEMORY_FORMAT_NOP 0x00000100 -#define NV04_MEMORY_TO_MEMORY_FORMAT_NOTIFY 0x00000104 -#define NV04_MEMORY_TO_MEMORY_FORMAT_DMA_NOTIFY 0x00000180 -#define NV04_MEMORY_TO_MEMORY_FORMAT_DMA_BUFFER_IN 0x00000184 -#define NV04_MEMORY_TO_MEMORY_FORMAT_DMA_BUFFER_OUT 0x00000188 -#define NV04_MEMORY_TO_MEMORY_FORMAT_OFFSET_IN 0x0000030c -#define NV04_MEMORY_TO_MEMORY_FORMAT_OFFSET_OUT 0x00000310 -#define NV04_MEMORY_TO_MEMORY_FORMAT_PITCH_IN 0x00000314 -#define NV04_MEMORY_TO_MEMORY_FORMAT_PITCH_OUT 0x00000318 -#define NV04_MEMORY_TO_MEMORY_FORMAT_LINE_LENGTH_IN 0x0000031c -#define NV04_MEMORY_TO_MEMORY_FORMAT_LINE_COUNT 0x00000320 -#define NV04_MEMORY_TO_MEMORY_FORMAT_FORMAT 0x00000324 -#define NV04_MEMORY_TO_MEMORY_FORMAT_FORMAT_INPUT_INC_SHIFT 0 -#define NV04_MEMORY_TO_MEMORY_FORMAT_FORMAT_INPUT_INC_MASK 0x000000ff -#define NV04_MEMORY_TO_MEMORY_FORMAT_FORMAT_OUTPUT_INC_SHIFT 8 -#define NV04_MEMORY_TO_MEMORY_FORMAT_FORMAT_OUTPUT_INC_MASK 0x0000ff00 -#define NV04_MEMORY_TO_MEMORY_FORMAT_BUF_NOTIFY 0x00000328 - - -#define NV50_MEMORY_TO_MEMORY_FORMAT 0x00005039 - -#define NV50_MEMORY_TO_MEMORY_FORMAT_SERIALIZE 0x00000110 -#define NV50_MEMORY_TO_MEMORY_FORMAT_LINEAR_IN 0x00000200 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_MODE_IN 0x00000204 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_PITCH_IN 0x00000208 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_HEIGHT_IN 0x0000020c -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_DEPTH_IN 0x00000210 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN_Z 0x00000214 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN 0x00000218 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN_X_SHIFT 0 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN_X_MASK 0x0000ffff -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN_Y_SHIFT 16 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_IN_Y_MASK 0xffff0000 -#define NV50_MEMORY_TO_MEMORY_FORMAT_LINEAR_OUT 0x0000021c -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_MODE_OUT 0x00000220 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_PITCH_OUT 0x00000224 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_HEIGHT_OUT 0x00000228 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_DEPTH_OUT 0x0000022c -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT_Z 0x00000230 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT 0x00000234 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT_X_SHIFT 0 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT_X_MASK 0x0000ffff -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT_Y_SHIFT 16 -#define NV50_MEMORY_TO_MEMORY_FORMAT_TILING_POSITION_OUT_Y_MASK 0xffff0000 -#define NV50_MEMORY_TO_MEMORY_FORMAT_OFFSET_IN_HIGH 0x00000238 -#define NV50_MEMORY_TO_MEMORY_FORMAT_OFFSET_OUT_HIGH 0x0000023c - - -#define NV01_MEMORY_LOCAL_BANKED 0x0000003d - - - -#define NV01_MAPPING_SYSTEM 0x0000003e - - - -#define NV03_MEMORY_LOCAL_CURSOR 0x0000003f - - - -#define NV01_MEMORY_LOCAL_LINEAR 0x00000040 - - - -#define NV01_MAPPING_LOCAL 0x00000041 - - - -#define NV04_CONTEXT_SURFACES_2D 0x00000042 - -#define NV04_CONTEXT_SURFACES_2D_NOP 0x00000100 -#define NV04_CONTEXT_SURFACES_2D_NOTIFY 0x00000104 -#define NV04_CONTEXT_SURFACES_2D_PM_TRIGGER 0x00000140 -#define NV04_CONTEXT_SURFACES_2D_DMA_NOTIFY 0x00000180 -#define NV04_CONTEXT_SURFACES_2D_DMA_IMAGE_SOURCE 0x00000184 -#define NV04_CONTEXT_SURFACES_2D_DMA_IMAGE_DESTIN 0x00000188 -#define NV04_CONTEXT_SURFACES_2D_FORMAT 0x00000300 -#define NV04_CONTEXT_SURFACES_2D_FORMAT_Y8 0x00000001 -#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1R5G5B5_Z1R5G5B5 0x00000002 -#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1R5G5B5_X1R5G5B5 0x00000003 -#define NV04_CONTEXT_SURFACES_2D_FORMAT_R5G6B5 0x00000004 -#define NV04_CONTEXT_SURFACES_2D_FORMAT_Y16 0x00000005 -#define NV04_CONTEXT_SURFACES_2D_FORMAT_X8R8G8B8_Z8R8G8B8 0x00000006 -#define NV04_CONTEXT_SURFACES_2D_FORMAT_X8R8G8B8_X8R8G8B8 0x00000007 -#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1A7R8G8B8_Z1A7R8G8B8 0x00000008 -#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1A7R8G8B8_X1A7R8G8B8 0x00000009 -#define NV04_CONTEXT_SURFACES_2D_FORMAT_A8R8G8B8 0x0000000a -#define NV04_CONTEXT_SURFACES_2D_FORMAT_Y32 0x0000000b -#define NV04_CONTEXT_SURFACES_2D_PITCH 0x00000304 -#define NV04_CONTEXT_SURFACES_2D_PITCH_SOURCE_SHIFT 0 -#define NV04_CONTEXT_SURFACES_2D_PITCH_SOURCE_MASK 0x0000ffff -#define NV04_CONTEXT_SURFACES_2D_PITCH_DESTIN_SHIFT 16 -#define NV04_CONTEXT_SURFACES_2D_PITCH_DESTIN_MASK 0xffff0000 -#define NV04_CONTEXT_SURFACES_2D_OFFSET_SOURCE 0x00000308 -#define NV04_CONTEXT_SURFACES_2D_OFFSET_DESTIN 0x0000030c - - -#define NV10_CONTEXT_SURFACES_2D 0x00000062 - - - -#define NV30_CONTEXT_SURFACES_2D 0x00000362 - - - -#define NV40_CONTEXT_SURFACES_2D 0x00003062 - - - -#define NV03_CONTEXT_ROP 0x00000043 - -#define NV03_CONTEXT_ROP_NOP 0x00000100 -#define NV03_CONTEXT_ROP_NOTIFY 0x00000104 -#define NV03_CONTEXT_ROP_DMA_NOTIFY 0x00000180 -#define NV03_CONTEXT_ROP_ROP 0x00000300 -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_SHIFT 0 -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_MASK 0x0000000f -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_CLEAR 0x00000000 -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_NOR 0x00000001 -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_AND_INVERTED 0x00000002 -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_COPY_INVERTED 0x00000003 -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_AND_REVERSE 0x00000004 -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_INVERT 0x00000005 -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_XOR 0x00000006 -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_NAND 0x00000007 -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_AND 0x00000008 -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_EQUI 0x00000009 -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_NOOP 0x0000000a -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_OR_INVERTED 0x0000000b -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_COPY 0x0000000c -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_OR_REVERSE 0x0000000d -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_OR 0x0000000e -#define NV03_CONTEXT_ROP_ROP_DST_LOGIC_OP_SET 0x0000000f -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_SHIFT 4 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_MASK 0x000000f0 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_CLEAR 0x00000000 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_NOR 0x00000010 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_AND_INVERTED 0x00000020 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_COPY_INVERTED 0x00000030 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_AND_REVERSE 0x00000040 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_INVERT 0x00000050 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_XOR 0x00000060 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_NAND 0x00000070 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_AND 0x00000080 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_EQUI 0x00000090 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_NOOP 0x000000a0 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_OR_INVERTED 0x000000b0 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_COPY 0x000000c0 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_OR_REVERSE 0x000000d0 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_OR 0x000000e0 -#define NV03_CONTEXT_ROP_ROP_SRC_LOGIC_OP_SET 0x000000f0 - - -#define NV04_IMAGE_PATTERN 0x00000044 - -#define NV04_IMAGE_PATTERN_NOP 0x00000100 -#define NV04_IMAGE_PATTERN_NOTIFY 0x00000104 -#define NV04_IMAGE_PATTERN_DMA_NOTIFY 0x00000180 -#define NV04_IMAGE_PATTERN_COLOR_FORMAT 0x00000300 -#define NV04_IMAGE_PATTERN_COLOR_FORMAT_A16R5G6B5 0x00000001 -#define NV04_IMAGE_PATTERN_COLOR_FORMAT_X16A1R5G5B5 0x00000002 -#define NV04_IMAGE_PATTERN_COLOR_FORMAT_A8R8G8B8 0x00000003 -#define NV04_IMAGE_PATTERN_MONOCHROME_FORMAT 0x00000304 -#define NV04_IMAGE_PATTERN_MONOCHROME_FORMAT_CGA6 0x00000001 -#define NV04_IMAGE_PATTERN_MONOCHROME_FORMAT_LE 0x00000002 -#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE 0x00000308 -#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE_8X8 0x00000000 -#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE_64X1 0x00000001 -#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE_1X64 0x00000002 -#define NV04_IMAGE_PATTERN_PATTERN_SELECT 0x0000030c -#define NV04_IMAGE_PATTERN_PATTERN_SELECT_MONO 0x00000001 -#define NV04_IMAGE_PATTERN_PATTERN_SELECT_COLOR 0x00000002 -#define NV04_IMAGE_PATTERN_MONOCHROME_COLOR0 0x00000310 -#define NV04_IMAGE_PATTERN_MONOCHROME_COLOR1 0x00000314 -#define NV04_IMAGE_PATTERN_MONOCHROME_PATTERN0 0x00000318 -#define NV04_IMAGE_PATTERN_MONOCHROME_PATTERN1 0x0000031c -#define NV04_IMAGE_PATTERN_PATTERN_Y8(x) (0x00000400+((x)*4)) -#define NV04_IMAGE_PATTERN_PATTERN_Y8__SIZE 0x00000010 -#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y0_SHIFT 0 -#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y0_MASK 0x000000ff -#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y1_SHIFT 8 -#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y1_MASK 0x0000ff00 -#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y2_SHIFT 16 -#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y2_MASK 0x00ff0000 -#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y3_SHIFT 24 -#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y3_MASK 0xff000000 -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5(x) (0x00000500+((x)*4)) -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5__SIZE 0x00000020 -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B0_SHIFT 0 -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B0_MASK 0x0000001f -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G0_SHIFT 5 -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G0_MASK 0x000007e0 -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R0_SHIFT 11 -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R0_MASK 0x0000f800 -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B1_SHIFT 16 -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B1_MASK 0x001f0000 -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G1_SHIFT 21 -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G1_MASK 0x07e00000 -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R1_SHIFT 27 -#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R1_MASK 0xf8000000 -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5(x) (0x00000600+((x)*4)) -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5__SIZE 0x00000020 -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B0_SHIFT 0 -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B0_MASK 0x0000001f -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G0_SHIFT 5 -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G0_MASK 0x000003e0 -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R0_SHIFT 10 -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R0_MASK 0x00007c00 -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B1_SHIFT 16 -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B1_MASK 0x001f0000 -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G1_SHIFT 21 -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G1_MASK 0x03e00000 -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R1_SHIFT 26 -#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R1_MASK 0x7c000000 -#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8(x) (0x00000700+((x)*4)) -#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8__SIZE 0x00000040 -#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_B_SHIFT 0 -#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_B_MASK 0x000000ff -#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_G_SHIFT 8 -#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_G_MASK 0x0000ff00 -#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_R_SHIFT 16 -#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_R_MASK 0x00ff0000 - - -#define NV03_VIDEO_LUT_CURSOR_DAC 0x00000046 - -#define NV03_VIDEO_LUT_CURSOR_DAC_SYNCHRONIZE 0x00000100 -#define NV03_VIDEO_LUT_CURSOR_DAC_STOP_IMAGE 0x00000104 -#define NV03_VIDEO_LUT_CURSOR_DAC_STOP_CURSOR 0x00000108 -#define NV03_VIDEO_LUT_CURSOR_DAC_STOP_DAC 0x0000010c -#define NV03_VIDEO_LUT_CURSOR_DAC_DMA_NOTIFY 0x00000180 -#define NV03_VIDEO_LUT_CURSOR_DAC_DMA_IMAGE(x) (0x00000184+((x)*4)) -#define NV03_VIDEO_LUT_CURSOR_DAC_DMA_IMAGE__SIZE 0x00000002 -#define NV03_VIDEO_LUT_CURSOR_DAC_DMA_LUT(x) (0x0000018c+((x)*4)) -#define NV03_VIDEO_LUT_CURSOR_DAC_DMA_LUT__SIZE 0x00000002 -#define NV03_VIDEO_LUT_CURSOR_DAC_DMA_CURSOR(x) (0x00000194+((x)*4)) -#define NV03_VIDEO_LUT_CURSOR_DAC_DMA_CURSOR__SIZE 0x00000002 -#define NV03_VIDEO_LUT_CURSOR_DAC_GET 0x000002fc -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_OFFSET(x) (0x00000300+((x)*8)) -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_OFFSET__SIZE 0x00000002 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_FORMAT(x) (0x00000304+((x)*8)) -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_FORMAT__SIZE 0x00000002 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_FORMAT_PITCH_SHIFT 0 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_FORMAT_PITCH_MASK 0x0000ffff -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_FORMAT_COLOR_SHIFT 16 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_FORMAT_COLOR_MASK 0x0fff0000 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_FORMAT_NOTIFY_SHIFT 28 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_IMAGE_FORMAT_NOTIFY_MASK 0xf0000000 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_OFFSET(x) (0x00000340+((x)*12)) -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_OFFSET__SIZE 0x00000002 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT(x) (0x00000344+((x)*12)) -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT__SIZE 0x00000002 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_X_SHIFT 0 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_X_MASK 0x0000ffff -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_Y_SHIFT 16 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_Y_MASK 0xffff0000 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_FORMAT(x) (0x00000348+((x)*12)) -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_FORMAT__SIZE 0x00000002 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_A 0x00000358 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_A_X_SHIFT 0 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_A_X_MASK 0x0000ffff -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_A_Y_SHIFT 16 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_CURSOR_POINT_OUT_A_Y_MASK 0xffff0000 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_IMAGE_SIZE(x) (0x00000380+((x)*16)) -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_IMAGE_SIZE__SIZE 0x00000002 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_IMAGE_SIZE_W_SHIFT 0 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_IMAGE_SIZE_W_MASK 0x0000ffff -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_IMAGE_SIZE_H_SHIFT 16 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_IMAGE_SIZE_H_MASK 0xffff0000 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_HSYNC(x) (0x00000384+((x)*16)) -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_HSYNC__SIZE 0x00000002 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_HSYNC_START_SHIFT 0 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_HSYNC_START_MASK 0x0000ffff -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_HSYNC_WIDTH_SHIFT 16 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_HSYNC_WIDTH_MASK 0x0fff0000 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_HSYNC_POLARITY_SHIFT 28 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_HSYNC_POLARITY_MASK 0xf0000000 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_VSYNC(x) (0x00000388+((x)*16)) -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_VSYNC__SIZE 0x00000002 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_VSYNC_START_SHIFT 0 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_VSYNC_START_MASK 0x0000ffff -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_VSYNC_WIDTH_SHIFT 16 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_VSYNC_WIDTH_MASK 0x0fff0000 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_VSYNC_POLARITY_SHIFT 28 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_VSYNC_POLARITY_MASK 0xf0000000 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_TOTAL_SIZE(x) (0x0000038c+((x)*16)) -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_TOTAL_SIZE__SIZE 0x00000002 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_TOTAL_SIZE_WIDTH_SHIFT 0 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_TOTAL_SIZE_WIDTH_MASK 0x0000ffff -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_TOTAL_SIZE_HEIGHT_SHIFT 16 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_TOTAL_SIZE_HEIGHT_MASK 0x0fff0000 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_TOTAL_SIZE_NOTIFY_SHIFT 28 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_DAC_TOTAL_SIZE_NOTIFY_MASK 0xf0000000 -#define NV03_VIDEO_LUT_CURSOR_DAC_SET_PIXEL_CLOCK 0x000003a0 - - -#define NV03_TEXTURED_TRIANGLE 0x00000048 - -#define NV03_TEXTURED_TRIANGLE_NOP 0x00000100 -#define NV03_TEXTURED_TRIANGLE_NOTIFY 0x00000104 -#define NV03_TEXTURED_TRIANGLE_PATCH 0x0000010c -#define NV03_TEXTURED_TRIANGLE_DMA_NOTIFY 0x00000180 -#define NV03_TEXTURED_TRIANGLE_DMA_TEXTURE 0x00000184 -#define NV03_TEXTURED_TRIANGLE_CLIP_RECTANGLE 0x00000188 -#define NV03_TEXTURED_TRIANGLE_SURFACE 0x0000018c -#define NV03_TEXTURED_TRIANGLE_TEXTURE_OFFSET 0x00000304 -#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT 0x00000308 -#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_COLOR_KEY_MASK_SHIFT 0 -#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_COLOR_KEY_MASK_MASK 0x0000ffff -#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_COLOR_KEY_ENABLE_SHIFT 16 -#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_COLOR_KEY_ENABLE_MASK 0x000f0000 -#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_COLOR_SHIFT 20 -#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_COLOR_MASK 0x00f00000 -#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_SIZE_MIN_SHIFT 24 -#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_SIZE_MIN_MASK 0x0f000000 -#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_SIZE_MAX_SHIFT 28 -#define NV03_TEXTURED_TRIANGLE_TEXTURE_FORMAT_SIZE_MAX_MASK 0xf0000000 -#define NV03_TEXTURED_TRIANGLE_FILTER 0x0000030c -#define NV03_TEXTURED_TRIANGLE_FILTER_SPREAD_X_SHIFT 0 -#define NV03_TEXTURED_TRIANGLE_FILTER_SPREAD_X_MASK 0x0000001f -#define NV03_TEXTURED_TRIANGLE_FILTER_SPREAD_Y_SHIFT 8 -#define NV03_TEXTURED_TRIANGLE_FILTER_SPREAD_Y_MASK 0x00001f00 -#define NV03_TEXTURED_TRIANGLE_FILTER_SIZE_ADJUST_SHIFT 16 -#define NV03_TEXTURED_TRIANGLE_FILTER_SIZE_ADJUST_MASK 0x00ff0000 -#define NV03_TEXTURED_TRIANGLE_FOG_COLOR 0x00000310 -#define NV03_TEXTURED_TRIANGLE_FOG_COLOR_B_SHIFT 0 -#define NV03_TEXTURED_TRIANGLE_FOG_COLOR_B_MASK 0x000000ff -#define NV03_TEXTURED_TRIANGLE_FOG_COLOR_G_SHIFT 8 -#define NV03_TEXTURED_TRIANGLE_FOG_COLOR_G_MASK 0x0000ff00 -#define NV03_TEXTURED_TRIANGLE_FOG_COLOR_R_SHIFT 16 -#define NV03_TEXTURED_TRIANGLE_FOG_COLOR_R_MASK 0x00ff0000 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT 0x00000314 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_INTERPOLATOR_SHIFT 0 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_INTERPOLATOR_MASK 0x0000000f -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_WRAP_U_SHIFT 4 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_WRAP_U_MASK 0x00000030 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_WRAP_V_SHIFT 6 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_WRAP_V_MASK 0x000000c0 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_SOURCE_COLOR_SHIFT 8 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_SOURCE_COLOR_MASK 0x00000f00 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_CULLING_SHIFT 12 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_CULLING_MASK 0x00007000 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_Z_PERSPECTIVE_ENABLE (1 << 15) -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_Z_FUNC_SHIFT 16 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_Z_FUNC_MASK 0x000f0000 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_Z_WRITE_ENABLE_SHIFT 20 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_Z_WRITE_ENABLE_MASK 0x00f00000 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_COLOR_WRITE_ENABLE_SHIFT 24 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_COLOR_WRITE_ENABLE_MASK 0x07000000 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_ROP_SHIFT 27 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_ROP_MASK 0x18000000 -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_BETA (1 << 29) -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_DST_BLEND (1 << 30) -#define NV03_TEXTURED_TRIANGLE_CONTROL_OUT_SRC_BLEND (1 << 31) -#define NV03_TEXTURED_TRIANGLE_ALPHA_CONTROL 0x00000318 -#define NV03_TEXTURED_TRIANGLE_ALPHA_CONTROL_ALPHA_REF_SHIFT 0 -#define NV03_TEXTURED_TRIANGLE_ALPHA_CONTROL_ALPHA_REF_MASK 0x000000ff -#define NV03_TEXTURED_TRIANGLE_ALPHA_CONTROL_ALPHA_FUNC_SHIFT 8 -#define NV03_TEXTURED_TRIANGLE_ALPHA_CONTROL_ALPHA_FUNC_MASK 0xffffff00 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR(x) (0x00001000+((x)*32)) -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR__SIZE 0x00000080 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I0_SHIFT 0 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I0_MASK 0x0000000f -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I1_SHIFT 4 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I1_MASK 0x000000f0 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I2_SHIFT 8 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I2_MASK 0x00000f00 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I3_SHIFT 12 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I3_MASK 0x0000f000 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I4_SHIFT 16 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I4_MASK 0x000f0000 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I5_SHIFT 20 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_I5_MASK 0x00f00000 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_FOG_SHIFT 24 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_FOG_MASK 0xff000000 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_COLOR(x) (0x00001004+((x)*32)) -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_COLOR__SIZE 0x00000080 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SX(x) (0x00001008+((x)*32)) -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SX__SIZE 0x00000080 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SY(x) (0x0000100c+((x)*32)) -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SY__SIZE 0x00000080 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SZ(x) (0x00001010+((x)*32)) -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_SZ__SIZE 0x00000080 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_RHW(x) (0x00001014+((x)*32)) -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_RHW__SIZE 0x00000080 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_TU(x) (0x00001018+((x)*32)) -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_TU__SIZE 0x00000080 -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_TV(x) (0x0000101c+((x)*32)) -#define NV03_TEXTURED_TRIANGLE_TLVERTEX_TV__SIZE 0x00000080 - - -#define NV04_GDI_RECTANGLE_TEXT 0x0000004a - -#define NV04_GDI_RECTANGLE_TEXT_NOP 0x00000100 -#define NV04_GDI_RECTANGLE_TEXT_NOTIFY 0x00000104 -#define NV04_GDI_RECTANGLE_TEXT_PATCH 0x0000010c -#define NV04_GDI_RECTANGLE_TEXT_PM_TRIGGER 0x00000140 -#define NV04_GDI_RECTANGLE_TEXT_DMA_NOTIFY 0x00000180 -#define NV04_GDI_RECTANGLE_TEXT_DMA_FONTS 0x00000184 -#define NV04_GDI_RECTANGLE_TEXT_PATTERN 0x00000188 -#define NV04_GDI_RECTANGLE_TEXT_ROP 0x0000018c -#define NV04_GDI_RECTANGLE_TEXT_BETA1 0x00000190 -#define NV04_GDI_RECTANGLE_TEXT_BETA4 0x00000194 -#define NV04_GDI_RECTANGLE_TEXT_SURFACE 0x00000198 -#define NV04_GDI_RECTANGLE_TEXT_OPERATION 0x000002fc -#define NV04_GDI_RECTANGLE_TEXT_OPERATION_SRCCOPY_AND 0x00000000 -#define NV04_GDI_RECTANGLE_TEXT_OPERATION_ROP_AND 0x00000001 -#define NV04_GDI_RECTANGLE_TEXT_OPERATION_BLEND_AND 0x00000002 -#define NV04_GDI_RECTANGLE_TEXT_OPERATION_SRCCOPY 0x00000003 -#define NV04_GDI_RECTANGLE_TEXT_OPERATION_SRCCOPY_PREMULT 0x00000004 -#define NV04_GDI_RECTANGLE_TEXT_OPERATION_BLEND_PREMULT 0x00000005 -#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT 0x00000300 -#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT_A16R5G6B5 0x00000001 -#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT_X16A1R5G5B5 0x00000002 -#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT_A8R8G8B8 0x00000003 -#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT 0x00000304 -#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT_CGA6 0x00000001 -#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT_LE 0x00000002 -#define NV04_GDI_RECTANGLE_TEXT_COLOR1_A 0x000003fc -#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT(x) (0x00000400+((x)*8)) -#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT__SIZE 0x00000020 -#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE(x) (0x00000404+((x)*8)) -#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE__SIZE 0x00000020 -#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0 0x000005f4 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_L_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_L_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_T_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_T_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1 0x000005f8 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_R_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_R_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_B_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_B_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_COLOR1_B 0x000005fc -#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0(x) (0x00000600+((x)*8)) -#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0__SIZE 0x00000020 -#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1(x) (0x00000604+((x)*8)) -#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1__SIZE 0x00000020 -#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0 0x000007ec -#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1 0x000007f0 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_COLOR1_C 0x000007f4 -#define NV04_GDI_RECTANGLE_TEXT_SIZE_C 0x000007f8 -#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_W_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_W_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_H_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_H_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_POINT_C 0x000007fc -#define NV04_GDI_RECTANGLE_TEXT_POINT_C_X_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_POINT_C_X_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_POINT_C_Y_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_POINT_C_Y_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C(x) (0x00000800+((x)*4)) -#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C__SIZE 0x00000080 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0 0x00000be4 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1 0x00000be8 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_COLOR0_E 0x00000bec -#define NV04_GDI_RECTANGLE_TEXT_COLOR1_E 0x00000bf0 -#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E 0x00000bf4 -#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_W_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_W_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_H_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_H_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E 0x00000bf8 -#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_POINT_E 0x00000bfc -#define NV04_GDI_RECTANGLE_TEXT_POINT_E_X_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_POINT_E_X_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_POINT_E_Y_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_POINT_E_Y_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E(x) (0x00000c00+((x)*4)) -#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E__SIZE 0x00000080 -#define NV04_GDI_RECTANGLE_TEXT_FONT_F 0x00000ff0 -#define NV04_GDI_RECTANGLE_TEXT_FONT_F_OFFSET_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_FONT_F_OFFSET_MASK 0x0fffffff -#define NV04_GDI_RECTANGLE_TEXT_FONT_F_PITCH_SHIFT 28 -#define NV04_GDI_RECTANGLE_TEXT_FONT_F_PITCH_MASK 0xf0000000 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0 0x00000ff4 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_L_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_L_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_T_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_T_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1 0x00000ff8 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_R_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_R_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_B_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_B_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_COLOR1_F 0x00000ffc -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F(x) (0x00001000+((x)*4)) -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F__SIZE 0x00000100 -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_INDEX_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_INDEX_MASK 0x000000ff -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_X_SHIFT 8 -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_X_MASK 0x000fff00 -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_Y_SHIFT 20 -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_Y_MASK 0xfff00000 -#define NV04_GDI_RECTANGLE_TEXT_FONT_G 0x000017f0 -#define NV04_GDI_RECTANGLE_TEXT_FONT_G_OFFSET_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_FONT_G_OFFSET_MASK 0x0fffffff -#define NV04_GDI_RECTANGLE_TEXT_FONT_G_PITCH_SHIFT 28 -#define NV04_GDI_RECTANGLE_TEXT_FONT_G_PITCH_MASK 0xf0000000 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0 0x000017f4 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_L_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_L_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_T_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_T_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1 0x000017f8 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_R_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_R_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_B_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_B_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_COLOR1_G 0x000017fc -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT(x) (0x00001800+((x)*8)) -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT__SIZE 0x00000100 -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_X_SHIFT 0 -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_X_MASK 0x0000ffff -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_Y_SHIFT 16 -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_Y_MASK 0xffff0000 -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_INDEX(x) (0x00001804+((x)*8)) -#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_INDEX__SIZE 0x00000100 - - -#define NV03_GDI_RECTANGLE_TEXT 0x0000004b - -#define NV03_GDI_RECTANGLE_TEXT_NOP 0x00000100 -#define NV03_GDI_RECTANGLE_TEXT_NOTIFY 0x00000104 -#define NV03_GDI_RECTANGLE_TEXT_DMA_NOTIFY 0x00000180 -#define NV03_GDI_RECTANGLE_TEXT_PATTERN 0x00000184 -#define NV03_GDI_RECTANGLE_TEXT_ROP 0x00000188 -#define NV03_GDI_RECTANGLE_TEXT_BETA1 0x0000018c -#define NV03_GDI_RECTANGLE_TEXT_SURFACE 0x00000190 -#define NV03_GDI_RECTANGLE_TEXT_OPERATION 0x000002fc -#define NV03_GDI_RECTANGLE_TEXT_COLOR_FORMAT 0x00000300 -#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT 0x00000304 -#define NV03_GDI_RECTANGLE_TEXT_COLOR1_A 0x000003fc -#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT 0x00000400 -#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE 0x00000404 -#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B 0x000007f4 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_L_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_L_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_T_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_T_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B 0x000007f8 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_R_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_R_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_B_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_B_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_COLOR1_B 0x000007fc -#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0 0x00000800 -#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1 0x00000804 -#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0 0x00000bec -#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1 0x00000bf0 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_COLOR1_C 0x00000bf4 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_C 0x00000bf8 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_W_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_W_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_H_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_H_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_POINT_C 0x00000bfc -#define NV03_GDI_RECTANGLE_TEXT_POINT_C_X_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_POINT_C_X_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_POINT_C_Y_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_POINT_C_Y_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C(x) (0x00000c00+((x)*4)) -#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C__SIZE 0x00000020 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0 0x00000fe8 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_L_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_L_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_T_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_T_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1 0x00000fec -#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_R_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_R_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_B_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_B_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_COLOR1_D 0x00000ff0 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D 0x00000ff4 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_W_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_W_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_H_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_H_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D 0x00000ff8 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_W_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_W_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_H_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_H_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_POINT_D 0x00000ffc -#define NV03_GDI_RECTANGLE_TEXT_POINT_D_X_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_POINT_D_X_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_POINT_D_Y_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_POINT_D_Y_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_D(x) (0x00001000+((x)*4)) -#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_D__SIZE 0x00000020 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0 0x000013e4 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1 0x000013e8 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_COLOR0_E 0x000013ec -#define NV03_GDI_RECTANGLE_TEXT_COLOR1_E 0x000013f0 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E 0x000013f4 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_W_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_W_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_H_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_H_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E 0x000013f8 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_POINT_E 0x000013fc -#define NV03_GDI_RECTANGLE_TEXT_POINT_E_X_SHIFT 0 -#define NV03_GDI_RECTANGLE_TEXT_POINT_E_X_MASK 0x0000ffff -#define NV03_GDI_RECTANGLE_TEXT_POINT_E_Y_SHIFT 16 -#define NV03_GDI_RECTANGLE_TEXT_POINT_E_Y_MASK 0xffff0000 -#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E(x) (0x00001400+((x)*4)) -#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E__SIZE 0x00000020 - - -#define NV04_SWIZZLED_SURFACE 0x00000052 - -#define NV04_SWIZZLED_SURFACE_NOP 0x00000100 -#define NV04_SWIZZLED_SURFACE_NOTIFY 0x00000104 -#define NV04_SWIZZLED_SURFACE_DMA_NOTIFY 0x00000180 -#define NV04_SWIZZLED_SURFACE_DMA_IMAGE 0x00000184 -#define NV04_SWIZZLED_SURFACE_FORMAT 0x00000300 -#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_SHIFT 0 -#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_MASK 0x000000ff -#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_Y8 0x00000001 -#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1R5G5B5_Z1R5G5B5 0x00000002 -#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1R5G5B5_X1R5G5B5 0x00000003 -#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_R5G6B5 0x00000004 -#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_Y16 0x00000005 -#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X8R8G8B8_Z8R8G8B8 0x00000006 -#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X8R8G8B8_X8R8G8B8 0x00000007 -#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1A7R8G8B8_Z1A7R8G8B8 0x00000008 -#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1A7R8G8B8_X1A7R8G8B8 0x00000009 -#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_A8R8G8B8 0x0000000a -#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_Y32 0x0000000b -#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_U_SHIFT 16 -#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_U_MASK 0x00ff0000 -#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_V_SHIFT 24 -#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_V_MASK 0xff000000 -#define NV04_SWIZZLED_SURFACE_OFFSET 0x00000304 - - -#define NV20_SWIZZLED_SURFACE 0x0000009e - - - -#define NV30_SWIZZLED_SURFACE 0x0000039e - - - -#define NV40_SWIZZLED_SURFACE 0x0000309e - - - -#define NV04_CONTEXT_SURFACES_3D 0x00000053 - -#define NV04_CONTEXT_SURFACES_3D_NOP 0x00000100 -#define NV04_CONTEXT_SURFACES_3D_NOTIFY 0x00000104 -#define NV04_CONTEXT_SURFACES_3D_DMA_NOTIFY 0x00000180 -#define NV04_CONTEXT_SURFACES_3D_DMA_COLOR 0x00000184 -#define NV04_CONTEXT_SURFACES_3D_DMA_ZETA 0x00000188 -#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL 0x000002f8 -#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_X_SHIFT 0 -#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_X_MASK 0x0000ffff -#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_W_SHIFT 16 -#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_W_MASK 0xffff0000 -#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL 0x000002fc -#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_Y_SHIFT 0 -#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_Y_MASK 0x0000ffff -#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_H_SHIFT 16 -#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_H_MASK 0xffff0000 -#define NV04_CONTEXT_SURFACES_3D_FORMAT 0x00000300 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_SHIFT 0 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_MASK 0x000000ff -#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1R5G5B5_Z1R5G5B5 0x00000001 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1R5G5B5_X1R5G5B5 0x00000002 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_R5G6B5 0x00000003 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X8R8G8B8_Z8R8G8B8 0x00000004 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X8R8G8B8_X8R8G8B8 0x00000005 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1A7R8G8B8_Z1A7R8G8B8 0x00000006 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1A7R8G8B8_X1A7R8G8B8 0x00000007 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_A8R8G8B8 0x00000008 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE_SHIFT 8 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE_MASK 0x0000ff00 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE_PITCH 0x00000100 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE_SWIZZLE 0x00000200 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_U_SHIFT 16 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_U_MASK 0x00ff0000 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_V_SHIFT 24 -#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_V_MASK 0xff000000 -#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE 0x00000304 -#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_W_SHIFT 0 -#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_W_MASK 0x0000ffff -#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_H_SHIFT 16 -#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_H_MASK 0xffff0000 -#define NV04_CONTEXT_SURFACES_3D_PITCH 0x00000308 -#define NV04_CONTEXT_SURFACES_3D_PITCH_COLOR_SHIFT 0 -#define NV04_CONTEXT_SURFACES_3D_PITCH_COLOR_MASK 0x0000ffff -#define NV04_CONTEXT_SURFACES_3D_PITCH_ZETA_SHIFT 16 -#define NV04_CONTEXT_SURFACES_3D_PITCH_ZETA_MASK 0xffff0000 -#define NV04_CONTEXT_SURFACES_3D_OFFSET_COLOR 0x0000030c -#define NV04_CONTEXT_SURFACES_3D_OFFSET_ZETA 0x00000310 - - -#define NV10_CONTEXT_SURFACES_3D 0x00000093 - - - -#define NV04_TEXTURED_TRIANGLE 0x00000054 - -#define NV04_TEXTURED_TRIANGLE_NOP 0x00000100 -#define NV04_TEXTURED_TRIANGLE_NOTIFY 0x00000104 -#define NV04_TEXTURED_TRIANGLE_DMA_NOTIFY 0x00000180 -#define NV04_TEXTURED_TRIANGLE_DMA_A 0x00000184 -#define NV04_TEXTURED_TRIANGLE_DMA_B 0x00000188 -#define NV04_TEXTURED_TRIANGLE_SURFACE 0x0000018c -#define NV04_TEXTURED_TRIANGLE_COLORKEY 0x00000300 -#define NV04_TEXTURED_TRIANGLE_OFFSET 0x00000304 -#define NV04_TEXTURED_TRIANGLE_FORMAT 0x00000308 -#define NV04_TEXTURED_TRIANGLE_FORMAT_DMA_A (1 << 0) -#define NV04_TEXTURED_TRIANGLE_FORMAT_DMA_B (1 << 1) -#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_KEY_MATCH_SHIFT 2 -#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_KEY_MATCH_MASK 0x0000000c -#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH_SHIFT 4 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH_MASK 0x00000030 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH_CENTER 0x00000010 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH_CORNER 0x00000020 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH_SHIFT 6 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH_MASK 0x000000c0 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH_CENTER 0x00000040 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH_CORNER 0x00000080 -#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_SHIFT 8 -#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_MASK 0x00000f00 -#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_Y8 0x00000100 -#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_A1R5G5B5 0x00000200 -#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_X1R5G5B5 0x00000300 -#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_A4R4G4B4 0x00000400 -#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_R5G6B5 0x00000500 -#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_A8R8G8B8 0x00000600 -#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_X8R8G8B8 0x00000700 -#define NV04_TEXTURED_TRIANGLE_FORMAT_MIPMAP_LEVELS_SHIFT 12 -#define NV04_TEXTURED_TRIANGLE_FORMAT_MIPMAP_LEVELS_MASK 0x0000f000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_U_SHIFT 16 -#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_U_MASK 0x000f0000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_V_SHIFT 20 -#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_V_MASK 0x00f00000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_SHIFT 24 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_MASK 0x07000000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_REPEAT 0x01000000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_MIRRORED_REPEAT 0x02000000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_CLAMP_TO_EDGE 0x03000000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_CLAMP_TO_BORDER 0x04000000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_CLAMP 0x05000000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_WRAPU (1 << 27) -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_SHIFT 28 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_MASK 0x70000000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_REPEAT 0x10000000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_MIRRORED_REPEAT 0x20000000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_CLAMP_TO_EDGE 0x30000000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_CLAMP_TO_BORDER 0x40000000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_CLAMP 0x50000000 -#define NV04_TEXTURED_TRIANGLE_FORMAT_WRAPV (1 << 31) -#define NV04_TEXTURED_TRIANGLE_FILTER 0x0000030c -#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_X_SHIFT 0 -#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_X_MASK 0x000000ff -#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_Y_SHIFT 8 -#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_Y_MASK 0x00007f00 -#define NV04_TEXTURED_TRIANGLE_FILTER_MIPMAP_DITHER_ENABLE (1 << 15) -#define NV04_TEXTURED_TRIANGLE_FILTER_MIPMAP_LODBIAS_SHIFT 16 -#define NV04_TEXTURED_TRIANGLE_FILTER_MIPMAP_LODBIAS_MASK 0x00ff0000 -#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_SHIFT 24 -#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_MASK 0x07000000 -#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_NEAREST 0x01000000 -#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_LINEAR 0x02000000 -#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_NEAREST_MIPMAP_NEAREST 0x03000000 -#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_LINEAR_MIPMAP_NEAREST 0x04000000 -#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_NEAREST_MIPMAP_LINEAR 0x05000000 -#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_LINEAR_MIPMAP_LINEAR 0x06000000 -#define NV04_TEXTURED_TRIANGLE_FILTER_ANISOTROPIC_MINIFY_ENABLE (1 << 27) -#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY_SHIFT 28 -#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY_MASK 0x70000000 -#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY_NEAREST 0x10000000 -#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY_LINEAR 0x20000000 -#define NV04_TEXTURED_TRIANGLE_FILTER_ANISOTROPIC_MAGNIFY_ENABLE (1 << 31) -#define NV04_TEXTURED_TRIANGLE_BLEND 0x00000310 -#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_SHIFT 0 -#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_MASK 0x0000000f -#define NV04_TEXTURED_TRIANGLE_BLEND_MASK_BIT_SHIFT 4 -#define NV04_TEXTURED_TRIANGLE_BLEND_MASK_BIT_MASK 0x00000030 -#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_SHIFT 6 -#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_MASK 0x000000c0 -#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_FLAT 0x00000040 -#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_GOURAUD 0x00000080 -#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_PHONG 0x000000c0 -#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_PERSPECTIVE_ENABLE (1 << 8) -#define NV04_TEXTURED_TRIANGLE_BLEND_SPECULAR_ENABLE (1 << 12) -#define NV04_TEXTURED_TRIANGLE_BLEND_FOG_ENABLE (1 << 16) -#define NV04_TEXTURED_TRIANGLE_BLEND_BLEND_ENABLE (1 << 20) -#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_SHIFT 24 -#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_MASK 0x0f000000 -#define NV04_TEXTURED_TRIANGLE_BLEND_DST_SHIFT 28 -#define NV04_TEXTURED_TRIANGLE_BLEND_DST_MASK 0xf0000000 -#define NV04_TEXTURED_TRIANGLE_CONTROL 0x00000314 -#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_REF_SHIFT 0 -#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_REF_MASK 0x000000ff -#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_SHIFT 8 -#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_MASK 0x00000f00 -#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_ENABLE (1 << 12) -#define NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN (1 << 13) -#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_ENABLE (1 << 14) -#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_SHIFT 16 -#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_MASK 0x000f0000 -#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_SHIFT 20 -#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_MASK 0x00300000 -#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_BOTH 0x00000000 -#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_NONE 0x00100000 -#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_CW 0x00200000 -#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_CCW 0x00300000 -#define NV04_TEXTURED_TRIANGLE_CONTROL_DITHER_ENABLE (1 << 22) -#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_PERSPECTIVE_ENABLE (1 << 23) -#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_WRITE (1 << 24) -#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FORMAT_SHIFT 30 -#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FORMAT_MASK 0xc0000000 -#define NV04_TEXTURED_TRIANGLE_FOGCOLOR 0x00000318 -#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_B_SHIFT 0 -#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_B_MASK 0x000000ff -#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_G_SHIFT 8 -#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_G_MASK 0x0000ff00 -#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_R_SHIFT 16 -#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_R_MASK 0x00ff0000 -#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_A_SHIFT 24 -#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_A_MASK 0xff000000 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SX(x) (0x00000400+((x)*32)) -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SX__SIZE 0x00000010 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SY(x) (0x00000404+((x)*32)) -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SY__SIZE 0x00000010 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SZ(x) (0x00000408+((x)*32)) -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SZ__SIZE 0x00000010 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_RHW(x) (0x0000040c+((x)*32)) -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_RHW__SIZE 0x00000010 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR(x) (0x00000410+((x)*32)) -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR__SIZE 0x00000010 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_B_SHIFT 0 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_B_MASK 0x000000ff -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_G_SHIFT 8 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_G_MASK 0x0000ff00 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_R_SHIFT 16 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_R_MASK 0x00ff0000 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_A_SHIFT 24 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_A_MASK 0xff000000 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR(x) (0x00000414+((x)*32)) -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR__SIZE 0x00000010 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_B_SHIFT 0 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_B_MASK 0x000000ff -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_G_SHIFT 8 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_G_MASK 0x0000ff00 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_R_SHIFT 16 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_R_MASK 0x00ff0000 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_FOG_SHIFT 24 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_FOG_MASK 0xff000000 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_TU(x) (0x00000418+((x)*32)) -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_TU__SIZE 0x00000010 -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_TV(x) (0x0000041c+((x)*32)) -#define NV04_TEXTURED_TRIANGLE_TLVERTEX_TV__SIZE 0x00000010 -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE(x) (0x00000600+((x)*4)) -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE__SIZE 0x00000040 -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I0_SHIFT 0 -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I0_MASK 0x0000000f -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I1_SHIFT 4 -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I1_MASK 0x000000f0 -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I2_SHIFT 8 -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I2_MASK 0x00000f00 -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I3_SHIFT 12 -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I3_MASK 0x0000f000 -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I4_SHIFT 16 -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I4_MASK 0x000f0000 -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I5_SHIFT 20 -#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I5_MASK 0x00f00000 - - -#define NV10_TEXTURED_TRIANGLE 0x00000094 - - - -#define NV04_MULTITEX_TRIANGLE 0x00000055 - -#define NV04_MULTITEX_TRIANGLE_NOP 0x00000100 -#define NV04_MULTITEX_TRIANGLE_NOTIFY 0x00000104 -#define NV04_MULTITEX_TRIANGLE_DMA_NOTIFY 0x00000180 -#define NV04_MULTITEX_TRIANGLE_DMA_A 0x00000184 -#define NV04_MULTITEX_TRIANGLE_DMA_B 0x00000188 -#define NV04_MULTITEX_TRIANGLE_SURFACE 0x0000018c -#define NV04_MULTITEX_TRIANGLE_OFFSET(x) (0x00000308+((x)*4)) -#define NV04_MULTITEX_TRIANGLE_OFFSET__SIZE 0x00000002 -#define NV04_MULTITEX_TRIANGLE_FORMAT(x) (0x00000310+((x)*4)) -#define NV04_MULTITEX_TRIANGLE_FORMAT__SIZE 0x00000002 -#define NV04_MULTITEX_TRIANGLE_FORMAT_DMA_A (1 << 0) -#define NV04_MULTITEX_TRIANGLE_FORMAT_DMA_B (1 << 1) -#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_ZOH_SHIFT 4 -#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_ZOH_MASK 0x00000030 -#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_FOH_SHIFT 6 -#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_FOH_MASK 0x000000c0 -#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_SHIFT 8 -#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_MASK 0x00000f00 -#define NV04_MULTITEX_TRIANGLE_FORMAT_MIPMAP_LEVELS_SHIFT 12 -#define NV04_MULTITEX_TRIANGLE_FORMAT_MIPMAP_LEVELS_MASK 0x0000f000 -#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_U_SHIFT 16 -#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_U_MASK 0x000f0000 -#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_V_SHIFT 20 -#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_V_MASK 0x00f00000 -#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU_SHIFT 24 -#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU_MASK 0x07000000 -#define NV04_MULTITEX_TRIANGLE_FORMAT_WRAPU (1 << 27) -#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV_SHIFT 28 -#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV_MASK 0x70000000 -#define NV04_MULTITEX_TRIANGLE_FORMAT_WRAPV (1 << 31) -#define NV04_MULTITEX_TRIANGLE_FILTER(x) (0x00000318+((x)*4)) -#define NV04_MULTITEX_TRIANGLE_FILTER__SIZE 0x00000002 -#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_X_SHIFT 0 -#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_X_MASK 0x000000ff -#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_Y_SHIFT 8 -#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_Y_MASK 0x00007f00 -#define NV04_MULTITEX_TRIANGLE_FILTER_MIPMAP_DITHER_ENABLE (1 << 15) -#define NV04_MULTITEX_TRIANGLE_FILTER_MIPMAP_LODBIAS_SHIFT 16 -#define NV04_MULTITEX_TRIANGLE_FILTER_MIPMAP_LODBIAS_MASK 0x00ff0000 -#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_SHIFT 24 -#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_MASK 0x07000000 -#define NV04_MULTITEX_TRIANGLE_FILTER_ANISOTROPIC_MINIFY_ENABLE (1 << 27) -#define NV04_MULTITEX_TRIANGLE_FILTER_MAGNIFY_SHIFT 28 -#define NV04_MULTITEX_TRIANGLE_FILTER_MAGNIFY_MASK 0x70000000 -#define NV04_MULTITEX_TRIANGLE_FILTER_ANISOTROPIC_MAGNIFY_ENABLE (1 << 31) -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA(x) (0x00000320+((x)*12)) -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA__SIZE 0x00000002 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE0 (1 << 0) -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_SHIFT 2 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_MASK 0x000000fc -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_ZERO 0x00000004 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_CONSTANT 0x00000008 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_PRIMARY_COLOR 0x0000000c -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_PREVIOUS 0x00000010 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_TEXTURE0 0x00000014 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_TEXTURE1 0x00000018 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE1 (1 << 8) -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_SHIFT 10 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_MASK 0x0000fc00 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_ZERO 0x00000400 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_CONSTANT 0x00000800 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_PRIMARY_COLOR 0x00000c00 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_PREVIOUS 0x00001000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_TEXTURE0 0x00001400 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_TEXTURE1 0x00001800 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE2 (1 << 16) -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_SHIFT 18 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_MASK 0x00fc0000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_ZERO 0x00040000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_CONSTANT 0x00080000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_PRIMARY_COLOR 0x000c0000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_PREVIOUS 0x00100000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_TEXTURE0 0x00140000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_TEXTURE1 0x00180000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE3 (1 << 24) -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_SHIFT 26 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_MASK 0x1c000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_ZERO 0x04000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_CONSTANT 0x08000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_PRIMARY_COLOR 0x0c000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_PREVIOUS 0x10000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_TEXTURE0 0x14000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_TEXTURE1 0x18000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_SHIFT 29 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_MASK 0xe0000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_IDENTITY 0x20000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_SCALE2 0x40000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_SCALE4 0x60000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_BIAS 0x80000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_BIAS_SCALE2 0xe0000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR(x) (0x00000324+((x)*12)) -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR__SIZE 0x00000002 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE0 (1 << 0) -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA0 (1 << 1) -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_SHIFT 2 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_MASK 0x000000fc -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_ZERO 0x00000004 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_CONSTANT 0x00000008 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_PRIMARY_COLOR 0x0000000c -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_PREVIOUS 0x00000010 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_TEXTURE0 0x00000014 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_TEXTURE1 0x00000018 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE1 (1 << 8) -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA1 (1 << 9) -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_SHIFT 10 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_MASK 0x0000fc00 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_ZERO 0x00000400 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_CONSTANT 0x00000800 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_PRIMARY_COLOR 0x00000c00 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_PREVIOUS 0x00001000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_TEXTURE0 0x00001400 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_TEXTURE1 0x00001800 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE2 (1 << 16) -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA2 (1 << 17) -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_SHIFT 18 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_MASK 0x00fc0000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_ZERO 0x00040000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_CONSTANT 0x00080000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_PRIMARY_COLOR 0x000c0000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_PREVIOUS 0x00100000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_TEXTURE0 0x00140000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_TEXTURE1 0x00180000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE3 (1 << 24) -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA3 (1 << 25) -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_SHIFT 26 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_MASK 0x1c000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_ZERO 0x04000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_CONSTANT 0x08000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_PRIMARY_COLOR 0x0c000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_PREVIOUS 0x10000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_TEXTURE0 0x14000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_TEXTURE1 0x18000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_SHIFT 29 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_MASK 0xe0000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_IDENTITY 0x20000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_SCALE2 0x40000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_SCALE4 0x60000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_BIAS 0x80000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_BIAS_SCALE2 0xe0000000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR 0x00000334 -#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_B_SHIFT 0 -#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_B_MASK 0x000000ff -#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_G_SHIFT 8 -#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_G_MASK 0x0000ff00 -#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_R_SHIFT 16 -#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_R_MASK 0x00ff0000 -#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_A_SHIFT 24 -#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_A_MASK 0xff000000 -#define NV04_MULTITEX_TRIANGLE_BLEND 0x00000338 -#define NV04_MULTITEX_TRIANGLE_BLEND_MASK_BIT_SHIFT 4 -#define NV04_MULTITEX_TRIANGLE_BLEND_MASK_BIT_MASK 0x00000030 -#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_SHIFT 6 -#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_MASK 0x000000c0 -#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_FLAT 0x00000040 -#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_GOURAUD 0x00000080 -#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_PHONG 0x000000c0 -#define NV04_MULTITEX_TRIANGLE_BLEND_TEXTURE_PERSPECTIVE_ENABLE (1 << 8) -#define NV04_MULTITEX_TRIANGLE_BLEND_SPECULAR_ENABLE (1 << 12) -#define NV04_MULTITEX_TRIANGLE_BLEND_FOG_ENABLE (1 << 16) -#define NV04_MULTITEX_TRIANGLE_BLEND_BLEND_ENABLE (1 << 20) -#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_SHIFT 24 -#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_MASK 0x0f000000 -#define NV04_MULTITEX_TRIANGLE_BLEND_DST_SHIFT 28 -#define NV04_MULTITEX_TRIANGLE_BLEND_DST_MASK 0xf0000000 -#define NV04_MULTITEX_TRIANGLE_CONTROL0 0x0000033c -#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_REF_SHIFT 0 -#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_REF_MASK 0x000000ff -#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_SHIFT 8 -#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_MASK 0x00000f00 -#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_ENABLE (1 << 12) -#define NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN (1 << 13) -#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_ENABLE (1 << 14) -#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_SHIFT 16 -#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_MASK 0x000f0000 -#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_SHIFT 20 -#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_MASK 0x00300000 -#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_BOTH 0x00000000 -#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_NONE 0x00100000 -#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_CW 0x00200000 -#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_CCW 0x00300000 -#define NV04_MULTITEX_TRIANGLE_CONTROL0_DITHER_ENABLE (1 << 22) -#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_PERSPECTIVE_ENABLE (1 << 23) -#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_WRITE (1 << 24) -#define NV04_MULTITEX_TRIANGLE_CONTROL0_STENCIL_WRITE (1 << 25) -#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_WRITE (1 << 26) -#define NV04_MULTITEX_TRIANGLE_CONTROL0_RED_WRITE (1 << 27) -#define NV04_MULTITEX_TRIANGLE_CONTROL0_GREEN_WRITE (1 << 28) -#define NV04_MULTITEX_TRIANGLE_CONTROL0_BLUE_WRITE (1 << 29) -#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FORMAT_SHIFT 30 -#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FORMAT_MASK 0xc0000000 -#define NV04_MULTITEX_TRIANGLE_CONTROL1 0x00000340 -#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_ENABLE (1 << 0) -#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_FUNC_SHIFT 4 -#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_FUNC_MASK 0x000000f0 -#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_REF_SHIFT 8 -#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_REF_MASK 0x0000ff00 -#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_READ_SHIFT 16 -#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_READ_MASK 0x00ff0000 -#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_WRITE_SHIFT 24 -#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_WRITE_MASK 0xff000000 -#define NV04_MULTITEX_TRIANGLE_CONTROL2 0x00000344 -#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_FAIL_SHIFT 0 -#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_FAIL_MASK 0x0000000f -#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZFAIL_SHIFT 4 -#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZFAIL_MASK 0x000000f0 -#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZPASS_SHIFT 8 -#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZPASS_MASK 0x00000f00 -#define NV04_MULTITEX_TRIANGLE_FOGCOLOR 0x00000348 -#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_B_SHIFT 0 -#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_B_MASK 0x000000ff -#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_G_SHIFT 8 -#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_G_MASK 0x0000ff00 -#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_R_SHIFT 16 -#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_R_MASK 0x00ff0000 -#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_A_SHIFT 24 -#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_A_MASK 0xff000000 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SX(x) (0x00000400+((x)*40)) -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SX__SIZE 0x00000008 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SY(x) (0x00000404+((x)*40)) -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SY__SIZE 0x00000008 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SZ(x) (0x00000408+((x)*40)) -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SZ__SIZE 0x00000008 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_RHW(x) (0x0000040c+((x)*40)) -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_RHW__SIZE 0x00000008 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR(x) (0x00000410+((x)*40)) -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR__SIZE 0x00000008 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_B_SHIFT 0 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_B_MASK 0x000000ff -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_G_SHIFT 8 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_G_MASK 0x0000ff00 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_R_SHIFT 16 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_R_MASK 0x00ff0000 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_A_SHIFT 24 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_A_MASK 0xff000000 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR(x) (0x00000414+((x)*40)) -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR__SIZE 0x00000008 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_B_SHIFT 0 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_B_MASK 0x000000ff -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_G_SHIFT 8 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_G_MASK 0x0000ff00 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_R_SHIFT 16 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_R_MASK 0x00ff0000 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_FOG_SHIFT 24 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_FOG_MASK 0xff000000 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TU0(x) (0x00000418+((x)*40)) -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TU0__SIZE 0x00000008 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TV0(x) (0x0000041c+((x)*40)) -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TV0__SIZE 0x00000008 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TU1(x) (0x00000420+((x)*40)) -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TU1__SIZE 0x00000008 -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TV1(x) (0x00000424+((x)*40)) -#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TV1__SIZE 0x00000008 -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE(x) (0x00000540+((x)*4)) -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE__SIZE 0x00000030 -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I0_SHIFT 0 -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I0_MASK 0x0000000f -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I1_SHIFT 4 -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I1_MASK 0x000000f0 -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I2_SHIFT 8 -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I2_MASK 0x00000f00 -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I3_SHIFT 12 -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I3_MASK 0x0000f000 -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I4_SHIFT 16 -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I4_MASK 0x000f0000 -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I5_SHIFT 20 -#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I5_MASK 0x00f00000 - - -#define NV10_MULTITEX_TRIANGLE 0x00000095 - - - -#define NV10TCL 0x00000056 - -#define NV10TCL_NOP 0x00000100 -#define NV10TCL_NOTIFY 0x00000104 -#define NV10TCL_DMA_NOTIFY 0x00000180 -#define NV10TCL_DMA_IN_MEMORY0 0x00000184 -#define NV10TCL_DMA_IN_MEMORY1 0x00000188 -#define NV10TCL_DMA_VTXBUF0 0x0000018c -#define NV10TCL_DMA_IN_MEMORY2 0x00000194 -#define NV10TCL_DMA_IN_MEMORY3 0x00000198 -#define NV10TCL_RT_HORIZ 0x00000200 -#define NV10TCL_RT_HORIZ_X_SHIFT 0 -#define NV10TCL_RT_HORIZ_X_MASK 0x0000ffff -#define NV10TCL_RT_HORIZ_W_SHIFT 16 -#define NV10TCL_RT_HORIZ_W_MASK 0xffff0000 -#define NV10TCL_RT_VERT 0x00000204 -#define NV10TCL_RT_VERT_Y_SHIFT 0 -#define NV10TCL_RT_VERT_Y_MASK 0x0000ffff -#define NV10TCL_RT_VERT_H_SHIFT 16 -#define NV10TCL_RT_VERT_H_MASK 0xffff0000 -#define NV10TCL_RT_FORMAT 0x00000208 -#define NV10TCL_RT_FORMAT_TYPE_SHIFT 8 -#define NV10TCL_RT_FORMAT_TYPE_MASK 0x00000f00 -#define NV10TCL_RT_FORMAT_TYPE_LINEAR 0x00000100 -#define NV10TCL_RT_FORMAT_TYPE_SWIZZLED 0x00000200 -#define NV10TCL_RT_FORMAT_COLOR_SHIFT 0 -#define NV10TCL_RT_FORMAT_COLOR_MASK 0x0000001f -#define NV10TCL_RT_FORMAT_COLOR_R5G6B5 0x00000003 -#define NV10TCL_RT_FORMAT_COLOR_X8R8G8B8 0x00000005 -#define NV10TCL_RT_FORMAT_COLOR_A8R8G8B8 0x00000008 -#define NV10TCL_RT_FORMAT_COLOR_B8 0x00000009 -#define NV10TCL_RT_FORMAT_COLOR_UNKNOWN 0x0000000d -#define NV10TCL_RT_FORMAT_COLOR_X8B8G8R8 0x0000000f -#define NV10TCL_RT_FORMAT_COLOR_A8B8G8R8 0x00000010 -#define NV10TCL_RT_PITCH 0x0000020c -#define NV10TCL_RT_PITCH_COLOR_PITCH_SHIFT 0 -#define NV10TCL_RT_PITCH_COLOR_PITCH_MASK 0x0000ffff -#define NV10TCL_RT_PITCH_ZETA_PITCH_SHIFT 16 -#define NV10TCL_RT_PITCH_ZETA_PITCH_MASK 0xffff0000 -#define NV10TCL_COLOR_OFFSET 0x00000210 -#define NV10TCL_ZETA_OFFSET 0x00000214 -#define NV10TCL_TX_OFFSET(x) (0x00000218+((x)*4)) -#define NV10TCL_TX_OFFSET__SIZE 0x00000002 -#define NV10TCL_TX_FORMAT(x) (0x00000220+((x)*4)) -#define NV10TCL_TX_FORMAT__SIZE 0x00000002 -#define NV10TCL_TX_FORMAT_DMA0 (1 << 0) -#define NV10TCL_TX_FORMAT_DMA1 (1 << 1) -#define NV10TCL_TX_FORMAT_CUBE_MAP (1 << 2) -#define NV10TCL_TX_FORMAT_FORMAT_SHIFT 7 -#define NV10TCL_TX_FORMAT_FORMAT_MASK 0x00000f80 -#define NV10TCL_TX_FORMAT_FORMAT_L8 0x00000000 -#define NV10TCL_TX_FORMAT_FORMAT_A8 0x00000080 -#define NV10TCL_TX_FORMAT_FORMAT_A1R5G5B5 0x00000100 -#define NV10TCL_TX_FORMAT_FORMAT_A4R4G4B4 0x00000200 -#define NV10TCL_TX_FORMAT_FORMAT_R5G6B5 0x00000280 -#define NV10TCL_TX_FORMAT_FORMAT_A8R8G8B8 0x00000300 -#define NV10TCL_TX_FORMAT_FORMAT_X8R8G8B8 0x00000380 -#define NV10TCL_TX_FORMAT_FORMAT_INDEX8 0x00000580 -#define NV10TCL_TX_FORMAT_FORMAT_DXT1 0x00000600 -#define NV10TCL_TX_FORMAT_FORMAT_DXT3 0x00000700 -#define NV10TCL_TX_FORMAT_FORMAT_DXT5 0x00000780 -#define NV10TCL_TX_FORMAT_FORMAT_A1R5G5B5_RECT 0x00000800 -#define NV10TCL_TX_FORMAT_FORMAT_R5G6B5_RECT 0x00000880 -#define NV10TCL_TX_FORMAT_FORMAT_A8R8G8B8_RECT 0x00000900 -#define NV10TCL_TX_FORMAT_FORMAT_A8_RECT 0x00000980 -#define NV10TCL_TX_FORMAT_MIPMAP (1 << 15) -#define NV10TCL_TX_FORMAT_BASE_SIZE_U_SHIFT 16 -#define NV10TCL_TX_FORMAT_BASE_SIZE_U_MASK 0x000f0000 -#define NV10TCL_TX_FORMAT_BASE_SIZE_V_SHIFT 20 -#define NV10TCL_TX_FORMAT_BASE_SIZE_V_MASK 0x00f00000 -#define NV10TCL_TX_FORMAT_WRAP_S_SHIFT 24 -#define NV10TCL_TX_FORMAT_WRAP_S_MASK 0x0f000000 -#define NV10TCL_TX_FORMAT_WRAP_S_REPEAT 0x01000000 -#define NV10TCL_TX_FORMAT_WRAP_S_MIRRORED_REPEAT 0x02000000 -#define NV10TCL_TX_FORMAT_WRAP_S_CLAMP_TO_EDGE 0x03000000 -#define NV10TCL_TX_FORMAT_WRAP_S_CLAMP_TO_BORDER 0x04000000 -#define NV10TCL_TX_FORMAT_WRAP_S_CLAMP 0x05000000 -#define NV10TCL_TX_FORMAT_WRAP_T_SHIFT 28 -#define NV10TCL_TX_FORMAT_WRAP_T_MASK 0xf0000000 -#define NV10TCL_TX_FORMAT_WRAP_T_REPEAT 0x10000000 -#define NV10TCL_TX_FORMAT_WRAP_T_MIRRORED_REPEAT 0x20000000 -#define NV10TCL_TX_FORMAT_WRAP_T_CLAMP_TO_EDGE 0x30000000 -#define NV10TCL_TX_FORMAT_WRAP_T_CLAMP_TO_BORDER 0x40000000 -#define NV10TCL_TX_FORMAT_WRAP_T_CLAMP 0x50000000 -#define NV10TCL_TX_ENABLE(x) (0x00000228+((x)*4)) -#define NV10TCL_TX_ENABLE__SIZE 0x00000002 -#define NV10TCL_TX_ENABLE_CULL_SHIFT 0 -#define NV10TCL_TX_ENABLE_CULL_MASK 0x0000000f -#define NV10TCL_TX_ENABLE_CULL_DISABLED 0x00000000 -#define NV10TCL_TX_ENABLE_CULL_TEST_ALL 0x00000003 -#define NV10TCL_TX_ENABLE_CULL_TEST_ALPHA 0x00000004 -#define NV10TCL_TX_ENABLE_ANISOTROPY_SHIFT 4 -#define NV10TCL_TX_ENABLE_ANISOTROPY_MASK 0x00000030 -#define NV10TCL_TX_ENABLE_MIPMAP_MAX_LOD_SHIFT 14 -#define NV10TCL_TX_ENABLE_MIPMAP_MAX_LOD_MASK 0x0003c000 -#define NV10TCL_TX_ENABLE_MIPMAP_MIN_LOD_SHIFT 26 -#define NV10TCL_TX_ENABLE_MIPMAP_MIN_LOD_MASK 0x3c000000 -#define NV10TCL_TX_ENABLE_ENABLE (1 << 30) -#define NV10TCL_TX_NPOT_PITCH(x) (0x00000230+((x)*4)) -#define NV10TCL_TX_NPOT_PITCH__SIZE 0x00000002 -#define NV10TCL_TX_NPOT_PITCH_PITCH_SHIFT 16 -#define NV10TCL_TX_NPOT_PITCH_PITCH_MASK 0xffff0000 -#define NV10TCL_TX_NPOT_SIZE(x) (0x00000240+((x)*4)) -#define NV10TCL_TX_NPOT_SIZE__SIZE 0x00000002 -#define NV10TCL_TX_NPOT_SIZE_H_SHIFT 0 -#define NV10TCL_TX_NPOT_SIZE_H_MASK 0x0000ffff -#define NV10TCL_TX_NPOT_SIZE_W_SHIFT 16 -#define NV10TCL_TX_NPOT_SIZE_W_MASK 0xffff0000 -#define NV10TCL_TX_FILTER(x) (0x00000248+((x)*4)) -#define NV10TCL_TX_FILTER__SIZE 0x00000002 -#define NV10TCL_TX_FILTER_LOD_BIAS_SHIFT 8 -#define NV10TCL_TX_FILTER_LOD_BIAS_MASK 0x00000f00 -#define NV10TCL_TX_FILTER_MINIFY_SHIFT 24 -#define NV10TCL_TX_FILTER_MINIFY_MASK 0x0f000000 -#define NV10TCL_TX_FILTER_MINIFY_NEAREST 0x01000000 -#define NV10TCL_TX_FILTER_MINIFY_LINEAR 0x02000000 -#define NV10TCL_TX_FILTER_MINIFY_NEAREST_MIPMAP_NEAREST 0x03000000 -#define NV10TCL_TX_FILTER_MINIFY_LINEAR_MIPMAP_NEAREST 0x04000000 -#define NV10TCL_TX_FILTER_MINIFY_NEAREST_MIPMAP_LINEAR 0x05000000 -#define NV10TCL_TX_FILTER_MINIFY_LINEAR_MIPMAP_LINEAR 0x06000000 -#define NV10TCL_TX_FILTER_MAGNIFY_SHIFT 28 -#define NV10TCL_TX_FILTER_MAGNIFY_MASK 0xf0000000 -#define NV10TCL_TX_FILTER_MAGNIFY_NEAREST 0x10000000 -#define NV10TCL_TX_FILTER_MAGNIFY_LINEAR 0x20000000 -#define NV10TCL_TX_PALETTE_OFFSET(x) (0x00000250+((x)*4)) -#define NV10TCL_TX_PALETTE_OFFSET__SIZE 0x00000002 -#define NV10TCL_RC_IN_ALPHA(x) (0x00000260+((x)*4)) -#define NV10TCL_RC_IN_ALPHA__SIZE 0x00000002 -#define NV10TCL_RC_IN_ALPHA_D_INPUT_SHIFT 0 -#define NV10TCL_RC_IN_ALPHA_D_INPUT_MASK 0x0000000f -#define NV10TCL_RC_IN_ALPHA_D_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR0 0x00000001 -#define NV10TCL_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR1 0x00000002 -#define NV10TCL_RC_IN_ALPHA_D_INPUT_FOG 0x00000003 -#define NV10TCL_RC_IN_ALPHA_D_INPUT_PRIMARY_COLOR 0x00000004 -#define NV10TCL_RC_IN_ALPHA_D_INPUT_SECONDARY_COLOR 0x00000005 -#define NV10TCL_RC_IN_ALPHA_D_INPUT_TEXTURE0 0x00000008 -#define NV10TCL_RC_IN_ALPHA_D_INPUT_TEXTURE1 0x00000009 -#define NV10TCL_RC_IN_ALPHA_D_INPUT_SPARE0 0x0000000c -#define NV10TCL_RC_IN_ALPHA_D_INPUT_SPARE1 0x0000000d -#define NV10TCL_RC_IN_ALPHA_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e -#define NV10TCL_RC_IN_ALPHA_D_INPUT_E_TIMES_F 0x0000000f -#define NV10TCL_RC_IN_ALPHA_D_INPUT_TEXTURE2 0x0000000a -#define NV10TCL_RC_IN_ALPHA_D_INPUT_TEXTURE3 0x0000000b -#define NV10TCL_RC_IN_ALPHA_D_COMPONENT_USAGE (1 << 4) -#define NV10TCL_RC_IN_ALPHA_D_COMPONENT_USAGE_BLUE 0x00000000 -#define NV10TCL_RC_IN_ALPHA_D_COMPONENT_USAGE_ALPHA 0x00000010 -#define NV10TCL_RC_IN_ALPHA_D_MAPPING_SHIFT 5 -#define NV10TCL_RC_IN_ALPHA_D_MAPPING_MASK 0x000000e0 -#define NV10TCL_RC_IN_ALPHA_D_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_IN_ALPHA_D_MAPPING_UNSIGNED_INVERT 0x00000020 -#define NV10TCL_RC_IN_ALPHA_D_MAPPING_EXPAND_NORMAL 0x00000040 -#define NV10TCL_RC_IN_ALPHA_D_MAPPING_EXPAND_NEGATE 0x00000060 -#define NV10TCL_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NORMAL 0x00000080 -#define NV10TCL_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0 -#define NV10TCL_RC_IN_ALPHA_D_MAPPING_SIGNED_IDENTITY 0x000000c0 -#define NV10TCL_RC_IN_ALPHA_D_MAPPING_SIGNED_NEGATE 0x000000e0 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_SHIFT 8 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_MASK 0x00000f00 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR0 0x00000100 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR1 0x00000200 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_FOG 0x00000300 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_PRIMARY_COLOR 0x00000400 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_SECONDARY_COLOR 0x00000500 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_TEXTURE0 0x00000800 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_TEXTURE1 0x00000900 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_SPARE0 0x00000c00 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_SPARE1 0x00000d00 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_E_TIMES_F 0x00000f00 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_TEXTURE2 0x00000a00 -#define NV10TCL_RC_IN_ALPHA_C_INPUT_TEXTURE3 0x00000b00 -#define NV10TCL_RC_IN_ALPHA_C_COMPONENT_USAGE (1 << 12) -#define NV10TCL_RC_IN_ALPHA_C_COMPONENT_USAGE_BLUE 0x00000000 -#define NV10TCL_RC_IN_ALPHA_C_COMPONENT_USAGE_ALPHA 0x00001000 -#define NV10TCL_RC_IN_ALPHA_C_MAPPING_SHIFT 13 -#define NV10TCL_RC_IN_ALPHA_C_MAPPING_MASK 0x0000e000 -#define NV10TCL_RC_IN_ALPHA_C_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_IN_ALPHA_C_MAPPING_UNSIGNED_INVERT 0x00002000 -#define NV10TCL_RC_IN_ALPHA_C_MAPPING_EXPAND_NORMAL 0x00004000 -#define NV10TCL_RC_IN_ALPHA_C_MAPPING_EXPAND_NEGATE 0x00006000 -#define NV10TCL_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NORMAL 0x00008000 -#define NV10TCL_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000 -#define NV10TCL_RC_IN_ALPHA_C_MAPPING_SIGNED_IDENTITY 0x0000c000 -#define NV10TCL_RC_IN_ALPHA_C_MAPPING_SIGNED_NEGATE 0x0000e000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_SHIFT 16 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_MASK 0x000f0000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR0 0x00010000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR1 0x00020000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_FOG 0x00030000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_PRIMARY_COLOR 0x00040000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_SECONDARY_COLOR 0x00050000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_TEXTURE0 0x00080000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_TEXTURE1 0x00090000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_SPARE0 0x000c0000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_SPARE1 0x000d0000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_E_TIMES_F 0x000f0000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_TEXTURE2 0x000a0000 -#define NV10TCL_RC_IN_ALPHA_B_INPUT_TEXTURE3 0x000b0000 -#define NV10TCL_RC_IN_ALPHA_B_COMPONENT_USAGE (1 << 20) -#define NV10TCL_RC_IN_ALPHA_B_COMPONENT_USAGE_BLUE 0x00000000 -#define NV10TCL_RC_IN_ALPHA_B_COMPONENT_USAGE_ALPHA 0x00100000 -#define NV10TCL_RC_IN_ALPHA_B_MAPPING_SHIFT 21 -#define NV10TCL_RC_IN_ALPHA_B_MAPPING_MASK 0x00e00000 -#define NV10TCL_RC_IN_ALPHA_B_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_IN_ALPHA_B_MAPPING_UNSIGNED_INVERT 0x00200000 -#define NV10TCL_RC_IN_ALPHA_B_MAPPING_EXPAND_NORMAL 0x00400000 -#define NV10TCL_RC_IN_ALPHA_B_MAPPING_EXPAND_NEGATE 0x00600000 -#define NV10TCL_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NORMAL 0x00800000 -#define NV10TCL_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000 -#define NV10TCL_RC_IN_ALPHA_B_MAPPING_SIGNED_IDENTITY 0x00c00000 -#define NV10TCL_RC_IN_ALPHA_B_MAPPING_SIGNED_NEGATE 0x00e00000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_SHIFT 24 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_MASK 0x0f000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR0 0x01000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR1 0x02000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_FOG 0x03000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_PRIMARY_COLOR 0x04000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_SECONDARY_COLOR 0x05000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_TEXTURE0 0x08000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_TEXTURE1 0x09000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_SPARE0 0x0c000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_SPARE1 0x0d000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_E_TIMES_F 0x0f000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_TEXTURE2 0x0a000000 -#define NV10TCL_RC_IN_ALPHA_A_INPUT_TEXTURE3 0x0b000000 -#define NV10TCL_RC_IN_ALPHA_A_COMPONENT_USAGE (1 << 28) -#define NV10TCL_RC_IN_ALPHA_A_COMPONENT_USAGE_BLUE 0x00000000 -#define NV10TCL_RC_IN_ALPHA_A_COMPONENT_USAGE_ALPHA 0x10000000 -#define NV10TCL_RC_IN_ALPHA_A_MAPPING_SHIFT 29 -#define NV10TCL_RC_IN_ALPHA_A_MAPPING_MASK 0xe0000000 -#define NV10TCL_RC_IN_ALPHA_A_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_IN_ALPHA_A_MAPPING_UNSIGNED_INVERT 0x20000000 -#define NV10TCL_RC_IN_ALPHA_A_MAPPING_EXPAND_NORMAL 0x40000000 -#define NV10TCL_RC_IN_ALPHA_A_MAPPING_EXPAND_NEGATE 0x60000000 -#define NV10TCL_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NORMAL 0x80000000 -#define NV10TCL_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000 -#define NV10TCL_RC_IN_ALPHA_A_MAPPING_SIGNED_IDENTITY 0xc0000000 -#define NV10TCL_RC_IN_ALPHA_A_MAPPING_SIGNED_NEGATE 0xe0000000 -#define NV10TCL_RC_IN_RGB(x) (0x00000268+((x)*4)) -#define NV10TCL_RC_IN_RGB__SIZE 0x00000002 -#define NV10TCL_RC_IN_RGB_D_INPUT_SHIFT 0 -#define NV10TCL_RC_IN_RGB_D_INPUT_MASK 0x0000000f -#define NV10TCL_RC_IN_RGB_D_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_IN_RGB_D_INPUT_CONSTANT_COLOR0 0x00000001 -#define NV10TCL_RC_IN_RGB_D_INPUT_CONSTANT_COLOR1 0x00000002 -#define NV10TCL_RC_IN_RGB_D_INPUT_FOG 0x00000003 -#define NV10TCL_RC_IN_RGB_D_INPUT_PRIMARY_COLOR 0x00000004 -#define NV10TCL_RC_IN_RGB_D_INPUT_SECONDARY_COLOR 0x00000005 -#define NV10TCL_RC_IN_RGB_D_INPUT_TEXTURE0 0x00000008 -#define NV10TCL_RC_IN_RGB_D_INPUT_TEXTURE1 0x00000009 -#define NV10TCL_RC_IN_RGB_D_INPUT_SPARE0 0x0000000c -#define NV10TCL_RC_IN_RGB_D_INPUT_SPARE1 0x0000000d -#define NV10TCL_RC_IN_RGB_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e -#define NV10TCL_RC_IN_RGB_D_INPUT_E_TIMES_F 0x0000000f -#define NV10TCL_RC_IN_RGB_D_INPUT_TEXTURE2 0x0000000a -#define NV10TCL_RC_IN_RGB_D_INPUT_TEXTURE3 0x0000000b -#define NV10TCL_RC_IN_RGB_D_COMPONENT_USAGE (1 << 4) -#define NV10TCL_RC_IN_RGB_D_COMPONENT_USAGE_RGB 0x00000000 -#define NV10TCL_RC_IN_RGB_D_COMPONENT_USAGE_ALPHA 0x00000010 -#define NV10TCL_RC_IN_RGB_D_MAPPING_SHIFT 5 -#define NV10TCL_RC_IN_RGB_D_MAPPING_MASK 0x000000e0 -#define NV10TCL_RC_IN_RGB_D_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_IN_RGB_D_MAPPING_UNSIGNED_INVERT 0x00000020 -#define NV10TCL_RC_IN_RGB_D_MAPPING_EXPAND_NORMAL 0x00000040 -#define NV10TCL_RC_IN_RGB_D_MAPPING_EXPAND_NEGATE 0x00000060 -#define NV10TCL_RC_IN_RGB_D_MAPPING_HALF_BIAS_NORMAL 0x00000080 -#define NV10TCL_RC_IN_RGB_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0 -#define NV10TCL_RC_IN_RGB_D_MAPPING_SIGNED_IDENTITY 0x000000c0 -#define NV10TCL_RC_IN_RGB_D_MAPPING_SIGNED_NEGATE 0x000000e0 -#define NV10TCL_RC_IN_RGB_C_INPUT_SHIFT 8 -#define NV10TCL_RC_IN_RGB_C_INPUT_MASK 0x00000f00 -#define NV10TCL_RC_IN_RGB_C_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_IN_RGB_C_INPUT_CONSTANT_COLOR0 0x00000100 -#define NV10TCL_RC_IN_RGB_C_INPUT_CONSTANT_COLOR1 0x00000200 -#define NV10TCL_RC_IN_RGB_C_INPUT_FOG 0x00000300 -#define NV10TCL_RC_IN_RGB_C_INPUT_PRIMARY_COLOR 0x00000400 -#define NV10TCL_RC_IN_RGB_C_INPUT_SECONDARY_COLOR 0x00000500 -#define NV10TCL_RC_IN_RGB_C_INPUT_TEXTURE0 0x00000800 -#define NV10TCL_RC_IN_RGB_C_INPUT_TEXTURE1 0x00000900 -#define NV10TCL_RC_IN_RGB_C_INPUT_SPARE0 0x00000c00 -#define NV10TCL_RC_IN_RGB_C_INPUT_SPARE1 0x00000d00 -#define NV10TCL_RC_IN_RGB_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 -#define NV10TCL_RC_IN_RGB_C_INPUT_E_TIMES_F 0x00000f00 -#define NV10TCL_RC_IN_RGB_C_INPUT_TEXTURE2 0x00000a00 -#define NV10TCL_RC_IN_RGB_C_INPUT_TEXTURE3 0x00000b00 -#define NV10TCL_RC_IN_RGB_C_COMPONENT_USAGE (1 << 12) -#define NV10TCL_RC_IN_RGB_C_COMPONENT_USAGE_RGB 0x00000000 -#define NV10TCL_RC_IN_RGB_C_COMPONENT_USAGE_ALPHA 0x00001000 -#define NV10TCL_RC_IN_RGB_C_MAPPING_SHIFT 13 -#define NV10TCL_RC_IN_RGB_C_MAPPING_MASK 0x0000e000 -#define NV10TCL_RC_IN_RGB_C_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_IN_RGB_C_MAPPING_UNSIGNED_INVERT 0x00002000 -#define NV10TCL_RC_IN_RGB_C_MAPPING_EXPAND_NORMAL 0x00004000 -#define NV10TCL_RC_IN_RGB_C_MAPPING_EXPAND_NEGATE 0x00006000 -#define NV10TCL_RC_IN_RGB_C_MAPPING_HALF_BIAS_NORMAL 0x00008000 -#define NV10TCL_RC_IN_RGB_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000 -#define NV10TCL_RC_IN_RGB_C_MAPPING_SIGNED_IDENTITY 0x0000c000 -#define NV10TCL_RC_IN_RGB_C_MAPPING_SIGNED_NEGATE 0x0000e000 -#define NV10TCL_RC_IN_RGB_B_INPUT_SHIFT 16 -#define NV10TCL_RC_IN_RGB_B_INPUT_MASK 0x000f0000 -#define NV10TCL_RC_IN_RGB_B_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_IN_RGB_B_INPUT_CONSTANT_COLOR0 0x00010000 -#define NV10TCL_RC_IN_RGB_B_INPUT_CONSTANT_COLOR1 0x00020000 -#define NV10TCL_RC_IN_RGB_B_INPUT_FOG 0x00030000 -#define NV10TCL_RC_IN_RGB_B_INPUT_PRIMARY_COLOR 0x00040000 -#define NV10TCL_RC_IN_RGB_B_INPUT_SECONDARY_COLOR 0x00050000 -#define NV10TCL_RC_IN_RGB_B_INPUT_TEXTURE0 0x00080000 -#define NV10TCL_RC_IN_RGB_B_INPUT_TEXTURE1 0x00090000 -#define NV10TCL_RC_IN_RGB_B_INPUT_SPARE0 0x000c0000 -#define NV10TCL_RC_IN_RGB_B_INPUT_SPARE1 0x000d0000 -#define NV10TCL_RC_IN_RGB_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 -#define NV10TCL_RC_IN_RGB_B_INPUT_E_TIMES_F 0x000f0000 -#define NV10TCL_RC_IN_RGB_B_INPUT_TEXTURE2 0x000a0000 -#define NV10TCL_RC_IN_RGB_B_INPUT_TEXTURE3 0x000b0000 -#define NV10TCL_RC_IN_RGB_B_COMPONENT_USAGE (1 << 20) -#define NV10TCL_RC_IN_RGB_B_COMPONENT_USAGE_RGB 0x00000000 -#define NV10TCL_RC_IN_RGB_B_COMPONENT_USAGE_ALPHA 0x00100000 -#define NV10TCL_RC_IN_RGB_B_MAPPING_SHIFT 21 -#define NV10TCL_RC_IN_RGB_B_MAPPING_MASK 0x00e00000 -#define NV10TCL_RC_IN_RGB_B_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_IN_RGB_B_MAPPING_UNSIGNED_INVERT 0x00200000 -#define NV10TCL_RC_IN_RGB_B_MAPPING_EXPAND_NORMAL 0x00400000 -#define NV10TCL_RC_IN_RGB_B_MAPPING_EXPAND_NEGATE 0x00600000 -#define NV10TCL_RC_IN_RGB_B_MAPPING_HALF_BIAS_NORMAL 0x00800000 -#define NV10TCL_RC_IN_RGB_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000 -#define NV10TCL_RC_IN_RGB_B_MAPPING_SIGNED_IDENTITY 0x00c00000 -#define NV10TCL_RC_IN_RGB_B_MAPPING_SIGNED_NEGATE 0x00e00000 -#define NV10TCL_RC_IN_RGB_A_INPUT_SHIFT 24 -#define NV10TCL_RC_IN_RGB_A_INPUT_MASK 0x0f000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_CONSTANT_COLOR0 0x01000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_CONSTANT_COLOR1 0x02000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_FOG 0x03000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_PRIMARY_COLOR 0x04000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_SECONDARY_COLOR 0x05000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_TEXTURE0 0x08000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_TEXTURE1 0x09000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_SPARE0 0x0c000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_SPARE1 0x0d000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_E_TIMES_F 0x0f000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_TEXTURE2 0x0a000000 -#define NV10TCL_RC_IN_RGB_A_INPUT_TEXTURE3 0x0b000000 -#define NV10TCL_RC_IN_RGB_A_COMPONENT_USAGE (1 << 28) -#define NV10TCL_RC_IN_RGB_A_COMPONENT_USAGE_RGB 0x00000000 -#define NV10TCL_RC_IN_RGB_A_COMPONENT_USAGE_ALPHA 0x10000000 -#define NV10TCL_RC_IN_RGB_A_MAPPING_SHIFT 29 -#define NV10TCL_RC_IN_RGB_A_MAPPING_MASK 0xe0000000 -#define NV10TCL_RC_IN_RGB_A_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_IN_RGB_A_MAPPING_UNSIGNED_INVERT 0x20000000 -#define NV10TCL_RC_IN_RGB_A_MAPPING_EXPAND_NORMAL 0x40000000 -#define NV10TCL_RC_IN_RGB_A_MAPPING_EXPAND_NEGATE 0x60000000 -#define NV10TCL_RC_IN_RGB_A_MAPPING_HALF_BIAS_NORMAL 0x80000000 -#define NV10TCL_RC_IN_RGB_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000 -#define NV10TCL_RC_IN_RGB_A_MAPPING_SIGNED_IDENTITY 0xc0000000 -#define NV10TCL_RC_IN_RGB_A_MAPPING_SIGNED_NEGATE 0xe0000000 -#define NV10TCL_RC_COLOR(x) (0x00000270+((x)*4)) -#define NV10TCL_RC_COLOR__SIZE 0x00000002 -#define NV10TCL_RC_COLOR_B_SHIFT 0 -#define NV10TCL_RC_COLOR_B_MASK 0x000000ff -#define NV10TCL_RC_COLOR_G_SHIFT 8 -#define NV10TCL_RC_COLOR_G_MASK 0x0000ff00 -#define NV10TCL_RC_COLOR_R_SHIFT 16 -#define NV10TCL_RC_COLOR_R_MASK 0x00ff0000 -#define NV10TCL_RC_COLOR_A_SHIFT 24 -#define NV10TCL_RC_COLOR_A_MASK 0xff000000 -#define NV10TCL_RC_OUT_ALPHA(x) (0x00000278+((x)*4)) -#define NV10TCL_RC_OUT_ALPHA__SIZE 0x00000002 -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_SHIFT 0 -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_MASK 0x0000000f -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_ZERO 0x00000000 -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR0 0x00000001 -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR1 0x00000002 -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_FOG 0x00000003 -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_PRIMARY_COLOR 0x00000004 -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_SECONDARY_COLOR 0x00000005 -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE0 0x00000008 -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE1 0x00000009 -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_SPARE0 0x0000000c -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_SPARE1 0x0000000d -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_E_TIMES_F 0x0000000f -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE2 0x0000000a -#define NV10TCL_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE3 0x0000000b -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_SHIFT 4 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_MASK 0x000000f0 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_ZERO 0x00000000 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR0 0x00000010 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR1 0x00000020 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_FOG 0x00000030 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_PRIMARY_COLOR 0x00000040 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_SECONDARY_COLOR 0x00000050 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE0 0x00000080 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE1 0x00000090 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_SPARE0 0x000000c0 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_SPARE1 0x000000d0 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000000e0 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_E_TIMES_F 0x000000f0 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE2 0x000000a0 -#define NV10TCL_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE3 0x000000b0 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_SHIFT 8 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_MASK 0x00000f00 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_ZERO 0x00000000 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR0 0x00000100 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR1 0x00000200 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_FOG 0x00000300 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_PRIMARY_COLOR 0x00000400 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_SECONDARY_COLOR 0x00000500 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE0 0x00000800 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE1 0x00000900 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0 0x00000c00 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_SPARE1 0x00000d00 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_E_TIMES_F 0x00000f00 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE2 0x00000a00 -#define NV10TCL_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE3 0x00000b00 -#define NV10TCL_RC_OUT_ALPHA_CD_DOT_PRODUCT (1 << 12) -#define NV10TCL_RC_OUT_ALPHA_AB_DOT_PRODUCT (1 << 13) -#define NV10TCL_RC_OUT_ALPHA_MUX_SUM (1 << 14) -#define NV10TCL_RC_OUT_ALPHA_BIAS (1 << 15) -#define NV10TCL_RC_OUT_ALPHA_BIAS_NONE 0x00000000 -#define NV10TCL_RC_OUT_ALPHA_BIAS_BIAS_BY_NEGATIVE_ONE_HALF 0x00008000 -#define NV10TCL_RC_OUT_ALPHA_SCALE_SHIFT 16 -#define NV10TCL_RC_OUT_ALPHA_SCALE_MASK 0x00030000 -#define NV10TCL_RC_OUT_ALPHA_SCALE_NONE 0x00000000 -#define NV10TCL_RC_OUT_ALPHA_SCALE_SCALE_BY_TWO 0x00010000 -#define NV10TCL_RC_OUT_ALPHA_SCALE_SCALE_BY_FOUR 0x00020000 -#define NV10TCL_RC_OUT_ALPHA_SCALE_SCALE_BY_ONE_HALF 0x00030000 -#define NV10TCL_RC_OUT_RGB(x) (0x00000280+((x)*4)) -#define NV10TCL_RC_OUT_RGB__SIZE 0x00000002 -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_SHIFT 0 -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_MASK 0x0000000f -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_ZERO 0x00000000 -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR0 0x00000001 -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR1 0x00000002 -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_FOG 0x00000003 -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_PRIMARY_COLOR 0x00000004 -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_SECONDARY_COLOR 0x00000005 -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_TEXTURE0 0x00000008 -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_TEXTURE1 0x00000009 -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_SPARE0 0x0000000c -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_SPARE1 0x0000000d -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_E_TIMES_F 0x0000000f -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_TEXTURE2 0x0000000a -#define NV10TCL_RC_OUT_RGB_CD_OUTPUT_TEXTURE3 0x0000000b -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_SHIFT 4 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_MASK 0x000000f0 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_ZERO 0x00000000 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR0 0x00000010 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR1 0x00000020 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_FOG 0x00000030 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_PRIMARY_COLOR 0x00000040 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_SECONDARY_COLOR 0x00000050 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_TEXTURE0 0x00000080 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_TEXTURE1 0x00000090 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_SPARE0 0x000000c0 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_SPARE1 0x000000d0 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000000e0 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_E_TIMES_F 0x000000f0 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_TEXTURE2 0x000000a0 -#define NV10TCL_RC_OUT_RGB_AB_OUTPUT_TEXTURE3 0x000000b0 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_SHIFT 8 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_MASK 0x00000f00 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_ZERO 0x00000000 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR0 0x00000100 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR1 0x00000200 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_FOG 0x00000300 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_PRIMARY_COLOR 0x00000400 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_SECONDARY_COLOR 0x00000500 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_TEXTURE0 0x00000800 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_TEXTURE1 0x00000900 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_SPARE0 0x00000c00 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_SPARE1 0x00000d00 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_E_TIMES_F 0x00000f00 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_TEXTURE2 0x00000a00 -#define NV10TCL_RC_OUT_RGB_SUM_OUTPUT_TEXTURE3 0x00000b00 -#define NV10TCL_RC_OUT_RGB_CD_DOT_PRODUCT (1 << 12) -#define NV10TCL_RC_OUT_RGB_AB_DOT_PRODUCT (1 << 13) -#define NV10TCL_RC_OUT_RGB_MUX_SUM (1 << 14) -#define NV10TCL_RC_OUT_RGB_BIAS (1 << 15) -#define NV10TCL_RC_OUT_RGB_BIAS_NONE 0x00000000 -#define NV10TCL_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF 0x00008000 -#define NV10TCL_RC_OUT_RGB_SCALE_SHIFT 16 -#define NV10TCL_RC_OUT_RGB_SCALE_MASK 0x00030000 -#define NV10TCL_RC_OUT_RGB_SCALE_NONE 0x00000000 -#define NV10TCL_RC_OUT_RGB_SCALE_SCALE_BY_TWO 0x00010000 -#define NV10TCL_RC_OUT_RGB_SCALE_SCALE_BY_FOUR 0x00020000 -#define NV10TCL_RC_OUT_RGB_SCALE_SCALE_BY_ONE_HALF 0x00030000 -#define NV10TCL_RC_OUT_RGB_OPERATION_SHIFT 27 -#define NV10TCL_RC_OUT_RGB_OPERATION_MASK 0x38000000 -#define NV10TCL_RC_FINAL0 0x00000288 -#define NV10TCL_RC_FINAL0_D_INPUT_SHIFT 0 -#define NV10TCL_RC_FINAL0_D_INPUT_MASK 0x0000000f -#define NV10TCL_RC_FINAL0_D_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_FINAL0_D_INPUT_CONSTANT_COLOR0 0x00000001 -#define NV10TCL_RC_FINAL0_D_INPUT_CONSTANT_COLOR1 0x00000002 -#define NV10TCL_RC_FINAL0_D_INPUT_FOG 0x00000003 -#define NV10TCL_RC_FINAL0_D_INPUT_PRIMARY_COLOR 0x00000004 -#define NV10TCL_RC_FINAL0_D_INPUT_SECONDARY_COLOR 0x00000005 -#define NV10TCL_RC_FINAL0_D_INPUT_TEXTURE0 0x00000008 -#define NV10TCL_RC_FINAL0_D_INPUT_TEXTURE1 0x00000009 -#define NV10TCL_RC_FINAL0_D_INPUT_SPARE0 0x0000000c -#define NV10TCL_RC_FINAL0_D_INPUT_SPARE1 0x0000000d -#define NV10TCL_RC_FINAL0_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e -#define NV10TCL_RC_FINAL0_D_INPUT_E_TIMES_F 0x0000000f -#define NV10TCL_RC_FINAL0_D_INPUT_TEXTURE2 0x0000000a -#define NV10TCL_RC_FINAL0_D_INPUT_TEXTURE3 0x0000000b -#define NV10TCL_RC_FINAL0_D_COMPONENT_USAGE (1 << 4) -#define NV10TCL_RC_FINAL0_D_COMPONENT_USAGE_RGB 0x00000000 -#define NV10TCL_RC_FINAL0_D_COMPONENT_USAGE_ALPHA 0x00000010 -#define NV10TCL_RC_FINAL0_D_MAPPING_SHIFT 5 -#define NV10TCL_RC_FINAL0_D_MAPPING_MASK 0x000000e0 -#define NV10TCL_RC_FINAL0_D_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_FINAL0_D_MAPPING_UNSIGNED_INVERT 0x00000020 -#define NV10TCL_RC_FINAL0_D_MAPPING_EXPAND_NORMAL 0x00000040 -#define NV10TCL_RC_FINAL0_D_MAPPING_EXPAND_NEGATE 0x00000060 -#define NV10TCL_RC_FINAL0_D_MAPPING_HALF_BIAS_NORMAL 0x00000080 -#define NV10TCL_RC_FINAL0_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0 -#define NV10TCL_RC_FINAL0_D_MAPPING_SIGNED_IDENTITY 0x000000c0 -#define NV10TCL_RC_FINAL0_D_MAPPING_SIGNED_NEGATE 0x000000e0 -#define NV10TCL_RC_FINAL0_C_INPUT_SHIFT 8 -#define NV10TCL_RC_FINAL0_C_INPUT_MASK 0x00000f00 -#define NV10TCL_RC_FINAL0_C_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_FINAL0_C_INPUT_CONSTANT_COLOR0 0x00000100 -#define NV10TCL_RC_FINAL0_C_INPUT_CONSTANT_COLOR1 0x00000200 -#define NV10TCL_RC_FINAL0_C_INPUT_FOG 0x00000300 -#define NV10TCL_RC_FINAL0_C_INPUT_PRIMARY_COLOR 0x00000400 -#define NV10TCL_RC_FINAL0_C_INPUT_SECONDARY_COLOR 0x00000500 -#define NV10TCL_RC_FINAL0_C_INPUT_TEXTURE0 0x00000800 -#define NV10TCL_RC_FINAL0_C_INPUT_TEXTURE1 0x00000900 -#define NV10TCL_RC_FINAL0_C_INPUT_SPARE0 0x00000c00 -#define NV10TCL_RC_FINAL0_C_INPUT_SPARE1 0x00000d00 -#define NV10TCL_RC_FINAL0_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 -#define NV10TCL_RC_FINAL0_C_INPUT_E_TIMES_F 0x00000f00 -#define NV10TCL_RC_FINAL0_C_INPUT_TEXTURE2 0x00000a00 -#define NV10TCL_RC_FINAL0_C_INPUT_TEXTURE3 0x00000b00 -#define NV10TCL_RC_FINAL0_C_COMPONENT_USAGE (1 << 12) -#define NV10TCL_RC_FINAL0_C_COMPONENT_USAGE_RGB 0x00000000 -#define NV10TCL_RC_FINAL0_C_COMPONENT_USAGE_ALPHA 0x00001000 -#define NV10TCL_RC_FINAL0_C_MAPPING_SHIFT 13 -#define NV10TCL_RC_FINAL0_C_MAPPING_MASK 0x0000e000 -#define NV10TCL_RC_FINAL0_C_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_FINAL0_C_MAPPING_UNSIGNED_INVERT 0x00002000 -#define NV10TCL_RC_FINAL0_C_MAPPING_EXPAND_NORMAL 0x00004000 -#define NV10TCL_RC_FINAL0_C_MAPPING_EXPAND_NEGATE 0x00006000 -#define NV10TCL_RC_FINAL0_C_MAPPING_HALF_BIAS_NORMAL 0x00008000 -#define NV10TCL_RC_FINAL0_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000 -#define NV10TCL_RC_FINAL0_C_MAPPING_SIGNED_IDENTITY 0x0000c000 -#define NV10TCL_RC_FINAL0_C_MAPPING_SIGNED_NEGATE 0x0000e000 -#define NV10TCL_RC_FINAL0_B_INPUT_SHIFT 16 -#define NV10TCL_RC_FINAL0_B_INPUT_MASK 0x000f0000 -#define NV10TCL_RC_FINAL0_B_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_FINAL0_B_INPUT_CONSTANT_COLOR0 0x00010000 -#define NV10TCL_RC_FINAL0_B_INPUT_CONSTANT_COLOR1 0x00020000 -#define NV10TCL_RC_FINAL0_B_INPUT_FOG 0x00030000 -#define NV10TCL_RC_FINAL0_B_INPUT_PRIMARY_COLOR 0x00040000 -#define NV10TCL_RC_FINAL0_B_INPUT_SECONDARY_COLOR 0x00050000 -#define NV10TCL_RC_FINAL0_B_INPUT_TEXTURE0 0x00080000 -#define NV10TCL_RC_FINAL0_B_INPUT_TEXTURE1 0x00090000 -#define NV10TCL_RC_FINAL0_B_INPUT_SPARE0 0x000c0000 -#define NV10TCL_RC_FINAL0_B_INPUT_SPARE1 0x000d0000 -#define NV10TCL_RC_FINAL0_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 -#define NV10TCL_RC_FINAL0_B_INPUT_E_TIMES_F 0x000f0000 -#define NV10TCL_RC_FINAL0_B_INPUT_TEXTURE2 0x000a0000 -#define NV10TCL_RC_FINAL0_B_INPUT_TEXTURE3 0x000b0000 -#define NV10TCL_RC_FINAL0_B_COMPONENT_USAGE (1 << 20) -#define NV10TCL_RC_FINAL0_B_COMPONENT_USAGE_RGB 0x00000000 -#define NV10TCL_RC_FINAL0_B_COMPONENT_USAGE_ALPHA 0x00100000 -#define NV10TCL_RC_FINAL0_B_MAPPING_SHIFT 21 -#define NV10TCL_RC_FINAL0_B_MAPPING_MASK 0x00e00000 -#define NV10TCL_RC_FINAL0_B_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_FINAL0_B_MAPPING_UNSIGNED_INVERT 0x00200000 -#define NV10TCL_RC_FINAL0_B_MAPPING_EXPAND_NORMAL 0x00400000 -#define NV10TCL_RC_FINAL0_B_MAPPING_EXPAND_NEGATE 0x00600000 -#define NV10TCL_RC_FINAL0_B_MAPPING_HALF_BIAS_NORMAL 0x00800000 -#define NV10TCL_RC_FINAL0_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000 -#define NV10TCL_RC_FINAL0_B_MAPPING_SIGNED_IDENTITY 0x00c00000 -#define NV10TCL_RC_FINAL0_B_MAPPING_SIGNED_NEGATE 0x00e00000 -#define NV10TCL_RC_FINAL0_A_INPUT_SHIFT 24 -#define NV10TCL_RC_FINAL0_A_INPUT_MASK 0x0f000000 -#define NV10TCL_RC_FINAL0_A_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_FINAL0_A_INPUT_CONSTANT_COLOR0 0x01000000 -#define NV10TCL_RC_FINAL0_A_INPUT_CONSTANT_COLOR1 0x02000000 -#define NV10TCL_RC_FINAL0_A_INPUT_FOG 0x03000000 -#define NV10TCL_RC_FINAL0_A_INPUT_PRIMARY_COLOR 0x04000000 -#define NV10TCL_RC_FINAL0_A_INPUT_SECONDARY_COLOR 0x05000000 -#define NV10TCL_RC_FINAL0_A_INPUT_TEXTURE0 0x08000000 -#define NV10TCL_RC_FINAL0_A_INPUT_TEXTURE1 0x09000000 -#define NV10TCL_RC_FINAL0_A_INPUT_SPARE0 0x0c000000 -#define NV10TCL_RC_FINAL0_A_INPUT_SPARE1 0x0d000000 -#define NV10TCL_RC_FINAL0_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 -#define NV10TCL_RC_FINAL0_A_INPUT_E_TIMES_F 0x0f000000 -#define NV10TCL_RC_FINAL0_A_INPUT_TEXTURE2 0x0a000000 -#define NV10TCL_RC_FINAL0_A_INPUT_TEXTURE3 0x0b000000 -#define NV10TCL_RC_FINAL0_A_COMPONENT_USAGE (1 << 28) -#define NV10TCL_RC_FINAL0_A_COMPONENT_USAGE_RGB 0x00000000 -#define NV10TCL_RC_FINAL0_A_COMPONENT_USAGE_ALPHA 0x10000000 -#define NV10TCL_RC_FINAL0_A_MAPPING_SHIFT 29 -#define NV10TCL_RC_FINAL0_A_MAPPING_MASK 0xe0000000 -#define NV10TCL_RC_FINAL0_A_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_FINAL0_A_MAPPING_UNSIGNED_INVERT 0x20000000 -#define NV10TCL_RC_FINAL0_A_MAPPING_EXPAND_NORMAL 0x40000000 -#define NV10TCL_RC_FINAL0_A_MAPPING_EXPAND_NEGATE 0x60000000 -#define NV10TCL_RC_FINAL0_A_MAPPING_HALF_BIAS_NORMAL 0x80000000 -#define NV10TCL_RC_FINAL0_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000 -#define NV10TCL_RC_FINAL0_A_MAPPING_SIGNED_IDENTITY 0xc0000000 -#define NV10TCL_RC_FINAL0_A_MAPPING_SIGNED_NEGATE 0xe0000000 -#define NV10TCL_RC_FINAL1 0x0000028c -#define NV10TCL_RC_FINAL1_COLOR_SUM_CLAMP (1 << 7) -#define NV10TCL_RC_FINAL1_G_INPUT_SHIFT 8 -#define NV10TCL_RC_FINAL1_G_INPUT_MASK 0x00000f00 -#define NV10TCL_RC_FINAL1_G_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_FINAL1_G_INPUT_CONSTANT_COLOR0 0x00000100 -#define NV10TCL_RC_FINAL1_G_INPUT_CONSTANT_COLOR1 0x00000200 -#define NV10TCL_RC_FINAL1_G_INPUT_FOG 0x00000300 -#define NV10TCL_RC_FINAL1_G_INPUT_PRIMARY_COLOR 0x00000400 -#define NV10TCL_RC_FINAL1_G_INPUT_SECONDARY_COLOR 0x00000500 -#define NV10TCL_RC_FINAL1_G_INPUT_TEXTURE0 0x00000800 -#define NV10TCL_RC_FINAL1_G_INPUT_TEXTURE1 0x00000900 -#define NV10TCL_RC_FINAL1_G_INPUT_SPARE0 0x00000c00 -#define NV10TCL_RC_FINAL1_G_INPUT_SPARE1 0x00000d00 -#define NV10TCL_RC_FINAL1_G_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 -#define NV10TCL_RC_FINAL1_G_INPUT_E_TIMES_F 0x00000f00 -#define NV10TCL_RC_FINAL1_G_INPUT_TEXTURE2 0x00000a00 -#define NV10TCL_RC_FINAL1_G_INPUT_TEXTURE3 0x00000b00 -#define NV10TCL_RC_FINAL1_G_COMPONENT_USAGE (1 << 12) -#define NV10TCL_RC_FINAL1_G_COMPONENT_USAGE_RGB 0x00000000 -#define NV10TCL_RC_FINAL1_G_COMPONENT_USAGE_ALPHA 0x00001000 -#define NV10TCL_RC_FINAL1_G_MAPPING_SHIFT 13 -#define NV10TCL_RC_FINAL1_G_MAPPING_MASK 0x0000e000 -#define NV10TCL_RC_FINAL1_G_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_FINAL1_G_MAPPING_UNSIGNED_INVERT 0x00002000 -#define NV10TCL_RC_FINAL1_G_MAPPING_EXPAND_NORMAL 0x00004000 -#define NV10TCL_RC_FINAL1_G_MAPPING_EXPAND_NEGATE 0x00006000 -#define NV10TCL_RC_FINAL1_G_MAPPING_HALF_BIAS_NORMAL 0x00008000 -#define NV10TCL_RC_FINAL1_G_MAPPING_HALF_BIAS_NEGATE 0x0000a000 -#define NV10TCL_RC_FINAL1_G_MAPPING_SIGNED_IDENTITY 0x0000c000 -#define NV10TCL_RC_FINAL1_G_MAPPING_SIGNED_NEGATE 0x0000e000 -#define NV10TCL_RC_FINAL1_F_INPUT_SHIFT 16 -#define NV10TCL_RC_FINAL1_F_INPUT_MASK 0x000f0000 -#define NV10TCL_RC_FINAL1_F_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_FINAL1_F_INPUT_CONSTANT_COLOR0 0x00010000 -#define NV10TCL_RC_FINAL1_F_INPUT_CONSTANT_COLOR1 0x00020000 -#define NV10TCL_RC_FINAL1_F_INPUT_FOG 0x00030000 -#define NV10TCL_RC_FINAL1_F_INPUT_PRIMARY_COLOR 0x00040000 -#define NV10TCL_RC_FINAL1_F_INPUT_SECONDARY_COLOR 0x00050000 -#define NV10TCL_RC_FINAL1_F_INPUT_TEXTURE0 0x00080000 -#define NV10TCL_RC_FINAL1_F_INPUT_TEXTURE1 0x00090000 -#define NV10TCL_RC_FINAL1_F_INPUT_SPARE0 0x000c0000 -#define NV10TCL_RC_FINAL1_F_INPUT_SPARE1 0x000d0000 -#define NV10TCL_RC_FINAL1_F_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 -#define NV10TCL_RC_FINAL1_F_INPUT_E_TIMES_F 0x000f0000 -#define NV10TCL_RC_FINAL1_F_INPUT_TEXTURE2 0x000a0000 -#define NV10TCL_RC_FINAL1_F_INPUT_TEXTURE3 0x000b0000 -#define NV10TCL_RC_FINAL1_F_COMPONENT_USAGE (1 << 20) -#define NV10TCL_RC_FINAL1_F_COMPONENT_USAGE_RGB 0x00000000 -#define NV10TCL_RC_FINAL1_F_COMPONENT_USAGE_ALPHA 0x00100000 -#define NV10TCL_RC_FINAL1_F_MAPPING_SHIFT 21 -#define NV10TCL_RC_FINAL1_F_MAPPING_MASK 0x00e00000 -#define NV10TCL_RC_FINAL1_F_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_FINAL1_F_MAPPING_UNSIGNED_INVERT 0x00200000 -#define NV10TCL_RC_FINAL1_F_MAPPING_EXPAND_NORMAL 0x00400000 -#define NV10TCL_RC_FINAL1_F_MAPPING_EXPAND_NEGATE 0x00600000 -#define NV10TCL_RC_FINAL1_F_MAPPING_HALF_BIAS_NORMAL 0x00800000 -#define NV10TCL_RC_FINAL1_F_MAPPING_HALF_BIAS_NEGATE 0x00a00000 -#define NV10TCL_RC_FINAL1_F_MAPPING_SIGNED_IDENTITY 0x00c00000 -#define NV10TCL_RC_FINAL1_F_MAPPING_SIGNED_NEGATE 0x00e00000 -#define NV10TCL_RC_FINAL1_E_INPUT_SHIFT 24 -#define NV10TCL_RC_FINAL1_E_INPUT_MASK 0x0f000000 -#define NV10TCL_RC_FINAL1_E_INPUT_ZERO 0x00000000 -#define NV10TCL_RC_FINAL1_E_INPUT_CONSTANT_COLOR0 0x01000000 -#define NV10TCL_RC_FINAL1_E_INPUT_CONSTANT_COLOR1 0x02000000 -#define NV10TCL_RC_FINAL1_E_INPUT_FOG 0x03000000 -#define NV10TCL_RC_FINAL1_E_INPUT_PRIMARY_COLOR 0x04000000 -#define NV10TCL_RC_FINAL1_E_INPUT_SECONDARY_COLOR 0x05000000 -#define NV10TCL_RC_FINAL1_E_INPUT_TEXTURE0 0x08000000 -#define NV10TCL_RC_FINAL1_E_INPUT_TEXTURE1 0x09000000 -#define NV10TCL_RC_FINAL1_E_INPUT_SPARE0 0x0c000000 -#define NV10TCL_RC_FINAL1_E_INPUT_SPARE1 0x0d000000 -#define NV10TCL_RC_FINAL1_E_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 -#define NV10TCL_RC_FINAL1_E_INPUT_E_TIMES_F 0x0f000000 -#define NV10TCL_RC_FINAL1_E_INPUT_TEXTURE2 0x0a000000 -#define NV10TCL_RC_FINAL1_E_INPUT_TEXTURE3 0x0b000000 -#define NV10TCL_RC_FINAL1_E_COMPONENT_USAGE (1 << 28) -#define NV10TCL_RC_FINAL1_E_COMPONENT_USAGE_RGB 0x00000000 -#define NV10TCL_RC_FINAL1_E_COMPONENT_USAGE_ALPHA 0x10000000 -#define NV10TCL_RC_FINAL1_E_MAPPING_SHIFT 29 -#define NV10TCL_RC_FINAL1_E_MAPPING_MASK 0xe0000000 -#define NV10TCL_RC_FINAL1_E_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV10TCL_RC_FINAL1_E_MAPPING_UNSIGNED_INVERT 0x20000000 -#define NV10TCL_RC_FINAL1_E_MAPPING_EXPAND_NORMAL 0x40000000 -#define NV10TCL_RC_FINAL1_E_MAPPING_EXPAND_NEGATE 0x60000000 -#define NV10TCL_RC_FINAL1_E_MAPPING_HALF_BIAS_NORMAL 0x80000000 -#define NV10TCL_RC_FINAL1_E_MAPPING_HALF_BIAS_NEGATE 0xa0000000 -#define NV10TCL_RC_FINAL1_E_MAPPING_SIGNED_IDENTITY 0xc0000000 -#define NV10TCL_RC_FINAL1_E_MAPPING_SIGNED_NEGATE 0xe0000000 -#define NV10TCL_LIGHT_MODEL 0x00000294 -#define NV10TCL_LIGHT_MODEL_VERTEX_SPECULAR (1 << 0) -#define NV10TCL_LIGHT_MODEL_SEPARATE_SPECULAR (1 << 1) -#define NV10TCL_LIGHT_MODEL_LOCAL_VIEWER (1 << 16) -#define NV10TCL_COLOR_MATERIAL 0x00000298 -#define NV10TCL_COLOR_MATERIAL_EMISSION (1 << 0) -#define NV10TCL_COLOR_MATERIAL_AMBIENT (1 << 1) -#define NV10TCL_COLOR_MATERIAL_DIFFUSE (1 << 2) -#define NV10TCL_COLOR_MATERIAL_SPECULAR (1 << 3) -#define NV10TCL_FOG_MODE 0x0000029c -#define NV10TCL_FOG_MODE_LINEAR 0x00002601 -#define NV10TCL_FOG_MODE_EXP 0x00000800 -#define NV10TCL_FOG_MODE_EXP_ABS 0x00000802 -#define NV10TCL_FOG_MODE_EXP2 0x00000803 -#define NV10TCL_FOG_COORD 0x000002a0 -#define NV10TCL_FOG_COORD_FOG 0x00000000 -#define NV10TCL_FOG_COORD_DIST_RADIAL 0x00000001 -#define NV10TCL_FOG_COORD_DIST_ORTHOGONAL 0x00000002 -#define NV10TCL_FOG_COORD_DIST_ORTHOGONAL_ABS 0x00000003 -#define NV10TCL_FOG_ENABLE 0x000002a4 -#define NV10TCL_FOG_COLOR 0x000002a8 -#define NV10TCL_FOG_COLOR_R_SHIFT 0 -#define NV10TCL_FOG_COLOR_R_MASK 0x000000ff -#define NV10TCL_FOG_COLOR_G_SHIFT 8 -#define NV10TCL_FOG_COLOR_G_MASK 0x0000ff00 -#define NV10TCL_FOG_COLOR_B_SHIFT 16 -#define NV10TCL_FOG_COLOR_B_MASK 0x00ff0000 -#define NV10TCL_FOG_COLOR_A_SHIFT 24 -#define NV10TCL_FOG_COLOR_A_MASK 0xff000000 -#define NV10TCL_VIEWPORT_CLIP_MODE 0x000002b4 -#define NV10TCL_VIEWPORT_CLIP_HORIZ(x) (0x000002c0+((x)*4)) -#define NV10TCL_VIEWPORT_CLIP_HORIZ__SIZE 0x00000008 -#define NV10TCL_VIEWPORT_CLIP_HORIZ_CLIP_L_SHIFT 0 -#define NV10TCL_VIEWPORT_CLIP_HORIZ_CLIP_L_MASK 0x000007ff -#define NV10TCL_VIEWPORT_CLIP_HORIZ_CLIP_LEFT_ENABLE (1 << 11) -#define NV10TCL_VIEWPORT_CLIP_HORIZ_CLIP_R_SHIFT 16 -#define NV10TCL_VIEWPORT_CLIP_HORIZ_CLIP_R_MASK 0x07ff0000 -#define NV10TCL_VIEWPORT_CLIP_HORIZ_CLIP_RIGHT_ENABLE (1 << 27) -#define NV10TCL_VIEWPORT_CLIP_VERT(x) (0x000002e0+((x)*4)) -#define NV10TCL_VIEWPORT_CLIP_VERT__SIZE 0x00000008 -#define NV10TCL_VIEWPORT_CLIP_VERT_CLIP_T_SHIFT 0 -#define NV10TCL_VIEWPORT_CLIP_VERT_CLIP_T_MASK 0x000007ff -#define NV10TCL_VIEWPORT_CLIP_VERT_CLIP_TOP_ENABLE (1 << 11) -#define NV10TCL_VIEWPORT_CLIP_VERT_CLIP_B_SHIFT 16 -#define NV10TCL_VIEWPORT_CLIP_VERT_CLIP_B_MASK 0x07ff0000 -#define NV10TCL_VIEWPORT_CLIP_VERT_CLIP_BOTTOM_ENABLE (1 << 27) -#define NV10TCL_ALPHA_FUNC_ENABLE 0x00000300 -#define NV10TCL_BLEND_FUNC_ENABLE 0x00000304 -#define NV10TCL_CULL_FACE_ENABLE 0x00000308 -#define NV10TCL_DEPTH_TEST_ENABLE 0x0000030c -#define NV10TCL_DITHER_ENABLE 0x00000310 -#define NV10TCL_LIGHTING_ENABLE 0x00000314 -#define NV10TCL_POINT_PARAMETERS_ENABLE 0x00000318 -#define NV10TCL_POINT_SMOOTH_ENABLE 0x0000031c -#define NV10TCL_LINE_SMOOTH_ENABLE 0x00000320 -#define NV10TCL_POLYGON_SMOOTH_ENABLE 0x00000324 -#define NV10TCL_VERTEX_WEIGHT_ENABLE 0x00000328 -#define NV10TCL_STENCIL_ENABLE 0x0000032c -#define NV10TCL_POLYGON_OFFSET_POINT_ENABLE 0x00000330 -#define NV10TCL_POLYGON_OFFSET_LINE_ENABLE 0x00000334 -#define NV10TCL_POLYGON_OFFSET_FILL_ENABLE 0x00000338 -#define NV10TCL_ALPHA_FUNC_FUNC 0x0000033c -#define NV10TCL_ALPHA_FUNC_FUNC_NEVER 0x00000200 -#define NV10TCL_ALPHA_FUNC_FUNC_LESS 0x00000201 -#define NV10TCL_ALPHA_FUNC_FUNC_EQUAL 0x00000202 -#define NV10TCL_ALPHA_FUNC_FUNC_LEQUAL 0x00000203 -#define NV10TCL_ALPHA_FUNC_FUNC_GREATER 0x00000204 -#define NV10TCL_ALPHA_FUNC_FUNC_NOTEQUAL 0x00000205 -#define NV10TCL_ALPHA_FUNC_FUNC_GEQUAL 0x00000206 -#define NV10TCL_ALPHA_FUNC_FUNC_ALWAYS 0x00000207 -#define NV10TCL_ALPHA_FUNC_REF 0x00000340 -#define NV10TCL_BLEND_FUNC_SRC 0x00000344 -#define NV10TCL_BLEND_FUNC_SRC_ZERO 0x00000000 -#define NV10TCL_BLEND_FUNC_SRC_ONE 0x00000001 -#define NV10TCL_BLEND_FUNC_SRC_SRC_COLOR 0x00000300 -#define NV10TCL_BLEND_FUNC_SRC_ONE_MINUS_SRC_COLOR 0x00000301 -#define NV10TCL_BLEND_FUNC_SRC_SRC_ALPHA 0x00000302 -#define NV10TCL_BLEND_FUNC_SRC_ONE_MINUS_SRC_ALPHA 0x00000303 -#define NV10TCL_BLEND_FUNC_SRC_DST_ALPHA 0x00000304 -#define NV10TCL_BLEND_FUNC_SRC_ONE_MINUS_DST_ALPHA 0x00000305 -#define NV10TCL_BLEND_FUNC_SRC_DST_COLOR 0x00000306 -#define NV10TCL_BLEND_FUNC_SRC_ONE_MINUS_DST_COLOR 0x00000307 -#define NV10TCL_BLEND_FUNC_SRC_SRC_ALPHA_SATURATE 0x00000308 -#define NV10TCL_BLEND_FUNC_SRC_CONSTANT_COLOR 0x00008001 -#define NV10TCL_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_COLOR 0x00008002 -#define NV10TCL_BLEND_FUNC_SRC_CONSTANT_ALPHA 0x00008003 -#define NV10TCL_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_ALPHA 0x00008004 -#define NV10TCL_BLEND_FUNC_DST 0x00000348 -#define NV10TCL_BLEND_FUNC_DST_ZERO 0x00000000 -#define NV10TCL_BLEND_FUNC_DST_ONE 0x00000001 -#define NV10TCL_BLEND_FUNC_DST_SRC_COLOR 0x00000300 -#define NV10TCL_BLEND_FUNC_DST_ONE_MINUS_SRC_COLOR 0x00000301 -#define NV10TCL_BLEND_FUNC_DST_SRC_ALPHA 0x00000302 -#define NV10TCL_BLEND_FUNC_DST_ONE_MINUS_SRC_ALPHA 0x00000303 -#define NV10TCL_BLEND_FUNC_DST_DST_ALPHA 0x00000304 -#define NV10TCL_BLEND_FUNC_DST_ONE_MINUS_DST_ALPHA 0x00000305 -#define NV10TCL_BLEND_FUNC_DST_DST_COLOR 0x00000306 -#define NV10TCL_BLEND_FUNC_DST_ONE_MINUS_DST_COLOR 0x00000307 -#define NV10TCL_BLEND_FUNC_DST_SRC_ALPHA_SATURATE 0x00000308 -#define NV10TCL_BLEND_FUNC_DST_CONSTANT_COLOR 0x00008001 -#define NV10TCL_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_COLOR 0x00008002 -#define NV10TCL_BLEND_FUNC_DST_CONSTANT_ALPHA 0x00008003 -#define NV10TCL_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_ALPHA 0x00008004 -#define NV10TCL_BLEND_COLOR 0x0000034c -#define NV10TCL_BLEND_COLOR_B_SHIFT 0 -#define NV10TCL_BLEND_COLOR_B_MASK 0x000000ff -#define NV10TCL_BLEND_COLOR_G_SHIFT 8 -#define NV10TCL_BLEND_COLOR_G_MASK 0x0000ff00 -#define NV10TCL_BLEND_COLOR_R_SHIFT 16 -#define NV10TCL_BLEND_COLOR_R_MASK 0x00ff0000 -#define NV10TCL_BLEND_COLOR_A_SHIFT 24 -#define NV10TCL_BLEND_COLOR_A_MASK 0xff000000 -#define NV10TCL_BLEND_EQUATION 0x00000350 -#define NV10TCL_BLEND_EQUATION_FUNC_ADD 0x00008006 -#define NV10TCL_BLEND_EQUATION_MIN 0x00008007 -#define NV10TCL_BLEND_EQUATION_MAX 0x00008008 -#define NV10TCL_BLEND_EQUATION_FUNC_SUBTRACT 0x0000800a -#define NV10TCL_BLEND_EQUATION_FUNC_REVERSE_SUBTRACT 0x0000800b -#define NV10TCL_DEPTH_FUNC 0x00000354 -#define NV10TCL_DEPTH_FUNC_NEVER 0x00000200 -#define NV10TCL_DEPTH_FUNC_LESS 0x00000201 -#define NV10TCL_DEPTH_FUNC_EQUAL 0x00000202 -#define NV10TCL_DEPTH_FUNC_LEQUAL 0x00000203 -#define NV10TCL_DEPTH_FUNC_GREATER 0x00000204 -#define NV10TCL_DEPTH_FUNC_NOTEQUAL 0x00000205 -#define NV10TCL_DEPTH_FUNC_GEQUAL 0x00000206 -#define NV10TCL_DEPTH_FUNC_ALWAYS 0x00000207 -#define NV10TCL_COLOR_MASK 0x00000358 -#define NV10TCL_COLOR_MASK_B (1 << 0) -#define NV10TCL_COLOR_MASK_G (1 << 8) -#define NV10TCL_COLOR_MASK_R (1 << 16) -#define NV10TCL_COLOR_MASK_A (1 << 24) -#define NV10TCL_DEPTH_WRITE_ENABLE 0x0000035c -#define NV10TCL_STENCIL_MASK 0x00000360 -#define NV10TCL_STENCIL_FUNC_FUNC 0x00000364 -#define NV10TCL_STENCIL_FUNC_FUNC_NEVER 0x00000200 -#define NV10TCL_STENCIL_FUNC_FUNC_LESS 0x00000201 -#define NV10TCL_STENCIL_FUNC_FUNC_EQUAL 0x00000202 -#define NV10TCL_STENCIL_FUNC_FUNC_LEQUAL 0x00000203 -#define NV10TCL_STENCIL_FUNC_FUNC_GREATER 0x00000204 -#define NV10TCL_STENCIL_FUNC_FUNC_NOTEQUAL 0x00000205 -#define NV10TCL_STENCIL_FUNC_FUNC_GEQUAL 0x00000206 -#define NV10TCL_STENCIL_FUNC_FUNC_ALWAYS 0x00000207 -#define NV10TCL_STENCIL_FUNC_REF 0x00000368 -#define NV10TCL_STENCIL_FUNC_MASK 0x0000036c -#define NV10TCL_STENCIL_OP_FAIL 0x00000370 -#define NV10TCL_STENCIL_OP_FAIL_ZERO 0x00000000 -#define NV10TCL_STENCIL_OP_FAIL_INVERT 0x0000150a -#define NV10TCL_STENCIL_OP_FAIL_KEEP 0x00001e00 -#define NV10TCL_STENCIL_OP_FAIL_REPLACE 0x00001e01 -#define NV10TCL_STENCIL_OP_FAIL_INCR 0x00001e02 -#define NV10TCL_STENCIL_OP_FAIL_DECR 0x00001e03 -#define NV10TCL_STENCIL_OP_FAIL_INCR_WRAP 0x00008507 -#define NV10TCL_STENCIL_OP_FAIL_DECR_WRAP 0x00008508 -#define NV10TCL_STENCIL_OP_ZFAIL 0x00000374 -#define NV10TCL_STENCIL_OP_ZFAIL_ZERO 0x00000000 -#define NV10TCL_STENCIL_OP_ZFAIL_INVERT 0x0000150a -#define NV10TCL_STENCIL_OP_ZFAIL_KEEP 0x00001e00 -#define NV10TCL_STENCIL_OP_ZFAIL_REPLACE 0x00001e01 -#define NV10TCL_STENCIL_OP_ZFAIL_INCR 0x00001e02 -#define NV10TCL_STENCIL_OP_ZFAIL_DECR 0x00001e03 -#define NV10TCL_STENCIL_OP_ZFAIL_INCR_WRAP 0x00008507 -#define NV10TCL_STENCIL_OP_ZFAIL_DECR_WRAP 0x00008508 -#define NV10TCL_STENCIL_OP_ZPASS 0x00000378 -#define NV10TCL_STENCIL_OP_ZPASS_ZERO 0x00000000 -#define NV10TCL_STENCIL_OP_ZPASS_INVERT 0x0000150a -#define NV10TCL_STENCIL_OP_ZPASS_KEEP 0x00001e00 -#define NV10TCL_STENCIL_OP_ZPASS_REPLACE 0x00001e01 -#define NV10TCL_STENCIL_OP_ZPASS_INCR 0x00001e02 -#define NV10TCL_STENCIL_OP_ZPASS_DECR 0x00001e03 -#define NV10TCL_STENCIL_OP_ZPASS_INCR_WRAP 0x00008507 -#define NV10TCL_STENCIL_OP_ZPASS_DECR_WRAP 0x00008508 -#define NV10TCL_SHADE_MODEL 0x0000037c -#define NV10TCL_SHADE_MODEL_FLAT 0x00001d00 -#define NV10TCL_SHADE_MODEL_SMOOTH 0x00001d01 -#define NV10TCL_LINE_WIDTH 0x00000380 -#define NV10TCL_POLYGON_OFFSET_FACTOR 0x00000384 -#define NV10TCL_POLYGON_OFFSET_UNITS 0x00000388 -#define NV10TCL_POLYGON_MODE_FRONT 0x0000038c -#define NV10TCL_POLYGON_MODE_FRONT_POINT 0x00001b00 -#define NV10TCL_POLYGON_MODE_FRONT_LINE 0x00001b01 -#define NV10TCL_POLYGON_MODE_FRONT_FILL 0x00001b02 -#define NV10TCL_POLYGON_MODE_BACK 0x00000390 -#define NV10TCL_POLYGON_MODE_BACK_POINT 0x00001b00 -#define NV10TCL_POLYGON_MODE_BACK_LINE 0x00001b01 -#define NV10TCL_POLYGON_MODE_BACK_FILL 0x00001b02 -#define NV10TCL_DEPTH_RANGE_NEAR 0x00000394 -#define NV10TCL_DEPTH_RANGE_FAR 0x00000398 -#define NV10TCL_CULL_FACE 0x0000039c -#define NV10TCL_CULL_FACE_FRONT 0x00000404 -#define NV10TCL_CULL_FACE_BACK 0x00000405 -#define NV10TCL_CULL_FACE_FRONT_AND_BACK 0x00000408 -#define NV10TCL_FRONT_FACE 0x000003a0 -#define NV10TCL_FRONT_FACE_CW 0x00000900 -#define NV10TCL_FRONT_FACE_CCW 0x00000901 -#define NV10TCL_NORMALIZE_ENABLE 0x000003a4 -#define NV10TCL_MATERIAL_FACTOR_R 0x000003a8 -#define NV10TCL_MATERIAL_FACTOR_G 0x000003ac -#define NV10TCL_MATERIAL_FACTOR_B 0x000003b0 -#define NV10TCL_MATERIAL_FACTOR_A 0x000003b4 -#define NV10TCL_SEPARATE_SPECULAR_ENABLE 0x000003b8 -#define NV10TCL_ENABLED_LIGHTS 0x000003bc -#define NV10TCL_ENABLED_LIGHTS_0_SHIFT 0 -#define NV10TCL_ENABLED_LIGHTS_0_MASK 0x00000003 -#define NV10TCL_ENABLED_LIGHTS_0_DISABLED 0x00000000 -#define NV10TCL_ENABLED_LIGHTS_0_NONPOSITIONAL 0x00000001 -#define NV10TCL_ENABLED_LIGHTS_0_POSITIONAL 0x00000002 -#define NV10TCL_ENABLED_LIGHTS_0_DIRECTIONAL 0x00000003 -#define NV10TCL_ENABLED_LIGHTS_1_SHIFT 2 -#define NV10TCL_ENABLED_LIGHTS_1_MASK 0x0000000c -#define NV10TCL_ENABLED_LIGHTS_1_DISABLED 0x00000000 -#define NV10TCL_ENABLED_LIGHTS_1_NONPOSITIONAL 0x00000004 -#define NV10TCL_ENABLED_LIGHTS_1_POSITIONAL 0x00000008 -#define NV10TCL_ENABLED_LIGHTS_1_DIRECTIONAL 0x0000000c -#define NV10TCL_ENABLED_LIGHTS_2_SHIFT 4 -#define NV10TCL_ENABLED_LIGHTS_2_MASK 0x00000030 -#define NV10TCL_ENABLED_LIGHTS_2_DISABLED 0x00000000 -#define NV10TCL_ENABLED_LIGHTS_2_NONPOSITIONAL 0x00000010 -#define NV10TCL_ENABLED_LIGHTS_2_POSITIONAL 0x00000020 -#define NV10TCL_ENABLED_LIGHTS_2_DIRECTIONAL 0x00000030 -#define NV10TCL_ENABLED_LIGHTS_3_SHIFT 6 -#define NV10TCL_ENABLED_LIGHTS_3_MASK 0x000000c0 -#define NV10TCL_ENABLED_LIGHTS_3_DISABLED 0x00000000 -#define NV10TCL_ENABLED_LIGHTS_3_NONPOSITIONAL 0x00000040 -#define NV10TCL_ENABLED_LIGHTS_3_POSITIONAL 0x00000080 -#define NV10TCL_ENABLED_LIGHTS_3_DIRECTIONAL 0x000000c0 -#define NV10TCL_ENABLED_LIGHTS_4_SHIFT 8 -#define NV10TCL_ENABLED_LIGHTS_4_MASK 0x00000300 -#define NV10TCL_ENABLED_LIGHTS_4_DISABLED 0x00000000 -#define NV10TCL_ENABLED_LIGHTS_4_NONPOSITIONAL 0x00000100 -#define NV10TCL_ENABLED_LIGHTS_4_POSITIONAL 0x00000200 -#define NV10TCL_ENABLED_LIGHTS_4_DIRECTIONAL 0x00000300 -#define NV10TCL_ENABLED_LIGHTS_5_SHIFT 10 -#define NV10TCL_ENABLED_LIGHTS_5_MASK 0x00000c00 -#define NV10TCL_ENABLED_LIGHTS_5_DISABLED 0x00000000 -#define NV10TCL_ENABLED_LIGHTS_5_NONPOSITIONAL 0x00000400 -#define NV10TCL_ENABLED_LIGHTS_5_POSITIONAL 0x00000800 -#define NV10TCL_ENABLED_LIGHTS_5_DIRECTIONAL 0x00000c00 -#define NV10TCL_ENABLED_LIGHTS_6_SHIFT 12 -#define NV10TCL_ENABLED_LIGHTS_6_MASK 0x00003000 -#define NV10TCL_ENABLED_LIGHTS_6_DISABLED 0x00000000 -#define NV10TCL_ENABLED_LIGHTS_6_NONPOSITIONAL 0x00001000 -#define NV10TCL_ENABLED_LIGHTS_6_POSITIONAL 0x00002000 -#define NV10TCL_ENABLED_LIGHTS_6_DIRECTIONAL 0x00003000 -#define NV10TCL_ENABLED_LIGHTS_7_SHIFT 14 -#define NV10TCL_ENABLED_LIGHTS_7_MASK 0x0000c000 -#define NV10TCL_ENABLED_LIGHTS_7_DISABLED 0x00000000 -#define NV10TCL_ENABLED_LIGHTS_7_NONPOSITIONAL 0x00004000 -#define NV10TCL_ENABLED_LIGHTS_7_POSITIONAL 0x00008000 -#define NV10TCL_ENABLED_LIGHTS_7_DIRECTIONAL 0x0000c000 -#define NV10TCL_TX_GEN_MODE_S(x) (0x000003c0+((x)*16)) -#define NV10TCL_TX_GEN_MODE_S__SIZE 0x00000002 -#define NV10TCL_TX_GEN_MODE_S_FALSE 0x00000000 -#define NV10TCL_TX_GEN_MODE_S_EYE_LINEAR 0x00002400 -#define NV10TCL_TX_GEN_MODE_S_OBJECT_LINEAR 0x00002401 -#define NV10TCL_TX_GEN_MODE_S_SPHERE_MAP 0x00002402 -#define NV10TCL_TX_GEN_MODE_S_NORMAL_MAP 0x00008511 -#define NV10TCL_TX_GEN_MODE_S_REFLECTION_MAP 0x00008512 -#define NV10TCL_TX_GEN_MODE_T(x) (0x000003c4+((x)*16)) -#define NV10TCL_TX_GEN_MODE_T__SIZE 0x00000002 -#define NV10TCL_TX_GEN_MODE_T_FALSE 0x00000000 -#define NV10TCL_TX_GEN_MODE_T_EYE_LINEAR 0x00002400 -#define NV10TCL_TX_GEN_MODE_T_OBJECT_LINEAR 0x00002401 -#define NV10TCL_TX_GEN_MODE_T_SPHERE_MAP 0x00002402 -#define NV10TCL_TX_GEN_MODE_T_NORMAL_MAP 0x00008511 -#define NV10TCL_TX_GEN_MODE_T_REFLECTION_MAP 0x00008512 -#define NV10TCL_TX_GEN_MODE_R(x) (0x000003c8+((x)*16)) -#define NV10TCL_TX_GEN_MODE_R__SIZE 0x00000002 -#define NV10TCL_TX_GEN_MODE_R_FALSE 0x00000000 -#define NV10TCL_TX_GEN_MODE_R_EYE_LINEAR 0x00002400 -#define NV10TCL_TX_GEN_MODE_R_OBJECT_LINEAR 0x00002401 -#define NV10TCL_TX_GEN_MODE_R_SPHERE_MAP 0x00002402 -#define NV10TCL_TX_GEN_MODE_R_NORMAL_MAP 0x00008511 -#define NV10TCL_TX_GEN_MODE_R_REFLECTION_MAP 0x00008512 -#define NV10TCL_TX_GEN_MODE_Q(x) (0x000003cc+((x)*16)) -#define NV10TCL_TX_GEN_MODE_Q__SIZE 0x00000002 -#define NV10TCL_TX_GEN_MODE_Q_FALSE 0x00000000 -#define NV10TCL_TX_GEN_MODE_Q_EYE_LINEAR 0x00002400 -#define NV10TCL_TX_GEN_MODE_Q_OBJECT_LINEAR 0x00002401 -#define NV10TCL_TX_GEN_MODE_Q_SPHERE_MAP 0x00002402 -#define NV10TCL_TX_GEN_MODE_Q_NORMAL_MAP 0x00008511 -#define NV10TCL_TX_GEN_MODE_Q_REFLECTION_MAP 0x00008512 -#define NV10TCL_TX_MATRIX_ENABLE(x) (0x000003e0+((x)*4)) -#define NV10TCL_TX_MATRIX_ENABLE__SIZE 0x00000002 -#define NV10TCL_VIEW_MATRIX_ENABLE 0x000003e8 -#define NV10TCL_VIEW_MATRIX_ENABLE_MODELVIEW1 (1 << 0) -#define NV10TCL_VIEW_MATRIX_ENABLE_MODELVIEW0 (1 << 1) -#define NV10TCL_VIEW_MATRIX_ENABLE_PROJECTION (1 << 2) -#define NV10TCL_POINT_SIZE 0x000003ec -#define NV10TCL_MODELVIEW0_MATRIX(x) (0x00000400+((x)*4)) -#define NV10TCL_MODELVIEW0_MATRIX__SIZE 0x00000010 -#define NV10TCL_MODELVIEW1_MATRIX(x) (0x00000440+((x)*4)) -#define NV10TCL_MODELVIEW1_MATRIX__SIZE 0x00000010 -#define NV10TCL_INVERSE_MODELVIEW0_MATRIX(x) (0x00000480+((x)*4)) -#define NV10TCL_INVERSE_MODELVIEW0_MATRIX__SIZE 0x00000010 -#define NV10TCL_INVERSE_MODELVIEW1_MATRIX(x) (0x000004c0+((x)*4)) -#define NV10TCL_INVERSE_MODELVIEW1_MATRIX__SIZE 0x00000010 -#define NV10TCL_PROJECTION_MATRIX(x) (0x00000500+((x)*4)) -#define NV10TCL_PROJECTION_MATRIX__SIZE 0x00000010 -#define NV10TCL_TX0_MATRIX(x) (0x00000540+((x)*4)) -#define NV10TCL_TX0_MATRIX__SIZE 0x00000010 -#define NV10TCL_TX1_MATRIX(x) (0x00000580+((x)*4)) -#define NV10TCL_TX1_MATRIX__SIZE 0x00000010 -#define NV10TCL_TX_GEN_COEFF_S_A(x) (0x00000600+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_S_A__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_S_B(x) (0x00000604+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_S_B__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_S_C(x) (0x00000608+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_S_C__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_S_D(x) (0x0000060c+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_S_D__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_T_A(x) (0x00000610+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_T_A__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_T_B(x) (0x00000614+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_T_B__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_T_C(x) (0x00000618+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_T_C__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_T_D(x) (0x0000061c+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_T_D__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_R_A(x) (0x00000620+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_R_A__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_R_B(x) (0x00000624+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_R_B__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_R_C(x) (0x00000628+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_R_C__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_R_D(x) (0x0000062c+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_R_D__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_Q_A(x) (0x00000630+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_Q_A__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_Q_B(x) (0x00000634+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_Q_B__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_Q_C(x) (0x00000638+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_Q_C__SIZE 0x00000002 -#define NV10TCL_TX_GEN_COEFF_Q_D(x) (0x0000063c+((x)*64)) -#define NV10TCL_TX_GEN_COEFF_Q_D__SIZE 0x00000002 -#define NV10TCL_FOG_EQUATION_CONSTANT 0x00000680 -#define NV10TCL_FOG_EQUATION_LINEAR 0x00000684 -#define NV10TCL_FOG_EQUATION_QUADRATIC 0x00000688 -#define NV10TCL_MATERIAL_SHININESS(x) (0x000006a0+((x)*4)) -#define NV10TCL_MATERIAL_SHININESS__SIZE 0x00000006 -#define NV10TCL_LIGHT_MODEL_AMBIENT_R 0x000006c4 -#define NV10TCL_LIGHT_MODEL_AMBIENT_G 0x000006c8 -#define NV10TCL_LIGHT_MODEL_AMBIENT_B 0x000006cc -#define NV10TCL_VIEWPORT_TRANSLATE_X 0x000006e8 -#define NV10TCL_VIEWPORT_TRANSLATE_Y 0x000006ec -#define NV10TCL_VIEWPORT_TRANSLATE_Z 0x000006f0 -#define NV10TCL_VIEWPORT_TRANSLATE_W 0x000006f4 -#define NV10TCL_POINT_PARAMETER(x) (0x000006f8+((x)*4)) -#define NV10TCL_POINT_PARAMETER__SIZE 0x00000008 -#define NV10TCL_LIGHT_AMBIENT_R(x) (0x00000800+((x)*128)) -#define NV10TCL_LIGHT_AMBIENT_R__SIZE 0x00000008 -#define NV10TCL_LIGHT_AMBIENT_G(x) (0x00000804+((x)*128)) -#define NV10TCL_LIGHT_AMBIENT_G__SIZE 0x00000008 -#define NV10TCL_LIGHT_AMBIENT_B(x) (0x00000808+((x)*128)) -#define NV10TCL_LIGHT_AMBIENT_B__SIZE 0x00000008 -#define NV10TCL_LIGHT_DIFFUSE_R(x) (0x0000080c+((x)*128)) -#define NV10TCL_LIGHT_DIFFUSE_R__SIZE 0x00000008 -#define NV10TCL_LIGHT_DIFFUSE_G(x) (0x00000810+((x)*128)) -#define NV10TCL_LIGHT_DIFFUSE_G__SIZE 0x00000008 -#define NV10TCL_LIGHT_DIFFUSE_B(x) (0x00000814+((x)*128)) -#define NV10TCL_LIGHT_DIFFUSE_B__SIZE 0x00000008 -#define NV10TCL_LIGHT_SPECULAR_R(x) (0x00000818+((x)*128)) -#define NV10TCL_LIGHT_SPECULAR_R__SIZE 0x00000008 -#define NV10TCL_LIGHT_SPECULAR_G(x) (0x0000081c+((x)*128)) -#define NV10TCL_LIGHT_SPECULAR_G__SIZE 0x00000008 -#define NV10TCL_LIGHT_SPECULAR_B(x) (0x00000820+((x)*128)) -#define NV10TCL_LIGHT_SPECULAR_B__SIZE 0x00000008 -#define NV10TCL_LIGHT_HALF_VECTOR_X(x) (0x00000828+((x)*128)) -#define NV10TCL_LIGHT_HALF_VECTOR_X__SIZE 0x00000008 -#define NV10TCL_LIGHT_HALF_VECTOR_Y(x) (0x0000082c+((x)*128)) -#define NV10TCL_LIGHT_HALF_VECTOR_Y__SIZE 0x00000008 -#define NV10TCL_LIGHT_HALF_VECTOR_Z(x) (0x00000830+((x)*128)) -#define NV10TCL_LIGHT_HALF_VECTOR_Z__SIZE 0x00000008 -#define NV10TCL_LIGHT_DIRECTION_X(x) (0x00000834+((x)*128)) -#define NV10TCL_LIGHT_DIRECTION_X__SIZE 0x00000008 -#define NV10TCL_LIGHT_DIRECTION_Y(x) (0x00000838+((x)*128)) -#define NV10TCL_LIGHT_DIRECTION_Y__SIZE 0x00000008 -#define NV10TCL_LIGHT_DIRECTION_Z(x) (0x0000083c+((x)*128)) -#define NV10TCL_LIGHT_DIRECTION_Z__SIZE 0x00000008 -#define NV10TCL_LIGHT_SPOT_CUTOFF_A(x) (0x00000840+((x)*128)) -#define NV10TCL_LIGHT_SPOT_CUTOFF_A__SIZE 0x00000008 -#define NV10TCL_LIGHT_SPOT_CUTOFF_B(x) (0x00000844+((x)*128)) -#define NV10TCL_LIGHT_SPOT_CUTOFF_B__SIZE 0x00000008 -#define NV10TCL_LIGHT_SPOT_CUTOFF_C(x) (0x00000848+((x)*128)) -#define NV10TCL_LIGHT_SPOT_CUTOFF_C__SIZE 0x00000008 -#define NV10TCL_LIGHT_SPOT_DIR_X(x) (0x0000084c+((x)*128)) -#define NV10TCL_LIGHT_SPOT_DIR_X__SIZE 0x00000008 -#define NV10TCL_LIGHT_SPOT_DIR_Y(x) (0x00000850+((x)*128)) -#define NV10TCL_LIGHT_SPOT_DIR_Y__SIZE 0x00000008 -#define NV10TCL_LIGHT_SPOT_DIR_Z(x) (0x00000854+((x)*128)) -#define NV10TCL_LIGHT_SPOT_DIR_Z__SIZE 0x00000008 -#define NV10TCL_LIGHT_SPOT_CUTOFF_D(x) (0x00000858+((x)*128)) -#define NV10TCL_LIGHT_SPOT_CUTOFF_D__SIZE 0x00000008 -#define NV10TCL_LIGHT_POSITION_X(x) (0x0000085c+((x)*128)) -#define NV10TCL_LIGHT_POSITION_X__SIZE 0x00000008 -#define NV10TCL_LIGHT_POSITION_Y(x) (0x00000860+((x)*128)) -#define NV10TCL_LIGHT_POSITION_Y__SIZE 0x00000008 -#define NV10TCL_LIGHT_POSITION_Z(x) (0x00000864+((x)*128)) -#define NV10TCL_LIGHT_POSITION_Z__SIZE 0x00000008 -#define NV10TCL_LIGHT_ATTENUATION_CONSTANT(x) (0x00000868+((x)*128)) -#define NV10TCL_LIGHT_ATTENUATION_CONSTANT__SIZE 0x00000008 -#define NV10TCL_LIGHT_ATTENUATION_LINEAR(x) (0x0000086c+((x)*128)) -#define NV10TCL_LIGHT_ATTENUATION_LINEAR__SIZE 0x00000008 -#define NV10TCL_LIGHT_ATTENUATION_QUADRATIC(x) (0x00000870+((x)*128)) -#define NV10TCL_LIGHT_ATTENUATION_QUADRATIC__SIZE 0x00000008 -#define NV10TCL_VERTEX_POS_3F_X 0x00000c00 -#define NV10TCL_VERTEX_POS_3F_Y 0x00000c04 -#define NV10TCL_VERTEX_POS_3F_Z 0x00000c08 -#define NV10TCL_VERTEX_POS_4F_X 0x00000c18 -#define NV10TCL_VERTEX_POS_4F_Y 0x00000c1c -#define NV10TCL_VERTEX_POS_4F_Z 0x00000c20 -#define NV10TCL_VERTEX_POS_4F_W 0x00000c24 -#define NV10TCL_VERTEX_NOR_3F_X 0x00000c30 -#define NV10TCL_VERTEX_NOR_3F_Y 0x00000c34 -#define NV10TCL_VERTEX_NOR_3F_Z 0x00000c38 -#define NV10TCL_VERTEX_NOR_3I_XY 0x00000c40 -#define NV10TCL_VERTEX_NOR_3I_XY_X_SHIFT 0 -#define NV10TCL_VERTEX_NOR_3I_XY_X_MASK 0x0000ffff -#define NV10TCL_VERTEX_NOR_3I_XY_Y_SHIFT 16 -#define NV10TCL_VERTEX_NOR_3I_XY_Y_MASK 0xffff0000 -#define NV10TCL_VERTEX_NOR_3I_Z 0x00000c44 -#define NV10TCL_VERTEX_NOR_3I_Z_Z_SHIFT 0 -#define NV10TCL_VERTEX_NOR_3I_Z_Z_MASK 0x0000ffff -#define NV10TCL_VERTEX_COL_4F_R 0x00000c50 -#define NV10TCL_VERTEX_COL_4F_G 0x00000c54 -#define NV10TCL_VERTEX_COL_4F_B 0x00000c58 -#define NV10TCL_VERTEX_COL_4F_A 0x00000c5c -#define NV10TCL_VERTEX_COL_3F_R 0x00000c60 -#define NV10TCL_VERTEX_COL_3F_G 0x00000c64 -#define NV10TCL_VERTEX_COL_3F_B 0x00000c68 -#define NV10TCL_VERTEX_COL_4I 0x00000c6c -#define NV10TCL_VERTEX_COL_4I_R_SHIFT 0 -#define NV10TCL_VERTEX_COL_4I_R_MASK 0x000000ff -#define NV10TCL_VERTEX_COL_4I_G_SHIFT 8 -#define NV10TCL_VERTEX_COL_4I_G_MASK 0x0000ff00 -#define NV10TCL_VERTEX_COL_4I_B_SHIFT 16 -#define NV10TCL_VERTEX_COL_4I_B_MASK 0x00ff0000 -#define NV10TCL_VERTEX_COL_4I_A_SHIFT 24 -#define NV10TCL_VERTEX_COL_4I_A_MASK 0xff000000 -#define NV10TCL_VERTEX_COL2_3F_R 0x00000c80 -#define NV10TCL_VERTEX_COL2_3F_G 0x00000c84 -#define NV10TCL_VERTEX_COL2_3F_B 0x00000c88 -#define NV10TCL_VERTEX_COL2_3I 0x00000c8c -#define NV10TCL_VERTEX_COL2_3I_R_SHIFT 0 -#define NV10TCL_VERTEX_COL2_3I_R_MASK 0x000000ff -#define NV10TCL_VERTEX_COL2_3I_G_SHIFT 8 -#define NV10TCL_VERTEX_COL2_3I_G_MASK 0x0000ff00 -#define NV10TCL_VERTEX_COL2_3I_B_SHIFT 16 -#define NV10TCL_VERTEX_COL2_3I_B_MASK 0x00ff0000 -#define NV10TCL_VERTEX_TX0_2F_S 0x00000c90 -#define NV10TCL_VERTEX_TX0_2F_T 0x00000c94 -#define NV10TCL_VERTEX_TX0_2I 0x00000c98 -#define NV10TCL_VERTEX_TX0_2I_S_SHIFT 0 -#define NV10TCL_VERTEX_TX0_2I_S_MASK 0x0000ffff -#define NV10TCL_VERTEX_TX0_2I_T_SHIFT 16 -#define NV10TCL_VERTEX_TX0_2I_T_MASK 0xffff0000 -#define NV10TCL_VERTEX_TX0_4F_S 0x00000ca0 -#define NV10TCL_VERTEX_TX0_4F_T 0x00000ca4 -#define NV10TCL_VERTEX_TX0_4F_R 0x00000ca8 -#define NV10TCL_VERTEX_TX0_4F_Q 0x00000cac -#define NV10TCL_VERTEX_TX0_4I_ST 0x00000cb0 -#define NV10TCL_VERTEX_TX0_4I_ST_S_SHIFT 0 -#define NV10TCL_VERTEX_TX0_4I_ST_S_MASK 0x0000ffff -#define NV10TCL_VERTEX_TX0_4I_ST_T_SHIFT 16 -#define NV10TCL_VERTEX_TX0_4I_ST_T_MASK 0xffff0000 -#define NV10TCL_VERTEX_TX0_4I_RQ 0x00000cb4 -#define NV10TCL_VERTEX_TX0_4I_RQ_R_SHIFT 0 -#define NV10TCL_VERTEX_TX0_4I_RQ_R_MASK 0x0000ffff -#define NV10TCL_VERTEX_TX0_4I_RQ_Q_SHIFT 16 -#define NV10TCL_VERTEX_TX0_4I_RQ_Q_MASK 0xffff0000 -#define NV10TCL_VERTEX_TX1_2F_S 0x00000cb8 -#define NV10TCL_VERTEX_TX1_2F_T 0x00000cbc -#define NV10TCL_VERTEX_TX1_2I 0x00000cc0 -#define NV10TCL_VERTEX_TX1_2I_S_SHIFT 0 -#define NV10TCL_VERTEX_TX1_2I_S_MASK 0x0000ffff -#define NV10TCL_VERTEX_TX1_2I_T_SHIFT 16 -#define NV10TCL_VERTEX_TX1_2I_T_MASK 0xffff0000 -#define NV10TCL_VERTEX_TX1_4F_S 0x00000cc8 -#define NV10TCL_VERTEX_TX1_4F_T 0x00000ccc -#define NV10TCL_VERTEX_TX1_4F_R 0x00000cd0 -#define NV10TCL_VERTEX_TX1_4F_Q 0x00000cd4 -#define NV10TCL_VERTEX_TX1_4I_ST 0x00000cd8 -#define NV10TCL_VERTEX_TX1_4I_ST_S_SHIFT 0 -#define NV10TCL_VERTEX_TX1_4I_ST_S_MASK 0x0000ffff -#define NV10TCL_VERTEX_TX1_4I_ST_T_SHIFT 16 -#define NV10TCL_VERTEX_TX1_4I_ST_T_MASK 0xffff0000 -#define NV10TCL_VERTEX_TX1_4I_RQ 0x00000cdc -#define NV10TCL_VERTEX_TX1_4I_RQ_R_SHIFT 0 -#define NV10TCL_VERTEX_TX1_4I_RQ_R_MASK 0x0000ffff -#define NV10TCL_VERTEX_TX1_4I_RQ_Q_SHIFT 16 -#define NV10TCL_VERTEX_TX1_4I_RQ_Q_MASK 0xffff0000 -#define NV10TCL_VERTEX_FOG_1F 0x00000ce0 -#define NV10TCL_VERTEX_WGH_1F 0x00000ce4 -#define NV10TCL_EDGEFLAG_ENABLE 0x00000cec -#define NV10TCL_VERTEX_ARRAY_VALIDATE 0x00000cf0 -#define NV10TCL_VTXBUF_ADDRESS(x) (0x00000d00+((x)*8)) -#define NV10TCL_VTXBUF_ADDRESS__SIZE 0x00000008 -#define NV10TCL_VTXFMT(x) (0x00000d04+((x)*8)) -#define NV10TCL_VTXFMT__SIZE 0x00000008 -#define NV10TCL_VTXFMT_TYPE_SHIFT 0 -#define NV10TCL_VTXFMT_TYPE_MASK 0x0000000f -#define NV10TCL_VTXFMT_TYPE_BYTE_BGRA 0x00000000 -#define NV10TCL_VTXFMT_TYPE_SHORT 0x00000001 -#define NV10TCL_VTXFMT_TYPE_FLOAT 0x00000002 -#define NV10TCL_VTXFMT_TYPE_BYTE_RGBA 0x00000004 -#define NV10TCL_VTXFMT_FIELDS_SHIFT 4 -#define NV10TCL_VTXFMT_FIELDS_MASK 0x000000f0 -#define NV10TCL_VTXFMT_STRIDE_SHIFT 8 -#define NV10TCL_VTXFMT_STRIDE_MASK 0x0000ff00 -#define NV10TCL_VTXFMT_POS_HOMOGENEOUS (1 << 24) -#define NV10TCL_VERTEX_BEGIN_END 0x00000dfc -#define NV10TCL_VERTEX_BEGIN_END_STOP 0x00000000 -#define NV10TCL_VERTEX_BEGIN_END_POINTS 0x00000001 -#define NV10TCL_VERTEX_BEGIN_END_LINES 0x00000002 -#define NV10TCL_VERTEX_BEGIN_END_LINE_LOOP 0x00000003 -#define NV10TCL_VERTEX_BEGIN_END_LINE_STRIP 0x00000004 -#define NV10TCL_VERTEX_BEGIN_END_TRIANGLES 0x00000005 -#define NV10TCL_VERTEX_BEGIN_END_TRIANGLE_STRIP 0x00000006 -#define NV10TCL_VERTEX_BEGIN_END_TRIANGLE_FAN 0x00000007 -#define NV10TCL_VERTEX_BEGIN_END_QUADS 0x00000008 -#define NV10TCL_VERTEX_BEGIN_END_QUAD_STRIP 0x00000009 -#define NV10TCL_VERTEX_BEGIN_END_POLYGON 0x0000000a -#define NV10TCL_VB_ELEMENT_U16 0x00000e00 -#define NV10TCL_VB_ELEMENT_U16_I0_SHIFT 0 -#define NV10TCL_VB_ELEMENT_U16_I0_MASK 0x0000ffff -#define NV10TCL_VB_ELEMENT_U16_I1_SHIFT 16 -#define NV10TCL_VB_ELEMENT_U16_I1_MASK 0xffff0000 -#define NV10TCL_VB_ELEMENT_U32 0x00001100 -#define NV10TCL_VERTEX_BUFFER_BEGIN_END 0x000013fc -#define NV10TCL_VERTEX_BUFFER_BEGIN_END_STOP 0x00000000 -#define NV10TCL_VERTEX_BUFFER_BEGIN_END_POINTS 0x00000001 -#define NV10TCL_VERTEX_BUFFER_BEGIN_END_LINES 0x00000002 -#define NV10TCL_VERTEX_BUFFER_BEGIN_END_LINE_LOOP 0x00000003 -#define NV10TCL_VERTEX_BUFFER_BEGIN_END_LINE_STRIP 0x00000004 -#define NV10TCL_VERTEX_BUFFER_BEGIN_END_TRIANGLES 0x00000005 -#define NV10TCL_VERTEX_BUFFER_BEGIN_END_TRIANGLE_STRIP 0x00000006 -#define NV10TCL_VERTEX_BUFFER_BEGIN_END_TRIANGLE_FAN 0x00000007 -#define NV10TCL_VERTEX_BUFFER_BEGIN_END_QUADS 0x00000008 -#define NV10TCL_VERTEX_BUFFER_BEGIN_END_QUAD_STRIP 0x00000009 -#define NV10TCL_VERTEX_BUFFER_BEGIN_END_POLYGON 0x0000000a -#define NV10TCL_VERTEX_BUFFER_DRAW_ARRAYS 0x00001400 -#define NV10TCL_VERTEX_BUFFER_DRAW_ARRAYS_FIRST_SHIFT 0 -#define NV10TCL_VERTEX_BUFFER_DRAW_ARRAYS_FIRST_MASK 0x0000ffff -#define NV10TCL_VERTEX_BUFFER_DRAW_ARRAYS_LAST_SHIFT 24 -#define NV10TCL_VERTEX_BUFFER_DRAW_ARRAYS_LAST_MASK 0xff000000 -#define NV10TCL_VERTEX_ARRAY_DATA 0x00001800 - - -#define NV11TCL 0x00000096 - -#define NV11TCL_COLOR_LOGIC_OP_ENABLE 0x00000d40 -#define NV11TCL_COLOR_LOGIC_OP_OP 0x00000d44 -#define NV11TCL_COLOR_LOGIC_OP_OP_CLEAR 0x00001500 -#define NV11TCL_COLOR_LOGIC_OP_OP_AND 0x00001501 -#define NV11TCL_COLOR_LOGIC_OP_OP_AND_REVERSE 0x00001502 -#define NV11TCL_COLOR_LOGIC_OP_OP_COPY 0x00001503 -#define NV11TCL_COLOR_LOGIC_OP_OP_AND_INVERTED 0x00001504 -#define NV11TCL_COLOR_LOGIC_OP_OP_NOOP 0x00001505 -#define NV11TCL_COLOR_LOGIC_OP_OP_XOR 0x00001506 -#define NV11TCL_COLOR_LOGIC_OP_OP_OR 0x00001507 -#define NV11TCL_COLOR_LOGIC_OP_OP_NOR 0x00001508 -#define NV11TCL_COLOR_LOGIC_OP_OP_EQUIV 0x00001509 -#define NV11TCL_COLOR_LOGIC_OP_OP_INVERT 0x0000150a -#define NV11TCL_COLOR_LOGIC_OP_OP_OR_REVERSE 0x0000150b -#define NV11TCL_COLOR_LOGIC_OP_OP_COPY_INVERTED 0x0000150c -#define NV11TCL_COLOR_LOGIC_OP_OP_OR_INVERTED 0x0000150d -#define NV11TCL_COLOR_LOGIC_OP_OP_NAND 0x0000150e -#define NV11TCL_COLOR_LOGIC_OP_OP_SET 0x0000150f - - -#define NV17TCL 0x00000099 - -#define NV17TCL_DMA_IN_MEMORY4 0x000001ac -#define NV17TCL_DMA_IN_MEMORY5 0x000001b0 -#define NV17TCL_COLOR_MASK_ENABLE 0x000002bc -#define NV17TCL_ZCLEAR_ENABLE 0x000003f8 -#define NV17TCL_ZCLEAR_VALUE 0x000003fc -#define NV17TCL_ZCLEAR_VALUE_DEPTH_SHIFT 8 -#define NV17TCL_ZCLEAR_VALUE_DEPTH_MASK 0xffffff00 -#define NV17TCL_ZCLEAR_VALUE_SEQUENCE_SHIFT 0 -#define NV17TCL_ZCLEAR_VALUE_SEQUENCE_MASK 0x000000ff -#define NV17TCL_LMA_DEPTH_BUFFER_PITCH 0x00000d5c -#define NV17TCL_LMA_DEPTH_BUFFER_OFFSET 0x00000d60 -#define NV17TCL_LMA_DEPTH_FILL_VALUE 0x00000d68 -#define NV17TCL_LMA_DEPTH_BUFFER_CLEAR 0x00000d6c -#define NV17TCL_LMA_DEPTH_WINDOW_X 0x00001638 -#define NV17TCL_LMA_DEPTH_WINDOW_Y 0x0000163c -#define NV17TCL_LMA_DEPTH_WINDOW_Z 0x00001640 -#define NV17TCL_LMA_DEPTH_WINDOW_W 0x00001644 -#define NV17TCL_LMA_DEPTH_ENABLE 0x00001658 - - -#define NV03_CONTEXT_SURFACES_2D 0x00000058 - -#define NV03_CONTEXT_SURFACES_2D_SYNCHRONIZE 0x00000100 -#define NV03_CONTEXT_SURFACES_2D_DMA_NOTIFY 0x00000180 -#define NV03_CONTEXT_SURFACES_2D_DMA_SOURCE 0x00000184 -#define NV03_CONTEXT_SURFACES_2D_DMA_DESTIN 0x00000188 -#define NV03_CONTEXT_SURFACES_2D_COLOR_FORMAT 0x00000300 -#define NV03_CONTEXT_SURFACES_2D_PITCH 0x00000304 -#define NV03_CONTEXT_SURFACES_2D_PITCH_SOURCE_SHIFT 0 -#define NV03_CONTEXT_SURFACES_2D_PITCH_SOURCE_MASK 0x0000ffff -#define NV03_CONTEXT_SURFACES_2D_PITCH_DESTIN_SHIFT 16 -#define NV03_CONTEXT_SURFACES_2D_PITCH_DESTIN_MASK 0xffff0000 -#define NV03_CONTEXT_SURFACES_2D_OFFSET_SOURCE 0x00000308 -#define NV03_CONTEXT_SURFACES_2D_OFFSET_DESTIN 0x0000030c - - -#define NV03_CONTEXT_SURFACES_3D 0x0000005a - -#define NV03_CONTEXT_SURFACES_3D_SYNCHRONIZE 0x00000100 -#define NV03_CONTEXT_SURFACES_3D_DMA_NOTIFY 0x00000180 -#define NV03_CONTEXT_SURFACES_3D_DMA_SURFACE 0x00000184 -#define NV03_CONTEXT_SURFACES_3D_PITCH 0x00000300 -#define NV03_CONTEXT_SURFACES_3D_OFFSET_COLOR 0x00000304 -#define NV03_CONTEXT_SURFACES_3D_OFFSET_ZETA 0x00000308 - - -#define NV04_INDEXED_IMAGE_FROM_CPU 0x00000060 - -#define NV04_INDEXED_IMAGE_FROM_CPU_NOP 0x00000100 -#define NV04_INDEXED_IMAGE_FROM_CPU_NOTIFY 0x00000104 -#define NV04_INDEXED_IMAGE_FROM_CPU_PATCH 0x0000010c -#define NV04_INDEXED_IMAGE_FROM_CPU_DMA_NOTIFY 0x00000180 -#define NV04_INDEXED_IMAGE_FROM_CPU_DMA_LUT 0x00000184 -#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR_KEY 0x00000188 -#define NV04_INDEXED_IMAGE_FROM_CPU_CLIP_RECTANGLE 0x0000018c -#define NV04_INDEXED_IMAGE_FROM_CPU_PATTERN 0x00000190 -#define NV04_INDEXED_IMAGE_FROM_CPU_ROP 0x00000194 -#define NV04_INDEXED_IMAGE_FROM_CPU_BETA1 0x00000198 -#define NV04_INDEXED_IMAGE_FROM_CPU_BETA4 0x0000019c -#define NV04_INDEXED_IMAGE_FROM_CPU_SURFACE 0x000001a0 -#define NV04_INDEXED_IMAGE_FROM_CPU_OPERATION 0x000003e4 -#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR_FORMAT 0x000003e8 -#define NV04_INDEXED_IMAGE_FROM_CPU_INDEX_FORMAT 0x000003ec -#define NV04_INDEXED_IMAGE_FROM_CPU_LUT_OFFSET 0x000003f0 -#define NV04_INDEXED_IMAGE_FROM_CPU_POINT 0x000003f4 -#define NV04_INDEXED_IMAGE_FROM_CPU_SIZE_OUT 0x000003f8 -#define NV04_INDEXED_IMAGE_FROM_CPU_SIZE_IN 0x000003fc -#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR(x) (0x00000400+((x)*4)) -#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR__SIZE 0x00000700 - - -#define NV05_INDEXED_IMAGE_FROM_CPU 0x00000064 - -#define NV05_INDEXED_IMAGE_FROM_CPU_COLOR_CONVERSION 0x000003e0 - - -#define NV03_CHANNEL_PIO 0x0000006a - - - -#define NV03_CHANNEL_DMA 0x0000006b - - - -#define NV04_BETA_SOLID 0x00000072 - -#define NV04_BETA_SOLID_NOP 0x00000100 -#define NV04_BETA_SOLID_NOTIFY 0x00000104 -#define NV04_BETA_SOLID_DMA_NOTIFY 0x00000180 -#define NV04_BETA_SOLID_BETA_OUTPUT 0x00000200 -#define NV04_BETA_SOLID_BETA_FACTOR 0x00000300 - - -#define NV10_TEXTURE_FROM_CPU 0x0000007b - -#define NV10_TEXTURE_FROM_CPU_NOP 0x00000100 -#define NV10_TEXTURE_FROM_CPU_NOTIFY 0x00000104 -#define NV10_TEXTURE_FROM_CPU_WAIT_FOR_IDLE 0x00000108 -#define NV10_TEXTURE_FROM_CPU_PM_TRIGGER 0x00000140 -#define NV10_TEXTURE_FROM_CPU_DMA_NOTIFY 0x00000180 -#define NV10_TEXTURE_FROM_CPU_SURFACE 0x00000184 -#define NV10_TEXTURE_FROM_CPU_COLOR_FORMAT 0x00000300 -#define NV10_TEXTURE_FROM_CPU_POINT 0x00000304 -#define NV10_TEXTURE_FROM_CPU_POINT_X_SHIFT 0 -#define NV10_TEXTURE_FROM_CPU_POINT_X_MASK 0x0000ffff -#define NV10_TEXTURE_FROM_CPU_POINT_Y_SHIFT 16 -#define NV10_TEXTURE_FROM_CPU_POINT_Y_MASK 0xffff0000 -#define NV10_TEXTURE_FROM_CPU_SIZE 0x00000308 -#define NV10_TEXTURE_FROM_CPU_SIZE_W_SHIFT 0 -#define NV10_TEXTURE_FROM_CPU_SIZE_W_MASK 0x0000ffff -#define NV10_TEXTURE_FROM_CPU_SIZE_H_SHIFT 16 -#define NV10_TEXTURE_FROM_CPU_SIZE_H_MASK 0xffff0000 -#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL 0x0000030c -#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_X_SHIFT 0 -#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_X_MASK 0x0000ffff -#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_W_SHIFT 16 -#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_W_MASK 0xffff0000 -#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL 0x00000310 -#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_Y_SHIFT 0 -#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_Y_MASK 0x0000ffff -#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_H_SHIFT 16 -#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_H_MASK 0xffff0000 -#define NV10_TEXTURE_FROM_CPU_COLOR(x) (0x00000400+((x)*4)) -#define NV10_TEXTURE_FROM_CPU_COLOR__SIZE 0x00000700 - - -#define NV30_TEXTURE_FROM_CPU 0x0000037b - - - -#define NV40_TEXTURE_FROM_CPU 0x0000307b - - - -#define NV10_VIDEO_DISPLAY 0x0000007c - - - -#define NV20TCL 0x00000097 - -#define NV20TCL_NOP 0x00000100 -#define NV20TCL_NOTIFY 0x00000104 -#define NV20TCL_DMA_NOTIFY 0x00000180 -#define NV20TCL_DMA_TEXTURE0 0x00000184 -#define NV20TCL_DMA_TEXTURE1 0x00000188 -#define NV20TCL_DMA_COLOR 0x00000194 -#define NV20TCL_DMA_ZETA 0x00000198 -#define NV20TCL_DMA_VTXBUF0 0x0000019c -#define NV20TCL_DMA_VTXBUF1 0x000001a0 -#define NV20TCL_DMA_FENCE 0x000001a4 -#define NV20TCL_DMA_QUERY 0x000001a8 -#define NV20TCL_RT_HORIZ 0x00000200 -#define NV20TCL_RT_HORIZ_X_SHIFT 0 -#define NV20TCL_RT_HORIZ_X_MASK 0x0000ffff -#define NV20TCL_RT_HORIZ_W_SHIFT 16 -#define NV20TCL_RT_HORIZ_W_MASK 0xffff0000 -#define NV20TCL_RT_VERT 0x00000204 -#define NV20TCL_RT_VERT_Y_SHIFT 0 -#define NV20TCL_RT_VERT_Y_MASK 0x0000ffff -#define NV20TCL_RT_VERT_H_SHIFT 16 -#define NV20TCL_RT_VERT_H_MASK 0xffff0000 -#define NV20TCL_RT_FORMAT 0x00000208 -#define NV20TCL_RT_FORMAT_TYPE_SHIFT 8 -#define NV20TCL_RT_FORMAT_TYPE_MASK 0x00000f00 -#define NV20TCL_RT_FORMAT_TYPE_LINEAR 0x00000100 -#define NV20TCL_RT_FORMAT_TYPE_SWIZZLED 0x00000200 -#define NV20TCL_RT_FORMAT_COLOR_SHIFT 0 -#define NV20TCL_RT_FORMAT_COLOR_MASK 0x0000001f -#define NV20TCL_RT_FORMAT_COLOR_R5G6B5 0x00000003 -#define NV20TCL_RT_FORMAT_COLOR_X8R8G8B8 0x00000005 -#define NV20TCL_RT_FORMAT_COLOR_A8R8G8B8 0x00000008 -#define NV20TCL_RT_FORMAT_COLOR_B8 0x00000009 -#define NV20TCL_RT_FORMAT_COLOR_UNKNOWN 0x0000000d -#define NV20TCL_RT_FORMAT_COLOR_X8B8G8R8 0x0000000f -#define NV20TCL_RT_FORMAT_COLOR_A8B8G8R8 0x00000010 -#define NV20TCL_RT_PITCH 0x0000020c -#define NV20TCL_RT_PITCH_COLOR_PITCH_SHIFT 0 -#define NV20TCL_RT_PITCH_COLOR_PITCH_MASK 0x0000ffff -#define NV20TCL_RT_PITCH_ZETA_PITCH_SHIFT 16 -#define NV20TCL_RT_PITCH_ZETA_PITCH_MASK 0xffff0000 -#define NV20TCL_COLOR_OFFSET 0x00000210 -#define NV20TCL_ZETA_OFFSET 0x00000214 -#define NV20TCL_RC_IN_ALPHA(x) (0x00000260+((x)*4)) -#define NV20TCL_RC_IN_ALPHA__SIZE 0x00000008 -#define NV20TCL_RC_IN_ALPHA_D_INPUT_SHIFT 0 -#define NV20TCL_RC_IN_ALPHA_D_INPUT_MASK 0x0000000f -#define NV20TCL_RC_IN_ALPHA_D_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR0 0x00000001 -#define NV20TCL_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR1 0x00000002 -#define NV20TCL_RC_IN_ALPHA_D_INPUT_FOG 0x00000003 -#define NV20TCL_RC_IN_ALPHA_D_INPUT_PRIMARY_COLOR 0x00000004 -#define NV20TCL_RC_IN_ALPHA_D_INPUT_SECONDARY_COLOR 0x00000005 -#define NV20TCL_RC_IN_ALPHA_D_INPUT_TEXTURE0 0x00000008 -#define NV20TCL_RC_IN_ALPHA_D_INPUT_TEXTURE1 0x00000009 -#define NV20TCL_RC_IN_ALPHA_D_INPUT_SPARE0 0x0000000c -#define NV20TCL_RC_IN_ALPHA_D_INPUT_SPARE1 0x0000000d -#define NV20TCL_RC_IN_ALPHA_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e -#define NV20TCL_RC_IN_ALPHA_D_INPUT_E_TIMES_F 0x0000000f -#define NV20TCL_RC_IN_ALPHA_D_INPUT_TEXTURE2 0x0000000a -#define NV20TCL_RC_IN_ALPHA_D_INPUT_TEXTURE3 0x0000000b -#define NV20TCL_RC_IN_ALPHA_D_COMPONENT_USAGE (1 << 4) -#define NV20TCL_RC_IN_ALPHA_D_COMPONENT_USAGE_BLUE 0x00000000 -#define NV20TCL_RC_IN_ALPHA_D_COMPONENT_USAGE_ALPHA 0x00000010 -#define NV20TCL_RC_IN_ALPHA_D_MAPPING_SHIFT 5 -#define NV20TCL_RC_IN_ALPHA_D_MAPPING_MASK 0x000000e0 -#define NV20TCL_RC_IN_ALPHA_D_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_IN_ALPHA_D_MAPPING_UNSIGNED_INVERT 0x00000020 -#define NV20TCL_RC_IN_ALPHA_D_MAPPING_EXPAND_NORMAL 0x00000040 -#define NV20TCL_RC_IN_ALPHA_D_MAPPING_EXPAND_NEGATE 0x00000060 -#define NV20TCL_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NORMAL 0x00000080 -#define NV20TCL_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0 -#define NV20TCL_RC_IN_ALPHA_D_MAPPING_SIGNED_IDENTITY 0x000000c0 -#define NV20TCL_RC_IN_ALPHA_D_MAPPING_SIGNED_NEGATE 0x000000e0 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_SHIFT 8 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_MASK 0x00000f00 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR0 0x00000100 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR1 0x00000200 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_FOG 0x00000300 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_PRIMARY_COLOR 0x00000400 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_SECONDARY_COLOR 0x00000500 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_TEXTURE0 0x00000800 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_TEXTURE1 0x00000900 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_SPARE0 0x00000c00 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_SPARE1 0x00000d00 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_E_TIMES_F 0x00000f00 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_TEXTURE2 0x00000a00 -#define NV20TCL_RC_IN_ALPHA_C_INPUT_TEXTURE3 0x00000b00 -#define NV20TCL_RC_IN_ALPHA_C_COMPONENT_USAGE (1 << 12) -#define NV20TCL_RC_IN_ALPHA_C_COMPONENT_USAGE_BLUE 0x00000000 -#define NV20TCL_RC_IN_ALPHA_C_COMPONENT_USAGE_ALPHA 0x00001000 -#define NV20TCL_RC_IN_ALPHA_C_MAPPING_SHIFT 13 -#define NV20TCL_RC_IN_ALPHA_C_MAPPING_MASK 0x0000e000 -#define NV20TCL_RC_IN_ALPHA_C_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_IN_ALPHA_C_MAPPING_UNSIGNED_INVERT 0x00002000 -#define NV20TCL_RC_IN_ALPHA_C_MAPPING_EXPAND_NORMAL 0x00004000 -#define NV20TCL_RC_IN_ALPHA_C_MAPPING_EXPAND_NEGATE 0x00006000 -#define NV20TCL_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NORMAL 0x00008000 -#define NV20TCL_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000 -#define NV20TCL_RC_IN_ALPHA_C_MAPPING_SIGNED_IDENTITY 0x0000c000 -#define NV20TCL_RC_IN_ALPHA_C_MAPPING_SIGNED_NEGATE 0x0000e000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_SHIFT 16 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_MASK 0x000f0000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR0 0x00010000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR1 0x00020000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_FOG 0x00030000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_PRIMARY_COLOR 0x00040000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_SECONDARY_COLOR 0x00050000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_TEXTURE0 0x00080000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_TEXTURE1 0x00090000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_SPARE0 0x000c0000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_SPARE1 0x000d0000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_E_TIMES_F 0x000f0000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_TEXTURE2 0x000a0000 -#define NV20TCL_RC_IN_ALPHA_B_INPUT_TEXTURE3 0x000b0000 -#define NV20TCL_RC_IN_ALPHA_B_COMPONENT_USAGE (1 << 20) -#define NV20TCL_RC_IN_ALPHA_B_COMPONENT_USAGE_BLUE 0x00000000 -#define NV20TCL_RC_IN_ALPHA_B_COMPONENT_USAGE_ALPHA 0x00100000 -#define NV20TCL_RC_IN_ALPHA_B_MAPPING_SHIFT 21 -#define NV20TCL_RC_IN_ALPHA_B_MAPPING_MASK 0x00e00000 -#define NV20TCL_RC_IN_ALPHA_B_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_IN_ALPHA_B_MAPPING_UNSIGNED_INVERT 0x00200000 -#define NV20TCL_RC_IN_ALPHA_B_MAPPING_EXPAND_NORMAL 0x00400000 -#define NV20TCL_RC_IN_ALPHA_B_MAPPING_EXPAND_NEGATE 0x00600000 -#define NV20TCL_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NORMAL 0x00800000 -#define NV20TCL_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000 -#define NV20TCL_RC_IN_ALPHA_B_MAPPING_SIGNED_IDENTITY 0x00c00000 -#define NV20TCL_RC_IN_ALPHA_B_MAPPING_SIGNED_NEGATE 0x00e00000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_SHIFT 24 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_MASK 0x0f000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR0 0x01000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR1 0x02000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_FOG 0x03000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_PRIMARY_COLOR 0x04000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_SECONDARY_COLOR 0x05000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_TEXTURE0 0x08000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_TEXTURE1 0x09000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_SPARE0 0x0c000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_SPARE1 0x0d000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_E_TIMES_F 0x0f000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_TEXTURE2 0x0a000000 -#define NV20TCL_RC_IN_ALPHA_A_INPUT_TEXTURE3 0x0b000000 -#define NV20TCL_RC_IN_ALPHA_A_COMPONENT_USAGE (1 << 28) -#define NV20TCL_RC_IN_ALPHA_A_COMPONENT_USAGE_BLUE 0x00000000 -#define NV20TCL_RC_IN_ALPHA_A_COMPONENT_USAGE_ALPHA 0x10000000 -#define NV20TCL_RC_IN_ALPHA_A_MAPPING_SHIFT 29 -#define NV20TCL_RC_IN_ALPHA_A_MAPPING_MASK 0xe0000000 -#define NV20TCL_RC_IN_ALPHA_A_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_IN_ALPHA_A_MAPPING_UNSIGNED_INVERT 0x20000000 -#define NV20TCL_RC_IN_ALPHA_A_MAPPING_EXPAND_NORMAL 0x40000000 -#define NV20TCL_RC_IN_ALPHA_A_MAPPING_EXPAND_NEGATE 0x60000000 -#define NV20TCL_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NORMAL 0x80000000 -#define NV20TCL_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000 -#define NV20TCL_RC_IN_ALPHA_A_MAPPING_SIGNED_IDENTITY 0xc0000000 -#define NV20TCL_RC_IN_ALPHA_A_MAPPING_SIGNED_NEGATE 0xe0000000 -#define NV20TCL_RC_FINAL0 0x00000288 -#define NV20TCL_RC_FINAL0_D_INPUT_SHIFT 0 -#define NV20TCL_RC_FINAL0_D_INPUT_MASK 0x0000000f -#define NV20TCL_RC_FINAL0_D_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_FINAL0_D_INPUT_CONSTANT_COLOR0 0x00000001 -#define NV20TCL_RC_FINAL0_D_INPUT_CONSTANT_COLOR1 0x00000002 -#define NV20TCL_RC_FINAL0_D_INPUT_FOG 0x00000003 -#define NV20TCL_RC_FINAL0_D_INPUT_PRIMARY_COLOR 0x00000004 -#define NV20TCL_RC_FINAL0_D_INPUT_SECONDARY_COLOR 0x00000005 -#define NV20TCL_RC_FINAL0_D_INPUT_TEXTURE0 0x00000008 -#define NV20TCL_RC_FINAL0_D_INPUT_TEXTURE1 0x00000009 -#define NV20TCL_RC_FINAL0_D_INPUT_SPARE0 0x0000000c -#define NV20TCL_RC_FINAL0_D_INPUT_SPARE1 0x0000000d -#define NV20TCL_RC_FINAL0_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e -#define NV20TCL_RC_FINAL0_D_INPUT_E_TIMES_F 0x0000000f -#define NV20TCL_RC_FINAL0_D_INPUT_TEXTURE2 0x0000000a -#define NV20TCL_RC_FINAL0_D_INPUT_TEXTURE3 0x0000000b -#define NV20TCL_RC_FINAL0_D_COMPONENT_USAGE (1 << 4) -#define NV20TCL_RC_FINAL0_D_COMPONENT_USAGE_RGB 0x00000000 -#define NV20TCL_RC_FINAL0_D_COMPONENT_USAGE_ALPHA 0x00000010 -#define NV20TCL_RC_FINAL0_D_MAPPING_SHIFT 5 -#define NV20TCL_RC_FINAL0_D_MAPPING_MASK 0x000000e0 -#define NV20TCL_RC_FINAL0_D_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_FINAL0_D_MAPPING_UNSIGNED_INVERT 0x00000020 -#define NV20TCL_RC_FINAL0_D_MAPPING_EXPAND_NORMAL 0x00000040 -#define NV20TCL_RC_FINAL0_D_MAPPING_EXPAND_NEGATE 0x00000060 -#define NV20TCL_RC_FINAL0_D_MAPPING_HALF_BIAS_NORMAL 0x00000080 -#define NV20TCL_RC_FINAL0_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0 -#define NV20TCL_RC_FINAL0_D_MAPPING_SIGNED_IDENTITY 0x000000c0 -#define NV20TCL_RC_FINAL0_D_MAPPING_SIGNED_NEGATE 0x000000e0 -#define NV20TCL_RC_FINAL0_C_INPUT_SHIFT 8 -#define NV20TCL_RC_FINAL0_C_INPUT_MASK 0x00000f00 -#define NV20TCL_RC_FINAL0_C_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_FINAL0_C_INPUT_CONSTANT_COLOR0 0x00000100 -#define NV20TCL_RC_FINAL0_C_INPUT_CONSTANT_COLOR1 0x00000200 -#define NV20TCL_RC_FINAL0_C_INPUT_FOG 0x00000300 -#define NV20TCL_RC_FINAL0_C_INPUT_PRIMARY_COLOR 0x00000400 -#define NV20TCL_RC_FINAL0_C_INPUT_SECONDARY_COLOR 0x00000500 -#define NV20TCL_RC_FINAL0_C_INPUT_TEXTURE0 0x00000800 -#define NV20TCL_RC_FINAL0_C_INPUT_TEXTURE1 0x00000900 -#define NV20TCL_RC_FINAL0_C_INPUT_SPARE0 0x00000c00 -#define NV20TCL_RC_FINAL0_C_INPUT_SPARE1 0x00000d00 -#define NV20TCL_RC_FINAL0_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 -#define NV20TCL_RC_FINAL0_C_INPUT_E_TIMES_F 0x00000f00 -#define NV20TCL_RC_FINAL0_C_INPUT_TEXTURE2 0x00000a00 -#define NV20TCL_RC_FINAL0_C_INPUT_TEXTURE3 0x00000b00 -#define NV20TCL_RC_FINAL0_C_COMPONENT_USAGE (1 << 12) -#define NV20TCL_RC_FINAL0_C_COMPONENT_USAGE_RGB 0x00000000 -#define NV20TCL_RC_FINAL0_C_COMPONENT_USAGE_ALPHA 0x00001000 -#define NV20TCL_RC_FINAL0_C_MAPPING_SHIFT 13 -#define NV20TCL_RC_FINAL0_C_MAPPING_MASK 0x0000e000 -#define NV20TCL_RC_FINAL0_C_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_FINAL0_C_MAPPING_UNSIGNED_INVERT 0x00002000 -#define NV20TCL_RC_FINAL0_C_MAPPING_EXPAND_NORMAL 0x00004000 -#define NV20TCL_RC_FINAL0_C_MAPPING_EXPAND_NEGATE 0x00006000 -#define NV20TCL_RC_FINAL0_C_MAPPING_HALF_BIAS_NORMAL 0x00008000 -#define NV20TCL_RC_FINAL0_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000 -#define NV20TCL_RC_FINAL0_C_MAPPING_SIGNED_IDENTITY 0x0000c000 -#define NV20TCL_RC_FINAL0_C_MAPPING_SIGNED_NEGATE 0x0000e000 -#define NV20TCL_RC_FINAL0_B_INPUT_SHIFT 16 -#define NV20TCL_RC_FINAL0_B_INPUT_MASK 0x000f0000 -#define NV20TCL_RC_FINAL0_B_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_FINAL0_B_INPUT_CONSTANT_COLOR0 0x00010000 -#define NV20TCL_RC_FINAL0_B_INPUT_CONSTANT_COLOR1 0x00020000 -#define NV20TCL_RC_FINAL0_B_INPUT_FOG 0x00030000 -#define NV20TCL_RC_FINAL0_B_INPUT_PRIMARY_COLOR 0x00040000 -#define NV20TCL_RC_FINAL0_B_INPUT_SECONDARY_COLOR 0x00050000 -#define NV20TCL_RC_FINAL0_B_INPUT_TEXTURE0 0x00080000 -#define NV20TCL_RC_FINAL0_B_INPUT_TEXTURE1 0x00090000 -#define NV20TCL_RC_FINAL0_B_INPUT_SPARE0 0x000c0000 -#define NV20TCL_RC_FINAL0_B_INPUT_SPARE1 0x000d0000 -#define NV20TCL_RC_FINAL0_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 -#define NV20TCL_RC_FINAL0_B_INPUT_E_TIMES_F 0x000f0000 -#define NV20TCL_RC_FINAL0_B_INPUT_TEXTURE2 0x000a0000 -#define NV20TCL_RC_FINAL0_B_INPUT_TEXTURE3 0x000b0000 -#define NV20TCL_RC_FINAL0_B_COMPONENT_USAGE (1 << 20) -#define NV20TCL_RC_FINAL0_B_COMPONENT_USAGE_RGB 0x00000000 -#define NV20TCL_RC_FINAL0_B_COMPONENT_USAGE_ALPHA 0x00100000 -#define NV20TCL_RC_FINAL0_B_MAPPING_SHIFT 21 -#define NV20TCL_RC_FINAL0_B_MAPPING_MASK 0x00e00000 -#define NV20TCL_RC_FINAL0_B_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_FINAL0_B_MAPPING_UNSIGNED_INVERT 0x00200000 -#define NV20TCL_RC_FINAL0_B_MAPPING_EXPAND_NORMAL 0x00400000 -#define NV20TCL_RC_FINAL0_B_MAPPING_EXPAND_NEGATE 0x00600000 -#define NV20TCL_RC_FINAL0_B_MAPPING_HALF_BIAS_NORMAL 0x00800000 -#define NV20TCL_RC_FINAL0_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000 -#define NV20TCL_RC_FINAL0_B_MAPPING_SIGNED_IDENTITY 0x00c00000 -#define NV20TCL_RC_FINAL0_B_MAPPING_SIGNED_NEGATE 0x00e00000 -#define NV20TCL_RC_FINAL0_A_INPUT_SHIFT 24 -#define NV20TCL_RC_FINAL0_A_INPUT_MASK 0x0f000000 -#define NV20TCL_RC_FINAL0_A_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_FINAL0_A_INPUT_CONSTANT_COLOR0 0x01000000 -#define NV20TCL_RC_FINAL0_A_INPUT_CONSTANT_COLOR1 0x02000000 -#define NV20TCL_RC_FINAL0_A_INPUT_FOG 0x03000000 -#define NV20TCL_RC_FINAL0_A_INPUT_PRIMARY_COLOR 0x04000000 -#define NV20TCL_RC_FINAL0_A_INPUT_SECONDARY_COLOR 0x05000000 -#define NV20TCL_RC_FINAL0_A_INPUT_TEXTURE0 0x08000000 -#define NV20TCL_RC_FINAL0_A_INPUT_TEXTURE1 0x09000000 -#define NV20TCL_RC_FINAL0_A_INPUT_SPARE0 0x0c000000 -#define NV20TCL_RC_FINAL0_A_INPUT_SPARE1 0x0d000000 -#define NV20TCL_RC_FINAL0_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 -#define NV20TCL_RC_FINAL0_A_INPUT_E_TIMES_F 0x0f000000 -#define NV20TCL_RC_FINAL0_A_INPUT_TEXTURE2 0x0a000000 -#define NV20TCL_RC_FINAL0_A_INPUT_TEXTURE3 0x0b000000 -#define NV20TCL_RC_FINAL0_A_COMPONENT_USAGE (1 << 28) -#define NV20TCL_RC_FINAL0_A_COMPONENT_USAGE_RGB 0x00000000 -#define NV20TCL_RC_FINAL0_A_COMPONENT_USAGE_ALPHA 0x10000000 -#define NV20TCL_RC_FINAL0_A_MAPPING_SHIFT 29 -#define NV20TCL_RC_FINAL0_A_MAPPING_MASK 0xe0000000 -#define NV20TCL_RC_FINAL0_A_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_FINAL0_A_MAPPING_UNSIGNED_INVERT 0x20000000 -#define NV20TCL_RC_FINAL0_A_MAPPING_EXPAND_NORMAL 0x40000000 -#define NV20TCL_RC_FINAL0_A_MAPPING_EXPAND_NEGATE 0x60000000 -#define NV20TCL_RC_FINAL0_A_MAPPING_HALF_BIAS_NORMAL 0x80000000 -#define NV20TCL_RC_FINAL0_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000 -#define NV20TCL_RC_FINAL0_A_MAPPING_SIGNED_IDENTITY 0xc0000000 -#define NV20TCL_RC_FINAL0_A_MAPPING_SIGNED_NEGATE 0xe0000000 -#define NV20TCL_RC_FINAL1 0x0000028c -#define NV20TCL_RC_FINAL1_COLOR_SUM_CLAMP (1 << 7) -#define NV20TCL_RC_FINAL1_G_INPUT_SHIFT 8 -#define NV20TCL_RC_FINAL1_G_INPUT_MASK 0x00000f00 -#define NV20TCL_RC_FINAL1_G_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_FINAL1_G_INPUT_CONSTANT_COLOR0 0x00000100 -#define NV20TCL_RC_FINAL1_G_INPUT_CONSTANT_COLOR1 0x00000200 -#define NV20TCL_RC_FINAL1_G_INPUT_FOG 0x00000300 -#define NV20TCL_RC_FINAL1_G_INPUT_PRIMARY_COLOR 0x00000400 -#define NV20TCL_RC_FINAL1_G_INPUT_SECONDARY_COLOR 0x00000500 -#define NV20TCL_RC_FINAL1_G_INPUT_TEXTURE0 0x00000800 -#define NV20TCL_RC_FINAL1_G_INPUT_TEXTURE1 0x00000900 -#define NV20TCL_RC_FINAL1_G_INPUT_SPARE0 0x00000c00 -#define NV20TCL_RC_FINAL1_G_INPUT_SPARE1 0x00000d00 -#define NV20TCL_RC_FINAL1_G_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 -#define NV20TCL_RC_FINAL1_G_INPUT_E_TIMES_F 0x00000f00 -#define NV20TCL_RC_FINAL1_G_INPUT_TEXTURE2 0x00000a00 -#define NV20TCL_RC_FINAL1_G_INPUT_TEXTURE3 0x00000b00 -#define NV20TCL_RC_FINAL1_G_COMPONENT_USAGE (1 << 12) -#define NV20TCL_RC_FINAL1_G_COMPONENT_USAGE_RGB 0x00000000 -#define NV20TCL_RC_FINAL1_G_COMPONENT_USAGE_ALPHA 0x00001000 -#define NV20TCL_RC_FINAL1_G_MAPPING_SHIFT 13 -#define NV20TCL_RC_FINAL1_G_MAPPING_MASK 0x0000e000 -#define NV20TCL_RC_FINAL1_G_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_FINAL1_G_MAPPING_UNSIGNED_INVERT 0x00002000 -#define NV20TCL_RC_FINAL1_G_MAPPING_EXPAND_NORMAL 0x00004000 -#define NV20TCL_RC_FINAL1_G_MAPPING_EXPAND_NEGATE 0x00006000 -#define NV20TCL_RC_FINAL1_G_MAPPING_HALF_BIAS_NORMAL 0x00008000 -#define NV20TCL_RC_FINAL1_G_MAPPING_HALF_BIAS_NEGATE 0x0000a000 -#define NV20TCL_RC_FINAL1_G_MAPPING_SIGNED_IDENTITY 0x0000c000 -#define NV20TCL_RC_FINAL1_G_MAPPING_SIGNED_NEGATE 0x0000e000 -#define NV20TCL_RC_FINAL1_F_INPUT_SHIFT 16 -#define NV20TCL_RC_FINAL1_F_INPUT_MASK 0x000f0000 -#define NV20TCL_RC_FINAL1_F_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_FINAL1_F_INPUT_CONSTANT_COLOR0 0x00010000 -#define NV20TCL_RC_FINAL1_F_INPUT_CONSTANT_COLOR1 0x00020000 -#define NV20TCL_RC_FINAL1_F_INPUT_FOG 0x00030000 -#define NV20TCL_RC_FINAL1_F_INPUT_PRIMARY_COLOR 0x00040000 -#define NV20TCL_RC_FINAL1_F_INPUT_SECONDARY_COLOR 0x00050000 -#define NV20TCL_RC_FINAL1_F_INPUT_TEXTURE0 0x00080000 -#define NV20TCL_RC_FINAL1_F_INPUT_TEXTURE1 0x00090000 -#define NV20TCL_RC_FINAL1_F_INPUT_SPARE0 0x000c0000 -#define NV20TCL_RC_FINAL1_F_INPUT_SPARE1 0x000d0000 -#define NV20TCL_RC_FINAL1_F_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 -#define NV20TCL_RC_FINAL1_F_INPUT_E_TIMES_F 0x000f0000 -#define NV20TCL_RC_FINAL1_F_INPUT_TEXTURE2 0x000a0000 -#define NV20TCL_RC_FINAL1_F_INPUT_TEXTURE3 0x000b0000 -#define NV20TCL_RC_FINAL1_F_COMPONENT_USAGE (1 << 20) -#define NV20TCL_RC_FINAL1_F_COMPONENT_USAGE_RGB 0x00000000 -#define NV20TCL_RC_FINAL1_F_COMPONENT_USAGE_ALPHA 0x00100000 -#define NV20TCL_RC_FINAL1_F_MAPPING_SHIFT 21 -#define NV20TCL_RC_FINAL1_F_MAPPING_MASK 0x00e00000 -#define NV20TCL_RC_FINAL1_F_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_FINAL1_F_MAPPING_UNSIGNED_INVERT 0x00200000 -#define NV20TCL_RC_FINAL1_F_MAPPING_EXPAND_NORMAL 0x00400000 -#define NV20TCL_RC_FINAL1_F_MAPPING_EXPAND_NEGATE 0x00600000 -#define NV20TCL_RC_FINAL1_F_MAPPING_HALF_BIAS_NORMAL 0x00800000 -#define NV20TCL_RC_FINAL1_F_MAPPING_HALF_BIAS_NEGATE 0x00a00000 -#define NV20TCL_RC_FINAL1_F_MAPPING_SIGNED_IDENTITY 0x00c00000 -#define NV20TCL_RC_FINAL1_F_MAPPING_SIGNED_NEGATE 0x00e00000 -#define NV20TCL_RC_FINAL1_E_INPUT_SHIFT 24 -#define NV20TCL_RC_FINAL1_E_INPUT_MASK 0x0f000000 -#define NV20TCL_RC_FINAL1_E_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_FINAL1_E_INPUT_CONSTANT_COLOR0 0x01000000 -#define NV20TCL_RC_FINAL1_E_INPUT_CONSTANT_COLOR1 0x02000000 -#define NV20TCL_RC_FINAL1_E_INPUT_FOG 0x03000000 -#define NV20TCL_RC_FINAL1_E_INPUT_PRIMARY_COLOR 0x04000000 -#define NV20TCL_RC_FINAL1_E_INPUT_SECONDARY_COLOR 0x05000000 -#define NV20TCL_RC_FINAL1_E_INPUT_TEXTURE0 0x08000000 -#define NV20TCL_RC_FINAL1_E_INPUT_TEXTURE1 0x09000000 -#define NV20TCL_RC_FINAL1_E_INPUT_SPARE0 0x0c000000 -#define NV20TCL_RC_FINAL1_E_INPUT_SPARE1 0x0d000000 -#define NV20TCL_RC_FINAL1_E_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 -#define NV20TCL_RC_FINAL1_E_INPUT_E_TIMES_F 0x0f000000 -#define NV20TCL_RC_FINAL1_E_INPUT_TEXTURE2 0x0a000000 -#define NV20TCL_RC_FINAL1_E_INPUT_TEXTURE3 0x0b000000 -#define NV20TCL_RC_FINAL1_E_COMPONENT_USAGE (1 << 28) -#define NV20TCL_RC_FINAL1_E_COMPONENT_USAGE_RGB 0x00000000 -#define NV20TCL_RC_FINAL1_E_COMPONENT_USAGE_ALPHA 0x10000000 -#define NV20TCL_RC_FINAL1_E_MAPPING_SHIFT 29 -#define NV20TCL_RC_FINAL1_E_MAPPING_MASK 0xe0000000 -#define NV20TCL_RC_FINAL1_E_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_FINAL1_E_MAPPING_UNSIGNED_INVERT 0x20000000 -#define NV20TCL_RC_FINAL1_E_MAPPING_EXPAND_NORMAL 0x40000000 -#define NV20TCL_RC_FINAL1_E_MAPPING_EXPAND_NEGATE 0x60000000 -#define NV20TCL_RC_FINAL1_E_MAPPING_HALF_BIAS_NORMAL 0x80000000 -#define NV20TCL_RC_FINAL1_E_MAPPING_HALF_BIAS_NEGATE 0xa0000000 -#define NV20TCL_RC_FINAL1_E_MAPPING_SIGNED_IDENTITY 0xc0000000 -#define NV20TCL_RC_FINAL1_E_MAPPING_SIGNED_NEGATE 0xe0000000 -#define NV20TCL_LIGHT_MODEL 0x00000294 -#define NV20TCL_LIGHT_MODEL_VIEWER_SHIFT 16 -#define NV20TCL_LIGHT_MODEL_VIEWER_MASK 0x00030000 -#define NV20TCL_LIGHT_MODEL_VIEWER_NONLOCAL 0x00020000 -#define NV20TCL_LIGHT_MODEL_VIEWER_LOCAL 0x00030000 -#define NV20TCL_LIGHT_MODEL_SEPARATE_SPECULAR (1 << 0) -#define NV20TCL_COLOR_MATERIAL 0x00000298 -#define NV20TCL_COLOR_MATERIAL_FRONT_EMISSION_SHIFT 0 -#define NV20TCL_COLOR_MATERIAL_FRONT_EMISSION_MASK 0x00000003 -#define NV20TCL_COLOR_MATERIAL_FRONT_EMISSION_OFF 0x00000000 -#define NV20TCL_COLOR_MATERIAL_FRONT_EMISSION_COL1 0x00000001 -#define NV20TCL_COLOR_MATERIAL_FRONT_EMISSION_COL2 0x00000002 -#define NV20TCL_COLOR_MATERIAL_FRONT_AMBIENT_SHIFT 2 -#define NV20TCL_COLOR_MATERIAL_FRONT_AMBIENT_MASK 0x0000000c -#define NV20TCL_COLOR_MATERIAL_FRONT_AMBIENT_OFF 0x00000000 -#define NV20TCL_COLOR_MATERIAL_FRONT_AMBIENT_COL1 0x00000004 -#define NV20TCL_COLOR_MATERIAL_FRONT_AMBIENT_COL2 0x00000008 -#define NV20TCL_COLOR_MATERIAL_FRONT_DIFFUSE_SHIFT 4 -#define NV20TCL_COLOR_MATERIAL_FRONT_DIFFUSE_MASK 0x00000030 -#define NV20TCL_COLOR_MATERIAL_FRONT_DIFFUSE_OFF 0x00000000 -#define NV20TCL_COLOR_MATERIAL_FRONT_DIFFUSE_COL1 0x00000010 -#define NV20TCL_COLOR_MATERIAL_FRONT_DIFFUSE_COL2 0x00000020 -#define NV20TCL_COLOR_MATERIAL_FRONT_SPECULAR_SHIFT 6 -#define NV20TCL_COLOR_MATERIAL_FRONT_SPECULAR_MASK 0x000000c0 -#define NV20TCL_COLOR_MATERIAL_FRONT_SPECULAR_OFF 0x00000000 -#define NV20TCL_COLOR_MATERIAL_FRONT_SPECULAR_COL1 0x00000040 -#define NV20TCL_COLOR_MATERIAL_FRONT_SPECULAR_COL2 0x00000080 -#define NV20TCL_COLOR_MATERIAL_BACK_EMISSION_SHIFT 8 -#define NV20TCL_COLOR_MATERIAL_BACK_EMISSION_MASK 0x00000300 -#define NV20TCL_COLOR_MATERIAL_BACK_EMISSION_OFF 0x00000000 -#define NV20TCL_COLOR_MATERIAL_BACK_EMISSION_COL1 0x00000100 -#define NV20TCL_COLOR_MATERIAL_BACK_EMISSION_COL2 0x00000200 -#define NV20TCL_COLOR_MATERIAL_BACK_AMBIENT_SHIFT 10 -#define NV20TCL_COLOR_MATERIAL_BACK_AMBIENT_MASK 0x00000c00 -#define NV20TCL_COLOR_MATERIAL_BACK_AMBIENT_OFF 0x00000000 -#define NV20TCL_COLOR_MATERIAL_BACK_AMBIENT_COL1 0x00000400 -#define NV20TCL_COLOR_MATERIAL_BACK_AMBIENT_COL2 0x00000800 -#define NV20TCL_COLOR_MATERIAL_BACK_DIFFUSE_SHIFT 12 -#define NV20TCL_COLOR_MATERIAL_BACK_DIFFUSE_MASK 0x00003000 -#define NV20TCL_COLOR_MATERIAL_BACK_DIFFUSE_OFF 0x00000000 -#define NV20TCL_COLOR_MATERIAL_BACK_DIFFUSE_COL1 0x00001000 -#define NV20TCL_COLOR_MATERIAL_BACK_DIFFUSE_COL2 0x00002000 -#define NV20TCL_COLOR_MATERIAL_BACK_SPECULAR_SHIFT 14 -#define NV20TCL_COLOR_MATERIAL_BACK_SPECULAR_MASK 0x0000c000 -#define NV20TCL_COLOR_MATERIAL_BACK_SPECULAR_OFF 0x00000000 -#define NV20TCL_COLOR_MATERIAL_BACK_SPECULAR_COL1 0x00004000 -#define NV20TCL_COLOR_MATERIAL_BACK_SPECULAR_COL2 0x00008000 -#define NV20TCL_FOG_MODE 0x0000029c -#define NV20TCL_FOG_MODE_LINEAR_UNSIGNED 0x00000804 -#define NV20TCL_FOG_MODE_LINEAR_SIGNED 0x00002601 -#define NV20TCL_FOG_MODE_EXP_UNSIGNED 0x00000802 -#define NV20TCL_FOG_MODE_EXP_SIGNED 0x00000800 -#define NV20TCL_FOG_MODE_EXP2_UNSIGNED 0x00000803 -#define NV20TCL_FOG_MODE_EXP2_SIGNED 0x00000801 -#define NV20TCL_FOG_COORD 0x000002a0 -#define NV20TCL_FOG_COORD_DIST_RADIAL 0x00000001 -#define NV20TCL_FOG_COORD_DIST_ORTHOGONAL 0x00000002 -#define NV20TCL_FOG_COORD_DIST_ORTHOGONAL_ABS 0x00000003 -#define NV20TCL_FOG_COORD_FOG 0x00000006 -#define NV20TCL_FOG_ENABLE 0x000002a4 -#define NV20TCL_FOG_COLOR 0x000002a8 -#define NV20TCL_FOG_COLOR_R_SHIFT 0 -#define NV20TCL_FOG_COLOR_R_MASK 0x000000ff -#define NV20TCL_FOG_COLOR_G_SHIFT 8 -#define NV20TCL_FOG_COLOR_G_MASK 0x0000ff00 -#define NV20TCL_FOG_COLOR_B_SHIFT 16 -#define NV20TCL_FOG_COLOR_B_MASK 0x00ff0000 -#define NV20TCL_FOG_COLOR_A_SHIFT 24 -#define NV20TCL_FOG_COLOR_A_MASK 0xff000000 -#define NV20TCL_VIEWPORT_CLIP_MODE 0x000002b4 -#define NV20TCL_VIEWPORT_CLIP_HORIZ(x) (0x000002c0+((x)*4)) -#define NV20TCL_VIEWPORT_CLIP_HORIZ__SIZE 0x00000008 -#define NV20TCL_VIEWPORT_CLIP_VERT(x) (0x000002e0+((x)*4)) -#define NV20TCL_VIEWPORT_CLIP_VERT__SIZE 0x00000008 -#define NV20TCL_ALPHA_FUNC_ENABLE 0x00000300 -#define NV20TCL_BLEND_FUNC_ENABLE 0x00000304 -#define NV20TCL_CULL_FACE_ENABLE 0x00000308 -#define NV20TCL_DEPTH_TEST_ENABLE 0x0000030c -#define NV20TCL_DITHER_ENABLE 0x00000310 -#define NV20TCL_LIGHTING_ENABLE 0x00000314 -#define NV20TCL_POINT_PARAMETERS_ENABLE 0x00000318 -#define NV20TCL_POINT_SMOOTH_ENABLE 0x0000031c -#define NV20TCL_LINE_SMOOTH_ENABLE 0x00000320 -#define NV20TCL_POLYGON_SMOOTH_ENABLE 0x00000324 -#define NV20TCL_STENCIL_ENABLE 0x0000032c -#define NV20TCL_POLYGON_OFFSET_POINT_ENABLE 0x00000330 -#define NV20TCL_POLYGON_OFFSET_LINE_ENABLE 0x00000334 -#define NV20TCL_POLYGON_OFFSET_FILL_ENABLE 0x00000338 -#define NV20TCL_ALPHA_FUNC_FUNC 0x0000033c -#define NV20TCL_ALPHA_FUNC_FUNC_NEVER 0x00000200 -#define NV20TCL_ALPHA_FUNC_FUNC_LESS 0x00000201 -#define NV20TCL_ALPHA_FUNC_FUNC_EQUAL 0x00000202 -#define NV20TCL_ALPHA_FUNC_FUNC_LEQUAL 0x00000203 -#define NV20TCL_ALPHA_FUNC_FUNC_GREATER 0x00000204 -#define NV20TCL_ALPHA_FUNC_FUNC_NOTEQUAL 0x00000205 -#define NV20TCL_ALPHA_FUNC_FUNC_GEQUAL 0x00000206 -#define NV20TCL_ALPHA_FUNC_FUNC_ALWAYS 0x00000207 -#define NV20TCL_ALPHA_FUNC_REF 0x00000340 -#define NV20TCL_BLEND_FUNC_SRC 0x00000344 -#define NV20TCL_BLEND_FUNC_SRC_ZERO 0x00000000 -#define NV20TCL_BLEND_FUNC_SRC_ONE 0x00000001 -#define NV20TCL_BLEND_FUNC_SRC_SRC_COLOR 0x00000300 -#define NV20TCL_BLEND_FUNC_SRC_ONE_MINUS_SRC_COLOR 0x00000301 -#define NV20TCL_BLEND_FUNC_SRC_SRC_ALPHA 0x00000302 -#define NV20TCL_BLEND_FUNC_SRC_ONE_MINUS_SRC_ALPHA 0x00000303 -#define NV20TCL_BLEND_FUNC_SRC_DST_ALPHA 0x00000304 -#define NV20TCL_BLEND_FUNC_SRC_ONE_MINUS_DST_ALPHA 0x00000305 -#define NV20TCL_BLEND_FUNC_SRC_DST_COLOR 0x00000306 -#define NV20TCL_BLEND_FUNC_SRC_ONE_MINUS_DST_COLOR 0x00000307 -#define NV20TCL_BLEND_FUNC_SRC_SRC_ALPHA_SATURATE 0x00000308 -#define NV20TCL_BLEND_FUNC_SRC_CONSTANT_COLOR 0x00008001 -#define NV20TCL_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_COLOR 0x00008002 -#define NV20TCL_BLEND_FUNC_SRC_CONSTANT_ALPHA 0x00008003 -#define NV20TCL_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_ALPHA 0x00008004 -#define NV20TCL_BLEND_FUNC_DST 0x00000348 -#define NV20TCL_BLEND_FUNC_DST_ZERO 0x00000000 -#define NV20TCL_BLEND_FUNC_DST_ONE 0x00000001 -#define NV20TCL_BLEND_FUNC_DST_SRC_COLOR 0x00000300 -#define NV20TCL_BLEND_FUNC_DST_ONE_MINUS_SRC_COLOR 0x00000301 -#define NV20TCL_BLEND_FUNC_DST_SRC_ALPHA 0x00000302 -#define NV20TCL_BLEND_FUNC_DST_ONE_MINUS_SRC_ALPHA 0x00000303 -#define NV20TCL_BLEND_FUNC_DST_DST_ALPHA 0x00000304 -#define NV20TCL_BLEND_FUNC_DST_ONE_MINUS_DST_ALPHA 0x00000305 -#define NV20TCL_BLEND_FUNC_DST_DST_COLOR 0x00000306 -#define NV20TCL_BLEND_FUNC_DST_ONE_MINUS_DST_COLOR 0x00000307 -#define NV20TCL_BLEND_FUNC_DST_SRC_ALPHA_SATURATE 0x00000308 -#define NV20TCL_BLEND_FUNC_DST_CONSTANT_COLOR 0x00008001 -#define NV20TCL_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_COLOR 0x00008002 -#define NV20TCL_BLEND_FUNC_DST_CONSTANT_ALPHA 0x00008003 -#define NV20TCL_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_ALPHA 0x00008004 -#define NV20TCL_BLEND_COLOR 0x0000034c -#define NV20TCL_BLEND_COLOR_B_SHIFT 0 -#define NV20TCL_BLEND_COLOR_B_MASK 0x000000ff -#define NV20TCL_BLEND_COLOR_G_SHIFT 8 -#define NV20TCL_BLEND_COLOR_G_MASK 0x0000ff00 -#define NV20TCL_BLEND_COLOR_R_SHIFT 16 -#define NV20TCL_BLEND_COLOR_R_MASK 0x00ff0000 -#define NV20TCL_BLEND_COLOR_A_SHIFT 24 -#define NV20TCL_BLEND_COLOR_A_MASK 0xff000000 -#define NV20TCL_BLEND_EQUATION 0x00000350 -#define NV20TCL_BLEND_EQUATION_FUNC_ADD 0x00008006 -#define NV20TCL_BLEND_EQUATION_MIN 0x00008007 -#define NV20TCL_BLEND_EQUATION_MAX 0x00008008 -#define NV20TCL_BLEND_EQUATION_FUNC_SUBTRACT 0x0000800a -#define NV20TCL_BLEND_EQUATION_FUNC_REVERSE_SUBTRACT 0x0000800b -#define NV20TCL_DEPTH_FUNC 0x00000354 -#define NV20TCL_DEPTH_FUNC_NEVER 0x00000200 -#define NV20TCL_DEPTH_FUNC_LESS 0x00000201 -#define NV20TCL_DEPTH_FUNC_EQUAL 0x00000202 -#define NV20TCL_DEPTH_FUNC_LEQUAL 0x00000203 -#define NV20TCL_DEPTH_FUNC_GREATER 0x00000204 -#define NV20TCL_DEPTH_FUNC_NOTEQUAL 0x00000205 -#define NV20TCL_DEPTH_FUNC_GEQUAL 0x00000206 -#define NV20TCL_DEPTH_FUNC_ALWAYS 0x00000207 -#define NV20TCL_COLOR_MASK 0x00000358 -#define NV20TCL_COLOR_MASK_B (1 << 0) -#define NV20TCL_COLOR_MASK_G (1 << 8) -#define NV20TCL_COLOR_MASK_R (1 << 16) -#define NV20TCL_COLOR_MASK_A (1 << 24) -#define NV20TCL_DEPTH_WRITE_ENABLE 0x0000035c -#define NV20TCL_STENCIL_MASK 0x00000360 -#define NV20TCL_STENCIL_FUNC_FUNC 0x00000364 -#define NV20TCL_STENCIL_FUNC_FUNC_NEVER 0x00000200 -#define NV20TCL_STENCIL_FUNC_FUNC_LESS 0x00000201 -#define NV20TCL_STENCIL_FUNC_FUNC_EQUAL 0x00000202 -#define NV20TCL_STENCIL_FUNC_FUNC_LEQUAL 0x00000203 -#define NV20TCL_STENCIL_FUNC_FUNC_GREATER 0x00000204 -#define NV20TCL_STENCIL_FUNC_FUNC_NOTEQUAL 0x00000205 -#define NV20TCL_STENCIL_FUNC_FUNC_GEQUAL 0x00000206 -#define NV20TCL_STENCIL_FUNC_FUNC_ALWAYS 0x00000207 -#define NV20TCL_STENCIL_FUNC_REF 0x00000368 -#define NV20TCL_STENCIL_FUNC_MASK 0x0000036c -#define NV20TCL_STENCIL_OP_FAIL 0x00000370 -#define NV20TCL_STENCIL_OP_FAIL_ZERO 0x00000000 -#define NV20TCL_STENCIL_OP_FAIL_INVERT 0x0000150a -#define NV20TCL_STENCIL_OP_FAIL_KEEP 0x00001e00 -#define NV20TCL_STENCIL_OP_FAIL_REPLACE 0x00001e01 -#define NV20TCL_STENCIL_OP_FAIL_INCR 0x00001e02 -#define NV20TCL_STENCIL_OP_FAIL_DECR 0x00001e03 -#define NV20TCL_STENCIL_OP_FAIL_INCR_WRAP 0x00008507 -#define NV20TCL_STENCIL_OP_FAIL_DECR_WRAP 0x00008508 -#define NV20TCL_STENCIL_OP_ZFAIL 0x00000374 -#define NV20TCL_STENCIL_OP_ZFAIL_ZERO 0x00000000 -#define NV20TCL_STENCIL_OP_ZFAIL_INVERT 0x0000150a -#define NV20TCL_STENCIL_OP_ZFAIL_KEEP 0x00001e00 -#define NV20TCL_STENCIL_OP_ZFAIL_REPLACE 0x00001e01 -#define NV20TCL_STENCIL_OP_ZFAIL_INCR 0x00001e02 -#define NV20TCL_STENCIL_OP_ZFAIL_DECR 0x00001e03 -#define NV20TCL_STENCIL_OP_ZFAIL_INCR_WRAP 0x00008507 -#define NV20TCL_STENCIL_OP_ZFAIL_DECR_WRAP 0x00008508 -#define NV20TCL_STENCIL_OP_ZPASS 0x00000378 -#define NV20TCL_STENCIL_OP_ZPASS_ZERO 0x00000000 -#define NV20TCL_STENCIL_OP_ZPASS_INVERT 0x0000150a -#define NV20TCL_STENCIL_OP_ZPASS_KEEP 0x00001e00 -#define NV20TCL_STENCIL_OP_ZPASS_REPLACE 0x00001e01 -#define NV20TCL_STENCIL_OP_ZPASS_INCR 0x00001e02 -#define NV20TCL_STENCIL_OP_ZPASS_DECR 0x00001e03 -#define NV20TCL_STENCIL_OP_ZPASS_INCR_WRAP 0x00008507 -#define NV20TCL_STENCIL_OP_ZPASS_DECR_WRAP 0x00008508 -#define NV20TCL_SHADE_MODEL 0x0000037c -#define NV20TCL_SHADE_MODEL_FLAT 0x00001d00 -#define NV20TCL_SHADE_MODEL_SMOOTH 0x00001d01 -#define NV20TCL_LINE_WIDTH 0x00000380 -#define NV20TCL_POLYGON_OFFSET_FACTOR 0x00000384 -#define NV20TCL_POLYGON_OFFSET_UNITS 0x00000388 -#define NV20TCL_POLYGON_MODE_FRONT 0x0000038c -#define NV20TCL_POLYGON_MODE_FRONT_POINT 0x00001b00 -#define NV20TCL_POLYGON_MODE_FRONT_LINE 0x00001b01 -#define NV20TCL_POLYGON_MODE_FRONT_FILL 0x00001b02 -#define NV20TCL_POLYGON_MODE_BACK 0x00000390 -#define NV20TCL_POLYGON_MODE_BACK_POINT 0x00001b00 -#define NV20TCL_POLYGON_MODE_BACK_LINE 0x00001b01 -#define NV20TCL_POLYGON_MODE_BACK_FILL 0x00001b02 -#define NV20TCL_DEPTH_RANGE_NEAR 0x00000394 -#define NV20TCL_DEPTH_RANGE_FAR 0x00000398 -#define NV20TCL_CULL_FACE 0x0000039c -#define NV20TCL_CULL_FACE_FRONT 0x00000404 -#define NV20TCL_CULL_FACE_BACK 0x00000405 -#define NV20TCL_CULL_FACE_FRONT_AND_BACK 0x00000408 -#define NV20TCL_FRONT_FACE 0x000003a0 -#define NV20TCL_FRONT_FACE_CW 0x00000900 -#define NV20TCL_FRONT_FACE_CCW 0x00000901 -#define NV20TCL_NORMALIZE_ENABLE 0x000003a4 -#define NV20TCL_MATERIAL_FACTOR_FRONT_R 0x000003a8 -#define NV20TCL_MATERIAL_FACTOR_FRONT_G 0x000003ac -#define NV20TCL_MATERIAL_FACTOR_FRONT_B 0x000003b0 -#define NV20TCL_MATERIAL_FACTOR_FRONT_A 0x000003b4 -#define NV20TCL_SEPARATE_SPECULAR_ENABLE 0x000003b8 -#define NV20TCL_ENABLED_LIGHTS 0x000003bc -#define NV20TCL_ENABLED_LIGHTS_0_SHIFT 0 -#define NV20TCL_ENABLED_LIGHTS_0_MASK 0x00000003 -#define NV20TCL_ENABLED_LIGHTS_0_DISABLED 0x00000000 -#define NV20TCL_ENABLED_LIGHTS_0_NONPOSITIONAL 0x00000001 -#define NV20TCL_ENABLED_LIGHTS_0_POSITIONAL 0x00000002 -#define NV20TCL_ENABLED_LIGHTS_0_DIRECTIONAL 0x00000003 -#define NV20TCL_ENABLED_LIGHTS_1_SHIFT 2 -#define NV20TCL_ENABLED_LIGHTS_1_MASK 0x0000000c -#define NV20TCL_ENABLED_LIGHTS_1_DISABLED 0x00000000 -#define NV20TCL_ENABLED_LIGHTS_1_NONPOSITIONAL 0x00000004 -#define NV20TCL_ENABLED_LIGHTS_1_POSITIONAL 0x00000008 -#define NV20TCL_ENABLED_LIGHTS_1_DIRECTIONAL 0x0000000c -#define NV20TCL_ENABLED_LIGHTS_2_SHIFT 4 -#define NV20TCL_ENABLED_LIGHTS_2_MASK 0x00000030 -#define NV20TCL_ENABLED_LIGHTS_2_DISABLED 0x00000000 -#define NV20TCL_ENABLED_LIGHTS_2_NONPOSITIONAL 0x00000010 -#define NV20TCL_ENABLED_LIGHTS_2_POSITIONAL 0x00000020 -#define NV20TCL_ENABLED_LIGHTS_2_DIRECTIONAL 0x00000030 -#define NV20TCL_ENABLED_LIGHTS_3_SHIFT 6 -#define NV20TCL_ENABLED_LIGHTS_3_MASK 0x000000c0 -#define NV20TCL_ENABLED_LIGHTS_3_DISABLED 0x00000000 -#define NV20TCL_ENABLED_LIGHTS_3_NONPOSITIONAL 0x00000040 -#define NV20TCL_ENABLED_LIGHTS_3_POSITIONAL 0x00000080 -#define NV20TCL_ENABLED_LIGHTS_3_DIRECTIONAL 0x000000c0 -#define NV20TCL_ENABLED_LIGHTS_4_SHIFT 8 -#define NV20TCL_ENABLED_LIGHTS_4_MASK 0x00000300 -#define NV20TCL_ENABLED_LIGHTS_4_DISABLED 0x00000000 -#define NV20TCL_ENABLED_LIGHTS_4_NONPOSITIONAL 0x00000100 -#define NV20TCL_ENABLED_LIGHTS_4_POSITIONAL 0x00000200 -#define NV20TCL_ENABLED_LIGHTS_4_DIRECTIONAL 0x00000300 -#define NV20TCL_ENABLED_LIGHTS_5_SHIFT 10 -#define NV20TCL_ENABLED_LIGHTS_5_MASK 0x00000c00 -#define NV20TCL_ENABLED_LIGHTS_5_DISABLED 0x00000000 -#define NV20TCL_ENABLED_LIGHTS_5_NONPOSITIONAL 0x00000400 -#define NV20TCL_ENABLED_LIGHTS_5_POSITIONAL 0x00000800 -#define NV20TCL_ENABLED_LIGHTS_5_DIRECTIONAL 0x00000c00 -#define NV20TCL_ENABLED_LIGHTS_6_SHIFT 12 -#define NV20TCL_ENABLED_LIGHTS_6_MASK 0x00003000 -#define NV20TCL_ENABLED_LIGHTS_6_DISABLED 0x00000000 -#define NV20TCL_ENABLED_LIGHTS_6_NONPOSITIONAL 0x00001000 -#define NV20TCL_ENABLED_LIGHTS_6_POSITIONAL 0x00002000 -#define NV20TCL_ENABLED_LIGHTS_6_DIRECTIONAL 0x00003000 -#define NV20TCL_ENABLED_LIGHTS_7_SHIFT 14 -#define NV20TCL_ENABLED_LIGHTS_7_MASK 0x0000c000 -#define NV20TCL_ENABLED_LIGHTS_7_DISABLED 0x00000000 -#define NV20TCL_ENABLED_LIGHTS_7_NONPOSITIONAL 0x00004000 -#define NV20TCL_ENABLED_LIGHTS_7_POSITIONAL 0x00008000 -#define NV20TCL_ENABLED_LIGHTS_7_DIRECTIONAL 0x0000c000 -#define NV20TCL_TX_GEN_MODE_S(x) (0x000003c0+((x)*16)) -#define NV20TCL_TX_GEN_MODE_S__SIZE 0x00000004 -#define NV20TCL_TX_GEN_MODE_S_FALSE 0x00000000 -#define NV20TCL_TX_GEN_MODE_S_EYE_LINEAR 0x00002400 -#define NV20TCL_TX_GEN_MODE_S_OBJECT_LINEAR 0x00002401 -#define NV20TCL_TX_GEN_MODE_S_SPHERE_MAP 0x00002402 -#define NV20TCL_TX_GEN_MODE_S_NORMAL_MAP 0x00008511 -#define NV20TCL_TX_GEN_MODE_S_REFLECTION_MAP 0x00008512 -#define NV20TCL_TX_GEN_MODE_T(x) (0x000003c4+((x)*16)) -#define NV20TCL_TX_GEN_MODE_T__SIZE 0x00000004 -#define NV20TCL_TX_GEN_MODE_T_FALSE 0x00000000 -#define NV20TCL_TX_GEN_MODE_T_EYE_LINEAR 0x00002400 -#define NV20TCL_TX_GEN_MODE_T_OBJECT_LINEAR 0x00002401 -#define NV20TCL_TX_GEN_MODE_T_SPHERE_MAP 0x00002402 -#define NV20TCL_TX_GEN_MODE_T_NORMAL_MAP 0x00008511 -#define NV20TCL_TX_GEN_MODE_T_REFLECTION_MAP 0x00008512 -#define NV20TCL_TX_GEN_MODE_R(x) (0x000003c8+((x)*16)) -#define NV20TCL_TX_GEN_MODE_R__SIZE 0x00000004 -#define NV20TCL_TX_GEN_MODE_R_FALSE 0x00000000 -#define NV20TCL_TX_GEN_MODE_R_EYE_LINEAR 0x00002400 -#define NV20TCL_TX_GEN_MODE_R_OBJECT_LINEAR 0x00002401 -#define NV20TCL_TX_GEN_MODE_R_SPHERE_MAP 0x00002402 -#define NV20TCL_TX_GEN_MODE_R_NORMAL_MAP 0x00008511 -#define NV20TCL_TX_GEN_MODE_R_REFLECTION_MAP 0x00008512 -#define NV20TCL_TX_GEN_MODE_Q(x) (0x000003cc+((x)*16)) -#define NV20TCL_TX_GEN_MODE_Q__SIZE 0x00000004 -#define NV20TCL_TX_GEN_MODE_Q_FALSE 0x00000000 -#define NV20TCL_TX_GEN_MODE_Q_EYE_LINEAR 0x00002400 -#define NV20TCL_TX_GEN_MODE_Q_OBJECT_LINEAR 0x00002401 -#define NV20TCL_TX_GEN_MODE_Q_SPHERE_MAP 0x00002402 -#define NV20TCL_TX_GEN_MODE_Q_NORMAL_MAP 0x00008511 -#define NV20TCL_TX_GEN_MODE_Q_REFLECTION_MAP 0x00008512 -#define NV20TCL_TX_MATRIX_ENABLE(x) (0x00000420+((x)*4)) -#define NV20TCL_TX_MATRIX_ENABLE__SIZE 0x00000004 -#define NV20TCL_POINT_SIZE 0x0000043c -#define NV20TCL_MODELVIEW0_MATRIX(x) (0x00000480+((x)*4)) -#define NV20TCL_MODELVIEW0_MATRIX__SIZE 0x00000010 -#define NV20TCL_MODELVIEW1_MATRIX(x) (0x000004c0+((x)*4)) -#define NV20TCL_MODELVIEW1_MATRIX__SIZE 0x00000010 -#define NV20TCL_MODELVIEW2_MATRIX(x) (0x00000500+((x)*4)) -#define NV20TCL_MODELVIEW2_MATRIX__SIZE 0x00000010 -#define NV20TCL_MODELVIEW3_MATRIX(x) (0x00000540+((x)*4)) -#define NV20TCL_MODELVIEW3_MATRIX__SIZE 0x00000010 -#define NV20TCL_INVERSE_MODELVIEW0_MATRIX(x) (0x00000580+((x)*4)) -#define NV20TCL_INVERSE_MODELVIEW0_MATRIX__SIZE 0x00000010 -#define NV20TCL_INVERSE_MODELVIEW1_MATRIX(x) (0x000005c0+((x)*4)) -#define NV20TCL_INVERSE_MODELVIEW1_MATRIX__SIZE 0x00000010 -#define NV20TCL_INVERSE_MODELVIEW2_MATRIX(x) (0x00000600+((x)*4)) -#define NV20TCL_INVERSE_MODELVIEW2_MATRIX__SIZE 0x00000010 -#define NV20TCL_INVERSE_MODELVIEW3_MATRIX(x) (0x00000640+((x)*4)) -#define NV20TCL_INVERSE_MODELVIEW3_MATRIX__SIZE 0x00000010 -#define NV20TCL_PROJECTION_MATRIX(x) (0x00000680+((x)*4)) -#define NV20TCL_PROJECTION_MATRIX__SIZE 0x00000010 -#define NV20TCL_TX0_MATRIX(x) (0x000006c0+((x)*4)) -#define NV20TCL_TX0_MATRIX__SIZE 0x00000010 -#define NV20TCL_TX1_MATRIX(x) (0x00000700+((x)*4)) -#define NV20TCL_TX1_MATRIX__SIZE 0x00000010 -#define NV20TCL_TX2_MATRIX(x) (0x00000740+((x)*4)) -#define NV20TCL_TX2_MATRIX__SIZE 0x00000010 -#define NV20TCL_TX3_MATRIX(x) (0x00000780+((x)*4)) -#define NV20TCL_TX3_MATRIX__SIZE 0x00000010 -#define NV20TCL_TX_GEN_COEFF_S_A(x) (0x00000840+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_S_A__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_S_B(x) (0x00000844+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_S_B__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_S_C(x) (0x00000848+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_S_C__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_S_D(x) (0x0000084c+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_S_D__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_T_A(x) (0x00000850+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_T_A__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_T_B(x) (0x00000854+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_T_B__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_T_C(x) (0x00000858+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_T_C__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_T_D(x) (0x0000085c+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_T_D__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_R_A(x) (0x00000860+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_R_A__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_R_B(x) (0x00000864+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_R_B__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_R_C(x) (0x00000868+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_R_C__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_R_D(x) (0x0000086c+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_R_D__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_Q_A(x) (0x00000870+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_Q_A__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_Q_B(x) (0x00000874+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_Q_B__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_Q_C(x) (0x00000878+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_Q_C__SIZE 0x00000004 -#define NV20TCL_TX_GEN_COEFF_Q_D(x) (0x0000087c+((x)*64)) -#define NV20TCL_TX_GEN_COEFF_Q_D__SIZE 0x00000004 -#define NV20TCL_FOG_EQUATION_CONSTANT 0x000009c0 -#define NV20TCL_FOG_EQUATION_LINEAR 0x000009c4 -#define NV20TCL_FOG_EQUATION_QUADRATIC 0x000009c8 -#define NV20TCL_FRONT_MATERIAL_SHININESS(x) (0x000009e0+((x)*4)) -#define NV20TCL_FRONT_MATERIAL_SHININESS__SIZE 0x00000006 -#define NV20TCL_LIGHT_MODEL_FRONT_AMBIENT_R 0x00000a10 -#define NV20TCL_LIGHT_MODEL_FRONT_AMBIENT_G 0x00000a14 -#define NV20TCL_LIGHT_MODEL_FRONT_AMBIENT_B 0x00000a18 -#define NV20TCL_VIEWPORT_TRANSLATE_X 0x00000a20 -#define NV20TCL_VIEWPORT_TRANSLATE_Y 0x00000a24 -#define NV20TCL_VIEWPORT_TRANSLATE_Z 0x00000a28 -#define NV20TCL_VIEWPORT_TRANSLATE_W 0x00000a2c -#define NV20TCL_POINT_PARAMETER(x) (0x00000a30+((x)*4)) -#define NV20TCL_POINT_PARAMETER__SIZE 0x00000008 -#define NV20TCL_RC_CONSTANT_COLOR0(x) (0x00000a60+((x)*4)) -#define NV20TCL_RC_CONSTANT_COLOR0__SIZE 0x00000008 -#define NV20TCL_RC_CONSTANT_COLOR0_B_SHIFT 0 -#define NV20TCL_RC_CONSTANT_COLOR0_B_MASK 0x000000ff -#define NV20TCL_RC_CONSTANT_COLOR0_G_SHIFT 8 -#define NV20TCL_RC_CONSTANT_COLOR0_G_MASK 0x0000ff00 -#define NV20TCL_RC_CONSTANT_COLOR0_R_SHIFT 16 -#define NV20TCL_RC_CONSTANT_COLOR0_R_MASK 0x00ff0000 -#define NV20TCL_RC_CONSTANT_COLOR0_A_SHIFT 24 -#define NV20TCL_RC_CONSTANT_COLOR0_A_MASK 0xff000000 -#define NV20TCL_RC_CONSTANT_COLOR1(x) (0x00000a80+((x)*4)) -#define NV20TCL_RC_CONSTANT_COLOR1__SIZE 0x00000008 -#define NV20TCL_RC_CONSTANT_COLOR1_B_SHIFT 0 -#define NV20TCL_RC_CONSTANT_COLOR1_B_MASK 0x000000ff -#define NV20TCL_RC_CONSTANT_COLOR1_G_SHIFT 8 -#define NV20TCL_RC_CONSTANT_COLOR1_G_MASK 0x0000ff00 -#define NV20TCL_RC_CONSTANT_COLOR1_R_SHIFT 16 -#define NV20TCL_RC_CONSTANT_COLOR1_R_MASK 0x00ff0000 -#define NV20TCL_RC_CONSTANT_COLOR1_A_SHIFT 24 -#define NV20TCL_RC_CONSTANT_COLOR1_A_MASK 0xff000000 -#define NV20TCL_RC_OUT_ALPHA(x) (0x00000aa0+((x)*4)) -#define NV20TCL_RC_OUT_ALPHA__SIZE 0x00000008 -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_SHIFT 0 -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_MASK 0x0000000f -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_ZERO 0x00000000 -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR0 0x00000001 -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR1 0x00000002 -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_FOG 0x00000003 -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_PRIMARY_COLOR 0x00000004 -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_SECONDARY_COLOR 0x00000005 -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE0 0x00000008 -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE1 0x00000009 -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_SPARE0 0x0000000c -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_SPARE1 0x0000000d -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_E_TIMES_F 0x0000000f -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE2 0x0000000a -#define NV20TCL_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE3 0x0000000b -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_SHIFT 4 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_MASK 0x000000f0 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_ZERO 0x00000000 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR0 0x00000010 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR1 0x00000020 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_FOG 0x00000030 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_PRIMARY_COLOR 0x00000040 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_SECONDARY_COLOR 0x00000050 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE0 0x00000080 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE1 0x00000090 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_SPARE0 0x000000c0 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_SPARE1 0x000000d0 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000000e0 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_E_TIMES_F 0x000000f0 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE2 0x000000a0 -#define NV20TCL_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE3 0x000000b0 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_SHIFT 8 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_MASK 0x00000f00 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_ZERO 0x00000000 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR0 0x00000100 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR1 0x00000200 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_FOG 0x00000300 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_PRIMARY_COLOR 0x00000400 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_SECONDARY_COLOR 0x00000500 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE0 0x00000800 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE1 0x00000900 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0 0x00000c00 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_SPARE1 0x00000d00 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_E_TIMES_F 0x00000f00 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE2 0x00000a00 -#define NV20TCL_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE3 0x00000b00 -#define NV20TCL_RC_OUT_ALPHA_CD_DOT_PRODUCT (1 << 12) -#define NV20TCL_RC_OUT_ALPHA_AB_DOT_PRODUCT (1 << 13) -#define NV20TCL_RC_OUT_ALPHA_MUX_SUM (1 << 14) -#define NV20TCL_RC_OUT_ALPHA_BIAS (1 << 15) -#define NV20TCL_RC_OUT_ALPHA_BIAS_NONE 0x00000000 -#define NV20TCL_RC_OUT_ALPHA_BIAS_BIAS_BY_NEGATIVE_ONE_HALF 0x00008000 -#define NV20TCL_RC_OUT_ALPHA_SCALE_SHIFT 16 -#define NV20TCL_RC_OUT_ALPHA_SCALE_MASK 0x00030000 -#define NV20TCL_RC_OUT_ALPHA_SCALE_NONE 0x00000000 -#define NV20TCL_RC_OUT_ALPHA_SCALE_SCALE_BY_TWO 0x00010000 -#define NV20TCL_RC_OUT_ALPHA_SCALE_SCALE_BY_FOUR 0x00020000 -#define NV20TCL_RC_OUT_ALPHA_SCALE_SCALE_BY_ONE_HALF 0x00030000 -#define NV20TCL_RC_IN_RGB(x) (0x00000ac0+((x)*4)) -#define NV20TCL_RC_IN_RGB__SIZE 0x00000008 -#define NV20TCL_RC_IN_RGB_D_INPUT_SHIFT 0 -#define NV20TCL_RC_IN_RGB_D_INPUT_MASK 0x0000000f -#define NV20TCL_RC_IN_RGB_D_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_IN_RGB_D_INPUT_CONSTANT_COLOR0 0x00000001 -#define NV20TCL_RC_IN_RGB_D_INPUT_CONSTANT_COLOR1 0x00000002 -#define NV20TCL_RC_IN_RGB_D_INPUT_FOG 0x00000003 -#define NV20TCL_RC_IN_RGB_D_INPUT_PRIMARY_COLOR 0x00000004 -#define NV20TCL_RC_IN_RGB_D_INPUT_SECONDARY_COLOR 0x00000005 -#define NV20TCL_RC_IN_RGB_D_INPUT_TEXTURE0 0x00000008 -#define NV20TCL_RC_IN_RGB_D_INPUT_TEXTURE1 0x00000009 -#define NV20TCL_RC_IN_RGB_D_INPUT_SPARE0 0x0000000c -#define NV20TCL_RC_IN_RGB_D_INPUT_SPARE1 0x0000000d -#define NV20TCL_RC_IN_RGB_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e -#define NV20TCL_RC_IN_RGB_D_INPUT_E_TIMES_F 0x0000000f -#define NV20TCL_RC_IN_RGB_D_INPUT_TEXTURE2 0x0000000a -#define NV20TCL_RC_IN_RGB_D_INPUT_TEXTURE3 0x0000000b -#define NV20TCL_RC_IN_RGB_D_COMPONENT_USAGE (1 << 4) -#define NV20TCL_RC_IN_RGB_D_COMPONENT_USAGE_RGB 0x00000000 -#define NV20TCL_RC_IN_RGB_D_COMPONENT_USAGE_ALPHA 0x00000010 -#define NV20TCL_RC_IN_RGB_D_MAPPING_SHIFT 5 -#define NV20TCL_RC_IN_RGB_D_MAPPING_MASK 0x000000e0 -#define NV20TCL_RC_IN_RGB_D_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_IN_RGB_D_MAPPING_UNSIGNED_INVERT 0x00000020 -#define NV20TCL_RC_IN_RGB_D_MAPPING_EXPAND_NORMAL 0x00000040 -#define NV20TCL_RC_IN_RGB_D_MAPPING_EXPAND_NEGATE 0x00000060 -#define NV20TCL_RC_IN_RGB_D_MAPPING_HALF_BIAS_NORMAL 0x00000080 -#define NV20TCL_RC_IN_RGB_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0 -#define NV20TCL_RC_IN_RGB_D_MAPPING_SIGNED_IDENTITY 0x000000c0 -#define NV20TCL_RC_IN_RGB_D_MAPPING_SIGNED_NEGATE 0x000000e0 -#define NV20TCL_RC_IN_RGB_C_INPUT_SHIFT 8 -#define NV20TCL_RC_IN_RGB_C_INPUT_MASK 0x00000f00 -#define NV20TCL_RC_IN_RGB_C_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_IN_RGB_C_INPUT_CONSTANT_COLOR0 0x00000100 -#define NV20TCL_RC_IN_RGB_C_INPUT_CONSTANT_COLOR1 0x00000200 -#define NV20TCL_RC_IN_RGB_C_INPUT_FOG 0x00000300 -#define NV20TCL_RC_IN_RGB_C_INPUT_PRIMARY_COLOR 0x00000400 -#define NV20TCL_RC_IN_RGB_C_INPUT_SECONDARY_COLOR 0x00000500 -#define NV20TCL_RC_IN_RGB_C_INPUT_TEXTURE0 0x00000800 -#define NV20TCL_RC_IN_RGB_C_INPUT_TEXTURE1 0x00000900 -#define NV20TCL_RC_IN_RGB_C_INPUT_SPARE0 0x00000c00 -#define NV20TCL_RC_IN_RGB_C_INPUT_SPARE1 0x00000d00 -#define NV20TCL_RC_IN_RGB_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 -#define NV20TCL_RC_IN_RGB_C_INPUT_E_TIMES_F 0x00000f00 -#define NV20TCL_RC_IN_RGB_C_INPUT_TEXTURE2 0x00000a00 -#define NV20TCL_RC_IN_RGB_C_INPUT_TEXTURE3 0x00000b00 -#define NV20TCL_RC_IN_RGB_C_COMPONENT_USAGE (1 << 12) -#define NV20TCL_RC_IN_RGB_C_COMPONENT_USAGE_RGB 0x00000000 -#define NV20TCL_RC_IN_RGB_C_COMPONENT_USAGE_ALPHA 0x00001000 -#define NV20TCL_RC_IN_RGB_C_MAPPING_SHIFT 13 -#define NV20TCL_RC_IN_RGB_C_MAPPING_MASK 0x0000e000 -#define NV20TCL_RC_IN_RGB_C_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_IN_RGB_C_MAPPING_UNSIGNED_INVERT 0x00002000 -#define NV20TCL_RC_IN_RGB_C_MAPPING_EXPAND_NORMAL 0x00004000 -#define NV20TCL_RC_IN_RGB_C_MAPPING_EXPAND_NEGATE 0x00006000 -#define NV20TCL_RC_IN_RGB_C_MAPPING_HALF_BIAS_NORMAL 0x00008000 -#define NV20TCL_RC_IN_RGB_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000 -#define NV20TCL_RC_IN_RGB_C_MAPPING_SIGNED_IDENTITY 0x0000c000 -#define NV20TCL_RC_IN_RGB_C_MAPPING_SIGNED_NEGATE 0x0000e000 -#define NV20TCL_RC_IN_RGB_B_INPUT_SHIFT 16 -#define NV20TCL_RC_IN_RGB_B_INPUT_MASK 0x000f0000 -#define NV20TCL_RC_IN_RGB_B_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_IN_RGB_B_INPUT_CONSTANT_COLOR0 0x00010000 -#define NV20TCL_RC_IN_RGB_B_INPUT_CONSTANT_COLOR1 0x00020000 -#define NV20TCL_RC_IN_RGB_B_INPUT_FOG 0x00030000 -#define NV20TCL_RC_IN_RGB_B_INPUT_PRIMARY_COLOR 0x00040000 -#define NV20TCL_RC_IN_RGB_B_INPUT_SECONDARY_COLOR 0x00050000 -#define NV20TCL_RC_IN_RGB_B_INPUT_TEXTURE0 0x00080000 -#define NV20TCL_RC_IN_RGB_B_INPUT_TEXTURE1 0x00090000 -#define NV20TCL_RC_IN_RGB_B_INPUT_SPARE0 0x000c0000 -#define NV20TCL_RC_IN_RGB_B_INPUT_SPARE1 0x000d0000 -#define NV20TCL_RC_IN_RGB_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 -#define NV20TCL_RC_IN_RGB_B_INPUT_E_TIMES_F 0x000f0000 -#define NV20TCL_RC_IN_RGB_B_INPUT_TEXTURE2 0x000a0000 -#define NV20TCL_RC_IN_RGB_B_INPUT_TEXTURE3 0x000b0000 -#define NV20TCL_RC_IN_RGB_B_COMPONENT_USAGE (1 << 20) -#define NV20TCL_RC_IN_RGB_B_COMPONENT_USAGE_RGB 0x00000000 -#define NV20TCL_RC_IN_RGB_B_COMPONENT_USAGE_ALPHA 0x00100000 -#define NV20TCL_RC_IN_RGB_B_MAPPING_SHIFT 21 -#define NV20TCL_RC_IN_RGB_B_MAPPING_MASK 0x00e00000 -#define NV20TCL_RC_IN_RGB_B_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_IN_RGB_B_MAPPING_UNSIGNED_INVERT 0x00200000 -#define NV20TCL_RC_IN_RGB_B_MAPPING_EXPAND_NORMAL 0x00400000 -#define NV20TCL_RC_IN_RGB_B_MAPPING_EXPAND_NEGATE 0x00600000 -#define NV20TCL_RC_IN_RGB_B_MAPPING_HALF_BIAS_NORMAL 0x00800000 -#define NV20TCL_RC_IN_RGB_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000 -#define NV20TCL_RC_IN_RGB_B_MAPPING_SIGNED_IDENTITY 0x00c00000 -#define NV20TCL_RC_IN_RGB_B_MAPPING_SIGNED_NEGATE 0x00e00000 -#define NV20TCL_RC_IN_RGB_A_INPUT_SHIFT 24 -#define NV20TCL_RC_IN_RGB_A_INPUT_MASK 0x0f000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_ZERO 0x00000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_CONSTANT_COLOR0 0x01000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_CONSTANT_COLOR1 0x02000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_FOG 0x03000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_PRIMARY_COLOR 0x04000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_SECONDARY_COLOR 0x05000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_TEXTURE0 0x08000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_TEXTURE1 0x09000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_SPARE0 0x0c000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_SPARE1 0x0d000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_E_TIMES_F 0x0f000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_TEXTURE2 0x0a000000 -#define NV20TCL_RC_IN_RGB_A_INPUT_TEXTURE3 0x0b000000 -#define NV20TCL_RC_IN_RGB_A_COMPONENT_USAGE (1 << 28) -#define NV20TCL_RC_IN_RGB_A_COMPONENT_USAGE_RGB 0x00000000 -#define NV20TCL_RC_IN_RGB_A_COMPONENT_USAGE_ALPHA 0x10000000 -#define NV20TCL_RC_IN_RGB_A_MAPPING_SHIFT 29 -#define NV20TCL_RC_IN_RGB_A_MAPPING_MASK 0xe0000000 -#define NV20TCL_RC_IN_RGB_A_MAPPING_UNSIGNED_IDENTITY 0x00000000 -#define NV20TCL_RC_IN_RGB_A_MAPPING_UNSIGNED_INVERT 0x20000000 -#define NV20TCL_RC_IN_RGB_A_MAPPING_EXPAND_NORMAL 0x40000000 -#define NV20TCL_RC_IN_RGB_A_MAPPING_EXPAND_NEGATE 0x60000000 -#define NV20TCL_RC_IN_RGB_A_MAPPING_HALF_BIAS_NORMAL 0x80000000 -#define NV20TCL_RC_IN_RGB_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000 -#define NV20TCL_RC_IN_RGB_A_MAPPING_SIGNED_IDENTITY 0xc0000000 -#define NV20TCL_RC_IN_RGB_A_MAPPING_SIGNED_NEGATE 0xe0000000 -#define NV20TCL_VIEWPORT_SCALE_X 0x00000af0 -#define NV20TCL_VIEWPORT_SCALE_Y 0x00000af4 -#define NV20TCL_VIEWPORT_SCALE_Z 0x00000af8 -#define NV20TCL_VIEWPORT_SCALE_W 0x00000afc -#define NV20TCL_VP_UPLOAD_INST(x) (0x00000b00+((x)*4)) -#define NV20TCL_VP_UPLOAD_INST__SIZE 0x00000004 -#define NV20TCL_VP_UPLOAD_CONST(x) (0x00000b80+((x)*4)) -#define NV20TCL_VP_UPLOAD_CONST__SIZE 0x00000004 -#define NV20TCL_LIGHT_BACK_AMBIENT_R(x) (0x00000c00+((x)*64)) -#define NV20TCL_LIGHT_BACK_AMBIENT_R__SIZE 0x00000008 -#define NV20TCL_LIGHT_BACK_AMBIENT_G(x) (0x00000c04+((x)*64)) -#define NV20TCL_LIGHT_BACK_AMBIENT_G__SIZE 0x00000008 -#define NV20TCL_LIGHT_BACK_AMBIENT_B(x) (0x00000c08+((x)*64)) -#define NV20TCL_LIGHT_BACK_AMBIENT_B__SIZE 0x00000008 -#define NV20TCL_LIGHT_BACK_DIFFUSE_R(x) (0x00000c0c+((x)*64)) -#define NV20TCL_LIGHT_BACK_DIFFUSE_R__SIZE 0x00000008 -#define NV20TCL_LIGHT_BACK_DIFFUSE_G(x) (0x00000c10+((x)*64)) -#define NV20TCL_LIGHT_BACK_DIFFUSE_G__SIZE 0x00000008 -#define NV20TCL_LIGHT_BACK_DIFFUSE_B(x) (0x00000c14+((x)*64)) -#define NV20TCL_LIGHT_BACK_DIFFUSE_B__SIZE 0x00000008 -#define NV20TCL_LIGHT_BACK_SPECULAR_R(x) (0x00000c18+((x)*64)) -#define NV20TCL_LIGHT_BACK_SPECULAR_R__SIZE 0x00000008 -#define NV20TCL_LIGHT_BACK_SPECULAR_G(x) (0x00000c1c+((x)*64)) -#define NV20TCL_LIGHT_BACK_SPECULAR_G__SIZE 0x00000008 -#define NV20TCL_LIGHT_BACK_SPECULAR_B(x) (0x00000c20+((x)*64)) -#define NV20TCL_LIGHT_BACK_SPECULAR_B__SIZE 0x00000008 -#define NV20TCL_LIGHT_FRONT_AMBIENT_R(x) (0x00001000+((x)*128)) -#define NV20TCL_LIGHT_FRONT_AMBIENT_R__SIZE 0x00000008 -#define NV20TCL_LIGHT_FRONT_AMBIENT_G(x) (0x00001004+((x)*128)) -#define NV20TCL_LIGHT_FRONT_AMBIENT_G__SIZE 0x00000008 -#define NV20TCL_LIGHT_FRONT_AMBIENT_B(x) (0x00001008+((x)*128)) -#define NV20TCL_LIGHT_FRONT_AMBIENT_B__SIZE 0x00000008 -#define NV20TCL_LIGHT_FRONT_DIFFUSE_R(x) (0x0000100c+((x)*128)) -#define NV20TCL_LIGHT_FRONT_DIFFUSE_R__SIZE 0x00000008 -#define NV20TCL_LIGHT_FRONT_DIFFUSE_G(x) (0x00001010+((x)*128)) -#define NV20TCL_LIGHT_FRONT_DIFFUSE_G__SIZE 0x00000008 -#define NV20TCL_LIGHT_FRONT_DIFFUSE_B(x) (0x00001014+((x)*128)) -#define NV20TCL_LIGHT_FRONT_DIFFUSE_B__SIZE 0x00000008 -#define NV20TCL_LIGHT_FRONT_SPECULAR_R(x) (0x00001018+((x)*128)) -#define NV20TCL_LIGHT_FRONT_SPECULAR_R__SIZE 0x00000008 -#define NV20TCL_LIGHT_FRONT_SPECULAR_G(x) (0x0000101c+((x)*128)) -#define NV20TCL_LIGHT_FRONT_SPECULAR_G__SIZE 0x00000008 -#define NV20TCL_LIGHT_FRONT_SPECULAR_B(x) (0x00001020+((x)*128)) -#define NV20TCL_LIGHT_FRONT_SPECULAR_B__SIZE 0x00000008 -#define NV20TCL_LIGHT_HALF_VECTOR_X(x) (0x00001028+((x)*128)) -#define NV20TCL_LIGHT_HALF_VECTOR_X__SIZE 0x00000008 -#define NV20TCL_LIGHT_HALF_VECTOR_Y(x) (0x0000102c+((x)*128)) -#define NV20TCL_LIGHT_HALF_VECTOR_Y__SIZE 0x00000008 -#define NV20TCL_LIGHT_HALF_VECTOR_Z(x) (0x00001030+((x)*128)) -#define NV20TCL_LIGHT_HALF_VECTOR_Z__SIZE 0x00000008 -#define NV20TCL_LIGHT_DIRECTION_X(x) (0x00001034+((x)*128)) -#define NV20TCL_LIGHT_DIRECTION_X__SIZE 0x00000008 -#define NV20TCL_LIGHT_DIRECTION_Y(x) (0x00001038+((x)*128)) -#define NV20TCL_LIGHT_DIRECTION_Y__SIZE 0x00000008 -#define NV20TCL_LIGHT_DIRECTION_Z(x) (0x0000103c+((x)*128)) -#define NV20TCL_LIGHT_DIRECTION_Z__SIZE 0x00000008 -#define NV20TCL_LIGHT_SPOT_CUTOFF_A(x) (0x00001040+((x)*128)) -#define NV20TCL_LIGHT_SPOT_CUTOFF_A__SIZE 0x00000008 -#define NV20TCL_LIGHT_SPOT_CUTOFF_B(x) (0x00001044+((x)*128)) -#define NV20TCL_LIGHT_SPOT_CUTOFF_B__SIZE 0x00000008 -#define NV20TCL_LIGHT_SPOT_CUTOFF_C(x) (0x00001048+((x)*128)) -#define NV20TCL_LIGHT_SPOT_CUTOFF_C__SIZE 0x00000008 -#define NV20TCL_LIGHT_SPOT_DIR_X(x) (0x0000104c+((x)*128)) -#define NV20TCL_LIGHT_SPOT_DIR_X__SIZE 0x00000008 -#define NV20TCL_LIGHT_SPOT_DIR_Y(x) (0x00001050+((x)*128)) -#define NV20TCL_LIGHT_SPOT_DIR_Y__SIZE 0x00000008 -#define NV20TCL_LIGHT_SPOT_DIR_Z(x) (0x00001054+((x)*128)) -#define NV20TCL_LIGHT_SPOT_DIR_Z__SIZE 0x00000008 -#define NV20TCL_LIGHT_SPOT_CUTOFF_D(x) (0x00001058+((x)*128)) -#define NV20TCL_LIGHT_SPOT_CUTOFF_D__SIZE 0x00000008 -#define NV20TCL_LIGHT_POSITION_X(x) (0x0000105c+((x)*128)) -#define NV20TCL_LIGHT_POSITION_X__SIZE 0x00000008 -#define NV20TCL_LIGHT_POSITION_Y(x) (0x00001060+((x)*128)) -#define NV20TCL_LIGHT_POSITION_Y__SIZE 0x00000008 -#define NV20TCL_LIGHT_POSITION_Z(x) (0x00001064+((x)*128)) -#define NV20TCL_LIGHT_POSITION_Z__SIZE 0x00000008 -#define NV20TCL_LIGHT_ATTENUATION_CONSTANT(x) (0x00001068+((x)*128)) -#define NV20TCL_LIGHT_ATTENUATION_CONSTANT__SIZE 0x00000008 -#define NV20TCL_LIGHT_ATTENUATION_LINEAR(x) (0x0000106c+((x)*128)) -#define NV20TCL_LIGHT_ATTENUATION_LINEAR__SIZE 0x00000008 -#define NV20TCL_LIGHT_ATTENUATION_QUADRATIC(x) (0x00001070+((x)*128)) -#define NV20TCL_LIGHT_ATTENUATION_QUADRATIC__SIZE 0x00000008 -#define NV20TCL_POLYGON_STIPPLE_ENABLE 0x0000147c -#define NV20TCL_POLYGON_STIPPLE_PATTERN(x) (0x00001480+((x)*4)) -#define NV20TCL_POLYGON_STIPPLE_PATTERN__SIZE 0x00000020 -#define NV20TCL_VERTEX_POS_3F_X 0x00001500 -#define NV20TCL_VERTEX_POS_3F_Y 0x00001504 -#define NV20TCL_VERTEX_POS_3F_Z 0x00001508 -#define NV20TCL_VERTEX_POS_4F_X 0x00001518 -#define NV20TCL_VERTEX_POS_4F_Y 0x0000151c -#define NV20TCL_VERTEX_POS_4F_Z 0x00001520 -#define NV20TCL_VERTEX_POS_3I_XY 0x00001528 -#define NV20TCL_VERTEX_POS_3I_XY_X_SHIFT 0 -#define NV20TCL_VERTEX_POS_3I_XY_X_MASK 0x0000ffff -#define NV20TCL_VERTEX_POS_3I_XY_Y_SHIFT 16 -#define NV20TCL_VERTEX_POS_3I_XY_Y_MASK 0xffff0000 -#define NV20TCL_VERTEX_POS_3I_Z 0x0000152c -#define NV20TCL_VERTEX_POS_3I_Z_Z_SHIFT 0 -#define NV20TCL_VERTEX_POS_3I_Z_Z_MASK 0x0000ffff -#define NV20TCL_VERTEX_NOR_3F_X 0x00001530 -#define NV20TCL_VERTEX_NOR_3F_Y 0x00001534 -#define NV20TCL_VERTEX_NOR_3F_Z 0x00001538 -#define NV20TCL_VERTEX_NOR_3I_XY 0x00001540 -#define NV20TCL_VERTEX_NOR_3I_XY_X_SHIFT 0 -#define NV20TCL_VERTEX_NOR_3I_XY_X_MASK 0x0000ffff -#define NV20TCL_VERTEX_NOR_3I_XY_Y_SHIFT 16 -#define NV20TCL_VERTEX_NOR_3I_XY_Y_MASK 0xffff0000 -#define NV20TCL_VERTEX_NOR_3I_Z 0x00001544 -#define NV20TCL_VERTEX_NOR_3I_Z_Z_SHIFT 0 -#define NV20TCL_VERTEX_NOR_3I_Z_Z_MASK 0x0000ffff -#define NV20TCL_VERTEX_COL_4F_X 0x00001550 -#define NV20TCL_VERTEX_COL_4F_Y 0x00001554 -#define NV20TCL_VERTEX_COL_4F_Z 0x00001558 -#define NV20TCL_VERTEX_COL_4F_W 0x0000155c -#define NV20TCL_VERTEX_COL_3F_X 0x00001560 -#define NV20TCL_VERTEX_COL_3F_Y 0x00001564 -#define NV20TCL_VERTEX_COL_3F_Z 0x00001568 -#define NV20TCL_VERTEX_COL_4I 0x0000156c -#define NV20TCL_VERTEX_COL_4I_R_SHIFT 0 -#define NV20TCL_VERTEX_COL_4I_R_MASK 0x000000ff -#define NV20TCL_VERTEX_COL_4I_G_SHIFT 8 -#define NV20TCL_VERTEX_COL_4I_G_MASK 0x0000ff00 -#define NV20TCL_VERTEX_COL_4I_B_SHIFT 16 -#define NV20TCL_VERTEX_COL_4I_B_MASK 0x00ff0000 -#define NV20TCL_VERTEX_COL_4I_A_SHIFT 24 -#define NV20TCL_VERTEX_COL_4I_A_MASK 0xff000000 -#define NV20TCL_VERTEX_COL2_3F_X 0x00001580 -#define NV20TCL_VERTEX_COL2_3F_Y 0x00001584 -#define NV20TCL_VERTEX_COL2_3F_Z 0x00001588 -#define NV20TCL_VERTEX_COL2_4I 0x0000158c -#define NV20TCL_VERTEX_COL2_4I_R_SHIFT 0 -#define NV20TCL_VERTEX_COL2_4I_R_MASK 0x000000ff -#define NV20TCL_VERTEX_COL2_4I_G_SHIFT 8 -#define NV20TCL_VERTEX_COL2_4I_G_MASK 0x0000ff00 -#define NV20TCL_VERTEX_COL2_4I_B_SHIFT 16 -#define NV20TCL_VERTEX_COL2_4I_B_MASK 0x00ff0000 -#define NV20TCL_VERTEX_COL2_4I_A_SHIFT 24 -#define NV20TCL_VERTEX_COL2_4I_A_MASK 0xff000000 -#define NV20TCL_VERTEX_TX0_2F_S 0x00001590 -#define NV20TCL_VERTEX_TX0_2F_T 0x00001594 -#define NV20TCL_VERTEX_TX0_2I 0x00001598 -#define NV20TCL_VERTEX_TX0_2I_S_SHIFT 0 -#define NV20TCL_VERTEX_TX0_2I_S_MASK 0x0000ffff -#define NV20TCL_VERTEX_TX0_2I_T_SHIFT 16 -#define NV20TCL_VERTEX_TX0_2I_T_MASK 0xffff0000 -#define NV20TCL_VERTEX_TX0_4F_S 0x000015a0 -#define NV20TCL_VERTEX_TX0_4F_T 0x000015a4 -#define NV20TCL_VERTEX_TX0_4F_R 0x000015a8 -#define NV20TCL_VERTEX_TX0_4F_Q 0x000015ac -#define NV20TCL_VERTEX_TX0_4I_ST 0x000015b0 -#define NV20TCL_VERTEX_TX0_4I_ST_S_SHIFT 0 -#define NV20TCL_VERTEX_TX0_4I_ST_S_MASK 0x0000ffff -#define NV20TCL_VERTEX_TX0_4I_ST_T_SHIFT 16 -#define NV20TCL_VERTEX_TX0_4I_ST_T_MASK 0xffff0000 -#define NV20TCL_VERTEX_TX0_4I_RQ 0x000015b4 -#define NV20TCL_VERTEX_TX0_4I_RQ_R_SHIFT 0 -#define NV20TCL_VERTEX_TX0_4I_RQ_R_MASK 0x0000ffff -#define NV20TCL_VERTEX_TX0_4I_RQ_Q_SHIFT 16 -#define NV20TCL_VERTEX_TX0_4I_RQ_Q_MASK 0xffff0000 -#define NV20TCL_VERTEX_TX1_2F_S 0x000015b8 -#define NV20TCL_VERTEX_TX1_2F_T 0x000015bc -#define NV20TCL_VERTEX_TX1_2I 0x000015c0 -#define NV20TCL_VERTEX_TX1_2I_S_SHIFT 0 -#define NV20TCL_VERTEX_TX1_2I_S_MASK 0x0000ffff -#define NV20TCL_VERTEX_TX1_2I_T_SHIFT 16 -#define NV20TCL_VERTEX_TX1_2I_T_MASK 0xffff0000 -#define NV20TCL_VERTEX_TX1_4F_S 0x000015c8 -#define NV20TCL_VERTEX_TX1_4F_T 0x000015cc -#define NV20TCL_VERTEX_TX1_4F_R 0x000015d0 -#define NV20TCL_VERTEX_TX1_4F_Q 0x000015d4 -#define NV20TCL_VERTEX_TX1_4I_ST 0x000015d8 -#define NV20TCL_VERTEX_TX1_4I_ST_S_SHIFT 0 -#define NV20TCL_VERTEX_TX1_4I_ST_S_MASK 0x0000ffff -#define NV20TCL_VERTEX_TX1_4I_ST_T_SHIFT 16 -#define NV20TCL_VERTEX_TX1_4I_ST_T_MASK 0xffff0000 -#define NV20TCL_VERTEX_TX1_4I_RQ 0x000015dc -#define NV20TCL_VERTEX_TX1_4I_RQ_R_SHIFT 0 -#define NV20TCL_VERTEX_TX1_4I_RQ_R_MASK 0x0000ffff -#define NV20TCL_VERTEX_TX1_4I_RQ_Q_SHIFT 16 -#define NV20TCL_VERTEX_TX1_4I_RQ_Q_MASK 0xffff0000 -#define NV20TCL_VERTEX_TX2_2F_S 0x000015e0 -#define NV20TCL_VERTEX_TX2_2F_T 0x000015e4 -#define NV20TCL_VERTEX_TX2_2I 0x000015e8 -#define NV20TCL_VERTEX_TX2_2I_S_SHIFT 0 -#define NV20TCL_VERTEX_TX2_2I_S_MASK 0x0000ffff -#define NV20TCL_VERTEX_TX2_2I_T_SHIFT 16 -#define NV20TCL_VERTEX_TX2_2I_T_MASK 0xffff0000 -#define NV20TCL_VERTEX_TX2_4F_S 0x000015f0 -#define NV20TCL_VERTEX_TX2_4F_T 0x000015f4 -#define NV20TCL_VERTEX_TX2_4F_R 0x000015f8 -#define NV20TCL_VERTEX_TX2_4F_Q 0x000015fc -#define NV20TCL_VERTEX_TX2_4I_ST 0x00001600 -#define NV20TCL_VERTEX_TX2_4I_ST_S_SHIFT 0 -#define NV20TCL_VERTEX_TX2_4I_ST_S_MASK 0x0000ffff -#define NV20TCL_VERTEX_TX2_4I_ST_T_SHIFT 16 -#define NV20TCL_VERTEX_TX2_4I_ST_T_MASK 0xffff0000 -#define NV20TCL_VERTEX_TX2_4I_RQ 0x00001604 -#define NV20TCL_VERTEX_TX2_4I_RQ_R_SHIFT 0 -#define NV20TCL_VERTEX_TX2_4I_RQ_R_MASK 0x0000ffff -#define NV20TCL_VERTEX_TX2_4I_RQ_Q_SHIFT 16 -#define NV20TCL_VERTEX_TX2_4I_RQ_Q_MASK 0xffff0000 -#define NV20TCL_VERTEX_TX3_2F_S 0x00001608 -#define NV20TCL_VERTEX_TX3_2F_T 0x0000160c -#define NV20TCL_VERTEX_TX3_2I 0x00001610 -#define NV20TCL_VERTEX_TX3_2I_S_SHIFT 0 -#define NV20TCL_VERTEX_TX3_2I_S_MASK 0x0000ffff -#define NV20TCL_VERTEX_TX3_2I_T_SHIFT 16 -#define NV20TCL_VERTEX_TX3_2I_T_MASK 0xffff0000 -#define NV20TCL_VERTEX_TX3_4F_S 0x00001620 -#define NV20TCL_VERTEX_TX3_4F_T 0x00001624 -#define NV20TCL_VERTEX_TX3_4F_R 0x00001628 -#define NV20TCL_VERTEX_TX3_4F_Q 0x0000162c -#define NV20TCL_VERTEX_TX3_4I_ST 0x00001630 -#define NV20TCL_VERTEX_TX3_4I_ST_S_SHIFT 0 -#define NV20TCL_VERTEX_TX3_4I_ST_S_MASK 0x0000ffff -#define NV20TCL_VERTEX_TX3_4I_ST_T_SHIFT 16 -#define NV20TCL_VERTEX_TX3_4I_ST_T_MASK 0xffff0000 -#define NV20TCL_VERTEX_TX3_4I_RQ 0x00001634 -#define NV20TCL_VERTEX_TX3_4I_RQ_R_SHIFT 0 -#define NV20TCL_VERTEX_TX3_4I_RQ_R_MASK 0x0000ffff -#define NV20TCL_VERTEX_TX3_4I_RQ_Q_SHIFT 16 -#define NV20TCL_VERTEX_TX3_4I_RQ_Q_MASK 0xffff0000 -#define NV20TCL_VERTEX_FOG_1F 0x00001698 -#define NV20TCL_EDGEFLAG_ENABLE 0x000016bc -#define NV20TCL_VTX_CACHE_INVALIDATE 0x00001710 -#define NV20TCL_VTXBUF_ADDRESS(x) (0x00001720+((x)*4)) -#define NV20TCL_VTXBUF_ADDRESS__SIZE 0x00000010 -#define NV20TCL_VTXBUF_ADDRESS_DMA1 (1 << 31) -#define NV20TCL_VTXBUF_ADDRESS_OFFSET_SHIFT 0 -#define NV20TCL_VTXBUF_ADDRESS_OFFSET_MASK 0x0fffffff -#define NV20TCL_VTXFMT(x) (0x00001760+((x)*4)) -#define NV20TCL_VTXFMT__SIZE 0x00000010 -#define NV20TCL_VTXFMT_TYPE_SHIFT 0 -#define NV20TCL_VTXFMT_TYPE_MASK 0x0000000f -#define NV20TCL_VTXFMT_TYPE_FLOAT 0x00000002 -#define NV20TCL_VTXFMT_TYPE_UBYTE 0x00000004 -#define NV20TCL_VTXFMT_TYPE_USHORT 0x00000005 -#define NV20TCL_VTXFMT_SIZE_SHIFT 4 -#define NV20TCL_VTXFMT_SIZE_MASK 0x000000f0 -#define NV20TCL_VTXFMT_STRIDE_SHIFT 8 -#define NV20TCL_VTXFMT_STRIDE_MASK 0x0000ff00 -#define NV20TCL_LIGHT_MODEL_BACK_AMBIENT_R 0x000017a0 -#define NV20TCL_LIGHT_MODEL_BACK_AMBIENT_G 0x000017a4 -#define NV20TCL_LIGHT_MODEL_BACK_AMBIENT_B 0x000017a8 -#define NV20TCL_MATERIAL_FACTOR_BACK_A 0x000017ac -#define NV20TCL_MATERIAL_FACTOR_BACK_R 0x000017b0 -#define NV20TCL_MATERIAL_FACTOR_BACK_G 0x000017b4 -#define NV20TCL_MATERIAL_FACTOR_BACK_B 0x000017b8 -#define NV20TCL_COLOR_LOGIC_OP_ENABLE 0x000017bc -#define NV20TCL_COLOR_LOGIC_OP_OP 0x000017c0 -#define NV20TCL_COLOR_LOGIC_OP_OP_CLEAR 0x00001500 -#define NV20TCL_COLOR_LOGIC_OP_OP_AND 0x00001501 -#define NV20TCL_COLOR_LOGIC_OP_OP_AND_REVERSE 0x00001502 -#define NV20TCL_COLOR_LOGIC_OP_OP_COPY 0x00001503 -#define NV20TCL_COLOR_LOGIC_OP_OP_AND_INVERTED 0x00001504 -#define NV20TCL_COLOR_LOGIC_OP_OP_NOOP 0x00001505 -#define NV20TCL_COLOR_LOGIC_OP_OP_XOR 0x00001506 -#define NV20TCL_COLOR_LOGIC_OP_OP_OR 0x00001507 -#define NV20TCL_COLOR_LOGIC_OP_OP_NOR 0x00001508 -#define NV20TCL_COLOR_LOGIC_OP_OP_EQUIV 0x00001509 -#define NV20TCL_COLOR_LOGIC_OP_OP_INVERT 0x0000150a -#define NV20TCL_COLOR_LOGIC_OP_OP_OR_REVERSE 0x0000150b -#define NV20TCL_COLOR_LOGIC_OP_OP_COPY_INVERTED 0x0000150c -#define NV20TCL_COLOR_LOGIC_OP_OP_OR_INVERTED 0x0000150d -#define NV20TCL_COLOR_LOGIC_OP_OP_NAND 0x0000150e -#define NV20TCL_COLOR_LOGIC_OP_OP_SET 0x0000150f -#define NV20TCL_LIGHT_MODEL_TWO_SIDE_ENABLE 0x000017c4 -#define NV20TCL_TX_SHADER_CULL_MODE 0x000017f8 -#define NV20TCL_TX_SHADER_CULL_MODE_TX0_S (1 << 0) -#define NV20TCL_TX_SHADER_CULL_MODE_TX0_S_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX0_S_LESS 0x00000001 -#define NV20TCL_TX_SHADER_CULL_MODE_TX0_T (1 << 1) -#define NV20TCL_TX_SHADER_CULL_MODE_TX0_T_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX0_T_LESS 0x00000002 -#define NV20TCL_TX_SHADER_CULL_MODE_TX0_R (1 << 2) -#define NV20TCL_TX_SHADER_CULL_MODE_TX0_R_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX0_R_LESS 0x00000004 -#define NV20TCL_TX_SHADER_CULL_MODE_TX0_Q (1 << 3) -#define NV20TCL_TX_SHADER_CULL_MODE_TX0_Q_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX0_Q_LESS 0x00000008 -#define NV20TCL_TX_SHADER_CULL_MODE_TX1_S (1 << 4) -#define NV20TCL_TX_SHADER_CULL_MODE_TX1_S_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX1_S_LESS 0x00000010 -#define NV20TCL_TX_SHADER_CULL_MODE_TX1_T (1 << 5) -#define NV20TCL_TX_SHADER_CULL_MODE_TX1_T_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX1_T_LESS 0x00000020 -#define NV20TCL_TX_SHADER_CULL_MODE_TX1_R (1 << 6) -#define NV20TCL_TX_SHADER_CULL_MODE_TX1_R_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX1_R_LESS 0x00000040 -#define NV20TCL_TX_SHADER_CULL_MODE_TX1_Q (1 << 7) -#define NV20TCL_TX_SHADER_CULL_MODE_TX1_Q_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX1_Q_LESS 0x00000080 -#define NV20TCL_TX_SHADER_CULL_MODE_TX2_S (1 << 8) -#define NV20TCL_TX_SHADER_CULL_MODE_TX2_S_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX2_S_LESS 0x00000100 -#define NV20TCL_TX_SHADER_CULL_MODE_TX2_T (1 << 9) -#define NV20TCL_TX_SHADER_CULL_MODE_TX2_T_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX2_T_LESS 0x00000200 -#define NV20TCL_TX_SHADER_CULL_MODE_TX2_R (1 << 10) -#define NV20TCL_TX_SHADER_CULL_MODE_TX2_R_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX2_R_LESS 0x00000400 -#define NV20TCL_TX_SHADER_CULL_MODE_TX2_Q (1 << 11) -#define NV20TCL_TX_SHADER_CULL_MODE_TX2_Q_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX2_Q_LESS 0x00000800 -#define NV20TCL_TX_SHADER_CULL_MODE_TX3_S (1 << 12) -#define NV20TCL_TX_SHADER_CULL_MODE_TX3_S_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX3_S_LESS 0x00001000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX3_T (1 << 13) -#define NV20TCL_TX_SHADER_CULL_MODE_TX3_T_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX3_T_LESS 0x00002000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX3_R (1 << 14) -#define NV20TCL_TX_SHADER_CULL_MODE_TX3_R_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX3_R_LESS 0x00004000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX3_Q (1 << 15) -#define NV20TCL_TX_SHADER_CULL_MODE_TX3_Q_GEQUAL 0x00000000 -#define NV20TCL_TX_SHADER_CULL_MODE_TX3_Q_LESS 0x00008000 -#define NV20TCL_VERTEX_BEGIN_END 0x000017fc -#define NV20TCL_VERTEX_BEGIN_END_STOP 0x00000000 -#define NV20TCL_VERTEX_BEGIN_END_POINTS 0x00000001 -#define NV20TCL_VERTEX_BEGIN_END_LINES 0x00000002 -#define NV20TCL_VERTEX_BEGIN_END_LINE_LOOP 0x00000003 -#define NV20TCL_VERTEX_BEGIN_END_LINE_STRIP 0x00000004 -#define NV20TCL_VERTEX_BEGIN_END_TRIANGLES 0x00000005 -#define NV20TCL_VERTEX_BEGIN_END_TRIANGLE_STRIP 0x00000006 -#define NV20TCL_VERTEX_BEGIN_END_TRIANGLE_FAN 0x00000007 -#define NV20TCL_VERTEX_BEGIN_END_QUADS 0x00000008 -#define NV20TCL_VERTEX_BEGIN_END_QUAD_STRIP 0x00000009 -#define NV20TCL_VERTEX_BEGIN_END_POLYGON 0x0000000a -#define NV20TCL_VB_ELEMENT_U16 0x00001800 -#define NV20TCL_VB_ELEMENT_U16_I0_SHIFT 0 -#define NV20TCL_VB_ELEMENT_U16_I0_MASK 0x0000ffff -#define NV20TCL_VB_ELEMENT_U16_I1_SHIFT 16 -#define NV20TCL_VB_ELEMENT_U16_I1_MASK 0xffff0000 -#define NV20TCL_VB_ELEMENT_U32 0x00001808 -#define NV20TCL_VB_VERTEX_BATCH 0x00001810 -#define NV20TCL_VB_VERTEX_BATCH_OFFSET_SHIFT 0 -#define NV20TCL_VB_VERTEX_BATCH_OFFSET_MASK 0x00ffffff -#define NV20TCL_VB_VERTEX_BATCH_COUNT_SHIFT 24 -#define NV20TCL_VB_VERTEX_BATCH_COUNT_MASK 0xff000000 -#define NV20TCL_VERTEX_DATA 0x00001818 -#define NV20TCL_TX_SHADER_CONST_EYE_X 0x0000181c -#define NV20TCL_TX_SHADER_CONST_EYE_Y 0x00001820 -#define NV20TCL_TX_SHADER_CONST_EYE_Z 0x00001824 -#define NV20TCL_VTX_ATTR_4F_X(x) (0x00001a00+((x)*16)) -#define NV20TCL_VTX_ATTR_4F_X__SIZE 0x00000010 -#define NV20TCL_VTX_ATTR_4F_Y(x) (0x00001a04+((x)*16)) -#define NV20TCL_VTX_ATTR_4F_Y__SIZE 0x00000010 -#define NV20TCL_VTX_ATTR_4F_Z(x) (0x00001a08+((x)*16)) -#define NV20TCL_VTX_ATTR_4F_Z__SIZE 0x00000010 -#define NV20TCL_VTX_ATTR_4F_W(x) (0x00001a0c+((x)*16)) -#define NV20TCL_VTX_ATTR_4F_W__SIZE 0x00000010 -#define NV20TCL_TX_OFFSET(x) (0x00001b00+((x)*64)) -#define NV20TCL_TX_OFFSET__SIZE 0x00000004 -#define NV20TCL_TX_FORMAT(x) (0x00001b04+((x)*64)) -#define NV20TCL_TX_FORMAT__SIZE 0x00000004 -#define NV20TCL_TX_FORMAT_DMA0 (1 << 0) -#define NV20TCL_TX_FORMAT_DMA1 (1 << 1) -#define NV20TCL_TX_FORMAT_CUBIC (1 << 2) -#define NV20TCL_TX_FORMAT_NO_BORDER (1 << 3) -#define NV20TCL_TX_FORMAT_DIMS_SHIFT 4 -#define NV20TCL_TX_FORMAT_DIMS_MASK 0x000000f0 -#define NV20TCL_TX_FORMAT_DIMS_1D 0x00000010 -#define NV20TCL_TX_FORMAT_DIMS_2D 0x00000020 -#define NV20TCL_TX_FORMAT_DIMS_3D 0x00000030 -#define NV20TCL_TX_FORMAT_FORMAT_SHIFT 8 -#define NV20TCL_TX_FORMAT_FORMAT_MASK 0x0000ff00 -#define NV20TCL_TX_FORMAT_FORMAT_L8 0x00000000 -#define NV20TCL_TX_FORMAT_FORMAT_A8 0x00000100 -#define NV20TCL_TX_FORMAT_FORMAT_A1R5G5B5 0x00000200 -#define NV20TCL_TX_FORMAT_FORMAT_A4R4G4B4 0x00000400 -#define NV20TCL_TX_FORMAT_FORMAT_R5G6B5 0x00000500 -#define NV20TCL_TX_FORMAT_FORMAT_A8R8G8B8 0x00000600 -#define NV20TCL_TX_FORMAT_FORMAT_X8R8G8B8 0x00000700 -#define NV20TCL_TX_FORMAT_FORMAT_INDEX8 0x00000b00 -#define NV20TCL_TX_FORMAT_FORMAT_DXT1 0x00000c00 -#define NV20TCL_TX_FORMAT_FORMAT_DXT3 0x00000e00 -#define NV20TCL_TX_FORMAT_FORMAT_DXT5 0x00000f00 -#define NV20TCL_TX_FORMAT_FORMAT_A1R5G5B5_RECT 0x00001000 -#define NV20TCL_TX_FORMAT_FORMAT_R5G6B5_RECT 0x00001100 -#define NV20TCL_TX_FORMAT_FORMAT_A8R8G8B8_RECT 0x00001200 -#define NV20TCL_TX_FORMAT_FORMAT_L8_RECT 0x00001300 -#define NV20TCL_TX_FORMAT_FORMAT_DSDT8_RECT 0x00001700 -#define NV20TCL_TX_FORMAT_FORMAT_A8L8 0x00001a00 -#define NV20TCL_TX_FORMAT_FORMAT_A8_RECT 0x00001b00 -#define NV20TCL_TX_FORMAT_FORMAT_A4R4G4B4_RECT 0x00001d00 -#define NV20TCL_TX_FORMAT_FORMAT_R8G8B8_RECT 0x00001e00 -#define NV20TCL_TX_FORMAT_FORMAT_A8L8_RECT 0x00002000 -#define NV20TCL_TX_FORMAT_FORMAT_DSDT8 0x00002800 -#define NV20TCL_TX_FORMAT_FORMAT_HILO16 0x00003300 -#define NV20TCL_TX_FORMAT_FORMAT_HILO16_RECT 0x00003600 -#define NV20TCL_TX_FORMAT_FORMAT_HILO8 0x00004400 -#define NV20TCL_TX_FORMAT_FORMAT_SIGNED_HILO8 0x00004500 -#define NV20TCL_TX_FORMAT_FORMAT_HILO8_RECT 0x00004600 -#define NV20TCL_TX_FORMAT_FORMAT_SIGNED_HILO8_RECT 0x00004700 -#define NV20TCL_TX_FORMAT_FORMAT_A16 0x00003200 -#define NV20TCL_TX_FORMAT_FORMAT_A16_RECT 0x00003500 -#define NV20TCL_TX_FORMAT_FORMAT_FLOAT_RGBA16_NV 0x00004a00 -#define NV20TCL_TX_FORMAT_FORMAT_FLOAT_RGBA32_NV 0x00004b00 -#define NV20TCL_TX_FORMAT_FORMAT_FLOAT_R32_NV 0x00004c00 -#define NV20TCL_TX_FORMAT_MIPMAP (1 << 19) -#define NV20TCL_TX_FORMAT_BASE_SIZE_U_SHIFT 20 -#define NV20TCL_TX_FORMAT_BASE_SIZE_U_MASK 0x00f00000 -#define NV20TCL_TX_FORMAT_BASE_SIZE_V_SHIFT 24 -#define NV20TCL_TX_FORMAT_BASE_SIZE_V_MASK 0x0f000000 -#define NV20TCL_TX_FORMAT_BASE_SIZE_W_SHIFT 28 -#define NV20TCL_TX_FORMAT_BASE_SIZE_W_MASK 0xf0000000 -#define NV20TCL_TX_WRAP(x) (0x00001b08+((x)*64)) -#define NV20TCL_TX_WRAP__SIZE 0x00000004 -#define NV20TCL_TX_WRAP_S_SHIFT 0 -#define NV20TCL_TX_WRAP_S_MASK 0x000000ff -#define NV20TCL_TX_WRAP_S_REPEAT 0x00000001 -#define NV20TCL_TX_WRAP_S_MIRRORED_REPEAT 0x00000002 -#define NV20TCL_TX_WRAP_S_CLAMP_TO_EDGE 0x00000003 -#define NV20TCL_TX_WRAP_S_CLAMP_TO_BORDER 0x00000004 -#define NV20TCL_TX_WRAP_S_CLAMP 0x00000005 -#define NV20TCL_TX_WRAP_T_SHIFT 8 -#define NV20TCL_TX_WRAP_T_MASK 0x00000f00 -#define NV20TCL_TX_WRAP_T_REPEAT 0x00000100 -#define NV20TCL_TX_WRAP_T_MIRRORED_REPEAT 0x00000200 -#define NV20TCL_TX_WRAP_T_CLAMP_TO_EDGE 0x00000300 -#define NV20TCL_TX_WRAP_T_CLAMP_TO_BORDER 0x00000400 -#define NV20TCL_TX_WRAP_T_CLAMP 0x00000500 -#define NV20TCL_TX_WRAP_R_SHIFT 16 -#define NV20TCL_TX_WRAP_R_MASK 0x000f0000 -#define NV20TCL_TX_WRAP_R_REPEAT 0x00010000 -#define NV20TCL_TX_WRAP_R_MIRRORED_REPEAT 0x00020000 -#define NV20TCL_TX_WRAP_R_CLAMP_TO_EDGE 0x00030000 -#define NV20TCL_TX_WRAP_R_CLAMP_TO_BORDER 0x00040000 -#define NV20TCL_TX_WRAP_R_CLAMP 0x00050000 -#define NV20TCL_TX_ENABLE(x) (0x00001b0c+((x)*64)) -#define NV20TCL_TX_ENABLE__SIZE 0x00000004 -#define NV20TCL_TX_ENABLE_ANISO_SHIFT 4 -#define NV20TCL_TX_ENABLE_ANISO_MASK 0x00000030 -#define NV20TCL_TX_ENABLE_ANISO_NONE 0x00000000 -#define NV20TCL_TX_ENABLE_ANISO_2X 0x00000010 -#define NV20TCL_TX_ENABLE_ANISO_4X 0x00000020 -#define NV20TCL_TX_ENABLE_ANISO_8X 0x00000030 -#define NV20TCL_TX_ENABLE_MIPMAP_MAX_LOD_SHIFT 14 -#define NV20TCL_TX_ENABLE_MIPMAP_MAX_LOD_MASK 0x0003c000 -#define NV20TCL_TX_ENABLE_MIPMAP_MIN_LOD_SHIFT 26 -#define NV20TCL_TX_ENABLE_MIPMAP_MIN_LOD_MASK 0x3c000000 -#define NV20TCL_TX_ENABLE_ENABLE (1 << 30) -#define NV20TCL_TX_NPOT_PITCH(x) (0x00001b10+((x)*64)) -#define NV20TCL_TX_NPOT_PITCH__SIZE 0x00000004 -#define NV20TCL_TX_NPOT_PITCH_PITCH_SHIFT 16 -#define NV20TCL_TX_NPOT_PITCH_PITCH_MASK 0xffff0000 -#define NV20TCL_TX_FILTER(x) (0x00001b14+((x)*64)) -#define NV20TCL_TX_FILTER__SIZE 0x00000004 -#define NV20TCL_TX_FILTER_LOD_BIAS_SHIFT 8 -#define NV20TCL_TX_FILTER_LOD_BIAS_MASK 0x00000f00 -#define NV20TCL_TX_FILTER_MINIFY_SHIFT 16 -#define NV20TCL_TX_FILTER_MINIFY_MASK 0x000f0000 -#define NV20TCL_TX_FILTER_MINIFY_NEAREST 0x00010000 -#define NV20TCL_TX_FILTER_MINIFY_LINEAR 0x00020000 -#define NV20TCL_TX_FILTER_MINIFY_NEAREST_MIPMAP_NEAREST 0x00030000 -#define NV20TCL_TX_FILTER_MINIFY_LINEAR_MIPMAP_NEAREST 0x00040000 -#define NV20TCL_TX_FILTER_MINIFY_NEAREST_MIPMAP_LINEAR 0x00050000 -#define NV20TCL_TX_FILTER_MINIFY_LINEAR_MIPMAP_LINEAR 0x00060000 -#define NV20TCL_TX_FILTER_MAGNIFY_SHIFT 24 -#define NV20TCL_TX_FILTER_MAGNIFY_MASK 0x0f000000 -#define NV20TCL_TX_FILTER_MAGNIFY_NEAREST 0x01000000 -#define NV20TCL_TX_FILTER_MAGNIFY_LINEAR 0x02000000 -#define NV20TCL_TX_NPOT_SIZE(x) (0x00001b1c+((x)*64)) -#define NV20TCL_TX_NPOT_SIZE__SIZE 0x00000004 -#define NV20TCL_TX_NPOT_SIZE_H_SHIFT 0 -#define NV20TCL_TX_NPOT_SIZE_H_MASK 0x0000ffff -#define NV20TCL_TX_NPOT_SIZE_W_SHIFT 16 -#define NV20TCL_TX_NPOT_SIZE_W_MASK 0xffff0000 -#define NV20TCL_TX_PALETTE_OFFSET(x) (0x00001b20+((x)*64)) -#define NV20TCL_TX_PALETTE_OFFSET__SIZE 0x00000004 -#define NV20TCL_TX_BORDER_COLOR(x) (0x00001b24+((x)*64)) -#define NV20TCL_TX_BORDER_COLOR__SIZE 0x00000004 -#define NV20TCL_TX_BORDER_COLOR_B_SHIFT 0 -#define NV20TCL_TX_BORDER_COLOR_B_MASK 0x000000ff -#define NV20TCL_TX_BORDER_COLOR_G_SHIFT 8 -#define NV20TCL_TX_BORDER_COLOR_G_MASK 0x0000ff00 -#define NV20TCL_TX_BORDER_COLOR_R_SHIFT 16 -#define NV20TCL_TX_BORDER_COLOR_R_MASK 0x00ff0000 -#define NV20TCL_TX_BORDER_COLOR_A_SHIFT 24 -#define NV20TCL_TX_BORDER_COLOR_A_MASK 0xff000000 -#define NV20TCL_TX_SHADER_OFFSET_MATRIX00(x) (0x00001b28+((x)*64)) -#define NV20TCL_TX_SHADER_OFFSET_MATRIX00__SIZE 0x00000004 -#define NV20TCL_TX_SHADER_OFFSET_MATRIX01(x) (0x00001b2c+((x)*64)) -#define NV20TCL_TX_SHADER_OFFSET_MATRIX01__SIZE 0x00000004 -#define NV20TCL_TX_SHADER_OFFSET_MATRIX11(x) (0x00001b30+((x)*64)) -#define NV20TCL_TX_SHADER_OFFSET_MATRIX11__SIZE 0x00000004 -#define NV20TCL_TX_SHADER_OFFSET_MATRIX10(x) (0x00001b34+((x)*64)) -#define NV20TCL_TX_SHADER_OFFSET_MATRIX10__SIZE 0x00000004 -#define NV20TCL_DEPTH_UNK17D8 0x00001d78 -#define NV20TCL_DEPTH_UNK17D8_CLAMP_SHIFT 4 -#define NV20TCL_DEPTH_UNK17D8_CLAMP_MASK 0x000000f0 -#define NV20TCL_MULTISAMPLE_CONTROL 0x00001d7c -#define NV20TCL_CLEAR_DEPTH_VALUE 0x00001d8c -#define NV20TCL_CLEAR_VALUE 0x00001d90 -#define NV20TCL_CLEAR_BUFFERS 0x00001d94 -#define NV20TCL_CLEAR_BUFFERS_COLOR_A (1 << 7) -#define NV20TCL_CLEAR_BUFFERS_COLOR_B (1 << 6) -#define NV20TCL_CLEAR_BUFFERS_COLOR_G (1 << 5) -#define NV20TCL_CLEAR_BUFFERS_COLOR_R (1 << 4) -#define NV20TCL_CLEAR_BUFFERS_STENCIL (1 << 1) -#define NV20TCL_CLEAR_BUFFERS_DEPTH (1 << 0) -#define NV20TCL_RC_COLOR0 0x00001e20 -#define NV20TCL_RC_COLOR0_B_SHIFT 0 -#define NV20TCL_RC_COLOR0_B_MASK 0x000000ff -#define NV20TCL_RC_COLOR0_G_SHIFT 8 -#define NV20TCL_RC_COLOR0_G_MASK 0x0000ff00 -#define NV20TCL_RC_COLOR0_R_SHIFT 16 -#define NV20TCL_RC_COLOR0_R_MASK 0x00ff0000 -#define NV20TCL_RC_COLOR0_A_SHIFT 24 -#define NV20TCL_RC_COLOR0_A_MASK 0xff000000 -#define NV20TCL_RC_COLOR1 0x00001e24 -#define NV20TCL_RC_COLOR1_B_SHIFT 0 -#define NV20TCL_RC_COLOR1_B_MASK 0x000000ff -#define NV20TCL_RC_COLOR1_G_SHIFT 8 -#define NV20TCL_RC_COLOR1_G_MASK 0x0000ff00 -#define NV20TCL_RC_COLOR1_R_SHIFT 16 -#define NV20TCL_RC_COLOR1_R_MASK 0x00ff0000 -#define NV20TCL_RC_COLOR1_A_SHIFT 24 -#define NV20TCL_RC_COLOR1_A_MASK 0xff000000 -#define NV20TCL_BACK_MATERIAL_SHININESS(x) (0x00001e28+((x)*4)) -#define NV20TCL_BACK_MATERIAL_SHININESS__SIZE 0x00000006 -#define NV20TCL_RC_OUT_RGB(x) (0x00001e40+((x)*4)) -#define NV20TCL_RC_OUT_RGB__SIZE 0x00000008 -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_SHIFT 0 -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_MASK 0x0000000f -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_ZERO 0x00000000 -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR0 0x00000001 -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR1 0x00000002 -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_FOG 0x00000003 -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_PRIMARY_COLOR 0x00000004 -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_SECONDARY_COLOR 0x00000005 -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_TEXTURE0 0x00000008 -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_TEXTURE1 0x00000009 -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_SPARE0 0x0000000c -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_SPARE1 0x0000000d -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_E_TIMES_F 0x0000000f -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_TEXTURE2 0x0000000a -#define NV20TCL_RC_OUT_RGB_CD_OUTPUT_TEXTURE3 0x0000000b -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_SHIFT 4 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_MASK 0x000000f0 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_ZERO 0x00000000 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR0 0x00000010 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR1 0x00000020 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_FOG 0x00000030 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_PRIMARY_COLOR 0x00000040 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_SECONDARY_COLOR 0x00000050 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_TEXTURE0 0x00000080 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_TEXTURE1 0x00000090 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_SPARE0 0x000000c0 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_SPARE1 0x000000d0 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000000e0 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_E_TIMES_F 0x000000f0 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_TEXTURE2 0x000000a0 -#define NV20TCL_RC_OUT_RGB_AB_OUTPUT_TEXTURE3 0x000000b0 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_SHIFT 8 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_MASK 0x00000f00 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_ZERO 0x00000000 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR0 0x00000100 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR1 0x00000200 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_FOG 0x00000300 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_PRIMARY_COLOR 0x00000400 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_SECONDARY_COLOR 0x00000500 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_TEXTURE0 0x00000800 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_TEXTURE1 0x00000900 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_SPARE0 0x00000c00 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_SPARE1 0x00000d00 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_E_TIMES_F 0x00000f00 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_TEXTURE2 0x00000a00 -#define NV20TCL_RC_OUT_RGB_SUM_OUTPUT_TEXTURE3 0x00000b00 -#define NV20TCL_RC_OUT_RGB_CD_DOT_PRODUCT (1 << 12) -#define NV20TCL_RC_OUT_RGB_AB_DOT_PRODUCT (1 << 13) -#define NV20TCL_RC_OUT_RGB_MUX_SUM (1 << 14) -#define NV20TCL_RC_OUT_RGB_BIAS (1 << 15) -#define NV20TCL_RC_OUT_RGB_BIAS_NONE 0x00000000 -#define NV20TCL_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF 0x00008000 -#define NV20TCL_RC_OUT_RGB_SCALE_SHIFT 16 -#define NV20TCL_RC_OUT_RGB_SCALE_MASK 0x00030000 -#define NV20TCL_RC_OUT_RGB_SCALE_NONE 0x00000000 -#define NV20TCL_RC_OUT_RGB_SCALE_SCALE_BY_TWO 0x00010000 -#define NV20TCL_RC_OUT_RGB_SCALE_SCALE_BY_FOUR 0x00020000 -#define NV20TCL_RC_OUT_RGB_SCALE_SCALE_BY_ONE_HALF 0x00030000 -#define NV20TCL_RC_ENABLE 0x00001e60 -#define NV20TCL_RC_ENABLE_NUM_COMBINERS_SHIFT 0 -#define NV20TCL_RC_ENABLE_NUM_COMBINERS_MASK 0x0000000f -#define NV20TCL_TX_RCOMP 0x00001e6c -#define NV20TCL_TX_RCOMP_NEVER 0x00000000 -#define NV20TCL_TX_RCOMP_GREATER 0x00000001 -#define NV20TCL_TX_RCOMP_EQUAL 0x00000002 -#define NV20TCL_TX_RCOMP_GEQUAL 0x00000003 -#define NV20TCL_TX_RCOMP_LESS 0x00000004 -#define NV20TCL_TX_RCOMP_NOTEQUAL 0x00000005 -#define NV20TCL_TX_RCOMP_LEQUAL 0x00000006 -#define NV20TCL_TX_RCOMP_ALWAYS 0x00000007 -#define NV20TCL_TX_SHADER_OP 0x00001e70 -#define NV20TCL_TX_SHADER_OP_TX0_SHIFT 0 -#define NV20TCL_TX_SHADER_OP_TX0_MASK 0x0000001f -#define NV20TCL_TX_SHADER_OP_TX0_NONE 0x00000000 -#define NV20TCL_TX_SHADER_OP_TX0_TEXTURE_2D 0x00000001 -#define NV20TCL_TX_SHADER_OP_TX0_PASS_THROUGH 0x00000004 -#define NV20TCL_TX_SHADER_OP_TX0_CULL_FRAGMENT 0x00000005 -#define NV20TCL_TX_SHADER_OP_TX0_OFFSET_TEXTURE_2D 0x00000006 -#define NV20TCL_TX_SHADER_OP_TX0_DOT_PRODUCT_TEXTURE_2D 0x00000009 -#define NV20TCL_TX_SHADER_OP_TX0_DOT_PRODUCT_DEPTH_REPLACE 0x0000000a -#define NV20TCL_TX_SHADER_OP_TX0_DEPENDANT_AR_TEXTURE_2D 0x0000000f -#define NV20TCL_TX_SHADER_OP_TX0_DEPENDANT_GB_TEXTURE_2D 0x00000010 -#define NV20TCL_TX_SHADER_OP_TX0_DOT_PRODUCT 0x00000011 -#define NV20TCL_TX_SHADER_OP_TX1_SHIFT 5 -#define NV20TCL_TX_SHADER_OP_TX1_MASK 0x000003e0 -#define NV20TCL_TX_SHADER_OP_TX1_NONE 0x00000000 -#define NV20TCL_TX_SHADER_OP_TX1_TEXTURE_2D 0x00000020 -#define NV20TCL_TX_SHADER_OP_TX1_PASS_THROUGH 0x00000080 -#define NV20TCL_TX_SHADER_OP_TX1_CULL_FRAGMENT 0x000000a0 -#define NV20TCL_TX_SHADER_OP_TX1_OFFSET_TEXTURE_2D 0x000000c0 -#define NV20TCL_TX_SHADER_OP_TX1_DOT_PRODUCT_TEXTURE_2D 0x00000120 -#define NV20TCL_TX_SHADER_OP_TX1_DOT_PRODUCT_DEPTH_REPLACE 0x00000140 -#define NV20TCL_TX_SHADER_OP_TX1_DEPENDANT_AR_TEXTURE_2D 0x000001e0 -#define NV20TCL_TX_SHADER_OP_TX1_DEPENDANT_GB_TEXTURE_2D 0x00000200 -#define NV20TCL_TX_SHADER_OP_TX1_DOT_PRODUCT 0x00000220 -#define NV20TCL_TX_SHADER_OP_TX2_SHIFT 10 -#define NV20TCL_TX_SHADER_OP_TX2_MASK 0x00007c00 -#define NV20TCL_TX_SHADER_OP_TX2_NONE 0x00000000 -#define NV20TCL_TX_SHADER_OP_TX2_TEXTURE_2D 0x00000400 -#define NV20TCL_TX_SHADER_OP_TX2_PASS_THROUGH 0x00001000 -#define NV20TCL_TX_SHADER_OP_TX2_CULL_FRAGMENT 0x00001400 -#define NV20TCL_TX_SHADER_OP_TX2_OFFSET_TEXTURE_2D 0x00001800 -#define NV20TCL_TX_SHADER_OP_TX2_DOT_PRODUCT_TEXTURE_2D 0x00002400 -#define NV20TCL_TX_SHADER_OP_TX2_DOT_PRODUCT_DEPTH_REPLACE 0x00002800 -#define NV20TCL_TX_SHADER_OP_TX2_DEPENDANT_AR_TEXTURE_2D 0x00003c00 -#define NV20TCL_TX_SHADER_OP_TX2_DEPENDANT_GB_TEXTURE_2D 0x00004000 -#define NV20TCL_TX_SHADER_OP_TX2_DOT_PRODUCT 0x00004400 -#define NV20TCL_TX_SHADER_OP_TX3_SHIFT 15 -#define NV20TCL_TX_SHADER_OP_TX3_MASK 0x000f8000 -#define NV20TCL_TX_SHADER_OP_TX3_NONE 0x00000000 -#define NV20TCL_TX_SHADER_OP_TX3_TEXTURE_2D 0x00008000 -#define NV20TCL_TX_SHADER_OP_TX3_PASS_THROUGH 0x00020000 -#define NV20TCL_TX_SHADER_OP_TX3_CULL_FRAGMENT 0x00028000 -#define NV20TCL_TX_SHADER_OP_TX3_OFFSET_TEXTURE_2D 0x00030000 -#define NV20TCL_TX_SHADER_OP_TX3_DOT_PRODUCT_TEXTURE_2D 0x00048000 -#define NV20TCL_TX_SHADER_OP_TX3_DOT_PRODUCT_DEPTH_REPLACE 0x00050000 -#define NV20TCL_TX_SHADER_OP_TX3_DEPENDANT_AR_TEXTURE_2D 0x00078000 -#define NV20TCL_TX_SHADER_OP_TX3_DEPENDANT_GB_TEXTURE_2D 0x00080000 -#define NV20TCL_TX_SHADER_OP_TX3_DOT_PRODUCT 0x00088000 -#define NV20TCL_TX_SHADER_DOTMAPPING 0x00001e74 -#define NV20TCL_TX_SHADER_DOTMAPPING_TX0_SHIFT 0 -#define NV20TCL_TX_SHADER_DOTMAPPING_TX0_MASK 0x0000000f -#define NV20TCL_TX_SHADER_DOTMAPPING_TX1_SHIFT 4 -#define NV20TCL_TX_SHADER_DOTMAPPING_TX1_MASK 0x000000f0 -#define NV20TCL_TX_SHADER_DOTMAPPING_TX2_SHIFT 8 -#define NV20TCL_TX_SHADER_DOTMAPPING_TX2_MASK 0x00000f00 -#define NV20TCL_TX_SHADER_DOTMAPPING_TX3_SHIFT 12 -#define NV20TCL_TX_SHADER_DOTMAPPING_TX3_MASK 0x0000f000 -#define NV20TCL_TX_SHADER_PREVIOUS 0x00001e78 -#define NV20TCL_TX_SHADER_PREVIOUS_TX0_SHIFT 8 -#define NV20TCL_TX_SHADER_PREVIOUS_TX0_MASK 0x00000f00 -#define NV20TCL_TX_SHADER_PREVIOUS_TX1_SHIFT 12 -#define NV20TCL_TX_SHADER_PREVIOUS_TX1_MASK 0x0000f000 -#define NV20TCL_TX_SHADER_PREVIOUS_TX2_SHIFT 16 -#define NV20TCL_TX_SHADER_PREVIOUS_TX2_MASK 0x00030000 -#define NV20TCL_TX_SHADER_PREVIOUS_TX3_SHIFT 20 -#define NV20TCL_TX_SHADER_PREVIOUS_TX3_MASK 0x00300000 -#define NV20TCL_ENGINE 0x00001e94 -#define NV20TCL_ENGINE_VP (1 << 1) -#define NV20TCL_ENGINE_FIXED (1 << 2) -#define NV20TCL_VP_UPLOAD_FROM_ID 0x00001e9c -#define NV20TCL_VP_START_FROM_ID 0x00001ea0 -#define NV20TCL_VP_UPLOAD_CONST_ID 0x00001ea4 - - -#define NV25TCL 0x00000597 - -#define NV25TCL_DMA_IN_MEMORY4 0x0000019c -#define NV25TCL_DMA_IN_MEMORY5 0x000001a0 -#define NV25TCL_DMA_IN_MEMORY8 0x000001ac -#define NV25TCL_DMA_IN_MEMORY9 0x000001b0 -#define NV25TCL_HIERZ_PITCH 0x0000022c -#define NV25TCL_HIERZ_OFFSET 0x00000230 - -#endif /* NOUVEAU_REG_H */ - diff --git a/src/mesa/drivers/dri/nouveau/nouveau_context.c b/src/mesa/drivers/dri/nouveau/nouveau_context.c index f80aaedb257..53a121420d3 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_context.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_context.c @@ -314,7 +314,7 @@ nouveau_context_make_current(__DRIcontext *dri_ctx, __DRIdrawable *dri_draw, GLboolean nouveau_context_unbind(__DRIcontext *dri_ctx) { - /* Unset current context and dispath table */ + /* Unset current context and dispatch table */ _mesa_make_current(NULL, NULL, NULL); return GL_TRUE; diff --git a/src/mesa/drivers/dri/nouveau/nouveau_texture.c b/src/mesa/drivers/dri/nouveau/nouveau_texture.c index 060c2c5bcc0..2480b1ea500 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_texture.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_texture.c @@ -603,11 +603,12 @@ nouveau_set_texbuffer(__DRIcontext *dri_ctx, nouveau_update_renderbuffers(dri_ctx, draw); nouveau_surface_ref(&to_nouveau_renderbuffer(rb)->surface, s); + s->format = get_texbuffer_format(rb, format); + /* Update the image fields. */ _mesa_init_teximage_fields(ctx, target, ti, s->width, s->height, - 1, 0, s->cpp); + 1, 0, s->cpp, s->format); ti->RowStride = s->pitch / s->cpp; - ti->TexFormat = s->format = get_texbuffer_format(rb, format); /* Try to validate it. */ if (!validate_teximage(ctx, t, 0, 0, 0, 0, s->width, s->height, 1)) diff --git a/src/mesa/drivers/dri/nouveau/nouveau_util.h b/src/mesa/drivers/dri/nouveau/nouveau_util.h index 8df8867d14c..6d01934dade 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_util.h +++ b/src/mesa/drivers/dri/nouveau/nouveau_util.h @@ -164,6 +164,12 @@ get_viewport_translate(struct gl_context *ctx, float a[4]) } static inline void +OUT_RINGb(struct nouveau_channel *chan, GLboolean x) +{ + OUT_RING(chan, x ? 1 : 0); +} + +static inline void OUT_RINGm(struct nouveau_channel *chan, float m[16]) { int i, j; diff --git a/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c b/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c index 7a0eb9fc23d..d8b331cca76 100644 --- a/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c +++ b/src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c @@ -150,7 +150,6 @@ vbo_emit_attr(struct gl_context *ctx, const struct gl_client_array **arrays, render->map[render->attr_count++] = attr; render->vertex_size += 4 * info->imm_fields; } - } } diff --git a/src/mesa/drivers/dri/nouveau/nv01_2d.xml.h b/src/mesa/drivers/dri/nouveau/nv01_2d.xml.h new file mode 100644 index 00000000000..3390da089b2 --- /dev/null +++ b/src/mesa/drivers/dri/nouveau/nv01_2d.xml.h @@ -0,0 +1,1343 @@ +#ifndef NV01_2D_XML +#define NV01_2D_XML + +/* Autogenerated file, DO NOT EDIT manually! + +This file was generated by the rules-ng-ng headergen tool in this git repository: +http://0x04.net/cgit/index.cgi/rules-ng-ng +git clone git://0x04.net/rules-ng-ng + +The rules-ng-ng source files this header was generated from are: +- nv01_2d.xml ( 33509 bytes, from 2010-11-13 23:32:57) +- copyright.xml ( 6452 bytes, from 2010-11-15 15:10:58) +- nv_defs.xml ( 4437 bytes, from 2010-11-01 00:28:46) +- nv_object.xml ( 11547 bytes, from 2010-11-13 23:32:57) +- nvchipsets.xml ( 3074 bytes, from 2010-11-13 23:32:57) + +Copyright (C) 2006-2010 by the following authors: +- Artur Huillet <[email protected]> (ahuillet) +- Ben Skeggs (darktama, darktama_) +- B. R. <[email protected]> (koala_br) +- Carlos Martin <[email protected]> (carlosmn) +- Christoph Bumiller <[email protected]> (calim, chrisbmr) +- Dawid Gajownik <[email protected]> (gajownik) +- Dmitry Baryshkov +- Dmitry Eremin-Solenikov <[email protected]> (lumag) +- EdB <[email protected]> (edb_) +- Erik Waling <[email protected]> (erikwaling) +- Francisco Jerez <[email protected]> (curro) +- imirkin <[email protected]> (imirkin) +- jb17bsome <[email protected]> (jb17bsome) +- Jeremy Kolb <[email protected]> (kjeremy) +- Laurent Carlier <[email protected]> (lordheavy) +- Luca Barbieri <[email protected]> (lb, lb1) +- Maarten Maathuis <[email protected]> (stillunknown) +- Marcin KoÅ›cielnicki <[email protected]> (mwk, koriakin) +- Mark Carey <[email protected]> (careym) +- Matthieu Castet <[email protected]> (mat-c) +- nvidiaman <[email protected]> (nvidiaman) +- Patrice Mandin <[email protected]> (pmandin, pmdata) +- Pekka Paalanen <[email protected]> (pq, ppaalanen) +- Peter Popov <[email protected]> (ironpeter) +- Richard Hughes <[email protected]> (hughsient) +- Rudi Cilibrasi <[email protected]> (cilibrar) +- Serge Martin +- Simon Raffeiner +- Stephane Loeuillet <[email protected]> (leroutier) +- Stephane Marchesin <[email protected]> (marcheu) +- sturmflut <[email protected]> (sturmflut) +- Sylvain Munaut <[email protected]> +- Victor Stinner <[email protected]> (haypo) +- Wladmir van der Laan <[email protected]> (miathan6) +- Younes Manton <[email protected]> (ymanton) + +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. +*/ + + + +#define NV01_CONTEXT_BETA1_DMA_NOTIFY 0x00000180 + +#define NV01_CONTEXT_BETA1_BETA_1D31 0x00000300 + + +#define NV04_BETA_SOLID_DMA_NOTIFY 0x00000180 + +#define NV04_BETA_SOLID_BETA_FACTOR 0x00000300 + + +#define NV01_CONTEXT_COLOR_KEY_DMA_NOTIFY 0x00000180 + +#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT 0x00000300 +#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_A16R5G6B5 0x00000001 +#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_X16A1R5G5B5 0x00000002 +#define NV01_CONTEXT_COLOR_KEY_COLOR_FORMAT_A8R8G8B8 0x00000003 + +#define NV01_CONTEXT_COLOR_KEY_COLOR 0x00000304 + + +#define NV01_CONTEXT_PATTERN_DMA_NOTIFY 0x00000180 + +#define NV01_CONTEXT_PATTERN_COLOR_FORMAT 0x00000300 + +#define NV01_CONTEXT_PATTERN_MONOCHROME_FORMAT 0x00000304 + +#define NV01_CONTEXT_PATTERN_SHAPE 0x00000308 + +#define NV01_CONTEXT_PATTERN_COLOR(i0) (0x00000310 + 0x4*(i0)) +#define NV01_CONTEXT_PATTERN_COLOR__ESIZE 0x00000004 +#define NV01_CONTEXT_PATTERN_COLOR__LEN 0x00000002 + +#define NV01_CONTEXT_PATTERN_PATTERN(i0) (0x00000318 + 0x4*(i0)) +#define NV01_CONTEXT_PATTERN_PATTERN__ESIZE 0x00000004 +#define NV01_CONTEXT_PATTERN_PATTERN__LEN 0x00000002 + + +#define NV01_CONTEXT_CLIP_RECTANGLE_DMA_NOTIFY 0x00000180 + +#define NV01_CONTEXT_CLIP_RECTANGLE_POINT 0x00000300 +#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_X__MASK 0x0000ffff +#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_X__SHIFT 0 +#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_Y__MASK 0xffff0000 +#define NV01_CONTEXT_CLIP_RECTANGLE_POINT_Y__SHIFT 16 + +#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE 0x00000304 +#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_W__MASK 0x0000ffff +#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_W__SHIFT 0 +#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_H__MASK 0xffff0000 +#define NV01_CONTEXT_CLIP_RECTANGLE_SIZE_H__SHIFT 16 + + +#define NV04_CONTEXT_SURFACES_2D_DMA_NOTIFY 0x00000180 + +#define NV04_CONTEXT_SURFACES_2D_DMA_IMAGE_SOURCE 0x00000184 + +#define NV04_CONTEXT_SURFACES_2D_DMA_IMAGE_DESTIN 0x00000188 + + +#define NV50_CONTEXT_SURFACES_2D_SRC_LINEAR 0x00000200 + +#define NV50_CONTEXT_SURFACES_2D_SRC_TILE_MODE 0x00000204 + +#define NV50_CONTEXT_SURFACES_2D_SRC_WIDTH 0x00000208 + +#define NV50_CONTEXT_SURFACES_2D_SRC_HEIGHT 0x0000020c + +#define NV50_CONTEXT_SURFACES_2D_UNK0210 0x00000210 + +#define NV50_CONTEXT_SURFACES_2D_UNK0214 0x00000214 + +#define NV50_CONTEXT_SURFACES_2D_DST_LINEAR 0x00000218 + +#define NV50_CONTEXT_SURFACES_2D_DST_TILE_MODE 0x0000021c + +#define NV50_CONTEXT_SURFACES_2D_DST_WIDTH 0x00000220 + +#define NV50_CONTEXT_SURFACES_2D_DST_HEIGHT 0x00000224 + +#define NV50_CONTEXT_SURFACES_2D_UNK0228 0x00000228 + +#define NV50_CONTEXT_SURFACES_2D_UNK022C 0x0000022c + +#define NV50_CONTEXT_SURFACES_2D_OFFSET_SOURCE_HIGH 0x00000230 + +#define NV50_CONTEXT_SURFACES_2D_OFFSET_DESTIN_HIGH 0x00000234 + +#define NV04_CONTEXT_SURFACES_2D_FORMAT 0x00000300 +#define NV04_CONTEXT_SURFACES_2D_FORMAT_Y8 0x00000001 +#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1R5G5B5_Z1R5G5B5 0x00000002 +#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1R5G5B5_X1R5G5B5 0x00000003 +#define NV04_CONTEXT_SURFACES_2D_FORMAT_R5G6B5 0x00000004 +#define NV04_CONTEXT_SURFACES_2D_FORMAT_Y16 0x00000005 +#define NV04_CONTEXT_SURFACES_2D_FORMAT_X8R8G8B8_Z8R8G8B8 0x00000006 +#define NV04_CONTEXT_SURFACES_2D_FORMAT_X8R8G8B8_X8R8G8B8 0x00000007 +#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1A7R8G8B8_Z1A7R8G8B8 0x00000008 +#define NV04_CONTEXT_SURFACES_2D_FORMAT_X1A7R8G8B8_X1A7R8G8B8 0x00000009 +#define NV04_CONTEXT_SURFACES_2D_FORMAT_A8R8G8B8 0x0000000a +#define NV04_CONTEXT_SURFACES_2D_FORMAT_Y32 0x0000000b + +#define NV04_CONTEXT_SURFACES_2D_PITCH 0x00000304 +#define NV04_CONTEXT_SURFACES_2D_PITCH_SOURCE__MASK 0x0000ffff +#define NV04_CONTEXT_SURFACES_2D_PITCH_SOURCE__SHIFT 0 +#define NV04_CONTEXT_SURFACES_2D_PITCH_DESTIN__MASK 0xffff0000 +#define NV04_CONTEXT_SURFACES_2D_PITCH_DESTIN__SHIFT 16 + +#define NV04_CONTEXT_SURFACES_2D_OFFSET_SOURCE 0x00000308 + +#define NV04_CONTEXT_SURFACES_2D_OFFSET_DESTIN 0x0000030c + + +#define NV04_SWIZZLED_SURFACE_DMA_NOTIFY 0x00000180 + +#define NV04_SWIZZLED_SURFACE_DMA_IMAGE 0x00000184 + +#define NV04_SWIZZLED_SURFACE_FORMAT 0x00000300 +#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR__MASK 0x000000ff +#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR__SHIFT 0 +#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_Y8 0x00000001 +#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1R5G5B5_Z1R5G5B5 0x00000002 +#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1R5G5B5_X1R5G5B5 0x00000003 +#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_R5G6B5 0x00000004 +#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_Y16 0x00000005 +#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X8R8G8B8_Z8R8G8B8 0x00000006 +#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X8R8G8B8_X8R8G8B8 0x00000007 +#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1A7R8G8B8_Z1A7R8G8B8 0x00000008 +#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_X1A7R8G8B8_X1A7R8G8B8 0x00000009 +#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_A8R8G8B8 0x0000000a +#define NV04_SWIZZLED_SURFACE_FORMAT_COLOR_Y32 0x0000000b +#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_U__MASK 0x00ff0000 +#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_U__SHIFT 16 +#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_V__MASK 0xff000000 +#define NV04_SWIZZLED_SURFACE_FORMAT_BASE_SIZE_V__SHIFT 24 + +#define NV04_SWIZZLED_SURFACE_OFFSET 0x00000304 + + +#define NV03_CONTEXT_ROP_DMA_NOTIFY 0x00000180 + +#define NV03_CONTEXT_ROP_ROP 0x00000300 + + +#define NV04_IMAGE_PATTERN_DMA_NOTIFY 0x00000180 + +#define NV04_IMAGE_PATTERN_COLOR_FORMAT 0x00000300 +#define NV04_IMAGE_PATTERN_COLOR_FORMAT_A16R5G6B5 0x00000001 +#define NV04_IMAGE_PATTERN_COLOR_FORMAT_X16A1R5G5B5 0x00000002 +#define NV04_IMAGE_PATTERN_COLOR_FORMAT_A8R8G8B8 0x00000003 + +#define NV04_IMAGE_PATTERN_MONOCHROME_FORMAT 0x00000304 +#define NV04_IMAGE_PATTERN_MONOCHROME_FORMAT_CGA6 0x00000001 +#define NV04_IMAGE_PATTERN_MONOCHROME_FORMAT_LE 0x00000002 + +#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE 0x00000308 +#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE_8X8 0x00000000 +#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE_64X1 0x00000001 +#define NV04_IMAGE_PATTERN_MONOCHROME_SHAPE_1X64 0x00000002 + +#define NV04_IMAGE_PATTERN_PATTERN_SELECT 0x0000030c +#define NV04_IMAGE_PATTERN_PATTERN_SELECT_MONO 0x00000001 +#define NV04_IMAGE_PATTERN_PATTERN_SELECT_COLOR 0x00000002 + +#define NV04_IMAGE_PATTERN_MONOCHROME_COLOR0 0x00000310 + +#define NV04_IMAGE_PATTERN_MONOCHROME_COLOR1 0x00000314 + +#define NV04_IMAGE_PATTERN_MONOCHROME_PATTERN0 0x00000318 + +#define NV04_IMAGE_PATTERN_MONOCHROME_PATTERN1 0x0000031c + +#define NV04_IMAGE_PATTERN_PATTERN_Y8(i0) (0x00000400 + 0x4*(i0)) +#define NV04_IMAGE_PATTERN_PATTERN_Y8__ESIZE 0x00000004 +#define NV04_IMAGE_PATTERN_PATTERN_Y8__LEN 0x00000010 +#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y0__MASK 0x000000ff +#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y0__SHIFT 0 +#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y1__MASK 0x0000ff00 +#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y1__SHIFT 8 +#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y2__MASK 0x00ff0000 +#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y2__SHIFT 16 +#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y3__MASK 0xff000000 +#define NV04_IMAGE_PATTERN_PATTERN_Y8_Y3__SHIFT 24 + +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5(i0) (0x00000500 + 0x4*(i0)) +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5__ESIZE 0x00000004 +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5__LEN 0x00000020 +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B0__MASK 0x0000001f +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B0__SHIFT 0 +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G0__MASK 0x000007e0 +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G0__SHIFT 5 +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R0__MASK 0x0000f800 +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R0__SHIFT 11 +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B1__MASK 0x001f0000 +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_B1__SHIFT 16 +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G1__MASK 0x07e00000 +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_G1__SHIFT 21 +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R1__MASK 0xf8000000 +#define NV04_IMAGE_PATTERN_PATTERN_R5G6B5_R1__SHIFT 27 + +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5(i0) (0x00000600 + 0x4*(i0)) +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5__ESIZE 0x00000004 +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5__LEN 0x00000020 +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B0__MASK 0x0000001f +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B0__SHIFT 0 +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G0__MASK 0x000003e0 +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G0__SHIFT 5 +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R0__MASK 0x00007c00 +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R0__SHIFT 10 +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B1__MASK 0x001f0000 +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_B1__SHIFT 16 +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G1__MASK 0x03e00000 +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_G1__SHIFT 21 +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R1__MASK 0x7c000000 +#define NV04_IMAGE_PATTERN_PATTERN_X1R5G5B5_R1__SHIFT 26 + +#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8(i0) (0x00000700 + 0x4*(i0)) +#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8__ESIZE 0x00000004 +#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8__LEN 0x00000040 +#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_B__MASK 0x000000ff +#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_B__SHIFT 0 +#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_G__MASK 0x0000ff00 +#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_G__SHIFT 8 +#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_R__MASK 0x00ff0000 +#define NV04_IMAGE_PATTERN_PATTERN_X8R8G8B8_R__SHIFT 16 + + +#define NV01_RENDER_SOLID_LINE_PATCH 0x0000010c + +#define NV01_RENDER_SOLID_LINE_DMA_NOTIFY 0x00000180 + +#define NV01_RENDER_SOLID_LINE_CLIP_RECTANGLE 0x00000184 + +#define NV01_RENDER_SOLID_LINE_PATTERN 0x00000188 + +#define NV04_RENDER_SOLID_LINE_PATTERN 0x00000188 + +#define NV01_RENDER_SOLID_LINE_ROP 0x0000018c + +#define NV01_RENDER_SOLID_LINE_BETA1 0x00000190 + +#define NV01_RENDER_SOLID_LINE_SURFACE_DST 0x00000194 + + +#define NV04_RENDER_SOLID_LINE_BETA4 0x00000194 + +#define NV04_RENDER_SOLID_LINE_SURFACE 0x00000198 + +#define NV01_RENDER_SOLID_LINE_OPERATION 0x000002fc +#define NV01_RENDER_SOLID_LINE_OPERATION_SRCCOPY_AND 0x00000000 +#define NV01_RENDER_SOLID_LINE_OPERATION_ROP_AND 0x00000001 +#define NV01_RENDER_SOLID_LINE_OPERATION_BLEND_AND 0x00000002 +#define NV01_RENDER_SOLID_LINE_OPERATION_SRCCOPY 0x00000003 +#define NV01_RENDER_SOLID_LINE_OPERATION_SRCCOPY_PREMULT 0x00000004 +#define NV01_RENDER_SOLID_LINE_OPERATION_BLEND_PREMULT 0x00000005 + +#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT 0x00000300 +#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_A16R5G6B5 0x00000001 +#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_X16A1R5G5B5 0x00000002 +#define NV01_RENDER_SOLID_LINE_COLOR_FORMAT_A8R8G8B8 0x00000003 + +#define NV01_RENDER_SOLID_LINE_COLOR 0x00000304 + +#define NV01_RENDER_SOLID_LINE_LINE_POINT0(i0) (0x00000400 + 0x8*(i0)) +#define NV01_RENDER_SOLID_LINE_LINE_POINT0__ESIZE 0x00000008 +#define NV01_RENDER_SOLID_LINE_LINE_POINT0__LEN 0x00000010 +#define NV01_RENDER_SOLID_LINE_LINE_POINT0_X__MASK 0x0000ffff +#define NV01_RENDER_SOLID_LINE_LINE_POINT0_X__SHIFT 0 +#define NV01_RENDER_SOLID_LINE_LINE_POINT0_Y__MASK 0xffff0000 +#define NV01_RENDER_SOLID_LINE_LINE_POINT0_Y__SHIFT 16 + +#define NV01_RENDER_SOLID_LINE_LINE_POINT1(i0) (0x00000404 + 0x8*(i0)) +#define NV01_RENDER_SOLID_LINE_LINE_POINT1__ESIZE 0x00000008 +#define NV01_RENDER_SOLID_LINE_LINE_POINT1__LEN 0x00000010 +#define NV01_RENDER_SOLID_LINE_LINE_POINT1_X__MASK 0x0000ffff +#define NV01_RENDER_SOLID_LINE_LINE_POINT1_X__SHIFT 0 +#define NV01_RENDER_SOLID_LINE_LINE_POINT1_Y__MASK 0xffff0000 +#define NV01_RENDER_SOLID_LINE_LINE_POINT1_Y__SHIFT 16 + +#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_X(i0) (0x00000480 + 0x10*(i0)) +#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_X__ESIZE 0x00000010 +#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_X__LEN 0x00000010 + +#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_Y(i0) (0x00000484 + 0x10*(i0)) +#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_Y__ESIZE 0x00000010 +#define NV01_RENDER_SOLID_LINE_LINE32_POINT0_Y__LEN 0x00000010 + +#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_X(i0) (0x00000488 + 0x10*(i0)) +#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_X__ESIZE 0x00000010 +#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_X__LEN 0x00000010 + +#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_Y(i0) (0x0000048c + 0x10*(i0)) +#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_Y__ESIZE 0x00000010 +#define NV01_RENDER_SOLID_LINE_LINE32_POINT1_Y__LEN 0x00000010 + +#define NV01_RENDER_SOLID_LINE_POLYLINE(i0) (0x00000500 + 0x4*(i0)) +#define NV01_RENDER_SOLID_LINE_POLYLINE__ESIZE 0x00000004 +#define NV01_RENDER_SOLID_LINE_POLYLINE__LEN 0x00000020 +#define NV01_RENDER_SOLID_LINE_POLYLINE_X__MASK 0x0000ffff +#define NV01_RENDER_SOLID_LINE_POLYLINE_X__SHIFT 0 +#define NV01_RENDER_SOLID_LINE_POLYLINE_Y__MASK 0xffff0000 +#define NV01_RENDER_SOLID_LINE_POLYLINE_Y__SHIFT 16 + +#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_X(i0) (0x00000580 + 0x8*(i0)) +#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_X__ESIZE 0x00000008 +#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_X__LEN 0x00000010 + +#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_Y(i0) (0x00000584 + 0x8*(i0)) +#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_Y__ESIZE 0x00000008 +#define NV01_RENDER_SOLID_LINE_POLYLINE32_POINT_Y__LEN 0x00000010 + +#define NV01_RENDER_SOLID_LINE_CPOLYLINE_COLOR(i0) (0x00000600 + 0x8*(i0)) +#define NV01_RENDER_SOLID_LINE_CPOLYLINE_COLOR__ESIZE 0x00000008 +#define NV01_RENDER_SOLID_LINE_CPOLYLINE_COLOR__LEN 0x00000010 + +#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT(i0) (0x00000604 + 0x8*(i0)) +#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT__ESIZE 0x00000008 +#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT__LEN 0x00000010 +#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_X__MASK 0x0000ffff +#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_X__SHIFT 0 +#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_Y__MASK 0xffff0000 +#define NV01_RENDER_SOLID_LINE_CPOLYLINE_POINT_Y__SHIFT 16 + + +#define NV01_RENDER_SOLID_TRIANGLE_PATCH 0x0000010c + +#define NV01_RENDER_SOLID_TRIANGLE_DMA_NOTIFY 0x00000180 + +#define NV01_RENDER_SOLID_TRIANGLE_CLIP_RECTANGLE 0x00000184 + +#define NV01_RENDER_SOLID_TRIANGLE_PATTERN 0x00000188 + +#define NV04_RENDER_SOLID_TRIANGLE_PATTERN 0x00000188 + +#define NV01_RENDER_SOLID_TRIANGLE_ROP 0x0000018c + +#define NV01_RENDER_SOLID_TRIANGLE_BETA1 0x00000190 + +#define NV01_RENDER_SOLID_TRIANGLE_SURFACE_DST 0x00000194 + + +#define NV04_RENDER_SOLID_TRIANGLE_BETA4 0x00000194 + +#define NV04_RENDER_SOLID_TRIANGLE_SURFACE 0x00000198 + +#define NV01_RENDER_SOLID_TRIANGLE_OPERATION 0x000002fc +#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_SRCCOPY_AND 0x00000000 +#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_ROP_AND 0x00000001 +#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_BLEND_AND 0x00000002 +#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_SRCCOPY 0x00000003 +#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_SRCCOPY_PREMULT 0x00000004 +#define NV01_RENDER_SOLID_TRIANGLE_OPERATION_BLEND_PREMULT 0x00000005 + +#define NV01_RENDER_SOLID_TRIANGLE_COLOR_FORMAT 0x00000300 +#define NV01_RENDER_SOLID_TRIANGLE_COLOR_FORMAT_A16R5G6B5 0x00000001 +#define NV01_RENDER_SOLID_TRIANGLE_COLOR_FORMAT_X16A1R5G5B5 0x00000002 +#define NV01_RENDER_SOLID_TRIANGLE_COLOR_FORMAT_A8R8G8B8 0x00000003 + +#define NV01_RENDER_SOLID_TRIANGLE_COLOR 0x00000304 + +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0 0x00000310 +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_X__MASK 0x0000ffff +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_X__SHIFT 0 +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_Y__MASK 0xffff0000 +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT0_Y__SHIFT 16 + +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1 0x00000314 +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_X__MASK 0x0000ffff +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_X__SHIFT 0 +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_Y__MASK 0xffff0000 +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT1_Y__SHIFT 16 + +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2 0x00000318 +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_X__MASK 0x0000ffff +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_X__SHIFT 0 +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_Y__MASK 0xffff0000 +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE_POINT2_Y__SHIFT 16 + +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT0_X 0x00000320 + +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT0_Y 0x00000324 + +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT1_X 0x00000328 + +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT1_Y 0x0000032c + +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT2_X 0x00000330 + +#define NV01_RENDER_SOLID_TRIANGLE_TRIANGLE32_POINT2_Y 0x00000334 + +#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH(i0) (0x00000400 + 0x4*(i0)) +#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH__ESIZE 0x00000004 +#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH__LEN 0x00000020 +#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_X__MASK 0x0000ffff +#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_X__SHIFT 0 +#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_Y__MASK 0xffff0000 +#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH_Y__SHIFT 16 + +#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_X(i0) (0x00000480 + 0x8*(i0)) +#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_X__ESIZE 0x00000008 +#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_X__LEN 0x00000010 + +#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_Y(i0) (0x00000484 + 0x8*(i0)) +#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_Y__ESIZE 0x00000008 +#define NV01_RENDER_SOLID_TRIANGLE_TRIMESH32_POINT_Y__LEN 0x00000010 + +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_COLOR(i0) (0x00000500 + 0x10*(i0)) +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_COLOR__ESIZE 0x00000010 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_COLOR__LEN 0x00000008 + +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0(i0) (0x00000504 + 0x10*(i0)) +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0__ESIZE 0x00000010 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0__LEN 0x00000008 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_X__MASK 0x0000ffff +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_X__SHIFT 0 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_Y__MASK 0xffff0000 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT0_Y__SHIFT 16 + +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1(i0) (0x00000508 + 0x10*(i0)) +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1__ESIZE 0x00000010 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1__LEN 0x00000008 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_X__MASK 0x0000ffff +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_X__SHIFT 0 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_Y__MASK 0xffff0000 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT1_Y__SHIFT 16 + +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2(i0) (0x0000050c + 0x10*(i0)) +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2__ESIZE 0x00000010 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2__LEN 0x00000008 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_X__MASK 0x0000ffff +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_X__SHIFT 0 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_Y__MASK 0xffff0000 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIANGLE_POINT2_Y__SHIFT 16 + +#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_COLOR(i0) (0x00000580 + 0x8*(i0)) +#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_COLOR__ESIZE 0x00000008 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_COLOR__LEN 0x00000010 + +#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT(i0) (0x00000584 + 0x8*(i0)) +#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT__ESIZE 0x00000008 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT__LEN 0x00000010 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_X__MASK 0x0000ffff +#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_X__SHIFT 0 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_Y__MASK 0xffff0000 +#define NV01_RENDER_SOLID_TRIANGLE_CTRIMESH_POINT_Y__SHIFT 16 + + +#define NV01_RENDER_SOLID_RECTANGLE_PATCH 0x0000010c + +#define NV01_RENDER_SOLID_RECTANGLE_DMA_NOTIFY 0x00000180 + +#define NV01_RENDER_SOLID_RECTANGLE_CLIP_RECTANGLE 0x00000184 + +#define NV01_RENDER_SOLID_RECTANGLE_PATTERN 0x00000188 + +#define NV04_RENDER_SOLID_RECTANGLE_PATTERN 0x00000188 + +#define NV01_RENDER_SOLID_RECTANGLE_ROP 0x0000018c + +#define NV01_RENDER_SOLID_RECTANGLE_BETA1 0x00000190 + +#define NV01_RENDER_SOLID_RECTANGLE_SURFACE_DST 0x00000194 + + +#define NV04_RENDER_SOLID_RECTANGLE_BETA4 0x00000194 + +#define NV04_RENDER_SOLID_RECTANGLE_SURFACE 0x00000198 + +#define NV01_RENDER_SOLID_RECTANGLE_OPERATION 0x000002fc +#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_SRCCOPY_AND 0x00000000 +#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_ROP_AND 0x00000001 +#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_BLEND_AND 0x00000002 +#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_SRCCOPY 0x00000003 +#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_SRCCOPY_PREMULT 0x00000004 +#define NV01_RENDER_SOLID_RECTANGLE_OPERATION_BLEND_PREMULT 0x00000005 + +#define NV01_RENDER_SOLID_RECTANGLE_COLOR_FORMAT 0x00000300 +#define NV01_RENDER_SOLID_RECTANGLE_COLOR_FORMAT_A16R5G6B5 0x00000001 +#define NV01_RENDER_SOLID_RECTANGLE_COLOR_FORMAT_X16A1R5G5B5 0x00000002 +#define NV01_RENDER_SOLID_RECTANGLE_COLOR_FORMAT_A8R8G8B8 0x00000003 + +#define NV01_RENDER_SOLID_RECTANGLE_COLOR 0x00000304 + +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT(i0) (0x00000400 + 0x8*(i0)) +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT__ESIZE 0x00000008 +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT__LEN 0x00000010 +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_X__MASK 0x0000ffff +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_X__SHIFT 0 +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_Y__MASK 0xffff0000 +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_POINT_Y__SHIFT 16 + +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE(i0) (0x00000404 + 0x8*(i0)) +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE__ESIZE 0x00000008 +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE__LEN 0x00000010 +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_W__MASK 0x0000ffff +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_W__SHIFT 0 +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_H__MASK 0xffff0000 +#define NV01_RENDER_SOLID_RECTANGLE_RECTANGLE_SIZE_H__SHIFT 16 + + +#define NV01_IMAGE_BLIT_PATCH 0x0000010c + + +#define NV11_IMAGE_BLIT_WAIT_FOR_IDLE 0x00000108 + +#define NV11_IMAGE_BLIT_FLIP_SET_READ 0x00000120 + +#define NV11_IMAGE_BLIT_FLIP_SET_WRITE 0x00000124 + +#define NV11_IMAGE_BLIT_FLIP_MAX 0x00000128 + +#define NV11_IMAGE_BLIT_FLIP_INCR_WRITE 0x0000012c + +#define NV11_IMAGE_BLIT_FLIP_WAIT 0x00000130 + +#define NV11_IMAGE_BLIT_FLIP_CRTC_INCR_READ 0x00000134 + +#define NV01_IMAGE_BLIT_DMA_NOTIFY 0x00000180 + +#define NV01_IMAGE_BLIT_COLOR_KEY 0x00000184 + +#define NV04_IMAGE_BLIT_COLOR_KEY 0x00000184 + +#define NV01_IMAGE_BLIT_CLIP_RECTANGLE 0x00000188 + +#define NV01_IMAGE_BLIT_PATTERN 0x0000018c + +#define NV04_IMAGE_BLIT_PATTERN 0x0000018c + +#define NV01_IMAGE_BLIT_ROP 0x00000190 + +#define NV01_IMAGE_BLIT_BETA1 0x00000194 + + +#define NV01_IMAGE_BLIT_SURFACE_SRC 0x00000198 + +#define NV01_IMAGE_BLIT_SURFACE_DST 0x0000019c + + +#define NV04_IMAGE_BLIT_BETA4 0x00000198 + +#define NV04_IMAGE_BLIT_SURFACES 0x0000019c + +#define NV01_IMAGE_BLIT_OPERATION 0x000002fc +#define NV01_IMAGE_BLIT_OPERATION_SRCCOPY_AND 0x00000000 +#define NV01_IMAGE_BLIT_OPERATION_ROP_AND 0x00000001 +#define NV01_IMAGE_BLIT_OPERATION_BLEND_AND 0x00000002 +#define NV01_IMAGE_BLIT_OPERATION_SRCCOPY 0x00000003 +#define NV01_IMAGE_BLIT_OPERATION_SRCCOPY_PREMULT 0x00000004 +#define NV01_IMAGE_BLIT_OPERATION_BLEND_PREMULT 0x00000005 + +#define NV01_IMAGE_BLIT_POINT_IN 0x00000300 +#define NV01_IMAGE_BLIT_POINT_IN_X__MASK 0x0000ffff +#define NV01_IMAGE_BLIT_POINT_IN_X__SHIFT 0 +#define NV01_IMAGE_BLIT_POINT_IN_Y__MASK 0xffff0000 +#define NV01_IMAGE_BLIT_POINT_IN_Y__SHIFT 16 + +#define NV01_IMAGE_BLIT_POINT_OUT 0x00000304 +#define NV01_IMAGE_BLIT_POINT_OUT_X__MASK 0x0000ffff +#define NV01_IMAGE_BLIT_POINT_OUT_X__SHIFT 0 +#define NV01_IMAGE_BLIT_POINT_OUT_Y__MASK 0xffff0000 +#define NV01_IMAGE_BLIT_POINT_OUT_Y__SHIFT 16 + +#define NV01_IMAGE_BLIT_SIZE 0x00000308 +#define NV01_IMAGE_BLIT_SIZE_W__MASK 0x0000ffff +#define NV01_IMAGE_BLIT_SIZE_W__SHIFT 0 +#define NV01_IMAGE_BLIT_SIZE_H__MASK 0xffff0000 +#define NV01_IMAGE_BLIT_SIZE_H__SHIFT 16 + + +#define NV04_INDEXED_IMAGE_FROM_CPU_PATCH 0x0000010c + +#define NV04_INDEXED_IMAGE_FROM_CPU_DMA_NOTIFY 0x00000180 + +#define NV04_INDEXED_IMAGE_FROM_CPU_DMA_LUT 0x00000184 + +#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR_KEY 0x00000188 + +#define NV04_INDEXED_IMAGE_FROM_CPU_CLIP_RECTANGLE 0x0000018c + +#define NV04_INDEXED_IMAGE_FROM_CPU_PATTERN 0x00000190 + +#define NV04_INDEXED_IMAGE_FROM_CPU_ROP 0x00000194 + +#define NV04_INDEXED_IMAGE_FROM_CPU_BETA1 0x00000198 + +#define NV04_INDEXED_IMAGE_FROM_CPU_BETA4 0x0000019c + +#define NV04_INDEXED_IMAGE_FROM_CPU_SURFACE 0x000001a0 + +#define NV05_INDEXED_IMAGE_FROM_CPU_SURFACE 0x000001a0 + +#define NV05_INDEXED_IMAGE_FROM_CPU_COLOR_CONVERSION 0x000003e0 + +#define NV04_INDEXED_IMAGE_FROM_CPU_OPERATION 0x000003e4 + +#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR_FORMAT 0x000003e8 + +#define NV04_INDEXED_IMAGE_FROM_CPU_INDEX_FORMAT 0x000003ec + +#define NV04_INDEXED_IMAGE_FROM_CPU_LUT_OFFSET 0x000003f0 + +#define NV04_INDEXED_IMAGE_FROM_CPU_POINT 0x000003f4 + +#define NV04_INDEXED_IMAGE_FROM_CPU_SIZE_OUT 0x000003f8 + +#define NV04_INDEXED_IMAGE_FROM_CPU_SIZE_IN 0x000003fc + +#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR(i0) (0x00000400 + 0x4*(i0)) +#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR__ESIZE 0x00000004 +#define NV04_INDEXED_IMAGE_FROM_CPU_COLOR__LEN 0x00000700 + + +#define NV10_IMAGE_FROM_CPU_WAIT_FOR_IDLE 0x00000108 + +#define NV01_IMAGE_FROM_CPU_PATCH 0x0000010c + +#define NV01_IMAGE_FROM_CPU_DMA_NOTIFY 0x00000180 + +#define NV01_IMAGE_FROM_CPU_COLOR_KEY 0x00000184 + +#define NV04_IMAGE_FROM_CPU_COLOR_KEY 0x00000184 + +#define NV01_IMAGE_FROM_CPU_CLIP_RECTANGLE 0x00000188 + +#define NV01_IMAGE_FROM_CPU_PATTERN 0x0000018c + +#define NV04_IMAGE_FROM_CPU_PATTERN 0x0000018c + +#define NV01_IMAGE_FROM_CPU_ROP 0x00000190 + +#define NV01_IMAGE_FROM_CPU_BETA1 0x00000194 + + +#define NV01_IMAGE_FROM_CPU_SURFACE_DST 0x00000198 + + +#define NV04_IMAGE_FROM_CPU_BETA4 0x00000198 + +#define NV04_IMAGE_FROM_CPU_SURFACE 0x0000019c + +#define NV05_IMAGE_FROM_CPU_COLOR_CONVERSION 0x000002f8 + +#define NV01_IMAGE_FROM_CPU_OPERATION 0x000002fc +#define NV01_IMAGE_FROM_CPU_OPERATION_SRCCOPY_AND 0x00000000 +#define NV01_IMAGE_FROM_CPU_OPERATION_ROP_AND 0x00000001 +#define NV01_IMAGE_FROM_CPU_OPERATION_BLEND_AND 0x00000002 +#define NV01_IMAGE_FROM_CPU_OPERATION_SRCCOPY 0x00000003 +#define NV01_IMAGE_FROM_CPU_OPERATION_SRCCOPY_PREMULT 0x00000004 +#define NV01_IMAGE_FROM_CPU_OPERATION_BLEND_PREMULT 0x00000005 + +#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT 0x00000300 +#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_R5G6G5 0x00000001 +#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_A1R5G5B5 0x00000002 +#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_X1R5G5B5 0x00000003 +#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_A8R8G8B8 0x00000004 +#define NV01_IMAGE_FROM_CPU_COLOR_FORMAT_X8R8G8B8 0x00000005 + +#define NV01_IMAGE_FROM_CPU_POINT 0x00000304 +#define NV01_IMAGE_FROM_CPU_POINT_X__MASK 0x0000ffff +#define NV01_IMAGE_FROM_CPU_POINT_X__SHIFT 0 +#define NV01_IMAGE_FROM_CPU_POINT_Y__MASK 0xffff0000 +#define NV01_IMAGE_FROM_CPU_POINT_Y__SHIFT 16 + +#define NV01_IMAGE_FROM_CPU_SIZE_OUT 0x00000308 +#define NV01_IMAGE_FROM_CPU_SIZE_OUT_W__MASK 0x0000ffff +#define NV01_IMAGE_FROM_CPU_SIZE_OUT_W__SHIFT 0 +#define NV01_IMAGE_FROM_CPU_SIZE_OUT_H__MASK 0xffff0000 +#define NV01_IMAGE_FROM_CPU_SIZE_OUT_H__SHIFT 16 + +#define NV01_IMAGE_FROM_CPU_SIZE_IN 0x0000030c +#define NV01_IMAGE_FROM_CPU_SIZE_IN_W__MASK 0x0000ffff +#define NV01_IMAGE_FROM_CPU_SIZE_IN_W__SHIFT 0 +#define NV01_IMAGE_FROM_CPU_SIZE_IN_H__MASK 0xffff0000 +#define NV01_IMAGE_FROM_CPU_SIZE_IN_H__SHIFT 16 + +#define NV01_IMAGE_FROM_CPU_COLOR(i0) (0x00000400 + 0x4*(i0)) +#define NV01_IMAGE_FROM_CPU_COLOR__ESIZE 0x00000004 +#define NV01_IMAGE_FROM_CPU_COLOR__LEN 0x00000020 + +#define NV04_IMAGE_FROM_CPU_COLOR(i0) (0x00000400 + 0x4*(i0)) +#define NV04_IMAGE_FROM_CPU_COLOR__ESIZE 0x00000004 +#define NV04_IMAGE_FROM_CPU_COLOR__LEN 0x00000700 + + +#define NV03_STRETCHED_IMAGE_FROM_CPU_PATCH 0x0000010c + +#define NV03_STRETCHED_IMAGE_FROM_CPU_DMA_NOTIFY 0x00000180 + +#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR_KEY 0x00000184 + +#define NV04_STRETCHED_IMAGE_FROM_CPU_COLOR_KEY 0x00000184 + +#define NV03_STRETCHED_IMAGE_FROM_CPU_PATTERN 0x00000188 + +#define NV04_STRETCHED_IMAGE_FROM_CPU_PATTERN 0x00000188 + +#define NV03_STRETCHED_IMAGE_FROM_CPU_ROP 0x0000018c + +#define NV03_STRETCHED_IMAGE_FROM_CPU_BETA1 0x00000190 + + +#define NV03_STRETCHED_IMAGE_FROM_CPU_SURFACE_DST 0x00000194 + + +#define NV04_STRETCHED_IMAGE_FROM_CPU_BETA4 0x00000194 + +#define NV04_STRETCHED_IMAGE_FROM_CPU_SURFACE 0x00000198 + +#define NV05_STRETCHED_IMAGE_FROM_CPU_COLOR_CONVERSION 0x000002f8 + +#define NV03_STRETCHED_IMAGE_FROM_CPU_OPERATION 0x000002fc + +#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR_FORMAT 0x00000300 + +#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN 0x00000304 +#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_W__MASK 0x0000ffff +#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_W__SHIFT 0 +#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_H__MASK 0xffff0000 +#define NV03_STRETCHED_IMAGE_FROM_CPU_SIZE_IN_H__SHIFT 16 + +#define NV03_STRETCHED_IMAGE_FROM_CPU_DX_DU 0x00000308 + +#define NV03_STRETCHED_IMAGE_FROM_CPU_DY_DV 0x0000030c + +#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT 0x00000310 +#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_X__MASK 0x0000ffff +#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_X__SHIFT 0 +#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_Y__MASK 0xffff0000 +#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_POINT_Y__SHIFT 16 + +#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE 0x00000314 +#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_W__MASK 0x0000ffff +#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_W__SHIFT 0 +#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_H__MASK 0xffff0000 +#define NV03_STRETCHED_IMAGE_FROM_CPU_CLIP_SIZE_H__SHIFT 16 + +#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4 0x00000318 +#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_X__MASK 0x0000ffff +#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_X__SHIFT 0 +#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_Y__MASK 0xffff0000 +#define NV03_STRETCHED_IMAGE_FROM_CPU_POINT12D4_Y__SHIFT 16 + +#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR(i0) (0x00000400 + 0x4*(i0)) +#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR__ESIZE 0x00000004 +#define NV03_STRETCHED_IMAGE_FROM_CPU_COLOR__LEN 0x00000700 + + +#define NV10_SCALED_IMAGE_FROM_MEMORY_WAIT_FOR_IDLE 0x00000108 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_DMA_NOTIFY 0x00000180 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_DMA_IMAGE 0x00000184 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_PATTERN 0x00000188 + +#define NV04_SCALED_IMAGE_FROM_MEMORY_PATTERN 0x00000188 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_ROP 0x0000018c + +#define NV03_SCALED_IMAGE_FROM_MEMORY_BETA1 0x00000190 + + +#define NV03_SCALED_IMAGE_FROM_MEMORY_SURFACE_DST 0x00000194 + + +#define NV04_SCALED_IMAGE_FROM_MEMORY_BETA4 0x00000194 + +#define NV04_SCALED_IMAGE_FROM_MEMORY_SURFACE 0x00000198 + +#define NV05_SCALED_IMAGE_FROM_MEMORY_SURFACE 0x00000198 + +#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION 0x000002fc +#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION_DITHER 0x00000000 +#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION_TRUNCATE 0x00000001 +#define NV05_SCALED_IMAGE_FROM_MEMORY_COLOR_CONVERSION_SUBTR_TRUNCATE 0x00000002 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT 0x00000300 +#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_A1R5G5B5 0x00000001 +#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_X1R5G5B5 0x00000002 +#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_A8R8G8B8 0x00000003 +#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_X8R8G8B8 0x00000004 +#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_V8YB8U8YA8 0x00000005 +#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_YB8V8YA8U8 0x00000006 +#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_R5G6B5 0x00000007 +#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_Y8 0x00000008 +#define NV03_SCALED_IMAGE_FROM_MEMORY_COLOR_FORMAT_AY8 0x00000009 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION 0x00000304 +#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_SRCCOPY_AND 0x00000000 +#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_ROP_AND 0x00000001 +#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_BLEND_AND 0x00000002 +#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_SRCCOPY 0x00000003 +#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_SRCCOPY_PREMULT 0x00000004 +#define NV03_SCALED_IMAGE_FROM_MEMORY_OPERATION_BLEND_PREMULT 0x00000005 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT 0x00000308 +#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_X__MASK 0x0000ffff +#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_X__SHIFT 0 +#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_Y__MASK 0xffff0000 +#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_POINT_Y__SHIFT 16 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE 0x0000030c +#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_W__MASK 0x0000ffff +#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_W__SHIFT 0 +#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_H__MASK 0xffff0000 +#define NV03_SCALED_IMAGE_FROM_MEMORY_CLIP_SIZE_H__SHIFT 16 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT 0x00000310 +#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_X__MASK 0x0000ffff +#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_X__SHIFT 0 +#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_Y__MASK 0xffff0000 +#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_POINT_Y__SHIFT 16 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE 0x00000314 +#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_W__MASK 0x0000ffff +#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_W__SHIFT 0 +#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_H__MASK 0xffff0000 +#define NV03_SCALED_IMAGE_FROM_MEMORY_OUT_SIZE_H__SHIFT 16 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_DU_DX 0x00000318 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_DV_DY 0x0000031c + +#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE 0x00000400 +#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_W__MASK 0x0000ffff +#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_W__SHIFT 0 +#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_H__MASK 0xffff0000 +#define NV03_SCALED_IMAGE_FROM_MEMORY_SIZE_H__SHIFT 16 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT 0x00000404 +#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_PITCH__MASK 0x0000ffff +#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_PITCH__SHIFT 0 +#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN__MASK 0x00ff0000 +#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN__SHIFT 16 +#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN_CENTER 0x00010000 +#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_ORIGIN_CORNER 0x00020000 +#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER__MASK 0xff000000 +#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER__SHIFT 24 +#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER_POINT_SAMPLE 0x00000000 +#define NV03_SCALED_IMAGE_FROM_MEMORY_FORMAT_FILTER_BILINEAR 0x01000000 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_OFFSET 0x00000408 + +#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT 0x0000040c +#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_U__MASK 0x0000ffff +#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_U__SHIFT 0 +#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_V__MASK 0xffff0000 +#define NV03_SCALED_IMAGE_FROM_MEMORY_POINT_V__SHIFT 16 + + +#define NV50_SCALED_IMAGE_FROM_MEMORY_OFFSET_HIGH 0x00000410 + +#define NV50_SCALED_IMAGE_FROM_MEMORY_SRC_LINEAR 0x00000414 + +#define NV50_SCALED_IMAGE_FROM_MEMORY_SRC_TILE_MODE 0x00000418 + + +#define NV03_GDI_RECTANGLE_TEXT_DMA_NOTIFY 0x00000180 + +#define NV03_GDI_RECTANGLE_TEXT_PATTERN 0x00000184 + +#define NV03_GDI_RECTANGLE_TEXT_ROP 0x00000188 + +#define NV03_GDI_RECTANGLE_TEXT_BETA1 0x0000019c + +#define NV03_GDI_RECTANGLE_TEXT_SURFACE_DST 0x00000190 + +#define NV03_GDI_RECTANGLE_TEXT_OPERATION 0x000002fc + +#define NV03_GDI_RECTANGLE_TEXT_COLOR_FORMAT 0x00000300 + +#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT 0x00000304 + +#define NV03_GDI_RECTANGLE_TEXT_COLOR1_A 0x000003fc + +#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT 0x00000400 +#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE 0x00000404 +#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B 0x000007f4 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_L__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_L__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_T__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT0_B_T__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B 0x000007f8 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_R__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_R__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_B__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_POINT1_B_B__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_COLOR1_B 0x000007fc + +#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0 0x00000800 +#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1 0x00000804 +#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0 0x00000bec +#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1 0x00000bf0 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_COLOR1_C 0x00000bf4 + +#define NV03_GDI_RECTANGLE_TEXT_SIZE_C 0x00000bf8 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_W__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_W__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_H__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_C_H__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_POINT_C 0x00000bfc +#define NV03_GDI_RECTANGLE_TEXT_POINT_C_X__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_POINT_C_X__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_POINT_C_Y__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_POINT_C_Y__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C(i0) (0x00000c00 + 0x4*(i0)) +#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C__ESIZE 0x00000004 +#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C__LEN 0x00000020 + +#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0 0x00000fe8 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_L__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_L__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_T__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT0_T__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1 0x00000fec +#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_R__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_R__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_B__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_D_POINT1_B__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_COLOR1_D 0x00000ff0 + +#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D 0x00000ff4 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_W__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_W__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_H__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_D_H__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D 0x00000ff8 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_W__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_W__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_H__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_D_H__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_POINT_D 0x00000ffc +#define NV03_GDI_RECTANGLE_TEXT_POINT_D_X__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_POINT_D_X__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_POINT_D_Y__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_POINT_D_Y__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_D(i0) (0x00001000 + 0x4*(i0)) +#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_D__ESIZE 0x00000004 +#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_D__LEN 0x00000020 + +#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0 0x000013e4 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1 0x000013e8 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_COLOR0_E 0x000013ec + +#define NV03_GDI_RECTANGLE_TEXT_COLOR1_E 0x000013f0 + +#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E 0x000013f4 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_W__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_W__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_H__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_IN_E_H__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E 0x000013f8 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_POINT_E 0x000013fc +#define NV03_GDI_RECTANGLE_TEXT_POINT_E_X__MASK 0x0000ffff +#define NV03_GDI_RECTANGLE_TEXT_POINT_E_X__SHIFT 0 +#define NV03_GDI_RECTANGLE_TEXT_POINT_E_Y__MASK 0xffff0000 +#define NV03_GDI_RECTANGLE_TEXT_POINT_E_Y__SHIFT 16 + +#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E(i0) (0x00001400 + 0x4*(i0)) +#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E__ESIZE 0x00000004 +#define NV03_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E__LEN 0x00000020 + + +#define NV04_GDI_RECTANGLE_TEXT_PATCH 0x0000010c + +#define NV04_GDI_RECTANGLE_TEXT_DMA_NOTIFY 0x00000180 + +#define NV04_GDI_RECTANGLE_TEXT_DMA_FONTS 0x00000184 + +#define NV04_GDI_RECTANGLE_TEXT_PATTERN 0x00000188 + +#define NV04_GDI_RECTANGLE_TEXT_ROP 0x0000018c + +#define NV04_GDI_RECTANGLE_TEXT_BETA1 0x00000190 + +#define NV04_GDI_RECTANGLE_TEXT_BETA4 0x00000194 + +#define NV04_GDI_RECTANGLE_TEXT_SURFACE 0x00000198 + +#define NV04_GDI_RECTANGLE_TEXT_OPERATION 0x000002fc +#define NV04_GDI_RECTANGLE_TEXT_OPERATION_SRCCOPY_AND 0x00000000 +#define NV04_GDI_RECTANGLE_TEXT_OPERATION_ROP_AND 0x00000001 +#define NV04_GDI_RECTANGLE_TEXT_OPERATION_BLEND_AND 0x00000002 +#define NV04_GDI_RECTANGLE_TEXT_OPERATION_SRCCOPY 0x00000003 +#define NV04_GDI_RECTANGLE_TEXT_OPERATION_SRCCOPY_PREMULT 0x00000004 +#define NV04_GDI_RECTANGLE_TEXT_OPERATION_BLEND_PREMULT 0x00000005 + +#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT 0x00000300 +#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT_A16R5G6B5 0x00000001 +#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT_X16A1R5G5B5 0x00000002 +#define NV04_GDI_RECTANGLE_TEXT_COLOR_FORMAT_A8R8G8B8 0x00000003 + +#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT 0x00000304 +#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT_CGA6 0x00000001 +#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_FORMAT_LE 0x00000002 + +#define NV04_GDI_RECTANGLE_TEXT_COLOR1_A 0x000003fc + +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT(i0) (0x00000400 + 0x8*(i0)) +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT__ESIZE 0x00000008 +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT__LEN 0x00000020 +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_Y__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_POINT_X__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE(i0) (0x00000404 + 0x8*(i0)) +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE__ESIZE 0x00000008 +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE__LEN 0x00000020 +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_H__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_UNCLIPPED_RECTANGLE_SIZE_W__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0 0x000005f4 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_L__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_L__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_T__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT0_T__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1 0x000005f8 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_R__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_R__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_B__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_B_POINT1_B__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_COLOR1_B 0x000005fc + +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0(i0) (0x00000600 + 0x8*(i0)) +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0__ESIZE 0x00000008 +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0__LEN 0x00000020 +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_L__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_0_T__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1(i0) (0x00000604 + 0x8*(i0)) +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1__ESIZE 0x00000008 +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1__LEN 0x00000020 +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_R__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_CLIPPED_RECTANGLE_POINT_1_B__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0 0x000007ec +#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_L__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT0_T__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1 0x000007f0 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_R__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_C_POINT1_B__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_COLOR1_C 0x000007f4 + +#define NV04_GDI_RECTANGLE_TEXT_SIZE_C 0x000007f8 +#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_W__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_W__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_H__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_SIZE_C_H__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_POINT_C 0x000007fc +#define NV04_GDI_RECTANGLE_TEXT_POINT_C_X__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_POINT_C_X__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_POINT_C_Y__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_POINT_C_Y__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C(i0) (0x00000800 + 0x4*(i0)) +#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C__ESIZE 0x00000004 +#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR1_C__LEN 0x00000080 + +#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0 0x00000be4 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_L__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT0_T__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1 0x00000be8 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_R__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_E_POINT1_B__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_COLOR0_E 0x00000bec + +#define NV04_GDI_RECTANGLE_TEXT_COLOR1_E 0x00000bf0 + +#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E 0x00000bf4 +#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_W__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_W__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_H__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_SIZE_IN_E_H__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E 0x00000bf8 +#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_W__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_SIZE_OUT_E_H__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_POINT_E 0x00000bfc +#define NV04_GDI_RECTANGLE_TEXT_POINT_E_X__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_POINT_E_X__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_POINT_E_Y__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_POINT_E_Y__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E(i0) (0x00000c00 + 0x4*(i0)) +#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E__ESIZE 0x00000004 +#define NV04_GDI_RECTANGLE_TEXT_MONOCHROME_COLOR01_E__LEN 0x00000080 + +#define NV04_GDI_RECTANGLE_TEXT_FONT_F 0x00000ff0 +#define NV04_GDI_RECTANGLE_TEXT_FONT_F_OFFSET__MASK 0x0fffffff +#define NV04_GDI_RECTANGLE_TEXT_FONT_F_OFFSET__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_FONT_F_PITCH__MASK 0xf0000000 +#define NV04_GDI_RECTANGLE_TEXT_FONT_F_PITCH__SHIFT 28 + +#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0 0x00000ff4 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_L__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_L__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_T__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT0_T__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1 0x00000ff8 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_R__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_R__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_B__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_F_POINT1_B__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_COLOR1_F 0x00000ffc + +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F(i0) (0x00001000 + 0x4*(i0)) +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F__ESIZE 0x00000004 +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F__LEN 0x00000100 +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_INDEX__MASK 0x000000ff +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_INDEX__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_X__MASK 0x000fff00 +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_X__SHIFT 8 +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_Y__MASK 0xfff00000 +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_F_Y__SHIFT 20 + +#define NV04_GDI_RECTANGLE_TEXT_FONT_G 0x000017f0 +#define NV04_GDI_RECTANGLE_TEXT_FONT_G_OFFSET__MASK 0x0fffffff +#define NV04_GDI_RECTANGLE_TEXT_FONT_G_OFFSET__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_FONT_G_PITCH__MASK 0xf0000000 +#define NV04_GDI_RECTANGLE_TEXT_FONT_G_PITCH__SHIFT 28 + +#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0 0x000017f4 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_L__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_L__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_T__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT0_T__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1 0x000017f8 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_R__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_R__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_B__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_CLIP_G_POINT1_B__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_COLOR1_G 0x000017fc + +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT(i0) (0x00001800 + 0x8*(i0)) +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT__ESIZE 0x00000008 +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT__LEN 0x00000100 +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_X__MASK 0x0000ffff +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_X__SHIFT 0 +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_Y__MASK 0xffff0000 +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_POINT_Y__SHIFT 16 + +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_INDEX(i0) (0x00001804 + 0x8*(i0)) +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_INDEX__ESIZE 0x00000008 +#define NV04_GDI_RECTANGLE_TEXT_CHARACTER_COLOR1_G_INDEX__LEN 0x00000100 + + +#define NV10_TEXTURE_FROM_CPU_WAIT_FOR_IDLE 0x00000108 + +#define NV10_TEXTURE_FROM_CPU_DMA_NOTIFY 0x00000180 + +#define NV10_TEXTURE_FROM_CPU_SURFACE 0x00000184 + +#define NV10_TEXTURE_FROM_CPU_COLOR_FORMAT 0x00000300 + +#define NV10_TEXTURE_FROM_CPU_POINT 0x00000304 +#define NV10_TEXTURE_FROM_CPU_POINT_X__MASK 0x0000ffff +#define NV10_TEXTURE_FROM_CPU_POINT_X__SHIFT 0 +#define NV10_TEXTURE_FROM_CPU_POINT_Y__MASK 0xffff0000 +#define NV10_TEXTURE_FROM_CPU_POINT_Y__SHIFT 16 + +#define NV10_TEXTURE_FROM_CPU_SIZE 0x00000308 +#define NV10_TEXTURE_FROM_CPU_SIZE_W__MASK 0x0000ffff +#define NV10_TEXTURE_FROM_CPU_SIZE_W__SHIFT 0 +#define NV10_TEXTURE_FROM_CPU_SIZE_H__MASK 0xffff0000 +#define NV10_TEXTURE_FROM_CPU_SIZE_H__SHIFT 16 + +#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL 0x0000030c +#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_X__MASK 0x0000ffff +#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_X__SHIFT 0 +#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_W__MASK 0xffff0000 +#define NV10_TEXTURE_FROM_CPU_CLIP_HORIZONTAL_W__SHIFT 16 + +#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL 0x00000310 +#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_Y__MASK 0x0000ffff +#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_Y__SHIFT 0 +#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_H__MASK 0xffff0000 +#define NV10_TEXTURE_FROM_CPU_CLIP_VERTICAL_H__SHIFT 16 + +#define NV10_TEXTURE_FROM_CPU_COLOR(i0) (0x00000400 + 0x4*(i0)) +#define NV10_TEXTURE_FROM_CPU_COLOR__ESIZE 0x00000004 +#define NV10_TEXTURE_FROM_CPU_COLOR__LEN 0x00000700 + + +#endif /* NV01_2D_XML */ diff --git a/src/mesa/drivers/dri/nouveau/nv04_3d.xml.h b/src/mesa/drivers/dri/nouveau/nv04_3d.xml.h new file mode 100644 index 00000000000..d4fb680a369 --- /dev/null +++ b/src/mesa/drivers/dri/nouveau/nv04_3d.xml.h @@ -0,0 +1,738 @@ +#ifndef NV04_3D_XML +#define NV04_3D_XML + +/* Autogenerated file, DO NOT EDIT manually! + +This file was generated by the rules-ng-ng headergen tool in this git repository: +http://0x04.net/cgit/index.cgi/rules-ng-ng +git clone git://0x04.net/rules-ng-ng + +The rules-ng-ng source files this header was generated from are: +- nv04_3d.xml ( 17839 bytes, from 2010-11-15 02:23:48) +- copyright.xml ( 6452 bytes, from 2010-11-15 15:10:58) +- nv_object.xml ( 11547 bytes, from 2010-11-13 23:32:57) +- nvchipsets.xml ( 3074 bytes, from 2010-11-13 23:32:57) +- nv_defs.xml ( 4437 bytes, from 2010-11-01 00:28:46) +- nv_3ddefs.xml ( 16394 bytes, from 2010-11-01 00:28:46) + +Copyright (C) 2006-2010 by the following authors: +- Artur Huillet <[email protected]> (ahuillet) +- Ben Skeggs (darktama, darktama_) +- B. R. <[email protected]> (koala_br) +- Carlos Martin <[email protected]> (carlosmn) +- Christoph Bumiller <[email protected]> (calim, chrisbmr) +- Dawid Gajownik <[email protected]> (gajownik) +- Dmitry Baryshkov +- Dmitry Eremin-Solenikov <[email protected]> (lumag) +- EdB <[email protected]> (edb_) +- Erik Waling <[email protected]> (erikwaling) +- Francisco Jerez <[email protected]> (curro) +- imirkin <[email protected]> (imirkin) +- jb17bsome <[email protected]> (jb17bsome) +- Jeremy Kolb <[email protected]> (kjeremy) +- Laurent Carlier <[email protected]> (lordheavy) +- Luca Barbieri <[email protected]> (lb, lb1) +- Maarten Maathuis <[email protected]> (stillunknown) +- Marcin KoÅ›cielnicki <[email protected]> (mwk, koriakin) +- Mark Carey <[email protected]> (careym) +- Matthieu Castet <[email protected]> (mat-c) +- nvidiaman <[email protected]> (nvidiaman) +- Patrice Mandin <[email protected]> (pmandin, pmdata) +- Pekka Paalanen <[email protected]> (pq, ppaalanen) +- Peter Popov <[email protected]> (ironpeter) +- Richard Hughes <[email protected]> (hughsient) +- Rudi Cilibrasi <[email protected]> (cilibrar) +- Serge Martin +- Simon Raffeiner +- Stephane Loeuillet <[email protected]> (leroutier) +- Stephane Marchesin <[email protected]> (marcheu) +- sturmflut <[email protected]> (sturmflut) +- Sylvain Munaut <[email protected]> +- Victor Stinner <[email protected]> (haypo) +- Wladmir van der Laan <[email protected]> (miathan6) +- Younes Manton <[email protected]> (ymanton) + +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. +*/ + + + +#define NV04_CONTEXT_SURFACES_3D_DMA_NOTIFY 0x00000180 + +#define NV04_CONTEXT_SURFACES_3D_DMA_COLOR 0x00000184 + +#define NV04_CONTEXT_SURFACES_3D_DMA_ZETA 0x00000188 + +#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL 0x000002f8 +#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_X__MASK 0x0000ffff +#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_X__SHIFT 0 +#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_W__MASK 0xffff0000 +#define NV04_CONTEXT_SURFACES_3D_CLIP_HORIZONTAL_W__SHIFT 16 + +#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL 0x000002fc +#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_Y__MASK 0x0000ffff +#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_Y__SHIFT 0 +#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_H__MASK 0xffff0000 +#define NV04_CONTEXT_SURFACES_3D_CLIP_VERTICAL_H__SHIFT 16 + +#define NV04_CONTEXT_SURFACES_3D_FORMAT 0x00000300 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR__MASK 0x000000ff +#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR__SHIFT 0 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1R5G5B5_Z1R5G5B5 0x00000001 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1R5G5B5_X1R5G5B5 0x00000002 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_R5G6B5 0x00000003 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X8R8G8B8_Z8R8G8B8 0x00000004 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X8R8G8B8_X8R8G8B8 0x00000005 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1A7R8G8B8_Z1A7R8G8B8 0x00000006 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X1A7R8G8B8_X1A7R8G8B8 0x00000007 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_A8R8G8B8 0x00000008 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE__MASK 0x0000ff00 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE__SHIFT 8 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE_PITCH 0x00000100 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_TYPE_SWIZZLE 0x00000200 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_U__MASK 0x00ff0000 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_U__SHIFT 16 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_V__MASK 0xff000000 +#define NV04_CONTEXT_SURFACES_3D_FORMAT_BASE_SIZE_V__SHIFT 24 + +#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE 0x00000304 +#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_W__MASK 0x0000ffff +#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_W__SHIFT 0 +#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_H__MASK 0xffff0000 +#define NV04_CONTEXT_SURFACES_3D_CLIP_SIZE_H__SHIFT 16 + +#define NV04_CONTEXT_SURFACES_3D_PITCH 0x00000308 +#define NV04_CONTEXT_SURFACES_3D_PITCH_COLOR__MASK 0x0000ffff +#define NV04_CONTEXT_SURFACES_3D_PITCH_COLOR__SHIFT 0 +#define NV04_CONTEXT_SURFACES_3D_PITCH_ZETA__MASK 0xffff0000 +#define NV04_CONTEXT_SURFACES_3D_PITCH_ZETA__SHIFT 16 + +#define NV04_CONTEXT_SURFACES_3D_OFFSET_COLOR 0x0000030c + +#define NV04_CONTEXT_SURFACES_3D_OFFSET_ZETA 0x00000310 + + +#define NV04_TEXTURED_TRIANGLE_DMA_NOTIFY 0x00000180 + +#define NV04_TEXTURED_TRIANGLE_DMA_A 0x00000184 + +#define NV04_TEXTURED_TRIANGLE_DMA_B 0x00000188 + +#define NV04_TEXTURED_TRIANGLE_SURFACES 0x0000018c + +#define NV04_TEXTURED_TRIANGLE_COLORKEY 0x00000300 + +#define NV04_TEXTURED_TRIANGLE_OFFSET 0x00000304 + +#define NV04_TEXTURED_TRIANGLE_FORMAT 0x00000308 +#define NV04_TEXTURED_TRIANGLE_FORMAT_DMA_A 0x00000001 +#define NV04_TEXTURED_TRIANGLE_FORMAT_DMA_B 0x00000002 +#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_KEY_ENABLE 0x00000004 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH__MASK 0x00000030 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH__SHIFT 4 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH_CENTER 0x00000010 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_ZOH_CORNER 0x00000020 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH__MASK 0x000000c0 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH__SHIFT 6 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH_CENTER 0x00000040 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ORIGIN_FOH_CORNER 0x00000080 +#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR__MASK 0x00000f00 +#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR__SHIFT 8 +#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_Y8 0x00000100 +#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_A1R5G5B5 0x00000200 +#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_X1R5G5B5 0x00000300 +#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_A4R4G4B4 0x00000400 +#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_R5G6B5 0x00000500 +#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_A8R8G8B8 0x00000600 +#define NV04_TEXTURED_TRIANGLE_FORMAT_COLOR_X8R8G8B8 0x00000700 +#define NV04_TEXTURED_TRIANGLE_FORMAT_MIPMAP_LEVELS__MASK 0x0000f000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_MIPMAP_LEVELS__SHIFT 12 +#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_U__MASK 0x000f0000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_U__SHIFT 16 +#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_V__MASK 0x00f00000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_BASE_SIZE_V__SHIFT 20 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU__MASK 0x07000000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU__SHIFT 24 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_REPEAT 0x01000000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_MIRRORED_REPEAT 0x02000000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_CLAMP_TO_EDGE 0x03000000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSU_CLAMP_TO_BORDER 0x04000000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_WRAPU 0x08000000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV__MASK 0x70000000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV__SHIFT 28 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_REPEAT 0x10000000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_MIRRORED_REPEAT 0x20000000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_CLAMP_TO_EDGE 0x30000000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_ADDRESSV_CLAMP_TO_BORDER 0x40000000 +#define NV04_TEXTURED_TRIANGLE_FORMAT_WRAPV 0x80000000 + +#define NV04_TEXTURED_TRIANGLE_FILTER 0x0000030c +#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_X__MASK 0x000000ff +#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_X__SHIFT 0 +#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_Y__MASK 0x00007f00 +#define NV04_TEXTURED_TRIANGLE_FILTER_KERNEL_SIZE_Y__SHIFT 8 +#define NV04_TEXTURED_TRIANGLE_FILTER_MIPMAP_DITHER_ENABLE 0x00008000 +#define NV04_TEXTURED_TRIANGLE_FILTER_MIPMAP_LODBIAS__MASK 0x00ff0000 +#define NV04_TEXTURED_TRIANGLE_FILTER_MIPMAP_LODBIAS__SHIFT 16 +#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY__MASK 0x07000000 +#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY__SHIFT 24 +#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_NEAREST 0x01000000 +#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_LINEAR 0x02000000 +#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_NEAREST_MIPMAP_NEAREST 0x03000000 +#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_LINEAR_MIPMAP_NEAREST 0x04000000 +#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_NEAREST_MIPMAP_LINEAR 0x05000000 +#define NV04_TEXTURED_TRIANGLE_FILTER_MINIFY_LINEAR_MIPMAP_LINEAR 0x06000000 +#define NV04_TEXTURED_TRIANGLE_FILTER_ANISOTROPIC_MINIFY_ENABLE 0x08000000 +#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY__MASK 0x70000000 +#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY__SHIFT 28 +#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY_NEAREST 0x10000000 +#define NV04_TEXTURED_TRIANGLE_FILTER_MAGNIFY_LINEAR 0x20000000 +#define NV04_TEXTURED_TRIANGLE_FILTER_ANISOTROPIC_MAGNIFY_ENABLE 0x80000000 + +#define NV04_TEXTURED_TRIANGLE_BLEND 0x00000310 +#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP__MASK 0x0000000f +#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP__SHIFT 0 +#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_DECAL 0x00000001 +#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_MODULATE 0x00000002 +#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_DECALALPHA 0x00000003 +#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_MODULATEALPHA 0x00000004 +#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_DECALMASK 0x00000005 +#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_MODULATEMASK 0x00000006 +#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_COPY 0x00000007 +#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_MAP_ADD 0x00000008 +#define NV04_TEXTURED_TRIANGLE_BLEND_MASK_BIT__MASK 0x00000030 +#define NV04_TEXTURED_TRIANGLE_BLEND_MASK_BIT__SHIFT 4 +#define NV04_TEXTURED_TRIANGLE_BLEND_MASK_BIT_LSB 0x00000010 +#define NV04_TEXTURED_TRIANGLE_BLEND_MASK_BIT_MSB 0x00000020 +#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE__MASK 0x000000c0 +#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE__SHIFT 6 +#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_FLAT 0x00000040 +#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_GOURAUD 0x00000080 +#define NV04_TEXTURED_TRIANGLE_BLEND_SHADE_MODE_PHONG 0x000000c0 +#define NV04_TEXTURED_TRIANGLE_BLEND_TEXTURE_PERSPECTIVE_ENABLE 0x00000100 +#define NV04_TEXTURED_TRIANGLE_BLEND_SPECULAR_ENABLE 0x00001000 +#define NV04_TEXTURED_TRIANGLE_BLEND_FOG_ENABLE 0x00010000 +#define NV04_TEXTURED_TRIANGLE_BLEND_BLEND_ENABLE 0x00100000 +#define NV04_TEXTURED_TRIANGLE_BLEND_SRC__MASK 0x0f000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_SRC__SHIFT 24 +#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_ZERO 0x01000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_ONE 0x02000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_SRC_COLOR 0x03000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_ONE_MINUS_SRC_COLOR 0x04000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_SRC_ALPHA 0x05000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_ONE_MINUS_SRC_ALPHA 0x06000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_DST_ALPHA 0x07000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_ONE_MINUS_DST_ALPHA 0x08000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_DST_COLOR 0x09000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_ONE_MINUS_DST_COLOR 0x0a000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_SRC_SRC_ALPHA_SATURATE 0x0b000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_DST__MASK 0xf0000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_DST__SHIFT 28 +#define NV04_TEXTURED_TRIANGLE_BLEND_DST_ZERO 0x10000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_DST_ONE 0x20000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_DST_SRC_COLOR 0x30000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_DST_ONE_MINUS_SRC_COLOR 0x40000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_DST_SRC_ALPHA 0x50000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_DST_ONE_MINUS_SRC_ALPHA 0x60000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_DST_DST_ALPHA 0x70000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_DST_ONE_MINUS_DST_ALPHA 0x80000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_DST_DST_COLOR 0x90000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_DST_ONE_MINUS_DST_COLOR 0xa0000000 +#define NV04_TEXTURED_TRIANGLE_BLEND_DST_SRC_ALPHA_SATURATE 0xb0000000 + +#define NV04_TEXTURED_TRIANGLE_CONTROL 0x00000314 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_REF__MASK 0x000000ff +#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_REF__SHIFT 0 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC__MASK 0x00000f00 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC__SHIFT 8 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_NEVER 0x00000100 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_LESS 0x00000200 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_EQUAL 0x00000300 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_LEQUAL 0x00000400 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_GREATER 0x00000500 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_NOTEQUAL 0x00000600 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_GEQUAL 0x00000700 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_FUNC_ALWAYS 0x00000800 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ALPHA_ENABLE 0x00001000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN__MASK 0x00002000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN__SHIFT 13 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN_CENTER 0x00000000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN_CORNER 0x00002000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_ENABLE 0x00004000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC__MASK 0x000f0000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC__SHIFT 16 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_NEVER 0x00010000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_LESS 0x00020000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_EQUAL 0x00030000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_LEQUAL 0x00040000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_GREATER 0x00050000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_NOTEQUAL 0x00060000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_GEQUAL 0x00070000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FUNC_ALWAYS 0x00080000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE__MASK 0x00300000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE__SHIFT 20 +#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_BOTH 0x00000000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_NONE 0x00100000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_CW 0x00200000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_CULL_MODE_CCW 0x00300000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_DITHER_ENABLE 0x00400000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_PERSPECTIVE_ENABLE 0x00800000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_WRITE 0x01000000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FORMAT__MASK 0xc0000000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FORMAT__SHIFT 30 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FORMAT_FIXED 0x40000000 +#define NV04_TEXTURED_TRIANGLE_CONTROL_Z_FORMAT_FLOAT 0x80000000 + +#define NV04_TEXTURED_TRIANGLE_FOGCOLOR 0x00000318 +#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_B__MASK 0x000000ff +#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_B__SHIFT 0 +#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_G__MASK 0x0000ff00 +#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_G__SHIFT 8 +#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_R__MASK 0x00ff0000 +#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_R__SHIFT 16 +#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_A__MASK 0xff000000 +#define NV04_TEXTURED_TRIANGLE_FOGCOLOR_A__SHIFT 24 + +#define NV04_TEXTURED_TRIANGLE_TLVERTEX(i0) (0x00000400 + 0x20*(i0)) +#define NV04_TEXTURED_TRIANGLE_TLVERTEX__ESIZE 0x00000020 +#define NV04_TEXTURED_TRIANGLE_TLVERTEX__LEN 0x00000010 + +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SX(i0) (0x00000400 + 0x20*(i0)) + +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SY(i0) (0x00000404 + 0x20*(i0)) + +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SZ(i0) (0x00000408 + 0x20*(i0)) + +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_RHW(i0) (0x0000040c + 0x20*(i0)) + +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR(i0) (0x00000410 + 0x20*(i0)) +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_B__MASK 0x000000ff +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_B__SHIFT 0 +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_G__MASK 0x0000ff00 +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_G__SHIFT 8 +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_R__MASK 0x00ff0000 +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_R__SHIFT 16 +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_A__MASK 0xff000000 +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_COLOR_A__SHIFT 24 + +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR(i0) (0x00000414 + 0x20*(i0)) +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_B__MASK 0x000000ff +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_B__SHIFT 0 +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_G__MASK 0x0000ff00 +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_G__SHIFT 8 +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_R__MASK 0x00ff0000 +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_R__SHIFT 16 +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_FOG__MASK 0xff000000 +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_SPECULAR_FOG__SHIFT 24 + +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_TU(i0) (0x00000418 + 0x20*(i0)) + +#define NV04_TEXTURED_TRIANGLE_TLVERTEX_TV(i0) (0x0000041c + 0x20*(i0)) + +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE(i0) (0x00000600 + 0x4*(i0)) +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE__ESIZE 0x00000004 +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE__LEN 0x00000040 +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I0__MASK 0x0000000f +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I0__SHIFT 0 +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I1__MASK 0x000000f0 +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I1__SHIFT 4 +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I2__MASK 0x00000f00 +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I2__SHIFT 8 +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I3__MASK 0x0000f000 +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I3__SHIFT 12 +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I4__MASK 0x000f0000 +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I4__SHIFT 16 +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I5__MASK 0x00f00000 +#define NV04_TEXTURED_TRIANGLE_DRAWPRIMITIVE_I5__SHIFT 20 + + +#define NV04_MULTITEX_TRIANGLE_DMA_NOTIFY 0x00000180 + +#define NV04_MULTITEX_TRIANGLE_DMA_A 0x00000184 + +#define NV04_MULTITEX_TRIANGLE_DMA_B 0x00000188 + +#define NV04_MULTITEX_TRIANGLE_SURFACES 0x0000018c + +#define NV04_MULTITEX_TRIANGLE_OFFSET(i0) (0x00000308 + 0x4*(i0)) +#define NV04_MULTITEX_TRIANGLE_OFFSET__ESIZE 0x00000004 +#define NV04_MULTITEX_TRIANGLE_OFFSET__LEN 0x00000002 + +#define NV04_MULTITEX_TRIANGLE_FORMAT(i0) (0x00000310 + 0x4*(i0)) +#define NV04_MULTITEX_TRIANGLE_FORMAT__ESIZE 0x00000004 +#define NV04_MULTITEX_TRIANGLE_FORMAT__LEN 0x00000002 +#define NV04_MULTITEX_TRIANGLE_FORMAT_DMA_A 0x00000001 +#define NV04_MULTITEX_TRIANGLE_FORMAT_DMA_B 0x00000002 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_ZOH__MASK 0x00000030 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_ZOH__SHIFT 4 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_ZOH_CENTER 0x00000010 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_ZOH_CORNER 0x00000020 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_FOH__MASK 0x000000c0 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_FOH__SHIFT 6 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_FOH_CENTER 0x00000040 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ORIGIN_FOH_CORNER 0x00000080 +#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR__MASK 0x00000f00 +#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR__SHIFT 8 +#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_Y8 0x00000100 +#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_A1R5G5B5 0x00000200 +#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_X1R5G5B5 0x00000300 +#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_A4R4G4B4 0x00000400 +#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_R5G6B5 0x00000500 +#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_A8R8G8B8 0x00000600 +#define NV04_MULTITEX_TRIANGLE_FORMAT_COLOR_X8R8G8B8 0x00000700 +#define NV04_MULTITEX_TRIANGLE_FORMAT_MIPMAP_LEVELS__MASK 0x0000f000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_MIPMAP_LEVELS__SHIFT 12 +#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_U__MASK 0x000f0000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_U__SHIFT 16 +#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_V__MASK 0x00f00000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_BASE_SIZE_V__SHIFT 20 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU__MASK 0x07000000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU__SHIFT 24 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU_REPEAT 0x01000000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU_MIRRORED_REPEAT 0x02000000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU_CLAMP_TO_EDGE 0x03000000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSU_CLAMP_TO_BORDER 0x04000000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_WRAPU 0x08000000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV__MASK 0x70000000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV__SHIFT 28 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV_REPEAT 0x10000000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV_MIRRORED_REPEAT 0x20000000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV_CLAMP_TO_EDGE 0x30000000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_ADDRESSV_CLAMP_TO_BORDER 0x40000000 +#define NV04_MULTITEX_TRIANGLE_FORMAT_WRAPV 0x80000000 + +#define NV04_MULTITEX_TRIANGLE_FILTER(i0) (0x00000318 + 0x4*(i0)) +#define NV04_MULTITEX_TRIANGLE_FILTER__ESIZE 0x00000004 +#define NV04_MULTITEX_TRIANGLE_FILTER__LEN 0x00000002 +#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_X__MASK 0x000000ff +#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_X__SHIFT 0 +#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_Y__MASK 0x00007f00 +#define NV04_MULTITEX_TRIANGLE_FILTER_KERNEL_SIZE_Y__SHIFT 8 +#define NV04_MULTITEX_TRIANGLE_FILTER_MIPMAP_DITHER_ENABLE 0x00008000 +#define NV04_MULTITEX_TRIANGLE_FILTER_MIPMAP_LODBIAS__MASK 0x00ff0000 +#define NV04_MULTITEX_TRIANGLE_FILTER_MIPMAP_LODBIAS__SHIFT 16 +#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY__MASK 0x07000000 +#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY__SHIFT 24 +#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_NEAREST 0x01000000 +#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_LINEAR 0x02000000 +#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_NEAREST_MIPMAP_NEAREST 0x03000000 +#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_LINEAR_MIPMAP_NEAREST 0x04000000 +#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_NEAREST_MIPMAP_LINEAR 0x05000000 +#define NV04_MULTITEX_TRIANGLE_FILTER_MINIFY_LINEAR_MIPMAP_LINEAR 0x06000000 +#define NV04_MULTITEX_TRIANGLE_FILTER_ANISOTROPIC_MINIFY_ENABLE 0x08000000 +#define NV04_MULTITEX_TRIANGLE_FILTER_MAGNIFY__MASK 0x70000000 +#define NV04_MULTITEX_TRIANGLE_FILTER_MAGNIFY__SHIFT 28 +#define NV04_MULTITEX_TRIANGLE_FILTER_MAGNIFY_NEAREST 0x10000000 +#define NV04_MULTITEX_TRIANGLE_FILTER_MAGNIFY_LINEAR 0x20000000 +#define NV04_MULTITEX_TRIANGLE_FILTER_ANISOTROPIC_MAGNIFY_ENABLE 0x80000000 + +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA(i0) (0x00000320 + 0xc*(i0)) +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA__ESIZE 0x0000000c +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA__LEN 0x00000002 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE0 0x00000001 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0__MASK 0x000000fc +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0__SHIFT 2 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_ZERO 0x00000004 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_CONSTANT 0x00000008 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_PRIMARY_COLOR 0x0000000c +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_PREVIOUS 0x00000010 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_TEXTURE0 0x00000014 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_TEXTURE1 0x00000018 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT0_TEXTURELOD 0x0000001c +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE1 0x00000100 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1__MASK 0x0000fc00 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1__SHIFT 10 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_ZERO 0x00000400 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_CONSTANT 0x00000800 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_PRIMARY_COLOR 0x00000c00 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_PREVIOUS 0x00001000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_TEXTURE0 0x00001400 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_TEXTURE1 0x00001800 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT1_TEXTURELOD 0x00001c00 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE2 0x00010000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2__MASK 0x00fc0000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2__SHIFT 18 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_ZERO 0x00040000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_CONSTANT 0x00080000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_PRIMARY_COLOR 0x000c0000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_PREVIOUS 0x00100000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_TEXTURE0 0x00140000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_TEXTURE1 0x00180000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT2_TEXTURELOD 0x001c0000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_INVERSE3 0x01000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3__MASK 0x1c000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3__SHIFT 26 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_ZERO 0x04000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_CONSTANT 0x08000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_PRIMARY_COLOR 0x0c000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_PREVIOUS 0x10000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_TEXTURE0 0x14000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_TEXTURE1 0x18000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_ARGUMENT3_TEXTURELOD 0x1c000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP__MASK 0xe0000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP__SHIFT 29 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_IDENTITY 0x20000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_SCALE2 0x40000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_SCALE4 0x60000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_BIAS 0x80000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_ALPHA_MAP_BIAS_SCALE2 0xe0000000 + +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR(i0) (0x00000324 + 0xc*(i0)) +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR__ESIZE 0x0000000c +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR__LEN 0x00000002 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE0 0x00000001 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA0 0x00000002 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0__MASK 0x000000fc +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0__SHIFT 2 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_ZERO 0x00000004 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_CONSTANT 0x00000008 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_PRIMARY_COLOR 0x0000000c +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_PREVIOUS 0x00000010 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_TEXTURE0 0x00000014 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_TEXTURE1 0x00000018 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_TEXTURELOD 0x0000001c +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE1 0x00000100 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA1 0x00000200 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1__MASK 0x0000fc00 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1__SHIFT 10 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_ZERO 0x00000400 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_CONSTANT 0x00000800 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_PRIMARY_COLOR 0x00000c00 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_PREVIOUS 0x00001000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_TEXTURE0 0x00001400 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_TEXTURE1 0x00001800 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT1_TEXTURELOD 0x00001c00 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE2 0x00010000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA2 0x00020000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2__MASK 0x00fc0000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2__SHIFT 18 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_ZERO 0x00040000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_CONSTANT 0x00080000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_PRIMARY_COLOR 0x000c0000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_PREVIOUS 0x00100000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_TEXTURE0 0x00140000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_TEXTURE1 0x00180000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT2_TEXTURELOD 0x001c0000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_INVERSE3 0x01000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ALPHA3 0x02000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3__MASK 0x1c000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3__SHIFT 26 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_ZERO 0x04000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_CONSTANT 0x08000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_PRIMARY_COLOR 0x0c000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_PREVIOUS 0x10000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_TEXTURE0 0x14000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_TEXTURE1 0x18000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT3_TEXTURELOD 0x1c000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP__MASK 0xe0000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP__SHIFT 29 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_IDENTITY 0x20000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_SCALE2 0x40000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_SCALE4 0x60000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_BIAS 0x80000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_MAP_BIAS_SCALE2 0xe0000000 + +#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR 0x00000334 +#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_B__MASK 0x000000ff +#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_B__SHIFT 0 +#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_G__MASK 0x0000ff00 +#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_G__SHIFT 8 +#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_R__MASK 0x00ff0000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_R__SHIFT 16 +#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_A__MASK 0xff000000 +#define NV04_MULTITEX_TRIANGLE_COMBINE_FACTOR_A__SHIFT 24 + +#define NV04_MULTITEX_TRIANGLE_BLEND 0x00000338 +#define NV04_MULTITEX_TRIANGLE_BLEND_MASK_BIT__MASK 0x00000030 +#define NV04_MULTITEX_TRIANGLE_BLEND_MASK_BIT__SHIFT 4 +#define NV04_MULTITEX_TRIANGLE_BLEND_MASK_BIT_LSB 0x00000010 +#define NV04_MULTITEX_TRIANGLE_BLEND_MASK_BIT_MSB 0x00000020 +#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE__MASK 0x000000c0 +#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE__SHIFT 6 +#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_FLAT 0x00000040 +#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_GOURAUD 0x00000080 +#define NV04_MULTITEX_TRIANGLE_BLEND_SHADE_MODE_PHONG 0x000000c0 +#define NV04_MULTITEX_TRIANGLE_BLEND_TEXTURE_PERSPECTIVE_ENABLE 0x00000100 +#define NV04_MULTITEX_TRIANGLE_BLEND_SPECULAR_ENABLE 0x00001000 +#define NV04_MULTITEX_TRIANGLE_BLEND_FOG_ENABLE 0x00010000 +#define NV04_MULTITEX_TRIANGLE_BLEND_BLEND_ENABLE 0x00100000 +#define NV04_MULTITEX_TRIANGLE_BLEND_SRC__MASK 0x0f000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_SRC__SHIFT 24 +#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_ZERO 0x01000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_ONE 0x02000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_SRC_COLOR 0x03000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_ONE_MINUS_SRC_COLOR 0x04000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_SRC_ALPHA 0x05000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_ONE_MINUS_SRC_ALPHA 0x06000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_DST_ALPHA 0x07000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_ONE_MINUS_DST_ALPHA 0x08000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_DST_COLOR 0x09000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_ONE_MINUS_DST_COLOR 0x0a000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_SRC_SRC_ALPHA_SATURATE 0x0b000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_DST__MASK 0xf0000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_DST__SHIFT 28 +#define NV04_MULTITEX_TRIANGLE_BLEND_DST_ZERO 0x10000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_DST_ONE 0x20000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_DST_SRC_COLOR 0x30000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_DST_ONE_MINUS_SRC_COLOR 0x40000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_DST_SRC_ALPHA 0x50000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_DST_ONE_MINUS_SRC_ALPHA 0x60000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_DST_DST_ALPHA 0x70000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_DST_ONE_MINUS_DST_ALPHA 0x80000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_DST_DST_COLOR 0x90000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_DST_ONE_MINUS_DST_COLOR 0xa0000000 +#define NV04_MULTITEX_TRIANGLE_BLEND_DST_SRC_ALPHA_SATURATE 0xb0000000 + +#define NV04_MULTITEX_TRIANGLE_CONTROL0 0x0000033c +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_REF__MASK 0x000000ff +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_REF__SHIFT 0 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC__MASK 0x00000f00 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC__SHIFT 8 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_NEVER 0x00000100 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_LESS 0x00000200 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_EQUAL 0x00000300 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_LEQUAL 0x00000400 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_GREATER 0x00000500 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_NOTEQUAL 0x00000600 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_GEQUAL 0x00000700 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_FUNC_ALWAYS 0x00000800 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_ENABLE 0x00001000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN__MASK 0x00002000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN__SHIFT 13 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN_CENTER 0x00000000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN_CORNER 0x00002000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_ENABLE 0x00004000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC__MASK 0x000f0000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC__SHIFT 16 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_NEVER 0x00010000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_LESS 0x00020000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_EQUAL 0x00030000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_LEQUAL 0x00040000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_GREATER 0x00050000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_NOTEQUAL 0x00060000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_GEQUAL 0x00070000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FUNC_ALWAYS 0x00080000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE__MASK 0x00300000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE__SHIFT 20 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_BOTH 0x00000000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_NONE 0x00100000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_CW 0x00200000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_CULL_MODE_CCW 0x00300000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_DITHER_ENABLE 0x00400000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_PERSPECTIVE_ENABLE 0x00800000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_WRITE 0x01000000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_STENCIL_WRITE 0x02000000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_ALPHA_WRITE 0x04000000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_RED_WRITE 0x08000000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_GREEN_WRITE 0x10000000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_BLUE_WRITE 0x20000000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FORMAT__MASK 0xc0000000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FORMAT__SHIFT 30 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FORMAT_FIXED 0x40000000 +#define NV04_MULTITEX_TRIANGLE_CONTROL0_Z_FORMAT_FLOAT 0x80000000 + +#define NV04_MULTITEX_TRIANGLE_CONTROL1 0x00000340 +#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_ENABLE 0x00000001 +#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_FUNC__MASK 0x000000f0 +#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_FUNC__SHIFT 4 +#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_REF__MASK 0x0000ff00 +#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_REF__SHIFT 8 +#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_READ__MASK 0x00ff0000 +#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_READ__SHIFT 16 +#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_WRITE__MASK 0xff000000 +#define NV04_MULTITEX_TRIANGLE_CONTROL1_STENCIL_MASK_WRITE__SHIFT 24 + +#define NV04_MULTITEX_TRIANGLE_CONTROL2 0x00000344 +#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_FAIL__MASK 0x0000000f +#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_FAIL__SHIFT 0 +#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZFAIL__MASK 0x000000f0 +#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZFAIL__SHIFT 4 +#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZPASS__MASK 0x00000f00 +#define NV04_MULTITEX_TRIANGLE_CONTROL2_STENCIL_OP_ZPASS__SHIFT 8 + +#define NV04_MULTITEX_TRIANGLE_FOGCOLOR 0x00000348 +#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_B__MASK 0x000000ff +#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_B__SHIFT 0 +#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_G__MASK 0x0000ff00 +#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_G__SHIFT 8 +#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_R__MASK 0x00ff0000 +#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_R__SHIFT 16 +#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_A__MASK 0xff000000 +#define NV04_MULTITEX_TRIANGLE_FOGCOLOR_A__SHIFT 24 + +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX(i0) (0x00000400 + 0x28*(i0)) +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX__ESIZE 0x00000028 +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX__LEN 0x00000008 + +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SX(i0) (0x00000400 + 0x28*(i0)) + +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SY(i0) (0x00000404 + 0x28*(i0)) + +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SZ(i0) (0x00000408 + 0x28*(i0)) + +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_RHW(i0) (0x0000040c + 0x28*(i0)) + +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR(i0) (0x00000410 + 0x28*(i0)) +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_B__MASK 0x000000ff +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_B__SHIFT 0 +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_G__MASK 0x0000ff00 +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_G__SHIFT 8 +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_R__MASK 0x00ff0000 +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_R__SHIFT 16 +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_A__MASK 0xff000000 +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_COLOR_A__SHIFT 24 + +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR(i0) (0x00000414 + 0x28*(i0)) +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_B__MASK 0x000000ff +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_B__SHIFT 0 +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_G__MASK 0x0000ff00 +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_G__SHIFT 8 +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_R__MASK 0x00ff0000 +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_R__SHIFT 16 +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_FOG__MASK 0xff000000 +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_SPECULAR_FOG__SHIFT 24 + +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TU0(i0) (0x00000418 + 0x28*(i0)) + +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TV0(i0) (0x0000041c + 0x28*(i0)) + +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TU1(i0) (0x00000420 + 0x28*(i0)) + +#define NV04_MULTITEX_TRIANGLE_TLMTVERTEX_TV1(i0) (0x00000424 + 0x28*(i0)) + +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE(i0) (0x00000540 + 0x4*(i0)) +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE__ESIZE 0x00000004 +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE__LEN 0x00000030 +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I0__MASK 0x0000000f +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I0__SHIFT 0 +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I1__MASK 0x000000f0 +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I1__SHIFT 4 +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I2__MASK 0x00000f00 +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I2__SHIFT 8 +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I3__MASK 0x0000f000 +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I3__SHIFT 12 +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I4__MASK 0x000f0000 +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I4__SHIFT 16 +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I5__MASK 0x00f00000 +#define NV04_MULTITEX_TRIANGLE_DRAWPRIMITIVE_I5__SHIFT 20 + + +#endif /* NV04_3D_XML */ diff --git a/src/mesa/drivers/dri/nouveau/nv04_context.c b/src/mesa/drivers/dri/nouveau/nv04_context.c index 8683343b393..3140af56fdd 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_context.c +++ b/src/mesa/drivers/dri/nouveau/nv04_context.c @@ -28,7 +28,7 @@ #include "nouveau_context.h" #include "nouveau_fbo.h" #include "nouveau_util.h" -#include "nouveau_class.h" +#include "nv04_3d.xml.h" #include "nv04_driver.h" static GLboolean diff --git a/src/mesa/drivers/dri/nouveau/nv04_context.h b/src/mesa/drivers/dri/nouveau/nv04_context.h index 45e70d2bc3c..960a6550dce 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_context.h +++ b/src/mesa/drivers/dri/nouveau/nv04_context.h @@ -28,6 +28,7 @@ #define __NV04_CONTEXT_H__ #include "nouveau_context.h" +#include "nv_object.xml.h" struct nv04_context { struct nouveau_context base; diff --git a/src/mesa/drivers/dri/nouveau/nv04_render.c b/src/mesa/drivers/dri/nouveau/nv04_render.c index 47bad24f9d9..ad45093edd1 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_render.c +++ b/src/mesa/drivers/dri/nouveau/nv04_render.c @@ -27,7 +27,7 @@ #include "nouveau_driver.h" #include "nouveau_context.h" #include "nouveau_util.h" -#include "nouveau_class.h" +#include "nv04_3d.xml.h" #include "nv04_driver.h" #include "tnl/tnl.h" diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_fb.c b/src/mesa/drivers/dri/nouveau/nv04_state_fb.c index a3e343660f8..854571d07e0 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_state_fb.c +++ b/src/mesa/drivers/dri/nouveau/nv04_state_fb.c @@ -28,7 +28,7 @@ #include "nouveau_context.h" #include "nouveau_fbo.h" #include "nouveau_util.h" -#include "nouveau_class.h" +#include "nv04_3d.xml.h" #include "nv04_driver.h" static inline unsigned @@ -36,11 +36,11 @@ get_rt_format(gl_format format) { switch (format) { case MESA_FORMAT_XRGB8888: - return 0x05; + return NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_X8R8G8B8_X8R8G8B8; case MESA_FORMAT_ARGB8888: - return 0x08; + return NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_A8R8G8B8; case MESA_FORMAT_RGB565: - return 0x03; + return NV04_CONTEXT_SURFACES_3D_FORMAT_COLOR_R5G6B5; default: assert(0); } diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_frag.c b/src/mesa/drivers/dri/nouveau/nv04_state_frag.c index 658b23a4d91..21478de262d 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_state_frag.c +++ b/src/mesa/drivers/dri/nouveau/nv04_state_frag.c @@ -27,12 +27,13 @@ #include "nouveau_driver.h" #include "nouveau_context.h" #include "nouveau_util.h" -#include "nouveau_class.h" +#include "nv_object.xml.h" +#include "nv04_3d.xml.h" #include "nv04_driver.h" #define COMBINER_SHIFT(in) \ - (NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT##in##_SHIFT \ - - NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_SHIFT) + (NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT##in##__SHIFT \ + - NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0__SHIFT) #define COMBINER_SOURCE(reg) \ NV04_MULTITEX_TRIANGLE_COMBINE_COLOR_ARGUMENT0_##reg #define COMBINER_INVERT \ diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_raster.c b/src/mesa/drivers/dri/nouveau/nv04_state_raster.c index a114f44b22b..98f2f98f1d0 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_state_raster.c +++ b/src/mesa/drivers/dri/nouveau/nv04_state_raster.c @@ -27,7 +27,8 @@ #include "nouveau_driver.h" #include "nouveau_context.h" #include "nouveau_util.h" -#include "nouveau_class.h" +#include "nv_object.xml.h" +#include "nv04_3d.xml.h" #include "nv04_driver.h" static unsigned @@ -142,7 +143,7 @@ nv04_emit_control(struct gl_context *ctx, int emit) int cull_mode = ctx->Polygon.CullFaceMode; int front_face = ctx->Polygon.FrontFace; uint32_t ctrl0 = 1 << 30 | - NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN; + NV04_MULTITEX_TRIANGLE_CONTROL0_ORIGIN_CORNER; uint32_t ctrl1 = 0, ctrl2 = 0; /* Color mask. */ @@ -210,7 +211,7 @@ nv04_emit_control(struct gl_context *ctx, int emit) int cull_mode = ctx->Polygon.CullFaceMode; int front_face = ctx->Polygon.FrontFace; uint32_t ctrl = 1 << 30 | - NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN; + NV04_TEXTURED_TRIANGLE_CONTROL_ORIGIN_CORNER; /* Dithering. */ if (ctx->Color.DitherFlag) diff --git a/src/mesa/drivers/dri/nouveau/nv04_state_tex.c b/src/mesa/drivers/dri/nouveau/nv04_state_tex.c index 1fe47a30e45..5ed8b147559 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_state_tex.c +++ b/src/mesa/drivers/dri/nouveau/nv04_state_tex.c @@ -29,7 +29,8 @@ #include "nouveau_texture.h" #include "nouveau_util.h" #include "nouveau_gldefs.h" -#include "nouveau_class.h" +#include "nv_object.xml.h" +#include "nv04_3d.xml.h" #include "nv04_driver.h" static uint32_t diff --git a/src/mesa/drivers/dri/nouveau/nv04_surface.c b/src/mesa/drivers/dri/nouveau/nv04_surface.c index 6d3ffa26d3d..c1eda8b7f37 100644 --- a/src/mesa/drivers/dri/nouveau/nv04_surface.c +++ b/src/mesa/drivers/dri/nouveau/nv04_surface.c @@ -25,7 +25,10 @@ */ #include "nouveau_driver.h" -#include "nouveau_class.h" +#include "nv_object.xml.h" +#include "nv_m2mf.xml.h" +#include "nv01_2d.xml.h" +#include "nv04_3d.xml.h" #include "nouveau_context.h" #include "nouveau_util.h" #include "nv04_driver.h" @@ -283,9 +286,9 @@ nv04_surface_copy_m2mf(struct gl_context *ctx, unsigned dst_offset = dst->offset + dy * dst->pitch + dx * dst->cpp; unsigned src_offset = src->offset + sy * src->pitch + sx * src->cpp; - nouveau_bo_marko(bctx, m2mf, NV04_MEMORY_TO_MEMORY_FORMAT_DMA_BUFFER_IN, + nouveau_bo_marko(bctx, m2mf, NV04_M2MF_DMA_BUFFER_IN, src->bo, bo_flags | NOUVEAU_BO_RD); - nouveau_bo_marko(bctx, m2mf, NV04_MEMORY_TO_MEMORY_FORMAT_DMA_BUFFER_OUT, + nouveau_bo_marko(bctx, m2mf, NV04_M2MF_DMA_BUFFER_OUT, dst->bo, bo_flags | NOUVEAU_BO_WR); while (h) { @@ -293,7 +296,7 @@ nv04_surface_copy_m2mf(struct gl_context *ctx, MARK_RING(chan, 9, 2); - BEGIN_RING(chan, m2mf, NV04_MEMORY_TO_MEMORY_FORMAT_OFFSET_IN, 8); + BEGIN_RING(chan, m2mf, NV04_M2MF_OFFSET_IN, 8); OUT_RELOCl(chan, src->bo, src_offset, bo_flags | NOUVEAU_BO_RD); OUT_RELOCl(chan, dst->bo, dst_offset, @@ -488,12 +491,11 @@ nv04_surface_init(struct gl_context *ctx) goto fail; /* Memory to memory format. */ - ret = nouveau_grobj_alloc(chan, handle++, NV04_MEMORY_TO_MEMORY_FORMAT, - &hw->m2mf); + ret = nouveau_grobj_alloc(chan, handle++, NV04_M2MF, &hw->m2mf); if (ret) goto fail; - BEGIN_RING(chan, hw->m2mf, NV04_MEMORY_TO_MEMORY_FORMAT_DMA_NOTIFY, 1); + BEGIN_RING(chan, hw->m2mf, NV04_M2MF_DMA_NOTIFY, 1); OUT_RING (chan, hw->ntfy->handle); /* Context surfaces 2D. */ diff --git a/src/mesa/drivers/dri/nouveau/nv10_3d.xml.h b/src/mesa/drivers/dri/nouveau/nv10_3d.xml.h new file mode 100644 index 00000000000..cdc61f45733 --- /dev/null +++ b/src/mesa/drivers/dri/nouveau/nv10_3d.xml.h @@ -0,0 +1,1619 @@ +#ifndef NV10_3D_XML +#define NV10_3D_XML + +/* Autogenerated file, DO NOT EDIT manually! + +This file was generated by the rules-ng-ng headergen tool in this git repository: +http://0x04.net/cgit/index.cgi/rules-ng-ng +git clone git://0x04.net/rules-ng-ng + +The rules-ng-ng source files this header was generated from are: +- nv10_3d.xml ( 18437 bytes, from 2010-11-15 15:30:21) +- copyright.xml ( 6452 bytes, from 2010-11-15 15:10:58) +- nv_defs.xml ( 4437 bytes, from 2010-11-01 00:28:46) +- nv_3ddefs.xml ( 16394 bytes, from 2010-11-01 00:28:46) +- nv_object.xml ( 11547 bytes, from 2010-11-13 23:32:57) +- nvchipsets.xml ( 3074 bytes, from 2010-11-13 23:32:57) + +Copyright (C) 2006-2010 by the following authors: +- Artur Huillet <[email protected]> (ahuillet) +- Ben Skeggs (darktama, darktama_) +- B. R. <[email protected]> (koala_br) +- Carlos Martin <[email protected]> (carlosmn) +- Christoph Bumiller <[email protected]> (calim, chrisbmr) +- Dawid Gajownik <[email protected]> (gajownik) +- Dmitry Baryshkov +- Dmitry Eremin-Solenikov <[email protected]> (lumag) +- EdB <[email protected]> (edb_) +- Erik Waling <[email protected]> (erikwaling) +- Francisco Jerez <[email protected]> (curro) +- imirkin <[email protected]> (imirkin) +- jb17bsome <[email protected]> (jb17bsome) +- Jeremy Kolb <[email protected]> (kjeremy) +- Laurent Carlier <[email protected]> (lordheavy) +- Luca Barbieri <[email protected]> (lb, lb1) +- Maarten Maathuis <[email protected]> (stillunknown) +- Marcin KoÅ›cielnicki <[email protected]> (mwk, koriakin) +- Mark Carey <[email protected]> (careym) +- Matthieu Castet <[email protected]> (mat-c) +- nvidiaman <[email protected]> (nvidiaman) +- Patrice Mandin <[email protected]> (pmandin, pmdata) +- Pekka Paalanen <[email protected]> (pq, ppaalanen) +- Peter Popov <[email protected]> (ironpeter) +- Richard Hughes <[email protected]> (hughsient) +- Rudi Cilibrasi <[email protected]> (cilibrar) +- Serge Martin +- Simon Raffeiner +- Stephane Loeuillet <[email protected]> (leroutier) +- Stephane Marchesin <[email protected]> (marcheu) +- sturmflut <[email protected]> (sturmflut) +- Sylvain Munaut <[email protected]> +- Victor Stinner <[email protected]> (haypo) +- Wladmir van der Laan <[email protected]> (miathan6) +- Younes Manton <[email protected]> (ymanton) + +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. +*/ + + +#define NV10_VERTEX_ATTR_POS 0x00000000 +#define NV10_VERTEX_ATTR_COLOR0 0x00000001 +#define NV10_VERTEX_ATTR_COLOR1 0x00000002 +#define NV10_VERTEX_ATTR_TEX0 0x00000003 +#define NV10_VERTEX_ATTR_TEX1 0x00000004 +#define NV10_VERTEX_ATTR_NORMAL 0x00000005 +#define NV10_VERTEX_ATTR_WEIGHT 0x00000006 +#define NV10_VERTEX_ATTR_FOG 0x00000007 + + + +#define NV11_3D_FLIP_SET_READ 0x00000120 + +#define NV11_3D_FLIP_SET_WRITE 0x00000124 + +#define NV11_3D_FLIP_MAX 0x00000128 + +#define NV11_3D_FLIP_INCR_WRITE 0x0000012c + +#define NV11_3D_FLIP_WAIT 0x00000130 + +#define NV10_3D_DMA_NOTIFY 0x00000180 + +#define NV10_3D_DMA_TEXTURE0 0x00000184 + +#define NV10_3D_DMA_TEXTURE1 0x00000188 + +#define NV10_3D_DMA_COLOR 0x00000194 + +#define NV10_3D_DMA_ZETA 0x00000198 + +#define NV10_3D_RT_HORIZ 0x00000200 +#define NV10_3D_RT_HORIZ_X__MASK 0x0000ffff +#define NV10_3D_RT_HORIZ_X__SHIFT 0 +#define NV10_3D_RT_HORIZ_W__MASK 0xffff0000 +#define NV10_3D_RT_HORIZ_W__SHIFT 16 + +#define NV10_3D_RT_VERT 0x00000204 +#define NV10_3D_RT_VERT_Y__MASK 0x0000ffff +#define NV10_3D_RT_VERT_Y__SHIFT 0 +#define NV10_3D_RT_VERT_H__MASK 0xffff0000 +#define NV10_3D_RT_VERT_H__SHIFT 16 + +#define NV10_3D_RT_FORMAT 0x00000208 +#define NV10_3D_RT_FORMAT_TYPE__MASK 0x00000f00 +#define NV10_3D_RT_FORMAT_TYPE__SHIFT 8 +#define NV10_3D_RT_FORMAT_TYPE_LINEAR 0x00000100 +#define NV10_3D_RT_FORMAT_TYPE_SWIZZLED 0x00000200 +#define NV10_3D_RT_FORMAT_DEPTH__MASK 0x00000030 +#define NV10_3D_RT_FORMAT_DEPTH__SHIFT 4 +#define NV10_3D_RT_FORMAT_DEPTH_Z24S8 0x00000000 +#define NV10_3D_RT_FORMAT_DEPTH_Z16 0x00000010 +#define NV10_3D_RT_FORMAT_COLOR__MASK 0x0000000f +#define NV10_3D_RT_FORMAT_COLOR__SHIFT 0 +#define NV10_3D_RT_FORMAT_COLOR_R5G6B5 0x00000003 +#define NV10_3D_RT_FORMAT_COLOR_X8R8G8B8 0x00000005 +#define NV10_3D_RT_FORMAT_COLOR_A8R8G8B8 0x00000008 +#define NV10_3D_RT_FORMAT_COLOR_B8 0x00000009 + +#define NV10_3D_RT_PITCH 0x0000020c +#define NV10_3D_RT_PITCH_COLOR_PITCH__MASK 0x0000ffff +#define NV10_3D_RT_PITCH_COLOR_PITCH__SHIFT 0 +#define NV10_3D_RT_PITCH_ZETA_PITCH__MASK 0xffff0000 +#define NV10_3D_RT_PITCH_ZETA_PITCH__SHIFT 16 + +#define NV10_3D_COLOR_OFFSET 0x00000210 + +#define NV10_3D_ZETA_OFFSET 0x00000214 + +#define NV10_3D_UNK0290 0x00000290 + +#define NV10_3D_VIEWPORT_CLIP_MODE 0x000002b4 + +#define NV10_3D_VIEWPORT_CLIP_HORIZ(i0) (0x000002c0 + 0x4*(i0)) +#define NV10_3D_VIEWPORT_CLIP_HORIZ__ESIZE 0x00000004 +#define NV10_3D_VIEWPORT_CLIP_HORIZ__LEN 0x00000008 +#define NV10_3D_VIEWPORT_CLIP_HORIZ_CLIP_L__MASK 0x000007ff +#define NV10_3D_VIEWPORT_CLIP_HORIZ_CLIP_L__SHIFT 0 +#define NV10_3D_VIEWPORT_CLIP_HORIZ_CLIP_LEFT_ENABLE 0x00000800 +#define NV10_3D_VIEWPORT_CLIP_HORIZ_CLIP_R__MASK 0x07ff0000 +#define NV10_3D_VIEWPORT_CLIP_HORIZ_CLIP_R__SHIFT 16 +#define NV10_3D_VIEWPORT_CLIP_HORIZ_CLIP_RIGHT_ENABLE 0x08000000 + +#define NV10_3D_VIEWPORT_CLIP_VERT(i0) (0x000002e0 + 0x4*(i0)) +#define NV10_3D_VIEWPORT_CLIP_VERT__ESIZE 0x00000004 +#define NV10_3D_VIEWPORT_CLIP_VERT__LEN 0x00000008 +#define NV10_3D_VIEWPORT_CLIP_VERT_CLIP_T__MASK 0x000007ff +#define NV10_3D_VIEWPORT_CLIP_VERT_CLIP_T__SHIFT 0 +#define NV10_3D_VIEWPORT_CLIP_VERT_CLIP_TOP_ENABLE 0x00000800 +#define NV10_3D_VIEWPORT_CLIP_VERT_CLIP_B__MASK 0x07ff0000 +#define NV10_3D_VIEWPORT_CLIP_VERT_CLIP_B__SHIFT 16 +#define NV10_3D_VIEWPORT_CLIP_VERT_CLIP_BOTTOM_ENABLE 0x08000000 + +#define NV10_3D_ALPHA_FUNC_ENABLE 0x00000300 + +#define NV10_3D_BLEND_FUNC_ENABLE 0x00000304 + +#define NV10_3D_CULL_FACE_ENABLE 0x00000308 + +#define NV10_3D_DEPTH_TEST_ENABLE 0x0000030c + +#define NV10_3D_DITHER_ENABLE 0x00000310 + +#define NV10_3D_LIGHTING_ENABLE 0x00000314 + +#define NV10_3D_POINT_PARAMETERS_ENABLE 0x00000318 + +#define NV10_3D_POINT_SMOOTH_ENABLE 0x0000031c + +#define NV10_3D_LINE_SMOOTH_ENABLE 0x00000320 + +#define NV10_3D_POLYGON_SMOOTH_ENABLE 0x00000324 + +#define NV10_3D_STENCIL_ENABLE 0x0000032c + +#define NV10_3D_POLYGON_OFFSET_POINT_ENABLE 0x00000330 + +#define NV10_3D_POLYGON_OFFSET_LINE_ENABLE 0x00000334 + +#define NV10_3D_POLYGON_OFFSET_FILL_ENABLE 0x00000338 + +#define NV10_3D_ALPHA_FUNC_FUNC 0x0000033c +#define NV10_3D_ALPHA_FUNC_FUNC_NEVER 0x00000200 +#define NV10_3D_ALPHA_FUNC_FUNC_LESS 0x00000201 +#define NV10_3D_ALPHA_FUNC_FUNC_EQUAL 0x00000202 +#define NV10_3D_ALPHA_FUNC_FUNC_LEQUAL 0x00000203 +#define NV10_3D_ALPHA_FUNC_FUNC_GREATER 0x00000204 +#define NV10_3D_ALPHA_FUNC_FUNC_NOTEQUAL 0x00000205 +#define NV10_3D_ALPHA_FUNC_FUNC_GEQUAL 0x00000206 +#define NV10_3D_ALPHA_FUNC_FUNC_ALWAYS 0x00000207 + +#define NV10_3D_ALPHA_FUNC_REF 0x00000340 + +#define NV10_3D_BLEND_FUNC_SRC 0x00000344 +#define NV10_3D_BLEND_FUNC_SRC_ZERO 0x00000000 +#define NV10_3D_BLEND_FUNC_SRC_ONE 0x00000001 +#define NV10_3D_BLEND_FUNC_SRC_SRC_COLOR 0x00000300 +#define NV10_3D_BLEND_FUNC_SRC_ONE_MINUS_SRC_COLOR 0x00000301 +#define NV10_3D_BLEND_FUNC_SRC_SRC_ALPHA 0x00000302 +#define NV10_3D_BLEND_FUNC_SRC_ONE_MINUS_SRC_ALPHA 0x00000303 +#define NV10_3D_BLEND_FUNC_SRC_DST_ALPHA 0x00000304 +#define NV10_3D_BLEND_FUNC_SRC_ONE_MINUS_DST_ALPHA 0x00000305 +#define NV10_3D_BLEND_FUNC_SRC_DST_COLOR 0x00000306 +#define NV10_3D_BLEND_FUNC_SRC_ONE_MINUS_DST_COLOR 0x00000307 +#define NV10_3D_BLEND_FUNC_SRC_SRC_ALPHA_SATURATE 0x00000308 +#define NV10_3D_BLEND_FUNC_SRC_CONSTANT_COLOR 0x00008001 +#define NV10_3D_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_COLOR 0x00008002 +#define NV10_3D_BLEND_FUNC_SRC_CONSTANT_ALPHA 0x00008003 +#define NV10_3D_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_ALPHA 0x00008004 + +#define NV10_3D_BLEND_FUNC_DST 0x00000348 +#define NV10_3D_BLEND_FUNC_DST_ZERO 0x00000000 +#define NV10_3D_BLEND_FUNC_DST_ONE 0x00000001 +#define NV10_3D_BLEND_FUNC_DST_SRC_COLOR 0x00000300 +#define NV10_3D_BLEND_FUNC_DST_ONE_MINUS_SRC_COLOR 0x00000301 +#define NV10_3D_BLEND_FUNC_DST_SRC_ALPHA 0x00000302 +#define NV10_3D_BLEND_FUNC_DST_ONE_MINUS_SRC_ALPHA 0x00000303 +#define NV10_3D_BLEND_FUNC_DST_DST_ALPHA 0x00000304 +#define NV10_3D_BLEND_FUNC_DST_ONE_MINUS_DST_ALPHA 0x00000305 +#define NV10_3D_BLEND_FUNC_DST_DST_COLOR 0x00000306 +#define NV10_3D_BLEND_FUNC_DST_ONE_MINUS_DST_COLOR 0x00000307 +#define NV10_3D_BLEND_FUNC_DST_SRC_ALPHA_SATURATE 0x00000308 +#define NV10_3D_BLEND_FUNC_DST_CONSTANT_COLOR 0x00008001 +#define NV10_3D_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_COLOR 0x00008002 +#define NV10_3D_BLEND_FUNC_DST_CONSTANT_ALPHA 0x00008003 +#define NV10_3D_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_ALPHA 0x00008004 + +#define NV10_3D_BLEND_COLOR 0x0000034c +#define NV10_3D_BLEND_COLOR_B__MASK 0x000000ff +#define NV10_3D_BLEND_COLOR_B__SHIFT 0 +#define NV10_3D_BLEND_COLOR_G__MASK 0x0000ff00 +#define NV10_3D_BLEND_COLOR_G__SHIFT 8 +#define NV10_3D_BLEND_COLOR_R__MASK 0x00ff0000 +#define NV10_3D_BLEND_COLOR_R__SHIFT 16 +#define NV10_3D_BLEND_COLOR_A__MASK 0xff000000 +#define NV10_3D_BLEND_COLOR_A__SHIFT 24 + +#define NV10_3D_BLEND_EQUATION 0x00000350 +#define NV10_3D_BLEND_EQUATION_FUNC_ADD 0x00008006 +#define NV10_3D_BLEND_EQUATION_MIN 0x00008007 +#define NV10_3D_BLEND_EQUATION_MAX 0x00008008 +#define NV10_3D_BLEND_EQUATION_FUNC_SUBTRACT 0x0000800a +#define NV10_3D_BLEND_EQUATION_FUNC_REVERSE_SUBTRACT 0x0000800b + +#define NV10_3D_DEPTH_FUNC 0x00000354 +#define NV10_3D_DEPTH_FUNC_NEVER 0x00000200 +#define NV10_3D_DEPTH_FUNC_LESS 0x00000201 +#define NV10_3D_DEPTH_FUNC_EQUAL 0x00000202 +#define NV10_3D_DEPTH_FUNC_LEQUAL 0x00000203 +#define NV10_3D_DEPTH_FUNC_GREATER 0x00000204 +#define NV10_3D_DEPTH_FUNC_NOTEQUAL 0x00000205 +#define NV10_3D_DEPTH_FUNC_GEQUAL 0x00000206 +#define NV10_3D_DEPTH_FUNC_ALWAYS 0x00000207 + +#define NV10_3D_COLOR_MASK 0x00000358 +#define NV10_3D_COLOR_MASK_B 0x00000001 +#define NV10_3D_COLOR_MASK_G 0x00000100 +#define NV10_3D_COLOR_MASK_R 0x00010000 +#define NV10_3D_COLOR_MASK_A 0x01000000 + +#define NV10_3D_DEPTH_WRITE_ENABLE 0x0000035c + +#define NV10_3D_STENCIL_MASK 0x00000360 + +#define NV10_3D_STENCIL_FUNC_FUNC 0x00000364 +#define NV10_3D_STENCIL_FUNC_FUNC_NEVER 0x00000200 +#define NV10_3D_STENCIL_FUNC_FUNC_LESS 0x00000201 +#define NV10_3D_STENCIL_FUNC_FUNC_EQUAL 0x00000202 +#define NV10_3D_STENCIL_FUNC_FUNC_LEQUAL 0x00000203 +#define NV10_3D_STENCIL_FUNC_FUNC_GREATER 0x00000204 +#define NV10_3D_STENCIL_FUNC_FUNC_NOTEQUAL 0x00000205 +#define NV10_3D_STENCIL_FUNC_FUNC_GEQUAL 0x00000206 +#define NV10_3D_STENCIL_FUNC_FUNC_ALWAYS 0x00000207 + +#define NV10_3D_STENCIL_FUNC_REF 0x00000368 + +#define NV10_3D_STENCIL_FUNC_MASK 0x0000036c + +#define NV10_3D_STENCIL_OP_FAIL 0x00000370 +#define NV10_3D_STENCIL_OP_FAIL_ZERO 0x00000000 +#define NV10_3D_STENCIL_OP_FAIL_INVERT 0x0000150a +#define NV10_3D_STENCIL_OP_FAIL_KEEP 0x00001e00 +#define NV10_3D_STENCIL_OP_FAIL_REPLACE 0x00001e01 +#define NV10_3D_STENCIL_OP_FAIL_INCR 0x00001e02 +#define NV10_3D_STENCIL_OP_FAIL_DECR 0x00001e03 +#define NV10_3D_STENCIL_OP_FAIL_INCR_WRAP 0x00008507 +#define NV10_3D_STENCIL_OP_FAIL_DECR_WRAP 0x00008508 + +#define NV10_3D_STENCIL_OP_ZFAIL 0x00000374 +#define NV10_3D_STENCIL_OP_ZFAIL_ZERO 0x00000000 +#define NV10_3D_STENCIL_OP_ZFAIL_INVERT 0x0000150a +#define NV10_3D_STENCIL_OP_ZFAIL_KEEP 0x00001e00 +#define NV10_3D_STENCIL_OP_ZFAIL_REPLACE 0x00001e01 +#define NV10_3D_STENCIL_OP_ZFAIL_INCR 0x00001e02 +#define NV10_3D_STENCIL_OP_ZFAIL_DECR 0x00001e03 +#define NV10_3D_STENCIL_OP_ZFAIL_INCR_WRAP 0x00008507 +#define NV10_3D_STENCIL_OP_ZFAIL_DECR_WRAP 0x00008508 + +#define NV10_3D_STENCIL_OP_ZPASS 0x00000378 +#define NV10_3D_STENCIL_OP_ZPASS_ZERO 0x00000000 +#define NV10_3D_STENCIL_OP_ZPASS_INVERT 0x0000150a +#define NV10_3D_STENCIL_OP_ZPASS_KEEP 0x00001e00 +#define NV10_3D_STENCIL_OP_ZPASS_REPLACE 0x00001e01 +#define NV10_3D_STENCIL_OP_ZPASS_INCR 0x00001e02 +#define NV10_3D_STENCIL_OP_ZPASS_DECR 0x00001e03 +#define NV10_3D_STENCIL_OP_ZPASS_INCR_WRAP 0x00008507 +#define NV10_3D_STENCIL_OP_ZPASS_DECR_WRAP 0x00008508 + +#define NV10_3D_SHADE_MODEL 0x0000037c +#define NV10_3D_SHADE_MODEL_FLAT 0x00001d00 +#define NV10_3D_SHADE_MODEL_SMOOTH 0x00001d01 + +#define NV10_3D_LINE_WIDTH 0x00000380 + +#define NV10_3D_POLYGON_OFFSET_FACTOR 0x00000384 + +#define NV10_3D_POLYGON_OFFSET_UNITS 0x00000388 + +#define NV10_3D_POLYGON_MODE_FRONT 0x0000038c +#define NV10_3D_POLYGON_MODE_FRONT_POINT 0x00001b00 +#define NV10_3D_POLYGON_MODE_FRONT_LINE 0x00001b01 +#define NV10_3D_POLYGON_MODE_FRONT_FILL 0x00001b02 + +#define NV10_3D_POLYGON_MODE_BACK 0x00000390 +#define NV10_3D_POLYGON_MODE_BACK_POINT 0x00001b00 +#define NV10_3D_POLYGON_MODE_BACK_LINE 0x00001b01 +#define NV10_3D_POLYGON_MODE_BACK_FILL 0x00001b02 + +#define NV10_3D_DEPTH_RANGE_NEAR 0x00000394 + +#define NV10_3D_DEPTH_RANGE_FAR 0x00000398 + +#define NV10_3D_CULL_FACE 0x0000039c +#define NV10_3D_CULL_FACE_FRONT 0x00000404 +#define NV10_3D_CULL_FACE_BACK 0x00000405 +#define NV10_3D_CULL_FACE_FRONT_AND_BACK 0x00000408 + +#define NV10_3D_FRONT_FACE 0x000003a0 +#define NV10_3D_FRONT_FACE_CW 0x00000900 +#define NV10_3D_FRONT_FACE_CCW 0x00000901 + + +#define NV10_3D_VERTEX_POS_3F 0x00000c00 + + +#define NV10_3D_VERTEX_POS_3F_X 0x00000c00 + +#define NV10_3D_VERTEX_POS_3F_Y 0x00000c04 + +#define NV10_3D_VERTEX_POS_3F_Z 0x00000c08 + +#define NV10_3D_VERTEX_POS_4F 0x00000c18 + + +#define NV10_3D_VERTEX_POS_4F_X 0x00000c18 + +#define NV10_3D_VERTEX_POS_4F_Y 0x00000c1c + +#define NV10_3D_VERTEX_POS_4F_Z 0x00000c20 + +#define NV10_3D_VERTEX_POS_4F_W 0x00000c24 + +#define NV10_3D_VERTEX_NOR_3F 0x00000c30 + + +#define NV10_3D_VERTEX_NOR_3F_X 0x00000c30 + +#define NV10_3D_VERTEX_NOR_3F_Y 0x00000c34 + +#define NV10_3D_VERTEX_NOR_3F_Z 0x00000c38 + +#define NV10_3D_VERTEX_NOR_3I 0x00000c30 + + +#define NV10_3D_VERTEX_NOR_3I_XY 0x00000c30 +#define NV10_3D_VERTEX_NOR_3I_XY_X__MASK 0x0000ffff +#define NV10_3D_VERTEX_NOR_3I_XY_X__SHIFT 0 +#define NV10_3D_VERTEX_NOR_3I_XY_Y__MASK 0xffff0000 +#define NV10_3D_VERTEX_NOR_3I_XY_Y__SHIFT 16 + +#define NV10_3D_VERTEX_NOR_3I_Z 0x00000c34 +#define NV10_3D_VERTEX_NOR_3I_Z_Z__MASK 0x0000ffff +#define NV10_3D_VERTEX_NOR_3I_Z_Z__SHIFT 0 + +#define NV10_3D_VERTEX_COL_4F 0x00000c50 + + +#define NV10_3D_VERTEX_COL_4F_R 0x00000c50 + +#define NV10_3D_VERTEX_COL_4F_G 0x00000c54 + +#define NV10_3D_VERTEX_COL_4F_B 0x00000c58 + +#define NV10_3D_VERTEX_COL_4F_A 0x00000c5c + +#define NV10_3D_VERTEX_COL_3F 0x00000c60 + + +#define NV10_3D_VERTEX_COL_3F_R 0x00000c60 + +#define NV10_3D_VERTEX_COL_3F_G 0x00000c64 + +#define NV10_3D_VERTEX_COL_3F_B 0x00000c68 + +#define NV10_3D_VERTEX_COL_4I 0x00000c6c +#define NV10_3D_VERTEX_COL_4I_R__MASK 0x000000ff +#define NV10_3D_VERTEX_COL_4I_R__SHIFT 0 +#define NV10_3D_VERTEX_COL_4I_G__MASK 0x0000ff00 +#define NV10_3D_VERTEX_COL_4I_G__SHIFT 8 +#define NV10_3D_VERTEX_COL_4I_B__MASK 0x00ff0000 +#define NV10_3D_VERTEX_COL_4I_B__SHIFT 16 +#define NV10_3D_VERTEX_COL_4I_A__MASK 0xff000000 +#define NV10_3D_VERTEX_COL_4I_A__SHIFT 24 + +#define NV10_3D_VERTEX_COL2_3F 0x00000c80 + + +#define NV10_3D_VERTEX_COL2_3F_R 0x00000c80 + +#define NV10_3D_VERTEX_COL2_3F_G 0x00000c84 + +#define NV10_3D_VERTEX_COL2_3F_B 0x00000c88 + +#define NV10_3D_VERTEX_COL2_3I 0x00000c8c +#define NV10_3D_VERTEX_COL2_3I_R__MASK 0x000000ff +#define NV10_3D_VERTEX_COL2_3I_R__SHIFT 0 +#define NV10_3D_VERTEX_COL2_3I_G__MASK 0x0000ff00 +#define NV10_3D_VERTEX_COL2_3I_G__SHIFT 8 +#define NV10_3D_VERTEX_COL2_3I_B__MASK 0x00ff0000 +#define NV10_3D_VERTEX_COL2_3I_B__SHIFT 16 + +#define NV10_3D_VERTEX_TX0_2F 0x00000c90 + + +#define NV10_3D_VERTEX_TX0_2F_S 0x00000c90 + +#define NV10_3D_VERTEX_TX0_2F_T 0x00000c94 + +#define NV10_3D_VERTEX_TX0_2I 0x00000c98 +#define NV10_3D_VERTEX_TX0_2I_S__MASK 0x0000ffff +#define NV10_3D_VERTEX_TX0_2I_S__SHIFT 0 +#define NV10_3D_VERTEX_TX0_2I_T__MASK 0xffff0000 +#define NV10_3D_VERTEX_TX0_2I_T__SHIFT 16 + +#define NV10_3D_VERTEX_TX0_4F 0x00000ca0 + + +#define NV10_3D_VERTEX_TX0_4F_S 0x00000ca0 + +#define NV10_3D_VERTEX_TX0_4F_T 0x00000ca4 + +#define NV10_3D_VERTEX_TX0_4F_R 0x00000ca8 + +#define NV10_3D_VERTEX_TX0_4F_Q 0x00000cac + +#define NV10_3D_VERTEX_TX0_4I 0x00000cb0 + + +#define NV10_3D_VERTEX_TX0_4I_ST 0x00000cb0 +#define NV10_3D_VERTEX_TX0_4I_ST_S__MASK 0x0000ffff +#define NV10_3D_VERTEX_TX0_4I_ST_S__SHIFT 0 +#define NV10_3D_VERTEX_TX0_4I_ST_T__MASK 0xffff0000 +#define NV10_3D_VERTEX_TX0_4I_ST_T__SHIFT 16 + +#define NV10_3D_VERTEX_TX0_4I_RQ 0x00000cb4 +#define NV10_3D_VERTEX_TX0_4I_RQ_R__MASK 0x0000ffff +#define NV10_3D_VERTEX_TX0_4I_RQ_R__SHIFT 0 +#define NV10_3D_VERTEX_TX0_4I_RQ_Q__MASK 0xffff0000 +#define NV10_3D_VERTEX_TX0_4I_RQ_Q__SHIFT 16 + +#define NV10_3D_VERTEX_TX1_2F 0x00000cb8 + + +#define NV10_3D_VERTEX_TX1_2F_S 0x00000cb8 + +#define NV10_3D_VERTEX_TX1_2F_T 0x00000cbc + +#define NV10_3D_VERTEX_TX1_2I 0x00000cc0 +#define NV10_3D_VERTEX_TX1_2I_S__MASK 0x0000ffff +#define NV10_3D_VERTEX_TX1_2I_S__SHIFT 0 +#define NV10_3D_VERTEX_TX1_2I_T__MASK 0xffff0000 +#define NV10_3D_VERTEX_TX1_2I_T__SHIFT 16 + +#define NV10_3D_VERTEX_TX1_4F 0x00000cc8 + + +#define NV10_3D_VERTEX_TX1_4F_S 0x00000cc8 + +#define NV10_3D_VERTEX_TX1_4F_T 0x00000ccc + +#define NV10_3D_VERTEX_TX1_4F_R 0x00000cd0 + +#define NV10_3D_VERTEX_TX1_4F_Q 0x00000cd4 + +#define NV10_3D_VERTEX_TX1_4I 0x00000cd8 + + +#define NV10_3D_VERTEX_TX1_4I_ST 0x00000cd8 +#define NV10_3D_VERTEX_TX1_4I_ST_S__MASK 0x0000ffff +#define NV10_3D_VERTEX_TX1_4I_ST_S__SHIFT 0 +#define NV10_3D_VERTEX_TX1_4I_ST_T__MASK 0xffff0000 +#define NV10_3D_VERTEX_TX1_4I_ST_T__SHIFT 16 + +#define NV10_3D_VERTEX_TX1_4I_RQ 0x00000cdc +#define NV10_3D_VERTEX_TX1_4I_RQ_R__MASK 0x0000ffff +#define NV10_3D_VERTEX_TX1_4I_RQ_R__SHIFT 0 +#define NV10_3D_VERTEX_TX1_4I_RQ_Q__MASK 0xffff0000 +#define NV10_3D_VERTEX_TX1_4I_RQ_Q__SHIFT 16 + +#define NV10_3D_VERTEX_FOG_1F 0x00000ce0 + +#define NV10_3D_VERTEX_WGH_1F 0x00000ce4 + +#define NV10_3D_EDGEFLAG_ENABLE 0x00000cec + + +#define NV10_3D_DMA_VTXBUF 0x0000018c + +#define NV10_3D_VTXBUF_VALIDATE 0x00000cf0 + + +#define NV10_3D_VTXBUF_OFFSET(i0) (0x00000d00 + 0x8*(i0)) + +#define NV10_3D_VTXBUF_FMT(i0) (0x00000d04 + 0x8*(i0)) +#define NV10_3D_VTXBUF_FMT_TYPE__MASK 0x0000000f +#define NV10_3D_VTXBUF_FMT_TYPE__SHIFT 0 +#define NV10_3D_VTXBUF_FMT_TYPE_B8G8R8A8_UNORM 0x00000000 +#define NV10_3D_VTXBUF_FMT_TYPE_V16_SNORM 0x00000001 +#define NV10_3D_VTXBUF_FMT_TYPE_V32_FLOAT 0x00000002 +#define NV10_3D_VTXBUF_FMT_TYPE_U8_UNORM 0x00000004 +#define NV10_3D_VTXBUF_FMT_FIELDS__MASK 0x000000f0 +#define NV10_3D_VTXBUF_FMT_FIELDS__SHIFT 4 +#define NV10_3D_VTXBUF_FMT_STRIDE__MASK 0x0000ff00 +#define NV10_3D_VTXBUF_FMT_STRIDE__SHIFT 8 +#define NV10_3D_VTXBUF_FMT_HOMOGENEOUS 0x01000000 + +#define NV10_3D_VERTEX_BEGIN_END 0x00000dfc +#define NV10_3D_VERTEX_BEGIN_END_STOP 0x00000000 +#define NV10_3D_VERTEX_BEGIN_END_POINTS 0x00000001 +#define NV10_3D_VERTEX_BEGIN_END_LINES 0x00000002 +#define NV10_3D_VERTEX_BEGIN_END_LINE_LOOP 0x00000003 +#define NV10_3D_VERTEX_BEGIN_END_LINE_STRIP 0x00000004 +#define NV10_3D_VERTEX_BEGIN_END_TRIANGLES 0x00000005 +#define NV10_3D_VERTEX_BEGIN_END_TRIANGLE_STRIP 0x00000006 +#define NV10_3D_VERTEX_BEGIN_END_TRIANGLE_FAN 0x00000007 +#define NV10_3D_VERTEX_BEGIN_END_QUADS 0x00000008 +#define NV10_3D_VERTEX_BEGIN_END_QUAD_STRIP 0x00000009 +#define NV10_3D_VERTEX_BEGIN_END_POLYGON 0x0000000a + +#define NV10_3D_VTXBUF_ELEMENT_U16 0x00000e00 +#define NV10_3D_VTXBUF_ELEMENT_U16_I0__MASK 0x0000ffff +#define NV10_3D_VTXBUF_ELEMENT_U16_I0__SHIFT 0 +#define NV10_3D_VTXBUF_ELEMENT_U16_I1__MASK 0xffff0000 +#define NV10_3D_VTXBUF_ELEMENT_U16_I1__SHIFT 16 + +#define NV10_3D_VTXBUF_ELEMENT_U32 0x00001100 + +#define NV10_3D_VTXBUF_BEGIN_END 0x000013fc +#define NV10_3D_VTXBUF_BEGIN_END_STOP 0x00000000 +#define NV10_3D_VTXBUF_BEGIN_END_POINTS 0x00000001 +#define NV10_3D_VTXBUF_BEGIN_END_LINES 0x00000002 +#define NV10_3D_VTXBUF_BEGIN_END_LINE_LOOP 0x00000003 +#define NV10_3D_VTXBUF_BEGIN_END_LINE_STRIP 0x00000004 +#define NV10_3D_VTXBUF_BEGIN_END_TRIANGLES 0x00000005 +#define NV10_3D_VTXBUF_BEGIN_END_TRIANGLE_STRIP 0x00000006 +#define NV10_3D_VTXBUF_BEGIN_END_TRIANGLE_FAN 0x00000007 +#define NV10_3D_VTXBUF_BEGIN_END_QUADS 0x00000008 +#define NV10_3D_VTXBUF_BEGIN_END_QUAD_STRIP 0x00000009 +#define NV10_3D_VTXBUF_BEGIN_END_POLYGON 0x0000000a + +#define NV10_3D_VTXBUF_BATCH 0x00001400 +#define NV10_3D_VTXBUF_BATCH_FIRST__MASK 0x0000ffff +#define NV10_3D_VTXBUF_BATCH_FIRST__SHIFT 0 +#define NV10_3D_VTXBUF_BATCH_LAST__MASK 0xff000000 +#define NV10_3D_VTXBUF_BATCH_LAST__SHIFT 24 + +#define NV10_3D_VTXBUF_DATA 0x00001800 + + +#define NV10_3D_VERTEX_WEIGHT_ENABLE 0x00000328 + +#define NV10_3D_VIEW_MATRIX_ENABLE 0x000003e8 +#define NV10_3D_VIEW_MATRIX_ENABLE_MODELVIEW1 0x00000001 +#define NV10_3D_VIEW_MATRIX_ENABLE_MODELVIEW0 0x00000002 +#define NV10_3D_VIEW_MATRIX_ENABLE_PROJECTION 0x00000004 + + +#define NV10_3D_MODELVIEW_MATRIX(i0, i1) (0x00000400 + 0x40*(i0) + 0x4*(i1)) +#define NV10_3D_MODELVIEW_MATRIX__ESIZE 0x00000004 +#define NV10_3D_MODELVIEW_MATRIX__LEN 0x00000010 + +#define NV10_3D_INVERSE_MODELVIEW_MATRIX(i0, i1) (0x00000480 + 0x40*(i0) + 0x4*(i1)) +#define NV10_3D_INVERSE_MODELVIEW_MATRIX__ESIZE 0x00000004 +#define NV10_3D_INVERSE_MODELVIEW_MATRIX__LEN 0x0000000c + +#define NV10_3D_PROJECTION_MATRIX(i0) (0x00000500 + 0x4*(i0)) +#define NV10_3D_PROJECTION_MATRIX__ESIZE 0x00000004 +#define NV10_3D_PROJECTION_MATRIX__LEN 0x00000010 + +#define NV10_3D_VIEWPORT_TRANSLATE 0x000006e8 + + +#define NV10_3D_VIEWPORT_TRANSLATE_X 0x000006e8 + +#define NV10_3D_VIEWPORT_TRANSLATE_Y 0x000006ec + +#define NV10_3D_VIEWPORT_TRANSLATE_Z 0x000006f0 + +#define NV10_3D_VIEWPORT_TRANSLATE_W 0x000006f4 + + +#define NV10_3D_LIGHT_MODEL 0x00000294 +#define NV10_3D_LIGHT_MODEL_VERTEX_SPECULAR 0x00000001 +#define NV10_3D_LIGHT_MODEL_SEPARATE_SPECULAR 0x00000002 +#define NV10_3D_LIGHT_MODEL_LOCAL_VIEWER 0x00010000 + +#define NV10_3D_COLOR_MATERIAL 0x00000298 +#define NV10_3D_COLOR_MATERIAL_EMISSION 0x00000001 +#define NV10_3D_COLOR_MATERIAL_AMBIENT 0x00000002 +#define NV10_3D_COLOR_MATERIAL_DIFFUSE 0x00000004 +#define NV10_3D_COLOR_MATERIAL_SPECULAR 0x00000008 + +#define NV10_3D_MATERIAL_FACTOR 0x000003a8 + + +#define NV10_3D_MATERIAL_FACTOR_R 0x000003a8 + +#define NV10_3D_MATERIAL_FACTOR_G 0x000003ac + +#define NV10_3D_MATERIAL_FACTOR_B 0x000003b0 + +#define NV10_3D_MATERIAL_FACTOR_A 0x000003b4 + +#define NV10_3D_NORMALIZE_ENABLE 0x000003a4 + +#define NV10_3D_SEPARATE_SPECULAR_ENABLE 0x000003b8 + +#define NV10_3D_ENABLED_LIGHTS 0x000003bc +#define NV10_3D_ENABLED_LIGHTS_0__MASK 0x00000003 +#define NV10_3D_ENABLED_LIGHTS_0__SHIFT 0 +#define NV10_3D_ENABLED_LIGHTS_0_DISABLED 0x00000000 +#define NV10_3D_ENABLED_LIGHTS_0_NONPOSITIONAL 0x00000001 +#define NV10_3D_ENABLED_LIGHTS_0_POSITIONAL 0x00000002 +#define NV10_3D_ENABLED_LIGHTS_0_DIRECTIONAL 0x00000003 +#define NV10_3D_ENABLED_LIGHTS_1__MASK 0x0000000c +#define NV10_3D_ENABLED_LIGHTS_1__SHIFT 2 +#define NV10_3D_ENABLED_LIGHTS_1_DISABLED 0x00000000 +#define NV10_3D_ENABLED_LIGHTS_1_NONPOSITIONAL 0x00000004 +#define NV10_3D_ENABLED_LIGHTS_1_POSITIONAL 0x00000008 +#define NV10_3D_ENABLED_LIGHTS_1_DIRECTIONAL 0x0000000c +#define NV10_3D_ENABLED_LIGHTS_2__MASK 0x00000030 +#define NV10_3D_ENABLED_LIGHTS_2__SHIFT 4 +#define NV10_3D_ENABLED_LIGHTS_2_DISABLED 0x00000000 +#define NV10_3D_ENABLED_LIGHTS_2_NONPOSITIONAL 0x00000010 +#define NV10_3D_ENABLED_LIGHTS_2_POSITIONAL 0x00000020 +#define NV10_3D_ENABLED_LIGHTS_2_DIRECTIONAL 0x00000030 +#define NV10_3D_ENABLED_LIGHTS_3__MASK 0x000000c0 +#define NV10_3D_ENABLED_LIGHTS_3__SHIFT 6 +#define NV10_3D_ENABLED_LIGHTS_3_DISABLED 0x00000000 +#define NV10_3D_ENABLED_LIGHTS_3_NONPOSITIONAL 0x00000040 +#define NV10_3D_ENABLED_LIGHTS_3_POSITIONAL 0x00000080 +#define NV10_3D_ENABLED_LIGHTS_3_DIRECTIONAL 0x000000c0 +#define NV10_3D_ENABLED_LIGHTS_4__MASK 0x00000300 +#define NV10_3D_ENABLED_LIGHTS_4__SHIFT 8 +#define NV10_3D_ENABLED_LIGHTS_4_DISABLED 0x00000000 +#define NV10_3D_ENABLED_LIGHTS_4_NONPOSITIONAL 0x00000100 +#define NV10_3D_ENABLED_LIGHTS_4_POSITIONAL 0x00000200 +#define NV10_3D_ENABLED_LIGHTS_4_DIRECTIONAL 0x00000300 +#define NV10_3D_ENABLED_LIGHTS_5__MASK 0x00000c00 +#define NV10_3D_ENABLED_LIGHTS_5__SHIFT 10 +#define NV10_3D_ENABLED_LIGHTS_5_DISABLED 0x00000000 +#define NV10_3D_ENABLED_LIGHTS_5_NONPOSITIONAL 0x00000400 +#define NV10_3D_ENABLED_LIGHTS_5_POSITIONAL 0x00000800 +#define NV10_3D_ENABLED_LIGHTS_5_DIRECTIONAL 0x00000c00 +#define NV10_3D_ENABLED_LIGHTS_6__MASK 0x00003000 +#define NV10_3D_ENABLED_LIGHTS_6__SHIFT 12 +#define NV10_3D_ENABLED_LIGHTS_6_DISABLED 0x00000000 +#define NV10_3D_ENABLED_LIGHTS_6_NONPOSITIONAL 0x00001000 +#define NV10_3D_ENABLED_LIGHTS_6_POSITIONAL 0x00002000 +#define NV10_3D_ENABLED_LIGHTS_6_DIRECTIONAL 0x00003000 +#define NV10_3D_ENABLED_LIGHTS_7__MASK 0x0000c000 +#define NV10_3D_ENABLED_LIGHTS_7__SHIFT 14 +#define NV10_3D_ENABLED_LIGHTS_7_DISABLED 0x00000000 +#define NV10_3D_ENABLED_LIGHTS_7_NONPOSITIONAL 0x00004000 +#define NV10_3D_ENABLED_LIGHTS_7_POSITIONAL 0x00008000 +#define NV10_3D_ENABLED_LIGHTS_7_DIRECTIONAL 0x0000c000 + +#define NV10_3D_MATERIAL_SHININESS(i0) (0x000006a0 + 0x4*(i0)) +#define NV10_3D_MATERIAL_SHININESS__ESIZE 0x00000004 +#define NV10_3D_MATERIAL_SHININESS__LEN 0x00000006 + +#define NV10_3D_LIGHT_MODEL_AMBIENT 0x000006c4 + + +#define NV10_3D_LIGHT_MODEL_AMBIENT_R 0x000006c4 + +#define NV10_3D_LIGHT_MODEL_AMBIENT_G 0x000006c8 + +#define NV10_3D_LIGHT_MODEL_AMBIENT_B 0x000006cc + +#define NV10_3D_LIGHT(i0) (0x00000800 + 0x80*(i0)) +#define NV10_3D_LIGHT__ESIZE 0x00000080 +#define NV10_3D_LIGHT__LEN 0x00000008 + +#define NV10_3D_LIGHT_AMBIENT(i0) (0x00000800 + 0x80*(i0)) + + +#define NV10_3D_LIGHT_AMBIENT_R(i0) (0x00000800 + 0x80*(i0)) + +#define NV10_3D_LIGHT_AMBIENT_G(i0) (0x00000804 + 0x80*(i0)) + +#define NV10_3D_LIGHT_AMBIENT_B(i0) (0x00000808 + 0x80*(i0)) + +#define NV10_3D_LIGHT_DIFFUSE(i0) (0x0000080c + 0x80*(i0)) + + +#define NV10_3D_LIGHT_DIFFUSE_R(i0) (0x0000080c + 0x80*(i0)) + +#define NV10_3D_LIGHT_DIFFUSE_G(i0) (0x00000810 + 0x80*(i0)) + +#define NV10_3D_LIGHT_DIFFUSE_B(i0) (0x00000814 + 0x80*(i0)) + +#define NV10_3D_LIGHT_SPECULAR(i0) (0x00000818 + 0x80*(i0)) + + +#define NV10_3D_LIGHT_SPECULAR_R(i0) (0x00000818 + 0x80*(i0)) + +#define NV10_3D_LIGHT_SPECULAR_G(i0) (0x0000081c + 0x80*(i0)) + +#define NV10_3D_LIGHT_SPECULAR_B(i0) (0x00000820 + 0x80*(i0)) + +#define NV10_3D_LIGHT_HALF_VECTOR(i0) (0x00000828 + 0x80*(i0)) + + +#define NV10_3D_LIGHT_HALF_VECTOR_X(i0) (0x00000828 + 0x80*(i0)) + +#define NV10_3D_LIGHT_HALF_VECTOR_Y(i0) (0x0000082c + 0x80*(i0)) + +#define NV10_3D_LIGHT_HALF_VECTOR_Z(i0) (0x00000830 + 0x80*(i0)) + +#define NV10_3D_LIGHT_DIRECTION(i0) (0x00000834 + 0x80*(i0)) + + +#define NV10_3D_LIGHT_DIRECTION_X(i0) (0x00000834 + 0x80*(i0)) + +#define NV10_3D_LIGHT_DIRECTION_Y(i0) (0x00000838 + 0x80*(i0)) + +#define NV10_3D_LIGHT_DIRECTION_Z(i0) (0x0000083c + 0x80*(i0)) + +#define NV10_3D_LIGHT_SPOT_CUTOFF(i0, i1) (0x00000840 + 0x80*(i0) + 0x4*(i1)) +#define NV10_3D_LIGHT_SPOT_CUTOFF__ESIZE 0x00000004 +#define NV10_3D_LIGHT_SPOT_CUTOFF__LEN 0x00000007 + +#define NV10_3D_LIGHT_POSITION(i0) (0x0000085c + 0x80*(i0)) + + +#define NV10_3D_LIGHT_POSITION_X(i0) (0x0000085c + 0x80*(i0)) + +#define NV10_3D_LIGHT_POSITION_Y(i0) (0x00000860 + 0x80*(i0)) + +#define NV10_3D_LIGHT_POSITION_Z(i0) (0x00000864 + 0x80*(i0)) + +#define NV10_3D_LIGHT_ATTENUATION(i0) (0x00000868 + 0x80*(i0)) + +#define NV10_3D_LIGHT_ATTENUATION_CONSTANT(i0) (0x00000868 + 0x80*(i0)) + +#define NV10_3D_LIGHT_ATTENUATION_LINEAR(i0) (0x0000086c + 0x80*(i0)) + +#define NV10_3D_LIGHT_ATTENUATION_QUADRATIC(i0) (0x00000870 + 0x80*(i0)) + + +#define NV10_3D_FOG_MODE 0x0000029c +#define NV10_3D_FOG_MODE_LINEAR 0x00002601 +#define NV10_3D_FOG_MODE_EXP 0x00000800 +#define NV10_3D_FOG_MODE_EXP_ABS 0x00000802 +#define NV10_3D_FOG_MODE_EXP2 0x00000803 + +#define NV10_3D_FOG_COORD 0x000002a0 +#define NV10_3D_FOG_COORD_FOG 0x00000000 +#define NV10_3D_FOG_COORD_DIST_RADIAL 0x00000001 +#define NV10_3D_FOG_COORD_DIST_ORTHOGONAL 0x00000002 +#define NV10_3D_FOG_COORD_DIST_ORTHOGONAL_ABS 0x00000003 + +#define NV10_3D_FOG_ENABLE 0x000002a4 + +#define NV10_3D_FOG_COLOR 0x000002a8 +#define NV10_3D_FOG_COLOR_R__MASK 0x000000ff +#define NV10_3D_FOG_COLOR_R__SHIFT 0 +#define NV10_3D_FOG_COLOR_G__MASK 0x0000ff00 +#define NV10_3D_FOG_COLOR_G__SHIFT 8 +#define NV10_3D_FOG_COLOR_B__MASK 0x00ff0000 +#define NV10_3D_FOG_COLOR_B__SHIFT 16 +#define NV10_3D_FOG_COLOR_A__MASK 0xff000000 +#define NV10_3D_FOG_COLOR_A__SHIFT 24 + +#define NV10_3D_FOG_COEFF(i0) (0x00000680 + 0x4*(i0)) +#define NV10_3D_FOG_COEFF__ESIZE 0x00000004 +#define NV10_3D_FOG_COEFF__LEN 0x00000003 + + + +#define NV10_3D_TEX_GEN_MODE(i0, i1) (0x000003c0 + 0x10*(i0) + 0x4*(i1)) +#define NV10_3D_TEX_GEN_MODE__ESIZE 0x00000004 +#define NV10_3D_TEX_GEN_MODE__LEN 0x00000004 +#define NV10_3D_TEX_GEN_MODE_FALSE 0x00000000 +#define NV10_3D_TEX_GEN_MODE_EYE_LINEAR 0x00002400 +#define NV10_3D_TEX_GEN_MODE_OBJECT_LINEAR 0x00002401 +#define NV10_3D_TEX_GEN_MODE_SPHERE_MAP 0x00002402 +#define NV10_3D_TEX_GEN_MODE_NORMAL_MAP 0x00008511 +#define NV10_3D_TEX_GEN_MODE_REFLECTION_MAP 0x00008512 + + +#define NV10_3D_TEX_GEN_COEFF(i0, i1) (0x00000600 + 0x40*(i0) + 0x10*(i1)) +#define NV10_3D_TEX_GEN_COEFF__ESIZE 0x00000010 +#define NV10_3D_TEX_GEN_COEFF__LEN 0x00000004 + +#define NV10_3D_TEX_GEN_COEFF_A(i0, i1) (0x00000600 + 0x40*(i0) + 0x10*(i1)) + +#define NV10_3D_TEX_GEN_COEFF_B(i0, i1) (0x00000604 + 0x40*(i0) + 0x10*(i1)) + +#define NV10_3D_TEX_GEN_COEFF_C(i0, i1) (0x00000608 + 0x40*(i0) + 0x10*(i1)) + +#define NV10_3D_TEX_GEN_COEFF_D(i0, i1) (0x0000060c + 0x40*(i0) + 0x10*(i1)) + +#define NV10_3D_TEX_MATRIX_ENABLE(i0) (0x000003e0 + 0x4*(i0)) +#define NV10_3D_TEX_MATRIX_ENABLE__ESIZE 0x00000004 +#define NV10_3D_TEX_MATRIX_ENABLE__LEN 0x00000002 + + +#define NV10_3D_TEX_MATRIX(i0, i1) (0x00000540 + 0x40*(i0) + 0x4*(i1)) +#define NV10_3D_TEX_MATRIX__ESIZE 0x00000004 +#define NV10_3D_TEX_MATRIX__LEN 0x00000010 + +#define NV10_3D_TEX(i0) (0x00000000 + 0x4*(i0)) +#define NV10_3D_TEX__ESIZE 0x00000004 +#define NV10_3D_TEX__LEN 0x00000002 + +#define NV10_3D_TEX_OFFSET(i0) (0x00000218 + 0x4*(i0)) + +#define NV10_3D_TEX_FORMAT(i0) (0x00000220 + 0x4*(i0)) +#define NV10_3D_TEX_FORMAT_DMA0 0x00000001 +#define NV10_3D_TEX_FORMAT_DMA1 0x00000002 +#define NV10_3D_TEX_FORMAT_CUBE_MAP 0x00000004 +#define NV10_3D_TEX_FORMAT_FORMAT__MASK 0x00000f80 +#define NV10_3D_TEX_FORMAT_FORMAT__SHIFT 7 +#define NV10_3D_TEX_FORMAT_FORMAT_L8 0x00000000 +#define NV10_3D_TEX_FORMAT_FORMAT_I8 0x00000080 +#define NV10_3D_TEX_FORMAT_FORMAT_A1R5G5B5 0x00000100 +#define NV10_3D_TEX_FORMAT_FORMAT_A4R4G4B4 0x00000200 +#define NV10_3D_TEX_FORMAT_FORMAT_R5G6B5 0x00000280 +#define NV10_3D_TEX_FORMAT_FORMAT_A8R8G8B8 0x00000300 +#define NV10_3D_TEX_FORMAT_FORMAT_X8R8G8B8 0x00000380 +#define NV10_3D_TEX_FORMAT_FORMAT_INDEX8 0x00000580 +#define NV10_3D_TEX_FORMAT_FORMAT_DXT1 0x00000600 +#define NV10_3D_TEX_FORMAT_FORMAT_DXT3 0x00000700 +#define NV10_3D_TEX_FORMAT_FORMAT_DXT5 0x00000780 +#define NV10_3D_TEX_FORMAT_FORMAT_A1R5G5B5_RECT 0x00000800 +#define NV10_3D_TEX_FORMAT_FORMAT_R5G6B5_RECT 0x00000880 +#define NV10_3D_TEX_FORMAT_FORMAT_A8R8G8B8_RECT 0x00000900 +#define NV10_3D_TEX_FORMAT_FORMAT_I8_RECT 0x00000980 +#define NV10_3D_TEX_FORMAT_MIPMAP 0x00008000 +#define NV10_3D_TEX_FORMAT_BASE_SIZE_U__MASK 0x000f0000 +#define NV10_3D_TEX_FORMAT_BASE_SIZE_U__SHIFT 16 +#define NV10_3D_TEX_FORMAT_BASE_SIZE_V__MASK 0x00f00000 +#define NV10_3D_TEX_FORMAT_BASE_SIZE_V__SHIFT 20 +#define NV10_3D_TEX_FORMAT_WRAP_S__MASK 0x0f000000 +#define NV10_3D_TEX_FORMAT_WRAP_S__SHIFT 24 +#define NV10_3D_TEX_FORMAT_WRAP_S_REPEAT 0x01000000 +#define NV10_3D_TEX_FORMAT_WRAP_S_MIRRORED_REPEAT 0x02000000 +#define NV10_3D_TEX_FORMAT_WRAP_S_CLAMP_TO_EDGE 0x03000000 +#define NV10_3D_TEX_FORMAT_WRAP_S_CLAMP_TO_BORDER 0x04000000 +#define NV10_3D_TEX_FORMAT_WRAP_S_CLAMP 0x05000000 +#define NV10_3D_TEX_FORMAT_WRAP_T__MASK 0xf0000000 +#define NV10_3D_TEX_FORMAT_WRAP_T__SHIFT 28 +#define NV10_3D_TEX_FORMAT_WRAP_T_REPEAT 0x10000000 +#define NV10_3D_TEX_FORMAT_WRAP_T_MIRRORED_REPEAT 0x20000000 +#define NV10_3D_TEX_FORMAT_WRAP_T_CLAMP_TO_EDGE 0x30000000 +#define NV10_3D_TEX_FORMAT_WRAP_T_CLAMP_TO_BORDER 0x40000000 +#define NV10_3D_TEX_FORMAT_WRAP_T_CLAMP 0x50000000 + +#define NV10_3D_TEX_ENABLE(i0) (0x00000228 + 0x4*(i0)) +#define NV10_3D_TEX_ENABLE_CULL__MASK 0x0000000f +#define NV10_3D_TEX_ENABLE_CULL__SHIFT 0 +#define NV10_3D_TEX_ENABLE_CULL_DISABLED 0x00000000 +#define NV10_3D_TEX_ENABLE_CULL_TEST_ALL 0x00000003 +#define NV10_3D_TEX_ENABLE_CULL_TEST_ALPHA 0x00000004 +#define NV10_3D_TEX_ENABLE_ANISOTROPY__MASK 0x00000030 +#define NV10_3D_TEX_ENABLE_ANISOTROPY__SHIFT 4 +#define NV10_3D_TEX_ENABLE_MIPMAP_MAX_LOD__MASK 0x0003c000 +#define NV10_3D_TEX_ENABLE_MIPMAP_MAX_LOD__SHIFT 14 +#define NV10_3D_TEX_ENABLE_MIPMAP_MIN_LOD__MASK 0x3c000000 +#define NV10_3D_TEX_ENABLE_MIPMAP_MIN_LOD__SHIFT 26 +#define NV10_3D_TEX_ENABLE_ENABLE 0x40000000 + +#define NV10_3D_TEX_NPOT_PITCH(i0) (0x00000230 + 0x4*(i0)) +#define NV10_3D_TEX_NPOT_PITCH_PITCH__MASK 0xffff0000 +#define NV10_3D_TEX_NPOT_PITCH_PITCH__SHIFT 16 + +#define NV10_3D_TEX_NPOT_SIZE(i0) (0x00000240 + 0x4*(i0)) +#define NV10_3D_TEX_NPOT_SIZE_H__MASK 0x0000ffff +#define NV10_3D_TEX_NPOT_SIZE_H__SHIFT 0 +#define NV10_3D_TEX_NPOT_SIZE_W__MASK 0xffff0000 +#define NV10_3D_TEX_NPOT_SIZE_W__SHIFT 16 + +#define NV10_3D_TEX_FILTER(i0) (0x00000248 + 0x4*(i0)) +#define NV10_3D_TEX_FILTER_LOD_BIAS__MASK 0x00000f00 +#define NV10_3D_TEX_FILTER_LOD_BIAS__SHIFT 8 +#define NV10_3D_TEX_FILTER_MINIFY__MASK 0x0f000000 +#define NV10_3D_TEX_FILTER_MINIFY__SHIFT 24 +#define NV10_3D_TEX_FILTER_MINIFY_NEAREST 0x01000000 +#define NV10_3D_TEX_FILTER_MINIFY_LINEAR 0x02000000 +#define NV10_3D_TEX_FILTER_MINIFY_NEAREST_MIPMAP_NEAREST 0x03000000 +#define NV10_3D_TEX_FILTER_MINIFY_LINEAR_MIPMAP_NEAREST 0x04000000 +#define NV10_3D_TEX_FILTER_MINIFY_NEAREST_MIPMAP_LINEAR 0x05000000 +#define NV10_3D_TEX_FILTER_MINIFY_LINEAR_MIPMAP_LINEAR 0x06000000 +#define NV10_3D_TEX_FILTER_MAGNIFY__MASK 0xf0000000 +#define NV10_3D_TEX_FILTER_MAGNIFY__SHIFT 28 +#define NV10_3D_TEX_FILTER_MAGNIFY_NEAREST 0x10000000 +#define NV10_3D_TEX_FILTER_MAGNIFY_LINEAR 0x20000000 + +#define NV10_3D_TEX_PALETTE_OFFSET(i0) (0x00000250 + 0x4*(i0)) + + + +#define NV10_3D_RC_IN_ALPHA(i0) (0x00000260 + 0x4*(i0)) +#define NV10_3D_RC_IN_ALPHA_D_INPUT__MASK 0x0000000f +#define NV10_3D_RC_IN_ALPHA_D_INPUT__SHIFT 0 +#define NV10_3D_RC_IN_ALPHA_D_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR0 0x00000001 +#define NV10_3D_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR1 0x00000002 +#define NV10_3D_RC_IN_ALPHA_D_INPUT_FOG 0x00000003 +#define NV10_3D_RC_IN_ALPHA_D_INPUT_PRIMARY_COLOR 0x00000004 +#define NV10_3D_RC_IN_ALPHA_D_INPUT_SECONDARY_COLOR 0x00000005 +#define NV10_3D_RC_IN_ALPHA_D_INPUT_TEXTURE0 0x00000008 +#define NV10_3D_RC_IN_ALPHA_D_INPUT_TEXTURE1 0x00000009 +#define NV10_3D_RC_IN_ALPHA_D_INPUT_TEXTURE2 0x0000000a +#define NV10_3D_RC_IN_ALPHA_D_INPUT_TEXTURE3 0x0000000b +#define NV10_3D_RC_IN_ALPHA_D_INPUT_SPARE0 0x0000000c +#define NV10_3D_RC_IN_ALPHA_D_INPUT_SPARE1 0x0000000d +#define NV10_3D_RC_IN_ALPHA_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e +#define NV10_3D_RC_IN_ALPHA_D_INPUT_E_TIMES_F 0x0000000f +#define NV10_3D_RC_IN_ALPHA_D_COMPONENT_USAGE__MASK 0x00000010 +#define NV10_3D_RC_IN_ALPHA_D_COMPONENT_USAGE__SHIFT 4 +#define NV10_3D_RC_IN_ALPHA_D_COMPONENT_USAGE_BLUE 0x00000000 +#define NV10_3D_RC_IN_ALPHA_D_COMPONENT_USAGE_ALPHA 0x00000010 +#define NV10_3D_RC_IN_ALPHA_D_MAPPING__MASK 0x000000e0 +#define NV10_3D_RC_IN_ALPHA_D_MAPPING__SHIFT 5 +#define NV10_3D_RC_IN_ALPHA_D_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_IN_ALPHA_D_MAPPING_UNSIGNED_INVERT 0x00000020 +#define NV10_3D_RC_IN_ALPHA_D_MAPPING_EXPAND_NORMAL 0x00000040 +#define NV10_3D_RC_IN_ALPHA_D_MAPPING_EXPAND_NEGATE 0x00000060 +#define NV10_3D_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NORMAL 0x00000080 +#define NV10_3D_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0 +#define NV10_3D_RC_IN_ALPHA_D_MAPPING_SIGNED_IDENTITY 0x000000c0 +#define NV10_3D_RC_IN_ALPHA_D_MAPPING_SIGNED_NEGATE 0x000000e0 +#define NV10_3D_RC_IN_ALPHA_C_INPUT__MASK 0x00000f00 +#define NV10_3D_RC_IN_ALPHA_C_INPUT__SHIFT 8 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR0 0x00000100 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR1 0x00000200 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_FOG 0x00000300 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_PRIMARY_COLOR 0x00000400 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_SECONDARY_COLOR 0x00000500 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_TEXTURE0 0x00000800 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_TEXTURE1 0x00000900 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_TEXTURE2 0x00000a00 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_TEXTURE3 0x00000b00 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_SPARE0 0x00000c00 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_SPARE1 0x00000d00 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 +#define NV10_3D_RC_IN_ALPHA_C_INPUT_E_TIMES_F 0x00000f00 +#define NV10_3D_RC_IN_ALPHA_C_COMPONENT_USAGE__MASK 0x00001000 +#define NV10_3D_RC_IN_ALPHA_C_COMPONENT_USAGE__SHIFT 12 +#define NV10_3D_RC_IN_ALPHA_C_COMPONENT_USAGE_BLUE 0x00000000 +#define NV10_3D_RC_IN_ALPHA_C_COMPONENT_USAGE_ALPHA 0x00001000 +#define NV10_3D_RC_IN_ALPHA_C_MAPPING__MASK 0x0000e000 +#define NV10_3D_RC_IN_ALPHA_C_MAPPING__SHIFT 13 +#define NV10_3D_RC_IN_ALPHA_C_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_IN_ALPHA_C_MAPPING_UNSIGNED_INVERT 0x00002000 +#define NV10_3D_RC_IN_ALPHA_C_MAPPING_EXPAND_NORMAL 0x00004000 +#define NV10_3D_RC_IN_ALPHA_C_MAPPING_EXPAND_NEGATE 0x00006000 +#define NV10_3D_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NORMAL 0x00008000 +#define NV10_3D_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000 +#define NV10_3D_RC_IN_ALPHA_C_MAPPING_SIGNED_IDENTITY 0x0000c000 +#define NV10_3D_RC_IN_ALPHA_C_MAPPING_SIGNED_NEGATE 0x0000e000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT__MASK 0x000f0000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT__SHIFT 16 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR0 0x00010000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR1 0x00020000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_FOG 0x00030000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_PRIMARY_COLOR 0x00040000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_SECONDARY_COLOR 0x00050000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_TEXTURE0 0x00080000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_TEXTURE1 0x00090000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_TEXTURE2 0x000a0000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_TEXTURE3 0x000b0000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_SPARE0 0x000c0000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_SPARE1 0x000d0000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 +#define NV10_3D_RC_IN_ALPHA_B_INPUT_E_TIMES_F 0x000f0000 +#define NV10_3D_RC_IN_ALPHA_B_COMPONENT_USAGE__MASK 0x00100000 +#define NV10_3D_RC_IN_ALPHA_B_COMPONENT_USAGE__SHIFT 20 +#define NV10_3D_RC_IN_ALPHA_B_COMPONENT_USAGE_BLUE 0x00000000 +#define NV10_3D_RC_IN_ALPHA_B_COMPONENT_USAGE_ALPHA 0x00100000 +#define NV10_3D_RC_IN_ALPHA_B_MAPPING__MASK 0x00e00000 +#define NV10_3D_RC_IN_ALPHA_B_MAPPING__SHIFT 21 +#define NV10_3D_RC_IN_ALPHA_B_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_IN_ALPHA_B_MAPPING_UNSIGNED_INVERT 0x00200000 +#define NV10_3D_RC_IN_ALPHA_B_MAPPING_EXPAND_NORMAL 0x00400000 +#define NV10_3D_RC_IN_ALPHA_B_MAPPING_EXPAND_NEGATE 0x00600000 +#define NV10_3D_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NORMAL 0x00800000 +#define NV10_3D_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000 +#define NV10_3D_RC_IN_ALPHA_B_MAPPING_SIGNED_IDENTITY 0x00c00000 +#define NV10_3D_RC_IN_ALPHA_B_MAPPING_SIGNED_NEGATE 0x00e00000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT__MASK 0x0f000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT__SHIFT 24 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR0 0x01000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR1 0x02000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_FOG 0x03000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_PRIMARY_COLOR 0x04000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_SECONDARY_COLOR 0x05000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_TEXTURE0 0x08000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_TEXTURE1 0x09000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_TEXTURE2 0x0a000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_TEXTURE3 0x0b000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_SPARE0 0x0c000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_SPARE1 0x0d000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 +#define NV10_3D_RC_IN_ALPHA_A_INPUT_E_TIMES_F 0x0f000000 +#define NV10_3D_RC_IN_ALPHA_A_COMPONENT_USAGE__MASK 0x10000000 +#define NV10_3D_RC_IN_ALPHA_A_COMPONENT_USAGE__SHIFT 28 +#define NV10_3D_RC_IN_ALPHA_A_COMPONENT_USAGE_BLUE 0x00000000 +#define NV10_3D_RC_IN_ALPHA_A_COMPONENT_USAGE_ALPHA 0x10000000 +#define NV10_3D_RC_IN_ALPHA_A_MAPPING__MASK 0xe0000000 +#define NV10_3D_RC_IN_ALPHA_A_MAPPING__SHIFT 29 +#define NV10_3D_RC_IN_ALPHA_A_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_IN_ALPHA_A_MAPPING_UNSIGNED_INVERT 0x20000000 +#define NV10_3D_RC_IN_ALPHA_A_MAPPING_EXPAND_NORMAL 0x40000000 +#define NV10_3D_RC_IN_ALPHA_A_MAPPING_EXPAND_NEGATE 0x60000000 +#define NV10_3D_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NORMAL 0x80000000 +#define NV10_3D_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000 +#define NV10_3D_RC_IN_ALPHA_A_MAPPING_SIGNED_IDENTITY 0xc0000000 +#define NV10_3D_RC_IN_ALPHA_A_MAPPING_SIGNED_NEGATE 0xe0000000 + +#define NV10_3D_RC_IN_RGB(i0) (0x00000268 + 0x4*(i0)) +#define NV10_3D_RC_IN_RGB_D_INPUT__MASK 0x0000000f +#define NV10_3D_RC_IN_RGB_D_INPUT__SHIFT 0 +#define NV10_3D_RC_IN_RGB_D_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_IN_RGB_D_INPUT_CONSTANT_COLOR0 0x00000001 +#define NV10_3D_RC_IN_RGB_D_INPUT_CONSTANT_COLOR1 0x00000002 +#define NV10_3D_RC_IN_RGB_D_INPUT_FOG 0x00000003 +#define NV10_3D_RC_IN_RGB_D_INPUT_PRIMARY_COLOR 0x00000004 +#define NV10_3D_RC_IN_RGB_D_INPUT_SECONDARY_COLOR 0x00000005 +#define NV10_3D_RC_IN_RGB_D_INPUT_TEXTURE0 0x00000008 +#define NV10_3D_RC_IN_RGB_D_INPUT_TEXTURE1 0x00000009 +#define NV10_3D_RC_IN_RGB_D_INPUT_TEXTURE2 0x0000000a +#define NV10_3D_RC_IN_RGB_D_INPUT_TEXTURE3 0x0000000b +#define NV10_3D_RC_IN_RGB_D_INPUT_SPARE0 0x0000000c +#define NV10_3D_RC_IN_RGB_D_INPUT_SPARE1 0x0000000d +#define NV10_3D_RC_IN_RGB_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e +#define NV10_3D_RC_IN_RGB_D_INPUT_E_TIMES_F 0x0000000f +#define NV10_3D_RC_IN_RGB_D_COMPONENT_USAGE__MASK 0x00000010 +#define NV10_3D_RC_IN_RGB_D_COMPONENT_USAGE__SHIFT 4 +#define NV10_3D_RC_IN_RGB_D_COMPONENT_USAGE_RGB 0x00000000 +#define NV10_3D_RC_IN_RGB_D_COMPONENT_USAGE_ALPHA 0x00000010 +#define NV10_3D_RC_IN_RGB_D_MAPPING__MASK 0x000000e0 +#define NV10_3D_RC_IN_RGB_D_MAPPING__SHIFT 5 +#define NV10_3D_RC_IN_RGB_D_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_IN_RGB_D_MAPPING_UNSIGNED_INVERT 0x00000020 +#define NV10_3D_RC_IN_RGB_D_MAPPING_EXPAND_NORMAL 0x00000040 +#define NV10_3D_RC_IN_RGB_D_MAPPING_EXPAND_NEGATE 0x00000060 +#define NV10_3D_RC_IN_RGB_D_MAPPING_HALF_BIAS_NORMAL 0x00000080 +#define NV10_3D_RC_IN_RGB_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0 +#define NV10_3D_RC_IN_RGB_D_MAPPING_SIGNED_IDENTITY 0x000000c0 +#define NV10_3D_RC_IN_RGB_D_MAPPING_SIGNED_NEGATE 0x000000e0 +#define NV10_3D_RC_IN_RGB_C_INPUT__MASK 0x00000f00 +#define NV10_3D_RC_IN_RGB_C_INPUT__SHIFT 8 +#define NV10_3D_RC_IN_RGB_C_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_IN_RGB_C_INPUT_CONSTANT_COLOR0 0x00000100 +#define NV10_3D_RC_IN_RGB_C_INPUT_CONSTANT_COLOR1 0x00000200 +#define NV10_3D_RC_IN_RGB_C_INPUT_FOG 0x00000300 +#define NV10_3D_RC_IN_RGB_C_INPUT_PRIMARY_COLOR 0x00000400 +#define NV10_3D_RC_IN_RGB_C_INPUT_SECONDARY_COLOR 0x00000500 +#define NV10_3D_RC_IN_RGB_C_INPUT_TEXTURE0 0x00000800 +#define NV10_3D_RC_IN_RGB_C_INPUT_TEXTURE1 0x00000900 +#define NV10_3D_RC_IN_RGB_C_INPUT_TEXTURE2 0x00000a00 +#define NV10_3D_RC_IN_RGB_C_INPUT_TEXTURE3 0x00000b00 +#define NV10_3D_RC_IN_RGB_C_INPUT_SPARE0 0x00000c00 +#define NV10_3D_RC_IN_RGB_C_INPUT_SPARE1 0x00000d00 +#define NV10_3D_RC_IN_RGB_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 +#define NV10_3D_RC_IN_RGB_C_INPUT_E_TIMES_F 0x00000f00 +#define NV10_3D_RC_IN_RGB_C_COMPONENT_USAGE__MASK 0x00001000 +#define NV10_3D_RC_IN_RGB_C_COMPONENT_USAGE__SHIFT 12 +#define NV10_3D_RC_IN_RGB_C_COMPONENT_USAGE_RGB 0x00000000 +#define NV10_3D_RC_IN_RGB_C_COMPONENT_USAGE_ALPHA 0x00001000 +#define NV10_3D_RC_IN_RGB_C_MAPPING__MASK 0x0000e000 +#define NV10_3D_RC_IN_RGB_C_MAPPING__SHIFT 13 +#define NV10_3D_RC_IN_RGB_C_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_IN_RGB_C_MAPPING_UNSIGNED_INVERT 0x00002000 +#define NV10_3D_RC_IN_RGB_C_MAPPING_EXPAND_NORMAL 0x00004000 +#define NV10_3D_RC_IN_RGB_C_MAPPING_EXPAND_NEGATE 0x00006000 +#define NV10_3D_RC_IN_RGB_C_MAPPING_HALF_BIAS_NORMAL 0x00008000 +#define NV10_3D_RC_IN_RGB_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000 +#define NV10_3D_RC_IN_RGB_C_MAPPING_SIGNED_IDENTITY 0x0000c000 +#define NV10_3D_RC_IN_RGB_C_MAPPING_SIGNED_NEGATE 0x0000e000 +#define NV10_3D_RC_IN_RGB_B_INPUT__MASK 0x000f0000 +#define NV10_3D_RC_IN_RGB_B_INPUT__SHIFT 16 +#define NV10_3D_RC_IN_RGB_B_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_IN_RGB_B_INPUT_CONSTANT_COLOR0 0x00010000 +#define NV10_3D_RC_IN_RGB_B_INPUT_CONSTANT_COLOR1 0x00020000 +#define NV10_3D_RC_IN_RGB_B_INPUT_FOG 0x00030000 +#define NV10_3D_RC_IN_RGB_B_INPUT_PRIMARY_COLOR 0x00040000 +#define NV10_3D_RC_IN_RGB_B_INPUT_SECONDARY_COLOR 0x00050000 +#define NV10_3D_RC_IN_RGB_B_INPUT_TEXTURE0 0x00080000 +#define NV10_3D_RC_IN_RGB_B_INPUT_TEXTURE1 0x00090000 +#define NV10_3D_RC_IN_RGB_B_INPUT_TEXTURE2 0x000a0000 +#define NV10_3D_RC_IN_RGB_B_INPUT_TEXTURE3 0x000b0000 +#define NV10_3D_RC_IN_RGB_B_INPUT_SPARE0 0x000c0000 +#define NV10_3D_RC_IN_RGB_B_INPUT_SPARE1 0x000d0000 +#define NV10_3D_RC_IN_RGB_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 +#define NV10_3D_RC_IN_RGB_B_INPUT_E_TIMES_F 0x000f0000 +#define NV10_3D_RC_IN_RGB_B_COMPONENT_USAGE__MASK 0x00100000 +#define NV10_3D_RC_IN_RGB_B_COMPONENT_USAGE__SHIFT 20 +#define NV10_3D_RC_IN_RGB_B_COMPONENT_USAGE_RGB 0x00000000 +#define NV10_3D_RC_IN_RGB_B_COMPONENT_USAGE_ALPHA 0x00100000 +#define NV10_3D_RC_IN_RGB_B_MAPPING__MASK 0x00e00000 +#define NV10_3D_RC_IN_RGB_B_MAPPING__SHIFT 21 +#define NV10_3D_RC_IN_RGB_B_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_IN_RGB_B_MAPPING_UNSIGNED_INVERT 0x00200000 +#define NV10_3D_RC_IN_RGB_B_MAPPING_EXPAND_NORMAL 0x00400000 +#define NV10_3D_RC_IN_RGB_B_MAPPING_EXPAND_NEGATE 0x00600000 +#define NV10_3D_RC_IN_RGB_B_MAPPING_HALF_BIAS_NORMAL 0x00800000 +#define NV10_3D_RC_IN_RGB_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000 +#define NV10_3D_RC_IN_RGB_B_MAPPING_SIGNED_IDENTITY 0x00c00000 +#define NV10_3D_RC_IN_RGB_B_MAPPING_SIGNED_NEGATE 0x00e00000 +#define NV10_3D_RC_IN_RGB_A_INPUT__MASK 0x0f000000 +#define NV10_3D_RC_IN_RGB_A_INPUT__SHIFT 24 +#define NV10_3D_RC_IN_RGB_A_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_IN_RGB_A_INPUT_CONSTANT_COLOR0 0x01000000 +#define NV10_3D_RC_IN_RGB_A_INPUT_CONSTANT_COLOR1 0x02000000 +#define NV10_3D_RC_IN_RGB_A_INPUT_FOG 0x03000000 +#define NV10_3D_RC_IN_RGB_A_INPUT_PRIMARY_COLOR 0x04000000 +#define NV10_3D_RC_IN_RGB_A_INPUT_SECONDARY_COLOR 0x05000000 +#define NV10_3D_RC_IN_RGB_A_INPUT_TEXTURE0 0x08000000 +#define NV10_3D_RC_IN_RGB_A_INPUT_TEXTURE1 0x09000000 +#define NV10_3D_RC_IN_RGB_A_INPUT_TEXTURE2 0x0a000000 +#define NV10_3D_RC_IN_RGB_A_INPUT_TEXTURE3 0x0b000000 +#define NV10_3D_RC_IN_RGB_A_INPUT_SPARE0 0x0c000000 +#define NV10_3D_RC_IN_RGB_A_INPUT_SPARE1 0x0d000000 +#define NV10_3D_RC_IN_RGB_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 +#define NV10_3D_RC_IN_RGB_A_INPUT_E_TIMES_F 0x0f000000 +#define NV10_3D_RC_IN_RGB_A_COMPONENT_USAGE__MASK 0x10000000 +#define NV10_3D_RC_IN_RGB_A_COMPONENT_USAGE__SHIFT 28 +#define NV10_3D_RC_IN_RGB_A_COMPONENT_USAGE_RGB 0x00000000 +#define NV10_3D_RC_IN_RGB_A_COMPONENT_USAGE_ALPHA 0x10000000 +#define NV10_3D_RC_IN_RGB_A_MAPPING__MASK 0xe0000000 +#define NV10_3D_RC_IN_RGB_A_MAPPING__SHIFT 29 +#define NV10_3D_RC_IN_RGB_A_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_IN_RGB_A_MAPPING_UNSIGNED_INVERT 0x20000000 +#define NV10_3D_RC_IN_RGB_A_MAPPING_EXPAND_NORMAL 0x40000000 +#define NV10_3D_RC_IN_RGB_A_MAPPING_EXPAND_NEGATE 0x60000000 +#define NV10_3D_RC_IN_RGB_A_MAPPING_HALF_BIAS_NORMAL 0x80000000 +#define NV10_3D_RC_IN_RGB_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000 +#define NV10_3D_RC_IN_RGB_A_MAPPING_SIGNED_IDENTITY 0xc0000000 +#define NV10_3D_RC_IN_RGB_A_MAPPING_SIGNED_NEGATE 0xe0000000 + +#define NV10_3D_RC_COLOR(i0) (0x00000270 + 0x4*(i0)) +#define NV10_3D_RC_COLOR_B__MASK 0x000000ff +#define NV10_3D_RC_COLOR_B__SHIFT 0 +#define NV10_3D_RC_COLOR_G__MASK 0x0000ff00 +#define NV10_3D_RC_COLOR_G__SHIFT 8 +#define NV10_3D_RC_COLOR_R__MASK 0x00ff0000 +#define NV10_3D_RC_COLOR_R__SHIFT 16 +#define NV10_3D_RC_COLOR_A__MASK 0xff000000 +#define NV10_3D_RC_COLOR_A__SHIFT 24 + +#define NV10_3D_RC_OUT_ALPHA(i0) (0x00000278 + 0x4*(i0)) +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT__MASK 0x0000000f +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT__SHIFT 0 +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_ZERO 0x00000000 +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR0 0x00000001 +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR1 0x00000002 +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_FOG 0x00000003 +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_PRIMARY_COLOR 0x00000004 +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_SECONDARY_COLOR 0x00000005 +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE0 0x00000008 +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE1 0x00000009 +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE2 0x0000000a +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE3 0x0000000b +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE0 0x0000000c +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE1 0x0000000d +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e +#define NV10_3D_RC_OUT_ALPHA_CD_OUTPUT_E_TIMES_F 0x0000000f +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT__MASK 0x000000f0 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT__SHIFT 4 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_ZERO 0x00000000 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR0 0x00000010 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR1 0x00000020 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_FOG 0x00000030 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_PRIMARY_COLOR 0x00000040 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_SECONDARY_COLOR 0x00000050 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE0 0x00000080 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE1 0x00000090 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE2 0x000000a0 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE3 0x000000b0 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE0 0x000000c0 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE1 0x000000d0 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000000e0 +#define NV10_3D_RC_OUT_ALPHA_AB_OUTPUT_E_TIMES_F 0x000000f0 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT__MASK 0x00000f00 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT__SHIFT 8 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_ZERO 0x00000000 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR0 0x00000100 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR1 0x00000200 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_FOG 0x00000300 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_PRIMARY_COLOR 0x00000400 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_SECONDARY_COLOR 0x00000500 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE0 0x00000800 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE1 0x00000900 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE2 0x00000a00 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE3 0x00000b00 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0 0x00000c00 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE1 0x00000d00 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 +#define NV10_3D_RC_OUT_ALPHA_SUM_OUTPUT_E_TIMES_F 0x00000f00 +#define NV10_3D_RC_OUT_ALPHA_CD_DOT_PRODUCT 0x00001000 +#define NV10_3D_RC_OUT_ALPHA_AB_DOT_PRODUCT 0x00002000 +#define NV10_3D_RC_OUT_ALPHA_MUX_SUM 0x00004000 +#define NV10_3D_RC_OUT_ALPHA_BIAS__MASK 0x00008000 +#define NV10_3D_RC_OUT_ALPHA_BIAS__SHIFT 15 +#define NV10_3D_RC_OUT_ALPHA_BIAS_NONE 0x00000000 +#define NV10_3D_RC_OUT_ALPHA_BIAS_BIAS_BY_NEGATIVE_ONE_HALF 0x00008000 +#define NV10_3D_RC_OUT_ALPHA_SCALE__MASK 0x00030000 +#define NV10_3D_RC_OUT_ALPHA_SCALE__SHIFT 16 +#define NV10_3D_RC_OUT_ALPHA_SCALE_NONE 0x00000000 +#define NV10_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_TWO 0x00010000 +#define NV10_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_FOUR 0x00020000 +#define NV10_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_ONE_HALF 0x00030000 + +#define NV10_3D_RC_OUT_RGB(i0) (0x00000280 + 0x4*(i0)) +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT__MASK 0x0000000f +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT__SHIFT 0 +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_ZERO 0x00000000 +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR0 0x00000001 +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR1 0x00000002 +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_FOG 0x00000003 +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_PRIMARY_COLOR 0x00000004 +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_SECONDARY_COLOR 0x00000005 +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE0 0x00000008 +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE1 0x00000009 +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE2 0x0000000a +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE3 0x0000000b +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_SPARE0 0x0000000c +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_SPARE1 0x0000000d +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e +#define NV10_3D_RC_OUT_RGB_CD_OUTPUT_E_TIMES_F 0x0000000f +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT__MASK 0x000000f0 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT__SHIFT 4 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_ZERO 0x00000000 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR0 0x00000010 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR1 0x00000020 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_FOG 0x00000030 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_PRIMARY_COLOR 0x00000040 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_SECONDARY_COLOR 0x00000050 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE0 0x00000080 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE1 0x00000090 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE2 0x000000a0 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE3 0x000000b0 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0 0x000000c0 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_SPARE1 0x000000d0 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000000e0 +#define NV10_3D_RC_OUT_RGB_AB_OUTPUT_E_TIMES_F 0x000000f0 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT__MASK 0x00000f00 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT__SHIFT 8 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_ZERO 0x00000000 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR0 0x00000100 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR1 0x00000200 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_FOG 0x00000300 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_PRIMARY_COLOR 0x00000400 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_SECONDARY_COLOR 0x00000500 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE0 0x00000800 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE1 0x00000900 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE2 0x00000a00 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE3 0x00000b00 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE0 0x00000c00 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE1 0x00000d00 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 +#define NV10_3D_RC_OUT_RGB_SUM_OUTPUT_E_TIMES_F 0x00000f00 +#define NV10_3D_RC_OUT_RGB_CD_DOT_PRODUCT 0x00001000 +#define NV10_3D_RC_OUT_RGB_AB_DOT_PRODUCT 0x00002000 +#define NV10_3D_RC_OUT_RGB_MUX_SUM 0x00004000 +#define NV10_3D_RC_OUT_RGB_BIAS__MASK 0x00008000 +#define NV10_3D_RC_OUT_RGB_BIAS__SHIFT 15 +#define NV10_3D_RC_OUT_RGB_BIAS_NONE 0x00000000 +#define NV10_3D_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF 0x00008000 +#define NV10_3D_RC_OUT_RGB_SCALE__MASK 0x00030000 +#define NV10_3D_RC_OUT_RGB_SCALE__SHIFT 16 +#define NV10_3D_RC_OUT_RGB_SCALE_NONE 0x00000000 +#define NV10_3D_RC_OUT_RGB_SCALE_SCALE_BY_TWO 0x00010000 +#define NV10_3D_RC_OUT_RGB_SCALE_SCALE_BY_FOUR 0x00020000 +#define NV10_3D_RC_OUT_RGB_SCALE_SCALE_BY_ONE_HALF 0x00030000 +#define NV10_3D_RC_OUT_RGB_OPERATION__MASK 0x38000000 +#define NV10_3D_RC_OUT_RGB_OPERATION__SHIFT 27 + +#define NV10_3D_RC_FINAL0 0x00000288 +#define NV10_3D_RC_FINAL0_D_INPUT__MASK 0x0000000f +#define NV10_3D_RC_FINAL0_D_INPUT__SHIFT 0 +#define NV10_3D_RC_FINAL0_D_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_FINAL0_D_INPUT_CONSTANT_COLOR0 0x00000001 +#define NV10_3D_RC_FINAL0_D_INPUT_CONSTANT_COLOR1 0x00000002 +#define NV10_3D_RC_FINAL0_D_INPUT_FOG 0x00000003 +#define NV10_3D_RC_FINAL0_D_INPUT_PRIMARY_COLOR 0x00000004 +#define NV10_3D_RC_FINAL0_D_INPUT_SECONDARY_COLOR 0x00000005 +#define NV10_3D_RC_FINAL0_D_INPUT_TEXTURE0 0x00000008 +#define NV10_3D_RC_FINAL0_D_INPUT_TEXTURE1 0x00000009 +#define NV10_3D_RC_FINAL0_D_INPUT_TEXTURE2 0x0000000a +#define NV10_3D_RC_FINAL0_D_INPUT_TEXTURE3 0x0000000b +#define NV10_3D_RC_FINAL0_D_INPUT_SPARE0 0x0000000c +#define NV10_3D_RC_FINAL0_D_INPUT_SPARE1 0x0000000d +#define NV10_3D_RC_FINAL0_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e +#define NV10_3D_RC_FINAL0_D_INPUT_E_TIMES_F 0x0000000f +#define NV10_3D_RC_FINAL0_D_COMPONENT_USAGE__MASK 0x00000010 +#define NV10_3D_RC_FINAL0_D_COMPONENT_USAGE__SHIFT 4 +#define NV10_3D_RC_FINAL0_D_COMPONENT_USAGE_RGB 0x00000000 +#define NV10_3D_RC_FINAL0_D_COMPONENT_USAGE_ALPHA 0x00000010 +#define NV10_3D_RC_FINAL0_D_MAPPING__MASK 0x000000e0 +#define NV10_3D_RC_FINAL0_D_MAPPING__SHIFT 5 +#define NV10_3D_RC_FINAL0_D_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_FINAL0_D_MAPPING_UNSIGNED_INVERT 0x00000020 +#define NV10_3D_RC_FINAL0_D_MAPPING_EXPAND_NORMAL 0x00000040 +#define NV10_3D_RC_FINAL0_D_MAPPING_EXPAND_NEGATE 0x00000060 +#define NV10_3D_RC_FINAL0_D_MAPPING_HALF_BIAS_NORMAL 0x00000080 +#define NV10_3D_RC_FINAL0_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0 +#define NV10_3D_RC_FINAL0_D_MAPPING_SIGNED_IDENTITY 0x000000c0 +#define NV10_3D_RC_FINAL0_D_MAPPING_SIGNED_NEGATE 0x000000e0 +#define NV10_3D_RC_FINAL0_C_INPUT__MASK 0x00000f00 +#define NV10_3D_RC_FINAL0_C_INPUT__SHIFT 8 +#define NV10_3D_RC_FINAL0_C_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_FINAL0_C_INPUT_CONSTANT_COLOR0 0x00000100 +#define NV10_3D_RC_FINAL0_C_INPUT_CONSTANT_COLOR1 0x00000200 +#define NV10_3D_RC_FINAL0_C_INPUT_FOG 0x00000300 +#define NV10_3D_RC_FINAL0_C_INPUT_PRIMARY_COLOR 0x00000400 +#define NV10_3D_RC_FINAL0_C_INPUT_SECONDARY_COLOR 0x00000500 +#define NV10_3D_RC_FINAL0_C_INPUT_TEXTURE0 0x00000800 +#define NV10_3D_RC_FINAL0_C_INPUT_TEXTURE1 0x00000900 +#define NV10_3D_RC_FINAL0_C_INPUT_TEXTURE2 0x00000a00 +#define NV10_3D_RC_FINAL0_C_INPUT_TEXTURE3 0x00000b00 +#define NV10_3D_RC_FINAL0_C_INPUT_SPARE0 0x00000c00 +#define NV10_3D_RC_FINAL0_C_INPUT_SPARE1 0x00000d00 +#define NV10_3D_RC_FINAL0_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 +#define NV10_3D_RC_FINAL0_C_INPUT_E_TIMES_F 0x00000f00 +#define NV10_3D_RC_FINAL0_C_COMPONENT_USAGE__MASK 0x00001000 +#define NV10_3D_RC_FINAL0_C_COMPONENT_USAGE__SHIFT 12 +#define NV10_3D_RC_FINAL0_C_COMPONENT_USAGE_RGB 0x00000000 +#define NV10_3D_RC_FINAL0_C_COMPONENT_USAGE_ALPHA 0x00001000 +#define NV10_3D_RC_FINAL0_C_MAPPING__MASK 0x0000e000 +#define NV10_3D_RC_FINAL0_C_MAPPING__SHIFT 13 +#define NV10_3D_RC_FINAL0_C_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_FINAL0_C_MAPPING_UNSIGNED_INVERT 0x00002000 +#define NV10_3D_RC_FINAL0_C_MAPPING_EXPAND_NORMAL 0x00004000 +#define NV10_3D_RC_FINAL0_C_MAPPING_EXPAND_NEGATE 0x00006000 +#define NV10_3D_RC_FINAL0_C_MAPPING_HALF_BIAS_NORMAL 0x00008000 +#define NV10_3D_RC_FINAL0_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000 +#define NV10_3D_RC_FINAL0_C_MAPPING_SIGNED_IDENTITY 0x0000c000 +#define NV10_3D_RC_FINAL0_C_MAPPING_SIGNED_NEGATE 0x0000e000 +#define NV10_3D_RC_FINAL0_B_INPUT__MASK 0x000f0000 +#define NV10_3D_RC_FINAL0_B_INPUT__SHIFT 16 +#define NV10_3D_RC_FINAL0_B_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_FINAL0_B_INPUT_CONSTANT_COLOR0 0x00010000 +#define NV10_3D_RC_FINAL0_B_INPUT_CONSTANT_COLOR1 0x00020000 +#define NV10_3D_RC_FINAL0_B_INPUT_FOG 0x00030000 +#define NV10_3D_RC_FINAL0_B_INPUT_PRIMARY_COLOR 0x00040000 +#define NV10_3D_RC_FINAL0_B_INPUT_SECONDARY_COLOR 0x00050000 +#define NV10_3D_RC_FINAL0_B_INPUT_TEXTURE0 0x00080000 +#define NV10_3D_RC_FINAL0_B_INPUT_TEXTURE1 0x00090000 +#define NV10_3D_RC_FINAL0_B_INPUT_TEXTURE2 0x000a0000 +#define NV10_3D_RC_FINAL0_B_INPUT_TEXTURE3 0x000b0000 +#define NV10_3D_RC_FINAL0_B_INPUT_SPARE0 0x000c0000 +#define NV10_3D_RC_FINAL0_B_INPUT_SPARE1 0x000d0000 +#define NV10_3D_RC_FINAL0_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 +#define NV10_3D_RC_FINAL0_B_INPUT_E_TIMES_F 0x000f0000 +#define NV10_3D_RC_FINAL0_B_COMPONENT_USAGE__MASK 0x00100000 +#define NV10_3D_RC_FINAL0_B_COMPONENT_USAGE__SHIFT 20 +#define NV10_3D_RC_FINAL0_B_COMPONENT_USAGE_RGB 0x00000000 +#define NV10_3D_RC_FINAL0_B_COMPONENT_USAGE_ALPHA 0x00100000 +#define NV10_3D_RC_FINAL0_B_MAPPING__MASK 0x00e00000 +#define NV10_3D_RC_FINAL0_B_MAPPING__SHIFT 21 +#define NV10_3D_RC_FINAL0_B_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_FINAL0_B_MAPPING_UNSIGNED_INVERT 0x00200000 +#define NV10_3D_RC_FINAL0_B_MAPPING_EXPAND_NORMAL 0x00400000 +#define NV10_3D_RC_FINAL0_B_MAPPING_EXPAND_NEGATE 0x00600000 +#define NV10_3D_RC_FINAL0_B_MAPPING_HALF_BIAS_NORMAL 0x00800000 +#define NV10_3D_RC_FINAL0_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000 +#define NV10_3D_RC_FINAL0_B_MAPPING_SIGNED_IDENTITY 0x00c00000 +#define NV10_3D_RC_FINAL0_B_MAPPING_SIGNED_NEGATE 0x00e00000 +#define NV10_3D_RC_FINAL0_A_INPUT__MASK 0x0f000000 +#define NV10_3D_RC_FINAL0_A_INPUT__SHIFT 24 +#define NV10_3D_RC_FINAL0_A_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_FINAL0_A_INPUT_CONSTANT_COLOR0 0x01000000 +#define NV10_3D_RC_FINAL0_A_INPUT_CONSTANT_COLOR1 0x02000000 +#define NV10_3D_RC_FINAL0_A_INPUT_FOG 0x03000000 +#define NV10_3D_RC_FINAL0_A_INPUT_PRIMARY_COLOR 0x04000000 +#define NV10_3D_RC_FINAL0_A_INPUT_SECONDARY_COLOR 0x05000000 +#define NV10_3D_RC_FINAL0_A_INPUT_TEXTURE0 0x08000000 +#define NV10_3D_RC_FINAL0_A_INPUT_TEXTURE1 0x09000000 +#define NV10_3D_RC_FINAL0_A_INPUT_TEXTURE2 0x0a000000 +#define NV10_3D_RC_FINAL0_A_INPUT_TEXTURE3 0x0b000000 +#define NV10_3D_RC_FINAL0_A_INPUT_SPARE0 0x0c000000 +#define NV10_3D_RC_FINAL0_A_INPUT_SPARE1 0x0d000000 +#define NV10_3D_RC_FINAL0_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 +#define NV10_3D_RC_FINAL0_A_INPUT_E_TIMES_F 0x0f000000 +#define NV10_3D_RC_FINAL0_A_COMPONENT_USAGE__MASK 0x10000000 +#define NV10_3D_RC_FINAL0_A_COMPONENT_USAGE__SHIFT 28 +#define NV10_3D_RC_FINAL0_A_COMPONENT_USAGE_RGB 0x00000000 +#define NV10_3D_RC_FINAL0_A_COMPONENT_USAGE_ALPHA 0x10000000 +#define NV10_3D_RC_FINAL0_A_MAPPING__MASK 0xe0000000 +#define NV10_3D_RC_FINAL0_A_MAPPING__SHIFT 29 +#define NV10_3D_RC_FINAL0_A_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_FINAL0_A_MAPPING_UNSIGNED_INVERT 0x20000000 +#define NV10_3D_RC_FINAL0_A_MAPPING_EXPAND_NORMAL 0x40000000 +#define NV10_3D_RC_FINAL0_A_MAPPING_EXPAND_NEGATE 0x60000000 +#define NV10_3D_RC_FINAL0_A_MAPPING_HALF_BIAS_NORMAL 0x80000000 +#define NV10_3D_RC_FINAL0_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000 +#define NV10_3D_RC_FINAL0_A_MAPPING_SIGNED_IDENTITY 0xc0000000 +#define NV10_3D_RC_FINAL0_A_MAPPING_SIGNED_NEGATE 0xe0000000 + +#define NV10_3D_RC_FINAL1 0x0000028c +#define NV10_3D_RC_FINAL1_COLOR_SUM_CLAMP 0x00000080 +#define NV10_3D_RC_FINAL1_G_INPUT__MASK 0x00000f00 +#define NV10_3D_RC_FINAL1_G_INPUT__SHIFT 8 +#define NV10_3D_RC_FINAL1_G_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_FINAL1_G_INPUT_CONSTANT_COLOR0 0x00000100 +#define NV10_3D_RC_FINAL1_G_INPUT_CONSTANT_COLOR1 0x00000200 +#define NV10_3D_RC_FINAL1_G_INPUT_FOG 0x00000300 +#define NV10_3D_RC_FINAL1_G_INPUT_PRIMARY_COLOR 0x00000400 +#define NV10_3D_RC_FINAL1_G_INPUT_SECONDARY_COLOR 0x00000500 +#define NV10_3D_RC_FINAL1_G_INPUT_TEXTURE0 0x00000800 +#define NV10_3D_RC_FINAL1_G_INPUT_TEXTURE1 0x00000900 +#define NV10_3D_RC_FINAL1_G_INPUT_TEXTURE2 0x00000a00 +#define NV10_3D_RC_FINAL1_G_INPUT_TEXTURE3 0x00000b00 +#define NV10_3D_RC_FINAL1_G_INPUT_SPARE0 0x00000c00 +#define NV10_3D_RC_FINAL1_G_INPUT_SPARE1 0x00000d00 +#define NV10_3D_RC_FINAL1_G_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 +#define NV10_3D_RC_FINAL1_G_INPUT_E_TIMES_F 0x00000f00 +#define NV10_3D_RC_FINAL1_G_COMPONENT_USAGE__MASK 0x00001000 +#define NV10_3D_RC_FINAL1_G_COMPONENT_USAGE__SHIFT 12 +#define NV10_3D_RC_FINAL1_G_COMPONENT_USAGE_RGB 0x00000000 +#define NV10_3D_RC_FINAL1_G_COMPONENT_USAGE_ALPHA 0x00001000 +#define NV10_3D_RC_FINAL1_G_MAPPING__MASK 0x0000e000 +#define NV10_3D_RC_FINAL1_G_MAPPING__SHIFT 13 +#define NV10_3D_RC_FINAL1_G_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_FINAL1_G_MAPPING_UNSIGNED_INVERT 0x00002000 +#define NV10_3D_RC_FINAL1_G_MAPPING_EXPAND_NORMAL 0x00004000 +#define NV10_3D_RC_FINAL1_G_MAPPING_EXPAND_NEGATE 0x00006000 +#define NV10_3D_RC_FINAL1_G_MAPPING_HALF_BIAS_NORMAL 0x00008000 +#define NV10_3D_RC_FINAL1_G_MAPPING_HALF_BIAS_NEGATE 0x0000a000 +#define NV10_3D_RC_FINAL1_G_MAPPING_SIGNED_IDENTITY 0x0000c000 +#define NV10_3D_RC_FINAL1_G_MAPPING_SIGNED_NEGATE 0x0000e000 +#define NV10_3D_RC_FINAL1_F_INPUT__MASK 0x000f0000 +#define NV10_3D_RC_FINAL1_F_INPUT__SHIFT 16 +#define NV10_3D_RC_FINAL1_F_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_FINAL1_F_INPUT_CONSTANT_COLOR0 0x00010000 +#define NV10_3D_RC_FINAL1_F_INPUT_CONSTANT_COLOR1 0x00020000 +#define NV10_3D_RC_FINAL1_F_INPUT_FOG 0x00030000 +#define NV10_3D_RC_FINAL1_F_INPUT_PRIMARY_COLOR 0x00040000 +#define NV10_3D_RC_FINAL1_F_INPUT_SECONDARY_COLOR 0x00050000 +#define NV10_3D_RC_FINAL1_F_INPUT_TEXTURE0 0x00080000 +#define NV10_3D_RC_FINAL1_F_INPUT_TEXTURE1 0x00090000 +#define NV10_3D_RC_FINAL1_F_INPUT_TEXTURE2 0x000a0000 +#define NV10_3D_RC_FINAL1_F_INPUT_TEXTURE3 0x000b0000 +#define NV10_3D_RC_FINAL1_F_INPUT_SPARE0 0x000c0000 +#define NV10_3D_RC_FINAL1_F_INPUT_SPARE1 0x000d0000 +#define NV10_3D_RC_FINAL1_F_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 +#define NV10_3D_RC_FINAL1_F_INPUT_E_TIMES_F 0x000f0000 +#define NV10_3D_RC_FINAL1_F_COMPONENT_USAGE__MASK 0x00100000 +#define NV10_3D_RC_FINAL1_F_COMPONENT_USAGE__SHIFT 20 +#define NV10_3D_RC_FINAL1_F_COMPONENT_USAGE_RGB 0x00000000 +#define NV10_3D_RC_FINAL1_F_COMPONENT_USAGE_ALPHA 0x00100000 +#define NV10_3D_RC_FINAL1_F_MAPPING__MASK 0x00e00000 +#define NV10_3D_RC_FINAL1_F_MAPPING__SHIFT 21 +#define NV10_3D_RC_FINAL1_F_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_FINAL1_F_MAPPING_UNSIGNED_INVERT 0x00200000 +#define NV10_3D_RC_FINAL1_F_MAPPING_EXPAND_NORMAL 0x00400000 +#define NV10_3D_RC_FINAL1_F_MAPPING_EXPAND_NEGATE 0x00600000 +#define NV10_3D_RC_FINAL1_F_MAPPING_HALF_BIAS_NORMAL 0x00800000 +#define NV10_3D_RC_FINAL1_F_MAPPING_HALF_BIAS_NEGATE 0x00a00000 +#define NV10_3D_RC_FINAL1_F_MAPPING_SIGNED_IDENTITY 0x00c00000 +#define NV10_3D_RC_FINAL1_F_MAPPING_SIGNED_NEGATE 0x00e00000 +#define NV10_3D_RC_FINAL1_E_INPUT__MASK 0x0f000000 +#define NV10_3D_RC_FINAL1_E_INPUT__SHIFT 24 +#define NV10_3D_RC_FINAL1_E_INPUT_ZERO 0x00000000 +#define NV10_3D_RC_FINAL1_E_INPUT_CONSTANT_COLOR0 0x01000000 +#define NV10_3D_RC_FINAL1_E_INPUT_CONSTANT_COLOR1 0x02000000 +#define NV10_3D_RC_FINAL1_E_INPUT_FOG 0x03000000 +#define NV10_3D_RC_FINAL1_E_INPUT_PRIMARY_COLOR 0x04000000 +#define NV10_3D_RC_FINAL1_E_INPUT_SECONDARY_COLOR 0x05000000 +#define NV10_3D_RC_FINAL1_E_INPUT_TEXTURE0 0x08000000 +#define NV10_3D_RC_FINAL1_E_INPUT_TEXTURE1 0x09000000 +#define NV10_3D_RC_FINAL1_E_INPUT_TEXTURE2 0x0a000000 +#define NV10_3D_RC_FINAL1_E_INPUT_TEXTURE3 0x0b000000 +#define NV10_3D_RC_FINAL1_E_INPUT_SPARE0 0x0c000000 +#define NV10_3D_RC_FINAL1_E_INPUT_SPARE1 0x0d000000 +#define NV10_3D_RC_FINAL1_E_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 +#define NV10_3D_RC_FINAL1_E_INPUT_E_TIMES_F 0x0f000000 +#define NV10_3D_RC_FINAL1_E_COMPONENT_USAGE__MASK 0x10000000 +#define NV10_3D_RC_FINAL1_E_COMPONENT_USAGE__SHIFT 28 +#define NV10_3D_RC_FINAL1_E_COMPONENT_USAGE_RGB 0x00000000 +#define NV10_3D_RC_FINAL1_E_COMPONENT_USAGE_ALPHA 0x10000000 +#define NV10_3D_RC_FINAL1_E_MAPPING__MASK 0xe0000000 +#define NV10_3D_RC_FINAL1_E_MAPPING__SHIFT 29 +#define NV10_3D_RC_FINAL1_E_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV10_3D_RC_FINAL1_E_MAPPING_UNSIGNED_INVERT 0x20000000 +#define NV10_3D_RC_FINAL1_E_MAPPING_EXPAND_NORMAL 0x40000000 +#define NV10_3D_RC_FINAL1_E_MAPPING_EXPAND_NEGATE 0x60000000 +#define NV10_3D_RC_FINAL1_E_MAPPING_HALF_BIAS_NORMAL 0x80000000 +#define NV10_3D_RC_FINAL1_E_MAPPING_HALF_BIAS_NEGATE 0xa0000000 +#define NV10_3D_RC_FINAL1_E_MAPPING_SIGNED_IDENTITY 0xc0000000 +#define NV10_3D_RC_FINAL1_E_MAPPING_SIGNED_NEGATE 0xe0000000 + + +#define NV17_3D_DMA_HIERZ 0x000001b0 + +#define NV17_3D_HIERZ_PITCH 0x00000d5c + +#define NV17_3D_HIERZ_OFFSET 0x00000d60 + +#define NV17_3D_HIERZ_FILL_VALUE 0x00000d68 + +#define NV17_3D_HIERZ_BUFFER_CLEAR 0x00000d6c + +#define NV17_3D_UNK0D74 0x00000d74 + +#define NV17_3D_UNK0D84 0x00000d84 + + +#define NV17_3D_HIERZ_WINDOW 0x00001638 + + +#define NV17_3D_HIERZ_WINDOW_X 0x00001638 + +#define NV17_3D_HIERZ_WINDOW_Y 0x0000163c + +#define NV17_3D_HIERZ_WINDOW_Z 0x00001640 + +#define NV17_3D_HIERZ_WINDOW_W 0x00001644 + +#define NV17_3D_HIERZ_ENABLE 0x00001658 + + +#define NV17_3D_UNK01AC 0x000001ac + +#define NV17_3D_UNK0258 0x00000258 + +#define NV17_3D_UNK025C 0x0000025c + +#define NV10_3D_UNK0290 0x00000290 + +#define NV17_3D_COLOR_MASK_ENABLE 0x000002bc + +#define NV10_3D_UNK03F0 0x000003f0 + +#define NV10_3D_UNK03F4 0x000003f4 + +#define NV17_3D_ZCLEAR_ENABLE 0x000003f8 + +#define NV17_3D_ZCLEAR_VALUE 0x000003fc +#define NV17_3D_ZCLEAR_VALUE_DEPTH__MASK 0xffffff00 +#define NV17_3D_ZCLEAR_VALUE_DEPTH__SHIFT 8 +#define NV17_3D_ZCLEAR_VALUE_SEQUENCE__MASK 0x000000ff +#define NV17_3D_ZCLEAR_VALUE_SEQUENCE__SHIFT 0 + +#define NV10_3D_POINT_SIZE 0x000003ec + +#define NV10_3D_POINT_PARAMETER(i0) (0x000006f8 + 0x4*(i0)) +#define NV10_3D_POINT_PARAMETER__ESIZE 0x00000004 +#define NV10_3D_POINT_PARAMETER__LEN 0x00000008 + +#define NV11_3D_COLOR_LOGIC_OP 0x00000d40 + +#define NV11_3D_COLOR_LOGIC_OP_ENABLE 0x00000d40 + +#define NV11_3D_COLOR_LOGIC_OP_OP 0x00000d44 +#define NV11_3D_COLOR_LOGIC_OP_OP_CLEAR 0x00001500 +#define NV11_3D_COLOR_LOGIC_OP_OP_AND 0x00001501 +#define NV11_3D_COLOR_LOGIC_OP_OP_AND_REVERSE 0x00001502 +#define NV11_3D_COLOR_LOGIC_OP_OP_COPY 0x00001503 +#define NV11_3D_COLOR_LOGIC_OP_OP_AND_INVERTED 0x00001504 +#define NV11_3D_COLOR_LOGIC_OP_OP_NOOP 0x00001505 +#define NV11_3D_COLOR_LOGIC_OP_OP_XOR 0x00001506 +#define NV11_3D_COLOR_LOGIC_OP_OP_OR 0x00001507 +#define NV11_3D_COLOR_LOGIC_OP_OP_NOR 0x00001508 +#define NV11_3D_COLOR_LOGIC_OP_OP_EQUIV 0x00001509 +#define NV11_3D_COLOR_LOGIC_OP_OP_INVERT 0x0000150a +#define NV11_3D_COLOR_LOGIC_OP_OP_OR_REVERSE 0x0000150b +#define NV11_3D_COLOR_LOGIC_OP_OP_COPY_INVERTED 0x0000150c +#define NV11_3D_COLOR_LOGIC_OP_OP_OR_INVERTED 0x0000150d +#define NV11_3D_COLOR_LOGIC_OP_OP_NAND 0x0000150e +#define NV11_3D_COLOR_LOGIC_OP_OP_SET 0x0000150f + + +#endif /* NV10_3D_XML */ diff --git a/src/mesa/drivers/dri/nouveau/nv10_context.c b/src/mesa/drivers/dri/nouveau/nv10_context.c index de2c93ec815..8074b4bb472 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_context.c +++ b/src/mesa/drivers/dri/nouveau/nv10_context.c @@ -29,7 +29,8 @@ #include "nouveau_context.h" #include "nouveau_fbo.h" #include "nouveau_util.h" -#include "nouveau_class.h" +#include "nv_object.xml.h" +#include "nv10_3d.xml.h" #include "nv04_driver.h" #include "nv10_driver.h" @@ -157,9 +158,9 @@ nv17_zclear(struct gl_context *ctx, GLbitfield *buffers) nfb->base._DepthBuffer->Wrapped)->surface; /* Clear the hierarchical depth buffer */ - BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_FILL_VALUE, 1); + BEGIN_RING(chan, celsius, NV17_3D_HIERZ_FILL_VALUE, 1); OUT_RING(chan, pack_zs_f(s->format, ctx->Depth.Clear, 0)); - BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_BUFFER_CLEAR, 1); + BEGIN_RING(chan, celsius, NV17_3D_HIERZ_BUFFER_CLEAR, 1); OUT_RING(chan, 1); /* Mark the depth buffer as cleared */ @@ -201,33 +202,33 @@ nv10_hwctx_init(struct gl_context *ctx) struct nouveau_hw_state *hw = &to_nouveau_context(ctx)->hw; int i; - BEGIN_RING(chan, celsius, NV10TCL_DMA_NOTIFY, 1); + BEGIN_RING(chan, celsius, NV10_3D_DMA_NOTIFY, 1); OUT_RING(chan, hw->ntfy->handle); - BEGIN_RING(chan, celsius, NV10TCL_DMA_IN_MEMORY0, 3); + BEGIN_RING(chan, celsius, NV10_3D_DMA_TEXTURE0, 3); OUT_RING(chan, chan->vram->handle); OUT_RING(chan, chan->gart->handle); OUT_RING(chan, chan->gart->handle); - BEGIN_RING(chan, celsius, NV10TCL_DMA_IN_MEMORY2, 2); + BEGIN_RING(chan, celsius, NV10_3D_DMA_COLOR, 2); OUT_RING(chan, chan->vram->handle); OUT_RING(chan, chan->vram->handle); - BEGIN_RING(chan, celsius, NV10TCL_NOP, 1); + BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_RT_HORIZ, 2); + BEGIN_RING(chan, celsius, NV10_3D_RT_HORIZ, 2); OUT_RING(chan, 0); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_HORIZ(0), 1); + BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_HORIZ(0), 1); OUT_RING(chan, 0x7ff << 16 | 0x800); - BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_VERT(0), 1); + BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_VERT(0), 1); OUT_RING(chan, 0x7ff << 16 | 0x800); for (i = 1; i < 8; i++) { - BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_HORIZ(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_HORIZ(i), 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_VERT(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_VERT(i), 1); OUT_RING(chan, 0); } @@ -236,18 +237,18 @@ nv10_hwctx_init(struct gl_context *ctx) BEGIN_RING(chan, celsius, 0x3f4, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_NOP, 1); + BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1); OUT_RING(chan, 0); if (context_chipset(ctx) >= 0x17) { - BEGIN_RING(chan, celsius, NV17TCL_DMA_IN_MEMORY4, 2); + BEGIN_RING(chan, celsius, NV17_3D_UNK01AC, 2); OUT_RING(chan, chan->vram->handle); OUT_RING(chan, chan->vram->handle); BEGIN_RING(chan, celsius, 0xd84, 1); OUT_RING(chan, 0x3); - BEGIN_RING(chan, celsius, NV17TCL_COLOR_MASK_ENABLE, 1); + BEGIN_RING(chan, celsius, NV17_3D_COLOR_MASK_ENABLE, 1); OUT_RING(chan, 1); } @@ -257,41 +258,41 @@ nv10_hwctx_init(struct gl_context *ctx) OUT_RING(chan, 1); OUT_RING(chan, 2); - BEGIN_RING(chan, celsius, NV10TCL_NOP, 1); + BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1); OUT_RING(chan, 0); } - BEGIN_RING(chan, celsius, NV10TCL_NOP, 1); + BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1); OUT_RING(chan, 0); /* Set state */ - BEGIN_RING(chan, celsius, NV10TCL_FOG_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_FOG_ENABLE, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_ALPHA_FUNC_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_ALPHA_FUNC_ENABLE, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_ALPHA_FUNC_FUNC, 2); + BEGIN_RING(chan, celsius, NV10_3D_ALPHA_FUNC_FUNC, 2); OUT_RING(chan, 0x207); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_TX_ENABLE(0), 2); + BEGIN_RING(chan, celsius, NV10_3D_TEX_ENABLE(0), 2); OUT_RING(chan, 0); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_BLEND_FUNC_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_BLEND_FUNC_ENABLE, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_DITHER_ENABLE, 2); + BEGIN_RING(chan, celsius, NV10_3D_DITHER_ENABLE, 2); OUT_RING(chan, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_LINE_SMOOTH_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_LINE_SMOOTH_ENABLE, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_VERTEX_WEIGHT_ENABLE, 2); + BEGIN_RING(chan, celsius, NV10_3D_VERTEX_WEIGHT_ENABLE, 2); OUT_RING(chan, 0); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_BLEND_FUNC_SRC, 4); + BEGIN_RING(chan, celsius, NV10_3D_BLEND_FUNC_SRC, 4); OUT_RING(chan, 1); OUT_RING(chan, 0); OUT_RING(chan, 0); OUT_RING(chan, 0x8006); - BEGIN_RING(chan, celsius, NV10TCL_STENCIL_MASK, 8); + BEGIN_RING(chan, celsius, NV10_3D_STENCIL_MASK, 8); OUT_RING(chan, 0xff); OUT_RING(chan, 0x207); OUT_RING(chan, 0); @@ -300,105 +301,105 @@ nv10_hwctx_init(struct gl_context *ctx) OUT_RING(chan, 0x1e00); OUT_RING(chan, 0x1e00); OUT_RING(chan, 0x1d01); - BEGIN_RING(chan, celsius, NV10TCL_NORMALIZE_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_NORMALIZE_ENABLE, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_FOG_ENABLE, 2); + BEGIN_RING(chan, celsius, NV10_3D_FOG_ENABLE, 2); OUT_RING(chan, 0); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_LIGHT_MODEL, 1); + BEGIN_RING(chan, celsius, NV10_3D_LIGHT_MODEL, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_SEPARATE_SPECULAR_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_SEPARATE_SPECULAR_ENABLE, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_ENABLED_LIGHTS, 1); + BEGIN_RING(chan, celsius, NV10_3D_ENABLED_LIGHTS, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_POLYGON_OFFSET_POINT_ENABLE, 3); + BEGIN_RING(chan, celsius, NV10_3D_POLYGON_OFFSET_POINT_ENABLE, 3); OUT_RING(chan, 0); OUT_RING(chan, 0); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_DEPTH_FUNC, 1); + BEGIN_RING(chan, celsius, NV10_3D_DEPTH_FUNC, 1); OUT_RING(chan, 0x201); - BEGIN_RING(chan, celsius, NV10TCL_DEPTH_WRITE_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_DEPTH_WRITE_ENABLE, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_DEPTH_TEST_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_DEPTH_TEST_ENABLE, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_POLYGON_OFFSET_FACTOR, 2); + BEGIN_RING(chan, celsius, NV10_3D_POLYGON_OFFSET_FACTOR, 2); OUT_RING(chan, 0); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_POINT_SIZE, 1); + BEGIN_RING(chan, celsius, NV10_3D_POINT_SIZE, 1); OUT_RING(chan, 8); - BEGIN_RING(chan, celsius, NV10TCL_POINT_PARAMETERS_ENABLE, 2); + BEGIN_RING(chan, celsius, NV10_3D_POINT_PARAMETERS_ENABLE, 2); OUT_RING(chan, 0); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_LINE_WIDTH, 1); + BEGIN_RING(chan, celsius, NV10_3D_LINE_WIDTH, 1); OUT_RING(chan, 8); - BEGIN_RING(chan, celsius, NV10TCL_LINE_SMOOTH_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_LINE_SMOOTH_ENABLE, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_POLYGON_MODE_FRONT, 2); + BEGIN_RING(chan, celsius, NV10_3D_POLYGON_MODE_FRONT, 2); OUT_RING(chan, 0x1b02); OUT_RING(chan, 0x1b02); - BEGIN_RING(chan, celsius, NV10TCL_CULL_FACE, 2); + BEGIN_RING(chan, celsius, NV10_3D_CULL_FACE, 2); OUT_RING(chan, 0x405); OUT_RING(chan, 0x901); - BEGIN_RING(chan, celsius, NV10TCL_POLYGON_SMOOTH_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_POLYGON_SMOOTH_ENABLE, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_CULL_FACE_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_CULL_FACE_ENABLE, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_TX_GEN_MODE_S(0), 8); + BEGIN_RING(chan, celsius, NV10_3D_TEX_GEN_MODE(0, 0), 8); for (i = 0; i < 8; i++) OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_TX_MATRIX_ENABLE(0), 2); + BEGIN_RING(chan, celsius, NV10_3D_TEX_MATRIX_ENABLE(0), 2); OUT_RING(chan, 0); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_FOG_EQUATION_CONSTANT, 3); + BEGIN_RING(chan, celsius, NV10_3D_FOG_COEFF(0), 3); OUT_RING(chan, 0x3fc00000); /* -1.50 */ OUT_RING(chan, 0xbdb8aa0a); /* -0.09 */ OUT_RING(chan, 0); /* 0.00 */ - BEGIN_RING(chan, celsius, NV10TCL_NOP, 1); + BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_FOG_MODE, 2); + BEGIN_RING(chan, celsius, NV10_3D_FOG_MODE, 2); OUT_RING(chan, 0x802); OUT_RING(chan, 2); /* for some reason VIEW_MATRIX_ENABLE need to be 6 instead of 4 when * using texturing, except when using the texture matrix */ - BEGIN_RING(chan, celsius, NV10TCL_VIEW_MATRIX_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_VIEW_MATRIX_ENABLE, 1); OUT_RING(chan, 6); - BEGIN_RING(chan, celsius, NV10TCL_COLOR_MASK, 1); + BEGIN_RING(chan, celsius, NV10_3D_COLOR_MASK, 1); OUT_RING(chan, 0x01010101); /* Set vertex component */ - BEGIN_RING(chan, celsius, NV10TCL_VERTEX_COL_4F_R, 4); + BEGIN_RING(chan, celsius, NV10_3D_VERTEX_COL_4F_R, 4); OUT_RINGf(chan, 1.0); OUT_RINGf(chan, 0.0); OUT_RINGf(chan, 0.0); OUT_RINGf(chan, 1.0); - BEGIN_RING(chan, celsius, NV10TCL_VERTEX_COL2_3F_R, 3); + BEGIN_RING(chan, celsius, NV10_3D_VERTEX_COL2_3F_R, 3); OUT_RING(chan, 0); OUT_RING(chan, 0); OUT_RING(chan, 0); - BEGIN_RING(chan, celsius, NV10TCL_VERTEX_NOR_3F_X, 3); + BEGIN_RING(chan, celsius, NV10_3D_VERTEX_NOR_3F_X, 3); OUT_RING(chan, 0); OUT_RING(chan, 0); OUT_RINGf(chan, 1.0); - BEGIN_RING(chan, celsius, NV10TCL_VERTEX_TX0_4F_S, 4); + BEGIN_RING(chan, celsius, NV10_3D_VERTEX_TX0_4F_S, 4); OUT_RINGf(chan, 0.0); OUT_RINGf(chan, 0.0); OUT_RINGf(chan, 0.0); OUT_RINGf(chan, 1.0); - BEGIN_RING(chan, celsius, NV10TCL_VERTEX_TX1_4F_S, 4); + BEGIN_RING(chan, celsius, NV10_3D_VERTEX_TX1_4F_S, 4); OUT_RINGf(chan, 0.0); OUT_RINGf(chan, 0.0); OUT_RINGf(chan, 0.0); OUT_RINGf(chan, 1.0); - BEGIN_RING(chan, celsius, NV10TCL_VERTEX_FOG_1F, 1); + BEGIN_RING(chan, celsius, NV10_3D_VERTEX_FOG_1F, 1); OUT_RINGf(chan, 0.0); - BEGIN_RING(chan, celsius, NV10TCL_EDGEFLAG_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_EDGEFLAG_ENABLE, 1); OUT_RING(chan, 1); - BEGIN_RING(chan, celsius, NV10TCL_DEPTH_RANGE_NEAR, 2); + BEGIN_RING(chan, celsius, NV10_3D_DEPTH_RANGE_NEAR, 2); OUT_RINGf(chan, 0.0); OUT_RINGf(chan, 16777216.0); @@ -456,11 +457,11 @@ nv10_context_create(struct nouveau_screen *screen, const struct gl_config *visua /* 3D engine. */ if (context_chipset(ctx) >= 0x17) - celsius_class = NV17TCL; + celsius_class = NV17_3D; else if (context_chipset(ctx) >= 0x11) - celsius_class = NV11TCL; + celsius_class = NV11_3D; else - celsius_class = NV10TCL; + celsius_class = NV10_3D; ret = nouveau_grobj_alloc(context_chan(ctx), 0xbeef0001, celsius_class, &nctx->hw.eng3d); diff --git a/src/mesa/drivers/dri/nouveau/nv10_render.c b/src/mesa/drivers/dri/nouveau/nv10_render.c index 7115739b5aa..20fb4478426 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_render.c +++ b/src/mesa/drivers/dri/nouveau/nv10_render.c @@ -26,7 +26,7 @@ #include "nouveau_driver.h" #include "nouveau_context.h" -#include "nouveau_class.h" +#include "nv10_3d.xml.h" #include "nv10_driver.h" #define NUM_VERTEX_ATTRS 8 @@ -39,37 +39,37 @@ nv10_emit_material(struct gl_context *ctx, struct nouveau_array *a, static struct nouveau_attr_info nv10_vertex_attrs[VERT_ATTRIB_MAX] = { [VERT_ATTRIB_POS] = { .vbo_index = 0, - .imm_method = NV10TCL_VERTEX_POS_4F_X, + .imm_method = NV10_3D_VERTEX_POS_4F_X, .imm_fields = 4, }, [VERT_ATTRIB_COLOR0] = { .vbo_index = 1, - .imm_method = NV10TCL_VERTEX_COL_4F_R, + .imm_method = NV10_3D_VERTEX_COL_4F_R, .imm_fields = 4, }, [VERT_ATTRIB_COLOR1] = { .vbo_index = 2, - .imm_method = NV10TCL_VERTEX_COL2_3F_R, + .imm_method = NV10_3D_VERTEX_COL2_3F_R, .imm_fields = 3, }, [VERT_ATTRIB_TEX0] = { .vbo_index = 3, - .imm_method = NV10TCL_VERTEX_TX0_4F_S, + .imm_method = NV10_3D_VERTEX_TX0_4F_S, .imm_fields = 4, }, [VERT_ATTRIB_TEX1] = { .vbo_index = 4, - .imm_method = NV10TCL_VERTEX_TX1_4F_S, + .imm_method = NV10_3D_VERTEX_TX1_4F_S, .imm_fields = 4, }, [VERT_ATTRIB_NORMAL] = { .vbo_index = 5, - .imm_method = NV10TCL_VERTEX_NOR_3F_X, + .imm_method = NV10_3D_VERTEX_NOR_3F_X, .imm_fields = 3, }, [VERT_ATTRIB_FOG] = { .vbo_index = 7, - .imm_method = NV10TCL_VERTEX_FOG_1F, + .imm_method = NV10_3D_VERTEX_FOG_1F, .imm_fields = 1, }, [VERT_ATTRIB_GENERIC0] = { @@ -94,12 +94,12 @@ get_hw_format(int type) { switch (type) { case GL_FLOAT: - return NV10TCL_VTXFMT_TYPE_FLOAT; + return NV10_3D_VTXBUF_FMT_TYPE_V32_FLOAT; case GL_SHORT: case GL_UNSIGNED_SHORT: - return NV10TCL_VTXFMT_TYPE_SHORT; + return NV10_3D_VTXBUF_FMT_TYPE_V16_SNORM; case GL_UNSIGNED_BYTE: - return NV10TCL_VTXFMT_TYPE_BYTE_RGBA; + return NV10_3D_VTXBUF_FMT_TYPE_B8G8R8A8_UNORM; default: assert(0); } @@ -122,13 +122,13 @@ nv10_render_set_format(struct gl_context *ctx) get_hw_format(a->type); if (attr == VERT_ATTRIB_POS && a->fields == 4) - hw_format |= NV10TCL_VTXFMT_POS_HOMOGENEOUS; + hw_format |= NV10_3D_VTXBUF_FMT_HOMOGENEOUS; } else { /* Unused attribute. */ - hw_format = NV10TCL_VTXFMT_TYPE_FLOAT; + hw_format = NV10_3D_VTXBUF_FMT_TYPE_V32_FLOAT; } - BEGIN_RING(chan, celsius, NV10TCL_VTXFMT(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_VTXBUF_FMT(i), 1); OUT_RING(chan, hw_format); } } @@ -145,7 +145,7 @@ nv10_render_bind_vertices(struct gl_context *ctx) struct nouveau_array *a = &render->attrs[attr]; nouveau_bo_markl(bctx, celsius, - NV10TCL_VTXBUF_ADDRESS(i), + NV10_3D_VTXBUF_OFFSET(i), a->bo, a->offset, NOUVEAU_BO_GART | NOUVEAU_BO_RD); } @@ -156,33 +156,33 @@ nv10_render_bind_vertices(struct gl_context *ctx) struct nouveau_grobj *celsius = context_eng3d(ctx) #define BATCH_VALIDATE() \ - BEGIN_RING(chan, celsius, NV10TCL_VERTEX_ARRAY_VALIDATE, 1); \ + BEGIN_RING(chan, celsius, NV10_3D_VTXBUF_VALIDATE, 1); \ OUT_RING(chan, 0) #define BATCH_BEGIN(prim) \ - BEGIN_RING(chan, celsius, NV10TCL_VERTEX_BUFFER_BEGIN_END, 1); \ + BEGIN_RING(chan, celsius, NV10_3D_VTXBUF_BEGIN_END, 1); \ OUT_RING(chan, prim) #define BATCH_END() \ - BEGIN_RING(chan, celsius, NV10TCL_VERTEX_BUFFER_BEGIN_END, 1); \ + BEGIN_RING(chan, celsius, NV10_3D_VTXBUF_BEGIN_END, 1); \ OUT_RING(chan, 0) #define MAX_PACKET 0x400 #define MAX_OUT_L 0x100 #define BATCH_PACKET_L(n) \ - BEGIN_RING_NI(chan, celsius, NV10TCL_VERTEX_BUFFER_DRAW_ARRAYS, n) + BEGIN_RING_NI(chan, celsius, NV10_3D_VTXBUF_BATCH, n) #define BATCH_OUT_L(i, n) \ OUT_RING(chan, ((n) - 1) << 24 | (i)) #define MAX_OUT_I16 0x2 #define BATCH_PACKET_I16(n) \ - BEGIN_RING_NI(chan, celsius, NV10TCL_VB_ELEMENT_U16, n) + BEGIN_RING_NI(chan, celsius, NV10_3D_VTXBUF_ELEMENT_U16, n) #define BATCH_OUT_I16(i0, i1) \ OUT_RING(chan, (i1) << 16 | (i0)) #define MAX_OUT_I32 0x1 #define BATCH_PACKET_I32(n) \ - BEGIN_RING_NI(chan, celsius, NV10TCL_VB_ELEMENT_U32, n) + BEGIN_RING_NI(chan, celsius, NV10_3D_VTXBUF_ELEMENT_U32, n) #define BATCH_OUT_I32(i) \ OUT_RING(chan, i) diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_fb.c b/src/mesa/drivers/dri/nouveau/nv10_state_fb.c index 0fda9faf49b..05055474218 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_state_fb.c +++ b/src/mesa/drivers/dri/nouveau/nv10_state_fb.c @@ -27,8 +27,9 @@ #include "nouveau_driver.h" #include "nouveau_context.h" #include "nouveau_fbo.h" -#include "nouveau_class.h" #include "nouveau_util.h" +#include "nv_object.xml.h" +#include "nv10_3d.xml.h" #include "nv10_driver.h" static inline unsigned @@ -36,15 +37,15 @@ get_rt_format(gl_format format) { switch (format) { case MESA_FORMAT_XRGB8888: - return 0x05; + return NV10_3D_RT_FORMAT_COLOR_X8R8G8B8; case MESA_FORMAT_ARGB8888: - return 0x08; + return NV10_3D_RT_FORMAT_COLOR_A8R8G8B8; case MESA_FORMAT_RGB565: - return 0x03; + return NV10_3D_RT_FORMAT_COLOR_R5G6B5; case MESA_FORMAT_Z16: - return 0x10; + return NV10_3D_RT_FORMAT_DEPTH_Z16; case MESA_FORMAT_Z24_S8: - return 0x0; + return NV10_3D_RT_FORMAT_DEPTH_Z24S8; default: assert(0); } @@ -68,20 +69,20 @@ setup_hierz_buffer(struct gl_context *ctx) 0, NOUVEAU_BO_TILE_ZETA, &nfb->hierz.bo); } - nouveau_bo_markl(bctx, celsius, NV17TCL_LMA_DEPTH_BUFFER_OFFSET, + nouveau_bo_markl(bctx, celsius, NV17_3D_HIERZ_OFFSET, nfb->hierz.bo, 0, NOUVEAU_BO_VRAM | NOUVEAU_BO_RDWR); WAIT_RING(chan, 9); - BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_WINDOW_X, 4); + BEGIN_RING(chan, celsius, NV17_3D_HIERZ_WINDOW_X, 4); OUT_RINGf(chan, - 1792); OUT_RINGf(chan, - 2304 + fb->Height); OUT_RINGf(chan, fb->_DepthMaxF / 2); OUT_RINGf(chan, 0); - BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_BUFFER_PITCH, 1); + BEGIN_RING(chan, celsius, NV17_3D_HIERZ_PITCH, 1); OUT_RING(chan, pitch); - BEGIN_RING(chan, celsius, NV17TCL_LMA_DEPTH_ENABLE, 1); + BEGIN_RING(chan, celsius, NV17_3D_HIERZ_ENABLE, 1); OUT_RING(chan, 1); } @@ -93,7 +94,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit) struct nouveau_bo_context *bctx = context_bctx(ctx, FRAMEBUFFER); struct gl_framebuffer *fb = ctx->DrawBuffer; struct nouveau_surface *s; - unsigned rt_format = NV10TCL_RT_FORMAT_TYPE_LINEAR; + unsigned rt_format = NV10_3D_RT_FORMAT_TYPE_LINEAR; unsigned rt_pitch = 0, zeta_pitch = 0; unsigned bo_flags = NOUVEAU_BO_VRAM | NOUVEAU_BO_RDWR; @@ -106,7 +107,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit) int i; for (i = 0; i < 6; i++) { - BEGIN_RING(chan, celsius, NV10TCL_NOP, 1); + BEGIN_RING(chan, celsius, NV04_GRAPH_NOP, 1); OUT_RING(chan, 0); } } @@ -119,7 +120,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit) rt_format |= get_rt_format(s->format); zeta_pitch = rt_pitch = s->pitch; - nouveau_bo_markl(bctx, celsius, NV10TCL_COLOR_OFFSET, + nouveau_bo_markl(bctx, celsius, NV10_3D_COLOR_OFFSET, s->bo, 0, bo_flags); } @@ -131,7 +132,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit) rt_format |= get_rt_format(s->format); zeta_pitch = s->pitch; - nouveau_bo_markl(bctx, celsius, NV10TCL_ZETA_OFFSET, + nouveau_bo_markl(bctx, celsius, NV10_3D_ZETA_OFFSET, s->bo, 0, bo_flags); if (context_chipset(ctx) >= 0x17) { @@ -140,7 +141,7 @@ nv10_emit_framebuffer(struct gl_context *ctx, int emit) } } - BEGIN_RING(chan, celsius, NV10TCL_RT_FORMAT, 2); + BEGIN_RING(chan, celsius, NV10_3D_RT_FORMAT, 2); OUT_RING(chan, rt_format); OUT_RING(chan, zeta_pitch << 16 | rt_pitch); @@ -162,7 +163,7 @@ nv10_emit_scissor(struct gl_context *ctx, int emit) get_scissors(ctx->DrawBuffer, &x, &y, &w, &h); - BEGIN_RING(chan, celsius, NV10TCL_RT_HORIZ, 2); + BEGIN_RING(chan, celsius, NV10_3D_RT_HORIZ, 2); OUT_RING(chan, w << 16 | x); OUT_RING(chan, h << 16 | y); } @@ -182,12 +183,12 @@ nv10_emit_viewport(struct gl_context *ctx, int emit) if (nv10_use_viewport_zclear(ctx)) a[2] = nv10_transform_depth(ctx, (vp->Far + vp->Near) / 2); - BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_TRANSLATE_X, 4); + BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_TRANSLATE_X, 4); OUT_RINGp(chan, a, 4); - BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_HORIZ(0), 1); + BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_HORIZ(0), 1); OUT_RING(chan, (fb->Width - 1) << 16 | 0x08000800); - BEGIN_RING(chan, celsius, NV10TCL_VIEWPORT_CLIP_VERT(0), 1); + BEGIN_RING(chan, celsius, NV10_3D_VIEWPORT_CLIP_VERT(0), 1); OUT_RING(chan, (fb->Height - 1) << 16 | 0x08000800); context_dirty(ctx, PROJECTION); @@ -203,12 +204,12 @@ nv10_emit_zclear(struct gl_context *ctx, int emit) to_nouveau_framebuffer(ctx->DrawBuffer); if (nfb->hierz.bo) { - BEGIN_RING(chan, celsius, NV17TCL_ZCLEAR_ENABLE, 2); - OUT_RING(chan, nctx->hierz.clear_blocked ? 0 : 1); + BEGIN_RING(chan, celsius, NV17_3D_ZCLEAR_ENABLE, 2); + OUT_RINGb(chan, !nctx->hierz.clear_blocked); OUT_RING(chan, nfb->hierz.clear_value | (nctx->hierz.clear_seq & 0xff)); } else { - BEGIN_RING(chan, celsius, NV10TCL_DEPTH_RANGE_NEAR, 2); + BEGIN_RING(chan, celsius, NV10_3D_DEPTH_RANGE_NEAR, 2); OUT_RINGf(chan, nv10_transform_depth(ctx, 0)); OUT_RINGf(chan, nv10_transform_depth(ctx, 1)); context_dirty(ctx, VIEWPORT); diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_frag.c b/src/mesa/drivers/dri/nouveau/nv10_state_frag.c index 5138c36df7b..1adc86086cc 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_state_frag.c +++ b/src/mesa/drivers/dri/nouveau/nv10_state_frag.c @@ -27,7 +27,7 @@ #include "nouveau_driver.h" #include "nouveau_context.h" #include "nouveau_gldefs.h" -#include "nouveau_class.h" +#include "nv10_3d.xml.h" #include "nouveau_util.h" #include "nv10_driver.h" #include "nv20_driver.h" @@ -41,24 +41,24 @@ #define RC_IN_SHIFT_G 40 #define RC_IN_SOURCE(source) \ - ((uint64_t)NV10TCL_RC_IN_RGB_D_INPUT_##source) + ((uint64_t)NV10_3D_RC_IN_RGB_D_INPUT_##source) #define RC_IN_USAGE(usage) \ - ((uint64_t)NV10TCL_RC_IN_RGB_D_COMPONENT_USAGE_##usage) + ((uint64_t)NV10_3D_RC_IN_RGB_D_COMPONENT_USAGE_##usage) #define RC_IN_MAPPING(mapping) \ - ((uint64_t)NV10TCL_RC_IN_RGB_D_MAPPING_##mapping) + ((uint64_t)NV10_3D_RC_IN_RGB_D_MAPPING_##mapping) -#define RC_OUT_BIAS NV10TCL_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF -#define RC_OUT_SCALE_1 NV10TCL_RC_OUT_RGB_SCALE_NONE -#define RC_OUT_SCALE_2 NV10TCL_RC_OUT_RGB_SCALE_SCALE_BY_TWO -#define RC_OUT_SCALE_4 NV10TCL_RC_OUT_RGB_SCALE_SCALE_BY_FOUR +#define RC_OUT_BIAS NV10_3D_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF +#define RC_OUT_SCALE_1 NV10_3D_RC_OUT_RGB_SCALE_NONE +#define RC_OUT_SCALE_2 NV10_3D_RC_OUT_RGB_SCALE_SCALE_BY_TWO +#define RC_OUT_SCALE_4 NV10_3D_RC_OUT_RGB_SCALE_SCALE_BY_FOUR /* Make the combiner do: spare0_i = A_i * B_i */ -#define RC_OUT_AB NV10TCL_RC_OUT_RGB_AB_OUTPUT_SPARE0 +#define RC_OUT_AB NV10_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0 /* spare0_i = dot3(A, B) */ -#define RC_OUT_DOT_AB (NV10TCL_RC_OUT_RGB_AB_OUTPUT_SPARE0 | \ - NV10TCL_RC_OUT_RGB_AB_DOT_PRODUCT) +#define RC_OUT_DOT_AB (NV10_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0 | \ + NV10_3D_RC_OUT_RGB_AB_DOT_PRODUCT) /* spare0_i = A_i * B_i + C_i * D_i */ -#define RC_OUT_SUM NV10TCL_RC_OUT_RGB_SUM_OUTPUT_SPARE0 +#define RC_OUT_SUM NV10_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE0 struct combiner_state { struct gl_context *ctx; @@ -383,15 +383,15 @@ nv10_emit_tex_env(struct gl_context *ctx, int emit) c_out |= 0x3 << 27; } - BEGIN_RING(chan, celsius, NV10TCL_RC_IN_ALPHA(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_RC_IN_ALPHA(i), 1); OUT_RING(chan, a_in); - BEGIN_RING(chan, celsius, NV10TCL_RC_IN_RGB(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_RC_IN_RGB(i), 1); OUT_RING(chan, c_in); - BEGIN_RING(chan, celsius, NV10TCL_RC_COLOR(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_RC_COLOR(i), 1); OUT_RING(chan, k); - BEGIN_RING(chan, celsius, NV10TCL_RC_OUT_ALPHA(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_RC_OUT_ALPHA(i), 1); OUT_RING(chan, a_out); - BEGIN_RING(chan, celsius, NV10TCL_RC_OUT_RGB(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_RC_OUT_RGB(i), 1); OUT_RING(chan, c_out); context_dirty(ctx, FRAG); @@ -407,7 +407,7 @@ nv10_emit_frag(struct gl_context *ctx, int emit) nv10_get_final_combiner(ctx, &in, &n); - BEGIN_RING(chan, celsius, NV10TCL_RC_FINAL0, 2); + BEGIN_RING(chan, celsius, NV10_3D_RC_FINAL0, 2); OUT_RING(chan, in); OUT_RING(chan, in >> 32); } diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c b/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c index 4e49b0278cd..3f807904835 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c +++ b/src/mesa/drivers/dri/nouveau/nv10_state_polygon.c @@ -27,7 +27,8 @@ #include "nouveau_driver.h" #include "nouveau_context.h" #include "nouveau_gldefs.h" -#include "nouveau_class.h" +#include "nouveau_util.h" +#include "nv10_3d.xml.h" #include "nv10_driver.h" void @@ -37,13 +38,13 @@ nv10_emit_cull_face(struct gl_context *ctx, int emit) struct nouveau_grobj *celsius = context_eng3d(ctx); GLenum mode = ctx->Polygon.CullFaceMode; - BEGIN_RING(chan, celsius, NV10TCL_CULL_FACE_ENABLE, 1); - OUT_RING(chan, ctx->Polygon.CullFlag ? 1 : 0); + BEGIN_RING(chan, celsius, NV10_3D_CULL_FACE_ENABLE, 1); + OUT_RINGb(chan, ctx->Polygon.CullFlag); - BEGIN_RING(chan, celsius, NV10TCL_CULL_FACE, 1); - OUT_RING(chan, (mode == GL_FRONT ? NV10TCL_CULL_FACE_FRONT : - mode == GL_BACK ? NV10TCL_CULL_FACE_BACK : - NV10TCL_CULL_FACE_FRONT_AND_BACK)); + BEGIN_RING(chan, celsius, NV10_3D_CULL_FACE, 1); + OUT_RING(chan, (mode == GL_FRONT ? NV10_3D_CULL_FACE_FRONT : + mode == GL_BACK ? NV10_3D_CULL_FACE_BACK : + NV10_3D_CULL_FACE_FRONT_AND_BACK)); } void @@ -52,9 +53,9 @@ nv10_emit_front_face(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_FRONT_FACE, 1); + BEGIN_RING(chan, celsius, NV10_3D_FRONT_FACE, 1); OUT_RING(chan, ctx->Polygon.FrontFace == GL_CW ? - NV10TCL_FRONT_FACE_CW : NV10TCL_FRONT_FACE_CCW); + NV10_3D_FRONT_FACE_CW : NV10_3D_FRONT_FACE_CCW); } void @@ -65,11 +66,11 @@ nv10_emit_line_mode(struct gl_context *ctx, int emit) GLboolean smooth = ctx->Line.SmoothFlag && ctx->Hint.LineSmooth == GL_NICEST; - BEGIN_RING(chan, celsius, NV10TCL_LINE_WIDTH, 1); + BEGIN_RING(chan, celsius, NV10_3D_LINE_WIDTH, 1); OUT_RING(chan, MAX2(smooth ? 0 : 1, ctx->Line.Width) * 8); - BEGIN_RING(chan, celsius, NV10TCL_LINE_SMOOTH_ENABLE, 1); - OUT_RING(chan, smooth ? 1 : 0); + BEGIN_RING(chan, celsius, NV10_3D_LINE_SMOOTH_ENABLE, 1); + OUT_RINGb(chan, smooth); } void @@ -83,11 +84,11 @@ nv10_emit_point_mode(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_POINT_SIZE, 1); + BEGIN_RING(chan, celsius, NV10_3D_POINT_SIZE, 1); OUT_RING(chan, (uint32_t)(ctx->Point.Size * 8)); - BEGIN_RING(chan, celsius, NV10TCL_POINT_SMOOTH_ENABLE, 1); - OUT_RING(chan, ctx->Point.SmoothFlag ? 1 : 0); + BEGIN_RING(chan, celsius, NV10_3D_POINT_SMOOTH_ENABLE, 1); + OUT_RINGb(chan, ctx->Point.SmoothFlag); } void @@ -96,12 +97,12 @@ nv10_emit_polygon_mode(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_POLYGON_MODE_FRONT, 2); + BEGIN_RING(chan, celsius, NV10_3D_POLYGON_MODE_FRONT, 2); OUT_RING(chan, nvgl_polygon_mode(ctx->Polygon.FrontMode)); OUT_RING(chan, nvgl_polygon_mode(ctx->Polygon.BackMode)); - BEGIN_RING(chan, celsius, NV10TCL_POLYGON_SMOOTH_ENABLE, 1); - OUT_RING(chan, ctx->Polygon.SmoothFlag ? 1 : 0); + BEGIN_RING(chan, celsius, NV10_3D_POLYGON_SMOOTH_ENABLE, 1); + OUT_RINGb(chan, ctx->Polygon.SmoothFlag); } void @@ -110,12 +111,12 @@ nv10_emit_polygon_offset(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_POLYGON_OFFSET_POINT_ENABLE, 3); - OUT_RING(chan, ctx->Polygon.OffsetPoint ? 1 : 0); - OUT_RING(chan, ctx->Polygon.OffsetLine ? 1 : 0); - OUT_RING(chan, ctx->Polygon.OffsetFill ? 1 : 0); + BEGIN_RING(chan, celsius, NV10_3D_POLYGON_OFFSET_POINT_ENABLE, 3); + OUT_RINGb(chan, ctx->Polygon.OffsetPoint); + OUT_RINGb(chan, ctx->Polygon.OffsetLine); + OUT_RINGb(chan, ctx->Polygon.OffsetFill); - BEGIN_RING(chan, celsius, NV10TCL_POLYGON_OFFSET_FACTOR, 2); + BEGIN_RING(chan, celsius, NV10_3D_POLYGON_OFFSET_FACTOR, 2); OUT_RINGf(chan, ctx->Polygon.OffsetFactor); OUT_RINGf(chan, ctx->Polygon.OffsetUnits); } diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_raster.c b/src/mesa/drivers/dri/nouveau/nv10_state_raster.c index 99609844a18..bb1084ed11b 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_state_raster.c +++ b/src/mesa/drivers/dri/nouveau/nv10_state_raster.c @@ -27,7 +27,8 @@ #include "nouveau_driver.h" #include "nouveau_context.h" #include "nouveau_gldefs.h" -#include "nouveau_class.h" +#include "nouveau_util.h" +#include "nv10_3d.xml.h" #include "nv10_driver.h" void @@ -36,10 +37,10 @@ nv10_emit_alpha_func(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_ALPHA_FUNC_ENABLE, 1); - OUT_RING(chan, ctx->Color.AlphaEnabled ? 1 : 0); + BEGIN_RING(chan, celsius, NV10_3D_ALPHA_FUNC_ENABLE, 1); + OUT_RINGb(chan, ctx->Color.AlphaEnabled); - BEGIN_RING(chan, celsius, NV10TCL_ALPHA_FUNC_FUNC, 2); + BEGIN_RING(chan, celsius, NV10_3D_ALPHA_FUNC_FUNC, 2); OUT_RING(chan, nvgl_comparison_op(ctx->Color.AlphaFunc)); OUT_RING(chan, FLOAT_TO_UBYTE(ctx->Color.AlphaRef)); } @@ -50,7 +51,7 @@ nv10_emit_blend_color(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_BLEND_COLOR, 1); + BEGIN_RING(chan, celsius, NV10_3D_BLEND_COLOR, 1); OUT_RING(chan, FLOAT_TO_UBYTE(ctx->Color.BlendColor[3]) << 24 | FLOAT_TO_UBYTE(ctx->Color.BlendColor[0]) << 16 | FLOAT_TO_UBYTE(ctx->Color.BlendColor[1]) << 8 | @@ -63,10 +64,10 @@ nv10_emit_blend_equation(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_BLEND_FUNC_ENABLE, 1); - OUT_RING(chan, ctx->Color.BlendEnabled ? 1 : 0); + BEGIN_RING(chan, celsius, NV10_3D_BLEND_FUNC_ENABLE, 1); + OUT_RINGb(chan, ctx->Color.BlendEnabled); - BEGIN_RING(chan, celsius, NV10TCL_BLEND_EQUATION, 1); + BEGIN_RING(chan, celsius, NV10_3D_BLEND_EQUATION, 1); OUT_RING(chan, nvgl_blend_eqn(ctx->Color.BlendEquationRGB)); } @@ -76,7 +77,7 @@ nv10_emit_blend_func(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_BLEND_FUNC_SRC, 2); + BEGIN_RING(chan, celsius, NV10_3D_BLEND_FUNC_SRC, 2); OUT_RING(chan, nvgl_blend_func(ctx->Color.BlendSrcRGB)); OUT_RING(chan, nvgl_blend_func(ctx->Color.BlendDstRGB)); } @@ -87,7 +88,7 @@ nv10_emit_color_mask(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_COLOR_MASK, 1); + BEGIN_RING(chan, celsius, NV10_3D_COLOR_MASK, 1); OUT_RING(chan, ((ctx->Color.ColorMask[0][3] ? 1 << 24 : 0) | (ctx->Color.ColorMask[0][0] ? 1 << 16 : 0) | (ctx->Color.ColorMask[0][1] ? 1 << 8 : 0) | @@ -100,11 +101,11 @@ nv10_emit_depth(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_DEPTH_TEST_ENABLE, 1); - OUT_RING(chan, ctx->Depth.Test ? 1 : 0); - BEGIN_RING(chan, celsius, NV10TCL_DEPTH_WRITE_ENABLE, 1); - OUT_RING(chan, ctx->Depth.Mask ? 1 : 0); - BEGIN_RING(chan, celsius, NV10TCL_DEPTH_FUNC, 1); + BEGIN_RING(chan, celsius, NV10_3D_DEPTH_TEST_ENABLE, 1); + OUT_RINGb(chan, ctx->Depth.Test); + BEGIN_RING(chan, celsius, NV10_3D_DEPTH_WRITE_ENABLE, 1); + OUT_RINGb(chan, ctx->Depth.Mask); + BEGIN_RING(chan, celsius, NV10_3D_DEPTH_FUNC, 1); OUT_RING(chan, nvgl_comparison_op(ctx->Depth.Func)); } @@ -114,8 +115,8 @@ nv10_emit_dither(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_DITHER_ENABLE, 1); - OUT_RING(chan, ctx->Color.DitherFlag ? 1 : 0); + BEGIN_RING(chan, celsius, NV10_3D_DITHER_ENABLE, 1); + OUT_RINGb(chan, ctx->Color.DitherFlag); } void @@ -127,8 +128,8 @@ nv10_emit_logic_opcode(struct gl_context *ctx, int emit) assert(!ctx->Color.ColorLogicOpEnabled || context_chipset(ctx) >= 0x11); - BEGIN_RING(chan, celsius, NV11TCL_COLOR_LOGIC_OP_ENABLE, 2); - OUT_RING(chan, ctx->Color.ColorLogicOpEnabled ? 1 : 0); + BEGIN_RING(chan, celsius, NV11_3D_COLOR_LOGIC_OP_ENABLE, 2); + OUT_RINGb(chan, ctx->Color.ColorLogicOpEnabled); OUT_RING(chan, nvgl_logicop_func(ctx->Color.LogicOp)); } @@ -138,9 +139,9 @@ nv10_emit_shade_model(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_SHADE_MODEL, 1); + BEGIN_RING(chan, celsius, NV10_3D_SHADE_MODEL, 1); OUT_RING(chan, ctx->Light.ShadeModel == GL_SMOOTH ? - NV10TCL_SHADE_MODEL_SMOOTH : NV10TCL_SHADE_MODEL_FLAT); + NV10_3D_SHADE_MODEL_SMOOTH : NV10_3D_SHADE_MODEL_FLAT); } void @@ -149,10 +150,10 @@ nv10_emit_stencil_func(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_STENCIL_ENABLE, 1); - OUT_RING(chan, ctx->Stencil.Enabled ? 1 : 0); + BEGIN_RING(chan, celsius, NV10_3D_STENCIL_ENABLE, 1); + OUT_RINGb(chan, ctx->Stencil.Enabled); - BEGIN_RING(chan, celsius, NV10TCL_STENCIL_FUNC_FUNC, 3); + BEGIN_RING(chan, celsius, NV10_3D_STENCIL_FUNC_FUNC, 3); OUT_RING(chan, nvgl_comparison_op(ctx->Stencil.Function[0])); OUT_RING(chan, ctx->Stencil.Ref[0]); OUT_RING(chan, ctx->Stencil.ValueMask[0]); @@ -164,7 +165,7 @@ nv10_emit_stencil_mask(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_STENCIL_MASK, 1); + BEGIN_RING(chan, celsius, NV10_3D_STENCIL_MASK, 1); OUT_RING(chan, ctx->Stencil.WriteMask[0]); } @@ -174,7 +175,7 @@ nv10_emit_stencil_op(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *celsius = context_eng3d(ctx); - BEGIN_RING(chan, celsius, NV10TCL_STENCIL_OP_FAIL, 3); + BEGIN_RING(chan, celsius, NV10_3D_STENCIL_OP_FAIL, 3); OUT_RING(chan, nvgl_stencil_op(ctx->Stencil.FailFunc[0])); OUT_RING(chan, nvgl_stencil_op(ctx->Stencil.ZFailFunc[0])); OUT_RING(chan, nvgl_stencil_op(ctx->Stencil.ZPassFunc[0])); diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_tex.c b/src/mesa/drivers/dri/nouveau/nv10_state_tex.c index 0092ad0c20c..fda67b15073 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_state_tex.c +++ b/src/mesa/drivers/dri/nouveau/nv10_state_tex.c @@ -28,14 +28,10 @@ #include "nouveau_context.h" #include "nouveau_gldefs.h" #include "nouveau_texture.h" -#include "nouveau_class.h" +#include "nv10_3d.xml.h" #include "nouveau_util.h" #include "nv10_driver.h" -#define TX_GEN_MODE(i, j) (NV10TCL_TX_GEN_MODE_S(i) + 4 * (j)) -#define TX_GEN_COEFF(i, j) (NV10TCL_TX_GEN_COEFF_S_A(i) + 16 * (j)) -#define TX_MATRIX(i) (NV10TCL_TX0_MATRIX(0) + 64 * (i)) - void nv10_emit_tex_gen(struct gl_context *ctx, int emit) { @@ -53,15 +49,15 @@ nv10_emit_tex_gen(struct gl_context *ctx, int emit) if (k) { BEGIN_RING(chan, celsius, - TX_GEN_COEFF(i, j), 4); + NV10_3D_TEX_GEN_COEFF(i, j), 4); OUT_RINGp(chan, k, 4); } - BEGIN_RING(chan, celsius, TX_GEN_MODE(i, j), 1); + BEGIN_RING(chan, celsius, NV10_3D_TEX_GEN_MODE(i,j), 1); OUT_RING(chan, nvgl_texgen_mode(coord->Mode)); } else { - BEGIN_RING(chan, celsius, TX_GEN_MODE(i, j), 1); + BEGIN_RING(chan, celsius, NV10_3D_TEX_GEN_MODE(i,j), 1); OUT_RING(chan, 0); } } @@ -80,14 +76,14 @@ nv10_emit_tex_mat(struct gl_context *ctx, int emit) if (nctx->fallback == HWTNL && ((ctx->Texture._TexMatEnabled & 1 << i) || ctx->Texture.Unit[i]._GenFlags)) { - BEGIN_RING(chan, celsius, NV10TCL_TX_MATRIX_ENABLE(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_TEX_MATRIX_ENABLE(i), 1); OUT_RING(chan, 1); - BEGIN_RING(chan, celsius, TX_MATRIX(i), 16); + BEGIN_RING(chan, celsius, NV10_3D_TEX_MATRIX(i, 0), 16); OUT_RINGm(chan, ctx->TextureMatrixStack[i].Top->m); } else { - BEGIN_RING(chan, celsius, NV10TCL_TX_MATRIX_ENABLE(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_TEX_MATRIX_ENABLE(i), 1); OUT_RING(chan, 0); } } @@ -97,29 +93,29 @@ get_tex_format_pot(struct gl_texture_image *ti) { switch (ti->TexFormat) { case MESA_FORMAT_ARGB8888: - return NV10TCL_TX_FORMAT_FORMAT_A8R8G8B8; + return NV10_3D_TEX_FORMAT_FORMAT_A8R8G8B8; case MESA_FORMAT_XRGB8888: - return NV10TCL_TX_FORMAT_FORMAT_X8R8G8B8; + return NV10_3D_TEX_FORMAT_FORMAT_X8R8G8B8; case MESA_FORMAT_ARGB1555: - return NV10TCL_TX_FORMAT_FORMAT_A1R5G5B5; + return NV10_3D_TEX_FORMAT_FORMAT_A1R5G5B5; case MESA_FORMAT_ARGB4444: - return NV10TCL_TX_FORMAT_FORMAT_A4R4G4B4; + return NV10_3D_TEX_FORMAT_FORMAT_A4R4G4B4; case MESA_FORMAT_RGB565: - return NV10TCL_TX_FORMAT_FORMAT_R5G6B5; + return NV10_3D_TEX_FORMAT_FORMAT_R5G6B5; case MESA_FORMAT_A8: case MESA_FORMAT_I8: - return NV10TCL_TX_FORMAT_FORMAT_A8; + return NV10_3D_TEX_FORMAT_FORMAT_I8; case MESA_FORMAT_L8: - return NV10TCL_TX_FORMAT_FORMAT_L8; + return NV10_3D_TEX_FORMAT_FORMAT_L8; case MESA_FORMAT_CI8: - return NV10TCL_TX_FORMAT_FORMAT_INDEX8; + return NV10_3D_TEX_FORMAT_FORMAT_INDEX8; default: assert(0); @@ -131,19 +127,19 @@ get_tex_format_rect(struct gl_texture_image *ti) { switch (ti->TexFormat) { case MESA_FORMAT_ARGB1555: - return NV10TCL_TX_FORMAT_FORMAT_A1R5G5B5_RECT; + return NV10_3D_TEX_FORMAT_FORMAT_A1R5G5B5_RECT; case MESA_FORMAT_RGB565: - return NV10TCL_TX_FORMAT_FORMAT_R5G6B5_RECT; + return NV10_3D_TEX_FORMAT_FORMAT_R5G6B5_RECT; case MESA_FORMAT_ARGB8888: case MESA_FORMAT_XRGB8888: - return NV10TCL_TX_FORMAT_FORMAT_A8R8G8B8_RECT; + return NV10_3D_TEX_FORMAT_FORMAT_A8R8G8B8_RECT; case MESA_FORMAT_A8: case MESA_FORMAT_L8: case MESA_FORMAT_I8: - return NV10TCL_TX_FORMAT_FORMAT_A8_RECT; + return NV10_3D_TEX_FORMAT_FORMAT_I8_RECT; default: assert(0); @@ -164,7 +160,7 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit) uint32_t tx_format, tx_filter, tx_enable; if (!ctx->Texture.Unit[i]._ReallyEnabled) { - BEGIN_RING(chan, celsius, NV10TCL_TX_ENABLE(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_TEX_ENABLE(i), 1); OUT_RING(chan, 0); return; } @@ -186,13 +182,13 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit) tx_filter = nvgl_filter_mode(t->MagFilter) << 28 | nvgl_filter_mode(t->MinFilter) << 24; - tx_enable = NV10TCL_TX_ENABLE_ENABLE + tx_enable = NV10_3D_TEX_ENABLE_ENABLE | log2i(t->MaxAnisotropy) << 4; if (t->Target == GL_TEXTURE_RECTANGLE) { - BEGIN_RING(chan, celsius, NV10TCL_TX_NPOT_PITCH(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_TEX_NPOT_PITCH(i), 1); OUT_RING(chan, s->pitch << 16); - BEGIN_RING(chan, celsius, NV10TCL_TX_NPOT_SIZE(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_TEX_NPOT_SIZE(i), 1); OUT_RING(chan, align(s->width, 2) << 16 | s->height); tx_format |= get_tex_format_rect(ti); @@ -211,26 +207,26 @@ nv10_emit_tex_obj(struct gl_context *ctx, int emit) lod_min = CLAMP(lod_min, 0, 15); lod_bias = CLAMP(lod_bias, 0, 15); - tx_format |= NV10TCL_TX_FORMAT_MIPMAP; + tx_format |= NV10_3D_TEX_FORMAT_MIPMAP; tx_filter |= lod_bias << 8; tx_enable |= lod_min << 26 | lod_max << 14; } /* Write it to the hardware. */ - nouveau_bo_mark(bctx, celsius, NV10TCL_TX_FORMAT(i), + nouveau_bo_mark(bctx, celsius, NV10_3D_TEX_FORMAT(i), s->bo, tx_format, 0, - NV10TCL_TX_FORMAT_DMA0, - NV10TCL_TX_FORMAT_DMA1, + NV10_3D_TEX_FORMAT_DMA0, + NV10_3D_TEX_FORMAT_DMA1, bo_flags | NOUVEAU_BO_OR); - nouveau_bo_markl(bctx, celsius, NV10TCL_TX_OFFSET(i), + nouveau_bo_markl(bctx, celsius, NV10_3D_TEX_OFFSET(i), s->bo, s->offset, bo_flags); - BEGIN_RING(chan, celsius, NV10TCL_TX_FILTER(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_TEX_FILTER(i), 1); OUT_RING(chan, tx_filter); - BEGIN_RING(chan, celsius, NV10TCL_TX_ENABLE(i), 1); + BEGIN_RING(chan, celsius, NV10_3D_TEX_ENABLE(i), 1); OUT_RING(chan, tx_enable); } diff --git a/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c b/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c index 175abfca5c1..e8bd12e6e01 100644 --- a/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c +++ b/src/mesa/drivers/dri/nouveau/nv10_state_tnl.c @@ -28,7 +28,7 @@ #include "nouveau_context.h" #include "nouveau_gldefs.h" #include "nouveau_util.h" -#include "nouveau_class.h" +#include "nv10_3d.xml.h" #include "nv10_driver.h" void @@ -42,13 +42,13 @@ get_material_bitmask(unsigned m) unsigned ret = 0; if (m & MAT_BIT_FRONT_EMISSION) - ret |= NV10TCL_COLOR_MATERIAL_EMISSION; + ret |= NV10_3D_COLOR_MATERIAL_EMISSION; if (m & MAT_BIT_FRONT_AMBIENT) - ret |= NV10TCL_COLOR_MATERIAL_AMBIENT; + ret |= NV10_3D_COLOR_MATERIAL_AMBIENT; if (m & MAT_BIT_FRONT_DIFFUSE) - ret |= NV10TCL_COLOR_MATERIAL_DIFFUSE; + ret |= NV10_3D_COLOR_MATERIAL_DIFFUSE; if (m & MAT_BIT_FRONT_SPECULAR) - ret |= NV10TCL_COLOR_MATERIAL_SPECULAR; + ret |= NV10_3D_COLOR_MATERIAL_SPECULAR; return ret; } @@ -60,7 +60,7 @@ nv10_emit_color_material(struct gl_context *ctx, int emit) struct nouveau_grobj *celsius = context_eng3d(ctx); unsigned mask = get_material_bitmask(ctx->Light.ColorMaterialBitmask); - BEGIN_RING(chan, celsius, NV10TCL_COLOR_MATERIAL, 1); + BEGIN_RING(chan, celsius, NV10_3D_COLOR_MATERIAL, 1); OUT_RING(chan, ctx->Light.ColorMaterialEnabled ? mask : 0); } @@ -69,11 +69,11 @@ get_fog_mode(unsigned mode) { switch (mode) { case GL_LINEAR: - return NV10TCL_FOG_MODE_LINEAR; + return NV10_3D_FOG_MODE_LINEAR; case GL_EXP: - return NV10TCL_FOG_MODE_EXP; + return NV10_3D_FOG_MODE_EXP; case GL_EXP2: - return NV10TCL_FOG_MODE_EXP2; + return NV10_3D_FOG_MODE_EXP2; default: assert(0); } @@ -84,9 +84,9 @@ get_fog_source(unsigned source) { switch (source) { case GL_FOG_COORDINATE_EXT: - return NV10TCL_FOG_COORD_FOG; + return NV10_3D_FOG_COORD_FOG; case GL_FRAGMENT_DEPTH_EXT: - return NV10TCL_FOG_COORD_DIST_ORTHOGONAL_ABS; + return NV10_3D_FOG_COORD_DIST_ORTHOGONAL_ABS; default: assert(0); } @@ -133,13 +133,13 @@ nv10_emit_fog(struct gl_context *ctx, int emit) nv10_get_fog_coeff(ctx, k); - BEGIN_RING(chan, celsius, NV10TCL_FOG_MODE, 4); + BEGIN_RING(chan, celsius, NV10_3D_FOG_MODE, 4); OUT_RING(chan, get_fog_mode(f->Mode)); OUT_RING(chan, get_fog_source(source)); - OUT_RING(chan, f->Enabled ? 1 : 0); + OUT_RINGb(chan, f->Enabled); OUT_RING(chan, pack_rgba_f(MESA_FORMAT_RGBA8888_REV, f->Color)); - BEGIN_RING(chan, celsius, NV10TCL_FOG_EQUATION_CONSTANT, 3); + BEGIN_RING(chan, celsius, NV10_3D_FOG_COEFF(0), 3); OUT_RINGp(chan, k, 3); context_dirty(ctx, FRAG); @@ -150,13 +150,13 @@ get_light_mode(struct gl_light *l) { if (l->Enabled) { if (l->_Flags & LIGHT_SPOT) - return NV10TCL_ENABLED_LIGHTS_0_DIRECTIONAL; + return NV10_3D_ENABLED_LIGHTS_0_DIRECTIONAL; else if (l->_Flags & LIGHT_POSITIONAL) - return NV10TCL_ENABLED_LIGHTS_0_POSITIONAL; + return NV10_3D_ENABLED_LIGHTS_0_POSITIONAL; else - return NV10TCL_ENABLED_LIGHTS_0_NONPOSITIONAL; + return NV10_3D_ENABLED_LIGHTS_0_NONPOSITIONAL; } else { - return NV10TCL_ENABLED_LIGHTS_0_DISABLED; + return NV10_3D_ENABLED_LIGHTS_0_DISABLED; } } @@ -170,7 +170,7 @@ nv10_emit_light_enable(struct gl_context *ctx, int emit) int i; if (nctx->fallback != HWTNL) { - BEGIN_RING(chan, celsius, NV10TCL_LIGHTING_ENABLE, 1); + BEGIN_RING(chan, celsius, NV10_3D_LIGHTING_ENABLE, 1); OUT_RING(chan, 0); return; } @@ -178,12 +178,12 @@ nv10_emit_light_enable(struct gl_context *ctx, int emit) for (i = 0; i < MAX_LIGHTS; i++) en_lights |= get_light_mode(&ctx->Light.Light[i]) << 2 * i; - BEGIN_RING(chan, celsius, NV10TCL_ENABLED_LIGHTS, 1); + BEGIN_RING(chan, celsius, NV10_3D_ENABLED_LIGHTS, 1); OUT_RING(chan, en_lights); - BEGIN_RING(chan, celsius, NV10TCL_LIGHTING_ENABLE, 1); - OUT_RING(chan, ctx->Light.Enabled ? 1 : 0); - BEGIN_RING(chan, celsius, NV10TCL_NORMALIZE_ENABLE, 1); - OUT_RING(chan, ctx->Transform.Normalize ? 1 : 0); + BEGIN_RING(chan, celsius, NV10_3D_LIGHTING_ENABLE, 1); + OUT_RINGb(chan, ctx->Light.Enabled); + BEGIN_RING(chan, celsius, NV10_3D_NORMALIZE_ENABLE, 1); + OUT_RINGb(chan, ctx->Transform.Normalize); } void @@ -193,16 +193,16 @@ nv10_emit_light_model(struct gl_context *ctx, int emit) struct nouveau_grobj *celsius = context_eng3d(ctx); struct gl_lightmodel *m = &ctx->Light.Model; - BEGIN_RING(chan, celsius, NV10TCL_SEPARATE_SPECULAR_ENABLE, 1); - OUT_RING(chan, m->ColorControl == GL_SEPARATE_SPECULAR_COLOR ? 1 : 0); + BEGIN_RING(chan, celsius, NV10_3D_SEPARATE_SPECULAR_ENABLE, 1); + OUT_RINGb(chan, m->ColorControl == GL_SEPARATE_SPECULAR_COLOR); - BEGIN_RING(chan, celsius, NV10TCL_LIGHT_MODEL, 1); + BEGIN_RING(chan, celsius, NV10_3D_LIGHT_MODEL, 1); OUT_RING(chan, ((m->LocalViewer ? - NV10TCL_LIGHT_MODEL_LOCAL_VIEWER : 0) | + NV10_3D_LIGHT_MODEL_LOCAL_VIEWER : 0) | (NEED_SECONDARY_COLOR(ctx) ? - NV10TCL_LIGHT_MODEL_SEPARATE_SPECULAR : 0) | + NV10_3D_LIGHT_MODEL_SEPARATE_SPECULAR : 0) | (!ctx->Light.Enabled && ctx->Fog.ColorSumEnabled ? - NV10TCL_LIGHT_MODEL_VERTEX_SPECULAR : 0))); + NV10_3D_LIGHT_MODEL_VERTEX_SPECULAR : 0))); } static float @@ -281,20 +281,20 @@ nv10_emit_light_source(struct gl_context *ctx, int emit) struct gl_light *l = &ctx->Light.Light[i]; if (l->_Flags & LIGHT_POSITIONAL) { - BEGIN_RING(chan, celsius, NV10TCL_LIGHT_POSITION_X(i), 3); + BEGIN_RING(chan, celsius, NV10_3D_LIGHT_POSITION_X(i), 3); OUT_RINGp(chan, l->_Position, 3); BEGIN_RING(chan, celsius, - NV10TCL_LIGHT_ATTENUATION_CONSTANT(i), 3); + NV10_3D_LIGHT_ATTENUATION_CONSTANT(i), 3); OUT_RINGf(chan, l->ConstantAttenuation); OUT_RINGf(chan, l->LinearAttenuation); OUT_RINGf(chan, l->QuadraticAttenuation); } else { - BEGIN_RING(chan, celsius, NV10TCL_LIGHT_DIRECTION_X(i), 3); + BEGIN_RING(chan, celsius, NV10_3D_LIGHT_DIRECTION_X(i), 3); OUT_RINGp(chan, l->_VP_inf_norm, 3); - BEGIN_RING(chan, celsius, NV10TCL_LIGHT_HALF_VECTOR_X(i), 3); + BEGIN_RING(chan, celsius, NV10_3D_LIGHT_HALF_VECTOR_X(i), 3); OUT_RINGp(chan, l->_h_inf_norm, 3); } @@ -303,7 +303,7 @@ nv10_emit_light_source(struct gl_context *ctx, int emit) nv10_get_spot_coeff(l, k); - BEGIN_RING(chan, celsius, NV10TCL_LIGHT_SPOT_CUTOFF_A(i), 7); + BEGIN_RING(chan, celsius, NV10_3D_LIGHT_SPOT_CUTOFF(i, 0), 7); OUT_RINGp(chan, k, 7); } } @@ -335,11 +335,11 @@ nv10_emit_material_ambient(struct gl_context *ctx, int emit) ZERO_3V(c_factor); } - BEGIN_RING(chan, celsius, NV10TCL_LIGHT_MODEL_AMBIENT_R, 3); + BEGIN_RING(chan, celsius, NV10_3D_LIGHT_MODEL_AMBIENT_R, 3); OUT_RINGp(chan, c_scene, 3); if (ctx->Light.ColorMaterialEnabled) { - BEGIN_RING(chan, celsius, NV10TCL_MATERIAL_FACTOR_R, 3); + BEGIN_RING(chan, celsius, NV10_3D_MATERIAL_FACTOR_R, 3); OUT_RINGp(chan, c_factor, 3); } @@ -349,7 +349,7 @@ nv10_emit_material_ambient(struct gl_context *ctx, int emit) l->Ambient : l->_MatAmbient[0]); - BEGIN_RING(chan, celsius, NV10TCL_LIGHT_AMBIENT_R(i), 3); + BEGIN_RING(chan, celsius, NV10_3D_LIGHT_AMBIENT_R(i), 3); OUT_RINGp(chan, c_light, 3); } } @@ -362,7 +362,7 @@ nv10_emit_material_diffuse(struct gl_context *ctx, int emit) GLfloat (*mat)[4] = ctx->Light.Material.Attrib; struct gl_light *l; - BEGIN_RING(chan, celsius, NV10TCL_MATERIAL_FACTOR_A, 1); + BEGIN_RING(chan, celsius, NV10_3D_MATERIAL_FACTOR_A, 1); OUT_RINGf(chan, mat[MAT_ATTRIB_FRONT_DIFFUSE][3]); foreach(l, &ctx->Light.EnabledList) { @@ -371,7 +371,7 @@ nv10_emit_material_diffuse(struct gl_context *ctx, int emit) l->Diffuse : l->_MatDiffuse[0]); - BEGIN_RING(chan, celsius, NV10TCL_LIGHT_DIFFUSE_R(i), 3); + BEGIN_RING(chan, celsius, NV10_3D_LIGHT_DIFFUSE_R(i), 3); OUT_RINGp(chan, c_light, 3); } } @@ -389,7 +389,7 @@ nv10_emit_material_specular(struct gl_context *ctx, int emit) l->Specular : l->_MatSpecular[0]); - BEGIN_RING(chan, celsius, NV10TCL_LIGHT_SPECULAR_R(i), 3); + BEGIN_RING(chan, celsius, NV10_3D_LIGHT_SPECULAR_R(i), 3); OUT_RINGp(chan, c_light, 3); } } @@ -430,7 +430,7 @@ nv10_emit_material_shininess(struct gl_context *ctx, int emit) CLAMP(mat[MAT_ATTRIB_FRONT_SHININESS][0], 0, 1024), k); - BEGIN_RING(chan, celsius, NV10TCL_MATERIAL_SHININESS(0), 6); + BEGIN_RING(chan, celsius, NV10_3D_MATERIAL_SHININESS(0), 6); OUT_RINGp(chan, k, 6); } @@ -447,7 +447,7 @@ nv10_emit_modelview(struct gl_context *ctx, int emit) if (ctx->Light._NeedEyeCoords || ctx->Fog.Enabled || (ctx->Texture._GenFlags & TEXGEN_NEED_EYE_COORD)) { - BEGIN_RING(chan, celsius, NV10TCL_MODELVIEW0_MATRIX(0), 16); + BEGIN_RING(chan, celsius, NV10_3D_MODELVIEW_MATRIX(0, 0), 16); OUT_RINGm(chan, m->m); } @@ -456,7 +456,7 @@ nv10_emit_modelview(struct gl_context *ctx, int emit) int i, j; BEGIN_RING(chan, celsius, - NV10TCL_INVERSE_MODELVIEW0_MATRIX(0), 12); + NV10_3D_INVERSE_MODELVIEW_MATRIX(0, 0), 12); for (i = 0; i < 3; i++) for (j = 0; j < 4; j++) OUT_RINGf(chan, m->inv[4*i + j]); @@ -485,7 +485,7 @@ nv10_emit_projection(struct gl_context *ctx, int emit) if (nctx->fallback == HWTNL) _math_matrix_mul_matrix(&m, &m, &ctx->_ModelProjectMatrix); - BEGIN_RING(chan, celsius, NV10TCL_PROJECTION_MATRIX(0), 16); + BEGIN_RING(chan, celsius, NV10_3D_PROJECTION_MATRIX(0), 16); OUT_RINGm(chan, m.m); _math_matrix_dtr(&m); diff --git a/src/mesa/drivers/dri/nouveau/nv20_3d.xml.h b/src/mesa/drivers/dri/nouveau/nv20_3d.xml.h new file mode 100644 index 00000000000..c8ed861961b --- /dev/null +++ b/src/mesa/drivers/dri/nouveau/nv20_3d.xml.h @@ -0,0 +1,2076 @@ +#ifndef NV20_3D_XML +#define NV20_3D_XML + +/* Autogenerated file, DO NOT EDIT manually! + +This file was generated by the rules-ng-ng headergen tool in this git repository: +http://0x04.net/cgit/index.cgi/rules-ng-ng +git clone git://0x04.net/rules-ng-ng + +The rules-ng-ng source files this header was generated from are: +- nv20_3d.xml ( 21073 bytes, from 2010-11-15 02:24:38) +- copyright.xml ( 6452 bytes, from 2010-11-15 15:10:58) +- nv10_3d.xml ( 18449 bytes, from 2010-11-15 02:24:38) +- nv_defs.xml ( 4437 bytes, from 2010-11-01 00:28:46) +- nv_3ddefs.xml ( 16394 bytes, from 2010-11-01 00:28:46) +- nv_object.xml ( 11547 bytes, from 2010-11-13 23:32:57) +- nvchipsets.xml ( 3074 bytes, from 2010-11-13 23:32:57) + +Copyright (C) 2006-2010 by the following authors: +- Artur Huillet <[email protected]> (ahuillet) +- Ben Skeggs (darktama, darktama_) +- B. R. <[email protected]> (koala_br) +- Carlos Martin <[email protected]> (carlosmn) +- Christoph Bumiller <[email protected]> (calim, chrisbmr) +- Dawid Gajownik <[email protected]> (gajownik) +- Dmitry Baryshkov +- Dmitry Eremin-Solenikov <[email protected]> (lumag) +- EdB <[email protected]> (edb_) +- Erik Waling <[email protected]> (erikwaling) +- Francisco Jerez <[email protected]> (curro) +- imirkin <[email protected]> (imirkin) +- jb17bsome <[email protected]> (jb17bsome) +- Jeremy Kolb <[email protected]> (kjeremy) +- Laurent Carlier <[email protected]> (lordheavy) +- Luca Barbieri <[email protected]> (lb, lb1) +- Maarten Maathuis <[email protected]> (stillunknown) +- Marcin KoÅ›cielnicki <[email protected]> (mwk, koriakin) +- Mark Carey <[email protected]> (careym) +- Matthieu Castet <[email protected]> (mat-c) +- nvidiaman <[email protected]> (nvidiaman) +- Patrice Mandin <[email protected]> (pmandin, pmdata) +- Pekka Paalanen <[email protected]> (pq, ppaalanen) +- Peter Popov <[email protected]> (ironpeter) +- Richard Hughes <[email protected]> (hughsient) +- Rudi Cilibrasi <[email protected]> (cilibrar) +- Serge Martin +- Simon Raffeiner +- Stephane Loeuillet <[email protected]> (leroutier) +- Stephane Marchesin <[email protected]> (marcheu) +- sturmflut <[email protected]> (sturmflut) +- Sylvain Munaut <[email protected]> +- Victor Stinner <[email protected]> (haypo) +- Wladmir van der Laan <[email protected]> (miathan6) +- Younes Manton <[email protected]> (ymanton) + +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. +*/ + + +#define NV20_VERTEX_ATTR_POS 0x00000000 +#define NV20_VERTEX_ATTR_NORMAL 0x00000002 +#define NV20_VERTEX_ATTR_COLOR0 0x00000003 +#define NV20_VERTEX_ATTR_COLOR1 0x00000004 +#define NV20_VERTEX_ATTR_FOG 0x00000005 +#define NV20_VERTEX_ATTR_TEX0 0x00000009 +#define NV20_VERTEX_ATTR_TEX1 0x0000000a +#define NV20_VERTEX_ATTR_TEX2 0x0000000b +#define NV20_VERTEX_ATTR_TEX3 0x0000000c + + + +#define NV20_3D_FLIP_SET_READ 0x00000120 + +#define NV20_3D_FLIP_SET_WRITE 0x00000124 + +#define NV20_3D_FLIP_MAX 0x00000128 + +#define NV20_3D_FLIP_INCR_WRITE 0x0000012c + +#define NV20_3D_FLIP_WAIT 0x00000130 + +#define NV20_3D_DMA_NOTIFY 0x00000180 + +#define NV20_3D_DMA_TEXTURE0 0x00000184 + +#define NV20_3D_DMA_TEXTURE1 0x00000188 + +#define NV20_3D_DMA_COLOR 0x00000194 + +#define NV20_3D_DMA_ZETA 0x00000198 + +#define NV20_3D_RT_HORIZ 0x00000200 +#define NV20_3D_RT_HORIZ_X__MASK 0x0000ffff +#define NV20_3D_RT_HORIZ_X__SHIFT 0 +#define NV20_3D_RT_HORIZ_W__MASK 0xffff0000 +#define NV20_3D_RT_HORIZ_W__SHIFT 16 + +#define NV20_3D_RT_VERT 0x00000204 +#define NV20_3D_RT_VERT_Y__MASK 0x0000ffff +#define NV20_3D_RT_VERT_Y__SHIFT 0 +#define NV20_3D_RT_VERT_H__MASK 0xffff0000 +#define NV20_3D_RT_VERT_H__SHIFT 16 + +#define NV20_3D_RT_FORMAT 0x00000208 +#define NV20_3D_RT_FORMAT_TYPE__MASK 0x00000f00 +#define NV20_3D_RT_FORMAT_TYPE__SHIFT 8 +#define NV20_3D_RT_FORMAT_TYPE_LINEAR 0x00000100 +#define NV20_3D_RT_FORMAT_TYPE_SWIZZLED 0x00000200 +#define NV20_3D_RT_FORMAT_DEPTH__MASK 0x00000030 +#define NV20_3D_RT_FORMAT_DEPTH__SHIFT 4 +#define NV20_3D_RT_FORMAT_DEPTH_Z16 0x00000010 +#define NV20_3D_RT_FORMAT_DEPTH_Z24S8 0x00000020 +#define NV20_3D_RT_FORMAT_COLOR__MASK 0x0000000f +#define NV20_3D_RT_FORMAT_COLOR__SHIFT 0 +#define NV20_3D_RT_FORMAT_COLOR_R5G6B5 0x00000003 +#define NV20_3D_RT_FORMAT_COLOR_X8R8G8B8 0x00000005 +#define NV20_3D_RT_FORMAT_COLOR_A8R8G8B8 0x00000008 +#define NV20_3D_RT_FORMAT_COLOR_B8 0x00000009 + +#define NV20_3D_RT_PITCH 0x0000020c +#define NV20_3D_RT_PITCH_COLOR_PITCH__MASK 0x0000ffff +#define NV20_3D_RT_PITCH_COLOR_PITCH__SHIFT 0 +#define NV20_3D_RT_PITCH_ZETA_PITCH__MASK 0xffff0000 +#define NV20_3D_RT_PITCH_ZETA_PITCH__SHIFT 16 + +#define NV20_3D_COLOR_OFFSET 0x00000210 + +#define NV20_3D_ZETA_OFFSET 0x00000214 + +#define NV20_3D_UNK0290 0x00000290 + +#define NV20_3D_VIEWPORT_CLIP_MODE 0x000002b4 + +#define NV20_3D_VIEWPORT_CLIP_HORIZ(i0) (0x000002c0 + 0x4*(i0)) +#define NV20_3D_VIEWPORT_CLIP_HORIZ__ESIZE 0x00000004 +#define NV20_3D_VIEWPORT_CLIP_HORIZ__LEN 0x00000008 +#define NV20_3D_VIEWPORT_CLIP_HORIZ_CLIP_L__MASK 0x000007ff +#define NV20_3D_VIEWPORT_CLIP_HORIZ_CLIP_L__SHIFT 0 +#define NV20_3D_VIEWPORT_CLIP_HORIZ_CLIP_R__MASK 0x07ff0000 +#define NV20_3D_VIEWPORT_CLIP_HORIZ_CLIP_R__SHIFT 16 + +#define NV20_3D_VIEWPORT_CLIP_VERT(i0) (0x000002e0 + 0x4*(i0)) +#define NV20_3D_VIEWPORT_CLIP_VERT__ESIZE 0x00000004 +#define NV20_3D_VIEWPORT_CLIP_VERT__LEN 0x00000008 +#define NV20_3D_VIEWPORT_CLIP_VERT_CLIP_T__MASK 0x000007ff +#define NV20_3D_VIEWPORT_CLIP_VERT_CLIP_T__SHIFT 0 +#define NV20_3D_VIEWPORT_CLIP_VERT_CLIP_B__MASK 0x07ff0000 +#define NV20_3D_VIEWPORT_CLIP_VERT_CLIP_B__SHIFT 16 + +#define NV20_3D_ALPHA_FUNC_ENABLE 0x00000300 + +#define NV20_3D_BLEND_FUNC_ENABLE 0x00000304 + +#define NV20_3D_CULL_FACE_ENABLE 0x00000308 + +#define NV20_3D_DEPTH_TEST_ENABLE 0x0000030c + +#define NV20_3D_DITHER_ENABLE 0x00000310 + +#define NV20_3D_LIGHTING_ENABLE 0x00000314 + +#define NV20_3D_POINT_PARAMETERS_ENABLE 0x00000318 + +#define NV20_3D_POINT_SMOOTH_ENABLE 0x0000031c + +#define NV20_3D_LINE_SMOOTH_ENABLE 0x00000320 + +#define NV20_3D_POLYGON_SMOOTH_ENABLE 0x00000324 + +#define NV20_3D_STENCIL_ENABLE 0x0000032c + +#define NV20_3D_POLYGON_OFFSET_POINT_ENABLE 0x00000330 + +#define NV20_3D_POLYGON_OFFSET_LINE_ENABLE 0x00000334 + +#define NV20_3D_POLYGON_OFFSET_FILL_ENABLE 0x00000338 + +#define NV20_3D_ALPHA_FUNC_FUNC 0x0000033c +#define NV20_3D_ALPHA_FUNC_FUNC_NEVER 0x00000200 +#define NV20_3D_ALPHA_FUNC_FUNC_LESS 0x00000201 +#define NV20_3D_ALPHA_FUNC_FUNC_EQUAL 0x00000202 +#define NV20_3D_ALPHA_FUNC_FUNC_LEQUAL 0x00000203 +#define NV20_3D_ALPHA_FUNC_FUNC_GREATER 0x00000204 +#define NV20_3D_ALPHA_FUNC_FUNC_NOTEQUAL 0x00000205 +#define NV20_3D_ALPHA_FUNC_FUNC_GEQUAL 0x00000206 +#define NV20_3D_ALPHA_FUNC_FUNC_ALWAYS 0x00000207 + +#define NV20_3D_ALPHA_FUNC_REF 0x00000340 + +#define NV20_3D_BLEND_FUNC_SRC 0x00000344 +#define NV20_3D_BLEND_FUNC_SRC_ZERO 0x00000000 +#define NV20_3D_BLEND_FUNC_SRC_ONE 0x00000001 +#define NV20_3D_BLEND_FUNC_SRC_SRC_COLOR 0x00000300 +#define NV20_3D_BLEND_FUNC_SRC_ONE_MINUS_SRC_COLOR 0x00000301 +#define NV20_3D_BLEND_FUNC_SRC_SRC_ALPHA 0x00000302 +#define NV20_3D_BLEND_FUNC_SRC_ONE_MINUS_SRC_ALPHA 0x00000303 +#define NV20_3D_BLEND_FUNC_SRC_DST_ALPHA 0x00000304 +#define NV20_3D_BLEND_FUNC_SRC_ONE_MINUS_DST_ALPHA 0x00000305 +#define NV20_3D_BLEND_FUNC_SRC_DST_COLOR 0x00000306 +#define NV20_3D_BLEND_FUNC_SRC_ONE_MINUS_DST_COLOR 0x00000307 +#define NV20_3D_BLEND_FUNC_SRC_SRC_ALPHA_SATURATE 0x00000308 +#define NV20_3D_BLEND_FUNC_SRC_CONSTANT_COLOR 0x00008001 +#define NV20_3D_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_COLOR 0x00008002 +#define NV20_3D_BLEND_FUNC_SRC_CONSTANT_ALPHA 0x00008003 +#define NV20_3D_BLEND_FUNC_SRC_ONE_MINUS_CONSTANT_ALPHA 0x00008004 + +#define NV20_3D_BLEND_FUNC_DST 0x00000348 +#define NV20_3D_BLEND_FUNC_DST_ZERO 0x00000000 +#define NV20_3D_BLEND_FUNC_DST_ONE 0x00000001 +#define NV20_3D_BLEND_FUNC_DST_SRC_COLOR 0x00000300 +#define NV20_3D_BLEND_FUNC_DST_ONE_MINUS_SRC_COLOR 0x00000301 +#define NV20_3D_BLEND_FUNC_DST_SRC_ALPHA 0x00000302 +#define NV20_3D_BLEND_FUNC_DST_ONE_MINUS_SRC_ALPHA 0x00000303 +#define NV20_3D_BLEND_FUNC_DST_DST_ALPHA 0x00000304 +#define NV20_3D_BLEND_FUNC_DST_ONE_MINUS_DST_ALPHA 0x00000305 +#define NV20_3D_BLEND_FUNC_DST_DST_COLOR 0x00000306 +#define NV20_3D_BLEND_FUNC_DST_ONE_MINUS_DST_COLOR 0x00000307 +#define NV20_3D_BLEND_FUNC_DST_SRC_ALPHA_SATURATE 0x00000308 +#define NV20_3D_BLEND_FUNC_DST_CONSTANT_COLOR 0x00008001 +#define NV20_3D_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_COLOR 0x00008002 +#define NV20_3D_BLEND_FUNC_DST_CONSTANT_ALPHA 0x00008003 +#define NV20_3D_BLEND_FUNC_DST_ONE_MINUS_CONSTANT_ALPHA 0x00008004 + +#define NV20_3D_BLEND_COLOR 0x0000034c +#define NV20_3D_BLEND_COLOR_B__MASK 0x000000ff +#define NV20_3D_BLEND_COLOR_B__SHIFT 0 +#define NV20_3D_BLEND_COLOR_G__MASK 0x0000ff00 +#define NV20_3D_BLEND_COLOR_G__SHIFT 8 +#define NV20_3D_BLEND_COLOR_R__MASK 0x00ff0000 +#define NV20_3D_BLEND_COLOR_R__SHIFT 16 +#define NV20_3D_BLEND_COLOR_A__MASK 0xff000000 +#define NV20_3D_BLEND_COLOR_A__SHIFT 24 + +#define NV20_3D_BLEND_EQUATION 0x00000350 +#define NV20_3D_BLEND_EQUATION_FUNC_ADD 0x00008006 +#define NV20_3D_BLEND_EQUATION_MIN 0x00008007 +#define NV20_3D_BLEND_EQUATION_MAX 0x00008008 +#define NV20_3D_BLEND_EQUATION_FUNC_SUBTRACT 0x0000800a +#define NV20_3D_BLEND_EQUATION_FUNC_REVERSE_SUBTRACT 0x0000800b + +#define NV20_3D_DEPTH_FUNC 0x00000354 +#define NV20_3D_DEPTH_FUNC_NEVER 0x00000200 +#define NV20_3D_DEPTH_FUNC_LESS 0x00000201 +#define NV20_3D_DEPTH_FUNC_EQUAL 0x00000202 +#define NV20_3D_DEPTH_FUNC_LEQUAL 0x00000203 +#define NV20_3D_DEPTH_FUNC_GREATER 0x00000204 +#define NV20_3D_DEPTH_FUNC_NOTEQUAL 0x00000205 +#define NV20_3D_DEPTH_FUNC_GEQUAL 0x00000206 +#define NV20_3D_DEPTH_FUNC_ALWAYS 0x00000207 + +#define NV20_3D_COLOR_MASK 0x00000358 +#define NV20_3D_COLOR_MASK_B 0x00000001 +#define NV20_3D_COLOR_MASK_G 0x00000100 +#define NV20_3D_COLOR_MASK_R 0x00010000 +#define NV20_3D_COLOR_MASK_A 0x01000000 + +#define NV20_3D_DEPTH_WRITE_ENABLE 0x0000035c + +#define NV20_3D_STENCIL_MASK 0x00000360 + +#define NV20_3D_STENCIL_FUNC_FUNC 0x00000364 +#define NV20_3D_STENCIL_FUNC_FUNC_NEVER 0x00000200 +#define NV20_3D_STENCIL_FUNC_FUNC_LESS 0x00000201 +#define NV20_3D_STENCIL_FUNC_FUNC_EQUAL 0x00000202 +#define NV20_3D_STENCIL_FUNC_FUNC_LEQUAL 0x00000203 +#define NV20_3D_STENCIL_FUNC_FUNC_GREATER 0x00000204 +#define NV20_3D_STENCIL_FUNC_FUNC_NOTEQUAL 0x00000205 +#define NV20_3D_STENCIL_FUNC_FUNC_GEQUAL 0x00000206 +#define NV20_3D_STENCIL_FUNC_FUNC_ALWAYS 0x00000207 + +#define NV20_3D_STENCIL_FUNC_REF 0x00000368 + +#define NV20_3D_STENCIL_FUNC_MASK 0x0000036c + +#define NV20_3D_STENCIL_OP_FAIL 0x00000370 +#define NV20_3D_STENCIL_OP_FAIL_ZERO 0x00000000 +#define NV20_3D_STENCIL_OP_FAIL_INVERT 0x0000150a +#define NV20_3D_STENCIL_OP_FAIL_KEEP 0x00001e00 +#define NV20_3D_STENCIL_OP_FAIL_REPLACE 0x00001e01 +#define NV20_3D_STENCIL_OP_FAIL_INCR 0x00001e02 +#define NV20_3D_STENCIL_OP_FAIL_DECR 0x00001e03 +#define NV20_3D_STENCIL_OP_FAIL_INCR_WRAP 0x00008507 +#define NV20_3D_STENCIL_OP_FAIL_DECR_WRAP 0x00008508 + +#define NV20_3D_STENCIL_OP_ZFAIL 0x00000374 +#define NV20_3D_STENCIL_OP_ZFAIL_ZERO 0x00000000 +#define NV20_3D_STENCIL_OP_ZFAIL_INVERT 0x0000150a +#define NV20_3D_STENCIL_OP_ZFAIL_KEEP 0x00001e00 +#define NV20_3D_STENCIL_OP_ZFAIL_REPLACE 0x00001e01 +#define NV20_3D_STENCIL_OP_ZFAIL_INCR 0x00001e02 +#define NV20_3D_STENCIL_OP_ZFAIL_DECR 0x00001e03 +#define NV20_3D_STENCIL_OP_ZFAIL_INCR_WRAP 0x00008507 +#define NV20_3D_STENCIL_OP_ZFAIL_DECR_WRAP 0x00008508 + +#define NV20_3D_STENCIL_OP_ZPASS 0x00000378 +#define NV20_3D_STENCIL_OP_ZPASS_ZERO 0x00000000 +#define NV20_3D_STENCIL_OP_ZPASS_INVERT 0x0000150a +#define NV20_3D_STENCIL_OP_ZPASS_KEEP 0x00001e00 +#define NV20_3D_STENCIL_OP_ZPASS_REPLACE 0x00001e01 +#define NV20_3D_STENCIL_OP_ZPASS_INCR 0x00001e02 +#define NV20_3D_STENCIL_OP_ZPASS_DECR 0x00001e03 +#define NV20_3D_STENCIL_OP_ZPASS_INCR_WRAP 0x00008507 +#define NV20_3D_STENCIL_OP_ZPASS_DECR_WRAP 0x00008508 + +#define NV20_3D_SHADE_MODEL 0x0000037c +#define NV20_3D_SHADE_MODEL_FLAT 0x00001d00 +#define NV20_3D_SHADE_MODEL_SMOOTH 0x00001d01 + +#define NV20_3D_LINE_WIDTH 0x00000380 + +#define NV20_3D_POLYGON_OFFSET_FACTOR 0x00000384 + +#define NV20_3D_POLYGON_OFFSET_UNITS 0x00000388 + +#define NV20_3D_POLYGON_MODE_FRONT 0x0000038c +#define NV20_3D_POLYGON_MODE_FRONT_POINT 0x00001b00 +#define NV20_3D_POLYGON_MODE_FRONT_LINE 0x00001b01 +#define NV20_3D_POLYGON_MODE_FRONT_FILL 0x00001b02 + +#define NV20_3D_POLYGON_MODE_BACK 0x00000390 +#define NV20_3D_POLYGON_MODE_BACK_POINT 0x00001b00 +#define NV20_3D_POLYGON_MODE_BACK_LINE 0x00001b01 +#define NV20_3D_POLYGON_MODE_BACK_FILL 0x00001b02 + +#define NV20_3D_DEPTH_RANGE_NEAR 0x00000394 + +#define NV20_3D_DEPTH_RANGE_FAR 0x00000398 + +#define NV20_3D_CULL_FACE 0x0000039c +#define NV20_3D_CULL_FACE_FRONT 0x00000404 +#define NV20_3D_CULL_FACE_BACK 0x00000405 +#define NV20_3D_CULL_FACE_FRONT_AND_BACK 0x00000408 + +#define NV20_3D_FRONT_FACE 0x000003a0 +#define NV20_3D_FRONT_FACE_CW 0x00000900 +#define NV20_3D_FRONT_FACE_CCW 0x00000901 + +#define NV20_3D_DMA_FENCE 0x000001a4 + +#define NV20_3D_DMA_QUERY 0x000001a8 + + +#define NV20_3D_VERTEX_POS_3F 0x00001500 + + +#define NV20_3D_VERTEX_POS_3F_X 0x00001500 + +#define NV20_3D_VERTEX_POS_3F_Y 0x00001504 + +#define NV20_3D_VERTEX_POS_3F_Z 0x00001508 + +#define NV20_3D_VERTEX_POS_4F 0x00001518 + + +#define NV20_3D_VERTEX_POS_4F_X 0x00001518 + +#define NV20_3D_VERTEX_POS_4F_Y 0x0000151c + +#define NV20_3D_VERTEX_POS_4F_Z 0x00001520 + +#define NV20_3D_VERTEX_POS_4F_W 0x00001524 + +#define NV20_3D_VERTEX_POS_3I 0x00001528 + + +#define NV20_3D_VERTEX_POS_3I_XY 0x00001528 +#define NV20_3D_VERTEX_POS_3I_XY_X__MASK 0x0000ffff +#define NV20_3D_VERTEX_POS_3I_XY_X__SHIFT 0 +#define NV20_3D_VERTEX_POS_3I_XY_Y__MASK 0xffff0000 +#define NV20_3D_VERTEX_POS_3I_XY_Y__SHIFT 16 + +#define NV20_3D_VERTEX_POS_3I_Z 0x0000152c +#define NV20_3D_VERTEX_POS_3I_Z_Z__MASK 0x0000ffff +#define NV20_3D_VERTEX_POS_3I_Z_Z__SHIFT 0 + +#define NV20_3D_VERTEX_NOR_3F 0x00001530 + + +#define NV20_3D_VERTEX_NOR_3F_X 0x00001530 + +#define NV20_3D_VERTEX_NOR_3F_Y 0x00001534 + +#define NV20_3D_VERTEX_NOR_3F_Z 0x00001538 + +#define NV20_3D_VERTEX_NOR_3I 0x00001540 + + +#define NV20_3D_VERTEX_NOR_3I_XY 0x00001540 +#define NV20_3D_VERTEX_NOR_3I_XY_X__MASK 0x0000ffff +#define NV20_3D_VERTEX_NOR_3I_XY_X__SHIFT 0 +#define NV20_3D_VERTEX_NOR_3I_XY_Y__MASK 0xffff0000 +#define NV20_3D_VERTEX_NOR_3I_XY_Y__SHIFT 16 + +#define NV20_3D_VERTEX_NOR_3I_Z 0x00001544 +#define NV20_3D_VERTEX_NOR_3I_Z_Z__MASK 0x0000ffff +#define NV20_3D_VERTEX_NOR_3I_Z_Z__SHIFT 0 + +#define NV20_3D_VERTEX_COL_4F 0x00001550 + + +#define NV20_3D_VERTEX_COL_4F_R 0x00001550 + +#define NV20_3D_VERTEX_COL_4F_G 0x00001554 + +#define NV20_3D_VERTEX_COL_4F_B 0x00001558 + +#define NV20_3D_VERTEX_COL_4F_A 0x0000155c + +#define NV20_3D_VERTEX_COL_3F 0x00001560 + + +#define NV20_3D_VERTEX_COL_3F_R 0x00001560 + +#define NV20_3D_VERTEX_COL_3F_G 0x00001564 + +#define NV20_3D_VERTEX_COL_3F_B 0x00001568 + +#define NV20_3D_VERTEX_COL_4I 0x0000156c +#define NV20_3D_VERTEX_COL_4I_R__MASK 0x000000ff +#define NV20_3D_VERTEX_COL_4I_R__SHIFT 0 +#define NV20_3D_VERTEX_COL_4I_G__MASK 0x0000ff00 +#define NV20_3D_VERTEX_COL_4I_G__SHIFT 8 +#define NV20_3D_VERTEX_COL_4I_B__MASK 0x00ff0000 +#define NV20_3D_VERTEX_COL_4I_B__SHIFT 16 +#define NV20_3D_VERTEX_COL_4I_A__MASK 0xff000000 +#define NV20_3D_VERTEX_COL_4I_A__SHIFT 24 + +#define NV20_3D_VERTEX_COL2_3F 0x00001580 + + +#define NV20_3D_VERTEX_COL2_3F_R 0x00001580 + +#define NV20_3D_VERTEX_COL2_3F_G 0x00001584 + +#define NV20_3D_VERTEX_COL2_3F_B 0x00001588 + +#define NV20_3D_VERTEX_COL2_3I 0x0000158c +#define NV20_3D_VERTEX_COL2_3I_R__MASK 0x000000ff +#define NV20_3D_VERTEX_COL2_3I_R__SHIFT 0 +#define NV20_3D_VERTEX_COL2_3I_G__MASK 0x0000ff00 +#define NV20_3D_VERTEX_COL2_3I_G__SHIFT 8 +#define NV20_3D_VERTEX_COL2_3I_B__MASK 0x00ff0000 +#define NV20_3D_VERTEX_COL2_3I_B__SHIFT 16 + +#define NV20_3D_VERTEX_TX0_2F 0x00001590 + + +#define NV20_3D_VERTEX_TX0_2F_S 0x00001590 + +#define NV20_3D_VERTEX_TX0_2F_T 0x00001594 + +#define NV20_3D_VERTEX_TX0_2I 0x00001598 +#define NV20_3D_VERTEX_TX0_2I_S__MASK 0x0000ffff +#define NV20_3D_VERTEX_TX0_2I_S__SHIFT 0 +#define NV20_3D_VERTEX_TX0_2I_T__MASK 0xffff0000 +#define NV20_3D_VERTEX_TX0_2I_T__SHIFT 16 + +#define NV20_3D_VERTEX_TX0_4F 0x000015a0 + + +#define NV20_3D_VERTEX_TX0_4F_S 0x000015a0 + +#define NV20_3D_VERTEX_TX0_4F_T 0x000015a4 + +#define NV20_3D_VERTEX_TX0_4F_R 0x000015a8 + +#define NV20_3D_VERTEX_TX0_4F_Q 0x000015ac + +#define NV20_3D_VERTEX_TX0_4I 0x000015b0 + + +#define NV20_3D_VERTEX_TX0_4I_ST 0x000015b0 +#define NV20_3D_VERTEX_TX0_4I_ST_S__MASK 0x0000ffff +#define NV20_3D_VERTEX_TX0_4I_ST_S__SHIFT 0 +#define NV20_3D_VERTEX_TX0_4I_ST_T__MASK 0xffff0000 +#define NV20_3D_VERTEX_TX0_4I_ST_T__SHIFT 16 + +#define NV20_3D_VERTEX_TX0_4I_RQ 0x000015b4 +#define NV20_3D_VERTEX_TX0_4I_RQ_R__MASK 0x0000ffff +#define NV20_3D_VERTEX_TX0_4I_RQ_R__SHIFT 0 +#define NV20_3D_VERTEX_TX0_4I_RQ_Q__MASK 0xffff0000 +#define NV20_3D_VERTEX_TX0_4I_RQ_Q__SHIFT 16 + +#define NV20_3D_VERTEX_TX1_2F 0x000015b8 + + +#define NV20_3D_VERTEX_TX1_2F_S 0x000015b8 + +#define NV20_3D_VERTEX_TX1_2F_T 0x000015bc + +#define NV20_3D_VERTEX_TX1_2I 0x000015c0 +#define NV20_3D_VERTEX_TX1_2I_S__MASK 0x0000ffff +#define NV20_3D_VERTEX_TX1_2I_S__SHIFT 0 +#define NV20_3D_VERTEX_TX1_2I_T__MASK 0xffff0000 +#define NV20_3D_VERTEX_TX1_2I_T__SHIFT 16 + +#define NV20_3D_VERTEX_TX1_4F 0x000015c8 + + +#define NV20_3D_VERTEX_TX1_4F_S 0x000015c8 + +#define NV20_3D_VERTEX_TX1_4F_T 0x000015cc + +#define NV20_3D_VERTEX_TX1_4F_R 0x000015d0 + +#define NV20_3D_VERTEX_TX1_4F_Q 0x000015d4 + +#define NV20_3D_VERTEX_TX1_4I 0x000015d8 + + +#define NV20_3D_VERTEX_TX1_4I_ST 0x000015d8 +#define NV20_3D_VERTEX_TX1_4I_ST_S__MASK 0x0000ffff +#define NV20_3D_VERTEX_TX1_4I_ST_S__SHIFT 0 +#define NV20_3D_VERTEX_TX1_4I_ST_T__MASK 0xffff0000 +#define NV20_3D_VERTEX_TX1_4I_ST_T__SHIFT 16 + +#define NV20_3D_VERTEX_TX1_4I_RQ 0x000015dc +#define NV20_3D_VERTEX_TX1_4I_RQ_R__MASK 0x0000ffff +#define NV20_3D_VERTEX_TX1_4I_RQ_R__SHIFT 0 +#define NV20_3D_VERTEX_TX1_4I_RQ_Q__MASK 0xffff0000 +#define NV20_3D_VERTEX_TX1_4I_RQ_Q__SHIFT 16 + +#define NV20_3D_VERTEX_TX2_2F 0x000015e0 + + +#define NV20_3D_VERTEX_TX2_2F_S 0x000015e0 + +#define NV20_3D_VERTEX_TX2_2F_T 0x000015e4 + +#define NV20_3D_VERTEX_TX2_2I 0x000015e8 +#define NV20_3D_VERTEX_TX2_2I_S__MASK 0x0000ffff +#define NV20_3D_VERTEX_TX2_2I_S__SHIFT 0 +#define NV20_3D_VERTEX_TX2_2I_T__MASK 0xffff0000 +#define NV20_3D_VERTEX_TX2_2I_T__SHIFT 16 + +#define NV20_3D_VERTEX_TX2_4F 0x000015f0 + + +#define NV20_3D_VERTEX_TX2_4F_S 0x000015f0 + +#define NV20_3D_VERTEX_TX2_4F_T 0x000015f4 + +#define NV20_3D_VERTEX_TX2_4F_R 0x000015f8 + +#define NV20_3D_VERTEX_TX2_4F_Q 0x000015fc + +#define NV20_3D_VERTEX_TX2_4I 0x00001600 + + +#define NV20_3D_VERTEX_TX2_4I_ST 0x00001600 +#define NV20_3D_VERTEX_TX2_4I_ST_S__MASK 0x0000ffff +#define NV20_3D_VERTEX_TX2_4I_ST_S__SHIFT 0 +#define NV20_3D_VERTEX_TX2_4I_ST_T__MASK 0xffff0000 +#define NV20_3D_VERTEX_TX2_4I_ST_T__SHIFT 16 + +#define NV20_3D_VERTEX_TX2_4I_RQ 0x00001604 +#define NV20_3D_VERTEX_TX2_4I_RQ_R__MASK 0x0000ffff +#define NV20_3D_VERTEX_TX2_4I_RQ_R__SHIFT 0 +#define NV20_3D_VERTEX_TX2_4I_RQ_Q__MASK 0xffff0000 +#define NV20_3D_VERTEX_TX2_4I_RQ_Q__SHIFT 16 + +#define NV20_3D_VERTEX_TX3_2F 0x00001608 + + +#define NV20_3D_VERTEX_TX3_2F_S 0x00001608 + +#define NV20_3D_VERTEX_TX3_2F_T 0x0000160c + +#define NV20_3D_VERTEX_TX3_2I 0x00001610 +#define NV20_3D_VERTEX_TX3_2I_S__MASK 0x0000ffff +#define NV20_3D_VERTEX_TX3_2I_S__SHIFT 0 +#define NV20_3D_VERTEX_TX3_2I_T__MASK 0xffff0000 +#define NV20_3D_VERTEX_TX3_2I_T__SHIFT 16 + +#define NV20_3D_VERTEX_TX3_4F 0x00001620 + + +#define NV20_3D_VERTEX_TX3_4F_S 0x00001620 + +#define NV20_3D_VERTEX_TX3_4F_T 0x00001624 + +#define NV20_3D_VERTEX_TX3_4F_R 0x00001628 + +#define NV20_3D_VERTEX_TX3_4F_Q 0x0000162c + +#define NV20_3D_VERTEX_TX3_4I 0x00001630 + + +#define NV20_3D_VERTEX_TX3_4I_ST 0x00001630 +#define NV20_3D_VERTEX_TX3_4I_ST_S__MASK 0x0000ffff +#define NV20_3D_VERTEX_TX3_4I_ST_S__SHIFT 0 +#define NV20_3D_VERTEX_TX3_4I_ST_T__MASK 0xffff0000 +#define NV20_3D_VERTEX_TX3_4I_ST_T__SHIFT 16 + +#define NV20_3D_VERTEX_TX3_4I_RQ 0x00001634 +#define NV20_3D_VERTEX_TX3_4I_RQ_R__MASK 0x0000ffff +#define NV20_3D_VERTEX_TX3_4I_RQ_R__SHIFT 0 +#define NV20_3D_VERTEX_TX3_4I_RQ_Q__MASK 0xffff0000 +#define NV20_3D_VERTEX_TX3_4I_RQ_Q__SHIFT 16 + +#define NV20_3D_VERTEX_FOG_1F 0x00001698 + +#define NV20_3D_EDGEFLAG_ENABLE 0x000016bc + +#define NV20_3D_VERTEX_ATTR_4F(i0) (0x00001a00 + 0x10*(i0)) +#define NV20_3D_VERTEX_ATTR_4F__ESIZE 0x00000010 +#define NV20_3D_VERTEX_ATTR_4F__LEN 0x00000010 + + +#define NV20_3D_VERTEX_ATTR_4F_X(i0) (0x00001a00 + 0x10*(i0)) + +#define NV20_3D_VERTEX_ATTR_4F_Y(i0) (0x00001a04 + 0x10*(i0)) + +#define NV20_3D_VERTEX_ATTR_4F_Z(i0) (0x00001a08 + 0x10*(i0)) + +#define NV20_3D_VERTEX_ATTR_4F_W(i0) (0x00001a0c + 0x10*(i0)) + + +#define NV20_3D_DMA_VTXBUF0 0x0000019c + +#define NV20_3D_DMA_VTXBUF1 0x000001a0 + +#define NV20_3D_VTXBUF_VALIDATE 0x00001710 + + +#define NV20_3D_VTXBUF_OFFSET(i0) (0x00001720 + 0x4*(i0)) +#define NV20_3D_VTXBUF_OFFSET_DMA1 0x80000000 +#define NV20_3D_VTXBUF_OFFSET_OFFSET__MASK 0x0fffffff +#define NV20_3D_VTXBUF_OFFSET_OFFSET__SHIFT 0 + +#define NV20_3D_VTXBUF_FMT(i0) (0x00001760 + 0x4*(i0)) +#define NV20_3D_VTXBUF_FMT_TYPE__MASK 0x0000000f +#define NV20_3D_VTXBUF_FMT_TYPE__SHIFT 0 +#define NV20_3D_VTXBUF_FMT_TYPE_FLOAT 0x00000002 +#define NV20_3D_VTXBUF_FMT_TYPE_UBYTE 0x00000004 +#define NV20_3D_VTXBUF_FMT_TYPE_USHORT 0x00000005 +#define NV20_3D_VTXBUF_FMT_SIZE__MASK 0x000000f0 +#define NV20_3D_VTXBUF_FMT_SIZE__SHIFT 4 +#define NV20_3D_VTXBUF_FMT_STRIDE__MASK 0x0000ff00 +#define NV20_3D_VTXBUF_FMT_STRIDE__SHIFT 8 + +#define NV20_3D_VERTEX_BEGIN_END 0x000017fc +#define NV20_3D_VERTEX_BEGIN_END_STOP 0x00000000 +#define NV20_3D_VERTEX_BEGIN_END_POINTS 0x00000001 +#define NV20_3D_VERTEX_BEGIN_END_LINES 0x00000002 +#define NV20_3D_VERTEX_BEGIN_END_LINE_LOOP 0x00000003 +#define NV20_3D_VERTEX_BEGIN_END_LINE_STRIP 0x00000004 +#define NV20_3D_VERTEX_BEGIN_END_TRIANGLES 0x00000005 +#define NV20_3D_VERTEX_BEGIN_END_TRIANGLE_STRIP 0x00000006 +#define NV20_3D_VERTEX_BEGIN_END_TRIANGLE_FAN 0x00000007 +#define NV20_3D_VERTEX_BEGIN_END_QUADS 0x00000008 +#define NV20_3D_VERTEX_BEGIN_END_QUAD_STRIP 0x00000009 +#define NV20_3D_VERTEX_BEGIN_END_POLYGON 0x0000000a + +#define NV20_3D_VTXBUF_ELEMENT_U16 0x00001800 +#define NV20_3D_VTXBUF_ELEMENT_U16_I0__MASK 0x0000ffff +#define NV20_3D_VTXBUF_ELEMENT_U16_I0__SHIFT 0 +#define NV20_3D_VTXBUF_ELEMENT_U16_I1__MASK 0xffff0000 +#define NV20_3D_VTXBUF_ELEMENT_U16_I1__SHIFT 16 + +#define NV20_3D_VTXBUF_ELEMENT_U32 0x00001808 + +#define NV20_3D_VTXBUF_BATCH 0x00001810 +#define NV20_3D_VTXBUF_BATCH_OFFSET__MASK 0x00ffffff +#define NV20_3D_VTXBUF_BATCH_OFFSET__SHIFT 0 +#define NV20_3D_VTXBUF_BATCH_COUNT__MASK 0xff000000 +#define NV20_3D_VTXBUF_BATCH_COUNT__SHIFT 24 + +#define NV20_3D_VTXBUF_DATA 0x00001818 + + +#define NV20_3D_ENGINE 0x00001e94 +#define NV20_3D_ENGINE_VP 0x00000002 +#define NV20_3D_ENGINE_FIXED 0x00000004 + +#define NV20_3D_VP_UPLOAD_INST(i0) (0x00000b00 + 0x4*(i0)) +#define NV20_3D_VP_UPLOAD_INST__ESIZE 0x00000004 +#define NV20_3D_VP_UPLOAD_INST__LEN 0x00000004 + +#define NV20_3D_VP_UPLOAD_CONST(i0) (0x00000b80 + 0x4*(i0)) +#define NV20_3D_VP_UPLOAD_CONST__ESIZE 0x00000004 +#define NV20_3D_VP_UPLOAD_CONST__LEN 0x00000004 + +#define NV20_3D_VP_UPLOAD_FROM_ID 0x00001e9c + +#define NV20_3D_VP_START_FROM_ID 0x00001ea0 + +#define NV20_3D_VP_UPLOAD_CONST_ID 0x00001ea4 + + + +#define NV20_3D_MODELVIEW_MATRIX(i0, i1) (0x00000480 + 0x40*(i0) + 0x4*(i1)) +#define NV20_3D_MODELVIEW_MATRIX__ESIZE 0x00000004 +#define NV20_3D_MODELVIEW_MATRIX__LEN 0x00000010 + +#define NV20_3D_INVERSE_MODELVIEW_MATRIX(i0, i1) (0x00000580 + 0x40*(i0) + 0x4*(i1)) +#define NV20_3D_INVERSE_MODELVIEW_MATRIX__ESIZE 0x00000004 +#define NV20_3D_INVERSE_MODELVIEW_MATRIX__LEN 0x00000010 + +#define NV20_3D_PROJECTION_MATRIX(i0) (0x00000680 + 0x4*(i0)) +#define NV20_3D_PROJECTION_MATRIX__ESIZE 0x00000004 +#define NV20_3D_PROJECTION_MATRIX__LEN 0x00000010 + +#define NV20_3D_VIEWPORT_TRANSLATE 0x00000a20 + + +#define NV20_3D_VIEWPORT_TRANSLATE_X 0x00000a20 + +#define NV20_3D_VIEWPORT_TRANSLATE_Y 0x00000a24 + +#define NV20_3D_VIEWPORT_TRANSLATE_Z 0x00000a28 + +#define NV20_3D_VIEWPORT_TRANSLATE_W 0x00000a2c + +#define NV20_3D_VIEWPORT_SCALE 0x00000af0 + + +#define NV20_3D_VIEWPORT_SCALE_X 0x00000af0 + +#define NV20_3D_VIEWPORT_SCALE_Y 0x00000af4 + +#define NV20_3D_VIEWPORT_SCALE_Z 0x00000af8 + +#define NV20_3D_VIEWPORT_SCALE_W 0x00000afc + + +#define NV20_3D_NORMALIZE_ENABLE 0x000003a4 + +#define NV20_3D_SEPARATE_SPECULAR_ENABLE 0x000003b8 + +#define NV20_3D_LIGHT_MODEL_TWO_SIDE_ENABLE 0x000017c4 + +#define NV20_3D_LIGHT_MODEL 0x00000294 +#define NV20_3D_LIGHT_MODEL_VIEWER__MASK 0x00030000 +#define NV20_3D_LIGHT_MODEL_VIEWER__SHIFT 16 +#define NV20_3D_LIGHT_MODEL_VIEWER_NONLOCAL 0x00020000 +#define NV20_3D_LIGHT_MODEL_VIEWER_LOCAL 0x00030000 +#define NV20_3D_LIGHT_MODEL_SEPARATE_SPECULAR 0x00000001 + +#define NV20_3D_ENABLED_LIGHTS 0x000003bc +#define NV20_3D_ENABLED_LIGHTS_0__MASK 0x00000003 +#define NV20_3D_ENABLED_LIGHTS_0__SHIFT 0 +#define NV20_3D_ENABLED_LIGHTS_0_DISABLED 0x00000000 +#define NV20_3D_ENABLED_LIGHTS_0_NONPOSITIONAL 0x00000001 +#define NV20_3D_ENABLED_LIGHTS_0_POSITIONAL 0x00000002 +#define NV20_3D_ENABLED_LIGHTS_0_DIRECTIONAL 0x00000003 +#define NV20_3D_ENABLED_LIGHTS_1__MASK 0x0000000c +#define NV20_3D_ENABLED_LIGHTS_1__SHIFT 2 +#define NV20_3D_ENABLED_LIGHTS_1_DISABLED 0x00000000 +#define NV20_3D_ENABLED_LIGHTS_1_NONPOSITIONAL 0x00000004 +#define NV20_3D_ENABLED_LIGHTS_1_POSITIONAL 0x00000008 +#define NV20_3D_ENABLED_LIGHTS_1_DIRECTIONAL 0x0000000c +#define NV20_3D_ENABLED_LIGHTS_2__MASK 0x00000030 +#define NV20_3D_ENABLED_LIGHTS_2__SHIFT 4 +#define NV20_3D_ENABLED_LIGHTS_2_DISABLED 0x00000000 +#define NV20_3D_ENABLED_LIGHTS_2_NONPOSITIONAL 0x00000010 +#define NV20_3D_ENABLED_LIGHTS_2_POSITIONAL 0x00000020 +#define NV20_3D_ENABLED_LIGHTS_2_DIRECTIONAL 0x00000030 +#define NV20_3D_ENABLED_LIGHTS_3__MASK 0x000000c0 +#define NV20_3D_ENABLED_LIGHTS_3__SHIFT 6 +#define NV20_3D_ENABLED_LIGHTS_3_DISABLED 0x00000000 +#define NV20_3D_ENABLED_LIGHTS_3_NONPOSITIONAL 0x00000040 +#define NV20_3D_ENABLED_LIGHTS_3_POSITIONAL 0x00000080 +#define NV20_3D_ENABLED_LIGHTS_3_DIRECTIONAL 0x000000c0 +#define NV20_3D_ENABLED_LIGHTS_4__MASK 0x00000300 +#define NV20_3D_ENABLED_LIGHTS_4__SHIFT 8 +#define NV20_3D_ENABLED_LIGHTS_4_DISABLED 0x00000000 +#define NV20_3D_ENABLED_LIGHTS_4_NONPOSITIONAL 0x00000100 +#define NV20_3D_ENABLED_LIGHTS_4_POSITIONAL 0x00000200 +#define NV20_3D_ENABLED_LIGHTS_4_DIRECTIONAL 0x00000300 +#define NV20_3D_ENABLED_LIGHTS_5__MASK 0x00000c00 +#define NV20_3D_ENABLED_LIGHTS_5__SHIFT 10 +#define NV20_3D_ENABLED_LIGHTS_5_DISABLED 0x00000000 +#define NV20_3D_ENABLED_LIGHTS_5_NONPOSITIONAL 0x00000400 +#define NV20_3D_ENABLED_LIGHTS_5_POSITIONAL 0x00000800 +#define NV20_3D_ENABLED_LIGHTS_5_DIRECTIONAL 0x00000c00 +#define NV20_3D_ENABLED_LIGHTS_6__MASK 0x00003000 +#define NV20_3D_ENABLED_LIGHTS_6__SHIFT 12 +#define NV20_3D_ENABLED_LIGHTS_6_DISABLED 0x00000000 +#define NV20_3D_ENABLED_LIGHTS_6_NONPOSITIONAL 0x00001000 +#define NV20_3D_ENABLED_LIGHTS_6_POSITIONAL 0x00002000 +#define NV20_3D_ENABLED_LIGHTS_6_DIRECTIONAL 0x00003000 +#define NV20_3D_ENABLED_LIGHTS_7__MASK 0x0000c000 +#define NV20_3D_ENABLED_LIGHTS_7__SHIFT 14 +#define NV20_3D_ENABLED_LIGHTS_7_DISABLED 0x00000000 +#define NV20_3D_ENABLED_LIGHTS_7_NONPOSITIONAL 0x00004000 +#define NV20_3D_ENABLED_LIGHTS_7_POSITIONAL 0x00008000 +#define NV20_3D_ENABLED_LIGHTS_7_DIRECTIONAL 0x0000c000 + +#define NV20_3D_COLOR_MATERIAL 0x00000298 +#define NV20_3D_COLOR_MATERIAL_FRONT_EMISSION__MASK 0x00000003 +#define NV20_3D_COLOR_MATERIAL_FRONT_EMISSION__SHIFT 0 +#define NV20_3D_COLOR_MATERIAL_FRONT_EMISSION_OFF 0x00000000 +#define NV20_3D_COLOR_MATERIAL_FRONT_EMISSION_COL1 0x00000001 +#define NV20_3D_COLOR_MATERIAL_FRONT_EMISSION_COL2 0x00000002 +#define NV20_3D_COLOR_MATERIAL_FRONT_AMBIENT__MASK 0x0000000c +#define NV20_3D_COLOR_MATERIAL_FRONT_AMBIENT__SHIFT 2 +#define NV20_3D_COLOR_MATERIAL_FRONT_AMBIENT_OFF 0x00000000 +#define NV20_3D_COLOR_MATERIAL_FRONT_AMBIENT_COL1 0x00000004 +#define NV20_3D_COLOR_MATERIAL_FRONT_AMBIENT_COL2 0x00000008 +#define NV20_3D_COLOR_MATERIAL_FRONT_DIFFUSE__MASK 0x00000030 +#define NV20_3D_COLOR_MATERIAL_FRONT_DIFFUSE__SHIFT 4 +#define NV20_3D_COLOR_MATERIAL_FRONT_DIFFUSE_OFF 0x00000000 +#define NV20_3D_COLOR_MATERIAL_FRONT_DIFFUSE_COL1 0x00000010 +#define NV20_3D_COLOR_MATERIAL_FRONT_DIFFUSE_COL2 0x00000020 +#define NV20_3D_COLOR_MATERIAL_FRONT_SPECULAR__MASK 0x000000c0 +#define NV20_3D_COLOR_MATERIAL_FRONT_SPECULAR__SHIFT 6 +#define NV20_3D_COLOR_MATERIAL_FRONT_SPECULAR_OFF 0x00000000 +#define NV20_3D_COLOR_MATERIAL_FRONT_SPECULAR_COL1 0x00000040 +#define NV20_3D_COLOR_MATERIAL_FRONT_SPECULAR_COL2 0x00000080 +#define NV20_3D_COLOR_MATERIAL_BACK_EMISSION__MASK 0x00000300 +#define NV20_3D_COLOR_MATERIAL_BACK_EMISSION__SHIFT 8 +#define NV20_3D_COLOR_MATERIAL_BACK_EMISSION_OFF 0x00000000 +#define NV20_3D_COLOR_MATERIAL_BACK_EMISSION_COL1 0x00000100 +#define NV20_3D_COLOR_MATERIAL_BACK_EMISSION_COL2 0x00000200 +#define NV20_3D_COLOR_MATERIAL_BACK_AMBIENT__MASK 0x00000c00 +#define NV20_3D_COLOR_MATERIAL_BACK_AMBIENT__SHIFT 10 +#define NV20_3D_COLOR_MATERIAL_BACK_AMBIENT_OFF 0x00000000 +#define NV20_3D_COLOR_MATERIAL_BACK_AMBIENT_COL1 0x00000400 +#define NV20_3D_COLOR_MATERIAL_BACK_AMBIENT_COL2 0x00000800 +#define NV20_3D_COLOR_MATERIAL_BACK_DIFFUSE__MASK 0x00003000 +#define NV20_3D_COLOR_MATERIAL_BACK_DIFFUSE__SHIFT 12 +#define NV20_3D_COLOR_MATERIAL_BACK_DIFFUSE_OFF 0x00000000 +#define NV20_3D_COLOR_MATERIAL_BACK_DIFFUSE_COL1 0x00001000 +#define NV20_3D_COLOR_MATERIAL_BACK_DIFFUSE_COL2 0x00002000 +#define NV20_3D_COLOR_MATERIAL_BACK_SPECULAR__MASK 0x0000c000 +#define NV20_3D_COLOR_MATERIAL_BACK_SPECULAR__SHIFT 14 +#define NV20_3D_COLOR_MATERIAL_BACK_SPECULAR_OFF 0x00000000 +#define NV20_3D_COLOR_MATERIAL_BACK_SPECULAR_COL1 0x00004000 +#define NV20_3D_COLOR_MATERIAL_BACK_SPECULAR_COL2 0x00008000 + +#define NV20_3D_MATERIAL_FACTOR_FRONT 0x000003a8 + + +#define NV20_3D_MATERIAL_FACTOR_FRONT_R 0x000003a8 + +#define NV20_3D_MATERIAL_FACTOR_FRONT_G 0x000003ac + +#define NV20_3D_MATERIAL_FACTOR_FRONT_B 0x000003b0 + +#define NV20_3D_MATERIAL_FACTOR_BACK 0x000017b0 + + +#define NV20_3D_MATERIAL_FACTOR_BACK_R 0x000017b0 + +#define NV20_3D_MATERIAL_FACTOR_BACK_G 0x000017b4 + +#define NV20_3D_MATERIAL_FACTOR_BACK_B 0x000017b8 + +#define NV20_3D_MATERIAL_FACTOR_FRONT_A 0x000003b4 + +#define NV20_3D_MATERIAL_FACTOR_BACK_A 0x000017ac + +#define NV20_3D_LIGHT_MODEL_FRONT_AMBIENT 0x00000a10 + + +#define NV20_3D_LIGHT_MODEL_FRONT_AMBIENT_R 0x00000a10 + +#define NV20_3D_LIGHT_MODEL_FRONT_AMBIENT_G 0x00000a14 + +#define NV20_3D_LIGHT_MODEL_FRONT_AMBIENT_B 0x00000a18 + +#define NV20_3D_LIGHT_MODEL_BACK_AMBIENT 0x000017a0 + + +#define NV20_3D_LIGHT_MODEL_BACK_AMBIENT_R 0x000017a0 + +#define NV20_3D_LIGHT_MODEL_BACK_AMBIENT_G 0x000017a4 + +#define NV20_3D_LIGHT_MODEL_BACK_AMBIENT_B 0x000017a8 + +#define NV20_3D_FRONT_MATERIAL_SHININESS(i0) (0x000009e0 + 0x4*(i0)) +#define NV20_3D_FRONT_MATERIAL_SHININESS__ESIZE 0x00000004 +#define NV20_3D_FRONT_MATERIAL_SHININESS__LEN 0x00000006 + +#define NV20_3D_BACK_MATERIAL_SHININESS(i0) (0x00001e28 + 0x4*(i0)) +#define NV20_3D_BACK_MATERIAL_SHININESS__ESIZE 0x00000004 +#define NV20_3D_BACK_MATERIAL_SHININESS__LEN 0x00000006 + + + +#define NV20_3D_LIGHT_FRONT_AMBIENT(i0) (0x00001000 + 0x80*(i0)) + + +#define NV20_3D_LIGHT_FRONT_AMBIENT_R(i0) (0x00001000 + 0x80*(i0)) + +#define NV20_3D_LIGHT_FRONT_AMBIENT_G(i0) (0x00001004 + 0x80*(i0)) + +#define NV20_3D_LIGHT_FRONT_AMBIENT_B(i0) (0x00001008 + 0x80*(i0)) + +#define NV20_3D_LIGHT_FRONT_DIFFUSE(i0) (0x0000100c + 0x80*(i0)) + + +#define NV20_3D_LIGHT_FRONT_DIFFUSE_R(i0) (0x0000100c + 0x80*(i0)) + +#define NV20_3D_LIGHT_FRONT_DIFFUSE_G(i0) (0x00001010 + 0x80*(i0)) + +#define NV20_3D_LIGHT_FRONT_DIFFUSE_B(i0) (0x00001014 + 0x80*(i0)) + +#define NV20_3D_LIGHT_FRONT_SPECULAR(i0) (0x00001018 + 0x80*(i0)) + + +#define NV20_3D_LIGHT_FRONT_SPECULAR_R(i0) (0x00001018 + 0x80*(i0)) + +#define NV20_3D_LIGHT_FRONT_SPECULAR_G(i0) (0x0000101c + 0x80*(i0)) + +#define NV20_3D_LIGHT_FRONT_SPECULAR_B(i0) (0x00001020 + 0x80*(i0)) + + +#define NV20_3D_LIGHT_BACK_AMBIENT(i0) (0x00000c00 + 0x40*(i0)) + + +#define NV20_3D_LIGHT_BACK_AMBIENT_R(i0) (0x00000c00 + 0x40*(i0)) + +#define NV20_3D_LIGHT_BACK_AMBIENT_G(i0) (0x00000c04 + 0x40*(i0)) + +#define NV20_3D_LIGHT_BACK_AMBIENT_B(i0) (0x00000c08 + 0x40*(i0)) + +#define NV20_3D_LIGHT_BACK_DIFFUSE(i0) (0x00000c0c + 0x40*(i0)) + + +#define NV20_3D_LIGHT_BACK_DIFFUSE_R(i0) (0x00000c0c + 0x40*(i0)) + +#define NV20_3D_LIGHT_BACK_DIFFUSE_G(i0) (0x00000c10 + 0x40*(i0)) + +#define NV20_3D_LIGHT_BACK_DIFFUSE_B(i0) (0x00000c14 + 0x40*(i0)) + +#define NV20_3D_LIGHT_BACK_SPECULAR(i0) (0x00000c18 + 0x40*(i0)) + + +#define NV20_3D_LIGHT_BACK_SPECULAR_R(i0) (0x00000c18 + 0x40*(i0)) + +#define NV20_3D_LIGHT_BACK_SPECULAR_G(i0) (0x00000c1c + 0x40*(i0)) + +#define NV20_3D_LIGHT_BACK_SPECULAR_B(i0) (0x00000c20 + 0x40*(i0)) + + +#define NV20_3D_LIGHT_HALF_VECTOR(i0) (0x00001028 + 0x80*(i0)) + + +#define NV20_3D_LIGHT_HALF_VECTOR_X(i0) (0x00001028 + 0x80*(i0)) + +#define NV20_3D_LIGHT_HALF_VECTOR_Y(i0) (0x0000102c + 0x80*(i0)) + +#define NV20_3D_LIGHT_HALF_VECTOR_Z(i0) (0x00001030 + 0x80*(i0)) + +#define NV20_3D_LIGHT_DIRECTION(i0) (0x00001034 + 0x80*(i0)) + + +#define NV20_3D_LIGHT_DIRECTION_X(i0) (0x00001034 + 0x80*(i0)) + +#define NV20_3D_LIGHT_DIRECTION_Y(i0) (0x00001038 + 0x80*(i0)) + +#define NV20_3D_LIGHT_DIRECTION_Z(i0) (0x0000103c + 0x80*(i0)) + +#define NV20_3D_LIGHT_SPOT_CUTOFF(i0, i1) (0x00001040 + 0x80*(i0) + 0x4*(i1)) +#define NV20_3D_LIGHT_SPOT_CUTOFF__ESIZE 0x00000004 +#define NV20_3D_LIGHT_SPOT_CUTOFF__LEN 0x00000007 + +#define NV20_3D_LIGHT_POSITION(i0) (0x0000105c + 0x80*(i0)) + + +#define NV20_3D_LIGHT_POSITION_X(i0) (0x0000105c + 0x80*(i0)) + +#define NV20_3D_LIGHT_POSITION_Y(i0) (0x00001060 + 0x80*(i0)) + +#define NV20_3D_LIGHT_POSITION_Z(i0) (0x00001064 + 0x80*(i0)) + +#define NV20_3D_LIGHT_ATTENUATION(i0) (0x00001068 + 0x80*(i0)) + +#define NV20_3D_LIGHT_ATTENUATION_CONSTANT(i0) (0x00001068 + 0x80*(i0)) + +#define NV20_3D_LIGHT_ATTENUATION_LINEAR(i0) (0x0000106c + 0x80*(i0)) + +#define NV20_3D_LIGHT_ATTENUATION_QUADRATIC(i0) (0x00001070 + 0x80*(i0)) + + +#define NV20_3D_FOG_MODE 0x0000029c +#define NV20_3D_FOG_MODE_LINEAR_UNSIGNED 0x00000804 +#define NV20_3D_FOG_MODE_LINEAR_SIGNED 0x00002601 +#define NV20_3D_FOG_MODE_EXP_UNSIGNED 0x00000802 +#define NV20_3D_FOG_MODE_EXP_SIGNED 0x00000800 +#define NV20_3D_FOG_MODE_EXP2_UNSIGNED 0x00000803 +#define NV20_3D_FOG_MODE_EXP2_SIGNED 0x00000801 + +#define NV20_3D_FOG_COORD 0x000002a0 +#define NV20_3D_FOG_COORD_DIST_RADIAL 0x00000001 +#define NV20_3D_FOG_COORD_DIST_ORTHOGONAL 0x00000002 +#define NV20_3D_FOG_COORD_DIST_ORTHOGONAL_ABS 0x00000003 +#define NV20_3D_FOG_COORD_FOG 0x00000006 + +#define NV20_3D_FOG_ENABLE 0x000002a4 + +#define NV20_3D_FOG_COLOR 0x000002a8 +#define NV20_3D_FOG_COLOR_R__MASK 0x000000ff +#define NV20_3D_FOG_COLOR_R__SHIFT 0 +#define NV20_3D_FOG_COLOR_G__MASK 0x0000ff00 +#define NV20_3D_FOG_COLOR_G__SHIFT 8 +#define NV20_3D_FOG_COLOR_B__MASK 0x00ff0000 +#define NV20_3D_FOG_COLOR_B__SHIFT 16 +#define NV20_3D_FOG_COLOR_A__MASK 0xff000000 +#define NV20_3D_FOG_COLOR_A__SHIFT 24 + +#define NV20_3D_FOG_COEFF(i0) (0x000009c0 + 0x4*(i0)) +#define NV20_3D_FOG_COEFF__ESIZE 0x00000004 +#define NV20_3D_FOG_COEFF__LEN 0x00000003 + + + +#define NV20_3D_TEX_GEN_MODE(i0, i1) (0x000003c0 + 0x10*(i0) + 0x4*(i1)) +#define NV20_3D_TEX_GEN_MODE__ESIZE 0x00000004 +#define NV20_3D_TEX_GEN_MODE__LEN 0x00000004 +#define NV20_3D_TEX_GEN_MODE_FALSE 0x00000000 +#define NV20_3D_TEX_GEN_MODE_EYE_LINEAR 0x00002400 +#define NV20_3D_TEX_GEN_MODE_OBJECT_LINEAR 0x00002401 +#define NV20_3D_TEX_GEN_MODE_SPHERE_MAP 0x00002402 +#define NV20_3D_TEX_GEN_MODE_NORMAL_MAP 0x00008511 +#define NV20_3D_TEX_GEN_MODE_REFLECTION_MAP 0x00008512 + + +#define NV20_3D_TEX_GEN_COEFF(i0, i1) (0x00000840 + 0x40*(i0) + 0x10*(i1)) +#define NV20_3D_TEX_GEN_COEFF__ESIZE 0x00000010 +#define NV20_3D_TEX_GEN_COEFF__LEN 0x00000004 + +#define NV20_3D_TEX_GEN_COEFF_A(i0, i1) (0x00000840 + 0x40*(i0) + 0x10*(i1)) + +#define NV20_3D_TEX_GEN_COEFF_B(i0, i1) (0x00000844 + 0x40*(i0) + 0x10*(i1)) + +#define NV20_3D_TEX_GEN_COEFF_C(i0, i1) (0x00000848 + 0x40*(i0) + 0x10*(i1)) + +#define NV20_3D_TEX_GEN_COEFF_D(i0, i1) (0x0000084c + 0x40*(i0) + 0x10*(i1)) + +#define NV20_3D_TEX_MATRIX_ENABLE(i0) (0x00000420 + 0x4*(i0)) +#define NV20_3D_TEX_MATRIX_ENABLE__ESIZE 0x00000004 +#define NV20_3D_TEX_MATRIX_ENABLE__LEN 0x00000004 + + +#define NV20_3D_TEX_MATRIX(i0, i1) (0x000006c0 + 0x40*(i0) + 0x4*(i1)) +#define NV20_3D_TEX_MATRIX__ESIZE 0x00000004 +#define NV20_3D_TEX_MATRIX__LEN 0x00000010 + +#define NV20_3D_TEX_SHADER_CULL_MODE 0x000017f8 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_S__MASK 0x00000001 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_S__SHIFT 0 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_S_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_S_LESS 0x00000001 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_T__MASK 0x00000002 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_T__SHIFT 1 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_T_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_T_LESS 0x00000002 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_R__MASK 0x00000004 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_R__SHIFT 2 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_R_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_R_LESS 0x00000004 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_Q__MASK 0x00000008 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_Q__SHIFT 3 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_Q_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX0_Q_LESS 0x00000008 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_S__MASK 0x00000010 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_S__SHIFT 4 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_S_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_S_LESS 0x00000010 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_T__MASK 0x00000020 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_T__SHIFT 5 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_T_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_T_LESS 0x00000020 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_R__MASK 0x00000040 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_R__SHIFT 6 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_R_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_R_LESS 0x00000040 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_Q__MASK 0x00000080 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_Q__SHIFT 7 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_Q_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX1_Q_LESS 0x00000080 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_S__MASK 0x00000100 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_S__SHIFT 8 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_S_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_S_LESS 0x00000100 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_T__MASK 0x00000200 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_T__SHIFT 9 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_T_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_T_LESS 0x00000200 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_R__MASK 0x00000400 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_R__SHIFT 10 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_R_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_R_LESS 0x00000400 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_Q__MASK 0x00000800 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_Q__SHIFT 11 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_Q_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX2_Q_LESS 0x00000800 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_S__MASK 0x00001000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_S__SHIFT 12 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_S_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_S_LESS 0x00001000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_T__MASK 0x00002000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_T__SHIFT 13 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_T_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_T_LESS 0x00002000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_R__MASK 0x00004000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_R__SHIFT 14 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_R_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_R_LESS 0x00004000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_Q__MASK 0x00008000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_Q__SHIFT 15 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_Q_GEQUAL 0x00000000 +#define NV20_3D_TEX_SHADER_CULL_MODE_TX3_Q_LESS 0x00008000 + +#define NV20_3D_TEX_SHADER_CONST_EYE 0x0000181c + + +#define NV20_3D_TEX_SHADER_CONST_EYE_X 0x0000181c + +#define NV20_3D_TEX_SHADER_CONST_EYE_Y 0x00001820 + +#define NV20_3D_TEX_SHADER_CONST_EYE_Z 0x00001824 + + +#define NV20_3D_TEX_SHADER_OFFSET_MATRIX(i0, i1) (0x00001b28 + 0x40*(i0) + 0x4*(i1)) +#define NV20_3D_TEX_SHADER_OFFSET_MATRIX__ESIZE 0x00000004 +#define NV20_3D_TEX_SHADER_OFFSET_MATRIX__LEN 0x00000004 + +#define NV20_3D_TEX_RCOMP 0x00001e6c +#define NV20_3D_TEX_RCOMP_NEVER 0x00000000 +#define NV20_3D_TEX_RCOMP_GREATER 0x00000001 +#define NV20_3D_TEX_RCOMP_EQUAL 0x00000002 +#define NV20_3D_TEX_RCOMP_GEQUAL 0x00000003 +#define NV20_3D_TEX_RCOMP_LESS 0x00000004 +#define NV20_3D_TEX_RCOMP_NOTEQUAL 0x00000005 +#define NV20_3D_TEX_RCOMP_LEQUAL 0x00000006 +#define NV20_3D_TEX_RCOMP_ALWAYS 0x00000007 + +#define NV20_3D_TEX_SHADER_OP 0x00001e70 +#define NV20_3D_TEX_SHADER_OP_TX0__MASK 0x0000001f +#define NV20_3D_TEX_SHADER_OP_TX0__SHIFT 0 +#define NV20_3D_TEX_SHADER_OP_TX0_NONE 0x00000000 +#define NV20_3D_TEX_SHADER_OP_TX0_TEXTURE_2D 0x00000001 +#define NV20_3D_TEX_SHADER_OP_TX0_PASS_THROUGH 0x00000004 +#define NV20_3D_TEX_SHADER_OP_TX0_CULL_FRAGMENT 0x00000005 +#define NV20_3D_TEX_SHADER_OP_TX0_OFFSET_TEXTURE_2D 0x00000006 +#define NV20_3D_TEX_SHADER_OP_TX0_DOT_PRODUCT_TEXTURE_2D 0x00000009 +#define NV20_3D_TEX_SHADER_OP_TX0_DOT_PRODUCT_DEPTH_REPLACE 0x0000000a +#define NV20_3D_TEX_SHADER_OP_TX0_DEPENDANT_AR_TEXTURE_2D 0x0000000f +#define NV20_3D_TEX_SHADER_OP_TX0_DEPENDANT_GB_TEXTURE_2D 0x00000010 +#define NV20_3D_TEX_SHADER_OP_TX0_DOT_PRODUCT 0x00000011 +#define NV20_3D_TEX_SHADER_OP_TX1__MASK 0x000003e0 +#define NV20_3D_TEX_SHADER_OP_TX1__SHIFT 5 +#define NV20_3D_TEX_SHADER_OP_TX1_NONE 0x00000000 +#define NV20_3D_TEX_SHADER_OP_TX1_TEXTURE_2D 0x00000020 +#define NV20_3D_TEX_SHADER_OP_TX1_PASS_THROUGH 0x00000080 +#define NV20_3D_TEX_SHADER_OP_TX1_CULL_FRAGMENT 0x000000a0 +#define NV20_3D_TEX_SHADER_OP_TX1_OFFSET_TEXTURE_2D 0x000000c0 +#define NV20_3D_TEX_SHADER_OP_TX1_DOT_PRODUCT_TEXTURE_2D 0x00000120 +#define NV20_3D_TEX_SHADER_OP_TX1_DOT_PRODUCT_DEPTH_REPLACE 0x00000140 +#define NV20_3D_TEX_SHADER_OP_TX1_DEPENDANT_AR_TEXTURE_2D 0x000001e0 +#define NV20_3D_TEX_SHADER_OP_TX1_DEPENDANT_GB_TEXTURE_2D 0x00000200 +#define NV20_3D_TEX_SHADER_OP_TX1_DOT_PRODUCT 0x00000220 +#define NV20_3D_TEX_SHADER_OP_TX2__MASK 0x00007c00 +#define NV20_3D_TEX_SHADER_OP_TX2__SHIFT 10 +#define NV20_3D_TEX_SHADER_OP_TX2_NONE 0x00000000 +#define NV20_3D_TEX_SHADER_OP_TX2_TEXTURE_2D 0x00000400 +#define NV20_3D_TEX_SHADER_OP_TX2_PASS_THROUGH 0x00001000 +#define NV20_3D_TEX_SHADER_OP_TX2_CULL_FRAGMENT 0x00001400 +#define NV20_3D_TEX_SHADER_OP_TX2_OFFSET_TEXTURE_2D 0x00001800 +#define NV20_3D_TEX_SHADER_OP_TX2_DOT_PRODUCT_TEXTURE_2D 0x00002400 +#define NV20_3D_TEX_SHADER_OP_TX2_DOT_PRODUCT_DEPTH_REPLACE 0x00002800 +#define NV20_3D_TEX_SHADER_OP_TX2_DEPENDANT_AR_TEXTURE_2D 0x00003c00 +#define NV20_3D_TEX_SHADER_OP_TX2_DEPENDANT_GB_TEXTURE_2D 0x00004000 +#define NV20_3D_TEX_SHADER_OP_TX2_DOT_PRODUCT 0x00004400 +#define NV20_3D_TEX_SHADER_OP_TX3__MASK 0x000f8000 +#define NV20_3D_TEX_SHADER_OP_TX3__SHIFT 15 +#define NV20_3D_TEX_SHADER_OP_TX3_NONE 0x00000000 +#define NV20_3D_TEX_SHADER_OP_TX3_TEXTURE_2D 0x00008000 +#define NV20_3D_TEX_SHADER_OP_TX3_PASS_THROUGH 0x00020000 +#define NV20_3D_TEX_SHADER_OP_TX3_CULL_FRAGMENT 0x00028000 +#define NV20_3D_TEX_SHADER_OP_TX3_OFFSET_TEXTURE_2D 0x00030000 +#define NV20_3D_TEX_SHADER_OP_TX3_DOT_PRODUCT_TEXTURE_2D 0x00048000 +#define NV20_3D_TEX_SHADER_OP_TX3_DOT_PRODUCT_DEPTH_REPLACE 0x00050000 +#define NV20_3D_TEX_SHADER_OP_TX3_DEPENDANT_AR_TEXTURE_2D 0x00078000 +#define NV20_3D_TEX_SHADER_OP_TX3_DEPENDANT_GB_TEXTURE_2D 0x00080000 +#define NV20_3D_TEX_SHADER_OP_TX3_DOT_PRODUCT 0x00088000 + +#define NV20_3D_TEX_SHADER_DOTMAPPING 0x00001e74 +#define NV20_3D_TEX_SHADER_DOTMAPPING_TX0__MASK 0x0000000f +#define NV20_3D_TEX_SHADER_DOTMAPPING_TX0__SHIFT 0 +#define NV20_3D_TEX_SHADER_DOTMAPPING_TX1__MASK 0x000000f0 +#define NV20_3D_TEX_SHADER_DOTMAPPING_TX1__SHIFT 4 +#define NV20_3D_TEX_SHADER_DOTMAPPING_TX2__MASK 0x00000f00 +#define NV20_3D_TEX_SHADER_DOTMAPPING_TX2__SHIFT 8 +#define NV20_3D_TEX_SHADER_DOTMAPPING_TX3__MASK 0x0000f000 +#define NV20_3D_TEX_SHADER_DOTMAPPING_TX3__SHIFT 12 + +#define NV20_3D_TEX_SHADER_PREVIOUS 0x00001e78 +#define NV20_3D_TEX_SHADER_PREVIOUS_TX0__MASK 0x00000f00 +#define NV20_3D_TEX_SHADER_PREVIOUS_TX0__SHIFT 8 +#define NV20_3D_TEX_SHADER_PREVIOUS_TX1__MASK 0x0000f000 +#define NV20_3D_TEX_SHADER_PREVIOUS_TX1__SHIFT 12 +#define NV20_3D_TEX_SHADER_PREVIOUS_TX2__MASK 0x00030000 +#define NV20_3D_TEX_SHADER_PREVIOUS_TX2__SHIFT 16 +#define NV20_3D_TEX_SHADER_PREVIOUS_TX3__MASK 0x00300000 +#define NV20_3D_TEX_SHADER_PREVIOUS_TX3__SHIFT 20 + +#define NV20_3D_TEX(i0) (0x00000000 + 0x40*(i0)) +#define NV20_3D_TEX__ESIZE 0x00000040 +#define NV20_3D_TEX__LEN 0x00000004 + +#define NV20_3D_TEX_OFFSET(i0) (0x00001b00 + 0x40*(i0)) + +#define NV20_3D_TEX_FORMAT(i0) (0x00001b04 + 0x40*(i0)) +#define NV20_3D_TEX_FORMAT_DMA0 0x00000001 +#define NV20_3D_TEX_FORMAT_DMA1 0x00000002 +#define NV20_3D_TEX_FORMAT_CUBIC 0x00000004 +#define NV20_3D_TEX_FORMAT_NO_BORDER 0x00000008 +#define NV20_3D_TEX_FORMAT_DIMS__MASK 0x000000f0 +#define NV20_3D_TEX_FORMAT_DIMS__SHIFT 4 +#define NV20_3D_TEX_FORMAT_DIMS_1D 0x00000010 +#define NV20_3D_TEX_FORMAT_DIMS_2D 0x00000020 +#define NV20_3D_TEX_FORMAT_DIMS_3D 0x00000030 +#define NV20_3D_TEX_FORMAT_FORMAT__MASK 0x0000ff00 +#define NV20_3D_TEX_FORMAT_FORMAT__SHIFT 8 +#define NV20_3D_TEX_FORMAT_FORMAT_L8 0x00000000 +#define NV20_3D_TEX_FORMAT_FORMAT_I8 0x00000100 +#define NV20_3D_TEX_FORMAT_FORMAT_A1R5G5B5 0x00000200 +#define NV20_3D_TEX_FORMAT_FORMAT_A4R4G4B4 0x00000400 +#define NV20_3D_TEX_FORMAT_FORMAT_R5G6B5 0x00000500 +#define NV20_3D_TEX_FORMAT_FORMAT_A8R8G8B8 0x00000600 +#define NV20_3D_TEX_FORMAT_FORMAT_X8R8G8B8 0x00000700 +#define NV20_3D_TEX_FORMAT_FORMAT_INDEX8 0x00000b00 +#define NV20_3D_TEX_FORMAT_FORMAT_DXT1 0x00000c00 +#define NV20_3D_TEX_FORMAT_FORMAT_DXT3 0x00000e00 +#define NV20_3D_TEX_FORMAT_FORMAT_DXT5 0x00000f00 +#define NV20_3D_TEX_FORMAT_FORMAT_A1R5G5B5_RECT 0x00001000 +#define NV20_3D_TEX_FORMAT_FORMAT_R5G6B5_RECT 0x00001100 +#define NV20_3D_TEX_FORMAT_FORMAT_A8R8G8B8_RECT 0x00001200 +#define NV20_3D_TEX_FORMAT_FORMAT_L8_RECT 0x00001300 +#define NV20_3D_TEX_FORMAT_FORMAT_DSDT8_RECT 0x00001700 +#define NV20_3D_TEX_FORMAT_FORMAT_A8L8 0x00001a00 +#define NV20_3D_TEX_FORMAT_FORMAT_I8_RECT 0x00001b00 +#define NV20_3D_TEX_FORMAT_FORMAT_A4R4G4B4_RECT 0x00001d00 +#define NV20_3D_TEX_FORMAT_FORMAT_R8G8B8_RECT 0x00001e00 +#define NV20_3D_TEX_FORMAT_FORMAT_A8L8_RECT 0x00002000 +#define NV20_3D_TEX_FORMAT_FORMAT_Z24 0x00002a00 +#define NV20_3D_TEX_FORMAT_FORMAT_Z24_RECT 0x00002b00 +#define NV20_3D_TEX_FORMAT_FORMAT_Z16 0x00002c00 +#define NV20_3D_TEX_FORMAT_FORMAT_Z16_RECT 0x00002d00 +#define NV20_3D_TEX_FORMAT_FORMAT_DSDT8 0x00002800 +#define NV20_3D_TEX_FORMAT_FORMAT_HILO16 0x00003300 +#define NV20_3D_TEX_FORMAT_FORMAT_HILO16_RECT 0x00003600 +#define NV20_3D_TEX_FORMAT_FORMAT_HILO8 0x00004400 +#define NV20_3D_TEX_FORMAT_FORMAT_SIGNED_HILO8 0x00004500 +#define NV20_3D_TEX_FORMAT_FORMAT_HILO8_RECT 0x00004600 +#define NV20_3D_TEX_FORMAT_FORMAT_SIGNED_HILO8_RECT 0x00004700 +#define NV20_3D_TEX_FORMAT_MIPMAP 0x00080000 +#define NV20_3D_TEX_FORMAT_BASE_SIZE_U__MASK 0x00f00000 +#define NV20_3D_TEX_FORMAT_BASE_SIZE_U__SHIFT 20 +#define NV20_3D_TEX_FORMAT_BASE_SIZE_V__MASK 0x0f000000 +#define NV20_3D_TEX_FORMAT_BASE_SIZE_V__SHIFT 24 +#define NV20_3D_TEX_FORMAT_BASE_SIZE_W__MASK 0xf0000000 +#define NV20_3D_TEX_FORMAT_BASE_SIZE_W__SHIFT 28 + +#define NV20_3D_TEX_WRAP(i0) (0x00001b08 + 0x40*(i0)) +#define NV20_3D_TEX_WRAP_S__MASK 0x000000ff +#define NV20_3D_TEX_WRAP_S__SHIFT 0 +#define NV20_3D_TEX_WRAP_S_REPEAT 0x00000001 +#define NV20_3D_TEX_WRAP_S_MIRRORED_REPEAT 0x00000002 +#define NV20_3D_TEX_WRAP_S_CLAMP_TO_EDGE 0x00000003 +#define NV20_3D_TEX_WRAP_S_CLAMP_TO_BORDER 0x00000004 +#define NV20_3D_TEX_WRAP_S_CLAMP 0x00000005 +#define NV20_3D_TEX_WRAP_T__MASK 0x00000f00 +#define NV20_3D_TEX_WRAP_T__SHIFT 8 +#define NV20_3D_TEX_WRAP_T_REPEAT 0x00000100 +#define NV20_3D_TEX_WRAP_T_MIRRORED_REPEAT 0x00000200 +#define NV20_3D_TEX_WRAP_T_CLAMP_TO_EDGE 0x00000300 +#define NV20_3D_TEX_WRAP_T_CLAMP_TO_BORDER 0x00000400 +#define NV20_3D_TEX_WRAP_T_CLAMP 0x00000500 +#define NV20_3D_TEX_WRAP_R__MASK 0x000f0000 +#define NV20_3D_TEX_WRAP_R__SHIFT 16 +#define NV20_3D_TEX_WRAP_R_REPEAT 0x00010000 +#define NV20_3D_TEX_WRAP_R_MIRRORED_REPEAT 0x00020000 +#define NV20_3D_TEX_WRAP_R_CLAMP_TO_EDGE 0x00030000 +#define NV20_3D_TEX_WRAP_R_CLAMP_TO_BORDER 0x00040000 +#define NV20_3D_TEX_WRAP_R_CLAMP 0x00050000 + +#define NV20_3D_TEX_ENABLE(i0) (0x00001b0c + 0x40*(i0)) +#define NV20_3D_TEX_ENABLE_ANISO__MASK 0x00000030 +#define NV20_3D_TEX_ENABLE_ANISO__SHIFT 4 +#define NV20_3D_TEX_ENABLE_ANISO_NONE 0x00000000 +#define NV20_3D_TEX_ENABLE_ANISO_2X 0x00000010 +#define NV20_3D_TEX_ENABLE_ANISO_4X 0x00000020 +#define NV20_3D_TEX_ENABLE_ANISO_8X 0x00000030 +#define NV20_3D_TEX_ENABLE_MIPMAP_MAX_LOD__MASK 0x0003c000 +#define NV20_3D_TEX_ENABLE_MIPMAP_MAX_LOD__SHIFT 14 +#define NV20_3D_TEX_ENABLE_MIPMAP_MIN_LOD__MASK 0x3c000000 +#define NV20_3D_TEX_ENABLE_MIPMAP_MIN_LOD__SHIFT 26 +#define NV20_3D_TEX_ENABLE_ENABLE 0x40000000 + +#define NV20_3D_TEX_NPOT_PITCH(i0) (0x00001b10 + 0x40*(i0)) +#define NV20_3D_TEX_NPOT_PITCH_PITCH__MASK 0xffff0000 +#define NV20_3D_TEX_NPOT_PITCH_PITCH__SHIFT 16 + +#define NV20_3D_TEX_FILTER(i0) (0x00001b14 + 0x40*(i0)) +#define NV20_3D_TEX_FILTER_LOD_BIAS__MASK 0x00000f00 +#define NV20_3D_TEX_FILTER_LOD_BIAS__SHIFT 8 +#define NV20_3D_TEX_FILTER_MINIFY__MASK 0x000f0000 +#define NV20_3D_TEX_FILTER_MINIFY__SHIFT 16 +#define NV20_3D_TEX_FILTER_MINIFY_NEAREST 0x00010000 +#define NV20_3D_TEX_FILTER_MINIFY_LINEAR 0x00020000 +#define NV20_3D_TEX_FILTER_MINIFY_NEAREST_MIPMAP_NEAREST 0x00030000 +#define NV20_3D_TEX_FILTER_MINIFY_LINEAR_MIPMAP_NEAREST 0x00040000 +#define NV20_3D_TEX_FILTER_MINIFY_NEAREST_MIPMAP_LINEAR 0x00050000 +#define NV20_3D_TEX_FILTER_MINIFY_LINEAR_MIPMAP_LINEAR 0x00060000 +#define NV20_3D_TEX_FILTER_MAGNIFY__MASK 0x0f000000 +#define NV20_3D_TEX_FILTER_MAGNIFY__SHIFT 24 +#define NV20_3D_TEX_FILTER_MAGNIFY_NEAREST 0x01000000 +#define NV20_3D_TEX_FILTER_MAGNIFY_LINEAR 0x02000000 + +#define NV20_3D_TEX_NPOT_SIZE(i0) (0x00001b1c + 0x40*(i0)) +#define NV20_3D_TEX_NPOT_SIZE_H__MASK 0x0000ffff +#define NV20_3D_TEX_NPOT_SIZE_H__SHIFT 0 +#define NV20_3D_TEX_NPOT_SIZE_W__MASK 0xffff0000 +#define NV20_3D_TEX_NPOT_SIZE_W__SHIFT 16 + +#define NV20_3D_TEX_PALETTE_OFFSET(i0) (0x00001b20 + 0x40*(i0)) + +#define NV20_3D_TEX_BORDER_COLOR(i0) (0x00001b24 + 0x40*(i0)) +#define NV20_3D_TEX_BORDER_COLOR_B__MASK 0x000000ff +#define NV20_3D_TEX_BORDER_COLOR_B__SHIFT 0 +#define NV20_3D_TEX_BORDER_COLOR_G__MASK 0x0000ff00 +#define NV20_3D_TEX_BORDER_COLOR_G__SHIFT 8 +#define NV20_3D_TEX_BORDER_COLOR_R__MASK 0x00ff0000 +#define NV20_3D_TEX_BORDER_COLOR_R__SHIFT 16 +#define NV20_3D_TEX_BORDER_COLOR_A__MASK 0xff000000 +#define NV20_3D_TEX_BORDER_COLOR_A__SHIFT 24 + + + +#define NV20_3D_RC_IN_ALPHA(i0) (0x00000260 + 0x4*(i0)) +#define NV20_3D_RC_IN_ALPHA_D_INPUT__MASK 0x0000000f +#define NV20_3D_RC_IN_ALPHA_D_INPUT__SHIFT 0 +#define NV20_3D_RC_IN_ALPHA_D_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR0 0x00000001 +#define NV20_3D_RC_IN_ALPHA_D_INPUT_CONSTANT_COLOR1 0x00000002 +#define NV20_3D_RC_IN_ALPHA_D_INPUT_FOG 0x00000003 +#define NV20_3D_RC_IN_ALPHA_D_INPUT_PRIMARY_COLOR 0x00000004 +#define NV20_3D_RC_IN_ALPHA_D_INPUT_SECONDARY_COLOR 0x00000005 +#define NV20_3D_RC_IN_ALPHA_D_INPUT_TEXTURE0 0x00000008 +#define NV20_3D_RC_IN_ALPHA_D_INPUT_TEXTURE1 0x00000009 +#define NV20_3D_RC_IN_ALPHA_D_INPUT_TEXTURE2 0x0000000a +#define NV20_3D_RC_IN_ALPHA_D_INPUT_TEXTURE3 0x0000000b +#define NV20_3D_RC_IN_ALPHA_D_INPUT_SPARE0 0x0000000c +#define NV20_3D_RC_IN_ALPHA_D_INPUT_SPARE1 0x0000000d +#define NV20_3D_RC_IN_ALPHA_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e +#define NV20_3D_RC_IN_ALPHA_D_INPUT_E_TIMES_F 0x0000000f +#define NV20_3D_RC_IN_ALPHA_D_COMPONENT_USAGE__MASK 0x00000010 +#define NV20_3D_RC_IN_ALPHA_D_COMPONENT_USAGE__SHIFT 4 +#define NV20_3D_RC_IN_ALPHA_D_COMPONENT_USAGE_BLUE 0x00000000 +#define NV20_3D_RC_IN_ALPHA_D_COMPONENT_USAGE_ALPHA 0x00000010 +#define NV20_3D_RC_IN_ALPHA_D_MAPPING__MASK 0x000000e0 +#define NV20_3D_RC_IN_ALPHA_D_MAPPING__SHIFT 5 +#define NV20_3D_RC_IN_ALPHA_D_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_IN_ALPHA_D_MAPPING_UNSIGNED_INVERT 0x00000020 +#define NV20_3D_RC_IN_ALPHA_D_MAPPING_EXPAND_NORMAL 0x00000040 +#define NV20_3D_RC_IN_ALPHA_D_MAPPING_EXPAND_NEGATE 0x00000060 +#define NV20_3D_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NORMAL 0x00000080 +#define NV20_3D_RC_IN_ALPHA_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0 +#define NV20_3D_RC_IN_ALPHA_D_MAPPING_SIGNED_IDENTITY 0x000000c0 +#define NV20_3D_RC_IN_ALPHA_D_MAPPING_SIGNED_NEGATE 0x000000e0 +#define NV20_3D_RC_IN_ALPHA_C_INPUT__MASK 0x00000f00 +#define NV20_3D_RC_IN_ALPHA_C_INPUT__SHIFT 8 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR0 0x00000100 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_CONSTANT_COLOR1 0x00000200 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_FOG 0x00000300 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_PRIMARY_COLOR 0x00000400 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_SECONDARY_COLOR 0x00000500 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_TEXTURE0 0x00000800 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_TEXTURE1 0x00000900 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_TEXTURE2 0x00000a00 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_TEXTURE3 0x00000b00 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_SPARE0 0x00000c00 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_SPARE1 0x00000d00 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 +#define NV20_3D_RC_IN_ALPHA_C_INPUT_E_TIMES_F 0x00000f00 +#define NV20_3D_RC_IN_ALPHA_C_COMPONENT_USAGE__MASK 0x00001000 +#define NV20_3D_RC_IN_ALPHA_C_COMPONENT_USAGE__SHIFT 12 +#define NV20_3D_RC_IN_ALPHA_C_COMPONENT_USAGE_BLUE 0x00000000 +#define NV20_3D_RC_IN_ALPHA_C_COMPONENT_USAGE_ALPHA 0x00001000 +#define NV20_3D_RC_IN_ALPHA_C_MAPPING__MASK 0x0000e000 +#define NV20_3D_RC_IN_ALPHA_C_MAPPING__SHIFT 13 +#define NV20_3D_RC_IN_ALPHA_C_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_IN_ALPHA_C_MAPPING_UNSIGNED_INVERT 0x00002000 +#define NV20_3D_RC_IN_ALPHA_C_MAPPING_EXPAND_NORMAL 0x00004000 +#define NV20_3D_RC_IN_ALPHA_C_MAPPING_EXPAND_NEGATE 0x00006000 +#define NV20_3D_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NORMAL 0x00008000 +#define NV20_3D_RC_IN_ALPHA_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000 +#define NV20_3D_RC_IN_ALPHA_C_MAPPING_SIGNED_IDENTITY 0x0000c000 +#define NV20_3D_RC_IN_ALPHA_C_MAPPING_SIGNED_NEGATE 0x0000e000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT__MASK 0x000f0000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT__SHIFT 16 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR0 0x00010000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_CONSTANT_COLOR1 0x00020000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_FOG 0x00030000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_PRIMARY_COLOR 0x00040000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_SECONDARY_COLOR 0x00050000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_TEXTURE0 0x00080000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_TEXTURE1 0x00090000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_TEXTURE2 0x000a0000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_TEXTURE3 0x000b0000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_SPARE0 0x000c0000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_SPARE1 0x000d0000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 +#define NV20_3D_RC_IN_ALPHA_B_INPUT_E_TIMES_F 0x000f0000 +#define NV20_3D_RC_IN_ALPHA_B_COMPONENT_USAGE__MASK 0x00100000 +#define NV20_3D_RC_IN_ALPHA_B_COMPONENT_USAGE__SHIFT 20 +#define NV20_3D_RC_IN_ALPHA_B_COMPONENT_USAGE_BLUE 0x00000000 +#define NV20_3D_RC_IN_ALPHA_B_COMPONENT_USAGE_ALPHA 0x00100000 +#define NV20_3D_RC_IN_ALPHA_B_MAPPING__MASK 0x00e00000 +#define NV20_3D_RC_IN_ALPHA_B_MAPPING__SHIFT 21 +#define NV20_3D_RC_IN_ALPHA_B_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_IN_ALPHA_B_MAPPING_UNSIGNED_INVERT 0x00200000 +#define NV20_3D_RC_IN_ALPHA_B_MAPPING_EXPAND_NORMAL 0x00400000 +#define NV20_3D_RC_IN_ALPHA_B_MAPPING_EXPAND_NEGATE 0x00600000 +#define NV20_3D_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NORMAL 0x00800000 +#define NV20_3D_RC_IN_ALPHA_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000 +#define NV20_3D_RC_IN_ALPHA_B_MAPPING_SIGNED_IDENTITY 0x00c00000 +#define NV20_3D_RC_IN_ALPHA_B_MAPPING_SIGNED_NEGATE 0x00e00000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT__MASK 0x0f000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT__SHIFT 24 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR0 0x01000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_CONSTANT_COLOR1 0x02000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_FOG 0x03000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_PRIMARY_COLOR 0x04000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_SECONDARY_COLOR 0x05000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_TEXTURE0 0x08000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_TEXTURE1 0x09000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_TEXTURE2 0x0a000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_TEXTURE3 0x0b000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_SPARE0 0x0c000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_SPARE1 0x0d000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 +#define NV20_3D_RC_IN_ALPHA_A_INPUT_E_TIMES_F 0x0f000000 +#define NV20_3D_RC_IN_ALPHA_A_COMPONENT_USAGE__MASK 0x10000000 +#define NV20_3D_RC_IN_ALPHA_A_COMPONENT_USAGE__SHIFT 28 +#define NV20_3D_RC_IN_ALPHA_A_COMPONENT_USAGE_BLUE 0x00000000 +#define NV20_3D_RC_IN_ALPHA_A_COMPONENT_USAGE_ALPHA 0x10000000 +#define NV20_3D_RC_IN_ALPHA_A_MAPPING__MASK 0xe0000000 +#define NV20_3D_RC_IN_ALPHA_A_MAPPING__SHIFT 29 +#define NV20_3D_RC_IN_ALPHA_A_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_IN_ALPHA_A_MAPPING_UNSIGNED_INVERT 0x20000000 +#define NV20_3D_RC_IN_ALPHA_A_MAPPING_EXPAND_NORMAL 0x40000000 +#define NV20_3D_RC_IN_ALPHA_A_MAPPING_EXPAND_NEGATE 0x60000000 +#define NV20_3D_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NORMAL 0x80000000 +#define NV20_3D_RC_IN_ALPHA_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000 +#define NV20_3D_RC_IN_ALPHA_A_MAPPING_SIGNED_IDENTITY 0xc0000000 +#define NV20_3D_RC_IN_ALPHA_A_MAPPING_SIGNED_NEGATE 0xe0000000 + +#define NV20_3D_RC_IN_RGB(i0) (0x00000ac0 + 0x4*(i0)) +#define NV20_3D_RC_IN_RGB_D_INPUT__MASK 0x0000000f +#define NV20_3D_RC_IN_RGB_D_INPUT__SHIFT 0 +#define NV20_3D_RC_IN_RGB_D_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_IN_RGB_D_INPUT_CONSTANT_COLOR0 0x00000001 +#define NV20_3D_RC_IN_RGB_D_INPUT_CONSTANT_COLOR1 0x00000002 +#define NV20_3D_RC_IN_RGB_D_INPUT_FOG 0x00000003 +#define NV20_3D_RC_IN_RGB_D_INPUT_PRIMARY_COLOR 0x00000004 +#define NV20_3D_RC_IN_RGB_D_INPUT_SECONDARY_COLOR 0x00000005 +#define NV20_3D_RC_IN_RGB_D_INPUT_TEXTURE0 0x00000008 +#define NV20_3D_RC_IN_RGB_D_INPUT_TEXTURE1 0x00000009 +#define NV20_3D_RC_IN_RGB_D_INPUT_TEXTURE2 0x0000000a +#define NV20_3D_RC_IN_RGB_D_INPUT_TEXTURE3 0x0000000b +#define NV20_3D_RC_IN_RGB_D_INPUT_SPARE0 0x0000000c +#define NV20_3D_RC_IN_RGB_D_INPUT_SPARE1 0x0000000d +#define NV20_3D_RC_IN_RGB_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e +#define NV20_3D_RC_IN_RGB_D_INPUT_E_TIMES_F 0x0000000f +#define NV20_3D_RC_IN_RGB_D_COMPONENT_USAGE__MASK 0x00000010 +#define NV20_3D_RC_IN_RGB_D_COMPONENT_USAGE__SHIFT 4 +#define NV20_3D_RC_IN_RGB_D_COMPONENT_USAGE_RGB 0x00000000 +#define NV20_3D_RC_IN_RGB_D_COMPONENT_USAGE_ALPHA 0x00000010 +#define NV20_3D_RC_IN_RGB_D_MAPPING__MASK 0x000000e0 +#define NV20_3D_RC_IN_RGB_D_MAPPING__SHIFT 5 +#define NV20_3D_RC_IN_RGB_D_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_IN_RGB_D_MAPPING_UNSIGNED_INVERT 0x00000020 +#define NV20_3D_RC_IN_RGB_D_MAPPING_EXPAND_NORMAL 0x00000040 +#define NV20_3D_RC_IN_RGB_D_MAPPING_EXPAND_NEGATE 0x00000060 +#define NV20_3D_RC_IN_RGB_D_MAPPING_HALF_BIAS_NORMAL 0x00000080 +#define NV20_3D_RC_IN_RGB_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0 +#define NV20_3D_RC_IN_RGB_D_MAPPING_SIGNED_IDENTITY 0x000000c0 +#define NV20_3D_RC_IN_RGB_D_MAPPING_SIGNED_NEGATE 0x000000e0 +#define NV20_3D_RC_IN_RGB_C_INPUT__MASK 0x00000f00 +#define NV20_3D_RC_IN_RGB_C_INPUT__SHIFT 8 +#define NV20_3D_RC_IN_RGB_C_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_IN_RGB_C_INPUT_CONSTANT_COLOR0 0x00000100 +#define NV20_3D_RC_IN_RGB_C_INPUT_CONSTANT_COLOR1 0x00000200 +#define NV20_3D_RC_IN_RGB_C_INPUT_FOG 0x00000300 +#define NV20_3D_RC_IN_RGB_C_INPUT_PRIMARY_COLOR 0x00000400 +#define NV20_3D_RC_IN_RGB_C_INPUT_SECONDARY_COLOR 0x00000500 +#define NV20_3D_RC_IN_RGB_C_INPUT_TEXTURE0 0x00000800 +#define NV20_3D_RC_IN_RGB_C_INPUT_TEXTURE1 0x00000900 +#define NV20_3D_RC_IN_RGB_C_INPUT_TEXTURE2 0x00000a00 +#define NV20_3D_RC_IN_RGB_C_INPUT_TEXTURE3 0x00000b00 +#define NV20_3D_RC_IN_RGB_C_INPUT_SPARE0 0x00000c00 +#define NV20_3D_RC_IN_RGB_C_INPUT_SPARE1 0x00000d00 +#define NV20_3D_RC_IN_RGB_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 +#define NV20_3D_RC_IN_RGB_C_INPUT_E_TIMES_F 0x00000f00 +#define NV20_3D_RC_IN_RGB_C_COMPONENT_USAGE__MASK 0x00001000 +#define NV20_3D_RC_IN_RGB_C_COMPONENT_USAGE__SHIFT 12 +#define NV20_3D_RC_IN_RGB_C_COMPONENT_USAGE_RGB 0x00000000 +#define NV20_3D_RC_IN_RGB_C_COMPONENT_USAGE_ALPHA 0x00001000 +#define NV20_3D_RC_IN_RGB_C_MAPPING__MASK 0x0000e000 +#define NV20_3D_RC_IN_RGB_C_MAPPING__SHIFT 13 +#define NV20_3D_RC_IN_RGB_C_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_IN_RGB_C_MAPPING_UNSIGNED_INVERT 0x00002000 +#define NV20_3D_RC_IN_RGB_C_MAPPING_EXPAND_NORMAL 0x00004000 +#define NV20_3D_RC_IN_RGB_C_MAPPING_EXPAND_NEGATE 0x00006000 +#define NV20_3D_RC_IN_RGB_C_MAPPING_HALF_BIAS_NORMAL 0x00008000 +#define NV20_3D_RC_IN_RGB_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000 +#define NV20_3D_RC_IN_RGB_C_MAPPING_SIGNED_IDENTITY 0x0000c000 +#define NV20_3D_RC_IN_RGB_C_MAPPING_SIGNED_NEGATE 0x0000e000 +#define NV20_3D_RC_IN_RGB_B_INPUT__MASK 0x000f0000 +#define NV20_3D_RC_IN_RGB_B_INPUT__SHIFT 16 +#define NV20_3D_RC_IN_RGB_B_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_IN_RGB_B_INPUT_CONSTANT_COLOR0 0x00010000 +#define NV20_3D_RC_IN_RGB_B_INPUT_CONSTANT_COLOR1 0x00020000 +#define NV20_3D_RC_IN_RGB_B_INPUT_FOG 0x00030000 +#define NV20_3D_RC_IN_RGB_B_INPUT_PRIMARY_COLOR 0x00040000 +#define NV20_3D_RC_IN_RGB_B_INPUT_SECONDARY_COLOR 0x00050000 +#define NV20_3D_RC_IN_RGB_B_INPUT_TEXTURE0 0x00080000 +#define NV20_3D_RC_IN_RGB_B_INPUT_TEXTURE1 0x00090000 +#define NV20_3D_RC_IN_RGB_B_INPUT_TEXTURE2 0x000a0000 +#define NV20_3D_RC_IN_RGB_B_INPUT_TEXTURE3 0x000b0000 +#define NV20_3D_RC_IN_RGB_B_INPUT_SPARE0 0x000c0000 +#define NV20_3D_RC_IN_RGB_B_INPUT_SPARE1 0x000d0000 +#define NV20_3D_RC_IN_RGB_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 +#define NV20_3D_RC_IN_RGB_B_INPUT_E_TIMES_F 0x000f0000 +#define NV20_3D_RC_IN_RGB_B_COMPONENT_USAGE__MASK 0x00100000 +#define NV20_3D_RC_IN_RGB_B_COMPONENT_USAGE__SHIFT 20 +#define NV20_3D_RC_IN_RGB_B_COMPONENT_USAGE_RGB 0x00000000 +#define NV20_3D_RC_IN_RGB_B_COMPONENT_USAGE_ALPHA 0x00100000 +#define NV20_3D_RC_IN_RGB_B_MAPPING__MASK 0x00e00000 +#define NV20_3D_RC_IN_RGB_B_MAPPING__SHIFT 21 +#define NV20_3D_RC_IN_RGB_B_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_IN_RGB_B_MAPPING_UNSIGNED_INVERT 0x00200000 +#define NV20_3D_RC_IN_RGB_B_MAPPING_EXPAND_NORMAL 0x00400000 +#define NV20_3D_RC_IN_RGB_B_MAPPING_EXPAND_NEGATE 0x00600000 +#define NV20_3D_RC_IN_RGB_B_MAPPING_HALF_BIAS_NORMAL 0x00800000 +#define NV20_3D_RC_IN_RGB_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000 +#define NV20_3D_RC_IN_RGB_B_MAPPING_SIGNED_IDENTITY 0x00c00000 +#define NV20_3D_RC_IN_RGB_B_MAPPING_SIGNED_NEGATE 0x00e00000 +#define NV20_3D_RC_IN_RGB_A_INPUT__MASK 0x0f000000 +#define NV20_3D_RC_IN_RGB_A_INPUT__SHIFT 24 +#define NV20_3D_RC_IN_RGB_A_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_IN_RGB_A_INPUT_CONSTANT_COLOR0 0x01000000 +#define NV20_3D_RC_IN_RGB_A_INPUT_CONSTANT_COLOR1 0x02000000 +#define NV20_3D_RC_IN_RGB_A_INPUT_FOG 0x03000000 +#define NV20_3D_RC_IN_RGB_A_INPUT_PRIMARY_COLOR 0x04000000 +#define NV20_3D_RC_IN_RGB_A_INPUT_SECONDARY_COLOR 0x05000000 +#define NV20_3D_RC_IN_RGB_A_INPUT_TEXTURE0 0x08000000 +#define NV20_3D_RC_IN_RGB_A_INPUT_TEXTURE1 0x09000000 +#define NV20_3D_RC_IN_RGB_A_INPUT_TEXTURE2 0x0a000000 +#define NV20_3D_RC_IN_RGB_A_INPUT_TEXTURE3 0x0b000000 +#define NV20_3D_RC_IN_RGB_A_INPUT_SPARE0 0x0c000000 +#define NV20_3D_RC_IN_RGB_A_INPUT_SPARE1 0x0d000000 +#define NV20_3D_RC_IN_RGB_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 +#define NV20_3D_RC_IN_RGB_A_INPUT_E_TIMES_F 0x0f000000 +#define NV20_3D_RC_IN_RGB_A_COMPONENT_USAGE__MASK 0x10000000 +#define NV20_3D_RC_IN_RGB_A_COMPONENT_USAGE__SHIFT 28 +#define NV20_3D_RC_IN_RGB_A_COMPONENT_USAGE_RGB 0x00000000 +#define NV20_3D_RC_IN_RGB_A_COMPONENT_USAGE_ALPHA 0x10000000 +#define NV20_3D_RC_IN_RGB_A_MAPPING__MASK 0xe0000000 +#define NV20_3D_RC_IN_RGB_A_MAPPING__SHIFT 29 +#define NV20_3D_RC_IN_RGB_A_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_IN_RGB_A_MAPPING_UNSIGNED_INVERT 0x20000000 +#define NV20_3D_RC_IN_RGB_A_MAPPING_EXPAND_NORMAL 0x40000000 +#define NV20_3D_RC_IN_RGB_A_MAPPING_EXPAND_NEGATE 0x60000000 +#define NV20_3D_RC_IN_RGB_A_MAPPING_HALF_BIAS_NORMAL 0x80000000 +#define NV20_3D_RC_IN_RGB_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000 +#define NV20_3D_RC_IN_RGB_A_MAPPING_SIGNED_IDENTITY 0xc0000000 +#define NV20_3D_RC_IN_RGB_A_MAPPING_SIGNED_NEGATE 0xe0000000 + +#define NV20_3D_RC_CONSTANT_COLOR0(i0) (0x00000a60 + 0x4*(i0)) +#define NV20_3D_RC_CONSTANT_COLOR0_B__MASK 0x000000ff +#define NV20_3D_RC_CONSTANT_COLOR0_B__SHIFT 0 +#define NV20_3D_RC_CONSTANT_COLOR0_G__MASK 0x0000ff00 +#define NV20_3D_RC_CONSTANT_COLOR0_G__SHIFT 8 +#define NV20_3D_RC_CONSTANT_COLOR0_R__MASK 0x00ff0000 +#define NV20_3D_RC_CONSTANT_COLOR0_R__SHIFT 16 +#define NV20_3D_RC_CONSTANT_COLOR0_A__MASK 0xff000000 +#define NV20_3D_RC_CONSTANT_COLOR0_A__SHIFT 24 + +#define NV20_3D_RC_CONSTANT_COLOR1(i0) (0x00000a80 + 0x4*(i0)) +#define NV20_3D_RC_CONSTANT_COLOR1_B__MASK 0x000000ff +#define NV20_3D_RC_CONSTANT_COLOR1_B__SHIFT 0 +#define NV20_3D_RC_CONSTANT_COLOR1_G__MASK 0x0000ff00 +#define NV20_3D_RC_CONSTANT_COLOR1_G__SHIFT 8 +#define NV20_3D_RC_CONSTANT_COLOR1_R__MASK 0x00ff0000 +#define NV20_3D_RC_CONSTANT_COLOR1_R__SHIFT 16 +#define NV20_3D_RC_CONSTANT_COLOR1_A__MASK 0xff000000 +#define NV20_3D_RC_CONSTANT_COLOR1_A__SHIFT 24 + +#define NV20_3D_RC_OUT_ALPHA(i0) (0x00000aa0 + 0x4*(i0)) +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT__MASK 0x0000000f +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT__SHIFT 0 +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_ZERO 0x00000000 +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR0 0x00000001 +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_CONSTANT_COLOR1 0x00000002 +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_FOG 0x00000003 +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_PRIMARY_COLOR 0x00000004 +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_SECONDARY_COLOR 0x00000005 +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE0 0x00000008 +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE1 0x00000009 +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE2 0x0000000a +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_TEXTURE3 0x0000000b +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE0 0x0000000c +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE1 0x0000000d +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e +#define NV20_3D_RC_OUT_ALPHA_CD_OUTPUT_E_TIMES_F 0x0000000f +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT__MASK 0x000000f0 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT__SHIFT 4 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_ZERO 0x00000000 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR0 0x00000010 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_CONSTANT_COLOR1 0x00000020 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_FOG 0x00000030 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_PRIMARY_COLOR 0x00000040 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_SECONDARY_COLOR 0x00000050 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE0 0x00000080 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE1 0x00000090 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE2 0x000000a0 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_TEXTURE3 0x000000b0 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE0 0x000000c0 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE1 0x000000d0 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000000e0 +#define NV20_3D_RC_OUT_ALPHA_AB_OUTPUT_E_TIMES_F 0x000000f0 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT__MASK 0x00000f00 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT__SHIFT 8 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_ZERO 0x00000000 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR0 0x00000100 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_CONSTANT_COLOR1 0x00000200 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_FOG 0x00000300 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_PRIMARY_COLOR 0x00000400 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_SECONDARY_COLOR 0x00000500 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE0 0x00000800 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE1 0x00000900 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE2 0x00000a00 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_TEXTURE3 0x00000b00 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0 0x00000c00 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE1 0x00000d00 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 +#define NV20_3D_RC_OUT_ALPHA_SUM_OUTPUT_E_TIMES_F 0x00000f00 +#define NV20_3D_RC_OUT_ALPHA_CD_DOT_PRODUCT 0x00001000 +#define NV20_3D_RC_OUT_ALPHA_AB_DOT_PRODUCT 0x00002000 +#define NV20_3D_RC_OUT_ALPHA_MUX_SUM 0x00004000 +#define NV20_3D_RC_OUT_ALPHA_BIAS__MASK 0x00008000 +#define NV20_3D_RC_OUT_ALPHA_BIAS__SHIFT 15 +#define NV20_3D_RC_OUT_ALPHA_BIAS_NONE 0x00000000 +#define NV20_3D_RC_OUT_ALPHA_BIAS_BIAS_BY_NEGATIVE_ONE_HALF 0x00008000 +#define NV20_3D_RC_OUT_ALPHA_SCALE__MASK 0x00030000 +#define NV20_3D_RC_OUT_ALPHA_SCALE__SHIFT 16 +#define NV20_3D_RC_OUT_ALPHA_SCALE_NONE 0x00000000 +#define NV20_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_TWO 0x00010000 +#define NV20_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_FOUR 0x00020000 +#define NV20_3D_RC_OUT_ALPHA_SCALE_SCALE_BY_ONE_HALF 0x00030000 + +#define NV20_3D_RC_OUT_RGB(i0) (0x00001e40 + 0x4*(i0)) +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT__MASK 0x0000000f +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT__SHIFT 0 +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_ZERO 0x00000000 +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR0 0x00000001 +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_CONSTANT_COLOR1 0x00000002 +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_FOG 0x00000003 +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_PRIMARY_COLOR 0x00000004 +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_SECONDARY_COLOR 0x00000005 +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE0 0x00000008 +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE1 0x00000009 +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE2 0x0000000a +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_TEXTURE3 0x0000000b +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_SPARE0 0x0000000c +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_SPARE1 0x0000000d +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e +#define NV20_3D_RC_OUT_RGB_CD_OUTPUT_E_TIMES_F 0x0000000f +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT__MASK 0x000000f0 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT__SHIFT 4 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_ZERO 0x00000000 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR0 0x00000010 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_CONSTANT_COLOR1 0x00000020 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_FOG 0x00000030 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_PRIMARY_COLOR 0x00000040 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_SECONDARY_COLOR 0x00000050 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE0 0x00000080 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE1 0x00000090 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE2 0x000000a0 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_TEXTURE3 0x000000b0 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0 0x000000c0 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_SPARE1 0x000000d0 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000000e0 +#define NV20_3D_RC_OUT_RGB_AB_OUTPUT_E_TIMES_F 0x000000f0 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT__MASK 0x00000f00 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT__SHIFT 8 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_ZERO 0x00000000 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR0 0x00000100 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_CONSTANT_COLOR1 0x00000200 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_FOG 0x00000300 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_PRIMARY_COLOR 0x00000400 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_SECONDARY_COLOR 0x00000500 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE0 0x00000800 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE1 0x00000900 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE2 0x00000a00 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_TEXTURE3 0x00000b00 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE0 0x00000c00 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE1 0x00000d00 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 +#define NV20_3D_RC_OUT_RGB_SUM_OUTPUT_E_TIMES_F 0x00000f00 +#define NV20_3D_RC_OUT_RGB_CD_DOT_PRODUCT 0x00001000 +#define NV20_3D_RC_OUT_RGB_AB_DOT_PRODUCT 0x00002000 +#define NV20_3D_RC_OUT_RGB_MUX_SUM 0x00004000 +#define NV20_3D_RC_OUT_RGB_BIAS__MASK 0x00008000 +#define NV20_3D_RC_OUT_RGB_BIAS__SHIFT 15 +#define NV20_3D_RC_OUT_RGB_BIAS_NONE 0x00000000 +#define NV20_3D_RC_OUT_RGB_BIAS_BIAS_BY_NEGATIVE_ONE_HALF 0x00008000 +#define NV20_3D_RC_OUT_RGB_SCALE__MASK 0x00030000 +#define NV20_3D_RC_OUT_RGB_SCALE__SHIFT 16 +#define NV20_3D_RC_OUT_RGB_SCALE_NONE 0x00000000 +#define NV20_3D_RC_OUT_RGB_SCALE_SCALE_BY_TWO 0x00010000 +#define NV20_3D_RC_OUT_RGB_SCALE_SCALE_BY_FOUR 0x00020000 +#define NV20_3D_RC_OUT_RGB_SCALE_SCALE_BY_ONE_HALF 0x00030000 + +#define NV20_3D_RC_FINAL0 0x00000288 +#define NV20_3D_RC_FINAL0_D_INPUT__MASK 0x0000000f +#define NV20_3D_RC_FINAL0_D_INPUT__SHIFT 0 +#define NV20_3D_RC_FINAL0_D_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_FINAL0_D_INPUT_CONSTANT_COLOR0 0x00000001 +#define NV20_3D_RC_FINAL0_D_INPUT_CONSTANT_COLOR1 0x00000002 +#define NV20_3D_RC_FINAL0_D_INPUT_FOG 0x00000003 +#define NV20_3D_RC_FINAL0_D_INPUT_PRIMARY_COLOR 0x00000004 +#define NV20_3D_RC_FINAL0_D_INPUT_SECONDARY_COLOR 0x00000005 +#define NV20_3D_RC_FINAL0_D_INPUT_TEXTURE0 0x00000008 +#define NV20_3D_RC_FINAL0_D_INPUT_TEXTURE1 0x00000009 +#define NV20_3D_RC_FINAL0_D_INPUT_TEXTURE2 0x0000000a +#define NV20_3D_RC_FINAL0_D_INPUT_TEXTURE3 0x0000000b +#define NV20_3D_RC_FINAL0_D_INPUT_SPARE0 0x0000000c +#define NV20_3D_RC_FINAL0_D_INPUT_SPARE1 0x0000000d +#define NV20_3D_RC_FINAL0_D_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0000000e +#define NV20_3D_RC_FINAL0_D_INPUT_E_TIMES_F 0x0000000f +#define NV20_3D_RC_FINAL0_D_COMPONENT_USAGE__MASK 0x00000010 +#define NV20_3D_RC_FINAL0_D_COMPONENT_USAGE__SHIFT 4 +#define NV20_3D_RC_FINAL0_D_COMPONENT_USAGE_RGB 0x00000000 +#define NV20_3D_RC_FINAL0_D_COMPONENT_USAGE_ALPHA 0x00000010 +#define NV20_3D_RC_FINAL0_D_MAPPING__MASK 0x000000e0 +#define NV20_3D_RC_FINAL0_D_MAPPING__SHIFT 5 +#define NV20_3D_RC_FINAL0_D_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_FINAL0_D_MAPPING_UNSIGNED_INVERT 0x00000020 +#define NV20_3D_RC_FINAL0_D_MAPPING_EXPAND_NORMAL 0x00000040 +#define NV20_3D_RC_FINAL0_D_MAPPING_EXPAND_NEGATE 0x00000060 +#define NV20_3D_RC_FINAL0_D_MAPPING_HALF_BIAS_NORMAL 0x00000080 +#define NV20_3D_RC_FINAL0_D_MAPPING_HALF_BIAS_NEGATE 0x000000a0 +#define NV20_3D_RC_FINAL0_D_MAPPING_SIGNED_IDENTITY 0x000000c0 +#define NV20_3D_RC_FINAL0_D_MAPPING_SIGNED_NEGATE 0x000000e0 +#define NV20_3D_RC_FINAL0_C_INPUT__MASK 0x00000f00 +#define NV20_3D_RC_FINAL0_C_INPUT__SHIFT 8 +#define NV20_3D_RC_FINAL0_C_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_FINAL0_C_INPUT_CONSTANT_COLOR0 0x00000100 +#define NV20_3D_RC_FINAL0_C_INPUT_CONSTANT_COLOR1 0x00000200 +#define NV20_3D_RC_FINAL0_C_INPUT_FOG 0x00000300 +#define NV20_3D_RC_FINAL0_C_INPUT_PRIMARY_COLOR 0x00000400 +#define NV20_3D_RC_FINAL0_C_INPUT_SECONDARY_COLOR 0x00000500 +#define NV20_3D_RC_FINAL0_C_INPUT_TEXTURE0 0x00000800 +#define NV20_3D_RC_FINAL0_C_INPUT_TEXTURE1 0x00000900 +#define NV20_3D_RC_FINAL0_C_INPUT_TEXTURE2 0x00000a00 +#define NV20_3D_RC_FINAL0_C_INPUT_TEXTURE3 0x00000b00 +#define NV20_3D_RC_FINAL0_C_INPUT_SPARE0 0x00000c00 +#define NV20_3D_RC_FINAL0_C_INPUT_SPARE1 0x00000d00 +#define NV20_3D_RC_FINAL0_C_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 +#define NV20_3D_RC_FINAL0_C_INPUT_E_TIMES_F 0x00000f00 +#define NV20_3D_RC_FINAL0_C_COMPONENT_USAGE__MASK 0x00001000 +#define NV20_3D_RC_FINAL0_C_COMPONENT_USAGE__SHIFT 12 +#define NV20_3D_RC_FINAL0_C_COMPONENT_USAGE_RGB 0x00000000 +#define NV20_3D_RC_FINAL0_C_COMPONENT_USAGE_ALPHA 0x00001000 +#define NV20_3D_RC_FINAL0_C_MAPPING__MASK 0x0000e000 +#define NV20_3D_RC_FINAL0_C_MAPPING__SHIFT 13 +#define NV20_3D_RC_FINAL0_C_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_FINAL0_C_MAPPING_UNSIGNED_INVERT 0x00002000 +#define NV20_3D_RC_FINAL0_C_MAPPING_EXPAND_NORMAL 0x00004000 +#define NV20_3D_RC_FINAL0_C_MAPPING_EXPAND_NEGATE 0x00006000 +#define NV20_3D_RC_FINAL0_C_MAPPING_HALF_BIAS_NORMAL 0x00008000 +#define NV20_3D_RC_FINAL0_C_MAPPING_HALF_BIAS_NEGATE 0x0000a000 +#define NV20_3D_RC_FINAL0_C_MAPPING_SIGNED_IDENTITY 0x0000c000 +#define NV20_3D_RC_FINAL0_C_MAPPING_SIGNED_NEGATE 0x0000e000 +#define NV20_3D_RC_FINAL0_B_INPUT__MASK 0x000f0000 +#define NV20_3D_RC_FINAL0_B_INPUT__SHIFT 16 +#define NV20_3D_RC_FINAL0_B_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_FINAL0_B_INPUT_CONSTANT_COLOR0 0x00010000 +#define NV20_3D_RC_FINAL0_B_INPUT_CONSTANT_COLOR1 0x00020000 +#define NV20_3D_RC_FINAL0_B_INPUT_FOG 0x00030000 +#define NV20_3D_RC_FINAL0_B_INPUT_PRIMARY_COLOR 0x00040000 +#define NV20_3D_RC_FINAL0_B_INPUT_SECONDARY_COLOR 0x00050000 +#define NV20_3D_RC_FINAL0_B_INPUT_TEXTURE0 0x00080000 +#define NV20_3D_RC_FINAL0_B_INPUT_TEXTURE1 0x00090000 +#define NV20_3D_RC_FINAL0_B_INPUT_TEXTURE2 0x000a0000 +#define NV20_3D_RC_FINAL0_B_INPUT_TEXTURE3 0x000b0000 +#define NV20_3D_RC_FINAL0_B_INPUT_SPARE0 0x000c0000 +#define NV20_3D_RC_FINAL0_B_INPUT_SPARE1 0x000d0000 +#define NV20_3D_RC_FINAL0_B_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 +#define NV20_3D_RC_FINAL0_B_INPUT_E_TIMES_F 0x000f0000 +#define NV20_3D_RC_FINAL0_B_COMPONENT_USAGE__MASK 0x00100000 +#define NV20_3D_RC_FINAL0_B_COMPONENT_USAGE__SHIFT 20 +#define NV20_3D_RC_FINAL0_B_COMPONENT_USAGE_RGB 0x00000000 +#define NV20_3D_RC_FINAL0_B_COMPONENT_USAGE_ALPHA 0x00100000 +#define NV20_3D_RC_FINAL0_B_MAPPING__MASK 0x00e00000 +#define NV20_3D_RC_FINAL0_B_MAPPING__SHIFT 21 +#define NV20_3D_RC_FINAL0_B_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_FINAL0_B_MAPPING_UNSIGNED_INVERT 0x00200000 +#define NV20_3D_RC_FINAL0_B_MAPPING_EXPAND_NORMAL 0x00400000 +#define NV20_3D_RC_FINAL0_B_MAPPING_EXPAND_NEGATE 0x00600000 +#define NV20_3D_RC_FINAL0_B_MAPPING_HALF_BIAS_NORMAL 0x00800000 +#define NV20_3D_RC_FINAL0_B_MAPPING_HALF_BIAS_NEGATE 0x00a00000 +#define NV20_3D_RC_FINAL0_B_MAPPING_SIGNED_IDENTITY 0x00c00000 +#define NV20_3D_RC_FINAL0_B_MAPPING_SIGNED_NEGATE 0x00e00000 +#define NV20_3D_RC_FINAL0_A_INPUT__MASK 0x0f000000 +#define NV20_3D_RC_FINAL0_A_INPUT__SHIFT 24 +#define NV20_3D_RC_FINAL0_A_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_FINAL0_A_INPUT_CONSTANT_COLOR0 0x01000000 +#define NV20_3D_RC_FINAL0_A_INPUT_CONSTANT_COLOR1 0x02000000 +#define NV20_3D_RC_FINAL0_A_INPUT_FOG 0x03000000 +#define NV20_3D_RC_FINAL0_A_INPUT_PRIMARY_COLOR 0x04000000 +#define NV20_3D_RC_FINAL0_A_INPUT_SECONDARY_COLOR 0x05000000 +#define NV20_3D_RC_FINAL0_A_INPUT_TEXTURE0 0x08000000 +#define NV20_3D_RC_FINAL0_A_INPUT_TEXTURE1 0x09000000 +#define NV20_3D_RC_FINAL0_A_INPUT_TEXTURE2 0x0a000000 +#define NV20_3D_RC_FINAL0_A_INPUT_TEXTURE3 0x0b000000 +#define NV20_3D_RC_FINAL0_A_INPUT_SPARE0 0x0c000000 +#define NV20_3D_RC_FINAL0_A_INPUT_SPARE1 0x0d000000 +#define NV20_3D_RC_FINAL0_A_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 +#define NV20_3D_RC_FINAL0_A_INPUT_E_TIMES_F 0x0f000000 +#define NV20_3D_RC_FINAL0_A_COMPONENT_USAGE__MASK 0x10000000 +#define NV20_3D_RC_FINAL0_A_COMPONENT_USAGE__SHIFT 28 +#define NV20_3D_RC_FINAL0_A_COMPONENT_USAGE_RGB 0x00000000 +#define NV20_3D_RC_FINAL0_A_COMPONENT_USAGE_ALPHA 0x10000000 +#define NV20_3D_RC_FINAL0_A_MAPPING__MASK 0xe0000000 +#define NV20_3D_RC_FINAL0_A_MAPPING__SHIFT 29 +#define NV20_3D_RC_FINAL0_A_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_FINAL0_A_MAPPING_UNSIGNED_INVERT 0x20000000 +#define NV20_3D_RC_FINAL0_A_MAPPING_EXPAND_NORMAL 0x40000000 +#define NV20_3D_RC_FINAL0_A_MAPPING_EXPAND_NEGATE 0x60000000 +#define NV20_3D_RC_FINAL0_A_MAPPING_HALF_BIAS_NORMAL 0x80000000 +#define NV20_3D_RC_FINAL0_A_MAPPING_HALF_BIAS_NEGATE 0xa0000000 +#define NV20_3D_RC_FINAL0_A_MAPPING_SIGNED_IDENTITY 0xc0000000 +#define NV20_3D_RC_FINAL0_A_MAPPING_SIGNED_NEGATE 0xe0000000 + +#define NV20_3D_RC_FINAL1 0x0000028c +#define NV20_3D_RC_FINAL1_COLOR_SUM_CLAMP 0x00000080 +#define NV20_3D_RC_FINAL1_G_INPUT__MASK 0x00000f00 +#define NV20_3D_RC_FINAL1_G_INPUT__SHIFT 8 +#define NV20_3D_RC_FINAL1_G_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_FINAL1_G_INPUT_CONSTANT_COLOR0 0x00000100 +#define NV20_3D_RC_FINAL1_G_INPUT_CONSTANT_COLOR1 0x00000200 +#define NV20_3D_RC_FINAL1_G_INPUT_FOG 0x00000300 +#define NV20_3D_RC_FINAL1_G_INPUT_PRIMARY_COLOR 0x00000400 +#define NV20_3D_RC_FINAL1_G_INPUT_SECONDARY_COLOR 0x00000500 +#define NV20_3D_RC_FINAL1_G_INPUT_TEXTURE0 0x00000800 +#define NV20_3D_RC_FINAL1_G_INPUT_TEXTURE1 0x00000900 +#define NV20_3D_RC_FINAL1_G_INPUT_TEXTURE2 0x00000a00 +#define NV20_3D_RC_FINAL1_G_INPUT_TEXTURE3 0x00000b00 +#define NV20_3D_RC_FINAL1_G_INPUT_SPARE0 0x00000c00 +#define NV20_3D_RC_FINAL1_G_INPUT_SPARE1 0x00000d00 +#define NV20_3D_RC_FINAL1_G_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x00000e00 +#define NV20_3D_RC_FINAL1_G_INPUT_E_TIMES_F 0x00000f00 +#define NV20_3D_RC_FINAL1_G_COMPONENT_USAGE__MASK 0x00001000 +#define NV20_3D_RC_FINAL1_G_COMPONENT_USAGE__SHIFT 12 +#define NV20_3D_RC_FINAL1_G_COMPONENT_USAGE_RGB 0x00000000 +#define NV20_3D_RC_FINAL1_G_COMPONENT_USAGE_ALPHA 0x00001000 +#define NV20_3D_RC_FINAL1_G_MAPPING__MASK 0x0000e000 +#define NV20_3D_RC_FINAL1_G_MAPPING__SHIFT 13 +#define NV20_3D_RC_FINAL1_G_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_FINAL1_G_MAPPING_UNSIGNED_INVERT 0x00002000 +#define NV20_3D_RC_FINAL1_G_MAPPING_EXPAND_NORMAL 0x00004000 +#define NV20_3D_RC_FINAL1_G_MAPPING_EXPAND_NEGATE 0x00006000 +#define NV20_3D_RC_FINAL1_G_MAPPING_HALF_BIAS_NORMAL 0x00008000 +#define NV20_3D_RC_FINAL1_G_MAPPING_HALF_BIAS_NEGATE 0x0000a000 +#define NV20_3D_RC_FINAL1_G_MAPPING_SIGNED_IDENTITY 0x0000c000 +#define NV20_3D_RC_FINAL1_G_MAPPING_SIGNED_NEGATE 0x0000e000 +#define NV20_3D_RC_FINAL1_F_INPUT__MASK 0x000f0000 +#define NV20_3D_RC_FINAL1_F_INPUT__SHIFT 16 +#define NV20_3D_RC_FINAL1_F_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_FINAL1_F_INPUT_CONSTANT_COLOR0 0x00010000 +#define NV20_3D_RC_FINAL1_F_INPUT_CONSTANT_COLOR1 0x00020000 +#define NV20_3D_RC_FINAL1_F_INPUT_FOG 0x00030000 +#define NV20_3D_RC_FINAL1_F_INPUT_PRIMARY_COLOR 0x00040000 +#define NV20_3D_RC_FINAL1_F_INPUT_SECONDARY_COLOR 0x00050000 +#define NV20_3D_RC_FINAL1_F_INPUT_TEXTURE0 0x00080000 +#define NV20_3D_RC_FINAL1_F_INPUT_TEXTURE1 0x00090000 +#define NV20_3D_RC_FINAL1_F_INPUT_TEXTURE2 0x000a0000 +#define NV20_3D_RC_FINAL1_F_INPUT_TEXTURE3 0x000b0000 +#define NV20_3D_RC_FINAL1_F_INPUT_SPARE0 0x000c0000 +#define NV20_3D_RC_FINAL1_F_INPUT_SPARE1 0x000d0000 +#define NV20_3D_RC_FINAL1_F_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x000e0000 +#define NV20_3D_RC_FINAL1_F_INPUT_E_TIMES_F 0x000f0000 +#define NV20_3D_RC_FINAL1_F_COMPONENT_USAGE__MASK 0x00100000 +#define NV20_3D_RC_FINAL1_F_COMPONENT_USAGE__SHIFT 20 +#define NV20_3D_RC_FINAL1_F_COMPONENT_USAGE_RGB 0x00000000 +#define NV20_3D_RC_FINAL1_F_COMPONENT_USAGE_ALPHA 0x00100000 +#define NV20_3D_RC_FINAL1_F_MAPPING__MASK 0x00e00000 +#define NV20_3D_RC_FINAL1_F_MAPPING__SHIFT 21 +#define NV20_3D_RC_FINAL1_F_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_FINAL1_F_MAPPING_UNSIGNED_INVERT 0x00200000 +#define NV20_3D_RC_FINAL1_F_MAPPING_EXPAND_NORMAL 0x00400000 +#define NV20_3D_RC_FINAL1_F_MAPPING_EXPAND_NEGATE 0x00600000 +#define NV20_3D_RC_FINAL1_F_MAPPING_HALF_BIAS_NORMAL 0x00800000 +#define NV20_3D_RC_FINAL1_F_MAPPING_HALF_BIAS_NEGATE 0x00a00000 +#define NV20_3D_RC_FINAL1_F_MAPPING_SIGNED_IDENTITY 0x00c00000 +#define NV20_3D_RC_FINAL1_F_MAPPING_SIGNED_NEGATE 0x00e00000 +#define NV20_3D_RC_FINAL1_E_INPUT__MASK 0x0f000000 +#define NV20_3D_RC_FINAL1_E_INPUT__SHIFT 24 +#define NV20_3D_RC_FINAL1_E_INPUT_ZERO 0x00000000 +#define NV20_3D_RC_FINAL1_E_INPUT_CONSTANT_COLOR0 0x01000000 +#define NV20_3D_RC_FINAL1_E_INPUT_CONSTANT_COLOR1 0x02000000 +#define NV20_3D_RC_FINAL1_E_INPUT_FOG 0x03000000 +#define NV20_3D_RC_FINAL1_E_INPUT_PRIMARY_COLOR 0x04000000 +#define NV20_3D_RC_FINAL1_E_INPUT_SECONDARY_COLOR 0x05000000 +#define NV20_3D_RC_FINAL1_E_INPUT_TEXTURE0 0x08000000 +#define NV20_3D_RC_FINAL1_E_INPUT_TEXTURE1 0x09000000 +#define NV20_3D_RC_FINAL1_E_INPUT_TEXTURE2 0x0a000000 +#define NV20_3D_RC_FINAL1_E_INPUT_TEXTURE3 0x0b000000 +#define NV20_3D_RC_FINAL1_E_INPUT_SPARE0 0x0c000000 +#define NV20_3D_RC_FINAL1_E_INPUT_SPARE1 0x0d000000 +#define NV20_3D_RC_FINAL1_E_INPUT_SPARE0_PLUS_SECONDARY_COLOR 0x0e000000 +#define NV20_3D_RC_FINAL1_E_INPUT_E_TIMES_F 0x0f000000 +#define NV20_3D_RC_FINAL1_E_COMPONENT_USAGE__MASK 0x10000000 +#define NV20_3D_RC_FINAL1_E_COMPONENT_USAGE__SHIFT 28 +#define NV20_3D_RC_FINAL1_E_COMPONENT_USAGE_RGB 0x00000000 +#define NV20_3D_RC_FINAL1_E_COMPONENT_USAGE_ALPHA 0x10000000 +#define NV20_3D_RC_FINAL1_E_MAPPING__MASK 0xe0000000 +#define NV20_3D_RC_FINAL1_E_MAPPING__SHIFT 29 +#define NV20_3D_RC_FINAL1_E_MAPPING_UNSIGNED_IDENTITY 0x00000000 +#define NV20_3D_RC_FINAL1_E_MAPPING_UNSIGNED_INVERT 0x20000000 +#define NV20_3D_RC_FINAL1_E_MAPPING_EXPAND_NORMAL 0x40000000 +#define NV20_3D_RC_FINAL1_E_MAPPING_EXPAND_NEGATE 0x60000000 +#define NV20_3D_RC_FINAL1_E_MAPPING_HALF_BIAS_NORMAL 0x80000000 +#define NV20_3D_RC_FINAL1_E_MAPPING_HALF_BIAS_NEGATE 0xa0000000 +#define NV20_3D_RC_FINAL1_E_MAPPING_SIGNED_IDENTITY 0xc0000000 +#define NV20_3D_RC_FINAL1_E_MAPPING_SIGNED_NEGATE 0xe0000000 + +#define NV20_3D_RC_COLOR0 0x00001e20 +#define NV20_3D_RC_COLOR0_B__MASK 0x000000ff +#define NV20_3D_RC_COLOR0_B__SHIFT 0 +#define NV20_3D_RC_COLOR0_G__MASK 0x0000ff00 +#define NV20_3D_RC_COLOR0_G__SHIFT 8 +#define NV20_3D_RC_COLOR0_R__MASK 0x00ff0000 +#define NV20_3D_RC_COLOR0_R__SHIFT 16 +#define NV20_3D_RC_COLOR0_A__MASK 0xff000000 +#define NV20_3D_RC_COLOR0_A__SHIFT 24 + +#define NV20_3D_RC_COLOR1 0x00001e24 +#define NV20_3D_RC_COLOR1_B__MASK 0x000000ff +#define NV20_3D_RC_COLOR1_B__SHIFT 0 +#define NV20_3D_RC_COLOR1_G__MASK 0x0000ff00 +#define NV20_3D_RC_COLOR1_G__SHIFT 8 +#define NV20_3D_RC_COLOR1_R__MASK 0x00ff0000 +#define NV20_3D_RC_COLOR1_R__SHIFT 16 +#define NV20_3D_RC_COLOR1_A__MASK 0xff000000 +#define NV20_3D_RC_COLOR1_A__SHIFT 24 + +#define NV20_3D_RC_ENABLE 0x00001e60 +#define NV20_3D_RC_ENABLE_NUM_COMBINERS__MASK 0x0000000f +#define NV20_3D_RC_ENABLE_NUM_COMBINERS__SHIFT 0 + + +#define NV20_3D_POINT_SIZE 0x0000043c + +#define NV20_3D_POINT_PARAMETER(i0) (0x00000a30 + 0x4*(i0)) +#define NV20_3D_POINT_PARAMETER__ESIZE 0x00000004 +#define NV20_3D_POINT_PARAMETER__LEN 0x00000008 + +#define NV20_3D_POLYGON_STIPPLE_ENABLE 0x0000147c + +#define NV20_3D_POLYGON_STIPPLE_PATTERN(i0) (0x00001480 + 0x4*(i0)) +#define NV20_3D_POLYGON_STIPPLE_PATTERN__ESIZE 0x00000004 +#define NV20_3D_POLYGON_STIPPLE_PATTERN__LEN 0x00000020 + +#define NV20_3D_COLOR_LOGIC_OP_ENABLE 0x000017bc + +#define NV20_3D_COLOR_LOGIC_OP_OP 0x000017c0 +#define NV20_3D_COLOR_LOGIC_OP_OP_CLEAR 0x00001500 +#define NV20_3D_COLOR_LOGIC_OP_OP_AND 0x00001501 +#define NV20_3D_COLOR_LOGIC_OP_OP_AND_REVERSE 0x00001502 +#define NV20_3D_COLOR_LOGIC_OP_OP_COPY 0x00001503 +#define NV20_3D_COLOR_LOGIC_OP_OP_AND_INVERTED 0x00001504 +#define NV20_3D_COLOR_LOGIC_OP_OP_NOOP 0x00001505 +#define NV20_3D_COLOR_LOGIC_OP_OP_XOR 0x00001506 +#define NV20_3D_COLOR_LOGIC_OP_OP_OR 0x00001507 +#define NV20_3D_COLOR_LOGIC_OP_OP_NOR 0x00001508 +#define NV20_3D_COLOR_LOGIC_OP_OP_EQUIV 0x00001509 +#define NV20_3D_COLOR_LOGIC_OP_OP_INVERT 0x0000150a +#define NV20_3D_COLOR_LOGIC_OP_OP_OR_REVERSE 0x0000150b +#define NV20_3D_COLOR_LOGIC_OP_OP_COPY_INVERTED 0x0000150c +#define NV20_3D_COLOR_LOGIC_OP_OP_OR_INVERTED 0x0000150d +#define NV20_3D_COLOR_LOGIC_OP_OP_NAND 0x0000150e +#define NV20_3D_COLOR_LOGIC_OP_OP_SET 0x0000150f + +#define NV20_3D_DEPTH_CLAMP 0x00001d78 + +#define NV20_3D_MULTISAMPLE_CONTROL 0x00001d7c + + +#define NV20_3D_CLEAR_DEPTH_VALUE 0x00001d8c + +#define NV20_3D_CLEAR_VALUE 0x00001d90 + +#define NV20_3D_CLEAR_BUFFERS 0x00001d94 +#define NV20_3D_CLEAR_BUFFERS_COLOR_A 0x00000080 +#define NV20_3D_CLEAR_BUFFERS_COLOR_B 0x00000040 +#define NV20_3D_CLEAR_BUFFERS_COLOR_G 0x00000020 +#define NV20_3D_CLEAR_BUFFERS_COLOR_R 0x00000010 +#define NV20_3D_CLEAR_BUFFERS_STENCIL 0x00000002 +#define NV20_3D_CLEAR_BUFFERS_DEPTH 0x00000001 + + +#define NV25_3D_DMA_HIERZ 0x000001b0 + +#define NV25_3D_HIERZ_PITCH 0x0000022c + +#define NV25_3D_HIERZ_OFFSET 0x00000230 + +#define NV20_3D_UNK09F8 0x000009f8 + +#define NV20_3D_UNK09FC 0x000009fc + +#define NV20_3D_UNK17CC 0x000017cc + +#define NV20_3D_UNK17E0 0x000017e0 + +#define NV20_3D_UNK17E4 0x000017e4 + +#define NV20_3D_UNK17E8 0x000017e8 + +#define NV20_3D_UNK17EC 0x000017ec + +#define NV20_3D_UNK17F0 0x000017f0 + +#define NV20_3D_UNK17F4 0x000017f4 + +#define NV20_3D_UNK1D80 0x00001d80 + +#define NV20_3D_UNK1D84 0x00001d84 + +#define NV20_3D_UNK1E68 0x00001e68 + +#define NV20_3D_UNK1E98 0x00001e98 + + +#define NV25_3D_UNK01AC 0x000001ac + +#define NV25_3D_UNK0A1C 0x00000a1c + +#define NV25_3D_UNK1D88 0x00001d88 + +#define NV25_3D_UNK1DA4 0x00001da4 + + +#endif /* NV20_3D_XML */ diff --git a/src/mesa/drivers/dri/nouveau/nv20_context.c b/src/mesa/drivers/dri/nouveau/nv20_context.c index 89200fb70da..e0483b261ef 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_context.c +++ b/src/mesa/drivers/dri/nouveau/nv20_context.c @@ -28,7 +28,8 @@ #include "nouveau_context.h" #include "nouveau_fbo.h" #include "nouveau_util.h" -#include "nouveau_class.h" +#include "nv_object.xml.h" +#include "nv20_3d.xml.h" #include "nv04_driver.h" #include "nv10_driver.h" #include "nv20_driver.h" @@ -56,15 +57,15 @@ nv20_clear(struct gl_context *ctx, GLbitfield buffers) fb->_ColorDrawBuffers[0])->surface; if (ctx->Color.ColorMask[0][RCOMP]) - clear |= NV20TCL_CLEAR_BUFFERS_COLOR_R; + clear |= NV20_3D_CLEAR_BUFFERS_COLOR_R; if (ctx->Color.ColorMask[0][GCOMP]) - clear |= NV20TCL_CLEAR_BUFFERS_COLOR_G; + clear |= NV20_3D_CLEAR_BUFFERS_COLOR_G; if (ctx->Color.ColorMask[0][BCOMP]) - clear |= NV20TCL_CLEAR_BUFFERS_COLOR_B; + clear |= NV20_3D_CLEAR_BUFFERS_COLOR_B; if (ctx->Color.ColorMask[0][ACOMP]) - clear |= NV20TCL_CLEAR_BUFFERS_COLOR_A; + clear |= NV20_3D_CLEAR_BUFFERS_COLOR_A; - BEGIN_RING(chan, kelvin, NV20TCL_CLEAR_VALUE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_CLEAR_VALUE, 1); OUT_RING(chan, pack_rgba_f(s->format, ctx->Color.ClearColor)); buffers &= ~BUFFER_BITS_COLOR; @@ -75,18 +76,18 @@ nv20_clear(struct gl_context *ctx, GLbitfield buffers) fb->_DepthBuffer->Wrapped)->surface; if (buffers & BUFFER_BIT_DEPTH && ctx->Depth.Mask) - clear |= NV20TCL_CLEAR_BUFFERS_DEPTH; + clear |= NV20_3D_CLEAR_BUFFERS_DEPTH; if (buffers & BUFFER_BIT_STENCIL && ctx->Stencil.WriteMask[0]) - clear |= NV20TCL_CLEAR_BUFFERS_STENCIL; + clear |= NV20_3D_CLEAR_BUFFERS_STENCIL; - BEGIN_RING(chan, kelvin, NV20TCL_CLEAR_DEPTH_VALUE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_CLEAR_DEPTH_VALUE, 1); OUT_RING(chan, pack_zs_f(s->format, ctx->Depth.Clear, ctx->Stencil.Clear)); buffers &= ~(BUFFER_BIT_DEPTH | BUFFER_BIT_STENCIL); } - BEGIN_RING(chan, kelvin, NV20TCL_CLEAR_BUFFERS, 1); + BEGIN_RING(chan, kelvin, NV20_3D_CLEAR_BUFFERS, 1); OUT_RING(chan, clear); nouveau_clear(ctx, buffers); @@ -100,38 +101,38 @@ nv20_hwctx_init(struct gl_context *ctx) struct nouveau_hw_state *hw = &to_nouveau_context(ctx)->hw; int i; - BEGIN_RING(chan, kelvin, NV20TCL_DMA_NOTIFY, 1); + BEGIN_RING(chan, kelvin, NV20_3D_DMA_NOTIFY, 1); OUT_RING (chan, hw->ntfy->handle); - BEGIN_RING(chan, kelvin, NV20TCL_DMA_TEXTURE0, 2); + BEGIN_RING(chan, kelvin, NV20_3D_DMA_TEXTURE0, 2); OUT_RING (chan, chan->vram->handle); OUT_RING (chan, chan->gart->handle); - BEGIN_RING(chan, kelvin, NV20TCL_DMA_COLOR, 2); + BEGIN_RING(chan, kelvin, NV20_3D_DMA_COLOR, 2); OUT_RING (chan, chan->vram->handle); OUT_RING (chan, chan->vram->handle); - BEGIN_RING(chan, kelvin, NV20TCL_DMA_VTXBUF0, 2); + BEGIN_RING(chan, kelvin, NV20_3D_DMA_VTXBUF0, 2); OUT_RING(chan, chan->vram->handle); OUT_RING(chan, chan->gart->handle); - BEGIN_RING(chan, kelvin, NV20TCL_DMA_QUERY, 1); + BEGIN_RING(chan, kelvin, NV20_3D_DMA_QUERY, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_RT_HORIZ, 2); + BEGIN_RING(chan, kelvin, NV20_3D_RT_HORIZ, 2); OUT_RING (chan, 0); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_CLIP_HORIZ(0), 1); + BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_CLIP_HORIZ(0), 1); OUT_RING (chan, 0xfff << 16 | 0x0); - BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_CLIP_VERT(0), 1); + BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_CLIP_VERT(0), 1); OUT_RING (chan, 0xfff << 16 | 0x0); - for (i = 1; i < NV20TCL_VIEWPORT_CLIP_HORIZ__SIZE; i++) { - BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_CLIP_HORIZ(i), 1); + for (i = 1; i < NV20_3D_VIEWPORT_CLIP_HORIZ__LEN; i++) { + BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_CLIP_HORIZ(i), 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_CLIP_VERT(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_CLIP_VERT(i), 1); OUT_RING (chan, 0); } - BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_CLIP_MODE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_CLIP_MODE, 1); OUT_RING (chan, 0); BEGIN_RING(chan, kelvin, 0x17e0, 3); @@ -140,13 +141,13 @@ nv20_hwctx_init(struct gl_context *ctx) OUT_RINGf (chan, 1.0); if (context_chipset(ctx) >= 0x25) { - BEGIN_RING(chan, kelvin, NV20TCL_TX_RCOMP, 1); - OUT_RING (chan, NV20TCL_TX_RCOMP_LEQUAL | 0xdb0); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_RCOMP, 1); + OUT_RING (chan, NV20_3D_TEX_RCOMP_LEQUAL | 0xdb0); } else { BEGIN_RING(chan, kelvin, 0x1e68, 1); OUT_RING (chan, 0x4b800000); /* 16777216.000000 */ - BEGIN_RING(chan, kelvin, NV20TCL_TX_RCOMP, 1); - OUT_RING (chan, NV20TCL_TX_RCOMP_LEQUAL); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_RCOMP, 1); + OUT_RING (chan, NV20_3D_TEX_RCOMP_LEQUAL); } BEGIN_RING(chan, kelvin, 0x290, 1); @@ -166,19 +167,19 @@ nv20_hwctx_init(struct gl_context *ctx) BEGIN_RING(chan, kelvin, 0x1d88, 1); OUT_RING (chan, 3); - BEGIN_RING(chan, kelvin, NV25TCL_DMA_IN_MEMORY9, 1); + BEGIN_RING(chan, kelvin, NV25_3D_DMA_HIERZ, 1); OUT_RING (chan, chan->vram->handle); - BEGIN_RING(chan, kelvin, NV25TCL_DMA_IN_MEMORY8, 1); + BEGIN_RING(chan, kelvin, NV25_3D_UNK01AC, 1); OUT_RING (chan, chan->vram->handle); } - BEGIN_RING(chan, kelvin, NV20TCL_DMA_FENCE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_DMA_FENCE, 1); OUT_RING (chan, 0); BEGIN_RING(chan, kelvin, 0x1e98, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_NOTIFY, 1); + BEGIN_RING(chan, kelvin, NV01_GRAPH_NOTIFY, 1); OUT_RING (chan, 0); BEGIN_RING(chan, kelvin, 0x120, 3); @@ -191,189 +192,189 @@ nv20_hwctx_init(struct gl_context *ctx) OUT_RING (chan, 0); } - BEGIN_RING(chan, kelvin, NV20TCL_RT_HORIZ, 2); + BEGIN_RING(chan, kelvin, NV20_3D_RT_HORIZ, 2); OUT_RING (chan, 0 << 16 | 0); OUT_RING (chan, 0 << 16 | 0); - BEGIN_RING(chan, kelvin, NV20TCL_ALPHA_FUNC_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_ALPHA_FUNC_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_ALPHA_FUNC_FUNC, 2); - OUT_RING (chan, NV20TCL_ALPHA_FUNC_FUNC_ALWAYS); + BEGIN_RING(chan, kelvin, NV20_3D_ALPHA_FUNC_FUNC, 2); + OUT_RING (chan, NV20_3D_ALPHA_FUNC_FUNC_ALWAYS); OUT_RING (chan, 0); - for (i = 0; i < NV20TCL_TX_ENABLE__SIZE; i++) { - BEGIN_RING(chan, kelvin, NV20TCL_TX_ENABLE(i), 1); + for (i = 0; i < NV20_3D_TEX__LEN; i++) { + BEGIN_RING(chan, kelvin, NV20_3D_TEX_ENABLE(i), 1); OUT_RING (chan, 0); } - BEGIN_RING(chan, kelvin, NV20TCL_TX_SHADER_OP, 1); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_SHADER_OP, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_TX_SHADER_CULL_MODE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_SHADER_CULL_MODE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_RC_IN_ALPHA(0), 4); + BEGIN_RING(chan, kelvin, NV20_3D_RC_IN_ALPHA(0), 4); OUT_RING (chan, 0x30d410d0); OUT_RING (chan, 0); OUT_RING (chan, 0); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_RC_OUT_RGB(0), 4); + BEGIN_RING(chan, kelvin, NV20_3D_RC_OUT_RGB(0), 4); OUT_RING (chan, 0x00000c00); OUT_RING (chan, 0); OUT_RING (chan, 0); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_RC_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_RC_ENABLE, 1); OUT_RING (chan, 0x00011101); - BEGIN_RING(chan, kelvin, NV20TCL_RC_FINAL0, 2); + BEGIN_RING(chan, kelvin, NV20_3D_RC_FINAL0, 2); OUT_RING (chan, 0x130e0300); OUT_RING (chan, 0x0c091c80); - BEGIN_RING(chan, kelvin, NV20TCL_RC_OUT_ALPHA(0), 4); + BEGIN_RING(chan, kelvin, NV20_3D_RC_OUT_ALPHA(0), 4); OUT_RING (chan, 0x00000c00); OUT_RING (chan, 0); OUT_RING (chan, 0); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_RC_IN_RGB(0), 4); + BEGIN_RING(chan, kelvin, NV20_3D_RC_IN_RGB(0), 4); OUT_RING (chan, 0x20c400c0); OUT_RING (chan, 0); OUT_RING (chan, 0); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_RC_COLOR0, 2); + BEGIN_RING(chan, kelvin, NV20_3D_RC_COLOR0, 2); OUT_RING (chan, 0); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_RC_CONSTANT_COLOR0(0), 4); + BEGIN_RING(chan, kelvin, NV20_3D_RC_CONSTANT_COLOR0(0), 4); OUT_RING (chan, 0x035125a0); OUT_RING (chan, 0); OUT_RING (chan, 0x40002000); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_MULTISAMPLE_CONTROL, 1); + BEGIN_RING(chan, kelvin, NV20_3D_MULTISAMPLE_CONTROL, 1); OUT_RING (chan, 0xffff0000); - BEGIN_RING(chan, kelvin, NV20TCL_BLEND_FUNC_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_BLEND_FUNC_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_DITHER_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_DITHER_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_STENCIL_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_STENCIL_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_BLEND_FUNC_SRC, 4); - OUT_RING (chan, NV20TCL_BLEND_FUNC_SRC_ONE); - OUT_RING (chan, NV20TCL_BLEND_FUNC_DST_ZERO); + BEGIN_RING(chan, kelvin, NV20_3D_BLEND_FUNC_SRC, 4); + OUT_RING (chan, NV20_3D_BLEND_FUNC_SRC_ONE); + OUT_RING (chan, NV20_3D_BLEND_FUNC_DST_ZERO); OUT_RING (chan, 0); - OUT_RING (chan, NV20TCL_BLEND_EQUATION_FUNC_ADD); - BEGIN_RING(chan, kelvin, NV20TCL_STENCIL_MASK, 7); + OUT_RING (chan, NV20_3D_BLEND_EQUATION_FUNC_ADD); + BEGIN_RING(chan, kelvin, NV20_3D_STENCIL_MASK, 7); OUT_RING (chan, 0xff); - OUT_RING (chan, NV20TCL_STENCIL_FUNC_FUNC_ALWAYS); + OUT_RING (chan, NV20_3D_STENCIL_FUNC_FUNC_ALWAYS); OUT_RING (chan, 0); OUT_RING (chan, 0xff); - OUT_RING (chan, NV20TCL_STENCIL_OP_FAIL_KEEP); - OUT_RING (chan, NV20TCL_STENCIL_OP_ZFAIL_KEEP); - OUT_RING (chan, NV20TCL_STENCIL_OP_ZPASS_KEEP); + OUT_RING (chan, NV20_3D_STENCIL_OP_FAIL_KEEP); + OUT_RING (chan, NV20_3D_STENCIL_OP_ZFAIL_KEEP); + OUT_RING (chan, NV20_3D_STENCIL_OP_ZPASS_KEEP); - BEGIN_RING(chan, kelvin, NV20TCL_COLOR_LOGIC_OP_ENABLE, 2); + BEGIN_RING(chan, kelvin, NV20_3D_COLOR_LOGIC_OP_ENABLE, 2); OUT_RING (chan, 0); - OUT_RING (chan, NV20TCL_COLOR_LOGIC_OP_OP_COPY); + OUT_RING (chan, NV20_3D_COLOR_LOGIC_OP_OP_COPY); BEGIN_RING(chan, kelvin, 0x17cc, 1); OUT_RING (chan, 0); if (context_chipset(ctx) >= 0x25) { BEGIN_RING(chan, kelvin, 0x1d84, 1); OUT_RING (chan, 1); } - BEGIN_RING(chan, kelvin, NV20TCL_LIGHTING_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_LIGHTING_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_MODEL, 1); - OUT_RING (chan, NV20TCL_LIGHT_MODEL_VIEWER_NONLOCAL); - BEGIN_RING(chan, kelvin, NV20TCL_SEPARATE_SPECULAR_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_MODEL, 1); + OUT_RING (chan, NV20_3D_LIGHT_MODEL_VIEWER_NONLOCAL); + BEGIN_RING(chan, kelvin, NV20_3D_SEPARATE_SPECULAR_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_MODEL_TWO_SIDE_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_MODEL_TWO_SIDE_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_ENABLED_LIGHTS, 1); + BEGIN_RING(chan, kelvin, NV20_3D_ENABLED_LIGHTS, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_NORMALIZE_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_NORMALIZE_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_POLYGON_STIPPLE_PATTERN(0), - NV20TCL_POLYGON_STIPPLE_PATTERN__SIZE); - for (i = 0; i < NV20TCL_POLYGON_STIPPLE_PATTERN__SIZE; i++) { + BEGIN_RING(chan, kelvin, NV20_3D_POLYGON_STIPPLE_PATTERN(0), + NV20_3D_POLYGON_STIPPLE_PATTERN__LEN); + for (i = 0; i < NV20_3D_POLYGON_STIPPLE_PATTERN__LEN; i++) { OUT_RING(chan, 0xffffffff); } - BEGIN_RING(chan, kelvin, NV20TCL_POLYGON_OFFSET_POINT_ENABLE, 3); + BEGIN_RING(chan, kelvin, NV20_3D_POLYGON_OFFSET_POINT_ENABLE, 3); OUT_RING (chan, 0); OUT_RING (chan, 0); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_DEPTH_FUNC, 1); - OUT_RING (chan, NV20TCL_DEPTH_FUNC_LESS); - BEGIN_RING(chan, kelvin, NV20TCL_DEPTH_WRITE_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_DEPTH_FUNC, 1); + OUT_RING (chan, NV20_3D_DEPTH_FUNC_LESS); + BEGIN_RING(chan, kelvin, NV20_3D_DEPTH_WRITE_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_DEPTH_TEST_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_DEPTH_TEST_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_POLYGON_OFFSET_FACTOR, 2); + BEGIN_RING(chan, kelvin, NV20_3D_POLYGON_OFFSET_FACTOR, 2); OUT_RINGf (chan, 0.0); OUT_RINGf (chan, 0.0); - BEGIN_RING(chan, kelvin, NV20TCL_DEPTH_UNK17D8, 1); + BEGIN_RING(chan, kelvin, NV20_3D_DEPTH_CLAMP, 1); OUT_RING (chan, 1); if (context_chipset(ctx) < 0x25) { BEGIN_RING(chan, kelvin, 0x1d84, 1); OUT_RING (chan, 3); } - BEGIN_RING(chan, kelvin, NV20TCL_POINT_SIZE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_POINT_SIZE, 1); if (context_chipset(ctx) >= 0x25) OUT_RINGf (chan, 1.0); else OUT_RING (chan, 8); if (context_chipset(ctx) >= 0x25) { - BEGIN_RING(chan, kelvin, NV20TCL_POINT_PARAMETERS_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_POINT_PARAMETERS_ENABLE, 1); OUT_RING (chan, 0); BEGIN_RING(chan, kelvin, 0x0a1c, 1); OUT_RING (chan, 0x800); } else { - BEGIN_RING(chan, kelvin, NV20TCL_POINT_PARAMETERS_ENABLE, 2); + BEGIN_RING(chan, kelvin, NV20_3D_POINT_PARAMETERS_ENABLE, 2); OUT_RING (chan, 0); OUT_RING (chan, 0); } - BEGIN_RING(chan, kelvin, NV20TCL_LINE_WIDTH, 1); + BEGIN_RING(chan, kelvin, NV20_3D_LINE_WIDTH, 1); OUT_RING (chan, 8); - BEGIN_RING(chan, kelvin, NV20TCL_LINE_SMOOTH_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_LINE_SMOOTH_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_POLYGON_MODE_FRONT, 2); - OUT_RING (chan, NV20TCL_POLYGON_MODE_FRONT_FILL); - OUT_RING (chan, NV20TCL_POLYGON_MODE_BACK_FILL); - BEGIN_RING(chan, kelvin, NV20TCL_CULL_FACE, 2); - OUT_RING (chan, NV20TCL_CULL_FACE_BACK); - OUT_RING (chan, NV20TCL_FRONT_FACE_CCW); - BEGIN_RING(chan, kelvin, NV20TCL_POLYGON_SMOOTH_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_POLYGON_MODE_FRONT, 2); + OUT_RING (chan, NV20_3D_POLYGON_MODE_FRONT_FILL); + OUT_RING (chan, NV20_3D_POLYGON_MODE_BACK_FILL); + BEGIN_RING(chan, kelvin, NV20_3D_CULL_FACE, 2); + OUT_RING (chan, NV20_3D_CULL_FACE_BACK); + OUT_RING (chan, NV20_3D_FRONT_FACE_CCW); + BEGIN_RING(chan, kelvin, NV20_3D_POLYGON_SMOOTH_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_CULL_FACE_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_CULL_FACE_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_SHADE_MODEL, 1); - OUT_RING (chan, NV20TCL_SHADE_MODEL_SMOOTH); - BEGIN_RING(chan, kelvin, NV20TCL_POLYGON_STIPPLE_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_SHADE_MODEL, 1); + OUT_RING (chan, NV20_3D_SHADE_MODEL_SMOOTH); + BEGIN_RING(chan, kelvin, NV20_3D_POLYGON_STIPPLE_ENABLE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_TX_GEN_MODE_S(0), - 4 * NV20TCL_TX_GEN_MODE_S__SIZE); - for (i=0; i < 4 * NV20TCL_TX_GEN_MODE_S__SIZE; i++) + BEGIN_RING(chan, kelvin, NV20_3D_TEX_GEN_MODE(0,0), + 4 * NV20_3D_TEX_GEN_MODE__ESIZE); + for (i=0; i < 4 * NV20_3D_TEX_GEN_MODE__LEN; i++) OUT_RING(chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_FOG_EQUATION_CONSTANT, 3); + BEGIN_RING(chan, kelvin, NV20_3D_FOG_COEFF(0), 3); OUT_RINGf (chan, 1.5); OUT_RINGf (chan, -0.090168); OUT_RINGf (chan, 0.0); - BEGIN_RING(chan, kelvin, NV20TCL_FOG_MODE, 2); - OUT_RING (chan, NV20TCL_FOG_MODE_EXP_SIGNED); - OUT_RING (chan, NV20TCL_FOG_COORD_FOG); - BEGIN_RING(chan, kelvin, NV20TCL_FOG_ENABLE, 2); + BEGIN_RING(chan, kelvin, NV20_3D_FOG_MODE, 2); + OUT_RING (chan, NV20_3D_FOG_MODE_EXP_SIGNED); + OUT_RING (chan, NV20_3D_FOG_COORD_FOG); + BEGIN_RING(chan, kelvin, NV20_3D_FOG_ENABLE, 2); OUT_RING (chan, 0); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_ENGINE, 1); - OUT_RING (chan, NV20TCL_ENGINE_FIXED); + BEGIN_RING(chan, kelvin, NV20_3D_ENGINE, 1); + OUT_RING (chan, NV20_3D_ENGINE_FIXED); - for (i = 0; i < NV20TCL_TX_MATRIX_ENABLE__SIZE; i++) { - BEGIN_RING(chan, kelvin, NV20TCL_TX_MATRIX_ENABLE(i), 1); + for (i = 0; i < NV20_3D_TEX_MATRIX_ENABLE__LEN; i++) { + BEGIN_RING(chan, kelvin, NV20_3D_TEX_MATRIX_ENABLE(i), 1); OUT_RING (chan, 0); } - BEGIN_RING(chan, kelvin, NV20TCL_VTX_ATTR_4F_X(1), 4 * 15); + BEGIN_RING(chan, kelvin, NV20_3D_VERTEX_ATTR_4F_X(1), 4 * 15); OUT_RINGf(chan, 1.0); OUT_RINGf(chan, 0.0); OUT_RINGf(chan, 0.0); @@ -393,24 +394,24 @@ nv20_hwctx_init(struct gl_context *ctx) OUT_RINGf(chan, 1.0); } - BEGIN_RING(chan, kelvin, NV20TCL_EDGEFLAG_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_EDGEFLAG_ENABLE, 1); OUT_RING (chan, 1); - BEGIN_RING(chan, kelvin, NV20TCL_COLOR_MASK, 1); + BEGIN_RING(chan, kelvin, NV20_3D_COLOR_MASK, 1); OUT_RING (chan, 0x00010101); - BEGIN_RING(chan, kelvin, NV20TCL_CLEAR_VALUE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_CLEAR_VALUE, 1); OUT_RING (chan, 0); - BEGIN_RING(chan, kelvin, NV20TCL_DEPTH_RANGE_NEAR, 2); + BEGIN_RING(chan, kelvin, NV20_3D_DEPTH_RANGE_NEAR, 2); OUT_RINGf (chan, 0.0); OUT_RINGf (chan, 16777216.0); - BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_TRANSLATE_X, 4); + BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_TRANSLATE_X, 4); OUT_RINGf (chan, 0.0); OUT_RINGf (chan, 0.0); OUT_RINGf (chan, 0.0); OUT_RINGf (chan, 16777215.0); - BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_SCALE_X, 4); + BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_SCALE_X, 4); OUT_RINGf (chan, 0.0); OUT_RINGf (chan, 0.0); OUT_RINGf (chan, 16777215.0 * 0.5); @@ -469,9 +470,9 @@ nv20_context_create(struct nouveau_screen *screen, const struct gl_config *visua /* 3D engine. */ if (context_chipset(ctx) >= 0x25) - kelvin_class = NV25TCL; + kelvin_class = NV25_3D; else - kelvin_class = NV20TCL; + kelvin_class = NV20_3D; ret = nouveau_grobj_alloc(context_chan(ctx), 0xbeef0001, kelvin_class, &nctx->hw.eng3d); diff --git a/src/mesa/drivers/dri/nouveau/nv20_render.c b/src/mesa/drivers/dri/nouveau/nv20_render.c index dbdb85da203..2bdc85cda4e 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_render.c +++ b/src/mesa/drivers/dri/nouveau/nv20_render.c @@ -26,7 +26,7 @@ #include "nouveau_driver.h" #include "nouveau_context.h" -#include "nouveau_class.h" +#include "nv20_3d.xml.h" #include "nv20_driver.h" #define NUM_VERTEX_ATTRS 16 @@ -39,47 +39,47 @@ nv20_emit_material(struct gl_context *ctx, struct nouveau_array *a, static struct nouveau_attr_info nv20_vertex_attrs[VERT_ATTRIB_MAX] = { [VERT_ATTRIB_POS] = { .vbo_index = 0, - .imm_method = NV20TCL_VERTEX_POS_4F_X, + .imm_method = NV20_3D_VERTEX_POS_4F_X, .imm_fields = 4, }, [VERT_ATTRIB_NORMAL] = { .vbo_index = 2, - .imm_method = NV20TCL_VERTEX_NOR_3F_X, + .imm_method = NV20_3D_VERTEX_NOR_3F_X, .imm_fields = 3, }, [VERT_ATTRIB_COLOR0] = { .vbo_index = 3, - .imm_method = NV20TCL_VERTEX_COL_4F_X, + .imm_method = NV20_3D_VERTEX_COL_4F, .imm_fields = 4, }, [VERT_ATTRIB_COLOR1] = { .vbo_index = 4, - .imm_method = NV20TCL_VERTEX_COL2_3F_X, + .imm_method = NV20_3D_VERTEX_COL2_3F, .imm_fields = 3, }, [VERT_ATTRIB_FOG] = { .vbo_index = 5, - .imm_method = NV20TCL_VERTEX_FOG_1F, + .imm_method = NV20_3D_VERTEX_FOG_1F, .imm_fields = 1, }, [VERT_ATTRIB_TEX0] = { .vbo_index = 9, - .imm_method = NV20TCL_VERTEX_TX0_4F_S, + .imm_method = NV20_3D_VERTEX_TX0_4F_S, .imm_fields = 4, }, [VERT_ATTRIB_TEX1] = { .vbo_index = 10, - .imm_method = NV20TCL_VERTEX_TX1_4F_S, + .imm_method = NV20_3D_VERTEX_TX1_4F_S, .imm_fields = 4, }, [VERT_ATTRIB_TEX2] = { .vbo_index = 11, - .imm_method = NV20TCL_VERTEX_TX2_4F_S, + .imm_method = NV20_3D_VERTEX_TX2_4F_S, .imm_fields = 4, }, [VERT_ATTRIB_TEX3] = { .vbo_index = 12, - .imm_method = NV20TCL_VERTEX_TX3_4F_S, + .imm_method = NV20_3D_VERTEX_TX3_4F_S, .imm_fields = 4, }, [VERT_ATTRIB_GENERIC0] = { @@ -119,11 +119,11 @@ get_hw_format(int type) { switch (type) { case GL_FLOAT: - return NV20TCL_VTXFMT_TYPE_FLOAT; + return NV20_3D_VTXBUF_FMT_TYPE_FLOAT; case GL_UNSIGNED_SHORT: - return NV20TCL_VTXFMT_TYPE_USHORT; + return NV20_3D_VTXBUF_FMT_TYPE_USHORT; case GL_UNSIGNED_BYTE: - return NV20TCL_VTXFMT_TYPE_UBYTE; + return NV20_3D_VTXBUF_FMT_TYPE_UBYTE; default: assert(0); } @@ -147,10 +147,10 @@ nv20_render_set_format(struct gl_context *ctx) } else { /* Unused attribute. */ - hw_format = NV10TCL_VTXFMT_TYPE_FLOAT; + hw_format = NV20_3D_VTXBUF_FMT_TYPE_FLOAT; } - BEGIN_RING(chan, kelvin, NV20TCL_VTXFMT(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_VTXBUF_FMT(i), 1); OUT_RING(chan, hw_format); } } @@ -167,9 +167,9 @@ nv20_render_bind_vertices(struct gl_context *ctx) struct nouveau_array *a = &render->attrs[attr]; nouveau_bo_mark(bctx, kelvin, - NV20TCL_VTXBUF_ADDRESS(i), + NV20_3D_VTXBUF_OFFSET(i), a->bo, a->offset, 0, - 0, NV20TCL_VTXBUF_ADDRESS_DMA1, + 0, NV20_3D_VTXBUF_OFFSET_DMA1, NOUVEAU_BO_LOW | NOUVEAU_BO_OR | NOUVEAU_BO_GART | NOUVEAU_BO_RD); } @@ -180,33 +180,33 @@ nv20_render_bind_vertices(struct gl_context *ctx) struct nouveau_grobj *kelvin = context_eng3d(ctx) #define BATCH_VALIDATE() \ - BEGIN_RING(chan, kelvin, NV20TCL_VTX_CACHE_INVALIDATE, 1); \ + BEGIN_RING(chan, kelvin, NV20_3D_VTXBUF_VALIDATE, 1); \ OUT_RING(chan, 0) #define BATCH_BEGIN(prim) \ - BEGIN_RING(chan, kelvin, NV20TCL_VERTEX_BEGIN_END, 1); \ + BEGIN_RING(chan, kelvin, NV20_3D_VERTEX_BEGIN_END, 1); \ OUT_RING(chan, prim) #define BATCH_END() \ - BEGIN_RING(chan, kelvin, NV20TCL_VERTEX_BEGIN_END, 1); \ + BEGIN_RING(chan, kelvin, NV20_3D_VERTEX_BEGIN_END, 1); \ OUT_RING(chan, 0) #define MAX_PACKET 0x400 #define MAX_OUT_L 0x100 #define BATCH_PACKET_L(n) \ - BEGIN_RING_NI(chan, kelvin, NV20TCL_VB_VERTEX_BATCH, n) + BEGIN_RING_NI(chan, kelvin, NV20_3D_VTXBUF_BATCH, n) #define BATCH_OUT_L(i, n) \ OUT_RING(chan, ((n) - 1) << 24 | (i)) #define MAX_OUT_I16 0x2 #define BATCH_PACKET_I16(n) \ - BEGIN_RING_NI(chan, kelvin, NV20TCL_VB_ELEMENT_U16, n) + BEGIN_RING_NI(chan, kelvin, NV20_3D_VTXBUF_ELEMENT_U16, n) #define BATCH_OUT_I16(i0, i1) \ OUT_RING(chan, (i1) << 16 | (i0)) #define MAX_OUT_I32 0x1 #define BATCH_PACKET_I32(n) \ - BEGIN_RING_NI(chan, kelvin, NV20TCL_VB_ELEMENT_U32, n) + BEGIN_RING_NI(chan, kelvin, NV20_3D_VTXBUF_ELEMENT_U32, n) #define BATCH_OUT_I32(i) \ OUT_RING(chan, i) diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_fb.c b/src/mesa/drivers/dri/nouveau/nv20_state_fb.c index 854392f9ff3..cbde74e4fc6 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_state_fb.c +++ b/src/mesa/drivers/dri/nouveau/nv20_state_fb.c @@ -29,7 +29,7 @@ #include "nouveau_fbo.h" #include "nouveau_gldefs.h" #include "nouveau_util.h" -#include "nouveau_class.h" +#include "nv20_3d.xml.h" #include "nv20_driver.h" static inline unsigned @@ -37,15 +37,15 @@ get_rt_format(gl_format format) { switch (format) { case MESA_FORMAT_XRGB8888: - return 0x05; + return NV20_3D_RT_FORMAT_COLOR_X8R8G8B8; case MESA_FORMAT_ARGB8888: - return 0x08; + return NV20_3D_RT_FORMAT_COLOR_A8R8G8B8; case MESA_FORMAT_RGB565: - return 0x03; + return NV20_3D_RT_FORMAT_COLOR_R5G6B5; case MESA_FORMAT_Z16: - return 0x10; + return NV20_3D_RT_FORMAT_DEPTH_Z16; case MESA_FORMAT_Z24_S8: - return 0x20; + return NV20_3D_RT_FORMAT_DEPTH_Z24S8; default: assert(0); } @@ -69,10 +69,10 @@ setup_hierz_buffer(struct gl_context *ctx) &nfb->hierz.bo); } - BEGIN_RING(chan, kelvin, NV25TCL_HIERZ_PITCH, 1); + BEGIN_RING(chan, kelvin, NV25_3D_HIERZ_PITCH, 1); OUT_RING(chan, pitch); - nouveau_bo_markl(bctx, kelvin, NV25TCL_HIERZ_OFFSET, nfb->hierz.bo, + nouveau_bo_markl(bctx, kelvin, NV25_3D_HIERZ_OFFSET, nfb->hierz.bo, 0, NOUVEAU_BO_VRAM | NOUVEAU_BO_RDWR); } @@ -84,7 +84,7 @@ nv20_emit_framebuffer(struct gl_context *ctx, int emit) struct nouveau_bo_context *bctx = context_bctx(ctx, FRAMEBUFFER); struct gl_framebuffer *fb = ctx->DrawBuffer; struct nouveau_surface *s; - unsigned rt_format = NV20TCL_RT_FORMAT_TYPE_LINEAR; + unsigned rt_format = NV20_3D_RT_FORMAT_TYPE_LINEAR; unsigned rt_pitch = 0, zeta_pitch = 0; unsigned bo_flags = NOUVEAU_BO_VRAM | NOUVEAU_BO_RDWR; @@ -99,7 +99,7 @@ nv20_emit_framebuffer(struct gl_context *ctx, int emit) rt_format |= get_rt_format(s->format); rt_pitch = s->pitch; - nouveau_bo_markl(bctx, kelvin, NV20TCL_COLOR_OFFSET, + nouveau_bo_markl(bctx, kelvin, NV20_3D_COLOR_OFFSET, s->bo, 0, bo_flags); } @@ -111,7 +111,7 @@ nv20_emit_framebuffer(struct gl_context *ctx, int emit) rt_format |= get_rt_format(s->format); zeta_pitch = s->pitch; - nouveau_bo_markl(bctx, kelvin, NV20TCL_ZETA_OFFSET, + nouveau_bo_markl(bctx, kelvin, NV20_3D_ZETA_OFFSET, s->bo, 0, bo_flags); if (context_chipset(ctx) >= 0x25) @@ -121,7 +121,7 @@ nv20_emit_framebuffer(struct gl_context *ctx, int emit) zeta_pitch = rt_pitch; } - BEGIN_RING(chan, kelvin, NV20TCL_RT_FORMAT, 2); + BEGIN_RING(chan, kelvin, NV20_3D_RT_FORMAT, 2); OUT_RING(chan, rt_format); OUT_RING(chan, zeta_pitch << 16 | rt_pitch); @@ -140,12 +140,12 @@ nv20_emit_viewport(struct gl_context *ctx, int emit) get_viewport_translate(ctx, a); - BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_TRANSLATE_X, 4); + BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_TRANSLATE_X, 4); OUT_RINGp(chan, a, 4); - BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_CLIP_HORIZ(0), 1); + BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_CLIP_HORIZ(0), 1); OUT_RING(chan, (fb->Width - 1) << 16); - BEGIN_RING(chan, kelvin, NV20TCL_VIEWPORT_CLIP_VERT(0), 1); + BEGIN_RING(chan, kelvin, NV20_3D_VIEWPORT_CLIP_VERT(0), 1); OUT_RING(chan, (fb->Height - 1) << 16); context_dirty(ctx, PROJECTION); diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_frag.c b/src/mesa/drivers/dri/nouveau/nv20_state_frag.c index f9212d8b396..0624de442b9 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_state_frag.c +++ b/src/mesa/drivers/dri/nouveau/nv20_state_frag.c @@ -26,7 +26,7 @@ #include "nouveau_driver.h" #include "nouveau_context.h" -#include "nouveau_class.h" +#include "nv20_3d.xml.h" #include "nv10_driver.h" #include "nv20_driver.h" @@ -40,15 +40,15 @@ nv20_emit_tex_env(struct gl_context *ctx, int emit) nv10_get_general_combiner(ctx, i, &a_in, &a_out, &c_in, &c_out, &k); - BEGIN_RING(chan, kelvin, NV20TCL_RC_IN_ALPHA(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_RC_IN_ALPHA(i), 1); OUT_RING(chan, a_in); - BEGIN_RING(chan, kelvin, NV20TCL_RC_OUT_ALPHA(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_RC_OUT_ALPHA(i), 1); OUT_RING(chan, a_out); - BEGIN_RING(chan, kelvin, NV20TCL_RC_IN_RGB(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_RC_IN_RGB(i), 1); OUT_RING(chan, c_in); - BEGIN_RING(chan, kelvin, NV20TCL_RC_OUT_RGB(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_RC_OUT_RGB(i), 1); OUT_RING(chan, c_out); - BEGIN_RING(chan, kelvin, NV20TCL_RC_CONSTANT_COLOR0(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_RC_CONSTANT_COLOR0(i), 1); OUT_RING(chan, k); context_dirty(ctx, FRAG); @@ -64,10 +64,10 @@ nv20_emit_frag(struct gl_context *ctx, int emit) nv10_get_final_combiner(ctx, &in, &n); - BEGIN_RING(chan, kelvin, NV20TCL_RC_FINAL0, 2); + BEGIN_RING(chan, kelvin, NV20_3D_RC_FINAL0, 2); OUT_RING(chan, in); OUT_RING(chan, in >> 32); - BEGIN_RING(chan, kelvin, NV20TCL_RC_ENABLE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_RC_ENABLE, 1); OUT_RING(chan, n); } diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_polygon.c b/src/mesa/drivers/dri/nouveau/nv20_state_polygon.c index a6e237f8c42..85f30dc4d41 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_state_polygon.c +++ b/src/mesa/drivers/dri/nouveau/nv20_state_polygon.c @@ -27,7 +27,7 @@ #include "nouveau_driver.h" #include "nouveau_context.h" #include "nouveau_gldefs.h" -#include "nouveau_class.h" +#include "nv20_3d.xml.h" #include "nv20_driver.h" void @@ -36,7 +36,7 @@ nv20_emit_point_mode(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *kelvin = context_eng3d(ctx); - BEGIN_RING(chan, kelvin, NV20TCL_POINT_SIZE, 1); + BEGIN_RING(chan, kelvin, NV20_3D_POINT_SIZE, 1); if (context_chipset(ctx) >= 0x25) OUT_RINGf(chan, ctx->Point.Size); else diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_raster.c b/src/mesa/drivers/dri/nouveau/nv20_state_raster.c index 0fc7a3259d7..3fb4ecae89f 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_state_raster.c +++ b/src/mesa/drivers/dri/nouveau/nv20_state_raster.c @@ -27,7 +27,8 @@ #include "nouveau_driver.h" #include "nouveau_context.h" #include "nouveau_gldefs.h" -#include "nouveau_class.h" +#include "nouveau_util.h" +#include "nv20_3d.xml.h" #include "nv20_driver.h" void @@ -36,7 +37,7 @@ nv20_emit_logic_opcode(struct gl_context *ctx, int emit) struct nouveau_channel *chan = context_chan(ctx); struct nouveau_grobj *kelvin = context_eng3d(ctx); - BEGIN_RING(chan, kelvin, NV20TCL_COLOR_LOGIC_OP_ENABLE, 2); - OUT_RING(chan, ctx->Color.ColorLogicOpEnabled ? 1 : 0); + BEGIN_RING(chan, kelvin, NV20_3D_COLOR_LOGIC_OP_ENABLE, 2); + OUT_RINGb(chan, ctx->Color.ColorLogicOpEnabled); OUT_RING(chan, nvgl_logicop_func(ctx->Color.LogicOp)); } diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_tex.c b/src/mesa/drivers/dri/nouveau/nv20_state_tex.c index cfff1fe8397..c362aca0fdb 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_state_tex.c +++ b/src/mesa/drivers/dri/nouveau/nv20_state_tex.c @@ -28,14 +28,10 @@ #include "nouveau_context.h" #include "nouveau_gldefs.h" #include "nouveau_texture.h" -#include "nouveau_class.h" +#include "nv20_3d.xml.h" #include "nouveau_util.h" #include "nv20_driver.h" -#define TX_GEN_MODE(i, j) (NV20TCL_TX_GEN_MODE_S(i) + 4 * (j)) -#define TX_GEN_COEFF(i, j) (NV20TCL_TX_GEN_COEFF_S_A(i) + 16 * (j)) -#define TX_MATRIX(i) (NV20TCL_TX0_MATRIX(0) + 64 * (i)) - void nv20_emit_tex_gen(struct gl_context *ctx, int emit) { @@ -52,15 +48,16 @@ nv20_emit_tex_gen(struct gl_context *ctx, int emit) float *k = get_texgen_coeff(coord); if (k) { - BEGIN_RING(chan, kelvin, TX_GEN_COEFF(i, j), 4); + BEGIN_RING(chan, kelvin, + NV20_3D_TEX_GEN_COEFF(i, j), 4); OUT_RINGp(chan, k, 4); } - BEGIN_RING(chan, kelvin, TX_GEN_MODE(i, j), 1); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_GEN_MODE(i, j), 1); OUT_RING(chan, nvgl_texgen_mode(coord->Mode)); } else { - BEGIN_RING(chan, kelvin, TX_GEN_MODE(i, j), 1); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_GEN_MODE(i, j), 1); OUT_RING(chan, 0); } } @@ -76,14 +73,14 @@ nv20_emit_tex_mat(struct gl_context *ctx, int emit) if (nctx->fallback == HWTNL && (ctx->Texture._TexMatEnabled & 1 << i)) { - BEGIN_RING(chan, kelvin, NV20TCL_TX_MATRIX_ENABLE(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_MATRIX_ENABLE(i), 1); OUT_RING(chan, 1); - BEGIN_RING(chan, kelvin, TX_MATRIX(i), 16); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_MATRIX(i,0), 16); OUT_RINGm(chan, ctx->TextureMatrixStack[i].Top->m); } else { - BEGIN_RING(chan, kelvin, NV20TCL_TX_MATRIX_ENABLE(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_MATRIX_ENABLE(i), 1); OUT_RING(chan, 0); } } @@ -93,29 +90,29 @@ get_tex_format_pot(struct gl_texture_image *ti) { switch (ti->TexFormat) { case MESA_FORMAT_ARGB8888: - return NV20TCL_TX_FORMAT_FORMAT_A8R8G8B8; + return NV20_3D_TEX_FORMAT_FORMAT_A8R8G8B8; case MESA_FORMAT_ARGB1555: - return NV20TCL_TX_FORMAT_FORMAT_A1R5G5B5; + return NV20_3D_TEX_FORMAT_FORMAT_A1R5G5B5; case MESA_FORMAT_ARGB4444: - return NV20TCL_TX_FORMAT_FORMAT_A4R4G4B4; + return NV20_3D_TEX_FORMAT_FORMAT_A4R4G4B4; case MESA_FORMAT_XRGB8888: - return NV20TCL_TX_FORMAT_FORMAT_X8R8G8B8; + return NV20_3D_TEX_FORMAT_FORMAT_X8R8G8B8; case MESA_FORMAT_RGB565: - return NV20TCL_TX_FORMAT_FORMAT_R5G6B5; + return NV20_3D_TEX_FORMAT_FORMAT_R5G6B5; case MESA_FORMAT_A8: case MESA_FORMAT_I8: - return NV20TCL_TX_FORMAT_FORMAT_A8; + return NV20_3D_TEX_FORMAT_FORMAT_I8; case MESA_FORMAT_L8: - return NV20TCL_TX_FORMAT_FORMAT_L8; + return NV20_3D_TEX_FORMAT_FORMAT_L8; case MESA_FORMAT_CI8: - return NV20TCL_TX_FORMAT_FORMAT_INDEX8; + return NV20_3D_TEX_FORMAT_FORMAT_INDEX8; default: assert(0); @@ -127,26 +124,26 @@ get_tex_format_rect(struct gl_texture_image *ti) { switch (ti->TexFormat) { case MESA_FORMAT_ARGB8888: - return NV20TCL_TX_FORMAT_FORMAT_A8R8G8B8_RECT; + return NV20_3D_TEX_FORMAT_FORMAT_A8R8G8B8_RECT; case MESA_FORMAT_ARGB1555: - return NV20TCL_TX_FORMAT_FORMAT_A1R5G5B5_RECT; + return NV20_3D_TEX_FORMAT_FORMAT_A1R5G5B5_RECT; case MESA_FORMAT_ARGB4444: - return NV20TCL_TX_FORMAT_FORMAT_A4R4G4B4_RECT; + return NV20_3D_TEX_FORMAT_FORMAT_A4R4G4B4_RECT; case MESA_FORMAT_XRGB8888: - return NV20TCL_TX_FORMAT_FORMAT_R8G8B8_RECT; + return NV20_3D_TEX_FORMAT_FORMAT_R8G8B8_RECT; case MESA_FORMAT_RGB565: - return NV20TCL_TX_FORMAT_FORMAT_R5G6B5_RECT; + return NV20_3D_TEX_FORMAT_FORMAT_R5G6B5_RECT; case MESA_FORMAT_L8: - return NV20TCL_TX_FORMAT_FORMAT_L8_RECT; + return NV20_3D_TEX_FORMAT_FORMAT_L8_RECT; case MESA_FORMAT_A8: case MESA_FORMAT_I8: - return NV20TCL_TX_FORMAT_FORMAT_A8_RECT; + return NV20_3D_TEX_FORMAT_FORMAT_I8_RECT; default: assert(0); @@ -167,7 +164,7 @@ nv20_emit_tex_obj(struct gl_context *ctx, int emit) uint32_t tx_format, tx_filter, tx_wrap, tx_enable; if (!ctx->Texture.Unit[i]._ReallyEnabled) { - BEGIN_RING(chan, kelvin, NV20TCL_TX_ENABLE(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_ENABLE(i), 1); OUT_RING(chan, 0); context_dirty(ctx, TEX_SHADER); @@ -185,8 +182,8 @@ nv20_emit_tex_obj(struct gl_context *ctx, int emit) tx_format = ti->DepthLog2 << 28 | ti->HeightLog2 << 24 | ti->WidthLog2 << 20 - | NV20TCL_TX_FORMAT_DIMS_2D - | NV20TCL_TX_FORMAT_NO_BORDER + | NV20_3D_TEX_FORMAT_DIMS_2D + | NV20_3D_TEX_FORMAT_NO_BORDER | 1 << 16; tx_wrap = nvgl_wrap_mode(t->WrapR) << 16 @@ -197,13 +194,13 @@ nv20_emit_tex_obj(struct gl_context *ctx, int emit) | nvgl_filter_mode(t->MinFilter) << 16 | 2 << 12; - tx_enable = NV20TCL_TX_ENABLE_ENABLE + tx_enable = NV20_3D_TEX_ENABLE_ENABLE | log2i(t->MaxAnisotropy) << 4; if (t->Target == GL_TEXTURE_RECTANGLE) { - BEGIN_RING(chan, kelvin, NV20TCL_TX_NPOT_PITCH(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_NPOT_PITCH(i), 1); OUT_RING(chan, s->pitch << 16); - BEGIN_RING(chan, kelvin, NV20TCL_TX_NPOT_SIZE(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_NPOT_SIZE(i), 1); OUT_RING(chan, s->width << 16 | s->height); tx_format |= get_tex_format_rect(ti); @@ -222,29 +219,29 @@ nv20_emit_tex_obj(struct gl_context *ctx, int emit) lod_min = CLAMP(lod_min, 0, 15); lod_bias = CLAMP(lod_bias, 0, 15); - tx_format |= NV20TCL_TX_FORMAT_MIPMAP; + tx_format |= NV20_3D_TEX_FORMAT_MIPMAP; tx_filter |= lod_bias << 8; tx_enable |= lod_min << 26 | lod_max << 14; } /* Write it to the hardware. */ - nouveau_bo_mark(bctx, kelvin, NV20TCL_TX_FORMAT(i), + nouveau_bo_mark(bctx, kelvin, NV20_3D_TEX_FORMAT(i), s->bo, tx_format, 0, - NV20TCL_TX_FORMAT_DMA0, - NV20TCL_TX_FORMAT_DMA1, + NV20_3D_TEX_FORMAT_DMA0, + NV20_3D_TEX_FORMAT_DMA1, bo_flags | NOUVEAU_BO_OR); - nouveau_bo_markl(bctx, kelvin, NV20TCL_TX_OFFSET(i), + nouveau_bo_markl(bctx, kelvin, NV20_3D_TEX_OFFSET(i), s->bo, s->offset, bo_flags); - BEGIN_RING(chan, kelvin, NV20TCL_TX_WRAP(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_WRAP(i), 1); OUT_RING(chan, tx_wrap); - BEGIN_RING(chan, kelvin, NV20TCL_TX_FILTER(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_FILTER(i), 1); OUT_RING(chan, tx_filter); - BEGIN_RING(chan, kelvin, NV20TCL_TX_ENABLE(i), 1); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_ENABLE(i), 1); OUT_RING(chan, tx_enable); context_dirty(ctx, TEX_SHADER); @@ -262,9 +259,9 @@ nv20_emit_tex_shader(struct gl_context *ctx, int emit) if (!ctx->Texture.Unit[i]._ReallyEnabled) continue; - tx_shader_op |= NV20TCL_TX_SHADER_OP_TX0_TEXTURE_2D << 5 * i; + tx_shader_op |= NV20_3D_TEX_SHADER_OP_TX0_TEXTURE_2D << 5 * i; } - BEGIN_RING(chan, kelvin, NV20TCL_TX_SHADER_OP, 1); + BEGIN_RING(chan, kelvin, NV20_3D_TEX_SHADER_OP, 1); OUT_RING(chan, tx_shader_op); } diff --git a/src/mesa/drivers/dri/nouveau/nv20_state_tnl.c b/src/mesa/drivers/dri/nouveau/nv20_state_tnl.c index b65cd9ad871..4677198dd02 100644 --- a/src/mesa/drivers/dri/nouveau/nv20_state_tnl.c +++ b/src/mesa/drivers/dri/nouveau/nv20_state_tnl.c @@ -28,31 +28,31 @@ #include "nouveau_context.h" #include "nouveau_gldefs.h" #include "nouveau_util.h" -#include "nouveau_class.h" +#include "nv20_3d.xml.h" #include "nv10_driver.h" #include "nv20_driver.h" #define LIGHT_MODEL_AMBIENT_R(side) \ - ((side) ? NV20TCL_LIGHT_MODEL_BACK_AMBIENT_R : \ - NV20TCL_LIGHT_MODEL_FRONT_AMBIENT_R) + ((side) ? NV20_3D_LIGHT_MODEL_BACK_AMBIENT_R : \ + NV20_3D_LIGHT_MODEL_FRONT_AMBIENT_R) #define LIGHT_AMBIENT_R(side, i) \ - ((side) ? NV20TCL_LIGHT_BACK_AMBIENT_R(i) : \ - NV20TCL_LIGHT_FRONT_AMBIENT_R(i)) + ((side) ? NV20_3D_LIGHT_BACK_AMBIENT_R(i) : \ + NV20_3D_LIGHT_FRONT_AMBIENT_R(i)) #define LIGHT_DIFFUSE_R(side, i) \ - ((side) ? NV20TCL_LIGHT_BACK_DIFFUSE_R(i) : \ - NV20TCL_LIGHT_FRONT_DIFFUSE_R(i)) + ((side) ? NV20_3D_LIGHT_BACK_DIFFUSE_R(i) : \ + NV20_3D_LIGHT_FRONT_DIFFUSE_R(i)) #define LIGHT_SPECULAR_R(side, i) \ - ((side) ? NV20TCL_LIGHT_BACK_SPECULAR_R(i) : \ - NV20TCL_LIGHT_FRONT_SPECULAR_R(i)) + ((side) ? NV20_3D_LIGHT_BACK_SPECULAR_R(i) : \ + NV20_3D_LIGHT_FRONT_SPECULAR_R(i)) #define MATERIAL_FACTOR_R(side) \ - ((side) ? NV20TCL_MATERIAL_FACTOR_BACK_R : \ - NV20TCL_MATERIAL_FACTOR_FRONT_R) + ((side) ? NV20_3D_MATERIAL_FACTOR_BACK_R : \ + NV20_3D_MATERIAL_FACTOR_FRONT_R) #define MATERIAL_FACTOR_A(side) \ - ((side) ? NV20TCL_MATERIAL_FACTOR_BACK_A : \ - NV20TCL_MATERIAL_FACTOR_FRONT_A) + ((side) ? NV20_3D_MATERIAL_FACTOR_BACK_A : \ + NV20_3D_MATERIAL_FACTOR_FRONT_A) #define MATERIAL_SHININESS(side) \ - ((side) ? NV20TCL_BACK_MATERIAL_SHININESS(0) : \ - NV20TCL_FRONT_MATERIAL_SHININESS(0)) + ((side) ? NV20_3D_BACK_MATERIAL_SHININESS(0) : \ + NV20_3D_FRONT_MATERIAL_SHININESS(0)) void nv20_emit_clip_plane(struct gl_context *ctx, int emit) @@ -65,22 +65,22 @@ get_material_bitmask(unsigned m) unsigned ret = 0; if (m & MAT_BIT_FRONT_EMISSION) - ret |= NV20TCL_COLOR_MATERIAL_FRONT_EMISSION_COL1; + ret |= NV20_3D_COLOR_MATERIAL_FRONT_EMISSION_COL1; if (m & MAT_BIT_FRONT_AMBIENT) - ret |= NV20TCL_COLOR_MATERIAL_FRONT_AMBIENT_COL1; + ret |= NV20_3D_COLOR_MATERIAL_FRONT_AMBIENT_COL1; if (m & MAT_BIT_FRONT_DIFFUSE) - ret |= NV20TCL_COLOR_MATERIAL_FRONT_DIFFUSE_COL1; + ret |= NV20_3D_COLOR_MATERIAL_FRONT_DIFFUSE_COL1; if (m & MAT_BIT_FRONT_SPECULAR) - ret |= NV20TCL_COLOR_MATERIAL_FRONT_SPECULAR_COL1; + ret |= NV20_3D_COLOR_MATERIAL_FRONT_SPECULAR_COL1; if (m & MAT_BIT_BACK_EMISSION) - ret |= NV20TCL_COLOR_MATERIAL_BACK_EMISSION_COL1; + ret |= NV20_3D_COLOR_MATERIAL_BACK_EMISSION_COL1; if (m & MAT_BIT_BACK_AMBIENT) - ret |= NV20TCL_COLOR_MATERIAL_BACK_AMBIENT_COL1; + ret |= NV20_3D_COLOR_MATERIAL_BACK_AMBIENT_COL1; if (m & MAT_BIT_BACK_DIFFUSE) - ret |= NV20TCL_COLOR_MATERIAL_BACK_DIFFUSE_COL1; + ret |= NV20_3D_COLOR_MATERIAL_BACK_DIFFUSE_COL1; if (m & MAT_BIT_BACK_SPECULAR) - ret |= NV20TCL_COLOR_MATERIAL_BACK_SPECULAR_COL1; + ret |= NV20_3D_COLOR_MATERIAL_BACK_SPECULAR_COL1; return ret; } @@ -92,7 +92,7 @@ nv20_emit_color_material(struct gl_context *ctx, int emit) struct nouveau_grobj *kelvin = context_eng3d(ctx); unsigned mask = get_material_bitmask(ctx->Light.ColorMaterialBitmask); - BEGIN_RING(chan, kelvin, NV20TCL_COLOR_MATERIAL, 1); + BEGIN_RING(chan, kelvin, NV20_3D_COLOR_MATERIAL, 1); OUT_RING(chan, ctx->Light.ColorMaterialEnabled ? mask : 0); } @@ -101,11 +101,11 @@ get_fog_mode_signed(unsigned mode) { switch (mode) { case GL_LINEAR: - return NV20TCL_FOG_MODE_LINEAR_SIGNED; + return NV20_3D_FOG_MODE_LINEAR_SIGNED; case GL_EXP: - return NV20TCL_FOG_MODE_EXP_SIGNED; + return NV20_3D_FOG_MODE_EXP_SIGNED; case GL_EXP2: - return NV20TCL_FOG_MODE_EXP2_SIGNED; + return NV20_3D_FOG_MODE_EXP2_SIGNED; default: assert(0); } @@ -116,11 +116,11 @@ get_fog_mode_unsigned(unsigned mode) { switch (mode) { case GL_LINEAR: - return NV20TCL_FOG_MODE_LINEAR_UNSIGNED; + return NV20_3D_FOG_MODE_LINEAR_UNSIGNED; case GL_EXP: - return NV20TCL_FOG_MODE_EXP_UNSIGNED; + return NV20_3D_FOG_MODE_EXP_UNSIGNED; case GL_EXP2: - return NV20TCL_FOG_MODE_EXP2_UNSIGNED; + return NV20_3D_FOG_MODE_EXP2_UNSIGNED; default: assert(0); } @@ -131,9 +131,9 @@ get_fog_source(unsigned source) { switch (source) { case GL_FOG_COORDINATE_EXT: - return NV20TCL_FOG_COORD_FOG; + return NV20_3D_FOG_COORD_FOG; case GL_FRAGMENT_DEPTH_EXT: - return NV20TCL_FOG_COORD_DIST_ORTHOGONAL_ABS; + return NV20_3D_FOG_COORD_DIST_ORTHOGONAL_ABS; default: assert(0); } @@ -152,15 +152,15 @@ nv20_emit_fog(struct gl_context *ctx, int emit) nv10_get_fog_coeff(ctx, k); - BEGIN_RING(chan, kelvin, NV20TCL_FOG_MODE, 4); + BEGIN_RING(chan, kelvin, NV20_3D_FOG_MODE, 4); OUT_RING(chan, (source == GL_FOG_COORDINATE_EXT ? get_fog_mode_signed(f->Mode) : get_fog_mode_unsigned(f->Mode))); OUT_RING(chan, get_fog_source(source)); - OUT_RING(chan, f->Enabled ? 1 : 0); + OUT_RINGb(chan, f->Enabled); OUT_RING(chan, pack_rgba_f(MESA_FORMAT_RGBA8888_REV, f->Color)); - BEGIN_RING(chan, kelvin, NV20TCL_FOG_EQUATION_CONSTANT, 3); + BEGIN_RING(chan, kelvin, NV20_3D_FOG_COEFF(0), 3); OUT_RINGp(chan, k, 3); } @@ -171,19 +171,19 @@ nv20_emit_light_model(struct gl_context *ctx, int emit) struct nouveau_grobj *kelvin = context_eng3d(ctx); struct gl_lightmodel *m = &ctx->Light.Model; - BEGIN_RING(chan, kelvin, NV20TCL_SEPARATE_SPECULAR_ENABLE, 1); - OUT_RING(chan, m->ColorControl == GL_SEPARATE_SPECULAR_COLOR ? 1 : 0); + BEGIN_RING(chan, kelvin, NV20_3D_SEPARATE_SPECULAR_ENABLE, 1); + OUT_RINGb(chan, m->ColorControl == GL_SEPARATE_SPECULAR_COLOR); - BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_MODEL, 1); + BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_MODEL, 1); OUT_RING(chan, ((m->LocalViewer ? - NV20TCL_LIGHT_MODEL_VIEWER_LOCAL : - NV20TCL_LIGHT_MODEL_VIEWER_NONLOCAL) | + NV20_3D_LIGHT_MODEL_VIEWER_LOCAL : + NV20_3D_LIGHT_MODEL_VIEWER_NONLOCAL) | (NEED_SECONDARY_COLOR(ctx) ? - NV20TCL_LIGHT_MODEL_SEPARATE_SPECULAR : + NV20_3D_LIGHT_MODEL_SEPARATE_SPECULAR : 0))); - BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_MODEL_TWO_SIDE_ENABLE, 1); - OUT_RING(chan, ctx->Light.Model.TwoSide ? 1 : 0); + BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_MODEL_TWO_SIDE_ENABLE, 1); + OUT_RINGb(chan, ctx->Light.Model.TwoSide); } void @@ -195,19 +195,19 @@ nv20_emit_light_source(struct gl_context *ctx, int emit) struct gl_light *l = &ctx->Light.Light[i]; if (l->_Flags & LIGHT_POSITIONAL) { - BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_POSITION_X(i), 3); + BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_POSITION_X(i), 3); OUT_RINGp(chan, l->_Position, 3); - BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_ATTENUATION_CONSTANT(i), 3); + BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_ATTENUATION_CONSTANT(i), 3); OUT_RINGf(chan, l->ConstantAttenuation); OUT_RINGf(chan, l->LinearAttenuation); OUT_RINGf(chan, l->QuadraticAttenuation); } else { - BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_DIRECTION_X(i), 3); + BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_DIRECTION_X(i), 3); OUT_RINGp(chan, l->_VP_inf_norm, 3); - BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_HALF_VECTOR_X(i), 3); + BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_HALF_VECTOR_X(i), 3); OUT_RINGp(chan, l->_h_inf_norm, 3); } @@ -216,7 +216,7 @@ nv20_emit_light_source(struct gl_context *ctx, int emit) nv10_get_spot_coeff(l, k); - BEGIN_RING(chan, kelvin, NV20TCL_LIGHT_SPOT_CUTOFF_A(i), 7); + BEGIN_RING(chan, kelvin, NV20_3D_LIGHT_SPOT_CUTOFF(i, 0), 7); OUT_RINGp(chan, k, 7); } } @@ -340,7 +340,7 @@ nv20_emit_modelview(struct gl_context *ctx, int emit) if (ctx->Light._NeedEyeCoords || ctx->Fog.Enabled || (ctx->Texture._GenFlags & TEXGEN_NEED_EYE_COORD)) { - BEGIN_RING(chan, kelvin, NV20TCL_MODELVIEW0_MATRIX(0), 16); + BEGIN_RING(chan, kelvin, NV20_3D_MODELVIEW_MATRIX(0, 0), 16); OUT_RINGm(chan, m->m); } @@ -349,7 +349,7 @@ nv20_emit_modelview(struct gl_context *ctx, int emit) int i, j; BEGIN_RING(chan, kelvin, - NV20TCL_INVERSE_MODELVIEW0_MATRIX(0), 12); + NV20_3D_INVERSE_MODELVIEW_MATRIX(0, 0), 12); for (i = 0; i < 3; i++) for (j = 0; j < 4; j++) OUT_RINGf(chan, m->inv[4*i + j]); @@ -370,7 +370,7 @@ nv20_emit_projection(struct gl_context *ctx, int emit) if (nctx->fallback == HWTNL) _math_matrix_mul_matrix(&m, &m, &ctx->_ModelProjectMatrix); - BEGIN_RING(chan, kelvin, NV20TCL_PROJECTION_MATRIX(0), 16); + BEGIN_RING(chan, kelvin, NV20_3D_PROJECTION_MATRIX(0), 16); OUT_RINGm(chan, m.m); _math_matrix_dtr(&m); diff --git a/src/mesa/drivers/dri/nouveau/nv_m2mf.xml.h b/src/mesa/drivers/dri/nouveau/nv_m2mf.xml.h new file mode 100644 index 00000000000..e370a1ca063 --- /dev/null +++ b/src/mesa/drivers/dri/nouveau/nv_m2mf.xml.h @@ -0,0 +1,155 @@ +#ifndef NV_M2MF_XML +#define NV_M2MF_XML + +/* Autogenerated file, DO NOT EDIT manually! + +This file was generated by the rules-ng-ng headergen tool in this git repository: +http://0x04.net/cgit/index.cgi/rules-ng-ng +git clone git://0x04.net/rules-ng-ng + +The rules-ng-ng source files this header was generated from are: +- nv_m2mf.xml ( 2710 bytes, from 2010-11-01 00:28:46) +- copyright.xml ( 6452 bytes, from 2010-11-15 15:10:58) +- nv_object.xml ( 11547 bytes, from 2010-11-13 23:32:57) +- nvchipsets.xml ( 3074 bytes, from 2010-11-13 23:32:57) +- nv_defs.xml ( 4437 bytes, from 2010-11-01 00:28:46) + +Copyright (C) 2006-2010 by the following authors: +- Artur Huillet <[email protected]> (ahuillet) +- Ben Skeggs (darktama, darktama_) +- B. R. <[email protected]> (koala_br) +- Carlos Martin <[email protected]> (carlosmn) +- Christoph Bumiller <[email protected]> (calim, chrisbmr) +- Dawid Gajownik <[email protected]> (gajownik) +- Dmitry Baryshkov +- Dmitry Eremin-Solenikov <[email protected]> (lumag) +- EdB <[email protected]> (edb_) +- Erik Waling <[email protected]> (erikwaling) +- Francisco Jerez <[email protected]> (curro) +- imirkin <[email protected]> (imirkin) +- jb17bsome <[email protected]> (jb17bsome) +- Jeremy Kolb <[email protected]> (kjeremy) +- Laurent Carlier <[email protected]> (lordheavy) +- Luca Barbieri <[email protected]> (lb, lb1) +- Maarten Maathuis <[email protected]> (stillunknown) +- Marcin KoÅ›cielnicki <[email protected]> (mwk, koriakin) +- Mark Carey <[email protected]> (careym) +- Matthieu Castet <[email protected]> (mat-c) +- nvidiaman <[email protected]> (nvidiaman) +- Patrice Mandin <[email protected]> (pmandin, pmdata) +- Pekka Paalanen <[email protected]> (pq, ppaalanen) +- Peter Popov <[email protected]> (ironpeter) +- Richard Hughes <[email protected]> (hughsient) +- Rudi Cilibrasi <[email protected]> (cilibrar) +- Serge Martin +- Simon Raffeiner +- Stephane Loeuillet <[email protected]> (leroutier) +- Stephane Marchesin <[email protected]> (marcheu) +- sturmflut <[email protected]> (sturmflut) +- Sylvain Munaut <[email protected]> +- Victor Stinner <[email protected]> (haypo) +- Wladmir van der Laan <[email protected]> (miathan6) +- Younes Manton <[email protected]> (ymanton) + +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. +*/ + + + +#define NV04_M2MF_DMA_NOTIFY 0x00000180 + +#define NV04_M2MF_DMA_BUFFER_IN 0x00000184 + +#define NV04_M2MF_DMA_BUFFER_OUT 0x00000188 + + +#define NV50_M2MF_LINEAR_IN 0x00000200 + +#define NV50_M2MF_TILING_MODE_IN 0x00000204 + +#define NV50_M2MF_TILING_PITCH_IN 0x00000208 + +#define NV50_M2MF_TILING_HEIGHT_IN 0x0000020c + +#define NV50_M2MF_TILING_DEPTH_IN 0x00000210 + +#define NV50_M2MF_TILING_POSITION_IN_Z 0x00000214 + +#define NV50_M2MF_TILING_POSITION_IN 0x00000218 +#define NV50_M2MF_TILING_POSITION_IN_X__MASK 0x0000ffff +#define NV50_M2MF_TILING_POSITION_IN_X__SHIFT 0 +#define NV50_M2MF_TILING_POSITION_IN_Y__MASK 0xffff0000 +#define NV50_M2MF_TILING_POSITION_IN_Y__SHIFT 16 + +#define NV50_M2MF_LINEAR_OUT 0x0000021c + +#define NV50_M2MF_TILING_MODE_OUT 0x00000220 + +#define NV50_M2MF_TILING_PITCH_OUT 0x00000224 + +#define NV50_M2MF_TILING_HEIGHT_OUT 0x00000228 + +#define NV50_M2MF_TILING_DEPTH_OUT 0x0000022c + +#define NV50_M2MF_TILING_POSITION_OUT_Z 0x00000230 + +#define NV50_M2MF_TILING_POSITION_OUT 0x00000234 +#define NV50_M2MF_TILING_POSITION_OUT_X__MASK 0x0000ffff +#define NV50_M2MF_TILING_POSITION_OUT_X__SHIFT 0 +#define NV50_M2MF_TILING_POSITION_OUT_Y__MASK 0xffff0000 +#define NV50_M2MF_TILING_POSITION_OUT_Y__SHIFT 16 + +#define NV50_M2MF_OFFSET_IN_HIGH 0x00000238 + +#define NV50_M2MF_OFFSET_OUT_HIGH 0x0000023c + +#define NV04_M2MF_OFFSET_IN 0x0000030c + +#define NV04_M2MF_OFFSET_OUT 0x00000310 + +#define NV04_M2MF_PITCH_IN 0x00000314 + +#define NV04_M2MF_PITCH_OUT 0x00000318 + +#define NV04_M2MF_LINE_LENGTH_IN 0x0000031c + +#define NV04_M2MF_LINE_COUNT 0x00000320 + +#define NV04_M2MF_FORMAT 0x00000324 +#define NV04_M2MF_FORMAT_INPUT_INC__MASK 0x000000ff +#define NV04_M2MF_FORMAT_INPUT_INC__SHIFT 0 +#define NV04_M2MF_FORMAT_INPUT_INC_1 0x00000001 +#define NV04_M2MF_FORMAT_INPUT_INC_2 0x00000002 +#define NV04_M2MF_FORMAT_INPUT_INC_4 0x00000004 +#define NV50_M2MF_FORMAT_INPUT_INC_8 0x00000008 +#define NV50_M2MF_FORMAT_INPUT_INC_16 0x00000010 +#define NV04_M2MF_FORMAT_OUTPUT_INC__MASK 0x0000ff00 +#define NV04_M2MF_FORMAT_OUTPUT_INC__SHIFT 8 +#define NV04_M2MF_FORMAT_OUTPUT_INC_1 0x00000100 +#define NV04_M2MF_FORMAT_OUTPUT_INC_2 0x00000200 +#define NV04_M2MF_FORMAT_OUTPUT_INC_4 0x00000400 +#define NV50_M2MF_FORMAT_OUTPUT_INC_8 0x00000800 +#define NV50_M2MF_FORMAT_OUTPUT_INC_16 0x00001000 + +#define NV04_M2MF_BUF_NOTIFY 0x00000328 + + +#endif /* NV_M2MF_XML */ diff --git a/src/mesa/drivers/dri/nouveau/nv_object.xml.h b/src/mesa/drivers/dri/nouveau/nv_object.xml.h new file mode 100644 index 00000000000..d5ed4bceb55 --- /dev/null +++ b/src/mesa/drivers/dri/nouveau/nv_object.xml.h @@ -0,0 +1,268 @@ +#ifndef NV_OBJECT_XML +#define NV_OBJECT_XML + +/* Autogenerated file, DO NOT EDIT manually! + +This file was generated by the rules-ng-ng headergen tool in this git repository: +http://0x04.net/cgit/index.cgi/rules-ng-ng +git clone git://0x04.net/rules-ng-ng + +The rules-ng-ng source files this header was generated from are: +- nv_object.xml ( 11547 bytes, from 2010-11-13 23:32:57) +- copyright.xml ( 6452 bytes, from 2010-11-15 15:10:58) +- nvchipsets.xml ( 3074 bytes, from 2010-11-13 23:32:57) +- nv_defs.xml ( 4437 bytes, from 2010-11-01 00:28:46) + +Copyright (C) 2006-2010 by the following authors: +- Artur Huillet <[email protected]> (ahuillet) +- Ben Skeggs (darktama, darktama_) +- B. R. <[email protected]> (koala_br) +- Carlos Martin <[email protected]> (carlosmn) +- Christoph Bumiller <[email protected]> (calim, chrisbmr) +- Dawid Gajownik <[email protected]> (gajownik) +- Dmitry Baryshkov +- Dmitry Eremin-Solenikov <[email protected]> (lumag) +- EdB <[email protected]> (edb_) +- Erik Waling <[email protected]> (erikwaling) +- Francisco Jerez <[email protected]> (curro) +- imirkin <[email protected]> (imirkin) +- jb17bsome <[email protected]> (jb17bsome) +- Jeremy Kolb <[email protected]> (kjeremy) +- Laurent Carlier <[email protected]> (lordheavy) +- Luca Barbieri <[email protected]> (lb, lb1) +- Maarten Maathuis <[email protected]> (stillunknown) +- Marcin KoÅ›cielnicki <[email protected]> (mwk, koriakin) +- Mark Carey <[email protected]> (careym) +- Matthieu Castet <[email protected]> (mat-c) +- nvidiaman <[email protected]> (nvidiaman) +- Patrice Mandin <[email protected]> (pmandin, pmdata) +- Pekka Paalanen <[email protected]> (pq, ppaalanen) +- Peter Popov <[email protected]> (ironpeter) +- Richard Hughes <[email protected]> (hughsient) +- Rudi Cilibrasi <[email protected]> (cilibrar) +- Serge Martin +- Simon Raffeiner +- Stephane Loeuillet <[email protected]> (leroutier) +- Stephane Marchesin <[email protected]> (marcheu) +- sturmflut <[email protected]> (sturmflut) +- Sylvain Munaut <[email protected]> +- Victor Stinner <[email protected]> (haypo) +- Wladmir van der Laan <[email protected]> (miathan6) +- Younes Manton <[email protected]> (ymanton) + +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. +*/ + + +#define NV01_ROOT 0x00000001 +#define NV01_CONTEXT_DMA 0x00000002 +#define NV01_DEVICE 0x00000003 +#define NV01_TIMER 0x00000004 +#define NV01_NULL 0x00000030 +#define NV01_MEMORY_LOCAL_BANKED 0x0000003d +#define NV01_MAPPING_SYSTEM 0x0000003e +#define NV03_MEMORY_LOCAL_CURSOR 0x0000003f +#define NV01_MEMORY_LOCAL_LINEAR 0x00000040 +#define NV01_MAPPING_LOCAL 0x00000041 +#define NV03_VIDEO_LUT_CURSOR_DAC 0x00000046 +#define NV03_CHANNEL_PIO 0x0000006a +#define NV03_CHANNEL_DMA 0x0000006b +#define NV10_VIDEO_DISPLAY 0x0000007c +#define NV01_CONTEXT_BETA1 0x00000012 +#define NV04_BETA_SOLID 0x00000072 +#define NV01_CONTEXT_COLOR_KEY 0x00000017 +#define NV04_CONTEXT_COLOR_KEY 0x00000057 +#define NV01_CONTEXT_PATTERN 0x00000018 +#define NV01_CONTEXT_CLIP_RECTANGLE 0x00000019 +#define NV03_CONTEXT_ROP 0x00000043 +#define NV04_IMAGE_PATTERN 0x00000044 +#define NV01_RENDER_SOLID_LINE 0x0000001c +#define NV04_RENDER_SOLID_LINE 0x0000005c +#define NV30_RENDER_SOLID_LINE 0x0000035c +#define NV40_RENDER_SOLID_LINE 0x0000305c +#define NV01_RENDER_SOLID_TRIANGLE 0x0000001d +#define NV04_RENDER_SOLID_TRIANGLE 0x0000005d +#define NV01_RENDER_SOLID_RECTANGLE 0x0000001e +#define NV04_RENDER_SOLID_RECTANGLE 0x0000005e +#define NV01_IMAGE_BLIT 0x0000001f +#define NV04_IMAGE_BLIT 0x0000005f +#define NV11_IMAGE_BLIT 0x0000009f +#define NV01_IMAGE_FROM_CPU 0x00000021 +#define NV04_IMAGE_FROM_CPU 0x00000061 +#define NV05_IMAGE_FROM_CPU 0x00000065 +#define NV10_IMAGE_FROM_CPU 0x0000008a +#define NV30_IMAGE_FROM_CPU 0x0000038a +#define NV40_IMAGE_FROM_CPU 0x0000308a +#define NV03_STRETCHED_IMAGE_FROM_CPU 0x00000036 +#define NV04_STRETCHED_IMAGE_FROM_CPU 0x00000076 +#define NV05_STRETCHED_IMAGE_FROM_CPU 0x00000066 +#define NV30_STRETCHED_IMAGE_FROM_CPU 0x00000366 +#define NV40_STRETCHED_IMAGE_FROM_CPU 0x00003066 +#define NV03_SCALED_IMAGE_FROM_MEMORY 0x00000037 +#define NV04_SCALED_IMAGE_FROM_MEMORY 0x00000077 +#define NV05_SCALED_IMAGE_FROM_MEMORY 0x00000063 +#define NV10_SCALED_IMAGE_FROM_MEMORY 0x00000089 +#define NV30_SCALED_IMAGE_FROM_MEMORY 0x00000389 +#define NV40_SCALED_IMAGE_FROM_MEMORY 0x00003089 +#define NV50_SCALED_IMAGE_FROM_MEMORY 0x00005089 +#define NV04_DVD_SUBPICTURE 0x00000038 +#define NV10_DVD_SUBPICTURE 0x00000088 +#define NV03_GDI_RECTANGLE_TEXT 0x0000004b +#define NV04_GDI_RECTANGLE_TEXT 0x0000004a +#define NV04_SWIZZLED_SURFACE 0x00000052 +#define NV20_SWIZZLED_SURFACE 0x0000009e +#define NV30_SWIZZLED_SURFACE 0x0000039e +#define NV40_SWIZZLED_SURFACE 0x0000309e +#define NV03_CONTEXT_SURFACE_DST 0x00000058 +#define NV03_CONTEXT_SURFACE_SRC 0x00000059 +#define NV04_CONTEXT_SURFACES_2D 0x00000042 +#define NV10_CONTEXT_SURFACES_2D 0x00000062 +#define NV30_CONTEXT_SURFACES_2D 0x00000362 +#define NV40_CONTEXT_SURFACES_2D 0x00003062 +#define NV50_CONTEXT_SURFACES_2D 0x00005062 +#define NV04_INDEXED_IMAGE_FROM_CPU 0x00000060 +#define NV05_INDEXED_IMAGE_FROM_CPU 0x00000064 +#define NV30_INDEXED_IMAGE_FROM_CPU 0x00000364 +#define NV40_INDEXED_IMAGE_FROM_CPU 0x00003064 +#define NV10_TEXTURE_FROM_CPU 0x0000007b +#define NV30_TEXTURE_FROM_CPU 0x0000037b +#define NV40_TEXTURE_FROM_CPU 0x0000307b +#define NV04_M2MF 0x00000039 +#define NV50_M2MF 0x00005039 +#define NVC0_M2MF 0x00009039 +#define NV03_TEXTURED_TRIANGLE 0x00000048 +#define NV04_TEXTURED_TRIANGLE 0x00000054 +#define NV10_TEXTURED_TRIANGLE 0x00000094 +#define NV04_MULTITEX_TRIANGLE 0x00000055 +#define NV10_MULTITEX_TRIANGLE 0x00000095 +#define NV03_CONTEXT_SURFACE_COLOR 0x0000005a +#define NV03_CONTEXT_SURFACE_ZETA 0x0000005b +#define NV04_CONTEXT_SURFACES_3D 0x00000053 +#define NV10_CONTEXT_SURFACES_3D 0x00000093 +#define NV10_3D 0x00000056 +#define NV11_3D 0x00000096 +#define NV17_3D 0x00000099 +#define NV20_3D 0x00000097 +#define NV25_3D 0x00000597 +#define NV30_3D 0x00000397 +#define NV35_3D 0x00000497 +#define NV34_3D 0x00000697 +#define NV40_3D 0x00004097 +#define NV44_3D 0x00004497 +#define NV50_3D 0x00005097 +#define NV84_3D 0x00008297 +#define NVA0_3D 0x00008397 +#define NVA3_3D 0x00008597 +#define NVAF_3D 0x00008697 +#define NVC0_3D 0x00009097 +#define NV50_2D 0x0000502d +#define NVC0_2D 0x0000902d +#define NV50_COMPUTE 0x000050c0 +#define NVA3_COMPUTE 0x000085c0 +#define NVC0_COMPUTE 0x000090c0 +#define NV84_CRYPT 0x000074c1 +#define NV01_SUBCHAN__SIZE 0x00002000 +#define NV01_SUBCHAN 0x00000000 + +#define NV01_SUBCHAN_OBJECT 0x00000000 + + +#define NV84_SUBCHAN_QUERY_ADDRESS_HIGH 0x00000010 + +#define NV84_SUBCHAN_QUERY_ADDRESS_LOW 0x00000014 + +#define NV84_SUBCHAN_QUERY_COUNTER 0x00000018 + +#define NV84_SUBCHAN_QUERY_GET 0x0000001c + +#define NV84_SUBCHAN_QUERY_INTR 0x00000020 + +#define NV84_SUBCHAN_WRCACHE_FLUSH 0x00000024 + +#define NV10_SUBCHAN_REF_CNT 0x00000050 + + +#define NV11_SUBCHAN_DMA_SEMAPHORE 0x00000060 + +#define NV11_SUBCHAN_SEMAPHORE_OFFSET 0x00000064 + +#define NV11_SUBCHAN_SEMAPHORE_ACQUIRE 0x00000068 + +#define NV11_SUBCHAN_SEMAPHORE_RELEASE 0x0000006c + +#define NV40_SUBCHAN_YIELD 0x00000080 + +#define NV01_GRAPH 0x00000000 + +#define NV04_GRAPH_NOP 0x00000100 + +#define NV01_GRAPH_NOTIFY 0x00000104 +#define NV01_GRAPH_NOTIFY_WRITE 0x00000000 +#define NV01_GRAPH_NOTIFY_WRITE_AND_AWAKEN 0x00000001 + +#define NV50_GRAPH_WAIT_FOR_IDLE 0x00000110 + +#define NVA3_GRAPH_UNK0120 0x00000120 + +#define NVA3_GRAPH_UNK0124 0x00000124 + +#define NV40_GRAPH_PM_TRIGGER 0x00000140 + +#define NVC0_SUBCHAN__SIZE 0x00008000 +#define NVC0_SUBCHAN 0x00000000 + +#define NVC0_SUBCHAN_OBJECT 0x00000000 + + +#define NVC0_SUBCHAN_QUERY_ADDRESS_HIGH 0x00000010 + +#define NVC0_SUBCHAN_QUERY_ADDRESS_LOW 0x00000014 + +#define NVC0_SUBCHAN_QUERY_SEQUENCE 0x00000018 + +#define NVC0_SUBCHAN_QUERY_GET 0x0000001c + +#define NVC0_SUBCHAN_REF_CNT 0x00000050 + +#define NVC0_GRAPH 0x00000000 + +#define NVC0_GRAPH_NOP 0x00000100 + +#define NVC0_GRAPH_NOTIFY_ADDRESS_HIGH 0x00000104 + +#define NVC0_GRAPH_NOTIFY_ADDRESS_LOW 0x00000108 + +#define NVC0_GRAPH_NOTIFY 0x0000010c +#define NVC0_GRAPH_NOTIFY_WRITE 0x00000000 +#define NVC0_GRAPH_NOTIFY_WRITE_AND_AWAKEN 0x00000001 + +#define NVC0_GRAPH_SERIALIZE 0x00000110 + +#define NVC0_GRAPH_MACRO_UPLOAD_POS 0x00000114 + +#define NVC0_GRAPH_MACRO_UPLOAD_DATA 0x00000118 + +#define NVC0_GRAPH_MACRO_ID 0x0000011c + +#define NVC0_GRAPH_MACRO_POS 0x00000120 + + +#endif /* NV_OBJECT_XML */ diff --git a/src/mesa/drivers/dri/r200/r200_maos_arrays.c b/src/mesa/drivers/dri/r200/r200_maos_arrays.c index 8a047e6419b..b62290231b9 100644 --- a/src/mesa/drivers/dri/r200/r200_maos_arrays.c +++ b/src/mesa/drivers/dri/r200/r200_maos_arrays.c @@ -200,6 +200,7 @@ void r200EmitArrays( struct gl_context *ctx, GLubyte *vimap_rev ) } default: assert(0); + emitsize = 0; } if (!rmesa->radeon.tcl.aos[nr].bo) { rcommon_emit_vector( ctx, diff --git a/src/mesa/drivers/dri/r200/r200_texstate.c b/src/mesa/drivers/dri/r200/r200_texstate.c index 690bec640bd..24fb031ecb9 100644 --- a/src/mesa/drivers/dri/r200/r200_texstate.c +++ b/src/mesa/drivers/dri/r200/r200_texstate.c @@ -778,6 +778,7 @@ void r200SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_format radeonTexObjPtr t; uint32_t pitch_val; uint32_t internalFormat, type, format; + gl_format texFormat; type = GL_BGRA; format = GL_UNSIGNED_BYTE; @@ -817,10 +818,6 @@ void r200SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_format radeon_miptree_unreference(&t->mt); radeon_miptree_unreference(&rImage->mt); - _mesa_init_teximage_fields(radeon->glCtx, target, texImage, - rb->base.Width, rb->base.Height, 1, 0, rb->cpp); - texImage->RowStride = rb->pitch / rb->cpp; - rImage->bo = rb->bo; radeon_bo_ref(rImage->bo); t->bo = rb->bo; @@ -832,22 +829,35 @@ void r200SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_format pitch_val = rb->pitch; switch (rb->cpp) { case 4: - if (texture_format == __DRI_TEXTURE_FORMAT_RGB) + if (texture_format == __DRI_TEXTURE_FORMAT_RGB) { + texFormat = MESA_FORMAT_RGB888; t->pp_txformat = tx_table_le[MESA_FORMAT_RGB888].format; - else + } + else { + texFormat = MESA_FORMAT_ARGB8888; t->pp_txformat = tx_table_le[MESA_FORMAT_ARGB8888].format; + } t->pp_txfilter |= tx_table_le[MESA_FORMAT_ARGB8888].filter; break; case 3: default: + texFormat = MESA_FORMAT_RGB888; t->pp_txformat = tx_table_le[MESA_FORMAT_RGB888].format; t->pp_txfilter |= tx_table_le[MESA_FORMAT_RGB888].filter; break; case 2: + texFormat = MESA_FORMAT_RGB565; t->pp_txformat = tx_table_le[MESA_FORMAT_RGB565].format; t->pp_txfilter |= tx_table_le[MESA_FORMAT_RGB565].filter; break; } + + _mesa_init_teximage_fields(radeon->glCtx, target, texImage, + rb->base.Width, rb->base.Height, 1, 0, + rb->cpp, texFormat); + texImage->RowStride = rb->pitch / rb->cpp; + + t->pp_txsize = ((rb->base.Width - 1) << RADEON_TEX_USIZE_SHIFT) | ((rb->base.Height - 1) << RADEON_TEX_VSIZE_SHIFT); t->pp_txformat |= R200_TXFORMAT_NON_POWER2; 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 8be32ea91fe..1db8678e890 100644 --- a/src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c +++ b/src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c @@ -76,6 +76,9 @@ static void use_temporary(struct r300_fragment_program_code *code, unsigned int static unsigned int use_source(struct r300_fragment_program_code* code, struct rc_pair_instruction_source src) { + if (!src.Used) + return 0; + if (src.File == RC_FILE_CONSTANT) { return src.Index | (1 << 5); } else if (src.File == RC_FILE_TEMPORARY) { 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 2d28b065390..05d3da8a10d 100644 --- a/src/mesa/drivers/dri/r300/compiler/r300_fragprog_swizzle.c +++ b/src/mesa/drivers/dri/r300/compiler/r300_fragprog_swizzle.c @@ -94,6 +94,7 @@ static const struct swizzle_data* lookup_native_swizzle(unsigned int swizzle) */ static int r300_swizzle_is_native(rc_opcode opcode, struct rc_src_register reg) { + const struct swizzle_data* sd; unsigned int relevant; int j; @@ -127,7 +128,8 @@ static int r300_swizzle_is_native(rc_opcode opcode, struct rc_src_register reg) if ((reg.Negate & relevant) && ((reg.Negate & relevant) != relevant)) return 0; - if (!lookup_native_swizzle(reg.Swizzle)) + sd = lookup_native_swizzle(reg.Swizzle); + if (!sd || (reg.File == RC_FILE_PRESUB && sd->srcp_stride == 0)) return 0; return 1; @@ -201,7 +203,7 @@ unsigned int r300FPTranslateRGBSwizzle(unsigned int src, unsigned int swizzle) { const struct swizzle_data* sd = lookup_native_swizzle(swizzle); - if (!sd) { + if (!sd || (src == RC_PAIR_PRESUB_SRC && sd->srcp_stride == 0)) { fprintf(stderr, "Not a native swizzle: %08x\n", swizzle); return 0; } diff --git a/src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c b/src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c index 2f130198d35..e0d349b98ce 100644 --- a/src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c +++ b/src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c @@ -24,6 +24,7 @@ #include <stdio.h> +#include "radeon_compiler_util.h" #include "radeon_dataflow.h" #include "radeon_emulate_branches.h" #include "radeon_emulate_loops.h" @@ -54,6 +55,8 @@ static void rc_rewrite_depth_out(struct radeon_compiler *cc, void *user) for (rci = c->Base.Program.Instructions.Next; rci != &c->Base.Program.Instructions; rci = rci->Next) { struct rc_sub_instruction * inst = &rci->U.I; + unsigned i; + const struct rc_opcode_info *info = rc_get_opcode_info(inst->Opcode); if (inst->DstReg.File != RC_FILE_OUTPUT || inst->DstReg.Index != c->OutputDepth) continue; @@ -65,27 +68,12 @@ static void rc_rewrite_depth_out(struct radeon_compiler *cc, void *user) continue; } - switch (inst->Opcode) { - case RC_OPCODE_FRC: - case RC_OPCODE_MOV: - inst->SrcReg[0] = lmul_swizzle(RC_SWIZZLE_ZZZZ, inst->SrcReg[0]); - break; - case RC_OPCODE_ADD: - case RC_OPCODE_MAX: - case RC_OPCODE_MIN: - case RC_OPCODE_MUL: - inst->SrcReg[0] = lmul_swizzle(RC_SWIZZLE_ZZZZ, inst->SrcReg[0]); - inst->SrcReg[1] = lmul_swizzle(RC_SWIZZLE_ZZZZ, inst->SrcReg[1]); - break; - case RC_OPCODE_CMP: - case RC_OPCODE_MAD: - inst->SrcReg[0] = lmul_swizzle(RC_SWIZZLE_ZZZZ, inst->SrcReg[0]); - inst->SrcReg[1] = lmul_swizzle(RC_SWIZZLE_ZZZZ, inst->SrcReg[1]); - inst->SrcReg[2] = lmul_swizzle(RC_SWIZZLE_ZZZZ, inst->SrcReg[2]); - break; - default: - // Scalar instructions needn't be reswizzled - break; + if (!info->IsComponentwise) { + continue; + } + + for (i = 0; i < info->NumSrcRegs; i++) { + inst->SrcReg[i] = lmul_swizzle(RC_SWIZZLE_ZZZZ, inst->SrcReg[i]); } } } @@ -93,7 +81,6 @@ static void rc_rewrite_depth_out(struct radeon_compiler *cc, void *user) void r3xx_compile_fragment_program(struct r300_fragment_program_compiler* c) { int is_r500 = c->Base.is_r500; - int kill_consts = c->Base.remove_unused_constants; int opt = !c->Base.disable_optimizations; /* Lists of instruction transformations. */ @@ -133,11 +120,11 @@ void r3xx_compile_fragment_program(struct r300_fragment_program_compiler* c) {"emulate loops", 1, !is_r500, rc_emulate_loops, NULL}, {"dataflow optimize", 1, opt, rc_optimize, NULL}, {"dataflow swizzles", 1, 1, rc_dataflow_swizzles, NULL}, - {"dead constants", 1, kill_consts, rc_remove_unused_constants, &c->code->constants_remap_table}, + {"dead constants", 1, 1, rc_remove_unused_constants, &c->code->constants_remap_table}, /* This pass makes it easier for the scheduler to group TEX * instructions and reduces the chances of creating too * many texture indirections.*/ - {"register rename", 1, !is_r500, rc_rename_regs, NULL}, + {"register rename", 1, !is_r500 || opt, 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}, @@ -150,9 +137,10 @@ void r3xx_compile_fragment_program(struct r300_fragment_program_compiler* c) {NULL, 0, 0, NULL, NULL} }; + c->Base.type = RC_FRAGMENT_PROGRAM; c->Base.SwizzleCaps = c->Base.is_r500 ? &r500_swizzle_caps : &r300_swizzle_caps; - rc_run_compiler(&c->Base, fs_list, "Fragment Program"); + rc_run_compiler(&c->Base, fs_list); rc_constants_copy(&c->code->constants, &c->Base.Program.Constants); } diff --git a/src/mesa/drivers/dri/r300/compiler/r3xx_vertprog.c b/src/mesa/drivers/dri/r300/compiler/r3xx_vertprog.c index bf8341f0173..472029f63d0 100644 --- a/src/mesa/drivers/dri/r300/compiler/r3xx_vertprog.c +++ b/src/mesa/drivers/dri/r300/compiler/r3xx_vertprog.c @@ -26,6 +26,7 @@ #include "../r300_reg.h" +#include "radeon_compiler_util.h" #include "radeon_dataflow.h" #include "radeon_program_alu.h" #include "radeon_swizzle.h" @@ -790,19 +791,14 @@ static void allocate_temporary_registers(struct radeon_compiler *c, void *user) if (!hwtemps[j]) break; } - if (j >= c->max_temp_regs) { - rc_error(c, "Too many temporaries\n"); - return; + ta[orig].Allocated = 1; + if (last_inst_src_reladdr && + last_inst_src_reladdr->IP > inst->IP) { + ta[orig].HwTemp = orig; } else { - ta[orig].Allocated = 1; - if (last_inst_src_reladdr && - last_inst_src_reladdr->IP > inst->IP) { - ta[orig].HwTemp = orig; - } else { - ta[orig].HwTemp = j; - } - hwtemps[ta[orig].HwTemp] = 1; + ta[orig].HwTemp = j; } + hwtemps[ta[orig].HwTemp] = 1; } inst->U.I.DstReg.Index = ta[orig].HwTemp; @@ -1018,7 +1014,6 @@ static struct rc_swizzle_caps r300_vertprog_swizzle_caps = { void r3xx_compile_vertex_program(struct r300_vertex_program_compiler *c) { int is_r500 = c->Base.is_r500; - int kill_consts = c->Base.remove_unused_constants; int opt = !c->Base.disable_optimizations; /* Lists of instruction transformations. */ @@ -1062,18 +1057,18 @@ void r3xx_compile_vertex_program(struct r300_vertex_program_compiler *c) {"dataflow optimize", 1, opt, rc_optimize, NULL}, /* This pass must be done after optimizations. */ {"source conflict resolve", 1, 1, rc_local_transform, resolve_src_conflicts}, - {"dataflow swizzles", 1, 1, rc_dataflow_swizzles, NULL}, {"register allocation", 1, opt, allocate_temporary_registers, NULL}, - {"dead constants", 1, kill_consts, rc_remove_unused_constants, &c->code->constants_remap_table}, + {"dead constants", 1, 1, rc_remove_unused_constants, &c->code->constants_remap_table}, {"final code validation", 0, 1, rc_validate_final_shader, NULL}, {"machine code generation", 0, 1, translate_vertex_program, NULL}, {"dump machine code", 0, c->Base.Debug & RC_DBG_LOG, r300_vertex_program_dump, NULL}, {NULL, 0, 0, NULL, NULL} }; + c->Base.type = RC_VERTEX_PROGRAM; c->Base.SwizzleCaps = &r300_vertprog_swizzle_caps; - rc_run_compiler(&c->Base, vs_list, "Vertex Program"); + rc_run_compiler(&c->Base, vs_list); c->code->InputsRead = c->Base.Program.InputsRead; c->code->OutputsWritten = c->Base.Program.OutputsWritten; diff --git a/src/mesa/drivers/dri/r300/compiler/r500_fragprog.c b/src/mesa/drivers/dri/r300/compiler/r500_fragprog.c index 289bb87ae59..ef81be48f77 100644 --- a/src/mesa/drivers/dri/r300/compiler/r500_fragprog.c +++ b/src/mesa/drivers/dri/r300/compiler/r500_fragprog.c @@ -29,6 +29,7 @@ #include <stdio.h> +#include "radeon_compiler_util.h" #include "../r300_reg.h" /** 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 6f101c68eb6..5da82d90f67 100644 --- a/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c +++ b/src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c @@ -45,9 +45,6 @@ #include "radeon_program_pair.h" -#define MAX_BRANCH_DEPTH_FULL 32 -#define MAX_BRANCH_DEPTH_PARTIAL 4 - #define PROG_CODE \ struct r500_fragment_program_code *code = &c->code->code.r500 @@ -200,6 +197,9 @@ static void use_temporary(struct r500_fragment_program_code* code, unsigned int static unsigned int use_source(struct r500_fragment_program_code* code, struct rc_pair_instruction_source src) { + if (!src.Used) + return 0; + if (src.File == RC_FILE_CONSTANT) { return src.Index | 0x100; } else if (src.File == RC_FILE_TEMPORARY) { @@ -506,7 +506,7 @@ static void emit_flowcontrol(struct emit_state * s, struct rc_instruction * inst break; } case RC_OPCODE_IF: - if ( s->CurrentBranchDepth >= MAX_BRANCH_DEPTH_FULL) { + if ( s->CurrentBranchDepth >= R500_PFS_MAX_BRANCH_DEPTH_FULL) { rc_error(s->C, "Branch depth exceeds hardware limit"); return; } diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_code.h b/src/mesa/drivers/dri/r300/compiler/radeon_code.h index cfb6df2cd79..b69e81698ae 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_code.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_code.h @@ -34,6 +34,8 @@ #define R500_PFS_MAX_INST 512 #define R500_PFS_NUM_TEMP_REGS 128 #define R500_PFS_NUM_CONST_REGS 256 +#define R500_PFS_MAX_BRANCH_DEPTH_FULL 32 +#define R500_PFS_MAX_BRANCH_DEPTH_PARTIAL 4 #define STATE_R300_WINDOW_DIMENSION (STATE_INTERNAL_DRIVER+0) diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_compiler.c b/src/mesa/drivers/dri/r300/compiler/radeon_compiler.c index 4286baed0c6..65548604bcc 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_compiler.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_compiler.c @@ -29,6 +29,7 @@ #include "radeon_dataflow.h" #include "radeon_program.h" #include "radeon_program_pair.h" +#include "radeon_compiler_util.h" void rc_init(struct radeon_compiler * c) @@ -356,66 +357,92 @@ void rc_transform_fragment_face(struct radeon_compiler *c, unsigned face) static void reg_count_callback(void * userdata, struct rc_instruction * inst, rc_register_file file, unsigned int index, unsigned int mask) { - unsigned int * max_reg = userdata; + int *max_reg = userdata; if (file == RC_FILE_TEMPORARY) - index > *max_reg ? *max_reg = index : 0; + (int)index > *max_reg ? *max_reg = index : 0; } -static void print_stats(struct radeon_compiler * c) +void rc_get_stats(struct radeon_compiler *c, struct rc_program_stats *s) { + int max_reg = -1; struct rc_instruction * tmp; - unsigned max_reg, insts, fc, tex, alpha, rgb, presub; - max_reg = insts = fc = tex = alpha = rgb = presub = 0; + memset(s, 0, sizeof(*s)); + for(tmp = c->Program.Instructions.Next; tmp != &c->Program.Instructions; tmp = tmp->Next){ const struct rc_opcode_info * info; rc_for_all_reads_mask(tmp, reg_count_callback, &max_reg); if (tmp->Type == RC_INSTRUCTION_NORMAL) { if (tmp->U.I.PreSub.Opcode != RC_PRESUB_NONE) - presub++; + s->num_presub_ops++; info = rc_get_opcode_info(tmp->U.I.Opcode); } else { if (tmp->U.P.RGB.Src[RC_PAIR_PRESUB_SRC].Used) - presub++; + s->num_presub_ops++; if (tmp->U.P.Alpha.Src[RC_PAIR_PRESUB_SRC].Used) - presub++; + s->num_presub_ops++; /* Assuming alpha will never be a flow control or * a tex instruction. */ if (tmp->U.P.Alpha.Opcode != RC_OPCODE_NOP) - alpha++; + s->num_alpha_insts++; if (tmp->U.P.RGB.Opcode != RC_OPCODE_NOP) - rgb++; + s->num_rgb_insts++; info = rc_get_opcode_info(tmp->U.P.RGB.Opcode); } if (info->IsFlowControl) - fc++; + s->num_fc_insts++; if (info->HasTexture) - tex++; - insts++; + s->num_tex_insts++; + s->num_insts++; } - if (insts < 4) - return; - fprintf(stderr,"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" - "~%4u Instructions\n" - "~%4u Vector Instructions (RGB)\n" - "~%4u Scalar Instructions (Alpha)\n" - "~%4u Flow Control Instructions\n" - "~%4u Texture Instructions\n" - "~%4u Presub Operations\n" - "~%4u Temporary Registers\n" - "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", - insts, rgb, alpha, fc, tex, presub, max_reg + 1); + s->num_temp_regs = max_reg + 1; } -/* Executes a list of compiler passes given in the parameter 'list'. */ -void rc_run_compiler(struct radeon_compiler *c, struct radeon_compiler_pass *list, - const char *shader_name) +static void print_stats(struct radeon_compiler * c) { - if (c->Debug & RC_DBG_LOG) { - fprintf(stderr, "%s: before compilation\n", shader_name); - rc_print_program(&c->Program); + struct rc_program_stats s; + + rc_get_stats(c, &s); + + if (s.num_insts < 4) + return; + + switch (c->type) { + case RC_VERTEX_PROGRAM: + fprintf(stderr,"~~~~~~~~~ VERTEX PROGRAM ~~~~~~~~\n" + "~%4u Instructions\n" + "~%4u Flow Control Instructions\n" + "~%4u Temporary Registers\n" + "~~~~~~~~~~~~~~ END ~~~~~~~~~~~~~~\n", + s.num_insts, s.num_fc_insts, s.num_temp_regs); + break; + + case RC_FRAGMENT_PROGRAM: + fprintf(stderr,"~~~~~~~~ FRAGMENT PROGRAM ~~~~~~~\n" + "~%4u Instructions\n" + "~%4u Vector Instructions (RGB)\n" + "~%4u Scalar Instructions (Alpha)\n" + "~%4u Flow Control Instructions\n" + "~%4u Texture Instructions\n" + "~%4u Presub Operations\n" + "~%4u Temporary Registers\n" + "~~~~~~~~~~~~~~ END ~~~~~~~~~~~~~~\n", + s.num_insts, s.num_rgb_insts, s.num_alpha_insts, + s.num_fc_insts, s.num_tex_insts, s.num_presub_ops, + s.num_temp_regs); + break; + default: + assert(0); } +} +static const char *shader_name[RC_NUM_PROGRAM_TYPES] = { + "Vertex Program", + "Fragment Program" +}; + +void rc_run_compiler_passes(struct radeon_compiler *c, struct radeon_compiler_pass *list) +{ for (unsigned i = 0; list[i].name; i++) { if (list[i].predicate) { list[i].run(c, list[i].user); @@ -424,11 +451,23 @@ void rc_run_compiler(struct radeon_compiler *c, struct radeon_compiler_pass *lis return; if ((c->Debug & RC_DBG_LOG) && list[i].dump) { - fprintf(stderr, "%s: after '%s'\n", shader_name, list[i].name); + fprintf(stderr, "%s: after '%s'\n", shader_name[c->type], list[i].name); rc_print_program(&c->Program); } } } +} + +/* Executes a list of compiler passes given in the parameter 'list'. */ +void rc_run_compiler(struct radeon_compiler *c, struct radeon_compiler_pass *list) +{ + if (c->Debug & RC_DBG_LOG) { + fprintf(stderr, "%s: before compilation\n", shader_name[c->type]); + rc_print_program(&c->Program); + } + + rc_run_compiler_passes(c, list); + if (c->Debug & RC_DBG_STATS) print_stats(c); } diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_compiler.h b/src/mesa/drivers/dri/r300/compiler/radeon_compiler.h index 31fd469a04f..e6633395895 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_compiler.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_compiler.h @@ -35,9 +35,16 @@ struct rc_swizzle_caps; +enum rc_program_type { + RC_VERTEX_PROGRAM, + RC_FRAGMENT_PROGRAM, + RC_NUM_PROGRAM_TYPES +}; + struct radeon_compiler { struct memory_pool Pool; struct rc_program Program; + enum rc_program_type type; unsigned Debug:2; unsigned Error:1; char * ErrorMsg; @@ -140,9 +147,21 @@ struct radeon_compiler_pass { void *user; /* Optional parameter which is passed to the run function. */ }; +struct rc_program_stats { + unsigned num_insts; + unsigned num_fc_insts; + unsigned num_tex_insts; + unsigned num_rgb_insts; + unsigned num_alpha_insts; + unsigned num_presub_ops; + unsigned num_temp_regs; +}; + +void rc_get_stats(struct radeon_compiler *c, struct rc_program_stats *s); + /* Executes a list of compiler passes given in the parameter 'list'. */ -void rc_run_compiler(struct radeon_compiler *c, struct radeon_compiler_pass *list, - const char *shader_name); +void rc_run_compiler_passes(struct radeon_compiler *c, struct radeon_compiler_pass *list); +void rc_run_compiler(struct radeon_compiler *c, struct radeon_compiler_pass *list); void rc_validate_final_shader(struct radeon_compiler *c, void *user); #endif /* RADEON_COMPILER_H */ 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 97f4c758492..bf393a9fb16 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.c @@ -31,6 +31,8 @@ #include "radeon_compiler_util.h" +#include "radeon_compiler.h" +#include "radeon_dataflow.h" /** */ unsigned int rc_swizzle_to_writemask(unsigned int swz) @@ -46,6 +48,91 @@ unsigned int rc_swizzle_to_writemask(unsigned int swz) return mask; } +rc_swizzle get_swz(unsigned int swz, rc_swizzle idx) +{ + if (idx & 0x4) + return idx; + return GET_SWZ(swz, idx); +} + +unsigned int combine_swizzles4(unsigned int src, + rc_swizzle swz_x, rc_swizzle swz_y, rc_swizzle swz_z, rc_swizzle swz_w) +{ + unsigned int ret = 0; + + ret |= get_swz(src, swz_x); + ret |= get_swz(src, swz_y) << 3; + ret |= get_swz(src, swz_z) << 6; + ret |= get_swz(src, swz_w) << 9; + + return ret; +} + +unsigned int combine_swizzles(unsigned int src, unsigned int swz) +{ + unsigned int ret = 0; + + ret |= get_swz(src, GET_SWZ(swz, RC_SWIZZLE_X)); + ret |= get_swz(src, GET_SWZ(swz, RC_SWIZZLE_Y)) << 3; + ret |= get_swz(src, GET_SWZ(swz, RC_SWIZZLE_Z)) << 6; + ret |= get_swz(src, GET_SWZ(swz, RC_SWIZZLE_W)) << 9; + + return ret; +} + +/** + * @param mask Must be either RC_MASK_X, RC_MASK_Y, RC_MASK_Z, or RC_MASK_W + */ +rc_swizzle rc_mask_to_swizzle(unsigned int mask) +{ + switch (mask) { + case RC_MASK_X: return RC_SWIZZLE_X; + case RC_MASK_Y: return RC_SWIZZLE_Y; + case RC_MASK_Z: return RC_SWIZZLE_Z; + case RC_MASK_W: return RC_SWIZZLE_W; + } + return RC_SWIZZLE_UNUSED; +} + +/* Reorder mask bits according to swizzle. */ +unsigned swizzle_mask(unsigned swizzle, unsigned mask) +{ + unsigned ret = 0; + for (unsigned chan = 0; chan < 4; ++chan) { + unsigned swz = GET_SWZ(swizzle, chan); + if (swz < 4) + ret |= GET_BIT(mask, swz) << chan; + } + return ret; +} + +/** + * Left multiplication of a register with a swizzle + */ +struct rc_src_register lmul_swizzle(unsigned int swizzle, struct rc_src_register srcreg) +{ + struct rc_src_register tmp = srcreg; + int i; + tmp.Swizzle = 0; + tmp.Negate = 0; + for(i = 0; i < 4; ++i) { + rc_swizzle swz = GET_SWZ(swizzle, i); + if (swz < 4) { + tmp.Swizzle |= GET_SWZ(srcreg.Swizzle, swz) << (i*3); + tmp.Negate |= GET_BIT(srcreg.Negate, swz) << i; + } else { + tmp.Swizzle |= swz << (i*3); + } + } + return tmp; +} + +void reset_srcreg(struct rc_src_register* reg) +{ + memset(reg, 0, sizeof(struct rc_src_register)); + reg->Swizzle = RC_SWIZZLE_XYZW; +} + unsigned int rc_src_reads_dst_mask( rc_register_file src_file, unsigned int src_idx, @@ -59,3 +146,123 @@ unsigned int rc_src_reads_dst_mask( } return dst_mask & rc_swizzle_to_writemask(src_swz); } + +unsigned int rc_source_type_swz(unsigned int swizzle, unsigned int channels) +{ + unsigned int chan; + unsigned int swz = RC_SWIZZLE_UNUSED; + unsigned int ret = RC_SOURCE_NONE; + + for(chan = 0; chan < channels; chan++) { + swz = GET_SWZ(swizzle, chan); + if (swz == RC_SWIZZLE_W) { + ret |= RC_SOURCE_ALPHA; + } else if (swz == RC_SWIZZLE_X || swz == RC_SWIZZLE_Y + || swz == RC_SWIZZLE_Z) { + ret |= RC_SOURCE_RGB; + } + } + return ret; +} + +unsigned int rc_source_type_mask(unsigned int mask) +{ + unsigned int ret = RC_SOURCE_NONE; + + if (mask & RC_MASK_XYZ) + ret |= RC_SOURCE_RGB; + + if (mask & RC_MASK_W) + ret |= RC_SOURCE_ALPHA; + + return ret; +} + +struct can_use_presub_data { + struct rc_src_register RemoveSrcs[3]; + unsigned int RGBCount; + unsigned int AlphaCount; +}; + +static void can_use_presub_read_cb( + void * userdata, + struct rc_instruction * inst, + rc_register_file file, + unsigned int index, + unsigned int mask) +{ + struct can_use_presub_data * d = userdata; + unsigned int src_type = rc_source_type_mask(mask); + unsigned int i; + + if (file == RC_FILE_NONE) + return; + + for(i = 0; i < 3; i++) { + if (d->RemoveSrcs[i].File == file + && d->RemoveSrcs[i].Index == index) { + src_type &= + ~rc_source_type_swz(d->RemoveSrcs[i].Swizzle, 4); + } + } + + if (src_type & RC_SOURCE_RGB) + d->RGBCount++; + + if (src_type & RC_SOURCE_ALPHA) + d->AlphaCount++; +} + +unsigned int rc_inst_can_use_presub( + struct rc_instruction * inst, + rc_presubtract_op presub_op, + unsigned int presub_writemask, + struct rc_src_register replace_reg, + struct rc_src_register presub_src0, + struct rc_src_register presub_src1) +{ + struct can_use_presub_data d; + unsigned int num_presub_srcs; + unsigned int presub_src_type = rc_source_type_mask(presub_writemask); + const struct rc_opcode_info * info = + rc_get_opcode_info(inst->U.I.Opcode); + + if (presub_op == RC_PRESUB_NONE) { + return 1; + } + + if (info->HasTexture) { + return 0; + } + + /* We can't use more than one presubtract value in an + * instruction, unless the two prsubtract operations + * are the same and read from the same registers. + * XXX For now we will limit instructions to only one presubtract + * value.*/ + if (inst->U.I.PreSub.Opcode != RC_PRESUB_NONE) { + return 0; + } + + memset(&d, 0, sizeof(d)); + d.RemoveSrcs[0] = replace_reg; + d.RemoveSrcs[1] = presub_src0; + d.RemoveSrcs[2] = presub_src1; + + rc_for_all_reads_mask(inst, can_use_presub_read_cb, &d); + + num_presub_srcs = rc_presubtract_src_reg_count(presub_op); + + if ((presub_src_type & RC_SOURCE_RGB) + && d.RGBCount + num_presub_srcs > 3) { + return 0; + } + + if ((presub_src_type & RC_SOURCE_ALPHA) + && d.AlphaCount + num_presub_srcs > 3) { + return 0; + } + + return 1; +} + 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 1a14e7cb0ef..461ab9ffb10 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.h @@ -3,8 +3,27 @@ #ifndef RADEON_PROGRAM_UTIL_H #define RADEON_PROGRAM_UTIL_H +struct rc_instruction; +struct rc_src_register; + unsigned int rc_swizzle_to_writemask(unsigned int swz); +rc_swizzle get_swz(unsigned int swz, rc_swizzle idx); + +unsigned int combine_swizzles4(unsigned int src, + rc_swizzle swz_x, rc_swizzle swz_y, + rc_swizzle swz_z, rc_swizzle swz_w); + +unsigned int combine_swizzles(unsigned int src, unsigned int swz); + +rc_swizzle rc_mask_to_swizzle(unsigned int mask); + +unsigned swizzle_mask(unsigned swizzle, unsigned mask); + +struct rc_src_register lmul_swizzle(unsigned int swizzle, struct rc_src_register srcreg); + +void reset_srcreg(struct rc_src_register* reg); + unsigned int rc_src_reads_dst_mask( rc_register_file src_file, unsigned int src_idx, @@ -13,4 +32,16 @@ unsigned int rc_src_reads_dst_mask( unsigned int dst_idx, unsigned int dst_mask); +unsigned int rc_source_type_swz(unsigned int swizzle, unsigned int channels); + +unsigned int rc_source_type_mask(unsigned int mask); + +unsigned int rc_inst_can_use_presub( + struct rc_instruction * inst, + rc_presubtract_op presub_op, + unsigned int presub_writemask, + struct rc_src_register replace_reg, + struct rc_src_register presub_src0, + struct rc_src_register presub_src1); + #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 fd94194dc34..d0a64d936e0 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c @@ -139,7 +139,46 @@ static void pair_sub_for_all_args( const struct rc_opcode_info * info = rc_get_opcode_info(sub->Opcode); for(i = 0; i < info->NumSrcRegs; i++) { - cb(userdata, fullinst, &sub->Arg[i]); + unsigned int src_type; + unsigned int channels = 0; + if (&fullinst->U.P.RGB == sub) + channels = 3; + else if (&fullinst->U.P.Alpha == sub) + channels = 1; + + assert(channels > 0); + src_type = rc_source_type_swz(sub->Arg[i].Swizzle, channels); + + if (src_type == RC_SOURCE_NONE) + continue; + + if (sub->Arg[i].Source == RC_PAIR_PRESUB_SRC) { + unsigned int presub_type; + 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; + src_array = fullinst->U.P.RGB.Src; + } else { + presub_type = fullinst-> + U.P.Alpha.Src[RC_PAIR_PRESUB_SRC].Index; + src_array = fullinst->U.P.Alpha.Src; + } + presub_src_count + = rc_presubtract_src_reg_count(presub_type); + for(j = 0; j < presub_src_count; j++) { + cb(userdata, fullinst, &sub->Arg[i], + &src_array[j]); + } + } else { + struct rc_pair_instruction_source * src = + rc_pair_get_src(&fullinst->U.P, &sub->Arg[i]); + if (src) { + cb(userdata, fullinst, &sub->Arg[i], src); + } + } } } @@ -308,6 +347,7 @@ static void remap_normal_instruction(struct rc_instruction * fullinst, { struct rc_sub_instruction * inst = &fullinst->U.I; const struct rc_opcode_info * opcode = rc_get_opcode_info(inst->Opcode); + unsigned int remapped_presub = 0; if (opcode->HasDstReg) { rc_register_file file = inst->DstReg.File; @@ -327,6 +367,12 @@ static void remap_normal_instruction(struct rc_instruction * fullinst, unsigned int i; unsigned int srcp_srcs = rc_presubtract_src_reg_count( inst->PreSub.Opcode); + /* Make sure we only remap presubtract sources once in + * case more than one source register reads the + * presubtract result. */ + if (remapped_presub) + continue; + for(i = 0; i < srcp_srcs; i++) { file = inst->PreSub.SrcReg[i].File; index = inst->PreSub.SrcReg[i].Index; @@ -334,7 +380,7 @@ static void remap_normal_instruction(struct rc_instruction * fullinst, inst->PreSub.SrcReg[i].File = file; inst->PreSub.SrcReg[i].Index = index; } - + remapped_presub = 1; } else { cb(userdata, fullinst, &file, &index); @@ -430,12 +476,29 @@ static rc_opcode get_flow_control_inst(struct rc_instruction * inst) } +struct branch_write_mask { + unsigned int IfWriteMask:4; + unsigned int ElseWriteMask:4; + unsigned int HasElse:1; +}; + +union get_readers_read_cb { + rc_read_src_fn I; + rc_pair_read_arg_fn P; +}; + struct get_readers_callback_data { struct radeon_compiler * C; struct rc_reader_data * ReaderData; - rc_read_src_fn ReadCB; + rc_read_src_fn ReadNormalCB; + rc_pair_read_arg_fn ReadPairCB; rc_read_write_mask_fn WriteCB; + rc_register_file DstFile; + unsigned int DstIndex; + unsigned int DstMask; unsigned int AliveWriteMask; + /* For convenience, this is indexed starting at 1 */ + struct branch_write_mask BranchMasks[R500_PFS_MAX_BRANCH_DEPTH_FULL + 1]; }; static void add_reader( @@ -443,7 +506,7 @@ static void add_reader( struct rc_reader_data * data, struct rc_instruction * inst, unsigned int mask, - struct rc_src_register * src) + void * arg_or_src) { struct rc_reader * new; memory_pool_array_reserve(pool, struct rc_reader, data->Readers, @@ -451,7 +514,74 @@ static void add_reader( new = &data->Readers[data->ReaderCount++]; new->Inst = inst; new->WriteMask = mask; - new->Src = src; + if (inst->Type == RC_INSTRUCTION_NORMAL) { + new->U.Src = arg_or_src; + } else { + new->U.Arg = arg_or_src; + } +} + +static unsigned int get_readers_read_callback( + struct get_readers_callback_data * cb_data, + unsigned int has_rel_addr, + rc_register_file file, + unsigned int index, + unsigned int swizzle) +{ + unsigned int shared_mask, read_mask; + + if (has_rel_addr) { + cb_data->ReaderData->Abort = 1; + return RC_MASK_NONE; + } + + shared_mask = rc_src_reads_dst_mask(file, index, swizzle, + cb_data->DstFile, cb_data->DstIndex, cb_data->AliveWriteMask); + + if (shared_mask == RC_MASK_NONE) + return shared_mask; + + /* If we make it this far, it means that this source reads from the + * same register written to by d->ReaderData->Writer. */ + + read_mask = rc_swizzle_to_writemask(swizzle); + if (cb_data->ReaderData->AbortOnRead & read_mask) { + cb_data->ReaderData->Abort = 1; + return shared_mask; + } + + /* XXX The behavior in this case should be configurable. */ + if ((read_mask & cb_data->AliveWriteMask) != read_mask) { + cb_data->ReaderData->Abort = 1; + return shared_mask; + } + + return shared_mask; +} + +static void get_readers_pair_read_callback( + void * userdata, + struct rc_instruction * inst, + struct rc_pair_instruction_arg * arg, + struct rc_pair_instruction_source * src) +{ + unsigned int shared_mask; + struct get_readers_callback_data * d = userdata; + + shared_mask = get_readers_read_callback(d, + 0 /*Pair Instructions don't use RelAddr*/, + src->File, src->Index, arg->Swizzle); + + if (shared_mask == RC_MASK_NONE) + return; + + if (d->ReadPairCB) + d->ReadPairCB(d->ReaderData, inst, arg, src); + + if (d->ReaderData->Abort) + return; + + add_reader(&d->C->Pool, d->ReaderData, inst, shared_mask, arg); } /** @@ -464,37 +594,18 @@ static void get_readers_normal_read_callback( struct rc_src_register * src) { struct get_readers_callback_data * d = userdata; - unsigned int read_mask; unsigned int shared_mask; - if (src->RelAddr) - d->ReaderData->Abort = 1; - - shared_mask = rc_src_reads_dst_mask(src->File, src->Index, - src->Swizzle, - d->ReaderData->Writer->U.I.DstReg.File, - d->ReaderData->Writer->U.I.DstReg.Index, - d->AliveWriteMask); + shared_mask = get_readers_read_callback(d, + src->RelAddr, src->File, src->Index, src->Swizzle); if (shared_mask == RC_MASK_NONE) return; + /* The callback function could potentially clear d->ReaderData->Abort, + * so we need to call it before we return. */ + if (d->ReadNormalCB) + d->ReadNormalCB(d->ReaderData, inst, src); - /* If we make it this far, it means that this source reads from the - * same register written to by d->ReaderData->Writer. */ - - if (d->ReaderData->AbortOnRead) { - d->ReaderData->Abort = 1; - return; - } - - read_mask = rc_swizzle_to_writemask(src->Swizzle); - /* XXX The behavior in this case should be configurable. */ - if ((read_mask & d->AliveWriteMask) != read_mask) { - d->ReaderData->Abort = 1; - return; - } - - d->ReadCB(d->ReaderData, inst, src); if (d->ReaderData->Abort) return; @@ -515,29 +626,132 @@ static void get_readers_write_callback( { struct get_readers_callback_data * d = userdata; - if (index == d->ReaderData->Writer->U.I.DstReg.Index - && file == d->ReaderData->Writer->U.I.DstReg.File) { - unsigned int shared_mask = mask - & d->ReaderData->Writer->U.I.DstReg.WriteMask; - if (d->ReaderData->InElse) { - if (shared_mask & d->AliveWriteMask) { - /* We set AbortOnRead here because the - * destination register of d->ReaderData->Writer - * is written to in both the IF and the - * ELSE block of this IF/ELSE statement. - * This means that readers of this - * destination register that follow this IF/ELSE - * statement use the value of different - * instructions depending on the control flow - * decisions made by the program. */ - d->ReaderData->AbortOnRead = 1; + if (index == d->DstIndex && file == d->DstFile) { + unsigned int shared_mask = mask & d->DstMask; + d->ReaderData->AbortOnRead &= ~shared_mask; + d->AliveWriteMask &= ~shared_mask; + } + + if(d->WriteCB) + d->WriteCB(d->ReaderData, inst, file, index, mask); +} + +static void get_readers_for_single_write( + void * userdata, + struct rc_instruction * writer, + rc_register_file dst_file, + unsigned int dst_index, + unsigned int dst_mask) +{ + struct rc_instruction * tmp; + unsigned int branch_depth = 0; + struct get_readers_callback_data * d = userdata; + + d->ReaderData->Writer = writer; + d->ReaderData->AbortOnRead = 0; + d->ReaderData->InElse = 0; + d->DstFile = dst_file; + d->DstIndex = dst_index; + d->DstMask = dst_mask; + d->AliveWriteMask = dst_mask; + memset(d->BranchMasks, 0, sizeof(d->BranchMasks)); + + if (!dst_mask) + return; + + for(tmp = writer->Next; tmp != &d->C->Program.Instructions; + tmp = tmp->Next){ + rc_opcode opcode = 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. */ + 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; + } + d->BranchMasks[branch_depth].IfWriteMask = + d->AliveWriteMask; + break; + case RC_OPCODE_ELSE: + if (branch_depth == 0) { + d->ReaderData->InElse = 1; + } else { + unsigned int temp_mask = d->AliveWriteMask; + d->AliveWriteMask = + d->BranchMasks[branch_depth].IfWriteMask; + d->BranchMasks[branch_depth].ElseWriteMask = + temp_mask; + d->BranchMasks[branch_depth].HasElse = 1; } + break; + case RC_OPCODE_ENDIF: + if (branch_depth == 0) { + d->ReaderData->AbortOnRead = d->AliveWriteMask; + d->ReaderData->InElse = 0; + } + else { + struct branch_write_mask * masks = + &d->BranchMasks[branch_depth]; + + if (masks->HasElse) { + d->ReaderData->AbortOnRead |= + masks->IfWriteMask + & ~masks->ElseWriteMask; + 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--; + } + break; + default: + break; + } + + if (d->ReaderData->InElse) + continue; + + if (tmp->Type == RC_INSTRUCTION_NORMAL) { + rc_for_all_reads_src(tmp, + get_readers_normal_read_callback, d); } else { - d->AliveWriteMask &= ~shared_mask; + rc_pair_for_all_reads_arg(tmp, + get_readers_pair_read_callback, d); } - } + rc_for_all_writes_mask(tmp, get_readers_write_callback, d); - d->WriteCB(d->ReaderData, inst, file, index, mask); + if (d->ReaderData->Abort) + return; + + if (branch_depth == 0 && !d->AliveWriteMask) + return; + } } /** @@ -578,83 +792,26 @@ static void get_readers_write_callback( * @param write_cb This function will be called for every instruction after * writer. */ -void rc_get_readers_normal( +void rc_get_readers( struct radeon_compiler * c, struct rc_instruction * writer, struct rc_reader_data * data, - rc_read_src_fn read_cb, + rc_read_src_fn read_normal_cb, + rc_pair_read_arg_fn read_pair_cb, rc_read_write_mask_fn write_cb) { - struct rc_instruction * tmp; struct get_readers_callback_data d; - unsigned int branch_depth = 0; - data->Writer = writer; data->Abort = 0; - data->AbortOnRead = 0; - data->InElse = 0; data->ReaderCount = 0; data->ReadersReserved = 0; data->Readers = NULL; d.C = c; - d.AliveWriteMask = writer->U.I.DstReg.WriteMask; d.ReaderData = data; - d.ReadCB = read_cb; + d.ReadNormalCB = read_normal_cb; + d.ReadPairCB = read_pair_cb; d.WriteCB = write_cb; - if (!writer->U.I.DstReg.WriteMask) - return; - - for(tmp = writer->Next; tmp != &c->Program.Instructions; - tmp = tmp->Next){ - rc_opcode opcode = 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. */ - 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. */ - data->Abort = 1; - return; - case RC_OPCODE_IF: - /* XXX We can do better here, but this will have to - * do until this dataflow analysis is more mature. */ - data->Abort = 1; - branch_depth++; - break; - case RC_OPCODE_ELSE: - if (branch_depth == 0) - data->InElse = 1; - break; - case RC_OPCODE_ENDIF: - if (branch_depth == 0) { - data->AbortOnRead = 1; - data->InElse = 0; - } - else { - branch_depth--; - } - break; - default: - break; - } - - if (!data->InElse) - rc_for_all_reads_src(tmp, get_readers_normal_read_callback, &d); - rc_for_all_writes_mask(tmp, get_readers_write_callback, &d); - - if (data->Abort) - return; - - if (!d.AliveWriteMask) - return; - } + rc_for_all_writes_mask(writer, get_readers_for_single_write, &d); } diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h index 7de6b98f763..ef971c5b234 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h @@ -36,6 +36,7 @@ struct rc_instruction; struct rc_swizzle_caps; struct rc_src_register; struct rc_pair_instruction_arg; +struct rc_pair_instruction_source; struct rc_compiler; @@ -59,7 +60,8 @@ void rc_for_all_reads_src(struct rc_instruction * inst, rc_read_src_fn cb, void * userdata); typedef void (*rc_pair_read_arg_fn)(void * userdata, - struct rc_instruction * inst, struct rc_pair_instruction_arg * arg); + struct rc_instruction * inst, struct rc_pair_instruction_arg * arg, + struct rc_pair_instruction_source * src); void rc_pair_for_all_reads_arg(struct rc_instruction * inst, rc_pair_read_arg_fn cb, void * userdata); @@ -71,7 +73,10 @@ void rc_remap_registers(struct rc_instruction * inst, rc_remap_register_fn cb, v struct rc_reader { struct rc_instruction * Inst; unsigned int WriteMask; - struct rc_src_register * Src; + union { + struct rc_src_register * Src; + struct rc_pair_instruction_arg * Arg; + } U; }; struct rc_reader_data { @@ -87,14 +92,13 @@ struct rc_reader_data { void * CbData; }; -void rc_get_readers_normal( +void rc_get_readers( struct radeon_compiler * c, - struct rc_instruction * inst, + struct rc_instruction * writer, struct rc_reader_data * data, - /*XXX: These should be their own function types. */ - rc_read_src_fn read_cb, + 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_dataflow_swizzles.c b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow_swizzles.c index a0f7bd81741..133a9f72ec7 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_dataflow_swizzles.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_dataflow_swizzles.c @@ -56,6 +56,7 @@ static void rewrite_source(struct radeon_compiler * c, mov->U.I.DstReg.Index = tempreg; mov->U.I.DstReg.WriteMask = split.Phase[phase]; mov->U.I.SrcReg[0] = inst->U.I.SrcReg[src]; + mov->U.I.PreSub = inst->U.I.PreSub; phase_refmask = 0; for(unsigned int chan = 0; chan < 4; ++chan) { diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c b/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c index da495a3afaa..25afd272bee 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c @@ -67,6 +67,13 @@ struct rc_opcode_info rc_opcodes[MAX_RC_OPCODE] = { .IsComponentwise = 1 }, { + .Opcode = RC_OPCODE_CLAMP, + .Name = "CLAMP", + .NumSrcRegs = 3, + .HasDstReg = 1, + .IsComponentwise = 1 + }, + { .Opcode = RC_OPCODE_CMP, .Name = "CMP", .NumSrcRegs = 3, @@ -453,6 +460,7 @@ void rc_compute_sources_for_writemask( srcmasks[1] |= RC_MASK_XY; break; case RC_OPCODE_DP3: + case RC_OPCODE_XPD: srcmasks[0] |= RC_MASK_XYZ; srcmasks[1] |= RC_MASK_XYZ; break; @@ -460,6 +468,10 @@ void rc_compute_sources_for_writemask( srcmasks[0] |= RC_MASK_XYZW; srcmasks[1] |= RC_MASK_XYZW; break; + case RC_OPCODE_DPH: + srcmasks[0] |= RC_MASK_XYZ; + srcmasks[1] |= RC_MASK_XYZW; + break; case RC_OPCODE_TXB: case RC_OPCODE_TXP: srcmasks[0] |= RC_MASK_W; diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.h b/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.h index d3f639c8701..7e666101276 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_opcodes.h @@ -50,6 +50,9 @@ typedef enum { /** vec4 instruction: dst.c = ceil(src0.c) */ RC_OPCODE_CEIL, + /** vec4 instruction: dst.c = clamp(src0.c, src1.c, src2.c) */ + RC_OPCODE_CLAMP, + /** vec4 instruction: dst.c = src0.c < 0.0 ? src1.c : src2.c */ RC_OPCODE_CMP, diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c b/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c index 15b9c5e7dc3..44f4c0fbdc7 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c @@ -54,12 +54,7 @@ static struct rc_src_register chain_srcregs(struct rc_src_register outer, struct combine.Negate = outer.Negate; } else { combine.Abs = inner.Abs; - combine.Negate = 0; - for(unsigned int chan = 0; chan < 4; ++chan) { - unsigned int swz = GET_SWZ(outer.Swizzle, chan); - if (swz < 4) - combine.Negate |= GET_BIT(inner.Negate, swz) << chan; - } + combine.Negate = swizzle_mask(outer.Swizzle, inner.Negate); combine.Negate ^= outer.Negate; } combine.Swizzle = combine_swizzles(inner.Swizzle, outer.Swizzle); @@ -71,12 +66,13 @@ static void copy_propagate_scan_read(void * data, struct rc_instruction * inst, { rc_register_file file = src->File; struct rc_reader_data * reader_data = data; - const struct rc_opcode_info * info = rc_get_opcode_info(inst->U.I.Opcode); - /* It is possible to do copy propigation in this situation, - * just not right now, see peephole_add_presub_inv() */ - if (reader_data->Writer->U.I.PreSub.Opcode != RC_PRESUB_NONE && - (info->NumSrcRegs > 2 || info->HasTexture)) { + if(!rc_inst_can_use_presub(inst, + reader_data->Writer->U.I.PreSub.Opcode, + rc_swizzle_to_writemask(src->Swizzle), + *src, + reader_data->Writer->U.I.PreSub.SrcReg[0], + reader_data->Writer->U.I.PreSub.SrcReg[1])) { reader_data->Abort = 1; return; } @@ -112,11 +108,11 @@ static void src_clobbered_reads_cb( && src->Index == sc_data->Index && (rc_swizzle_to_writemask(src->Swizzle) & sc_data->Mask)) { - sc_data->ReaderData->AbortOnRead = 1; + sc_data->ReaderData->AbortOnRead = RC_MASK_XYZW; } if (src->RelAddr && sc_data->File == RC_FILE_ADDRESS) { - sc_data->ReaderData->AbortOnRead = 1; + sc_data->ReaderData->AbortOnRead = RC_MASK_XYZW; } } @@ -149,8 +145,9 @@ static void copy_propagate(struct radeon_compiler * c, struct rc_instruction * i return; /* Get a list of all the readers of this MOV instruction. */ - rc_get_readers_normal(c, inst_mov, &reader_data, - copy_propagate_scan_read, is_src_clobbered_scan_write); + rc_get_readers(c, inst_mov, &reader_data, + copy_propagate_scan_read, NULL, + is_src_clobbered_scan_write); if (reader_data.Abort || reader_data.ReaderCount == 0) return; @@ -158,7 +155,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].Src = chain_srcregs(*reader_data.Readers[i].Src, inst_mov->U.I.SrcReg[0]); + *reader_data.Readers[i].U.Src = chain_srcregs(*reader_data.Readers[i].U.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; @@ -423,24 +420,13 @@ static void presub_scan_read( struct rc_src_register * src) { struct rc_reader_data * reader_data = data; - const struct rc_opcode_info * info = - rc_get_opcode_info(inst->U.I.Opcode); - /* XXX: There are some situations where instructions - * with more than 2 src registers can use the - * presubtract select, but to keep things simple we - * will disable presubtract on these instructions for - * now. */ - if (info->NumSrcRegs > 2 || info->HasTexture) { - reader_data->Abort = 1; - return; - } + rc_presubtract_op * presub_opcode = reader_data->CbData; - /* We can't use more than one presubtract value in an - * instruction, unless the two prsubtract operations - * are the same and read from the same registers. - * XXX For now we will limit instructions to only one presubtract - * value.*/ - if (inst->U.I.PreSub.Opcode != RC_PRESUB_NONE) { + if (!rc_inst_can_use_presub(inst, *presub_opcode, + reader_data->Writer->U.I.DstReg.WriteMask, + *src, + reader_data->Writer->U.I.SrcReg[0], + reader_data->Writer->U.I.SrcReg[1])) { reader_data->Abort = 1; return; } @@ -454,8 +440,10 @@ static int presub_helper( { struct rc_reader_data reader_data; unsigned int i; + rc_presubtract_op cb_op = presub_opcode; - rc_get_readers_normal(c, inst_add, &reader_data, presub_scan_read, + reader_data.CbData = &cb_op; + rc_get_readers(c, inst_add, &reader_data, presub_scan_read, NULL, is_src_clobbered_scan_write); if (reader_data.Abort || reader_data.ReaderCount == 0) @@ -468,7 +456,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.Src) + if (&reader.Inst->U.I.SrcReg[src_index] == reader.U.Src) presub_replace(inst_add, reader.Inst, src_index); } } @@ -505,7 +493,9 @@ static void presub_replace_add( inst_reader->U.I.SrcReg[src_index].Index = presub_opcode; } -static int is_presub_candidate(struct rc_instruction * inst) +static int is_presub_candidate( + struct radeon_compiler * c, + struct rc_instruction * inst) { const struct rc_opcode_info * info = rc_get_opcode_info(inst->U.I.Opcode); unsigned int i; @@ -514,7 +504,12 @@ static int is_presub_candidate(struct rc_instruction * inst) return 0; for(i = 0; i < info->NumSrcRegs; i++) { - if (src_reads_dst_mask(inst->U.I.SrcReg[i], inst->U.I.DstReg)) + struct rc_src_register src = inst->U.I.SrcReg[i]; + if (src_reads_dst_mask(src, inst->U.I.DstReg)) + return 0; + + src.File = RC_FILE_PRESUB; + if (!c->SwizzleCaps->IsNative(inst->U.I.Opcode, src)) return 0; } return 1; @@ -528,7 +523,7 @@ static int peephole_add_presub_add( struct rc_src_register * src1 = NULL; unsigned int i; - if (!is_presub_candidate(inst_add)) + if (!is_presub_candidate(c, inst_add)) return 0; if (inst_add->U.I.SrcReg[0].Swizzle != inst_add->U.I.SrcReg[1].Swizzle) @@ -592,7 +587,7 @@ static int peephole_add_presub_inv( { unsigned int i, swz, mask; - if (!is_presub_candidate(inst_add)) + if (!is_presub_candidate(c, inst_add)) return 0; mask = inst_add->U.I.DstReg.WriteMask; 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 91524f5ec68..d53181e1f75 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_pair_regalloc.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_pair_regalloc.c @@ -66,10 +66,13 @@ struct regalloc_state { struct hardware_register * HwTemporary; unsigned int NumHwTemporaries; /** - * If an instruction is inside of a loop, end_loop will be the - * IP of the ENDLOOP instruction, otherwise end_loop will be 0 + * 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 end_loop; + int EndLoop; + int BeginLoop; }; static void print_live_intervals(struct live_intervals * src) @@ -180,11 +183,13 @@ static void scan_callback(void * data, struct rc_instruction * inst, 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->end_loop) - reg->Live.End = s->end_loop; + } else if (s->EndLoop >= 0) + reg->Live.End = s->EndLoop; else if (inst->IP > reg->Live.End) reg->Live.End = inst->IP; } @@ -195,6 +200,8 @@ static void compute_live_intervals(struct radeon_compiler *c, 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)); @@ -207,10 +214,12 @@ static void compute_live_intervals(struct radeon_compiler *c, inst = inst->Next) { /* For all instructions inside of a loop, the ENDLOOP - * instruction is used as the end of the live interval. */ - if (inst->U.I.Opcode == RC_OPCODE_BGNLOOP && !s->end_loop) { + * 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) { @@ -219,15 +228,17 @@ static void compute_live_intervals(struct radeon_compiler *c, } else if (tmp->U.I.Opcode == RC_OPCODE_ENDLOOP) { if(!--loops) { - s->end_loop = tmp->IP; + s->EndLoop = tmp->IP; break; } } } } - if (inst->IP == s->end_loop) - s->end_loop = 0; + if (inst->IP == s->EndLoop) { + s->EndLoop = -1; + s->BeginLoop = -1; + } rc_for_all_reads_mask(inst, scan_callback, s); rc_for_all_writes_mask(inst, scan_callback, 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 553e9dcf7c1..9beb5d63579 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_pair_schedule.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_pair_schedule.c @@ -30,6 +30,7 @@ #include <stdio.h> #include "radeon_compiler.h" +#include "radeon_compiler_util.h" #include "radeon_dataflow.h" @@ -54,6 +55,11 @@ struct schedule_instruction { * this instruction can be scheduled. */ unsigned int NumDependencies:5; + + /** List of all readers (see rc_get_readers() for the definition of + * "all readers"), even those outside the basic block this instruction + * lives in. */ + struct rc_reader_data GlobalReaders; }; @@ -94,6 +100,16 @@ struct register_state { struct reg_value * Values[4]; }; +struct remap_reg { + struct rc_instruciont * Inst; + unsigned int OldIndex:(RC_REGISTER_INDEX_BITS+1); + unsigned int OldSwizzle:3; + unsigned int NewIndex:(RC_REGISTER_INDEX_BITS+1); + unsigned int NewSwizzle:3; + unsigned int OnlyTexReads:1; + struct remap_reg * Next; +}; + struct schedule_state { struct radeon_compiler * C; struct schedule_instruction * Current; @@ -126,15 +142,6 @@ static struct reg_value ** get_reg_valuep(struct schedule_state * s, return &s->Temporary[index].Values[chan]; } -static struct reg_value * get_reg_value(struct schedule_state * s, - rc_register_file file, unsigned int index, unsigned int chan) -{ - struct reg_value ** pv = get_reg_valuep(s, file, index, chan); - if (!pv) - return 0; - return *pv; -} - static void add_inst_to_list(struct schedule_instruction ** list, struct schedule_instruction * inst) { inst->NextReady = *list; @@ -295,12 +302,12 @@ static int merge_presub_sources( assert(dst_full->Alpha.Opcode == RC_OPCODE_NOP); switch(type) { - case RC_PAIR_SOURCE_RGB: + case RC_SOURCE_RGB: is_rgb = 1; is_alpha = 0; dst_sub = &dst_full->RGB; break; - case RC_PAIR_SOURCE_ALPHA: + case RC_SOURCE_ALPHA: is_rgb = 0; is_alpha = 1; dst_sub = &dst_full->Alpha; @@ -341,6 +348,8 @@ static int merge_presub_sources( continue; free_source = rc_pair_alloc_source(dst_full, is_rgb, is_alpha, temp.File, temp.Index); + if (free_source < 0) + return 0; one_way = 1; } else { dst_sub->Src[free_source] = temp; @@ -356,11 +365,11 @@ static int merge_presub_sources( for(arg = 0; arg < info->NumSrcRegs; arg++) { /*If this arg does not read from an rgb source, * do nothing. */ - if (!(rc_source_type_that_arg_reads( - dst_full->RGB.Arg[arg].Source, - dst_full->RGB.Arg[arg].Swizzle) & type)) { + if (!(rc_source_type_swz(dst_full->RGB.Arg[arg].Swizzle, + 3) & type)) { continue; } + if (dst_full->RGB.Arg[arg].Source == srcp_src) dst_full->RGB.Arg[arg].Source = free_source; /* We need to do this just in case register @@ -392,13 +401,13 @@ static int destructive_merge_instructions( /* Merge the rgb presubtract registers. */ if (alpha->RGB.Src[RC_PAIR_PRESUB_SRC].Used) { - if (!merge_presub_sources(rgb, alpha->RGB, RC_PAIR_SOURCE_RGB)) { + if (!merge_presub_sources(rgb, alpha->RGB, RC_SOURCE_RGB)) { return 0; } } /* Merge the alpha presubtract registers */ if (alpha->Alpha.Src[RC_PAIR_PRESUB_SRC].Used) { - if(!merge_presub_sources(rgb, alpha->Alpha, RC_PAIR_SOURCE_ALPHA)){ + if(!merge_presub_sources(rgb, alpha->Alpha, RC_SOURCE_ALPHA)){ return 0; } } @@ -525,6 +534,222 @@ static void presub_nop(struct rc_instruction * emitted) { } } } + +static void rgb_to_alpha_remap ( + struct rc_instruction * inst, + struct rc_pair_instruction_arg * arg, + rc_register_file old_file, + rc_swizzle old_swz, + unsigned int new_index) +{ + int new_src_index; + unsigned int i; + struct rc_pair_instruction_source * old_src = + rc_pair_get_src(&inst->U.P, arg); + if (!old_src) { + return; + } + + for (i = 0; i < 3; i++) { + if (get_swz(arg->Swizzle, i) == old_swz) { + SET_SWZ(arg->Swizzle, i, RC_SWIZZLE_W); + } + } + memset(old_src, 0, sizeof(struct rc_pair_instruction_source)); + new_src_index = rc_pair_alloc_source(&inst->U.P, 0, 1, + old_file, new_index); + /* This conversion is not possible, we must have made a mistake in + * is_rgb_to_alpha_possible. */ + if (new_src_index < 0) { + assert(0); + return; + } + + arg->Source = new_src_index; +} + +static int can_remap(unsigned int opcode) +{ + switch(opcode) { + case RC_OPCODE_DDX: + case RC_OPCODE_DDY: + return 0; + default: + return 1; + } +} + +static int can_convert_opcode_to_alpha(unsigned int opcode) +{ + switch(opcode) { + case RC_OPCODE_DDX: + case RC_OPCODE_DDY: + case RC_OPCODE_DP2: + case RC_OPCODE_DP3: + case RC_OPCODE_DP4: + case RC_OPCODE_DPH: + return 0; + default: + return 1; + } +} + +static void is_rgb_to_alpha_possible( + void * userdata, + struct rc_instruction * inst, + struct rc_pair_instruction_arg * arg, + struct rc_pair_instruction_source * src) +{ + unsigned int chan_count = 0; + unsigned int alpha_sources = 0; + unsigned int i; + struct rc_reader_data * reader_data = userdata; + + if (!can_remap(inst->U.P.RGB.Opcode) + || !can_remap(inst->U.P.Alpha.Opcode)) { + reader_data->Abort = 1; + return; + } + + if (!src) + return; + + /* XXX There are some cases where we can still do the conversion if + * a reader reads from a presubtract source, but for now we'll prevent + * it. */ + if (arg->Source == RC_PAIR_PRESUB_SRC) { + reader_data->Abort = 1; + return; + } + + /* Make sure the source only reads from one component. + * XXX We should allow the source to read from the same component twice. + * XXX If the index we will be converting to is the same as the + * current index, then it is OK to read from more than one component. + */ + for (i = 0; i < 3; i++) { + rc_swizzle swz = get_swz(arg->Swizzle, i); + switch(swz) { + case RC_SWIZZLE_X: + case RC_SWIZZLE_Y: + case RC_SWIZZLE_Z: + case RC_SWIZZLE_W: + chan_count++; + break; + default: + break; + } + } + if (chan_count > 1) { + reader_data->Abort = 1; + return; + } + + /* Make sure there are enough alpha sources. + * XXX If we know what register all the readers are going + * to be remapped to, then in some situations we can still do + * the subsitution, even if all 3 alpha sources are being used.*/ + for (i = 0; i < 3; i++) { + if (inst->U.P.Alpha.Src[i].Used) { + alpha_sources++; + } + } + if (alpha_sources > 2) { + reader_data->Abort = 1; + return; + } +} + +static int convert_rgb_to_alpha( + struct schedule_state * s, + struct schedule_instruction * sched_inst) +{ + struct rc_pair_instruction * pair_inst = &sched_inst->Instruction->U.P; + unsigned int old_mask = pair_inst->RGB.WriteMask; + unsigned int old_swz = rc_mask_to_swizzle(old_mask); + const struct rc_opcode_info * info = + rc_get_opcode_info(pair_inst->RGB.Opcode); + int new_index = -1; + unsigned int i; + + if (sched_inst->GlobalReaders.Abort) + return 0; + + if (!pair_inst->RGB.WriteMask) + return 0; + + if (!can_convert_opcode_to_alpha(pair_inst->RGB.Opcode) + || !can_convert_opcode_to_alpha(pair_inst->Alpha.Opcode)) { + return 0; + } + + assert(sched_inst->NumWriteValues == 1); + + if (!sched_inst->WriteValues[0]) { + assert(0); + return 0; + } + + /* We start at the old index, because if we can reuse the same + * register and just change the swizzle then it is more likely we + * will be able to convert all the readers. */ + for (i = pair_inst->RGB.DestIndex; i < RC_REGISTER_MAX_INDEX; i++) { + struct reg_value ** new_regvalp = get_reg_valuep( + s, RC_FILE_TEMPORARY, i, 3); + if (!*new_regvalp) { + struct reg_value ** old_regvalp = + get_reg_valuep(s, + RC_FILE_TEMPORARY, + pair_inst->RGB.DestIndex, + rc_mask_to_swizzle(old_mask)); + new_index = i; + *new_regvalp = *old_regvalp; + *old_regvalp = NULL; + new_regvalp = get_reg_valuep(s, RC_FILE_TEMPORARY, i, 3); + break; + } + } + if (new_index < 0) { + return 0; + } + + pair_inst->Alpha.Opcode = pair_inst->RGB.Opcode; + pair_inst->Alpha.DestIndex = new_index; + pair_inst->Alpha.WriteMask = 1; + pair_inst->Alpha.Target = pair_inst->RGB.Target; + pair_inst->Alpha.OutputWriteMask = pair_inst->RGB.OutputWriteMask; + pair_inst->Alpha.DepthWriteMask = pair_inst->RGB.DepthWriteMask; + pair_inst->Alpha.Saturate = pair_inst->RGB.Saturate; + memcpy(pair_inst->Alpha.Arg, pair_inst->RGB.Arg, + sizeof(pair_inst->Alpha.Arg)); + /* Move the swizzles into the first chan */ + for (i = 0; i < info->NumSrcRegs; i++) { + unsigned int j; + for (j = 0; j < 3; j++) { + unsigned int swz = get_swz(pair_inst->Alpha.Arg[i].Swizzle, j); + if (swz != RC_SWIZZLE_UNUSED) { + pair_inst->Alpha.Arg[i].Swizzle = swz; + break; + } + } + } + pair_inst->RGB.Opcode = RC_OPCODE_NOP; + pair_inst->RGB.DestIndex = 0; + pair_inst->RGB.WriteMask = 0; + pair_inst->RGB.Target = 0; + pair_inst->RGB.OutputWriteMask = 0; + pair_inst->RGB.DepthWriteMask = 0; + pair_inst->RGB.Saturate = 0; + memset(pair_inst->RGB.Arg, 0, sizeof(pair_inst->RGB.Arg)); + + 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, + RC_FILE_TEMPORARY, old_swz, new_index); + } + return 1; +} + /** * Find a good ALU instruction or pair of ALU instruction and emit it. * @@ -536,24 +761,16 @@ static void emit_one_alu(struct schedule_state *s, struct rc_instruction * befor { struct schedule_instruction * sinst; - if (s->ReadyFullALU || !(s->ReadyRGB && s->ReadyAlpha)) { - if (s->ReadyFullALU) { - sinst = s->ReadyFullALU; - s->ReadyFullALU = s->ReadyFullALU->NextReady; - } else if (s->ReadyRGB) { - sinst = s->ReadyRGB; - s->ReadyRGB = s->ReadyRGB->NextReady; - } else { - sinst = s->ReadyAlpha; - s->ReadyAlpha = s->ReadyAlpha->NextReady; - } - + if (s->ReadyFullALU) { + sinst = s->ReadyFullALU; + s->ReadyFullALU = s->ReadyFullALU->NextReady; rc_insert_instruction(before->Prev, sinst->Instruction); commit_alu_instruction(s, sinst); } else { struct schedule_instruction **prgb; struct schedule_instruction **palpha; - + struct schedule_instruction *prev; +pair: /* Some pairings might fail because they require too * many source slots; try all possible pairings if necessary */ for(prgb = &s->ReadyRGB; *prgb; prgb = &(*prgb)->NextReady) { @@ -572,10 +789,43 @@ static void emit_one_alu(struct schedule_state *s, struct rc_instruction * befor goto success; } } - - /* No success in pairing; just take the first RGB instruction */ - sinst = s->ReadyRGB; - s->ReadyRGB = s->ReadyRGB->NextReady; + prev = NULL; + /* No success in pairing, now try to convert one of the RGB + * instructions to an Alpha so we can pair it with another RGB. + */ + if (s->ReadyRGB && s->ReadyRGB->NextReady) { + for(prgb = &s->ReadyRGB; *prgb; prgb = &(*prgb)->NextReady) { + if ((*prgb)->NumWriteValues == 1) { + struct schedule_instruction * prgb_next; + if (!convert_rgb_to_alpha(s, *prgb)) + goto cont_loop; + prgb_next = (*prgb)->NextReady; + /* Add instruction to the Alpha ready list. */ + (*prgb)->NextReady = s->ReadyAlpha; + s->ReadyAlpha = *prgb; + /* Remove instruction from the RGB ready list.*/ + if (prev) + prev->NextReady = prgb_next; + else + s->ReadyRGB = prgb_next; + goto pair; + } +cont_loop: + prev = *prgb; + } + } + /* Still no success in pairing, just take the first RGB + * or alpha instruction. */ + if (s->ReadyRGB) { + sinst = s->ReadyRGB; + s->ReadyRGB = s->ReadyRGB->NextReady; + } else if (s->ReadyAlpha) { + sinst = s->ReadyAlpha; + s->ReadyAlpha = s->ReadyAlpha->NextReady; + } else { + /*XXX Something real bad has happened. */ + assert(0); + } rc_insert_instruction(before->Prev, sinst->Instruction); commit_alu_instruction(s, sinst); @@ -591,13 +841,13 @@ static void scan_read(void * data, struct rc_instruction * inst, rc_register_file file, unsigned int index, unsigned int chan) { struct schedule_state * s = data; - struct reg_value * v = get_reg_value(s, file, index, chan); + struct reg_value ** v = get_reg_valuep(s, file, index, chan); struct reg_value_reader * reader; if (!v) return; - if (v->Writer == s->Current) { + if (*v && (*v)->Writer == s->Current) { /* The instruction reads and writes to a register component. * In this case, we only want to increment dependencies by one. */ @@ -608,16 +858,28 @@ static void scan_read(void * data, struct rc_instruction * inst, reader = memory_pool_malloc(&s->C->Pool, sizeof(*reader)); reader->Reader = s->Current; - reader->Next = v->Readers; - v->Readers = reader; - v->NumReaders++; - - s->Current->NumDependencies++; + if (!*v) { + /* In this situation, the instruction reads from a register + * that hasn't been written to or read from in the current + * block. */ + *v = memory_pool_malloc(&s->C->Pool, sizeof(struct reg_value)); + memset(*v, 0, sizeof(struct reg_value)); + (*v)->Readers = reader; + } else { + reader->Next = (*v)->Readers; + (*v)->Readers = reader; + /* Only update the current instruction's dependencies if the + * register it reads from has been written to in this block. */ + if ((*v)->Writer) { + s->Current->NumDependencies++; + } + } + (*v)->NumReaders++; if (s->Current->NumReadValues >= 12) { rc_error(s->C, "%s: NumReadValues overflow\n", __FUNCTION__); } else { - s->Current->ReadValues[s->Current->NumReadValues++] = v; + s->Current->ReadValues[s->Current->NumReadValues++] = *v; } } @@ -652,6 +914,16 @@ static void scan_write(void * data, struct rc_instruction * inst, } } +static void is_rgb_to_alpha_possible_normal( + void * userdata, + struct rc_instruction * inst, + struct rc_src_register * src) +{ + struct rc_reader_data * reader_data = userdata; + reader_data->Abort = 1; + +} + static void schedule_block(struct r300_fragment_program_compiler * c, struct rc_instruction * begin, struct rc_instruction * end) { @@ -683,6 +955,11 @@ static void schedule_block(struct r300_fragment_program_compiler * c, if (!s.Current->NumDependencies) instruction_ready(&s, s.Current); + + /* Get global readers for possible RGB->Alpha conversion. */ + rc_get_readers(s.C, inst, &s.Current->GlobalReaders, + is_rgb_to_alpha_possible_normal, + is_rgb_to_alpha_possible, NULL); } /* Temporarily unlink all instructions */ @@ -711,8 +988,13 @@ static int is_controlflow(struct rc_instruction * inst) void rc_pair_schedule(struct radeon_compiler *cc, void *user) { + struct schedule_state s; + struct r300_fragment_program_compiler *c = (struct r300_fragment_program_compiler*)cc; struct rc_instruction * inst = c->Base.Program.Instructions.Next; + + memset(&s, 0, sizeof(s)); + s.C = &c->Base; while(inst != &c->Base.Program.Instructions) { struct rc_instruction * first; diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c b/src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c index c549be52183..fc05366f50e 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c @@ -280,9 +280,12 @@ static void set_pair_instruction(struct r300_fragment_program_compiler *c, pair->RGB.DestIndex = inst->DstReg.Index; pair->RGB.WriteMask |= inst->DstReg.WriteMask & RC_MASK_XYZ; } + if (needalpha) { - pair->Alpha.DestIndex = inst->DstReg.Index; pair->Alpha.WriteMask |= GET_BIT(inst->DstReg.WriteMask, 3); + if (pair->Alpha.WriteMask) { + pair->Alpha.DestIndex = inst->DstReg.Index; + } } } diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program.c b/src/mesa/drivers/dri/r300/compiler/radeon_program.c index 24b685fbeb4..fe5756ebc45 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program.c @@ -30,6 +30,7 @@ #include <stdio.h> #include "radeon_compiler.h" +#include "radeon_dataflow.h" /** @@ -70,58 +71,98 @@ void rc_local_transform( } } +struct get_used_temporaries_data { + unsigned char * Used; + unsigned int UsedLength; +}; + +static void get_used_temporaries_cb( + void * userdata, + struct rc_instruction * inst, + rc_register_file file, + unsigned int index, + unsigned int mask) +{ + struct get_used_temporaries_data * d = userdata; + + if (file != RC_FILE_TEMPORARY) + return; + + if (index >= d->UsedLength) + return; + + d->Used[index] |= mask; +} + /** - * Left multiplication of a register with a swizzle + * This function fills in the parameter 'used' with a writemask that + * represent which components of each temporary register are used by the + * program. This is meant to be combined with rc_find_free_temporary_list as a + * more efficient version of rc_find_free_temporary. + * @param used The function does not initialize this parameter. */ -struct rc_src_register lmul_swizzle(unsigned int swizzle, struct rc_src_register srcreg) +void rc_get_used_temporaries( + struct radeon_compiler * c, + unsigned char * used, + unsigned int used_length) +{ + struct rc_instruction * inst; + struct get_used_temporaries_data d; + d.Used = used; + d.UsedLength = used_length; + + for(inst = c->Program.Instructions.Next; + inst != &c->Program.Instructions; inst = inst->Next) { + + rc_for_all_reads_mask(inst, get_used_temporaries_cb, &d); + rc_for_all_writes_mask(inst, get_used_temporaries_cb, &d); + } +} + +/* Search a list of used temporaries for a free one + * \sa rc_get_used_temporaries + * @note If this functions finds a free temporary, it will mark it as used + * in the used temporary list (param 'used') + * @param used list of used temporaries + * @param used_length number of items in param 'used' + * @param mask which components must be free in the temporary index that is + * returned. + * @return -1 If there are no more free temporaries, otherwise the index of + * a temporary register where the components specified in param 'mask' are + * not being used. + */ +int rc_find_free_temporary_list( + struct radeon_compiler * c, + unsigned char * used, + unsigned int used_length, + unsigned int mask) { - struct rc_src_register tmp = srcreg; int i; - tmp.Swizzle = 0; - tmp.Negate = 0; - for(i = 0; i < 4; ++i) { - rc_swizzle swz = GET_SWZ(swizzle, i); - if (swz < 4) { - tmp.Swizzle |= GET_SWZ(srcreg.Swizzle, swz) << (i*3); - tmp.Negate |= GET_BIT(srcreg.Negate, swz) << i; - } else { - tmp.Swizzle |= swz << (i*3); + for(i = 0; i < used_length; i++) { + if ((~used[i] & mask) == mask) { + used[i] |= mask; + return i; } } - return tmp; + return -1; } unsigned int rc_find_free_temporary(struct radeon_compiler * c) { - char used[RC_REGISTER_MAX_INDEX]; - unsigned int i; - struct rc_instruction * rcinst; + unsigned char used[RC_REGISTER_MAX_INDEX]; + int free; memset(used, 0, sizeof(used)); - for (rcinst = c->Program.Instructions.Next; rcinst != &c->Program.Instructions; rcinst = rcinst->Next) { - const struct rc_sub_instruction *inst = &rcinst->U.I; - const struct rc_opcode_info *opcode = rc_get_opcode_info(inst->Opcode); - unsigned int k; - - for (k = 0; k < opcode->NumSrcRegs; k++) { - if (inst->SrcReg[k].File == RC_FILE_TEMPORARY) - used[inst->SrcReg[k].Index] = 1; - } - - if (opcode->HasDstReg) { - if (inst->DstReg.File == RC_FILE_TEMPORARY) - used[inst->DstReg.Index] = 1; - } - } + rc_get_used_temporaries(c, used, RC_REGISTER_MAX_INDEX); - for (i = 0; i < RC_REGISTER_MAX_INDEX; i++) { - if (!used[i]) - return i; + free = rc_find_free_temporary_list(c, used, RC_REGISTER_MAX_INDEX, + RC_MASK_XYZW); + if (free < 0) { + rc_error(c, "Ran out of temporary registers\n"); + return 0; } - - rc_error(c, "Ran out of temporary registers\n"); - return 0; + return free; } diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program.h b/src/mesa/drivers/dri/r300/compiler/radeon_program.h index f0a77d7b539..df6c94b35f9 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program.h @@ -159,47 +159,6 @@ struct rc_program { struct rc_constant_list Constants; }; -static inline rc_swizzle get_swz(unsigned int swz, rc_swizzle idx) -{ - if (idx & 0x4) - return idx; - return GET_SWZ(swz, idx); -} - -static inline unsigned int combine_swizzles4(unsigned int src, - rc_swizzle swz_x, rc_swizzle swz_y, rc_swizzle swz_z, rc_swizzle swz_w) -{ - unsigned int ret = 0; - - ret |= get_swz(src, swz_x); - ret |= get_swz(src, swz_y) << 3; - ret |= get_swz(src, swz_z) << 6; - ret |= get_swz(src, swz_w) << 9; - - return ret; -} - -static inline unsigned int combine_swizzles(unsigned int src, unsigned int swz) -{ - unsigned int ret = 0; - - ret |= get_swz(src, GET_SWZ(swz, RC_SWIZZLE_X)); - ret |= get_swz(src, GET_SWZ(swz, RC_SWIZZLE_Y)) << 3; - ret |= get_swz(src, GET_SWZ(swz, RC_SWIZZLE_Z)) << 6; - ret |= get_swz(src, GET_SWZ(swz, RC_SWIZZLE_W)) << 9; - - return ret; -} - -struct rc_src_register lmul_swizzle(unsigned int swizzle, struct rc_src_register srcreg); - -static inline void reset_srcreg(struct rc_src_register* reg) -{ - memset(reg, 0, sizeof(struct rc_src_register)); - reg->Swizzle = RC_SWIZZLE_XYZW; -} - - /** * A transformation that can be passed to \ref rc_local_transform. * @@ -222,6 +181,17 @@ void rc_local_transform( struct radeon_compiler *c, void *user); +void rc_get_used_temporaries( + struct radeon_compiler * c, + unsigned char * used, + unsigned int used_length); + +int rc_find_free_temporary_list( + struct radeon_compiler * c, + unsigned char * used, + unsigned int used_length, + unsigned int mask); + unsigned int rc_find_free_temporary(struct radeon_compiler * c); struct rc_instruction *rc_alloc_instruction(struct radeon_compiler * c); @@ -233,4 +203,5 @@ unsigned int rc_recompute_ips(struct radeon_compiler * c); void rc_print_program(const struct rc_program *prog); +rc_swizzle rc_mask_to_swizzle(unsigned int mask); #endif diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program_alu.c b/src/mesa/drivers/dri/r300/compiler/radeon_program_alu.c index 39408845d5a..c8063171b81 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program_alu.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_alu.c @@ -36,6 +36,7 @@ #include "radeon_program_alu.h" #include "radeon_compiler.h" +#include "radeon_compiler_util.h" static struct rc_instruction *emit1( @@ -84,16 +85,6 @@ static struct rc_instruction *emit3( return fpi; } -static struct rc_dst_register dstreg(int file, int index) -{ - struct rc_dst_register dst; - dst.File = file; - dst.Index = index; - dst.WriteMask = RC_MASK_XYZW; - dst.RelAddr = 0; - return dst; -} - static struct rc_dst_register dstregtmpmask(int index, int mask) { struct rc_dst_register dst = {0}; @@ -186,6 +177,38 @@ static struct rc_src_register swizzle_wwww(struct rc_src_register reg) return swizzle_smear(reg, RC_SWIZZLE_W); } +static int is_dst_safe_to_reuse(struct rc_instruction *inst) +{ + const struct rc_opcode_info *info = rc_get_opcode_info(inst->U.I.Opcode); + unsigned i; + + assert(info->HasDstReg); + + if (inst->U.I.DstReg.File != RC_FILE_TEMPORARY) + return 0; + + for (i = 0; i < info->NumSrcRegs; i++) { + if (inst->U.I.SrcReg[i].File == RC_FILE_TEMPORARY && + inst->U.I.SrcReg[i].Index == inst->U.I.DstReg.Index) + return 0; + } + + return 1; +} + +static struct rc_dst_register try_to_reuse_dst(struct radeon_compiler *c, + struct rc_instruction *inst) +{ + unsigned tmp; + + if (is_dst_safe_to_reuse(inst)) + tmp = inst->U.I.DstReg.Index; + else + tmp = rc_find_free_temporary(c); + + return dstregtmpmask(tmp, inst->U.I.DstReg.WriteMask); +} + static void transform_ABS(struct radeon_compiler* c, struct rc_instruction* inst) { @@ -209,10 +232,26 @@ static void transform_CEIL(struct radeon_compiler* c, * ceil(x) = x+frac(-x) */ - int tempreg = rc_find_free_temporary(c); - emit1(c, inst->Prev, RC_OPCODE_FRC, 0, dstreg(RC_FILE_TEMPORARY, tempreg), negate(inst->U.I.SrcReg[0])); + struct rc_dst_register dst = try_to_reuse_dst(c, inst); + emit1(c, inst->Prev, RC_OPCODE_FRC, 0, dst, negate(inst->U.I.SrcReg[0])); emit2(c, inst->Prev, RC_OPCODE_ADD, inst->U.I.SaturateMode, inst->U.I.DstReg, - inst->U.I.SrcReg[0], srcreg(RC_FILE_TEMPORARY, tempreg)); + inst->U.I.SrcReg[0], srcreg(RC_FILE_TEMPORARY, dst.Index)); + rc_remove_instruction(inst); +} + +static void transform_CLAMP(struct radeon_compiler *c, + struct rc_instruction *inst) +{ + /* CLAMP dst, src, min, max + * into: + * MIN tmp, src, max + * MAX dst, tmp, min + */ + struct rc_dst_register dst = try_to_reuse_dst(c, inst); + emit2(c, inst->Prev, RC_OPCODE_MIN, 0, dst, + inst->U.I.SrcReg[0], inst->U.I.SrcReg[2]); + emit2(c, inst->Prev, RC_OPCODE_MAX, inst->U.I.SaturateMode, inst->U.I.DstReg, + srcreg(RC_FILE_TEMPORARY, dst.Index), inst->U.I.SrcReg[1]); rc_remove_instruction(inst); } @@ -258,10 +297,10 @@ static void transform_DST(struct radeon_compiler* c, static void transform_FLR(struct radeon_compiler* c, struct rc_instruction* inst) { - int tempreg = rc_find_free_temporary(c); - emit1(c, inst->Prev, RC_OPCODE_FRC, 0, dstreg(RC_FILE_TEMPORARY, tempreg), inst->U.I.SrcReg[0]); + struct rc_dst_register dst = try_to_reuse_dst(c, inst); + emit1(c, inst->Prev, RC_OPCODE_FRC, 0, dst, inst->U.I.SrcReg[0]); emit2(c, inst->Prev, RC_OPCODE_ADD, inst->U.I.SaturateMode, inst->U.I.DstReg, - inst->U.I.SrcReg[0], negate(srcreg(RC_FILE_TEMPORARY, tempreg))); + inst->U.I.SrcReg[0], negate(srcreg(RC_FILE_TEMPORARY, dst.Index))); rc_remove_instruction(inst); } @@ -351,14 +390,14 @@ static void transform_LIT(struct radeon_compiler* c, static void transform_LRP(struct radeon_compiler* c, struct rc_instruction* inst) { - int tempreg = rc_find_free_temporary(c); + struct rc_dst_register dst = try_to_reuse_dst(c, inst); emit2(c, inst->Prev, RC_OPCODE_ADD, 0, - dstreg(RC_FILE_TEMPORARY, tempreg), + dst, inst->U.I.SrcReg[1], negate(inst->U.I.SrcReg[2])); emit3(c, inst->Prev, RC_OPCODE_MAD, inst->U.I.SaturateMode, inst->U.I.DstReg, - inst->U.I.SrcReg[0], srcreg(RC_FILE_TEMPORARY, tempreg), inst->U.I.SrcReg[2]); + inst->U.I.SrcReg[0], srcreg(RC_FILE_TEMPORARY, dst.Index), inst->U.I.SrcReg[2]); rc_remove_instruction(inst); } @@ -366,9 +405,8 @@ static void transform_LRP(struct radeon_compiler* c, static void transform_POW(struct radeon_compiler* c, struct rc_instruction* inst) { - int tempreg = rc_find_free_temporary(c); - struct rc_dst_register tempdst = dstreg(RC_FILE_TEMPORARY, tempreg); - struct rc_src_register tempsrc = srcreg(RC_FILE_TEMPORARY, tempreg); + struct rc_dst_register tempdst = try_to_reuse_dst(c, inst); + struct rc_src_register tempsrc = srcreg(RC_FILE_TEMPORARY, tempdst.Index); tempdst.WriteMask = RC_MASK_W; tempsrc.Swizzle = RC_SWIZZLE_WWWW; @@ -388,11 +426,11 @@ static void transform_RSQ(struct radeon_compiler* c, static void transform_SEQ(struct radeon_compiler* c, struct rc_instruction* inst) { - int tempreg = rc_find_free_temporary(c); + struct rc_dst_register dst = try_to_reuse_dst(c, inst); - emit2(c, inst->Prev, RC_OPCODE_ADD, 0, dstreg(RC_FILE_TEMPORARY, tempreg), inst->U.I.SrcReg[0], negate(inst->U.I.SrcReg[1])); + emit2(c, inst->Prev, RC_OPCODE_ADD, 0, dst, inst->U.I.SrcReg[0], negate(inst->U.I.SrcReg[1])); emit3(c, inst->Prev, RC_OPCODE_CMP, inst->U.I.SaturateMode, inst->U.I.DstReg, - negate(absolute(srcreg(RC_FILE_TEMPORARY, tempreg))), builtin_zero, builtin_one); + negate(absolute(srcreg(RC_FILE_TEMPORARY, dst.Index))), builtin_zero, builtin_one); rc_remove_instruction(inst); } @@ -407,11 +445,11 @@ static void transform_SFL(struct radeon_compiler* c, static void transform_SGE(struct radeon_compiler* c, struct rc_instruction* inst) { - int tempreg = rc_find_free_temporary(c); + struct rc_dst_register dst = try_to_reuse_dst(c, inst); - emit2(c, inst->Prev, RC_OPCODE_ADD, 0, dstreg(RC_FILE_TEMPORARY, tempreg), inst->U.I.SrcReg[0], negate(inst->U.I.SrcReg[1])); + emit2(c, inst->Prev, RC_OPCODE_ADD, 0, dst, inst->U.I.SrcReg[0], negate(inst->U.I.SrcReg[1])); emit3(c, inst->Prev, RC_OPCODE_CMP, inst->U.I.SaturateMode, inst->U.I.DstReg, - srcreg(RC_FILE_TEMPORARY, tempreg), builtin_zero, builtin_one); + srcreg(RC_FILE_TEMPORARY, dst.Index), builtin_zero, builtin_one); rc_remove_instruction(inst); } @@ -419,11 +457,11 @@ static void transform_SGE(struct radeon_compiler* c, static void transform_SGT(struct radeon_compiler* c, struct rc_instruction* inst) { - int tempreg = rc_find_free_temporary(c); + struct rc_dst_register dst = try_to_reuse_dst(c, inst); - emit2(c, inst->Prev, RC_OPCODE_ADD, 0, dstreg(RC_FILE_TEMPORARY, tempreg), negate(inst->U.I.SrcReg[0]), inst->U.I.SrcReg[1]); + emit2(c, inst->Prev, RC_OPCODE_ADD, 0, dst, negate(inst->U.I.SrcReg[0]), inst->U.I.SrcReg[1]); emit3(c, inst->Prev, RC_OPCODE_CMP, inst->U.I.SaturateMode, inst->U.I.DstReg, - srcreg(RC_FILE_TEMPORARY, tempreg), builtin_one, builtin_zero); + srcreg(RC_FILE_TEMPORARY, dst.Index), builtin_one, builtin_zero); rc_remove_instruction(inst); } @@ -431,11 +469,11 @@ static void transform_SGT(struct radeon_compiler* c, static void transform_SLE(struct radeon_compiler* c, struct rc_instruction* inst) { - int tempreg = rc_find_free_temporary(c); + struct rc_dst_register dst = try_to_reuse_dst(c, inst); - emit2(c, inst->Prev, RC_OPCODE_ADD, 0, dstreg(RC_FILE_TEMPORARY, tempreg), negate(inst->U.I.SrcReg[0]), inst->U.I.SrcReg[1]); + emit2(c, inst->Prev, RC_OPCODE_ADD, 0, dst, negate(inst->U.I.SrcReg[0]), inst->U.I.SrcReg[1]); emit3(c, inst->Prev, RC_OPCODE_CMP, inst->U.I.SaturateMode, inst->U.I.DstReg, - srcreg(RC_FILE_TEMPORARY, tempreg), builtin_zero, builtin_one); + srcreg(RC_FILE_TEMPORARY, dst.Index), builtin_zero, builtin_one); rc_remove_instruction(inst); } @@ -443,11 +481,11 @@ static void transform_SLE(struct radeon_compiler* c, static void transform_SLT(struct radeon_compiler* c, struct rc_instruction* inst) { - int tempreg = rc_find_free_temporary(c); + struct rc_dst_register dst = try_to_reuse_dst(c, inst); - emit2(c, inst->Prev, RC_OPCODE_ADD, 0, dstreg(RC_FILE_TEMPORARY, tempreg), inst->U.I.SrcReg[0], negate(inst->U.I.SrcReg[1])); + emit2(c, inst->Prev, RC_OPCODE_ADD, 0, dst, inst->U.I.SrcReg[0], negate(inst->U.I.SrcReg[1])); emit3(c, inst->Prev, RC_OPCODE_CMP, inst->U.I.SaturateMode, inst->U.I.DstReg, - srcreg(RC_FILE_TEMPORARY, tempreg), builtin_one, builtin_zero); + srcreg(RC_FILE_TEMPORARY, dst.Index), builtin_one, builtin_zero); rc_remove_instruction(inst); } @@ -455,11 +493,11 @@ static void transform_SLT(struct radeon_compiler* c, static void transform_SNE(struct radeon_compiler* c, struct rc_instruction* inst) { - int tempreg = rc_find_free_temporary(c); + struct rc_dst_register dst = try_to_reuse_dst(c, inst); - emit2(c, inst->Prev, RC_OPCODE_ADD, 0, dstreg(RC_FILE_TEMPORARY, tempreg), inst->U.I.SrcReg[0], negate(inst->U.I.SrcReg[1])); + emit2(c, inst->Prev, RC_OPCODE_ADD, 0, dst, inst->U.I.SrcReg[0], negate(inst->U.I.SrcReg[1])); emit3(c, inst->Prev, RC_OPCODE_CMP, inst->U.I.SaturateMode, inst->U.I.DstReg, - negate(absolute(srcreg(RC_FILE_TEMPORARY, tempreg))), builtin_one, builtin_zero); + negate(absolute(srcreg(RC_FILE_TEMPORARY, dst.Index))), builtin_one, builtin_zero); rc_remove_instruction(inst); } @@ -473,12 +511,13 @@ static void transform_SSG(struct radeon_compiler* c, * CMP tmp1, x, 1, 0 * ADD result, tmp0, -tmp1; */ - unsigned tmp0, tmp1; + struct rc_dst_register dst0; + unsigned tmp1; /* 0 < x */ - tmp0 = rc_find_free_temporary(c); + dst0 = try_to_reuse_dst(c, inst); emit3(c, inst->Prev, RC_OPCODE_CMP, 0, - dstregtmpmask(tmp0, inst->U.I.DstReg.WriteMask), + dst0, negate(inst->U.I.SrcReg[0]), builtin_one, builtin_zero); @@ -495,7 +534,7 @@ static void transform_SSG(struct radeon_compiler* c, /* result = tmp0 - tmp1 */ emit2(c, inst->Prev, RC_OPCODE_ADD, 0, inst->U.I.DstReg, - srcreg(RC_FILE_TEMPORARY, tmp0), + srcreg(RC_FILE_TEMPORARY, dst0.Index), negate(srcreg(RC_FILE_TEMPORARY, tmp1))); rc_remove_instruction(inst); @@ -517,15 +556,15 @@ static void transform_SWZ(struct radeon_compiler* c, static void transform_XPD(struct radeon_compiler* c, struct rc_instruction* inst) { - int tempreg = rc_find_free_temporary(c); + struct rc_dst_register dst = try_to_reuse_dst(c, inst); - emit2(c, inst->Prev, RC_OPCODE_MUL, 0, dstreg(RC_FILE_TEMPORARY, tempreg), + emit2(c, inst->Prev, RC_OPCODE_MUL, 0, dst, swizzle(inst->U.I.SrcReg[0], RC_SWIZZLE_Z, RC_SWIZZLE_X, RC_SWIZZLE_Y, RC_SWIZZLE_W), swizzle(inst->U.I.SrcReg[1], RC_SWIZZLE_Y, RC_SWIZZLE_Z, RC_SWIZZLE_X, RC_SWIZZLE_W)); emit3(c, inst->Prev, RC_OPCODE_MAD, inst->U.I.SaturateMode, inst->U.I.DstReg, swizzle(inst->U.I.SrcReg[0], RC_SWIZZLE_Y, RC_SWIZZLE_Z, RC_SWIZZLE_X, RC_SWIZZLE_W), swizzle(inst->U.I.SrcReg[1], RC_SWIZZLE_Z, RC_SWIZZLE_X, RC_SWIZZLE_Y, RC_SWIZZLE_W), - negate(srcreg(RC_FILE_TEMPORARY, tempreg))); + negate(srcreg(RC_FILE_TEMPORARY, dst.Index))); rc_remove_instruction(inst); } @@ -553,6 +592,7 @@ int radeonTransformALU( switch(inst->U.I.Opcode) { case RC_OPCODE_ABS: transform_ABS(c, inst); return 1; case RC_OPCODE_CEIL: transform_CEIL(c, inst); return 1; + case RC_OPCODE_CLAMP: transform_CLAMP(c, inst); return 1; case RC_OPCODE_DP2: transform_DP2(c, inst); return 1; case RC_OPCODE_DPH: transform_DPH(c, inst); return 1; case RC_OPCODE_DST: transform_DST(c, inst); return 1; @@ -592,7 +632,7 @@ static void transform_r300_vertex_CMP(struct radeon_compiler* c, { /* There is no decent CMP available, so let's rig one up. * CMP is defined as dst = src0 < 0.0 ? src1 : src2 - * The following sequence consumes two temps and two extra slots + * The following sequence consumes zero to two temps and two extra slots * (the second temp and the second slot is consumed by transform_LRP), * but should be equivalent: * @@ -600,18 +640,18 @@ static void transform_r300_vertex_CMP(struct radeon_compiler* c, * LRP dst, tmp0, src1, src2 * * Yes, I know, I'm a mad scientist. ~ C. & M. */ - int tempreg0 = rc_find_free_temporary(c); + struct rc_dst_register dst = try_to_reuse_dst(c, inst); /* SLT tmp0, src0, 0.0 */ emit2(c, inst->Prev, RC_OPCODE_SLT, 0, - dstreg(RC_FILE_TEMPORARY, tempreg0), + dst, inst->U.I.SrcReg[0], builtin_zero); /* LRP dst, tmp0, src1, src2 */ transform_LRP(c, emit3(c, inst->Prev, RC_OPCODE_LRP, 0, inst->U.I.DstReg, - srcreg(RC_FILE_TEMPORARY, tempreg0), inst->U.I.SrcReg[1], inst->U.I.SrcReg[2])); + srcreg(RC_FILE_TEMPORARY, dst.Index), inst->U.I.SrcReg[1], inst->U.I.SrcReg[2])); rc_remove_instruction(inst); } @@ -642,24 +682,25 @@ static void transform_r300_vertex_DP3(struct radeon_compiler* c, static void transform_r300_vertex_fix_LIT(struct radeon_compiler* c, struct rc_instruction* inst) { - int tempreg = rc_find_free_temporary(c); + struct rc_dst_register dst = try_to_reuse_dst(c, inst); unsigned constant_swizzle; int constant = rc_constants_add_immediate_scalar(&c->Program.Constants, 0.0000000000000000001, &constant_swizzle); /* MOV dst, src */ + dst.WriteMask = RC_MASK_XYZW; emit1(c, inst->Prev, RC_OPCODE_MOV, 0, - dstreg(RC_FILE_TEMPORARY, tempreg), + dst, inst->U.I.SrcReg[0]); - /* MAX dst.z, src, 0.00...001 */ + /* MAX dst.y, src, 0.00...001 */ emit2(c, inst->Prev, RC_OPCODE_MAX, 0, - dstregtmpmask(tempreg, RC_MASK_Y), - srcreg(RC_FILE_TEMPORARY, tempreg), + dstregtmpmask(dst.Index, RC_MASK_Y), + srcreg(RC_FILE_TEMPORARY, dst.Index), srcregswz(RC_FILE_CONSTANT, constant, constant_swizzle)); - inst->U.I.SrcReg[0] = srcreg(RC_FILE_TEMPORARY, tempreg); + inst->U.I.SrcReg[0] = srcreg(RC_FILE_TEMPORARY, dst.Index); } static void transform_r300_vertex_SEQ(struct radeon_compiler *c, @@ -743,12 +784,13 @@ static void transform_r300_vertex_SSG(struct radeon_compiler* c, * SLT tmp1, x, 0; * ADD result, tmp0, -tmp1; */ - unsigned tmp0, tmp1; + struct rc_dst_register dst0 = try_to_reuse_dst(c, inst); + unsigned tmp1; /* 0 < x */ - tmp0 = rc_find_free_temporary(c); + dst0 = try_to_reuse_dst(c, inst); emit2(c, inst->Prev, RC_OPCODE_SLT, 0, - dstregtmpmask(tmp0, inst->U.I.DstReg.WriteMask), + dst0, builtin_zero, inst->U.I.SrcReg[0]); @@ -763,7 +805,7 @@ static void transform_r300_vertex_SSG(struct radeon_compiler* c, /* result = tmp0 - tmp1 */ emit2(c, inst->Prev, RC_OPCODE_ADD, 0, inst->U.I.DstReg, - srcreg(RC_FILE_TEMPORARY, tmp0), + srcreg(RC_FILE_TEMPORARY, dst0.Index), negate(srcreg(RC_FILE_TEMPORARY, tmp1))); rc_remove_instruction(inst); @@ -781,6 +823,7 @@ int r300_transform_vertex_alu( switch(inst->U.I.Opcode) { case RC_OPCODE_ABS: transform_r300_vertex_ABS(c, inst); return 1; case RC_OPCODE_CEIL: transform_CEIL(c, inst); return 1; + case RC_OPCODE_CLAMP: transform_CLAMP(c, inst); return 1; case RC_OPCODE_CMP: transform_r300_vertex_CMP(c, inst); return 1; case RC_OPCODE_DP2: transform_r300_vertex_DP2(c, inst); return 1; case RC_OPCODE_DP3: transform_r300_vertex_DP3(c, inst); return 1; 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 9dcd44c522d..45f79ece5ba 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program_constants.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_constants.h @@ -181,4 +181,9 @@ static inline int rc_presubtract_src_reg_count(rc_presubtract_op op){ return 0; } } + +#define RC_SOURCE_NONE 0x0 +#define RC_SOURCE_RGB 0x1 +#define RC_SOURCE_ALPHA 0x2 + #endif /* RADEON_PROGRAM_CONSTANTS_H */ 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 a21fe8d3df8..5905d26e521 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.c @@ -27,6 +27,9 @@ #include "radeon_program_pair.h" +#include "radeon_compiler_util.h" + +#include <stdlib.h> /** * Return the source slot where we installed the given register access, @@ -204,24 +207,37 @@ void rc_pair_foreach_source_that_rgb_reads( } } -/*return 0 for rgb, 1 for alpha -1 for error. */ - -unsigned int rc_source_type_that_arg_reads( - unsigned int source, - unsigned int swizzle) +struct rc_pair_instruction_source * rc_pair_get_src( + struct rc_pair_instruction * pair_inst, + struct rc_pair_instruction_arg * arg) { - unsigned int chan; - unsigned int swz = RC_SWIZZLE_UNUSED; - unsigned int ret = RC_PAIR_SOURCE_NONE; - - for(chan = 0; chan < 3; chan++) { - swz = GET_SWZ(swizzle, chan); - if (swz == RC_SWIZZLE_W) { - ret |= RC_PAIR_SOURCE_ALPHA; - } else if (swz == RC_SWIZZLE_X || swz == RC_SWIZZLE_Y - || swz == RC_SWIZZLE_Z) { - ret |= RC_PAIR_SOURCE_RGB; + unsigned int i, type; + unsigned int channels = 0; + + for(i = 0; i < 3; i++) { + if (arg == pair_inst->RGB.Arg + i) { + channels = 3; + break; } } - return ret; + + if (channels == 0) { + for (i = 0; i < 3; i++) { + if (arg == pair_inst->Alpha.Arg + i) { + channels = 1; + break; + } + } + } + + assert(channels > 0); + type = rc_source_type_swz(arg->Swizzle, channels); + + if (type & RC_SOURCE_RGB) { + return &pair_inst->RGB.Src[arg->Source]; + } else if (type & RC_SOURCE_ALPHA) { + return &pair_inst->Alpha.Src[arg->Source]; + } else { + return NULL; + } } 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 54d44a2098b..ccf7a0070cd 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h @@ -55,10 +55,6 @@ struct radeon_compiler; */ #define RC_PAIR_PRESUB_SRC 3 -#define RC_PAIR_SOURCE_NONE 0x0 -#define RC_PAIR_SOURCE_RGB 0x1 -#define RC_PAIR_SOURCE_ALPHA 0x2 - struct rc_pair_instruction_source { unsigned int Used:1; unsigned int File:3; @@ -115,9 +111,9 @@ void rc_pair_foreach_source_that_rgb_reads( void * data, rc_pair_foreach_src_fn cb); -unsigned int rc_source_type_that_arg_reads( - unsigned int source, - unsigned int swizzle); +struct rc_pair_instruction_source * rc_pair_get_src( + struct rc_pair_instruction * pair_inst, + struct rc_pair_instruction_arg * arg); /*@}*/ diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_program_print.c b/src/mesa/drivers/dri/r300/compiler/radeon_program_print.c index 618ab5a099b..ae13f6742f8 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program_print.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_print.c @@ -129,6 +129,7 @@ static char rc_swizzle_char(unsigned int swz) case RC_SWIZZLE_HALF: return 'H'; case RC_SWIZZLE_UNUSED: return '_'; } + fprintf(stderr, "bad swz: %u\n", swz); return '?'; } 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 530afa5e08e..f9d9f34b6ad 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c @@ -28,6 +28,8 @@ #include "radeon_program_tex.h" +#include "radeon_compiler_util.h" + /* Series of transformations to be done on textures. */ static struct rc_src_register shadow_ambient(struct r300_fragment_program_compiler *compiler, diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_remove_constants.c b/src/mesa/drivers/dri/r300/compiler/radeon_remove_constants.c index 5f67f536f61..7d76585a593 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_remove_constants.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_remove_constants.c @@ -87,8 +87,9 @@ void rc_remove_unused_constants(struct radeon_compiler *c, void *user) rc_for_all_reads_src(inst, mark_used, &d); } - /* Pass 2: If there is relative addressing, mark all externals as used. */ - if (has_rel_addr) { + /* Pass 2: If there is relative addressing or dead constant elimination + * is disabled, mark all externals as used. */ + if (has_rel_addr || !c->remove_unused_constants) { for (unsigned i = 0; i < c->Program.Constants.Count; i++) if (constants[i].Type == RC_CONSTANT_EXTERNAL) const_used[i] = 1; @@ -119,7 +120,7 @@ void rc_remove_unused_constants(struct radeon_compiler *c, void *user) /* is_identity ==> new_count == old_count * !is_identity ==> new_count < old_count */ assert( is_identity || new_count < c->Program.Constants.Count); - assert(!(has_rel_addr && are_externals_remapped)); + assert(!((has_rel_addr || !c->remove_unused_constants) && are_externals_remapped)); /* Pass 4: Redirect reads of all constants to their new locations. */ if (!is_identity) { @@ -127,7 +128,6 @@ void rc_remove_unused_constants(struct radeon_compiler *c, void *user) inst != &c->Program.Instructions; inst = inst->Next) { rc_remap_registers(inst, remap_regs, inv_remap_table); } - } /* Set the new constant count. Note that new_count may be less than 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 60e228be5bd..88165f78953 100644 --- a/src/mesa/drivers/dri/r300/compiler/radeon_rename_regs.c +++ b/src/mesa/drivers/dri/r300/compiler/radeon_rename_regs.c @@ -33,100 +33,51 @@ #include "radeon_compiler.h" #include "radeon_dataflow.h" - -struct reg_rename { - int old_index; - int new_index; - int temp_index; -}; - -static void rename_reg(void * data, struct rc_instruction * inst, - rc_register_file * file, unsigned int * index) -{ - struct reg_rename *r = data; - - if(r->old_index == *index && *file == RC_FILE_TEMPORARY) { - *index = r->new_index; - } - else if(r->new_index == *index && *file == RC_FILE_TEMPORARY) { - *index = r->temp_index; - } -} - -static void rename_all( - struct radeon_compiler *c, - struct rc_instruction * start, - unsigned int old, - unsigned int new, - unsigned int temp) -{ - struct rc_instruction * inst; - struct reg_rename r; - r.old_index = old; - r.new_index = new; - r.temp_index = temp; - for(inst = start; inst != &c->Program.Instructions; - inst = inst->Next) { - rc_remap_registers(inst, rename_reg, &r); - } -} +#include "radeon_program.h" /** * This function renames registers in an attempt to get the code close to * SSA form. After this function has completed, most of the register are only - * written to one time, with a few exceptions. For example, this block of code - * will not be modified by this function: - * Mov Temp[0].x Const[0].x - * Mov Temp[0].y Const[0].y - * Basically, destination registers will be renamed if: - * 1. There have been no previous writes to that register - * or - * 2. If the instruction is writting to the exact components (no more, no less) - * of a register that has been written to by previous instructions. + * written to one time, with a few exceptions. * * This function assumes all the instructions are still of type * RC_INSTRUCTION_NORMAL. */ void rc_rename_regs(struct radeon_compiler *c, void *user) { - unsigned int cur_index = 0; - unsigned int icount; + unsigned int i, used_length; + int new_index; struct rc_instruction * inst; - unsigned int * masks; + struct rc_reader_data reader_data; + unsigned char * used; - /* The number of instructions in the program is also the maximum - * number of temp registers that could potentially be used. */ - icount = rc_recompute_ips(c); - masks = memory_pool_malloc(&c->Pool, icount * sizeof(unsigned int)); - memset(masks, 0, icount * sizeof(unsigned int)); + used_length = 2 * rc_recompute_ips(c); + used = memory_pool_malloc(&c->Pool, sizeof(unsigned char) * used_length); + memset(used, 0, sizeof(unsigned char) * used_length); + rc_get_used_temporaries(c, used, used_length); for(inst = c->Program.Instructions.Next; inst != &c->Program.Instructions; inst = inst->Next) { - const struct rc_opcode_info * info; - unsigned int old_index, temp_index; - struct rc_dst_register * dst; - if(inst->Type != RC_INSTRUCTION_NORMAL) { - rc_error(c, "%s only works with normal instructions.", - __FUNCTION__); - return; - } - dst = &inst->U.I.DstReg; - info = rc_get_opcode_info(inst->U.I.Opcode); - if(!info->HasDstReg || dst->File != RC_FILE_TEMPORARY) { + + if (inst->U.I.DstReg.File != RC_FILE_TEMPORARY) continue; + + rc_get_readers(c, inst, &reader_data, NULL, NULL, NULL); + + if (reader_data.Abort || reader_data.ReaderCount == 0) + continue; + + new_index = rc_find_free_temporary_list(c, used, used_length, + RC_MASK_XYZW); + if (new_index < 0) { + rc_error(c, "Ran out of temporary registers\n"); + return; } - if(dst->Index >= icount || !masks[dst->Index] || - masks[dst->Index] == dst->WriteMask) { - old_index = dst->Index; - /* We need to set dst->Index here so get free temporary - * will work. */ - dst->Index = cur_index++; - temp_index = rc_find_free_temporary(c); - rename_all(c, inst->Next, old_index, - dst->Index, temp_index); + + 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; } - assert(dst->Index < icount); - masks[dst->Index] |= dst->WriteMask; } } diff --git a/src/mesa/drivers/dri/r300/r300_texstate.c b/src/mesa/drivers/dri/r300/r300_texstate.c index 0116c5d2fa4..ed9955b05d8 100644 --- a/src/mesa/drivers/dri/r300/r300_texstate.c +++ b/src/mesa/drivers/dri/r300/r300_texstate.c @@ -428,6 +428,7 @@ void r300SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_format radeonTexObjPtr t; uint32_t pitch_val; uint32_t internalFormat, type, format; + gl_format texFormat; type = GL_BGRA; format = GL_UNSIGNED_BYTE; @@ -467,9 +468,6 @@ void r300SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_format radeon_miptree_unreference(&t->mt); radeon_miptree_unreference(&rImage->mt); - _mesa_init_teximage_fields(radeon->glCtx, target, texImage, - rb->base.Width, rb->base.Height, 1, 0, rb->cpp); - texImage->RowStride = rb->pitch / rb->cpp; rImage->bo = rb->bo; radeon_bo_ref(rImage->bo); t->bo = rb->bo; @@ -481,22 +479,35 @@ void r300SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_format pitch_val = rb->pitch; switch (rb->cpp) { case 4: - if (texture_format == __DRI_TEXTURE_FORMAT_RGB) + if (texture_format == __DRI_TEXTURE_FORMAT_RGB) { + texFormat = MESA_FORMAT_RGB888; t->pp_txformat = R300_EASY_TX_FORMAT(X, Y, Z, ONE, W8Z8Y8X8); - else + } + else { + texFormat = MESA_FORMAT_ARGB8888; t->pp_txformat = R300_EASY_TX_FORMAT(X, Y, Z, W, W8Z8Y8X8); + } pitch_val /= 4; break; case 3: default: + texFormat = MESA_FORMAT_RGB888; t->pp_txformat = R300_EASY_TX_FORMAT(X, Y, Z, ONE, W8Z8Y8X8); pitch_val /= 4; break; case 2: + texFormat = MESA_FORMAT_RGB565; t->pp_txformat = R300_EASY_TX_FORMAT(X, Y, Z, ONE, Z5Y6X5); pitch_val /= 2; break; } + + _mesa_init_teximage_fields(radeon->glCtx, target, texImage, + rb->base.Width, rb->base.Height, 1, 0, + rb->cpp, texFormat); + texImage->RowStride = rb->pitch / rb->cpp; + + pitch_val--; t->pp_txsize = (((R300_TX_WIDTHMASK_MASK & ((rb->base.Width - 1) << R300_TX_WIDTHMASK_SHIFT))) | ((R300_TX_HEIGHTMASK_MASK & ((rb->base.Height - 1) << R300_TX_HEIGHTMASK_SHIFT)))); diff --git a/src/mesa/drivers/dri/r600/evergreen_chip.c b/src/mesa/drivers/dri/r600/evergreen_chip.c index 2c9e4e2b844..53dacbfdf39 100644 --- a/src/mesa/drivers/dri/r600/evergreen_chip.c +++ b/src/mesa/drivers/dri/r600/evergreen_chip.c @@ -286,7 +286,11 @@ static void evergreenSetupVTXConstants(struct gl_context * ctx, if (!paos->bo) return; - r700SyncSurf(context, paos->bo, RADEON_GEM_DOMAIN_GTT, 0, VC_ACTION_ENA_bit); + if ((context->radeon.radeonScreen->chip_family == CHIP_FAMILY_CEDAR) || + (context->radeon.radeonScreen->chip_family == CHIP_FAMILY_PALM)) + r700SyncSurf(context, paos->bo, RADEON_GEM_DOMAIN_GTT, 0, TC_ACTION_ENA_bit); + else + r700SyncSurf(context, paos->bo, RADEON_GEM_DOMAIN_GTT, 0, VC_ACTION_ENA_bit); //uSQ_VTX_CONSTANT_WORD0_0 uSQ_VTX_CONSTANT_WORD0_0 = paos->offset; diff --git a/src/mesa/drivers/dri/r600/evergreen_state.c b/src/mesa/drivers/dri/r600/evergreen_state.c index a77be183a12..076a608573c 100644 --- a/src/mesa/drivers/dri/r600/evergreen_state.c +++ b/src/mesa/drivers/dri/r600/evergreen_state.c @@ -1461,6 +1461,14 @@ static void evergreenInitSQConfig(struct gl_context * ctx) uMaxThreads = 248; uMaxStackEntries = 512; break; + case CHIP_FAMILY_PALM: + uSqNumCfInsts = 1; + bVC_ENABLE = GL_FALSE; + uMaxGPRs = 256; + uPSThreadCount = 96; + uMaxThreads = 192; + uMaxStackEntries = 256; + break; default: uSqNumCfInsts = 2; bVC_ENABLE = GL_TRUE; diff --git a/src/mesa/drivers/dri/r600/evergreen_tex.c b/src/mesa/drivers/dri/r600/evergreen_tex.c index 58420ed1239..3b5448a0e4e 100644 --- a/src/mesa/drivers/dri/r600/evergreen_tex.c +++ b/src/mesa/drivers/dri/r600/evergreen_tex.c @@ -31,9 +31,7 @@ #include "main/enums.h" #include "main/image.h" #include "main/teximage.h" -#include "main/mipmap.h" #include "main/simple_list.h" -#include "main/texstore.h" #include "main/texobj.h" #include "texmem.h" @@ -1024,15 +1022,15 @@ static GLboolean evergreen_setup_hardware_state(struct gl_context * ctx, struct SETfield(t->SQ_TEX_RESOURCE5, t->maxLod - t->minLod, LAST_LEVEL_shift, LAST_LEVEL_mask); SETfield(t->SQ_TEX_SAMPLER1, - EG_S_FIXED(CLAMP(t->base.MinLod - t->minLod, 0, 15), 6), + EG_S_FIXED(CLAMP(t->base.MinLod - t->minLod, 0, 15), 8), EG_SQ_TEX_SAMPLER_WORD1_0__MIN_LOD_shift, EG_SQ_TEX_SAMPLER_WORD1_0__MIN_LOD_mask); SETfield(t->SQ_TEX_SAMPLER1, - EG_S_FIXED(CLAMP(t->base.MaxLod - t->minLod, 0, 15), 6), + EG_S_FIXED(CLAMP(t->base.MaxLod - t->minLod, 0, 15), 8), EG_SQ_TEX_SAMPLER_WORD1_0__MAX_LOD_shift, EG_SQ_TEX_SAMPLER_WORD1_0__MAX_LOD_mask); SETfield(t->SQ_TEX_SAMPLER2, - EG_S_FIXED(CLAMP(ctx->Texture.Unit[unit].LodBias + t->base.LodBias, -16, 16), 6), + EG_S_FIXED(CLAMP(ctx->Texture.Unit[unit].LodBias + t->base.LodBias, -16, 16), 8), EG_SQ_TEX_SAMPLER_WORD2_0__LOD_BIAS_shift, EG_SQ_TEX_SAMPLER_WORD2_0__LOD_BIAS_mask); @@ -1152,6 +1150,7 @@ void evergreenSetTexBuffer(__DRIcontext *pDRICtx, GLint target, GLint glx_textur radeonTexObjPtr t; uint32_t pitch_val; uint32_t internalFormat, type, format; + gl_format texFormat; type = GL_BGRA; format = GL_UNSIGNED_BYTE; @@ -1191,10 +1190,6 @@ void evergreenSetTexBuffer(__DRIcontext *pDRICtx, GLint target, GLint glx_textur radeon_miptree_unreference(&t->mt); radeon_miptree_unreference(&rImage->mt); - _mesa_init_teximage_fields(radeon->glCtx, target, texImage, - rb->base.Width, rb->base.Height, 1, 0, rb->cpp); - texImage->RowStride = rb->pitch / rb->cpp; - rImage->bo = rb->bo; radeon_bo_ref(rImage->bo); t->bo = rb->bo; @@ -1205,6 +1200,7 @@ void evergreenSetTexBuffer(__DRIcontext *pDRICtx, GLint target, GLint glx_textur switch (rb->cpp) { case 4: if (glx_texture_format == __DRI_TEXTURE_FORMAT_RGB) { + texFormat = MESA_FORMAT_RGB888; SETfield(t->SQ_TEX_RESOURCE7, FMT_8_8_8_8, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); @@ -1218,6 +1214,7 @@ void evergreenSetTexBuffer(__DRIcontext *pDRICtx, GLint target, GLint glx_textur SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); } else { + texFormat = MESA_FORMAT_ARGB8888; SETfield(t->SQ_TEX_RESOURCE7, FMT_8_8_8_8, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); @@ -1236,6 +1233,7 @@ void evergreenSetTexBuffer(__DRIcontext *pDRICtx, GLint target, GLint glx_textur case 3: default: // FMT_8_8_8 ??? + texFormat = MESA_FORMAT_RGB888; SETfield(t->SQ_TEX_RESOURCE7, FMT_8_8_8_8, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); @@ -1251,6 +1249,7 @@ void evergreenSetTexBuffer(__DRIcontext *pDRICtx, GLint target, GLint glx_textur pitch_val /= 4; break; case 2: + texFormat = MESA_FORMAT_RGB565; SETfield(t->SQ_TEX_RESOURCE7, FMT_5_6_5, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_shift, EG_SQ_TEX_RESOURCE_WORD7_0__DATA_FORMAT_mask); @@ -1267,6 +1266,11 @@ void evergreenSetTexBuffer(__DRIcontext *pDRICtx, GLint target, GLint glx_textur break; } + _mesa_init_teximage_fields(radeon->glCtx, target, texImage, + rb->base.Width, rb->base.Height, 1, 0, + rb->cpp, texFormat); + texImage->RowStride = rb->pitch / rb->cpp; + pitch_val = (pitch_val + R700_TEXEL_PITCH_ALIGNMENT_MASK) & ~R700_TEXEL_PITCH_ALIGNMENT_MASK; diff --git a/src/mesa/drivers/dri/r600/r600_context.c b/src/mesa/drivers/dri/r600/r600_context.c index b6443bf0c53..aa1891eac32 100644 --- a/src/mesa/drivers/dri/r600/r600_context.c +++ b/src/mesa/drivers/dri/r600/r600_context.c @@ -259,7 +259,7 @@ static void r600InitConstValues(struct gl_context *ctx, radeonScreenPtr screen) R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw); if( (context->radeon.radeonScreen->chip_family >= CHIP_FAMILY_CEDAR) - &&(context->radeon.radeonScreen->chip_family <= CHIP_FAMILY_HEMLOCK) ) + &&(context->radeon.radeonScreen->chip_family <= CHIP_FAMILY_PALM) ) { r700->bShaderUseMemConstant = GL_TRUE; } @@ -285,8 +285,13 @@ static void r600InitConstValues(struct gl_context *ctx, radeonScreenPtr screen) ctx->Const.MaxTextureMaxAnisotropy = 16.0; ctx->Const.MaxTextureLodBias = 16.0; - ctx->Const.MaxTextureLevels = 13; /* hw support 14 */ - ctx->Const.MaxTextureRectSize = 4096; /* hw support 8192 */ + if (screen->chip_family >= CHIP_FAMILY_CEDAR) { + ctx->Const.MaxTextureLevels = 15; + ctx->Const.MaxTextureRectSize = 16384; + } else { + ctx->Const.MaxTextureLevels = 14; + ctx->Const.MaxTextureRectSize = 8192; + } ctx->Const.MinPointSize = 0x0001 / 8.0; ctx->Const.MinPointSizeAA = 0x0001 / 8.0; diff --git a/src/mesa/drivers/dri/r600/r600_texstate.c b/src/mesa/drivers/dri/r600/r600_texstate.c index 3869768bf0e..aafa6875774 100644 --- a/src/mesa/drivers/dri/r600/r600_texstate.c +++ b/src/mesa/drivers/dri/r600/r600_texstate.c @@ -1001,6 +1001,7 @@ void r600SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo radeonTexObjPtr t; uint32_t pitch_val; uint32_t internalFormat, type, format; + gl_format texFormat; type = GL_BGRA; format = GL_UNSIGNED_BYTE; @@ -1046,10 +1047,6 @@ void r600SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo radeon_miptree_unreference(&t->mt); radeon_miptree_unreference(&rImage->mt); - _mesa_init_teximage_fields(radeon->glCtx, target, texImage, - rb->base.Width, rb->base.Height, 1, 0, rb->cpp); - texImage->RowStride = rb->pitch / rb->cpp; - rImage->bo = rb->bo; radeon_bo_ref(rImage->bo); t->bo = rb->bo; @@ -1060,6 +1057,7 @@ void r600SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo switch (rb->cpp) { case 4: if (glx_texture_format == __DRI_TEXTURE_FORMAT_RGB) { + texFormat = MESA_FORMAT_RGB888; SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); @@ -1072,6 +1070,7 @@ void r600SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo SETfield(t->SQ_TEX_RESOURCE4, SQ_SEL_1, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_shift, SQ_TEX_RESOURCE_WORD4_0__DST_SEL_W_mask); } else { + texFormat = MESA_FORMAT_ARGB8888; SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); @@ -1089,6 +1088,7 @@ void r600SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo case 3: default: // FMT_8_8_8 ??? + texFormat = MESA_FORMAT_RGB888; SETfield(t->SQ_TEX_RESOURCE1, FMT_8_8_8_8, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); @@ -1103,6 +1103,7 @@ void r600SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo pitch_val /= 4; break; case 2: + texFormat = MESA_FORMAT_RGB565; SETfield(t->SQ_TEX_RESOURCE1, FMT_5_6_5, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_shift, SQ_TEX_RESOURCE_WORD1_0__DATA_FORMAT_mask); @@ -1118,6 +1119,11 @@ void r600SetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint glx_texture_fo break; } + _mesa_init_teximage_fields(radeon->glCtx, target, texImage, + rb->base.Width, rb->base.Height, 1, 0, + rb->cpp, texFormat); + texImage->RowStride = rb->pitch / rb->cpp; + pitch_val = (pitch_val + R700_TEXEL_PITCH_ALIGNMENT_MASK) & ~R700_TEXEL_PITCH_ALIGNMENT_MASK; diff --git a/src/mesa/drivers/dri/r600/r700_assembler.c b/src/mesa/drivers/dri/r600/r700_assembler.c index 2bf24096a0d..bee9c3bc6d3 100644 --- a/src/mesa/drivers/dri/r600/r700_assembler.c +++ b/src/mesa/drivers/dri/r600/r700_assembler.c @@ -1134,7 +1134,7 @@ GLboolean EG_assemble_vfetch_instruction(r700_AssemblerBase* pAsm, EG_VTX_WORD1__DST_SEL_W_shift, EG_VTX_WORD1__DST_SEL_W_mask); - SETfield(vfetch_instruction_ptr->m_Word1.val, 0, /* use format here, in r6/r7, format used set in const, need to use same */ + SETfield(vfetch_instruction_ptr->m_Word1.val, 1, EG_VTX_WORD1__UCF_shift, EG_VTX_WORD1__UCF_bit); SETfield(vfetch_instruction_ptr->m_Word1.val, data_format, @@ -3334,7 +3334,14 @@ GLboolean assemble_CMP(r700_AssemblerBase *pAsm) return GL_FALSE; } - pAsm->D.dst.opcode = SQ_OP3_INST_CNDGE; + if(8 == pAsm->unAsic) + { + pAsm->D.dst.opcode = EG_OP3_INST_CNDGE; + } + else + { + pAsm->D.dst.opcode = SQ_OP3_INST_CNDGE; + } pAsm->D.dst.op3 = 1; tmp = (-1); @@ -3416,8 +3423,14 @@ GLboolean assemble_TRIG(r700_AssemblerBase *pAsm, BITS opcode) checkop1(pAsm); tmp = gethelpr(pAsm); - - pAsm->D.dst.opcode = SQ_OP3_INST_MULADD; + if(8 == pAsm->unAsic) + { + pAsm->D.dst.opcode = EG_OP3_INST_MULADD; + } + else + { + pAsm->D.dst.opcode = SQ_OP3_INST_MULADD; + } pAsm->D.dst.op3 = 1; setaddrmode_PVSDST(&(pAsm->D.dst), ADDR_ABSOLUTE); @@ -3457,7 +3470,14 @@ GLboolean assemble_TRIG(r700_AssemblerBase *pAsm, BITS opcode) { return GL_FALSE; } - pAsm->D.dst.opcode = SQ_OP3_INST_MULADD; + if(8 == pAsm->unAsic) + { + pAsm->D.dst.opcode = EG_OP3_INST_MULADD; + } + else + { + pAsm->D.dst.opcode = SQ_OP3_INST_MULADD; + } pAsm->D.dst.op3 = 1; setaddrmode_PVSDST(&(pAsm->D.dst), ADDR_ABSOLUTE); @@ -4742,7 +4762,14 @@ GLboolean assemble_SCS(r700_AssemblerBase *pAsm) tmp = gethelpr(pAsm); - pAsm->D.dst.opcode = SQ_OP3_INST_MULADD; + if(8 == pAsm->unAsic) + { + pAsm->D.dst.opcode = EG_OP3_INST_MULADD; + } + else + { + pAsm->D.dst.opcode = SQ_OP3_INST_MULADD; + } pAsm->D.dst.op3 = 1; setaddrmode_PVSDST(&(pAsm->D.dst), ADDR_ABSOLUTE); @@ -4782,7 +4809,14 @@ GLboolean assemble_SCS(r700_AssemblerBase *pAsm) { return GL_FALSE; } - pAsm->D.dst.opcode = SQ_OP3_INST_MULADD; + if(8 == pAsm->unAsic) + { + pAsm->D.dst.opcode = EG_OP3_INST_MULADD; + } + else + { + pAsm->D.dst.opcode = SQ_OP3_INST_MULADD; + } pAsm->D.dst.op3 = 1; setaddrmode_PVSDST(&(pAsm->D.dst), ADDR_ABSOLUTE); @@ -5010,7 +5044,14 @@ GLboolean assemble_SSG(r700_AssemblerBase *pAsm) GLuint tmp = gethelpr(pAsm); /* tmp = (src > 0 ? 1 : src) */ - pAsm->D.dst.opcode = SQ_OP3_INST_CNDGT; + if(8 == pAsm->unAsic) + { + pAsm->D.dst.opcode = EG_OP3_INST_CNDGT; + } + else + { + pAsm->D.dst.opcode = SQ_OP3_INST_CNDGT; + } pAsm->D.dst.op3 = 1; pAsm->D.dst.rtype = DST_REG_TEMPORARY; pAsm->D.dst.reg = tmp; @@ -5033,7 +5074,14 @@ GLboolean assemble_SSG(r700_AssemblerBase *pAsm) } /* dst = (-tmp > 0 ? -1 : tmp) */ - pAsm->D.dst.opcode = SQ_OP3_INST_CNDGT; + if(8 == pAsm->unAsic) + { + pAsm->D.dst.opcode = EG_OP3_INST_CNDGT; + } + else + { + pAsm->D.dst.opcode = SQ_OP3_INST_CNDGT; + } pAsm->D.dst.op3 = 1; if( GL_FALSE == assemble_dst(pAsm) ) diff --git a/src/mesa/drivers/dri/radeon/radeon_chipset.h b/src/mesa/drivers/dri/radeon/radeon_chipset.h index 61106fbc43f..82789cec5ed 100644 --- a/src/mesa/drivers/dri/radeon/radeon_chipset.h +++ b/src/mesa/drivers/dri/radeon/radeon_chipset.h @@ -440,6 +440,11 @@ #define PCI_CHIP_HEMLOCK_689C 0x689C #define PCI_CHIP_HEMLOCK_689D 0x689D +#define PCI_CHIP_PALM_9802 0x9802 +#define PCI_CHIP_PALM_9803 0x9803 +#define PCI_CHIP_PALM_9804 0x9804 +#define PCI_CHIP_PALM_9805 0x9805 + enum { CHIP_FAMILY_R100, CHIP_FAMILY_RV100, @@ -483,6 +488,7 @@ enum { CHIP_FAMILY_JUNIPER, CHIP_FAMILY_CYPRESS, CHIP_FAMILY_HEMLOCK, + CHIP_FAMILY_PALM, CHIP_FAMILY_LAST }; diff --git a/src/mesa/drivers/dri/radeon/radeon_common_context.c b/src/mesa/drivers/dri/radeon/radeon_common_context.c index a436ec112cc..ca6ab46ca43 100644 --- a/src/mesa/drivers/dri/radeon/radeon_common_context.c +++ b/src/mesa/drivers/dri/radeon/radeon_common_context.c @@ -99,6 +99,7 @@ static const char* get_chip_family_name(int chip_family) case CHIP_FAMILY_JUNIPER: return "JUNIPER"; case CHIP_FAMILY_CYPRESS: return "CYPRESS"; case CHIP_FAMILY_HEMLOCK: return "HEMLOCK"; + case CHIP_FAMILY_PALM: return "PALM"; default: return "unknown"; } } @@ -246,16 +247,9 @@ GLboolean radeonInitContext(radeonContextPtr radeon, DRI_CONF_TEXTURE_DEPTH_32 : DRI_CONF_TEXTURE_DEPTH_16; if (IS_R600_CLASS(radeon->radeonScreen)) { - int chip_family = radeon->radeonScreen->chip_family; - if (chip_family >= CHIP_FAMILY_CEDAR) { - radeon->texture_row_align = 512; - radeon->texture_rect_row_align = 512; - radeon->texture_compressed_row_align = 512; - } else { - radeon->texture_row_align = radeon->radeonScreen->group_bytes; - radeon->texture_rect_row_align = radeon->radeonScreen->group_bytes; - radeon->texture_compressed_row_align = radeon->radeonScreen->group_bytes; - } + radeon->texture_row_align = radeon->radeonScreen->group_bytes; + radeon->texture_rect_row_align = radeon->radeonScreen->group_bytes; + radeon->texture_compressed_row_align = radeon->radeonScreen->group_bytes; } else if (IS_R200_CLASS(radeon->radeonScreen) || IS_R100_CLASS(radeon->radeonScreen)) { radeon->texture_row_align = 32; @@ -741,10 +735,9 @@ radeon_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable, buffers[i].flags); if (bo == NULL) { - fprintf(stderr, "failed to attach %s %d\n", regname, buffers[i].name); - + continue; } ret = radeon_bo_get_tiling(bo, &tiling_flags, &pitch); diff --git a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.h b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.h index 088f9701722..a68a9768779 100644 --- a/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.h +++ b/src/mesa/drivers/dri/radeon/radeon_mipmap_tree.h @@ -49,7 +49,7 @@ struct _radeon_mipmap_level { }; /* store the max possible in the miptree */ -#define RADEON_MIPTREE_MAX_TEXTURE_LEVELS 13 +#define RADEON_MIPTREE_MAX_TEXTURE_LEVELS 15 /** * A mipmap tree contains texture images in the layout that the hardware diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c index 1ea52f96d7e..94e56c2ade6 100644 --- a/src/mesa/drivers/dri/radeon/radeon_screen.c +++ b/src/mesa/drivers/dri/radeon/radeon_screen.c @@ -1155,6 +1155,14 @@ static int radeon_set_screen_flags(radeonScreenPtr screen, int device_id) screen->chip_flags = RADEON_CHIPSET_TCL; break; + case PCI_CHIP_PALM_9802: + case PCI_CHIP_PALM_9803: + case PCI_CHIP_PALM_9804: + case PCI_CHIP_PALM_9805: + screen->chip_family = CHIP_FAMILY_PALM; + screen->chip_flags = RADEON_CHIPSET_TCL; + break; + default: fprintf(stderr, "unknown chip id 0x%x, can't guess.\n", device_id); @@ -1323,7 +1331,11 @@ radeonCreateScreen( __DRIscreen *sPriv ) screen->chip_flags |= RADEON_CLASS_R600; /* set group bytes for r6xx+ */ - screen->group_bytes = 256; + if (screen->chip_family >= CHIP_FAMILY_CEDAR) + screen->group_bytes = 512; + else + screen->group_bytes = 256; + screen->cpp = dri_priv->bpp / 8; screen->AGPMode = dri_priv->AGPMode; @@ -1568,9 +1580,13 @@ radeonCreateScreen2(__DRIscreen *sPriv) else screen->chip_flags |= RADEON_CLASS_R600; - /* r6xx+ tiling, default to 256 group bytes */ - screen->group_bytes = 256; - if (IS_R600_CLASS(screen) && (sPriv->drm_version.minor >= 6)) { + /* r6xx+ tiling, default group bytes */ + if (screen->chip_family >= CHIP_FAMILY_CEDAR) + screen->group_bytes = 512; + else + screen->group_bytes = 256; + if (IS_R600_CLASS(screen) && (sPriv->drm_version.minor >= 6) && + (screen->chip_family < CHIP_FAMILY_CEDAR)) { ret = radeonGetParam(sPriv, RADEON_INFO_TILE_CONFIG, &temp); if (ret) fprintf(stderr, "failed to get tiling info\n"); diff --git a/src/mesa/drivers/dri/radeon/radeon_texstate.c b/src/mesa/drivers/dri/radeon/radeon_texstate.c index dd8ecdd500a..32c021cb545 100644 --- a/src/mesa/drivers/dri/radeon/radeon_texstate.c +++ b/src/mesa/drivers/dri/radeon/radeon_texstate.c @@ -653,6 +653,7 @@ void radeonSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_form radeonTexObjPtr t; uint32_t pitch_val; uint32_t internalFormat, type, format; + gl_format texFormat; type = GL_BGRA; format = GL_UNSIGNED_BYTE; @@ -692,10 +693,6 @@ void radeonSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_form radeon_miptree_unreference(&t->mt); radeon_miptree_unreference(&rImage->mt); - _mesa_init_teximage_fields(radeon->glCtx, target, texImage, - rb->base.Width, rb->base.Height, 1, 0, rb->cpp); - texImage->RowStride = rb->pitch / rb->cpp; - rImage->bo = rb->bo; radeon_bo_ref(rImage->bo); t->bo = rb->bo; @@ -705,23 +702,34 @@ void radeonSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, GLint texture_form t->override_offset = 0; switch (rb->cpp) { case 4: - if (texture_format == __DRI_TEXTURE_FORMAT_RGB) + if (texture_format == __DRI_TEXTURE_FORMAT_RGB) { t->pp_txformat = tx_table[MESA_FORMAT_RGB888].format; - else + texFormat = MESA_FORMAT_RGB888; + } + else { t->pp_txformat = tx_table[MESA_FORMAT_ARGB8888].format; + texFormat = MESA_FORMAT_ARGB8888; + } t->pp_txfilter |= tx_table[MESA_FORMAT_ARGB8888].filter; break; case 3: default: + texFormat = MESA_FORMAT_RGB888; t->pp_txformat = tx_table[MESA_FORMAT_RGB888].format; t->pp_txfilter |= tx_table[MESA_FORMAT_RGB888].filter; break; case 2: + texFormat = MESA_FORMAT_RGB565; t->pp_txformat = tx_table[MESA_FORMAT_RGB565].format; t->pp_txfilter |= tx_table[MESA_FORMAT_RGB565].filter; break; } + _mesa_init_teximage_fields(radeon->glCtx, target, texImage, + rb->base.Width, rb->base.Height, 1, 0, + rb->cpp, texFormat); + texImage->RowStride = rb->pitch / rb->cpp; + t->pp_txpitch &= (1 << 13) -1; pitch_val = rb->pitch; diff --git a/src/mesa/drivers/dri/sis/server/sis_dri.h b/src/mesa/drivers/dri/sis/server/sis_dri.h index f0171f3c0f8..7d8f507115d 100644 --- a/src/mesa/drivers/dri/sis/server/sis_dri.h +++ b/src/mesa/drivers/dri/sis/server/sis_dri.h @@ -72,13 +72,4 @@ typedef struct { int dummy; } SISDRIContextRec, *SISDRIContextPtr; -#ifdef XFree86Server - -#include "screenint.h" - -Bool SISDRIScreenInit(ScreenPtr pScreen); -void SISDRICloseScreen(ScreenPtr pScreen); -Bool SISDRIFinishScreenInit(ScreenPtr pScreen); - -#endif #endif diff --git a/src/mesa/drivers/dri/swrast/swrast.c b/src/mesa/drivers/dri/swrast/swrast.c index 52ba3acf658..c7940e9c0da 100644 --- a/src/mesa/drivers/dri/swrast/swrast.c +++ b/src/mesa/drivers/dri/swrast/swrast.c @@ -48,7 +48,6 @@ #include "utils.h" #include "main/teximage.h" -#include "main/texfetch.h" #include "main/texformat.h" #include "main/texstate.h" @@ -69,6 +68,7 @@ static void swrastSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, struct gl_texture_object *texObj; struct gl_texture_image *texImage; uint32_t internalFormat; + gl_format texFormat; dri_ctx = pDRICtx->driverPrivate; @@ -82,15 +82,13 @@ static void swrastSetTexBuffer2(__DRIcontext *pDRICtx, GLint target, sPriv->swrast_loader->getDrawableInfo(dPriv, &x, &y, &w, &h, dPriv->loaderPrivate); - _mesa_init_teximage_fields(&dri_ctx->Base, target, texImage, - w, h, 1, 0, internalFormat); - if (texture_format == __DRI_TEXTURE_FORMAT_RGB) - texImage->TexFormat = MESA_FORMAT_XRGB8888; + texFormat = MESA_FORMAT_XRGB8888; else - texImage->TexFormat = MESA_FORMAT_ARGB8888; + texFormat = MESA_FORMAT_ARGB8888; - _mesa_set_fetch_functions(texImage, 2); + _mesa_init_teximage_fields(&dri_ctx->Base, target, texImage, + w, h, 1, 0, internalFormat, texFormat); sPriv->swrast_loader->getImage(dPriv, x, y, w, h, (char *)texImage->Data, dPriv->loaderPrivate); diff --git a/src/mesa/drivers/dri/tdfx/tdfx_context.h b/src/mesa/drivers/dri/tdfx/tdfx_context.h index fb38419dcdd..7e2f0e00a8e 100644 --- a/src/mesa/drivers/dri/tdfx/tdfx_context.h +++ b/src/mesa/drivers/dri/tdfx/tdfx_context.h @@ -41,11 +41,7 @@ #include <sys/time.h> #include "dri_util.h" -#ifdef XFree86Server -#include "GL/xf86glx.h" -#else #include "main/glheader.h" -#endif #if defined(__linux__) #include <signal.h> #endif diff --git a/src/mesa/drivers/dri/unichrome/server/via_dri.h b/src/mesa/drivers/dri/unichrome/server/via_dri.h index b47397d5728..c6eed03c1c9 100644 --- a/src/mesa/drivers/dri/unichrome/server/via_dri.h +++ b/src/mesa/drivers/dri/unichrome/server/via_dri.h @@ -35,9 +35,7 @@ #define VIA_DRIDDX_VERSION_MINOR 0 #define VIA_DRIDDX_VERSION_PATCH 0 -#ifndef XFree86Server typedef int Bool; -#endif typedef struct { drm_handle_t handle; diff --git a/src/mesa/drivers/windows/gdi/InitCritSections.cpp b/src/mesa/drivers/windows/gdi/InitCritSections.cpp index 7145bffa510..69f03b8e47c 100644 --- a/src/mesa/drivers/windows/gdi/InitCritSections.cpp +++ b/src/mesa/drivers/windows/gdi/InitCritSections.cpp @@ -1,7 +1,8 @@ #include "glapi.h" #include "glThread.h" -#ifdef WIN32_THREADS +#ifdef WIN32 + extern "C" _glthread_Mutex OneTimeLock; extern "C" _glthread_Mutex GenTexturesLock; @@ -29,4 +30,4 @@ public: _CriticalSectionInit _CriticalSectionInit::m_inst; -#endif +#endif /* WIN32 */ diff --git a/src/mesa/drivers/x11/glxheader.h b/src/mesa/drivers/x11/glxheader.h index d88afba20e7..ee002191bc0 100644 --- a/src/mesa/drivers/x11/glxheader.h +++ b/src/mesa/drivers/x11/glxheader.h @@ -32,13 +32,6 @@ #include "main/glheader.h" -#ifdef XFree86Server - -# include "xorg-server.h" -# include "resource.h" -# include "windowstr.h" - -#else # include <X11/Xlib.h> # include <X11/Xlibint.h> @@ -51,7 +44,6 @@ # include <GL/glx.h> # include <sys/time.h> -#endif diff --git a/src/mesa/drivers/x11/xm_api.c b/src/mesa/drivers/x11/xm_api.c index 00ceb960c62..b5eabadf486 100644 --- a/src/mesa/drivers/x11/xm_api.c +++ b/src/mesa/drivers/x11/xm_api.c @@ -158,14 +158,12 @@ static short hpcr_rgbTbl[3][256] = { /** * Return the host's byte order as LSBFirst or MSBFirst ala X. */ -#ifndef XFree86Server static int host_byte_order( void ) { int i = 1; char *cptr = (char *) &i; return (*cptr==1) ? LSBFirst : MSBFirst; } -#endif /** @@ -176,7 +174,7 @@ static int host_byte_order( void ) */ static int check_for_xshm( XMesaDisplay *display ) { -#if defined(USE_XSHM) && !defined(XFree86Server) +#if defined(USE_XSHM) int major, minor, ignore; Bool pixmaps; @@ -227,16 +225,6 @@ gamma_adjust( GLfloat gamma, GLint value, GLint max ) static int bits_per_pixel( XMesaVisual xmv ) { -#ifdef XFree86Server - const int depth = xmv->nplanes; - int i; - assert(depth > 0); - for (i = 0; i < screenInfo.numPixmapFormats; i++) { - if (screenInfo.formats[i].depth == depth) - return screenInfo.formats[i].bitsPerPixel; - } - return depth; /* should never get here, but this should be safe */ -#else XMesaDisplay *dpy = xmv->display; XMesaVisualInfo visinfo = xmv->visinfo; XMesaImage *img; @@ -257,7 +245,6 @@ bits_per_pixel( XMesaVisual xmv ) img->data = NULL; XMesaDestroyImage( img ); return bitsPerPixel; -#endif } @@ -271,7 +258,6 @@ bits_per_pixel( XMesaVisual xmv ) * Return: GL_TRUE - window exists * GL_FALSE - window doesn't exist */ -#ifndef XFree86Server static GLboolean WindowExistsFlag; static int window_exists_err_handler( XMesaDisplay* dpy, XErrorEvent* xerr ) @@ -306,7 +292,6 @@ get_drawable_size( XMesaDisplay *dpy, Drawable d, GLuint *width, GLuint *height *height = h; return stat; } -#endif /** @@ -319,10 +304,6 @@ void xmesa_get_window_size(XMesaDisplay *dpy, XMesaBuffer b, GLuint *width, GLuint *height) { -#ifdef XFree86Server - *width = MIN2(b->frontxrb->drawable->width, MAX_WIDTH); - *height = MIN2(b->frontxrb->drawable->height, MAX_HEIGHT); -#else Status stat; _glthread_LOCK_MUTEX(_xmesa_lock); @@ -335,7 +316,6 @@ xmesa_get_window_size(XMesaDisplay *dpy, XMesaBuffer b, _mesa_warning(NULL, "XGetGeometry failed!\n"); *width = *height = 1; } -#endif } @@ -549,16 +529,11 @@ noFaultXAllocColor( int client, XMesaColor *color, int *exact, int *alloced ) { -#ifdef XFree86Server - Pixel *ppixIn; - xrgb *ctable; -#else /* we'll try to cache ctable for better remote display performance */ static Display *prevDisplay = NULL; static XMesaColormap prevCmap = 0; static int prevCmapSize = 0; static XMesaColor *ctable = NULL; -#endif XMesaColor subColor; int i, bestmatch; double mindist; /* 3*2^16^2 exceeds long int precision. */ @@ -566,14 +541,7 @@ noFaultXAllocColor( int client, (void) client; /* First try just using XAllocColor. */ -#ifdef XFree86Server - if (AllocColor(cmap, - &color->red, &color->green, &color->blue, - &color->pixel, - client) == Success) -#else if (XAllocColor(dpy, cmap, color)) -#endif { *exact = 1; *alloced = 1; @@ -584,14 +552,6 @@ noFaultXAllocColor( int client, /* Retrieve color table entries. */ /* XXX alloca candidate. */ -#ifdef XFree86Server - ppixIn = (Pixel *) MALLOC(cmapSize * sizeof(Pixel)); - ctable = (xrgb *) MALLOC(cmapSize * sizeof(xrgb)); - for (i = 0; i < cmapSize; i++) { - ppixIn[i] = i; - } - QueryColors(cmap, cmapSize, ppixIn, ctable); -#else if (prevDisplay != dpy || prevCmap != cmap || prevCmapSize != cmapSize || !ctable) { /* free previously cached color table */ @@ -608,7 +568,6 @@ noFaultXAllocColor( int client, prevCmap = cmap; prevCmapSize = cmapSize; } -#endif /* Find best match. */ bestmatch = -1; @@ -632,14 +591,7 @@ noFaultXAllocColor( int client, * fail if the cell is read/write. Otherwise, we're incrementing * the cell's reference count. */ -#ifdef XFree86Server - if (AllocColor(cmap, - &subColor.red, &subColor.green, &subColor.blue, - &subColor.pixel, - client) == Success) { -#else if (XAllocColor(dpy, cmap, &subColor)) { -#endif *alloced = 1; } else { @@ -651,12 +603,7 @@ noFaultXAllocColor( int client, subColor.flags = DoRed | DoGreen | DoBlue; *alloced = 0; } -#ifdef XFree86Server - free(ppixIn); - free(ctable); -#else /* don't free table, save it for next time */ -#endif *color = subColor; *exact = 0; @@ -873,10 +820,8 @@ setup_8bit_hpcr(XMesaVisual v) v->hpcr_clear_pixmap = XMesaCreatePixmap(v->display, DefaultRootWindow(v->display), 16, 2, 8); -#ifndef XFree86Server v->hpcr_clear_ximage = XGetImage(v->display, v->hpcr_clear_pixmap, 0, 0, 16, 2, AllPlanes, ZPixmap); -#endif } } @@ -1049,9 +994,6 @@ initialize_visual_and_buffer(XMesaVisual v, XMesaBuffer b, int client = 0; const int xclass = v->visualType; -#ifdef XFree86Server - client = (window) ? CLIENT_ID(window->id) : 0; -#endif ASSERT(!b || b->xm_visual == v); @@ -1120,40 +1062,23 @@ initialize_visual_and_buffer(XMesaVisual v, XMesaBuffer b, } /* X11 graphics contexts */ -#ifdef XFree86Server - b->gc = CreateScratchGC(v->display, window->depth); -#else b->gc = XCreateGC( v->display, window, 0, NULL ); -#endif XMesaSetFunction( v->display, b->gc, GXcopy ); /* cleargc - for glClear() */ -#ifdef XFree86Server - b->cleargc = CreateScratchGC(v->display, window->depth); -#else b->cleargc = XCreateGC( v->display, window, 0, NULL ); -#endif XMesaSetFunction( v->display, b->cleargc, GXcopy ); /* * Don't generate Graphics Expose/NoExpose events in swapbuffers(). * Patch contributed by Michael Pichler May 15, 1995. */ -#ifdef XFree86Server - b->swapgc = CreateScratchGC(v->display, window->depth); - { - CARD32 v[1]; - v[0] = FALSE; - dixChangeGC(NullClient, b->swapgc, GCGraphicsExposures, v, NULL); - } -#else { XGCValues gcvalues; gcvalues.graphics_exposures = False; b->swapgc = XCreateGC(v->display, window, GCGraphicsExposures, &gcvalues); } -#endif XMesaSetFunction( v->display, b->swapgc, GXcopy ); /* * Set fill style and tile pixmap once for all for HPCR stuff @@ -1175,9 +1100,6 @@ initialize_visual_and_buffer(XMesaVisual v, XMesaBuffer b, /* Initialize the row buffer XImage for use in write_color_span() */ data = (char*) MALLOC(MAX_WIDTH*4); -#ifdef XFree86Server - b->rowimage = XMesaCreateImage(GET_VISUAL_DEPTH(v), MAX_WIDTH, 1, data); -#else b->rowimage = XCreateImage( v->display, v->visinfo->visual, v->visinfo->depth, @@ -1186,7 +1108,6 @@ initialize_visual_and_buffer(XMesaVisual v, XMesaBuffer b, MAX_WIDTH, 1, /*width, height*/ 32, /*bitmap_pad*/ 0 /*bytes_per_line*/ ); -#endif if (!b->rowimage) return GL_FALSE; } @@ -1334,7 +1255,6 @@ XMesaVisual XMesaCreateVisual( XMesaDisplay *display, XMesaVisual v; GLint red_bits, green_bits, blue_bits, alpha_bits; -#ifndef XFree86Server /* For debugging only */ if (_mesa_getenv("MESA_XSYNC")) { /* This makes debugging X easier. @@ -1343,7 +1263,6 @@ XMesaVisual XMesaCreateVisual( XMesaDisplay *display, */ XSynchronize( display, 1 ); } -#endif /* Color-index rendering not supported. */ if (!rgb_flag) @@ -1360,14 +1279,12 @@ XMesaVisual XMesaCreateVisual( XMesaDisplay *display, * the struct but we may need some of the information contained in it * at a later time. */ -#ifndef XFree86Server v->visinfo = (XVisualInfo *) MALLOC(sizeof(*visinfo)); if(!v->visinfo) { free(v); return NULL; } memcpy(v->visinfo, visinfo, sizeof(*visinfo)); -#endif /* check for MESA_GAMMA environment variable */ gamma = _mesa_getenv("MESA_GAMMA"); @@ -1384,30 +1301,13 @@ XMesaVisual XMesaCreateVisual( XMesaDisplay *display, v->ximage_flag = ximage_flag; -#ifdef XFree86Server - /* We could calculate these values by ourselves. nplanes is either the sum - * of the red, green, and blue bits or the number index bits. - * ColormapEntries is either (1U << index_bits) or - * (1U << max(redBits, greenBits, blueBits)). - */ - assert(visinfo->nplanes > 0); - v->nplanes = visinfo->nplanes; - v->ColormapEntries = visinfo->ColormapEntries; - - v->mesa_visual.redMask = visinfo->redMask; - v->mesa_visual.greenMask = visinfo->greenMask; - v->mesa_visual.blueMask = visinfo->blueMask; - v->visualID = visinfo->vid; - v->screen = 0; /* FIXME: What should be done here? */ -#else v->mesa_visual.redMask = visinfo->red_mask; v->mesa_visual.greenMask = visinfo->green_mask; v->mesa_visual.blueMask = visinfo->blue_mask; v->visualID = visinfo->visualid; v->screen = visinfo->screen; -#endif -#if defined(XFree86Server) || !(defined(__cplusplus) || defined(c_plusplus)) +#if !(defined(__cplusplus) || defined(c_plusplus)) v->visualType = xmesa_convert_from_x_visual_type(visinfo->class); #else v->visualType = xmesa_convert_from_x_visual_type(visinfo->c_class); @@ -1461,9 +1361,7 @@ XMesaVisual XMesaCreateVisual( XMesaDisplay *display, PUBLIC void XMesaDestroyVisual( XMesaVisual v ) { -#ifndef XFree86Server free(v->visinfo); -#endif free(v); } @@ -1532,12 +1430,6 @@ XMesaContext XMesaCreateContext( XMesaVisual v, XMesaContext share_list ) _mesa_enable_extension(mesaCtx, "GL_EXT_timer_query"); #endif -#ifdef XFree86Server - /* If we're running in the X server, do bounds checking to prevent - * segfaults and server crashes! - */ - mesaCtx->Const.CheckArrayBounds = GL_TRUE; -#endif /* finish up xmesa context initializations */ c->swapbytes = CHECK_BYTE_ORDER(v) ? GL_FALSE : GL_TRUE; @@ -1602,9 +1494,7 @@ void XMesaDestroyContext( XMesaContext c ) PUBLIC XMesaBuffer XMesaCreateWindowBuffer(XMesaVisual v, XMesaWindow w) { -#ifndef XFree86Server XWindowAttributes attr; -#endif XMesaBuffer b; XMesaColormap cmap; int depth; @@ -1613,12 +1503,8 @@ XMesaCreateWindowBuffer(XMesaVisual v, XMesaWindow w) assert(w); /* Check that window depth matches visual depth */ -#ifdef XFree86Server - depth = ((XMesaDrawable)w)->depth; -#else XGetWindowAttributes( v->display, w, &attr ); depth = attr.depth; -#endif if (GET_VISUAL_DEPTH(v) != depth) { _mesa_warning(NULL, "XMesaCreateWindowBuffer: depth mismatch between visual (%d) and window (%d)!\n", GET_VISUAL_DEPTH(v), depth); @@ -1626,9 +1512,6 @@ XMesaCreateWindowBuffer(XMesaVisual v, XMesaWindow w) } /* Find colormap */ -#ifdef XFree86Server - cmap = (ColormapPtr)LookupIDByType(wColormap(w), RT_COLORMAP); -#else if (attr.colormap) { cmap = attr.colormap; } @@ -1638,7 +1521,6 @@ XMesaCreateWindowBuffer(XMesaVisual v, XMesaWindow w) /* OK, let's just allocate a new one and hope for the best */ cmap = XCreateColormap(v->display, w, attr.visual, AllocNone); } -#endif b = create_xmesa_buffer((XMesaDrawable) w, WINDOW, v, cmap); if (!b) @@ -1748,7 +1630,6 @@ XMesaBuffer XMesaCreatePBuffer(XMesaVisual v, XMesaColormap cmap, unsigned int width, unsigned int height) { -#ifndef XFree86Server XMesaWindow root; XMesaDrawable drawable; /* X Pixmap Drawable */ XMesaBuffer b; @@ -1770,9 +1651,6 @@ XMesaCreatePBuffer(XMesaVisual v, XMesaColormap cmap, } return b; -#else - return 0; -#endif } @@ -1931,40 +1809,6 @@ XMesaBuffer XMesaGetCurrentReadBuffer( void ) } -#ifdef XFree86Server -PUBLIC -GLboolean XMesaForceCurrent(XMesaContext c) -{ - if (c) { - _glapi_set_dispatch(c->mesa.CurrentDispatch); - - if (&(c->mesa) != _mesa_get_current_context()) { - _mesa_make_current(&c->mesa, c->mesa.DrawBuffer, c->mesa.ReadBuffer); - } - } - else { - _mesa_make_current(NULL, NULL, NULL); - } - return GL_TRUE; -} - - -PUBLIC -GLboolean XMesaLoseCurrent(XMesaContext c) -{ - (void) c; - _mesa_make_current(NULL, NULL, NULL); - return GL_TRUE; -} - - -PUBLIC -GLboolean XMesaCopyContext( XMesaContext xm_src, XMesaContext xm_dst, GLuint mask ) -{ - _mesa_copy_context(&xm_src->mesa, &xm_dst->mesa, mask); - return GL_TRUE; -} -#endif /* XFree86Server */ #ifndef FX @@ -2004,7 +1848,7 @@ void XMesaSwapBuffers( XMesaBuffer b ) #endif if (b->backxrb->ximage) { /* Copy Ximage (back buf) from client memory to server window */ -#if defined(USE_XSHM) && !defined(XFree86Server) +#if defined(USE_XSHM) if (b->shm) { /*_glthread_LOCK_MUTEX(_xmesa_lock);*/ XShmPutImage( b->xm_visual->display, b->frontxrb->drawable, @@ -2041,9 +1885,7 @@ void XMesaSwapBuffers( XMesaBuffer b ) if (b->swAlpha) _mesa_copy_soft_alpha_renderbuffers(ctx, &b->mesa_buffer); } -#if !defined(XFree86Server) XSync( b->xm_visual->display, False ); -#endif } @@ -2074,7 +1916,7 @@ void XMesaCopySubBuffer( XMesaBuffer b, int x, int y, int width, int height ) #endif if (b->backxrb->ximage) { /* Copy Ximage from host's memory to server's window */ -#if defined(USE_XSHM) && !defined(XFree86Server) +#if defined(USE_XSHM) if (b->shm) { /* XXX assuming width and height aren't too large! */ XShmPutImage( b->xm_visual->display, b->frontxrb->drawable, @@ -2116,7 +1958,6 @@ void XMesaCopySubBuffer( XMesaBuffer b, int x, int y, int width, int height ) * Return: GL_TRUE = context is double buffered * GL_FALSE = context is single buffered */ -#ifndef XFree86Server GLboolean XMesaGetBackBuffer( XMesaBuffer b, XMesaPixmap *pixmap, XMesaImage **ximage ) @@ -2134,7 +1975,6 @@ GLboolean XMesaGetBackBuffer( XMesaBuffer b, return GL_FALSE; } } -#endif /* XFree86Server */ /* @@ -2171,11 +2011,7 @@ GLboolean XMesaGetDepthBuffer( XMesaBuffer b, GLint *width, GLint *height, void XMesaFlush( XMesaContext c ) { if (c && c->xm_visual) { -#ifdef XFree86Server - /* NOT_NEEDED */ -#else XSync( c->xm_visual->display, False ); -#endif } } @@ -2234,15 +2070,11 @@ void XMesaGarbageCollect( void ) for (b=XMesaBufferList; b; b=next) { next = b->Next; if (b->display && b->frontxrb->drawable && b->type == WINDOW) { -#ifdef XFree86Server - /* NOT_NEEDED */ -#else XSync(b->display, False); if (!window_exists( b->display, b->frontxrb->drawable )) { /* found a dead window, free the ancillary info */ XMesaDestroyBuffer( b ); } -#endif } } } diff --git a/src/mesa/drivers/x11/xm_buffer.c b/src/mesa/drivers/x11/xm_buffer.c index 2683bd44d19..10829b4284f 100644 --- a/src/mesa/drivers/x11/xm_buffer.c +++ b/src/mesa/drivers/x11/xm_buffer.c @@ -37,7 +37,7 @@ #include "main/renderbuffer.h" -#if defined(USE_XSHM) && !defined(XFree86Server) +#if defined(USE_XSHM) static volatile int mesaXErrorFlag = 0; /** @@ -170,7 +170,7 @@ alloc_back_buffer(XMesaBuffer b, GLuint width, GLuint height) if (b->db_mode == BACK_XIMAGE) { /* Deallocate the old backxrb->ximage, if any */ if (b->backxrb->ximage) { -#if defined(USE_XSHM) && !defined(XFree86Server) +#if defined(USE_XSHM) if (b->shm) { XShmDetach(b->xm_visual->display, &b->shminfo); XDestroyImage(b->backxrb->ximage); @@ -188,10 +188,6 @@ alloc_back_buffer(XMesaBuffer b, GLuint width, GLuint height) /* Allocate new back buffer */ if (b->shm == 0 || !alloc_back_shm_ximage(b, width, height)) { /* Allocate a regular XImage for the back buffer. */ -#ifdef XFree86Server - b->backxrb->ximage = XMesaCreateImage(b->xm_visual->BitsPerPixel, - width, height, NULL); -#else b->backxrb->ximage = XCreateImage(b->xm_visual->display, b->xm_visual->visinfo->visual, GET_VISUAL_DEPTH(b->xm_visual), @@ -199,7 +195,6 @@ alloc_back_buffer(XMesaBuffer b, GLuint width, GLuint height) NULL, width, height, 8, 0); /* pad, bytes_per_line */ -#endif if (!b->backxrb->ximage) { _mesa_warning(NULL, "alloc_back_buffer: XCreateImage failed.\n"); return; @@ -359,16 +354,8 @@ xmesa_delete_framebuffer(struct gl_framebuffer *fb) if (b->num_alloced > 0) { /* If no other buffer uses this X colormap then free the colors. */ if (!xmesa_find_buffer(b->display, b->cmap, b)) { -#ifdef XFree86Server - int client = 0; - if (b->frontxrb->drawable) - client = CLIENT_ID(b->frontxrb->drawable->id); - (void)FreeColors(b->cmap, client, - b->num_alloced, b->alloced_colors, 0); -#else XFreeColors(b->display, b->cmap, b->alloced_colors, b->num_alloced, 0); -#endif } } @@ -382,7 +369,7 @@ xmesa_delete_framebuffer(struct gl_framebuffer *fb) if (fb->Visual.doubleBufferMode) { /* free back ximage/pixmap/shmregion */ if (b->backxrb->ximage) { -#if defined(USE_XSHM) && !defined(XFree86Server) +#if defined(USE_XSHM) if (b->shm) { XShmDetach( b->display, &b->shminfo ); XDestroyImage( b->backxrb->ximage ); diff --git a/src/mesa/drivers/x11/xm_dd.c b/src/mesa/drivers/x11/xm_dd.c index acece2025cf..b8d9e20c426 100644 --- a/src/mesa/drivers/x11/xm_dd.c +++ b/src/mesa/drivers/x11/xm_dd.c @@ -93,16 +93,12 @@ const int xmesa_kernel1[16] = { static void finish_or_flush( struct gl_context *ctx ) { -#ifdef XFree86Server - /* NOT_NEEDED */ -#else const XMesaContext xmesa = XMESA_CONTEXT(ctx); if (xmesa) { _glthread_LOCK_MUTEX(_xmesa_lock); XSync( xmesa->display, False ); _glthread_UNLOCK_MUTEX(_xmesa_lock); } -#endif } @@ -388,7 +384,6 @@ clear_buffers(struct gl_context *ctx, GLbitfield buffers) } -#ifndef XFree86Server /* XXX these functions haven't been tested in the Xserver environment */ @@ -731,7 +726,6 @@ xmesa_CopyPixels( struct gl_context *ctx, } } -#endif /* XFree86Server */ @@ -745,17 +739,9 @@ get_string( struct gl_context *ctx, GLenum name ) (void) ctx; switch (name) { case GL_RENDERER: -#ifdef XFree86Server - return (const GLubyte *) "Mesa GLX Indirect"; -#else return (const GLubyte *) "Mesa X11"; -#endif case GL_VENDOR: -#ifdef XFree86Server - return (const GLubyte *) "Mesa project: www.mesa3d.org"; -#else return NULL; -#endif default: return NULL; } @@ -948,43 +934,6 @@ xmesa_update_state( struct gl_context *ctx, GLbitfield new_state ) /** - * Called via ctx->Driver.TestProxyTeximage(). Normally, we'd just use - * the _mesa_test_proxy_teximage() fallback function, but we're going to - * special-case the 3D texture case to allow textures up to 512x512x32 - * texels. - */ -static GLboolean -test_proxy_teximage(struct gl_context *ctx, GLenum target, GLint level, - GLint internalFormat, GLenum format, GLenum type, - GLint width, GLint height, GLint depth, GLint border) -{ - if (target == GL_PROXY_TEXTURE_3D) { - /* special case for 3D textures */ - if (width * height * depth > 512 * 512 * 64 || - width < 2 * border || - (!ctx->Extensions.ARB_texture_non_power_of_two && - _mesa_bitcount(width - 2 * border) != 1) || - height < 2 * border || - (!ctx->Extensions.ARB_texture_non_power_of_two && - _mesa_bitcount(height - 2 * border) != 1) || - depth < 2 * border || - (!ctx->Extensions.ARB_texture_non_power_of_two && - _mesa_bitcount(depth - 2 * border) != 1)) { - /* Bad size, or too many texels */ - return GL_FALSE; - } - return GL_TRUE; - } - else { - /* use the fallback routine for 1D, 2D, cube and rect targets */ - return _mesa_test_proxy_teximage(ctx, target, level, internalFormat, - format, type, width, height, depth, - border); - } -} - - -/** * In SW, we don't really compress GL_COMPRESSED_RGB[A] textures! */ static gl_format @@ -1124,7 +1073,6 @@ xmesa_init_driver_functions( XMesaVisual xmvisual, } else { driver->Clear = clear_buffers; -#ifndef XFree86Server driver->CopyPixels = xmesa_CopyPixels; if (xmvisual->undithered_pf == PF_8R8G8B && xmvisual->dithered_pf == PF_8R8G8B && @@ -1134,9 +1082,8 @@ xmesa_init_driver_functions( XMesaVisual xmvisual, else if (xmvisual->undithered_pf == PF_5R6G5B) { driver->DrawPixels = xmesa_DrawPixels_5R6G5B; } -#endif } - driver->TestProxyTexImage = test_proxy_teximage; + #if ENABLE_EXT_texure_compression_s3tc driver->ChooseTextureFormat = choose_tex_format; #else diff --git a/src/mesa/drivers/x11/xm_glide.c b/src/mesa/drivers/x11/xm_glide.c index cbd69b011a1..d8a0e6de6d0 100644 --- a/src/mesa/drivers/x11/xm_glide.c +++ b/src/mesa/drivers/x11/xm_glide.c @@ -140,16 +140,8 @@ static void FXgetImage( XMesaBuffer b ) GLuint x, y; GLuint width, height; -#ifdef XFree86Server - x = b->frontxrb->pixmap->x; - y = b->frontxrb->pixmap->y; - width = b->frontxrb->pixmap->width; - height = b->frontxrb->pixmap->height; - depth = b->frontxrb->pixmap->depth; -#else xmesa_get_window_size(b->display, b, &width, &height); x = y = 0; -#endif if (b->mesa_buffer.Width != width || b->mesa_buffer.Height != height) { b->mesa_buffer.Width = MIN2((int)width, b->FXctx->width); b->mesa_buffer.Height = MIN2((int)height, b->FXctx->height); diff --git a/src/mesa/drivers/x11/xm_image.c b/src/mesa/drivers/x11/xm_image.c index 087b4e4c3a7..12fef7dad34 100644 --- a/src/mesa/drivers/x11/xm_image.c +++ b/src/mesa/drivers/x11/xm_image.c @@ -37,97 +37,3 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include "glxheader.h" #include "xmesaP.h" -#ifdef XFree86Server - -#ifdef ROUNDUP -#undef ROUNDUP -#endif - -#define ROUNDUP(nbytes, pad) ((((nbytes) + ((pad)-1)) / (pad)) * ((pad)>>3)) - -XMesaImage *XMesaCreateImage(int bitsPerPixel, int width, int height, char *data) -{ - XMesaImage *image; - - image = (XMesaImage *)xalloc(sizeof(XMesaImage)); - - if (image) { - image->width = width; - image->height = height; - image->data = data; - /* Always pad to 32 bits */ - image->bytes_per_line = ROUNDUP((bitsPerPixel * width), 32); - image->bits_per_pixel = bitsPerPixel; - } - - return image; -} - -void XMesaDestroyImage(XMesaImage *image) -{ - if (image->data) - free(image->data); - xfree(image); -} - -unsigned long XMesaGetPixel(XMesaImage *image, int x, int y) -{ - CARD8 *row = (CARD8 *)(image->data + y*image->bytes_per_line); - CARD8 *i8; - CARD16 *i16; - CARD32 *i32; - switch (image->bits_per_pixel) { - case 8: - i8 = (CARD8 *)row; - return i8[x]; - break; - case 15: - case 16: - i16 = (CARD16 *)row; - return i16[x]; - break; - case 24: /* WARNING: architecture specific code */ - i8 = (CARD8 *)row; - return (((CARD32)i8[x*3]) | - (((CARD32)i8[x*3+1])<<8) | - (((CARD32)i8[x*3+2])<<16)); - break; - case 32: - i32 = (CARD32 *)row; - return i32[x]; - break; - } - return 0; -} - -#ifndef XMESA_USE_PUTPIXEL_MACRO -void XMesaPutPixel(XMesaImage *image, int x, int y, unsigned long pixel) -{ - CARD8 *row = (CARD8 *)(image->data + y*image->bytes_per_line); - CARD8 *i8; - CARD16 *i16; - CARD32 *i32; - switch (image->bits_per_pixel) { - case 8: - i8 = (CARD8 *)row; - i8[x] = (CARD8)pixel; - break; - case 15: - case 16: - i16 = (CARD16 *)row; - i16[x] = (CARD16)pixel; - break; - case 24: /* WARNING: architecture specific code */ - i8 = (CARD8 *)__row; - i8[x*3] = (CARD8)(p); - i8[x*3+1] = (CARD8)(p>>8); - i8[x*3+2] = (CARD8)(p>>16); - case 32: - i32 = (CARD32 *)row; - i32[x] = (CARD32)pixel; - break; - } -} -#endif - -#endif /* XFree86Server */ diff --git a/src/mesa/drivers/x11/xm_line.c b/src/mesa/drivers/x11/xm_line.c index f03f99f918f..04cedcd4ec0 100644 --- a/src/mesa/drivers/x11/xm_line.c +++ b/src/mesa/drivers/x11/xm_line.c @@ -537,7 +537,6 @@ void xmesa_choose_point( struct gl_context *ctx ) -#ifndef XFree86Server /** * Draw fast, XOR line with XDrawLine in front color buffer. * WARNING: this isn't fully OpenGL conformant because different pixels @@ -567,7 +566,6 @@ xor_line(struct gl_context *ctx, const SWvertex *vert0, const SWvertex *vert1) XDrawLine(dpy, xrb->pixmap, gc, x0, y0, x1, y1); XMesaSetFunction(dpy, gc, GXcopy); /* this gc is used elsewhere */ } -#endif /* XFree86Server */ #endif /* CHAN_BITS == 8 */ @@ -660,7 +658,6 @@ get_line_func(struct gl_context *ctx) } } -#ifndef XFree86Server if (ctx->DrawBuffer->_NumColorDrawBuffers == 1 && ctx->DrawBuffer->_ColorDrawBufferIndexes[0] == BUFFER_FRONT_LEFT && swrast->_RasterMask == LOGIC_OP_BIT @@ -669,7 +666,6 @@ get_line_func(struct gl_context *ctx) && !ctx->Line.SmoothFlag) { return xor_line; } -#endif /* XFree86Server */ #endif /* CHAN_BITS == 8 */ return (swrast_line_func) NULL; diff --git a/src/mesa/drivers/x11/xm_span.c b/src/mesa/drivers/x11/xm_span.c index ab66c5e1f12..294b93a57cc 100644 --- a/src/mesa/drivers/x11/xm_span.c +++ b/src/mesa/drivers/x11/xm_span.c @@ -42,7 +42,6 @@ * generate BadMatch errors if the drawable isn't mapped. */ -#ifndef XFree86Server static int caught_xgetimage_error = 0; static int (*old_xerror_handler)( XMesaDisplay *dpy, XErrorEvent *ev ); static unsigned long xgetimage_serial; @@ -87,7 +86,6 @@ static int check_xgetimage_errors( void ) /* return 0=no error, 1=error caught */ return caught_xgetimage_error; } -#endif /* @@ -97,7 +95,6 @@ static unsigned long read_pixel( XMesaDisplay *dpy, XMesaDrawable d, int x, int y ) { unsigned long p; -#ifndef XFree86Server XMesaImage *pixel = NULL; int error; @@ -113,9 +110,6 @@ static unsigned long read_pixel( XMesaDisplay *dpy, if (pixel) { XMesaDestroyImage( pixel ); } -#else - (*dpy->GetImage)(d, x, y, 1, 1, ZPixmap, ~0L, (pointer)&p); -#endif return p; } @@ -3763,7 +3757,6 @@ static void put_values_ci_ximage( PUT_VALUES_ARGS ) /***** Pixel reading *****/ /**********************************************************************/ -#ifndef XFree86Server /** * Do clip testing prior to calling XGetImage. If any of the region lies * outside the screen's bounds, XGetImage will return NULL. @@ -3806,7 +3799,6 @@ clip_for_xgetimage(struct gl_context *ctx, XMesaPixmap pixmap, GLuint *n, GLint } return 0; } -#endif /* @@ -3824,7 +3816,6 @@ get_row_ci(struct gl_context *ctx, struct gl_renderbuffer *rb, y = YFLIP(xrb, y); if (xrb->pixmap) { -#ifndef XFree86Server XMesaImage *span = NULL; int error; int k = clip_for_xgetimage(ctx, xrb->pixmap, &n, &x, &y); @@ -3850,11 +3841,6 @@ get_row_ci(struct gl_context *ctx, struct gl_renderbuffer *rb, if (span) { XMesaDestroyImage( span ); } -#else - (*xmesa->display->GetImage)(xrb->drawable, - x, y, n, 1, ZPixmap, - ~0L, (pointer)index); -#endif } else if (xrb->ximage) { XMesaImage *img = xrb->ximage; @@ -3882,14 +3868,6 @@ get_row_rgba(struct gl_context *ctx, struct gl_renderbuffer *rb, /* Read from Pixmap or Window */ XMesaImage *span = NULL; int error; -#ifdef XFree86Server - span = XMesaCreateImage(xmesa->xm_visual->BitsPerPixel, n, 1, NULL); - span->data = (char *)MALLOC(span->height * span->bytes_per_line); - error = (!span->data); - (*xmesa->display->GetImage)(xrb->drawable, - x, YFLIP(xrb, y), n, 1, ZPixmap, - ~0L, (pointer)span->data); -#else int k; y = YFLIP(xrb, y); k = clip_for_xgetimage(ctx, xrb->pixmap, &n, &x, &y); @@ -3900,7 +3878,6 @@ get_row_rgba(struct gl_context *ctx, struct gl_renderbuffer *rb, span = XGetImage( xmesa->display, xrb->pixmap, x, y, n, 1, AllPlanes, ZPixmap ); error = check_xgetimage_errors(); -#endif if (span && !error) { switch (xmesa->pixelformat) { case PF_Truecolor: diff --git a/src/mesa/drivers/x11/xmesa.h b/src/mesa/drivers/x11/xmesa.h index f63626a9702..98737fab248 100644 --- a/src/mesa/drivers/x11/xmesa.h +++ b/src/mesa/drivers/x11/xmesa.h @@ -72,13 +72,9 @@ and create a window, you must do the following to use the X/Mesa interface: extern "C" { #endif -#ifdef XFree86Server -#include "xmesa_xf86.h" -#else #include <X11/Xlib.h> #include <X11/Xutil.h> #include "xmesa_x.h" -#endif #include "GL/gl.h" #ifdef AMIWIN @@ -180,19 +176,6 @@ extern XMesaContext XMesaCreateContext( XMesaVisual v, extern void XMesaDestroyContext( XMesaContext c ); -#ifdef XFree86Server -/* - * These are the extra routines required for integration with XFree86. - * None of these routines should be user visible. -KEM - */ -extern GLboolean XMesaForceCurrent( XMesaContext c ); - -extern GLboolean XMesaLoseCurrent( XMesaContext c ); - -extern GLboolean XMesaCopyContext( XMesaContext src, - XMesaContext dst, - GLuint mask ); -#endif /* XFree86Server */ /* diff --git a/src/mesa/drivers/x11/xmesaP.h b/src/mesa/drivers/x11/xmesaP.h index 5d34b430cb6..63e3e211bf6 100644 --- a/src/mesa/drivers/x11/xmesaP.h +++ b/src/mesa/drivers/x11/xmesaP.h @@ -33,9 +33,6 @@ #include "fxmesa.h" #include "xm_glide.h" #endif -#ifdef XFree86Server -#include "xm_image.h" -#endif extern _glthread_Mutex _xmesa_lock; @@ -88,13 +85,8 @@ struct xmesa_visual { XMesaDisplay *display; /* The X11 display */ int screen, visualID; int visualType; -#ifdef XFree86Server - GLint ColormapEntries; - GLint nplanes; -#else XMesaVisualInfo visinfo; /* X's visual info (pointer to private copy) */ XVisualInfo *vishandle; /* Only used in fakeglx.c */ -#endif GLint BitsPerPixel; /* True bits per pixel for XImages */ GLboolean ximage_flag; /* Use XImage for back buffer (not pixmap)? */ @@ -233,7 +225,7 @@ struct xmesa_buffer { /* 0 = not available */ /* 1 = XImage support available */ /* 2 = Pixmap support available too */ -#if defined(USE_XSHM) && !defined(XFree86Server) +#if defined(USE_XSHM) XShmSegmentInfo shminfo; #endif @@ -259,11 +251,7 @@ struct xmesa_buffer { /* Used to do XAllocColor/XFreeColors accounting: */ int num_alloced; -#if defined(XFree86Server) - Pixel alloced_colors[256]; -#else unsigned long alloced_colors[256]; -#endif #if defined( FX ) /* For 3Dfx Glide only */ @@ -578,9 +566,7 @@ extern void xmesa_register_swrast_functions( struct gl_context *ctx ); #define ENABLE_EXT_texure_compression_s3tc 0 /* SW texture compression */ -#ifdef XFree86Server -#define ENABLE_EXT_timer_query 0 -#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L +#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define ENABLE_EXT_timer_query 1 /* should have 64-bit GLuint64EXT */ #else #define ENABLE_EXT_timer_query 0 /* may not have 64-bit GLuint64EXT */ diff --git a/src/mesa/main/APIspec.xml b/src/mesa/main/APIspec.xml index 4dc0b0d4851..16d0c9413d0 100644 --- a/src/mesa/main/APIspec.xml +++ b/src/mesa/main/APIspec.xml @@ -3536,7 +3536,7 @@ <api name="mesa" implementation="true"> <category name="MESA"/> - <function name="Color4f" default_prefix="_vbo_" template="Color" gltype="GLfloat" vector_size="4" expand_vector="true"/> + <function name="Color4f" default_prefix="_es_" template="Color" gltype="GLfloat" vector_size="4" expand_vector="true"/> <function name="ClipPlane" template="ClipPlane" gltype="GLdouble"/> <function name="CullFace" template="CullFace"/> @@ -3554,8 +3554,8 @@ <function name="LineWidth" template="LineWidth" gltype="GLfloat"/> - <function name="Materialf" default_prefix="_vbo_" template="Material" gltype="GLfloat" expand_vector="true"/> - <function name="Materialfv" default_prefix="_vbo_" template="Material" gltype="GLfloat"/> + <function name="Materialf" default_prefix="_es_" template="Material" gltype="GLfloat" expand_vector="true"/> + <function name="Materialfv" default_prefix="_es_" template="Material" gltype="GLfloat"/> <function name="PointSize" template="PointSize" gltype="GLfloat"/> <function name="PointSizePointer" template="PointSizePointer"/> @@ -3650,7 +3650,7 @@ <function name="EnableClientState" template="EnableClientState"/> <function name="GetPointerv" template="GetPointer"/> - <function name="Normal3f" default_prefix="_vbo_" template="Normal" gltype="GLfloat" expand_vector="true"/> + <function name="Normal3f" default_prefix="_es_" template="Normal" gltype="GLfloat" expand_vector="true"/> <function name="NormalPointer" template="NormalPointer"/> <function name="TexCoordPointer" template="TexCoordPointer"/> <function name="VertexPointer" template="VertexPointer"/> @@ -3679,7 +3679,7 @@ <function name="ActiveTextureARB" template="ActiveTexture"/> <function name="ClientActiveTextureARB" template="ClientActiveTexture"/> - <function name="MultiTexCoord4f" default_prefix="_vbo_" template="MultiTexCoord" gltype="GLfloat" vector_size="4" expand_vector="true"/> + <function name="MultiTexCoord4f" default_prefix="_es_" template="MultiTexCoord" gltype="GLfloat" vector_size="4" expand_vector="true"/> <function name="SampleCoverageARB" template="SampleCoverage" gltype="GLclampf"/> @@ -3691,14 +3691,14 @@ <function name="PointParameterf" template="PointParameter" gltype="GLfloat" expand_vector="true"/> <function name="PointParameterfv" template="PointParameter" gltype="GLfloat"/> - <function name="VertexAttrib1f" default_prefix="_vbo_" template="VertexAttrib" gltype="GLfloat" vector_size="1" expand_vector="true"/> - <function name="VertexAttrib2f" default_prefix="_vbo_" template="VertexAttrib" gltype="GLfloat" vector_size="2" expand_vector="true"/> - <function name="VertexAttrib3f" default_prefix="_vbo_" template="VertexAttrib" gltype="GLfloat" vector_size="3" expand_vector="true"/> - <function name="VertexAttrib4f" default_prefix="_vbo_" template="VertexAttrib" gltype="GLfloat" vector_size="4" expand_vector="true"/> - <function name="VertexAttrib1fv" default_prefix="_vbo_" template="VertexAttrib" gltype="GLfloat" vector_size="1"/> - <function name="VertexAttrib2fv" default_prefix="_vbo_" template="VertexAttrib" gltype="GLfloat" vector_size="2"/> - <function name="VertexAttrib3fv" default_prefix="_vbo_" template="VertexAttrib" gltype="GLfloat" vector_size="3"/> - <function name="VertexAttrib4fv" default_prefix="_vbo_" template="VertexAttrib" gltype="GLfloat" vector_size="4"/> + <function name="VertexAttrib1f" default_prefix="_es_" template="VertexAttrib" gltype="GLfloat" vector_size="1" expand_vector="true"/> + <function name="VertexAttrib2f" default_prefix="_es_" template="VertexAttrib" gltype="GLfloat" vector_size="2" expand_vector="true"/> + <function name="VertexAttrib3f" default_prefix="_es_" template="VertexAttrib" gltype="GLfloat" vector_size="3" expand_vector="true"/> + <function name="VertexAttrib4f" default_prefix="_es_" template="VertexAttrib" gltype="GLfloat" vector_size="4" expand_vector="true"/> + <function name="VertexAttrib1fv" default_prefix="_es_" template="VertexAttrib" gltype="GLfloat" vector_size="1"/> + <function name="VertexAttrib2fv" default_prefix="_es_" template="VertexAttrib" gltype="GLfloat" vector_size="2"/> + <function name="VertexAttrib3fv" default_prefix="_es_" template="VertexAttrib" gltype="GLfloat" vector_size="3"/> + <function name="VertexAttrib4fv" default_prefix="_es_" template="VertexAttrib" gltype="GLfloat" vector_size="4"/> <function name="VertexAttribPointerARB" template="VertexAttribPointer"/> <function name="EnableVertexAttribArrayARB" template="EnableVertexAttribArray"/> @@ -3850,7 +3850,7 @@ <category name="OES_matrix_palette"/> - <function name="Color4f" template="Color" gltype="GLfloat" vector_size="4" expand_vector="true"/> + <function name="Color4f" external="true" template="Color" gltype="GLfloat" vector_size="4" expand_vector="true"/> <function name="Color4ub" template="Color" gltype="GLubyte" vector_size="4" expand_vector="true"/> <function name="Color4x" template="Color" gltype="GLfixed" vector_size="4" expand_vector="true"/> @@ -3880,8 +3880,8 @@ <function name="LineWidth" template="LineWidth" gltype="GLfloat"/> <function name="LineWidthx" template="LineWidth" gltype="GLfixed"/> - <function name="Materialf" template="Material" gltype="GLfloat" expand_vector="true"/> - <function name="Materialfv" template="Material" gltype="GLfloat"/> + <function name="Materialf" external="true" template="Material" gltype="GLfloat" expand_vector="true"/> + <function name="Materialfv" external="true" template="Material" gltype="GLfloat"/> <function name="Materialx" template="Material" gltype="GLfixed" expand_vector="true"/> <function name="Materialxv" template="Material" gltype="GLfixed"/> @@ -4012,7 +4012,7 @@ <function name="GetPointerv" template="GetPointer"/> - <function name="Normal3f" template="Normal" gltype="GLfloat" expand_vector="true"/> + <function name="Normal3f" external="true" template="Normal" gltype="GLfloat" expand_vector="true"/> <function name="Normal3x" template="Normal" gltype="GLfixed" expand_vector="true"/> <function name="NormalPointer" template="NormalPointer"/> <function name="TexCoordPointer" template="TexCoordPointer"/> @@ -4039,7 +4039,7 @@ <function name="ActiveTexture" template="ActiveTexture"/> <function name="ClientActiveTexture" template="ClientActiveTexture"/> - <function name="MultiTexCoord4f" template="MultiTexCoord" gltype="GLfloat" vector_size="4" expand_vector="true"/> + <function name="MultiTexCoord4f" external="true" template="MultiTexCoord" gltype="GLfloat" vector_size="4" expand_vector="true"/> <function name="SampleCoverage" template="SampleCoverage" gltype="GLclampf"/> <function name="SampleCoveragex" template="SampleCoverage" gltype="GLclampx"/> @@ -4227,14 +4227,14 @@ <function name="BlendFuncSeparate" template="BlendFuncSeparate"/> - <function name="VertexAttrib1f" template="VertexAttrib" gltype="GLfloat" vector_size="1" expand_vector="true"/> - <function name="VertexAttrib2f" template="VertexAttrib" gltype="GLfloat" vector_size="2" expand_vector="true"/> - <function name="VertexAttrib3f" template="VertexAttrib" gltype="GLfloat" vector_size="3" expand_vector="true"/> - <function name="VertexAttrib4f" template="VertexAttrib" gltype="GLfloat" vector_size="4" expand_vector="true"/> - <function name="VertexAttrib1fv" template="VertexAttrib" gltype="GLfloat" vector_size="1"/> - <function name="VertexAttrib2fv" template="VertexAttrib" gltype="GLfloat" vector_size="2"/> - <function name="VertexAttrib3fv" template="VertexAttrib" gltype="GLfloat" vector_size="3"/> - <function name="VertexAttrib4fv" template="VertexAttrib" gltype="GLfloat" vector_size="4"/> + <function name="VertexAttrib1f" external="true" template="VertexAttrib" gltype="GLfloat" vector_size="1" expand_vector="true"/> + <function name="VertexAttrib2f" external="true" template="VertexAttrib" gltype="GLfloat" vector_size="2" expand_vector="true"/> + <function name="VertexAttrib3f" external="true" template="VertexAttrib" gltype="GLfloat" vector_size="3" expand_vector="true"/> + <function name="VertexAttrib4f" external="true" template="VertexAttrib" gltype="GLfloat" vector_size="4" expand_vector="true"/> + <function name="VertexAttrib1fv" external="true" template="VertexAttrib" gltype="GLfloat" vector_size="1"/> + <function name="VertexAttrib2fv" external="true" template="VertexAttrib" gltype="GLfloat" vector_size="2"/> + <function name="VertexAttrib3fv" external="true" template="VertexAttrib" gltype="GLfloat" vector_size="3"/> + <function name="VertexAttrib4fv" external="true" template="VertexAttrib" gltype="GLfloat" vector_size="4"/> <function name="VertexAttribPointer" template="VertexAttribPointer"/> diff --git a/src/mesa/main/api_exec.c b/src/mesa/main/api_exec.c index 25ece5c95e9..1427abd107a 100644 --- a/src/mesa/main/api_exec.c +++ b/src/mesa/main/api_exec.c @@ -699,6 +699,15 @@ _mesa_create_exec_table(void) SET_GetVertexAttribIuivEXT(exec, _mesa_GetVertexAttribIuiv); SET_VertexAttribIPointerEXT(exec, _mesa_VertexAttribIPointer); + /* GL 3.0 (functions not covered by other extensions) */ + SET_ClearBufferiv(exec, _mesa_ClearBufferiv); + SET_ClearBufferuiv(exec, _mesa_ClearBufferuiv); + SET_ClearBufferfv(exec, _mesa_ClearBufferfv); + SET_ClearBufferfi(exec, _mesa_ClearBufferfi); + SET_GetStringi(exec, _mesa_GetStringi); + SET_ClampColor(exec, _mesa_ClampColorARB); + + return exec; } diff --git a/src/mesa/main/clear.c b/src/mesa/main/clear.c index 61bc836a38d..c4c1d96e49c 100644 --- a/src/mesa/main/clear.c +++ b/src/mesa/main/clear.c @@ -404,7 +404,7 @@ _mesa_ClearBufferuiv(GLenum buffer, GLint drawbuffer, const GLuint *value) { const GLbitfield mask = make_color_buffer_mask(ctx, drawbuffer); if (mask == INVALID_MASK) { - _mesa_error(ctx, GL_INVALID_VALUE, "glClearBufferiv(drawbuffer=%d)", + _mesa_error(ctx, GL_INVALID_VALUE, "glClearBufferuiv(drawbuffer=%d)", drawbuffer); return; } diff --git a/src/mesa/main/compiler.h b/src/mesa/main/compiler.h index 800eb839005..5557a3b5cb5 100644 --- a/src/mesa/main/compiler.h +++ b/src/mesa/main/compiler.h @@ -358,6 +358,10 @@ static INLINE GLuint CPU_TO_LE32(GLuint x) #define M_E (2.7182818284590452354) #endif +#ifndef M_LOG2E +#define M_LOG2E (1.4426950408889634074) +#endif + #ifndef ONE_DIV_LN2 #define ONE_DIV_LN2 (1.442695040888963456) #endif diff --git a/src/mesa/main/config.h b/src/mesa/main/config.h index 0f2d1a8f8da..fffb1a7d2ec 100644 --- a/src/mesa/main/config.h +++ b/src/mesa/main/config.h @@ -97,17 +97,20 @@ /** Max texture palette / color table size */ #define MAX_COLOR_TABLE_SIZE 256 +/** Max memory to allow for a single texture image (in megabytes) */ +#define MAX_TEXTURE_MBYTES 1024 + /** Number of 1D/2D texture mipmap levels */ -#define MAX_TEXTURE_LEVELS 13 +#define MAX_TEXTURE_LEVELS 15 /** Number of 3D texture mipmap levels */ -#define MAX_3D_TEXTURE_LEVELS 9 +#define MAX_3D_TEXTURE_LEVELS 15 /** Number of cube texture mipmap levels - GL_ARB_texture_cube_map */ -#define MAX_CUBE_TEXTURE_LEVELS 13 +#define MAX_CUBE_TEXTURE_LEVELS 15 /** Maximum rectangular texture size - GL_NV_texture_rectangle */ -#define MAX_TEXTURE_RECT_SIZE 4096 +#define MAX_TEXTURE_RECT_SIZE 16384 /** Maximum number of layers in a 1D or 2D array texture - GL_MESA_texture_array */ #define MAX_ARRAY_TEXTURE_LAYERS 64 @@ -140,11 +143,28 @@ */ #ifndef MAX_WIDTH -# define MAX_WIDTH 4096 +# define MAX_WIDTH 16384 #endif /** Maximum viewport/image height */ #ifndef MAX_HEIGHT -# define MAX_HEIGHT 4096 +# define MAX_HEIGHT 16384 +#endif + +/* XXX: hack to prevent stack overflow on windows until all temporary arrays + * [MAX_WIDTH] are allocated from the heap */ +#ifdef WIN32 +#undef MAX_TEXTURE_LEVELS +#undef MAX_3D_TEXTURE_LEVELS +#undef MAX_CUBE_TEXTURE_LEVELS +#undef MAX_TEXTURE_RECT_SIZE +#undef MAX_WIDTH +#undef MAX_HEIGHT +#define MAX_TEXTURE_LEVELS 13 +#define MAX_3D_TEXTURE_LEVELS 9 +#define MAX_CUBE_TEXTURE_LEVELS 13 +#define MAX_TEXTURE_RECT_SIZE 4096 +#define MAX_WIDTH 4096 +#define MAX_HEIGHT 4096 #endif /** Maxmimum size for CVA. May be overridden by the drivers. */ @@ -168,7 +188,7 @@ #define MAX_TEXTURE_MAX_ANISOTROPY 16.0 /** For GL_EXT_texture_lod_bias (typically MAX_TEXTURE_LEVELS - 1) */ -#define MAX_TEXTURE_LOD_BIAS 12.0 +#define MAX_TEXTURE_LOD_BIAS 14.0 /** For any program target/extension */ /*@{*/ diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index b60875b7128..f42a566c302 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -219,7 +219,7 @@ _mesa_create_visual( GLboolean dbFlag, GLint accumAlphaBits, GLint numSamples ) { - struct gl_config *vis = (struct gl_config *) calloc(1, sizeof(struct gl_config)); + struct gl_config *vis = CALLOC_STRUCT(gl_config); if (vis) { if (!_mesa_initialize_visual(vis, dbFlag, stereoFlag, redBits, greenBits, blueBits, alphaBits, @@ -234,11 +234,13 @@ _mesa_create_visual( GLboolean dbFlag, return vis; } + /** - * Makes some sanity checks and fills in the fields of the - * struct gl_config object with the given parameters. If the caller needs - * to set additional fields, he should just probably init the whole struct gl_config - * object himself. + * Makes some sanity checks and fills in the fields of the struct + * gl_config object with the given parameters. If the caller needs to + * set additional fields, he should just probably init the whole + * gl_config object himself. + * * \return GL_TRUE on success, or GL_FALSE on failure. * * \sa _mesa_create_visual() above for the parameter description. @@ -368,6 +370,8 @@ dummy_enum_func(void) */ _glthread_DECLARE_STATIC_MUTEX(OneTimeLock); + + /** * Calls all the various one-time-init functions in Mesa. * @@ -408,8 +412,10 @@ one_time_init( struct gl_context *ctx ) } #if defined(DEBUG) && defined(__DATE__) && defined(__TIME__) - _mesa_debug(ctx, "Mesa %s DEBUG build %s %s\n", - MESA_VERSION_STRING, __DATE__, __TIME__); + if (MESA_VERBOSE != 0) { + _mesa_debug(ctx, "Mesa %s DEBUG build %s %s\n", + MESA_VERSION_STRING, __DATE__, __TIME__); + } #endif } @@ -529,6 +535,7 @@ _mesa_init_constants(struct gl_context *ctx) assert(ctx); /* Constants, may be overriden (usually only reduced) by device drivers */ + ctx->Const.MaxTextureMbytes = MAX_TEXTURE_MBYTES; ctx->Const.MaxTextureLevels = MAX_TEXTURE_LEVELS; ctx->Const.Max3DTextureLevels = MAX_3D_TEXTURE_LEVELS; ctx->Const.MaxCubeTextureLevels = MAX_CUBE_TEXTURE_LEVELS; @@ -988,6 +995,10 @@ _mesa_initialize_context_for_api(struct gl_context *ctx, return GL_TRUE; } + +/** + * Initialize an OpenGL context. + */ GLboolean _mesa_initialize_context(struct gl_context *ctx, const struct gl_config *visual, @@ -1003,6 +1014,7 @@ _mesa_initialize_context(struct gl_context *ctx, driverContext); } + /** * Allocate and initialize a struct gl_context structure. * Note that the driver needs to pass in its dd_function_table here since @@ -1044,6 +1056,10 @@ _mesa_create_context_for_api(gl_api api, } } + +/** + * Create an OpenGL context. + */ struct gl_context * _mesa_create_context(const struct gl_config *visual, struct gl_context *share_list, @@ -1056,6 +1072,7 @@ _mesa_create_context(const struct gl_config *visual, driverContext); } + /** * Free the data associated with the given context. * @@ -1142,7 +1159,7 @@ _mesa_free_context_data( struct gl_context *ctx ) * * \param ctx GL context. * - * Calls _mesa_free_context_data() and frees the struct gl_context structure itself. + * Calls _mesa_free_context_data() and frees the gl_context object itself. */ void _mesa_destroy_context( struct gl_context *ctx ) @@ -1287,7 +1304,8 @@ _mesa_copy_context( const struct gl_context *src, struct gl_context *dst, GLuint * \return GL_TRUE if compatible, GL_FALSE otherwise. */ static GLboolean -check_compatible(const struct gl_context *ctx, const struct gl_framebuffer *buffer) +check_compatible(const struct gl_context *ctx, + const struct gl_framebuffer *buffer) { const struct gl_config *ctxvis = &ctx->Visual; const struct gl_config *bufvis = &buffer->Visual; @@ -1378,9 +1396,12 @@ _mesa_check_init_viewport(struct gl_context *ctx, GLuint width, GLuint height) * \param readBuffer the reading framebuffer */ GLboolean -_mesa_make_current( struct gl_context *newCtx, struct gl_framebuffer *drawBuffer, +_mesa_make_current( struct gl_context *newCtx, + struct gl_framebuffer *drawBuffer, struct gl_framebuffer *readBuffer ) { + GET_CURRENT_CONTEXT(curCtx); + if (MESA_VERBOSE & VERBOSE_API) _mesa_debug(newCtx, "_mesa_make_current()\n"); @@ -1401,6 +1422,11 @@ _mesa_make_current( struct gl_context *newCtx, struct gl_framebuffer *drawBuffer } } + if (curCtx && + (curCtx->WinSysDrawBuffer || curCtx->WinSysReadBuffer) && /* make sure this context is valid for flushing */ + curCtx != newCtx) + _mesa_flush(curCtx); + /* We used to call _glapi_check_multithread() here. Now do it in drivers */ _glapi_set_context((void *) newCtx); ASSERT(_mesa_get_current_context() == newCtx); @@ -1439,7 +1465,8 @@ _mesa_make_current( struct gl_context *newCtx, struct gl_framebuffer *drawBuffer buffers[i] = newCtx->Color.DrawBuffer[i]; } - _mesa_drawbuffers(newCtx, newCtx->Const.MaxDrawBuffers, buffers, NULL); + _mesa_drawbuffers(newCtx, newCtx->Const.MaxDrawBuffers, + buffers, NULL); } if (!newCtx->ReadBuffer || newCtx->ReadBuffer->Name == 0) { _mesa_reference_framebuffer(&newCtx->ReadBuffer, readBuffer); @@ -1803,7 +1830,7 @@ _mesa_valid_to_render(struct gl_context *ctx, const char *where) #ifdef DEBUG if (ctx->Shader.Flags & GLSL_LOG) { struct gl_shader_program *shProg[MESA_SHADER_TYPES]; - unsigned i; + gl_shader_type i; shProg[MESA_SHADER_VERTEX] = ctx->Shader.CurrentVertexProgram; shProg[MESA_SHADER_GEOMETRY] = ctx->Shader.CurrentGeometryProgram; diff --git a/src/mesa/main/core.h b/src/mesa/main/core.h index ea6e6bf1187..542d95b8488 100644 --- a/src/mesa/main/core.h +++ b/src/mesa/main/core.h @@ -46,8 +46,6 @@ #include "main/imports.h" #include "main/macros.h" -#include "main/version.h" /* for MESA_VERSION_STRING */ -#include "main/context.h" /* for _mesa_share_state */ #include "main/mtypes.h" #ifdef __cplusplus diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c index 0c3c9fca36b..6c0c556ad8d 100644 --- a/src/mesa/main/dlist.c +++ b/src/mesa/main/dlist.c @@ -4784,9 +4784,9 @@ save_ExecuteProgramNV(GLenum target, GLuint id, const GLfloat *params) static void GLAPIENTRY save_ProgramParameters4dvNV(GLenum target, GLuint index, - GLuint num, const GLdouble *params) + GLsizei num, const GLdouble *params) { - GLuint i; + GLint i; for (i = 0; i < num; i++) { save_ProgramEnvParameter4dvARB(target, index + i, params + 4 * i); } @@ -4795,9 +4795,9 @@ save_ProgramParameters4dvNV(GLenum target, GLuint index, static void GLAPIENTRY save_ProgramParameters4fvNV(GLenum target, GLuint index, - GLuint num, const GLfloat *params) + GLsizei num, const GLfloat *params) { - GLuint i; + GLint i; for (i = 0; i < num; i++) { save_ProgramEnvParameter4fvARB(target, index + i, params + 4 * i); } diff --git a/src/mesa/main/enums.c b/src/mesa/main/enums.c index a44eb09e3db..0ce62c0e3c7 100644 --- a/src/mesa/main/enums.c +++ b/src/mesa/main/enums.c @@ -118,7 +118,9 @@ LONGSTRING static const char enum_string_table[] = "GL_BGR\0" "GL_BGRA\0" "GL_BGRA_EXT\0" + "GL_BGRA_INTEGER\0" "GL_BGRA_INTEGER_EXT\0" + "GL_BGR_INTEGER\0" "GL_BGR_INTEGER_EXT\0" "GL_BITMAP\0" "GL_BITMAP_TOKEN\0" @@ -147,6 +149,7 @@ LONGSTRING static const char enum_string_table[] = "GL_BLUE\0" "GL_BLUE_BIAS\0" "GL_BLUE_BITS\0" + "GL_BLUE_INTEGER\0" "GL_BLUE_INTEGER_EXT\0" "GL_BLUE_SCALE\0" "GL_BOOL\0" @@ -159,11 +162,14 @@ LONGSTRING static const char enum_string_table[] = "GL_BOOL_VEC4_ARB\0" "GL_BUFFER_ACCESS\0" "GL_BUFFER_ACCESS_ARB\0" + "GL_BUFFER_ACCESS_FLAGS\0" "GL_BUFFER_ACCESS_OES\0" "GL_BUFFER_FLUSHING_UNMAP_APPLE\0" "GL_BUFFER_MAPPED\0" "GL_BUFFER_MAPPED_ARB\0" "GL_BUFFER_MAPPED_OES\0" + "GL_BUFFER_MAP_LENGTH\0" + "GL_BUFFER_MAP_OFFSET\0" "GL_BUFFER_MAP_POINTER\0" "GL_BUFFER_MAP_POINTER_ARB\0" "GL_BUFFER_MAP_POINTER_OES\0" @@ -186,6 +192,7 @@ LONGSTRING static const char enum_string_table[] = "GL_C4UB_V3F\0" "GL_CCW\0" "GL_CLAMP\0" + "GL_CLAMP_READ_COLOR\0" "GL_CLAMP_TO_BORDER\0" "GL_CLAMP_TO_BORDER_ARB\0" "GL_CLAMP_TO_BORDER_SGIS\0" @@ -198,6 +205,14 @@ LONGSTRING static const char enum_string_table[] = "GL_CLIENT_ATTRIB_STACK_DEPTH\0" "GL_CLIENT_PIXEL_STORE_BIT\0" "GL_CLIENT_VERTEX_ARRAY_BIT\0" + "GL_CLIP_DISTANCE0\0" + "GL_CLIP_DISTANCE1\0" + "GL_CLIP_DISTANCE2\0" + "GL_CLIP_DISTANCE3\0" + "GL_CLIP_DISTANCE4\0" + "GL_CLIP_DISTANCE5\0" + "GL_CLIP_DISTANCE6\0" + "GL_CLIP_DISTANCE7\0" "GL_CLIP_PLANE0\0" "GL_CLIP_PLANE1\0" "GL_CLIP_PLANE2\0" @@ -302,6 +317,7 @@ LONGSTRING static const char enum_string_table[] = "GL_COMBINE_RGB_ARB\0" "GL_COMBINE_RGB_EXT\0" "GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT\0" + "GL_COMPARE_REF_TO_TEXTURE\0" "GL_COMPARE_R_TO_TEXTURE\0" "GL_COMPARE_R_TO_TEXTURE_ARB\0" "GL_COMPILE\0" @@ -315,6 +331,8 @@ LONGSTRING static const char enum_string_table[] = "GL_COMPRESSED_LUMINANCE_ALPHA\0" "GL_COMPRESSED_LUMINANCE_ALPHA_ARB\0" "GL_COMPRESSED_LUMINANCE_ARB\0" + "GL_COMPRESSED_RED\0" + "GL_COMPRESSED_RG\0" "GL_COMPRESSED_RGB\0" "GL_COMPRESSED_RGBA\0" "GL_COMPRESSED_RGBA_ARB\0" @@ -340,6 +358,11 @@ LONGSTRING static const char enum_string_table[] = "GL_CONSTANT_COLOR\0" "GL_CONSTANT_COLOR_EXT\0" "GL_CONSTANT_EXT\0" + "GL_CONTEXT_COMPATIBILITY_PROFILE_BIT\0" + "GL_CONTEXT_CORE_PROFILE_BIT\0" + "GL_CONTEXT_FLAGS\0" + "GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT\0" + "GL_CONTEXT_PROFILE_MASK\0" "GL_CONVOLUTION_1D\0" "GL_CONVOLUTION_2D\0" "GL_CONVOLUTION_BORDER_COLOR\0" @@ -419,6 +442,7 @@ LONGSTRING static const char enum_string_table[] = "GL_DEPTH_BITS\0" "GL_DEPTH_BOUNDS_EXT\0" "GL_DEPTH_BOUNDS_TEST_EXT\0" + "GL_DEPTH_BUFFER\0" "GL_DEPTH_BUFFER_BIT\0" "GL_DEPTH_CLAMP\0" "GL_DEPTH_CLAMP_NV\0" @@ -558,6 +582,7 @@ LONGSTRING static const char enum_string_table[] = "GL_FIRST_VERTEX_CONVENTION_EXT\0" "GL_FIXED\0" "GL_FIXED_OES\0" + "GL_FIXED_ONLY\0" "GL_FLAT\0" "GL_FLOAT\0" "GL_FLOAT_MAT2\0" @@ -618,6 +643,7 @@ LONGSTRING static const char enum_string_table[] = "GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE\0" "GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE\0" "GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE\0" + "GL_FRAMEBUFFER_ATTACHMENT_LAYERED\0" "GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB\0" "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME\0" "GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT\0" @@ -658,6 +684,7 @@ LONGSTRING static const char enum_string_table[] = "GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT\0" "GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES\0" "GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB\0" + "GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS\0" "GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB\0" "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT\0" "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT\0" @@ -691,15 +718,20 @@ LONGSTRING static const char enum_string_table[] = "GL_GENERATE_MIPMAP_HINT\0" "GL_GENERATE_MIPMAP_HINT_SGIS\0" "GL_GENERATE_MIPMAP_SGIS\0" + "GL_GEOMETRY_INPUT_TYPE\0" "GL_GEOMETRY_INPUT_TYPE_ARB\0" + "GL_GEOMETRY_OUTPUT_TYPE\0" "GL_GEOMETRY_OUTPUT_TYPE_ARB\0" + "GL_GEOMETRY_SHADER\0" "GL_GEOMETRY_SHADER_ARB\0" + "GL_GEOMETRY_VERTICES_OUT\0" "GL_GEOMETRY_VERTICES_OUT_ARB\0" "GL_GEQUAL\0" "GL_GREATER\0" "GL_GREEN\0" "GL_GREEN_BIAS\0" "GL_GREEN_BITS\0" + "GL_GREEN_INTEGER\0" "GL_GREEN_INTEGER_EXT\0" "GL_GREEN_SCALE\0" "GL_HALF_FLOAT\0" @@ -766,18 +798,27 @@ LONGSTRING static const char enum_string_table[] = "GL_INTENSITY8UI_EXT\0" "GL_INTENSITY8_EXT\0" "GL_INTENSITY_EXT\0" + "GL_INTERLEAVED_ATTRIBS\0" "GL_INTERLEAVED_ATTRIBS_EXT\0" "GL_INTERPOLATE\0" "GL_INTERPOLATE_ARB\0" "GL_INTERPOLATE_EXT\0" "GL_INT_10_10_10_2_OES\0" + "GL_INT_SAMPLER_1D\0" + "GL_INT_SAMPLER_1D_ARRAY\0" "GL_INT_SAMPLER_1D_ARRAY_EXT\0" "GL_INT_SAMPLER_1D_EXT\0" + "GL_INT_SAMPLER_2D\0" + "GL_INT_SAMPLER_2D_ARRAY\0" "GL_INT_SAMPLER_2D_ARRAY_EXT\0" "GL_INT_SAMPLER_2D_EXT\0" + "GL_INT_SAMPLER_2D_RECT\0" "GL_INT_SAMPLER_2D_RECT_EXT\0" + "GL_INT_SAMPLER_3D\0" "GL_INT_SAMPLER_3D_EXT\0" + "GL_INT_SAMPLER_BUFFER\0" "GL_INT_SAMPLER_BUFFER_EXT\0" + "GL_INT_SAMPLER_CUBE\0" "GL_INT_SAMPLER_CUBE_EXT\0" "GL_INT_VEC2\0" "GL_INT_VEC2_ARB\0" @@ -823,6 +864,7 @@ LONGSTRING static const char enum_string_table[] = "GL_LINEAR_MIPMAP_LINEAR\0" "GL_LINEAR_MIPMAP_NEAREST\0" "GL_LINES\0" + "GL_LINES_ADJACENCY\0" "GL_LINES_ADJACENCY_ARB\0" "GL_LINE_BIT\0" "GL_LINE_LOOP\0" @@ -833,6 +875,7 @@ LONGSTRING static const char enum_string_table[] = "GL_LINE_STIPPLE_PATTERN\0" "GL_LINE_STIPPLE_REPEAT\0" "GL_LINE_STRIP\0" + "GL_LINE_STRIP_ADJACENCY\0" "GL_LINE_STRIP_ADJACENCY_ARB\0" "GL_LINE_TOKEN\0" "GL_LINE_WIDTH\0" @@ -885,6 +928,7 @@ LONGSTRING static const char enum_string_table[] = "GL_LUMINANCE_ALPHA8UI_EXT\0" "GL_LUMINANCE_ALPHA_INTEGER_EXT\0" "GL_LUMINANCE_INTEGER_EXT\0" + "GL_MAJOR_VERSION\0" "GL_MAP1_COLOR_4\0" "GL_MAP1_GRID_DOMAIN\0" "GL_MAP1_GRID_SEGMENTS\0" @@ -1004,11 +1048,13 @@ LONGSTRING static const char enum_string_table[] = "GL_MAX\0" "GL_MAX_3D_TEXTURE_SIZE\0" "GL_MAX_3D_TEXTURE_SIZE_OES\0" + "GL_MAX_ARRAY_TEXTURE_LAYERS\0" "GL_MAX_ARRAY_TEXTURE_LAYERS_EXT\0" "GL_MAX_ATTRIB_STACK_DEPTH\0" "GL_MAX_CLIENT_ATTRIB_STACK_DEPTH\0" "GL_MAX_CLIPMAP_DEPTH_SGIX\0" "GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX\0" + "GL_MAX_CLIP_DISTANCES\0" "GL_MAX_CLIP_PLANES\0" "GL_MAX_COLOR_ATTACHMENTS\0" "GL_MAX_COLOR_ATTACHMENTS_EXT\0" @@ -1030,12 +1076,19 @@ LONGSTRING static const char enum_string_table[] = "GL_MAX_ELEMENTS_VERTICES\0" "GL_MAX_EVAL_ORDER\0" "GL_MAX_EXT\0" + "GL_MAX_FRAGMENT_INPUT_COMPONENTS\0" "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS\0" "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB\0" "GL_MAX_FRAGMENT_UNIFORM_VECTORS\0" + "GL_MAX_GEOMETRY_INPUT_COMPONENTS\0" + "GL_MAX_GEOMETRY_OUTPUT_COMPONENTS\0" + "GL_MAX_GEOMETRY_OUTPUT_VERTICES\0" "GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB\0" + "GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS\0" "GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB\0" + "GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS\0" "GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB\0" + "GL_MAX_GEOMETRY_UNIFORM_COMPONENTS\0" "GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB\0" "GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB\0" "GL_MAX_LIGHTS\0" @@ -1069,10 +1122,12 @@ LONGSTRING static const char enum_string_table[] = "GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB\0" "GL_MAX_PROGRAM_PARAMETERS_ARB\0" "GL_MAX_PROGRAM_TEMPORARIES_ARB\0" + "GL_MAX_PROGRAM_TEXEL_OFFSET\0" "GL_MAX_PROGRAM_TEXEL_OFFSET_EXT\0" "GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB\0" "GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB\0" "GL_MAX_PROJECTION_STACK_DEPTH\0" + "GL_MAX_RECTANGLE_TEXTURE_SIZE\0" "GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB\0" "GL_MAX_RECTANGLE_TEXTURE_SIZE_NV\0" "GL_MAX_RENDERBUFFER_SIZE\0" @@ -1083,6 +1138,7 @@ LONGSTRING static const char enum_string_table[] = "GL_MAX_SERVER_WAIT_TIMEOUT\0" "GL_MAX_SHININESS_NV\0" "GL_MAX_SPOT_EXPONENT_NV\0" + "GL_MAX_TEXTURE_BUFFER_SIZE\0" "GL_MAX_TEXTURE_COORDS\0" "GL_MAX_TEXTURE_COORDS_ARB\0" "GL_MAX_TEXTURE_IMAGE_UNITS\0" @@ -1096,8 +1152,11 @@ LONGSTRING static const char enum_string_table[] = "GL_MAX_TEXTURE_UNITS_ARB\0" "GL_MAX_TRACK_MATRICES_NV\0" "GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV\0" + "GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS\0" "GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT\0" + "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS\0" "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT\0" + "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS\0" "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT\0" "GL_MAX_VARYING_COMPONENTS\0" "GL_MAX_VARYING_FLOATS\0" @@ -1105,6 +1164,7 @@ LONGSTRING static const char enum_string_table[] = "GL_MAX_VARYING_VECTORS\0" "GL_MAX_VERTEX_ATTRIBS\0" "GL_MAX_VERTEX_ATTRIBS_ARB\0" + "GL_MAX_VERTEX_OUTPUT_COMPONENTS\0" "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS\0" "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB\0" "GL_MAX_VERTEX_UNIFORM_COMPONENTS\0" @@ -1123,7 +1183,9 @@ LONGSTRING static const char enum_string_table[] = "GL_MINMAX_FORMAT_EXT\0" "GL_MINMAX_SINK\0" "GL_MINMAX_SINK_EXT\0" + "GL_MINOR_VERSION\0" "GL_MIN_EXT\0" + "GL_MIN_PROGRAM_TEXEL_OFFSET\0" "GL_MIN_PROGRAM_TEXEL_OFFSET_EXT\0" "GL_MIRRORED_REPEAT\0" "GL_MIRRORED_REPEAT_ARB\0" @@ -1211,6 +1273,7 @@ LONGSTRING static const char enum_string_table[] = "GL_NO_ERROR\0" "GL_NUM_COMPRESSED_TEXTURE_FORMATS\0" "GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB\0" + "GL_NUM_EXTENSIONS\0" "GL_NUM_PROGRAM_BINARY_FORMATS_OES\0" "GL_NUM_SHADER_BINARY_FORMATS\0" "GL_OBJECT_ACTIVE_ATTRIBUTES_ARB\0" @@ -1410,7 +1473,10 @@ LONGSTRING static const char enum_string_table[] = "GL_PRIMARY_COLOR\0" "GL_PRIMARY_COLOR_ARB\0" "GL_PRIMARY_COLOR_EXT\0" + "GL_PRIMITIVES_GENERATED\0" "GL_PRIMITIVES_GENERATED_EXT\0" + "GL_PRIMITIVE_RESTART\0" + "GL_PRIMITIVE_RESTART_INDEX\0" "GL_PRIMITIVE_RESTART_INDEX_NV\0" "GL_PRIMITIVE_RESTART_NV\0" "GL_PROGRAM_ADDRESS_REGISTERS_ARB\0" @@ -1438,6 +1504,7 @@ LONGSTRING static const char enum_string_table[] = "GL_PROGRAM_OBJECT_ARB\0" "GL_PROGRAM_PARAMETERS_ARB\0" "GL_PROGRAM_PARAMETER_NV\0" + "GL_PROGRAM_POINT_SIZE\0" "GL_PROGRAM_POINT_SIZE_ARB\0" "GL_PROGRAM_RESIDENT_NV\0" "GL_PROGRAM_STRING_ARB\0" @@ -1459,15 +1526,18 @@ LONGSTRING static const char enum_string_table[] = "GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE\0" "GL_PROXY_POST_CONVOLUTION_COLOR_TABLE\0" "GL_PROXY_TEXTURE_1D\0" + "GL_PROXY_TEXTURE_1D_ARRAY\0" "GL_PROXY_TEXTURE_1D_ARRAY_EXT\0" "GL_PROXY_TEXTURE_1D_EXT\0" "GL_PROXY_TEXTURE_2D\0" + "GL_PROXY_TEXTURE_2D_ARRAY\0" "GL_PROXY_TEXTURE_2D_ARRAY_EXT\0" "GL_PROXY_TEXTURE_2D_EXT\0" "GL_PROXY_TEXTURE_3D\0" "GL_PROXY_TEXTURE_COLOR_TABLE_SGI\0" "GL_PROXY_TEXTURE_CUBE_MAP\0" "GL_PROXY_TEXTURE_CUBE_MAP_ARB\0" + "GL_PROXY_TEXTURE_RECTANGLE\0" "GL_PROXY_TEXTURE_RECTANGLE_ARB\0" "GL_PROXY_TEXTURE_RECTANGLE_NV\0" "GL_PURGEABLE_APPLE\0" @@ -1478,18 +1548,26 @@ LONGSTRING static const char enum_string_table[] = "GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT\0" "GL_QUAD_MESH_SUN\0" "GL_QUAD_STRIP\0" + "GL_QUERY_BY_REGION_NO_WAIT\0" "GL_QUERY_BY_REGION_NO_WAIT_NV\0" + "GL_QUERY_BY_REGION_WAIT\0" "GL_QUERY_BY_REGION_WAIT_NV\0" "GL_QUERY_COUNTER_BITS\0" "GL_QUERY_COUNTER_BITS_ARB\0" + "GL_QUERY_NO_WAIT\0" "GL_QUERY_NO_WAIT_NV\0" "GL_QUERY_RESULT\0" "GL_QUERY_RESULT_ARB\0" "GL_QUERY_RESULT_AVAILABLE\0" "GL_QUERY_RESULT_AVAILABLE_ARB\0" + "GL_QUERY_WAIT\0" "GL_QUERY_WAIT_NV\0" "GL_R\0" + "GL_R11F_G11F_B10F\0" + "GL_R16_SNORM\0" "GL_R3_G3_B2\0" + "GL_R8_SNORM\0" + "GL_RASTERIZER_DISCARD\0" "GL_RASTERIZER_DISCARD_EXT\0" "GL_RASTER_POSITION_UNCLIPPED_IBM\0" "GL_READ_BUFFER\0" @@ -1506,8 +1584,10 @@ LONGSTRING static const char enum_string_table[] = "GL_REDUCE_EXT\0" "GL_RED_BIAS\0" "GL_RED_BITS\0" + "GL_RED_INTEGER\0" "GL_RED_INTEGER_EXT\0" "GL_RED_SCALE\0" + "GL_RED_SNORM\0" "GL_REFLECTION_MAP\0" "GL_REFLECTION_MAP_ARB\0" "GL_REFLECTION_MAP_NV\0" @@ -1553,6 +1633,8 @@ LONGSTRING static const char enum_string_table[] = "GL_RESCALE_NORMAL_EXT\0" "GL_RETAINED_APPLE\0" "GL_RETURN\0" + "GL_RG16_SNORM\0" + "GL_RG8_SNORM\0" "GL_RGB\0" "GL_RGB10\0" "GL_RGB10_A2\0" @@ -1561,11 +1643,18 @@ LONGSTRING static const char enum_string_table[] = "GL_RGB12\0" "GL_RGB12_EXT\0" "GL_RGB16\0" + "GL_RGB16F\0" + "GL_RGB16I\0" "GL_RGB16I_EXT\0" + "GL_RGB16UI\0" "GL_RGB16UI_EXT\0" "GL_RGB16_EXT\0" + "GL_RGB16_SNORM\0" "GL_RGB2_EXT\0" + "GL_RGB32F\0" + "GL_RGB32I\0" "GL_RGB32I_EXT\0" + "GL_RGB32UI\0" "GL_RGB32UI_EXT\0" "GL_RGB4\0" "GL_RGB4_EXT\0" @@ -1578,20 +1667,31 @@ LONGSTRING static const char enum_string_table[] = "GL_RGB5_A1_OES\0" "GL_RGB5_EXT\0" "GL_RGB8\0" + "GL_RGB8I\0" "GL_RGB8I_EXT\0" + "GL_RGB8UI\0" "GL_RGB8UI_EXT\0" "GL_RGB8_EXT\0" "GL_RGB8_OES\0" + "GL_RGB8_SNORM\0" + "GL_RGB9_E5\0" "GL_RGBA\0" "GL_RGBA12\0" "GL_RGBA12_EXT\0" "GL_RGBA16\0" + "GL_RGBA16F\0" + "GL_RGBA16I\0" "GL_RGBA16I_EXT\0" + "GL_RGBA16UI\0" "GL_RGBA16UI_EXT\0" "GL_RGBA16_EXT\0" + "GL_RGBA16_SNORM\0" "GL_RGBA2\0" "GL_RGBA2_EXT\0" + "GL_RGBA32F\0" + "GL_RGBA32I\0" "GL_RGBA32I_EXT\0" + "GL_RGBA32UI\0" "GL_RGBA32UI_EXT\0" "GL_RGBA4\0" "GL_RGBA4_DXT5_S3TC\0" @@ -1599,36 +1699,50 @@ LONGSTRING static const char enum_string_table[] = "GL_RGBA4_OES\0" "GL_RGBA4_S3TC\0" "GL_RGBA8\0" + "GL_RGBA8I\0" "GL_RGBA8I_EXT\0" + "GL_RGBA8UI\0" "GL_RGBA8UI_EXT\0" "GL_RGBA8_EXT\0" "GL_RGBA8_OES\0" "GL_RGBA8_SNORM\0" "GL_RGBA_DXT5_S3TC\0" + "GL_RGBA_INTEGER\0" "GL_RGBA_INTEGER_EXT\0" "GL_RGBA_INTEGER_MODE_EXT\0" "GL_RGBA_MODE\0" "GL_RGBA_S3TC\0" "GL_RGBA_SNORM\0" + "GL_RGB_INTEGER\0" "GL_RGB_INTEGER_EXT\0" "GL_RGB_S3TC\0" "GL_RGB_SCALE\0" "GL_RGB_SCALE_ARB\0" "GL_RGB_SCALE_EXT\0" + "GL_RGB_SNORM\0" + "GL_RG_SNORM\0" "GL_RIGHT\0" "GL_S\0" "GL_SAMPLER_1D\0" + "GL_SAMPLER_1D_ARRAY\0" "GL_SAMPLER_1D_ARRAY_EXT\0" + "GL_SAMPLER_1D_ARRAY_SHADOW\0" "GL_SAMPLER_1D_ARRAY_SHADOW_EXT\0" "GL_SAMPLER_1D_SHADOW\0" "GL_SAMPLER_2D\0" + "GL_SAMPLER_2D_ARRAY\0" "GL_SAMPLER_2D_ARRAY_EXT\0" + "GL_SAMPLER_2D_ARRAY_SHADOW\0" "GL_SAMPLER_2D_ARRAY_SHADOW_EXT\0" + "GL_SAMPLER_2D_RECT\0" + "GL_SAMPLER_2D_RECT_SHADOW\0" "GL_SAMPLER_2D_SHADOW\0" "GL_SAMPLER_3D\0" "GL_SAMPLER_3D_OES\0" + "GL_SAMPLER_BUFFER\0" "GL_SAMPLER_BUFFER_EXT\0" "GL_SAMPLER_CUBE\0" + "GL_SAMPLER_CUBE_SHADOW\0" "GL_SAMPLER_CUBE_SHADOW_EXT\0" "GL_SAMPLES\0" "GL_SAMPLES_3DFX\0" @@ -1662,6 +1776,7 @@ LONGSTRING static const char enum_string_table[] = "GL_SELECTION_BUFFER_POINTER\0" "GL_SELECTION_BUFFER_SIZE\0" "GL_SEPARABLE_2D\0" + "GL_SEPARATE_ATTRIBS\0" "GL_SEPARATE_ATTRIBS_EXT\0" "GL_SEPARATE_SPECULAR_COLOR\0" "GL_SEPARATE_SPECULAR_COLOR_EXT\0" @@ -1753,6 +1868,7 @@ LONGSTRING static const char enum_string_table[] = "GL_STENCIL_BACK_VALUE_MASK\0" "GL_STENCIL_BACK_WRITEMASK\0" "GL_STENCIL_BITS\0" + "GL_STENCIL_BUFFER\0" "GL_STENCIL_BUFFER_BIT\0" "GL_STENCIL_CLEAR_VALUE\0" "GL_STENCIL_FAIL\0" @@ -1871,8 +1987,10 @@ LONGSTRING static const char enum_string_table[] = "GL_TEXTURE9\0" "GL_TEXTURE9_ARB\0" "GL_TEXTURE_1D\0" + "GL_TEXTURE_1D_ARRAY\0" "GL_TEXTURE_1D_ARRAY_EXT\0" "GL_TEXTURE_2D\0" + "GL_TEXTURE_2D_ARRAY\0" "GL_TEXTURE_2D_ARRAY_EXT\0" "GL_TEXTURE_3D\0" "GL_TEXTURE_3D_OES\0" @@ -1880,14 +1998,18 @@ LONGSTRING static const char enum_string_table[] = "GL_TEXTURE_ALPHA_SIZE_EXT\0" "GL_TEXTURE_BASE_LEVEL\0" "GL_TEXTURE_BINDING_1D\0" + "GL_TEXTURE_BINDING_1D_ARRAY\0" "GL_TEXTURE_BINDING_1D_ARRAY_EXT\0" "GL_TEXTURE_BINDING_2D\0" + "GL_TEXTURE_BINDING_2D_ARRAY\0" "GL_TEXTURE_BINDING_2D_ARRAY_EXT\0" "GL_TEXTURE_BINDING_3D\0" "GL_TEXTURE_BINDING_3D_OES\0" + "GL_TEXTURE_BINDING_BUFFER\0" "GL_TEXTURE_BINDING_CUBE_MAP\0" "GL_TEXTURE_BINDING_CUBE_MAP_ARB\0" "GL_TEXTURE_BINDING_CUBE_MAP_OES\0" + "GL_TEXTURE_BINDING_RECTANGLE\0" "GL_TEXTURE_BINDING_RECTANGLE_ARB\0" "GL_TEXTURE_BINDING_RECTANGLE_NV\0" "GL_TEXTURE_BIT\0" @@ -1895,6 +2017,9 @@ LONGSTRING static const char enum_string_table[] = "GL_TEXTURE_BLUE_SIZE_EXT\0" "GL_TEXTURE_BORDER\0" "GL_TEXTURE_BORDER_COLOR\0" + "GL_TEXTURE_BUFFER\0" + "GL_TEXTURE_BUFFER_DATA_STORE_BINDING\0" + "GL_TEXTURE_BUFFER_FORMAT\0" "GL_TEXTURE_CLIPMAP_CENTER_SGIX\0" "GL_TEXTURE_CLIPMAP_DEPTH_SGIX\0" "GL_TEXTURE_CLIPMAP_FRAME_SGIX\0" @@ -1993,11 +2118,13 @@ LONGSTRING static const char enum_string_table[] = "GL_TEXTURE_PRIORITY\0" "GL_TEXTURE_RANGE_LENGTH_APPLE\0" "GL_TEXTURE_RANGE_POINTER_APPLE\0" + "GL_TEXTURE_RECTANGLE\0" "GL_TEXTURE_RECTANGLE_ARB\0" "GL_TEXTURE_RECTANGLE_NV\0" "GL_TEXTURE_RED_SIZE\0" "GL_TEXTURE_RED_SIZE_EXT\0" "GL_TEXTURE_RESIDENT\0" + "GL_TEXTURE_SHARED_SIZE\0" "GL_TEXTURE_STACK_DEPTH\0" "GL_TEXTURE_STENCIL_SIZE\0" "GL_TEXTURE_STENCIL_SIZE_EXT\0" @@ -2016,15 +2143,23 @@ LONGSTRING static const char enum_string_table[] = "GL_TRANSFORM_BIT\0" "GL_TRANSFORM_FEEDBACK\0" "GL_TRANSFORM_FEEDBACK_BINDING\0" + "GL_TRANSFORM_FEEDBACK_BUFFER\0" "GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE\0" + "GL_TRANSFORM_FEEDBACK_BUFFER_BINDING\0" "GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT\0" "GL_TRANSFORM_FEEDBACK_BUFFER_EXT\0" + "GL_TRANSFORM_FEEDBACK_BUFFER_MODE\0" "GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT\0" "GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED\0" + "GL_TRANSFORM_FEEDBACK_BUFFER_SIZE\0" "GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT\0" + "GL_TRANSFORM_FEEDBACK_BUFFER_START\0" "GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT\0" + "GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN\0" "GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT\0" + "GL_TRANSFORM_FEEDBACK_VARYINGS\0" "GL_TRANSFORM_FEEDBACK_VARYINGS_EXT\0" + "GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH\0" "GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT\0" "GL_TRANSPOSE_COLOR_MATRIX\0" "GL_TRANSPOSE_COLOR_MATRIX_ARB\0" @@ -2037,10 +2172,12 @@ LONGSTRING static const char enum_string_table[] = "GL_TRANSPOSE_TEXTURE_MATRIX\0" "GL_TRANSPOSE_TEXTURE_MATRIX_ARB\0" "GL_TRIANGLES\0" + "GL_TRIANGLES_ADJACENCY\0" "GL_TRIANGLES_ADJACENCY_ARB\0" "GL_TRIANGLE_FAN\0" "GL_TRIANGLE_MESH_SUN\0" "GL_TRIANGLE_STRIP\0" + "GL_TRIANGLE_STRIP_ADJACENCY\0" "GL_TRIANGLE_STRIP_ADJACENCY_ARB\0" "GL_TRUE\0" "GL_UNDEFINED_APPLE\0" @@ -2057,6 +2194,7 @@ LONGSTRING static const char enum_string_table[] = "GL_UNSIGNED_BYTE_2_3_3_REV\0" "GL_UNSIGNED_BYTE_3_3_2\0" "GL_UNSIGNED_INT\0" + "GL_UNSIGNED_INT_10F_11F_11F_REV\0" "GL_UNSIGNED_INT_10_10_10_2\0" "GL_UNSIGNED_INT_10_10_10_2_OES\0" "GL_UNSIGNED_INT_24_8\0" @@ -2065,18 +2203,30 @@ LONGSTRING static const char enum_string_table[] = "GL_UNSIGNED_INT_24_8_OES\0" "GL_UNSIGNED_INT_2_10_10_10_REV\0" "GL_UNSIGNED_INT_2_10_10_10_REV_EXT\0" + "GL_UNSIGNED_INT_5_9_9_9_REV\0" "GL_UNSIGNED_INT_8_8_8_8\0" "GL_UNSIGNED_INT_8_8_8_8_REV\0" + "GL_UNSIGNED_INT_SAMPLER_1D\0" + "GL_UNSIGNED_INT_SAMPLER_1D_ARRAY\0" "GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT\0" "GL_UNSIGNED_INT_SAMPLER_1D_EXT\0" + "GL_UNSIGNED_INT_SAMPLER_2D\0" + "GL_UNSIGNED_INT_SAMPLER_2D_ARRAY\0" "GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT\0" "GL_UNSIGNED_INT_SAMPLER_2D_EXT\0" + "GL_UNSIGNED_INT_SAMPLER_2D_RECT\0" "GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT\0" + "GL_UNSIGNED_INT_SAMPLER_3D\0" "GL_UNSIGNED_INT_SAMPLER_3D_EXT\0" + "GL_UNSIGNED_INT_SAMPLER_BUFFER\0" "GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT\0" + "GL_UNSIGNED_INT_SAMPLER_CUBE\0" "GL_UNSIGNED_INT_SAMPLER_CUBE_EXT\0" + "GL_UNSIGNED_INT_VEC2\0" "GL_UNSIGNED_INT_VEC2_EXT\0" + "GL_UNSIGNED_INT_VEC3\0" "GL_UNSIGNED_INT_VEC3_EXT\0" + "GL_UNSIGNED_INT_VEC4\0" "GL_UNSIGNED_INT_VEC4_EXT\0" "GL_UNSIGNED_NORMALIZED\0" "GL_UNSIGNED_SHORT\0" @@ -2127,6 +2277,7 @@ LONGSTRING static const char enum_string_table[] = "GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB\0" "GL_VERTEX_ATTRIB_ARRAY_ENABLED\0" "GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB\0" + "GL_VERTEX_ATTRIB_ARRAY_INTEGER\0" "GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT\0" "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED\0" "GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB\0" @@ -2181,7 +2332,7 @@ LONGSTRING static const char enum_string_table[] = "GL_ZOOM_Y\0" ; -static const enum_elt all_enums[2143] = +static const enum_elt all_enums[2294] = { { 0, 0x00000600 }, /* GL_2D */ { 6, 0x00001407 }, /* GL_2_BYTES */ @@ -2265,3570 +2416,3772 @@ static const enum_elt all_enums[2143] = { 1329, 0x000080E0 }, /* GL_BGR */ { 1336, 0x000080E1 }, /* GL_BGRA */ { 1344, 0x000080E1 }, /* GL_BGRA_EXT */ - { 1356, 0x00008D9B }, /* GL_BGRA_INTEGER_EXT */ - { 1376, 0x00008D9A }, /* GL_BGR_INTEGER_EXT */ - { 1395, 0x00001A00 }, /* GL_BITMAP */ - { 1405, 0x00000704 }, /* GL_BITMAP_TOKEN */ - { 1421, 0x00000BE2 }, /* GL_BLEND */ - { 1430, 0x00008005 }, /* GL_BLEND_COLOR */ - { 1445, 0x00008005 }, /* GL_BLEND_COLOR_EXT */ - { 1464, 0x00000BE0 }, /* GL_BLEND_DST */ - { 1477, 0x000080CA }, /* GL_BLEND_DST_ALPHA */ - { 1496, 0x000080CA }, /* GL_BLEND_DST_ALPHA_OES */ - { 1519, 0x000080C8 }, /* GL_BLEND_DST_RGB */ - { 1536, 0x000080C8 }, /* GL_BLEND_DST_RGB_OES */ - { 1557, 0x00008009 }, /* GL_BLEND_EQUATION */ - { 1575, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA */ - { 1599, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA_EXT */ - { 1627, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA_OES */ - { 1655, 0x00008009 }, /* GL_BLEND_EQUATION_EXT */ - { 1677, 0x00008009 }, /* GL_BLEND_EQUATION_OES */ - { 1699, 0x00008009 }, /* GL_BLEND_EQUATION_RGB */ - { 1721, 0x00008009 }, /* GL_BLEND_EQUATION_RGB_EXT */ - { 1747, 0x00008009 }, /* GL_BLEND_EQUATION_RGB_OES */ - { 1773, 0x00000BE1 }, /* GL_BLEND_SRC */ - { 1786, 0x000080CB }, /* GL_BLEND_SRC_ALPHA */ - { 1805, 0x000080CB }, /* GL_BLEND_SRC_ALPHA_OES */ - { 1828, 0x000080C9 }, /* GL_BLEND_SRC_RGB */ - { 1845, 0x000080C9 }, /* GL_BLEND_SRC_RGB_OES */ - { 1866, 0x00001905 }, /* GL_BLUE */ - { 1874, 0x00000D1B }, /* GL_BLUE_BIAS */ - { 1887, 0x00000D54 }, /* GL_BLUE_BITS */ - { 1900, 0x00008D96 }, /* GL_BLUE_INTEGER_EXT */ - { 1920, 0x00000D1A }, /* GL_BLUE_SCALE */ - { 1934, 0x00008B56 }, /* GL_BOOL */ - { 1942, 0x00008B56 }, /* GL_BOOL_ARB */ - { 1954, 0x00008B57 }, /* GL_BOOL_VEC2 */ - { 1967, 0x00008B57 }, /* GL_BOOL_VEC2_ARB */ - { 1984, 0x00008B58 }, /* GL_BOOL_VEC3 */ - { 1997, 0x00008B58 }, /* GL_BOOL_VEC3_ARB */ - { 2014, 0x00008B59 }, /* GL_BOOL_VEC4 */ - { 2027, 0x00008B59 }, /* GL_BOOL_VEC4_ARB */ - { 2044, 0x000088BB }, /* GL_BUFFER_ACCESS */ - { 2061, 0x000088BB }, /* GL_BUFFER_ACCESS_ARB */ - { 2082, 0x000088BB }, /* GL_BUFFER_ACCESS_OES */ - { 2103, 0x00008A13 }, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */ - { 2134, 0x000088BC }, /* GL_BUFFER_MAPPED */ - { 2151, 0x000088BC }, /* GL_BUFFER_MAPPED_ARB */ - { 2172, 0x000088BC }, /* GL_BUFFER_MAPPED_OES */ - { 2193, 0x000088BD }, /* GL_BUFFER_MAP_POINTER */ - { 2215, 0x000088BD }, /* GL_BUFFER_MAP_POINTER_ARB */ - { 2241, 0x000088BD }, /* GL_BUFFER_MAP_POINTER_OES */ - { 2267, 0x000085B3 }, /* GL_BUFFER_OBJECT_APPLE */ - { 2290, 0x00008A12 }, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */ - { 2324, 0x00008764 }, /* GL_BUFFER_SIZE */ - { 2339, 0x00008764 }, /* GL_BUFFER_SIZE_ARB */ - { 2358, 0x00008765 }, /* GL_BUFFER_USAGE */ - { 2374, 0x00008765 }, /* GL_BUFFER_USAGE_ARB */ - { 2394, 0x0000877B }, /* GL_BUMP_ENVMAP_ATI */ - { 2413, 0x00008777 }, /* GL_BUMP_NUM_TEX_UNITS_ATI */ - { 2439, 0x00008775 }, /* GL_BUMP_ROT_MATRIX_ATI */ - { 2462, 0x00008776 }, /* GL_BUMP_ROT_MATRIX_SIZE_ATI */ - { 2490, 0x0000877C }, /* GL_BUMP_TARGET_ATI */ - { 2509, 0x00008778 }, /* GL_BUMP_TEX_UNITS_ATI */ - { 2531, 0x00001400 }, /* GL_BYTE */ - { 2539, 0x00002A24 }, /* GL_C3F_V3F */ - { 2550, 0x00002A26 }, /* GL_C4F_N3F_V3F */ - { 2565, 0x00002A22 }, /* GL_C4UB_V2F */ - { 2577, 0x00002A23 }, /* GL_C4UB_V3F */ - { 2589, 0x00000901 }, /* GL_CCW */ - { 2596, 0x00002900 }, /* GL_CLAMP */ - { 2605, 0x0000812D }, /* GL_CLAMP_TO_BORDER */ - { 2624, 0x0000812D }, /* GL_CLAMP_TO_BORDER_ARB */ - { 2647, 0x0000812D }, /* GL_CLAMP_TO_BORDER_SGIS */ - { 2671, 0x0000812F }, /* GL_CLAMP_TO_EDGE */ - { 2688, 0x0000812F }, /* GL_CLAMP_TO_EDGE_SGIS */ - { 2710, 0x00001500 }, /* GL_CLEAR */ - { 2719, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE */ - { 2744, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE_ARB */ - { 2773, 0xFFFFFFFF }, /* GL_CLIENT_ALL_ATTRIB_BITS */ - { 2799, 0x00000BB1 }, /* GL_CLIENT_ATTRIB_STACK_DEPTH */ - { 2828, 0x00000001 }, /* GL_CLIENT_PIXEL_STORE_BIT */ - { 2854, 0x00000002 }, /* GL_CLIENT_VERTEX_ARRAY_BIT */ - { 2881, 0x00003000 }, /* GL_CLIP_PLANE0 */ - { 2896, 0x00003001 }, /* GL_CLIP_PLANE1 */ - { 2911, 0x00003002 }, /* GL_CLIP_PLANE2 */ - { 2926, 0x00003003 }, /* GL_CLIP_PLANE3 */ - { 2941, 0x00003004 }, /* GL_CLIP_PLANE4 */ - { 2956, 0x00003005 }, /* GL_CLIP_PLANE5 */ - { 2971, 0x000080F0 }, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */ - { 3004, 0x00000A00 }, /* GL_COEFF */ - { 3013, 0x00001800 }, /* GL_COLOR */ - { 3022, 0x00008076 }, /* GL_COLOR_ARRAY */ - { 3037, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING */ - { 3067, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING_ARB */ - { 3101, 0x00008090 }, /* GL_COLOR_ARRAY_POINTER */ - { 3124, 0x00008081 }, /* GL_COLOR_ARRAY_SIZE */ - { 3144, 0x00008083 }, /* GL_COLOR_ARRAY_STRIDE */ - { 3166, 0x00008082 }, /* GL_COLOR_ARRAY_TYPE */ - { 3186, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0 */ - { 3207, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_EXT */ - { 3232, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_OES */ - { 3257, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1 */ - { 3278, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10 */ - { 3300, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10_EXT */ - { 3326, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11 */ - { 3348, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11_EXT */ - { 3374, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12 */ - { 3396, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12_EXT */ - { 3422, 0x00008CED }, /* GL_COLOR_ATTACHMENT13 */ - { 3444, 0x00008CED }, /* GL_COLOR_ATTACHMENT13_EXT */ - { 3470, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14 */ - { 3492, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14_EXT */ - { 3518, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15 */ - { 3540, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15_EXT */ - { 3566, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1_EXT */ - { 3591, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2 */ - { 3612, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2_EXT */ - { 3637, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3 */ - { 3658, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3_EXT */ - { 3683, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4 */ - { 3704, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4_EXT */ - { 3729, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5 */ - { 3750, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5_EXT */ - { 3775, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6 */ - { 3796, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6_EXT */ - { 3821, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7 */ - { 3842, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7_EXT */ - { 3867, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8 */ - { 3888, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8_EXT */ - { 3913, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9 */ - { 3934, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9_EXT */ - { 3959, 0x00004000 }, /* GL_COLOR_BUFFER_BIT */ - { 3979, 0x00000C22 }, /* GL_COLOR_CLEAR_VALUE */ - { 4000, 0x00001900 }, /* GL_COLOR_INDEX */ - { 4015, 0x00001603 }, /* GL_COLOR_INDEXES */ - { 4032, 0x00000BF2 }, /* GL_COLOR_LOGIC_OP */ - { 4050, 0x00000B57 }, /* GL_COLOR_MATERIAL */ - { 4068, 0x00000B55 }, /* GL_COLOR_MATERIAL_FACE */ - { 4091, 0x00000B56 }, /* GL_COLOR_MATERIAL_PARAMETER */ - { 4119, 0x000080B1 }, /* GL_COLOR_MATRIX */ - { 4135, 0x000080B1 }, /* GL_COLOR_MATRIX_SGI */ - { 4155, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH */ - { 4183, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH_SGI */ - { 4215, 0x00008458 }, /* GL_COLOR_SUM */ - { 4228, 0x00008458 }, /* GL_COLOR_SUM_ARB */ - { 4245, 0x000080D0 }, /* GL_COLOR_TABLE */ - { 4260, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE */ - { 4286, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_EXT */ - { 4316, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_SGI */ - { 4346, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS */ - { 4366, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS_SGI */ - { 4390, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE */ - { 4415, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_EXT */ - { 4444, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_SGI */ - { 4473, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT */ - { 4495, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_EXT */ - { 4521, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_SGI */ - { 4547, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE */ - { 4573, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_EXT */ - { 4603, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_SGI */ - { 4633, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE */ - { 4663, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_EXT */ - { 4697, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_SGI */ - { 4731, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE */ - { 4761, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_EXT */ - { 4795, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_SGI */ - { 4829, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE */ - { 4853, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_EXT */ - { 4881, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_SGI */ - { 4909, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE */ - { 4930, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE_SGI */ - { 4955, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH */ - { 4976, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_EXT */ - { 5001, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_SGI */ - { 5026, 0x00000C23 }, /* GL_COLOR_WRITEMASK */ - { 5045, 0x00008570 }, /* GL_COMBINE */ - { 5056, 0x00008503 }, /* GL_COMBINE4 */ - { 5068, 0x00008572 }, /* GL_COMBINE_ALPHA */ - { 5085, 0x00008572 }, /* GL_COMBINE_ALPHA_ARB */ - { 5106, 0x00008572 }, /* GL_COMBINE_ALPHA_EXT */ - { 5127, 0x00008570 }, /* GL_COMBINE_ARB */ - { 5142, 0x00008570 }, /* GL_COMBINE_EXT */ - { 5157, 0x00008571 }, /* GL_COMBINE_RGB */ - { 5172, 0x00008571 }, /* GL_COMBINE_RGB_ARB */ - { 5191, 0x00008571 }, /* GL_COMBINE_RGB_EXT */ - { 5210, 0x0000884E }, /* GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT */ - { 5246, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE */ - { 5270, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE_ARB */ - { 5298, 0x00001300 }, /* GL_COMPILE */ - { 5309, 0x00001301 }, /* GL_COMPILE_AND_EXECUTE */ - { 5332, 0x00008B81 }, /* GL_COMPILE_STATUS */ - { 5350, 0x000084E9 }, /* GL_COMPRESSED_ALPHA */ - { 5370, 0x000084E9 }, /* GL_COMPRESSED_ALPHA_ARB */ - { 5394, 0x000084EC }, /* GL_COMPRESSED_INTENSITY */ - { 5418, 0x000084EC }, /* GL_COMPRESSED_INTENSITY_ARB */ - { 5446, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE */ - { 5470, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA */ - { 5500, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA_ARB */ - { 5534, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE_ARB */ - { 5562, 0x000084ED }, /* GL_COMPRESSED_RGB */ - { 5580, 0x000084EE }, /* GL_COMPRESSED_RGBA */ - { 5599, 0x000084EE }, /* GL_COMPRESSED_RGBA_ARB */ - { 5622, 0x000086B1 }, /* GL_COMPRESSED_RGBA_FXT1_3DFX */ - { 5651, 0x000083F1 }, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */ - { 5684, 0x000083F2 }, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */ - { 5717, 0x000083F3 }, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */ - { 5750, 0x000084ED }, /* GL_COMPRESSED_RGB_ARB */ - { 5772, 0x000086B0 }, /* GL_COMPRESSED_RGB_FXT1_3DFX */ - { 5800, 0x000083F0 }, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */ - { 5832, 0x00008C4A }, /* GL_COMPRESSED_SLUMINANCE */ - { 5857, 0x00008C4B }, /* GL_COMPRESSED_SLUMINANCE_ALPHA */ - { 5888, 0x00008C48 }, /* GL_COMPRESSED_SRGB */ - { 5907, 0x00008C49 }, /* GL_COMPRESSED_SRGB_ALPHA */ - { 5932, 0x000086A3 }, /* GL_COMPRESSED_TEXTURE_FORMATS */ - { 5962, 0x0000911C }, /* GL_CONDITION_SATISFIED */ - { 5985, 0x00008576 }, /* GL_CONSTANT */ - { 5997, 0x00008003 }, /* GL_CONSTANT_ALPHA */ - { 6015, 0x00008003 }, /* GL_CONSTANT_ALPHA_EXT */ - { 6037, 0x00008576 }, /* GL_CONSTANT_ARB */ - { 6053, 0x00001207 }, /* GL_CONSTANT_ATTENUATION */ - { 6077, 0x00008151 }, /* GL_CONSTANT_BORDER_HP */ - { 6099, 0x00008001 }, /* GL_CONSTANT_COLOR */ - { 6117, 0x00008001 }, /* GL_CONSTANT_COLOR_EXT */ - { 6139, 0x00008576 }, /* GL_CONSTANT_EXT */ - { 6155, 0x00008010 }, /* GL_CONVOLUTION_1D */ - { 6173, 0x00008011 }, /* GL_CONVOLUTION_2D */ - { 6191, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR */ - { 6219, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR_HP */ - { 6250, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE */ - { 6277, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE_EXT */ - { 6308, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS */ - { 6335, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS_EXT */ - { 6366, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE */ - { 6394, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE_EXT */ - { 6426, 0x00008017 }, /* GL_CONVOLUTION_FORMAT */ - { 6448, 0x00008017 }, /* GL_CONVOLUTION_FORMAT_EXT */ - { 6474, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT */ - { 6496, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT_EXT */ - { 6522, 0x00008018 }, /* GL_CONVOLUTION_WIDTH */ - { 6543, 0x00008018 }, /* GL_CONVOLUTION_WIDTH_EXT */ - { 6568, 0x00008862 }, /* GL_COORD_REPLACE */ - { 6585, 0x00008862 }, /* GL_COORD_REPLACE_ARB */ - { 6606, 0x00008862 }, /* GL_COORD_REPLACE_NV */ - { 6626, 0x00008862 }, /* GL_COORD_REPLACE_OES */ - { 6647, 0x00001503 }, /* GL_COPY */ - { 6655, 0x0000150C }, /* GL_COPY_INVERTED */ - { 6672, 0x00000706 }, /* GL_COPY_PIXEL_TOKEN */ - { 6692, 0x00008F36 }, /* GL_COPY_READ_BUFFER */ - { 6712, 0x00008F37 }, /* GL_COPY_WRITE_BUFFER */ - { 6733, 0x00000B44 }, /* GL_CULL_FACE */ - { 6746, 0x00000B45 }, /* GL_CULL_FACE_MODE */ - { 6764, 0x000081AA }, /* GL_CULL_VERTEX_EXT */ - { 6783, 0x000081AC }, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ - { 6815, 0x000081AB }, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ - { 6850, 0x00008626 }, /* GL_CURRENT_ATTRIB_NV */ - { 6871, 0x00000001 }, /* GL_CURRENT_BIT */ - { 6886, 0x00000B00 }, /* GL_CURRENT_COLOR */ - { 6903, 0x00008453 }, /* GL_CURRENT_FOG_COORD */ - { 6924, 0x00008453 }, /* GL_CURRENT_FOG_COORDINATE */ - { 6950, 0x00000B01 }, /* GL_CURRENT_INDEX */ - { 6967, 0x00008641 }, /* GL_CURRENT_MATRIX_ARB */ - { 6989, 0x00008845 }, /* GL_CURRENT_MATRIX_INDEX_ARB */ - { 7017, 0x00008641 }, /* GL_CURRENT_MATRIX_NV */ - { 7038, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ - { 7072, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_NV */ - { 7105, 0x00000B02 }, /* GL_CURRENT_NORMAL */ - { 7123, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_ARB */ - { 7153, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_OES */ - { 7183, 0x00008B8D }, /* GL_CURRENT_PROGRAM */ - { 7202, 0x00008865 }, /* GL_CURRENT_QUERY */ - { 7219, 0x00008865 }, /* GL_CURRENT_QUERY_ARB */ - { 7240, 0x00000B04 }, /* GL_CURRENT_RASTER_COLOR */ - { 7264, 0x00000B09 }, /* GL_CURRENT_RASTER_DISTANCE */ - { 7291, 0x00000B05 }, /* GL_CURRENT_RASTER_INDEX */ - { 7315, 0x00000B07 }, /* GL_CURRENT_RASTER_POSITION */ - { 7342, 0x00000B08 }, /* GL_CURRENT_RASTER_POSITION_VALID */ - { 7375, 0x0000845F }, /* GL_CURRENT_RASTER_SECONDARY_COLOR */ - { 7409, 0x00000B06 }, /* GL_CURRENT_RASTER_TEXTURE_COORDS */ - { 7442, 0x00008459 }, /* GL_CURRENT_SECONDARY_COLOR */ - { 7469, 0x00000B03 }, /* GL_CURRENT_TEXTURE_COORDS */ - { 7495, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB */ - { 7520, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB_ARB */ - { 7549, 0x000086A8 }, /* GL_CURRENT_WEIGHT_ARB */ - { 7571, 0x00000900 }, /* GL_CW */ - { 7577, 0x0000875B }, /* GL_DEBUG_ASSERT_MESA */ - { 7598, 0x00008759 }, /* GL_DEBUG_OBJECT_MESA */ - { 7619, 0x0000875A }, /* GL_DEBUG_PRINT_MESA */ - { 7639, 0x00002101 }, /* GL_DECAL */ - { 7648, 0x00001E03 }, /* GL_DECR */ - { 7656, 0x00008508 }, /* GL_DECR_WRAP */ - { 7669, 0x00008508 }, /* GL_DECR_WRAP_EXT */ - { 7686, 0x00008B80 }, /* GL_DELETE_STATUS */ - { 7703, 0x00001801 }, /* GL_DEPTH */ - { 7712, 0x000088F0 }, /* GL_DEPTH24_STENCIL8 */ - { 7732, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_EXT */ - { 7756, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_OES */ - { 7780, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT */ - { 7800, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_EXT */ - { 7824, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_OES */ - { 7848, 0x00000D1F }, /* GL_DEPTH_BIAS */ - { 7862, 0x00000D56 }, /* GL_DEPTH_BITS */ - { 7876, 0x00008891 }, /* GL_DEPTH_BOUNDS_EXT */ - { 7896, 0x00008890 }, /* GL_DEPTH_BOUNDS_TEST_EXT */ - { 7921, 0x00000100 }, /* GL_DEPTH_BUFFER_BIT */ - { 7941, 0x0000864F }, /* GL_DEPTH_CLAMP */ - { 7956, 0x0000864F }, /* GL_DEPTH_CLAMP_NV */ - { 7974, 0x00000B73 }, /* GL_DEPTH_CLEAR_VALUE */ - { 7995, 0x00001902 }, /* GL_DEPTH_COMPONENT */ - { 8014, 0x000081A5 }, /* GL_DEPTH_COMPONENT16 */ - { 8035, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_ARB */ - { 8060, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_OES */ - { 8085, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_SGIX */ - { 8111, 0x000081A6 }, /* GL_DEPTH_COMPONENT24 */ - { 8132, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_ARB */ - { 8157, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_OES */ - { 8182, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_SGIX */ - { 8208, 0x000081A7 }, /* GL_DEPTH_COMPONENT32 */ - { 8229, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_ARB */ - { 8254, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_OES */ - { 8279, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_SGIX */ - { 8305, 0x00000B74 }, /* GL_DEPTH_FUNC */ - { 8319, 0x00000B70 }, /* GL_DEPTH_RANGE */ - { 8334, 0x00000D1E }, /* GL_DEPTH_SCALE */ - { 8349, 0x000084F9 }, /* GL_DEPTH_STENCIL */ - { 8366, 0x0000821A }, /* GL_DEPTH_STENCIL_ATTACHMENT */ - { 8394, 0x000084F9 }, /* GL_DEPTH_STENCIL_EXT */ - { 8415, 0x000084F9 }, /* GL_DEPTH_STENCIL_NV */ - { 8435, 0x000084F9 }, /* GL_DEPTH_STENCIL_OES */ - { 8456, 0x0000886F }, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ - { 8484, 0x0000886E }, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ - { 8512, 0x00000B71 }, /* GL_DEPTH_TEST */ - { 8526, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE */ - { 8548, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE_ARB */ - { 8574, 0x00000B72 }, /* GL_DEPTH_WRITEMASK */ - { 8593, 0x00001201 }, /* GL_DIFFUSE */ - { 8604, 0x00000BD0 }, /* GL_DITHER */ - { 8614, 0x00000A02 }, /* GL_DOMAIN */ - { 8624, 0x00001100 }, /* GL_DONT_CARE */ - { 8637, 0x000086AE }, /* GL_DOT3_RGB */ - { 8649, 0x000086AF }, /* GL_DOT3_RGBA */ - { 8662, 0x000086AF }, /* GL_DOT3_RGBA_ARB */ - { 8679, 0x00008741 }, /* GL_DOT3_RGBA_EXT */ - { 8696, 0x000086AE }, /* GL_DOT3_RGB_ARB */ - { 8712, 0x00008740 }, /* GL_DOT3_RGB_EXT */ - { 8728, 0x0000140A }, /* GL_DOUBLE */ - { 8738, 0x00000C32 }, /* GL_DOUBLEBUFFER */ - { 8754, 0x00000C01 }, /* GL_DRAW_BUFFER */ - { 8769, 0x00008825 }, /* GL_DRAW_BUFFER0 */ - { 8785, 0x00008825 }, /* GL_DRAW_BUFFER0_ARB */ - { 8805, 0x00008825 }, /* GL_DRAW_BUFFER0_ATI */ - { 8825, 0x00008826 }, /* GL_DRAW_BUFFER1 */ - { 8841, 0x0000882F }, /* GL_DRAW_BUFFER10 */ - { 8858, 0x0000882F }, /* GL_DRAW_BUFFER10_ARB */ - { 8879, 0x0000882F }, /* GL_DRAW_BUFFER10_ATI */ - { 8900, 0x00008830 }, /* GL_DRAW_BUFFER11 */ - { 8917, 0x00008830 }, /* GL_DRAW_BUFFER11_ARB */ - { 8938, 0x00008830 }, /* GL_DRAW_BUFFER11_ATI */ - { 8959, 0x00008831 }, /* GL_DRAW_BUFFER12 */ - { 8976, 0x00008831 }, /* GL_DRAW_BUFFER12_ARB */ - { 8997, 0x00008831 }, /* GL_DRAW_BUFFER12_ATI */ - { 9018, 0x00008832 }, /* GL_DRAW_BUFFER13 */ - { 9035, 0x00008832 }, /* GL_DRAW_BUFFER13_ARB */ - { 9056, 0x00008832 }, /* GL_DRAW_BUFFER13_ATI */ - { 9077, 0x00008833 }, /* GL_DRAW_BUFFER14 */ - { 9094, 0x00008833 }, /* GL_DRAW_BUFFER14_ARB */ - { 9115, 0x00008833 }, /* GL_DRAW_BUFFER14_ATI */ - { 9136, 0x00008834 }, /* GL_DRAW_BUFFER15 */ - { 9153, 0x00008834 }, /* GL_DRAW_BUFFER15_ARB */ - { 9174, 0x00008834 }, /* GL_DRAW_BUFFER15_ATI */ - { 9195, 0x00008826 }, /* GL_DRAW_BUFFER1_ARB */ - { 9215, 0x00008826 }, /* GL_DRAW_BUFFER1_ATI */ - { 9235, 0x00008827 }, /* GL_DRAW_BUFFER2 */ - { 9251, 0x00008827 }, /* GL_DRAW_BUFFER2_ARB */ - { 9271, 0x00008827 }, /* GL_DRAW_BUFFER2_ATI */ - { 9291, 0x00008828 }, /* GL_DRAW_BUFFER3 */ - { 9307, 0x00008828 }, /* GL_DRAW_BUFFER3_ARB */ - { 9327, 0x00008828 }, /* GL_DRAW_BUFFER3_ATI */ - { 9347, 0x00008829 }, /* GL_DRAW_BUFFER4 */ - { 9363, 0x00008829 }, /* GL_DRAW_BUFFER4_ARB */ - { 9383, 0x00008829 }, /* GL_DRAW_BUFFER4_ATI */ - { 9403, 0x0000882A }, /* GL_DRAW_BUFFER5 */ - { 9419, 0x0000882A }, /* GL_DRAW_BUFFER5_ARB */ - { 9439, 0x0000882A }, /* GL_DRAW_BUFFER5_ATI */ - { 9459, 0x0000882B }, /* GL_DRAW_BUFFER6 */ - { 9475, 0x0000882B }, /* GL_DRAW_BUFFER6_ARB */ - { 9495, 0x0000882B }, /* GL_DRAW_BUFFER6_ATI */ - { 9515, 0x0000882C }, /* GL_DRAW_BUFFER7 */ - { 9531, 0x0000882C }, /* GL_DRAW_BUFFER7_ARB */ - { 9551, 0x0000882C }, /* GL_DRAW_BUFFER7_ATI */ - { 9571, 0x0000882D }, /* GL_DRAW_BUFFER8 */ - { 9587, 0x0000882D }, /* GL_DRAW_BUFFER8_ARB */ - { 9607, 0x0000882D }, /* GL_DRAW_BUFFER8_ATI */ - { 9627, 0x0000882E }, /* GL_DRAW_BUFFER9 */ - { 9643, 0x0000882E }, /* GL_DRAW_BUFFER9_ARB */ - { 9663, 0x0000882E }, /* GL_DRAW_BUFFER9_ATI */ - { 9683, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER */ - { 9703, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING */ - { 9731, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */ - { 9763, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER_EXT */ - { 9787, 0x00000705 }, /* GL_DRAW_PIXEL_TOKEN */ - { 9807, 0x00000304 }, /* GL_DST_ALPHA */ - { 9820, 0x00000306 }, /* GL_DST_COLOR */ - { 9833, 0x0000877A }, /* GL_DU8DV8_ATI */ - { 9847, 0x00008779 }, /* GL_DUDV_ATI */ - { 9859, 0x000088EA }, /* GL_DYNAMIC_COPY */ - { 9875, 0x000088EA }, /* GL_DYNAMIC_COPY_ARB */ - { 9895, 0x000088E8 }, /* GL_DYNAMIC_DRAW */ - { 9911, 0x000088E8 }, /* GL_DYNAMIC_DRAW_ARB */ - { 9931, 0x000088E9 }, /* GL_DYNAMIC_READ */ - { 9947, 0x000088E9 }, /* GL_DYNAMIC_READ_ARB */ - { 9967, 0x00000B43 }, /* GL_EDGE_FLAG */ - { 9980, 0x00008079 }, /* GL_EDGE_FLAG_ARRAY */ - { 9999, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ - { 10033, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB */ - { 10071, 0x00008093 }, /* GL_EDGE_FLAG_ARRAY_POINTER */ - { 10098, 0x0000808C }, /* GL_EDGE_FLAG_ARRAY_STRIDE */ - { 10124, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER */ - { 10148, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ - { 10180, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB */ - { 10216, 0x00001600 }, /* GL_EMISSION */ - { 10228, 0x00002000 }, /* GL_ENABLE_BIT */ - { 10242, 0x00000202 }, /* GL_EQUAL */ - { 10251, 0x00001509 }, /* GL_EQUIV */ - { 10260, 0x00010000 }, /* GL_EVAL_BIT */ - { 10272, 0x00000800 }, /* GL_EXP */ - { 10279, 0x00000801 }, /* GL_EXP2 */ - { 10287, 0x00001F03 }, /* GL_EXTENSIONS */ - { 10301, 0x00002400 }, /* GL_EYE_LINEAR */ - { 10315, 0x00002502 }, /* GL_EYE_PLANE */ - { 10328, 0x0000855C }, /* GL_EYE_PLANE_ABSOLUTE_NV */ - { 10353, 0x0000855B }, /* GL_EYE_RADIAL_NV */ - { 10370, 0x00000000 }, /* GL_FALSE */ - { 10379, 0x00001101 }, /* GL_FASTEST */ - { 10390, 0x00001C01 }, /* GL_FEEDBACK */ - { 10402, 0x00000DF0 }, /* GL_FEEDBACK_BUFFER_POINTER */ - { 10429, 0x00000DF1 }, /* GL_FEEDBACK_BUFFER_SIZE */ - { 10453, 0x00000DF2 }, /* GL_FEEDBACK_BUFFER_TYPE */ - { 10477, 0x00001B02 }, /* GL_FILL */ - { 10485, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION */ - { 10512, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION_EXT */ - { 10543, 0x0000140C }, /* GL_FIXED */ - { 10552, 0x0000140C }, /* GL_FIXED_OES */ - { 10565, 0x00001D00 }, /* GL_FLAT */ - { 10573, 0x00001406 }, /* GL_FLOAT */ - { 10582, 0x00008B5A }, /* GL_FLOAT_MAT2 */ - { 10596, 0x00008B5A }, /* GL_FLOAT_MAT2_ARB */ - { 10614, 0x00008B65 }, /* GL_FLOAT_MAT2x3 */ - { 10630, 0x00008B66 }, /* GL_FLOAT_MAT2x4 */ - { 10646, 0x00008B5B }, /* GL_FLOAT_MAT3 */ - { 10660, 0x00008B5B }, /* GL_FLOAT_MAT3_ARB */ - { 10678, 0x00008B67 }, /* GL_FLOAT_MAT3x2 */ - { 10694, 0x00008B68 }, /* GL_FLOAT_MAT3x4 */ - { 10710, 0x00008B5C }, /* GL_FLOAT_MAT4 */ - { 10724, 0x00008B5C }, /* GL_FLOAT_MAT4_ARB */ - { 10742, 0x00008B69 }, /* GL_FLOAT_MAT4x2 */ - { 10758, 0x00008B6A }, /* GL_FLOAT_MAT4x3 */ - { 10774, 0x00008B50 }, /* GL_FLOAT_VEC2 */ - { 10788, 0x00008B50 }, /* GL_FLOAT_VEC2_ARB */ - { 10806, 0x00008B51 }, /* GL_FLOAT_VEC3 */ - { 10820, 0x00008B51 }, /* GL_FLOAT_VEC3_ARB */ - { 10838, 0x00008B52 }, /* GL_FLOAT_VEC4 */ - { 10852, 0x00008B52 }, /* GL_FLOAT_VEC4_ARB */ - { 10870, 0x00000B60 }, /* GL_FOG */ - { 10877, 0x00000080 }, /* GL_FOG_BIT */ - { 10888, 0x00000B66 }, /* GL_FOG_COLOR */ - { 10901, 0x00008451 }, /* GL_FOG_COORD */ - { 10914, 0x00008451 }, /* GL_FOG_COORDINATE */ - { 10932, 0x00008457 }, /* GL_FOG_COORDINATE_ARRAY */ - { 10956, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ - { 10995, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB */ - { 11038, 0x00008456 }, /* GL_FOG_COORDINATE_ARRAY_POINTER */ - { 11070, 0x00008455 }, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ - { 11101, 0x00008454 }, /* GL_FOG_COORDINATE_ARRAY_TYPE */ - { 11130, 0x00008450 }, /* GL_FOG_COORDINATE_SOURCE */ - { 11155, 0x00008457 }, /* GL_FOG_COORD_ARRAY */ - { 11174, 0x0000889D }, /* GL_FOG_COORD_ARRAY_BUFFER_BINDING */ - { 11208, 0x00008456 }, /* GL_FOG_COORD_ARRAY_POINTER */ - { 11235, 0x00008455 }, /* GL_FOG_COORD_ARRAY_STRIDE */ - { 11261, 0x00008454 }, /* GL_FOG_COORD_ARRAY_TYPE */ - { 11285, 0x00008450 }, /* GL_FOG_COORD_SRC */ - { 11302, 0x00000B62 }, /* GL_FOG_DENSITY */ - { 11317, 0x0000855A }, /* GL_FOG_DISTANCE_MODE_NV */ - { 11341, 0x00000B64 }, /* GL_FOG_END */ - { 11352, 0x00000C54 }, /* GL_FOG_HINT */ - { 11364, 0x00000B61 }, /* GL_FOG_INDEX */ - { 11377, 0x00000B65 }, /* GL_FOG_MODE */ - { 11389, 0x00008198 }, /* GL_FOG_OFFSET_SGIX */ - { 11408, 0x00008199 }, /* GL_FOG_OFFSET_VALUE_SGIX */ - { 11433, 0x00000B63 }, /* GL_FOG_START */ - { 11446, 0x00008452 }, /* GL_FRAGMENT_DEPTH */ - { 11464, 0x00008804 }, /* GL_FRAGMENT_PROGRAM_ARB */ - { 11488, 0x00008B30 }, /* GL_FRAGMENT_SHADER */ - { 11507, 0x00008B30 }, /* GL_FRAGMENT_SHADER_ARB */ - { 11530, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ - { 11565, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES */ - { 11604, 0x00008D40 }, /* GL_FRAMEBUFFER */ - { 11619, 0x00008215 }, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ - { 11656, 0x00008214 }, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ - { 11692, 0x00008210 }, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ - { 11733, 0x00008211 }, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ - { 11774, 0x00008216 }, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ - { 11811, 0x00008213 }, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ - { 11848, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB */ - { 11886, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ - { 11924, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */ - { 11966, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES */ - { 12008, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ - { 12046, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */ - { 12088, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES */ - { 12130, 0x00008212 }, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ - { 12165, 0x00008217 }, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ - { 12204, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */ - { 12253, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES */ - { 12302, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ - { 12350, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */ - { 12402, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES */ - { 12454, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ - { 12494, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */ - { 12538, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ - { 12578, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */ - { 12622, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES */ - { 12666, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING */ - { 12689, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_EXT */ - { 12716, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_OES */ - { 12743, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE */ - { 12767, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_EXT */ - { 12795, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_OES */ - { 12823, 0x00008218 }, /* GL_FRAMEBUFFER_DEFAULT */ - { 12846, 0x00008D40 }, /* GL_FRAMEBUFFER_EXT */ - { 12865, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ - { 12902, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */ - { 12943, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES */ - { 12984, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS */ - { 13021, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ - { 13062, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES */ - { 13103, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ - { 13141, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */ - { 13183, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES */ - { 13225, 0x00008CD8 }, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ - { 13276, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ - { 13314, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES */ - { 13352, 0x00008DA9 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */ - { 13394, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB */ - { 13438, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ - { 13483, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */ - { 13532, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES */ - { 13581, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ - { 13619, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT */ - { 13661, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ - { 13699, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */ - { 13741, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES */ - { 13783, 0x00008D40 }, /* GL_FRAMEBUFFER_OES */ - { 13802, 0x00008CDE }, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ - { 13834, 0x00008219 }, /* GL_FRAMEBUFFER_UNDEFINED */ - { 13859, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED */ - { 13886, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */ - { 13917, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_OES */ - { 13948, 0x00000404 }, /* GL_FRONT */ - { 13957, 0x00000408 }, /* GL_FRONT_AND_BACK */ - { 13975, 0x00000B46 }, /* GL_FRONT_FACE */ - { 13989, 0x00000400 }, /* GL_FRONT_LEFT */ - { 14003, 0x00000401 }, /* GL_FRONT_RIGHT */ - { 14018, 0x00008006 }, /* GL_FUNC_ADD */ - { 14030, 0x00008006 }, /* GL_FUNC_ADD_EXT */ - { 14046, 0x00008006 }, /* GL_FUNC_ADD_OES */ - { 14062, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT */ - { 14087, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_EXT */ - { 14116, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_OES */ - { 14145, 0x0000800A }, /* GL_FUNC_SUBTRACT */ - { 14162, 0x0000800A }, /* GL_FUNC_SUBTRACT_EXT */ - { 14183, 0x0000800A }, /* GL_FUNC_SUBTRACT_OES */ - { 14204, 0x00008191 }, /* GL_GENERATE_MIPMAP */ - { 14223, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT */ - { 14247, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT_SGIS */ - { 14276, 0x00008191 }, /* GL_GENERATE_MIPMAP_SGIS */ - { 14300, 0x00008DDB }, /* GL_GEOMETRY_INPUT_TYPE_ARB */ - { 14327, 0x00008DDC }, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */ - { 14355, 0x00008DD9 }, /* GL_GEOMETRY_SHADER_ARB */ - { 14378, 0x00008DDA }, /* GL_GEOMETRY_VERTICES_OUT_ARB */ - { 14407, 0x00000206 }, /* GL_GEQUAL */ - { 14417, 0x00000204 }, /* GL_GREATER */ - { 14428, 0x00001904 }, /* GL_GREEN */ - { 14437, 0x00000D19 }, /* GL_GREEN_BIAS */ - { 14451, 0x00000D53 }, /* GL_GREEN_BITS */ - { 14465, 0x00008D95 }, /* GL_GREEN_INTEGER_EXT */ - { 14486, 0x00000D18 }, /* GL_GREEN_SCALE */ - { 14501, 0x0000140B }, /* GL_HALF_FLOAT */ - { 14515, 0x00008D61 }, /* GL_HALF_FLOAT_OES */ - { 14533, 0x00008DF2 }, /* GL_HIGH_FLOAT */ - { 14547, 0x00008DF5 }, /* GL_HIGH_INT */ - { 14559, 0x00008000 }, /* GL_HINT_BIT */ - { 14571, 0x00008024 }, /* GL_HISTOGRAM */ - { 14584, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE */ - { 14608, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE_EXT */ - { 14636, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE */ - { 14659, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE_EXT */ - { 14686, 0x00008024 }, /* GL_HISTOGRAM_EXT */ - { 14703, 0x00008027 }, /* GL_HISTOGRAM_FORMAT */ - { 14723, 0x00008027 }, /* GL_HISTOGRAM_FORMAT_EXT */ - { 14747, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE */ - { 14771, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE_EXT */ - { 14799, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE */ - { 14827, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE_EXT */ - { 14859, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE */ - { 14881, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE_EXT */ - { 14907, 0x0000802D }, /* GL_HISTOGRAM_SINK */ - { 14925, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */ - { 14947, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */ - { 14966, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */ - { 14989, 0x0000862A }, /* GL_IDENTITY_NV */ - { 15004, 0x00008150 }, /* GL_IGNORE_BORDER_HP */ - { 15024, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */ - { 15060, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */ - { 15100, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */ - { 15134, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */ - { 15172, 0x00001E02 }, /* GL_INCR */ - { 15180, 0x00008507 }, /* GL_INCR_WRAP */ - { 15193, 0x00008507 }, /* GL_INCR_WRAP_EXT */ - { 15210, 0x00008222 }, /* GL_INDEX */ - { 15219, 0x00008077 }, /* GL_INDEX_ARRAY */ - { 15234, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */ - { 15264, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */ - { 15298, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */ - { 15321, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */ - { 15343, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */ - { 15363, 0x00000D51 }, /* GL_INDEX_BITS */ - { 15377, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */ - { 15398, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */ - { 15416, 0x00000C30 }, /* GL_INDEX_MODE */ - { 15430, 0x00000D13 }, /* GL_INDEX_OFFSET */ - { 15446, 0x00000D12 }, /* GL_INDEX_SHIFT */ - { 15461, 0x00000C21 }, /* GL_INDEX_WRITEMASK */ - { 15480, 0x00008B84 }, /* GL_INFO_LOG_LENGTH */ - { 15499, 0x00001404 }, /* GL_INT */ - { 15506, 0x00008049 }, /* GL_INTENSITY */ - { 15519, 0x0000804C }, /* GL_INTENSITY12 */ - { 15534, 0x0000804C }, /* GL_INTENSITY12_EXT */ - { 15553, 0x0000804D }, /* GL_INTENSITY16 */ - { 15568, 0x00008D8B }, /* GL_INTENSITY16I_EXT */ - { 15588, 0x00008D79 }, /* GL_INTENSITY16UI_EXT */ - { 15609, 0x0000804D }, /* GL_INTENSITY16_EXT */ - { 15628, 0x00008D85 }, /* GL_INTENSITY32I_EXT */ - { 15648, 0x00008D73 }, /* GL_INTENSITY32UI_EXT */ - { 15669, 0x0000804A }, /* GL_INTENSITY4 */ - { 15683, 0x0000804A }, /* GL_INTENSITY4_EXT */ - { 15701, 0x0000804B }, /* GL_INTENSITY8 */ - { 15715, 0x00008D91 }, /* GL_INTENSITY8I_EXT */ - { 15734, 0x00008D7F }, /* GL_INTENSITY8UI_EXT */ - { 15754, 0x0000804B }, /* GL_INTENSITY8_EXT */ - { 15772, 0x00008049 }, /* GL_INTENSITY_EXT */ - { 15789, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS_EXT */ - { 15816, 0x00008575 }, /* GL_INTERPOLATE */ - { 15831, 0x00008575 }, /* GL_INTERPOLATE_ARB */ - { 15850, 0x00008575 }, /* GL_INTERPOLATE_EXT */ - { 15869, 0x00008DF7 }, /* GL_INT_10_10_10_2_OES */ - { 15891, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY_EXT */ - { 15919, 0x00008DC9 }, /* GL_INT_SAMPLER_1D_EXT */ - { 15941, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY_EXT */ - { 15969, 0x00008DCA }, /* GL_INT_SAMPLER_2D_EXT */ - { 15991, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT_EXT */ - { 16018, 0x00008DCB }, /* GL_INT_SAMPLER_3D_EXT */ - { 16040, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER_EXT */ - { 16066, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE_EXT */ - { 16090, 0x00008B53 }, /* GL_INT_VEC2 */ - { 16102, 0x00008B53 }, /* GL_INT_VEC2_ARB */ - { 16118, 0x00008B54 }, /* GL_INT_VEC3 */ - { 16130, 0x00008B54 }, /* GL_INT_VEC3_ARB */ - { 16146, 0x00008B55 }, /* GL_INT_VEC4 */ - { 16158, 0x00008B55 }, /* GL_INT_VEC4_ARB */ - { 16174, 0x00000500 }, /* GL_INVALID_ENUM */ - { 16190, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION */ - { 16223, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */ - { 16260, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_OES */ - { 16297, 0x00000502 }, /* GL_INVALID_OPERATION */ - { 16318, 0x00000501 }, /* GL_INVALID_VALUE */ - { 16335, 0x0000862B }, /* GL_INVERSE_NV */ - { 16349, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */ - { 16373, 0x0000150A }, /* GL_INVERT */ - { 16383, 0x00001E00 }, /* GL_KEEP */ - { 16391, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION */ - { 16417, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION_EXT */ - { 16447, 0x00000406 }, /* GL_LEFT */ - { 16455, 0x00000203 }, /* GL_LEQUAL */ - { 16465, 0x00000201 }, /* GL_LESS */ - { 16473, 0x00004000 }, /* GL_LIGHT0 */ - { 16483, 0x00004001 }, /* GL_LIGHT1 */ - { 16493, 0x00004002 }, /* GL_LIGHT2 */ - { 16503, 0x00004003 }, /* GL_LIGHT3 */ - { 16513, 0x00004004 }, /* GL_LIGHT4 */ - { 16523, 0x00004005 }, /* GL_LIGHT5 */ - { 16533, 0x00004006 }, /* GL_LIGHT6 */ - { 16543, 0x00004007 }, /* GL_LIGHT7 */ - { 16553, 0x00000B50 }, /* GL_LIGHTING */ - { 16565, 0x00000040 }, /* GL_LIGHTING_BIT */ - { 16581, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */ - { 16604, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */ - { 16633, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */ - { 16666, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ - { 16694, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */ - { 16718, 0x00001B01 }, /* GL_LINE */ - { 16726, 0x00002601 }, /* GL_LINEAR */ - { 16736, 0x00001208 }, /* GL_LINEAR_ATTENUATION */ - { 16758, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ - { 16788, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ - { 16819, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */ - { 16843, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */ - { 16868, 0x00000001 }, /* GL_LINES */ - { 16877, 0x0000000A }, /* GL_LINES_ADJACENCY_ARB */ - { 16900, 0x00000004 }, /* GL_LINE_BIT */ - { 16912, 0x00000002 }, /* GL_LINE_LOOP */ - { 16925, 0x00000707 }, /* GL_LINE_RESET_TOKEN */ - { 16945, 0x00000B20 }, /* GL_LINE_SMOOTH */ - { 16960, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */ - { 16980, 0x00000B24 }, /* GL_LINE_STIPPLE */ - { 16996, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */ - { 17020, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */ - { 17043, 0x00000003 }, /* GL_LINE_STRIP */ - { 17057, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY_ARB */ - { 17085, 0x00000702 }, /* GL_LINE_TOKEN */ - { 17099, 0x00000B21 }, /* GL_LINE_WIDTH */ - { 17113, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */ - { 17139, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */ - { 17159, 0x00008B82 }, /* GL_LINK_STATUS */ - { 17174, 0x00000B32 }, /* GL_LIST_BASE */ - { 17187, 0x00020000 }, /* GL_LIST_BIT */ - { 17199, 0x00000B33 }, /* GL_LIST_INDEX */ - { 17213, 0x00000B30 }, /* GL_LIST_MODE */ - { 17226, 0x00000101 }, /* GL_LOAD */ - { 17234, 0x00000BF1 }, /* GL_LOGIC_OP */ - { 17246, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */ - { 17263, 0x00008CA1 }, /* GL_LOWER_LEFT */ - { 17277, 0x00008DF0 }, /* GL_LOW_FLOAT */ - { 17290, 0x00008DF3 }, /* GL_LOW_INT */ - { 17301, 0x00001909 }, /* GL_LUMINANCE */ - { 17314, 0x00008041 }, /* GL_LUMINANCE12 */ - { 17329, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */ - { 17352, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */ - { 17379, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */ - { 17401, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */ - { 17427, 0x00008041 }, /* GL_LUMINANCE12_EXT */ - { 17446, 0x00008042 }, /* GL_LUMINANCE16 */ - { 17461, 0x00008D8C }, /* GL_LUMINANCE16I_EXT */ - { 17481, 0x00008D7A }, /* GL_LUMINANCE16UI_EXT */ - { 17502, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */ - { 17525, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */ - { 17552, 0x00008042 }, /* GL_LUMINANCE16_EXT */ - { 17571, 0x00008D86 }, /* GL_LUMINANCE32I_EXT */ - { 17591, 0x00008D74 }, /* GL_LUMINANCE32UI_EXT */ - { 17612, 0x0000803F }, /* GL_LUMINANCE4 */ - { 17626, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */ - { 17647, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */ - { 17672, 0x0000803F }, /* GL_LUMINANCE4_EXT */ - { 17690, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */ - { 17711, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */ - { 17736, 0x00008040 }, /* GL_LUMINANCE8 */ - { 17750, 0x00008D92 }, /* GL_LUMINANCE8I_EXT */ - { 17769, 0x00008D80 }, /* GL_LUMINANCE8UI_EXT */ - { 17789, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */ - { 17810, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */ - { 17835, 0x00008040 }, /* GL_LUMINANCE8_EXT */ - { 17853, 0x0000190A }, /* GL_LUMINANCE_ALPHA */ - { 17872, 0x00008D8D }, /* GL_LUMINANCE_ALPHA16I_EXT */ - { 17898, 0x00008D7B }, /* GL_LUMINANCE_ALPHA16UI_EXT */ - { 17925, 0x00008D87 }, /* GL_LUMINANCE_ALPHA32I_EXT */ - { 17951, 0x00008D75 }, /* GL_LUMINANCE_ALPHA32UI_EXT */ - { 17978, 0x00008D93 }, /* GL_LUMINANCE_ALPHA8I_EXT */ - { 18003, 0x00008D81 }, /* GL_LUMINANCE_ALPHA8UI_EXT */ - { 18029, 0x00008D9D }, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */ - { 18060, 0x00008D9C }, /* GL_LUMINANCE_INTEGER_EXT */ - { 18085, 0x00000D90 }, /* GL_MAP1_COLOR_4 */ - { 18101, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */ - { 18121, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */ - { 18143, 0x00000D91 }, /* GL_MAP1_INDEX */ - { 18157, 0x00000D92 }, /* GL_MAP1_NORMAL */ - { 18172, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */ - { 18196, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */ - { 18220, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */ - { 18244, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */ - { 18268, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */ - { 18285, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */ - { 18302, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ - { 18330, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ - { 18359, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ - { 18388, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ - { 18417, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ - { 18446, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ - { 18475, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ - { 18504, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ - { 18532, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ - { 18560, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ - { 18588, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ - { 18616, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ - { 18644, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ - { 18672, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ - { 18700, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ - { 18728, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ - { 18756, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */ - { 18772, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */ - { 18792, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */ - { 18814, 0x00000DB1 }, /* GL_MAP2_INDEX */ - { 18828, 0x00000DB2 }, /* GL_MAP2_NORMAL */ - { 18843, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */ - { 18867, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */ - { 18891, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */ - { 18915, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */ - { 18939, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */ - { 18956, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */ - { 18973, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ - { 19001, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ - { 19030, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ - { 19059, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ - { 19088, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ - { 19117, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ - { 19146, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ - { 19175, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ - { 19203, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ - { 19231, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ - { 19259, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ - { 19287, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ - { 19315, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ - { 19343, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */ - { 19371, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ - { 19399, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ - { 19427, 0x00000D10 }, /* GL_MAP_COLOR */ - { 19440, 0x00000010 }, /* GL_MAP_FLUSH_EXPLICIT_BIT */ - { 19466, 0x00000008 }, /* GL_MAP_INVALIDATE_BUFFER_BIT */ - { 19495, 0x00000004 }, /* GL_MAP_INVALIDATE_RANGE_BIT */ - { 19523, 0x00000001 }, /* GL_MAP_READ_BIT */ - { 19539, 0x00000D11 }, /* GL_MAP_STENCIL */ - { 19554, 0x00000020 }, /* GL_MAP_UNSYNCHRONIZED_BIT */ - { 19580, 0x00000002 }, /* GL_MAP_WRITE_BIT */ - { 19597, 0x000088C0 }, /* GL_MATRIX0_ARB */ - { 19612, 0x00008630 }, /* GL_MATRIX0_NV */ - { 19626, 0x000088CA }, /* GL_MATRIX10_ARB */ - { 19642, 0x000088CB }, /* GL_MATRIX11_ARB */ - { 19658, 0x000088CC }, /* GL_MATRIX12_ARB */ - { 19674, 0x000088CD }, /* GL_MATRIX13_ARB */ - { 19690, 0x000088CE }, /* GL_MATRIX14_ARB */ - { 19706, 0x000088CF }, /* GL_MATRIX15_ARB */ - { 19722, 0x000088D0 }, /* GL_MATRIX16_ARB */ - { 19738, 0x000088D1 }, /* GL_MATRIX17_ARB */ - { 19754, 0x000088D2 }, /* GL_MATRIX18_ARB */ - { 19770, 0x000088D3 }, /* GL_MATRIX19_ARB */ - { 19786, 0x000088C1 }, /* GL_MATRIX1_ARB */ - { 19801, 0x00008631 }, /* GL_MATRIX1_NV */ - { 19815, 0x000088D4 }, /* GL_MATRIX20_ARB */ - { 19831, 0x000088D5 }, /* GL_MATRIX21_ARB */ - { 19847, 0x000088D6 }, /* GL_MATRIX22_ARB */ - { 19863, 0x000088D7 }, /* GL_MATRIX23_ARB */ - { 19879, 0x000088D8 }, /* GL_MATRIX24_ARB */ - { 19895, 0x000088D9 }, /* GL_MATRIX25_ARB */ - { 19911, 0x000088DA }, /* GL_MATRIX26_ARB */ - { 19927, 0x000088DB }, /* GL_MATRIX27_ARB */ - { 19943, 0x000088DC }, /* GL_MATRIX28_ARB */ - { 19959, 0x000088DD }, /* GL_MATRIX29_ARB */ - { 19975, 0x000088C2 }, /* GL_MATRIX2_ARB */ - { 19990, 0x00008632 }, /* GL_MATRIX2_NV */ - { 20004, 0x000088DE }, /* GL_MATRIX30_ARB */ - { 20020, 0x000088DF }, /* GL_MATRIX31_ARB */ - { 20036, 0x000088C3 }, /* GL_MATRIX3_ARB */ - { 20051, 0x00008633 }, /* GL_MATRIX3_NV */ - { 20065, 0x000088C4 }, /* GL_MATRIX4_ARB */ - { 20080, 0x00008634 }, /* GL_MATRIX4_NV */ - { 20094, 0x000088C5 }, /* GL_MATRIX5_ARB */ - { 20109, 0x00008635 }, /* GL_MATRIX5_NV */ - { 20123, 0x000088C6 }, /* GL_MATRIX6_ARB */ - { 20138, 0x00008636 }, /* GL_MATRIX6_NV */ - { 20152, 0x000088C7 }, /* GL_MATRIX7_ARB */ - { 20167, 0x00008637 }, /* GL_MATRIX7_NV */ - { 20181, 0x000088C8 }, /* GL_MATRIX8_ARB */ - { 20196, 0x000088C9 }, /* GL_MATRIX9_ARB */ - { 20211, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */ - { 20237, 0x00008B9E }, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */ - { 20278, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_OES */ - { 20304, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ - { 20338, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_OES */ - { 20372, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ - { 20403, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_OES */ - { 20434, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ - { 20467, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_OES */ - { 20500, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ - { 20531, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_OES */ - { 20562, 0x00000BA0 }, /* GL_MATRIX_MODE */ - { 20577, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */ - { 20599, 0x00008840 }, /* GL_MATRIX_PALETTE_OES */ - { 20621, 0x00008008 }, /* GL_MAX */ - { 20628, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */ - { 20651, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE_OES */ - { 20678, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */ - { 20710, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */ - { 20736, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ - { 20769, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ - { 20795, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - { 20829, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */ - { 20848, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS */ - { 20873, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */ - { 20902, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ - { 20934, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */ - { 20970, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ - { 21006, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */ - { 21046, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */ - { 21072, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */ - { 21102, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */ - { 21127, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */ - { 21156, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ - { 21185, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */ - { 21218, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES */ - { 21251, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS */ - { 21271, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */ - { 21295, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */ - { 21319, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */ - { 21343, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */ - { 21368, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */ - { 21386, 0x00008008 }, /* GL_MAX_EXT */ - { 21397, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ - { 21432, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */ - { 21471, 0x00008DFD }, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */ - { 21503, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB */ - { 21539, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB */ - { 21579, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB */ - { 21623, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB */ - { 21662, 0x00008DDD }, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */ - { 21701, 0x00000D31 }, /* GL_MAX_LIGHTS */ - { 21715, 0x00000B31 }, /* GL_MAX_LIST_NESTING */ - { 21735, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ - { 21773, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */ - { 21802, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */ - { 21826, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */ - { 21854, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_OES */ - { 21882, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */ - { 21905, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ - { 21942, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ - { 21978, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ - { 22005, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ - { 22034, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ - { 22068, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */ - { 22104, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ - { 22131, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ - { 22163, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ - { 22199, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ - { 22228, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ - { 22257, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */ - { 22285, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ - { 22323, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - { 22367, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - { 22410, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ - { 22444, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - { 22483, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ - { 22520, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ - { 22558, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - { 22601, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - { 22644, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ - { 22674, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ - { 22705, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET_EXT */ - { 22737, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ - { 22773, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ - { 22809, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */ - { 22839, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */ - { 22873, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */ - { 22906, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE */ - { 22931, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */ - { 22960, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_OES */ - { 22989, 0x00008D57 }, /* GL_MAX_SAMPLES */ - { 23004, 0x00008D57 }, /* GL_MAX_SAMPLES_EXT */ - { 23023, 0x00009111 }, /* GL_MAX_SERVER_WAIT_TIMEOUT */ - { 23050, 0x00008504 }, /* GL_MAX_SHININESS_NV */ - { 23070, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */ - { 23094, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS */ - { 23116, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */ - { 23142, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS */ - { 23169, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */ - { 23200, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */ - { 23224, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS_EXT */ - { 23252, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ - { 23286, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */ - { 23306, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */ - { 23333, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */ - { 23354, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */ - { 23379, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */ - { 23404, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */ - { 23439, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */ - { 23492, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */ - { 23539, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */ - { 23589, 0x00008B4B }, /* GL_MAX_VARYING_COMPONENTS */ - { 23615, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS */ - { 23637, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */ - { 23663, 0x00008DFC }, /* GL_MAX_VARYING_VECTORS */ - { 23686, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS */ - { 23708, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */ - { 23734, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ - { 23768, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */ - { 23806, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ - { 23839, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */ - { 23876, 0x00008DFB }, /* GL_MAX_VERTEX_UNIFORM_VECTORS */ - { 23906, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */ - { 23930, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_OES */ - { 23954, 0x00008DDE }, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */ - { 23991, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */ - { 24012, 0x00008DF1 }, /* GL_MEDIUM_FLOAT */ - { 24028, 0x00008DF4 }, /* GL_MEDIUM_INT */ - { 24042, 0x00008007 }, /* GL_MIN */ - { 24049, 0x0000802E }, /* GL_MINMAX */ - { 24059, 0x0000802E }, /* GL_MINMAX_EXT */ - { 24073, 0x0000802F }, /* GL_MINMAX_FORMAT */ - { 24090, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */ - { 24111, 0x00008030 }, /* GL_MINMAX_SINK */ - { 24126, 0x00008030 }, /* GL_MINMAX_SINK_EXT */ - { 24145, 0x00008007 }, /* GL_MIN_EXT */ - { 24156, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET_EXT */ - { 24188, 0x00008370 }, /* GL_MIRRORED_REPEAT */ - { 24207, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */ - { 24230, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */ - { 24253, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */ - { 24273, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */ - { 24293, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ - { 24323, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */ - { 24351, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ - { 24379, 0x00001700 }, /* GL_MODELVIEW */ - { 24392, 0x00001700 }, /* GL_MODELVIEW0_ARB */ - { 24410, 0x0000872A }, /* GL_MODELVIEW10_ARB */ - { 24429, 0x0000872B }, /* GL_MODELVIEW11_ARB */ - { 24448, 0x0000872C }, /* GL_MODELVIEW12_ARB */ - { 24467, 0x0000872D }, /* GL_MODELVIEW13_ARB */ - { 24486, 0x0000872E }, /* GL_MODELVIEW14_ARB */ - { 24505, 0x0000872F }, /* GL_MODELVIEW15_ARB */ - { 24524, 0x00008730 }, /* GL_MODELVIEW16_ARB */ - { 24543, 0x00008731 }, /* GL_MODELVIEW17_ARB */ - { 24562, 0x00008732 }, /* GL_MODELVIEW18_ARB */ - { 24581, 0x00008733 }, /* GL_MODELVIEW19_ARB */ - { 24600, 0x0000850A }, /* GL_MODELVIEW1_ARB */ - { 24618, 0x00008734 }, /* GL_MODELVIEW20_ARB */ - { 24637, 0x00008735 }, /* GL_MODELVIEW21_ARB */ - { 24656, 0x00008736 }, /* GL_MODELVIEW22_ARB */ - { 24675, 0x00008737 }, /* GL_MODELVIEW23_ARB */ - { 24694, 0x00008738 }, /* GL_MODELVIEW24_ARB */ - { 24713, 0x00008739 }, /* GL_MODELVIEW25_ARB */ - { 24732, 0x0000873A }, /* GL_MODELVIEW26_ARB */ - { 24751, 0x0000873B }, /* GL_MODELVIEW27_ARB */ - { 24770, 0x0000873C }, /* GL_MODELVIEW28_ARB */ - { 24789, 0x0000873D }, /* GL_MODELVIEW29_ARB */ - { 24808, 0x00008722 }, /* GL_MODELVIEW2_ARB */ - { 24826, 0x0000873E }, /* GL_MODELVIEW30_ARB */ - { 24845, 0x0000873F }, /* GL_MODELVIEW31_ARB */ - { 24864, 0x00008723 }, /* GL_MODELVIEW3_ARB */ - { 24882, 0x00008724 }, /* GL_MODELVIEW4_ARB */ - { 24900, 0x00008725 }, /* GL_MODELVIEW5_ARB */ - { 24918, 0x00008726 }, /* GL_MODELVIEW6_ARB */ - { 24936, 0x00008727 }, /* GL_MODELVIEW7_ARB */ - { 24954, 0x00008728 }, /* GL_MODELVIEW8_ARB */ - { 24972, 0x00008729 }, /* GL_MODELVIEW9_ARB */ - { 24990, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */ - { 25010, 0x0000898D }, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */ - { 25052, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */ - { 25079, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */ - { 25104, 0x00002100 }, /* GL_MODULATE */ - { 25116, 0x00008744 }, /* GL_MODULATE_ADD_ATI */ - { 25136, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */ - { 25163, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */ - { 25188, 0x00000103 }, /* GL_MULT */ - { 25196, 0x0000809D }, /* GL_MULTISAMPLE */ - { 25211, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */ - { 25231, 0x0000809D }, /* GL_MULTISAMPLE_ARB */ - { 25250, 0x20000000 }, /* GL_MULTISAMPLE_BIT */ - { 25269, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */ - { 25293, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */ - { 25316, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */ - { 25346, 0x00002A25 }, /* GL_N3F_V3F */ - { 25357, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */ - { 25377, 0x0000150E }, /* GL_NAND */ - { 25385, 0x00002600 }, /* GL_NEAREST */ - { 25396, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ - { 25427, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ - { 25459, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */ - { 25484, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */ - { 25510, 0x00000200 }, /* GL_NEVER */ - { 25519, 0x00001102 }, /* GL_NICEST */ - { 25529, 0x00000000 }, /* GL_NONE */ - { 25537, 0x00000000 }, /* GL_NONE_OES */ - { 25549, 0x00001505 }, /* GL_NOOP */ - { 25557, 0x00001508 }, /* GL_NOR */ - { 25564, 0x00000BA1 }, /* GL_NORMALIZE */ - { 25577, 0x00008075 }, /* GL_NORMAL_ARRAY */ - { 25593, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ - { 25624, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */ - { 25659, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */ - { 25683, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */ - { 25706, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */ - { 25727, 0x00008511 }, /* GL_NORMAL_MAP */ - { 25741, 0x00008511 }, /* GL_NORMAL_MAP_ARB */ - { 25759, 0x00008511 }, /* GL_NORMAL_MAP_NV */ - { 25776, 0x00008511 }, /* GL_NORMAL_MAP_OES */ - { 25794, 0x00000205 }, /* GL_NOTEQUAL */ - { 25806, 0x00000000 }, /* GL_NO_ERROR */ - { 25818, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ - { 25852, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB */ - { 25890, 0x000087FE }, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */ - { 25924, 0x00008DF9 }, /* GL_NUM_SHADER_BINARY_FORMATS */ - { 25953, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */ - { 25985, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */ - { 26027, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */ - { 26057, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */ - { 26097, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */ - { 26128, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */ - { 26157, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */ - { 26185, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */ - { 26215, 0x00002401 }, /* GL_OBJECT_LINEAR */ - { 26232, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */ - { 26258, 0x00002501 }, /* GL_OBJECT_PLANE */ - { 26274, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */ - { 26309, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */ - { 26331, 0x00009112 }, /* GL_OBJECT_TYPE */ - { 26346, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */ - { 26365, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */ - { 26395, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */ - { 26416, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */ - { 26444, 0x00000001 }, /* GL_ONE */ - { 26451, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */ - { 26479, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */ - { 26511, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */ - { 26539, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */ - { 26571, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */ - { 26594, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */ - { 26617, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */ - { 26640, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */ - { 26663, 0x00008598 }, /* GL_OPERAND0_ALPHA */ - { 26681, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */ - { 26703, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */ - { 26725, 0x00008590 }, /* GL_OPERAND0_RGB */ - { 26741, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */ - { 26761, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */ - { 26781, 0x00008599 }, /* GL_OPERAND1_ALPHA */ - { 26799, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */ - { 26821, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */ - { 26843, 0x00008591 }, /* GL_OPERAND1_RGB */ - { 26859, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */ - { 26879, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */ - { 26899, 0x0000859A }, /* GL_OPERAND2_ALPHA */ - { 26917, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */ - { 26939, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */ - { 26961, 0x00008592 }, /* GL_OPERAND2_RGB */ - { 26977, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */ - { 26997, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */ - { 27017, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */ - { 27038, 0x00008593 }, /* GL_OPERAND3_RGB_NV */ - { 27057, 0x00001507 }, /* GL_OR */ - { 27063, 0x00000A01 }, /* GL_ORDER */ - { 27072, 0x0000150D }, /* GL_OR_INVERTED */ - { 27087, 0x0000150B }, /* GL_OR_REVERSE */ - { 27101, 0x00000505 }, /* GL_OUT_OF_MEMORY */ - { 27118, 0x00000D05 }, /* GL_PACK_ALIGNMENT */ - { 27136, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */ - { 27157, 0x00008758 }, /* GL_PACK_INVERT_MESA */ - { 27177, 0x00000D01 }, /* GL_PACK_LSB_FIRST */ - { 27195, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */ - { 27214, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */ - { 27234, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */ - { 27254, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */ - { 27272, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */ - { 27291, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */ - { 27316, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */ - { 27340, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */ - { 27361, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */ - { 27383, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */ - { 27405, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */ - { 27430, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */ - { 27454, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */ - { 27475, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */ - { 27497, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */ - { 27519, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */ - { 27541, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */ - { 27572, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */ - { 27592, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */ - { 27617, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */ - { 27637, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */ - { 27662, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */ - { 27682, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */ - { 27707, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */ - { 27727, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */ - { 27752, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */ - { 27772, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */ - { 27797, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */ - { 27817, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */ - { 27842, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */ - { 27862, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */ - { 27887, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */ - { 27907, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */ - { 27932, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */ - { 27952, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */ - { 27977, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */ - { 27997, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */ - { 28022, 0x00000020 }, /* GL_PIXEL_MODE_BIT */ - { 28040, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER */ - { 28061, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING */ - { 28090, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */ - { 28123, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */ - { 28148, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER */ - { 28171, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING */ - { 28202, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */ - { 28237, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */ - { 28264, 0x00001B00 }, /* GL_POINT */ - { 28273, 0x00000000 }, /* GL_POINTS */ - { 28283, 0x00000002 }, /* GL_POINT_BIT */ - { 28296, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */ - { 28326, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */ - { 28360, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */ - { 28394, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */ - { 28429, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */ - { 28458, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */ - { 28491, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */ - { 28524, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */ - { 28558, 0x00000B11 }, /* GL_POINT_SIZE */ - { 28572, 0x00008B9F }, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */ - { 28611, 0x00008B9C }, /* GL_POINT_SIZE_ARRAY_OES */ - { 28635, 0x0000898C }, /* GL_POINT_SIZE_ARRAY_POINTER_OES */ - { 28667, 0x0000898B }, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */ - { 28698, 0x0000898A }, /* GL_POINT_SIZE_ARRAY_TYPE_OES */ - { 28727, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */ - { 28753, 0x00008127 }, /* GL_POINT_SIZE_MAX */ - { 28771, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */ - { 28793, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */ - { 28815, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */ - { 28838, 0x00008126 }, /* GL_POINT_SIZE_MIN */ - { 28856, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */ - { 28878, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */ - { 28900, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */ - { 28923, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */ - { 28943, 0x00000B10 }, /* GL_POINT_SMOOTH */ - { 28959, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */ - { 28980, 0x00008861 }, /* GL_POINT_SPRITE */ - { 28996, 0x00008861 }, /* GL_POINT_SPRITE_ARB */ - { 29016, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */ - { 29045, 0x00008861 }, /* GL_POINT_SPRITE_NV */ - { 29064, 0x00008861 }, /* GL_POINT_SPRITE_OES */ - { 29084, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */ - { 29110, 0x00000701 }, /* GL_POINT_TOKEN */ - { 29125, 0x00000009 }, /* GL_POLYGON */ - { 29136, 0x00000008 }, /* GL_POLYGON_BIT */ - { 29151, 0x00000B40 }, /* GL_POLYGON_MODE */ - { 29167, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */ - { 29190, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */ - { 29215, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */ - { 29238, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */ - { 29261, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */ - { 29285, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */ - { 29309, 0x00000B41 }, /* GL_POLYGON_SMOOTH */ - { 29327, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */ - { 29350, 0x00000B42 }, /* GL_POLYGON_STIPPLE */ - { 29369, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */ - { 29392, 0x00000703 }, /* GL_POLYGON_TOKEN */ - { 29409, 0x00001203 }, /* GL_POSITION */ - { 29421, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ - { 29453, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */ - { 29489, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ - { 29522, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */ - { 29559, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ - { 29590, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */ - { 29625, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ - { 29657, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */ - { 29693, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ - { 29726, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ - { 29758, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */ - { 29794, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ - { 29827, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */ - { 29864, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */ - { 29894, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */ - { 29928, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */ - { 29959, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */ - { 29994, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ - { 30025, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */ - { 30060, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ - { 30092, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */ - { 30128, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */ - { 30158, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */ - { 30192, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */ - { 30223, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */ - { 30258, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */ - { 30290, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */ - { 30321, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */ - { 30356, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */ - { 30388, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */ - { 30424, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */ - { 30453, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */ - { 30486, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */ - { 30516, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */ - { 30550, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ - { 30589, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ - { 30622, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ - { 30662, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ - { 30696, 0x00008578 }, /* GL_PREVIOUS */ - { 30708, 0x00008578 }, /* GL_PREVIOUS_ARB */ - { 30724, 0x00008578 }, /* GL_PREVIOUS_EXT */ - { 30740, 0x00008577 }, /* GL_PRIMARY_COLOR */ - { 30757, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */ - { 30778, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */ - { 30799, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED_EXT */ - { 30827, 0x00008559 }, /* GL_PRIMITIVE_RESTART_INDEX_NV */ - { 30857, 0x00008558 }, /* GL_PRIMITIVE_RESTART_NV */ - { 30881, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ - { 30914, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ - { 30946, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */ - { 30969, 0x000087FF }, /* GL_PROGRAM_BINARY_FORMATS_OES */ - { 30999, 0x00008741 }, /* GL_PROGRAM_BINARY_LENGTH_OES */ - { 31028, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */ - { 31051, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */ - { 31081, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */ - { 31110, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */ - { 31138, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */ - { 31160, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */ - { 31188, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */ - { 31216, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */ - { 31238, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */ - { 31259, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - { 31299, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - { 31338, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ - { 31368, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - { 31403, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ - { 31436, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ - { 31470, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - { 31509, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - { 31548, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */ - { 31570, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */ - { 31596, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */ - { 31620, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE_ARB */ - { 31646, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */ - { 31669, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */ - { 31691, 0x00008628 }, /* GL_PROGRAM_STRING_NV */ - { 31712, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */ - { 31733, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */ - { 31760, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ - { 31792, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ - { 31824, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ - { 31859, 0x00001701 }, /* GL_PROJECTION */ - { 31873, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */ - { 31894, 0x0000898E }, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */ - { 31937, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */ - { 31963, 0x00008E4F }, /* GL_PROVOKING_VERTEX */ - { 31983, 0x00008E4F }, /* GL_PROVOKING_VERTEX_EXT */ - { 32007, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */ - { 32028, 0x00008025 }, /* GL_PROXY_HISTOGRAM */ - { 32047, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */ - { 32070, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ - { 32109, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ - { 32147, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */ - { 32167, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */ - { 32197, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */ - { 32221, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */ - { 32241, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */ - { 32271, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */ - { 32295, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */ - { 32315, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ - { 32348, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */ - { 32374, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */ - { 32404, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */ - { 32435, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */ - { 32465, 0x00008A1D }, /* GL_PURGEABLE_APPLE */ - { 32484, 0x00002003 }, /* GL_Q */ - { 32489, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */ - { 32514, 0x00000007 }, /* GL_QUADS */ - { 32523, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ - { 32567, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT */ - { 32615, 0x00008614 }, /* GL_QUAD_MESH_SUN */ - { 32632, 0x00000008 }, /* GL_QUAD_STRIP */ - { 32646, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT_NV */ - { 32676, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT_NV */ - { 32703, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */ - { 32725, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */ - { 32751, 0x00008E14 }, /* GL_QUERY_NO_WAIT_NV */ - { 32771, 0x00008866 }, /* GL_QUERY_RESULT */ - { 32787, 0x00008866 }, /* GL_QUERY_RESULT_ARB */ - { 32807, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */ - { 32833, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */ - { 32863, 0x00008E13 }, /* GL_QUERY_WAIT_NV */ - { 32880, 0x00002002 }, /* GL_R */ - { 32885, 0x00002A10 }, /* GL_R3_G3_B2 */ - { 32897, 0x00008C89 }, /* GL_RASTERIZER_DISCARD_EXT */ - { 32923, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ - { 32956, 0x00000C02 }, /* GL_READ_BUFFER */ - { 32971, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER */ - { 32991, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING */ - { 33019, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */ - { 33051, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */ - { 33075, 0x000088B8 }, /* GL_READ_ONLY */ - { 33088, 0x000088B8 }, /* GL_READ_ONLY_ARB */ - { 33105, 0x000088BA }, /* GL_READ_WRITE */ - { 33119, 0x000088BA }, /* GL_READ_WRITE_ARB */ - { 33137, 0x00001903 }, /* GL_RED */ - { 33144, 0x00008016 }, /* GL_REDUCE */ - { 33154, 0x00008016 }, /* GL_REDUCE_EXT */ - { 33168, 0x00000D15 }, /* GL_RED_BIAS */ - { 33180, 0x00000D52 }, /* GL_RED_BITS */ - { 33192, 0x00008D94 }, /* GL_RED_INTEGER_EXT */ - { 33211, 0x00000D14 }, /* GL_RED_SCALE */ - { 33224, 0x00008512 }, /* GL_REFLECTION_MAP */ - { 33242, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */ - { 33264, 0x00008512 }, /* GL_REFLECTION_MAP_NV */ - { 33285, 0x00008512 }, /* GL_REFLECTION_MAP_OES */ - { 33307, 0x00008A19 }, /* GL_RELEASED_APPLE */ - { 33325, 0x00001C00 }, /* GL_RENDER */ - { 33335, 0x00008D41 }, /* GL_RENDERBUFFER */ - { 33351, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE */ - { 33378, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE_OES */ - { 33409, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING */ - { 33433, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */ - { 33461, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_OES */ - { 33489, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE */ - { 33515, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE_OES */ - { 33545, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE */ - { 33572, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE_OES */ - { 33603, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */ - { 33623, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE */ - { 33650, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE_OES */ - { 33681, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT */ - { 33704, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */ - { 33731, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_OES */ - { 33758, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT */ - { 33790, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */ - { 33826, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_OES */ - { 33862, 0x00008D41 }, /* GL_RENDERBUFFER_OES */ - { 33882, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE */ - { 33907, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE_OES */ - { 33936, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES */ - { 33960, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES_EXT */ - { 33988, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE */ - { 34017, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE_OES */ - { 34050, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH */ - { 34072, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */ - { 34098, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_OES */ - { 34124, 0x00001F01 }, /* GL_RENDERER */ - { 34136, 0x00000C40 }, /* GL_RENDER_MODE */ - { 34151, 0x00002901 }, /* GL_REPEAT */ - { 34161, 0x00001E01 }, /* GL_REPLACE */ - { 34172, 0x00008062 }, /* GL_REPLACE_EXT */ - { 34187, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */ - { 34210, 0x0000803A }, /* GL_RESCALE_NORMAL */ - { 34228, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */ - { 34250, 0x00008A1B }, /* GL_RETAINED_APPLE */ - { 34268, 0x00000102 }, /* GL_RETURN */ - { 34278, 0x00001907 }, /* GL_RGB */ - { 34285, 0x00008052 }, /* GL_RGB10 */ - { 34294, 0x00008059 }, /* GL_RGB10_A2 */ - { 34306, 0x00008059 }, /* GL_RGB10_A2_EXT */ - { 34322, 0x00008052 }, /* GL_RGB10_EXT */ - { 34335, 0x00008053 }, /* GL_RGB12 */ - { 34344, 0x00008053 }, /* GL_RGB12_EXT */ - { 34357, 0x00008054 }, /* GL_RGB16 */ - { 34366, 0x00008D89 }, /* GL_RGB16I_EXT */ - { 34380, 0x00008D77 }, /* GL_RGB16UI_EXT */ - { 34395, 0x00008054 }, /* GL_RGB16_EXT */ - { 34408, 0x0000804E }, /* GL_RGB2_EXT */ - { 34420, 0x00008D83 }, /* GL_RGB32I_EXT */ - { 34434, 0x00008D71 }, /* GL_RGB32UI_EXT */ - { 34449, 0x0000804F }, /* GL_RGB4 */ - { 34457, 0x0000804F }, /* GL_RGB4_EXT */ - { 34469, 0x000083A1 }, /* GL_RGB4_S3TC */ - { 34482, 0x00008050 }, /* GL_RGB5 */ - { 34490, 0x00008D62 }, /* GL_RGB565 */ - { 34500, 0x00008D62 }, /* GL_RGB565_OES */ - { 34514, 0x00008057 }, /* GL_RGB5_A1 */ - { 34525, 0x00008057 }, /* GL_RGB5_A1_EXT */ - { 34540, 0x00008057 }, /* GL_RGB5_A1_OES */ - { 34555, 0x00008050 }, /* GL_RGB5_EXT */ - { 34567, 0x00008051 }, /* GL_RGB8 */ - { 34575, 0x00008D8F }, /* GL_RGB8I_EXT */ - { 34588, 0x00008D7D }, /* GL_RGB8UI_EXT */ - { 34602, 0x00008051 }, /* GL_RGB8_EXT */ - { 34614, 0x00008051 }, /* GL_RGB8_OES */ - { 34626, 0x00001908 }, /* GL_RGBA */ - { 34634, 0x0000805A }, /* GL_RGBA12 */ - { 34644, 0x0000805A }, /* GL_RGBA12_EXT */ - { 34658, 0x0000805B }, /* GL_RGBA16 */ - { 34668, 0x00008D88 }, /* GL_RGBA16I_EXT */ - { 34683, 0x00008D76 }, /* GL_RGBA16UI_EXT */ - { 34699, 0x0000805B }, /* GL_RGBA16_EXT */ - { 34713, 0x00008055 }, /* GL_RGBA2 */ - { 34722, 0x00008055 }, /* GL_RGBA2_EXT */ - { 34735, 0x00008D82 }, /* GL_RGBA32I_EXT */ - { 34750, 0x00008D70 }, /* GL_RGBA32UI_EXT */ - { 34766, 0x00008056 }, /* GL_RGBA4 */ - { 34775, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */ - { 34794, 0x00008056 }, /* GL_RGBA4_EXT */ - { 34807, 0x00008056 }, /* GL_RGBA4_OES */ - { 34820, 0x000083A3 }, /* GL_RGBA4_S3TC */ - { 34834, 0x00008058 }, /* GL_RGBA8 */ - { 34843, 0x00008D8E }, /* GL_RGBA8I_EXT */ - { 34857, 0x00008D7C }, /* GL_RGBA8UI_EXT */ - { 34872, 0x00008058 }, /* GL_RGBA8_EXT */ - { 34885, 0x00008058 }, /* GL_RGBA8_OES */ - { 34898, 0x00008F97 }, /* GL_RGBA8_SNORM */ - { 34913, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */ - { 34931, 0x00008D99 }, /* GL_RGBA_INTEGER_EXT */ - { 34951, 0x00008D9E }, /* GL_RGBA_INTEGER_MODE_EXT */ - { 34976, 0x00000C31 }, /* GL_RGBA_MODE */ - { 34989, 0x000083A2 }, /* GL_RGBA_S3TC */ - { 35002, 0x00008F93 }, /* GL_RGBA_SNORM */ - { 35016, 0x00008D98 }, /* GL_RGB_INTEGER_EXT */ - { 35035, 0x000083A0 }, /* GL_RGB_S3TC */ - { 35047, 0x00008573 }, /* GL_RGB_SCALE */ - { 35060, 0x00008573 }, /* GL_RGB_SCALE_ARB */ - { 35077, 0x00008573 }, /* GL_RGB_SCALE_EXT */ - { 35094, 0x00000407 }, /* GL_RIGHT */ - { 35103, 0x00002000 }, /* GL_S */ - { 35108, 0x00008B5D }, /* GL_SAMPLER_1D */ - { 35122, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY_EXT */ - { 35146, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW_EXT */ - { 35177, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */ - { 35198, 0x00008B5E }, /* GL_SAMPLER_2D */ - { 35212, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY_EXT */ - { 35236, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW_EXT */ - { 35267, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */ - { 35288, 0x00008B5F }, /* GL_SAMPLER_3D */ - { 35302, 0x00008B5F }, /* GL_SAMPLER_3D_OES */ - { 35320, 0x00008DC2 }, /* GL_SAMPLER_BUFFER_EXT */ - { 35342, 0x00008B60 }, /* GL_SAMPLER_CUBE */ - { 35358, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW_EXT */ - { 35385, 0x000080A9 }, /* GL_SAMPLES */ - { 35396, 0x000086B4 }, /* GL_SAMPLES_3DFX */ - { 35412, 0x000080A9 }, /* GL_SAMPLES_ARB */ - { 35427, 0x00008914 }, /* GL_SAMPLES_PASSED */ - { 35445, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */ - { 35467, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ - { 35495, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */ - { 35527, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */ - { 35550, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */ - { 35577, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */ - { 35595, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */ - { 35618, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */ - { 35640, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */ - { 35659, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */ - { 35682, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */ - { 35708, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */ - { 35738, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */ - { 35763, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */ - { 35792, 0x00080000 }, /* GL_SCISSOR_BIT */ - { 35807, 0x00000C10 }, /* GL_SCISSOR_BOX */ - { 35822, 0x00000C11 }, /* GL_SCISSOR_TEST */ - { 35838, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */ - { 35863, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ - { 35903, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */ - { 35947, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ - { 35980, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ - { 36010, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ - { 36042, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ - { 36072, 0x00001C02 }, /* GL_SELECT */ - { 36082, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */ - { 36110, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */ - { 36135, 0x00008012 }, /* GL_SEPARABLE_2D */ - { 36151, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS_EXT */ - { 36175, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */ - { 36202, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */ - { 36233, 0x0000150F }, /* GL_SET */ - { 36240, 0x00008DF8 }, /* GL_SHADER_BINARY_FORMATS */ - { 36265, 0x00008DFA }, /* GL_SHADER_COMPILER */ - { 36284, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */ - { 36305, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */ - { 36329, 0x00008B4F }, /* GL_SHADER_TYPE */ - { 36344, 0x00000B54 }, /* GL_SHADE_MODEL */ - { 36359, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */ - { 36387, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */ - { 36410, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */ - { 36440, 0x00001601 }, /* GL_SHININESS */ - { 36453, 0x00001402 }, /* GL_SHORT */ - { 36462, 0x00009119 }, /* GL_SIGNALED */ - { 36474, 0x00008F9C }, /* GL_SIGNED_NORMALIZED */ - { 36495, 0x000081F9 }, /* GL_SINGLE_COLOR */ - { 36511, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */ - { 36531, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */ - { 36550, 0x00008C46 }, /* GL_SLUMINANCE */ - { 36564, 0x00008C47 }, /* GL_SLUMINANCE8 */ - { 36579, 0x00008C45 }, /* GL_SLUMINANCE8_ALPHA8 */ - { 36601, 0x00008C44 }, /* GL_SLUMINANCE_ALPHA */ - { 36621, 0x00001D01 }, /* GL_SMOOTH */ - { 36631, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */ - { 36664, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */ - { 36691, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */ - { 36724, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */ - { 36751, 0x00008588 }, /* GL_SOURCE0_ALPHA */ - { 36768, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */ - { 36789, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */ - { 36810, 0x00008580 }, /* GL_SOURCE0_RGB */ - { 36825, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */ - { 36844, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */ - { 36863, 0x00008589 }, /* GL_SOURCE1_ALPHA */ - { 36880, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */ - { 36901, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */ - { 36922, 0x00008581 }, /* GL_SOURCE1_RGB */ - { 36937, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */ - { 36956, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */ - { 36975, 0x0000858A }, /* GL_SOURCE2_ALPHA */ - { 36992, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */ - { 37013, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */ - { 37034, 0x00008582 }, /* GL_SOURCE2_RGB */ - { 37049, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */ - { 37068, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */ - { 37087, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */ - { 37107, 0x00008583 }, /* GL_SOURCE3_RGB_NV */ - { 37125, 0x00001202 }, /* GL_SPECULAR */ - { 37137, 0x00002402 }, /* GL_SPHERE_MAP */ - { 37151, 0x00001206 }, /* GL_SPOT_CUTOFF */ - { 37166, 0x00001204 }, /* GL_SPOT_DIRECTION */ - { 37184, 0x00001205 }, /* GL_SPOT_EXPONENT */ - { 37201, 0x00008588 }, /* GL_SRC0_ALPHA */ - { 37215, 0x00008580 }, /* GL_SRC0_RGB */ - { 37227, 0x00008589 }, /* GL_SRC1_ALPHA */ - { 37241, 0x00008581 }, /* GL_SRC1_RGB */ - { 37253, 0x0000858A }, /* GL_SRC2_ALPHA */ - { 37267, 0x00008582 }, /* GL_SRC2_RGB */ - { 37279, 0x00000302 }, /* GL_SRC_ALPHA */ - { 37292, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */ - { 37314, 0x00000300 }, /* GL_SRC_COLOR */ - { 37327, 0x00008C40 }, /* GL_SRGB */ - { 37335, 0x00008C41 }, /* GL_SRGB8 */ - { 37344, 0x00008C43 }, /* GL_SRGB8_ALPHA8 */ - { 37360, 0x00008C42 }, /* GL_SRGB_ALPHA */ - { 37374, 0x00000503 }, /* GL_STACK_OVERFLOW */ - { 37392, 0x00000504 }, /* GL_STACK_UNDERFLOW */ - { 37411, 0x000088E6 }, /* GL_STATIC_COPY */ - { 37426, 0x000088E6 }, /* GL_STATIC_COPY_ARB */ - { 37445, 0x000088E4 }, /* GL_STATIC_DRAW */ - { 37460, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */ - { 37479, 0x000088E5 }, /* GL_STATIC_READ */ - { 37494, 0x000088E5 }, /* GL_STATIC_READ_ARB */ - { 37513, 0x00001802 }, /* GL_STENCIL */ - { 37524, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT */ - { 37546, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */ - { 37572, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_OES */ - { 37598, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */ - { 37619, 0x00008801 }, /* GL_STENCIL_BACK_FAIL_ATI */ - { 37644, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */ - { 37665, 0x00008800 }, /* GL_STENCIL_BACK_FUNC_ATI */ - { 37690, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ - { 37722, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI */ - { 37758, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ - { 37790, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI */ - { 37826, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */ - { 37846, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */ - { 37873, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */ - { 37899, 0x00000D57 }, /* GL_STENCIL_BITS */ - { 37915, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */ - { 37937, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */ - { 37960, 0x00000B94 }, /* GL_STENCIL_FAIL */ - { 37976, 0x00000B92 }, /* GL_STENCIL_FUNC */ - { 37992, 0x00001901 }, /* GL_STENCIL_INDEX */ - { 38009, 0x00008D46 }, /* GL_STENCIL_INDEX1 */ - { 38027, 0x00008D49 }, /* GL_STENCIL_INDEX16 */ - { 38046, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */ - { 38069, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */ - { 38091, 0x00008D46 }, /* GL_STENCIL_INDEX1_OES */ - { 38113, 0x00008D47 }, /* GL_STENCIL_INDEX4 */ - { 38131, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */ - { 38153, 0x00008D47 }, /* GL_STENCIL_INDEX4_OES */ - { 38175, 0x00008D48 }, /* GL_STENCIL_INDEX8 */ - { 38193, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */ - { 38215, 0x00008D48 }, /* GL_STENCIL_INDEX8_OES */ - { 38237, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */ - { 38258, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */ - { 38285, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */ - { 38312, 0x00000B97 }, /* GL_STENCIL_REF */ - { 38327, 0x00000B90 }, /* GL_STENCIL_TEST */ - { 38343, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ - { 38372, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */ - { 38394, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */ - { 38415, 0x00000C33 }, /* GL_STEREO */ - { 38425, 0x000085BE }, /* GL_STORAGE_CACHED_APPLE */ - { 38449, 0x000085BD }, /* GL_STORAGE_PRIVATE_APPLE */ - { 38474, 0x000085BF }, /* GL_STORAGE_SHARED_APPLE */ - { 38498, 0x000088E2 }, /* GL_STREAM_COPY */ - { 38513, 0x000088E2 }, /* GL_STREAM_COPY_ARB */ - { 38532, 0x000088E0 }, /* GL_STREAM_DRAW */ - { 38547, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */ - { 38566, 0x000088E1 }, /* GL_STREAM_READ */ - { 38581, 0x000088E1 }, /* GL_STREAM_READ_ARB */ - { 38600, 0x00000D50 }, /* GL_SUBPIXEL_BITS */ - { 38617, 0x000084E7 }, /* GL_SUBTRACT */ - { 38629, 0x000084E7 }, /* GL_SUBTRACT_ARB */ - { 38645, 0x00009113 }, /* GL_SYNC_CONDITION */ - { 38663, 0x00009116 }, /* GL_SYNC_FENCE */ - { 38677, 0x00009115 }, /* GL_SYNC_FLAGS */ - { 38691, 0x00000001 }, /* GL_SYNC_FLUSH_COMMANDS_BIT */ - { 38718, 0x00009117 }, /* GL_SYNC_GPU_COMMANDS_COMPLETE */ - { 38748, 0x00009114 }, /* GL_SYNC_STATUS */ - { 38763, 0x00002001 }, /* GL_T */ - { 38768, 0x00002A2A }, /* GL_T2F_C3F_V3F */ - { 38783, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */ - { 38802, 0x00002A29 }, /* GL_T2F_C4UB_V3F */ - { 38818, 0x00002A2B }, /* GL_T2F_N3F_V3F */ - { 38833, 0x00002A27 }, /* GL_T2F_V3F */ - { 38844, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */ - { 38863, 0x00002A28 }, /* GL_T4F_V4F */ - { 38874, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */ - { 38897, 0x00001702 }, /* GL_TEXTURE */ - { 38908, 0x000084C0 }, /* GL_TEXTURE0 */ - { 38920, 0x000084C0 }, /* GL_TEXTURE0_ARB */ - { 38936, 0x000084C1 }, /* GL_TEXTURE1 */ - { 38948, 0x000084CA }, /* GL_TEXTURE10 */ - { 38961, 0x000084CA }, /* GL_TEXTURE10_ARB */ - { 38978, 0x000084CB }, /* GL_TEXTURE11 */ - { 38991, 0x000084CB }, /* GL_TEXTURE11_ARB */ - { 39008, 0x000084CC }, /* GL_TEXTURE12 */ - { 39021, 0x000084CC }, /* GL_TEXTURE12_ARB */ - { 39038, 0x000084CD }, /* GL_TEXTURE13 */ - { 39051, 0x000084CD }, /* GL_TEXTURE13_ARB */ - { 39068, 0x000084CE }, /* GL_TEXTURE14 */ - { 39081, 0x000084CE }, /* GL_TEXTURE14_ARB */ - { 39098, 0x000084CF }, /* GL_TEXTURE15 */ - { 39111, 0x000084CF }, /* GL_TEXTURE15_ARB */ - { 39128, 0x000084D0 }, /* GL_TEXTURE16 */ - { 39141, 0x000084D0 }, /* GL_TEXTURE16_ARB */ - { 39158, 0x000084D1 }, /* GL_TEXTURE17 */ - { 39171, 0x000084D1 }, /* GL_TEXTURE17_ARB */ - { 39188, 0x000084D2 }, /* GL_TEXTURE18 */ - { 39201, 0x000084D2 }, /* GL_TEXTURE18_ARB */ - { 39218, 0x000084D3 }, /* GL_TEXTURE19 */ - { 39231, 0x000084D3 }, /* GL_TEXTURE19_ARB */ - { 39248, 0x000084C1 }, /* GL_TEXTURE1_ARB */ - { 39264, 0x000084C2 }, /* GL_TEXTURE2 */ - { 39276, 0x000084D4 }, /* GL_TEXTURE20 */ - { 39289, 0x000084D4 }, /* GL_TEXTURE20_ARB */ - { 39306, 0x000084D5 }, /* GL_TEXTURE21 */ - { 39319, 0x000084D5 }, /* GL_TEXTURE21_ARB */ - { 39336, 0x000084D6 }, /* GL_TEXTURE22 */ - { 39349, 0x000084D6 }, /* GL_TEXTURE22_ARB */ - { 39366, 0x000084D7 }, /* GL_TEXTURE23 */ - { 39379, 0x000084D7 }, /* GL_TEXTURE23_ARB */ - { 39396, 0x000084D8 }, /* GL_TEXTURE24 */ - { 39409, 0x000084D8 }, /* GL_TEXTURE24_ARB */ - { 39426, 0x000084D9 }, /* GL_TEXTURE25 */ - { 39439, 0x000084D9 }, /* GL_TEXTURE25_ARB */ - { 39456, 0x000084DA }, /* GL_TEXTURE26 */ - { 39469, 0x000084DA }, /* GL_TEXTURE26_ARB */ - { 39486, 0x000084DB }, /* GL_TEXTURE27 */ - { 39499, 0x000084DB }, /* GL_TEXTURE27_ARB */ - { 39516, 0x000084DC }, /* GL_TEXTURE28 */ - { 39529, 0x000084DC }, /* GL_TEXTURE28_ARB */ - { 39546, 0x000084DD }, /* GL_TEXTURE29 */ - { 39559, 0x000084DD }, /* GL_TEXTURE29_ARB */ - { 39576, 0x000084C2 }, /* GL_TEXTURE2_ARB */ - { 39592, 0x000084C3 }, /* GL_TEXTURE3 */ - { 39604, 0x000084DE }, /* GL_TEXTURE30 */ - { 39617, 0x000084DE }, /* GL_TEXTURE30_ARB */ - { 39634, 0x000084DF }, /* GL_TEXTURE31 */ - { 39647, 0x000084DF }, /* GL_TEXTURE31_ARB */ - { 39664, 0x000084C3 }, /* GL_TEXTURE3_ARB */ - { 39680, 0x000084C4 }, /* GL_TEXTURE4 */ - { 39692, 0x000084C4 }, /* GL_TEXTURE4_ARB */ - { 39708, 0x000084C5 }, /* GL_TEXTURE5 */ - { 39720, 0x000084C5 }, /* GL_TEXTURE5_ARB */ - { 39736, 0x000084C6 }, /* GL_TEXTURE6 */ - { 39748, 0x000084C6 }, /* GL_TEXTURE6_ARB */ - { 39764, 0x000084C7 }, /* GL_TEXTURE7 */ - { 39776, 0x000084C7 }, /* GL_TEXTURE7_ARB */ - { 39792, 0x000084C8 }, /* GL_TEXTURE8 */ - { 39804, 0x000084C8 }, /* GL_TEXTURE8_ARB */ - { 39820, 0x000084C9 }, /* GL_TEXTURE9 */ - { 39832, 0x000084C9 }, /* GL_TEXTURE9_ARB */ - { 39848, 0x00000DE0 }, /* GL_TEXTURE_1D */ - { 39862, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY_EXT */ - { 39886, 0x00000DE1 }, /* GL_TEXTURE_2D */ - { 39900, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY_EXT */ - { 39924, 0x0000806F }, /* GL_TEXTURE_3D */ - { 39938, 0x0000806F }, /* GL_TEXTURE_3D_OES */ - { 39956, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */ - { 39978, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */ - { 40004, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */ - { 40026, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */ - { 40048, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */ - { 40080, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */ - { 40102, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */ - { 40134, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */ - { 40156, 0x0000806A }, /* GL_TEXTURE_BINDING_3D_OES */ - { 40182, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */ - { 40210, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */ - { 40242, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_OES */ - { 40274, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */ - { 40307, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */ - { 40339, 0x00040000 }, /* GL_TEXTURE_BIT */ - { 40354, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */ - { 40375, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */ - { 40400, 0x00001005 }, /* GL_TEXTURE_BORDER */ - { 40418, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */ - { 40442, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ - { 40473, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ - { 40503, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ - { 40533, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ - { 40568, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ - { 40599, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - { 40637, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */ - { 40664, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ - { 40696, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ - { 40730, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */ - { 40754, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */ - { 40782, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */ - { 40806, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */ - { 40834, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ - { 40867, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */ - { 40891, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */ - { 40913, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */ - { 40935, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */ - { 40961, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */ - { 40995, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ - { 41028, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */ - { 41065, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */ - { 41093, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */ - { 41125, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */ - { 41148, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ - { 41186, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */ - { 41228, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */ - { 41259, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */ - { 41287, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ - { 41317, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */ - { 41345, 0x00008B9D }, /* GL_TEXTURE_CROP_RECT_OES */ - { 41370, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */ - { 41390, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */ - { 41414, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ - { 41445, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */ - { 41480, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES */ - { 41515, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ - { 41546, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */ - { 41581, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES */ - { 41616, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ - { 41647, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */ - { 41682, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES */ - { 41717, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_OES */ - { 41741, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ - { 41772, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */ - { 41807, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES */ - { 41842, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ - { 41873, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */ - { 41908, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES */ - { 41943, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ - { 41974, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */ - { 42009, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES */ - { 42044, 0x000088F4 }, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */ - { 42073, 0x00008071 }, /* GL_TEXTURE_DEPTH */ - { 42090, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */ - { 42112, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */ - { 42138, 0x00002300 }, /* GL_TEXTURE_ENV */ - { 42153, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */ - { 42174, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */ - { 42194, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */ - { 42220, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL_EXT */ - { 42250, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */ - { 42270, 0x00002500 }, /* GL_TEXTURE_GEN_MODE_OES */ - { 42294, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */ - { 42311, 0x00000C62 }, /* GL_TEXTURE_GEN_R */ - { 42328, 0x00000C60 }, /* GL_TEXTURE_GEN_S */ - { 42345, 0x00008D60 }, /* GL_TEXTURE_GEN_STR_OES */ - { 42368, 0x00000C61 }, /* GL_TEXTURE_GEN_T */ - { 42385, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */ - { 42410, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */ - { 42432, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */ - { 42458, 0x00001001 }, /* GL_TEXTURE_HEIGHT */ - { 42476, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */ - { 42502, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */ - { 42528, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */ - { 42558, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */ - { 42585, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */ - { 42610, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */ - { 42630, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */ - { 42654, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ - { 42681, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ - { 42708, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ - { 42735, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */ - { 42761, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */ - { 42791, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */ - { 42813, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */ - { 42831, 0x0000898F }, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */ - { 42871, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ - { 42901, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ - { 42929, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ - { 42957, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ - { 42985, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */ - { 43006, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */ - { 43025, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */ - { 43047, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */ - { 43066, 0x00008066 }, /* GL_TEXTURE_PRIORITY */ - { 43086, 0x000085B7 }, /* GL_TEXTURE_RANGE_LENGTH_APPLE */ - { 43116, 0x000085B8 }, /* GL_TEXTURE_RANGE_POINTER_APPLE */ - { 43147, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */ - { 43172, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */ - { 43196, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */ - { 43216, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */ - { 43240, 0x00008067 }, /* GL_TEXTURE_RESIDENT */ - { 43260, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */ - { 43283, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE */ - { 43307, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE_EXT */ - { 43335, 0x000085BC }, /* GL_TEXTURE_STORAGE_HINT_APPLE */ - { 43365, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */ - { 43390, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ - { 43424, 0x00001000 }, /* GL_TEXTURE_WIDTH */ - { 43441, 0x00008072 }, /* GL_TEXTURE_WRAP_R */ - { 43459, 0x00008072 }, /* GL_TEXTURE_WRAP_R_OES */ - { 43481, 0x00002802 }, /* GL_TEXTURE_WRAP_S */ - { 43499, 0x00002803 }, /* GL_TEXTURE_WRAP_T */ - { 43517, 0x0000911B }, /* GL_TIMEOUT_EXPIRED */ - { 43536, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */ - { 43556, 0x00008648 }, /* GL_TRACK_MATRIX_NV */ - { 43575, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */ - { 43604, 0x00001000 }, /* GL_TRANSFORM_BIT */ - { 43621, 0x00008E22 }, /* GL_TRANSFORM_FEEDBACK */ - { 43643, 0x00008E25 }, /* GL_TRANSFORM_FEEDBACK_BINDING */ - { 43673, 0x00008E24 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */ - { 43709, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */ - { 43750, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */ - { 43783, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */ - { 43821, 0x00008E23 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */ - { 43857, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */ - { 43895, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */ - { 43934, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */ - { 43979, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */ - { 44014, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */ - { 44059, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */ - { 44085, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */ - { 44115, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ - { 44147, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ - { 44177, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */ - { 44211, 0x0000862C }, /* GL_TRANSPOSE_NV */ - { 44227, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */ - { 44258, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */ - { 44293, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */ - { 44321, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */ - { 44353, 0x00000004 }, /* GL_TRIANGLES */ - { 44366, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY_ARB */ - { 44393, 0x00000006 }, /* GL_TRIANGLE_FAN */ - { 44409, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */ - { 44430, 0x00000005 }, /* GL_TRIANGLE_STRIP */ - { 44448, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY_ARB */ - { 44480, 0x00000001 }, /* GL_TRUE */ - { 44488, 0x00008A1C }, /* GL_UNDEFINED_APPLE */ - { 44507, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */ - { 44527, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */ - { 44550, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */ - { 44570, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */ - { 44591, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */ - { 44613, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */ - { 44635, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */ - { 44655, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */ - { 44676, 0x00009118 }, /* GL_UNSIGNALED */ - { 44690, 0x00001401 }, /* GL_UNSIGNED_BYTE */ - { 44707, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */ - { 44734, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */ - { 44757, 0x00001405 }, /* GL_UNSIGNED_INT */ - { 44773, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */ - { 44800, 0x00008DF6 }, /* GL_UNSIGNED_INT_10_10_10_2_OES */ - { 44831, 0x000084FA }, /* GL_UNSIGNED_INT_24_8 */ - { 44852, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_EXT */ - { 44877, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */ - { 44901, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_OES */ - { 44926, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */ - { 44957, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV_EXT */ - { 44992, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */ - { 45016, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */ - { 45044, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT */ - { 45081, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D_EXT */ - { 45112, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT */ - { 45149, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D_EXT */ - { 45180, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT */ - { 45216, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D_EXT */ - { 45247, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT */ - { 45282, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE_EXT */ - { 45315, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2_EXT */ - { 45340, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3_EXT */ - { 45365, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4_EXT */ - { 45390, 0x00008C17 }, /* GL_UNSIGNED_NORMALIZED */ - { 45413, 0x00001403 }, /* GL_UNSIGNED_SHORT */ - { 45431, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ - { 45461, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT */ - { 45495, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */ - { 45521, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ - { 45551, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT */ - { 45585, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */ - { 45611, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */ - { 45635, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */ - { 45663, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */ - { 45691, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */ - { 45718, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ - { 45750, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */ - { 45781, 0x00008CA2 }, /* GL_UPPER_LEFT */ - { 45795, 0x00002A20 }, /* GL_V2F */ - { 45802, 0x00002A21 }, /* GL_V3F */ - { 45809, 0x00008B83 }, /* GL_VALIDATE_STATUS */ - { 45828, 0x00001F00 }, /* GL_VENDOR */ - { 45838, 0x00001F02 }, /* GL_VERSION */ - { 45849, 0x00008074 }, /* GL_VERTEX_ARRAY */ - { 45865, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING */ - { 45889, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */ - { 45919, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ - { 45950, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */ - { 45985, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */ - { 46009, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */ - { 46030, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */ - { 46053, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */ - { 46074, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ - { 46101, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ - { 46129, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ - { 46157, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ - { 46185, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ - { 46213, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ - { 46241, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ - { 46269, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ - { 46296, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ - { 46323, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ - { 46350, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ - { 46377, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ - { 46404, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ - { 46431, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ - { 46458, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ - { 46485, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ - { 46512, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ - { 46550, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */ - { 46592, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ - { 46623, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */ - { 46658, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT */ - { 46693, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ - { 46727, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */ - { 46765, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ - { 46796, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */ - { 46831, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ - { 46859, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */ - { 46891, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ - { 46921, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */ - { 46955, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ - { 46983, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */ - { 47015, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */ - { 47035, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */ - { 47057, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */ - { 47086, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */ - { 47107, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */ - { 47136, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */ - { 47169, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */ - { 47201, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */ - { 47228, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */ - { 47259, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */ - { 47289, 0x00008B31 }, /* GL_VERTEX_SHADER */ - { 47306, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */ - { 47327, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */ - { 47354, 0x00000BA2 }, /* GL_VIEWPORT */ - { 47366, 0x00000800 }, /* GL_VIEWPORT_BIT */ - { 47382, 0x00008A1A }, /* GL_VOLATILE_APPLE */ - { 47400, 0x0000911D }, /* GL_WAIT_FAILED */ - { 47415, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */ - { 47435, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ - { 47466, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */ - { 47501, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_OES */ - { 47536, 0x000086AD }, /* GL_WEIGHT_ARRAY_OES */ - { 47556, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */ - { 47584, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_OES */ - { 47612, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */ - { 47637, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_OES */ - { 47662, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ - { 47689, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_OES */ - { 47716, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */ - { 47741, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_OES */ - { 47766, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */ - { 47790, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */ - { 47809, 0x000088B9 }, /* GL_WRITE_ONLY */ - { 47823, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */ - { 47841, 0x000088B9 }, /* GL_WRITE_ONLY_OES */ - { 47859, 0x00001506 }, /* GL_XOR */ - { 47866, 0x000085B9 }, /* GL_YCBCR_422_APPLE */ - { 47885, 0x00008757 }, /* GL_YCBCR_MESA */ - { 47899, 0x00000000 }, /* GL_ZERO */ - { 47907, 0x00000D16 }, /* GL_ZOOM_X */ - { 47917, 0x00000D17 }, /* GL_ZOOM_Y */ + { 1356, 0x00008D9B }, /* GL_BGRA_INTEGER */ + { 1372, 0x00008D9B }, /* GL_BGRA_INTEGER_EXT */ + { 1392, 0x00008D9A }, /* GL_BGR_INTEGER */ + { 1407, 0x00008D9A }, /* GL_BGR_INTEGER_EXT */ + { 1426, 0x00001A00 }, /* GL_BITMAP */ + { 1436, 0x00000704 }, /* GL_BITMAP_TOKEN */ + { 1452, 0x00000BE2 }, /* GL_BLEND */ + { 1461, 0x00008005 }, /* GL_BLEND_COLOR */ + { 1476, 0x00008005 }, /* GL_BLEND_COLOR_EXT */ + { 1495, 0x00000BE0 }, /* GL_BLEND_DST */ + { 1508, 0x000080CA }, /* GL_BLEND_DST_ALPHA */ + { 1527, 0x000080CA }, /* GL_BLEND_DST_ALPHA_OES */ + { 1550, 0x000080C8 }, /* GL_BLEND_DST_RGB */ + { 1567, 0x000080C8 }, /* GL_BLEND_DST_RGB_OES */ + { 1588, 0x00008009 }, /* GL_BLEND_EQUATION */ + { 1606, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA */ + { 1630, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA_EXT */ + { 1658, 0x0000883D }, /* GL_BLEND_EQUATION_ALPHA_OES */ + { 1686, 0x00008009 }, /* GL_BLEND_EQUATION_EXT */ + { 1708, 0x00008009 }, /* GL_BLEND_EQUATION_OES */ + { 1730, 0x00008009 }, /* GL_BLEND_EQUATION_RGB */ + { 1752, 0x00008009 }, /* GL_BLEND_EQUATION_RGB_EXT */ + { 1778, 0x00008009 }, /* GL_BLEND_EQUATION_RGB_OES */ + { 1804, 0x00000BE1 }, /* GL_BLEND_SRC */ + { 1817, 0x000080CB }, /* GL_BLEND_SRC_ALPHA */ + { 1836, 0x000080CB }, /* GL_BLEND_SRC_ALPHA_OES */ + { 1859, 0x000080C9 }, /* GL_BLEND_SRC_RGB */ + { 1876, 0x000080C9 }, /* GL_BLEND_SRC_RGB_OES */ + { 1897, 0x00001905 }, /* GL_BLUE */ + { 1905, 0x00000D1B }, /* GL_BLUE_BIAS */ + { 1918, 0x00000D54 }, /* GL_BLUE_BITS */ + { 1931, 0x00008D96 }, /* GL_BLUE_INTEGER */ + { 1947, 0x00008D96 }, /* GL_BLUE_INTEGER_EXT */ + { 1967, 0x00000D1A }, /* GL_BLUE_SCALE */ + { 1981, 0x00008B56 }, /* GL_BOOL */ + { 1989, 0x00008B56 }, /* GL_BOOL_ARB */ + { 2001, 0x00008B57 }, /* GL_BOOL_VEC2 */ + { 2014, 0x00008B57 }, /* GL_BOOL_VEC2_ARB */ + { 2031, 0x00008B58 }, /* GL_BOOL_VEC3 */ + { 2044, 0x00008B58 }, /* GL_BOOL_VEC3_ARB */ + { 2061, 0x00008B59 }, /* GL_BOOL_VEC4 */ + { 2074, 0x00008B59 }, /* GL_BOOL_VEC4_ARB */ + { 2091, 0x000088BB }, /* GL_BUFFER_ACCESS */ + { 2108, 0x000088BB }, /* GL_BUFFER_ACCESS_ARB */ + { 2129, 0x0000911F }, /* GL_BUFFER_ACCESS_FLAGS */ + { 2152, 0x000088BB }, /* GL_BUFFER_ACCESS_OES */ + { 2173, 0x00008A13 }, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */ + { 2204, 0x000088BC }, /* GL_BUFFER_MAPPED */ + { 2221, 0x000088BC }, /* GL_BUFFER_MAPPED_ARB */ + { 2242, 0x000088BC }, /* GL_BUFFER_MAPPED_OES */ + { 2263, 0x00009120 }, /* GL_BUFFER_MAP_LENGTH */ + { 2284, 0x00009121 }, /* GL_BUFFER_MAP_OFFSET */ + { 2305, 0x000088BD }, /* GL_BUFFER_MAP_POINTER */ + { 2327, 0x000088BD }, /* GL_BUFFER_MAP_POINTER_ARB */ + { 2353, 0x000088BD }, /* GL_BUFFER_MAP_POINTER_OES */ + { 2379, 0x000085B3 }, /* GL_BUFFER_OBJECT_APPLE */ + { 2402, 0x00008A12 }, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */ + { 2436, 0x00008764 }, /* GL_BUFFER_SIZE */ + { 2451, 0x00008764 }, /* GL_BUFFER_SIZE_ARB */ + { 2470, 0x00008765 }, /* GL_BUFFER_USAGE */ + { 2486, 0x00008765 }, /* GL_BUFFER_USAGE_ARB */ + { 2506, 0x0000877B }, /* GL_BUMP_ENVMAP_ATI */ + { 2525, 0x00008777 }, /* GL_BUMP_NUM_TEX_UNITS_ATI */ + { 2551, 0x00008775 }, /* GL_BUMP_ROT_MATRIX_ATI */ + { 2574, 0x00008776 }, /* GL_BUMP_ROT_MATRIX_SIZE_ATI */ + { 2602, 0x0000877C }, /* GL_BUMP_TARGET_ATI */ + { 2621, 0x00008778 }, /* GL_BUMP_TEX_UNITS_ATI */ + { 2643, 0x00001400 }, /* GL_BYTE */ + { 2651, 0x00002A24 }, /* GL_C3F_V3F */ + { 2662, 0x00002A26 }, /* GL_C4F_N3F_V3F */ + { 2677, 0x00002A22 }, /* GL_C4UB_V2F */ + { 2689, 0x00002A23 }, /* GL_C4UB_V3F */ + { 2701, 0x00000901 }, /* GL_CCW */ + { 2708, 0x00002900 }, /* GL_CLAMP */ + { 2717, 0x0000891C }, /* GL_CLAMP_READ_COLOR */ + { 2737, 0x0000812D }, /* GL_CLAMP_TO_BORDER */ + { 2756, 0x0000812D }, /* GL_CLAMP_TO_BORDER_ARB */ + { 2779, 0x0000812D }, /* GL_CLAMP_TO_BORDER_SGIS */ + { 2803, 0x0000812F }, /* GL_CLAMP_TO_EDGE */ + { 2820, 0x0000812F }, /* GL_CLAMP_TO_EDGE_SGIS */ + { 2842, 0x00001500 }, /* GL_CLEAR */ + { 2851, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE */ + { 2876, 0x000084E1 }, /* GL_CLIENT_ACTIVE_TEXTURE_ARB */ + { 2905, 0xFFFFFFFF }, /* GL_CLIENT_ALL_ATTRIB_BITS */ + { 2931, 0x00000BB1 }, /* GL_CLIENT_ATTRIB_STACK_DEPTH */ + { 2960, 0x00000001 }, /* GL_CLIENT_PIXEL_STORE_BIT */ + { 2986, 0x00000002 }, /* GL_CLIENT_VERTEX_ARRAY_BIT */ + { 3013, 0x00003000 }, /* GL_CLIP_DISTANCE0 */ + { 3031, 0x00003001 }, /* GL_CLIP_DISTANCE1 */ + { 3049, 0x00003002 }, /* GL_CLIP_DISTANCE2 */ + { 3067, 0x00003003 }, /* GL_CLIP_DISTANCE3 */ + { 3085, 0x00003004 }, /* GL_CLIP_DISTANCE4 */ + { 3103, 0x00003005 }, /* GL_CLIP_DISTANCE5 */ + { 3121, 0x00003006 }, /* GL_CLIP_DISTANCE6 */ + { 3139, 0x00003007 }, /* GL_CLIP_DISTANCE7 */ + { 3157, 0x00003000 }, /* GL_CLIP_PLANE0 */ + { 3172, 0x00003001 }, /* GL_CLIP_PLANE1 */ + { 3187, 0x00003002 }, /* GL_CLIP_PLANE2 */ + { 3202, 0x00003003 }, /* GL_CLIP_PLANE3 */ + { 3217, 0x00003004 }, /* GL_CLIP_PLANE4 */ + { 3232, 0x00003005 }, /* GL_CLIP_PLANE5 */ + { 3247, 0x000080F0 }, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */ + { 3280, 0x00000A00 }, /* GL_COEFF */ + { 3289, 0x00001800 }, /* GL_COLOR */ + { 3298, 0x00008076 }, /* GL_COLOR_ARRAY */ + { 3313, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING */ + { 3343, 0x00008898 }, /* GL_COLOR_ARRAY_BUFFER_BINDING_ARB */ + { 3377, 0x00008090 }, /* GL_COLOR_ARRAY_POINTER */ + { 3400, 0x00008081 }, /* GL_COLOR_ARRAY_SIZE */ + { 3420, 0x00008083 }, /* GL_COLOR_ARRAY_STRIDE */ + { 3442, 0x00008082 }, /* GL_COLOR_ARRAY_TYPE */ + { 3462, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0 */ + { 3483, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_EXT */ + { 3508, 0x00008CE0 }, /* GL_COLOR_ATTACHMENT0_OES */ + { 3533, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1 */ + { 3554, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10 */ + { 3576, 0x00008CEA }, /* GL_COLOR_ATTACHMENT10_EXT */ + { 3602, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11 */ + { 3624, 0x00008CEB }, /* GL_COLOR_ATTACHMENT11_EXT */ + { 3650, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12 */ + { 3672, 0x00008CEC }, /* GL_COLOR_ATTACHMENT12_EXT */ + { 3698, 0x00008CED }, /* GL_COLOR_ATTACHMENT13 */ + { 3720, 0x00008CED }, /* GL_COLOR_ATTACHMENT13_EXT */ + { 3746, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14 */ + { 3768, 0x00008CEE }, /* GL_COLOR_ATTACHMENT14_EXT */ + { 3794, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15 */ + { 3816, 0x00008CEF }, /* GL_COLOR_ATTACHMENT15_EXT */ + { 3842, 0x00008CE1 }, /* GL_COLOR_ATTACHMENT1_EXT */ + { 3867, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2 */ + { 3888, 0x00008CE2 }, /* GL_COLOR_ATTACHMENT2_EXT */ + { 3913, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3 */ + { 3934, 0x00008CE3 }, /* GL_COLOR_ATTACHMENT3_EXT */ + { 3959, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4 */ + { 3980, 0x00008CE4 }, /* GL_COLOR_ATTACHMENT4_EXT */ + { 4005, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5 */ + { 4026, 0x00008CE5 }, /* GL_COLOR_ATTACHMENT5_EXT */ + { 4051, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6 */ + { 4072, 0x00008CE6 }, /* GL_COLOR_ATTACHMENT6_EXT */ + { 4097, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7 */ + { 4118, 0x00008CE7 }, /* GL_COLOR_ATTACHMENT7_EXT */ + { 4143, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8 */ + { 4164, 0x00008CE8 }, /* GL_COLOR_ATTACHMENT8_EXT */ + { 4189, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9 */ + { 4210, 0x00008CE9 }, /* GL_COLOR_ATTACHMENT9_EXT */ + { 4235, 0x00004000 }, /* GL_COLOR_BUFFER_BIT */ + { 4255, 0x00000C22 }, /* GL_COLOR_CLEAR_VALUE */ + { 4276, 0x00001900 }, /* GL_COLOR_INDEX */ + { 4291, 0x00001603 }, /* GL_COLOR_INDEXES */ + { 4308, 0x00000BF2 }, /* GL_COLOR_LOGIC_OP */ + { 4326, 0x00000B57 }, /* GL_COLOR_MATERIAL */ + { 4344, 0x00000B55 }, /* GL_COLOR_MATERIAL_FACE */ + { 4367, 0x00000B56 }, /* GL_COLOR_MATERIAL_PARAMETER */ + { 4395, 0x000080B1 }, /* GL_COLOR_MATRIX */ + { 4411, 0x000080B1 }, /* GL_COLOR_MATRIX_SGI */ + { 4431, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH */ + { 4459, 0x000080B2 }, /* GL_COLOR_MATRIX_STACK_DEPTH_SGI */ + { 4491, 0x00008458 }, /* GL_COLOR_SUM */ + { 4504, 0x00008458 }, /* GL_COLOR_SUM_ARB */ + { 4521, 0x000080D0 }, /* GL_COLOR_TABLE */ + { 4536, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE */ + { 4562, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_EXT */ + { 4592, 0x000080DD }, /* GL_COLOR_TABLE_ALPHA_SIZE_SGI */ + { 4622, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS */ + { 4642, 0x000080D7 }, /* GL_COLOR_TABLE_BIAS_SGI */ + { 4666, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE */ + { 4691, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_EXT */ + { 4720, 0x000080DC }, /* GL_COLOR_TABLE_BLUE_SIZE_SGI */ + { 4749, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT */ + { 4771, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_EXT */ + { 4797, 0x000080D8 }, /* GL_COLOR_TABLE_FORMAT_SGI */ + { 4823, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE */ + { 4849, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_EXT */ + { 4879, 0x000080DB }, /* GL_COLOR_TABLE_GREEN_SIZE_SGI */ + { 4909, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE */ + { 4939, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_EXT */ + { 4973, 0x000080DF }, /* GL_COLOR_TABLE_INTENSITY_SIZE_SGI */ + { 5007, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE */ + { 5037, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_EXT */ + { 5071, 0x000080DE }, /* GL_COLOR_TABLE_LUMINANCE_SIZE_SGI */ + { 5105, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE */ + { 5129, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_EXT */ + { 5157, 0x000080DA }, /* GL_COLOR_TABLE_RED_SIZE_SGI */ + { 5185, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE */ + { 5206, 0x000080D6 }, /* GL_COLOR_TABLE_SCALE_SGI */ + { 5231, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH */ + { 5252, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_EXT */ + { 5277, 0x000080D9 }, /* GL_COLOR_TABLE_WIDTH_SGI */ + { 5302, 0x00000C23 }, /* GL_COLOR_WRITEMASK */ + { 5321, 0x00008570 }, /* GL_COMBINE */ + { 5332, 0x00008503 }, /* GL_COMBINE4 */ + { 5344, 0x00008572 }, /* GL_COMBINE_ALPHA */ + { 5361, 0x00008572 }, /* GL_COMBINE_ALPHA_ARB */ + { 5382, 0x00008572 }, /* GL_COMBINE_ALPHA_EXT */ + { 5403, 0x00008570 }, /* GL_COMBINE_ARB */ + { 5418, 0x00008570 }, /* GL_COMBINE_EXT */ + { 5433, 0x00008571 }, /* GL_COMBINE_RGB */ + { 5448, 0x00008571 }, /* GL_COMBINE_RGB_ARB */ + { 5467, 0x00008571 }, /* GL_COMBINE_RGB_EXT */ + { 5486, 0x0000884E }, /* GL_COMPARE_REF_DEPTH_TO_TEXTURE_EXT */ + { 5522, 0x0000884E }, /* GL_COMPARE_REF_TO_TEXTURE */ + { 5548, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE */ + { 5572, 0x0000884E }, /* GL_COMPARE_R_TO_TEXTURE_ARB */ + { 5600, 0x00001300 }, /* GL_COMPILE */ + { 5611, 0x00001301 }, /* GL_COMPILE_AND_EXECUTE */ + { 5634, 0x00008B81 }, /* GL_COMPILE_STATUS */ + { 5652, 0x000084E9 }, /* GL_COMPRESSED_ALPHA */ + { 5672, 0x000084E9 }, /* GL_COMPRESSED_ALPHA_ARB */ + { 5696, 0x000084EC }, /* GL_COMPRESSED_INTENSITY */ + { 5720, 0x000084EC }, /* GL_COMPRESSED_INTENSITY_ARB */ + { 5748, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE */ + { 5772, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA */ + { 5802, 0x000084EB }, /* GL_COMPRESSED_LUMINANCE_ALPHA_ARB */ + { 5836, 0x000084EA }, /* GL_COMPRESSED_LUMINANCE_ARB */ + { 5864, 0x00008225 }, /* GL_COMPRESSED_RED */ + { 5882, 0x00008226 }, /* GL_COMPRESSED_RG */ + { 5899, 0x000084ED }, /* GL_COMPRESSED_RGB */ + { 5917, 0x000084EE }, /* GL_COMPRESSED_RGBA */ + { 5936, 0x000084EE }, /* GL_COMPRESSED_RGBA_ARB */ + { 5959, 0x000086B1 }, /* GL_COMPRESSED_RGBA_FXT1_3DFX */ + { 5988, 0x000083F1 }, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */ + { 6021, 0x000083F2 }, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */ + { 6054, 0x000083F3 }, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */ + { 6087, 0x000084ED }, /* GL_COMPRESSED_RGB_ARB */ + { 6109, 0x000086B0 }, /* GL_COMPRESSED_RGB_FXT1_3DFX */ + { 6137, 0x000083F0 }, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */ + { 6169, 0x00008C4A }, /* GL_COMPRESSED_SLUMINANCE */ + { 6194, 0x00008C4B }, /* GL_COMPRESSED_SLUMINANCE_ALPHA */ + { 6225, 0x00008C48 }, /* GL_COMPRESSED_SRGB */ + { 6244, 0x00008C49 }, /* GL_COMPRESSED_SRGB_ALPHA */ + { 6269, 0x000086A3 }, /* GL_COMPRESSED_TEXTURE_FORMATS */ + { 6299, 0x0000911C }, /* GL_CONDITION_SATISFIED */ + { 6322, 0x00008576 }, /* GL_CONSTANT */ + { 6334, 0x00008003 }, /* GL_CONSTANT_ALPHA */ + { 6352, 0x00008003 }, /* GL_CONSTANT_ALPHA_EXT */ + { 6374, 0x00008576 }, /* GL_CONSTANT_ARB */ + { 6390, 0x00001207 }, /* GL_CONSTANT_ATTENUATION */ + { 6414, 0x00008151 }, /* GL_CONSTANT_BORDER_HP */ + { 6436, 0x00008001 }, /* GL_CONSTANT_COLOR */ + { 6454, 0x00008001 }, /* GL_CONSTANT_COLOR_EXT */ + { 6476, 0x00008576 }, /* GL_CONSTANT_EXT */ + { 6492, 0x00000002 }, /* GL_CONTEXT_COMPATIBILITY_PROFILE_BIT */ + { 6529, 0x00000001 }, /* GL_CONTEXT_CORE_PROFILE_BIT */ + { 6557, 0x0000821E }, /* GL_CONTEXT_FLAGS */ + { 6574, 0x00000001 }, /* GL_CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT */ + { 6613, 0x00009126 }, /* GL_CONTEXT_PROFILE_MASK */ + { 6637, 0x00008010 }, /* GL_CONVOLUTION_1D */ + { 6655, 0x00008011 }, /* GL_CONVOLUTION_2D */ + { 6673, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR */ + { 6701, 0x00008154 }, /* GL_CONVOLUTION_BORDER_COLOR_HP */ + { 6732, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE */ + { 6759, 0x00008013 }, /* GL_CONVOLUTION_BORDER_MODE_EXT */ + { 6790, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS */ + { 6817, 0x00008015 }, /* GL_CONVOLUTION_FILTER_BIAS_EXT */ + { 6848, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE */ + { 6876, 0x00008014 }, /* GL_CONVOLUTION_FILTER_SCALE_EXT */ + { 6908, 0x00008017 }, /* GL_CONVOLUTION_FORMAT */ + { 6930, 0x00008017 }, /* GL_CONVOLUTION_FORMAT_EXT */ + { 6956, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT */ + { 6978, 0x00008019 }, /* GL_CONVOLUTION_HEIGHT_EXT */ + { 7004, 0x00008018 }, /* GL_CONVOLUTION_WIDTH */ + { 7025, 0x00008018 }, /* GL_CONVOLUTION_WIDTH_EXT */ + { 7050, 0x00008862 }, /* GL_COORD_REPLACE */ + { 7067, 0x00008862 }, /* GL_COORD_REPLACE_ARB */ + { 7088, 0x00008862 }, /* GL_COORD_REPLACE_NV */ + { 7108, 0x00008862 }, /* GL_COORD_REPLACE_OES */ + { 7129, 0x00001503 }, /* GL_COPY */ + { 7137, 0x0000150C }, /* GL_COPY_INVERTED */ + { 7154, 0x00000706 }, /* GL_COPY_PIXEL_TOKEN */ + { 7174, 0x00008F36 }, /* GL_COPY_READ_BUFFER */ + { 7194, 0x00008F37 }, /* GL_COPY_WRITE_BUFFER */ + { 7215, 0x00000B44 }, /* GL_CULL_FACE */ + { 7228, 0x00000B45 }, /* GL_CULL_FACE_MODE */ + { 7246, 0x000081AA }, /* GL_CULL_VERTEX_EXT */ + { 7265, 0x000081AC }, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ + { 7297, 0x000081AB }, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ + { 7332, 0x00008626 }, /* GL_CURRENT_ATTRIB_NV */ + { 7353, 0x00000001 }, /* GL_CURRENT_BIT */ + { 7368, 0x00000B00 }, /* GL_CURRENT_COLOR */ + { 7385, 0x00008453 }, /* GL_CURRENT_FOG_COORD */ + { 7406, 0x00008453 }, /* GL_CURRENT_FOG_COORDINATE */ + { 7432, 0x00000B01 }, /* GL_CURRENT_INDEX */ + { 7449, 0x00008641 }, /* GL_CURRENT_MATRIX_ARB */ + { 7471, 0x00008845 }, /* GL_CURRENT_MATRIX_INDEX_ARB */ + { 7499, 0x00008641 }, /* GL_CURRENT_MATRIX_NV */ + { 7520, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ + { 7554, 0x00008640 }, /* GL_CURRENT_MATRIX_STACK_DEPTH_NV */ + { 7587, 0x00000B02 }, /* GL_CURRENT_NORMAL */ + { 7605, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_ARB */ + { 7635, 0x00008843 }, /* GL_CURRENT_PALETTE_MATRIX_OES */ + { 7665, 0x00008B8D }, /* GL_CURRENT_PROGRAM */ + { 7684, 0x00008865 }, /* GL_CURRENT_QUERY */ + { 7701, 0x00008865 }, /* GL_CURRENT_QUERY_ARB */ + { 7722, 0x00000B04 }, /* GL_CURRENT_RASTER_COLOR */ + { 7746, 0x00000B09 }, /* GL_CURRENT_RASTER_DISTANCE */ + { 7773, 0x00000B05 }, /* GL_CURRENT_RASTER_INDEX */ + { 7797, 0x00000B07 }, /* GL_CURRENT_RASTER_POSITION */ + { 7824, 0x00000B08 }, /* GL_CURRENT_RASTER_POSITION_VALID */ + { 7857, 0x0000845F }, /* GL_CURRENT_RASTER_SECONDARY_COLOR */ + { 7891, 0x00000B06 }, /* GL_CURRENT_RASTER_TEXTURE_COORDS */ + { 7924, 0x00008459 }, /* GL_CURRENT_SECONDARY_COLOR */ + { 7951, 0x00000B03 }, /* GL_CURRENT_TEXTURE_COORDS */ + { 7977, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB */ + { 8002, 0x00008626 }, /* GL_CURRENT_VERTEX_ATTRIB_ARB */ + { 8031, 0x000086A8 }, /* GL_CURRENT_WEIGHT_ARB */ + { 8053, 0x00000900 }, /* GL_CW */ + { 8059, 0x0000875B }, /* GL_DEBUG_ASSERT_MESA */ + { 8080, 0x00008759 }, /* GL_DEBUG_OBJECT_MESA */ + { 8101, 0x0000875A }, /* GL_DEBUG_PRINT_MESA */ + { 8121, 0x00002101 }, /* GL_DECAL */ + { 8130, 0x00001E03 }, /* GL_DECR */ + { 8138, 0x00008508 }, /* GL_DECR_WRAP */ + { 8151, 0x00008508 }, /* GL_DECR_WRAP_EXT */ + { 8168, 0x00008B80 }, /* GL_DELETE_STATUS */ + { 8185, 0x00001801 }, /* GL_DEPTH */ + { 8194, 0x000088F0 }, /* GL_DEPTH24_STENCIL8 */ + { 8214, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_EXT */ + { 8238, 0x000088F0 }, /* GL_DEPTH24_STENCIL8_OES */ + { 8262, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT */ + { 8282, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_EXT */ + { 8306, 0x00008D00 }, /* GL_DEPTH_ATTACHMENT_OES */ + { 8330, 0x00000D1F }, /* GL_DEPTH_BIAS */ + { 8344, 0x00000D56 }, /* GL_DEPTH_BITS */ + { 8358, 0x00008891 }, /* GL_DEPTH_BOUNDS_EXT */ + { 8378, 0x00008890 }, /* GL_DEPTH_BOUNDS_TEST_EXT */ + { 8403, 0x00008223 }, /* GL_DEPTH_BUFFER */ + { 8419, 0x00000100 }, /* GL_DEPTH_BUFFER_BIT */ + { 8439, 0x0000864F }, /* GL_DEPTH_CLAMP */ + { 8454, 0x0000864F }, /* GL_DEPTH_CLAMP_NV */ + { 8472, 0x00000B73 }, /* GL_DEPTH_CLEAR_VALUE */ + { 8493, 0x00001902 }, /* GL_DEPTH_COMPONENT */ + { 8512, 0x000081A5 }, /* GL_DEPTH_COMPONENT16 */ + { 8533, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_ARB */ + { 8558, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_OES */ + { 8583, 0x000081A5 }, /* GL_DEPTH_COMPONENT16_SGIX */ + { 8609, 0x000081A6 }, /* GL_DEPTH_COMPONENT24 */ + { 8630, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_ARB */ + { 8655, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_OES */ + { 8680, 0x000081A6 }, /* GL_DEPTH_COMPONENT24_SGIX */ + { 8706, 0x000081A7 }, /* GL_DEPTH_COMPONENT32 */ + { 8727, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_ARB */ + { 8752, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_OES */ + { 8777, 0x000081A7 }, /* GL_DEPTH_COMPONENT32_SGIX */ + { 8803, 0x00000B74 }, /* GL_DEPTH_FUNC */ + { 8817, 0x00000B70 }, /* GL_DEPTH_RANGE */ + { 8832, 0x00000D1E }, /* GL_DEPTH_SCALE */ + { 8847, 0x000084F9 }, /* GL_DEPTH_STENCIL */ + { 8864, 0x0000821A }, /* GL_DEPTH_STENCIL_ATTACHMENT */ + { 8892, 0x000084F9 }, /* GL_DEPTH_STENCIL_EXT */ + { 8913, 0x000084F9 }, /* GL_DEPTH_STENCIL_NV */ + { 8933, 0x000084F9 }, /* GL_DEPTH_STENCIL_OES */ + { 8954, 0x0000886F }, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ + { 8982, 0x0000886E }, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ + { 9010, 0x00000B71 }, /* GL_DEPTH_TEST */ + { 9024, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE */ + { 9046, 0x0000884B }, /* GL_DEPTH_TEXTURE_MODE_ARB */ + { 9072, 0x00000B72 }, /* GL_DEPTH_WRITEMASK */ + { 9091, 0x00001201 }, /* GL_DIFFUSE */ + { 9102, 0x00000BD0 }, /* GL_DITHER */ + { 9112, 0x00000A02 }, /* GL_DOMAIN */ + { 9122, 0x00001100 }, /* GL_DONT_CARE */ + { 9135, 0x000086AE }, /* GL_DOT3_RGB */ + { 9147, 0x000086AF }, /* GL_DOT3_RGBA */ + { 9160, 0x000086AF }, /* GL_DOT3_RGBA_ARB */ + { 9177, 0x00008741 }, /* GL_DOT3_RGBA_EXT */ + { 9194, 0x000086AE }, /* GL_DOT3_RGB_ARB */ + { 9210, 0x00008740 }, /* GL_DOT3_RGB_EXT */ + { 9226, 0x0000140A }, /* GL_DOUBLE */ + { 9236, 0x00000C32 }, /* GL_DOUBLEBUFFER */ + { 9252, 0x00000C01 }, /* GL_DRAW_BUFFER */ + { 9267, 0x00008825 }, /* GL_DRAW_BUFFER0 */ + { 9283, 0x00008825 }, /* GL_DRAW_BUFFER0_ARB */ + { 9303, 0x00008825 }, /* GL_DRAW_BUFFER0_ATI */ + { 9323, 0x00008826 }, /* GL_DRAW_BUFFER1 */ + { 9339, 0x0000882F }, /* GL_DRAW_BUFFER10 */ + { 9356, 0x0000882F }, /* GL_DRAW_BUFFER10_ARB */ + { 9377, 0x0000882F }, /* GL_DRAW_BUFFER10_ATI */ + { 9398, 0x00008830 }, /* GL_DRAW_BUFFER11 */ + { 9415, 0x00008830 }, /* GL_DRAW_BUFFER11_ARB */ + { 9436, 0x00008830 }, /* GL_DRAW_BUFFER11_ATI */ + { 9457, 0x00008831 }, /* GL_DRAW_BUFFER12 */ + { 9474, 0x00008831 }, /* GL_DRAW_BUFFER12_ARB */ + { 9495, 0x00008831 }, /* GL_DRAW_BUFFER12_ATI */ + { 9516, 0x00008832 }, /* GL_DRAW_BUFFER13 */ + { 9533, 0x00008832 }, /* GL_DRAW_BUFFER13_ARB */ + { 9554, 0x00008832 }, /* GL_DRAW_BUFFER13_ATI */ + { 9575, 0x00008833 }, /* GL_DRAW_BUFFER14 */ + { 9592, 0x00008833 }, /* GL_DRAW_BUFFER14_ARB */ + { 9613, 0x00008833 }, /* GL_DRAW_BUFFER14_ATI */ + { 9634, 0x00008834 }, /* GL_DRAW_BUFFER15 */ + { 9651, 0x00008834 }, /* GL_DRAW_BUFFER15_ARB */ + { 9672, 0x00008834 }, /* GL_DRAW_BUFFER15_ATI */ + { 9693, 0x00008826 }, /* GL_DRAW_BUFFER1_ARB */ + { 9713, 0x00008826 }, /* GL_DRAW_BUFFER1_ATI */ + { 9733, 0x00008827 }, /* GL_DRAW_BUFFER2 */ + { 9749, 0x00008827 }, /* GL_DRAW_BUFFER2_ARB */ + { 9769, 0x00008827 }, /* GL_DRAW_BUFFER2_ATI */ + { 9789, 0x00008828 }, /* GL_DRAW_BUFFER3 */ + { 9805, 0x00008828 }, /* GL_DRAW_BUFFER3_ARB */ + { 9825, 0x00008828 }, /* GL_DRAW_BUFFER3_ATI */ + { 9845, 0x00008829 }, /* GL_DRAW_BUFFER4 */ + { 9861, 0x00008829 }, /* GL_DRAW_BUFFER4_ARB */ + { 9881, 0x00008829 }, /* GL_DRAW_BUFFER4_ATI */ + { 9901, 0x0000882A }, /* GL_DRAW_BUFFER5 */ + { 9917, 0x0000882A }, /* GL_DRAW_BUFFER5_ARB */ + { 9937, 0x0000882A }, /* GL_DRAW_BUFFER5_ATI */ + { 9957, 0x0000882B }, /* GL_DRAW_BUFFER6 */ + { 9973, 0x0000882B }, /* GL_DRAW_BUFFER6_ARB */ + { 9993, 0x0000882B }, /* GL_DRAW_BUFFER6_ATI */ + { 10013, 0x0000882C }, /* GL_DRAW_BUFFER7 */ + { 10029, 0x0000882C }, /* GL_DRAW_BUFFER7_ARB */ + { 10049, 0x0000882C }, /* GL_DRAW_BUFFER7_ATI */ + { 10069, 0x0000882D }, /* GL_DRAW_BUFFER8 */ + { 10085, 0x0000882D }, /* GL_DRAW_BUFFER8_ARB */ + { 10105, 0x0000882D }, /* GL_DRAW_BUFFER8_ATI */ + { 10125, 0x0000882E }, /* GL_DRAW_BUFFER9 */ + { 10141, 0x0000882E }, /* GL_DRAW_BUFFER9_ARB */ + { 10161, 0x0000882E }, /* GL_DRAW_BUFFER9_ATI */ + { 10181, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER */ + { 10201, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING */ + { 10229, 0x00008CA6 }, /* GL_DRAW_FRAMEBUFFER_BINDING_EXT */ + { 10261, 0x00008CA9 }, /* GL_DRAW_FRAMEBUFFER_EXT */ + { 10285, 0x00000705 }, /* GL_DRAW_PIXEL_TOKEN */ + { 10305, 0x00000304 }, /* GL_DST_ALPHA */ + { 10318, 0x00000306 }, /* GL_DST_COLOR */ + { 10331, 0x0000877A }, /* GL_DU8DV8_ATI */ + { 10345, 0x00008779 }, /* GL_DUDV_ATI */ + { 10357, 0x000088EA }, /* GL_DYNAMIC_COPY */ + { 10373, 0x000088EA }, /* GL_DYNAMIC_COPY_ARB */ + { 10393, 0x000088E8 }, /* GL_DYNAMIC_DRAW */ + { 10409, 0x000088E8 }, /* GL_DYNAMIC_DRAW_ARB */ + { 10429, 0x000088E9 }, /* GL_DYNAMIC_READ */ + { 10445, 0x000088E9 }, /* GL_DYNAMIC_READ_ARB */ + { 10465, 0x00000B43 }, /* GL_EDGE_FLAG */ + { 10478, 0x00008079 }, /* GL_EDGE_FLAG_ARRAY */ + { 10497, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ + { 10531, 0x0000889B }, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB */ + { 10569, 0x00008093 }, /* GL_EDGE_FLAG_ARRAY_POINTER */ + { 10596, 0x0000808C }, /* GL_EDGE_FLAG_ARRAY_STRIDE */ + { 10622, 0x00008893 }, /* GL_ELEMENT_ARRAY_BUFFER */ + { 10646, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ + { 10678, 0x00008895 }, /* GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB */ + { 10714, 0x00001600 }, /* GL_EMISSION */ + { 10726, 0x00002000 }, /* GL_ENABLE_BIT */ + { 10740, 0x00000202 }, /* GL_EQUAL */ + { 10749, 0x00001509 }, /* GL_EQUIV */ + { 10758, 0x00010000 }, /* GL_EVAL_BIT */ + { 10770, 0x00000800 }, /* GL_EXP */ + { 10777, 0x00000801 }, /* GL_EXP2 */ + { 10785, 0x00001F03 }, /* GL_EXTENSIONS */ + { 10799, 0x00002400 }, /* GL_EYE_LINEAR */ + { 10813, 0x00002502 }, /* GL_EYE_PLANE */ + { 10826, 0x0000855C }, /* GL_EYE_PLANE_ABSOLUTE_NV */ + { 10851, 0x0000855B }, /* GL_EYE_RADIAL_NV */ + { 10868, 0x00000000 }, /* GL_FALSE */ + { 10877, 0x00001101 }, /* GL_FASTEST */ + { 10888, 0x00001C01 }, /* GL_FEEDBACK */ + { 10900, 0x00000DF0 }, /* GL_FEEDBACK_BUFFER_POINTER */ + { 10927, 0x00000DF1 }, /* GL_FEEDBACK_BUFFER_SIZE */ + { 10951, 0x00000DF2 }, /* GL_FEEDBACK_BUFFER_TYPE */ + { 10975, 0x00001B02 }, /* GL_FILL */ + { 10983, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION */ + { 11010, 0x00008E4D }, /* GL_FIRST_VERTEX_CONVENTION_EXT */ + { 11041, 0x0000140C }, /* GL_FIXED */ + { 11050, 0x0000140C }, /* GL_FIXED_OES */ + { 11063, 0x0000891D }, /* GL_FIXED_ONLY */ + { 11077, 0x00001D00 }, /* GL_FLAT */ + { 11085, 0x00001406 }, /* GL_FLOAT */ + { 11094, 0x00008B5A }, /* GL_FLOAT_MAT2 */ + { 11108, 0x00008B5A }, /* GL_FLOAT_MAT2_ARB */ + { 11126, 0x00008B65 }, /* GL_FLOAT_MAT2x3 */ + { 11142, 0x00008B66 }, /* GL_FLOAT_MAT2x4 */ + { 11158, 0x00008B5B }, /* GL_FLOAT_MAT3 */ + { 11172, 0x00008B5B }, /* GL_FLOAT_MAT3_ARB */ + { 11190, 0x00008B67 }, /* GL_FLOAT_MAT3x2 */ + { 11206, 0x00008B68 }, /* GL_FLOAT_MAT3x4 */ + { 11222, 0x00008B5C }, /* GL_FLOAT_MAT4 */ + { 11236, 0x00008B5C }, /* GL_FLOAT_MAT4_ARB */ + { 11254, 0x00008B69 }, /* GL_FLOAT_MAT4x2 */ + { 11270, 0x00008B6A }, /* GL_FLOAT_MAT4x3 */ + { 11286, 0x00008B50 }, /* GL_FLOAT_VEC2 */ + { 11300, 0x00008B50 }, /* GL_FLOAT_VEC2_ARB */ + { 11318, 0x00008B51 }, /* GL_FLOAT_VEC3 */ + { 11332, 0x00008B51 }, /* GL_FLOAT_VEC3_ARB */ + { 11350, 0x00008B52 }, /* GL_FLOAT_VEC4 */ + { 11364, 0x00008B52 }, /* GL_FLOAT_VEC4_ARB */ + { 11382, 0x00000B60 }, /* GL_FOG */ + { 11389, 0x00000080 }, /* GL_FOG_BIT */ + { 11400, 0x00000B66 }, /* GL_FOG_COLOR */ + { 11413, 0x00008451 }, /* GL_FOG_COORD */ + { 11426, 0x00008451 }, /* GL_FOG_COORDINATE */ + { 11444, 0x00008457 }, /* GL_FOG_COORDINATE_ARRAY */ + { 11468, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ + { 11507, 0x0000889D }, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB */ + { 11550, 0x00008456 }, /* GL_FOG_COORDINATE_ARRAY_POINTER */ + { 11582, 0x00008455 }, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ + { 11613, 0x00008454 }, /* GL_FOG_COORDINATE_ARRAY_TYPE */ + { 11642, 0x00008450 }, /* GL_FOG_COORDINATE_SOURCE */ + { 11667, 0x00008457 }, /* GL_FOG_COORD_ARRAY */ + { 11686, 0x0000889D }, /* GL_FOG_COORD_ARRAY_BUFFER_BINDING */ + { 11720, 0x00008456 }, /* GL_FOG_COORD_ARRAY_POINTER */ + { 11747, 0x00008455 }, /* GL_FOG_COORD_ARRAY_STRIDE */ + { 11773, 0x00008454 }, /* GL_FOG_COORD_ARRAY_TYPE */ + { 11797, 0x00008450 }, /* GL_FOG_COORD_SRC */ + { 11814, 0x00000B62 }, /* GL_FOG_DENSITY */ + { 11829, 0x0000855A }, /* GL_FOG_DISTANCE_MODE_NV */ + { 11853, 0x00000B64 }, /* GL_FOG_END */ + { 11864, 0x00000C54 }, /* GL_FOG_HINT */ + { 11876, 0x00000B61 }, /* GL_FOG_INDEX */ + { 11889, 0x00000B65 }, /* GL_FOG_MODE */ + { 11901, 0x00008198 }, /* GL_FOG_OFFSET_SGIX */ + { 11920, 0x00008199 }, /* GL_FOG_OFFSET_VALUE_SGIX */ + { 11945, 0x00000B63 }, /* GL_FOG_START */ + { 11958, 0x00008452 }, /* GL_FRAGMENT_DEPTH */ + { 11976, 0x00008804 }, /* GL_FRAGMENT_PROGRAM_ARB */ + { 12000, 0x00008B30 }, /* GL_FRAGMENT_SHADER */ + { 12019, 0x00008B30 }, /* GL_FRAGMENT_SHADER_ARB */ + { 12042, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ + { 12077, 0x00008B8B }, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES */ + { 12116, 0x00008D40 }, /* GL_FRAMEBUFFER */ + { 12131, 0x00008215 }, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ + { 12168, 0x00008214 }, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ + { 12204, 0x00008210 }, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ + { 12245, 0x00008211 }, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ + { 12286, 0x00008216 }, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ + { 12323, 0x00008213 }, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ + { 12360, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */ + { 12394, 0x00008DA7 }, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB */ + { 12432, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ + { 12470, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT */ + { 12512, 0x00008CD1 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES */ + { 12554, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ + { 12592, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT */ + { 12634, 0x00008CD0 }, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES */ + { 12676, 0x00008212 }, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ + { 12711, 0x00008217 }, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ + { 12750, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT */ + { 12799, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES */ + { 12848, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ + { 12896, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT */ + { 12948, 0x00008CD3 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES */ + { 13000, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ + { 13040, 0x00008CD4 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT */ + { 13084, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ + { 13124, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT */ + { 13168, 0x00008CD2 }, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES */ + { 13212, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING */ + { 13235, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_EXT */ + { 13262, 0x00008CA6 }, /* GL_FRAMEBUFFER_BINDING_OES */ + { 13289, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE */ + { 13313, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_EXT */ + { 13341, 0x00008CD5 }, /* GL_FRAMEBUFFER_COMPLETE_OES */ + { 13369, 0x00008218 }, /* GL_FRAMEBUFFER_DEFAULT */ + { 13392, 0x00008D40 }, /* GL_FRAMEBUFFER_EXT */ + { 13411, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ + { 13448, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT */ + { 13489, 0x00008CD6 }, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES */ + { 13530, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS */ + { 13567, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ + { 13608, 0x00008CD9 }, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES */ + { 13649, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ + { 13687, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT */ + { 13729, 0x00008CDB }, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES */ + { 13771, 0x00008CD8 }, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ + { 13822, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ + { 13860, 0x00008CDA }, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES */ + { 13898, 0x00008DA9 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */ + { 13940, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */ + { 13980, 0x00008DA8 }, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB */ + { 14024, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ + { 14069, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT */ + { 14118, 0x00008CD7 }, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES */ + { 14167, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ + { 14205, 0x00008D56 }, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT */ + { 14247, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ + { 14285, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT */ + { 14327, 0x00008CDC }, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES */ + { 14369, 0x00008D40 }, /* GL_FRAMEBUFFER_OES */ + { 14388, 0x00008CDE }, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ + { 14420, 0x00008219 }, /* GL_FRAMEBUFFER_UNDEFINED */ + { 14445, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED */ + { 14472, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_EXT */ + { 14503, 0x00008CDD }, /* GL_FRAMEBUFFER_UNSUPPORTED_OES */ + { 14534, 0x00000404 }, /* GL_FRONT */ + { 14543, 0x00000408 }, /* GL_FRONT_AND_BACK */ + { 14561, 0x00000B46 }, /* GL_FRONT_FACE */ + { 14575, 0x00000400 }, /* GL_FRONT_LEFT */ + { 14589, 0x00000401 }, /* GL_FRONT_RIGHT */ + { 14604, 0x00008006 }, /* GL_FUNC_ADD */ + { 14616, 0x00008006 }, /* GL_FUNC_ADD_EXT */ + { 14632, 0x00008006 }, /* GL_FUNC_ADD_OES */ + { 14648, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT */ + { 14673, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_EXT */ + { 14702, 0x0000800B }, /* GL_FUNC_REVERSE_SUBTRACT_OES */ + { 14731, 0x0000800A }, /* GL_FUNC_SUBTRACT */ + { 14748, 0x0000800A }, /* GL_FUNC_SUBTRACT_EXT */ + { 14769, 0x0000800A }, /* GL_FUNC_SUBTRACT_OES */ + { 14790, 0x00008191 }, /* GL_GENERATE_MIPMAP */ + { 14809, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT */ + { 14833, 0x00008192 }, /* GL_GENERATE_MIPMAP_HINT_SGIS */ + { 14862, 0x00008191 }, /* GL_GENERATE_MIPMAP_SGIS */ + { 14886, 0x00008917 }, /* GL_GEOMETRY_INPUT_TYPE */ + { 14909, 0x00008DDB }, /* GL_GEOMETRY_INPUT_TYPE_ARB */ + { 14936, 0x00008918 }, /* GL_GEOMETRY_OUTPUT_TYPE */ + { 14960, 0x00008DDC }, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */ + { 14988, 0x00008DD9 }, /* GL_GEOMETRY_SHADER */ + { 15007, 0x00008DD9 }, /* GL_GEOMETRY_SHADER_ARB */ + { 15030, 0x00008916 }, /* GL_GEOMETRY_VERTICES_OUT */ + { 15055, 0x00008DDA }, /* GL_GEOMETRY_VERTICES_OUT_ARB */ + { 15084, 0x00000206 }, /* GL_GEQUAL */ + { 15094, 0x00000204 }, /* GL_GREATER */ + { 15105, 0x00001904 }, /* GL_GREEN */ + { 15114, 0x00000D19 }, /* GL_GREEN_BIAS */ + { 15128, 0x00000D53 }, /* GL_GREEN_BITS */ + { 15142, 0x00008D95 }, /* GL_GREEN_INTEGER */ + { 15159, 0x00008D95 }, /* GL_GREEN_INTEGER_EXT */ + { 15180, 0x00000D18 }, /* GL_GREEN_SCALE */ + { 15195, 0x0000140B }, /* GL_HALF_FLOAT */ + { 15209, 0x00008D61 }, /* GL_HALF_FLOAT_OES */ + { 15227, 0x00008DF2 }, /* GL_HIGH_FLOAT */ + { 15241, 0x00008DF5 }, /* GL_HIGH_INT */ + { 15253, 0x00008000 }, /* GL_HINT_BIT */ + { 15265, 0x00008024 }, /* GL_HISTOGRAM */ + { 15278, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE */ + { 15302, 0x0000802B }, /* GL_HISTOGRAM_ALPHA_SIZE_EXT */ + { 15330, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE */ + { 15353, 0x0000802A }, /* GL_HISTOGRAM_BLUE_SIZE_EXT */ + { 15380, 0x00008024 }, /* GL_HISTOGRAM_EXT */ + { 15397, 0x00008027 }, /* GL_HISTOGRAM_FORMAT */ + { 15417, 0x00008027 }, /* GL_HISTOGRAM_FORMAT_EXT */ + { 15441, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE */ + { 15465, 0x00008029 }, /* GL_HISTOGRAM_GREEN_SIZE_EXT */ + { 15493, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE */ + { 15521, 0x0000802C }, /* GL_HISTOGRAM_LUMINANCE_SIZE_EXT */ + { 15553, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE */ + { 15575, 0x00008028 }, /* GL_HISTOGRAM_RED_SIZE_EXT */ + { 15601, 0x0000802D }, /* GL_HISTOGRAM_SINK */ + { 15619, 0x0000802D }, /* GL_HISTOGRAM_SINK_EXT */ + { 15641, 0x00008026 }, /* GL_HISTOGRAM_WIDTH */ + { 15660, 0x00008026 }, /* GL_HISTOGRAM_WIDTH_EXT */ + { 15683, 0x0000862A }, /* GL_IDENTITY_NV */ + { 15698, 0x00008150 }, /* GL_IGNORE_BORDER_HP */ + { 15718, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */ + { 15754, 0x00008B9B }, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */ + { 15794, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */ + { 15828, 0x00008B9A }, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */ + { 15866, 0x00001E02 }, /* GL_INCR */ + { 15874, 0x00008507 }, /* GL_INCR_WRAP */ + { 15887, 0x00008507 }, /* GL_INCR_WRAP_EXT */ + { 15904, 0x00008222 }, /* GL_INDEX */ + { 15913, 0x00008077 }, /* GL_INDEX_ARRAY */ + { 15928, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING */ + { 15958, 0x00008899 }, /* GL_INDEX_ARRAY_BUFFER_BINDING_ARB */ + { 15992, 0x00008091 }, /* GL_INDEX_ARRAY_POINTER */ + { 16015, 0x00008086 }, /* GL_INDEX_ARRAY_STRIDE */ + { 16037, 0x00008085 }, /* GL_INDEX_ARRAY_TYPE */ + { 16057, 0x00000D51 }, /* GL_INDEX_BITS */ + { 16071, 0x00000C20 }, /* GL_INDEX_CLEAR_VALUE */ + { 16092, 0x00000BF1 }, /* GL_INDEX_LOGIC_OP */ + { 16110, 0x00000C30 }, /* GL_INDEX_MODE */ + { 16124, 0x00000D13 }, /* GL_INDEX_OFFSET */ + { 16140, 0x00000D12 }, /* GL_INDEX_SHIFT */ + { 16155, 0x00000C21 }, /* GL_INDEX_WRITEMASK */ + { 16174, 0x00008B84 }, /* GL_INFO_LOG_LENGTH */ + { 16193, 0x00001404 }, /* GL_INT */ + { 16200, 0x00008049 }, /* GL_INTENSITY */ + { 16213, 0x0000804C }, /* GL_INTENSITY12 */ + { 16228, 0x0000804C }, /* GL_INTENSITY12_EXT */ + { 16247, 0x0000804D }, /* GL_INTENSITY16 */ + { 16262, 0x00008D8B }, /* GL_INTENSITY16I_EXT */ + { 16282, 0x00008D79 }, /* GL_INTENSITY16UI_EXT */ + { 16303, 0x0000804D }, /* GL_INTENSITY16_EXT */ + { 16322, 0x00008D85 }, /* GL_INTENSITY32I_EXT */ + { 16342, 0x00008D73 }, /* GL_INTENSITY32UI_EXT */ + { 16363, 0x0000804A }, /* GL_INTENSITY4 */ + { 16377, 0x0000804A }, /* GL_INTENSITY4_EXT */ + { 16395, 0x0000804B }, /* GL_INTENSITY8 */ + { 16409, 0x00008D91 }, /* GL_INTENSITY8I_EXT */ + { 16428, 0x00008D7F }, /* GL_INTENSITY8UI_EXT */ + { 16448, 0x0000804B }, /* GL_INTENSITY8_EXT */ + { 16466, 0x00008049 }, /* GL_INTENSITY_EXT */ + { 16483, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS */ + { 16506, 0x00008C8C }, /* GL_INTERLEAVED_ATTRIBS_EXT */ + { 16533, 0x00008575 }, /* GL_INTERPOLATE */ + { 16548, 0x00008575 }, /* GL_INTERPOLATE_ARB */ + { 16567, 0x00008575 }, /* GL_INTERPOLATE_EXT */ + { 16586, 0x00008DF7 }, /* GL_INT_10_10_10_2_OES */ + { 16608, 0x00008DC9 }, /* GL_INT_SAMPLER_1D */ + { 16626, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY */ + { 16650, 0x00008DCE }, /* GL_INT_SAMPLER_1D_ARRAY_EXT */ + { 16678, 0x00008DC9 }, /* GL_INT_SAMPLER_1D_EXT */ + { 16700, 0x00008DCA }, /* GL_INT_SAMPLER_2D */ + { 16718, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY */ + { 16742, 0x00008DCF }, /* GL_INT_SAMPLER_2D_ARRAY_EXT */ + { 16770, 0x00008DCA }, /* GL_INT_SAMPLER_2D_EXT */ + { 16792, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT */ + { 16815, 0x00008DCD }, /* GL_INT_SAMPLER_2D_RECT_EXT */ + { 16842, 0x00008DCB }, /* GL_INT_SAMPLER_3D */ + { 16860, 0x00008DCB }, /* GL_INT_SAMPLER_3D_EXT */ + { 16882, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER */ + { 16904, 0x00008DD0 }, /* GL_INT_SAMPLER_BUFFER_EXT */ + { 16930, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE */ + { 16950, 0x00008DCC }, /* GL_INT_SAMPLER_CUBE_EXT */ + { 16974, 0x00008B53 }, /* GL_INT_VEC2 */ + { 16986, 0x00008B53 }, /* GL_INT_VEC2_ARB */ + { 17002, 0x00008B54 }, /* GL_INT_VEC3 */ + { 17014, 0x00008B54 }, /* GL_INT_VEC3_ARB */ + { 17030, 0x00008B55 }, /* GL_INT_VEC4 */ + { 17042, 0x00008B55 }, /* GL_INT_VEC4_ARB */ + { 17058, 0x00000500 }, /* GL_INVALID_ENUM */ + { 17074, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION */ + { 17107, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_EXT */ + { 17144, 0x00000506 }, /* GL_INVALID_FRAMEBUFFER_OPERATION_OES */ + { 17181, 0x00000502 }, /* GL_INVALID_OPERATION */ + { 17202, 0x00000501 }, /* GL_INVALID_VALUE */ + { 17219, 0x0000862B }, /* GL_INVERSE_NV */ + { 17233, 0x0000862D }, /* GL_INVERSE_TRANSPOSE_NV */ + { 17257, 0x0000150A }, /* GL_INVERT */ + { 17267, 0x00001E00 }, /* GL_KEEP */ + { 17275, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION */ + { 17301, 0x00008E4E }, /* GL_LAST_VERTEX_CONVENTION_EXT */ + { 17331, 0x00000406 }, /* GL_LEFT */ + { 17339, 0x00000203 }, /* GL_LEQUAL */ + { 17349, 0x00000201 }, /* GL_LESS */ + { 17357, 0x00004000 }, /* GL_LIGHT0 */ + { 17367, 0x00004001 }, /* GL_LIGHT1 */ + { 17377, 0x00004002 }, /* GL_LIGHT2 */ + { 17387, 0x00004003 }, /* GL_LIGHT3 */ + { 17397, 0x00004004 }, /* GL_LIGHT4 */ + { 17407, 0x00004005 }, /* GL_LIGHT5 */ + { 17417, 0x00004006 }, /* GL_LIGHT6 */ + { 17427, 0x00004007 }, /* GL_LIGHT7 */ + { 17437, 0x00000B50 }, /* GL_LIGHTING */ + { 17449, 0x00000040 }, /* GL_LIGHTING_BIT */ + { 17465, 0x00000B53 }, /* GL_LIGHT_MODEL_AMBIENT */ + { 17488, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL */ + { 17517, 0x000081F8 }, /* GL_LIGHT_MODEL_COLOR_CONTROL_EXT */ + { 17550, 0x00000B51 }, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ + { 17578, 0x00000B52 }, /* GL_LIGHT_MODEL_TWO_SIDE */ + { 17602, 0x00001B01 }, /* GL_LINE */ + { 17610, 0x00002601 }, /* GL_LINEAR */ + { 17620, 0x00001208 }, /* GL_LINEAR_ATTENUATION */ + { 17642, 0x00008170 }, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ + { 17672, 0x0000844F }, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ + { 17703, 0x00002703 }, /* GL_LINEAR_MIPMAP_LINEAR */ + { 17727, 0x00002701 }, /* GL_LINEAR_MIPMAP_NEAREST */ + { 17752, 0x00000001 }, /* GL_LINES */ + { 17761, 0x0000000A }, /* GL_LINES_ADJACENCY */ + { 17780, 0x0000000A }, /* GL_LINES_ADJACENCY_ARB */ + { 17803, 0x00000004 }, /* GL_LINE_BIT */ + { 17815, 0x00000002 }, /* GL_LINE_LOOP */ + { 17828, 0x00000707 }, /* GL_LINE_RESET_TOKEN */ + { 17848, 0x00000B20 }, /* GL_LINE_SMOOTH */ + { 17863, 0x00000C52 }, /* GL_LINE_SMOOTH_HINT */ + { 17883, 0x00000B24 }, /* GL_LINE_STIPPLE */ + { 17899, 0x00000B25 }, /* GL_LINE_STIPPLE_PATTERN */ + { 17923, 0x00000B26 }, /* GL_LINE_STIPPLE_REPEAT */ + { 17946, 0x00000003 }, /* GL_LINE_STRIP */ + { 17960, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY */ + { 17984, 0x0000000B }, /* GL_LINE_STRIP_ADJACENCY_ARB */ + { 18012, 0x00000702 }, /* GL_LINE_TOKEN */ + { 18026, 0x00000B21 }, /* GL_LINE_WIDTH */ + { 18040, 0x00000B23 }, /* GL_LINE_WIDTH_GRANULARITY */ + { 18066, 0x00000B22 }, /* GL_LINE_WIDTH_RANGE */ + { 18086, 0x00008B82 }, /* GL_LINK_STATUS */ + { 18101, 0x00000B32 }, /* GL_LIST_BASE */ + { 18114, 0x00020000 }, /* GL_LIST_BIT */ + { 18126, 0x00000B33 }, /* GL_LIST_INDEX */ + { 18140, 0x00000B30 }, /* GL_LIST_MODE */ + { 18153, 0x00000101 }, /* GL_LOAD */ + { 18161, 0x00000BF1 }, /* GL_LOGIC_OP */ + { 18173, 0x00000BF0 }, /* GL_LOGIC_OP_MODE */ + { 18190, 0x00008CA1 }, /* GL_LOWER_LEFT */ + { 18204, 0x00008DF0 }, /* GL_LOW_FLOAT */ + { 18217, 0x00008DF3 }, /* GL_LOW_INT */ + { 18228, 0x00001909 }, /* GL_LUMINANCE */ + { 18241, 0x00008041 }, /* GL_LUMINANCE12 */ + { 18256, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12 */ + { 18279, 0x00008047 }, /* GL_LUMINANCE12_ALPHA12_EXT */ + { 18306, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4 */ + { 18328, 0x00008046 }, /* GL_LUMINANCE12_ALPHA4_EXT */ + { 18354, 0x00008041 }, /* GL_LUMINANCE12_EXT */ + { 18373, 0x00008042 }, /* GL_LUMINANCE16 */ + { 18388, 0x00008D8C }, /* GL_LUMINANCE16I_EXT */ + { 18408, 0x00008D7A }, /* GL_LUMINANCE16UI_EXT */ + { 18429, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16 */ + { 18452, 0x00008048 }, /* GL_LUMINANCE16_ALPHA16_EXT */ + { 18479, 0x00008042 }, /* GL_LUMINANCE16_EXT */ + { 18498, 0x00008D86 }, /* GL_LUMINANCE32I_EXT */ + { 18518, 0x00008D74 }, /* GL_LUMINANCE32UI_EXT */ + { 18539, 0x0000803F }, /* GL_LUMINANCE4 */ + { 18553, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4 */ + { 18574, 0x00008043 }, /* GL_LUMINANCE4_ALPHA4_EXT */ + { 18599, 0x0000803F }, /* GL_LUMINANCE4_EXT */ + { 18617, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2 */ + { 18638, 0x00008044 }, /* GL_LUMINANCE6_ALPHA2_EXT */ + { 18663, 0x00008040 }, /* GL_LUMINANCE8 */ + { 18677, 0x00008D92 }, /* GL_LUMINANCE8I_EXT */ + { 18696, 0x00008D80 }, /* GL_LUMINANCE8UI_EXT */ + { 18716, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8 */ + { 18737, 0x00008045 }, /* GL_LUMINANCE8_ALPHA8_EXT */ + { 18762, 0x00008040 }, /* GL_LUMINANCE8_EXT */ + { 18780, 0x0000190A }, /* GL_LUMINANCE_ALPHA */ + { 18799, 0x00008D8D }, /* GL_LUMINANCE_ALPHA16I_EXT */ + { 18825, 0x00008D7B }, /* GL_LUMINANCE_ALPHA16UI_EXT */ + { 18852, 0x00008D87 }, /* GL_LUMINANCE_ALPHA32I_EXT */ + { 18878, 0x00008D75 }, /* GL_LUMINANCE_ALPHA32UI_EXT */ + { 18905, 0x00008D93 }, /* GL_LUMINANCE_ALPHA8I_EXT */ + { 18930, 0x00008D81 }, /* GL_LUMINANCE_ALPHA8UI_EXT */ + { 18956, 0x00008D9D }, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */ + { 18987, 0x00008D9C }, /* GL_LUMINANCE_INTEGER_EXT */ + { 19012, 0x0000821B }, /* GL_MAJOR_VERSION */ + { 19029, 0x00000D90 }, /* GL_MAP1_COLOR_4 */ + { 19045, 0x00000DD0 }, /* GL_MAP1_GRID_DOMAIN */ + { 19065, 0x00000DD1 }, /* GL_MAP1_GRID_SEGMENTS */ + { 19087, 0x00000D91 }, /* GL_MAP1_INDEX */ + { 19101, 0x00000D92 }, /* GL_MAP1_NORMAL */ + { 19116, 0x00000D93 }, /* GL_MAP1_TEXTURE_COORD_1 */ + { 19140, 0x00000D94 }, /* GL_MAP1_TEXTURE_COORD_2 */ + { 19164, 0x00000D95 }, /* GL_MAP1_TEXTURE_COORD_3 */ + { 19188, 0x00000D96 }, /* GL_MAP1_TEXTURE_COORD_4 */ + { 19212, 0x00000D97 }, /* GL_MAP1_VERTEX_3 */ + { 19229, 0x00000D98 }, /* GL_MAP1_VERTEX_4 */ + { 19246, 0x00008660 }, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ + { 19274, 0x0000866A }, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ + { 19303, 0x0000866B }, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ + { 19332, 0x0000866C }, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ + { 19361, 0x0000866D }, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ + { 19390, 0x0000866E }, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ + { 19419, 0x0000866F }, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ + { 19448, 0x00008661 }, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ + { 19476, 0x00008662 }, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ + { 19504, 0x00008663 }, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ + { 19532, 0x00008664 }, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ + { 19560, 0x00008665 }, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ + { 19588, 0x00008666 }, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ + { 19616, 0x00008667 }, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ + { 19644, 0x00008668 }, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ + { 19672, 0x00008669 }, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ + { 19700, 0x00000DB0 }, /* GL_MAP2_COLOR_4 */ + { 19716, 0x00000DD2 }, /* GL_MAP2_GRID_DOMAIN */ + { 19736, 0x00000DD3 }, /* GL_MAP2_GRID_SEGMENTS */ + { 19758, 0x00000DB1 }, /* GL_MAP2_INDEX */ + { 19772, 0x00000DB2 }, /* GL_MAP2_NORMAL */ + { 19787, 0x00000DB3 }, /* GL_MAP2_TEXTURE_COORD_1 */ + { 19811, 0x00000DB4 }, /* GL_MAP2_TEXTURE_COORD_2 */ + { 19835, 0x00000DB5 }, /* GL_MAP2_TEXTURE_COORD_3 */ + { 19859, 0x00000DB6 }, /* GL_MAP2_TEXTURE_COORD_4 */ + { 19883, 0x00000DB7 }, /* GL_MAP2_VERTEX_3 */ + { 19900, 0x00000DB8 }, /* GL_MAP2_VERTEX_4 */ + { 19917, 0x00008670 }, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ + { 19945, 0x0000867A }, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ + { 19974, 0x0000867B }, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ + { 20003, 0x0000867C }, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ + { 20032, 0x0000867D }, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ + { 20061, 0x0000867E }, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ + { 20090, 0x0000867F }, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ + { 20119, 0x00008671 }, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ + { 20147, 0x00008672 }, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ + { 20175, 0x00008673 }, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ + { 20203, 0x00008674 }, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ + { 20231, 0x00008675 }, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ + { 20259, 0x00008676 }, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ + { 20287, 0x00008677 }, /* GL_MAP2_VERTEX_ATTRIB7_4_NV */ + { 20315, 0x00008678 }, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ + { 20343, 0x00008679 }, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ + { 20371, 0x00000D10 }, /* GL_MAP_COLOR */ + { 20384, 0x00000010 }, /* GL_MAP_FLUSH_EXPLICIT_BIT */ + { 20410, 0x00000008 }, /* GL_MAP_INVALIDATE_BUFFER_BIT */ + { 20439, 0x00000004 }, /* GL_MAP_INVALIDATE_RANGE_BIT */ + { 20467, 0x00000001 }, /* GL_MAP_READ_BIT */ + { 20483, 0x00000D11 }, /* GL_MAP_STENCIL */ + { 20498, 0x00000020 }, /* GL_MAP_UNSYNCHRONIZED_BIT */ + { 20524, 0x00000002 }, /* GL_MAP_WRITE_BIT */ + { 20541, 0x000088C0 }, /* GL_MATRIX0_ARB */ + { 20556, 0x00008630 }, /* GL_MATRIX0_NV */ + { 20570, 0x000088CA }, /* GL_MATRIX10_ARB */ + { 20586, 0x000088CB }, /* GL_MATRIX11_ARB */ + { 20602, 0x000088CC }, /* GL_MATRIX12_ARB */ + { 20618, 0x000088CD }, /* GL_MATRIX13_ARB */ + { 20634, 0x000088CE }, /* GL_MATRIX14_ARB */ + { 20650, 0x000088CF }, /* GL_MATRIX15_ARB */ + { 20666, 0x000088D0 }, /* GL_MATRIX16_ARB */ + { 20682, 0x000088D1 }, /* GL_MATRIX17_ARB */ + { 20698, 0x000088D2 }, /* GL_MATRIX18_ARB */ + { 20714, 0x000088D3 }, /* GL_MATRIX19_ARB */ + { 20730, 0x000088C1 }, /* GL_MATRIX1_ARB */ + { 20745, 0x00008631 }, /* GL_MATRIX1_NV */ + { 20759, 0x000088D4 }, /* GL_MATRIX20_ARB */ + { 20775, 0x000088D5 }, /* GL_MATRIX21_ARB */ + { 20791, 0x000088D6 }, /* GL_MATRIX22_ARB */ + { 20807, 0x000088D7 }, /* GL_MATRIX23_ARB */ + { 20823, 0x000088D8 }, /* GL_MATRIX24_ARB */ + { 20839, 0x000088D9 }, /* GL_MATRIX25_ARB */ + { 20855, 0x000088DA }, /* GL_MATRIX26_ARB */ + { 20871, 0x000088DB }, /* GL_MATRIX27_ARB */ + { 20887, 0x000088DC }, /* GL_MATRIX28_ARB */ + { 20903, 0x000088DD }, /* GL_MATRIX29_ARB */ + { 20919, 0x000088C2 }, /* GL_MATRIX2_ARB */ + { 20934, 0x00008632 }, /* GL_MATRIX2_NV */ + { 20948, 0x000088DE }, /* GL_MATRIX30_ARB */ + { 20964, 0x000088DF }, /* GL_MATRIX31_ARB */ + { 20980, 0x000088C3 }, /* GL_MATRIX3_ARB */ + { 20995, 0x00008633 }, /* GL_MATRIX3_NV */ + { 21009, 0x000088C4 }, /* GL_MATRIX4_ARB */ + { 21024, 0x00008634 }, /* GL_MATRIX4_NV */ + { 21038, 0x000088C5 }, /* GL_MATRIX5_ARB */ + { 21053, 0x00008635 }, /* GL_MATRIX5_NV */ + { 21067, 0x000088C6 }, /* GL_MATRIX6_ARB */ + { 21082, 0x00008636 }, /* GL_MATRIX6_NV */ + { 21096, 0x000088C7 }, /* GL_MATRIX7_ARB */ + { 21111, 0x00008637 }, /* GL_MATRIX7_NV */ + { 21125, 0x000088C8 }, /* GL_MATRIX8_ARB */ + { 21140, 0x000088C9 }, /* GL_MATRIX9_ARB */ + { 21155, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_ARB */ + { 21181, 0x00008B9E }, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */ + { 21222, 0x00008844 }, /* GL_MATRIX_INDEX_ARRAY_OES */ + { 21248, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ + { 21282, 0x00008849 }, /* GL_MATRIX_INDEX_ARRAY_POINTER_OES */ + { 21316, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ + { 21347, 0x00008846 }, /* GL_MATRIX_INDEX_ARRAY_SIZE_OES */ + { 21378, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ + { 21411, 0x00008848 }, /* GL_MATRIX_INDEX_ARRAY_STRIDE_OES */ + { 21444, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ + { 21475, 0x00008847 }, /* GL_MATRIX_INDEX_ARRAY_TYPE_OES */ + { 21506, 0x00000BA0 }, /* GL_MATRIX_MODE */ + { 21521, 0x00008840 }, /* GL_MATRIX_PALETTE_ARB */ + { 21543, 0x00008840 }, /* GL_MATRIX_PALETTE_OES */ + { 21565, 0x00008008 }, /* GL_MAX */ + { 21572, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE */ + { 21595, 0x00008073 }, /* GL_MAX_3D_TEXTURE_SIZE_OES */ + { 21622, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS */ + { 21650, 0x000088FF }, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */ + { 21682, 0x00000D35 }, /* GL_MAX_ATTRIB_STACK_DEPTH */ + { 21708, 0x00000D3B }, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ + { 21741, 0x00008177 }, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ + { 21767, 0x00008178 }, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + { 21801, 0x00000D32 }, /* GL_MAX_CLIP_DISTANCES */ + { 21823, 0x00000D32 }, /* GL_MAX_CLIP_PLANES */ + { 21842, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS */ + { 21867, 0x00008CDF }, /* GL_MAX_COLOR_ATTACHMENTS_EXT */ + { 21896, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ + { 21928, 0x000080B3 }, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI */ + { 21964, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ + { 22000, 0x00008B4D }, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB */ + { 22040, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT */ + { 22066, 0x0000801B }, /* GL_MAX_CONVOLUTION_HEIGHT_EXT */ + { 22096, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH */ + { 22121, 0x0000801A }, /* GL_MAX_CONVOLUTION_WIDTH_EXT */ + { 22150, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ + { 22179, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB */ + { 22212, 0x0000851C }, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES */ + { 22245, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS */ + { 22265, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ARB */ + { 22289, 0x00008824 }, /* GL_MAX_DRAW_BUFFERS_ATI */ + { 22313, 0x000080E9 }, /* GL_MAX_ELEMENTS_INDICES */ + { 22337, 0x000080E8 }, /* GL_MAX_ELEMENTS_VERTICES */ + { 22362, 0x00000D30 }, /* GL_MAX_EVAL_ORDER */ + { 22380, 0x00008008 }, /* GL_MAX_EXT */ + { 22391, 0x00009125 }, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */ + { 22424, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ + { 22459, 0x00008B49 }, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB */ + { 22498, 0x00008DFD }, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */ + { 22530, 0x00009123 }, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */ + { 22563, 0x00009124 }, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */ + { 22597, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */ + { 22629, 0x00008DE0 }, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB */ + { 22665, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */ + { 22701, 0x00008C29 }, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB */ + { 22741, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */ + { 22781, 0x00008DE1 }, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB */ + { 22825, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */ + { 22860, 0x00008DDF }, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB */ + { 22899, 0x00008DDD }, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */ + { 22938, 0x00000D31 }, /* GL_MAX_LIGHTS */ + { 22952, 0x00000B31 }, /* GL_MAX_LIST_NESTING */ + { 22972, 0x00008841 }, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ + { 23010, 0x00000D36 }, /* GL_MAX_MODELVIEW_STACK_DEPTH */ + { 23039, 0x00000D37 }, /* GL_MAX_NAME_STACK_DEPTH */ + { 23063, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_ARB */ + { 23091, 0x00008842 }, /* GL_MAX_PALETTE_MATRICES_OES */ + { 23119, 0x00000D34 }, /* GL_MAX_PIXEL_MAP_TABLE */ + { 23142, 0x000088B1 }, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ + { 23179, 0x0000880B }, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ + { 23215, 0x000088AD }, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ + { 23242, 0x000088F5 }, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ + { 23271, 0x000088B5 }, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ + { 23305, 0x000088F4 }, /* GL_MAX_PROGRAM_EXEC_INSTRUCTIONS_NV */ + { 23341, 0x000088F6 }, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ + { 23368, 0x000088A1 }, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ + { 23400, 0x000088B4 }, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ + { 23436, 0x000088F8 }, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ + { 23465, 0x000088F7 }, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ + { 23494, 0x0000862F }, /* GL_MAX_PROGRAM_MATRICES_ARB */ + { 23522, 0x0000862E }, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ + { 23560, 0x000088B3 }, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + { 23604, 0x0000880E }, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + { 23647, 0x000088AF }, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ + { 23681, 0x000088A3 }, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + { 23720, 0x000088AB }, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ + { 23757, 0x000088A7 }, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ + { 23795, 0x00008810 }, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + { 23838, 0x0000880F }, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + { 23881, 0x000088A9 }, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ + { 23911, 0x000088A5 }, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ + { 23942, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET */ + { 23970, 0x00008905 }, /* GL_MAX_PROGRAM_TEXEL_OFFSET_EXT */ + { 24002, 0x0000880D }, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ + { 24038, 0x0000880C }, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ + { 24074, 0x00000D38 }, /* GL_MAX_PROJECTION_STACK_DEPTH */ + { 24104, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */ + { 24134, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */ + { 24168, 0x000084F8 }, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_NV */ + { 24201, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE */ + { 24226, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_EXT */ + { 24255, 0x000084E8 }, /* GL_MAX_RENDERBUFFER_SIZE_OES */ + { 24284, 0x00008D57 }, /* GL_MAX_SAMPLES */ + { 24299, 0x00008D57 }, /* GL_MAX_SAMPLES_EXT */ + { 24318, 0x00009111 }, /* GL_MAX_SERVER_WAIT_TIMEOUT */ + { 24345, 0x00008504 }, /* GL_MAX_SHININESS_NV */ + { 24365, 0x00008505 }, /* GL_MAX_SPOT_EXPONENT_NV */ + { 24389, 0x00008C2B }, /* GL_MAX_TEXTURE_BUFFER_SIZE */ + { 24416, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS */ + { 24438, 0x00008871 }, /* GL_MAX_TEXTURE_COORDS_ARB */ + { 24464, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS */ + { 24491, 0x00008872 }, /* GL_MAX_TEXTURE_IMAGE_UNITS_ARB */ + { 24522, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS */ + { 24546, 0x000084FD }, /* GL_MAX_TEXTURE_LOD_BIAS_EXT */ + { 24574, 0x000084FF }, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ + { 24608, 0x00000D33 }, /* GL_MAX_TEXTURE_SIZE */ + { 24628, 0x00000D39 }, /* GL_MAX_TEXTURE_STACK_DEPTH */ + { 24655, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS */ + { 24676, 0x000084E2 }, /* GL_MAX_TEXTURE_UNITS_ARB */ + { 24701, 0x0000862F }, /* GL_MAX_TRACK_MATRICES_NV */ + { 24726, 0x0000862E }, /* GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */ + { 24761, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */ + { 24810, 0x00008C8A }, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */ + { 24863, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */ + { 24906, 0x00008C8B }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */ + { 24953, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */ + { 24999, 0x00008C80 }, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */ + { 25049, 0x00008B4B }, /* GL_MAX_VARYING_COMPONENTS */ + { 25075, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS */ + { 25097, 0x00008B4B }, /* GL_MAX_VARYING_FLOATS_ARB */ + { 25123, 0x00008DFC }, /* GL_MAX_VARYING_VECTORS */ + { 25146, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS */ + { 25168, 0x00008869 }, /* GL_MAX_VERTEX_ATTRIBS_ARB */ + { 25194, 0x00009122 }, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */ + { 25226, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ + { 25260, 0x00008B4C }, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB */ + { 25298, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ + { 25331, 0x00008B4A }, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB */ + { 25368, 0x00008DFB }, /* GL_MAX_VERTEX_UNIFORM_VECTORS */ + { 25398, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_ARB */ + { 25422, 0x000086A4 }, /* GL_MAX_VERTEX_UNITS_OES */ + { 25446, 0x00008DDE }, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */ + { 25483, 0x00000D3A }, /* GL_MAX_VIEWPORT_DIMS */ + { 25504, 0x00008DF1 }, /* GL_MEDIUM_FLOAT */ + { 25520, 0x00008DF4 }, /* GL_MEDIUM_INT */ + { 25534, 0x00008007 }, /* GL_MIN */ + { 25541, 0x0000802E }, /* GL_MINMAX */ + { 25551, 0x0000802E }, /* GL_MINMAX_EXT */ + { 25565, 0x0000802F }, /* GL_MINMAX_FORMAT */ + { 25582, 0x0000802F }, /* GL_MINMAX_FORMAT_EXT */ + { 25603, 0x00008030 }, /* GL_MINMAX_SINK */ + { 25618, 0x00008030 }, /* GL_MINMAX_SINK_EXT */ + { 25637, 0x0000821C }, /* GL_MINOR_VERSION */ + { 25654, 0x00008007 }, /* GL_MIN_EXT */ + { 25665, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET */ + { 25693, 0x00008904 }, /* GL_MIN_PROGRAM_TEXEL_OFFSET_EXT */ + { 25725, 0x00008370 }, /* GL_MIRRORED_REPEAT */ + { 25744, 0x00008370 }, /* GL_MIRRORED_REPEAT_ARB */ + { 25767, 0x00008370 }, /* GL_MIRRORED_REPEAT_IBM */ + { 25790, 0x00008742 }, /* GL_MIRROR_CLAMP_ATI */ + { 25810, 0x00008742 }, /* GL_MIRROR_CLAMP_EXT */ + { 25830, 0x00008912 }, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ + { 25860, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_ATI */ + { 25888, 0x00008743 }, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ + { 25916, 0x00001700 }, /* GL_MODELVIEW */ + { 25929, 0x00001700 }, /* GL_MODELVIEW0_ARB */ + { 25947, 0x0000872A }, /* GL_MODELVIEW10_ARB */ + { 25966, 0x0000872B }, /* GL_MODELVIEW11_ARB */ + { 25985, 0x0000872C }, /* GL_MODELVIEW12_ARB */ + { 26004, 0x0000872D }, /* GL_MODELVIEW13_ARB */ + { 26023, 0x0000872E }, /* GL_MODELVIEW14_ARB */ + { 26042, 0x0000872F }, /* GL_MODELVIEW15_ARB */ + { 26061, 0x00008730 }, /* GL_MODELVIEW16_ARB */ + { 26080, 0x00008731 }, /* GL_MODELVIEW17_ARB */ + { 26099, 0x00008732 }, /* GL_MODELVIEW18_ARB */ + { 26118, 0x00008733 }, /* GL_MODELVIEW19_ARB */ + { 26137, 0x0000850A }, /* GL_MODELVIEW1_ARB */ + { 26155, 0x00008734 }, /* GL_MODELVIEW20_ARB */ + { 26174, 0x00008735 }, /* GL_MODELVIEW21_ARB */ + { 26193, 0x00008736 }, /* GL_MODELVIEW22_ARB */ + { 26212, 0x00008737 }, /* GL_MODELVIEW23_ARB */ + { 26231, 0x00008738 }, /* GL_MODELVIEW24_ARB */ + { 26250, 0x00008739 }, /* GL_MODELVIEW25_ARB */ + { 26269, 0x0000873A }, /* GL_MODELVIEW26_ARB */ + { 26288, 0x0000873B }, /* GL_MODELVIEW27_ARB */ + { 26307, 0x0000873C }, /* GL_MODELVIEW28_ARB */ + { 26326, 0x0000873D }, /* GL_MODELVIEW29_ARB */ + { 26345, 0x00008722 }, /* GL_MODELVIEW2_ARB */ + { 26363, 0x0000873E }, /* GL_MODELVIEW30_ARB */ + { 26382, 0x0000873F }, /* GL_MODELVIEW31_ARB */ + { 26401, 0x00008723 }, /* GL_MODELVIEW3_ARB */ + { 26419, 0x00008724 }, /* GL_MODELVIEW4_ARB */ + { 26437, 0x00008725 }, /* GL_MODELVIEW5_ARB */ + { 26455, 0x00008726 }, /* GL_MODELVIEW6_ARB */ + { 26473, 0x00008727 }, /* GL_MODELVIEW7_ARB */ + { 26491, 0x00008728 }, /* GL_MODELVIEW8_ARB */ + { 26509, 0x00008729 }, /* GL_MODELVIEW9_ARB */ + { 26527, 0x00000BA6 }, /* GL_MODELVIEW_MATRIX */ + { 26547, 0x0000898D }, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */ + { 26589, 0x00008629 }, /* GL_MODELVIEW_PROJECTION_NV */ + { 26616, 0x00000BA3 }, /* GL_MODELVIEW_STACK_DEPTH */ + { 26641, 0x00002100 }, /* GL_MODULATE */ + { 26653, 0x00008744 }, /* GL_MODULATE_ADD_ATI */ + { 26673, 0x00008745 }, /* GL_MODULATE_SIGNED_ADD_ATI */ + { 26700, 0x00008746 }, /* GL_MODULATE_SUBTRACT_ATI */ + { 26725, 0x00000103 }, /* GL_MULT */ + { 26733, 0x0000809D }, /* GL_MULTISAMPLE */ + { 26748, 0x000086B2 }, /* GL_MULTISAMPLE_3DFX */ + { 26768, 0x0000809D }, /* GL_MULTISAMPLE_ARB */ + { 26787, 0x20000000 }, /* GL_MULTISAMPLE_BIT */ + { 26806, 0x20000000 }, /* GL_MULTISAMPLE_BIT_3DFX */ + { 26830, 0x20000000 }, /* GL_MULTISAMPLE_BIT_ARB */ + { 26853, 0x00008534 }, /* GL_MULTISAMPLE_FILTER_HINT_NV */ + { 26883, 0x00002A25 }, /* GL_N3F_V3F */ + { 26894, 0x00000D70 }, /* GL_NAME_STACK_DEPTH */ + { 26914, 0x0000150E }, /* GL_NAND */ + { 26922, 0x00002600 }, /* GL_NEAREST */ + { 26933, 0x0000844E }, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ + { 26964, 0x0000844D }, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ + { 26996, 0x00002702 }, /* GL_NEAREST_MIPMAP_LINEAR */ + { 27021, 0x00002700 }, /* GL_NEAREST_MIPMAP_NEAREST */ + { 27047, 0x00000200 }, /* GL_NEVER */ + { 27056, 0x00001102 }, /* GL_NICEST */ + { 27066, 0x00000000 }, /* GL_NONE */ + { 27074, 0x00000000 }, /* GL_NONE_OES */ + { 27086, 0x00001505 }, /* GL_NOOP */ + { 27094, 0x00001508 }, /* GL_NOR */ + { 27101, 0x00000BA1 }, /* GL_NORMALIZE */ + { 27114, 0x00008075 }, /* GL_NORMAL_ARRAY */ + { 27130, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ + { 27161, 0x00008897 }, /* GL_NORMAL_ARRAY_BUFFER_BINDING_ARB */ + { 27196, 0x0000808F }, /* GL_NORMAL_ARRAY_POINTER */ + { 27220, 0x0000807F }, /* GL_NORMAL_ARRAY_STRIDE */ + { 27243, 0x0000807E }, /* GL_NORMAL_ARRAY_TYPE */ + { 27264, 0x00008511 }, /* GL_NORMAL_MAP */ + { 27278, 0x00008511 }, /* GL_NORMAL_MAP_ARB */ + { 27296, 0x00008511 }, /* GL_NORMAL_MAP_NV */ + { 27313, 0x00008511 }, /* GL_NORMAL_MAP_OES */ + { 27331, 0x00000205 }, /* GL_NOTEQUAL */ + { 27343, 0x00000000 }, /* GL_NO_ERROR */ + { 27355, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ + { 27389, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB */ + { 27427, 0x0000821D }, /* GL_NUM_EXTENSIONS */ + { 27445, 0x000087FE }, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */ + { 27479, 0x00008DF9 }, /* GL_NUM_SHADER_BINARY_FORMATS */ + { 27508, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */ + { 27540, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */ + { 27582, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */ + { 27612, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */ + { 27652, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */ + { 27683, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */ + { 27712, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */ + { 27740, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */ + { 27770, 0x00002401 }, /* GL_OBJECT_LINEAR */ + { 27787, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */ + { 27813, 0x00002501 }, /* GL_OBJECT_PLANE */ + { 27829, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */ + { 27864, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */ + { 27886, 0x00009112 }, /* GL_OBJECT_TYPE */ + { 27901, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */ + { 27920, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */ + { 27950, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */ + { 27971, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */ + { 27999, 0x00000001 }, /* GL_ONE */ + { 28006, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */ + { 28034, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */ + { 28066, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */ + { 28094, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */ + { 28126, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */ + { 28149, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */ + { 28172, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */ + { 28195, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */ + { 28218, 0x00008598 }, /* GL_OPERAND0_ALPHA */ + { 28236, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */ + { 28258, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */ + { 28280, 0x00008590 }, /* GL_OPERAND0_RGB */ + { 28296, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */ + { 28316, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */ + { 28336, 0x00008599 }, /* GL_OPERAND1_ALPHA */ + { 28354, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */ + { 28376, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */ + { 28398, 0x00008591 }, /* GL_OPERAND1_RGB */ + { 28414, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */ + { 28434, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */ + { 28454, 0x0000859A }, /* GL_OPERAND2_ALPHA */ + { 28472, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */ + { 28494, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */ + { 28516, 0x00008592 }, /* GL_OPERAND2_RGB */ + { 28532, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */ + { 28552, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */ + { 28572, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */ + { 28593, 0x00008593 }, /* GL_OPERAND3_RGB_NV */ + { 28612, 0x00001507 }, /* GL_OR */ + { 28618, 0x00000A01 }, /* GL_ORDER */ + { 28627, 0x0000150D }, /* GL_OR_INVERTED */ + { 28642, 0x0000150B }, /* GL_OR_REVERSE */ + { 28656, 0x00000505 }, /* GL_OUT_OF_MEMORY */ + { 28673, 0x00000D05 }, /* GL_PACK_ALIGNMENT */ + { 28691, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */ + { 28712, 0x00008758 }, /* GL_PACK_INVERT_MESA */ + { 28732, 0x00000D01 }, /* GL_PACK_LSB_FIRST */ + { 28750, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */ + { 28769, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */ + { 28789, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */ + { 28809, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */ + { 28827, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */ + { 28846, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */ + { 28871, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */ + { 28895, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */ + { 28916, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */ + { 28938, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */ + { 28960, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */ + { 28985, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */ + { 29009, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */ + { 29030, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */ + { 29052, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */ + { 29074, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */ + { 29096, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */ + { 29127, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */ + { 29147, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */ + { 29172, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */ + { 29192, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */ + { 29217, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */ + { 29237, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */ + { 29262, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */ + { 29282, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */ + { 29307, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */ + { 29327, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */ + { 29352, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */ + { 29372, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */ + { 29397, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */ + { 29417, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */ + { 29442, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */ + { 29462, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */ + { 29487, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */ + { 29507, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */ + { 29532, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */ + { 29552, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */ + { 29577, 0x00000020 }, /* GL_PIXEL_MODE_BIT */ + { 29595, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER */ + { 29616, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING */ + { 29645, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */ + { 29678, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */ + { 29703, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER */ + { 29726, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING */ + { 29757, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */ + { 29792, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */ + { 29819, 0x00001B00 }, /* GL_POINT */ + { 29828, 0x00000000 }, /* GL_POINTS */ + { 29838, 0x00000002 }, /* GL_POINT_BIT */ + { 29851, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */ + { 29881, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */ + { 29915, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */ + { 29949, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */ + { 29984, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */ + { 30013, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */ + { 30046, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */ + { 30079, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */ + { 30113, 0x00000B11 }, /* GL_POINT_SIZE */ + { 30127, 0x00008B9F }, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */ + { 30166, 0x00008B9C }, /* GL_POINT_SIZE_ARRAY_OES */ + { 30190, 0x0000898C }, /* GL_POINT_SIZE_ARRAY_POINTER_OES */ + { 30222, 0x0000898B }, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */ + { 30253, 0x0000898A }, /* GL_POINT_SIZE_ARRAY_TYPE_OES */ + { 30282, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */ + { 30308, 0x00008127 }, /* GL_POINT_SIZE_MAX */ + { 30326, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */ + { 30348, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */ + { 30370, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */ + { 30393, 0x00008126 }, /* GL_POINT_SIZE_MIN */ + { 30411, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */ + { 30433, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */ + { 30455, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */ + { 30478, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */ + { 30498, 0x00000B10 }, /* GL_POINT_SMOOTH */ + { 30514, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */ + { 30535, 0x00008861 }, /* GL_POINT_SPRITE */ + { 30551, 0x00008861 }, /* GL_POINT_SPRITE_ARB */ + { 30571, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */ + { 30600, 0x00008861 }, /* GL_POINT_SPRITE_NV */ + { 30619, 0x00008861 }, /* GL_POINT_SPRITE_OES */ + { 30639, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */ + { 30665, 0x00000701 }, /* GL_POINT_TOKEN */ + { 30680, 0x00000009 }, /* GL_POLYGON */ + { 30691, 0x00000008 }, /* GL_POLYGON_BIT */ + { 30706, 0x00000B40 }, /* GL_POLYGON_MODE */ + { 30722, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */ + { 30745, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */ + { 30770, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */ + { 30793, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */ + { 30816, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */ + { 30840, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */ + { 30864, 0x00000B41 }, /* GL_POLYGON_SMOOTH */ + { 30882, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */ + { 30905, 0x00000B42 }, /* GL_POLYGON_STIPPLE */ + { 30924, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */ + { 30947, 0x00000703 }, /* GL_POLYGON_TOKEN */ + { 30964, 0x00001203 }, /* GL_POSITION */ + { 30976, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ + { 31008, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */ + { 31044, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ + { 31077, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */ + { 31114, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ + { 31145, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */ + { 31180, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ + { 31212, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */ + { 31248, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ + { 31281, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ + { 31313, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */ + { 31349, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ + { 31382, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */ + { 31419, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */ + { 31449, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */ + { 31483, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */ + { 31514, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */ + { 31549, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ + { 31580, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */ + { 31615, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ + { 31647, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */ + { 31683, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */ + { 31713, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */ + { 31747, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */ + { 31778, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */ + { 31813, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */ + { 31845, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */ + { 31876, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */ + { 31911, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */ + { 31943, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */ + { 31979, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */ + { 32008, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */ + { 32041, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */ + { 32071, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */ + { 32105, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ + { 32144, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ + { 32177, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ + { 32217, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ + { 32251, 0x00008578 }, /* GL_PREVIOUS */ + { 32263, 0x00008578 }, /* GL_PREVIOUS_ARB */ + { 32279, 0x00008578 }, /* GL_PREVIOUS_EXT */ + { 32295, 0x00008577 }, /* GL_PRIMARY_COLOR */ + { 32312, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */ + { 32333, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */ + { 32354, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED */ + { 32378, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED_EXT */ + { 32406, 0x00008F9D }, /* GL_PRIMITIVE_RESTART */ + { 32427, 0x00008F9E }, /* GL_PRIMITIVE_RESTART_INDEX */ + { 32454, 0x00008559 }, /* GL_PRIMITIVE_RESTART_INDEX_NV */ + { 32484, 0x00008558 }, /* GL_PRIMITIVE_RESTART_NV */ + { 32508, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ + { 32541, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ + { 32573, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */ + { 32596, 0x000087FF }, /* GL_PROGRAM_BINARY_FORMATS_OES */ + { 32626, 0x00008741 }, /* GL_PROGRAM_BINARY_LENGTH_OES */ + { 32655, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */ + { 32678, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */ + { 32708, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */ + { 32737, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */ + { 32765, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */ + { 32787, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */ + { 32815, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */ + { 32843, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */ + { 32865, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */ + { 32886, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + { 32926, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + { 32965, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ + { 32995, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + { 33030, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ + { 33063, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ + { 33097, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + { 33136, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + { 33175, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */ + { 33197, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */ + { 33223, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */ + { 33247, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE */ + { 33269, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE_ARB */ + { 33295, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */ + { 33318, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */ + { 33340, 0x00008628 }, /* GL_PROGRAM_STRING_NV */ + { 33361, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */ + { 33382, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */ + { 33409, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ + { 33441, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ + { 33473, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ + { 33508, 0x00001701 }, /* GL_PROJECTION */ + { 33522, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */ + { 33543, 0x0000898E }, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */ + { 33586, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */ + { 33612, 0x00008E4F }, /* GL_PROVOKING_VERTEX */ + { 33632, 0x00008E4F }, /* GL_PROVOKING_VERTEX_EXT */ + { 33656, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */ + { 33677, 0x00008025 }, /* GL_PROXY_HISTOGRAM */ + { 33696, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */ + { 33719, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ + { 33758, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ + { 33796, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */ + { 33816, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY */ + { 33842, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */ + { 33872, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */ + { 33896, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */ + { 33916, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY */ + { 33942, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */ + { 33972, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */ + { 33996, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */ + { 34016, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ + { 34049, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */ + { 34075, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */ + { 34105, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE */ + { 34132, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */ + { 34163, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */ + { 34193, 0x00008A1D }, /* GL_PURGEABLE_APPLE */ + { 34212, 0x00002003 }, /* GL_Q */ + { 34217, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */ + { 34242, 0x00000007 }, /* GL_QUADS */ + { 34251, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ + { 34295, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT */ + { 34343, 0x00008614 }, /* GL_QUAD_MESH_SUN */ + { 34360, 0x00000008 }, /* GL_QUAD_STRIP */ + { 34374, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT */ + { 34401, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT_NV */ + { 34431, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT */ + { 34455, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT_NV */ + { 34482, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */ + { 34504, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */ + { 34530, 0x00008E14 }, /* GL_QUERY_NO_WAIT */ + { 34547, 0x00008E14 }, /* GL_QUERY_NO_WAIT_NV */ + { 34567, 0x00008866 }, /* GL_QUERY_RESULT */ + { 34583, 0x00008866 }, /* GL_QUERY_RESULT_ARB */ + { 34603, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */ + { 34629, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */ + { 34659, 0x00008E13 }, /* GL_QUERY_WAIT */ + { 34673, 0x00008E13 }, /* GL_QUERY_WAIT_NV */ + { 34690, 0x00002002 }, /* GL_R */ + { 34695, 0x00008C3A }, /* GL_R11F_G11F_B10F */ + { 34713, 0x00008F98 }, /* GL_R16_SNORM */ + { 34726, 0x00002A10 }, /* GL_R3_G3_B2 */ + { 34738, 0x00008F94 }, /* GL_R8_SNORM */ + { 34750, 0x00008C89 }, /* GL_RASTERIZER_DISCARD */ + { 34772, 0x00008C89 }, /* GL_RASTERIZER_DISCARD_EXT */ + { 34798, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ + { 34831, 0x00000C02 }, /* GL_READ_BUFFER */ + { 34846, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER */ + { 34866, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING */ + { 34894, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */ + { 34926, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */ + { 34950, 0x000088B8 }, /* GL_READ_ONLY */ + { 34963, 0x000088B8 }, /* GL_READ_ONLY_ARB */ + { 34980, 0x000088BA }, /* GL_READ_WRITE */ + { 34994, 0x000088BA }, /* GL_READ_WRITE_ARB */ + { 35012, 0x00001903 }, /* GL_RED */ + { 35019, 0x00008016 }, /* GL_REDUCE */ + { 35029, 0x00008016 }, /* GL_REDUCE_EXT */ + { 35043, 0x00000D15 }, /* GL_RED_BIAS */ + { 35055, 0x00000D52 }, /* GL_RED_BITS */ + { 35067, 0x00008D94 }, /* GL_RED_INTEGER */ + { 35082, 0x00008D94 }, /* GL_RED_INTEGER_EXT */ + { 35101, 0x00000D14 }, /* GL_RED_SCALE */ + { 35114, 0x00008F90 }, /* GL_RED_SNORM */ + { 35127, 0x00008512 }, /* GL_REFLECTION_MAP */ + { 35145, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */ + { 35167, 0x00008512 }, /* GL_REFLECTION_MAP_NV */ + { 35188, 0x00008512 }, /* GL_REFLECTION_MAP_OES */ + { 35210, 0x00008A19 }, /* GL_RELEASED_APPLE */ + { 35228, 0x00001C00 }, /* GL_RENDER */ + { 35238, 0x00008D41 }, /* GL_RENDERBUFFER */ + { 35254, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE */ + { 35281, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE_OES */ + { 35312, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING */ + { 35336, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */ + { 35364, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_OES */ + { 35392, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE */ + { 35418, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE_OES */ + { 35448, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE */ + { 35475, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE_OES */ + { 35506, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */ + { 35526, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE */ + { 35553, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE_OES */ + { 35584, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT */ + { 35607, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */ + { 35634, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_OES */ + { 35661, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT */ + { 35693, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */ + { 35729, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_OES */ + { 35765, 0x00008D41 }, /* GL_RENDERBUFFER_OES */ + { 35785, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE */ + { 35810, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE_OES */ + { 35839, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES */ + { 35863, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES_EXT */ + { 35891, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE */ + { 35920, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE_OES */ + { 35953, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH */ + { 35975, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */ + { 36001, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_OES */ + { 36027, 0x00001F01 }, /* GL_RENDERER */ + { 36039, 0x00000C40 }, /* GL_RENDER_MODE */ + { 36054, 0x00002901 }, /* GL_REPEAT */ + { 36064, 0x00001E01 }, /* GL_REPLACE */ + { 36075, 0x00008062 }, /* GL_REPLACE_EXT */ + { 36090, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */ + { 36113, 0x0000803A }, /* GL_RESCALE_NORMAL */ + { 36131, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */ + { 36153, 0x00008A1B }, /* GL_RETAINED_APPLE */ + { 36171, 0x00000102 }, /* GL_RETURN */ + { 36181, 0x00008F99 }, /* GL_RG16_SNORM */ + { 36195, 0x00008F95 }, /* GL_RG8_SNORM */ + { 36208, 0x00001907 }, /* GL_RGB */ + { 36215, 0x00008052 }, /* GL_RGB10 */ + { 36224, 0x00008059 }, /* GL_RGB10_A2 */ + { 36236, 0x00008059 }, /* GL_RGB10_A2_EXT */ + { 36252, 0x00008052 }, /* GL_RGB10_EXT */ + { 36265, 0x00008053 }, /* GL_RGB12 */ + { 36274, 0x00008053 }, /* GL_RGB12_EXT */ + { 36287, 0x00008054 }, /* GL_RGB16 */ + { 36296, 0x0000881B }, /* GL_RGB16F */ + { 36306, 0x00008D89 }, /* GL_RGB16I */ + { 36316, 0x00008D89 }, /* GL_RGB16I_EXT */ + { 36330, 0x00008D77 }, /* GL_RGB16UI */ + { 36341, 0x00008D77 }, /* GL_RGB16UI_EXT */ + { 36356, 0x00008054 }, /* GL_RGB16_EXT */ + { 36369, 0x00008F9A }, /* GL_RGB16_SNORM */ + { 36384, 0x0000804E }, /* GL_RGB2_EXT */ + { 36396, 0x00008815 }, /* GL_RGB32F */ + { 36406, 0x00008D83 }, /* GL_RGB32I */ + { 36416, 0x00008D83 }, /* GL_RGB32I_EXT */ + { 36430, 0x00008D71 }, /* GL_RGB32UI */ + { 36441, 0x00008D71 }, /* GL_RGB32UI_EXT */ + { 36456, 0x0000804F }, /* GL_RGB4 */ + { 36464, 0x0000804F }, /* GL_RGB4_EXT */ + { 36476, 0x000083A1 }, /* GL_RGB4_S3TC */ + { 36489, 0x00008050 }, /* GL_RGB5 */ + { 36497, 0x00008D62 }, /* GL_RGB565 */ + { 36507, 0x00008D62 }, /* GL_RGB565_OES */ + { 36521, 0x00008057 }, /* GL_RGB5_A1 */ + { 36532, 0x00008057 }, /* GL_RGB5_A1_EXT */ + { 36547, 0x00008057 }, /* GL_RGB5_A1_OES */ + { 36562, 0x00008050 }, /* GL_RGB5_EXT */ + { 36574, 0x00008051 }, /* GL_RGB8 */ + { 36582, 0x00008D8F }, /* GL_RGB8I */ + { 36591, 0x00008D8F }, /* GL_RGB8I_EXT */ + { 36604, 0x00008D7D }, /* GL_RGB8UI */ + { 36614, 0x00008D7D }, /* GL_RGB8UI_EXT */ + { 36628, 0x00008051 }, /* GL_RGB8_EXT */ + { 36640, 0x00008051 }, /* GL_RGB8_OES */ + { 36652, 0x00008F96 }, /* GL_RGB8_SNORM */ + { 36666, 0x00008C3D }, /* GL_RGB9_E5 */ + { 36677, 0x00001908 }, /* GL_RGBA */ + { 36685, 0x0000805A }, /* GL_RGBA12 */ + { 36695, 0x0000805A }, /* GL_RGBA12_EXT */ + { 36709, 0x0000805B }, /* GL_RGBA16 */ + { 36719, 0x0000881A }, /* GL_RGBA16F */ + { 36730, 0x00008D88 }, /* GL_RGBA16I */ + { 36741, 0x00008D88 }, /* GL_RGBA16I_EXT */ + { 36756, 0x00008D76 }, /* GL_RGBA16UI */ + { 36768, 0x00008D76 }, /* GL_RGBA16UI_EXT */ + { 36784, 0x0000805B }, /* GL_RGBA16_EXT */ + { 36798, 0x00008F9B }, /* GL_RGBA16_SNORM */ + { 36814, 0x00008055 }, /* GL_RGBA2 */ + { 36823, 0x00008055 }, /* GL_RGBA2_EXT */ + { 36836, 0x00008814 }, /* GL_RGBA32F */ + { 36847, 0x00008D82 }, /* GL_RGBA32I */ + { 36858, 0x00008D82 }, /* GL_RGBA32I_EXT */ + { 36873, 0x00008D70 }, /* GL_RGBA32UI */ + { 36885, 0x00008D70 }, /* GL_RGBA32UI_EXT */ + { 36901, 0x00008056 }, /* GL_RGBA4 */ + { 36910, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */ + { 36929, 0x00008056 }, /* GL_RGBA4_EXT */ + { 36942, 0x00008056 }, /* GL_RGBA4_OES */ + { 36955, 0x000083A3 }, /* GL_RGBA4_S3TC */ + { 36969, 0x00008058 }, /* GL_RGBA8 */ + { 36978, 0x00008D8E }, /* GL_RGBA8I */ + { 36988, 0x00008D8E }, /* GL_RGBA8I_EXT */ + { 37002, 0x00008D7C }, /* GL_RGBA8UI */ + { 37013, 0x00008D7C }, /* GL_RGBA8UI_EXT */ + { 37028, 0x00008058 }, /* GL_RGBA8_EXT */ + { 37041, 0x00008058 }, /* GL_RGBA8_OES */ + { 37054, 0x00008F97 }, /* GL_RGBA8_SNORM */ + { 37069, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */ + { 37087, 0x00008D99 }, /* GL_RGBA_INTEGER */ + { 37103, 0x00008D99 }, /* GL_RGBA_INTEGER_EXT */ + { 37123, 0x00008D9E }, /* GL_RGBA_INTEGER_MODE_EXT */ + { 37148, 0x00000C31 }, /* GL_RGBA_MODE */ + { 37161, 0x000083A2 }, /* GL_RGBA_S3TC */ + { 37174, 0x00008F93 }, /* GL_RGBA_SNORM */ + { 37188, 0x00008D98 }, /* GL_RGB_INTEGER */ + { 37203, 0x00008D98 }, /* GL_RGB_INTEGER_EXT */ + { 37222, 0x000083A0 }, /* GL_RGB_S3TC */ + { 37234, 0x00008573 }, /* GL_RGB_SCALE */ + { 37247, 0x00008573 }, /* GL_RGB_SCALE_ARB */ + { 37264, 0x00008573 }, /* GL_RGB_SCALE_EXT */ + { 37281, 0x00008F92 }, /* GL_RGB_SNORM */ + { 37294, 0x00008F91 }, /* GL_RG_SNORM */ + { 37306, 0x00000407 }, /* GL_RIGHT */ + { 37315, 0x00002000 }, /* GL_S */ + { 37320, 0x00008B5D }, /* GL_SAMPLER_1D */ + { 37334, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY */ + { 37354, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY_EXT */ + { 37378, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW */ + { 37405, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW_EXT */ + { 37436, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */ + { 37457, 0x00008B5E }, /* GL_SAMPLER_2D */ + { 37471, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY */ + { 37491, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY_EXT */ + { 37515, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW */ + { 37542, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW_EXT */ + { 37573, 0x00008B63 }, /* GL_SAMPLER_2D_RECT */ + { 37592, 0x00008B64 }, /* GL_SAMPLER_2D_RECT_SHADOW */ + { 37618, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */ + { 37639, 0x00008B5F }, /* GL_SAMPLER_3D */ + { 37653, 0x00008B5F }, /* GL_SAMPLER_3D_OES */ + { 37671, 0x00008DC2 }, /* GL_SAMPLER_BUFFER */ + { 37689, 0x00008DC2 }, /* GL_SAMPLER_BUFFER_EXT */ + { 37711, 0x00008B60 }, /* GL_SAMPLER_CUBE */ + { 37727, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW */ + { 37750, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW_EXT */ + { 37777, 0x000080A9 }, /* GL_SAMPLES */ + { 37788, 0x000086B4 }, /* GL_SAMPLES_3DFX */ + { 37804, 0x000080A9 }, /* GL_SAMPLES_ARB */ + { 37819, 0x00008914 }, /* GL_SAMPLES_PASSED */ + { 37837, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */ + { 37859, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ + { 37887, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */ + { 37919, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */ + { 37942, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */ + { 37969, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */ + { 37987, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */ + { 38010, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */ + { 38032, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */ + { 38051, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */ + { 38074, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */ + { 38100, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */ + { 38130, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */ + { 38155, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */ + { 38184, 0x00080000 }, /* GL_SCISSOR_BIT */ + { 38199, 0x00000C10 }, /* GL_SCISSOR_BOX */ + { 38214, 0x00000C11 }, /* GL_SCISSOR_TEST */ + { 38230, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */ + { 38255, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ + { 38295, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */ + { 38339, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ + { 38372, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ + { 38402, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ + { 38434, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ + { 38464, 0x00001C02 }, /* GL_SELECT */ + { 38474, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */ + { 38502, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */ + { 38527, 0x00008012 }, /* GL_SEPARABLE_2D */ + { 38543, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS */ + { 38563, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS_EXT */ + { 38587, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */ + { 38614, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */ + { 38645, 0x0000150F }, /* GL_SET */ + { 38652, 0x00008DF8 }, /* GL_SHADER_BINARY_FORMATS */ + { 38677, 0x00008DFA }, /* GL_SHADER_COMPILER */ + { 38696, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */ + { 38717, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */ + { 38741, 0x00008B4F }, /* GL_SHADER_TYPE */ + { 38756, 0x00000B54 }, /* GL_SHADE_MODEL */ + { 38771, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */ + { 38799, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */ + { 38822, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */ + { 38852, 0x00001601 }, /* GL_SHININESS */ + { 38865, 0x00001402 }, /* GL_SHORT */ + { 38874, 0x00009119 }, /* GL_SIGNALED */ + { 38886, 0x00008F9C }, /* GL_SIGNED_NORMALIZED */ + { 38907, 0x000081F9 }, /* GL_SINGLE_COLOR */ + { 38923, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */ + { 38943, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */ + { 38962, 0x00008C46 }, /* GL_SLUMINANCE */ + { 38976, 0x00008C47 }, /* GL_SLUMINANCE8 */ + { 38991, 0x00008C45 }, /* GL_SLUMINANCE8_ALPHA8 */ + { 39013, 0x00008C44 }, /* GL_SLUMINANCE_ALPHA */ + { 39033, 0x00001D01 }, /* GL_SMOOTH */ + { 39043, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */ + { 39076, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */ + { 39103, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */ + { 39136, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */ + { 39163, 0x00008588 }, /* GL_SOURCE0_ALPHA */ + { 39180, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */ + { 39201, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */ + { 39222, 0x00008580 }, /* GL_SOURCE0_RGB */ + { 39237, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */ + { 39256, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */ + { 39275, 0x00008589 }, /* GL_SOURCE1_ALPHA */ + { 39292, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */ + { 39313, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */ + { 39334, 0x00008581 }, /* GL_SOURCE1_RGB */ + { 39349, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */ + { 39368, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */ + { 39387, 0x0000858A }, /* GL_SOURCE2_ALPHA */ + { 39404, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */ + { 39425, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */ + { 39446, 0x00008582 }, /* GL_SOURCE2_RGB */ + { 39461, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */ + { 39480, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */ + { 39499, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */ + { 39519, 0x00008583 }, /* GL_SOURCE3_RGB_NV */ + { 39537, 0x00001202 }, /* GL_SPECULAR */ + { 39549, 0x00002402 }, /* GL_SPHERE_MAP */ + { 39563, 0x00001206 }, /* GL_SPOT_CUTOFF */ + { 39578, 0x00001204 }, /* GL_SPOT_DIRECTION */ + { 39596, 0x00001205 }, /* GL_SPOT_EXPONENT */ + { 39613, 0x00008588 }, /* GL_SRC0_ALPHA */ + { 39627, 0x00008580 }, /* GL_SRC0_RGB */ + { 39639, 0x00008589 }, /* GL_SRC1_ALPHA */ + { 39653, 0x00008581 }, /* GL_SRC1_RGB */ + { 39665, 0x0000858A }, /* GL_SRC2_ALPHA */ + { 39679, 0x00008582 }, /* GL_SRC2_RGB */ + { 39691, 0x00000302 }, /* GL_SRC_ALPHA */ + { 39704, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */ + { 39726, 0x00000300 }, /* GL_SRC_COLOR */ + { 39739, 0x00008C40 }, /* GL_SRGB */ + { 39747, 0x00008C41 }, /* GL_SRGB8 */ + { 39756, 0x00008C43 }, /* GL_SRGB8_ALPHA8 */ + { 39772, 0x00008C42 }, /* GL_SRGB_ALPHA */ + { 39786, 0x00000503 }, /* GL_STACK_OVERFLOW */ + { 39804, 0x00000504 }, /* GL_STACK_UNDERFLOW */ + { 39823, 0x000088E6 }, /* GL_STATIC_COPY */ + { 39838, 0x000088E6 }, /* GL_STATIC_COPY_ARB */ + { 39857, 0x000088E4 }, /* GL_STATIC_DRAW */ + { 39872, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */ + { 39891, 0x000088E5 }, /* GL_STATIC_READ */ + { 39906, 0x000088E5 }, /* GL_STATIC_READ_ARB */ + { 39925, 0x00001802 }, /* GL_STENCIL */ + { 39936, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT */ + { 39958, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */ + { 39984, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_OES */ + { 40010, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */ + { 40031, 0x00008801 }, /* GL_STENCIL_BACK_FAIL_ATI */ + { 40056, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */ + { 40077, 0x00008800 }, /* GL_STENCIL_BACK_FUNC_ATI */ + { 40102, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ + { 40134, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI */ + { 40170, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ + { 40202, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI */ + { 40238, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */ + { 40258, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */ + { 40285, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */ + { 40311, 0x00000D57 }, /* GL_STENCIL_BITS */ + { 40327, 0x00008224 }, /* GL_STENCIL_BUFFER */ + { 40345, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */ + { 40367, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */ + { 40390, 0x00000B94 }, /* GL_STENCIL_FAIL */ + { 40406, 0x00000B92 }, /* GL_STENCIL_FUNC */ + { 40422, 0x00001901 }, /* GL_STENCIL_INDEX */ + { 40439, 0x00008D46 }, /* GL_STENCIL_INDEX1 */ + { 40457, 0x00008D49 }, /* GL_STENCIL_INDEX16 */ + { 40476, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */ + { 40499, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */ + { 40521, 0x00008D46 }, /* GL_STENCIL_INDEX1_OES */ + { 40543, 0x00008D47 }, /* GL_STENCIL_INDEX4 */ + { 40561, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */ + { 40583, 0x00008D47 }, /* GL_STENCIL_INDEX4_OES */ + { 40605, 0x00008D48 }, /* GL_STENCIL_INDEX8 */ + { 40623, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */ + { 40645, 0x00008D48 }, /* GL_STENCIL_INDEX8_OES */ + { 40667, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */ + { 40688, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */ + { 40715, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */ + { 40742, 0x00000B97 }, /* GL_STENCIL_REF */ + { 40757, 0x00000B90 }, /* GL_STENCIL_TEST */ + { 40773, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ + { 40802, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */ + { 40824, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */ + { 40845, 0x00000C33 }, /* GL_STEREO */ + { 40855, 0x000085BE }, /* GL_STORAGE_CACHED_APPLE */ + { 40879, 0x000085BD }, /* GL_STORAGE_PRIVATE_APPLE */ + { 40904, 0x000085BF }, /* GL_STORAGE_SHARED_APPLE */ + { 40928, 0x000088E2 }, /* GL_STREAM_COPY */ + { 40943, 0x000088E2 }, /* GL_STREAM_COPY_ARB */ + { 40962, 0x000088E0 }, /* GL_STREAM_DRAW */ + { 40977, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */ + { 40996, 0x000088E1 }, /* GL_STREAM_READ */ + { 41011, 0x000088E1 }, /* GL_STREAM_READ_ARB */ + { 41030, 0x00000D50 }, /* GL_SUBPIXEL_BITS */ + { 41047, 0x000084E7 }, /* GL_SUBTRACT */ + { 41059, 0x000084E7 }, /* GL_SUBTRACT_ARB */ + { 41075, 0x00009113 }, /* GL_SYNC_CONDITION */ + { 41093, 0x00009116 }, /* GL_SYNC_FENCE */ + { 41107, 0x00009115 }, /* GL_SYNC_FLAGS */ + { 41121, 0x00000001 }, /* GL_SYNC_FLUSH_COMMANDS_BIT */ + { 41148, 0x00009117 }, /* GL_SYNC_GPU_COMMANDS_COMPLETE */ + { 41178, 0x00009114 }, /* GL_SYNC_STATUS */ + { 41193, 0x00002001 }, /* GL_T */ + { 41198, 0x00002A2A }, /* GL_T2F_C3F_V3F */ + { 41213, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */ + { 41232, 0x00002A29 }, /* GL_T2F_C4UB_V3F */ + { 41248, 0x00002A2B }, /* GL_T2F_N3F_V3F */ + { 41263, 0x00002A27 }, /* GL_T2F_V3F */ + { 41274, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */ + { 41293, 0x00002A28 }, /* GL_T4F_V4F */ + { 41304, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */ + { 41327, 0x00001702 }, /* GL_TEXTURE */ + { 41338, 0x000084C0 }, /* GL_TEXTURE0 */ + { 41350, 0x000084C0 }, /* GL_TEXTURE0_ARB */ + { 41366, 0x000084C1 }, /* GL_TEXTURE1 */ + { 41378, 0x000084CA }, /* GL_TEXTURE10 */ + { 41391, 0x000084CA }, /* GL_TEXTURE10_ARB */ + { 41408, 0x000084CB }, /* GL_TEXTURE11 */ + { 41421, 0x000084CB }, /* GL_TEXTURE11_ARB */ + { 41438, 0x000084CC }, /* GL_TEXTURE12 */ + { 41451, 0x000084CC }, /* GL_TEXTURE12_ARB */ + { 41468, 0x000084CD }, /* GL_TEXTURE13 */ + { 41481, 0x000084CD }, /* GL_TEXTURE13_ARB */ + { 41498, 0x000084CE }, /* GL_TEXTURE14 */ + { 41511, 0x000084CE }, /* GL_TEXTURE14_ARB */ + { 41528, 0x000084CF }, /* GL_TEXTURE15 */ + { 41541, 0x000084CF }, /* GL_TEXTURE15_ARB */ + { 41558, 0x000084D0 }, /* GL_TEXTURE16 */ + { 41571, 0x000084D0 }, /* GL_TEXTURE16_ARB */ + { 41588, 0x000084D1 }, /* GL_TEXTURE17 */ + { 41601, 0x000084D1 }, /* GL_TEXTURE17_ARB */ + { 41618, 0x000084D2 }, /* GL_TEXTURE18 */ + { 41631, 0x000084D2 }, /* GL_TEXTURE18_ARB */ + { 41648, 0x000084D3 }, /* GL_TEXTURE19 */ + { 41661, 0x000084D3 }, /* GL_TEXTURE19_ARB */ + { 41678, 0x000084C1 }, /* GL_TEXTURE1_ARB */ + { 41694, 0x000084C2 }, /* GL_TEXTURE2 */ + { 41706, 0x000084D4 }, /* GL_TEXTURE20 */ + { 41719, 0x000084D4 }, /* GL_TEXTURE20_ARB */ + { 41736, 0x000084D5 }, /* GL_TEXTURE21 */ + { 41749, 0x000084D5 }, /* GL_TEXTURE21_ARB */ + { 41766, 0x000084D6 }, /* GL_TEXTURE22 */ + { 41779, 0x000084D6 }, /* GL_TEXTURE22_ARB */ + { 41796, 0x000084D7 }, /* GL_TEXTURE23 */ + { 41809, 0x000084D7 }, /* GL_TEXTURE23_ARB */ + { 41826, 0x000084D8 }, /* GL_TEXTURE24 */ + { 41839, 0x000084D8 }, /* GL_TEXTURE24_ARB */ + { 41856, 0x000084D9 }, /* GL_TEXTURE25 */ + { 41869, 0x000084D9 }, /* GL_TEXTURE25_ARB */ + { 41886, 0x000084DA }, /* GL_TEXTURE26 */ + { 41899, 0x000084DA }, /* GL_TEXTURE26_ARB */ + { 41916, 0x000084DB }, /* GL_TEXTURE27 */ + { 41929, 0x000084DB }, /* GL_TEXTURE27_ARB */ + { 41946, 0x000084DC }, /* GL_TEXTURE28 */ + { 41959, 0x000084DC }, /* GL_TEXTURE28_ARB */ + { 41976, 0x000084DD }, /* GL_TEXTURE29 */ + { 41989, 0x000084DD }, /* GL_TEXTURE29_ARB */ + { 42006, 0x000084C2 }, /* GL_TEXTURE2_ARB */ + { 42022, 0x000084C3 }, /* GL_TEXTURE3 */ + { 42034, 0x000084DE }, /* GL_TEXTURE30 */ + { 42047, 0x000084DE }, /* GL_TEXTURE30_ARB */ + { 42064, 0x000084DF }, /* GL_TEXTURE31 */ + { 42077, 0x000084DF }, /* GL_TEXTURE31_ARB */ + { 42094, 0x000084C3 }, /* GL_TEXTURE3_ARB */ + { 42110, 0x000084C4 }, /* GL_TEXTURE4 */ + { 42122, 0x000084C4 }, /* GL_TEXTURE4_ARB */ + { 42138, 0x000084C5 }, /* GL_TEXTURE5 */ + { 42150, 0x000084C5 }, /* GL_TEXTURE5_ARB */ + { 42166, 0x000084C6 }, /* GL_TEXTURE6 */ + { 42178, 0x000084C6 }, /* GL_TEXTURE6_ARB */ + { 42194, 0x000084C7 }, /* GL_TEXTURE7 */ + { 42206, 0x000084C7 }, /* GL_TEXTURE7_ARB */ + { 42222, 0x000084C8 }, /* GL_TEXTURE8 */ + { 42234, 0x000084C8 }, /* GL_TEXTURE8_ARB */ + { 42250, 0x000084C9 }, /* GL_TEXTURE9 */ + { 42262, 0x000084C9 }, /* GL_TEXTURE9_ARB */ + { 42278, 0x00000DE0 }, /* GL_TEXTURE_1D */ + { 42292, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY */ + { 42312, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY_EXT */ + { 42336, 0x00000DE1 }, /* GL_TEXTURE_2D */ + { 42350, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY */ + { 42370, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY_EXT */ + { 42394, 0x0000806F }, /* GL_TEXTURE_3D */ + { 42408, 0x0000806F }, /* GL_TEXTURE_3D_OES */ + { 42426, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */ + { 42448, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */ + { 42474, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */ + { 42496, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */ + { 42518, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY */ + { 42546, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */ + { 42578, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */ + { 42600, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY */ + { 42628, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */ + { 42660, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */ + { 42682, 0x0000806A }, /* GL_TEXTURE_BINDING_3D_OES */ + { 42708, 0x00008C2C }, /* GL_TEXTURE_BINDING_BUFFER */ + { 42734, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */ + { 42762, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */ + { 42794, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_OES */ + { 42826, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE */ + { 42855, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */ + { 42888, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */ + { 42920, 0x00040000 }, /* GL_TEXTURE_BIT */ + { 42935, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */ + { 42956, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */ + { 42981, 0x00001005 }, /* GL_TEXTURE_BORDER */ + { 42999, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */ + { 43023, 0x00008C2A }, /* GL_TEXTURE_BUFFER */ + { 43041, 0x00008C2D }, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */ + { 43078, 0x00008C2E }, /* GL_TEXTURE_BUFFER_FORMAT */ + { 43103, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ + { 43134, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ + { 43164, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ + { 43194, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ + { 43229, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ + { 43260, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + { 43298, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */ + { 43325, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ + { 43357, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ + { 43391, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */ + { 43415, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */ + { 43443, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */ + { 43467, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */ + { 43495, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ + { 43528, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */ + { 43552, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */ + { 43574, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */ + { 43596, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */ + { 43622, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */ + { 43656, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ + { 43689, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */ + { 43726, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */ + { 43754, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */ + { 43786, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */ + { 43809, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ + { 43847, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */ + { 43889, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */ + { 43920, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */ + { 43948, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ + { 43978, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */ + { 44006, 0x00008B9D }, /* GL_TEXTURE_CROP_RECT_OES */ + { 44031, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */ + { 44051, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */ + { 44075, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ + { 44106, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */ + { 44141, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES */ + { 44176, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ + { 44207, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */ + { 44242, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES */ + { 44277, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ + { 44308, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */ + { 44343, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES */ + { 44378, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_OES */ + { 44402, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ + { 44433, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */ + { 44468, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES */ + { 44503, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ + { 44534, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */ + { 44569, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES */ + { 44604, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ + { 44635, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */ + { 44670, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES */ + { 44705, 0x000088F4 }, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */ + { 44734, 0x00008071 }, /* GL_TEXTURE_DEPTH */ + { 44751, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */ + { 44773, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */ + { 44799, 0x00002300 }, /* GL_TEXTURE_ENV */ + { 44814, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */ + { 44835, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */ + { 44855, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */ + { 44881, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL_EXT */ + { 44911, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */ + { 44931, 0x00002500 }, /* GL_TEXTURE_GEN_MODE_OES */ + { 44955, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */ + { 44972, 0x00000C62 }, /* GL_TEXTURE_GEN_R */ + { 44989, 0x00000C60 }, /* GL_TEXTURE_GEN_S */ + { 45006, 0x00008D60 }, /* GL_TEXTURE_GEN_STR_OES */ + { 45029, 0x00000C61 }, /* GL_TEXTURE_GEN_T */ + { 45046, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */ + { 45071, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */ + { 45093, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */ + { 45119, 0x00001001 }, /* GL_TEXTURE_HEIGHT */ + { 45137, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */ + { 45163, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */ + { 45189, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */ + { 45219, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */ + { 45246, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */ + { 45271, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */ + { 45291, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */ + { 45315, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ + { 45342, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ + { 45369, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ + { 45396, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */ + { 45422, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */ + { 45452, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */ + { 45474, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */ + { 45492, 0x0000898F }, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */ + { 45532, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ + { 45562, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ + { 45590, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ + { 45618, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ + { 45646, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */ + { 45667, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */ + { 45686, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */ + { 45708, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */ + { 45727, 0x00008066 }, /* GL_TEXTURE_PRIORITY */ + { 45747, 0x000085B7 }, /* GL_TEXTURE_RANGE_LENGTH_APPLE */ + { 45777, 0x000085B8 }, /* GL_TEXTURE_RANGE_POINTER_APPLE */ + { 45808, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE */ + { 45829, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */ + { 45854, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */ + { 45878, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */ + { 45898, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */ + { 45922, 0x00008067 }, /* GL_TEXTURE_RESIDENT */ + { 45942, 0x00008C3F }, /* GL_TEXTURE_SHARED_SIZE */ + { 45965, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */ + { 45988, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE */ + { 46012, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE_EXT */ + { 46040, 0x000085BC }, /* GL_TEXTURE_STORAGE_HINT_APPLE */ + { 46070, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */ + { 46095, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ + { 46129, 0x00001000 }, /* GL_TEXTURE_WIDTH */ + { 46146, 0x00008072 }, /* GL_TEXTURE_WRAP_R */ + { 46164, 0x00008072 }, /* GL_TEXTURE_WRAP_R_OES */ + { 46186, 0x00002802 }, /* GL_TEXTURE_WRAP_S */ + { 46204, 0x00002803 }, /* GL_TEXTURE_WRAP_T */ + { 46222, 0x0000911B }, /* GL_TIMEOUT_EXPIRED */ + { 46241, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */ + { 46261, 0x00008648 }, /* GL_TRACK_MATRIX_NV */ + { 46280, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */ + { 46309, 0x00001000 }, /* GL_TRANSFORM_BIT */ + { 46326, 0x00008E22 }, /* GL_TRANSFORM_FEEDBACK */ + { 46348, 0x00008E25 }, /* GL_TRANSFORM_FEEDBACK_BINDING */ + { 46378, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER */ + { 46407, 0x00008E24 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */ + { 46443, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */ + { 46480, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */ + { 46521, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */ + { 46554, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */ + { 46588, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */ + { 46626, 0x00008E23 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */ + { 46662, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */ + { 46696, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */ + { 46734, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */ + { 46769, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */ + { 46808, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */ + { 46849, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */ + { 46894, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS */ + { 46925, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */ + { 46960, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */ + { 47001, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */ + { 47046, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */ + { 47072, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */ + { 47102, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ + { 47134, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ + { 47164, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */ + { 47198, 0x0000862C }, /* GL_TRANSPOSE_NV */ + { 47214, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */ + { 47245, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */ + { 47280, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */ + { 47308, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */ + { 47340, 0x00000004 }, /* GL_TRIANGLES */ + { 47353, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY */ + { 47376, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY_ARB */ + { 47403, 0x00000006 }, /* GL_TRIANGLE_FAN */ + { 47419, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */ + { 47440, 0x00000005 }, /* GL_TRIANGLE_STRIP */ + { 47458, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY */ + { 47486, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY_ARB */ + { 47518, 0x00000001 }, /* GL_TRUE */ + { 47526, 0x00008A1C }, /* GL_UNDEFINED_APPLE */ + { 47545, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */ + { 47565, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */ + { 47588, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */ + { 47608, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */ + { 47629, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */ + { 47651, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */ + { 47673, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */ + { 47693, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */ + { 47714, 0x00009118 }, /* GL_UNSIGNALED */ + { 47728, 0x00001401 }, /* GL_UNSIGNED_BYTE */ + { 47745, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */ + { 47772, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */ + { 47795, 0x00001405 }, /* GL_UNSIGNED_INT */ + { 47811, 0x00008C3B }, /* GL_UNSIGNED_INT_10F_11F_11F_REV */ + { 47843, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */ + { 47870, 0x00008DF6 }, /* GL_UNSIGNED_INT_10_10_10_2_OES */ + { 47901, 0x000084FA }, /* GL_UNSIGNED_INT_24_8 */ + { 47922, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_EXT */ + { 47947, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */ + { 47971, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_OES */ + { 47996, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */ + { 48027, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV_EXT */ + { 48062, 0x00008C3E }, /* GL_UNSIGNED_INT_5_9_9_9_REV */ + { 48090, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */ + { 48114, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */ + { 48142, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D */ + { 48169, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */ + { 48202, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT */ + { 48239, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D_EXT */ + { 48270, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D */ + { 48297, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */ + { 48330, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT */ + { 48367, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D_EXT */ + { 48398, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */ + { 48430, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT */ + { 48466, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D */ + { 48493, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D_EXT */ + { 48524, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */ + { 48555, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT */ + { 48590, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE */ + { 48619, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE_EXT */ + { 48652, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2 */ + { 48673, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2_EXT */ + { 48698, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3 */ + { 48719, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3_EXT */ + { 48744, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4 */ + { 48765, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4_EXT */ + { 48790, 0x00008C17 }, /* GL_UNSIGNED_NORMALIZED */ + { 48813, 0x00001403 }, /* GL_UNSIGNED_SHORT */ + { 48831, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ + { 48861, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT */ + { 48895, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */ + { 48921, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ + { 48951, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT */ + { 48985, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */ + { 49011, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */ + { 49035, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */ + { 49063, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */ + { 49091, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */ + { 49118, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ + { 49150, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */ + { 49181, 0x00008CA2 }, /* GL_UPPER_LEFT */ + { 49195, 0x00002A20 }, /* GL_V2F */ + { 49202, 0x00002A21 }, /* GL_V3F */ + { 49209, 0x00008B83 }, /* GL_VALIDATE_STATUS */ + { 49228, 0x00001F00 }, /* GL_VENDOR */ + { 49238, 0x00001F02 }, /* GL_VERSION */ + { 49249, 0x00008074 }, /* GL_VERTEX_ARRAY */ + { 49265, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING */ + { 49289, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */ + { 49319, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ + { 49350, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */ + { 49385, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */ + { 49409, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */ + { 49430, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */ + { 49453, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */ + { 49474, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ + { 49501, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ + { 49529, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ + { 49557, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ + { 49585, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ + { 49613, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ + { 49641, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ + { 49669, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ + { 49696, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ + { 49723, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ + { 49750, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ + { 49777, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ + { 49804, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ + { 49831, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ + { 49858, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ + { 49885, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ + { 49912, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ + { 49950, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */ + { 49992, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ + { 50023, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */ + { 50058, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */ + { 50089, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT */ + { 50124, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ + { 50158, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */ + { 50196, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ + { 50227, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */ + { 50262, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ + { 50290, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */ + { 50322, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ + { 50352, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */ + { 50386, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ + { 50414, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */ + { 50446, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */ + { 50466, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */ + { 50488, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */ + { 50517, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */ + { 50538, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */ + { 50567, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */ + { 50600, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */ + { 50632, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */ + { 50659, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */ + { 50690, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */ + { 50720, 0x00008B31 }, /* GL_VERTEX_SHADER */ + { 50737, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */ + { 50758, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */ + { 50785, 0x00000BA2 }, /* GL_VIEWPORT */ + { 50797, 0x00000800 }, /* GL_VIEWPORT_BIT */ + { 50813, 0x00008A1A }, /* GL_VOLATILE_APPLE */ + { 50831, 0x0000911D }, /* GL_WAIT_FAILED */ + { 50846, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */ + { 50866, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ + { 50897, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */ + { 50932, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_OES */ + { 50967, 0x000086AD }, /* GL_WEIGHT_ARRAY_OES */ + { 50987, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */ + { 51015, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_OES */ + { 51043, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */ + { 51068, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_OES */ + { 51093, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ + { 51120, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_OES */ + { 51147, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */ + { 51172, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_OES */ + { 51197, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */ + { 51221, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */ + { 51240, 0x000088B9 }, /* GL_WRITE_ONLY */ + { 51254, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */ + { 51272, 0x000088B9 }, /* GL_WRITE_ONLY_OES */ + { 51290, 0x00001506 }, /* GL_XOR */ + { 51297, 0x000085B9 }, /* GL_YCBCR_422_APPLE */ + { 51316, 0x00008757 }, /* GL_YCBCR_MESA */ + { 51330, 0x00000000 }, /* GL_ZERO */ + { 51338, 0x00000D16 }, /* GL_ZOOM_X */ + { 51348, 0x00000D17 }, /* GL_ZOOM_Y */ }; -static const unsigned reduced_enums[1500] = +static const unsigned reduced_enums[1551] = { - 511, /* GL_FALSE */ - 786, /* GL_LINES */ - 789, /* GL_LINE_LOOP */ - 796, /* GL_LINE_STRIP */ - 2000, /* GL_TRIANGLES */ - 2004, /* GL_TRIANGLE_STRIP */ - 2002, /* GL_TRIANGLE_FAN */ - 1437, /* GL_QUADS */ - 1441, /* GL_QUAD_STRIP */ - 1315, /* GL_POLYGON */ - 787, /* GL_LINES_ADJACENCY_ARB */ - 797, /* GL_LINE_STRIP_ADJACENCY_ARB */ - 2001, /* GL_TRIANGLES_ADJACENCY_ARB */ - 2005, /* GL_TRIANGLE_STRIP_ADJACENCY_ARB */ - 1327, /* GL_POLYGON_STIPPLE_BIT */ - 1270, /* GL_PIXEL_MODE_BIT */ - 773, /* GL_LIGHTING_BIT */ - 543, /* GL_FOG_BIT */ + 535, /* GL_FALSE */ + 827, /* GL_LINES */ + 831, /* GL_LINE_LOOP */ + 838, /* GL_LINE_STRIP */ + 2135, /* GL_TRIANGLES */ + 2140, /* GL_TRIANGLE_STRIP */ + 2138, /* GL_TRIANGLE_FAN */ + 1507, /* GL_QUADS */ + 1511, /* GL_QUAD_STRIP */ + 1378, /* GL_POLYGON */ + 828, /* GL_LINES_ADJACENCY */ + 839, /* GL_LINE_STRIP_ADJACENCY */ + 2136, /* GL_TRIANGLES_ADJACENCY */ + 2141, /* GL_TRIANGLE_STRIP_ADJACENCY */ + 1390, /* GL_POLYGON_STIPPLE_BIT */ + 1333, /* GL_PIXEL_MODE_BIT */ + 814, /* GL_LIGHTING_BIT */ + 568, /* GL_FOG_BIT */ 8, /* GL_ACCUM */ - 807, /* GL_LOAD */ - 1516, /* GL_RETURN */ - 1138, /* GL_MULT */ + 850, /* GL_LOAD */ + 1596, /* GL_RETURN */ + 1200, /* GL_MULT */ 24, /* GL_ADD */ - 1154, /* GL_NEVER */ - 763, /* GL_LESS */ - 501, /* GL_EQUAL */ - 762, /* GL_LEQUAL */ - 660, /* GL_GREATER */ - 1171, /* GL_NOTEQUAL */ - 659, /* GL_GEQUAL */ + 1216, /* GL_NEVER */ + 804, /* GL_LESS */ + 525, /* GL_EQUAL */ + 803, /* GL_LEQUAL */ + 691, /* GL_GREATER */ + 1233, /* GL_NOTEQUAL */ + 690, /* GL_GEQUAL */ 55, /* GL_ALWAYS */ - 1688, /* GL_SRC_COLOR */ - 1203, /* GL_ONE_MINUS_SRC_COLOR */ - 1686, /* GL_SRC_ALPHA */ - 1202, /* GL_ONE_MINUS_SRC_ALPHA */ - 480, /* GL_DST_ALPHA */ - 1200, /* GL_ONE_MINUS_DST_ALPHA */ - 481, /* GL_DST_COLOR */ - 1201, /* GL_ONE_MINUS_DST_COLOR */ - 1687, /* GL_SRC_ALPHA_SATURATE */ - 640, /* GL_FRONT_LEFT */ - 641, /* GL_FRONT_RIGHT */ + 1803, /* GL_SRC_COLOR */ + 1266, /* GL_ONE_MINUS_SRC_COLOR */ + 1801, /* GL_SRC_ALPHA */ + 1265, /* GL_ONE_MINUS_SRC_ALPHA */ + 504, /* GL_DST_ALPHA */ + 1263, /* GL_ONE_MINUS_DST_ALPHA */ + 505, /* GL_DST_COLOR */ + 1264, /* GL_ONE_MINUS_DST_COLOR */ + 1802, /* GL_SRC_ALPHA_SATURATE */ + 667, /* GL_FRONT_LEFT */ + 668, /* GL_FRONT_RIGHT */ 77, /* GL_BACK_LEFT */ 78, /* GL_BACK_RIGHT */ - 637, /* GL_FRONT */ + 664, /* GL_FRONT */ 76, /* GL_BACK */ - 761, /* GL_LEFT */ - 1579, /* GL_RIGHT */ - 638, /* GL_FRONT_AND_BACK */ + 802, /* GL_LEFT */ + 1685, /* GL_RIGHT */ + 665, /* GL_FRONT_AND_BACK */ 71, /* GL_AUX0 */ 72, /* GL_AUX1 */ 73, /* GL_AUX2 */ 74, /* GL_AUX3 */ - 749, /* GL_INVALID_ENUM */ - 754, /* GL_INVALID_VALUE */ - 753, /* GL_INVALID_OPERATION */ - 1693, /* GL_STACK_OVERFLOW */ - 1694, /* GL_STACK_UNDERFLOW */ - 1228, /* GL_OUT_OF_MEMORY */ - 750, /* GL_INVALID_FRAMEBUFFER_OPERATION */ + 790, /* GL_INVALID_ENUM */ + 795, /* GL_INVALID_VALUE */ + 794, /* GL_INVALID_OPERATION */ + 1808, /* GL_STACK_OVERFLOW */ + 1809, /* GL_STACK_UNDERFLOW */ + 1291, /* GL_OUT_OF_MEMORY */ + 791, /* GL_INVALID_FRAMEBUFFER_OPERATION */ 0, /* GL_2D */ 2, /* GL_3D */ 3, /* GL_3D_COLOR */ 4, /* GL_3D_COLOR_TEXTURE */ 6, /* GL_4D_COLOR_TEXTURE */ - 1248, /* GL_PASS_THROUGH_TOKEN */ - 1314, /* GL_POINT_TOKEN */ - 798, /* GL_LINE_TOKEN */ - 1328, /* GL_POLYGON_TOKEN */ - 85, /* GL_BITMAP_TOKEN */ - 479, /* GL_DRAW_PIXEL_TOKEN */ - 326, /* GL_COPY_PIXEL_TOKEN */ - 790, /* GL_LINE_RESET_TOKEN */ - 504, /* GL_EXP */ - 505, /* GL_EXP2 */ - 363, /* GL_CW */ - 148, /* GL_CCW */ - 169, /* GL_COEFF */ - 1225, /* GL_ORDER */ - 416, /* GL_DOMAIN */ - 336, /* GL_CURRENT_COLOR */ - 339, /* GL_CURRENT_INDEX */ - 345, /* GL_CURRENT_NORMAL */ - 359, /* GL_CURRENT_TEXTURE_COORDS */ - 351, /* GL_CURRENT_RASTER_COLOR */ - 353, /* GL_CURRENT_RASTER_INDEX */ - 357, /* GL_CURRENT_RASTER_TEXTURE_COORDS */ - 354, /* GL_CURRENT_RASTER_POSITION */ - 355, /* GL_CURRENT_RASTER_POSITION_VALID */ - 352, /* GL_CURRENT_RASTER_DISTANCE */ - 1306, /* GL_POINT_SMOOTH */ - 1290, /* GL_POINT_SIZE */ - 1305, /* GL_POINT_SIZE_RANGE */ - 1296, /* GL_POINT_SIZE_GRANULARITY */ - 791, /* GL_LINE_SMOOTH */ - 799, /* GL_LINE_WIDTH */ - 801, /* GL_LINE_WIDTH_RANGE */ - 800, /* GL_LINE_WIDTH_GRANULARITY */ - 793, /* GL_LINE_STIPPLE */ - 794, /* GL_LINE_STIPPLE_PATTERN */ - 795, /* GL_LINE_STIPPLE_REPEAT */ - 806, /* GL_LIST_MODE */ - 1003, /* GL_MAX_LIST_NESTING */ - 803, /* GL_LIST_BASE */ - 805, /* GL_LIST_INDEX */ - 1317, /* GL_POLYGON_MODE */ - 1324, /* GL_POLYGON_SMOOTH */ - 1326, /* GL_POLYGON_STIPPLE */ - 490, /* GL_EDGE_FLAG */ - 329, /* GL_CULL_FACE */ - 330, /* GL_CULL_FACE_MODE */ - 639, /* GL_FRONT_FACE */ - 772, /* GL_LIGHTING */ - 777, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ - 778, /* GL_LIGHT_MODEL_TWO_SIDE */ - 774, /* GL_LIGHT_MODEL_AMBIENT */ - 1635, /* GL_SHADE_MODEL */ - 217, /* GL_COLOR_MATERIAL_FACE */ - 218, /* GL_COLOR_MATERIAL_PARAMETER */ - 216, /* GL_COLOR_MATERIAL */ - 542, /* GL_FOG */ - 564, /* GL_FOG_INDEX */ - 560, /* GL_FOG_DENSITY */ - 568, /* GL_FOG_START */ - 562, /* GL_FOG_END */ - 565, /* GL_FOG_MODE */ - 544, /* GL_FOG_COLOR */ - 401, /* GL_DEPTH_RANGE */ - 410, /* GL_DEPTH_TEST */ - 413, /* GL_DEPTH_WRITEMASK */ - 386, /* GL_DEPTH_CLEAR_VALUE */ - 400, /* GL_DEPTH_FUNC */ + 1311, /* GL_PASS_THROUGH_TOKEN */ + 1377, /* GL_POINT_TOKEN */ + 841, /* GL_LINE_TOKEN */ + 1391, /* GL_POLYGON_TOKEN */ + 87, /* GL_BITMAP_TOKEN */ + 503, /* GL_DRAW_PIXEL_TOKEN */ + 349, /* GL_COPY_PIXEL_TOKEN */ + 832, /* GL_LINE_RESET_TOKEN */ + 528, /* GL_EXP */ + 529, /* GL_EXP2 */ + 386, /* GL_CW */ + 154, /* GL_CCW */ + 184, /* GL_COEFF */ + 1288, /* GL_ORDER */ + 440, /* GL_DOMAIN */ + 359, /* GL_CURRENT_COLOR */ + 362, /* GL_CURRENT_INDEX */ + 368, /* GL_CURRENT_NORMAL */ + 382, /* GL_CURRENT_TEXTURE_COORDS */ + 374, /* GL_CURRENT_RASTER_COLOR */ + 376, /* GL_CURRENT_RASTER_INDEX */ + 380, /* GL_CURRENT_RASTER_TEXTURE_COORDS */ + 377, /* GL_CURRENT_RASTER_POSITION */ + 378, /* GL_CURRENT_RASTER_POSITION_VALID */ + 375, /* GL_CURRENT_RASTER_DISTANCE */ + 1369, /* GL_POINT_SMOOTH */ + 1353, /* GL_POINT_SIZE */ + 1368, /* GL_POINT_SIZE_RANGE */ + 1359, /* GL_POINT_SIZE_GRANULARITY */ + 833, /* GL_LINE_SMOOTH */ + 842, /* GL_LINE_WIDTH */ + 844, /* GL_LINE_WIDTH_RANGE */ + 843, /* GL_LINE_WIDTH_GRANULARITY */ + 835, /* GL_LINE_STIPPLE */ + 836, /* GL_LINE_STIPPLE_PATTERN */ + 837, /* GL_LINE_STIPPLE_REPEAT */ + 849, /* GL_LIST_MODE */ + 1056, /* GL_MAX_LIST_NESTING */ + 846, /* GL_LIST_BASE */ + 848, /* GL_LIST_INDEX */ + 1380, /* GL_POLYGON_MODE */ + 1387, /* GL_POLYGON_SMOOTH */ + 1389, /* GL_POLYGON_STIPPLE */ + 514, /* GL_EDGE_FLAG */ + 352, /* GL_CULL_FACE */ + 353, /* GL_CULL_FACE_MODE */ + 666, /* GL_FRONT_FACE */ + 813, /* GL_LIGHTING */ + 818, /* GL_LIGHT_MODEL_LOCAL_VIEWER */ + 819, /* GL_LIGHT_MODEL_TWO_SIDE */ + 815, /* GL_LIGHT_MODEL_AMBIENT */ + 1750, /* GL_SHADE_MODEL */ + 232, /* GL_COLOR_MATERIAL_FACE */ + 233, /* GL_COLOR_MATERIAL_PARAMETER */ + 231, /* GL_COLOR_MATERIAL */ + 567, /* GL_FOG */ + 589, /* GL_FOG_INDEX */ + 585, /* GL_FOG_DENSITY */ + 593, /* GL_FOG_START */ + 587, /* GL_FOG_END */ + 590, /* GL_FOG_MODE */ + 569, /* GL_FOG_COLOR */ + 425, /* GL_DEPTH_RANGE */ + 434, /* GL_DEPTH_TEST */ + 437, /* GL_DEPTH_WRITEMASK */ + 410, /* GL_DEPTH_CLEAR_VALUE */ + 424, /* GL_DEPTH_FUNC */ 12, /* GL_ACCUM_CLEAR_VALUE */ - 1737, /* GL_STENCIL_TEST */ - 1718, /* GL_STENCIL_CLEAR_VALUE */ - 1720, /* GL_STENCIL_FUNC */ - 1739, /* GL_STENCIL_VALUE_MASK */ - 1719, /* GL_STENCIL_FAIL */ - 1734, /* GL_STENCIL_PASS_DEPTH_FAIL */ - 1735, /* GL_STENCIL_PASS_DEPTH_PASS */ - 1736, /* GL_STENCIL_REF */ - 1740, /* GL_STENCIL_WRITEMASK */ - 962, /* GL_MATRIX_MODE */ - 1160, /* GL_NORMALIZE */ - 2115, /* GL_VIEWPORT */ - 1133, /* GL_MODELVIEW_STACK_DEPTH */ - 1414, /* GL_PROJECTION_STACK_DEPTH */ - 1962, /* GL_TEXTURE_STACK_DEPTH */ - 1130, /* GL_MODELVIEW_MATRIX */ - 1412, /* GL_PROJECTION_MATRIX */ - 1944, /* GL_TEXTURE_MATRIX */ + 1853, /* GL_STENCIL_TEST */ + 1834, /* GL_STENCIL_CLEAR_VALUE */ + 1836, /* GL_STENCIL_FUNC */ + 1855, /* GL_STENCIL_VALUE_MASK */ + 1835, /* GL_STENCIL_FAIL */ + 1850, /* GL_STENCIL_PASS_DEPTH_FAIL */ + 1851, /* GL_STENCIL_PASS_DEPTH_PASS */ + 1852, /* GL_STENCIL_REF */ + 1856, /* GL_STENCIL_WRITEMASK */ + 1006, /* GL_MATRIX_MODE */ + 1222, /* GL_NORMALIZE */ + 2266, /* GL_VIEWPORT */ + 1195, /* GL_MODELVIEW_STACK_DEPTH */ + 1481, /* GL_PROJECTION_STACK_DEPTH */ + 2089, /* GL_TEXTURE_STACK_DEPTH */ + 1192, /* GL_MODELVIEW_MATRIX */ + 1479, /* GL_PROJECTION_MATRIX */ + 2069, /* GL_TEXTURE_MATRIX */ 69, /* GL_ATTRIB_STACK_DEPTH */ - 159, /* GL_CLIENT_ATTRIB_STACK_DEPTH */ + 166, /* GL_CLIENT_ATTRIB_STACK_DEPTH */ 51, /* GL_ALPHA_TEST */ 52, /* GL_ALPHA_TEST_FUNC */ 53, /* GL_ALPHA_TEST_REF */ - 415, /* GL_DITHER */ - 89, /* GL_BLEND_DST */ - 103, /* GL_BLEND_SRC */ - 86, /* GL_BLEND */ - 809, /* GL_LOGIC_OP_MODE */ - 707, /* GL_INDEX_LOGIC_OP */ - 215, /* GL_COLOR_LOGIC_OP */ + 439, /* GL_DITHER */ + 91, /* GL_BLEND_DST */ + 105, /* GL_BLEND_SRC */ + 88, /* GL_BLEND */ + 852, /* GL_LOGIC_OP_MODE */ + 739, /* GL_INDEX_LOGIC_OP */ + 230, /* GL_COLOR_LOGIC_OP */ 75, /* GL_AUX_BUFFERS */ - 426, /* GL_DRAW_BUFFER */ - 1456, /* GL_READ_BUFFER */ - 1613, /* GL_SCISSOR_BOX */ - 1614, /* GL_SCISSOR_TEST */ - 706, /* GL_INDEX_CLEAR_VALUE */ - 711, /* GL_INDEX_WRITEMASK */ - 212, /* GL_COLOR_CLEAR_VALUE */ - 254, /* GL_COLOR_WRITEMASK */ - 708, /* GL_INDEX_MODE */ - 1571, /* GL_RGBA_MODE */ - 425, /* GL_DOUBLEBUFFER */ - 1741, /* GL_STEREO */ - 1508, /* GL_RENDER_MODE */ - 1249, /* GL_PERSPECTIVE_CORRECTION_HINT */ - 1307, /* GL_POINT_SMOOTH_HINT */ - 792, /* GL_LINE_SMOOTH_HINT */ - 1325, /* GL_POLYGON_SMOOTH_HINT */ - 563, /* GL_FOG_HINT */ - 1924, /* GL_TEXTURE_GEN_S */ - 1926, /* GL_TEXTURE_GEN_T */ - 1923, /* GL_TEXTURE_GEN_R */ - 1922, /* GL_TEXTURE_GEN_Q */ - 1262, /* GL_PIXEL_MAP_I_TO_I */ - 1268, /* GL_PIXEL_MAP_S_TO_S */ - 1264, /* GL_PIXEL_MAP_I_TO_R */ - 1260, /* GL_PIXEL_MAP_I_TO_G */ - 1258, /* GL_PIXEL_MAP_I_TO_B */ - 1256, /* GL_PIXEL_MAP_I_TO_A */ - 1266, /* GL_PIXEL_MAP_R_TO_R */ - 1254, /* GL_PIXEL_MAP_G_TO_G */ - 1252, /* GL_PIXEL_MAP_B_TO_B */ - 1250, /* GL_PIXEL_MAP_A_TO_A */ - 1263, /* GL_PIXEL_MAP_I_TO_I_SIZE */ - 1269, /* GL_PIXEL_MAP_S_TO_S_SIZE */ - 1265, /* GL_PIXEL_MAP_I_TO_R_SIZE */ - 1261, /* GL_PIXEL_MAP_I_TO_G_SIZE */ - 1259, /* GL_PIXEL_MAP_I_TO_B_SIZE */ - 1257, /* GL_PIXEL_MAP_I_TO_A_SIZE */ - 1267, /* GL_PIXEL_MAP_R_TO_R_SIZE */ - 1255, /* GL_PIXEL_MAP_G_TO_G_SIZE */ - 1253, /* GL_PIXEL_MAP_B_TO_B_SIZE */ - 1251, /* GL_PIXEL_MAP_A_TO_A_SIZE */ - 2015, /* GL_UNPACK_SWAP_BYTES */ - 2010, /* GL_UNPACK_LSB_FIRST */ - 2011, /* GL_UNPACK_ROW_LENGTH */ - 2014, /* GL_UNPACK_SKIP_ROWS */ - 2013, /* GL_UNPACK_SKIP_PIXELS */ - 2008, /* GL_UNPACK_ALIGNMENT */ - 1237, /* GL_PACK_SWAP_BYTES */ - 1232, /* GL_PACK_LSB_FIRST */ - 1233, /* GL_PACK_ROW_LENGTH */ - 1236, /* GL_PACK_SKIP_ROWS */ - 1235, /* GL_PACK_SKIP_PIXELS */ - 1229, /* GL_PACK_ALIGNMENT */ - 903, /* GL_MAP_COLOR */ - 908, /* GL_MAP_STENCIL */ - 710, /* GL_INDEX_SHIFT */ - 709, /* GL_INDEX_OFFSET */ - 1471, /* GL_RED_SCALE */ - 1468, /* GL_RED_BIAS */ - 2141, /* GL_ZOOM_X */ - 2142, /* GL_ZOOM_Y */ - 665, /* GL_GREEN_SCALE */ - 662, /* GL_GREEN_BIAS */ - 112, /* GL_BLUE_SCALE */ - 109, /* GL_BLUE_BIAS */ + 450, /* GL_DRAW_BUFFER */ + 1534, /* GL_READ_BUFFER */ + 1727, /* GL_SCISSOR_BOX */ + 1728, /* GL_SCISSOR_TEST */ + 738, /* GL_INDEX_CLEAR_VALUE */ + 743, /* GL_INDEX_WRITEMASK */ + 227, /* GL_COLOR_CLEAR_VALUE */ + 269, /* GL_COLOR_WRITEMASK */ + 740, /* GL_INDEX_MODE */ + 1674, /* GL_RGBA_MODE */ + 449, /* GL_DOUBLEBUFFER */ + 1857, /* GL_STEREO */ + 1588, /* GL_RENDER_MODE */ + 1312, /* GL_PERSPECTIVE_CORRECTION_HINT */ + 1370, /* GL_POINT_SMOOTH_HINT */ + 834, /* GL_LINE_SMOOTH_HINT */ + 1388, /* GL_POLYGON_SMOOTH_HINT */ + 588, /* GL_FOG_HINT */ + 2049, /* GL_TEXTURE_GEN_S */ + 2051, /* GL_TEXTURE_GEN_T */ + 2048, /* GL_TEXTURE_GEN_R */ + 2047, /* GL_TEXTURE_GEN_Q */ + 1325, /* GL_PIXEL_MAP_I_TO_I */ + 1331, /* GL_PIXEL_MAP_S_TO_S */ + 1327, /* GL_PIXEL_MAP_I_TO_R */ + 1323, /* GL_PIXEL_MAP_I_TO_G */ + 1321, /* GL_PIXEL_MAP_I_TO_B */ + 1319, /* GL_PIXEL_MAP_I_TO_A */ + 1329, /* GL_PIXEL_MAP_R_TO_R */ + 1317, /* GL_PIXEL_MAP_G_TO_G */ + 1315, /* GL_PIXEL_MAP_B_TO_B */ + 1313, /* GL_PIXEL_MAP_A_TO_A */ + 1326, /* GL_PIXEL_MAP_I_TO_I_SIZE */ + 1332, /* GL_PIXEL_MAP_S_TO_S_SIZE */ + 1328, /* GL_PIXEL_MAP_I_TO_R_SIZE */ + 1324, /* GL_PIXEL_MAP_I_TO_G_SIZE */ + 1322, /* GL_PIXEL_MAP_I_TO_B_SIZE */ + 1320, /* GL_PIXEL_MAP_I_TO_A_SIZE */ + 1330, /* GL_PIXEL_MAP_R_TO_R_SIZE */ + 1318, /* GL_PIXEL_MAP_G_TO_G_SIZE */ + 1316, /* GL_PIXEL_MAP_B_TO_B_SIZE */ + 1314, /* GL_PIXEL_MAP_A_TO_A_SIZE */ + 2152, /* GL_UNPACK_SWAP_BYTES */ + 2147, /* GL_UNPACK_LSB_FIRST */ + 2148, /* GL_UNPACK_ROW_LENGTH */ + 2151, /* GL_UNPACK_SKIP_ROWS */ + 2150, /* GL_UNPACK_SKIP_PIXELS */ + 2145, /* GL_UNPACK_ALIGNMENT */ + 1300, /* GL_PACK_SWAP_BYTES */ + 1295, /* GL_PACK_LSB_FIRST */ + 1296, /* GL_PACK_ROW_LENGTH */ + 1299, /* GL_PACK_SKIP_ROWS */ + 1298, /* GL_PACK_SKIP_PIXELS */ + 1292, /* GL_PACK_ALIGNMENT */ + 947, /* GL_MAP_COLOR */ + 952, /* GL_MAP_STENCIL */ + 742, /* GL_INDEX_SHIFT */ + 741, /* GL_INDEX_OFFSET */ + 1550, /* GL_RED_SCALE */ + 1546, /* GL_RED_BIAS */ + 2292, /* GL_ZOOM_X */ + 2293, /* GL_ZOOM_Y */ + 697, /* GL_GREEN_SCALE */ + 693, /* GL_GREEN_BIAS */ + 115, /* GL_BLUE_SCALE */ + 111, /* GL_BLUE_BIAS */ 50, /* GL_ALPHA_SCALE */ 47, /* GL_ALPHA_BIAS */ - 402, /* GL_DEPTH_SCALE */ - 379, /* GL_DEPTH_BIAS */ - 992, /* GL_MAX_EVAL_ORDER */ - 1002, /* GL_MAX_LIGHTS */ - 973, /* GL_MAX_CLIP_PLANES */ - 1054, /* GL_MAX_TEXTURE_SIZE */ - 1009, /* GL_MAX_PIXEL_MAP_TABLE */ - 969, /* GL_MAX_ATTRIB_STACK_DEPTH */ - 1005, /* GL_MAX_MODELVIEW_STACK_DEPTH */ - 1006, /* GL_MAX_NAME_STACK_DEPTH */ - 1036, /* GL_MAX_PROJECTION_STACK_DEPTH */ - 1055, /* GL_MAX_TEXTURE_STACK_DEPTH */ - 1077, /* GL_MAX_VIEWPORT_DIMS */ - 970, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ - 1751, /* GL_SUBPIXEL_BITS */ - 705, /* GL_INDEX_BITS */ - 1469, /* GL_RED_BITS */ - 663, /* GL_GREEN_BITS */ - 110, /* GL_BLUE_BITS */ + 426, /* GL_DEPTH_SCALE */ + 402, /* GL_DEPTH_BIAS */ + 1038, /* GL_MAX_EVAL_ORDER */ + 1055, /* GL_MAX_LIGHTS */ + 1018, /* GL_MAX_CLIP_DISTANCES */ + 1110, /* GL_MAX_TEXTURE_SIZE */ + 1062, /* GL_MAX_PIXEL_MAP_TABLE */ + 1014, /* GL_MAX_ATTRIB_STACK_DEPTH */ + 1058, /* GL_MAX_MODELVIEW_STACK_DEPTH */ + 1059, /* GL_MAX_NAME_STACK_DEPTH */ + 1090, /* GL_MAX_PROJECTION_STACK_DEPTH */ + 1111, /* GL_MAX_TEXTURE_STACK_DEPTH */ + 1137, /* GL_MAX_VIEWPORT_DIMS */ + 1015, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */ + 1867, /* GL_SUBPIXEL_BITS */ + 737, /* GL_INDEX_BITS */ + 1547, /* GL_RED_BITS */ + 694, /* GL_GREEN_BITS */ + 112, /* GL_BLUE_BITS */ 48, /* GL_ALPHA_BITS */ - 380, /* GL_DEPTH_BITS */ - 1716, /* GL_STENCIL_BITS */ + 403, /* GL_DEPTH_BITS */ + 1831, /* GL_STENCIL_BITS */ 14, /* GL_ACCUM_RED_BITS */ 13, /* GL_ACCUM_GREEN_BITS */ 10, /* GL_ACCUM_BLUE_BITS */ 9, /* GL_ACCUM_ALPHA_BITS */ - 1147, /* GL_NAME_STACK_DEPTH */ + 1209, /* GL_NAME_STACK_DEPTH */ 70, /* GL_AUTO_NORMAL */ - 849, /* GL_MAP1_COLOR_4 */ - 852, /* GL_MAP1_INDEX */ - 853, /* GL_MAP1_NORMAL */ - 854, /* GL_MAP1_TEXTURE_COORD_1 */ - 855, /* GL_MAP1_TEXTURE_COORD_2 */ - 856, /* GL_MAP1_TEXTURE_COORD_3 */ - 857, /* GL_MAP1_TEXTURE_COORD_4 */ - 858, /* GL_MAP1_VERTEX_3 */ - 859, /* GL_MAP1_VERTEX_4 */ - 876, /* GL_MAP2_COLOR_4 */ - 879, /* GL_MAP2_INDEX */ - 880, /* GL_MAP2_NORMAL */ - 881, /* GL_MAP2_TEXTURE_COORD_1 */ - 882, /* GL_MAP2_TEXTURE_COORD_2 */ - 883, /* GL_MAP2_TEXTURE_COORD_3 */ - 884, /* GL_MAP2_TEXTURE_COORD_4 */ - 885, /* GL_MAP2_VERTEX_3 */ - 886, /* GL_MAP2_VERTEX_4 */ - 850, /* GL_MAP1_GRID_DOMAIN */ - 851, /* GL_MAP1_GRID_SEGMENTS */ - 877, /* GL_MAP2_GRID_DOMAIN */ - 878, /* GL_MAP2_GRID_SEGMENTS */ - 1834, /* GL_TEXTURE_1D */ - 1836, /* GL_TEXTURE_2D */ - 514, /* GL_FEEDBACK_BUFFER_POINTER */ - 515, /* GL_FEEDBACK_BUFFER_SIZE */ - 516, /* GL_FEEDBACK_BUFFER_TYPE */ - 1623, /* GL_SELECTION_BUFFER_POINTER */ - 1624, /* GL_SELECTION_BUFFER_SIZE */ - 1968, /* GL_TEXTURE_WIDTH */ - 1930, /* GL_TEXTURE_HEIGHT */ - 1874, /* GL_TEXTURE_COMPONENTS */ - 1858, /* GL_TEXTURE_BORDER_COLOR */ - 1857, /* GL_TEXTURE_BORDER */ - 417, /* GL_DONT_CARE */ - 512, /* GL_FASTEST */ - 1155, /* GL_NICEST */ + 893, /* GL_MAP1_COLOR_4 */ + 896, /* GL_MAP1_INDEX */ + 897, /* GL_MAP1_NORMAL */ + 898, /* GL_MAP1_TEXTURE_COORD_1 */ + 899, /* GL_MAP1_TEXTURE_COORD_2 */ + 900, /* GL_MAP1_TEXTURE_COORD_3 */ + 901, /* GL_MAP1_TEXTURE_COORD_4 */ + 902, /* GL_MAP1_VERTEX_3 */ + 903, /* GL_MAP1_VERTEX_4 */ + 920, /* GL_MAP2_COLOR_4 */ + 923, /* GL_MAP2_INDEX */ + 924, /* GL_MAP2_NORMAL */ + 925, /* GL_MAP2_TEXTURE_COORD_1 */ + 926, /* GL_MAP2_TEXTURE_COORD_2 */ + 927, /* GL_MAP2_TEXTURE_COORD_3 */ + 928, /* GL_MAP2_TEXTURE_COORD_4 */ + 929, /* GL_MAP2_VERTEX_3 */ + 930, /* GL_MAP2_VERTEX_4 */ + 894, /* GL_MAP1_GRID_DOMAIN */ + 895, /* GL_MAP1_GRID_SEGMENTS */ + 921, /* GL_MAP2_GRID_DOMAIN */ + 922, /* GL_MAP2_GRID_SEGMENTS */ + 1950, /* GL_TEXTURE_1D */ + 1953, /* GL_TEXTURE_2D */ + 538, /* GL_FEEDBACK_BUFFER_POINTER */ + 539, /* GL_FEEDBACK_BUFFER_SIZE */ + 540, /* GL_FEEDBACK_BUFFER_TYPE */ + 1737, /* GL_SELECTION_BUFFER_POINTER */ + 1738, /* GL_SELECTION_BUFFER_SIZE */ + 2095, /* GL_TEXTURE_WIDTH */ + 2055, /* GL_TEXTURE_HEIGHT */ + 1999, /* GL_TEXTURE_COMPONENTS */ + 1980, /* GL_TEXTURE_BORDER_COLOR */ + 1979, /* GL_TEXTURE_BORDER */ + 441, /* GL_DONT_CARE */ + 536, /* GL_FASTEST */ + 1217, /* GL_NICEST */ 56, /* GL_AMBIENT */ - 414, /* GL_DIFFUSE */ - 1675, /* GL_SPECULAR */ - 1329, /* GL_POSITION */ - 1678, /* GL_SPOT_DIRECTION */ - 1679, /* GL_SPOT_EXPONENT */ - 1677, /* GL_SPOT_CUTOFF */ - 299, /* GL_CONSTANT_ATTENUATION */ - 781, /* GL_LINEAR_ATTENUATION */ - 1436, /* GL_QUADRATIC_ATTENUATION */ - 268, /* GL_COMPILE */ - 269, /* GL_COMPILE_AND_EXECUTE */ - 143, /* GL_BYTE */ - 2017, /* GL_UNSIGNED_BYTE */ - 1640, /* GL_SHORT */ - 2043, /* GL_UNSIGNED_SHORT */ - 713, /* GL_INT */ - 2020, /* GL_UNSIGNED_INT */ - 523, /* GL_FLOAT */ + 438, /* GL_DIFFUSE */ + 1790, /* GL_SPECULAR */ + 1392, /* GL_POSITION */ + 1793, /* GL_SPOT_DIRECTION */ + 1794, /* GL_SPOT_EXPONENT */ + 1792, /* GL_SPOT_CUTOFF */ + 317, /* GL_CONSTANT_ATTENUATION */ + 822, /* GL_LINEAR_ATTENUATION */ + 1506, /* GL_QUADRATIC_ATTENUATION */ + 284, /* GL_COMPILE */ + 285, /* GL_COMPILE_AND_EXECUTE */ + 149, /* GL_BYTE */ + 2154, /* GL_UNSIGNED_BYTE */ + 1755, /* GL_SHORT */ + 2193, /* GL_UNSIGNED_SHORT */ + 745, /* GL_INT */ + 2157, /* GL_UNSIGNED_INT */ + 548, /* GL_FLOAT */ 1, /* GL_2_BYTES */ 5, /* GL_3_BYTES */ 7, /* GL_4_BYTES */ - 424, /* GL_DOUBLE */ - 666, /* GL_HALF_FLOAT */ - 520, /* GL_FIXED */ - 155, /* GL_CLEAR */ + 448, /* GL_DOUBLE */ + 698, /* GL_HALF_FLOAT */ + 544, /* GL_FIXED */ + 162, /* GL_CLEAR */ 58, /* GL_AND */ 60, /* GL_AND_REVERSE */ - 324, /* GL_COPY */ + 347, /* GL_COPY */ 59, /* GL_AND_INVERTED */ - 1158, /* GL_NOOP */ - 2137, /* GL_XOR */ - 1224, /* GL_OR */ - 1159, /* GL_NOR */ - 502, /* GL_EQUIV */ - 757, /* GL_INVERT */ - 1227, /* GL_OR_REVERSE */ - 325, /* GL_COPY_INVERTED */ - 1226, /* GL_OR_INVERTED */ - 1148, /* GL_NAND */ - 1629, /* GL_SET */ - 499, /* GL_EMISSION */ - 1639, /* GL_SHININESS */ + 1220, /* GL_NOOP */ + 2288, /* GL_XOR */ + 1287, /* GL_OR */ + 1221, /* GL_NOR */ + 526, /* GL_EQUIV */ + 798, /* GL_INVERT */ + 1290, /* GL_OR_REVERSE */ + 348, /* GL_COPY_INVERTED */ + 1289, /* GL_OR_INVERTED */ + 1210, /* GL_NAND */ + 1744, /* GL_SET */ + 523, /* GL_EMISSION */ + 1754, /* GL_SHININESS */ 57, /* GL_AMBIENT_AND_DIFFUSE */ - 214, /* GL_COLOR_INDEXES */ - 1097, /* GL_MODELVIEW */ - 1411, /* GL_PROJECTION */ - 1769, /* GL_TEXTURE */ - 170, /* GL_COLOR */ - 372, /* GL_DEPTH */ - 1701, /* GL_STENCIL */ - 213, /* GL_COLOR_INDEX */ - 1721, /* GL_STENCIL_INDEX */ - 387, /* GL_DEPTH_COMPONENT */ - 1465, /* GL_RED */ - 661, /* GL_GREEN */ - 108, /* GL_BLUE */ + 229, /* GL_COLOR_INDEXES */ + 1159, /* GL_MODELVIEW */ + 1478, /* GL_PROJECTION */ + 1885, /* GL_TEXTURE */ + 185, /* GL_COLOR */ + 395, /* GL_DEPTH */ + 1816, /* GL_STENCIL */ + 228, /* GL_COLOR_INDEX */ + 1837, /* GL_STENCIL_INDEX */ + 411, /* GL_DEPTH_COMPONENT */ + 1543, /* GL_RED */ + 692, /* GL_GREEN */ + 110, /* GL_BLUE */ 32, /* GL_ALPHA */ - 1517, /* GL_RGB */ - 1546, /* GL_RGBA */ - 813, /* GL_LUMINANCE */ - 840, /* GL_LUMINANCE_ALPHA */ - 84, /* GL_BITMAP */ - 1279, /* GL_POINT */ - 779, /* GL_LINE */ - 517, /* GL_FILL */ - 1477, /* GL_RENDER */ - 513, /* GL_FEEDBACK */ - 1622, /* GL_SELECT */ - 522, /* GL_FLAT */ - 1650, /* GL_SMOOTH */ - 758, /* GL_KEEP */ - 1510, /* GL_REPLACE */ - 695, /* GL_INCR */ - 368, /* GL_DECR */ - 2060, /* GL_VENDOR */ - 1507, /* GL_RENDERER */ - 2061, /* GL_VERSION */ - 506, /* GL_EXTENSIONS */ - 1580, /* GL_S */ - 1760, /* GL_T */ - 1452, /* GL_R */ - 1435, /* GL_Q */ - 1134, /* GL_MODULATE */ - 367, /* GL_DECAL */ - 1917, /* GL_TEXTURE_ENV_MODE */ - 1916, /* GL_TEXTURE_ENV_COLOR */ - 1915, /* GL_TEXTURE_ENV */ - 507, /* GL_EYE_LINEAR */ - 1185, /* GL_OBJECT_LINEAR */ - 1676, /* GL_SPHERE_MAP */ - 1920, /* GL_TEXTURE_GEN_MODE */ - 1187, /* GL_OBJECT_PLANE */ - 508, /* GL_EYE_PLANE */ - 1149, /* GL_NEAREST */ - 780, /* GL_LINEAR */ - 1153, /* GL_NEAREST_MIPMAP_NEAREST */ - 785, /* GL_LINEAR_MIPMAP_NEAREST */ - 1152, /* GL_NEAREST_MIPMAP_LINEAR */ - 784, /* GL_LINEAR_MIPMAP_LINEAR */ - 1943, /* GL_TEXTURE_MAG_FILTER */ - 1952, /* GL_TEXTURE_MIN_FILTER */ - 1971, /* GL_TEXTURE_WRAP_S */ - 1972, /* GL_TEXTURE_WRAP_T */ - 149, /* GL_CLAMP */ - 1509, /* GL_REPEAT */ - 1323, /* GL_POLYGON_OFFSET_UNITS */ - 1322, /* GL_POLYGON_OFFSET_POINT */ - 1321, /* GL_POLYGON_OFFSET_LINE */ - 1453, /* GL_R3_G3_B2 */ - 2057, /* GL_V2F */ - 2058, /* GL_V3F */ - 146, /* GL_C4UB_V2F */ - 147, /* GL_C4UB_V3F */ - 144, /* GL_C3F_V3F */ - 1146, /* GL_N3F_V3F */ - 145, /* GL_C4F_N3F_V3F */ - 1765, /* GL_T2F_V3F */ - 1767, /* GL_T4F_V4F */ - 1763, /* GL_T2F_C4UB_V3F */ - 1761, /* GL_T2F_C3F_V3F */ - 1764, /* GL_T2F_N3F_V3F */ - 1762, /* GL_T2F_C4F_N3F_V3F */ - 1766, /* GL_T4F_C4F_N3F_V4F */ - 162, /* GL_CLIP_PLANE0 */ - 163, /* GL_CLIP_PLANE1 */ - 164, /* GL_CLIP_PLANE2 */ - 165, /* GL_CLIP_PLANE3 */ - 166, /* GL_CLIP_PLANE4 */ - 167, /* GL_CLIP_PLANE5 */ - 764, /* GL_LIGHT0 */ - 765, /* GL_LIGHT1 */ - 766, /* GL_LIGHT2 */ - 767, /* GL_LIGHT3 */ - 768, /* GL_LIGHT4 */ - 769, /* GL_LIGHT5 */ - 770, /* GL_LIGHT6 */ - 771, /* GL_LIGHT7 */ - 670, /* GL_HINT_BIT */ - 301, /* GL_CONSTANT_COLOR */ - 1198, /* GL_ONE_MINUS_CONSTANT_COLOR */ - 296, /* GL_CONSTANT_ALPHA */ - 1196, /* GL_ONE_MINUS_CONSTANT_ALPHA */ - 87, /* GL_BLEND_COLOR */ - 642, /* GL_FUNC_ADD */ - 1080, /* GL_MIN */ - 965, /* GL_MAX */ - 94, /* GL_BLEND_EQUATION */ - 648, /* GL_FUNC_SUBTRACT */ - 645, /* GL_FUNC_REVERSE_SUBTRACT */ - 304, /* GL_CONVOLUTION_1D */ - 305, /* GL_CONVOLUTION_2D */ - 1625, /* GL_SEPARABLE_2D */ - 308, /* GL_CONVOLUTION_BORDER_MODE */ - 312, /* GL_CONVOLUTION_FILTER_SCALE */ - 310, /* GL_CONVOLUTION_FILTER_BIAS */ - 1466, /* GL_REDUCE */ - 314, /* GL_CONVOLUTION_FORMAT */ - 318, /* GL_CONVOLUTION_WIDTH */ - 316, /* GL_CONVOLUTION_HEIGHT */ - 982, /* GL_MAX_CONVOLUTION_WIDTH */ - 980, /* GL_MAX_CONVOLUTION_HEIGHT */ - 1362, /* GL_POST_CONVOLUTION_RED_SCALE */ - 1358, /* GL_POST_CONVOLUTION_GREEN_SCALE */ - 1353, /* GL_POST_CONVOLUTION_BLUE_SCALE */ - 1349, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ - 1360, /* GL_POST_CONVOLUTION_RED_BIAS */ - 1356, /* GL_POST_CONVOLUTION_GREEN_BIAS */ - 1351, /* GL_POST_CONVOLUTION_BLUE_BIAS */ - 1347, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ - 671, /* GL_HISTOGRAM */ - 1418, /* GL_PROXY_HISTOGRAM */ - 687, /* GL_HISTOGRAM_WIDTH */ - 677, /* GL_HISTOGRAM_FORMAT */ - 683, /* GL_HISTOGRAM_RED_SIZE */ - 679, /* GL_HISTOGRAM_GREEN_SIZE */ - 674, /* GL_HISTOGRAM_BLUE_SIZE */ - 672, /* GL_HISTOGRAM_ALPHA_SIZE */ - 681, /* GL_HISTOGRAM_LUMINANCE_SIZE */ - 685, /* GL_HISTOGRAM_SINK */ - 1081, /* GL_MINMAX */ - 1083, /* GL_MINMAX_FORMAT */ - 1085, /* GL_MINMAX_SINK */ - 1768, /* GL_TABLE_TOO_LARGE_EXT */ - 2019, /* GL_UNSIGNED_BYTE_3_3_2 */ - 2046, /* GL_UNSIGNED_SHORT_4_4_4_4 */ - 2049, /* GL_UNSIGNED_SHORT_5_5_5_1 */ - 2029, /* GL_UNSIGNED_INT_8_8_8_8 */ - 2021, /* GL_UNSIGNED_INT_10_10_10_2 */ - 1320, /* GL_POLYGON_OFFSET_FILL */ - 1319, /* GL_POLYGON_OFFSET_FACTOR */ - 1318, /* GL_POLYGON_OFFSET_BIAS */ - 1513, /* GL_RESCALE_NORMAL */ + 1599, /* GL_RGB */ + 1639, /* GL_RGBA */ + 856, /* GL_LUMINANCE */ + 883, /* GL_LUMINANCE_ALPHA */ + 86, /* GL_BITMAP */ + 1342, /* GL_POINT */ + 820, /* GL_LINE */ + 541, /* GL_FILL */ + 1557, /* GL_RENDER */ + 537, /* GL_FEEDBACK */ + 1736, /* GL_SELECT */ + 547, /* GL_FLAT */ + 1765, /* GL_SMOOTH */ + 799, /* GL_KEEP */ + 1590, /* GL_REPLACE */ + 727, /* GL_INCR */ + 391, /* GL_DECR */ + 2210, /* GL_VENDOR */ + 1587, /* GL_RENDERER */ + 2211, /* GL_VERSION */ + 530, /* GL_EXTENSIONS */ + 1686, /* GL_S */ + 1876, /* GL_T */ + 1526, /* GL_R */ + 1505, /* GL_Q */ + 1196, /* GL_MODULATE */ + 390, /* GL_DECAL */ + 2042, /* GL_TEXTURE_ENV_MODE */ + 2041, /* GL_TEXTURE_ENV_COLOR */ + 2040, /* GL_TEXTURE_ENV */ + 531, /* GL_EYE_LINEAR */ + 1248, /* GL_OBJECT_LINEAR */ + 1791, /* GL_SPHERE_MAP */ + 2045, /* GL_TEXTURE_GEN_MODE */ + 1250, /* GL_OBJECT_PLANE */ + 532, /* GL_EYE_PLANE */ + 1211, /* GL_NEAREST */ + 821, /* GL_LINEAR */ + 1215, /* GL_NEAREST_MIPMAP_NEAREST */ + 826, /* GL_LINEAR_MIPMAP_NEAREST */ + 1214, /* GL_NEAREST_MIPMAP_LINEAR */ + 825, /* GL_LINEAR_MIPMAP_LINEAR */ + 2068, /* GL_TEXTURE_MAG_FILTER */ + 2077, /* GL_TEXTURE_MIN_FILTER */ + 2098, /* GL_TEXTURE_WRAP_S */ + 2099, /* GL_TEXTURE_WRAP_T */ + 155, /* GL_CLAMP */ + 1589, /* GL_REPEAT */ + 1386, /* GL_POLYGON_OFFSET_UNITS */ + 1385, /* GL_POLYGON_OFFSET_POINT */ + 1384, /* GL_POLYGON_OFFSET_LINE */ + 1529, /* GL_R3_G3_B2 */ + 2207, /* GL_V2F */ + 2208, /* GL_V3F */ + 152, /* GL_C4UB_V2F */ + 153, /* GL_C4UB_V3F */ + 150, /* GL_C3F_V3F */ + 1208, /* GL_N3F_V3F */ + 151, /* GL_C4F_N3F_V3F */ + 1881, /* GL_T2F_V3F */ + 1883, /* GL_T4F_V4F */ + 1879, /* GL_T2F_C4UB_V3F */ + 1877, /* GL_T2F_C3F_V3F */ + 1880, /* GL_T2F_N3F_V3F */ + 1878, /* GL_T2F_C4F_N3F_V3F */ + 1882, /* GL_T4F_C4F_N3F_V4F */ + 169, /* GL_CLIP_DISTANCE0 */ + 170, /* GL_CLIP_DISTANCE1 */ + 171, /* GL_CLIP_DISTANCE2 */ + 172, /* GL_CLIP_DISTANCE3 */ + 173, /* GL_CLIP_DISTANCE4 */ + 174, /* GL_CLIP_DISTANCE5 */ + 175, /* GL_CLIP_DISTANCE6 */ + 176, /* GL_CLIP_DISTANCE7 */ + 805, /* GL_LIGHT0 */ + 806, /* GL_LIGHT1 */ + 807, /* GL_LIGHT2 */ + 808, /* GL_LIGHT3 */ + 809, /* GL_LIGHT4 */ + 810, /* GL_LIGHT5 */ + 811, /* GL_LIGHT6 */ + 812, /* GL_LIGHT7 */ + 702, /* GL_HINT_BIT */ + 319, /* GL_CONSTANT_COLOR */ + 1261, /* GL_ONE_MINUS_CONSTANT_COLOR */ + 314, /* GL_CONSTANT_ALPHA */ + 1259, /* GL_ONE_MINUS_CONSTANT_ALPHA */ + 89, /* GL_BLEND_COLOR */ + 669, /* GL_FUNC_ADD */ + 1140, /* GL_MIN */ + 1009, /* GL_MAX */ + 96, /* GL_BLEND_EQUATION */ + 675, /* GL_FUNC_SUBTRACT */ + 672, /* GL_FUNC_REVERSE_SUBTRACT */ + 327, /* GL_CONVOLUTION_1D */ + 328, /* GL_CONVOLUTION_2D */ + 1739, /* GL_SEPARABLE_2D */ + 331, /* GL_CONVOLUTION_BORDER_MODE */ + 335, /* GL_CONVOLUTION_FILTER_SCALE */ + 333, /* GL_CONVOLUTION_FILTER_BIAS */ + 1544, /* GL_REDUCE */ + 337, /* GL_CONVOLUTION_FORMAT */ + 341, /* GL_CONVOLUTION_WIDTH */ + 339, /* GL_CONVOLUTION_HEIGHT */ + 1028, /* GL_MAX_CONVOLUTION_WIDTH */ + 1026, /* GL_MAX_CONVOLUTION_HEIGHT */ + 1425, /* GL_POST_CONVOLUTION_RED_SCALE */ + 1421, /* GL_POST_CONVOLUTION_GREEN_SCALE */ + 1416, /* GL_POST_CONVOLUTION_BLUE_SCALE */ + 1412, /* GL_POST_CONVOLUTION_ALPHA_SCALE */ + 1423, /* GL_POST_CONVOLUTION_RED_BIAS */ + 1419, /* GL_POST_CONVOLUTION_GREEN_BIAS */ + 1414, /* GL_POST_CONVOLUTION_BLUE_BIAS */ + 1410, /* GL_POST_CONVOLUTION_ALPHA_BIAS */ + 703, /* GL_HISTOGRAM */ + 1485, /* GL_PROXY_HISTOGRAM */ + 719, /* GL_HISTOGRAM_WIDTH */ + 709, /* GL_HISTOGRAM_FORMAT */ + 715, /* GL_HISTOGRAM_RED_SIZE */ + 711, /* GL_HISTOGRAM_GREEN_SIZE */ + 706, /* GL_HISTOGRAM_BLUE_SIZE */ + 704, /* GL_HISTOGRAM_ALPHA_SIZE */ + 713, /* GL_HISTOGRAM_LUMINANCE_SIZE */ + 717, /* GL_HISTOGRAM_SINK */ + 1141, /* GL_MINMAX */ + 1143, /* GL_MINMAX_FORMAT */ + 1145, /* GL_MINMAX_SINK */ + 1884, /* GL_TABLE_TOO_LARGE_EXT */ + 2156, /* GL_UNSIGNED_BYTE_3_3_2 */ + 2196, /* GL_UNSIGNED_SHORT_4_4_4_4 */ + 2199, /* GL_UNSIGNED_SHORT_5_5_5_1 */ + 2168, /* GL_UNSIGNED_INT_8_8_8_8 */ + 2159, /* GL_UNSIGNED_INT_10_10_10_2 */ + 1383, /* GL_POLYGON_OFFSET_FILL */ + 1382, /* GL_POLYGON_OFFSET_FACTOR */ + 1381, /* GL_POLYGON_OFFSET_BIAS */ + 1593, /* GL_RESCALE_NORMAL */ 41, /* GL_ALPHA4 */ 43, /* GL_ALPHA8 */ 33, /* GL_ALPHA12 */ 35, /* GL_ALPHA16 */ - 828, /* GL_LUMINANCE4 */ - 834, /* GL_LUMINANCE8 */ - 814, /* GL_LUMINANCE12 */ - 820, /* GL_LUMINANCE16 */ - 829, /* GL_LUMINANCE4_ALPHA4 */ - 832, /* GL_LUMINANCE6_ALPHA2 */ - 837, /* GL_LUMINANCE8_ALPHA8 */ - 817, /* GL_LUMINANCE12_ALPHA4 */ - 815, /* GL_LUMINANCE12_ALPHA12 */ - 823, /* GL_LUMINANCE16_ALPHA16 */ - 714, /* GL_INTENSITY */ - 723, /* GL_INTENSITY4 */ - 725, /* GL_INTENSITY8 */ - 715, /* GL_INTENSITY12 */ - 717, /* GL_INTENSITY16 */ - 1528, /* GL_RGB2_EXT */ - 1531, /* GL_RGB4 */ - 1534, /* GL_RGB5 */ - 1541, /* GL_RGB8 */ - 1518, /* GL_RGB10 */ - 1522, /* GL_RGB12 */ - 1524, /* GL_RGB16 */ - 1553, /* GL_RGBA2 */ - 1557, /* GL_RGBA4 */ - 1537, /* GL_RGB5_A1 */ - 1562, /* GL_RGBA8 */ - 1519, /* GL_RGB10_A2 */ - 1547, /* GL_RGBA12 */ - 1549, /* GL_RGBA16 */ - 1959, /* GL_TEXTURE_RED_SIZE */ - 1928, /* GL_TEXTURE_GREEN_SIZE */ - 1855, /* GL_TEXTURE_BLUE_SIZE */ - 1840, /* GL_TEXTURE_ALPHA_SIZE */ - 1941, /* GL_TEXTURE_LUMINANCE_SIZE */ - 1932, /* GL_TEXTURE_INTENSITY_SIZE */ - 1511, /* GL_REPLACE_EXT */ - 1422, /* GL_PROXY_TEXTURE_1D */ - 1425, /* GL_PROXY_TEXTURE_2D */ - 1966, /* GL_TEXTURE_TOO_LARGE_EXT */ - 1954, /* GL_TEXTURE_PRIORITY */ - 1961, /* GL_TEXTURE_RESIDENT */ - 1843, /* GL_TEXTURE_BINDING_1D */ - 1845, /* GL_TEXTURE_BINDING_2D */ - 1847, /* GL_TEXTURE_BINDING_3D */ - 1234, /* GL_PACK_SKIP_IMAGES */ - 1230, /* GL_PACK_IMAGE_HEIGHT */ - 2012, /* GL_UNPACK_SKIP_IMAGES */ - 2009, /* GL_UNPACK_IMAGE_HEIGHT */ - 1838, /* GL_TEXTURE_3D */ - 1428, /* GL_PROXY_TEXTURE_3D */ - 1912, /* GL_TEXTURE_DEPTH */ - 1969, /* GL_TEXTURE_WRAP_R */ - 966, /* GL_MAX_3D_TEXTURE_SIZE */ - 2062, /* GL_VERTEX_ARRAY */ - 1161, /* GL_NORMAL_ARRAY */ - 171, /* GL_COLOR_ARRAY */ - 699, /* GL_INDEX_ARRAY */ - 1882, /* GL_TEXTURE_COORD_ARRAY */ - 491, /* GL_EDGE_FLAG_ARRAY */ - 2068, /* GL_VERTEX_ARRAY_SIZE */ - 2070, /* GL_VERTEX_ARRAY_TYPE */ - 2069, /* GL_VERTEX_ARRAY_STRIDE */ - 1166, /* GL_NORMAL_ARRAY_TYPE */ - 1165, /* GL_NORMAL_ARRAY_STRIDE */ - 175, /* GL_COLOR_ARRAY_SIZE */ - 177, /* GL_COLOR_ARRAY_TYPE */ - 176, /* GL_COLOR_ARRAY_STRIDE */ - 704, /* GL_INDEX_ARRAY_TYPE */ - 703, /* GL_INDEX_ARRAY_STRIDE */ - 1886, /* GL_TEXTURE_COORD_ARRAY_SIZE */ - 1888, /* GL_TEXTURE_COORD_ARRAY_TYPE */ - 1887, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ - 495, /* GL_EDGE_FLAG_ARRAY_STRIDE */ - 2067, /* GL_VERTEX_ARRAY_POINTER */ - 1164, /* GL_NORMAL_ARRAY_POINTER */ - 174, /* GL_COLOR_ARRAY_POINTER */ - 702, /* GL_INDEX_ARRAY_POINTER */ - 1885, /* GL_TEXTURE_COORD_ARRAY_POINTER */ - 494, /* GL_EDGE_FLAG_ARRAY_POINTER */ - 1139, /* GL_MULTISAMPLE */ - 1599, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ - 1601, /* GL_SAMPLE_ALPHA_TO_ONE */ - 1606, /* GL_SAMPLE_COVERAGE */ - 1603, /* GL_SAMPLE_BUFFERS */ - 1594, /* GL_SAMPLES */ - 1610, /* GL_SAMPLE_COVERAGE_VALUE */ - 1608, /* GL_SAMPLE_COVERAGE_INVERT */ - 219, /* GL_COLOR_MATRIX */ - 221, /* GL_COLOR_MATRIX_STACK_DEPTH */ - 976, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ - 1345, /* GL_POST_COLOR_MATRIX_RED_SCALE */ - 1341, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ - 1336, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ - 1332, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ - 1343, /* GL_POST_COLOR_MATRIX_RED_BIAS */ - 1339, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ - 1334, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ - 1330, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ - 1865, /* GL_TEXTURE_COLOR_TABLE_SGI */ - 1429, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ - 1867, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ - 92, /* GL_BLEND_DST_RGB */ - 106, /* GL_BLEND_SRC_RGB */ - 90, /* GL_BLEND_DST_ALPHA */ - 104, /* GL_BLEND_SRC_ALPHA */ - 225, /* GL_COLOR_TABLE */ - 1355, /* GL_POST_CONVOLUTION_COLOR_TABLE */ - 1338, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ - 1417, /* GL_PROXY_COLOR_TABLE */ - 1421, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ - 1420, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ - 249, /* GL_COLOR_TABLE_SCALE */ - 229, /* GL_COLOR_TABLE_BIAS */ - 234, /* GL_COLOR_TABLE_FORMAT */ - 251, /* GL_COLOR_TABLE_WIDTH */ - 246, /* GL_COLOR_TABLE_RED_SIZE */ - 237, /* GL_COLOR_TABLE_GREEN_SIZE */ - 231, /* GL_COLOR_TABLE_BLUE_SIZE */ - 226, /* GL_COLOR_TABLE_ALPHA_SIZE */ - 243, /* GL_COLOR_TABLE_LUMINANCE_SIZE */ - 240, /* GL_COLOR_TABLE_INTENSITY_SIZE */ + 871, /* GL_LUMINANCE4 */ + 877, /* GL_LUMINANCE8 */ + 857, /* GL_LUMINANCE12 */ + 863, /* GL_LUMINANCE16 */ + 872, /* GL_LUMINANCE4_ALPHA4 */ + 875, /* GL_LUMINANCE6_ALPHA2 */ + 880, /* GL_LUMINANCE8_ALPHA8 */ + 860, /* GL_LUMINANCE12_ALPHA4 */ + 858, /* GL_LUMINANCE12_ALPHA12 */ + 866, /* GL_LUMINANCE16_ALPHA16 */ + 746, /* GL_INTENSITY */ + 755, /* GL_INTENSITY4 */ + 757, /* GL_INTENSITY8 */ + 747, /* GL_INTENSITY12 */ + 749, /* GL_INTENSITY16 */ + 1614, /* GL_RGB2_EXT */ + 1620, /* GL_RGB4 */ + 1623, /* GL_RGB5 */ + 1630, /* GL_RGB8 */ + 1600, /* GL_RGB10 */ + 1604, /* GL_RGB12 */ + 1606, /* GL_RGB16 */ + 1650, /* GL_RGBA2 */ + 1657, /* GL_RGBA4 */ + 1626, /* GL_RGB5_A1 */ + 1662, /* GL_RGBA8 */ + 1601, /* GL_RGB10_A2 */ + 1640, /* GL_RGBA12 */ + 1642, /* GL_RGBA16 */ + 2085, /* GL_TEXTURE_RED_SIZE */ + 2053, /* GL_TEXTURE_GREEN_SIZE */ + 1977, /* GL_TEXTURE_BLUE_SIZE */ + 1958, /* GL_TEXTURE_ALPHA_SIZE */ + 2066, /* GL_TEXTURE_LUMINANCE_SIZE */ + 2057, /* GL_TEXTURE_INTENSITY_SIZE */ + 1591, /* GL_REPLACE_EXT */ + 1489, /* GL_PROXY_TEXTURE_1D */ + 1493, /* GL_PROXY_TEXTURE_2D */ + 2093, /* GL_TEXTURE_TOO_LARGE_EXT */ + 2079, /* GL_TEXTURE_PRIORITY */ + 2087, /* GL_TEXTURE_RESIDENT */ + 1961, /* GL_TEXTURE_BINDING_1D */ + 1964, /* GL_TEXTURE_BINDING_2D */ + 1967, /* GL_TEXTURE_BINDING_3D */ + 1297, /* GL_PACK_SKIP_IMAGES */ + 1293, /* GL_PACK_IMAGE_HEIGHT */ + 2149, /* GL_UNPACK_SKIP_IMAGES */ + 2146, /* GL_UNPACK_IMAGE_HEIGHT */ + 1956, /* GL_TEXTURE_3D */ + 1497, /* GL_PROXY_TEXTURE_3D */ + 2037, /* GL_TEXTURE_DEPTH */ + 2096, /* GL_TEXTURE_WRAP_R */ + 1010, /* GL_MAX_3D_TEXTURE_SIZE */ + 2212, /* GL_VERTEX_ARRAY */ + 1223, /* GL_NORMAL_ARRAY */ + 186, /* GL_COLOR_ARRAY */ + 731, /* GL_INDEX_ARRAY */ + 2007, /* GL_TEXTURE_COORD_ARRAY */ + 515, /* GL_EDGE_FLAG_ARRAY */ + 2218, /* GL_VERTEX_ARRAY_SIZE */ + 2220, /* GL_VERTEX_ARRAY_TYPE */ + 2219, /* GL_VERTEX_ARRAY_STRIDE */ + 1228, /* GL_NORMAL_ARRAY_TYPE */ + 1227, /* GL_NORMAL_ARRAY_STRIDE */ + 190, /* GL_COLOR_ARRAY_SIZE */ + 192, /* GL_COLOR_ARRAY_TYPE */ + 191, /* GL_COLOR_ARRAY_STRIDE */ + 736, /* GL_INDEX_ARRAY_TYPE */ + 735, /* GL_INDEX_ARRAY_STRIDE */ + 2011, /* GL_TEXTURE_COORD_ARRAY_SIZE */ + 2013, /* GL_TEXTURE_COORD_ARRAY_TYPE */ + 2012, /* GL_TEXTURE_COORD_ARRAY_STRIDE */ + 519, /* GL_EDGE_FLAG_ARRAY_STRIDE */ + 2217, /* GL_VERTEX_ARRAY_POINTER */ + 1226, /* GL_NORMAL_ARRAY_POINTER */ + 189, /* GL_COLOR_ARRAY_POINTER */ + 734, /* GL_INDEX_ARRAY_POINTER */ + 2010, /* GL_TEXTURE_COORD_ARRAY_POINTER */ + 518, /* GL_EDGE_FLAG_ARRAY_POINTER */ + 1201, /* GL_MULTISAMPLE */ + 1713, /* GL_SAMPLE_ALPHA_TO_COVERAGE */ + 1715, /* GL_SAMPLE_ALPHA_TO_ONE */ + 1720, /* GL_SAMPLE_COVERAGE */ + 1717, /* GL_SAMPLE_BUFFERS */ + 1708, /* GL_SAMPLES */ + 1724, /* GL_SAMPLE_COVERAGE_VALUE */ + 1722, /* GL_SAMPLE_COVERAGE_INVERT */ + 234, /* GL_COLOR_MATRIX */ + 236, /* GL_COLOR_MATRIX_STACK_DEPTH */ + 1022, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */ + 1408, /* GL_POST_COLOR_MATRIX_RED_SCALE */ + 1404, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */ + 1399, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */ + 1395, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */ + 1406, /* GL_POST_COLOR_MATRIX_RED_BIAS */ + 1402, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */ + 1397, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */ + 1393, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */ + 1990, /* GL_TEXTURE_COLOR_TABLE_SGI */ + 1498, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */ + 1992, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */ + 94, /* GL_BLEND_DST_RGB */ + 108, /* GL_BLEND_SRC_RGB */ + 92, /* GL_BLEND_DST_ALPHA */ + 106, /* GL_BLEND_SRC_ALPHA */ + 240, /* GL_COLOR_TABLE */ + 1418, /* GL_POST_CONVOLUTION_COLOR_TABLE */ + 1401, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */ + 1484, /* GL_PROXY_COLOR_TABLE */ + 1488, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */ + 1487, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */ + 264, /* GL_COLOR_TABLE_SCALE */ + 244, /* GL_COLOR_TABLE_BIAS */ + 249, /* GL_COLOR_TABLE_FORMAT */ + 266, /* GL_COLOR_TABLE_WIDTH */ + 261, /* GL_COLOR_TABLE_RED_SIZE */ + 252, /* GL_COLOR_TABLE_GREEN_SIZE */ + 246, /* GL_COLOR_TABLE_BLUE_SIZE */ + 241, /* GL_COLOR_TABLE_ALPHA_SIZE */ + 258, /* GL_COLOR_TABLE_LUMINANCE_SIZE */ + 255, /* GL_COLOR_TABLE_INTENSITY_SIZE */ 79, /* GL_BGR */ 80, /* GL_BGRA */ - 991, /* GL_MAX_ELEMENTS_VERTICES */ - 990, /* GL_MAX_ELEMENTS_INDICES */ - 1931, /* GL_TEXTURE_INDEX_SIZE_EXT */ - 168, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */ - 1301, /* GL_POINT_SIZE_MIN */ - 1297, /* GL_POINT_SIZE_MAX */ - 1286, /* GL_POINT_FADE_THRESHOLD_SIZE */ - 1282, /* GL_POINT_DISTANCE_ATTENUATION */ - 150, /* GL_CLAMP_TO_BORDER */ - 153, /* GL_CLAMP_TO_EDGE */ - 1953, /* GL_TEXTURE_MIN_LOD */ - 1951, /* GL_TEXTURE_MAX_LOD */ - 1842, /* GL_TEXTURE_BASE_LEVEL */ - 1950, /* GL_TEXTURE_MAX_LEVEL */ - 690, /* GL_IGNORE_BORDER_HP */ - 300, /* GL_CONSTANT_BORDER_HP */ - 1512, /* GL_REPLICATE_BORDER_HP */ - 306, /* GL_CONVOLUTION_BORDER_COLOR */ - 1193, /* GL_OCCLUSION_TEST_HP */ - 1194, /* GL_OCCLUSION_TEST_RESULT_HP */ - 782, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ - 1859, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ - 1861, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ - 1863, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ - 1864, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - 1862, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ - 1860, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ - 971, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ - 972, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ - 1365, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ - 1367, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ - 1364, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ - 1366, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ - 1939, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ - 1940, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ - 1938, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ - 651, /* GL_GENERATE_MIPMAP */ - 652, /* GL_GENERATE_MIPMAP_HINT */ - 566, /* GL_FOG_OFFSET_SGIX */ - 567, /* GL_FOG_OFFSET_VALUE_SGIX */ - 1873, /* GL_TEXTURE_COMPARE_SGIX */ - 1872, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ - 1935, /* GL_TEXTURE_LEQUAL_R_SGIX */ - 1927, /* GL_TEXTURE_GEQUAL_R_SGIX */ - 388, /* GL_DEPTH_COMPONENT16 */ - 392, /* GL_DEPTH_COMPONENT24 */ - 396, /* GL_DEPTH_COMPONENT32 */ - 331, /* GL_CULL_VERTEX_EXT */ - 333, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ - 332, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ - 2133, /* GL_WRAP_BORDER_SUN */ - 1866, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ - 775, /* GL_LIGHT_MODEL_COLOR_CONTROL */ - 1643, /* GL_SINGLE_COLOR */ - 1627, /* GL_SEPARATE_SPECULAR_COLOR */ - 1638, /* GL_SHARED_TEXTURE_PALETTE_EXT */ - 578, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ - 579, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ - 589, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ - 581, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ - 577, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ - 576, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ - 580, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ - 590, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ - 607, /* GL_FRAMEBUFFER_DEFAULT */ - 633, /* GL_FRAMEBUFFER_UNDEFINED */ - 404, /* GL_DEPTH_STENCIL_ATTACHMENT */ - 698, /* GL_INDEX */ - 2018, /* GL_UNSIGNED_BYTE_2_3_3_REV */ - 2050, /* GL_UNSIGNED_SHORT_5_6_5 */ - 2051, /* GL_UNSIGNED_SHORT_5_6_5_REV */ - 2047, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ - 2044, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ - 2030, /* GL_UNSIGNED_INT_8_8_8_8_REV */ - 2027, /* GL_UNSIGNED_INT_2_10_10_10_REV */ - 1948, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ - 1949, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ - 1947, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ - 1089, /* GL_MIRRORED_REPEAT */ - 1575, /* GL_RGB_S3TC */ - 1533, /* GL_RGB4_S3TC */ - 1572, /* GL_RGBA_S3TC */ - 1561, /* GL_RGBA4_S3TC */ - 1568, /* GL_RGBA_DXT5_S3TC */ - 1558, /* GL_RGBA4_DXT5_S3TC */ - 288, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */ - 283, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */ - 284, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */ - 285, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */ - 1151, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ - 1150, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ - 783, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ - 553, /* GL_FOG_COORDINATE_SOURCE */ - 545, /* GL_FOG_COORD */ - 569, /* GL_FRAGMENT_DEPTH */ - 337, /* GL_CURRENT_FOG_COORD */ - 552, /* GL_FOG_COORDINATE_ARRAY_TYPE */ - 551, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ - 550, /* GL_FOG_COORDINATE_ARRAY_POINTER */ - 547, /* GL_FOG_COORDINATE_ARRAY */ - 223, /* GL_COLOR_SUM */ - 358, /* GL_CURRENT_SECONDARY_COLOR */ - 1619, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ - 1621, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ - 1620, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ - 1618, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ - 1615, /* GL_SECONDARY_COLOR_ARRAY */ - 356, /* GL_CURRENT_RASTER_SECONDARY_COLOR */ + 1037, /* GL_MAX_ELEMENTS_VERTICES */ + 1036, /* GL_MAX_ELEMENTS_INDICES */ + 2056, /* GL_TEXTURE_INDEX_SIZE_EXT */ + 183, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */ + 1364, /* GL_POINT_SIZE_MIN */ + 1360, /* GL_POINT_SIZE_MAX */ + 1349, /* GL_POINT_FADE_THRESHOLD_SIZE */ + 1345, /* GL_POINT_DISTANCE_ATTENUATION */ + 157, /* GL_CLAMP_TO_BORDER */ + 160, /* GL_CLAMP_TO_EDGE */ + 2078, /* GL_TEXTURE_MIN_LOD */ + 2076, /* GL_TEXTURE_MAX_LOD */ + 1960, /* GL_TEXTURE_BASE_LEVEL */ + 2075, /* GL_TEXTURE_MAX_LEVEL */ + 722, /* GL_IGNORE_BORDER_HP */ + 318, /* GL_CONSTANT_BORDER_HP */ + 1592, /* GL_REPLICATE_BORDER_HP */ + 329, /* GL_CONVOLUTION_BORDER_COLOR */ + 1256, /* GL_OCCLUSION_TEST_HP */ + 1257, /* GL_OCCLUSION_TEST_RESULT_HP */ + 823, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */ + 1984, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */ + 1986, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */ + 1988, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */ + 1989, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + 1987, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */ + 1985, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */ + 1016, /* GL_MAX_CLIPMAP_DEPTH_SGIX */ + 1017, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */ + 1428, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */ + 1430, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */ + 1427, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */ + 1429, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */ + 2064, /* GL_TEXTURE_LOD_BIAS_S_SGIX */ + 2065, /* GL_TEXTURE_LOD_BIAS_T_SGIX */ + 2063, /* GL_TEXTURE_LOD_BIAS_R_SGIX */ + 678, /* GL_GENERATE_MIPMAP */ + 679, /* GL_GENERATE_MIPMAP_HINT */ + 591, /* GL_FOG_OFFSET_SGIX */ + 592, /* GL_FOG_OFFSET_VALUE_SGIX */ + 1998, /* GL_TEXTURE_COMPARE_SGIX */ + 1997, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */ + 2060, /* GL_TEXTURE_LEQUAL_R_SGIX */ + 2052, /* GL_TEXTURE_GEQUAL_R_SGIX */ + 412, /* GL_DEPTH_COMPONENT16 */ + 416, /* GL_DEPTH_COMPONENT24 */ + 420, /* GL_DEPTH_COMPONENT32 */ + 354, /* GL_CULL_VERTEX_EXT */ + 356, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */ + 355, /* GL_CULL_VERTEX_EYE_POSITION_EXT */ + 2284, /* GL_WRAP_BORDER_SUN */ + 1991, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */ + 816, /* GL_LIGHT_MODEL_COLOR_CONTROL */ + 1758, /* GL_SINGLE_COLOR */ + 1742, /* GL_SEPARATE_SPECULAR_COLOR */ + 1753, /* GL_SHARED_TEXTURE_PALETTE_EXT */ + 603, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */ + 604, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */ + 615, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */ + 606, /* GL_FRAMEBUFFER_ATTACHMENT_GREEN_SIZE */ + 602, /* GL_FRAMEBUFFER_ATTACHMENT_BLUE_SIZE */ + 601, /* GL_FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE */ + 605, /* GL_FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE */ + 616, /* GL_FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE */ + 633, /* GL_FRAMEBUFFER_DEFAULT */ + 660, /* GL_FRAMEBUFFER_UNDEFINED */ + 428, /* GL_DEPTH_STENCIL_ATTACHMENT */ + 892, /* GL_MAJOR_VERSION */ + 1147, /* GL_MINOR_VERSION */ + 1237, /* GL_NUM_EXTENSIONS */ + 324, /* GL_CONTEXT_FLAGS */ + 730, /* GL_INDEX */ + 406, /* GL_DEPTH_BUFFER */ + 1832, /* GL_STENCIL_BUFFER */ + 295, /* GL_COMPRESSED_RED */ + 296, /* GL_COMPRESSED_RG */ + 2155, /* GL_UNSIGNED_BYTE_2_3_3_REV */ + 2200, /* GL_UNSIGNED_SHORT_5_6_5 */ + 2201, /* GL_UNSIGNED_SHORT_5_6_5_REV */ + 2197, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */ + 2194, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */ + 2169, /* GL_UNSIGNED_INT_8_8_8_8_REV */ + 2165, /* GL_UNSIGNED_INT_2_10_10_10_REV */ + 2073, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */ + 2074, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */ + 2072, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */ + 1151, /* GL_MIRRORED_REPEAT */ + 1679, /* GL_RGB_S3TC */ + 1622, /* GL_RGB4_S3TC */ + 1675, /* GL_RGBA_S3TC */ + 1661, /* GL_RGBA4_S3TC */ + 1670, /* GL_RGBA_DXT5_S3TC */ + 1658, /* GL_RGBA4_DXT5_S3TC */ + 306, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */ + 301, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */ + 302, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */ + 303, /* GL_COMPRESSED_RGBA_S3TC_DXT5_EXT */ + 1213, /* GL_NEAREST_CLIPMAP_NEAREST_SGIX */ + 1212, /* GL_NEAREST_CLIPMAP_LINEAR_SGIX */ + 824, /* GL_LINEAR_CLIPMAP_NEAREST_SGIX */ + 578, /* GL_FOG_COORDINATE_SOURCE */ + 570, /* GL_FOG_COORD */ + 594, /* GL_FRAGMENT_DEPTH */ + 360, /* GL_CURRENT_FOG_COORD */ + 577, /* GL_FOG_COORDINATE_ARRAY_TYPE */ + 576, /* GL_FOG_COORDINATE_ARRAY_STRIDE */ + 575, /* GL_FOG_COORDINATE_ARRAY_POINTER */ + 572, /* GL_FOG_COORDINATE_ARRAY */ + 238, /* GL_COLOR_SUM */ + 381, /* GL_CURRENT_SECONDARY_COLOR */ + 1733, /* GL_SECONDARY_COLOR_ARRAY_SIZE */ + 1735, /* GL_SECONDARY_COLOR_ARRAY_TYPE */ + 1734, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */ + 1732, /* GL_SECONDARY_COLOR_ARRAY_POINTER */ + 1729, /* GL_SECONDARY_COLOR_ARRAY */ + 379, /* GL_CURRENT_RASTER_SECONDARY_COLOR */ 29, /* GL_ALIASED_POINT_SIZE_RANGE */ 28, /* GL_ALIASED_LINE_WIDTH_RANGE */ - 1770, /* GL_TEXTURE0 */ - 1772, /* GL_TEXTURE1 */ - 1794, /* GL_TEXTURE2 */ - 1816, /* GL_TEXTURE3 */ - 1822, /* GL_TEXTURE4 */ - 1824, /* GL_TEXTURE5 */ - 1826, /* GL_TEXTURE6 */ - 1828, /* GL_TEXTURE7 */ - 1830, /* GL_TEXTURE8 */ - 1832, /* GL_TEXTURE9 */ - 1773, /* GL_TEXTURE10 */ - 1775, /* GL_TEXTURE11 */ - 1777, /* GL_TEXTURE12 */ - 1779, /* GL_TEXTURE13 */ - 1781, /* GL_TEXTURE14 */ - 1783, /* GL_TEXTURE15 */ - 1785, /* GL_TEXTURE16 */ - 1787, /* GL_TEXTURE17 */ - 1789, /* GL_TEXTURE18 */ - 1791, /* GL_TEXTURE19 */ - 1795, /* GL_TEXTURE20 */ - 1797, /* GL_TEXTURE21 */ - 1799, /* GL_TEXTURE22 */ - 1801, /* GL_TEXTURE23 */ - 1803, /* GL_TEXTURE24 */ - 1805, /* GL_TEXTURE25 */ - 1807, /* GL_TEXTURE26 */ - 1809, /* GL_TEXTURE27 */ - 1811, /* GL_TEXTURE28 */ - 1813, /* GL_TEXTURE29 */ - 1817, /* GL_TEXTURE30 */ - 1819, /* GL_TEXTURE31 */ + 1886, /* GL_TEXTURE0 */ + 1888, /* GL_TEXTURE1 */ + 1910, /* GL_TEXTURE2 */ + 1932, /* GL_TEXTURE3 */ + 1938, /* GL_TEXTURE4 */ + 1940, /* GL_TEXTURE5 */ + 1942, /* GL_TEXTURE6 */ + 1944, /* GL_TEXTURE7 */ + 1946, /* GL_TEXTURE8 */ + 1948, /* GL_TEXTURE9 */ + 1889, /* GL_TEXTURE10 */ + 1891, /* GL_TEXTURE11 */ + 1893, /* GL_TEXTURE12 */ + 1895, /* GL_TEXTURE13 */ + 1897, /* GL_TEXTURE14 */ + 1899, /* GL_TEXTURE15 */ + 1901, /* GL_TEXTURE16 */ + 1903, /* GL_TEXTURE17 */ + 1905, /* GL_TEXTURE18 */ + 1907, /* GL_TEXTURE19 */ + 1911, /* GL_TEXTURE20 */ + 1913, /* GL_TEXTURE21 */ + 1915, /* GL_TEXTURE22 */ + 1917, /* GL_TEXTURE23 */ + 1919, /* GL_TEXTURE24 */ + 1921, /* GL_TEXTURE25 */ + 1923, /* GL_TEXTURE26 */ + 1925, /* GL_TEXTURE27 */ + 1927, /* GL_TEXTURE28 */ + 1929, /* GL_TEXTURE29 */ + 1933, /* GL_TEXTURE30 */ + 1935, /* GL_TEXTURE31 */ 19, /* GL_ACTIVE_TEXTURE */ - 156, /* GL_CLIENT_ACTIVE_TEXTURE */ - 1056, /* GL_MAX_TEXTURE_UNITS */ - 1993, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ - 1996, /* GL_TRANSPOSE_PROJECTION_MATRIX */ - 1998, /* GL_TRANSPOSE_TEXTURE_MATRIX */ - 1990, /* GL_TRANSPOSE_COLOR_MATRIX */ - 1752, /* GL_SUBTRACT */ - 1039, /* GL_MAX_RENDERBUFFER_SIZE */ - 271, /* GL_COMPRESSED_ALPHA */ - 275, /* GL_COMPRESSED_LUMINANCE */ - 276, /* GL_COMPRESSED_LUMINANCE_ALPHA */ - 273, /* GL_COMPRESSED_INTENSITY */ - 279, /* GL_COMPRESSED_RGB */ - 280, /* GL_COMPRESSED_RGBA */ - 1880, /* GL_TEXTURE_COMPRESSION_HINT */ - 1957, /* GL_TEXTURE_RECTANGLE_ARB */ - 1852, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */ - 1432, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */ - 1037, /* GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB */ - 403, /* GL_DEPTH_STENCIL */ - 2023, /* GL_UNSIGNED_INT_24_8 */ - 1051, /* GL_MAX_TEXTURE_LOD_BIAS */ - 1946, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ - 1053, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ - 1918, /* GL_TEXTURE_FILTER_CONTROL */ - 1936, /* GL_TEXTURE_LOD_BIAS */ - 256, /* GL_COMBINE4 */ - 1045, /* GL_MAX_SHININESS_NV */ - 1046, /* GL_MAX_SPOT_EXPONENT_NV */ - 696, /* GL_INCR_WRAP */ - 369, /* GL_DECR_WRAP */ - 1109, /* GL_MODELVIEW1_ARB */ - 1167, /* GL_NORMAL_MAP */ - 1472, /* GL_REFLECTION_MAP */ - 1890, /* GL_TEXTURE_CUBE_MAP */ - 1849, /* GL_TEXTURE_BINDING_CUBE_MAP */ - 1902, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ - 1892, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ - 1905, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ - 1895, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ - 1908, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ - 1898, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ - 1430, /* GL_PROXY_TEXTURE_CUBE_MAP */ - 984, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ - 1145, /* GL_MULTISAMPLE_FILTER_HINT_NV */ - 1376, /* GL_PRIMITIVE_RESTART_NV */ - 1375, /* GL_PRIMITIVE_RESTART_INDEX_NV */ - 561, /* GL_FOG_DISTANCE_MODE_NV */ - 510, /* GL_EYE_RADIAL_NV */ - 509, /* GL_EYE_PLANE_ABSOLUTE_NV */ - 255, /* GL_COMBINE */ - 262, /* GL_COMBINE_RGB */ - 257, /* GL_COMBINE_ALPHA */ - 1576, /* GL_RGB_SCALE */ + 163, /* GL_CLIENT_ACTIVE_TEXTURE */ + 1112, /* GL_MAX_TEXTURE_UNITS */ + 2128, /* GL_TRANSPOSE_MODELVIEW_MATRIX */ + 2131, /* GL_TRANSPOSE_PROJECTION_MATRIX */ + 2133, /* GL_TRANSPOSE_TEXTURE_MATRIX */ + 2125, /* GL_TRANSPOSE_COLOR_MATRIX */ + 1868, /* GL_SUBTRACT */ + 1094, /* GL_MAX_RENDERBUFFER_SIZE */ + 287, /* GL_COMPRESSED_ALPHA */ + 291, /* GL_COMPRESSED_LUMINANCE */ + 292, /* GL_COMPRESSED_LUMINANCE_ALPHA */ + 289, /* GL_COMPRESSED_INTENSITY */ + 297, /* GL_COMPRESSED_RGB */ + 298, /* GL_COMPRESSED_RGBA */ + 2005, /* GL_TEXTURE_COMPRESSION_HINT */ + 2082, /* GL_TEXTURE_RECTANGLE */ + 1973, /* GL_TEXTURE_BINDING_RECTANGLE */ + 1501, /* GL_PROXY_TEXTURE_RECTANGLE */ + 1091, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */ + 427, /* GL_DEPTH_STENCIL */ + 2161, /* GL_UNSIGNED_INT_24_8 */ + 1107, /* GL_MAX_TEXTURE_LOD_BIAS */ + 2071, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */ + 1109, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */ + 2043, /* GL_TEXTURE_FILTER_CONTROL */ + 2061, /* GL_TEXTURE_LOD_BIAS */ + 271, /* GL_COMBINE4 */ + 1100, /* GL_MAX_SHININESS_NV */ + 1101, /* GL_MAX_SPOT_EXPONENT_NV */ + 728, /* GL_INCR_WRAP */ + 392, /* GL_DECR_WRAP */ + 1171, /* GL_MODELVIEW1_ARB */ + 1229, /* GL_NORMAL_MAP */ + 1552, /* GL_REFLECTION_MAP */ + 2015, /* GL_TEXTURE_CUBE_MAP */ + 1970, /* GL_TEXTURE_BINDING_CUBE_MAP */ + 2027, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */ + 2017, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */ + 2030, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */ + 2020, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */ + 2033, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */ + 2023, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */ + 1499, /* GL_PROXY_TEXTURE_CUBE_MAP */ + 1030, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */ + 1207, /* GL_MULTISAMPLE_FILTER_HINT_NV */ + 1442, /* GL_PRIMITIVE_RESTART_NV */ + 1441, /* GL_PRIMITIVE_RESTART_INDEX_NV */ + 586, /* GL_FOG_DISTANCE_MODE_NV */ + 534, /* GL_EYE_RADIAL_NV */ + 533, /* GL_EYE_PLANE_ABSOLUTE_NV */ + 270, /* GL_COMBINE */ + 277, /* GL_COMBINE_RGB */ + 272, /* GL_COMBINE_ALPHA */ + 1680, /* GL_RGB_SCALE */ 25, /* GL_ADD_SIGNED */ - 731, /* GL_INTERPOLATE */ - 295, /* GL_CONSTANT */ - 1371, /* GL_PRIMARY_COLOR */ - 1368, /* GL_PREVIOUS */ - 1658, /* GL_SOURCE0_RGB */ - 1664, /* GL_SOURCE1_RGB */ - 1670, /* GL_SOURCE2_RGB */ - 1674, /* GL_SOURCE3_RGB_NV */ - 1655, /* GL_SOURCE0_ALPHA */ - 1661, /* GL_SOURCE1_ALPHA */ - 1667, /* GL_SOURCE2_ALPHA */ - 1673, /* GL_SOURCE3_ALPHA_NV */ - 1207, /* GL_OPERAND0_RGB */ - 1213, /* GL_OPERAND1_RGB */ - 1219, /* GL_OPERAND2_RGB */ - 1223, /* GL_OPERAND3_RGB_NV */ - 1204, /* GL_OPERAND0_ALPHA */ - 1210, /* GL_OPERAND1_ALPHA */ - 1216, /* GL_OPERAND2_ALPHA */ - 1222, /* GL_OPERAND3_ALPHA_NV */ - 131, /* GL_BUFFER_OBJECT_APPLE */ - 2063, /* GL_VERTEX_ARRAY_BINDING */ - 1955, /* GL_TEXTURE_RANGE_LENGTH_APPLE */ - 1956, /* GL_TEXTURE_RANGE_POINTER_APPLE */ - 2138, /* GL_YCBCR_422_APPLE */ - 2052, /* GL_UNSIGNED_SHORT_8_8_APPLE */ - 2054, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ - 1965, /* GL_TEXTURE_STORAGE_HINT_APPLE */ - 1743, /* GL_STORAGE_PRIVATE_APPLE */ - 1742, /* GL_STORAGE_CACHED_APPLE */ - 1744, /* GL_STORAGE_SHARED_APPLE */ - 1645, /* GL_SLICE_ACCUM_SUN */ - 1440, /* GL_QUAD_MESH_SUN */ - 2003, /* GL_TRIANGLE_MESH_SUN */ - 2103, /* GL_VERTEX_PROGRAM_ARB */ - 2114, /* GL_VERTEX_STATE_PROGRAM_NV */ - 2089, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ - 2096, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ - 2098, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ - 2100, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ - 360, /* GL_CURRENT_VERTEX_ATTRIB */ - 1389, /* GL_PROGRAM_LENGTH_ARB */ - 1404, /* GL_PROGRAM_STRING_ARB */ - 1132, /* GL_MODELVIEW_PROJECTION_NV */ - 689, /* GL_IDENTITY_NV */ - 755, /* GL_INVERSE_NV */ - 1995, /* GL_TRANSPOSE_NV */ - 756, /* GL_INVERSE_TRANSPOSE_NV */ - 1022, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ - 1021, /* GL_MAX_PROGRAM_MATRICES_ARB */ - 912, /* GL_MATRIX0_NV */ - 924, /* GL_MATRIX1_NV */ - 936, /* GL_MATRIX2_NV */ - 940, /* GL_MATRIX3_NV */ - 942, /* GL_MATRIX4_NV */ - 944, /* GL_MATRIX5_NV */ - 946, /* GL_MATRIX6_NV */ - 948, /* GL_MATRIX7_NV */ - 343, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ - 340, /* GL_CURRENT_MATRIX_ARB */ - 2106, /* GL_VERTEX_PROGRAM_POINT_SIZE */ - 2109, /* GL_VERTEX_PROGRAM_TWO_SIDE */ - 1401, /* GL_PROGRAM_PARAMETER_NV */ - 2094, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ - 1406, /* GL_PROGRAM_TARGET_NV */ - 1403, /* GL_PROGRAM_RESIDENT_NV */ - 1975, /* GL_TRACK_MATRIX_NV */ - 1976, /* GL_TRACK_MATRIX_TRANSFORM_NV */ - 2104, /* GL_VERTEX_PROGRAM_BINDING_NV */ - 1383, /* GL_PROGRAM_ERROR_POSITION_ARB */ - 384, /* GL_DEPTH_CLAMP */ - 2071, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ - 2078, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ - 2079, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ - 2080, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ - 2081, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ - 2082, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ - 2083, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ - 2084, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ - 2085, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ - 2086, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ - 2072, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ - 2073, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ - 2074, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ - 2075, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ - 2076, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ - 2077, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ - 860, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ - 867, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ - 868, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ - 869, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ - 870, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ - 871, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ - 872, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ - 873, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ - 874, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ - 875, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ - 861, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ - 862, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ - 863, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ - 864, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ - 865, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ - 866, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ - 887, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ - 894, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ - 895, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ - 896, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ - 897, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ - 898, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ - 899, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ - 1382, /* GL_PROGRAM_BINDING_ARB */ - 901, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ - 902, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ - 888, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ - 889, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ - 890, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ - 891, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ - 892, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ - 893, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ - 1878, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ - 1875, /* GL_TEXTURE_COMPRESSED */ - 1173, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ - 293, /* GL_COMPRESSED_TEXTURE_FORMATS */ - 1074, /* GL_MAX_VERTEX_UNITS_ARB */ + 764, /* GL_INTERPOLATE */ + 313, /* GL_CONSTANT */ + 1434, /* GL_PRIMARY_COLOR */ + 1431, /* GL_PREVIOUS */ + 1773, /* GL_SOURCE0_RGB */ + 1779, /* GL_SOURCE1_RGB */ + 1785, /* GL_SOURCE2_RGB */ + 1789, /* GL_SOURCE3_RGB_NV */ + 1770, /* GL_SOURCE0_ALPHA */ + 1776, /* GL_SOURCE1_ALPHA */ + 1782, /* GL_SOURCE2_ALPHA */ + 1788, /* GL_SOURCE3_ALPHA_NV */ + 1270, /* GL_OPERAND0_RGB */ + 1276, /* GL_OPERAND1_RGB */ + 1282, /* GL_OPERAND2_RGB */ + 1286, /* GL_OPERAND3_RGB_NV */ + 1267, /* GL_OPERAND0_ALPHA */ + 1273, /* GL_OPERAND1_ALPHA */ + 1279, /* GL_OPERAND2_ALPHA */ + 1285, /* GL_OPERAND3_ALPHA_NV */ + 137, /* GL_BUFFER_OBJECT_APPLE */ + 2213, /* GL_VERTEX_ARRAY_BINDING */ + 2080, /* GL_TEXTURE_RANGE_LENGTH_APPLE */ + 2081, /* GL_TEXTURE_RANGE_POINTER_APPLE */ + 2289, /* GL_YCBCR_422_APPLE */ + 2202, /* GL_UNSIGNED_SHORT_8_8_APPLE */ + 2204, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */ + 2092, /* GL_TEXTURE_STORAGE_HINT_APPLE */ + 1859, /* GL_STORAGE_PRIVATE_APPLE */ + 1858, /* GL_STORAGE_CACHED_APPLE */ + 1860, /* GL_STORAGE_SHARED_APPLE */ + 1760, /* GL_SLICE_ACCUM_SUN */ + 1510, /* GL_QUAD_MESH_SUN */ + 2139, /* GL_TRIANGLE_MESH_SUN */ + 2254, /* GL_VERTEX_PROGRAM_ARB */ + 2265, /* GL_VERTEX_STATE_PROGRAM_NV */ + 2239, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */ + 2247, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */ + 2249, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */ + 2251, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */ + 383, /* GL_CURRENT_VERTEX_ATTRIB */ + 1455, /* GL_PROGRAM_LENGTH_ARB */ + 1471, /* GL_PROGRAM_STRING_ARB */ + 1194, /* GL_MODELVIEW_PROJECTION_NV */ + 721, /* GL_IDENTITY_NV */ + 796, /* GL_INVERSE_NV */ + 2130, /* GL_TRANSPOSE_NV */ + 797, /* GL_INVERSE_TRANSPOSE_NV */ + 1075, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */ + 1074, /* GL_MAX_PROGRAM_MATRICES_ARB */ + 956, /* GL_MATRIX0_NV */ + 968, /* GL_MATRIX1_NV */ + 980, /* GL_MATRIX2_NV */ + 984, /* GL_MATRIX3_NV */ + 986, /* GL_MATRIX4_NV */ + 988, /* GL_MATRIX5_NV */ + 990, /* GL_MATRIX6_NV */ + 992, /* GL_MATRIX7_NV */ + 366, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */ + 363, /* GL_CURRENT_MATRIX_ARB */ + 1468, /* GL_PROGRAM_POINT_SIZE */ + 2260, /* GL_VERTEX_PROGRAM_TWO_SIDE */ + 1467, /* GL_PROGRAM_PARAMETER_NV */ + 2245, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */ + 1473, /* GL_PROGRAM_TARGET_NV */ + 1470, /* GL_PROGRAM_RESIDENT_NV */ + 2102, /* GL_TRACK_MATRIX_NV */ + 2103, /* GL_TRACK_MATRIX_TRANSFORM_NV */ + 2255, /* GL_VERTEX_PROGRAM_BINDING_NV */ + 1449, /* GL_PROGRAM_ERROR_POSITION_ARB */ + 408, /* GL_DEPTH_CLAMP */ + 2221, /* GL_VERTEX_ATTRIB_ARRAY0_NV */ + 2228, /* GL_VERTEX_ATTRIB_ARRAY1_NV */ + 2229, /* GL_VERTEX_ATTRIB_ARRAY2_NV */ + 2230, /* GL_VERTEX_ATTRIB_ARRAY3_NV */ + 2231, /* GL_VERTEX_ATTRIB_ARRAY4_NV */ + 2232, /* GL_VERTEX_ATTRIB_ARRAY5_NV */ + 2233, /* GL_VERTEX_ATTRIB_ARRAY6_NV */ + 2234, /* GL_VERTEX_ATTRIB_ARRAY7_NV */ + 2235, /* GL_VERTEX_ATTRIB_ARRAY8_NV */ + 2236, /* GL_VERTEX_ATTRIB_ARRAY9_NV */ + 2222, /* GL_VERTEX_ATTRIB_ARRAY10_NV */ + 2223, /* GL_VERTEX_ATTRIB_ARRAY11_NV */ + 2224, /* GL_VERTEX_ATTRIB_ARRAY12_NV */ + 2225, /* GL_VERTEX_ATTRIB_ARRAY13_NV */ + 2226, /* GL_VERTEX_ATTRIB_ARRAY14_NV */ + 2227, /* GL_VERTEX_ATTRIB_ARRAY15_NV */ + 904, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */ + 911, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */ + 912, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */ + 913, /* GL_MAP1_VERTEX_ATTRIB3_4_NV */ + 914, /* GL_MAP1_VERTEX_ATTRIB4_4_NV */ + 915, /* GL_MAP1_VERTEX_ATTRIB5_4_NV */ + 916, /* GL_MAP1_VERTEX_ATTRIB6_4_NV */ + 917, /* GL_MAP1_VERTEX_ATTRIB7_4_NV */ + 918, /* GL_MAP1_VERTEX_ATTRIB8_4_NV */ + 919, /* GL_MAP1_VERTEX_ATTRIB9_4_NV */ + 905, /* GL_MAP1_VERTEX_ATTRIB10_4_NV */ + 906, /* GL_MAP1_VERTEX_ATTRIB11_4_NV */ + 907, /* GL_MAP1_VERTEX_ATTRIB12_4_NV */ + 908, /* GL_MAP1_VERTEX_ATTRIB13_4_NV */ + 909, /* GL_MAP1_VERTEX_ATTRIB14_4_NV */ + 910, /* GL_MAP1_VERTEX_ATTRIB15_4_NV */ + 931, /* GL_MAP2_VERTEX_ATTRIB0_4_NV */ + 938, /* GL_MAP2_VERTEX_ATTRIB1_4_NV */ + 939, /* GL_MAP2_VERTEX_ATTRIB2_4_NV */ + 940, /* GL_MAP2_VERTEX_ATTRIB3_4_NV */ + 941, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */ + 942, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */ + 943, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */ + 1448, /* GL_PROGRAM_BINDING_ARB */ + 945, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */ + 946, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */ + 932, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */ + 933, /* GL_MAP2_VERTEX_ATTRIB11_4_NV */ + 934, /* GL_MAP2_VERTEX_ATTRIB12_4_NV */ + 935, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */ + 936, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */ + 937, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */ + 2003, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */ + 2000, /* GL_TEXTURE_COMPRESSED */ + 1235, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */ + 311, /* GL_COMPRESSED_TEXTURE_FORMATS */ + 1134, /* GL_MAX_VERTEX_UNITS_ARB */ 23, /* GL_ACTIVE_VERTEX_UNITS_ARB */ - 2132, /* GL_WEIGHT_SUM_UNITY_ARB */ - 2102, /* GL_VERTEX_BLEND_ARB */ - 362, /* GL_CURRENT_WEIGHT_ARB */ - 2130, /* GL_WEIGHT_ARRAY_TYPE_ARB */ - 2128, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ - 2126, /* GL_WEIGHT_ARRAY_SIZE_ARB */ - 2124, /* GL_WEIGHT_ARRAY_POINTER_ARB */ - 2119, /* GL_WEIGHT_ARRAY_ARB */ - 418, /* GL_DOT3_RGB */ - 419, /* GL_DOT3_RGBA */ - 287, /* GL_COMPRESSED_RGB_FXT1_3DFX */ - 282, /* GL_COMPRESSED_RGBA_FXT1_3DFX */ - 1140, /* GL_MULTISAMPLE_3DFX */ - 1604, /* GL_SAMPLE_BUFFERS_3DFX */ - 1595, /* GL_SAMPLES_3DFX */ - 1120, /* GL_MODELVIEW2_ARB */ - 1123, /* GL_MODELVIEW3_ARB */ - 1124, /* GL_MODELVIEW4_ARB */ - 1125, /* GL_MODELVIEW5_ARB */ - 1126, /* GL_MODELVIEW6_ARB */ - 1127, /* GL_MODELVIEW7_ARB */ - 1128, /* GL_MODELVIEW8_ARB */ - 1129, /* GL_MODELVIEW9_ARB */ - 1099, /* GL_MODELVIEW10_ARB */ - 1100, /* GL_MODELVIEW11_ARB */ - 1101, /* GL_MODELVIEW12_ARB */ - 1102, /* GL_MODELVIEW13_ARB */ - 1103, /* GL_MODELVIEW14_ARB */ - 1104, /* GL_MODELVIEW15_ARB */ - 1105, /* GL_MODELVIEW16_ARB */ - 1106, /* GL_MODELVIEW17_ARB */ - 1107, /* GL_MODELVIEW18_ARB */ - 1108, /* GL_MODELVIEW19_ARB */ - 1110, /* GL_MODELVIEW20_ARB */ - 1111, /* GL_MODELVIEW21_ARB */ - 1112, /* GL_MODELVIEW22_ARB */ - 1113, /* GL_MODELVIEW23_ARB */ - 1114, /* GL_MODELVIEW24_ARB */ - 1115, /* GL_MODELVIEW25_ARB */ - 1116, /* GL_MODELVIEW26_ARB */ - 1117, /* GL_MODELVIEW27_ARB */ - 1118, /* GL_MODELVIEW28_ARB */ - 1119, /* GL_MODELVIEW29_ARB */ - 1121, /* GL_MODELVIEW30_ARB */ - 1122, /* GL_MODELVIEW31_ARB */ - 423, /* GL_DOT3_RGB_EXT */ - 421, /* GL_DOT3_RGBA_EXT */ - 1093, /* GL_MIRROR_CLAMP_EXT */ - 1096, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ - 1135, /* GL_MODULATE_ADD_ATI */ - 1136, /* GL_MODULATE_SIGNED_ADD_ATI */ - 1137, /* GL_MODULATE_SUBTRACT_ATI */ - 2139, /* GL_YCBCR_MESA */ - 1231, /* GL_PACK_INVERT_MESA */ - 365, /* GL_DEBUG_OBJECT_MESA */ - 366, /* GL_DEBUG_PRINT_MESA */ - 364, /* GL_DEBUG_ASSERT_MESA */ - 133, /* GL_BUFFER_SIZE */ - 135, /* GL_BUFFER_USAGE */ - 139, /* GL_BUMP_ROT_MATRIX_ATI */ - 140, /* GL_BUMP_ROT_MATRIX_SIZE_ATI */ - 138, /* GL_BUMP_NUM_TEX_UNITS_ATI */ - 142, /* GL_BUMP_TEX_UNITS_ATI */ - 483, /* GL_DUDV_ATI */ - 482, /* GL_DU8DV8_ATI */ - 137, /* GL_BUMP_ENVMAP_ATI */ - 141, /* GL_BUMP_TARGET_ATI */ - 1175, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */ - 1380, /* GL_PROGRAM_BINARY_FORMATS_OES */ - 1707, /* GL_STENCIL_BACK_FUNC */ - 1705, /* GL_STENCIL_BACK_FAIL */ - 1709, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ - 1711, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ - 570, /* GL_FRAGMENT_PROGRAM_ARB */ - 1378, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ - 1409, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ - 1408, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ - 1392, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - 1398, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - 1397, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - 1011, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ - 1035, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ - 1034, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ - 1024, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ - 1030, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ - 1029, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ - 987, /* GL_MAX_DRAW_BUFFERS */ - 427, /* GL_DRAW_BUFFER0 */ - 430, /* GL_DRAW_BUFFER1 */ - 451, /* GL_DRAW_BUFFER2 */ - 454, /* GL_DRAW_BUFFER3 */ - 457, /* GL_DRAW_BUFFER4 */ - 460, /* GL_DRAW_BUFFER5 */ - 463, /* GL_DRAW_BUFFER6 */ - 466, /* GL_DRAW_BUFFER7 */ - 469, /* GL_DRAW_BUFFER8 */ - 472, /* GL_DRAW_BUFFER9 */ - 431, /* GL_DRAW_BUFFER10 */ - 434, /* GL_DRAW_BUFFER11 */ - 437, /* GL_DRAW_BUFFER12 */ - 440, /* GL_DRAW_BUFFER13 */ - 443, /* GL_DRAW_BUFFER14 */ - 446, /* GL_DRAW_BUFFER15 */ - 95, /* GL_BLEND_EQUATION_ALPHA */ - 963, /* GL_MATRIX_PALETTE_ARB */ - 1004, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ - 1007, /* GL_MAX_PALETTE_MATRICES_ARB */ - 346, /* GL_CURRENT_PALETTE_MATRIX_ARB */ - 951, /* GL_MATRIX_INDEX_ARRAY_ARB */ - 341, /* GL_CURRENT_MATRIX_INDEX_ARB */ - 956, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ - 960, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ - 958, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ - 954, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ - 1913, /* GL_TEXTURE_DEPTH_SIZE */ - 411, /* GL_DEPTH_TEXTURE_MODE */ - 1870, /* GL_TEXTURE_COMPARE_MODE */ - 1868, /* GL_TEXTURE_COMPARE_FUNC */ - 266, /* GL_COMPARE_R_TO_TEXTURE */ - 1308, /* GL_POINT_SPRITE */ - 320, /* GL_COORD_REPLACE */ - 1313, /* GL_POINT_SPRITE_R_MODE_NV */ - 1444, /* GL_QUERY_COUNTER_BITS */ - 349, /* GL_CURRENT_QUERY */ - 1447, /* GL_QUERY_RESULT */ - 1449, /* GL_QUERY_RESULT_AVAILABLE */ - 1067, /* GL_MAX_VERTEX_ATTRIBS */ - 2092, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ - 409, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ - 408, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ - 1047, /* GL_MAX_TEXTURE_COORDS */ - 1049, /* GL_MAX_TEXTURE_IMAGE_UNITS */ - 1385, /* GL_PROGRAM_ERROR_STRING_ARB */ - 1387, /* GL_PROGRAM_FORMAT_ASCII_ARB */ - 1386, /* GL_PROGRAM_FORMAT_ARB */ - 1967, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ - 382, /* GL_DEPTH_BOUNDS_TEST_EXT */ - 381, /* GL_DEPTH_BOUNDS_EXT */ + 2283, /* GL_WEIGHT_SUM_UNITY_ARB */ + 2253, /* GL_VERTEX_BLEND_ARB */ + 385, /* GL_CURRENT_WEIGHT_ARB */ + 2281, /* GL_WEIGHT_ARRAY_TYPE_ARB */ + 2279, /* GL_WEIGHT_ARRAY_STRIDE_ARB */ + 2277, /* GL_WEIGHT_ARRAY_SIZE_ARB */ + 2275, /* GL_WEIGHT_ARRAY_POINTER_ARB */ + 2270, /* GL_WEIGHT_ARRAY_ARB */ + 442, /* GL_DOT3_RGB */ + 443, /* GL_DOT3_RGBA */ + 305, /* GL_COMPRESSED_RGB_FXT1_3DFX */ + 300, /* GL_COMPRESSED_RGBA_FXT1_3DFX */ + 1202, /* GL_MULTISAMPLE_3DFX */ + 1718, /* GL_SAMPLE_BUFFERS_3DFX */ + 1709, /* GL_SAMPLES_3DFX */ + 1182, /* GL_MODELVIEW2_ARB */ + 1185, /* GL_MODELVIEW3_ARB */ + 1186, /* GL_MODELVIEW4_ARB */ + 1187, /* GL_MODELVIEW5_ARB */ + 1188, /* GL_MODELVIEW6_ARB */ + 1189, /* GL_MODELVIEW7_ARB */ + 1190, /* GL_MODELVIEW8_ARB */ + 1191, /* GL_MODELVIEW9_ARB */ + 1161, /* GL_MODELVIEW10_ARB */ + 1162, /* GL_MODELVIEW11_ARB */ + 1163, /* GL_MODELVIEW12_ARB */ + 1164, /* GL_MODELVIEW13_ARB */ + 1165, /* GL_MODELVIEW14_ARB */ + 1166, /* GL_MODELVIEW15_ARB */ + 1167, /* GL_MODELVIEW16_ARB */ + 1168, /* GL_MODELVIEW17_ARB */ + 1169, /* GL_MODELVIEW18_ARB */ + 1170, /* GL_MODELVIEW19_ARB */ + 1172, /* GL_MODELVIEW20_ARB */ + 1173, /* GL_MODELVIEW21_ARB */ + 1174, /* GL_MODELVIEW22_ARB */ + 1175, /* GL_MODELVIEW23_ARB */ + 1176, /* GL_MODELVIEW24_ARB */ + 1177, /* GL_MODELVIEW25_ARB */ + 1178, /* GL_MODELVIEW26_ARB */ + 1179, /* GL_MODELVIEW27_ARB */ + 1180, /* GL_MODELVIEW28_ARB */ + 1181, /* GL_MODELVIEW29_ARB */ + 1183, /* GL_MODELVIEW30_ARB */ + 1184, /* GL_MODELVIEW31_ARB */ + 447, /* GL_DOT3_RGB_EXT */ + 445, /* GL_DOT3_RGBA_EXT */ + 1155, /* GL_MIRROR_CLAMP_EXT */ + 1158, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */ + 1197, /* GL_MODULATE_ADD_ATI */ + 1198, /* GL_MODULATE_SIGNED_ADD_ATI */ + 1199, /* GL_MODULATE_SUBTRACT_ATI */ + 2290, /* GL_YCBCR_MESA */ + 1294, /* GL_PACK_INVERT_MESA */ + 388, /* GL_DEBUG_OBJECT_MESA */ + 389, /* GL_DEBUG_PRINT_MESA */ + 387, /* GL_DEBUG_ASSERT_MESA */ + 139, /* GL_BUFFER_SIZE */ + 141, /* GL_BUFFER_USAGE */ + 145, /* GL_BUMP_ROT_MATRIX_ATI */ + 146, /* GL_BUMP_ROT_MATRIX_SIZE_ATI */ + 144, /* GL_BUMP_NUM_TEX_UNITS_ATI */ + 148, /* GL_BUMP_TEX_UNITS_ATI */ + 507, /* GL_DUDV_ATI */ + 506, /* GL_DU8DV8_ATI */ + 143, /* GL_BUMP_ENVMAP_ATI */ + 147, /* GL_BUMP_TARGET_ATI */ + 1238, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */ + 1446, /* GL_PROGRAM_BINARY_FORMATS_OES */ + 1822, /* GL_STENCIL_BACK_FUNC */ + 1820, /* GL_STENCIL_BACK_FAIL */ + 1824, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */ + 1826, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */ + 595, /* GL_FRAGMENT_PROGRAM_ARB */ + 1444, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */ + 1476, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */ + 1475, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */ + 1458, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + 1464, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + 1463, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + 1064, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */ + 1089, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */ + 1088, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */ + 1077, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */ + 1083, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */ + 1082, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */ + 1652, /* GL_RGBA32F */ + 1615, /* GL_RGB32F */ + 1643, /* GL_RGBA16F */ + 1607, /* GL_RGB16F */ + 1033, /* GL_MAX_DRAW_BUFFERS */ + 451, /* GL_DRAW_BUFFER0 */ + 454, /* GL_DRAW_BUFFER1 */ + 475, /* GL_DRAW_BUFFER2 */ + 478, /* GL_DRAW_BUFFER3 */ + 481, /* GL_DRAW_BUFFER4 */ + 484, /* GL_DRAW_BUFFER5 */ + 487, /* GL_DRAW_BUFFER6 */ + 490, /* GL_DRAW_BUFFER7 */ + 493, /* GL_DRAW_BUFFER8 */ + 496, /* GL_DRAW_BUFFER9 */ + 455, /* GL_DRAW_BUFFER10 */ + 458, /* GL_DRAW_BUFFER11 */ + 461, /* GL_DRAW_BUFFER12 */ + 464, /* GL_DRAW_BUFFER13 */ + 467, /* GL_DRAW_BUFFER14 */ + 470, /* GL_DRAW_BUFFER15 */ + 97, /* GL_BLEND_EQUATION_ALPHA */ + 1007, /* GL_MATRIX_PALETTE_ARB */ + 1057, /* GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB */ + 1060, /* GL_MAX_PALETTE_MATRICES_ARB */ + 369, /* GL_CURRENT_PALETTE_MATRIX_ARB */ + 995, /* GL_MATRIX_INDEX_ARRAY_ARB */ + 364, /* GL_CURRENT_MATRIX_INDEX_ARB */ + 1000, /* GL_MATRIX_INDEX_ARRAY_SIZE_ARB */ + 1004, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */ + 1002, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */ + 998, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */ + 2038, /* GL_TEXTURE_DEPTH_SIZE */ + 435, /* GL_DEPTH_TEXTURE_MODE */ + 1995, /* GL_TEXTURE_COMPARE_MODE */ + 1993, /* GL_TEXTURE_COMPARE_FUNC */ + 281, /* GL_COMPARE_REF_TO_TEXTURE */ + 1371, /* GL_POINT_SPRITE */ + 343, /* GL_COORD_REPLACE */ + 1376, /* GL_POINT_SPRITE_R_MODE_NV */ + 1516, /* GL_QUERY_COUNTER_BITS */ + 372, /* GL_CURRENT_QUERY */ + 1520, /* GL_QUERY_RESULT */ + 1522, /* GL_QUERY_RESULT_AVAILABLE */ + 1126, /* GL_MAX_VERTEX_ATTRIBS */ + 2243, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */ + 433, /* GL_DEPTH_STENCIL_TO_RGBA_NV */ + 432, /* GL_DEPTH_STENCIL_TO_BGRA_NV */ + 1103, /* GL_MAX_TEXTURE_COORDS */ + 1105, /* GL_MAX_TEXTURE_IMAGE_UNITS */ + 1451, /* GL_PROGRAM_ERROR_STRING_ARB */ + 1453, /* GL_PROGRAM_FORMAT_ASCII_ARB */ + 1452, /* GL_PROGRAM_FORMAT_ARB */ + 2094, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */ + 405, /* GL_DEPTH_BOUNDS_TEST_EXT */ + 404, /* GL_DEPTH_BOUNDS_EXT */ 61, /* GL_ARRAY_BUFFER */ - 496, /* GL_ELEMENT_ARRAY_BUFFER */ + 520, /* GL_ELEMENT_ARRAY_BUFFER */ 62, /* GL_ARRAY_BUFFER_BINDING */ - 497, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ - 2065, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ - 1162, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ - 172, /* GL_COLOR_ARRAY_BUFFER_BINDING */ - 700, /* GL_INDEX_ARRAY_BUFFER_BINDING */ - 1883, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ - 492, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ - 1616, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ - 548, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ - 2120, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ - 2087, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ - 1388, /* GL_PROGRAM_INSTRUCTIONS_ARB */ - 1017, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ - 1394, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - 1026, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ - 1407, /* GL_PROGRAM_TEMPORARIES_ARB */ - 1032, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ - 1396, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ - 1028, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ - 1400, /* GL_PROGRAM_PARAMETERS_ARB */ - 1031, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ - 1395, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ - 1027, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ - 1379, /* GL_PROGRAM_ATTRIBS_ARB */ - 1012, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ - 1393, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ - 1025, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ - 1377, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ - 1010, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ - 1391, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - 1023, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ - 1018, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ - 1014, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ - 1410, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ - 1992, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ - 1461, /* GL_READ_ONLY */ - 2134, /* GL_WRITE_ONLY */ - 1463, /* GL_READ_WRITE */ - 121, /* GL_BUFFER_ACCESS */ - 125, /* GL_BUFFER_MAPPED */ - 128, /* GL_BUFFER_MAP_POINTER */ - 1974, /* GL_TIME_ELAPSED_EXT */ - 911, /* GL_MATRIX0_ARB */ - 923, /* GL_MATRIX1_ARB */ - 935, /* GL_MATRIX2_ARB */ - 939, /* GL_MATRIX3_ARB */ - 941, /* GL_MATRIX4_ARB */ - 943, /* GL_MATRIX5_ARB */ - 945, /* GL_MATRIX6_ARB */ - 947, /* GL_MATRIX7_ARB */ - 949, /* GL_MATRIX8_ARB */ - 950, /* GL_MATRIX9_ARB */ - 913, /* GL_MATRIX10_ARB */ - 914, /* GL_MATRIX11_ARB */ - 915, /* GL_MATRIX12_ARB */ - 916, /* GL_MATRIX13_ARB */ - 917, /* GL_MATRIX14_ARB */ - 918, /* GL_MATRIX15_ARB */ - 919, /* GL_MATRIX16_ARB */ - 920, /* GL_MATRIX17_ARB */ - 921, /* GL_MATRIX18_ARB */ - 922, /* GL_MATRIX19_ARB */ - 925, /* GL_MATRIX20_ARB */ - 926, /* GL_MATRIX21_ARB */ - 927, /* GL_MATRIX22_ARB */ - 928, /* GL_MATRIX23_ARB */ - 929, /* GL_MATRIX24_ARB */ - 930, /* GL_MATRIX25_ARB */ - 931, /* GL_MATRIX26_ARB */ - 932, /* GL_MATRIX27_ARB */ - 933, /* GL_MATRIX28_ARB */ - 934, /* GL_MATRIX29_ARB */ - 937, /* GL_MATRIX30_ARB */ - 938, /* GL_MATRIX31_ARB */ - 1747, /* GL_STREAM_DRAW */ - 1749, /* GL_STREAM_READ */ - 1745, /* GL_STREAM_COPY */ - 1697, /* GL_STATIC_DRAW */ - 1699, /* GL_STATIC_READ */ - 1695, /* GL_STATIC_COPY */ - 486, /* GL_DYNAMIC_DRAW */ - 488, /* GL_DYNAMIC_READ */ - 484, /* GL_DYNAMIC_COPY */ - 1271, /* GL_PIXEL_PACK_BUFFER */ - 1275, /* GL_PIXEL_UNPACK_BUFFER */ - 1272, /* GL_PIXEL_PACK_BUFFER_BINDING */ - 1276, /* GL_PIXEL_UNPACK_BUFFER_BINDING */ - 373, /* GL_DEPTH24_STENCIL8 */ - 1963, /* GL_TEXTURE_STENCIL_SIZE */ - 1911, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */ - 1013, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ - 1016, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ - 1020, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ - 1019, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ - 2091, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT */ - 968, /* GL_MAX_ARRAY_TEXTURE_LAYERS_EXT */ - 1088, /* GL_MIN_PROGRAM_TEXEL_OFFSET_EXT */ - 1033, /* GL_MAX_PROGRAM_TEXEL_OFFSET_EXT */ - 1738, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ + 521, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */ + 2215, /* GL_VERTEX_ARRAY_BUFFER_BINDING */ + 1224, /* GL_NORMAL_ARRAY_BUFFER_BINDING */ + 187, /* GL_COLOR_ARRAY_BUFFER_BINDING */ + 732, /* GL_INDEX_ARRAY_BUFFER_BINDING */ + 2008, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */ + 516, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */ + 1730, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */ + 573, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */ + 2271, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */ + 2237, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */ + 1454, /* GL_PROGRAM_INSTRUCTIONS_ARB */ + 1070, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */ + 1460, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + 1079, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */ + 1474, /* GL_PROGRAM_TEMPORARIES_ARB */ + 1085, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */ + 1462, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */ + 1081, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */ + 1466, /* GL_PROGRAM_PARAMETERS_ARB */ + 1084, /* GL_MAX_PROGRAM_PARAMETERS_ARB */ + 1461, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */ + 1080, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */ + 1445, /* GL_PROGRAM_ATTRIBS_ARB */ + 1065, /* GL_MAX_PROGRAM_ATTRIBS_ARB */ + 1459, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */ + 1078, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */ + 1443, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */ + 1063, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */ + 1457, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + 1076, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */ + 1071, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */ + 1067, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */ + 1477, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */ + 2127, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */ + 1539, /* GL_READ_ONLY */ + 2285, /* GL_WRITE_ONLY */ + 1541, /* GL_READ_WRITE */ + 124, /* GL_BUFFER_ACCESS */ + 129, /* GL_BUFFER_MAPPED */ + 134, /* GL_BUFFER_MAP_POINTER */ + 2101, /* GL_TIME_ELAPSED_EXT */ + 955, /* GL_MATRIX0_ARB */ + 967, /* GL_MATRIX1_ARB */ + 979, /* GL_MATRIX2_ARB */ + 983, /* GL_MATRIX3_ARB */ + 985, /* GL_MATRIX4_ARB */ + 987, /* GL_MATRIX5_ARB */ + 989, /* GL_MATRIX6_ARB */ + 991, /* GL_MATRIX7_ARB */ + 993, /* GL_MATRIX8_ARB */ + 994, /* GL_MATRIX9_ARB */ + 957, /* GL_MATRIX10_ARB */ + 958, /* GL_MATRIX11_ARB */ + 959, /* GL_MATRIX12_ARB */ + 960, /* GL_MATRIX13_ARB */ + 961, /* GL_MATRIX14_ARB */ + 962, /* GL_MATRIX15_ARB */ + 963, /* GL_MATRIX16_ARB */ + 964, /* GL_MATRIX17_ARB */ + 965, /* GL_MATRIX18_ARB */ + 966, /* GL_MATRIX19_ARB */ + 969, /* GL_MATRIX20_ARB */ + 970, /* GL_MATRIX21_ARB */ + 971, /* GL_MATRIX22_ARB */ + 972, /* GL_MATRIX23_ARB */ + 973, /* GL_MATRIX24_ARB */ + 974, /* GL_MATRIX25_ARB */ + 975, /* GL_MATRIX26_ARB */ + 976, /* GL_MATRIX27_ARB */ + 977, /* GL_MATRIX28_ARB */ + 978, /* GL_MATRIX29_ARB */ + 981, /* GL_MATRIX30_ARB */ + 982, /* GL_MATRIX31_ARB */ + 1863, /* GL_STREAM_DRAW */ + 1865, /* GL_STREAM_READ */ + 1861, /* GL_STREAM_COPY */ + 1812, /* GL_STATIC_DRAW */ + 1814, /* GL_STATIC_READ */ + 1810, /* GL_STATIC_COPY */ + 510, /* GL_DYNAMIC_DRAW */ + 512, /* GL_DYNAMIC_READ */ + 508, /* GL_DYNAMIC_COPY */ + 1334, /* GL_PIXEL_PACK_BUFFER */ + 1338, /* GL_PIXEL_UNPACK_BUFFER */ + 1335, /* GL_PIXEL_PACK_BUFFER_BINDING */ + 1339, /* GL_PIXEL_UNPACK_BUFFER_BINDING */ + 396, /* GL_DEPTH24_STENCIL8 */ + 2090, /* GL_TEXTURE_STENCIL_SIZE */ + 2036, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */ + 1066, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */ + 1069, /* GL_MAX_PROGRAM_IF_DEPTH_NV */ + 1073, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */ + 1072, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */ + 2241, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */ + 1012, /* GL_MAX_ARRAY_TEXTURE_LAYERS */ + 1149, /* GL_MIN_PROGRAM_TEXEL_OFFSET */ + 1086, /* GL_MAX_PROGRAM_TEXEL_OFFSET */ + 1854, /* GL_STENCIL_TEST_TWO_SIDE_EXT */ 18, /* GL_ACTIVE_STENCIL_FACE_EXT */ - 1094, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ - 1597, /* GL_SAMPLES_PASSED */ - 1295, /* GL_POINT_SIZE_ARRAY_TYPE_OES */ - 1294, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */ - 1293, /* GL_POINT_SIZE_ARRAY_POINTER_OES */ - 1131, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */ - 1413, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */ - 1945, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */ - 132, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */ - 124, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */ - 1476, /* GL_RELEASED_APPLE */ - 2117, /* GL_VOLATILE_APPLE */ - 1515, /* GL_RETAINED_APPLE */ - 2007, /* GL_UNDEFINED_APPLE */ - 1434, /* GL_PURGEABLE_APPLE */ - 571, /* GL_FRAGMENT_SHADER */ - 2112, /* GL_VERTEX_SHADER */ - 1399, /* GL_PROGRAM_OBJECT_ARB */ - 1632, /* GL_SHADER_OBJECT_ARB */ - 994, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ - 1071, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ - 1064, /* GL_MAX_VARYING_FLOATS */ - 1069, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ - 978, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ - 1191, /* GL_OBJECT_TYPE_ARB */ - 1634, /* GL_SHADER_TYPE */ - 536, /* GL_FLOAT_VEC2 */ - 538, /* GL_FLOAT_VEC3 */ - 540, /* GL_FLOAT_VEC4 */ - 743, /* GL_INT_VEC2 */ - 745, /* GL_INT_VEC3 */ - 747, /* GL_INT_VEC4 */ - 113, /* GL_BOOL */ - 115, /* GL_BOOL_VEC2 */ - 117, /* GL_BOOL_VEC3 */ - 119, /* GL_BOOL_VEC4 */ - 524, /* GL_FLOAT_MAT2 */ - 528, /* GL_FLOAT_MAT3 */ - 532, /* GL_FLOAT_MAT4 */ - 1581, /* GL_SAMPLER_1D */ - 1585, /* GL_SAMPLER_2D */ - 1589, /* GL_SAMPLER_3D */ - 1592, /* GL_SAMPLER_CUBE */ - 1584, /* GL_SAMPLER_1D_SHADOW */ - 1588, /* GL_SAMPLER_2D_SHADOW */ - 526, /* GL_FLOAT_MAT2x3 */ - 527, /* GL_FLOAT_MAT2x4 */ - 530, /* GL_FLOAT_MAT3x2 */ - 531, /* GL_FLOAT_MAT3x4 */ - 534, /* GL_FLOAT_MAT4x2 */ - 535, /* GL_FLOAT_MAT4x3 */ - 371, /* GL_DELETE_STATUS */ - 270, /* GL_COMPILE_STATUS */ - 802, /* GL_LINK_STATUS */ - 2059, /* GL_VALIDATE_STATUS */ - 712, /* GL_INFO_LOG_LENGTH */ + 1156, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */ + 1711, /* GL_SAMPLES_PASSED */ + 688, /* GL_GEOMETRY_VERTICES_OUT */ + 682, /* GL_GEOMETRY_INPUT_TYPE */ + 684, /* GL_GEOMETRY_OUTPUT_TYPE */ + 156, /* GL_CLAMP_READ_COLOR */ + 546, /* GL_FIXED_ONLY */ + 1358, /* GL_POINT_SIZE_ARRAY_TYPE_OES */ + 1357, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */ + 1356, /* GL_POINT_SIZE_ARRAY_POINTER_OES */ + 1193, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */ + 1480, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */ + 2070, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */ + 138, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */ + 128, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */ + 1556, /* GL_RELEASED_APPLE */ + 2268, /* GL_VOLATILE_APPLE */ + 1595, /* GL_RETAINED_APPLE */ + 2144, /* GL_UNDEFINED_APPLE */ + 1504, /* GL_PURGEABLE_APPLE */ + 596, /* GL_FRAGMENT_SHADER */ + 2263, /* GL_VERTEX_SHADER */ + 1465, /* GL_PROGRAM_OBJECT_ARB */ + 1747, /* GL_SHADER_OBJECT_ARB */ + 1041, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */ + 1131, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */ + 1122, /* GL_MAX_VARYING_COMPONENTS */ + 1129, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */ + 1024, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */ + 1254, /* GL_OBJECT_TYPE_ARB */ + 1749, /* GL_SHADER_TYPE */ + 561, /* GL_FLOAT_VEC2 */ + 563, /* GL_FLOAT_VEC3 */ + 565, /* GL_FLOAT_VEC4 */ + 784, /* GL_INT_VEC2 */ + 786, /* GL_INT_VEC3 */ + 788, /* GL_INT_VEC4 */ + 116, /* GL_BOOL */ + 118, /* GL_BOOL_VEC2 */ + 120, /* GL_BOOL_VEC3 */ + 122, /* GL_BOOL_VEC4 */ + 549, /* GL_FLOAT_MAT2 */ + 553, /* GL_FLOAT_MAT3 */ + 557, /* GL_FLOAT_MAT4 */ + 1687, /* GL_SAMPLER_1D */ + 1693, /* GL_SAMPLER_2D */ + 1701, /* GL_SAMPLER_3D */ + 1705, /* GL_SAMPLER_CUBE */ + 1692, /* GL_SAMPLER_1D_SHADOW */ + 1700, /* GL_SAMPLER_2D_SHADOW */ + 1698, /* GL_SAMPLER_2D_RECT */ + 1699, /* GL_SAMPLER_2D_RECT_SHADOW */ + 551, /* GL_FLOAT_MAT2x3 */ + 552, /* GL_FLOAT_MAT2x4 */ + 555, /* GL_FLOAT_MAT3x2 */ + 556, /* GL_FLOAT_MAT3x4 */ + 559, /* GL_FLOAT_MAT4x2 */ + 560, /* GL_FLOAT_MAT4x3 */ + 394, /* GL_DELETE_STATUS */ + 286, /* GL_COMPILE_STATUS */ + 845, /* GL_LINK_STATUS */ + 2209, /* GL_VALIDATE_STATUS */ + 744, /* GL_INFO_LOG_LENGTH */ 64, /* GL_ATTACHED_SHADERS */ 21, /* GL_ACTIVE_UNIFORMS */ 22, /* GL_ACTIVE_UNIFORM_MAX_LENGTH */ - 1633, /* GL_SHADER_SOURCE_LENGTH */ + 1748, /* GL_SHADER_SOURCE_LENGTH */ 15, /* GL_ACTIVE_ATTRIBUTES */ 16, /* GL_ACTIVE_ATTRIBUTE_MAX_LENGTH */ - 573, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ - 1636, /* GL_SHADING_LANGUAGE_VERSION */ - 348, /* GL_CURRENT_PROGRAM */ - 1240, /* GL_PALETTE4_RGB8_OES */ - 1242, /* GL_PALETTE4_RGBA8_OES */ - 1238, /* GL_PALETTE4_R5_G6_B5_OES */ - 1241, /* GL_PALETTE4_RGBA4_OES */ - 1239, /* GL_PALETTE4_RGB5_A1_OES */ - 1245, /* GL_PALETTE8_RGB8_OES */ - 1247, /* GL_PALETTE8_RGBA8_OES */ - 1243, /* GL_PALETTE8_R5_G6_B5_OES */ - 1246, /* GL_PALETTE8_RGBA4_OES */ - 1244, /* GL_PALETTE8_RGB5_A1_OES */ - 694, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */ - 692, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */ - 1292, /* GL_POINT_SIZE_ARRAY_OES */ - 1889, /* GL_TEXTURE_CROP_RECT_OES */ - 952, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */ - 1291, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */ - 2042, /* GL_UNSIGNED_NORMALIZED */ - 1835, /* GL_TEXTURE_1D_ARRAY_EXT */ - 1423, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */ - 1837, /* GL_TEXTURE_2D_ARRAY_EXT */ - 1426, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */ - 1844, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */ - 1846, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */ - 998, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB */ - 1689, /* GL_SRGB */ - 1690, /* GL_SRGB8 */ - 1692, /* GL_SRGB_ALPHA */ - 1691, /* GL_SRGB8_ALPHA8 */ - 1649, /* GL_SLUMINANCE_ALPHA */ - 1648, /* GL_SLUMINANCE8_ALPHA8 */ - 1646, /* GL_SLUMINANCE */ - 1647, /* GL_SLUMINANCE8 */ - 291, /* GL_COMPRESSED_SRGB */ - 292, /* GL_COMPRESSED_SRGB_ALPHA */ - 289, /* GL_COMPRESSED_SLUMINANCE */ - 290, /* GL_COMPRESSED_SLUMINANCE_ALPHA */ - 1989, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */ - 1983, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */ - 1062, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT */ - 1988, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */ - 1986, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */ - 1985, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */ - 1374, /* GL_PRIMITIVES_GENERATED_EXT */ - 1987, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */ - 1454, /* GL_RASTERIZER_DISCARD_EXT */ - 1060, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT */ - 1061, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT */ - 730, /* GL_INTERLEAVED_ATTRIBS_EXT */ - 1626, /* GL_SEPARATE_ATTRIBS_EXT */ - 1982, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */ - 1981, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */ - 1310, /* GL_POINT_SPRITE_COORD_ORIGIN */ - 810, /* GL_LOWER_LEFT */ - 2056, /* GL_UPPER_LEFT */ - 1713, /* GL_STENCIL_BACK_REF */ - 1714, /* GL_STENCIL_BACK_VALUE_MASK */ - 1715, /* GL_STENCIL_BACK_WRITEMASK */ - 476, /* GL_DRAW_FRAMEBUFFER_BINDING */ - 1481, /* GL_RENDERBUFFER_BINDING */ - 1457, /* GL_READ_FRAMEBUFFER */ - 475, /* GL_DRAW_FRAMEBUFFER */ - 1458, /* GL_READ_FRAMEBUFFER_BINDING */ - 1500, /* GL_RENDERBUFFER_SAMPLES */ - 586, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ - 583, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ - 598, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ - 593, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ - 596, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ - 604, /* GL_FRAMEBUFFER_COMPLETE */ - 609, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ - 623, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ - 618, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ - 613, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ - 619, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ - 615, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ - 628, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ - 634, /* GL_FRAMEBUFFER_UNSUPPORTED */ - 632, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ - 974, /* GL_MAX_COLOR_ATTACHMENTS */ - 178, /* GL_COLOR_ATTACHMENT0 */ - 181, /* GL_COLOR_ATTACHMENT1 */ - 195, /* GL_COLOR_ATTACHMENT2 */ - 197, /* GL_COLOR_ATTACHMENT3 */ - 199, /* GL_COLOR_ATTACHMENT4 */ - 201, /* GL_COLOR_ATTACHMENT5 */ - 203, /* GL_COLOR_ATTACHMENT6 */ - 205, /* GL_COLOR_ATTACHMENT7 */ - 207, /* GL_COLOR_ATTACHMENT8 */ - 209, /* GL_COLOR_ATTACHMENT9 */ - 182, /* GL_COLOR_ATTACHMENT10 */ - 184, /* GL_COLOR_ATTACHMENT11 */ - 186, /* GL_COLOR_ATTACHMENT12 */ - 188, /* GL_COLOR_ATTACHMENT13 */ - 190, /* GL_COLOR_ATTACHMENT14 */ - 192, /* GL_COLOR_ATTACHMENT15 */ - 376, /* GL_DEPTH_ATTACHMENT */ - 1702, /* GL_STENCIL_ATTACHMENT */ - 575, /* GL_FRAMEBUFFER */ - 1478, /* GL_RENDERBUFFER */ - 1504, /* GL_RENDERBUFFER_WIDTH */ - 1491, /* GL_RENDERBUFFER_HEIGHT */ - 1494, /* GL_RENDERBUFFER_INTERNAL_FORMAT */ - 1733, /* GL_STENCIL_INDEX_EXT */ - 1722, /* GL_STENCIL_INDEX1 */ - 1727, /* GL_STENCIL_INDEX4 */ - 1730, /* GL_STENCIL_INDEX8 */ - 1723, /* GL_STENCIL_INDEX16 */ - 1498, /* GL_RENDERBUFFER_RED_SIZE */ - 1489, /* GL_RENDERBUFFER_GREEN_SIZE */ - 1484, /* GL_RENDERBUFFER_BLUE_SIZE */ - 1479, /* GL_RENDERBUFFER_ALPHA_SIZE */ - 1486, /* GL_RENDERBUFFER_DEPTH_SIZE */ - 1502, /* GL_RENDERBUFFER_STENCIL_SIZE */ - 626, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ - 1042, /* GL_MAX_SAMPLES */ - 1925, /* GL_TEXTURE_GEN_STR_OES */ - 667, /* GL_HALF_FLOAT_OES */ - 1536, /* GL_RGB565_OES */ - 1556, /* GL_RGBA32UI_EXT */ - 1530, /* GL_RGB32UI_EXT */ + 598, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */ + 1751, /* GL_SHADING_LANGUAGE_VERSION */ + 371, /* GL_CURRENT_PROGRAM */ + 1303, /* GL_PALETTE4_RGB8_OES */ + 1305, /* GL_PALETTE4_RGBA8_OES */ + 1301, /* GL_PALETTE4_R5_G6_B5_OES */ + 1304, /* GL_PALETTE4_RGBA4_OES */ + 1302, /* GL_PALETTE4_RGB5_A1_OES */ + 1308, /* GL_PALETTE8_RGB8_OES */ + 1310, /* GL_PALETTE8_RGBA8_OES */ + 1306, /* GL_PALETTE8_R5_G6_B5_OES */ + 1309, /* GL_PALETTE8_RGBA4_OES */ + 1307, /* GL_PALETTE8_RGB5_A1_OES */ + 726, /* GL_IMPLEMENTATION_COLOR_READ_TYPE_OES */ + 724, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES */ + 1355, /* GL_POINT_SIZE_ARRAY_OES */ + 2014, /* GL_TEXTURE_CROP_RECT_OES */ + 996, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */ + 1354, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */ + 2192, /* GL_UNSIGNED_NORMALIZED */ + 1951, /* GL_TEXTURE_1D_ARRAY */ + 1490, /* GL_PROXY_TEXTURE_1D_ARRAY */ + 1954, /* GL_TEXTURE_2D_ARRAY */ + 1494, /* GL_PROXY_TEXTURE_2D_ARRAY */ + 1962, /* GL_TEXTURE_BINDING_1D_ARRAY */ + 1965, /* GL_TEXTURE_BINDING_2D_ARRAY */ + 1048, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */ + 1981, /* GL_TEXTURE_BUFFER */ + 1102, /* GL_MAX_TEXTURE_BUFFER_SIZE */ + 1969, /* GL_TEXTURE_BINDING_BUFFER */ + 1982, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */ + 1983, /* GL_TEXTURE_BUFFER_FORMAT */ + 1527, /* GL_R11F_G11F_B10F */ + 2158, /* GL_UNSIGNED_INT_10F_11F_11F_REV */ + 1638, /* GL_RGB9_E5 */ + 2167, /* GL_UNSIGNED_INT_5_9_9_9_REV */ + 2088, /* GL_TEXTURE_SHARED_SIZE */ + 1804, /* GL_SRGB */ + 1805, /* GL_SRGB8 */ + 1807, /* GL_SRGB_ALPHA */ + 1806, /* GL_SRGB8_ALPHA8 */ + 1764, /* GL_SLUMINANCE_ALPHA */ + 1763, /* GL_SLUMINANCE8_ALPHA8 */ + 1761, /* GL_SLUMINANCE */ + 1762, /* GL_SLUMINANCE8 */ + 309, /* GL_COMPRESSED_SRGB */ + 310, /* GL_COMPRESSED_SRGB_ALPHA */ + 307, /* GL_COMPRESSED_SLUMINANCE */ + 308, /* GL_COMPRESSED_SLUMINANCE_ALPHA */ + 2123, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */ + 2112, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */ + 1120, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */ + 2121, /* GL_TRANSFORM_FEEDBACK_VARYINGS */ + 2117, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */ + 2115, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */ + 1437, /* GL_PRIMITIVES_GENERATED */ + 2119, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */ + 1531, /* GL_RASTERIZER_DISCARD */ + 1116, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */ + 1118, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */ + 762, /* GL_INTERLEAVED_ATTRIBS */ + 1740, /* GL_SEPARATE_ATTRIBS */ + 2107, /* GL_TRANSFORM_FEEDBACK_BUFFER */ + 2109, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */ + 1373, /* GL_POINT_SPRITE_COORD_ORIGIN */ + 853, /* GL_LOWER_LEFT */ + 2206, /* GL_UPPER_LEFT */ + 1828, /* GL_STENCIL_BACK_REF */ + 1829, /* GL_STENCIL_BACK_VALUE_MASK */ + 1830, /* GL_STENCIL_BACK_WRITEMASK */ + 500, /* GL_DRAW_FRAMEBUFFER_BINDING */ + 1561, /* GL_RENDERBUFFER_BINDING */ + 1535, /* GL_READ_FRAMEBUFFER */ + 499, /* GL_DRAW_FRAMEBUFFER */ + 1536, /* GL_READ_FRAMEBUFFER_BINDING */ + 1580, /* GL_RENDERBUFFER_SAMPLES */ + 612, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */ + 609, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */ + 624, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */ + 619, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE */ + 622, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER */ + 630, /* GL_FRAMEBUFFER_COMPLETE */ + 635, /* GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT */ + 650, /* GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT */ + 644, /* GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT */ + 639, /* GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT */ + 645, /* GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT */ + 641, /* GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER */ + 655, /* GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER */ + 661, /* GL_FRAMEBUFFER_UNSUPPORTED */ + 659, /* GL_FRAMEBUFFER_STATUS_ERROR_EXT */ + 1020, /* GL_MAX_COLOR_ATTACHMENTS */ + 193, /* GL_COLOR_ATTACHMENT0 */ + 196, /* GL_COLOR_ATTACHMENT1 */ + 210, /* GL_COLOR_ATTACHMENT2 */ + 212, /* GL_COLOR_ATTACHMENT3 */ + 214, /* GL_COLOR_ATTACHMENT4 */ + 216, /* GL_COLOR_ATTACHMENT5 */ + 218, /* GL_COLOR_ATTACHMENT6 */ + 220, /* GL_COLOR_ATTACHMENT7 */ + 222, /* GL_COLOR_ATTACHMENT8 */ + 224, /* GL_COLOR_ATTACHMENT9 */ + 197, /* GL_COLOR_ATTACHMENT10 */ + 199, /* GL_COLOR_ATTACHMENT11 */ + 201, /* GL_COLOR_ATTACHMENT12 */ + 203, /* GL_COLOR_ATTACHMENT13 */ + 205, /* GL_COLOR_ATTACHMENT14 */ + 207, /* GL_COLOR_ATTACHMENT15 */ + 399, /* GL_DEPTH_ATTACHMENT */ + 1817, /* GL_STENCIL_ATTACHMENT */ + 600, /* GL_FRAMEBUFFER */ + 1558, /* GL_RENDERBUFFER */ + 1584, /* GL_RENDERBUFFER_WIDTH */ + 1571, /* GL_RENDERBUFFER_HEIGHT */ + 1574, /* GL_RENDERBUFFER_INTERNAL_FORMAT */ + 1849, /* GL_STENCIL_INDEX_EXT */ + 1838, /* GL_STENCIL_INDEX1 */ + 1843, /* GL_STENCIL_INDEX4 */ + 1846, /* GL_STENCIL_INDEX8 */ + 1839, /* GL_STENCIL_INDEX16 */ + 1578, /* GL_RENDERBUFFER_RED_SIZE */ + 1569, /* GL_RENDERBUFFER_GREEN_SIZE */ + 1564, /* GL_RENDERBUFFER_BLUE_SIZE */ + 1559, /* GL_RENDERBUFFER_ALPHA_SIZE */ + 1566, /* GL_RENDERBUFFER_DEPTH_SIZE */ + 1582, /* GL_RENDERBUFFER_STENCIL_SIZE */ + 653, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */ + 1097, /* GL_MAX_SAMPLES */ + 2050, /* GL_TEXTURE_GEN_STR_OES */ + 699, /* GL_HALF_FLOAT_OES */ + 1625, /* GL_RGB565_OES */ + 1655, /* GL_RGBA32UI */ + 1618, /* GL_RGB32UI */ 40, /* GL_ALPHA32UI_EXT */ - 722, /* GL_INTENSITY32UI_EXT */ - 827, /* GL_LUMINANCE32UI_EXT */ - 844, /* GL_LUMINANCE_ALPHA32UI_EXT */ - 1551, /* GL_RGBA16UI_EXT */ - 1526, /* GL_RGB16UI_EXT */ + 754, /* GL_INTENSITY32UI_EXT */ + 870, /* GL_LUMINANCE32UI_EXT */ + 887, /* GL_LUMINANCE_ALPHA32UI_EXT */ + 1646, /* GL_RGBA16UI */ + 1610, /* GL_RGB16UI */ 37, /* GL_ALPHA16UI_EXT */ - 719, /* GL_INTENSITY16UI_EXT */ - 822, /* GL_LUMINANCE16UI_EXT */ - 842, /* GL_LUMINANCE_ALPHA16UI_EXT */ - 1564, /* GL_RGBA8UI_EXT */ - 1543, /* GL_RGB8UI_EXT */ + 751, /* GL_INTENSITY16UI_EXT */ + 865, /* GL_LUMINANCE16UI_EXT */ + 885, /* GL_LUMINANCE_ALPHA16UI_EXT */ + 1665, /* GL_RGBA8UI */ + 1633, /* GL_RGB8UI */ 45, /* GL_ALPHA8UI_EXT */ - 727, /* GL_INTENSITY8UI_EXT */ - 836, /* GL_LUMINANCE8UI_EXT */ - 846, /* GL_LUMINANCE_ALPHA8UI_EXT */ - 1555, /* GL_RGBA32I_EXT */ - 1529, /* GL_RGB32I_EXT */ + 759, /* GL_INTENSITY8UI_EXT */ + 879, /* GL_LUMINANCE8UI_EXT */ + 889, /* GL_LUMINANCE_ALPHA8UI_EXT */ + 1653, /* GL_RGBA32I */ + 1616, /* GL_RGB32I */ 39, /* GL_ALPHA32I_EXT */ - 721, /* GL_INTENSITY32I_EXT */ - 826, /* GL_LUMINANCE32I_EXT */ - 843, /* GL_LUMINANCE_ALPHA32I_EXT */ - 1550, /* GL_RGBA16I_EXT */ - 1525, /* GL_RGB16I_EXT */ + 753, /* GL_INTENSITY32I_EXT */ + 869, /* GL_LUMINANCE32I_EXT */ + 886, /* GL_LUMINANCE_ALPHA32I_EXT */ + 1644, /* GL_RGBA16I */ + 1608, /* GL_RGB16I */ 36, /* GL_ALPHA16I_EXT */ - 718, /* GL_INTENSITY16I_EXT */ - 821, /* GL_LUMINANCE16I_EXT */ - 841, /* GL_LUMINANCE_ALPHA16I_EXT */ - 1563, /* GL_RGBA8I_EXT */ - 1542, /* GL_RGB8I_EXT */ + 750, /* GL_INTENSITY16I_EXT */ + 864, /* GL_LUMINANCE16I_EXT */ + 884, /* GL_LUMINANCE_ALPHA16I_EXT */ + 1663, /* GL_RGBA8I */ + 1631, /* GL_RGB8I */ 44, /* GL_ALPHA8I_EXT */ - 726, /* GL_INTENSITY8I_EXT */ - 835, /* GL_LUMINANCE8I_EXT */ - 845, /* GL_LUMINANCE_ALPHA8I_EXT */ - 1470, /* GL_RED_INTEGER_EXT */ - 664, /* GL_GREEN_INTEGER_EXT */ - 111, /* GL_BLUE_INTEGER_EXT */ + 758, /* GL_INTENSITY8I_EXT */ + 878, /* GL_LUMINANCE8I_EXT */ + 888, /* GL_LUMINANCE_ALPHA8I_EXT */ + 1548, /* GL_RED_INTEGER */ + 695, /* GL_GREEN_INTEGER */ + 113, /* GL_BLUE_INTEGER */ 49, /* GL_ALPHA_INTEGER_EXT */ - 1574, /* GL_RGB_INTEGER_EXT */ - 1569, /* GL_RGBA_INTEGER_EXT */ - 83, /* GL_BGR_INTEGER_EXT */ - 82, /* GL_BGRA_INTEGER_EXT */ - 848, /* GL_LUMINANCE_INTEGER_EXT */ - 847, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */ - 1570, /* GL_RGBA_INTEGER_MODE_EXT */ - 582, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED_ARB */ - 622, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB */ - 621, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */ - 1582, /* GL_SAMPLER_1D_ARRAY_EXT */ - 1586, /* GL_SAMPLER_2D_ARRAY_EXT */ - 1591, /* GL_SAMPLER_BUFFER_EXT */ - 1583, /* GL_SAMPLER_1D_ARRAY_SHADOW_EXT */ - 1587, /* GL_SAMPLER_2D_ARRAY_SHADOW_EXT */ - 1593, /* GL_SAMPLER_CUBE_SHADOW_EXT */ - 2039, /* GL_UNSIGNED_INT_VEC2_EXT */ - 2040, /* GL_UNSIGNED_INT_VEC3_EXT */ - 2041, /* GL_UNSIGNED_INT_VEC4_EXT */ - 736, /* GL_INT_SAMPLER_1D_EXT */ - 738, /* GL_INT_SAMPLER_2D_EXT */ - 740, /* GL_INT_SAMPLER_3D_EXT */ - 742, /* GL_INT_SAMPLER_CUBE_EXT */ - 739, /* GL_INT_SAMPLER_2D_RECT_EXT */ - 735, /* GL_INT_SAMPLER_1D_ARRAY_EXT */ - 737, /* GL_INT_SAMPLER_2D_ARRAY_EXT */ - 741, /* GL_INT_SAMPLER_BUFFER_EXT */ - 2032, /* GL_UNSIGNED_INT_SAMPLER_1D_EXT */ - 2034, /* GL_UNSIGNED_INT_SAMPLER_2D_EXT */ - 2036, /* GL_UNSIGNED_INT_SAMPLER_3D_EXT */ - 2038, /* GL_UNSIGNED_INT_SAMPLER_CUBE_EXT */ - 2035, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT */ - 2031, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT */ - 2033, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT */ - 2037, /* GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT */ - 657, /* GL_GEOMETRY_SHADER_ARB */ - 658, /* GL_GEOMETRY_VERTICES_OUT_ARB */ - 655, /* GL_GEOMETRY_INPUT_TYPE_ARB */ - 656, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */ - 1001, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */ - 1076, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */ - 1000, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB */ - 997, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES_ARB */ - 999, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB */ - 811, /* GL_LOW_FLOAT */ - 1078, /* GL_MEDIUM_FLOAT */ - 668, /* GL_HIGH_FLOAT */ - 812, /* GL_LOW_INT */ - 1079, /* GL_MEDIUM_INT */ - 669, /* GL_HIGH_INT */ - 2022, /* GL_UNSIGNED_INT_10_10_10_2_OES */ - 734, /* GL_INT_10_10_10_2_OES */ - 1630, /* GL_SHADER_BINARY_FORMATS */ - 1176, /* GL_NUM_SHADER_BINARY_FORMATS */ - 1631, /* GL_SHADER_COMPILER */ - 1073, /* GL_MAX_VERTEX_UNIFORM_VECTORS */ - 1066, /* GL_MAX_VARYING_VECTORS */ - 996, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */ - 1451, /* GL_QUERY_WAIT_NV */ - 1446, /* GL_QUERY_NO_WAIT_NV */ - 1443, /* GL_QUERY_BY_REGION_WAIT_NV */ - 1442, /* GL_QUERY_BY_REGION_NO_WAIT_NV */ - 1978, /* GL_TRANSFORM_FEEDBACK */ - 1984, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */ - 1980, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */ - 1979, /* GL_TRANSFORM_FEEDBACK_BINDING */ - 1438, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ - 518, /* GL_FIRST_VERTEX_CONVENTION */ - 759, /* GL_LAST_VERTEX_CONVENTION */ - 1415, /* GL_PROVOKING_VERTEX */ - 327, /* GL_COPY_READ_BUFFER */ - 328, /* GL_COPY_WRITE_BUFFER */ - 1573, /* GL_RGBA_SNORM */ - 1567, /* GL_RGBA8_SNORM */ - 1642, /* GL_SIGNED_NORMALIZED */ - 1044, /* GL_MAX_SERVER_WAIT_TIMEOUT */ - 1190, /* GL_OBJECT_TYPE */ - 1754, /* GL_SYNC_CONDITION */ - 1759, /* GL_SYNC_STATUS */ - 1756, /* GL_SYNC_FLAGS */ - 1755, /* GL_SYNC_FENCE */ - 1758, /* GL_SYNC_GPU_COMMANDS_COMPLETE */ - 2016, /* GL_UNSIGNALED */ - 1641, /* GL_SIGNALED */ + 1677, /* GL_RGB_INTEGER */ + 1671, /* GL_RGBA_INTEGER */ + 84, /* GL_BGR_INTEGER */ + 82, /* GL_BGRA_INTEGER */ + 891, /* GL_LUMINANCE_INTEGER_EXT */ + 890, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */ + 1673, /* GL_RGBA_INTEGER_MODE_EXT */ + 607, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */ + 648, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */ + 647, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */ + 1688, /* GL_SAMPLER_1D_ARRAY */ + 1694, /* GL_SAMPLER_2D_ARRAY */ + 1703, /* GL_SAMPLER_BUFFER */ + 1690, /* GL_SAMPLER_1D_ARRAY_SHADOW */ + 1696, /* GL_SAMPLER_2D_ARRAY_SHADOW */ + 1706, /* GL_SAMPLER_CUBE_SHADOW */ + 2186, /* GL_UNSIGNED_INT_VEC2 */ + 2188, /* GL_UNSIGNED_INT_VEC3 */ + 2190, /* GL_UNSIGNED_INT_VEC4 */ + 768, /* GL_INT_SAMPLER_1D */ + 772, /* GL_INT_SAMPLER_2D */ + 778, /* GL_INT_SAMPLER_3D */ + 782, /* GL_INT_SAMPLER_CUBE */ + 776, /* GL_INT_SAMPLER_2D_RECT */ + 769, /* GL_INT_SAMPLER_1D_ARRAY */ + 773, /* GL_INT_SAMPLER_2D_ARRAY */ + 780, /* GL_INT_SAMPLER_BUFFER */ + 2170, /* GL_UNSIGNED_INT_SAMPLER_1D */ + 2174, /* GL_UNSIGNED_INT_SAMPLER_2D */ + 2180, /* GL_UNSIGNED_INT_SAMPLER_3D */ + 2184, /* GL_UNSIGNED_INT_SAMPLER_CUBE */ + 2178, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */ + 2171, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */ + 2175, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */ + 2182, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */ + 686, /* GL_GEOMETRY_SHADER */ + 689, /* GL_GEOMETRY_VERTICES_OUT_ARB */ + 683, /* GL_GEOMETRY_INPUT_TYPE_ARB */ + 685, /* GL_GEOMETRY_OUTPUT_TYPE_ARB */ + 1054, /* GL_MAX_GEOMETRY_VARYING_COMPONENTS_ARB */ + 1136, /* GL_MAX_VERTEX_VARYING_COMPONENTS_ARB */ + 1052, /* GL_MAX_GEOMETRY_UNIFORM_COMPONENTS */ + 1046, /* GL_MAX_GEOMETRY_OUTPUT_VERTICES */ + 1050, /* GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS */ + 854, /* GL_LOW_FLOAT */ + 1138, /* GL_MEDIUM_FLOAT */ + 700, /* GL_HIGH_FLOAT */ + 855, /* GL_LOW_INT */ + 1139, /* GL_MEDIUM_INT */ + 701, /* GL_HIGH_INT */ + 2160, /* GL_UNSIGNED_INT_10_10_10_2_OES */ + 767, /* GL_INT_10_10_10_2_OES */ + 1745, /* GL_SHADER_BINARY_FORMATS */ + 1239, /* GL_NUM_SHADER_BINARY_FORMATS */ + 1746, /* GL_SHADER_COMPILER */ + 1133, /* GL_MAX_VERTEX_UNIFORM_VECTORS */ + 1125, /* GL_MAX_VARYING_VECTORS */ + 1043, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */ + 1524, /* GL_QUERY_WAIT */ + 1518, /* GL_QUERY_NO_WAIT */ + 1514, /* GL_QUERY_BY_REGION_WAIT */ + 1512, /* GL_QUERY_BY_REGION_NO_WAIT */ + 2105, /* GL_TRANSFORM_FEEDBACK */ + 2114, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */ + 2108, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */ + 2106, /* GL_TRANSFORM_FEEDBACK_BINDING */ + 1508, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */ + 542, /* GL_FIRST_VERTEX_CONVENTION */ + 800, /* GL_LAST_VERTEX_CONVENTION */ + 1482, /* GL_PROVOKING_VERTEX */ + 350, /* GL_COPY_READ_BUFFER */ + 351, /* GL_COPY_WRITE_BUFFER */ + 1551, /* GL_RED_SNORM */ + 1684, /* GL_RG_SNORM */ + 1683, /* GL_RGB_SNORM */ + 1676, /* GL_RGBA_SNORM */ + 1530, /* GL_R8_SNORM */ + 1598, /* GL_RG8_SNORM */ + 1637, /* GL_RGB8_SNORM */ + 1669, /* GL_RGBA8_SNORM */ + 1528, /* GL_R16_SNORM */ + 1597, /* GL_RG16_SNORM */ + 1613, /* GL_RGB16_SNORM */ + 1649, /* GL_RGBA16_SNORM */ + 1757, /* GL_SIGNED_NORMALIZED */ + 1439, /* GL_PRIMITIVE_RESTART */ + 1440, /* GL_PRIMITIVE_RESTART_INDEX */ + 1099, /* GL_MAX_SERVER_WAIT_TIMEOUT */ + 1253, /* GL_OBJECT_TYPE */ + 1870, /* GL_SYNC_CONDITION */ + 1875, /* GL_SYNC_STATUS */ + 1872, /* GL_SYNC_FLAGS */ + 1871, /* GL_SYNC_FENCE */ + 1874, /* GL_SYNC_GPU_COMMANDS_COMPLETE */ + 2153, /* GL_UNSIGNALED */ + 1756, /* GL_SIGNALED */ 54, /* GL_ALREADY_SIGNALED */ - 1973, /* GL_TIMEOUT_EXPIRED */ - 294, /* GL_CONDITION_SATISFIED */ - 2118, /* GL_WAIT_FAILED */ - 503, /* GL_EVAL_BIT */ - 1455, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ - 804, /* GL_LIST_BIT */ - 1854, /* GL_TEXTURE_BIT */ - 1612, /* GL_SCISSOR_BIT */ + 2100, /* GL_TIMEOUT_EXPIRED */ + 312, /* GL_CONDITION_SATISFIED */ + 2269, /* GL_WAIT_FAILED */ + 126, /* GL_BUFFER_ACCESS_FLAGS */ + 132, /* GL_BUFFER_MAP_LENGTH */ + 133, /* GL_BUFFER_MAP_OFFSET */ + 1128, /* GL_MAX_VERTEX_OUTPUT_COMPONENTS */ + 1044, /* GL_MAX_GEOMETRY_INPUT_COMPONENTS */ + 1045, /* GL_MAX_GEOMETRY_OUTPUT_COMPONENTS */ + 1040, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */ + 326, /* GL_CONTEXT_PROFILE_MASK */ + 527, /* GL_EVAL_BIT */ + 1533, /* GL_RASTER_POSITION_UNCLIPPED_IBM */ + 847, /* GL_LIST_BIT */ + 1976, /* GL_TEXTURE_BIT */ + 1726, /* GL_SCISSOR_BIT */ 30, /* GL_ALL_ATTRIB_BITS */ - 1142, /* GL_MULTISAMPLE_BIT */ + 1204, /* GL_MULTISAMPLE_BIT */ 31, /* GL_ALL_CLIENT_ATTRIB_BITS */ }; diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c index 3d5830c01cc..fd5b4e915cd 100644 --- a/src/mesa/main/extensions.c +++ b/src/mesa/main/extensions.c @@ -249,7 +249,8 @@ _mesa_enable_sw_extensions(struct gl_context *ctx) #if FEATURE_ARB_framebuffer_object ctx->Extensions.ARB_framebuffer_object = GL_TRUE; #endif -#if FEATURE_ARB_geometry_shader4 +#if FEATURE_ARB_geometry_shader4 && 0 + /* XXX re-enable when GLSL compiler again supports geometry shaders */ ctx->Extensions.ARB_geometry_shader4 = GL_TRUE; #endif ctx->Extensions.ARB_half_float_pixel = GL_TRUE; @@ -258,6 +259,7 @@ _mesa_enable_sw_extensions(struct gl_context *ctx) ctx->Extensions.ARB_multitexture = GL_TRUE; #if FEATURE_queryobj ctx->Extensions.ARB_occlusion_query = GL_TRUE; + ctx->Extensions.ARB_occlusion_query2 = GL_TRUE; #endif ctx->Extensions.ARB_point_sprite = GL_TRUE; #if FEATURE_ARB_shader_objects @@ -857,8 +859,6 @@ make_extension_string_es2(const struct gl_context *ctx, GLubyte *str) { size_t len = 0; - len += append_extension(&str, "GL_OES_compressed_paletted_texture"); - if (ctx->Extensions.ARB_framebuffer_object) { len += append_extension(&str, "GL_OES_depth24"); len += append_extension(&str, "GL_OES_depth32"); @@ -873,8 +873,12 @@ make_extension_string_es2(const struct gl_context *ctx, GLubyte *str) if (ctx->Extensions.ARB_vertex_buffer_object) len += append_extension(&str, "GL_OES_mapbuffer"); +#if 0 + /* disabled because of missing GLSL support */ if (ctx->Extensions.EXT_texture3D) len += append_extension(&str, "GL_OES_texture_3D"); +#endif + if (ctx->Extensions.ARB_texture_non_power_of_two) len += append_extension(&str, "GL_OES_texture_npot"); if (ctx->Extensions.EXT_texture_filter_anisotropic) diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index 7c3357043fa..975063d0d78 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -2014,7 +2014,7 @@ _mesa_GetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, switch (pname) { case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT: - *params = att->Type; + *params = buffer->Name == 0 ? GL_FRAMEBUFFER_DEFAULT : att->Type; return; case GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT: if (att->Type == GL_RENDERBUFFER_EXT) { @@ -2024,8 +2024,8 @@ _mesa_GetFramebufferAttachmentParameterivEXT(GLenum target, GLenum attachment, *params = att->Texture->Name; } else { - _mesa_error(ctx, GL_INVALID_ENUM, - "glGetFramebufferAttachmentParameterivEXT(pname)"); + assert(att->Type == GL_NONE); + *params = 0; } return; case GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT: @@ -2146,6 +2146,7 @@ _mesa_GenerateMipmapEXT(GLenum target) /* OK, legal value */ break; default: + /* XXX need to implement GL_TEXTURE_1D_ARRAY and GL_TEXTURE_2D_ARRAY */ _mesa_error(ctx, GL_INVALID_ENUM, "glGenerateMipmapEXT(target)"); return; } @@ -2157,6 +2158,13 @@ _mesa_GenerateMipmapEXT(GLenum target) return; } + if (texObj->Target == GL_TEXTURE_CUBE_MAP && + !_mesa_cube_complete(texObj)) { + _mesa_error(ctx, GL_INVALID_OPERATION, + "glGenerateMipmap(incomplete cube map)"); + return; + } + _mesa_lock_texture(ctx, texObj); if (target == GL_TEXTURE_CUBE_MAP) { GLuint face; diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c index 88a04e888e4..42f70ca232b 100644 --- a/src/mesa/main/formats.c +++ b/src/mesa/main/formats.c @@ -863,7 +863,6 @@ const char * _mesa_get_format_name(gl_format format) { const struct gl_format_info *info = _mesa_get_format_info(format); - ASSERT(info->BytesPerBlock); return info->StrName; } @@ -1057,11 +1056,12 @@ _mesa_format_image_size(gl_format format, GLsizei width, const struct gl_format_info *info = _mesa_get_format_info(format); /* Strictly speaking, a conditional isn't needed here */ if (info->BlockWidth > 1 || info->BlockHeight > 1) { - /* compressed format */ + /* compressed format (2D only for now) */ const GLuint bw = info->BlockWidth, bh = info->BlockHeight; const GLuint wblocks = (width + bw - 1) / bw; const GLuint hblocks = (height + bh - 1) / bh; const GLuint sz = wblocks * hblocks * info->BytesPerBlock; + assert(depth == 1); return sz; } else { @@ -1072,6 +1072,36 @@ _mesa_format_image_size(gl_format format, GLsizei width, } +/** + * Same as _mesa_format_image_size() but returns a 64-bit value to + * accomodate very large textures. + */ +uint64_t +_mesa_format_image_size64(gl_format format, GLsizei width, + GLsizei height, GLsizei depth) +{ + const struct gl_format_info *info = _mesa_get_format_info(format); + /* Strictly speaking, a conditional isn't needed here */ + if (info->BlockWidth > 1 || info->BlockHeight > 1) { + /* compressed format (2D only for now) */ + const uint64_t bw = info->BlockWidth, bh = info->BlockHeight; + const uint64_t wblocks = (width + bw - 1) / bw; + const uint64_t hblocks = (height + bh - 1) / bh; + const uint64_t sz = wblocks * hblocks * info->BytesPerBlock; + assert(depth == 1); + return sz; + } + else { + /* non-compressed */ + const uint64_t sz = ((uint64_t) width * + (uint64_t) height * + (uint64_t) depth * + info->BytesPerBlock); + return sz; + } +} + + GLint _mesa_format_row_stride(gl_format format, GLsizei width) diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h index eeb460dabe7..997229bf9f4 100644 --- a/src/mesa/main/formats.h +++ b/src/mesa/main/formats.h @@ -209,6 +209,10 @@ extern GLuint _mesa_format_image_size(gl_format format, GLsizei width, GLsizei height, GLsizei depth); +extern uint64_t +_mesa_format_image_size64(gl_format format, GLsizei width, + GLsizei height, GLsizei depth); + extern GLint _mesa_format_row_stride(gl_format format, GLsizei width); diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c index b54af6ee86b..5ae35b868e3 100644 --- a/src/mesa/main/get.c +++ b/src/mesa/main/get.c @@ -314,6 +314,7 @@ EXTRA_EXT2(ARB_vertex_program, NV_vertex_program); EXTRA_EXT2(ARB_vertex_program, ARB_fragment_program); EXTRA_EXT(ARB_vertex_buffer_object); EXTRA_EXT(ARB_geometry_shader4); +EXTRA_EXT(ARB_copy_buffer); static const int extra_ARB_vertex_program_ARB_fragment_program_NV_vertex_program[] = { @@ -469,6 +470,10 @@ static const struct value_desc values[] = { { GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT, 0, extra_ARB_vertex_buffer_object }, + /* GL_ARB_copy_buffer */ + { GL_COPY_READ_BUFFER, LOC_CUSTOM, TYPE_INT, 0, extra_ARB_copy_buffer }, + { GL_COPY_WRITE_BUFFER, LOC_CUSTOM, TYPE_INT, 0, extra_ARB_copy_buffer }, + /* GL_OES_read_format */ { GL_IMPLEMENTATION_COLOR_READ_TYPE_OES, LOC_CUSTOM, TYPE_INT, 0, extra_new_buffers_OES_read_format }, @@ -700,12 +705,9 @@ static const struct value_desc values[] = { #if FEATURE_ES2 /* Enums unique to OpenGL ES 2.0 */ { 0, 0, TYPE_API_MASK, API_OPENGLES2_BIT, NO_EXTRA }, - { GL_MAX_FRAGMENT_UNIFORM_VECTORS, LOC_CUSTOM, TYPE_INT, - offsetof(struct gl_context, Const.FragmentProgram.MaxUniformComponents), NO_EXTRA }, - { GL_MAX_VARYING_VECTORS, LOC_CUSTOM, TYPE_INT, - offsetof(struct gl_context, Const.MaxVarying), NO_EXTRA }, - { GL_MAX_VERTEX_UNIFORM_VECTORS, LOC_CUSTOM, TYPE_INT, - offsetof(struct gl_context, Const.VertexProgram.MaxUniformComponents), NO_EXTRA }, + { GL_MAX_FRAGMENT_UNIFORM_VECTORS, LOC_CUSTOM, TYPE_INT, 0, NO_EXTRA }, + { GL_MAX_VARYING_VECTORS, CONTEXT_INT(Const.MaxVarying), NO_EXTRA }, + { GL_MAX_VERTEX_UNIFORM_VECTORS, LOC_CUSTOM, TYPE_INT, 0, NO_EXTRA }, { GL_SHADER_COMPILER, CONST(1), NO_EXTRA }, /* OES_get_program_binary */ { GL_NUM_SHADER_BINARY_FORMATS, CONST(0), NO_EXTRA }, @@ -1112,6 +1114,14 @@ static const struct value_desc values[] = { extra_valid_draw_buffer }, { GL_DRAW_BUFFER3_ARB, BUFFER_ENUM(ColorDrawBuffer[3]), extra_valid_draw_buffer }, + { GL_DRAW_BUFFER4_ARB, BUFFER_ENUM(ColorDrawBuffer[4]), + extra_valid_draw_buffer }, + { GL_DRAW_BUFFER5_ARB, BUFFER_ENUM(ColorDrawBuffer[5]), + extra_valid_draw_buffer }, + { GL_DRAW_BUFFER6_ARB, BUFFER_ENUM(ColorDrawBuffer[6]), + extra_valid_draw_buffer }, + { GL_DRAW_BUFFER7_ARB, BUFFER_ENUM(ColorDrawBuffer[7]), + extra_valid_draw_buffer }, /* GL_ATI_fragment_shader */ { GL_NUM_FRAGMENT_REGISTERS_ATI, CONST(6), extra_ATI_fragment_shader }, @@ -1564,6 +1574,14 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu v->value_int = ctx->Array.ElementArrayBufferObj->Name; break; + /* ARB_copy_buffer */ + case GL_COPY_READ_BUFFER: + v->value_int = ctx->CopyReadBuffer->Name; + break; + case GL_COPY_WRITE_BUFFER: + v->value_int = ctx->CopyWriteBuffer->Name; + break; + case GL_FRAGMENT_PROGRAM_BINDING_NV: v->value_int = ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0; @@ -1604,6 +1622,14 @@ find_custom_value(struct gl_context *ctx, const struct value_desc *d, union valu case GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES: v->value_int = ctx->Array.ArrayObj->PointSize.BufferObj->Name; break; + + case GL_MAX_VERTEX_UNIFORM_VECTORS: + v->value_int = ctx->Const.VertexProgram.MaxUniformComponents / 4; + break; + + case GL_MAX_FRAGMENT_UNIFORM_VECTORS: + v->value_int = ctx->Const.FragmentProgram.MaxUniformComponents / 4; + break; } } @@ -1733,16 +1759,18 @@ find_value(const char *func, GLenum pname, void **p, union value *v) hash = (pname * prime_factor); while (1) { d = &values[table[hash & mask]]; - if (likely(d->pname == pname)) - break; /* If the enum isn't valid, the hash walk ends with index 0, * which is the API mask entry at the beginning of values[]. */ - if (d->type == TYPE_API_MASK) { + if (unlikely(d->type == TYPE_API_MASK)) { _mesa_error(ctx, GL_INVALID_ENUM, "%s(pname=%s)", func, _mesa_lookup_enum_by_nr(pname)); return &error_value; } + + if (likely(d->pname == pname)) + break; + hash += prime_step; } diff --git a/src/mesa/main/glapidispatch.h b/src/mesa/main/glapidispatch.h index 434d38cb89a..87784269c5c 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 870 +#define _gloffset_COUNT 881 #define _gloffset_NewList 0 #define _gloffset_EndList 1 @@ -494,450 +494,461 @@ #define _gloffset_UniformMatrix3x4fv 427 #define _gloffset_UniformMatrix4x2fv 428 #define _gloffset_UniformMatrix4x3fv 429 -#define _gloffset_DrawArraysInstanced 430 -#define _gloffset_DrawElementsInstanced 431 -#define _gloffset_LoadTransposeMatrixdARB 432 -#define _gloffset_LoadTransposeMatrixfARB 433 -#define _gloffset_MultTransposeMatrixdARB 434 -#define _gloffset_MultTransposeMatrixfARB 435 -#define _gloffset_SampleCoverageARB 436 -#define _gloffset_CompressedTexImage1DARB 437 -#define _gloffset_CompressedTexImage2DARB 438 -#define _gloffset_CompressedTexImage3DARB 439 -#define _gloffset_CompressedTexSubImage1DARB 440 -#define _gloffset_CompressedTexSubImage2DARB 441 -#define _gloffset_CompressedTexSubImage3DARB 442 -#define _gloffset_GetCompressedTexImageARB 443 -#define _gloffset_DisableVertexAttribArrayARB 444 -#define _gloffset_EnableVertexAttribArrayARB 445 -#define _gloffset_GetProgramEnvParameterdvARB 446 -#define _gloffset_GetProgramEnvParameterfvARB 447 -#define _gloffset_GetProgramLocalParameterdvARB 448 -#define _gloffset_GetProgramLocalParameterfvARB 449 -#define _gloffset_GetProgramStringARB 450 -#define _gloffset_GetProgramivARB 451 -#define _gloffset_GetVertexAttribdvARB 452 -#define _gloffset_GetVertexAttribfvARB 453 -#define _gloffset_GetVertexAttribivARB 454 -#define _gloffset_ProgramEnvParameter4dARB 455 -#define _gloffset_ProgramEnvParameter4dvARB 456 -#define _gloffset_ProgramEnvParameter4fARB 457 -#define _gloffset_ProgramEnvParameter4fvARB 458 -#define _gloffset_ProgramLocalParameter4dARB 459 -#define _gloffset_ProgramLocalParameter4dvARB 460 -#define _gloffset_ProgramLocalParameter4fARB 461 -#define _gloffset_ProgramLocalParameter4fvARB 462 -#define _gloffset_ProgramStringARB 463 -#define _gloffset_VertexAttrib1dARB 464 -#define _gloffset_VertexAttrib1dvARB 465 -#define _gloffset_VertexAttrib1fARB 466 -#define _gloffset_VertexAttrib1fvARB 467 -#define _gloffset_VertexAttrib1sARB 468 -#define _gloffset_VertexAttrib1svARB 469 -#define _gloffset_VertexAttrib2dARB 470 -#define _gloffset_VertexAttrib2dvARB 471 -#define _gloffset_VertexAttrib2fARB 472 -#define _gloffset_VertexAttrib2fvARB 473 -#define _gloffset_VertexAttrib2sARB 474 -#define _gloffset_VertexAttrib2svARB 475 -#define _gloffset_VertexAttrib3dARB 476 -#define _gloffset_VertexAttrib3dvARB 477 -#define _gloffset_VertexAttrib3fARB 478 -#define _gloffset_VertexAttrib3fvARB 479 -#define _gloffset_VertexAttrib3sARB 480 -#define _gloffset_VertexAttrib3svARB 481 -#define _gloffset_VertexAttrib4NbvARB 482 -#define _gloffset_VertexAttrib4NivARB 483 -#define _gloffset_VertexAttrib4NsvARB 484 -#define _gloffset_VertexAttrib4NubARB 485 -#define _gloffset_VertexAttrib4NubvARB 486 -#define _gloffset_VertexAttrib4NuivARB 487 -#define _gloffset_VertexAttrib4NusvARB 488 -#define _gloffset_VertexAttrib4bvARB 489 -#define _gloffset_VertexAttrib4dARB 490 -#define _gloffset_VertexAttrib4dvARB 491 -#define _gloffset_VertexAttrib4fARB 492 -#define _gloffset_VertexAttrib4fvARB 493 -#define _gloffset_VertexAttrib4ivARB 494 -#define _gloffset_VertexAttrib4sARB 495 -#define _gloffset_VertexAttrib4svARB 496 -#define _gloffset_VertexAttrib4ubvARB 497 -#define _gloffset_VertexAttrib4uivARB 498 -#define _gloffset_VertexAttrib4usvARB 499 -#define _gloffset_VertexAttribPointerARB 500 -#define _gloffset_BindBufferARB 501 -#define _gloffset_BufferDataARB 502 -#define _gloffset_BufferSubDataARB 503 -#define _gloffset_DeleteBuffersARB 504 -#define _gloffset_GenBuffersARB 505 -#define _gloffset_GetBufferParameterivARB 506 -#define _gloffset_GetBufferPointervARB 507 -#define _gloffset_GetBufferSubDataARB 508 -#define _gloffset_IsBufferARB 509 -#define _gloffset_MapBufferARB 510 -#define _gloffset_UnmapBufferARB 511 -#define _gloffset_BeginQueryARB 512 -#define _gloffset_DeleteQueriesARB 513 -#define _gloffset_EndQueryARB 514 -#define _gloffset_GenQueriesARB 515 -#define _gloffset_GetQueryObjectivARB 516 -#define _gloffset_GetQueryObjectuivARB 517 -#define _gloffset_GetQueryivARB 518 -#define _gloffset_IsQueryARB 519 -#define _gloffset_AttachObjectARB 520 -#define _gloffset_CompileShaderARB 521 -#define _gloffset_CreateProgramObjectARB 522 -#define _gloffset_CreateShaderObjectARB 523 -#define _gloffset_DeleteObjectARB 524 -#define _gloffset_DetachObjectARB 525 -#define _gloffset_GetActiveUniformARB 526 -#define _gloffset_GetAttachedObjectsARB 527 -#define _gloffset_GetHandleARB 528 -#define _gloffset_GetInfoLogARB 529 -#define _gloffset_GetObjectParameterfvARB 530 -#define _gloffset_GetObjectParameterivARB 531 -#define _gloffset_GetShaderSourceARB 532 -#define _gloffset_GetUniformLocationARB 533 -#define _gloffset_GetUniformfvARB 534 -#define _gloffset_GetUniformivARB 535 -#define _gloffset_LinkProgramARB 536 -#define _gloffset_ShaderSourceARB 537 -#define _gloffset_Uniform1fARB 538 -#define _gloffset_Uniform1fvARB 539 -#define _gloffset_Uniform1iARB 540 -#define _gloffset_Uniform1ivARB 541 -#define _gloffset_Uniform2fARB 542 -#define _gloffset_Uniform2fvARB 543 -#define _gloffset_Uniform2iARB 544 -#define _gloffset_Uniform2ivARB 545 -#define _gloffset_Uniform3fARB 546 -#define _gloffset_Uniform3fvARB 547 -#define _gloffset_Uniform3iARB 548 -#define _gloffset_Uniform3ivARB 549 -#define _gloffset_Uniform4fARB 550 -#define _gloffset_Uniform4fvARB 551 -#define _gloffset_Uniform4iARB 552 -#define _gloffset_Uniform4ivARB 553 -#define _gloffset_UniformMatrix2fvARB 554 -#define _gloffset_UniformMatrix3fvARB 555 -#define _gloffset_UniformMatrix4fvARB 556 -#define _gloffset_UseProgramObjectARB 557 -#define _gloffset_ValidateProgramARB 558 -#define _gloffset_BindAttribLocationARB 559 -#define _gloffset_GetActiveAttribARB 560 -#define _gloffset_GetAttribLocationARB 561 -#define _gloffset_DrawBuffersARB 562 -#define _gloffset_RenderbufferStorageMultisample 563 -#define _gloffset_FramebufferTextureARB 564 -#define _gloffset_FramebufferTextureFaceARB 565 -#define _gloffset_ProgramParameteriARB 566 -#define _gloffset_FlushMappedBufferRange 567 -#define _gloffset_MapBufferRange 568 -#define _gloffset_BindVertexArray 569 -#define _gloffset_GenVertexArrays 570 -#define _gloffset_CopyBufferSubData 571 -#define _gloffset_ClientWaitSync 572 -#define _gloffset_DeleteSync 573 -#define _gloffset_FenceSync 574 -#define _gloffset_GetInteger64v 575 -#define _gloffset_GetSynciv 576 -#define _gloffset_IsSync 577 -#define _gloffset_WaitSync 578 -#define _gloffset_DrawElementsBaseVertex 579 -#define _gloffset_DrawRangeElementsBaseVertex 580 -#define _gloffset_MultiDrawElementsBaseVertex 581 -#define _gloffset_BindTransformFeedback 582 -#define _gloffset_DeleteTransformFeedbacks 583 -#define _gloffset_DrawTransformFeedback 584 -#define _gloffset_GenTransformFeedbacks 585 -#define _gloffset_IsTransformFeedback 586 -#define _gloffset_PauseTransformFeedback 587 -#define _gloffset_ResumeTransformFeedback 588 -#define _gloffset_PolygonOffsetEXT 589 -#define _gloffset_GetPixelTexGenParameterfvSGIS 590 -#define _gloffset_GetPixelTexGenParameterivSGIS 591 -#define _gloffset_PixelTexGenParameterfSGIS 592 -#define _gloffset_PixelTexGenParameterfvSGIS 593 -#define _gloffset_PixelTexGenParameteriSGIS 594 -#define _gloffset_PixelTexGenParameterivSGIS 595 -#define _gloffset_SampleMaskSGIS 596 -#define _gloffset_SamplePatternSGIS 597 -#define _gloffset_ColorPointerEXT 598 -#define _gloffset_EdgeFlagPointerEXT 599 -#define _gloffset_IndexPointerEXT 600 -#define _gloffset_NormalPointerEXT 601 -#define _gloffset_TexCoordPointerEXT 602 -#define _gloffset_VertexPointerEXT 603 -#define _gloffset_PointParameterfEXT 604 -#define _gloffset_PointParameterfvEXT 605 -#define _gloffset_LockArraysEXT 606 -#define _gloffset_UnlockArraysEXT 607 -#define _gloffset_SecondaryColor3bEXT 608 -#define _gloffset_SecondaryColor3bvEXT 609 -#define _gloffset_SecondaryColor3dEXT 610 -#define _gloffset_SecondaryColor3dvEXT 611 -#define _gloffset_SecondaryColor3fEXT 612 -#define _gloffset_SecondaryColor3fvEXT 613 -#define _gloffset_SecondaryColor3iEXT 614 -#define _gloffset_SecondaryColor3ivEXT 615 -#define _gloffset_SecondaryColor3sEXT 616 -#define _gloffset_SecondaryColor3svEXT 617 -#define _gloffset_SecondaryColor3ubEXT 618 -#define _gloffset_SecondaryColor3ubvEXT 619 -#define _gloffset_SecondaryColor3uiEXT 620 -#define _gloffset_SecondaryColor3uivEXT 621 -#define _gloffset_SecondaryColor3usEXT 622 -#define _gloffset_SecondaryColor3usvEXT 623 -#define _gloffset_SecondaryColorPointerEXT 624 -#define _gloffset_MultiDrawArraysEXT 625 -#define _gloffset_MultiDrawElementsEXT 626 -#define _gloffset_FogCoordPointerEXT 627 -#define _gloffset_FogCoorddEXT 628 -#define _gloffset_FogCoorddvEXT 629 -#define _gloffset_FogCoordfEXT 630 -#define _gloffset_FogCoordfvEXT 631 -#define _gloffset_PixelTexGenSGIX 632 -#define _gloffset_BlendFuncSeparateEXT 633 -#define _gloffset_FlushVertexArrayRangeNV 634 -#define _gloffset_VertexArrayRangeNV 635 -#define _gloffset_CombinerInputNV 636 -#define _gloffset_CombinerOutputNV 637 -#define _gloffset_CombinerParameterfNV 638 -#define _gloffset_CombinerParameterfvNV 639 -#define _gloffset_CombinerParameteriNV 640 -#define _gloffset_CombinerParameterivNV 641 -#define _gloffset_FinalCombinerInputNV 642 -#define _gloffset_GetCombinerInputParameterfvNV 643 -#define _gloffset_GetCombinerInputParameterivNV 644 -#define _gloffset_GetCombinerOutputParameterfvNV 645 -#define _gloffset_GetCombinerOutputParameterivNV 646 -#define _gloffset_GetFinalCombinerInputParameterfvNV 647 -#define _gloffset_GetFinalCombinerInputParameterivNV 648 -#define _gloffset_ResizeBuffersMESA 649 -#define _gloffset_WindowPos2dMESA 650 -#define _gloffset_WindowPos2dvMESA 651 -#define _gloffset_WindowPos2fMESA 652 -#define _gloffset_WindowPos2fvMESA 653 -#define _gloffset_WindowPos2iMESA 654 -#define _gloffset_WindowPos2ivMESA 655 -#define _gloffset_WindowPos2sMESA 656 -#define _gloffset_WindowPos2svMESA 657 -#define _gloffset_WindowPos3dMESA 658 -#define _gloffset_WindowPos3dvMESA 659 -#define _gloffset_WindowPos3fMESA 660 -#define _gloffset_WindowPos3fvMESA 661 -#define _gloffset_WindowPos3iMESA 662 -#define _gloffset_WindowPos3ivMESA 663 -#define _gloffset_WindowPos3sMESA 664 -#define _gloffset_WindowPos3svMESA 665 -#define _gloffset_WindowPos4dMESA 666 -#define _gloffset_WindowPos4dvMESA 667 -#define _gloffset_WindowPos4fMESA 668 -#define _gloffset_WindowPos4fvMESA 669 -#define _gloffset_WindowPos4iMESA 670 -#define _gloffset_WindowPos4ivMESA 671 -#define _gloffset_WindowPos4sMESA 672 -#define _gloffset_WindowPos4svMESA 673 -#define _gloffset_MultiModeDrawArraysIBM 674 -#define _gloffset_MultiModeDrawElementsIBM 675 -#define _gloffset_DeleteFencesNV 676 -#define _gloffset_FinishFenceNV 677 -#define _gloffset_GenFencesNV 678 -#define _gloffset_GetFenceivNV 679 -#define _gloffset_IsFenceNV 680 -#define _gloffset_SetFenceNV 681 -#define _gloffset_TestFenceNV 682 -#define _gloffset_AreProgramsResidentNV 683 -#define _gloffset_BindProgramNV 684 -#define _gloffset_DeleteProgramsNV 685 -#define _gloffset_ExecuteProgramNV 686 -#define _gloffset_GenProgramsNV 687 -#define _gloffset_GetProgramParameterdvNV 688 -#define _gloffset_GetProgramParameterfvNV 689 -#define _gloffset_GetProgramStringNV 690 -#define _gloffset_GetProgramivNV 691 -#define _gloffset_GetTrackMatrixivNV 692 -#define _gloffset_GetVertexAttribPointervNV 693 -#define _gloffset_GetVertexAttribdvNV 694 -#define _gloffset_GetVertexAttribfvNV 695 -#define _gloffset_GetVertexAttribivNV 696 -#define _gloffset_IsProgramNV 697 -#define _gloffset_LoadProgramNV 698 -#define _gloffset_ProgramParameters4dvNV 699 -#define _gloffset_ProgramParameters4fvNV 700 -#define _gloffset_RequestResidentProgramsNV 701 -#define _gloffset_TrackMatrixNV 702 -#define _gloffset_VertexAttrib1dNV 703 -#define _gloffset_VertexAttrib1dvNV 704 -#define _gloffset_VertexAttrib1fNV 705 -#define _gloffset_VertexAttrib1fvNV 706 -#define _gloffset_VertexAttrib1sNV 707 -#define _gloffset_VertexAttrib1svNV 708 -#define _gloffset_VertexAttrib2dNV 709 -#define _gloffset_VertexAttrib2dvNV 710 -#define _gloffset_VertexAttrib2fNV 711 -#define _gloffset_VertexAttrib2fvNV 712 -#define _gloffset_VertexAttrib2sNV 713 -#define _gloffset_VertexAttrib2svNV 714 -#define _gloffset_VertexAttrib3dNV 715 -#define _gloffset_VertexAttrib3dvNV 716 -#define _gloffset_VertexAttrib3fNV 717 -#define _gloffset_VertexAttrib3fvNV 718 -#define _gloffset_VertexAttrib3sNV 719 -#define _gloffset_VertexAttrib3svNV 720 -#define _gloffset_VertexAttrib4dNV 721 -#define _gloffset_VertexAttrib4dvNV 722 -#define _gloffset_VertexAttrib4fNV 723 -#define _gloffset_VertexAttrib4fvNV 724 -#define _gloffset_VertexAttrib4sNV 725 -#define _gloffset_VertexAttrib4svNV 726 -#define _gloffset_VertexAttrib4ubNV 727 -#define _gloffset_VertexAttrib4ubvNV 728 -#define _gloffset_VertexAttribPointerNV 729 -#define _gloffset_VertexAttribs1dvNV 730 -#define _gloffset_VertexAttribs1fvNV 731 -#define _gloffset_VertexAttribs1svNV 732 -#define _gloffset_VertexAttribs2dvNV 733 -#define _gloffset_VertexAttribs2fvNV 734 -#define _gloffset_VertexAttribs2svNV 735 -#define _gloffset_VertexAttribs3dvNV 736 -#define _gloffset_VertexAttribs3fvNV 737 -#define _gloffset_VertexAttribs3svNV 738 -#define _gloffset_VertexAttribs4dvNV 739 -#define _gloffset_VertexAttribs4fvNV 740 -#define _gloffset_VertexAttribs4svNV 741 -#define _gloffset_VertexAttribs4ubvNV 742 -#define _gloffset_GetTexBumpParameterfvATI 743 -#define _gloffset_GetTexBumpParameterivATI 744 -#define _gloffset_TexBumpParameterfvATI 745 -#define _gloffset_TexBumpParameterivATI 746 -#define _gloffset_AlphaFragmentOp1ATI 747 -#define _gloffset_AlphaFragmentOp2ATI 748 -#define _gloffset_AlphaFragmentOp3ATI 749 -#define _gloffset_BeginFragmentShaderATI 750 -#define _gloffset_BindFragmentShaderATI 751 -#define _gloffset_ColorFragmentOp1ATI 752 -#define _gloffset_ColorFragmentOp2ATI 753 -#define _gloffset_ColorFragmentOp3ATI 754 -#define _gloffset_DeleteFragmentShaderATI 755 -#define _gloffset_EndFragmentShaderATI 756 -#define _gloffset_GenFragmentShadersATI 757 -#define _gloffset_PassTexCoordATI 758 -#define _gloffset_SampleMapATI 759 -#define _gloffset_SetFragmentShaderConstantATI 760 -#define _gloffset_PointParameteriNV 761 -#define _gloffset_PointParameterivNV 762 -#define _gloffset_ActiveStencilFaceEXT 763 -#define _gloffset_BindVertexArrayAPPLE 764 -#define _gloffset_DeleteVertexArraysAPPLE 765 -#define _gloffset_GenVertexArraysAPPLE 766 -#define _gloffset_IsVertexArrayAPPLE 767 -#define _gloffset_GetProgramNamedParameterdvNV 768 -#define _gloffset_GetProgramNamedParameterfvNV 769 -#define _gloffset_ProgramNamedParameter4dNV 770 -#define _gloffset_ProgramNamedParameter4dvNV 771 -#define _gloffset_ProgramNamedParameter4fNV 772 -#define _gloffset_ProgramNamedParameter4fvNV 773 -#define _gloffset_PrimitiveRestartIndexNV 774 -#define _gloffset_PrimitiveRestartNV 775 -#define _gloffset_DepthBoundsEXT 776 -#define _gloffset_BlendEquationSeparateEXT 777 -#define _gloffset_BindFramebufferEXT 778 -#define _gloffset_BindRenderbufferEXT 779 -#define _gloffset_CheckFramebufferStatusEXT 780 -#define _gloffset_DeleteFramebuffersEXT 781 -#define _gloffset_DeleteRenderbuffersEXT 782 -#define _gloffset_FramebufferRenderbufferEXT 783 -#define _gloffset_FramebufferTexture1DEXT 784 -#define _gloffset_FramebufferTexture2DEXT 785 -#define _gloffset_FramebufferTexture3DEXT 786 -#define _gloffset_GenFramebuffersEXT 787 -#define _gloffset_GenRenderbuffersEXT 788 -#define _gloffset_GenerateMipmapEXT 789 -#define _gloffset_GetFramebufferAttachmentParameterivEXT 790 -#define _gloffset_GetRenderbufferParameterivEXT 791 -#define _gloffset_IsFramebufferEXT 792 -#define _gloffset_IsRenderbufferEXT 793 -#define _gloffset_RenderbufferStorageEXT 794 -#define _gloffset_BlitFramebufferEXT 795 -#define _gloffset_BufferParameteriAPPLE 796 -#define _gloffset_FlushMappedBufferRangeAPPLE 797 -#define _gloffset_BindFragDataLocationEXT 798 -#define _gloffset_GetFragDataLocationEXT 799 -#define _gloffset_GetUniformuivEXT 800 -#define _gloffset_GetVertexAttribIivEXT 801 -#define _gloffset_GetVertexAttribIuivEXT 802 -#define _gloffset_Uniform1uiEXT 803 -#define _gloffset_Uniform1uivEXT 804 -#define _gloffset_Uniform2uiEXT 805 -#define _gloffset_Uniform2uivEXT 806 -#define _gloffset_Uniform3uiEXT 807 -#define _gloffset_Uniform3uivEXT 808 -#define _gloffset_Uniform4uiEXT 809 -#define _gloffset_Uniform4uivEXT 810 -#define _gloffset_VertexAttribI1iEXT 811 -#define _gloffset_VertexAttribI1ivEXT 812 -#define _gloffset_VertexAttribI1uiEXT 813 -#define _gloffset_VertexAttribI1uivEXT 814 -#define _gloffset_VertexAttribI2iEXT 815 -#define _gloffset_VertexAttribI2ivEXT 816 -#define _gloffset_VertexAttribI2uiEXT 817 -#define _gloffset_VertexAttribI2uivEXT 818 -#define _gloffset_VertexAttribI3iEXT 819 -#define _gloffset_VertexAttribI3ivEXT 820 -#define _gloffset_VertexAttribI3uiEXT 821 -#define _gloffset_VertexAttribI3uivEXT 822 -#define _gloffset_VertexAttribI4bvEXT 823 -#define _gloffset_VertexAttribI4iEXT 824 -#define _gloffset_VertexAttribI4ivEXT 825 -#define _gloffset_VertexAttribI4svEXT 826 -#define _gloffset_VertexAttribI4ubvEXT 827 -#define _gloffset_VertexAttribI4uiEXT 828 -#define _gloffset_VertexAttribI4uivEXT 829 -#define _gloffset_VertexAttribI4usvEXT 830 -#define _gloffset_VertexAttribIPointerEXT 831 -#define _gloffset_FramebufferTextureLayerEXT 832 -#define _gloffset_ColorMaskIndexedEXT 833 -#define _gloffset_DisableIndexedEXT 834 -#define _gloffset_EnableIndexedEXT 835 -#define _gloffset_GetBooleanIndexedvEXT 836 -#define _gloffset_GetIntegerIndexedvEXT 837 -#define _gloffset_IsEnabledIndexedEXT 838 -#define _gloffset_ClearColorIiEXT 839 -#define _gloffset_ClearColorIuiEXT 840 -#define _gloffset_GetTexParameterIivEXT 841 -#define _gloffset_GetTexParameterIuivEXT 842 -#define _gloffset_TexParameterIivEXT 843 -#define _gloffset_TexParameterIuivEXT 844 -#define _gloffset_BeginConditionalRenderNV 845 -#define _gloffset_EndConditionalRenderNV 846 -#define _gloffset_BeginTransformFeedbackEXT 847 -#define _gloffset_BindBufferBaseEXT 848 -#define _gloffset_BindBufferOffsetEXT 849 -#define _gloffset_BindBufferRangeEXT 850 -#define _gloffset_EndTransformFeedbackEXT 851 -#define _gloffset_GetTransformFeedbackVaryingEXT 852 -#define _gloffset_TransformFeedbackVaryingsEXT 853 -#define _gloffset_ProvokingVertexEXT 854 -#define _gloffset_GetTexParameterPointervAPPLE 855 -#define _gloffset_TextureRangeAPPLE 856 -#define _gloffset_GetObjectParameterivAPPLE 857 -#define _gloffset_ObjectPurgeableAPPLE 858 -#define _gloffset_ObjectUnpurgeableAPPLE 859 -#define _gloffset_ActiveProgramEXT 860 -#define _gloffset_CreateShaderProgramEXT 861 -#define _gloffset_UseShaderProgramEXT 862 -#define _gloffset_StencilFuncSeparateATI 863 -#define _gloffset_ProgramEnvParameters4fvEXT 864 -#define _gloffset_ProgramLocalParameters4fvEXT 865 -#define _gloffset_GetQueryObjecti64vEXT 866 -#define _gloffset_GetQueryObjectui64vEXT 867 -#define _gloffset_EGLImageTargetRenderbufferStorageOES 868 -#define _gloffset_EGLImageTargetTexture2DOES 869 +#define _gloffset_ClampColor 430 +#define _gloffset_ClearBufferfi 431 +#define _gloffset_ClearBufferfv 432 +#define _gloffset_ClearBufferiv 433 +#define _gloffset_ClearBufferuiv 434 +#define _gloffset_GetStringi 435 +#define _gloffset_TexBuffer 436 +#define _gloffset_FramebufferTexture 437 +#define _gloffset_GetBufferParameteri64v 438 +#define _gloffset_GetInteger64i_v 439 +#define _gloffset_VertexAttribDivisor 440 +#define _gloffset_LoadTransposeMatrixdARB 441 +#define _gloffset_LoadTransposeMatrixfARB 442 +#define _gloffset_MultTransposeMatrixdARB 443 +#define _gloffset_MultTransposeMatrixfARB 444 +#define _gloffset_SampleCoverageARB 445 +#define _gloffset_CompressedTexImage1DARB 446 +#define _gloffset_CompressedTexImage2DARB 447 +#define _gloffset_CompressedTexImage3DARB 448 +#define _gloffset_CompressedTexSubImage1DARB 449 +#define _gloffset_CompressedTexSubImage2DARB 450 +#define _gloffset_CompressedTexSubImage3DARB 451 +#define _gloffset_GetCompressedTexImageARB 452 +#define _gloffset_DisableVertexAttribArrayARB 453 +#define _gloffset_EnableVertexAttribArrayARB 454 +#define _gloffset_GetProgramEnvParameterdvARB 455 +#define _gloffset_GetProgramEnvParameterfvARB 456 +#define _gloffset_GetProgramLocalParameterdvARB 457 +#define _gloffset_GetProgramLocalParameterfvARB 458 +#define _gloffset_GetProgramStringARB 459 +#define _gloffset_GetProgramivARB 460 +#define _gloffset_GetVertexAttribdvARB 461 +#define _gloffset_GetVertexAttribfvARB 462 +#define _gloffset_GetVertexAttribivARB 463 +#define _gloffset_ProgramEnvParameter4dARB 464 +#define _gloffset_ProgramEnvParameter4dvARB 465 +#define _gloffset_ProgramEnvParameter4fARB 466 +#define _gloffset_ProgramEnvParameter4fvARB 467 +#define _gloffset_ProgramLocalParameter4dARB 468 +#define _gloffset_ProgramLocalParameter4dvARB 469 +#define _gloffset_ProgramLocalParameter4fARB 470 +#define _gloffset_ProgramLocalParameter4fvARB 471 +#define _gloffset_ProgramStringARB 472 +#define _gloffset_VertexAttrib1dARB 473 +#define _gloffset_VertexAttrib1dvARB 474 +#define _gloffset_VertexAttrib1fARB 475 +#define _gloffset_VertexAttrib1fvARB 476 +#define _gloffset_VertexAttrib1sARB 477 +#define _gloffset_VertexAttrib1svARB 478 +#define _gloffset_VertexAttrib2dARB 479 +#define _gloffset_VertexAttrib2dvARB 480 +#define _gloffset_VertexAttrib2fARB 481 +#define _gloffset_VertexAttrib2fvARB 482 +#define _gloffset_VertexAttrib2sARB 483 +#define _gloffset_VertexAttrib2svARB 484 +#define _gloffset_VertexAttrib3dARB 485 +#define _gloffset_VertexAttrib3dvARB 486 +#define _gloffset_VertexAttrib3fARB 487 +#define _gloffset_VertexAttrib3fvARB 488 +#define _gloffset_VertexAttrib3sARB 489 +#define _gloffset_VertexAttrib3svARB 490 +#define _gloffset_VertexAttrib4NbvARB 491 +#define _gloffset_VertexAttrib4NivARB 492 +#define _gloffset_VertexAttrib4NsvARB 493 +#define _gloffset_VertexAttrib4NubARB 494 +#define _gloffset_VertexAttrib4NubvARB 495 +#define _gloffset_VertexAttrib4NuivARB 496 +#define _gloffset_VertexAttrib4NusvARB 497 +#define _gloffset_VertexAttrib4bvARB 498 +#define _gloffset_VertexAttrib4dARB 499 +#define _gloffset_VertexAttrib4dvARB 500 +#define _gloffset_VertexAttrib4fARB 501 +#define _gloffset_VertexAttrib4fvARB 502 +#define _gloffset_VertexAttrib4ivARB 503 +#define _gloffset_VertexAttrib4sARB 504 +#define _gloffset_VertexAttrib4svARB 505 +#define _gloffset_VertexAttrib4ubvARB 506 +#define _gloffset_VertexAttrib4uivARB 507 +#define _gloffset_VertexAttrib4usvARB 508 +#define _gloffset_VertexAttribPointerARB 509 +#define _gloffset_BindBufferARB 510 +#define _gloffset_BufferDataARB 511 +#define _gloffset_BufferSubDataARB 512 +#define _gloffset_DeleteBuffersARB 513 +#define _gloffset_GenBuffersARB 514 +#define _gloffset_GetBufferParameterivARB 515 +#define _gloffset_GetBufferPointervARB 516 +#define _gloffset_GetBufferSubDataARB 517 +#define _gloffset_IsBufferARB 518 +#define _gloffset_MapBufferARB 519 +#define _gloffset_UnmapBufferARB 520 +#define _gloffset_BeginQueryARB 521 +#define _gloffset_DeleteQueriesARB 522 +#define _gloffset_EndQueryARB 523 +#define _gloffset_GenQueriesARB 524 +#define _gloffset_GetQueryObjectivARB 525 +#define _gloffset_GetQueryObjectuivARB 526 +#define _gloffset_GetQueryivARB 527 +#define _gloffset_IsQueryARB 528 +#define _gloffset_AttachObjectARB 529 +#define _gloffset_CompileShaderARB 530 +#define _gloffset_CreateProgramObjectARB 531 +#define _gloffset_CreateShaderObjectARB 532 +#define _gloffset_DeleteObjectARB 533 +#define _gloffset_DetachObjectARB 534 +#define _gloffset_GetActiveUniformARB 535 +#define _gloffset_GetAttachedObjectsARB 536 +#define _gloffset_GetHandleARB 537 +#define _gloffset_GetInfoLogARB 538 +#define _gloffset_GetObjectParameterfvARB 539 +#define _gloffset_GetObjectParameterivARB 540 +#define _gloffset_GetShaderSourceARB 541 +#define _gloffset_GetUniformLocationARB 542 +#define _gloffset_GetUniformfvARB 543 +#define _gloffset_GetUniformivARB 544 +#define _gloffset_LinkProgramARB 545 +#define _gloffset_ShaderSourceARB 546 +#define _gloffset_Uniform1fARB 547 +#define _gloffset_Uniform1fvARB 548 +#define _gloffset_Uniform1iARB 549 +#define _gloffset_Uniform1ivARB 550 +#define _gloffset_Uniform2fARB 551 +#define _gloffset_Uniform2fvARB 552 +#define _gloffset_Uniform2iARB 553 +#define _gloffset_Uniform2ivARB 554 +#define _gloffset_Uniform3fARB 555 +#define _gloffset_Uniform3fvARB 556 +#define _gloffset_Uniform3iARB 557 +#define _gloffset_Uniform3ivARB 558 +#define _gloffset_Uniform4fARB 559 +#define _gloffset_Uniform4fvARB 560 +#define _gloffset_Uniform4iARB 561 +#define _gloffset_Uniform4ivARB 562 +#define _gloffset_UniformMatrix2fvARB 563 +#define _gloffset_UniformMatrix3fvARB 564 +#define _gloffset_UniformMatrix4fvARB 565 +#define _gloffset_UseProgramObjectARB 566 +#define _gloffset_ValidateProgramARB 567 +#define _gloffset_BindAttribLocationARB 568 +#define _gloffset_GetActiveAttribARB 569 +#define _gloffset_GetAttribLocationARB 570 +#define _gloffset_DrawBuffersARB 571 +#define _gloffset_DrawArraysInstancedARB 572 +#define _gloffset_DrawElementsInstancedARB 573 +#define _gloffset_RenderbufferStorageMultisample 574 +#define _gloffset_FramebufferTextureARB 575 +#define _gloffset_FramebufferTextureFaceARB 576 +#define _gloffset_ProgramParameteriARB 577 +#define _gloffset_FlushMappedBufferRange 578 +#define _gloffset_MapBufferRange 579 +#define _gloffset_BindVertexArray 580 +#define _gloffset_GenVertexArrays 581 +#define _gloffset_CopyBufferSubData 582 +#define _gloffset_ClientWaitSync 583 +#define _gloffset_DeleteSync 584 +#define _gloffset_FenceSync 585 +#define _gloffset_GetInteger64v 586 +#define _gloffset_GetSynciv 587 +#define _gloffset_IsSync 588 +#define _gloffset_WaitSync 589 +#define _gloffset_DrawElementsBaseVertex 590 +#define _gloffset_DrawRangeElementsBaseVertex 591 +#define _gloffset_MultiDrawElementsBaseVertex 592 +#define _gloffset_BindTransformFeedback 593 +#define _gloffset_DeleteTransformFeedbacks 594 +#define _gloffset_DrawTransformFeedback 595 +#define _gloffset_GenTransformFeedbacks 596 +#define _gloffset_IsTransformFeedback 597 +#define _gloffset_PauseTransformFeedback 598 +#define _gloffset_ResumeTransformFeedback 599 +#define _gloffset_PolygonOffsetEXT 600 +#define _gloffset_GetPixelTexGenParameterfvSGIS 601 +#define _gloffset_GetPixelTexGenParameterivSGIS 602 +#define _gloffset_PixelTexGenParameterfSGIS 603 +#define _gloffset_PixelTexGenParameterfvSGIS 604 +#define _gloffset_PixelTexGenParameteriSGIS 605 +#define _gloffset_PixelTexGenParameterivSGIS 606 +#define _gloffset_SampleMaskSGIS 607 +#define _gloffset_SamplePatternSGIS 608 +#define _gloffset_ColorPointerEXT 609 +#define _gloffset_EdgeFlagPointerEXT 610 +#define _gloffset_IndexPointerEXT 611 +#define _gloffset_NormalPointerEXT 612 +#define _gloffset_TexCoordPointerEXT 613 +#define _gloffset_VertexPointerEXT 614 +#define _gloffset_PointParameterfEXT 615 +#define _gloffset_PointParameterfvEXT 616 +#define _gloffset_LockArraysEXT 617 +#define _gloffset_UnlockArraysEXT 618 +#define _gloffset_SecondaryColor3bEXT 619 +#define _gloffset_SecondaryColor3bvEXT 620 +#define _gloffset_SecondaryColor3dEXT 621 +#define _gloffset_SecondaryColor3dvEXT 622 +#define _gloffset_SecondaryColor3fEXT 623 +#define _gloffset_SecondaryColor3fvEXT 624 +#define _gloffset_SecondaryColor3iEXT 625 +#define _gloffset_SecondaryColor3ivEXT 626 +#define _gloffset_SecondaryColor3sEXT 627 +#define _gloffset_SecondaryColor3svEXT 628 +#define _gloffset_SecondaryColor3ubEXT 629 +#define _gloffset_SecondaryColor3ubvEXT 630 +#define _gloffset_SecondaryColor3uiEXT 631 +#define _gloffset_SecondaryColor3uivEXT 632 +#define _gloffset_SecondaryColor3usEXT 633 +#define _gloffset_SecondaryColor3usvEXT 634 +#define _gloffset_SecondaryColorPointerEXT 635 +#define _gloffset_MultiDrawArraysEXT 636 +#define _gloffset_MultiDrawElementsEXT 637 +#define _gloffset_FogCoordPointerEXT 638 +#define _gloffset_FogCoorddEXT 639 +#define _gloffset_FogCoorddvEXT 640 +#define _gloffset_FogCoordfEXT 641 +#define _gloffset_FogCoordfvEXT 642 +#define _gloffset_PixelTexGenSGIX 643 +#define _gloffset_BlendFuncSeparateEXT 644 +#define _gloffset_FlushVertexArrayRangeNV 645 +#define _gloffset_VertexArrayRangeNV 646 +#define _gloffset_CombinerInputNV 647 +#define _gloffset_CombinerOutputNV 648 +#define _gloffset_CombinerParameterfNV 649 +#define _gloffset_CombinerParameterfvNV 650 +#define _gloffset_CombinerParameteriNV 651 +#define _gloffset_CombinerParameterivNV 652 +#define _gloffset_FinalCombinerInputNV 653 +#define _gloffset_GetCombinerInputParameterfvNV 654 +#define _gloffset_GetCombinerInputParameterivNV 655 +#define _gloffset_GetCombinerOutputParameterfvNV 656 +#define _gloffset_GetCombinerOutputParameterivNV 657 +#define _gloffset_GetFinalCombinerInputParameterfvNV 658 +#define _gloffset_GetFinalCombinerInputParameterivNV 659 +#define _gloffset_ResizeBuffersMESA 660 +#define _gloffset_WindowPos2dMESA 661 +#define _gloffset_WindowPos2dvMESA 662 +#define _gloffset_WindowPos2fMESA 663 +#define _gloffset_WindowPos2fvMESA 664 +#define _gloffset_WindowPos2iMESA 665 +#define _gloffset_WindowPos2ivMESA 666 +#define _gloffset_WindowPos2sMESA 667 +#define _gloffset_WindowPos2svMESA 668 +#define _gloffset_WindowPos3dMESA 669 +#define _gloffset_WindowPos3dvMESA 670 +#define _gloffset_WindowPos3fMESA 671 +#define _gloffset_WindowPos3fvMESA 672 +#define _gloffset_WindowPos3iMESA 673 +#define _gloffset_WindowPos3ivMESA 674 +#define _gloffset_WindowPos3sMESA 675 +#define _gloffset_WindowPos3svMESA 676 +#define _gloffset_WindowPos4dMESA 677 +#define _gloffset_WindowPos4dvMESA 678 +#define _gloffset_WindowPos4fMESA 679 +#define _gloffset_WindowPos4fvMESA 680 +#define _gloffset_WindowPos4iMESA 681 +#define _gloffset_WindowPos4ivMESA 682 +#define _gloffset_WindowPos4sMESA 683 +#define _gloffset_WindowPos4svMESA 684 +#define _gloffset_MultiModeDrawArraysIBM 685 +#define _gloffset_MultiModeDrawElementsIBM 686 +#define _gloffset_DeleteFencesNV 687 +#define _gloffset_FinishFenceNV 688 +#define _gloffset_GenFencesNV 689 +#define _gloffset_GetFenceivNV 690 +#define _gloffset_IsFenceNV 691 +#define _gloffset_SetFenceNV 692 +#define _gloffset_TestFenceNV 693 +#define _gloffset_AreProgramsResidentNV 694 +#define _gloffset_BindProgramNV 695 +#define _gloffset_DeleteProgramsNV 696 +#define _gloffset_ExecuteProgramNV 697 +#define _gloffset_GenProgramsNV 698 +#define _gloffset_GetProgramParameterdvNV 699 +#define _gloffset_GetProgramParameterfvNV 700 +#define _gloffset_GetProgramStringNV 701 +#define _gloffset_GetProgramivNV 702 +#define _gloffset_GetTrackMatrixivNV 703 +#define _gloffset_GetVertexAttribPointervNV 704 +#define _gloffset_GetVertexAttribdvNV 705 +#define _gloffset_GetVertexAttribfvNV 706 +#define _gloffset_GetVertexAttribivNV 707 +#define _gloffset_IsProgramNV 708 +#define _gloffset_LoadProgramNV 709 +#define _gloffset_ProgramParameters4dvNV 710 +#define _gloffset_ProgramParameters4fvNV 711 +#define _gloffset_RequestResidentProgramsNV 712 +#define _gloffset_TrackMatrixNV 713 +#define _gloffset_VertexAttrib1dNV 714 +#define _gloffset_VertexAttrib1dvNV 715 +#define _gloffset_VertexAttrib1fNV 716 +#define _gloffset_VertexAttrib1fvNV 717 +#define _gloffset_VertexAttrib1sNV 718 +#define _gloffset_VertexAttrib1svNV 719 +#define _gloffset_VertexAttrib2dNV 720 +#define _gloffset_VertexAttrib2dvNV 721 +#define _gloffset_VertexAttrib2fNV 722 +#define _gloffset_VertexAttrib2fvNV 723 +#define _gloffset_VertexAttrib2sNV 724 +#define _gloffset_VertexAttrib2svNV 725 +#define _gloffset_VertexAttrib3dNV 726 +#define _gloffset_VertexAttrib3dvNV 727 +#define _gloffset_VertexAttrib3fNV 728 +#define _gloffset_VertexAttrib3fvNV 729 +#define _gloffset_VertexAttrib3sNV 730 +#define _gloffset_VertexAttrib3svNV 731 +#define _gloffset_VertexAttrib4dNV 732 +#define _gloffset_VertexAttrib4dvNV 733 +#define _gloffset_VertexAttrib4fNV 734 +#define _gloffset_VertexAttrib4fvNV 735 +#define _gloffset_VertexAttrib4sNV 736 +#define _gloffset_VertexAttrib4svNV 737 +#define _gloffset_VertexAttrib4ubNV 738 +#define _gloffset_VertexAttrib4ubvNV 739 +#define _gloffset_VertexAttribPointerNV 740 +#define _gloffset_VertexAttribs1dvNV 741 +#define _gloffset_VertexAttribs1fvNV 742 +#define _gloffset_VertexAttribs1svNV 743 +#define _gloffset_VertexAttribs2dvNV 744 +#define _gloffset_VertexAttribs2fvNV 745 +#define _gloffset_VertexAttribs2svNV 746 +#define _gloffset_VertexAttribs3dvNV 747 +#define _gloffset_VertexAttribs3fvNV 748 +#define _gloffset_VertexAttribs3svNV 749 +#define _gloffset_VertexAttribs4dvNV 750 +#define _gloffset_VertexAttribs4fvNV 751 +#define _gloffset_VertexAttribs4svNV 752 +#define _gloffset_VertexAttribs4ubvNV 753 +#define _gloffset_GetTexBumpParameterfvATI 754 +#define _gloffset_GetTexBumpParameterivATI 755 +#define _gloffset_TexBumpParameterfvATI 756 +#define _gloffset_TexBumpParameterivATI 757 +#define _gloffset_AlphaFragmentOp1ATI 758 +#define _gloffset_AlphaFragmentOp2ATI 759 +#define _gloffset_AlphaFragmentOp3ATI 760 +#define _gloffset_BeginFragmentShaderATI 761 +#define _gloffset_BindFragmentShaderATI 762 +#define _gloffset_ColorFragmentOp1ATI 763 +#define _gloffset_ColorFragmentOp2ATI 764 +#define _gloffset_ColorFragmentOp3ATI 765 +#define _gloffset_DeleteFragmentShaderATI 766 +#define _gloffset_EndFragmentShaderATI 767 +#define _gloffset_GenFragmentShadersATI 768 +#define _gloffset_PassTexCoordATI 769 +#define _gloffset_SampleMapATI 770 +#define _gloffset_SetFragmentShaderConstantATI 771 +#define _gloffset_PointParameteriNV 772 +#define _gloffset_PointParameterivNV 773 +#define _gloffset_ActiveStencilFaceEXT 774 +#define _gloffset_BindVertexArrayAPPLE 775 +#define _gloffset_DeleteVertexArraysAPPLE 776 +#define _gloffset_GenVertexArraysAPPLE 777 +#define _gloffset_IsVertexArrayAPPLE 778 +#define _gloffset_GetProgramNamedParameterdvNV 779 +#define _gloffset_GetProgramNamedParameterfvNV 780 +#define _gloffset_ProgramNamedParameter4dNV 781 +#define _gloffset_ProgramNamedParameter4dvNV 782 +#define _gloffset_ProgramNamedParameter4fNV 783 +#define _gloffset_ProgramNamedParameter4fvNV 784 +#define _gloffset_PrimitiveRestartIndexNV 785 +#define _gloffset_PrimitiveRestartNV 786 +#define _gloffset_DepthBoundsEXT 787 +#define _gloffset_BlendEquationSeparateEXT 788 +#define _gloffset_BindFramebufferEXT 789 +#define _gloffset_BindRenderbufferEXT 790 +#define _gloffset_CheckFramebufferStatusEXT 791 +#define _gloffset_DeleteFramebuffersEXT 792 +#define _gloffset_DeleteRenderbuffersEXT 793 +#define _gloffset_FramebufferRenderbufferEXT 794 +#define _gloffset_FramebufferTexture1DEXT 795 +#define _gloffset_FramebufferTexture2DEXT 796 +#define _gloffset_FramebufferTexture3DEXT 797 +#define _gloffset_GenFramebuffersEXT 798 +#define _gloffset_GenRenderbuffersEXT 799 +#define _gloffset_GenerateMipmapEXT 800 +#define _gloffset_GetFramebufferAttachmentParameterivEXT 801 +#define _gloffset_GetRenderbufferParameterivEXT 802 +#define _gloffset_IsFramebufferEXT 803 +#define _gloffset_IsRenderbufferEXT 804 +#define _gloffset_RenderbufferStorageEXT 805 +#define _gloffset_BlitFramebufferEXT 806 +#define _gloffset_BufferParameteriAPPLE 807 +#define _gloffset_FlushMappedBufferRangeAPPLE 808 +#define _gloffset_BindFragDataLocationEXT 809 +#define _gloffset_GetFragDataLocationEXT 810 +#define _gloffset_GetUniformuivEXT 811 +#define _gloffset_GetVertexAttribIivEXT 812 +#define _gloffset_GetVertexAttribIuivEXT 813 +#define _gloffset_Uniform1uiEXT 814 +#define _gloffset_Uniform1uivEXT 815 +#define _gloffset_Uniform2uiEXT 816 +#define _gloffset_Uniform2uivEXT 817 +#define _gloffset_Uniform3uiEXT 818 +#define _gloffset_Uniform3uivEXT 819 +#define _gloffset_Uniform4uiEXT 820 +#define _gloffset_Uniform4uivEXT 821 +#define _gloffset_VertexAttribI1iEXT 822 +#define _gloffset_VertexAttribI1ivEXT 823 +#define _gloffset_VertexAttribI1uiEXT 824 +#define _gloffset_VertexAttribI1uivEXT 825 +#define _gloffset_VertexAttribI2iEXT 826 +#define _gloffset_VertexAttribI2ivEXT 827 +#define _gloffset_VertexAttribI2uiEXT 828 +#define _gloffset_VertexAttribI2uivEXT 829 +#define _gloffset_VertexAttribI3iEXT 830 +#define _gloffset_VertexAttribI3ivEXT 831 +#define _gloffset_VertexAttribI3uiEXT 832 +#define _gloffset_VertexAttribI3uivEXT 833 +#define _gloffset_VertexAttribI4bvEXT 834 +#define _gloffset_VertexAttribI4iEXT 835 +#define _gloffset_VertexAttribI4ivEXT 836 +#define _gloffset_VertexAttribI4svEXT 837 +#define _gloffset_VertexAttribI4ubvEXT 838 +#define _gloffset_VertexAttribI4uiEXT 839 +#define _gloffset_VertexAttribI4uivEXT 840 +#define _gloffset_VertexAttribI4usvEXT 841 +#define _gloffset_VertexAttribIPointerEXT 842 +#define _gloffset_FramebufferTextureLayerEXT 843 +#define _gloffset_ColorMaskIndexedEXT 844 +#define _gloffset_DisableIndexedEXT 845 +#define _gloffset_EnableIndexedEXT 846 +#define _gloffset_GetBooleanIndexedvEXT 847 +#define _gloffset_GetIntegerIndexedvEXT 848 +#define _gloffset_IsEnabledIndexedEXT 849 +#define _gloffset_ClearColorIiEXT 850 +#define _gloffset_ClearColorIuiEXT 851 +#define _gloffset_GetTexParameterIivEXT 852 +#define _gloffset_GetTexParameterIuivEXT 853 +#define _gloffset_TexParameterIivEXT 854 +#define _gloffset_TexParameterIuivEXT 855 +#define _gloffset_BeginConditionalRenderNV 856 +#define _gloffset_EndConditionalRenderNV 857 +#define _gloffset_BeginTransformFeedbackEXT 858 +#define _gloffset_BindBufferBaseEXT 859 +#define _gloffset_BindBufferOffsetEXT 860 +#define _gloffset_BindBufferRangeEXT 861 +#define _gloffset_EndTransformFeedbackEXT 862 +#define _gloffset_GetTransformFeedbackVaryingEXT 863 +#define _gloffset_TransformFeedbackVaryingsEXT 864 +#define _gloffset_ProvokingVertexEXT 865 +#define _gloffset_GetTexParameterPointervAPPLE 866 +#define _gloffset_TextureRangeAPPLE 867 +#define _gloffset_GetObjectParameterivAPPLE 868 +#define _gloffset_ObjectPurgeableAPPLE 869 +#define _gloffset_ObjectUnpurgeableAPPLE 870 +#define _gloffset_ActiveProgramEXT 871 +#define _gloffset_CreateShaderProgramEXT 872 +#define _gloffset_UseShaderProgramEXT 873 +#define _gloffset_StencilFuncSeparateATI 874 +#define _gloffset_ProgramEnvParameters4fvEXT 875 +#define _gloffset_ProgramLocalParameters4fvEXT 876 +#define _gloffset_GetQueryObjecti64vEXT 877 +#define _gloffset_GetQueryObjectui64vEXT 878 +#define _gloffset_EGLImageTargetRenderbufferStorageOES 879 +#define _gloffset_EGLImageTargetTexture2DOES 880 #else /* !_GLAPI_USE_REMAP_TABLE */ -#define driDispatchRemapTable_size 462 +#define driDispatchRemapTable_size 473 extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define AttachShader_remap_index 0 @@ -962,446 +973,457 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define UniformMatrix3x4fv_remap_index 19 #define UniformMatrix4x2fv_remap_index 20 #define UniformMatrix4x3fv_remap_index 21 -#define DrawArraysInstanced_remap_index 22 -#define DrawElementsInstanced_remap_index 23 -#define LoadTransposeMatrixdARB_remap_index 24 -#define LoadTransposeMatrixfARB_remap_index 25 -#define MultTransposeMatrixdARB_remap_index 26 -#define MultTransposeMatrixfARB_remap_index 27 -#define SampleCoverageARB_remap_index 28 -#define CompressedTexImage1DARB_remap_index 29 -#define CompressedTexImage2DARB_remap_index 30 -#define CompressedTexImage3DARB_remap_index 31 -#define CompressedTexSubImage1DARB_remap_index 32 -#define CompressedTexSubImage2DARB_remap_index 33 -#define CompressedTexSubImage3DARB_remap_index 34 -#define GetCompressedTexImageARB_remap_index 35 -#define DisableVertexAttribArrayARB_remap_index 36 -#define EnableVertexAttribArrayARB_remap_index 37 -#define GetProgramEnvParameterdvARB_remap_index 38 -#define GetProgramEnvParameterfvARB_remap_index 39 -#define GetProgramLocalParameterdvARB_remap_index 40 -#define GetProgramLocalParameterfvARB_remap_index 41 -#define GetProgramStringARB_remap_index 42 -#define GetProgramivARB_remap_index 43 -#define GetVertexAttribdvARB_remap_index 44 -#define GetVertexAttribfvARB_remap_index 45 -#define GetVertexAttribivARB_remap_index 46 -#define ProgramEnvParameter4dARB_remap_index 47 -#define ProgramEnvParameter4dvARB_remap_index 48 -#define ProgramEnvParameter4fARB_remap_index 49 -#define ProgramEnvParameter4fvARB_remap_index 50 -#define ProgramLocalParameter4dARB_remap_index 51 -#define ProgramLocalParameter4dvARB_remap_index 52 -#define ProgramLocalParameter4fARB_remap_index 53 -#define ProgramLocalParameter4fvARB_remap_index 54 -#define ProgramStringARB_remap_index 55 -#define VertexAttrib1dARB_remap_index 56 -#define VertexAttrib1dvARB_remap_index 57 -#define VertexAttrib1fARB_remap_index 58 -#define VertexAttrib1fvARB_remap_index 59 -#define VertexAttrib1sARB_remap_index 60 -#define VertexAttrib1svARB_remap_index 61 -#define VertexAttrib2dARB_remap_index 62 -#define VertexAttrib2dvARB_remap_index 63 -#define VertexAttrib2fARB_remap_index 64 -#define VertexAttrib2fvARB_remap_index 65 -#define VertexAttrib2sARB_remap_index 66 -#define VertexAttrib2svARB_remap_index 67 -#define VertexAttrib3dARB_remap_index 68 -#define VertexAttrib3dvARB_remap_index 69 -#define VertexAttrib3fARB_remap_index 70 -#define VertexAttrib3fvARB_remap_index 71 -#define VertexAttrib3sARB_remap_index 72 -#define VertexAttrib3svARB_remap_index 73 -#define VertexAttrib4NbvARB_remap_index 74 -#define VertexAttrib4NivARB_remap_index 75 -#define VertexAttrib4NsvARB_remap_index 76 -#define VertexAttrib4NubARB_remap_index 77 -#define VertexAttrib4NubvARB_remap_index 78 -#define VertexAttrib4NuivARB_remap_index 79 -#define VertexAttrib4NusvARB_remap_index 80 -#define VertexAttrib4bvARB_remap_index 81 -#define VertexAttrib4dARB_remap_index 82 -#define VertexAttrib4dvARB_remap_index 83 -#define VertexAttrib4fARB_remap_index 84 -#define VertexAttrib4fvARB_remap_index 85 -#define VertexAttrib4ivARB_remap_index 86 -#define VertexAttrib4sARB_remap_index 87 -#define VertexAttrib4svARB_remap_index 88 -#define VertexAttrib4ubvARB_remap_index 89 -#define VertexAttrib4uivARB_remap_index 90 -#define VertexAttrib4usvARB_remap_index 91 -#define VertexAttribPointerARB_remap_index 92 -#define BindBufferARB_remap_index 93 -#define BufferDataARB_remap_index 94 -#define BufferSubDataARB_remap_index 95 -#define DeleteBuffersARB_remap_index 96 -#define GenBuffersARB_remap_index 97 -#define GetBufferParameterivARB_remap_index 98 -#define GetBufferPointervARB_remap_index 99 -#define GetBufferSubDataARB_remap_index 100 -#define IsBufferARB_remap_index 101 -#define MapBufferARB_remap_index 102 -#define UnmapBufferARB_remap_index 103 -#define BeginQueryARB_remap_index 104 -#define DeleteQueriesARB_remap_index 105 -#define EndQueryARB_remap_index 106 -#define GenQueriesARB_remap_index 107 -#define GetQueryObjectivARB_remap_index 108 -#define GetQueryObjectuivARB_remap_index 109 -#define GetQueryivARB_remap_index 110 -#define IsQueryARB_remap_index 111 -#define AttachObjectARB_remap_index 112 -#define CompileShaderARB_remap_index 113 -#define CreateProgramObjectARB_remap_index 114 -#define CreateShaderObjectARB_remap_index 115 -#define DeleteObjectARB_remap_index 116 -#define DetachObjectARB_remap_index 117 -#define GetActiveUniformARB_remap_index 118 -#define GetAttachedObjectsARB_remap_index 119 -#define GetHandleARB_remap_index 120 -#define GetInfoLogARB_remap_index 121 -#define GetObjectParameterfvARB_remap_index 122 -#define GetObjectParameterivARB_remap_index 123 -#define GetShaderSourceARB_remap_index 124 -#define GetUniformLocationARB_remap_index 125 -#define GetUniformfvARB_remap_index 126 -#define GetUniformivARB_remap_index 127 -#define LinkProgramARB_remap_index 128 -#define ShaderSourceARB_remap_index 129 -#define Uniform1fARB_remap_index 130 -#define Uniform1fvARB_remap_index 131 -#define Uniform1iARB_remap_index 132 -#define Uniform1ivARB_remap_index 133 -#define Uniform2fARB_remap_index 134 -#define Uniform2fvARB_remap_index 135 -#define Uniform2iARB_remap_index 136 -#define Uniform2ivARB_remap_index 137 -#define Uniform3fARB_remap_index 138 -#define Uniform3fvARB_remap_index 139 -#define Uniform3iARB_remap_index 140 -#define Uniform3ivARB_remap_index 141 -#define Uniform4fARB_remap_index 142 -#define Uniform4fvARB_remap_index 143 -#define Uniform4iARB_remap_index 144 -#define Uniform4ivARB_remap_index 145 -#define UniformMatrix2fvARB_remap_index 146 -#define UniformMatrix3fvARB_remap_index 147 -#define UniformMatrix4fvARB_remap_index 148 -#define UseProgramObjectARB_remap_index 149 -#define ValidateProgramARB_remap_index 150 -#define BindAttribLocationARB_remap_index 151 -#define GetActiveAttribARB_remap_index 152 -#define GetAttribLocationARB_remap_index 153 -#define DrawBuffersARB_remap_index 154 -#define RenderbufferStorageMultisample_remap_index 155 -#define FramebufferTextureARB_remap_index 156 -#define FramebufferTextureFaceARB_remap_index 157 -#define ProgramParameteriARB_remap_index 158 -#define FlushMappedBufferRange_remap_index 159 -#define MapBufferRange_remap_index 160 -#define BindVertexArray_remap_index 161 -#define GenVertexArrays_remap_index 162 -#define CopyBufferSubData_remap_index 163 -#define ClientWaitSync_remap_index 164 -#define DeleteSync_remap_index 165 -#define FenceSync_remap_index 166 -#define GetInteger64v_remap_index 167 -#define GetSynciv_remap_index 168 -#define IsSync_remap_index 169 -#define WaitSync_remap_index 170 -#define DrawElementsBaseVertex_remap_index 171 -#define DrawRangeElementsBaseVertex_remap_index 172 -#define MultiDrawElementsBaseVertex_remap_index 173 -#define BindTransformFeedback_remap_index 174 -#define DeleteTransformFeedbacks_remap_index 175 -#define DrawTransformFeedback_remap_index 176 -#define GenTransformFeedbacks_remap_index 177 -#define IsTransformFeedback_remap_index 178 -#define PauseTransformFeedback_remap_index 179 -#define ResumeTransformFeedback_remap_index 180 -#define PolygonOffsetEXT_remap_index 181 -#define GetPixelTexGenParameterfvSGIS_remap_index 182 -#define GetPixelTexGenParameterivSGIS_remap_index 183 -#define PixelTexGenParameterfSGIS_remap_index 184 -#define PixelTexGenParameterfvSGIS_remap_index 185 -#define PixelTexGenParameteriSGIS_remap_index 186 -#define PixelTexGenParameterivSGIS_remap_index 187 -#define SampleMaskSGIS_remap_index 188 -#define SamplePatternSGIS_remap_index 189 -#define ColorPointerEXT_remap_index 190 -#define EdgeFlagPointerEXT_remap_index 191 -#define IndexPointerEXT_remap_index 192 -#define NormalPointerEXT_remap_index 193 -#define TexCoordPointerEXT_remap_index 194 -#define VertexPointerEXT_remap_index 195 -#define PointParameterfEXT_remap_index 196 -#define PointParameterfvEXT_remap_index 197 -#define LockArraysEXT_remap_index 198 -#define UnlockArraysEXT_remap_index 199 -#define SecondaryColor3bEXT_remap_index 200 -#define SecondaryColor3bvEXT_remap_index 201 -#define SecondaryColor3dEXT_remap_index 202 -#define SecondaryColor3dvEXT_remap_index 203 -#define SecondaryColor3fEXT_remap_index 204 -#define SecondaryColor3fvEXT_remap_index 205 -#define SecondaryColor3iEXT_remap_index 206 -#define SecondaryColor3ivEXT_remap_index 207 -#define SecondaryColor3sEXT_remap_index 208 -#define SecondaryColor3svEXT_remap_index 209 -#define SecondaryColor3ubEXT_remap_index 210 -#define SecondaryColor3ubvEXT_remap_index 211 -#define SecondaryColor3uiEXT_remap_index 212 -#define SecondaryColor3uivEXT_remap_index 213 -#define SecondaryColor3usEXT_remap_index 214 -#define SecondaryColor3usvEXT_remap_index 215 -#define SecondaryColorPointerEXT_remap_index 216 -#define MultiDrawArraysEXT_remap_index 217 -#define MultiDrawElementsEXT_remap_index 218 -#define FogCoordPointerEXT_remap_index 219 -#define FogCoorddEXT_remap_index 220 -#define FogCoorddvEXT_remap_index 221 -#define FogCoordfEXT_remap_index 222 -#define FogCoordfvEXT_remap_index 223 -#define PixelTexGenSGIX_remap_index 224 -#define BlendFuncSeparateEXT_remap_index 225 -#define FlushVertexArrayRangeNV_remap_index 226 -#define VertexArrayRangeNV_remap_index 227 -#define CombinerInputNV_remap_index 228 -#define CombinerOutputNV_remap_index 229 -#define CombinerParameterfNV_remap_index 230 -#define CombinerParameterfvNV_remap_index 231 -#define CombinerParameteriNV_remap_index 232 -#define CombinerParameterivNV_remap_index 233 -#define FinalCombinerInputNV_remap_index 234 -#define GetCombinerInputParameterfvNV_remap_index 235 -#define GetCombinerInputParameterivNV_remap_index 236 -#define GetCombinerOutputParameterfvNV_remap_index 237 -#define GetCombinerOutputParameterivNV_remap_index 238 -#define GetFinalCombinerInputParameterfvNV_remap_index 239 -#define GetFinalCombinerInputParameterivNV_remap_index 240 -#define ResizeBuffersMESA_remap_index 241 -#define WindowPos2dMESA_remap_index 242 -#define WindowPos2dvMESA_remap_index 243 -#define WindowPos2fMESA_remap_index 244 -#define WindowPos2fvMESA_remap_index 245 -#define WindowPos2iMESA_remap_index 246 -#define WindowPos2ivMESA_remap_index 247 -#define WindowPos2sMESA_remap_index 248 -#define WindowPos2svMESA_remap_index 249 -#define WindowPos3dMESA_remap_index 250 -#define WindowPos3dvMESA_remap_index 251 -#define WindowPos3fMESA_remap_index 252 -#define WindowPos3fvMESA_remap_index 253 -#define WindowPos3iMESA_remap_index 254 -#define WindowPos3ivMESA_remap_index 255 -#define WindowPos3sMESA_remap_index 256 -#define WindowPos3svMESA_remap_index 257 -#define WindowPos4dMESA_remap_index 258 -#define WindowPos4dvMESA_remap_index 259 -#define WindowPos4fMESA_remap_index 260 -#define WindowPos4fvMESA_remap_index 261 -#define WindowPos4iMESA_remap_index 262 -#define WindowPos4ivMESA_remap_index 263 -#define WindowPos4sMESA_remap_index 264 -#define WindowPos4svMESA_remap_index 265 -#define MultiModeDrawArraysIBM_remap_index 266 -#define MultiModeDrawElementsIBM_remap_index 267 -#define DeleteFencesNV_remap_index 268 -#define FinishFenceNV_remap_index 269 -#define GenFencesNV_remap_index 270 -#define GetFenceivNV_remap_index 271 -#define IsFenceNV_remap_index 272 -#define SetFenceNV_remap_index 273 -#define TestFenceNV_remap_index 274 -#define AreProgramsResidentNV_remap_index 275 -#define BindProgramNV_remap_index 276 -#define DeleteProgramsNV_remap_index 277 -#define ExecuteProgramNV_remap_index 278 -#define GenProgramsNV_remap_index 279 -#define GetProgramParameterdvNV_remap_index 280 -#define GetProgramParameterfvNV_remap_index 281 -#define GetProgramStringNV_remap_index 282 -#define GetProgramivNV_remap_index 283 -#define GetTrackMatrixivNV_remap_index 284 -#define GetVertexAttribPointervNV_remap_index 285 -#define GetVertexAttribdvNV_remap_index 286 -#define GetVertexAttribfvNV_remap_index 287 -#define GetVertexAttribivNV_remap_index 288 -#define IsProgramNV_remap_index 289 -#define LoadProgramNV_remap_index 290 -#define ProgramParameters4dvNV_remap_index 291 -#define ProgramParameters4fvNV_remap_index 292 -#define RequestResidentProgramsNV_remap_index 293 -#define TrackMatrixNV_remap_index 294 -#define VertexAttrib1dNV_remap_index 295 -#define VertexAttrib1dvNV_remap_index 296 -#define VertexAttrib1fNV_remap_index 297 -#define VertexAttrib1fvNV_remap_index 298 -#define VertexAttrib1sNV_remap_index 299 -#define VertexAttrib1svNV_remap_index 300 -#define VertexAttrib2dNV_remap_index 301 -#define VertexAttrib2dvNV_remap_index 302 -#define VertexAttrib2fNV_remap_index 303 -#define VertexAttrib2fvNV_remap_index 304 -#define VertexAttrib2sNV_remap_index 305 -#define VertexAttrib2svNV_remap_index 306 -#define VertexAttrib3dNV_remap_index 307 -#define VertexAttrib3dvNV_remap_index 308 -#define VertexAttrib3fNV_remap_index 309 -#define VertexAttrib3fvNV_remap_index 310 -#define VertexAttrib3sNV_remap_index 311 -#define VertexAttrib3svNV_remap_index 312 -#define VertexAttrib4dNV_remap_index 313 -#define VertexAttrib4dvNV_remap_index 314 -#define VertexAttrib4fNV_remap_index 315 -#define VertexAttrib4fvNV_remap_index 316 -#define VertexAttrib4sNV_remap_index 317 -#define VertexAttrib4svNV_remap_index 318 -#define VertexAttrib4ubNV_remap_index 319 -#define VertexAttrib4ubvNV_remap_index 320 -#define VertexAttribPointerNV_remap_index 321 -#define VertexAttribs1dvNV_remap_index 322 -#define VertexAttribs1fvNV_remap_index 323 -#define VertexAttribs1svNV_remap_index 324 -#define VertexAttribs2dvNV_remap_index 325 -#define VertexAttribs2fvNV_remap_index 326 -#define VertexAttribs2svNV_remap_index 327 -#define VertexAttribs3dvNV_remap_index 328 -#define VertexAttribs3fvNV_remap_index 329 -#define VertexAttribs3svNV_remap_index 330 -#define VertexAttribs4dvNV_remap_index 331 -#define VertexAttribs4fvNV_remap_index 332 -#define VertexAttribs4svNV_remap_index 333 -#define VertexAttribs4ubvNV_remap_index 334 -#define GetTexBumpParameterfvATI_remap_index 335 -#define GetTexBumpParameterivATI_remap_index 336 -#define TexBumpParameterfvATI_remap_index 337 -#define TexBumpParameterivATI_remap_index 338 -#define AlphaFragmentOp1ATI_remap_index 339 -#define AlphaFragmentOp2ATI_remap_index 340 -#define AlphaFragmentOp3ATI_remap_index 341 -#define BeginFragmentShaderATI_remap_index 342 -#define BindFragmentShaderATI_remap_index 343 -#define ColorFragmentOp1ATI_remap_index 344 -#define ColorFragmentOp2ATI_remap_index 345 -#define ColorFragmentOp3ATI_remap_index 346 -#define DeleteFragmentShaderATI_remap_index 347 -#define EndFragmentShaderATI_remap_index 348 -#define GenFragmentShadersATI_remap_index 349 -#define PassTexCoordATI_remap_index 350 -#define SampleMapATI_remap_index 351 -#define SetFragmentShaderConstantATI_remap_index 352 -#define PointParameteriNV_remap_index 353 -#define PointParameterivNV_remap_index 354 -#define ActiveStencilFaceEXT_remap_index 355 -#define BindVertexArrayAPPLE_remap_index 356 -#define DeleteVertexArraysAPPLE_remap_index 357 -#define GenVertexArraysAPPLE_remap_index 358 -#define IsVertexArrayAPPLE_remap_index 359 -#define GetProgramNamedParameterdvNV_remap_index 360 -#define GetProgramNamedParameterfvNV_remap_index 361 -#define ProgramNamedParameter4dNV_remap_index 362 -#define ProgramNamedParameter4dvNV_remap_index 363 -#define ProgramNamedParameter4fNV_remap_index 364 -#define ProgramNamedParameter4fvNV_remap_index 365 -#define PrimitiveRestartIndexNV_remap_index 366 -#define PrimitiveRestartNV_remap_index 367 -#define DepthBoundsEXT_remap_index 368 -#define BlendEquationSeparateEXT_remap_index 369 -#define BindFramebufferEXT_remap_index 370 -#define BindRenderbufferEXT_remap_index 371 -#define CheckFramebufferStatusEXT_remap_index 372 -#define DeleteFramebuffersEXT_remap_index 373 -#define DeleteRenderbuffersEXT_remap_index 374 -#define FramebufferRenderbufferEXT_remap_index 375 -#define FramebufferTexture1DEXT_remap_index 376 -#define FramebufferTexture2DEXT_remap_index 377 -#define FramebufferTexture3DEXT_remap_index 378 -#define GenFramebuffersEXT_remap_index 379 -#define GenRenderbuffersEXT_remap_index 380 -#define GenerateMipmapEXT_remap_index 381 -#define GetFramebufferAttachmentParameterivEXT_remap_index 382 -#define GetRenderbufferParameterivEXT_remap_index 383 -#define IsFramebufferEXT_remap_index 384 -#define IsRenderbufferEXT_remap_index 385 -#define RenderbufferStorageEXT_remap_index 386 -#define BlitFramebufferEXT_remap_index 387 -#define BufferParameteriAPPLE_remap_index 388 -#define FlushMappedBufferRangeAPPLE_remap_index 389 -#define BindFragDataLocationEXT_remap_index 390 -#define GetFragDataLocationEXT_remap_index 391 -#define GetUniformuivEXT_remap_index 392 -#define GetVertexAttribIivEXT_remap_index 393 -#define GetVertexAttribIuivEXT_remap_index 394 -#define Uniform1uiEXT_remap_index 395 -#define Uniform1uivEXT_remap_index 396 -#define Uniform2uiEXT_remap_index 397 -#define Uniform2uivEXT_remap_index 398 -#define Uniform3uiEXT_remap_index 399 -#define Uniform3uivEXT_remap_index 400 -#define Uniform4uiEXT_remap_index 401 -#define Uniform4uivEXT_remap_index 402 -#define VertexAttribI1iEXT_remap_index 403 -#define VertexAttribI1ivEXT_remap_index 404 -#define VertexAttribI1uiEXT_remap_index 405 -#define VertexAttribI1uivEXT_remap_index 406 -#define VertexAttribI2iEXT_remap_index 407 -#define VertexAttribI2ivEXT_remap_index 408 -#define VertexAttribI2uiEXT_remap_index 409 -#define VertexAttribI2uivEXT_remap_index 410 -#define VertexAttribI3iEXT_remap_index 411 -#define VertexAttribI3ivEXT_remap_index 412 -#define VertexAttribI3uiEXT_remap_index 413 -#define VertexAttribI3uivEXT_remap_index 414 -#define VertexAttribI4bvEXT_remap_index 415 -#define VertexAttribI4iEXT_remap_index 416 -#define VertexAttribI4ivEXT_remap_index 417 -#define VertexAttribI4svEXT_remap_index 418 -#define VertexAttribI4ubvEXT_remap_index 419 -#define VertexAttribI4uiEXT_remap_index 420 -#define VertexAttribI4uivEXT_remap_index 421 -#define VertexAttribI4usvEXT_remap_index 422 -#define VertexAttribIPointerEXT_remap_index 423 -#define FramebufferTextureLayerEXT_remap_index 424 -#define ColorMaskIndexedEXT_remap_index 425 -#define DisableIndexedEXT_remap_index 426 -#define EnableIndexedEXT_remap_index 427 -#define GetBooleanIndexedvEXT_remap_index 428 -#define GetIntegerIndexedvEXT_remap_index 429 -#define IsEnabledIndexedEXT_remap_index 430 -#define ClearColorIiEXT_remap_index 431 -#define ClearColorIuiEXT_remap_index 432 -#define GetTexParameterIivEXT_remap_index 433 -#define GetTexParameterIuivEXT_remap_index 434 -#define TexParameterIivEXT_remap_index 435 -#define TexParameterIuivEXT_remap_index 436 -#define BeginConditionalRenderNV_remap_index 437 -#define EndConditionalRenderNV_remap_index 438 -#define BeginTransformFeedbackEXT_remap_index 439 -#define BindBufferBaseEXT_remap_index 440 -#define BindBufferOffsetEXT_remap_index 441 -#define BindBufferRangeEXT_remap_index 442 -#define EndTransformFeedbackEXT_remap_index 443 -#define GetTransformFeedbackVaryingEXT_remap_index 444 -#define TransformFeedbackVaryingsEXT_remap_index 445 -#define ProvokingVertexEXT_remap_index 446 -#define GetTexParameterPointervAPPLE_remap_index 447 -#define TextureRangeAPPLE_remap_index 448 -#define GetObjectParameterivAPPLE_remap_index 449 -#define ObjectPurgeableAPPLE_remap_index 450 -#define ObjectUnpurgeableAPPLE_remap_index 451 -#define ActiveProgramEXT_remap_index 452 -#define CreateShaderProgramEXT_remap_index 453 -#define UseShaderProgramEXT_remap_index 454 -#define StencilFuncSeparateATI_remap_index 455 -#define ProgramEnvParameters4fvEXT_remap_index 456 -#define ProgramLocalParameters4fvEXT_remap_index 457 -#define GetQueryObjecti64vEXT_remap_index 458 -#define GetQueryObjectui64vEXT_remap_index 459 -#define EGLImageTargetRenderbufferStorageOES_remap_index 460 -#define EGLImageTargetTexture2DOES_remap_index 461 +#define ClampColor_remap_index 22 +#define ClearBufferfi_remap_index 23 +#define ClearBufferfv_remap_index 24 +#define ClearBufferiv_remap_index 25 +#define ClearBufferuiv_remap_index 26 +#define GetStringi_remap_index 27 +#define TexBuffer_remap_index 28 +#define FramebufferTexture_remap_index 29 +#define GetBufferParameteri64v_remap_index 30 +#define GetInteger64i_v_remap_index 31 +#define VertexAttribDivisor_remap_index 32 +#define LoadTransposeMatrixdARB_remap_index 33 +#define LoadTransposeMatrixfARB_remap_index 34 +#define MultTransposeMatrixdARB_remap_index 35 +#define MultTransposeMatrixfARB_remap_index 36 +#define SampleCoverageARB_remap_index 37 +#define CompressedTexImage1DARB_remap_index 38 +#define CompressedTexImage2DARB_remap_index 39 +#define CompressedTexImage3DARB_remap_index 40 +#define CompressedTexSubImage1DARB_remap_index 41 +#define CompressedTexSubImage2DARB_remap_index 42 +#define CompressedTexSubImage3DARB_remap_index 43 +#define GetCompressedTexImageARB_remap_index 44 +#define DisableVertexAttribArrayARB_remap_index 45 +#define EnableVertexAttribArrayARB_remap_index 46 +#define GetProgramEnvParameterdvARB_remap_index 47 +#define GetProgramEnvParameterfvARB_remap_index 48 +#define GetProgramLocalParameterdvARB_remap_index 49 +#define GetProgramLocalParameterfvARB_remap_index 50 +#define GetProgramStringARB_remap_index 51 +#define GetProgramivARB_remap_index 52 +#define GetVertexAttribdvARB_remap_index 53 +#define GetVertexAttribfvARB_remap_index 54 +#define GetVertexAttribivARB_remap_index 55 +#define ProgramEnvParameter4dARB_remap_index 56 +#define ProgramEnvParameter4dvARB_remap_index 57 +#define ProgramEnvParameter4fARB_remap_index 58 +#define ProgramEnvParameter4fvARB_remap_index 59 +#define ProgramLocalParameter4dARB_remap_index 60 +#define ProgramLocalParameter4dvARB_remap_index 61 +#define ProgramLocalParameter4fARB_remap_index 62 +#define ProgramLocalParameter4fvARB_remap_index 63 +#define ProgramStringARB_remap_index 64 +#define VertexAttrib1dARB_remap_index 65 +#define VertexAttrib1dvARB_remap_index 66 +#define VertexAttrib1fARB_remap_index 67 +#define VertexAttrib1fvARB_remap_index 68 +#define VertexAttrib1sARB_remap_index 69 +#define VertexAttrib1svARB_remap_index 70 +#define VertexAttrib2dARB_remap_index 71 +#define VertexAttrib2dvARB_remap_index 72 +#define VertexAttrib2fARB_remap_index 73 +#define VertexAttrib2fvARB_remap_index 74 +#define VertexAttrib2sARB_remap_index 75 +#define VertexAttrib2svARB_remap_index 76 +#define VertexAttrib3dARB_remap_index 77 +#define VertexAttrib3dvARB_remap_index 78 +#define VertexAttrib3fARB_remap_index 79 +#define VertexAttrib3fvARB_remap_index 80 +#define VertexAttrib3sARB_remap_index 81 +#define VertexAttrib3svARB_remap_index 82 +#define VertexAttrib4NbvARB_remap_index 83 +#define VertexAttrib4NivARB_remap_index 84 +#define VertexAttrib4NsvARB_remap_index 85 +#define VertexAttrib4NubARB_remap_index 86 +#define VertexAttrib4NubvARB_remap_index 87 +#define VertexAttrib4NuivARB_remap_index 88 +#define VertexAttrib4NusvARB_remap_index 89 +#define VertexAttrib4bvARB_remap_index 90 +#define VertexAttrib4dARB_remap_index 91 +#define VertexAttrib4dvARB_remap_index 92 +#define VertexAttrib4fARB_remap_index 93 +#define VertexAttrib4fvARB_remap_index 94 +#define VertexAttrib4ivARB_remap_index 95 +#define VertexAttrib4sARB_remap_index 96 +#define VertexAttrib4svARB_remap_index 97 +#define VertexAttrib4ubvARB_remap_index 98 +#define VertexAttrib4uivARB_remap_index 99 +#define VertexAttrib4usvARB_remap_index 100 +#define VertexAttribPointerARB_remap_index 101 +#define BindBufferARB_remap_index 102 +#define BufferDataARB_remap_index 103 +#define BufferSubDataARB_remap_index 104 +#define DeleteBuffersARB_remap_index 105 +#define GenBuffersARB_remap_index 106 +#define GetBufferParameterivARB_remap_index 107 +#define GetBufferPointervARB_remap_index 108 +#define GetBufferSubDataARB_remap_index 109 +#define IsBufferARB_remap_index 110 +#define MapBufferARB_remap_index 111 +#define UnmapBufferARB_remap_index 112 +#define BeginQueryARB_remap_index 113 +#define DeleteQueriesARB_remap_index 114 +#define EndQueryARB_remap_index 115 +#define GenQueriesARB_remap_index 116 +#define GetQueryObjectivARB_remap_index 117 +#define GetQueryObjectuivARB_remap_index 118 +#define GetQueryivARB_remap_index 119 +#define IsQueryARB_remap_index 120 +#define AttachObjectARB_remap_index 121 +#define CompileShaderARB_remap_index 122 +#define CreateProgramObjectARB_remap_index 123 +#define CreateShaderObjectARB_remap_index 124 +#define DeleteObjectARB_remap_index 125 +#define DetachObjectARB_remap_index 126 +#define GetActiveUniformARB_remap_index 127 +#define GetAttachedObjectsARB_remap_index 128 +#define GetHandleARB_remap_index 129 +#define GetInfoLogARB_remap_index 130 +#define GetObjectParameterfvARB_remap_index 131 +#define GetObjectParameterivARB_remap_index 132 +#define GetShaderSourceARB_remap_index 133 +#define GetUniformLocationARB_remap_index 134 +#define GetUniformfvARB_remap_index 135 +#define GetUniformivARB_remap_index 136 +#define LinkProgramARB_remap_index 137 +#define ShaderSourceARB_remap_index 138 +#define Uniform1fARB_remap_index 139 +#define Uniform1fvARB_remap_index 140 +#define Uniform1iARB_remap_index 141 +#define Uniform1ivARB_remap_index 142 +#define Uniform2fARB_remap_index 143 +#define Uniform2fvARB_remap_index 144 +#define Uniform2iARB_remap_index 145 +#define Uniform2ivARB_remap_index 146 +#define Uniform3fARB_remap_index 147 +#define Uniform3fvARB_remap_index 148 +#define Uniform3iARB_remap_index 149 +#define Uniform3ivARB_remap_index 150 +#define Uniform4fARB_remap_index 151 +#define Uniform4fvARB_remap_index 152 +#define Uniform4iARB_remap_index 153 +#define Uniform4ivARB_remap_index 154 +#define UniformMatrix2fvARB_remap_index 155 +#define UniformMatrix3fvARB_remap_index 156 +#define UniformMatrix4fvARB_remap_index 157 +#define UseProgramObjectARB_remap_index 158 +#define ValidateProgramARB_remap_index 159 +#define BindAttribLocationARB_remap_index 160 +#define GetActiveAttribARB_remap_index 161 +#define GetAttribLocationARB_remap_index 162 +#define DrawBuffersARB_remap_index 163 +#define DrawArraysInstancedARB_remap_index 164 +#define DrawElementsInstancedARB_remap_index 165 +#define RenderbufferStorageMultisample_remap_index 166 +#define FramebufferTextureARB_remap_index 167 +#define FramebufferTextureFaceARB_remap_index 168 +#define ProgramParameteriARB_remap_index 169 +#define FlushMappedBufferRange_remap_index 170 +#define MapBufferRange_remap_index 171 +#define BindVertexArray_remap_index 172 +#define GenVertexArrays_remap_index 173 +#define CopyBufferSubData_remap_index 174 +#define ClientWaitSync_remap_index 175 +#define DeleteSync_remap_index 176 +#define FenceSync_remap_index 177 +#define GetInteger64v_remap_index 178 +#define GetSynciv_remap_index 179 +#define IsSync_remap_index 180 +#define WaitSync_remap_index 181 +#define DrawElementsBaseVertex_remap_index 182 +#define DrawRangeElementsBaseVertex_remap_index 183 +#define MultiDrawElementsBaseVertex_remap_index 184 +#define BindTransformFeedback_remap_index 185 +#define DeleteTransformFeedbacks_remap_index 186 +#define DrawTransformFeedback_remap_index 187 +#define GenTransformFeedbacks_remap_index 188 +#define IsTransformFeedback_remap_index 189 +#define PauseTransformFeedback_remap_index 190 +#define ResumeTransformFeedback_remap_index 191 +#define PolygonOffsetEXT_remap_index 192 +#define GetPixelTexGenParameterfvSGIS_remap_index 193 +#define GetPixelTexGenParameterivSGIS_remap_index 194 +#define PixelTexGenParameterfSGIS_remap_index 195 +#define PixelTexGenParameterfvSGIS_remap_index 196 +#define PixelTexGenParameteriSGIS_remap_index 197 +#define PixelTexGenParameterivSGIS_remap_index 198 +#define SampleMaskSGIS_remap_index 199 +#define SamplePatternSGIS_remap_index 200 +#define ColorPointerEXT_remap_index 201 +#define EdgeFlagPointerEXT_remap_index 202 +#define IndexPointerEXT_remap_index 203 +#define NormalPointerEXT_remap_index 204 +#define TexCoordPointerEXT_remap_index 205 +#define VertexPointerEXT_remap_index 206 +#define PointParameterfEXT_remap_index 207 +#define PointParameterfvEXT_remap_index 208 +#define LockArraysEXT_remap_index 209 +#define UnlockArraysEXT_remap_index 210 +#define SecondaryColor3bEXT_remap_index 211 +#define SecondaryColor3bvEXT_remap_index 212 +#define SecondaryColor3dEXT_remap_index 213 +#define SecondaryColor3dvEXT_remap_index 214 +#define SecondaryColor3fEXT_remap_index 215 +#define SecondaryColor3fvEXT_remap_index 216 +#define SecondaryColor3iEXT_remap_index 217 +#define SecondaryColor3ivEXT_remap_index 218 +#define SecondaryColor3sEXT_remap_index 219 +#define SecondaryColor3svEXT_remap_index 220 +#define SecondaryColor3ubEXT_remap_index 221 +#define SecondaryColor3ubvEXT_remap_index 222 +#define SecondaryColor3uiEXT_remap_index 223 +#define SecondaryColor3uivEXT_remap_index 224 +#define SecondaryColor3usEXT_remap_index 225 +#define SecondaryColor3usvEXT_remap_index 226 +#define SecondaryColorPointerEXT_remap_index 227 +#define MultiDrawArraysEXT_remap_index 228 +#define MultiDrawElementsEXT_remap_index 229 +#define FogCoordPointerEXT_remap_index 230 +#define FogCoorddEXT_remap_index 231 +#define FogCoorddvEXT_remap_index 232 +#define FogCoordfEXT_remap_index 233 +#define FogCoordfvEXT_remap_index 234 +#define PixelTexGenSGIX_remap_index 235 +#define BlendFuncSeparateEXT_remap_index 236 +#define FlushVertexArrayRangeNV_remap_index 237 +#define VertexArrayRangeNV_remap_index 238 +#define CombinerInputNV_remap_index 239 +#define CombinerOutputNV_remap_index 240 +#define CombinerParameterfNV_remap_index 241 +#define CombinerParameterfvNV_remap_index 242 +#define CombinerParameteriNV_remap_index 243 +#define CombinerParameterivNV_remap_index 244 +#define FinalCombinerInputNV_remap_index 245 +#define GetCombinerInputParameterfvNV_remap_index 246 +#define GetCombinerInputParameterivNV_remap_index 247 +#define GetCombinerOutputParameterfvNV_remap_index 248 +#define GetCombinerOutputParameterivNV_remap_index 249 +#define GetFinalCombinerInputParameterfvNV_remap_index 250 +#define GetFinalCombinerInputParameterivNV_remap_index 251 +#define ResizeBuffersMESA_remap_index 252 +#define WindowPos2dMESA_remap_index 253 +#define WindowPos2dvMESA_remap_index 254 +#define WindowPos2fMESA_remap_index 255 +#define WindowPos2fvMESA_remap_index 256 +#define WindowPos2iMESA_remap_index 257 +#define WindowPos2ivMESA_remap_index 258 +#define WindowPos2sMESA_remap_index 259 +#define WindowPos2svMESA_remap_index 260 +#define WindowPos3dMESA_remap_index 261 +#define WindowPos3dvMESA_remap_index 262 +#define WindowPos3fMESA_remap_index 263 +#define WindowPos3fvMESA_remap_index 264 +#define WindowPos3iMESA_remap_index 265 +#define WindowPos3ivMESA_remap_index 266 +#define WindowPos3sMESA_remap_index 267 +#define WindowPos3svMESA_remap_index 268 +#define WindowPos4dMESA_remap_index 269 +#define WindowPos4dvMESA_remap_index 270 +#define WindowPos4fMESA_remap_index 271 +#define WindowPos4fvMESA_remap_index 272 +#define WindowPos4iMESA_remap_index 273 +#define WindowPos4ivMESA_remap_index 274 +#define WindowPos4sMESA_remap_index 275 +#define WindowPos4svMESA_remap_index 276 +#define MultiModeDrawArraysIBM_remap_index 277 +#define MultiModeDrawElementsIBM_remap_index 278 +#define DeleteFencesNV_remap_index 279 +#define FinishFenceNV_remap_index 280 +#define GenFencesNV_remap_index 281 +#define GetFenceivNV_remap_index 282 +#define IsFenceNV_remap_index 283 +#define SetFenceNV_remap_index 284 +#define TestFenceNV_remap_index 285 +#define AreProgramsResidentNV_remap_index 286 +#define BindProgramNV_remap_index 287 +#define DeleteProgramsNV_remap_index 288 +#define ExecuteProgramNV_remap_index 289 +#define GenProgramsNV_remap_index 290 +#define GetProgramParameterdvNV_remap_index 291 +#define GetProgramParameterfvNV_remap_index 292 +#define GetProgramStringNV_remap_index 293 +#define GetProgramivNV_remap_index 294 +#define GetTrackMatrixivNV_remap_index 295 +#define GetVertexAttribPointervNV_remap_index 296 +#define GetVertexAttribdvNV_remap_index 297 +#define GetVertexAttribfvNV_remap_index 298 +#define GetVertexAttribivNV_remap_index 299 +#define IsProgramNV_remap_index 300 +#define LoadProgramNV_remap_index 301 +#define ProgramParameters4dvNV_remap_index 302 +#define ProgramParameters4fvNV_remap_index 303 +#define RequestResidentProgramsNV_remap_index 304 +#define TrackMatrixNV_remap_index 305 +#define VertexAttrib1dNV_remap_index 306 +#define VertexAttrib1dvNV_remap_index 307 +#define VertexAttrib1fNV_remap_index 308 +#define VertexAttrib1fvNV_remap_index 309 +#define VertexAttrib1sNV_remap_index 310 +#define VertexAttrib1svNV_remap_index 311 +#define VertexAttrib2dNV_remap_index 312 +#define VertexAttrib2dvNV_remap_index 313 +#define VertexAttrib2fNV_remap_index 314 +#define VertexAttrib2fvNV_remap_index 315 +#define VertexAttrib2sNV_remap_index 316 +#define VertexAttrib2svNV_remap_index 317 +#define VertexAttrib3dNV_remap_index 318 +#define VertexAttrib3dvNV_remap_index 319 +#define VertexAttrib3fNV_remap_index 320 +#define VertexAttrib3fvNV_remap_index 321 +#define VertexAttrib3sNV_remap_index 322 +#define VertexAttrib3svNV_remap_index 323 +#define VertexAttrib4dNV_remap_index 324 +#define VertexAttrib4dvNV_remap_index 325 +#define VertexAttrib4fNV_remap_index 326 +#define VertexAttrib4fvNV_remap_index 327 +#define VertexAttrib4sNV_remap_index 328 +#define VertexAttrib4svNV_remap_index 329 +#define VertexAttrib4ubNV_remap_index 330 +#define VertexAttrib4ubvNV_remap_index 331 +#define VertexAttribPointerNV_remap_index 332 +#define VertexAttribs1dvNV_remap_index 333 +#define VertexAttribs1fvNV_remap_index 334 +#define VertexAttribs1svNV_remap_index 335 +#define VertexAttribs2dvNV_remap_index 336 +#define VertexAttribs2fvNV_remap_index 337 +#define VertexAttribs2svNV_remap_index 338 +#define VertexAttribs3dvNV_remap_index 339 +#define VertexAttribs3fvNV_remap_index 340 +#define VertexAttribs3svNV_remap_index 341 +#define VertexAttribs4dvNV_remap_index 342 +#define VertexAttribs4fvNV_remap_index 343 +#define VertexAttribs4svNV_remap_index 344 +#define VertexAttribs4ubvNV_remap_index 345 +#define GetTexBumpParameterfvATI_remap_index 346 +#define GetTexBumpParameterivATI_remap_index 347 +#define TexBumpParameterfvATI_remap_index 348 +#define TexBumpParameterivATI_remap_index 349 +#define AlphaFragmentOp1ATI_remap_index 350 +#define AlphaFragmentOp2ATI_remap_index 351 +#define AlphaFragmentOp3ATI_remap_index 352 +#define BeginFragmentShaderATI_remap_index 353 +#define BindFragmentShaderATI_remap_index 354 +#define ColorFragmentOp1ATI_remap_index 355 +#define ColorFragmentOp2ATI_remap_index 356 +#define ColorFragmentOp3ATI_remap_index 357 +#define DeleteFragmentShaderATI_remap_index 358 +#define EndFragmentShaderATI_remap_index 359 +#define GenFragmentShadersATI_remap_index 360 +#define PassTexCoordATI_remap_index 361 +#define SampleMapATI_remap_index 362 +#define SetFragmentShaderConstantATI_remap_index 363 +#define PointParameteriNV_remap_index 364 +#define PointParameterivNV_remap_index 365 +#define ActiveStencilFaceEXT_remap_index 366 +#define BindVertexArrayAPPLE_remap_index 367 +#define DeleteVertexArraysAPPLE_remap_index 368 +#define GenVertexArraysAPPLE_remap_index 369 +#define IsVertexArrayAPPLE_remap_index 370 +#define GetProgramNamedParameterdvNV_remap_index 371 +#define GetProgramNamedParameterfvNV_remap_index 372 +#define ProgramNamedParameter4dNV_remap_index 373 +#define ProgramNamedParameter4dvNV_remap_index 374 +#define ProgramNamedParameter4fNV_remap_index 375 +#define ProgramNamedParameter4fvNV_remap_index 376 +#define PrimitiveRestartIndexNV_remap_index 377 +#define PrimitiveRestartNV_remap_index 378 +#define DepthBoundsEXT_remap_index 379 +#define BlendEquationSeparateEXT_remap_index 380 +#define BindFramebufferEXT_remap_index 381 +#define BindRenderbufferEXT_remap_index 382 +#define CheckFramebufferStatusEXT_remap_index 383 +#define DeleteFramebuffersEXT_remap_index 384 +#define DeleteRenderbuffersEXT_remap_index 385 +#define FramebufferRenderbufferEXT_remap_index 386 +#define FramebufferTexture1DEXT_remap_index 387 +#define FramebufferTexture2DEXT_remap_index 388 +#define FramebufferTexture3DEXT_remap_index 389 +#define GenFramebuffersEXT_remap_index 390 +#define GenRenderbuffersEXT_remap_index 391 +#define GenerateMipmapEXT_remap_index 392 +#define GetFramebufferAttachmentParameterivEXT_remap_index 393 +#define GetRenderbufferParameterivEXT_remap_index 394 +#define IsFramebufferEXT_remap_index 395 +#define IsRenderbufferEXT_remap_index 396 +#define RenderbufferStorageEXT_remap_index 397 +#define BlitFramebufferEXT_remap_index 398 +#define BufferParameteriAPPLE_remap_index 399 +#define FlushMappedBufferRangeAPPLE_remap_index 400 +#define BindFragDataLocationEXT_remap_index 401 +#define GetFragDataLocationEXT_remap_index 402 +#define GetUniformuivEXT_remap_index 403 +#define GetVertexAttribIivEXT_remap_index 404 +#define GetVertexAttribIuivEXT_remap_index 405 +#define Uniform1uiEXT_remap_index 406 +#define Uniform1uivEXT_remap_index 407 +#define Uniform2uiEXT_remap_index 408 +#define Uniform2uivEXT_remap_index 409 +#define Uniform3uiEXT_remap_index 410 +#define Uniform3uivEXT_remap_index 411 +#define Uniform4uiEXT_remap_index 412 +#define Uniform4uivEXT_remap_index 413 +#define VertexAttribI1iEXT_remap_index 414 +#define VertexAttribI1ivEXT_remap_index 415 +#define VertexAttribI1uiEXT_remap_index 416 +#define VertexAttribI1uivEXT_remap_index 417 +#define VertexAttribI2iEXT_remap_index 418 +#define VertexAttribI2ivEXT_remap_index 419 +#define VertexAttribI2uiEXT_remap_index 420 +#define VertexAttribI2uivEXT_remap_index 421 +#define VertexAttribI3iEXT_remap_index 422 +#define VertexAttribI3ivEXT_remap_index 423 +#define VertexAttribI3uiEXT_remap_index 424 +#define VertexAttribI3uivEXT_remap_index 425 +#define VertexAttribI4bvEXT_remap_index 426 +#define VertexAttribI4iEXT_remap_index 427 +#define VertexAttribI4ivEXT_remap_index 428 +#define VertexAttribI4svEXT_remap_index 429 +#define VertexAttribI4ubvEXT_remap_index 430 +#define VertexAttribI4uiEXT_remap_index 431 +#define VertexAttribI4uivEXT_remap_index 432 +#define VertexAttribI4usvEXT_remap_index 433 +#define VertexAttribIPointerEXT_remap_index 434 +#define FramebufferTextureLayerEXT_remap_index 435 +#define ColorMaskIndexedEXT_remap_index 436 +#define DisableIndexedEXT_remap_index 437 +#define EnableIndexedEXT_remap_index 438 +#define GetBooleanIndexedvEXT_remap_index 439 +#define GetIntegerIndexedvEXT_remap_index 440 +#define IsEnabledIndexedEXT_remap_index 441 +#define ClearColorIiEXT_remap_index 442 +#define ClearColorIuiEXT_remap_index 443 +#define GetTexParameterIivEXT_remap_index 444 +#define GetTexParameterIuivEXT_remap_index 445 +#define TexParameterIivEXT_remap_index 446 +#define TexParameterIuivEXT_remap_index 447 +#define BeginConditionalRenderNV_remap_index 448 +#define EndConditionalRenderNV_remap_index 449 +#define BeginTransformFeedbackEXT_remap_index 450 +#define BindBufferBaseEXT_remap_index 451 +#define BindBufferOffsetEXT_remap_index 452 +#define BindBufferRangeEXT_remap_index 453 +#define EndTransformFeedbackEXT_remap_index 454 +#define GetTransformFeedbackVaryingEXT_remap_index 455 +#define TransformFeedbackVaryingsEXT_remap_index 456 +#define ProvokingVertexEXT_remap_index 457 +#define GetTexParameterPointervAPPLE_remap_index 458 +#define TextureRangeAPPLE_remap_index 459 +#define GetObjectParameterivAPPLE_remap_index 460 +#define ObjectPurgeableAPPLE_remap_index 461 +#define ObjectUnpurgeableAPPLE_remap_index 462 +#define ActiveProgramEXT_remap_index 463 +#define CreateShaderProgramEXT_remap_index 464 +#define UseShaderProgramEXT_remap_index 465 +#define StencilFuncSeparateATI_remap_index 466 +#define ProgramEnvParameters4fvEXT_remap_index 467 +#define ProgramLocalParameters4fvEXT_remap_index 468 +#define GetQueryObjecti64vEXT_remap_index 469 +#define GetQueryObjectui64vEXT_remap_index 470 +#define EGLImageTargetRenderbufferStorageOES_remap_index 471 +#define EGLImageTargetTexture2DOES_remap_index 472 #define _gloffset_AttachShader driDispatchRemapTable[AttachShader_remap_index] #define _gloffset_CreateProgram driDispatchRemapTable[CreateProgram_remap_index] @@ -1425,8 +1447,17 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define _gloffset_UniformMatrix3x4fv driDispatchRemapTable[UniformMatrix3x4fv_remap_index] #define _gloffset_UniformMatrix4x2fv driDispatchRemapTable[UniformMatrix4x2fv_remap_index] #define _gloffset_UniformMatrix4x3fv driDispatchRemapTable[UniformMatrix4x3fv_remap_index] -#define _gloffset_DrawArraysInstanced driDispatchRemapTable[DrawArraysInstanced_remap_index] -#define _gloffset_DrawElementsInstanced driDispatchRemapTable[DrawElementsInstanced_remap_index] +#define _gloffset_ClampColor driDispatchRemapTable[ClampColor_remap_index] +#define _gloffset_ClearBufferfi driDispatchRemapTable[ClearBufferfi_remap_index] +#define _gloffset_ClearBufferfv driDispatchRemapTable[ClearBufferfv_remap_index] +#define _gloffset_ClearBufferiv driDispatchRemapTable[ClearBufferiv_remap_index] +#define _gloffset_ClearBufferuiv driDispatchRemapTable[ClearBufferuiv_remap_index] +#define _gloffset_GetStringi driDispatchRemapTable[GetStringi_remap_index] +#define _gloffset_TexBuffer driDispatchRemapTable[TexBuffer_remap_index] +#define _gloffset_FramebufferTexture driDispatchRemapTable[FramebufferTexture_remap_index] +#define _gloffset_GetBufferParameteri64v driDispatchRemapTable[GetBufferParameteri64v_remap_index] +#define _gloffset_GetInteger64i_v driDispatchRemapTable[GetInteger64i_v_remap_index] +#define _gloffset_VertexAttribDivisor driDispatchRemapTable[VertexAttribDivisor_remap_index] #define _gloffset_LoadTransposeMatrixdARB driDispatchRemapTable[LoadTransposeMatrixdARB_remap_index] #define _gloffset_LoadTransposeMatrixfARB driDispatchRemapTable[LoadTransposeMatrixfARB_remap_index] #define _gloffset_MultTransposeMatrixdARB driDispatchRemapTable[MultTransposeMatrixdARB_remap_index] @@ -1558,6 +1589,8 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define _gloffset_GetActiveAttribARB driDispatchRemapTable[GetActiveAttribARB_remap_index] #define _gloffset_GetAttribLocationARB driDispatchRemapTable[GetAttribLocationARB_remap_index] #define _gloffset_DrawBuffersARB driDispatchRemapTable[DrawBuffersARB_remap_index] +#define _gloffset_DrawArraysInstancedARB driDispatchRemapTable[DrawArraysInstancedARB_remap_index] +#define _gloffset_DrawElementsInstancedARB driDispatchRemapTable[DrawElementsInstancedARB_remap_index] #define _gloffset_RenderbufferStorageMultisample driDispatchRemapTable[RenderbufferStorageMultisample_remap_index] #define _gloffset_FramebufferTextureARB driDispatchRemapTable[FramebufferTextureARB_remap_index] #define _gloffset_FramebufferTextureFaceARB driDispatchRemapTable[FramebufferTextureFaceARB_remap_index] @@ -3158,12 +3191,39 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define CALL_UniformMatrix4x3fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), _gloffset_UniformMatrix4x3fv, parameters) #define GET_UniformMatrix4x3fv(disp) GET_by_offset(disp, _gloffset_UniformMatrix4x3fv) #define SET_UniformMatrix4x3fv(disp, fn) SET_by_offset(disp, _gloffset_UniformMatrix4x3fv, fn) -#define CALL_DrawArraysInstanced(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLsizei, GLsizei)), _gloffset_DrawArraysInstanced, parameters) -#define GET_DrawArraysInstanced(disp) GET_by_offset(disp, _gloffset_DrawArraysInstanced) -#define SET_DrawArraysInstanced(disp, fn) SET_by_offset(disp, _gloffset_DrawArraysInstanced, fn) -#define CALL_DrawElementsInstanced(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLenum, const GLvoid *, GLsizei)), _gloffset_DrawElementsInstanced, parameters) -#define GET_DrawElementsInstanced(disp) GET_by_offset(disp, _gloffset_DrawElementsInstanced) -#define SET_DrawElementsInstanced(disp, fn) SET_by_offset(disp, _gloffset_DrawElementsInstanced, fn) +#define CALL_ClampColor(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum)), _gloffset_ClampColor, parameters) +#define GET_ClampColor(disp) GET_by_offset(disp, _gloffset_ClampColor) +#define SET_ClampColor(disp, fn) SET_by_offset(disp, _gloffset_ClampColor, fn) +#define CALL_ClearBufferfi(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, const GLfloat, const GLint)), _gloffset_ClearBufferfi, parameters) +#define GET_ClearBufferfi(disp) GET_by_offset(disp, _gloffset_ClearBufferfi) +#define SET_ClearBufferfi(disp, fn) SET_by_offset(disp, _gloffset_ClearBufferfi, fn) +#define CALL_ClearBufferfv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, const GLfloat *)), _gloffset_ClearBufferfv, parameters) +#define GET_ClearBufferfv(disp) GET_by_offset(disp, _gloffset_ClearBufferfv) +#define SET_ClearBufferfv(disp, fn) SET_by_offset(disp, _gloffset_ClearBufferfv, fn) +#define CALL_ClearBufferiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, const GLint *)), _gloffset_ClearBufferiv, parameters) +#define GET_ClearBufferiv(disp) GET_by_offset(disp, _gloffset_ClearBufferiv) +#define SET_ClearBufferiv(disp, fn) SET_by_offset(disp, _gloffset_ClearBufferiv, fn) +#define CALL_ClearBufferuiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, const GLuint *)), _gloffset_ClearBufferuiv, parameters) +#define GET_ClearBufferuiv(disp) GET_by_offset(disp, _gloffset_ClearBufferuiv) +#define SET_ClearBufferuiv(disp, fn) SET_by_offset(disp, _gloffset_ClearBufferuiv, fn) +#define CALL_GetStringi(disp, parameters) CALL_by_offset(disp, (const GLubyte * (GLAPIENTRYP)(GLenum, GLuint)), _gloffset_GetStringi, parameters) +#define GET_GetStringi(disp) GET_by_offset(disp, _gloffset_GetStringi) +#define SET_GetStringi(disp, fn) SET_by_offset(disp, _gloffset_GetStringi, fn) +#define CALL_TexBuffer(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLuint)), _gloffset_TexBuffer, parameters) +#define GET_TexBuffer(disp) GET_by_offset(disp, _gloffset_TexBuffer) +#define SET_TexBuffer(disp, fn) SET_by_offset(disp, _gloffset_TexBuffer, fn) +#define CALL_FramebufferTexture(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLuint, GLint)), _gloffset_FramebufferTexture, parameters) +#define GET_FramebufferTexture(disp) GET_by_offset(disp, _gloffset_FramebufferTexture) +#define SET_FramebufferTexture(disp, fn) SET_by_offset(disp, _gloffset_FramebufferTexture, fn) +#define CALL_GetBufferParameteri64v(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint64 *)), _gloffset_GetBufferParameteri64v, parameters) +#define GET_GetBufferParameteri64v(disp) GET_by_offset(disp, _gloffset_GetBufferParameteri64v) +#define SET_GetBufferParameteri64v(disp, fn) SET_by_offset(disp, _gloffset_GetBufferParameteri64v, fn) +#define CALL_GetInteger64i_v(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLint64 *)), _gloffset_GetInteger64i_v, parameters) +#define GET_GetInteger64i_v(disp) GET_by_offset(disp, _gloffset_GetInteger64i_v) +#define SET_GetInteger64i_v(disp, fn) SET_by_offset(disp, _gloffset_GetInteger64i_v, fn) +#define CALL_VertexAttribDivisor(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint)), _gloffset_VertexAttribDivisor, parameters) +#define GET_VertexAttribDivisor(disp) GET_by_offset(disp, _gloffset_VertexAttribDivisor) +#define SET_VertexAttribDivisor(disp, fn) SET_by_offset(disp, _gloffset_VertexAttribDivisor, fn) #define CALL_LoadTransposeMatrixdARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), _gloffset_LoadTransposeMatrixdARB, parameters) #define GET_LoadTransposeMatrixdARB(disp) GET_by_offset(disp, _gloffset_LoadTransposeMatrixdARB) #define SET_LoadTransposeMatrixdARB(disp, fn) SET_by_offset(disp, _gloffset_LoadTransposeMatrixdARB, fn) @@ -3557,6 +3617,12 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define CALL_DrawBuffersARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLenum *)), _gloffset_DrawBuffersARB, parameters) #define GET_DrawBuffersARB(disp) GET_by_offset(disp, _gloffset_DrawBuffersARB) #define SET_DrawBuffersARB(disp, fn) SET_by_offset(disp, _gloffset_DrawBuffersARB, fn) +#define CALL_DrawArraysInstancedARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLsizei, GLsizei)), _gloffset_DrawArraysInstancedARB, parameters) +#define GET_DrawArraysInstancedARB(disp) GET_by_offset(disp, _gloffset_DrawArraysInstancedARB) +#define SET_DrawArraysInstancedARB(disp, fn) SET_by_offset(disp, _gloffset_DrawArraysInstancedARB, fn) +#define CALL_DrawElementsInstancedARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLenum, const GLvoid *, GLsizei)), _gloffset_DrawElementsInstancedARB, parameters) +#define GET_DrawElementsInstancedARB(disp) GET_by_offset(disp, _gloffset_DrawElementsInstancedARB) +#define SET_DrawElementsInstancedARB(disp, fn) SET_by_offset(disp, _gloffset_DrawElementsInstancedARB, fn) #define CALL_RenderbufferStorageMultisample(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLenum, GLsizei, GLsizei)), _gloffset_RenderbufferStorageMultisample, parameters) #define GET_RenderbufferStorageMultisample(disp) GET_by_offset(disp, _gloffset_RenderbufferStorageMultisample) #define SET_RenderbufferStorageMultisample(disp, fn) SET_by_offset(disp, _gloffset_RenderbufferStorageMultisample, fn) @@ -3965,10 +4031,10 @@ extern int driDispatchRemapTable[ driDispatchRemapTable_size ]; #define CALL_LoadProgramNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLsizei, const GLubyte *)), _gloffset_LoadProgramNV, parameters) #define GET_LoadProgramNV(disp) GET_by_offset(disp, _gloffset_LoadProgramNV) #define SET_LoadProgramNV(disp, fn) SET_by_offset(disp, _gloffset_LoadProgramNV, fn) -#define CALL_ProgramParameters4dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, const GLdouble *)), _gloffset_ProgramParameters4dvNV, parameters) +#define CALL_ProgramParameters4dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLsizei, const GLdouble *)), _gloffset_ProgramParameters4dvNV, parameters) #define GET_ProgramParameters4dvNV(disp) GET_by_offset(disp, _gloffset_ProgramParameters4dvNV) #define SET_ProgramParameters4dvNV(disp, fn) SET_by_offset(disp, _gloffset_ProgramParameters4dvNV, fn) -#define CALL_ProgramParameters4fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, const GLfloat *)), _gloffset_ProgramParameters4fvNV, parameters) +#define CALL_ProgramParameters4fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLsizei, const GLfloat *)), _gloffset_ProgramParameters4fvNV, parameters) #define GET_ProgramParameters4fvNV(disp) GET_by_offset(disp, _gloffset_ProgramParameters4fvNV) #define SET_ProgramParameters4fvNV(disp, fn) SET_by_offset(disp, _gloffset_ProgramParameters4fvNV, fn) #define CALL_RequestResidentProgramsNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), _gloffset_RequestResidentProgramsNV, parameters) diff --git a/src/mesa/main/image.c b/src/mesa/main/image.c index df1527b47f1..f9f2ed73077 100644 --- a/src/mesa/main/image.c +++ b/src/mesa/main/image.c @@ -154,6 +154,8 @@ _mesa_sizeof_type( GLenum type ) return sizeof(GLdouble); case GL_HALF_FLOAT_ARB: return sizeof(GLhalfARB); + case GL_FIXED: + return sizeof(GLfixed); default: return -1; } diff --git a/src/mesa/main/imports.c b/src/mesa/main/imports.c index bcca4edc1aa..cefbf4d8c98 100644 --- a/src/mesa/main/imports.c +++ b/src/mesa/main/imports.c @@ -88,7 +88,8 @@ _mesa_align_malloc(size_t bytes, unsigned long alignment) #if defined(HAVE_POSIX_MEMALIGN) void *mem; int err = posix_memalign(& mem, alignment, bytes); - (void) err; + if (err) + return NULL; return mem; #elif defined(_WIN32) && defined(_MSC_VER) return _aligned_malloc(bytes, alignment); diff --git a/src/mesa/main/imports.h b/src/mesa/main/imports.h index 30fc152389d..5ea647ad8d7 100644 --- a/src/mesa/main/imports.h +++ b/src/mesa/main/imports.h @@ -141,12 +141,18 @@ typedef union { GLfloat f; GLint i; } fi_type; #define sqrtf(f) ((float) sqrt(f)) #define tanf(f) ((float) tan(f)) #define tanhf(f) ((float) tanh(f)) +#define acoshf(f) ((float) acosh(f)) +#define asinhf(f) ((float) asinh(f)) +#define atanhf(f) ((float) atanh(f)) #endif #if defined(_MSC_VER) static INLINE float truncf(float x) { return x < 0.0f ? ceilf(x) : floorf(x); } static INLINE float exp2f(float x) { return powf(2.0f, x); } static INLINE float log2f(float x) { return logf(x) * 1.442695041f; } +static INLINE float asinhf(float x) { return logf(x + sqrtf(x * x + 1.0f)); } +static INLINE float acoshf(float x) { return logf(x + sqrtf(x * x - 1.0f)); } +static INLINE float atanhf(float x) { return (logf(1.0f + x) - logf(1.0f - x)) / 2.0f; } static INLINE int isblank(int ch) { return ch == ' ' || ch == '\t'; } #define strtoll(p, e, b) _strtoi64(p, e, b) #endif diff --git a/src/mesa/main/mipmap.c b/src/mesa/main/mipmap.c index b1989b4b91e..ad63b178df8 100644 --- a/src/mesa/main/mipmap.c +++ b/src/mesa/main/mipmap.c @@ -1790,9 +1790,9 @@ _mesa_generate_mipmap(struct gl_context *ctx, GLenum target, /* initialize new image */ _mesa_init_teximage_fields(ctx, target, dstImage, dstWidth, dstHeight, - dstDepth, border, srcImage->InternalFormat); + dstDepth, border, srcImage->InternalFormat, + srcImage->TexFormat); dstImage->DriverData = NULL; - dstImage->TexFormat = srcImage->TexFormat; dstImage->FetchTexelc = srcImage->FetchTexelc; dstImage->FetchTexelf = srcImage->FetchTexelf; diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 87b96489dbf..1c549a8e247 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -41,14 +41,6 @@ #include "math/m_matrix.h" /* GLmatrix */ #include "main/simple_list.h" /* struct simple_node */ -/* Shader stages. Note that these will become 5 with tessellation. - * These MUST have the same values as PIPE_SHADER_* - */ -#define MESA_SHADER_VERTEX 0 -#define MESA_SHADER_FRAGMENT 1 -#define MESA_SHADER_GEOMETRY 2 -#define MESA_SHADER_TYPES 3 - /** * Color channel data type. @@ -130,6 +122,20 @@ struct st_context; /** + * Shader stages. Note that these will become 5 with tessellation. + * These MUST have the same values as gallium's PIPE_SHADER_* + */ +typedef enum +{ + MESA_SHADER_VERTEX = 0, + MESA_SHADER_FRAGMENT = 1, + MESA_SHADER_GEOMETRY = 2, + MESA_SHADER_TYPES = 3 +} gl_shader_type; + + + +/** * Indexes for vertex program attributes. * GL_NV_vertex_program aliases generic attributes over the conventional * attributes. In GL_ARB_vertex_program shader the aliasing is optional. @@ -2191,6 +2197,7 @@ struct gl_shader_compiler_options GLboolean EmitNoCont; /**< Emit CONT opcode? */ GLboolean EmitNoMainReturn; /**< Emit CONT/RET opcodes? */ GLboolean EmitNoNoise; /**< Emit NOISE opcodes? */ + GLboolean EmitNoPow; /**< Emit POW opcodes? */ /** * \name Forms of indirect addressing the driver cannot do. @@ -2560,6 +2567,7 @@ struct gl_program_constants */ struct gl_constants { + GLint MaxTextureMbytes; /**< Max memory per image, in MB */ GLint MaxTextureLevels; /**< Max mipmap levels. */ GLint Max3DTextureLevels; /**< Max mipmap levels for 3D textures */ GLint MaxCubeTextureLevels; /**< Max mipmap levels for cube textures */ diff --git a/src/mesa/main/nvprogram.c b/src/mesa/main/nvprogram.c index 833bf916ecf..36cea3bb9a6 100644 --- a/src/mesa/main/nvprogram.c +++ b/src/mesa/main/nvprogram.c @@ -685,13 +685,13 @@ _mesa_LoadProgramNV(GLenum target, GLuint id, GLsizei len, */ void GLAPIENTRY _mesa_ProgramParameters4dvNV(GLenum target, GLuint index, - GLuint num, const GLdouble *params) + GLsizei num, const GLdouble *params) { GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END(ctx); if (target == GL_VERTEX_PROGRAM_NV && ctx->Extensions.NV_vertex_program) { - GLuint i; + GLint i; if (index + num > MAX_NV_VERTEX_PROGRAM_PARAMS) { _mesa_error(ctx, GL_INVALID_VALUE, "glProgramParameters4dvNV"); return; @@ -717,13 +717,13 @@ _mesa_ProgramParameters4dvNV(GLenum target, GLuint index, */ void GLAPIENTRY _mesa_ProgramParameters4fvNV(GLenum target, GLuint index, - GLuint num, const GLfloat *params) + GLsizei num, const GLfloat *params) { GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END(ctx); if (target == GL_VERTEX_PROGRAM_NV && ctx->Extensions.NV_vertex_program) { - GLuint i; + GLint i; if (index + num > MAX_NV_VERTEX_PROGRAM_PARAMS) { _mesa_error(ctx, GL_INVALID_VALUE, "glProgramParameters4fvNV"); return; diff --git a/src/mesa/main/nvprogram.h b/src/mesa/main/nvprogram.h index 5668963da10..3a55783773b 100644 --- a/src/mesa/main/nvprogram.h +++ b/src/mesa/main/nvprogram.h @@ -74,10 +74,12 @@ extern void GLAPIENTRY _mesa_LoadProgramNV(GLenum target, GLuint id, GLsizei len, const GLubyte *program); extern void GLAPIENTRY -_mesa_ProgramParameters4dvNV(GLenum target, GLuint index, GLuint num, const GLdouble *params); +_mesa_ProgramParameters4dvNV(GLenum target, GLuint index, GLsizei num, + const GLdouble *params); extern void GLAPIENTRY -_mesa_ProgramParameters4fvNV(GLenum target, GLuint index, GLuint num, const GLfloat *params); +_mesa_ProgramParameters4fvNV(GLenum target, GLuint index, GLsizei num, + const GLfloat *params); extern void GLAPIENTRY _mesa_TrackMatrixNV(GLenum target, GLuint address, GLenum matrix, GLenum transform); diff --git a/src/mesa/main/pack.c b/src/mesa/main/pack.c index fdb647c7ea8..6d524e64908 100644 --- a/src/mesa/main/pack.c +++ b/src/mesa/main/pack.c @@ -484,11 +484,25 @@ _mesa_pack_rgba_span_float(struct gl_context *ctx, GLuint n, GLfloat rgba[][4], const struct gl_pixelstore_attrib *dstPacking, GLbitfield transferOps) { - GLfloat luminance[MAX_WIDTH]; + GLfloat *luminance; const GLint comps = _mesa_components_in_format(dstFormat); const GLboolean intDstFormat = _mesa_is_integer_format(dstFormat); GLuint i; + if (dstFormat == GL_LUMINANCE || + dstFormat == GL_LUMINANCE_ALPHA || + dstFormat == GL_LUMINANCE_INTEGER_EXT || + dstFormat == GL_LUMINANCE_ALPHA_INTEGER_EXT) { + luminance = (GLfloat *) malloc(n * sizeof(GLfloat)); + if (!luminance) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "pixel packing"); + return; + } + } + else { + luminance = NULL; + } + /* XXX * This test should probably go away. Have the caller set/clear the * IMAGE_CLAMP_BIT as needed. @@ -1907,6 +1921,8 @@ _mesa_pack_rgba_span_float(struct gl_context *ctx, GLuint n, GLfloat rgba[][4], } } } + + free(luminance); } @@ -3462,7 +3478,12 @@ _mesa_unpack_color_span_chan( struct gl_context *ctx, { GLint dstComponents; GLint rDst, gDst, bDst, aDst, lDst, iDst; - GLfloat rgba[MAX_WIDTH][4]; + GLfloat (*rgba)[4] = (GLfloat (*)[4]) malloc(4 * n * sizeof(GLfloat)); + + if (!rgba) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "pixel unpacking"); + return; + } dstComponents = _mesa_components_in_format( dstFormat ); /* source & dest image formats should have been error checked by now */ @@ -3471,9 +3492,14 @@ _mesa_unpack_color_span_chan( struct gl_context *ctx, /* * Extract image data and convert to RGBA floats */ - assert(n <= MAX_WIDTH); if (srcFormat == GL_COLOR_INDEX) { - GLuint indexes[MAX_WIDTH]; + GLuint *indexes = (GLuint *) malloc(n * sizeof(GLuint)); + + if (!indexes) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "pixel unpacking"); + return; + } + extract_uint_indexes(n, indexes, srcFormat, srcType, source, srcPacking); @@ -3484,6 +3510,8 @@ _mesa_unpack_color_span_chan( struct gl_context *ctx, for (i = 0; i < n; i++) { dest[i] = (GLchan) (indexes[i] & 0xff); } + free(indexes); + free(rgba); return; } else { @@ -3498,6 +3526,8 @@ _mesa_unpack_color_span_chan( struct gl_context *ctx, * with color indexes. */ transferOps &= ~(IMAGE_SCALE_BIAS_BIT | IMAGE_MAP_COLOR_BIT); + + free(indexes); } else { /* non-color index data */ @@ -3575,6 +3605,8 @@ _mesa_unpack_color_span_chan( struct gl_context *ctx, dst += dstComponents; } } + + free(rgba); } } @@ -3652,7 +3684,12 @@ _mesa_unpack_color_span_float( struct gl_context *ctx, { GLint dstComponents; GLint rDst, gDst, bDst, aDst, lDst, iDst; - GLfloat rgba[MAX_WIDTH][4]; + GLfloat (*rgba)[4] = (GLfloat (*)[4]) malloc(4 * n * sizeof(GLfloat)); + + if (!rgba) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "pixel unpacking"); + return; + } dstComponents = _mesa_components_in_format( dstFormat ); /* source & dest image formats should have been error checked by now */ @@ -3661,9 +3698,15 @@ _mesa_unpack_color_span_float( struct gl_context *ctx, /* * Extract image data and convert to RGBA floats */ - assert(n <= MAX_WIDTH); if (srcFormat == GL_COLOR_INDEX) { - GLuint indexes[MAX_WIDTH]; + GLuint *indexes = (GLuint *) malloc(n * sizeof(GLuint)); + + if (!indexes) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "pixel unpacking"); + free(rgba); + return; + } + extract_uint_indexes(n, indexes, srcFormat, srcType, source, srcPacking); @@ -3674,6 +3717,8 @@ _mesa_unpack_color_span_float( struct gl_context *ctx, for (i = 0; i < n; i++) { dest[i] = (GLchan) (indexes[i] & 0xff); } + free(indexes); + free(rgba); return; } else { @@ -3688,6 +3733,8 @@ _mesa_unpack_color_span_float( struct gl_context *ctx, * with color indexes. */ transferOps &= ~(IMAGE_SCALE_BIAS_BIT | IMAGE_MAP_COLOR_BIT); + + free(indexes); } else { /* non-color index data */ @@ -3760,6 +3807,8 @@ _mesa_unpack_color_span_float( struct gl_context *ctx, dst += dstComponents; } } + + free(rgba); } } @@ -3776,9 +3825,12 @@ _mesa_unpack_color_span_uint(struct gl_context *ctx, const GLvoid *source, const struct gl_pixelstore_attrib *srcPacking) { - GLuint rgba[MAX_WIDTH][4]; + GLuint (*rgba)[4] = (GLuint (*)[4]) malloc(n * 4 * sizeof(GLfloat)); - ASSERT(n <= MAX_WIDTH); + if (!rgba) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "pixel unpacking"); + return; + } ASSERT(dstFormat == GL_ALPHA || dstFormat == GL_LUMINANCE || @@ -3912,6 +3964,8 @@ _mesa_unpack_color_span_uint(struct gl_context *ctx, } } } + + free(rgba); } @@ -3943,9 +3997,14 @@ _mesa_unpack_dudv_span_byte( struct gl_context *ctx, /* general solution */ { GLint dstComponents; - GLfloat rgba[MAX_WIDTH][4]; GLbyte *dst = dest; GLuint i; + GLfloat (*rgba)[4] = (GLfloat (*)[4]) malloc(4 * n * sizeof(GLfloat)); + + if (!rgba) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "pixel unpacking"); + return; + } dstComponents = _mesa_components_in_format( dstFormat ); /* source & dest image formats should have been error checked by now */ @@ -3954,7 +4013,6 @@ _mesa_unpack_dudv_span_byte( struct gl_context *ctx, /* * Extract image data and convert to RGBA floats */ - assert(n <= MAX_WIDTH); extract_float_rgba(n, rgba, srcFormat, srcType, source, srcPacking->SwapBytes); @@ -3970,6 +4028,8 @@ _mesa_unpack_dudv_span_byte( struct gl_context *ctx, dst[1] = FLOAT_TO_BYTE(rgba[i][GCOMP]); dst += dstComponents; } + + free(rgba); } } @@ -3988,7 +4048,7 @@ _mesa_unpack_dudv_span_byte( struct gl_context *ctx, * transferOps - the pixel transfer operations to apply */ void -_mesa_unpack_index_span( const struct gl_context *ctx, GLuint n, +_mesa_unpack_index_span( struct gl_context *ctx, GLuint n, GLenum dstType, GLvoid *dest, GLenum srcType, const GLvoid *source, const struct gl_pixelstore_attrib *srcPacking, @@ -4026,8 +4086,12 @@ _mesa_unpack_index_span( const struct gl_context *ctx, GLuint n, /* * general solution */ - GLuint indexes[MAX_WIDTH]; - assert(n <= MAX_WIDTH); + GLuint *indexes = (GLuint *) malloc(n * sizeof(GLuint)); + + if (!indexes) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "pixel unpacking"); + return; + } extract_uint_indexes(n, indexes, GL_COLOR_INDEX, srcType, source, srcPacking); @@ -4061,19 +4125,24 @@ _mesa_unpack_index_span( const struct gl_context *ctx, GLuint n, default: _mesa_problem(ctx, "bad dstType in _mesa_unpack_index_span"); } + + free(indexes); } } void -_mesa_pack_index_span( const struct gl_context *ctx, GLuint n, +_mesa_pack_index_span( struct gl_context *ctx, GLuint n, GLenum dstType, GLvoid *dest, const GLuint *source, const struct gl_pixelstore_attrib *dstPacking, GLbitfield transferOps ) { - GLuint indexes[MAX_WIDTH]; + GLuint *indexes = (GLuint *) malloc(n * sizeof(GLuint)); - ASSERT(n <= MAX_WIDTH); + if (!indexes) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "pixel packing"); + return; + } transferOps &= (IMAGE_MAP_COLOR_BIT | IMAGE_SHIFT_OFFSET_BIT); @@ -4178,6 +4247,8 @@ _mesa_pack_index_span( const struct gl_context *ctx, GLuint n, default: _mesa_problem(ctx, "bad type in _mesa_pack_index_span"); } + + free(indexes); } @@ -4196,7 +4267,7 @@ _mesa_pack_index_span( const struct gl_context *ctx, GLuint n, * transferOps - apply offset/bias/lookup ops? */ void -_mesa_unpack_stencil_span( const struct gl_context *ctx, GLuint n, +_mesa_unpack_stencil_span( struct gl_context *ctx, GLuint n, GLenum dstType, GLvoid *dest, GLenum srcType, const GLvoid *source, const struct gl_pixelstore_attrib *srcPacking, @@ -4240,8 +4311,12 @@ _mesa_unpack_stencil_span( const struct gl_context *ctx, GLuint n, /* * general solution */ - GLuint indexes[MAX_WIDTH]; - assert(n <= MAX_WIDTH); + GLuint *indexes = (GLuint *) malloc(n * sizeof(GLuint)); + + if (!indexes) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "stencil unpacking"); + return; + } extract_uint_indexes(n, indexes, GL_STENCIL_INDEX, srcType, source, srcPacking); @@ -4286,18 +4361,23 @@ _mesa_unpack_stencil_span( const struct gl_context *ctx, GLuint n, default: _mesa_problem(ctx, "bad dstType in _mesa_unpack_stencil_span"); } + + free(indexes); } } void -_mesa_pack_stencil_span( const struct gl_context *ctx, GLuint n, +_mesa_pack_stencil_span( struct gl_context *ctx, GLuint n, GLenum dstType, GLvoid *dest, const GLstencil *source, const struct gl_pixelstore_attrib *dstPacking ) { - GLstencil stencil[MAX_WIDTH]; + GLstencil *stencil = (GLstencil *) malloc(n * sizeof(GLstencil)); - ASSERT(n <= MAX_WIDTH); + if (!stencil) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "stencil packing"); + return; + } if (ctx->Pixel.IndexShift || ctx->Pixel.IndexOffset || ctx->Pixel.MapStencilFlag) { @@ -4436,6 +4516,8 @@ _mesa_pack_stencil_span( const struct gl_context *ctx, GLuint n, default: _mesa_problem(ctx, "bad type in _mesa_pack_index_span"); } + + free(stencil); } #define DEPTH_VALUES(GLTYPE, GLTYPE2FLOAT) \ @@ -4466,12 +4548,12 @@ _mesa_pack_stencil_span( const struct gl_context *ctx, GLuint n, * (ignored for GLfloat). */ void -_mesa_unpack_depth_span( const struct gl_context *ctx, GLuint n, +_mesa_unpack_depth_span( struct gl_context *ctx, GLuint n, GLenum dstType, GLvoid *dest, GLuint depthMax, GLenum srcType, const GLvoid *source, const struct gl_pixelstore_attrib *srcPacking ) { - GLfloat depthTemp[MAX_WIDTH], *depthValues; + GLfloat *depthTemp, *depthValues; GLboolean needClamp = GL_FALSE; /* Look for special cases first. @@ -4517,6 +4599,12 @@ _mesa_unpack_depth_span( const struct gl_context *ctx, GLuint n, /* general case path follows */ + depthTemp = (GLfloat *) malloc(n * sizeof(GLfloat)); + if (!depthTemp) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "pixel unpacking"); + return; + } + if (dstType == GL_FLOAT) { depthValues = (GLfloat *) dest; } @@ -4599,6 +4687,7 @@ _mesa_unpack_depth_span( const struct gl_context *ctx, GLuint n, break; default: _mesa_problem(NULL, "bad type in _mesa_unpack_depth_span()"); + free(depthTemp); return; } @@ -4658,6 +4747,8 @@ _mesa_unpack_depth_span( const struct gl_context *ctx, GLuint n, ASSERT(dstType == GL_FLOAT); /*ASSERT(depthMax == 1.0F);*/ } + + free(depthTemp); } @@ -4665,13 +4756,15 @@ _mesa_unpack_depth_span( const struct gl_context *ctx, GLuint n, * Pack an array of depth values. The values are floats in [0,1]. */ void -_mesa_pack_depth_span( const struct gl_context *ctx, GLuint n, GLvoid *dest, +_mesa_pack_depth_span( struct gl_context *ctx, GLuint n, GLvoid *dest, GLenum dstType, const GLfloat *depthSpan, const struct gl_pixelstore_attrib *dstPacking ) { - GLfloat depthCopy[MAX_WIDTH]; - - ASSERT(n <= MAX_WIDTH); + GLfloat *depthCopy = (GLfloat *) malloc(n * sizeof(GLfloat)); + if (!depthCopy) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "pixel packing"); + return; + } if (ctx->Pixel.DepthScale != 1.0 || ctx->Pixel.DepthBias != 0.0) { memcpy(depthCopy, depthSpan, n * sizeof(GLfloat)); @@ -4773,6 +4866,8 @@ _mesa_pack_depth_span( const struct gl_context *ctx, GLuint n, GLvoid *dest, default: _mesa_problem(ctx, "bad type in _mesa_pack_depth_span"); } + + free(depthCopy); } @@ -4781,16 +4876,21 @@ _mesa_pack_depth_span( const struct gl_context *ctx, GLuint n, GLvoid *dest, * Pack depth and stencil values as GL_DEPTH_STENCIL/GL_UNSIGNED_INT_24_8. */ void -_mesa_pack_depth_stencil_span(const struct gl_context *ctx, GLuint n, GLuint *dest, +_mesa_pack_depth_stencil_span(struct gl_context *ctx, GLuint n, GLuint *dest, const GLfloat *depthVals, const GLstencil *stencilVals, const struct gl_pixelstore_attrib *dstPacking) { - GLfloat depthCopy[MAX_WIDTH]; - GLstencil stencilCopy[MAX_WIDTH]; + GLfloat *depthCopy = (GLfloat *) malloc(n * sizeof(GLfloat)); + GLstencil *stencilCopy = (GLstencil *) malloc(n * sizeof(GLstencil)); GLuint i; - ASSERT(n <= MAX_WIDTH); + if (!depthCopy || !stencilCopy) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "pixel packing"); + free(depthCopy); + free(stencilCopy); + return; + } if (ctx->Pixel.DepthScale != 1.0 || ctx->Pixel.DepthBias != 0.0) { memcpy(depthCopy, depthVals, n * sizeof(GLfloat)); @@ -4814,6 +4914,9 @@ _mesa_pack_depth_stencil_span(const struct gl_context *ctx, GLuint n, GLuint *de if (dstPacking->SwapBytes) { _mesa_swap4(dest, n); } + + free(depthCopy); + free(stencilCopy); } diff --git a/src/mesa/main/pack.h b/src/mesa/main/pack.h index 65d3f7a0fb2..78238ea5839 100644 --- a/src/mesa/main/pack.h +++ b/src/mesa/main/pack.h @@ -90,7 +90,7 @@ _mesa_unpack_dudv_span_byte(struct gl_context *ctx, GLbitfield transferOps); extern void -_mesa_unpack_index_span(const struct gl_context *ctx, GLuint n, +_mesa_unpack_index_span(struct gl_context *ctx, GLuint n, GLenum dstType, GLvoid *dest, GLenum srcType, const GLvoid *source, const struct gl_pixelstore_attrib *srcPacking, @@ -98,39 +98,39 @@ _mesa_unpack_index_span(const struct gl_context *ctx, GLuint n, extern void -_mesa_pack_index_span(const struct gl_context *ctx, GLuint n, +_mesa_pack_index_span(struct gl_context *ctx, GLuint n, GLenum dstType, GLvoid *dest, const GLuint *source, const struct gl_pixelstore_attrib *dstPacking, GLbitfield transferOps); extern void -_mesa_unpack_stencil_span(const struct gl_context *ctx, GLuint n, +_mesa_unpack_stencil_span(struct gl_context *ctx, GLuint n, GLenum dstType, GLvoid *dest, GLenum srcType, const GLvoid *source, const struct gl_pixelstore_attrib *srcPacking, GLbitfield transferOps); extern void -_mesa_pack_stencil_span(const struct gl_context *ctx, GLuint n, +_mesa_pack_stencil_span(struct gl_context *ctx, GLuint n, GLenum dstType, GLvoid *dest, const GLstencil *source, const struct gl_pixelstore_attrib *dstPacking); extern void -_mesa_unpack_depth_span(const struct gl_context *ctx, GLuint n, +_mesa_unpack_depth_span(struct gl_context *ctx, GLuint n, GLenum dstType, GLvoid *dest, GLuint depthMax, GLenum srcType, const GLvoid *source, const struct gl_pixelstore_attrib *srcPacking); extern void -_mesa_pack_depth_span(const struct gl_context *ctx, GLuint n, GLvoid *dest, +_mesa_pack_depth_span(struct gl_context *ctx, GLuint n, GLvoid *dest, GLenum dstType, const GLfloat *depthSpan, const struct gl_pixelstore_attrib *dstPacking); extern void -_mesa_pack_depth_stencil_span(const struct gl_context *ctx, +_mesa_pack_depth_stencil_span(struct gl_context *ctx, GLuint n, GLuint *dest, const GLfloat *depthVals, const GLstencil *stencilVals, diff --git a/src/mesa/main/points.h b/src/mesa/main/points.h index b222379b1b5..306a8a572f9 100644 --- a/src/mesa/main/points.h +++ b/src/mesa/main/points.h @@ -32,7 +32,9 @@ #define POINTS_H -#include "mtypes.h" +#include "glheader.h" + +struct gl_context; extern void GLAPIENTRY diff --git a/src/mesa/main/polygon.h b/src/mesa/main/polygon.h index ad0ac4cc3a7..13f7c91ed07 100644 --- a/src/mesa/main/polygon.h +++ b/src/mesa/main/polygon.h @@ -32,8 +32,9 @@ #define POLYGON_H -#include "mtypes.h" +#include "glheader.h" +struct gl_context; extern void _mesa_polygon_stipple(struct gl_context *ctx, const GLubyte *pattern); diff --git a/src/mesa/main/queryobj.c b/src/mesa/main/queryobj.c index 88743977206..66fb5980589 100644 --- a/src/mesa/main/queryobj.c +++ b/src/mesa/main/queryobj.c @@ -143,6 +143,11 @@ get_query_binding_point(struct gl_context *ctx, GLenum target) return &ctx->Query.CurrentOcclusionObject; else return NULL; + case GL_ANY_SAMPLES_PASSED: + if (ctx->Extensions.ARB_occlusion_query2) + return &ctx->Query.CurrentOcclusionObject; + else + return NULL; case GL_TIME_ELAPSED_EXT: if (ctx->Extensions.EXT_timer_query) return &ctx->Query.CurrentTimerObject; @@ -378,11 +383,18 @@ _mesa_GetQueryObjectivARB(GLuint id, GLenum pname, GLint *params) if (!q->Ready) ctx->Driver.WaitQuery(ctx, q); /* if result is too large for returned type, clamp to max value */ - if (q->Result > 0x7fffffff) { - *params = 0x7fffffff; - } - else { - *params = (GLint)q->Result; + if (q->Target == GL_ANY_SAMPLES_PASSED) { + if (q->Result) + *params = GL_TRUE; + else + *params = GL_FALSE; + } else { + if (q->Result > 0x7fffffff) { + *params = 0x7fffffff; + } + else { + *params = (GLint)q->Result; + } } break; case GL_QUERY_RESULT_AVAILABLE_ARB: @@ -418,11 +430,18 @@ _mesa_GetQueryObjectuivARB(GLuint id, GLenum pname, GLuint *params) if (!q->Ready) ctx->Driver.WaitQuery(ctx, q); /* if result is too large for returned type, clamp to max value */ - if (q->Result > 0xffffffff) { - *params = 0xffffffff; - } - else { - *params = (GLuint)q->Result; + if (q->Target == GL_ANY_SAMPLES_PASSED) { + if (q->Result) + *params = GL_TRUE; + else + *params = GL_FALSE; + } else { + if (q->Result > 0xffffffff) { + *params = 0xffffffff; + } + else { + *params = (GLuint)q->Result; + } } break; case GL_QUERY_RESULT_AVAILABLE_ARB: diff --git a/src/mesa/main/rastpos.h b/src/mesa/main/rastpos.h index 9b508eaedf5..d113906f410 100644 --- a/src/mesa/main/rastpos.h +++ b/src/mesa/main/rastpos.h @@ -32,8 +32,11 @@ #define RASTPOS_H -#include "main/mtypes.h" +#include "compiler.h" +#include "mfeatures.h" +struct _glapi_table; +struct gl_context; #if FEATURE_rastpos diff --git a/src/mesa/main/readpix.h b/src/mesa/main/readpix.h index 0753e619fed..fd25e703e04 100644 --- a/src/mesa/main/readpix.h +++ b/src/mesa/main/readpix.h @@ -27,8 +27,9 @@ #define READPIXELS_H -#include "main/mtypes.h" +#include "glheader.h" +struct gl_context; extern GLboolean _mesa_error_check_format_type(struct gl_context *ctx, GLenum format, GLenum type, diff --git a/src/mesa/main/remap_helper.h b/src/mesa/main/remap_helper.h index 1aa2cdea38f..7368c76e7e7 100644 --- a/src/mesa/main/remap_helper.h +++ b/src/mesa/main/remap_helper.h @@ -48,4597 +48,4688 @@ static const char _mesa_function_pool[] = /* _mesa_function_pool[81]: VertexAttribI2iEXT (will be remapped) */ "iii\0" "glVertexAttribI2iEXT\0" + "glVertexAttribI2i\0" "\0" - /* _mesa_function_pool[107]: RasterPos4i (offset 82) */ + /* _mesa_function_pool[125]: RasterPos4i (offset 82) */ "iiii\0" "glRasterPos4i\0" "\0" - /* _mesa_function_pool[127]: RasterPos4d (offset 78) */ + /* _mesa_function_pool[145]: RasterPos4d (offset 78) */ "dddd\0" "glRasterPos4d\0" "\0" - /* _mesa_function_pool[147]: NewList (dynamic) */ + /* _mesa_function_pool[165]: NewList (dynamic) */ "ii\0" "glNewList\0" "\0" - /* _mesa_function_pool[161]: RasterPos4f (offset 80) */ + /* _mesa_function_pool[179]: RasterPos4f (offset 80) */ "ffff\0" "glRasterPos4f\0" "\0" - /* _mesa_function_pool[181]: LoadIdentity (offset 290) */ + /* _mesa_function_pool[199]: LoadIdentity (offset 290) */ "\0" "glLoadIdentity\0" "\0" - /* _mesa_function_pool[198]: SampleCoverageARB (will be remapped) */ + /* _mesa_function_pool[216]: SampleCoverageARB (will be remapped) */ "fi\0" "glSampleCoverage\0" "glSampleCoverageARB\0" "\0" - /* _mesa_function_pool[239]: ConvolutionFilter1D (offset 348) */ + /* _mesa_function_pool[257]: ConvolutionFilter1D (offset 348) */ "iiiiip\0" "glConvolutionFilter1D\0" "glConvolutionFilter1DEXT\0" "\0" - /* _mesa_function_pool[294]: BeginQueryARB (will be remapped) */ + /* _mesa_function_pool[312]: BeginQueryARB (will be remapped) */ "ii\0" "glBeginQuery\0" "glBeginQueryARB\0" "\0" - /* _mesa_function_pool[327]: RasterPos3dv (offset 71) */ + /* _mesa_function_pool[345]: RasterPos3dv (offset 71) */ "p\0" "glRasterPos3dv\0" "\0" - /* _mesa_function_pool[345]: PointParameteriNV (will be remapped) */ + /* _mesa_function_pool[363]: PointParameteriNV (will be remapped) */ "ii\0" "glPointParameteri\0" "glPointParameteriNV\0" "\0" - /* _mesa_function_pool[387]: GetProgramiv (will be remapped) */ + /* _mesa_function_pool[405]: GetProgramiv (will be remapped) */ "iip\0" "glGetProgramiv\0" "\0" - /* _mesa_function_pool[407]: MultiTexCoord3sARB (offset 398) */ + /* _mesa_function_pool[425]: MultiTexCoord3sARB (offset 398) */ "iiii\0" "glMultiTexCoord3s\0" "glMultiTexCoord3sARB\0" "\0" - /* _mesa_function_pool[452]: SecondaryColor3iEXT (will be remapped) */ + /* _mesa_function_pool[470]: SecondaryColor3iEXT (will be remapped) */ "iii\0" "glSecondaryColor3i\0" "glSecondaryColor3iEXT\0" "\0" - /* _mesa_function_pool[498]: WindowPos3fMESA (will be remapped) */ + /* _mesa_function_pool[516]: WindowPos3fMESA (will be remapped) */ "fff\0" "glWindowPos3f\0" "glWindowPos3fARB\0" "glWindowPos3fMESA\0" "\0" - /* _mesa_function_pool[552]: TexCoord1iv (offset 99) */ + /* _mesa_function_pool[570]: TexCoord1iv (offset 99) */ "p\0" "glTexCoord1iv\0" "\0" - /* _mesa_function_pool[569]: TexCoord4sv (offset 125) */ + /* _mesa_function_pool[587]: TexCoord4sv (offset 125) */ "p\0" "glTexCoord4sv\0" "\0" - /* _mesa_function_pool[586]: RasterPos4s (offset 84) */ + /* _mesa_function_pool[604]: RasterPos4s (offset 84) */ "iiii\0" "glRasterPos4s\0" "\0" - /* _mesa_function_pool[606]: PixelTexGenParameterfvSGIS (will be remapped) */ + /* _mesa_function_pool[624]: PixelTexGenParameterfvSGIS (will be remapped) */ "ip\0" "glPixelTexGenParameterfvSGIS\0" "\0" - /* _mesa_function_pool[639]: ActiveTextureARB (offset 374) */ + /* _mesa_function_pool[657]: ActiveTextureARB (offset 374) */ "i\0" "glActiveTexture\0" "glActiveTextureARB\0" "\0" - /* _mesa_function_pool[677]: BlitFramebufferEXT (will be remapped) */ + /* _mesa_function_pool[695]: BlitFramebufferEXT (will be remapped) */ "iiiiiiiiii\0" "glBlitFramebuffer\0" "glBlitFramebufferEXT\0" "\0" - /* _mesa_function_pool[728]: TexCoord1f (offset 96) */ + /* _mesa_function_pool[746]: TexCoord1f (offset 96) */ "f\0" "glTexCoord1f\0" "\0" - /* _mesa_function_pool[744]: TexCoord1d (offset 94) */ + /* _mesa_function_pool[762]: TexCoord1d (offset 94) */ "d\0" "glTexCoord1d\0" "\0" - /* _mesa_function_pool[760]: VertexAttrib4ubvNV (will be remapped) */ + /* _mesa_function_pool[778]: VertexAttrib4ubvNV (will be remapped) */ "ip\0" "glVertexAttrib4ubvNV\0" "\0" - /* _mesa_function_pool[785]: TexCoord1i (offset 98) */ + /* _mesa_function_pool[803]: TexCoord1i (offset 98) */ "i\0" "glTexCoord1i\0" "\0" - /* _mesa_function_pool[801]: GetProgramNamedParameterdvNV (will be remapped) */ + /* _mesa_function_pool[819]: GetProgramNamedParameterdvNV (will be remapped) */ "iipp\0" "glGetProgramNamedParameterdvNV\0" "\0" - /* _mesa_function_pool[838]: Histogram (offset 367) */ + /* _mesa_function_pool[856]: Histogram (offset 367) */ "iiii\0" "glHistogram\0" "glHistogramEXT\0" "\0" - /* _mesa_function_pool[871]: TexCoord1s (offset 100) */ + /* _mesa_function_pool[889]: TexCoord1s (offset 100) */ "i\0" "glTexCoord1s\0" "\0" - /* _mesa_function_pool[887]: GetMapfv (offset 267) */ + /* _mesa_function_pool[905]: GetMapfv (offset 267) */ "iip\0" "glGetMapfv\0" "\0" - /* _mesa_function_pool[903]: EvalCoord1f (offset 230) */ + /* _mesa_function_pool[921]: EvalCoord1f (offset 230) */ "f\0" "glEvalCoord1f\0" "\0" - /* _mesa_function_pool[920]: VertexAttribI1ivEXT (will be remapped) */ + /* _mesa_function_pool[938]: FramebufferTexture (will be remapped) */ + "iiii\0" + "glFramebufferTexture\0" + "\0" + /* _mesa_function_pool[965]: VertexAttribI1ivEXT (will be remapped) */ "ip\0" "glVertexAttribI1ivEXT\0" + "glVertexAttribI1iv\0" "\0" - /* _mesa_function_pool[946]: TexImage4DSGIS (dynamic) */ + /* _mesa_function_pool[1010]: TexImage4DSGIS (dynamic) */ "iiiiiiiiiip\0" "glTexImage4DSGIS\0" "\0" - /* _mesa_function_pool[976]: PolygonStipple (offset 175) */ + /* _mesa_function_pool[1040]: PolygonStipple (offset 175) */ "p\0" "glPolygonStipple\0" "\0" - /* _mesa_function_pool[996]: WindowPos2dvMESA (will be remapped) */ + /* _mesa_function_pool[1060]: WindowPos2dvMESA (will be remapped) */ "p\0" "glWindowPos2dv\0" "glWindowPos2dvARB\0" "glWindowPos2dvMESA\0" "\0" - /* _mesa_function_pool[1051]: ReplacementCodeuiColor3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[1115]: ReplacementCodeuiColor3fVertex3fvSUN (dynamic) */ "ppp\0" "glReplacementCodeuiColor3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[1095]: BlendEquationSeparateEXT (will be remapped) */ + /* _mesa_function_pool[1159]: BlendEquationSeparateEXT (will be remapped) */ "ii\0" "glBlendEquationSeparate\0" "glBlendEquationSeparateEXT\0" "glBlendEquationSeparateATI\0" "\0" - /* _mesa_function_pool[1177]: ListParameterfSGIX (dynamic) */ + /* _mesa_function_pool[1241]: ListParameterfSGIX (dynamic) */ "iif\0" "glListParameterfSGIX\0" "\0" - /* _mesa_function_pool[1203]: SecondaryColor3bEXT (will be remapped) */ + /* _mesa_function_pool[1267]: SecondaryColor3bEXT (will be remapped) */ "iii\0" "glSecondaryColor3b\0" "glSecondaryColor3bEXT\0" "\0" - /* _mesa_function_pool[1249]: TexCoord4fColor4fNormal3fVertex4fvSUN (dynamic) */ + /* _mesa_function_pool[1313]: TexCoord4fColor4fNormal3fVertex4fvSUN (dynamic) */ "pppp\0" "glTexCoord4fColor4fNormal3fVertex4fvSUN\0" "\0" - /* _mesa_function_pool[1295]: GetPixelMapfv (offset 271) */ + /* _mesa_function_pool[1359]: GetPixelMapfv (offset 271) */ "ip\0" "glGetPixelMapfv\0" "\0" - /* _mesa_function_pool[1315]: Color3uiv (offset 22) */ + /* _mesa_function_pool[1379]: Color3uiv (offset 22) */ "p\0" "glColor3uiv\0" "\0" - /* _mesa_function_pool[1330]: IsEnabled (offset 286) */ + /* _mesa_function_pool[1394]: IsEnabled (offset 286) */ "i\0" "glIsEnabled\0" "\0" - /* _mesa_function_pool[1345]: VertexAttrib4svNV (will be remapped) */ + /* _mesa_function_pool[1409]: VertexAttrib4svNV (will be remapped) */ "ip\0" "glVertexAttrib4svNV\0" "\0" - /* _mesa_function_pool[1369]: EvalCoord2fv (offset 235) */ + /* _mesa_function_pool[1433]: EvalCoord2fv (offset 235) */ "p\0" "glEvalCoord2fv\0" "\0" - /* _mesa_function_pool[1387]: GetBufferSubDataARB (will be remapped) */ + /* _mesa_function_pool[1451]: GetBufferSubDataARB (will be remapped) */ "iiip\0" "glGetBufferSubData\0" "glGetBufferSubDataARB\0" "\0" - /* _mesa_function_pool[1434]: BufferSubDataARB (will be remapped) */ + /* _mesa_function_pool[1498]: BufferSubDataARB (will be remapped) */ "iiip\0" "glBufferSubData\0" "glBufferSubDataARB\0" "\0" - /* _mesa_function_pool[1475]: TexCoord2fColor4ubVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[1539]: TexCoord2fColor4ubVertex3fvSUN (dynamic) */ "ppp\0" "glTexCoord2fColor4ubVertex3fvSUN\0" "\0" - /* _mesa_function_pool[1513]: AttachShader (will be remapped) */ + /* _mesa_function_pool[1577]: AttachShader (will be remapped) */ "ii\0" "glAttachShader\0" "\0" - /* _mesa_function_pool[1532]: VertexAttrib2fARB (will be remapped) */ + /* _mesa_function_pool[1596]: VertexAttrib2fARB (will be remapped) */ "iff\0" "glVertexAttrib2f\0" "glVertexAttrib2fARB\0" "\0" - /* _mesa_function_pool[1574]: GetDebugLogLengthMESA (dynamic) */ + /* _mesa_function_pool[1638]: GetDebugLogLengthMESA (dynamic) */ "iii\0" "glGetDebugLogLengthMESA\0" "\0" - /* _mesa_function_pool[1603]: GetMapiv (offset 268) */ + /* _mesa_function_pool[1667]: GetMapiv (offset 268) */ "iip\0" "glGetMapiv\0" "\0" - /* _mesa_function_pool[1619]: VertexAttrib3fARB (will be remapped) */ + /* _mesa_function_pool[1683]: VertexAttrib3fARB (will be remapped) */ "ifff\0" "glVertexAttrib3f\0" "glVertexAttrib3fARB\0" "\0" - /* _mesa_function_pool[1662]: Indexubv (offset 316) */ + /* _mesa_function_pool[1726]: Indexubv (offset 316) */ "p\0" "glIndexubv\0" "\0" - /* _mesa_function_pool[1676]: GetQueryivARB (will be remapped) */ + /* _mesa_function_pool[1740]: GetQueryivARB (will be remapped) */ "iip\0" "glGetQueryiv\0" "glGetQueryivARB\0" "\0" - /* _mesa_function_pool[1710]: TexImage3D (offset 371) */ + /* _mesa_function_pool[1774]: TexImage3D (offset 371) */ "iiiiiiiiip\0" "glTexImage3D\0" "glTexImage3DEXT\0" "\0" - /* _mesa_function_pool[1751]: BindFragDataLocationEXT (will be remapped) */ + /* _mesa_function_pool[1815]: BindFragDataLocationEXT (will be remapped) */ "iip\0" "glBindFragDataLocationEXT\0" + "glBindFragDataLocation\0" "\0" - /* _mesa_function_pool[1782]: ReplacementCodeuiVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[1869]: ReplacementCodeuiVertex3fvSUN (dynamic) */ "pp\0" "glReplacementCodeuiVertex3fvSUN\0" "\0" - /* _mesa_function_pool[1818]: EdgeFlagPointer (offset 312) */ + /* _mesa_function_pool[1905]: EdgeFlagPointer (offset 312) */ "ip\0" "glEdgeFlagPointer\0" "\0" - /* _mesa_function_pool[1840]: Color3ubv (offset 20) */ + /* _mesa_function_pool[1927]: Color3ubv (offset 20) */ "p\0" "glColor3ubv\0" "\0" - /* _mesa_function_pool[1855]: GetQueryObjectivARB (will be remapped) */ + /* _mesa_function_pool[1942]: GetQueryObjectivARB (will be remapped) */ "iip\0" "glGetQueryObjectiv\0" "glGetQueryObjectivARB\0" "\0" - /* _mesa_function_pool[1901]: Vertex3dv (offset 135) */ + /* _mesa_function_pool[1988]: Vertex3dv (offset 135) */ "p\0" "glVertex3dv\0" "\0" - /* _mesa_function_pool[1916]: ReplacementCodeuiTexCoord2fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[2003]: ReplacementCodeuiTexCoord2fVertex3fvSUN (dynamic) */ "ppp\0" "glReplacementCodeuiTexCoord2fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[1963]: CompressedTexSubImage2DARB (will be remapped) */ + /* _mesa_function_pool[2050]: CompressedTexSubImage2DARB (will be remapped) */ "iiiiiiiip\0" "glCompressedTexSubImage2D\0" "glCompressedTexSubImage2DARB\0" "\0" - /* _mesa_function_pool[2029]: CombinerOutputNV (will be remapped) */ + /* _mesa_function_pool[2116]: CombinerOutputNV (will be remapped) */ "iiiiiiiiii\0" "glCombinerOutputNV\0" "\0" - /* _mesa_function_pool[2060]: VertexAttribs3fvNV (will be remapped) */ + /* _mesa_function_pool[2147]: VertexAttribs3fvNV (will be remapped) */ "iip\0" "glVertexAttribs3fvNV\0" "\0" - /* _mesa_function_pool[2086]: Uniform2fARB (will be remapped) */ + /* _mesa_function_pool[2173]: Uniform2fARB (will be remapped) */ "iff\0" "glUniform2f\0" "glUniform2fARB\0" "\0" - /* _mesa_function_pool[2118]: LightModeliv (offset 166) */ + /* _mesa_function_pool[2205]: LightModeliv (offset 166) */ "ip\0" "glLightModeliv\0" "\0" - /* _mesa_function_pool[2137]: VertexAttrib1svARB (will be remapped) */ + /* _mesa_function_pool[2224]: VertexAttrib1svARB (will be remapped) */ "ip\0" "glVertexAttrib1sv\0" "glVertexAttrib1svARB\0" "\0" - /* _mesa_function_pool[2180]: VertexAttribs1dvNV (will be remapped) */ + /* _mesa_function_pool[2267]: VertexAttribs1dvNV (will be remapped) */ "iip\0" "glVertexAttribs1dvNV\0" "\0" - /* _mesa_function_pool[2206]: Uniform2ivARB (will be remapped) */ + /* _mesa_function_pool[2293]: Uniform2ivARB (will be remapped) */ "iip\0" "glUniform2iv\0" "glUniform2ivARB\0" "\0" - /* _mesa_function_pool[2240]: GetImageTransformParameterfvHP (dynamic) */ + /* _mesa_function_pool[2327]: GetImageTransformParameterfvHP (dynamic) */ "iip\0" "glGetImageTransformParameterfvHP\0" "\0" - /* _mesa_function_pool[2278]: Normal3bv (offset 53) */ + /* _mesa_function_pool[2365]: Normal3bv (offset 53) */ "p\0" "glNormal3bv\0" "\0" - /* _mesa_function_pool[2293]: TexGeniv (offset 193) */ + /* _mesa_function_pool[2380]: TexGeniv (offset 193) */ "iip\0" "glTexGeniv\0" "\0" - /* _mesa_function_pool[2309]: WeightubvARB (dynamic) */ + /* _mesa_function_pool[2396]: WeightubvARB (dynamic) */ "ip\0" "glWeightubvARB\0" "\0" - /* _mesa_function_pool[2328]: VertexAttrib1fvNV (will be remapped) */ + /* _mesa_function_pool[2415]: VertexAttrib1fvNV (will be remapped) */ "ip\0" "glVertexAttrib1fvNV\0" "\0" - /* _mesa_function_pool[2352]: Vertex3iv (offset 139) */ + /* _mesa_function_pool[2439]: Vertex3iv (offset 139) */ "p\0" "glVertex3iv\0" "\0" - /* _mesa_function_pool[2367]: CopyConvolutionFilter1D (offset 354) */ + /* _mesa_function_pool[2454]: CopyConvolutionFilter1D (offset 354) */ "iiiii\0" "glCopyConvolutionFilter1D\0" "glCopyConvolutionFilter1DEXT\0" "\0" - /* _mesa_function_pool[2429]: VertexAttribI1uiEXT (will be remapped) */ + /* _mesa_function_pool[2516]: VertexAttribI1uiEXT (will be remapped) */ "ii\0" "glVertexAttribI1uiEXT\0" + "glVertexAttribI1ui\0" "\0" - /* _mesa_function_pool[2455]: ReplacementCodeuiNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[2561]: ReplacementCodeuiNormal3fVertex3fSUN (dynamic) */ "iffffff\0" "glReplacementCodeuiNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[2503]: DeleteSync (will be remapped) */ + /* _mesa_function_pool[2609]: DeleteSync (will be remapped) */ "i\0" "glDeleteSync\0" "\0" - /* _mesa_function_pool[2519]: FragmentMaterialfvSGIX (dynamic) */ + /* _mesa_function_pool[2625]: FragmentMaterialfvSGIX (dynamic) */ "iip\0" "glFragmentMaterialfvSGIX\0" "\0" - /* _mesa_function_pool[2549]: BlendColor (offset 336) */ + /* _mesa_function_pool[2655]: BlendColor (offset 336) */ "ffff\0" "glBlendColor\0" "glBlendColorEXT\0" "\0" - /* _mesa_function_pool[2584]: UniformMatrix4fvARB (will be remapped) */ + /* _mesa_function_pool[2690]: UniformMatrix4fvARB (will be remapped) */ "iiip\0" "glUniformMatrix4fv\0" "glUniformMatrix4fvARB\0" "\0" - /* _mesa_function_pool[2631]: DeleteVertexArraysAPPLE (will be remapped) */ + /* _mesa_function_pool[2737]: DeleteVertexArraysAPPLE (will be remapped) */ "ip\0" "glDeleteVertexArrays\0" "glDeleteVertexArraysAPPLE\0" "\0" - /* _mesa_function_pool[2682]: ReadInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[2788]: TexBuffer (will be remapped) */ + "iii\0" + "glTexBuffer\0" + "\0" + /* _mesa_function_pool[2805]: ReadInstrumentsSGIX (dynamic) */ "i\0" "glReadInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[2707]: CallLists (offset 3) */ + /* _mesa_function_pool[2830]: CallLists (offset 3) */ "iip\0" "glCallLists\0" "\0" - /* _mesa_function_pool[2724]: UniformMatrix2x4fv (will be remapped) */ + /* _mesa_function_pool[2847]: UniformMatrix2x4fv (will be remapped) */ "iiip\0" "glUniformMatrix2x4fv\0" "\0" - /* _mesa_function_pool[2751]: Color4ubVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[2874]: Color4ubVertex3fvSUN (dynamic) */ "pp\0" "glColor4ubVertex3fvSUN\0" "\0" - /* _mesa_function_pool[2778]: Normal3iv (offset 59) */ + /* _mesa_function_pool[2901]: Normal3iv (offset 59) */ "p\0" "glNormal3iv\0" "\0" - /* _mesa_function_pool[2793]: PassThrough (offset 199) */ + /* _mesa_function_pool[2916]: PassThrough (offset 199) */ "f\0" "glPassThrough\0" "\0" - /* _mesa_function_pool[2810]: GetVertexAttribIivEXT (will be remapped) */ + /* _mesa_function_pool[2933]: GetVertexAttribIivEXT (will be remapped) */ "iip\0" "glGetVertexAttribIivEXT\0" + "glGetVertexAttribIiv\0" "\0" - /* _mesa_function_pool[2839]: TexParameterIivEXT (will be remapped) */ + /* _mesa_function_pool[2983]: TexParameterIivEXT (will be remapped) */ "iip\0" "glTexParameterIivEXT\0" + "glTexParameterIiv\0" "\0" - /* _mesa_function_pool[2865]: FramebufferTextureLayerEXT (will be remapped) */ + /* _mesa_function_pool[3027]: FramebufferTextureLayerEXT (will be remapped) */ "iiiii\0" "glFramebufferTextureLayer\0" "glFramebufferTextureLayerEXT\0" "\0" - /* _mesa_function_pool[2927]: GetListParameterfvSGIX (dynamic) */ + /* _mesa_function_pool[3089]: GetListParameterfvSGIX (dynamic) */ "iip\0" "glGetListParameterfvSGIX\0" "\0" - /* _mesa_function_pool[2957]: Viewport (offset 305) */ + /* _mesa_function_pool[3119]: Viewport (offset 305) */ "iiii\0" "glViewport\0" "\0" - /* _mesa_function_pool[2974]: VertexAttrib4NusvARB (will be remapped) */ + /* _mesa_function_pool[3136]: VertexAttrib4NusvARB (will be remapped) */ "ip\0" "glVertexAttrib4Nusv\0" "glVertexAttrib4NusvARB\0" "\0" - /* _mesa_function_pool[3021]: WindowPos4svMESA (will be remapped) */ + /* _mesa_function_pool[3183]: WindowPos4svMESA (will be remapped) */ "p\0" "glWindowPos4svMESA\0" "\0" - /* _mesa_function_pool[3043]: CreateProgramObjectARB (will be remapped) */ + /* _mesa_function_pool[3205]: CreateProgramObjectARB (will be remapped) */ "\0" "glCreateProgramObjectARB\0" "\0" - /* _mesa_function_pool[3070]: DeleteTransformFeedbacks (will be remapped) */ + /* _mesa_function_pool[3232]: DeleteTransformFeedbacks (will be remapped) */ "ip\0" "glDeleteTransformFeedbacks\0" "\0" - /* _mesa_function_pool[3101]: UniformMatrix4x3fv (will be remapped) */ + /* _mesa_function_pool[3263]: UniformMatrix4x3fv (will be remapped) */ "iiip\0" "glUniformMatrix4x3fv\0" "\0" - /* _mesa_function_pool[3128]: PrioritizeTextures (offset 331) */ + /* _mesa_function_pool[3290]: PrioritizeTextures (offset 331) */ "ipp\0" "glPrioritizeTextures\0" "glPrioritizeTexturesEXT\0" "\0" - /* _mesa_function_pool[3178]: VertexAttribI3uiEXT (will be remapped) */ + /* _mesa_function_pool[3340]: VertexAttribI3uiEXT (will be remapped) */ "iiii\0" "glVertexAttribI3uiEXT\0" + "glVertexAttribI3ui\0" "\0" - /* _mesa_function_pool[3206]: AsyncMarkerSGIX (dynamic) */ + /* _mesa_function_pool[3387]: AsyncMarkerSGIX (dynamic) */ "i\0" "glAsyncMarkerSGIX\0" "\0" - /* _mesa_function_pool[3227]: GlobalAlphaFactorubSUN (dynamic) */ + /* _mesa_function_pool[3408]: GlobalAlphaFactorubSUN (dynamic) */ "i\0" "glGlobalAlphaFactorubSUN\0" "\0" - /* _mesa_function_pool[3255]: ClearColorIuiEXT (will be remapped) */ + /* _mesa_function_pool[3436]: ClearColorIuiEXT (will be remapped) */ "iiii\0" "glClearColorIuiEXT\0" "\0" - /* _mesa_function_pool[3280]: ClearDebugLogMESA (dynamic) */ + /* _mesa_function_pool[3461]: ClearDebugLogMESA (dynamic) */ "iii\0" "glClearDebugLogMESA\0" "\0" - /* _mesa_function_pool[3305]: Uniform4uiEXT (will be remapped) */ + /* _mesa_function_pool[3486]: Uniform4uiEXT (will be remapped) */ "iiiii\0" "glUniform4uiEXT\0" + "glUniform4ui\0" "\0" - /* _mesa_function_pool[3328]: ResetHistogram (offset 369) */ + /* _mesa_function_pool[3522]: ResetHistogram (offset 369) */ "i\0" "glResetHistogram\0" "glResetHistogramEXT\0" "\0" - /* _mesa_function_pool[3368]: GetProgramNamedParameterfvNV (will be remapped) */ + /* _mesa_function_pool[3562]: GetProgramNamedParameterfvNV (will be remapped) */ "iipp\0" "glGetProgramNamedParameterfvNV\0" "\0" - /* _mesa_function_pool[3405]: PointParameterfEXT (will be remapped) */ + /* _mesa_function_pool[3599]: PointParameterfEXT (will be remapped) */ "if\0" "glPointParameterf\0" "glPointParameterfARB\0" "glPointParameterfEXT\0" "glPointParameterfSGIS\0" "\0" - /* _mesa_function_pool[3491]: LoadIdentityDeformationMapSGIX (dynamic) */ + /* _mesa_function_pool[3685]: LoadIdentityDeformationMapSGIX (dynamic) */ "i\0" "glLoadIdentityDeformationMapSGIX\0" "\0" - /* _mesa_function_pool[3527]: GenFencesNV (will be remapped) */ + /* _mesa_function_pool[3721]: GenFencesNV (will be remapped) */ "ip\0" "glGenFencesNV\0" "\0" - /* _mesa_function_pool[3545]: ImageTransformParameterfHP (dynamic) */ + /* _mesa_function_pool[3739]: ImageTransformParameterfHP (dynamic) */ "iif\0" "glImageTransformParameterfHP\0" "\0" - /* _mesa_function_pool[3579]: MatrixIndexusvARB (dynamic) */ + /* _mesa_function_pool[3773]: MatrixIndexusvARB (dynamic) */ "ip\0" "glMatrixIndexusvARB\0" "\0" - /* _mesa_function_pool[3603]: DrawElementsBaseVertex (will be remapped) */ + /* _mesa_function_pool[3797]: DrawElementsBaseVertex (will be remapped) */ "iiipi\0" "glDrawElementsBaseVertex\0" "\0" - /* _mesa_function_pool[3635]: DisableVertexAttribArrayARB (will be remapped) */ + /* _mesa_function_pool[3829]: DisableVertexAttribArrayARB (will be remapped) */ "i\0" "glDisableVertexAttribArray\0" "glDisableVertexAttribArrayARB\0" "\0" - /* _mesa_function_pool[3695]: TexCoord2sv (offset 109) */ + /* _mesa_function_pool[3889]: TexCoord2sv (offset 109) */ "p\0" "glTexCoord2sv\0" "\0" - /* _mesa_function_pool[3712]: Vertex4dv (offset 143) */ + /* _mesa_function_pool[3906]: Vertex4dv (offset 143) */ "p\0" "glVertex4dv\0" "\0" - /* _mesa_function_pool[3727]: StencilMaskSeparate (will be remapped) */ + /* _mesa_function_pool[3921]: StencilMaskSeparate (will be remapped) */ "ii\0" "glStencilMaskSeparate\0" "\0" - /* _mesa_function_pool[3753]: ProgramLocalParameter4dARB (will be remapped) */ + /* _mesa_function_pool[3947]: ProgramLocalParameter4dARB (will be remapped) */ "iidddd\0" "glProgramLocalParameter4dARB\0" "\0" - /* _mesa_function_pool[3790]: CompressedTexImage3DARB (will be remapped) */ + /* _mesa_function_pool[3984]: CompressedTexImage3DARB (will be remapped) */ "iiiiiiiip\0" "glCompressedTexImage3D\0" "glCompressedTexImage3DARB\0" "\0" - /* _mesa_function_pool[3850]: Color3sv (offset 18) */ + /* _mesa_function_pool[4044]: Color3sv (offset 18) */ "p\0" "glColor3sv\0" "\0" - /* _mesa_function_pool[3864]: GetConvolutionParameteriv (offset 358) */ + /* _mesa_function_pool[4058]: GetConvolutionParameteriv (offset 358) */ "iip\0" "glGetConvolutionParameteriv\0" "glGetConvolutionParameterivEXT\0" "\0" - /* _mesa_function_pool[3928]: VertexAttrib1fARB (will be remapped) */ + /* _mesa_function_pool[4122]: VertexAttrib1fARB (will be remapped) */ "if\0" "glVertexAttrib1f\0" "glVertexAttrib1fARB\0" "\0" - /* _mesa_function_pool[3969]: Vertex2dv (offset 127) */ + /* _mesa_function_pool[4163]: Vertex2dv (offset 127) */ "p\0" "glVertex2dv\0" "\0" - /* _mesa_function_pool[3984]: TestFenceNV (will be remapped) */ + /* _mesa_function_pool[4178]: TestFenceNV (will be remapped) */ "i\0" "glTestFenceNV\0" "\0" - /* _mesa_function_pool[4001]: GetVertexAttribIuivEXT (will be remapped) */ + /* _mesa_function_pool[4195]: GetVertexAttribIuivEXT (will be remapped) */ "iip\0" "glGetVertexAttribIuivEXT\0" + "glGetVertexAttribIuiv\0" "\0" - /* _mesa_function_pool[4031]: MultiTexCoord1fvARB (offset 379) */ + /* _mesa_function_pool[4247]: MultiTexCoord1fvARB (offset 379) */ "ip\0" "glMultiTexCoord1fv\0" "glMultiTexCoord1fvARB\0" "\0" - /* _mesa_function_pool[4076]: TexCoord3iv (offset 115) */ + /* _mesa_function_pool[4292]: TexCoord3iv (offset 115) */ "p\0" "glTexCoord3iv\0" "\0" - /* _mesa_function_pool[4093]: Uniform2uivEXT (will be remapped) */ + /* _mesa_function_pool[4309]: Uniform2uivEXT (will be remapped) */ "iip\0" "glUniform2uivEXT\0" + "glUniform2uiv\0" "\0" - /* _mesa_function_pool[4115]: ColorFragmentOp2ATI (will be remapped) */ + /* _mesa_function_pool[4345]: ColorFragmentOp2ATI (will be remapped) */ "iiiiiiiiii\0" "glColorFragmentOp2ATI\0" "\0" - /* _mesa_function_pool[4149]: SecondaryColorPointerListIBM (dynamic) */ + /* _mesa_function_pool[4379]: SecondaryColorPointerListIBM (dynamic) */ "iiipi\0" "glSecondaryColorPointerListIBM\0" "\0" - /* _mesa_function_pool[4187]: GetPixelTexGenParameterivSGIS (will be remapped) */ + /* _mesa_function_pool[4417]: GetPixelTexGenParameterivSGIS (will be remapped) */ "ip\0" "glGetPixelTexGenParameterivSGIS\0" "\0" - /* _mesa_function_pool[4223]: Color3fv (offset 14) */ + /* _mesa_function_pool[4453]: Color3fv (offset 14) */ "p\0" "glColor3fv\0" "\0" - /* _mesa_function_pool[4237]: VertexAttrib4fNV (will be remapped) */ + /* _mesa_function_pool[4467]: VertexAttrib4fNV (will be remapped) */ "iffff\0" "glVertexAttrib4fNV\0" "\0" - /* _mesa_function_pool[4263]: ReplacementCodeubSUN (dynamic) */ + /* _mesa_function_pool[4493]: ReplacementCodeubSUN (dynamic) */ "i\0" "glReplacementCodeubSUN\0" "\0" - /* _mesa_function_pool[4289]: FinishAsyncSGIX (dynamic) */ + /* _mesa_function_pool[4519]: FinishAsyncSGIX (dynamic) */ "p\0" "glFinishAsyncSGIX\0" "\0" - /* _mesa_function_pool[4310]: GetDebugLogMESA (dynamic) */ + /* _mesa_function_pool[4540]: GetDebugLogMESA (dynamic) */ "iiiipp\0" "glGetDebugLogMESA\0" "\0" - /* _mesa_function_pool[4336]: FogCoorddEXT (will be remapped) */ + /* _mesa_function_pool[4566]: FogCoorddEXT (will be remapped) */ "d\0" "glFogCoordd\0" "glFogCoorddEXT\0" "\0" - /* _mesa_function_pool[4366]: BeginConditionalRenderNV (will be remapped) */ + /* _mesa_function_pool[4596]: BeginConditionalRenderNV (will be remapped) */ "ii\0" "glBeginConditionalRenderNV\0" + "glBeginConditionalRender\0" "\0" - /* _mesa_function_pool[4397]: Color4ubVertex3fSUN (dynamic) */ + /* _mesa_function_pool[4652]: Color4ubVertex3fSUN (dynamic) */ "iiiifff\0" "glColor4ubVertex3fSUN\0" "\0" - /* _mesa_function_pool[4428]: FogCoordfEXT (will be remapped) */ + /* _mesa_function_pool[4683]: FogCoordfEXT (will be remapped) */ "f\0" "glFogCoordf\0" "glFogCoordfEXT\0" "\0" - /* _mesa_function_pool[4458]: PointSize (offset 173) */ + /* _mesa_function_pool[4713]: PointSize (offset 173) */ "f\0" "glPointSize\0" "\0" - /* _mesa_function_pool[4473]: VertexAttribI2uivEXT (will be remapped) */ + /* _mesa_function_pool[4728]: VertexAttribI2uivEXT (will be remapped) */ "ip\0" "glVertexAttribI2uivEXT\0" + "glVertexAttribI2uiv\0" "\0" - /* _mesa_function_pool[4500]: TexCoord2fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[4775]: TexCoord2fVertex3fSUN (dynamic) */ "fffff\0" "glTexCoord2fVertex3fSUN\0" "\0" - /* _mesa_function_pool[4531]: PopName (offset 200) */ + /* _mesa_function_pool[4806]: PopName (offset 200) */ "\0" "glPopName\0" "\0" - /* _mesa_function_pool[4543]: GlobalAlphaFactoriSUN (dynamic) */ + /* _mesa_function_pool[4818]: GlobalAlphaFactoriSUN (dynamic) */ "i\0" "glGlobalAlphaFactoriSUN\0" "\0" - /* _mesa_function_pool[4570]: VertexAttrib2dNV (will be remapped) */ + /* _mesa_function_pool[4845]: VertexAttrib2dNV (will be remapped) */ "idd\0" "glVertexAttrib2dNV\0" "\0" - /* _mesa_function_pool[4594]: GetProgramInfoLog (will be remapped) */ + /* _mesa_function_pool[4869]: GetProgramInfoLog (will be remapped) */ "iipp\0" "glGetProgramInfoLog\0" "\0" - /* _mesa_function_pool[4620]: VertexAttrib4NbvARB (will be remapped) */ + /* _mesa_function_pool[4895]: VertexAttrib4NbvARB (will be remapped) */ "ip\0" "glVertexAttrib4Nbv\0" "glVertexAttrib4NbvARB\0" "\0" - /* _mesa_function_pool[4665]: GetActiveAttribARB (will be remapped) */ + /* _mesa_function_pool[4940]: GetActiveAttribARB (will be remapped) */ "iiipppp\0" "glGetActiveAttrib\0" "glGetActiveAttribARB\0" "\0" - /* _mesa_function_pool[4713]: Vertex4sv (offset 149) */ + /* _mesa_function_pool[4988]: Vertex4sv (offset 149) */ "p\0" "glVertex4sv\0" "\0" - /* _mesa_function_pool[4728]: VertexAttrib4ubNV (will be remapped) */ + /* _mesa_function_pool[5003]: VertexAttrib4ubNV (will be remapped) */ "iiiii\0" "glVertexAttrib4ubNV\0" "\0" - /* _mesa_function_pool[4755]: TextureRangeAPPLE (will be remapped) */ + /* _mesa_function_pool[5030]: ClampColor (will be remapped) */ + "ii\0" + "glClampColor\0" + "\0" + /* _mesa_function_pool[5047]: TextureRangeAPPLE (will be remapped) */ "iip\0" "glTextureRangeAPPLE\0" "\0" - /* _mesa_function_pool[4780]: GetTexEnvfv (offset 276) */ + /* _mesa_function_pool[5072]: GetTexEnvfv (offset 276) */ "iip\0" "glGetTexEnvfv\0" "\0" - /* _mesa_function_pool[4799]: BindTransformFeedback (will be remapped) */ + /* _mesa_function_pool[5091]: BindTransformFeedback (will be remapped) */ "ii\0" "glBindTransformFeedback\0" "\0" - /* _mesa_function_pool[4827]: TexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[5119]: TexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */ "ffffffffffff\0" "glTexCoord2fColor4fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[4880]: Indexub (offset 315) */ + /* _mesa_function_pool[5172]: Indexub (offset 315) */ "i\0" "glIndexub\0" "\0" - /* _mesa_function_pool[4893]: TexEnvi (offset 186) */ + /* _mesa_function_pool[5185]: TexEnvi (offset 186) */ "iii\0" "glTexEnvi\0" "\0" - /* _mesa_function_pool[4908]: GetClipPlane (offset 259) */ + /* _mesa_function_pool[5200]: GetClipPlane (offset 259) */ "ip\0" "glGetClipPlane\0" "\0" - /* _mesa_function_pool[4927]: CombinerParameterfvNV (will be remapped) */ + /* _mesa_function_pool[5219]: CombinerParameterfvNV (will be remapped) */ "ip\0" "glCombinerParameterfvNV\0" "\0" - /* _mesa_function_pool[4955]: VertexAttribs3dvNV (will be remapped) */ + /* _mesa_function_pool[5247]: VertexAttribs3dvNV (will be remapped) */ "iip\0" "glVertexAttribs3dvNV\0" "\0" - /* _mesa_function_pool[4981]: VertexAttribI2uiEXT (will be remapped) */ + /* _mesa_function_pool[5273]: VertexAttribI2uiEXT (will be remapped) */ "iii\0" "glVertexAttribI2uiEXT\0" + "glVertexAttribI2ui\0" "\0" - /* _mesa_function_pool[5008]: VertexAttribs4fvNV (will be remapped) */ + /* _mesa_function_pool[5319]: VertexAttribs4fvNV (will be remapped) */ "iip\0" "glVertexAttribs4fvNV\0" "\0" - /* _mesa_function_pool[5034]: VertexArrayRangeNV (will be remapped) */ + /* _mesa_function_pool[5345]: VertexArrayRangeNV (will be remapped) */ "ip\0" "glVertexArrayRangeNV\0" "\0" - /* _mesa_function_pool[5059]: FragmentLightiSGIX (dynamic) */ + /* _mesa_function_pool[5370]: FragmentLightiSGIX (dynamic) */ "iii\0" "glFragmentLightiSGIX\0" "\0" - /* _mesa_function_pool[5085]: PolygonOffsetEXT (will be remapped) */ + /* _mesa_function_pool[5396]: PolygonOffsetEXT (will be remapped) */ "ff\0" "glPolygonOffsetEXT\0" "\0" - /* _mesa_function_pool[5108]: VertexAttribI4uivEXT (will be remapped) */ + /* _mesa_function_pool[5419]: VertexAttribI4uivEXT (will be remapped) */ "ip\0" "glVertexAttribI4uivEXT\0" + "glVertexAttribI4uiv\0" "\0" - /* _mesa_function_pool[5135]: PollAsyncSGIX (dynamic) */ + /* _mesa_function_pool[5466]: PollAsyncSGIX (dynamic) */ "p\0" "glPollAsyncSGIX\0" "\0" - /* _mesa_function_pool[5154]: DeleteFragmentShaderATI (will be remapped) */ + /* _mesa_function_pool[5485]: DeleteFragmentShaderATI (will be remapped) */ "i\0" "glDeleteFragmentShaderATI\0" "\0" - /* _mesa_function_pool[5183]: Scaled (offset 301) */ + /* _mesa_function_pool[5514]: Scaled (offset 301) */ "ddd\0" "glScaled\0" "\0" - /* _mesa_function_pool[5197]: ResumeTransformFeedback (will be remapped) */ + /* _mesa_function_pool[5528]: ResumeTransformFeedback (will be remapped) */ "\0" "glResumeTransformFeedback\0" "\0" - /* _mesa_function_pool[5225]: Scalef (offset 302) */ + /* _mesa_function_pool[5556]: Scalef (offset 302) */ "fff\0" "glScalef\0" "\0" - /* _mesa_function_pool[5239]: TexCoord2fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[5570]: TexCoord2fNormal3fVertex3fvSUN (dynamic) */ "ppp\0" "glTexCoord2fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[5277]: MultTransposeMatrixdARB (will be remapped) */ + /* _mesa_function_pool[5608]: MultTransposeMatrixdARB (will be remapped) */ "p\0" "glMultTransposeMatrixd\0" "glMultTransposeMatrixdARB\0" "\0" - /* _mesa_function_pool[5329]: ColorMaskIndexedEXT (will be remapped) */ + /* _mesa_function_pool[5660]: ColorMaskIndexedEXT (will be remapped) */ "iiiii\0" "glColorMaskIndexedEXT\0" + "glColorMaski\0" "\0" - /* _mesa_function_pool[5358]: ObjectUnpurgeableAPPLE (will be remapped) */ + /* _mesa_function_pool[5702]: ObjectUnpurgeableAPPLE (will be remapped) */ "iii\0" "glObjectUnpurgeableAPPLE\0" "\0" - /* _mesa_function_pool[5388]: AlphaFunc (offset 240) */ + /* _mesa_function_pool[5732]: AlphaFunc (offset 240) */ "if\0" "glAlphaFunc\0" "\0" - /* _mesa_function_pool[5404]: WindowPos2svMESA (will be remapped) */ + /* _mesa_function_pool[5748]: WindowPos2svMESA (will be remapped) */ "p\0" "glWindowPos2sv\0" "glWindowPos2svARB\0" "glWindowPos2svMESA\0" "\0" - /* _mesa_function_pool[5459]: EdgeFlag (offset 41) */ + /* _mesa_function_pool[5803]: EdgeFlag (offset 41) */ "i\0" "glEdgeFlag\0" "\0" - /* _mesa_function_pool[5473]: TexCoord2iv (offset 107) */ + /* _mesa_function_pool[5817]: TexCoord2iv (offset 107) */ "p\0" "glTexCoord2iv\0" "\0" - /* _mesa_function_pool[5490]: CompressedTexImage1DARB (will be remapped) */ + /* _mesa_function_pool[5834]: CompressedTexImage1DARB (will be remapped) */ "iiiiiip\0" "glCompressedTexImage1D\0" "glCompressedTexImage1DARB\0" "\0" - /* _mesa_function_pool[5548]: Rotated (offset 299) */ + /* _mesa_function_pool[5892]: Rotated (offset 299) */ "dddd\0" "glRotated\0" "\0" - /* _mesa_function_pool[5564]: GetTexParameterIuivEXT (will be remapped) */ + /* _mesa_function_pool[5908]: GetTexParameterIuivEXT (will be remapped) */ "iip\0" "glGetTexParameterIuivEXT\0" + "glGetTexParameterIuiv\0" "\0" - /* _mesa_function_pool[5594]: VertexAttrib2sNV (will be remapped) */ + /* _mesa_function_pool[5960]: VertexAttrib2sNV (will be remapped) */ "iii\0" "glVertexAttrib2sNV\0" "\0" - /* _mesa_function_pool[5618]: ReadPixels (offset 256) */ + /* _mesa_function_pool[5984]: ReadPixels (offset 256) */ "iiiiiip\0" "glReadPixels\0" "\0" - /* _mesa_function_pool[5640]: EdgeFlagv (offset 42) */ + /* _mesa_function_pool[6006]: EdgeFlagv (offset 42) */ "p\0" "glEdgeFlagv\0" "\0" - /* _mesa_function_pool[5655]: NormalPointerListIBM (dynamic) */ + /* _mesa_function_pool[6021]: NormalPointerListIBM (dynamic) */ "iipi\0" "glNormalPointerListIBM\0" "\0" - /* _mesa_function_pool[5684]: IndexPointerEXT (will be remapped) */ + /* _mesa_function_pool[6050]: IndexPointerEXT (will be remapped) */ "iiip\0" "glIndexPointerEXT\0" "\0" - /* _mesa_function_pool[5708]: Color4iv (offset 32) */ + /* _mesa_function_pool[6074]: Color4iv (offset 32) */ "p\0" "glColor4iv\0" "\0" - /* _mesa_function_pool[5722]: TexParameterf (offset 178) */ + /* _mesa_function_pool[6088]: TexParameterf (offset 178) */ "iif\0" "glTexParameterf\0" "\0" - /* _mesa_function_pool[5743]: TexParameteri (offset 180) */ + /* _mesa_function_pool[6109]: TexParameteri (offset 180) */ "iii\0" "glTexParameteri\0" "\0" - /* _mesa_function_pool[5764]: NormalPointerEXT (will be remapped) */ + /* _mesa_function_pool[6130]: NormalPointerEXT (will be remapped) */ "iiip\0" "glNormalPointerEXT\0" "\0" - /* _mesa_function_pool[5789]: MultiTexCoord3dARB (offset 392) */ + /* _mesa_function_pool[6155]: MultiTexCoord3dARB (offset 392) */ "iddd\0" "glMultiTexCoord3d\0" "glMultiTexCoord3dARB\0" "\0" - /* _mesa_function_pool[5834]: MultiTexCoord2iARB (offset 388) */ + /* _mesa_function_pool[6200]: MultiTexCoord2iARB (offset 388) */ "iii\0" "glMultiTexCoord2i\0" "glMultiTexCoord2iARB\0" "\0" - /* _mesa_function_pool[5878]: DrawPixels (offset 257) */ + /* _mesa_function_pool[6244]: DrawPixels (offset 257) */ "iiiip\0" "glDrawPixels\0" "\0" - /* _mesa_function_pool[5898]: ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[6264]: ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (dynamic) */ "iffffffff\0" "glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[5958]: MultiTexCoord2svARB (offset 391) */ + /* _mesa_function_pool[6324]: MultiTexCoord2svARB (offset 391) */ "ip\0" "glMultiTexCoord2sv\0" "glMultiTexCoord2svARB\0" "\0" - /* _mesa_function_pool[6003]: ReplacementCodeubvSUN (dynamic) */ + /* _mesa_function_pool[6369]: ReplacementCodeubvSUN (dynamic) */ "p\0" "glReplacementCodeubvSUN\0" "\0" - /* _mesa_function_pool[6030]: Uniform3iARB (will be remapped) */ + /* _mesa_function_pool[6396]: Uniform3iARB (will be remapped) */ "iiii\0" "glUniform3i\0" "glUniform3iARB\0" "\0" - /* _mesa_function_pool[6063]: DrawTransformFeedback (will be remapped) */ + /* _mesa_function_pool[6429]: DrawTransformFeedback (will be remapped) */ "ii\0" "glDrawTransformFeedback\0" "\0" - /* _mesa_function_pool[6091]: GetFragmentMaterialfvSGIX (dynamic) */ - "iip\0" - "glGetFragmentMaterialfvSGIX\0" + /* _mesa_function_pool[6457]: DrawElementsInstancedARB (will be remapped) */ + "iiipi\0" + "glDrawElementsInstancedARB\0" + "glDrawElementsInstancedEXT\0" + "glDrawElementsInstanced\0" "\0" - /* _mesa_function_pool[6124]: GetShaderInfoLog (will be remapped) */ + /* _mesa_function_pool[6542]: GetShaderInfoLog (will be remapped) */ "iipp\0" "glGetShaderInfoLog\0" "\0" - /* _mesa_function_pool[6149]: WeightivARB (dynamic) */ + /* _mesa_function_pool[6567]: WeightivARB (dynamic) */ "ip\0" "glWeightivARB\0" "\0" - /* _mesa_function_pool[6167]: PollInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[6585]: PollInstrumentsSGIX (dynamic) */ "p\0" "glPollInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[6192]: GlobalAlphaFactordSUN (dynamic) */ + /* _mesa_function_pool[6610]: GlobalAlphaFactordSUN (dynamic) */ "d\0" "glGlobalAlphaFactordSUN\0" "\0" - /* _mesa_function_pool[6219]: GetFinalCombinerInputParameterfvNV (will be remapped) */ + /* _mesa_function_pool[6637]: GetFinalCombinerInputParameterfvNV (will be remapped) */ "iip\0" "glGetFinalCombinerInputParameterfvNV\0" "\0" - /* _mesa_function_pool[6261]: GenerateMipmapEXT (will be remapped) */ + /* _mesa_function_pool[6679]: GenerateMipmapEXT (will be remapped) */ "i\0" "glGenerateMipmap\0" "glGenerateMipmapEXT\0" "\0" - /* _mesa_function_pool[6301]: GenLists (offset 5) */ + /* _mesa_function_pool[6719]: GenLists (offset 5) */ "i\0" "glGenLists\0" "\0" - /* _mesa_function_pool[6315]: SetFragmentShaderConstantATI (will be remapped) */ + /* _mesa_function_pool[6733]: SetFragmentShaderConstantATI (will be remapped) */ "ip\0" "glSetFragmentShaderConstantATI\0" "\0" - /* _mesa_function_pool[6350]: GetMapAttribParameterivNV (dynamic) */ + /* _mesa_function_pool[6768]: GetMapAttribParameterivNV (dynamic) */ "iiip\0" "glGetMapAttribParameterivNV\0" "\0" - /* _mesa_function_pool[6384]: CreateShaderObjectARB (will be remapped) */ + /* _mesa_function_pool[6802]: CreateShaderObjectARB (will be remapped) */ "i\0" "glCreateShaderObjectARB\0" "\0" - /* _mesa_function_pool[6411]: GetSharpenTexFuncSGIS (dynamic) */ + /* _mesa_function_pool[6829]: GetSharpenTexFuncSGIS (dynamic) */ "ip\0" "glGetSharpenTexFuncSGIS\0" "\0" - /* _mesa_function_pool[6439]: BufferDataARB (will be remapped) */ + /* _mesa_function_pool[6857]: BufferDataARB (will be remapped) */ "iipi\0" "glBufferData\0" "glBufferDataARB\0" "\0" - /* _mesa_function_pool[6474]: FlushVertexArrayRangeNV (will be remapped) */ + /* _mesa_function_pool[6892]: FlushVertexArrayRangeNV (will be remapped) */ "\0" "glFlushVertexArrayRangeNV\0" "\0" - /* _mesa_function_pool[6502]: MapGrid2d (offset 226) */ + /* _mesa_function_pool[6920]: MapGrid2d (offset 226) */ "iddidd\0" "glMapGrid2d\0" "\0" - /* _mesa_function_pool[6522]: MapGrid2f (offset 227) */ + /* _mesa_function_pool[6940]: MapGrid2f (offset 227) */ "iffiff\0" "glMapGrid2f\0" "\0" - /* _mesa_function_pool[6542]: SampleMapATI (will be remapped) */ + /* _mesa_function_pool[6960]: SampleMapATI (will be remapped) */ "iii\0" "glSampleMapATI\0" "\0" - /* _mesa_function_pool[6562]: VertexPointerEXT (will be remapped) */ + /* _mesa_function_pool[6980]: VertexPointerEXT (will be remapped) */ "iiiip\0" "glVertexPointerEXT\0" "\0" - /* _mesa_function_pool[6588]: GetTexFilterFuncSGIS (dynamic) */ + /* _mesa_function_pool[7006]: GetTexFilterFuncSGIS (dynamic) */ "iip\0" "glGetTexFilterFuncSGIS\0" "\0" - /* _mesa_function_pool[6616]: Scissor (offset 176) */ + /* _mesa_function_pool[7034]: Scissor (offset 176) */ "iiii\0" "glScissor\0" "\0" - /* _mesa_function_pool[6632]: Fogf (offset 153) */ + /* _mesa_function_pool[7050]: Fogf (offset 153) */ "if\0" "glFogf\0" "\0" - /* _mesa_function_pool[6643]: ReplacementCodeuiColor4ubVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[7061]: ReplacementCodeuiColor4ubVertex3fvSUN (dynamic) */ "ppp\0" "glReplacementCodeuiColor4ubVertex3fvSUN\0" "\0" - /* _mesa_function_pool[6688]: TexSubImage1D (offset 332) */ + /* _mesa_function_pool[7106]: TexSubImage1D (offset 332) */ "iiiiiip\0" "glTexSubImage1D\0" "glTexSubImage1DEXT\0" "\0" - /* _mesa_function_pool[6732]: VertexAttrib1sARB (will be remapped) */ + /* _mesa_function_pool[7150]: VertexAttrib1sARB (will be remapped) */ "ii\0" "glVertexAttrib1s\0" "glVertexAttrib1sARB\0" "\0" - /* _mesa_function_pool[6773]: FenceSync (will be remapped) */ + /* _mesa_function_pool[7191]: FenceSync (will be remapped) */ "ii\0" "glFenceSync\0" "\0" - /* _mesa_function_pool[6789]: Color4usv (offset 40) */ + /* _mesa_function_pool[7207]: Color4usv (offset 40) */ "p\0" "glColor4usv\0" "\0" - /* _mesa_function_pool[6804]: Fogi (offset 155) */ + /* _mesa_function_pool[7222]: Fogi (offset 155) */ "ii\0" "glFogi\0" "\0" - /* _mesa_function_pool[6815]: DepthRange (offset 288) */ + /* _mesa_function_pool[7233]: DepthRange (offset 288) */ "dd\0" "glDepthRange\0" "\0" - /* _mesa_function_pool[6832]: RasterPos3iv (offset 75) */ + /* _mesa_function_pool[7250]: RasterPos3iv (offset 75) */ "p\0" "glRasterPos3iv\0" "\0" - /* _mesa_function_pool[6850]: FinalCombinerInputNV (will be remapped) */ + /* _mesa_function_pool[7268]: FinalCombinerInputNV (will be remapped) */ "iiii\0" "glFinalCombinerInputNV\0" "\0" - /* _mesa_function_pool[6879]: TexCoord2i (offset 106) */ + /* _mesa_function_pool[7297]: TexCoord2i (offset 106) */ "ii\0" "glTexCoord2i\0" "\0" - /* _mesa_function_pool[6896]: PixelMapfv (offset 251) */ + /* _mesa_function_pool[7314]: PixelMapfv (offset 251) */ "iip\0" "glPixelMapfv\0" "\0" - /* _mesa_function_pool[6914]: Color4ui (offset 37) */ + /* _mesa_function_pool[7332]: Color4ui (offset 37) */ "iiii\0" "glColor4ui\0" "\0" - /* _mesa_function_pool[6931]: RasterPos3s (offset 76) */ + /* _mesa_function_pool[7349]: RasterPos3s (offset 76) */ "iii\0" "glRasterPos3s\0" "\0" - /* _mesa_function_pool[6950]: Color3usv (offset 24) */ + /* _mesa_function_pool[7368]: Color3usv (offset 24) */ "p\0" "glColor3usv\0" "\0" - /* _mesa_function_pool[6965]: FlushRasterSGIX (dynamic) */ + /* _mesa_function_pool[7383]: FlushRasterSGIX (dynamic) */ "\0" "glFlushRasterSGIX\0" "\0" - /* _mesa_function_pool[6985]: TexCoord2f (offset 104) */ + /* _mesa_function_pool[7403]: TexCoord2f (offset 104) */ "ff\0" "glTexCoord2f\0" "\0" - /* _mesa_function_pool[7002]: ReplacementCodeuiTexCoord2fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[7420]: ReplacementCodeuiTexCoord2fVertex3fSUN (dynamic) */ "ifffff\0" "glReplacementCodeuiTexCoord2fVertex3fSUN\0" "\0" - /* _mesa_function_pool[7051]: TexCoord2d (offset 102) */ + /* _mesa_function_pool[7469]: TexCoord2d (offset 102) */ "dd\0" "glTexCoord2d\0" "\0" - /* _mesa_function_pool[7068]: RasterPos3d (offset 70) */ + /* _mesa_function_pool[7486]: RasterPos3d (offset 70) */ "ddd\0" "glRasterPos3d\0" "\0" - /* _mesa_function_pool[7087]: RasterPos3f (offset 72) */ + /* _mesa_function_pool[7505]: RasterPos3f (offset 72) */ "fff\0" "glRasterPos3f\0" "\0" - /* _mesa_function_pool[7106]: Uniform1fARB (will be remapped) */ + /* _mesa_function_pool[7524]: Uniform1fARB (will be remapped) */ "if\0" "glUniform1f\0" "glUniform1fARB\0" "\0" - /* _mesa_function_pool[7137]: AreTexturesResident (offset 322) */ + /* _mesa_function_pool[7555]: AreTexturesResident (offset 322) */ "ipp\0" "glAreTexturesResident\0" "glAreTexturesResidentEXT\0" "\0" - /* _mesa_function_pool[7189]: TexCoord2s (offset 108) */ + /* _mesa_function_pool[7607]: TexCoord2s (offset 108) */ "ii\0" "glTexCoord2s\0" "\0" - /* _mesa_function_pool[7206]: StencilOpSeparate (will be remapped) */ + /* _mesa_function_pool[7624]: StencilOpSeparate (will be remapped) */ "iiii\0" "glStencilOpSeparate\0" "glStencilOpSeparateATI\0" "\0" - /* _mesa_function_pool[7255]: ColorTableParameteriv (offset 341) */ + /* _mesa_function_pool[7673]: ColorTableParameteriv (offset 341) */ "iip\0" "glColorTableParameteriv\0" "glColorTableParameterivSGI\0" "\0" - /* _mesa_function_pool[7311]: FogCoordPointerListIBM (dynamic) */ + /* _mesa_function_pool[7729]: FogCoordPointerListIBM (dynamic) */ "iipi\0" "glFogCoordPointerListIBM\0" "\0" - /* _mesa_function_pool[7342]: WindowPos3dMESA (will be remapped) */ + /* _mesa_function_pool[7760]: WindowPos3dMESA (will be remapped) */ "ddd\0" "glWindowPos3d\0" "glWindowPos3dARB\0" "glWindowPos3dMESA\0" "\0" - /* _mesa_function_pool[7396]: Color4us (offset 39) */ + /* _mesa_function_pool[7814]: Color4us (offset 39) */ "iiii\0" "glColor4us\0" "\0" - /* _mesa_function_pool[7413]: PointParameterfvEXT (will be remapped) */ + /* _mesa_function_pool[7831]: PointParameterfvEXT (will be remapped) */ "ip\0" "glPointParameterfv\0" "glPointParameterfvARB\0" "glPointParameterfvEXT\0" "glPointParameterfvSGIS\0" "\0" - /* _mesa_function_pool[7503]: Color3bv (offset 10) */ + /* _mesa_function_pool[7921]: Color3bv (offset 10) */ "p\0" "glColor3bv\0" "\0" - /* _mesa_function_pool[7517]: WindowPos2fvMESA (will be remapped) */ + /* _mesa_function_pool[7935]: WindowPos2fvMESA (will be remapped) */ "p\0" "glWindowPos2fv\0" "glWindowPos2fvARB\0" "glWindowPos2fvMESA\0" "\0" - /* _mesa_function_pool[7572]: SecondaryColor3bvEXT (will be remapped) */ + /* _mesa_function_pool[7990]: SecondaryColor3bvEXT (will be remapped) */ "p\0" "glSecondaryColor3bv\0" "glSecondaryColor3bvEXT\0" "\0" - /* _mesa_function_pool[7618]: VertexPointerListIBM (dynamic) */ + /* _mesa_function_pool[8036]: VertexPointerListIBM (dynamic) */ "iiipi\0" "glVertexPointerListIBM\0" "\0" - /* _mesa_function_pool[7648]: GetProgramLocalParameterfvARB (will be remapped) */ + /* _mesa_function_pool[8066]: GetProgramLocalParameterfvARB (will be remapped) */ "iip\0" "glGetProgramLocalParameterfvARB\0" "\0" - /* _mesa_function_pool[7685]: FragmentMaterialfSGIX (dynamic) */ + /* _mesa_function_pool[8103]: FragmentMaterialfSGIX (dynamic) */ "iif\0" "glFragmentMaterialfSGIX\0" "\0" - /* _mesa_function_pool[7714]: TexCoord2fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[8132]: TexCoord2fNormal3fVertex3fSUN (dynamic) */ "ffffffff\0" "glTexCoord2fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[7756]: RenderbufferStorageEXT (will be remapped) */ + /* _mesa_function_pool[8174]: RenderbufferStorageEXT (will be remapped) */ "iiii\0" "glRenderbufferStorage\0" "glRenderbufferStorageEXT\0" "\0" - /* _mesa_function_pool[7809]: IsFenceNV (will be remapped) */ + /* _mesa_function_pool[8227]: IsFenceNV (will be remapped) */ "i\0" "glIsFenceNV\0" "\0" - /* _mesa_function_pool[7824]: AttachObjectARB (will be remapped) */ + /* _mesa_function_pool[8242]: AttachObjectARB (will be remapped) */ "ii\0" "glAttachObjectARB\0" "\0" - /* _mesa_function_pool[7846]: GetFragmentLightivSGIX (dynamic) */ + /* _mesa_function_pool[8264]: GetFragmentLightivSGIX (dynamic) */ "iip\0" "glGetFragmentLightivSGIX\0" "\0" - /* _mesa_function_pool[7876]: UniformMatrix2fvARB (will be remapped) */ + /* _mesa_function_pool[8294]: UniformMatrix2fvARB (will be remapped) */ "iiip\0" "glUniformMatrix2fv\0" "glUniformMatrix2fvARB\0" "\0" - /* _mesa_function_pool[7923]: MultiTexCoord2fARB (offset 386) */ + /* _mesa_function_pool[8341]: MultiTexCoord2fARB (offset 386) */ "iff\0" "glMultiTexCoord2f\0" "glMultiTexCoord2fARB\0" "\0" - /* _mesa_function_pool[7967]: ColorTable (offset 339) */ + /* _mesa_function_pool[8385]: ColorTable (offset 339) */ "iiiiip\0" "glColorTable\0" "glColorTableSGI\0" "glColorTableEXT\0" "\0" - /* _mesa_function_pool[8020]: IndexPointer (offset 314) */ + /* _mesa_function_pool[8438]: IndexPointer (offset 314) */ "iip\0" "glIndexPointer\0" "\0" - /* _mesa_function_pool[8040]: Accum (offset 213) */ + /* _mesa_function_pool[8458]: Accum (offset 213) */ "if\0" "glAccum\0" "\0" - /* _mesa_function_pool[8052]: GetTexImage (offset 281) */ + /* _mesa_function_pool[8470]: GetTexImage (offset 281) */ "iiiip\0" "glGetTexImage\0" "\0" - /* _mesa_function_pool[8073]: MapControlPointsNV (dynamic) */ + /* _mesa_function_pool[8491]: MapControlPointsNV (dynamic) */ "iiiiiiiip\0" "glMapControlPointsNV\0" "\0" - /* _mesa_function_pool[8105]: ConvolutionFilter2D (offset 349) */ + /* _mesa_function_pool[8523]: ConvolutionFilter2D (offset 349) */ "iiiiiip\0" "glConvolutionFilter2D\0" "glConvolutionFilter2DEXT\0" "\0" - /* _mesa_function_pool[8161]: Finish (offset 216) */ + /* _mesa_function_pool[8579]: Finish (offset 216) */ "\0" "glFinish\0" "\0" - /* _mesa_function_pool[8172]: MapParameterfvNV (dynamic) */ + /* _mesa_function_pool[8590]: MapParameterfvNV (dynamic) */ "iip\0" "glMapParameterfvNV\0" "\0" - /* _mesa_function_pool[8196]: ClearStencil (offset 207) */ + /* _mesa_function_pool[8614]: ClearStencil (offset 207) */ "i\0" "glClearStencil\0" "\0" - /* _mesa_function_pool[8214]: VertexAttrib3dvARB (will be remapped) */ + /* _mesa_function_pool[8632]: VertexAttrib3dvARB (will be remapped) */ "ip\0" "glVertexAttrib3dv\0" "glVertexAttrib3dvARB\0" "\0" - /* _mesa_function_pool[8257]: Uniform4uivEXT (will be remapped) */ + /* _mesa_function_pool[8675]: Uniform4uivEXT (will be remapped) */ "iip\0" "glUniform4uivEXT\0" + "glUniform4uiv\0" "\0" - /* _mesa_function_pool[8279]: HintPGI (dynamic) */ + /* _mesa_function_pool[8711]: HintPGI (dynamic) */ "ii\0" "glHintPGI\0" "\0" - /* _mesa_function_pool[8293]: ConvolutionParameteriv (offset 353) */ + /* _mesa_function_pool[8725]: ConvolutionParameteriv (offset 353) */ "iip\0" "glConvolutionParameteriv\0" "glConvolutionParameterivEXT\0" "\0" - /* _mesa_function_pool[8351]: Color4s (offset 33) */ + /* _mesa_function_pool[8783]: Color4s (offset 33) */ "iiii\0" "glColor4s\0" "\0" - /* _mesa_function_pool[8367]: InterleavedArrays (offset 317) */ + /* _mesa_function_pool[8799]: InterleavedArrays (offset 317) */ "iip\0" "glInterleavedArrays\0" "\0" - /* _mesa_function_pool[8392]: RasterPos2fv (offset 65) */ + /* _mesa_function_pool[8824]: RasterPos2fv (offset 65) */ "p\0" "glRasterPos2fv\0" "\0" - /* _mesa_function_pool[8410]: TexCoord1fv (offset 97) */ + /* _mesa_function_pool[8842]: TexCoord1fv (offset 97) */ "p\0" "glTexCoord1fv\0" "\0" - /* _mesa_function_pool[8427]: Vertex2d (offset 126) */ + /* _mesa_function_pool[8859]: Vertex2d (offset 126) */ "dd\0" "glVertex2d\0" "\0" - /* _mesa_function_pool[8442]: CullParameterdvEXT (dynamic) */ + /* _mesa_function_pool[8874]: CullParameterdvEXT (dynamic) */ "ip\0" "glCullParameterdvEXT\0" "\0" - /* _mesa_function_pool[8467]: ProgramNamedParameter4fNV (will be remapped) */ + /* _mesa_function_pool[8899]: ProgramNamedParameter4fNV (will be remapped) */ "iipffff\0" "glProgramNamedParameter4fNV\0" "\0" - /* _mesa_function_pool[8504]: Color3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[8936]: Color3fVertex3fSUN (dynamic) */ "ffffff\0" "glColor3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[8533]: ProgramEnvParameter4fvARB (will be remapped) */ + /* _mesa_function_pool[8965]: ProgramEnvParameter4fvARB (will be remapped) */ "iip\0" "glProgramEnvParameter4fvARB\0" "glProgramParameter4fvNV\0" "\0" - /* _mesa_function_pool[8590]: Color4i (offset 31) */ + /* _mesa_function_pool[9022]: Color4i (offset 31) */ "iiii\0" "glColor4i\0" "\0" - /* _mesa_function_pool[8606]: Color4f (offset 29) */ + /* _mesa_function_pool[9038]: Color4f (offset 29) */ "ffff\0" "glColor4f\0" "\0" - /* _mesa_function_pool[8622]: RasterPos4fv (offset 81) */ + /* _mesa_function_pool[9054]: RasterPos4fv (offset 81) */ "p\0" "glRasterPos4fv\0" "\0" - /* _mesa_function_pool[8640]: Color4d (offset 27) */ + /* _mesa_function_pool[9072]: Color4d (offset 27) */ "dddd\0" "glColor4d\0" "\0" - /* _mesa_function_pool[8656]: ClearIndex (offset 205) */ + /* _mesa_function_pool[9088]: ClearIndex (offset 205) */ "f\0" "glClearIndex\0" "\0" - /* _mesa_function_pool[8672]: Color4b (offset 25) */ + /* _mesa_function_pool[9104]: Color4b (offset 25) */ "iiii\0" "glColor4b\0" "\0" - /* _mesa_function_pool[8688]: LoadMatrixd (offset 292) */ + /* _mesa_function_pool[9120]: LoadMatrixd (offset 292) */ "p\0" "glLoadMatrixd\0" "\0" - /* _mesa_function_pool[8705]: FragmentLightModeliSGIX (dynamic) */ + /* _mesa_function_pool[9137]: FragmentLightModeliSGIX (dynamic) */ "ii\0" "glFragmentLightModeliSGIX\0" "\0" - /* _mesa_function_pool[8735]: RasterPos2dv (offset 63) */ + /* _mesa_function_pool[9167]: RasterPos2dv (offset 63) */ "p\0" "glRasterPos2dv\0" "\0" - /* _mesa_function_pool[8753]: ConvolutionParameterfv (offset 351) */ + /* _mesa_function_pool[9185]: ConvolutionParameterfv (offset 351) */ "iip\0" "glConvolutionParameterfv\0" "glConvolutionParameterfvEXT\0" "\0" - /* _mesa_function_pool[8811]: TbufferMask3DFX (dynamic) */ + /* _mesa_function_pool[9243]: TbufferMask3DFX (dynamic) */ "i\0" "glTbufferMask3DFX\0" "\0" - /* _mesa_function_pool[8832]: GetTexGendv (offset 278) */ + /* _mesa_function_pool[9264]: GetTexGendv (offset 278) */ "iip\0" "glGetTexGendv\0" "\0" - /* _mesa_function_pool[8851]: GetVertexAttribfvNV (will be remapped) */ + /* _mesa_function_pool[9283]: GetVertexAttribfvNV (will be remapped) */ "iip\0" "glGetVertexAttribfvNV\0" "\0" - /* _mesa_function_pool[8878]: BeginTransformFeedbackEXT (will be remapped) */ + /* _mesa_function_pool[9310]: BeginTransformFeedbackEXT (will be remapped) */ "i\0" "glBeginTransformFeedbackEXT\0" "glBeginTransformFeedback\0" "\0" - /* _mesa_function_pool[8934]: LoadProgramNV (will be remapped) */ + /* _mesa_function_pool[9366]: LoadProgramNV (will be remapped) */ "iiip\0" "glLoadProgramNV\0" "\0" - /* _mesa_function_pool[8956]: WaitSync (will be remapped) */ + /* _mesa_function_pool[9388]: WaitSync (will be remapped) */ "iii\0" "glWaitSync\0" "\0" - /* _mesa_function_pool[8972]: EndList (offset 1) */ + /* _mesa_function_pool[9404]: EndList (offset 1) */ "\0" "glEndList\0" "\0" - /* _mesa_function_pool[8984]: VertexAttrib4fvNV (will be remapped) */ + /* _mesa_function_pool[9416]: VertexAttrib4fvNV (will be remapped) */ "ip\0" "glVertexAttrib4fvNV\0" "\0" - /* _mesa_function_pool[9008]: GetAttachedObjectsARB (will be remapped) */ + /* _mesa_function_pool[9440]: GetAttachedObjectsARB (will be remapped) */ "iipp\0" "glGetAttachedObjectsARB\0" "\0" - /* _mesa_function_pool[9038]: Uniform3fvARB (will be remapped) */ + /* _mesa_function_pool[9470]: Uniform3fvARB (will be remapped) */ "iip\0" "glUniform3fv\0" "glUniform3fvARB\0" "\0" - /* _mesa_function_pool[9072]: EvalCoord1fv (offset 231) */ + /* _mesa_function_pool[9504]: EvalCoord1fv (offset 231) */ "p\0" "glEvalCoord1fv\0" "\0" - /* _mesa_function_pool[9090]: DrawRangeElements (offset 338) */ + /* _mesa_function_pool[9522]: DrawRangeElements (offset 338) */ "iiiiip\0" "glDrawRangeElements\0" "glDrawRangeElementsEXT\0" "\0" - /* _mesa_function_pool[9141]: EvalMesh2 (offset 238) */ + /* _mesa_function_pool[9573]: EvalMesh2 (offset 238) */ "iiiii\0" "glEvalMesh2\0" "\0" - /* _mesa_function_pool[9160]: Vertex4fv (offset 145) */ + /* _mesa_function_pool[9592]: Vertex4fv (offset 145) */ "p\0" "glVertex4fv\0" "\0" - /* _mesa_function_pool[9175]: GenTransformFeedbacks (will be remapped) */ + /* _mesa_function_pool[9607]: GenTransformFeedbacks (will be remapped) */ "ip\0" "glGenTransformFeedbacks\0" "\0" - /* _mesa_function_pool[9203]: SpriteParameterfvSGIX (dynamic) */ + /* _mesa_function_pool[9635]: SpriteParameterfvSGIX (dynamic) */ "ip\0" "glSpriteParameterfvSGIX\0" "\0" - /* _mesa_function_pool[9231]: CheckFramebufferStatusEXT (will be remapped) */ + /* _mesa_function_pool[9663]: CheckFramebufferStatusEXT (will be remapped) */ "i\0" "glCheckFramebufferStatus\0" "glCheckFramebufferStatusEXT\0" "\0" - /* _mesa_function_pool[9287]: GlobalAlphaFactoruiSUN (dynamic) */ + /* _mesa_function_pool[9719]: GlobalAlphaFactoruiSUN (dynamic) */ "i\0" "glGlobalAlphaFactoruiSUN\0" "\0" - /* _mesa_function_pool[9315]: GetHandleARB (will be remapped) */ + /* _mesa_function_pool[9747]: GetHandleARB (will be remapped) */ "i\0" "glGetHandleARB\0" "\0" - /* _mesa_function_pool[9333]: GetVertexAttribivARB (will be remapped) */ + /* _mesa_function_pool[9765]: GetVertexAttribivARB (will be remapped) */ "iip\0" "glGetVertexAttribiv\0" "glGetVertexAttribivARB\0" "\0" - /* _mesa_function_pool[9381]: GetCombinerInputParameterfvNV (will be remapped) */ + /* _mesa_function_pool[9813]: GetCombinerInputParameterfvNV (will be remapped) */ "iiiip\0" "glGetCombinerInputParameterfvNV\0" "\0" - /* _mesa_function_pool[9420]: GetTexParameterIivEXT (will be remapped) */ + /* _mesa_function_pool[9852]: GetTexParameterIivEXT (will be remapped) */ "iip\0" "glGetTexParameterIivEXT\0" + "glGetTexParameterIiv\0" "\0" - /* _mesa_function_pool[9449]: CreateProgram (will be remapped) */ + /* _mesa_function_pool[9902]: CreateProgram (will be remapped) */ "\0" "glCreateProgram\0" "\0" - /* _mesa_function_pool[9467]: LoadTransposeMatrixdARB (will be remapped) */ + /* _mesa_function_pool[9920]: LoadTransposeMatrixdARB (will be remapped) */ "p\0" "glLoadTransposeMatrixd\0" "glLoadTransposeMatrixdARB\0" "\0" - /* _mesa_function_pool[9519]: GetMinmax (offset 364) */ + /* _mesa_function_pool[9972]: GetMinmax (offset 364) */ "iiiip\0" "glGetMinmax\0" "glGetMinmaxEXT\0" "\0" - /* _mesa_function_pool[9553]: StencilFuncSeparate (will be remapped) */ + /* _mesa_function_pool[10006]: StencilFuncSeparate (will be remapped) */ "iiii\0" "glStencilFuncSeparate\0" "\0" - /* _mesa_function_pool[9581]: SecondaryColor3sEXT (will be remapped) */ + /* _mesa_function_pool[10034]: SecondaryColor3sEXT (will be remapped) */ "iii\0" "glSecondaryColor3s\0" "glSecondaryColor3sEXT\0" "\0" - /* _mesa_function_pool[9627]: Color3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[10080]: Color3fVertex3fvSUN (dynamic) */ "pp\0" "glColor3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[9653]: Normal3fv (offset 57) */ + /* _mesa_function_pool[10106]: GetInteger64i_v (will be remapped) */ + "iip\0" + "glGetInteger64i_v\0" + "\0" + /* _mesa_function_pool[10129]: Normal3fv (offset 57) */ "p\0" "glNormal3fv\0" "\0" - /* _mesa_function_pool[9668]: GlobalAlphaFactorbSUN (dynamic) */ + /* _mesa_function_pool[10144]: GlobalAlphaFactorbSUN (dynamic) */ "i\0" "glGlobalAlphaFactorbSUN\0" "\0" - /* _mesa_function_pool[9695]: Color3us (offset 23) */ + /* _mesa_function_pool[10171]: Color3us (offset 23) */ "iii\0" "glColor3us\0" "\0" - /* _mesa_function_pool[9711]: ImageTransformParameterfvHP (dynamic) */ + /* _mesa_function_pool[10187]: ImageTransformParameterfvHP (dynamic) */ "iip\0" "glImageTransformParameterfvHP\0" "\0" - /* _mesa_function_pool[9746]: VertexAttrib4ivARB (will be remapped) */ + /* _mesa_function_pool[10222]: VertexAttrib4ivARB (will be remapped) */ "ip\0" "glVertexAttrib4iv\0" "glVertexAttrib4ivARB\0" "\0" - /* _mesa_function_pool[9789]: End (offset 43) */ + /* _mesa_function_pool[10265]: End (offset 43) */ "\0" "glEnd\0" "\0" - /* _mesa_function_pool[9797]: VertexAttrib3fNV (will be remapped) */ + /* _mesa_function_pool[10273]: VertexAttrib3fNV (will be remapped) */ "ifff\0" "glVertexAttrib3fNV\0" "\0" - /* _mesa_function_pool[9822]: VertexAttribs2dvNV (will be remapped) */ + /* _mesa_function_pool[10298]: VertexAttribs2dvNV (will be remapped) */ "iip\0" "glVertexAttribs2dvNV\0" "\0" - /* _mesa_function_pool[9848]: GetQueryObjectui64vEXT (will be remapped) */ + /* _mesa_function_pool[10324]: GetQueryObjectui64vEXT (will be remapped) */ "iip\0" "glGetQueryObjectui64vEXT\0" "\0" - /* _mesa_function_pool[9878]: MultiTexCoord3fvARB (offset 395) */ + /* _mesa_function_pool[10354]: MultiTexCoord3fvARB (offset 395) */ "ip\0" "glMultiTexCoord3fv\0" "glMultiTexCoord3fvARB\0" "\0" - /* _mesa_function_pool[9923]: SecondaryColor3dEXT (will be remapped) */ + /* _mesa_function_pool[10399]: SecondaryColor3dEXT (will be remapped) */ "ddd\0" "glSecondaryColor3d\0" "glSecondaryColor3dEXT\0" "\0" - /* _mesa_function_pool[9969]: Color3ub (offset 19) */ + /* _mesa_function_pool[10445]: Color3ub (offset 19) */ "iii\0" "glColor3ub\0" "\0" - /* _mesa_function_pool[9985]: GetProgramParameterfvNV (will be remapped) */ + /* _mesa_function_pool[10461]: GetProgramParameterfvNV (will be remapped) */ "iiip\0" "glGetProgramParameterfvNV\0" "\0" - /* _mesa_function_pool[10017]: TangentPointerEXT (dynamic) */ + /* _mesa_function_pool[10493]: TangentPointerEXT (dynamic) */ "iip\0" "glTangentPointerEXT\0" "\0" - /* _mesa_function_pool[10042]: Color4fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[10518]: Color4fNormal3fVertex3fvSUN (dynamic) */ "ppp\0" "glColor4fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[10077]: GetInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[10553]: GetInstrumentsSGIX (dynamic) */ "\0" "glGetInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[10100]: GetUniformuivEXT (will be remapped) */ + /* _mesa_function_pool[10576]: GetUniformuivEXT (will be remapped) */ "iip\0" "glGetUniformuivEXT\0" + "glGetUniformuiv\0" "\0" - /* _mesa_function_pool[10124]: Color3ui (offset 21) */ + /* _mesa_function_pool[10616]: Color3ui (offset 21) */ "iii\0" "glColor3ui\0" "\0" - /* _mesa_function_pool[10140]: EvalMapsNV (dynamic) */ + /* _mesa_function_pool[10632]: EvalMapsNV (dynamic) */ "ii\0" "glEvalMapsNV\0" "\0" - /* _mesa_function_pool[10157]: TexSubImage2D (offset 333) */ + /* _mesa_function_pool[10649]: TexSubImage2D (offset 333) */ "iiiiiiiip\0" "glTexSubImage2D\0" "glTexSubImage2DEXT\0" "\0" - /* _mesa_function_pool[10203]: FragmentLightivSGIX (dynamic) */ + /* _mesa_function_pool[10695]: FragmentLightivSGIX (dynamic) */ "iip\0" "glFragmentLightivSGIX\0" "\0" - /* _mesa_function_pool[10230]: GetTexParameterPointervAPPLE (will be remapped) */ + /* _mesa_function_pool[10722]: GetTexParameterPointervAPPLE (will be remapped) */ "iip\0" "glGetTexParameterPointervAPPLE\0" "\0" - /* _mesa_function_pool[10266]: TexGenfv (offset 191) */ + /* _mesa_function_pool[10758]: TexGenfv (offset 191) */ "iip\0" "glTexGenfv\0" "\0" - /* _mesa_function_pool[10282]: GetTransformFeedbackVaryingEXT (will be remapped) */ + /* _mesa_function_pool[10774]: GetTransformFeedbackVaryingEXT (will be remapped) */ "iiipppp\0" "glGetTransformFeedbackVaryingEXT\0" "glGetTransformFeedbackVarying\0" "\0" - /* _mesa_function_pool[10354]: VertexAttrib4bvARB (will be remapped) */ + /* _mesa_function_pool[10846]: VertexAttrib4bvARB (will be remapped) */ "ip\0" "glVertexAttrib4bv\0" "glVertexAttrib4bvARB\0" "\0" - /* _mesa_function_pool[10397]: AlphaFragmentOp2ATI (will be remapped) */ + /* _mesa_function_pool[10889]: AlphaFragmentOp2ATI (will be remapped) */ "iiiiiiiii\0" "glAlphaFragmentOp2ATI\0" "\0" - /* _mesa_function_pool[10430]: GetIntegerIndexedvEXT (will be remapped) */ + /* _mesa_function_pool[10922]: GetIntegerIndexedvEXT (will be remapped) */ "iip\0" "glGetIntegerIndexedvEXT\0" + "glGetIntegeri_v\0" "\0" - /* _mesa_function_pool[10459]: MultiTexCoord4sARB (offset 406) */ + /* _mesa_function_pool[10967]: MultiTexCoord4sARB (offset 406) */ "iiiii\0" "glMultiTexCoord4s\0" "glMultiTexCoord4sARB\0" "\0" - /* _mesa_function_pool[10505]: GetFragmentMaterialivSGIX (dynamic) */ + /* _mesa_function_pool[11013]: GetFragmentMaterialivSGIX (dynamic) */ "iip\0" "glGetFragmentMaterialivSGIX\0" "\0" - /* _mesa_function_pool[10538]: WindowPos4dMESA (will be remapped) */ + /* _mesa_function_pool[11046]: WindowPos4dMESA (will be remapped) */ "dddd\0" "glWindowPos4dMESA\0" "\0" - /* _mesa_function_pool[10562]: WeightPointerARB (dynamic) */ + /* _mesa_function_pool[11070]: WeightPointerARB (dynamic) */ "iiip\0" "glWeightPointerARB\0" "\0" - /* _mesa_function_pool[10587]: WindowPos2dMESA (will be remapped) */ + /* _mesa_function_pool[11095]: WindowPos2dMESA (will be remapped) */ "dd\0" "glWindowPos2d\0" "glWindowPos2dARB\0" "glWindowPos2dMESA\0" "\0" - /* _mesa_function_pool[10640]: FramebufferTexture3DEXT (will be remapped) */ + /* _mesa_function_pool[11148]: FramebufferTexture3DEXT (will be remapped) */ "iiiiii\0" "glFramebufferTexture3D\0" "glFramebufferTexture3DEXT\0" "\0" - /* _mesa_function_pool[10697]: BlendEquation (offset 337) */ + /* _mesa_function_pool[11205]: BlendEquation (offset 337) */ "i\0" "glBlendEquation\0" "glBlendEquationEXT\0" "\0" - /* _mesa_function_pool[10735]: VertexAttrib3dNV (will be remapped) */ + /* _mesa_function_pool[11243]: VertexAttrib3dNV (will be remapped) */ "iddd\0" "glVertexAttrib3dNV\0" "\0" - /* _mesa_function_pool[10760]: VertexAttrib3dARB (will be remapped) */ + /* _mesa_function_pool[11268]: VertexAttrib3dARB (will be remapped) */ "iddd\0" "glVertexAttrib3d\0" "glVertexAttrib3dARB\0" "\0" - /* _mesa_function_pool[10803]: VertexAttribI4usvEXT (will be remapped) */ + /* _mesa_function_pool[11311]: VertexAttribI4usvEXT (will be remapped) */ "ip\0" "glVertexAttribI4usvEXT\0" + "glVertexAttribI4usv\0" "\0" - /* _mesa_function_pool[10830]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[11358]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */ "ppppp\0" "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[10894]: VertexAttrib4fARB (will be remapped) */ + /* _mesa_function_pool[11422]: VertexAttrib4fARB (will be remapped) */ "iffff\0" "glVertexAttrib4f\0" "glVertexAttrib4fARB\0" "\0" - /* _mesa_function_pool[10938]: GetError (offset 261) */ + /* _mesa_function_pool[11466]: GetError (offset 261) */ "\0" "glGetError\0" "\0" - /* _mesa_function_pool[10951]: IndexFuncEXT (dynamic) */ + /* _mesa_function_pool[11479]: IndexFuncEXT (dynamic) */ "if\0" "glIndexFuncEXT\0" "\0" - /* _mesa_function_pool[10970]: TexCoord3dv (offset 111) */ + /* _mesa_function_pool[11498]: TexCoord3dv (offset 111) */ "p\0" "glTexCoord3dv\0" "\0" - /* _mesa_function_pool[10987]: Indexdv (offset 45) */ + /* _mesa_function_pool[11515]: Indexdv (offset 45) */ "p\0" "glIndexdv\0" "\0" - /* _mesa_function_pool[11000]: FramebufferTexture2DEXT (will be remapped) */ + /* _mesa_function_pool[11528]: FramebufferTexture2DEXT (will be remapped) */ "iiiii\0" "glFramebufferTexture2D\0" "glFramebufferTexture2DEXT\0" "\0" - /* _mesa_function_pool[11056]: Normal3s (offset 60) */ + /* _mesa_function_pool[11584]: Normal3s (offset 60) */ "iii\0" "glNormal3s\0" "\0" - /* _mesa_function_pool[11072]: GetObjectParameterivAPPLE (will be remapped) */ + /* _mesa_function_pool[11600]: GetObjectParameterivAPPLE (will be remapped) */ "iiip\0" "glGetObjectParameterivAPPLE\0" "\0" - /* _mesa_function_pool[11106]: PushName (offset 201) */ + /* _mesa_function_pool[11634]: PushName (offset 201) */ "i\0" "glPushName\0" "\0" - /* _mesa_function_pool[11120]: MultiTexCoord2dvARB (offset 385) */ + /* _mesa_function_pool[11648]: MultiTexCoord2dvARB (offset 385) */ "ip\0" "glMultiTexCoord2dv\0" "glMultiTexCoord2dvARB\0" "\0" - /* _mesa_function_pool[11165]: CullParameterfvEXT (dynamic) */ + /* _mesa_function_pool[11693]: CullParameterfvEXT (dynamic) */ "ip\0" "glCullParameterfvEXT\0" "\0" - /* _mesa_function_pool[11190]: Normal3i (offset 58) */ + /* _mesa_function_pool[11718]: Normal3i (offset 58) */ "iii\0" "glNormal3i\0" "\0" - /* _mesa_function_pool[11206]: ProgramNamedParameter4fvNV (will be remapped) */ + /* _mesa_function_pool[11734]: ProgramNamedParameter4fvNV (will be remapped) */ "iipp\0" "glProgramNamedParameter4fvNV\0" "\0" - /* _mesa_function_pool[11241]: SecondaryColorPointerEXT (will be remapped) */ + /* _mesa_function_pool[11769]: SecondaryColorPointerEXT (will be remapped) */ "iiip\0" "glSecondaryColorPointer\0" "glSecondaryColorPointerEXT\0" "\0" - /* _mesa_function_pool[11298]: VertexAttrib4fvARB (will be remapped) */ + /* _mesa_function_pool[11826]: VertexAttrib4fvARB (will be remapped) */ "ip\0" "glVertexAttrib4fv\0" "glVertexAttrib4fvARB\0" "\0" - /* _mesa_function_pool[11341]: ColorPointerListIBM (dynamic) */ + /* _mesa_function_pool[11869]: ColorPointerListIBM (dynamic) */ "iiipi\0" "glColorPointerListIBM\0" "\0" - /* _mesa_function_pool[11370]: GetActiveUniformARB (will be remapped) */ + /* _mesa_function_pool[11898]: GetActiveUniformARB (will be remapped) */ "iiipppp\0" "glGetActiveUniform\0" "glGetActiveUniformARB\0" "\0" - /* _mesa_function_pool[11420]: ImageTransformParameteriHP (dynamic) */ + /* _mesa_function_pool[11948]: ImageTransformParameteriHP (dynamic) */ "iii\0" "glImageTransformParameteriHP\0" "\0" - /* _mesa_function_pool[11454]: Normal3b (offset 52) */ + /* _mesa_function_pool[11982]: Normal3b (offset 52) */ "iii\0" "glNormal3b\0" "\0" - /* _mesa_function_pool[11470]: Normal3d (offset 54) */ + /* _mesa_function_pool[11998]: Normal3d (offset 54) */ "ddd\0" "glNormal3d\0" "\0" - /* _mesa_function_pool[11486]: Uniform1uiEXT (will be remapped) */ + /* _mesa_function_pool[12014]: Uniform1uiEXT (will be remapped) */ "ii\0" "glUniform1uiEXT\0" + "glUniform1ui\0" "\0" - /* _mesa_function_pool[11506]: Normal3f (offset 56) */ + /* _mesa_function_pool[12047]: Normal3f (offset 56) */ "fff\0" "glNormal3f\0" "\0" - /* _mesa_function_pool[11522]: MultiTexCoord1svARB (offset 383) */ + /* _mesa_function_pool[12063]: MultiTexCoord1svARB (offset 383) */ "ip\0" "glMultiTexCoord1sv\0" "glMultiTexCoord1svARB\0" "\0" - /* _mesa_function_pool[11567]: Indexi (offset 48) */ + /* _mesa_function_pool[12108]: Indexi (offset 48) */ "i\0" "glIndexi\0" "\0" - /* _mesa_function_pool[11579]: EGLImageTargetTexture2DOES (will be remapped) */ + /* _mesa_function_pool[12120]: EGLImageTargetTexture2DOES (will be remapped) */ "ip\0" "glEGLImageTargetTexture2DOES\0" "\0" - /* _mesa_function_pool[11612]: EndQueryARB (will be remapped) */ + /* _mesa_function_pool[12153]: EndQueryARB (will be remapped) */ "i\0" "glEndQuery\0" "glEndQueryARB\0" "\0" - /* _mesa_function_pool[11640]: DeleteFencesNV (will be remapped) */ + /* _mesa_function_pool[12181]: DeleteFencesNV (will be remapped) */ "ip\0" "glDeleteFencesNV\0" "\0" - /* _mesa_function_pool[11661]: BindBufferRangeEXT (will be remapped) */ + /* _mesa_function_pool[12202]: BindBufferRangeEXT (will be remapped) */ "iiiii\0" "glBindBufferRangeEXT\0" "glBindBufferRange\0" "\0" - /* _mesa_function_pool[11707]: DepthMask (offset 211) */ + /* _mesa_function_pool[12248]: DepthMask (offset 211) */ "i\0" "glDepthMask\0" "\0" - /* _mesa_function_pool[11722]: IsShader (will be remapped) */ + /* _mesa_function_pool[12263]: IsShader (will be remapped) */ "i\0" "glIsShader\0" "\0" - /* _mesa_function_pool[11736]: Indexf (offset 46) */ + /* _mesa_function_pool[12277]: Indexf (offset 46) */ "f\0" "glIndexf\0" "\0" - /* _mesa_function_pool[11748]: GetImageTransformParameterivHP (dynamic) */ + /* _mesa_function_pool[12289]: GetImageTransformParameterivHP (dynamic) */ "iip\0" "glGetImageTransformParameterivHP\0" "\0" - /* _mesa_function_pool[11786]: Indexd (offset 44) */ + /* _mesa_function_pool[12327]: Indexd (offset 44) */ "d\0" "glIndexd\0" "\0" - /* _mesa_function_pool[11798]: GetMaterialiv (offset 270) */ + /* _mesa_function_pool[12339]: GetMaterialiv (offset 270) */ "iip\0" "glGetMaterialiv\0" "\0" - /* _mesa_function_pool[11819]: StencilOp (offset 244) */ + /* _mesa_function_pool[12360]: StencilOp (offset 244) */ "iii\0" "glStencilOp\0" "\0" - /* _mesa_function_pool[11836]: WindowPos4ivMESA (will be remapped) */ + /* _mesa_function_pool[12377]: WindowPos4ivMESA (will be remapped) */ "p\0" "glWindowPos4ivMESA\0" "\0" - /* _mesa_function_pool[11858]: FramebufferTextureLayer (dynamic) */ + /* _mesa_function_pool[12399]: FramebufferTextureLayer (dynamic) */ "iiiii\0" "glFramebufferTextureLayerARB\0" "\0" - /* _mesa_function_pool[11894]: MultiTexCoord3svARB (offset 399) */ + /* _mesa_function_pool[12435]: MultiTexCoord3svARB (offset 399) */ "ip\0" "glMultiTexCoord3sv\0" "glMultiTexCoord3svARB\0" "\0" - /* _mesa_function_pool[11939]: TexEnvfv (offset 185) */ + /* _mesa_function_pool[12480]: TexEnvfv (offset 185) */ "iip\0" "glTexEnvfv\0" "\0" - /* _mesa_function_pool[11955]: MultiTexCoord4iARB (offset 404) */ + /* _mesa_function_pool[12496]: MultiTexCoord4iARB (offset 404) */ "iiiii\0" "glMultiTexCoord4i\0" "glMultiTexCoord4iARB\0" "\0" - /* _mesa_function_pool[12001]: Indexs (offset 50) */ + /* _mesa_function_pool[12542]: Indexs (offset 50) */ "i\0" "glIndexs\0" "\0" - /* _mesa_function_pool[12013]: Binormal3ivEXT (dynamic) */ + /* _mesa_function_pool[12554]: Binormal3ivEXT (dynamic) */ "p\0" "glBinormal3ivEXT\0" "\0" - /* _mesa_function_pool[12033]: ResizeBuffersMESA (will be remapped) */ + /* _mesa_function_pool[12574]: ResizeBuffersMESA (will be remapped) */ "\0" "glResizeBuffersMESA\0" "\0" - /* _mesa_function_pool[12055]: GetUniformivARB (will be remapped) */ + /* _mesa_function_pool[12596]: GetUniformivARB (will be remapped) */ "iip\0" "glGetUniformiv\0" "glGetUniformivARB\0" "\0" - /* _mesa_function_pool[12093]: PixelTexGenParameteriSGIS (will be remapped) */ + /* _mesa_function_pool[12634]: PixelTexGenParameteriSGIS (will be remapped) */ "ii\0" "glPixelTexGenParameteriSGIS\0" "\0" - /* _mesa_function_pool[12125]: VertexPointervINTEL (dynamic) */ + /* _mesa_function_pool[12666]: VertexPointervINTEL (dynamic) */ "iip\0" "glVertexPointervINTEL\0" "\0" - /* _mesa_function_pool[12152]: Vertex2i (offset 130) */ + /* _mesa_function_pool[12693]: Vertex2i (offset 130) */ "ii\0" "glVertex2i\0" "\0" - /* _mesa_function_pool[12167]: LoadMatrixf (offset 291) */ + /* _mesa_function_pool[12708]: LoadMatrixf (offset 291) */ "p\0" "glLoadMatrixf\0" "\0" - /* _mesa_function_pool[12184]: VertexAttribI1uivEXT (will be remapped) */ + /* _mesa_function_pool[12725]: VertexAttribI1uivEXT (will be remapped) */ "ip\0" "glVertexAttribI1uivEXT\0" + "glVertexAttribI1uiv\0" "\0" - /* _mesa_function_pool[12211]: Vertex2f (offset 128) */ + /* _mesa_function_pool[12772]: Vertex2f (offset 128) */ "ff\0" "glVertex2f\0" "\0" - /* _mesa_function_pool[12226]: ReplacementCodeuiColor4fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[12787]: ReplacementCodeuiColor4fNormal3fVertex3fvSUN (dynamic) */ "pppp\0" "glReplacementCodeuiColor4fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[12279]: Color4bv (offset 26) */ + /* _mesa_function_pool[12840]: Color4bv (offset 26) */ "p\0" "glColor4bv\0" "\0" - /* _mesa_function_pool[12293]: VertexPointer (offset 321) */ + /* _mesa_function_pool[12854]: VertexPointer (offset 321) */ "iiip\0" "glVertexPointer\0" "\0" - /* _mesa_function_pool[12315]: SecondaryColor3uiEXT (will be remapped) */ + /* _mesa_function_pool[12876]: SecondaryColor3uiEXT (will be remapped) */ "iii\0" "glSecondaryColor3ui\0" "glSecondaryColor3uiEXT\0" "\0" - /* _mesa_function_pool[12363]: StartInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[12924]: StartInstrumentsSGIX (dynamic) */ "\0" "glStartInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[12388]: SecondaryColor3usvEXT (will be remapped) */ + /* _mesa_function_pool[12949]: SecondaryColor3usvEXT (will be remapped) */ "p\0" "glSecondaryColor3usv\0" "glSecondaryColor3usvEXT\0" "\0" - /* _mesa_function_pool[12436]: VertexAttrib2fvNV (will be remapped) */ + /* _mesa_function_pool[12997]: VertexAttrib2fvNV (will be remapped) */ "ip\0" "glVertexAttrib2fvNV\0" "\0" - /* _mesa_function_pool[12460]: ProgramLocalParameter4dvARB (will be remapped) */ + /* _mesa_function_pool[13021]: ProgramLocalParameter4dvARB (will be remapped) */ "iip\0" "glProgramLocalParameter4dvARB\0" "\0" - /* _mesa_function_pool[12495]: DeleteLists (offset 4) */ + /* _mesa_function_pool[13056]: DeleteLists (offset 4) */ "ii\0" "glDeleteLists\0" "\0" - /* _mesa_function_pool[12513]: LogicOp (offset 242) */ + /* _mesa_function_pool[13074]: LogicOp (offset 242) */ "i\0" "glLogicOp\0" "\0" - /* _mesa_function_pool[12526]: MatrixIndexuivARB (dynamic) */ + /* _mesa_function_pool[13087]: MatrixIndexuivARB (dynamic) */ "ip\0" "glMatrixIndexuivARB\0" "\0" - /* _mesa_function_pool[12550]: Vertex2s (offset 132) */ + /* _mesa_function_pool[13111]: Vertex2s (offset 132) */ "ii\0" "glVertex2s\0" "\0" - /* _mesa_function_pool[12565]: RenderbufferStorageMultisample (will be remapped) */ + /* _mesa_function_pool[13126]: RenderbufferStorageMultisample (will be remapped) */ "iiiii\0" "glRenderbufferStorageMultisample\0" "glRenderbufferStorageMultisampleEXT\0" "\0" - /* _mesa_function_pool[12641]: TexCoord4fv (offset 121) */ + /* _mesa_function_pool[13202]: TexCoord4fv (offset 121) */ "p\0" "glTexCoord4fv\0" "\0" - /* _mesa_function_pool[12658]: Tangent3sEXT (dynamic) */ + /* _mesa_function_pool[13219]: Tangent3sEXT (dynamic) */ "iii\0" "glTangent3sEXT\0" "\0" - /* _mesa_function_pool[12678]: GlobalAlphaFactorfSUN (dynamic) */ + /* _mesa_function_pool[13239]: GlobalAlphaFactorfSUN (dynamic) */ "f\0" "glGlobalAlphaFactorfSUN\0" "\0" - /* _mesa_function_pool[12705]: MultiTexCoord3iARB (offset 396) */ + /* _mesa_function_pool[13266]: MultiTexCoord3iARB (offset 396) */ "iiii\0" "glMultiTexCoord3i\0" "glMultiTexCoord3iARB\0" "\0" - /* _mesa_function_pool[12750]: IsProgram (will be remapped) */ + /* _mesa_function_pool[13311]: IsProgram (will be remapped) */ "i\0" "glIsProgram\0" "\0" - /* _mesa_function_pool[12765]: TexCoordPointerListIBM (dynamic) */ + /* _mesa_function_pool[13326]: TexCoordPointerListIBM (dynamic) */ "iiipi\0" "glTexCoordPointerListIBM\0" "\0" - /* _mesa_function_pool[12797]: VertexAttribI4svEXT (will be remapped) */ + /* _mesa_function_pool[13358]: VertexAttribI4svEXT (will be remapped) */ "ip\0" "glVertexAttribI4svEXT\0" + "glVertexAttribI4sv\0" "\0" - /* _mesa_function_pool[12823]: GlobalAlphaFactorusSUN (dynamic) */ + /* _mesa_function_pool[13403]: GlobalAlphaFactorusSUN (dynamic) */ "i\0" "glGlobalAlphaFactorusSUN\0" "\0" - /* _mesa_function_pool[12851]: VertexAttrib2dvNV (will be remapped) */ + /* _mesa_function_pool[13431]: VertexAttrib2dvNV (will be remapped) */ "ip\0" "glVertexAttrib2dvNV\0" "\0" - /* _mesa_function_pool[12875]: FramebufferRenderbufferEXT (will be remapped) */ + /* _mesa_function_pool[13455]: FramebufferRenderbufferEXT (will be remapped) */ "iiii\0" "glFramebufferRenderbuffer\0" "glFramebufferRenderbufferEXT\0" "\0" - /* _mesa_function_pool[12936]: VertexAttrib1dvNV (will be remapped) */ + /* _mesa_function_pool[13516]: ClearBufferuiv (will be remapped) */ + "iip\0" + "glClearBufferuiv\0" + "\0" + /* _mesa_function_pool[13538]: VertexAttrib1dvNV (will be remapped) */ "ip\0" "glVertexAttrib1dvNV\0" "\0" - /* _mesa_function_pool[12960]: GenTextures (offset 328) */ + /* _mesa_function_pool[13562]: GenTextures (offset 328) */ "ip\0" "glGenTextures\0" "glGenTexturesEXT\0" "\0" - /* _mesa_function_pool[12995]: FramebufferTextureARB (will be remapped) */ + /* _mesa_function_pool[13597]: FramebufferTextureARB (will be remapped) */ "iiii\0" "glFramebufferTextureARB\0" "\0" - /* _mesa_function_pool[13025]: SetFenceNV (will be remapped) */ + /* _mesa_function_pool[13627]: SetFenceNV (will be remapped) */ "ii\0" "glSetFenceNV\0" "\0" - /* _mesa_function_pool[13042]: FramebufferTexture1DEXT (will be remapped) */ + /* _mesa_function_pool[13644]: FramebufferTexture1DEXT (will be remapped) */ "iiiii\0" "glFramebufferTexture1D\0" "glFramebufferTexture1DEXT\0" "\0" - /* _mesa_function_pool[13098]: GetCombinerOutputParameterivNV (will be remapped) */ + /* _mesa_function_pool[13700]: GetCombinerOutputParameterivNV (will be remapped) */ "iiip\0" "glGetCombinerOutputParameterivNV\0" "\0" - /* _mesa_function_pool[13137]: MultiModeDrawArraysIBM (will be remapped) */ + /* _mesa_function_pool[13739]: MultiModeDrawArraysIBM (will be remapped) */ "pppii\0" "glMultiModeDrawArraysIBM\0" "\0" - /* _mesa_function_pool[13169]: PixelTexGenParameterivSGIS (will be remapped) */ + /* _mesa_function_pool[13771]: PixelTexGenParameterivSGIS (will be remapped) */ "ip\0" "glPixelTexGenParameterivSGIS\0" "\0" - /* _mesa_function_pool[13202]: TextureNormalEXT (dynamic) */ + /* _mesa_function_pool[13804]: TextureNormalEXT (dynamic) */ "i\0" "glTextureNormalEXT\0" "\0" - /* _mesa_function_pool[13224]: IndexPointerListIBM (dynamic) */ + /* _mesa_function_pool[13826]: IndexPointerListIBM (dynamic) */ "iipi\0" "glIndexPointerListIBM\0" "\0" - /* _mesa_function_pool[13252]: WeightfvARB (dynamic) */ + /* _mesa_function_pool[13854]: WeightfvARB (dynamic) */ "ip\0" "glWeightfvARB\0" "\0" - /* _mesa_function_pool[13270]: GetCombinerOutputParameterfvNV (will be remapped) */ + /* _mesa_function_pool[13872]: GetCombinerOutputParameterfvNV (will be remapped) */ "iiip\0" "glGetCombinerOutputParameterfvNV\0" "\0" - /* _mesa_function_pool[13309]: RasterPos2sv (offset 69) */ + /* _mesa_function_pool[13911]: RasterPos2sv (offset 69) */ "p\0" "glRasterPos2sv\0" "\0" - /* _mesa_function_pool[13327]: Color4ubv (offset 36) */ + /* _mesa_function_pool[13929]: Color4ubv (offset 36) */ "p\0" "glColor4ubv\0" "\0" - /* _mesa_function_pool[13342]: DrawBuffer (offset 202) */ + /* _mesa_function_pool[13944]: DrawBuffer (offset 202) */ "i\0" "glDrawBuffer\0" "\0" - /* _mesa_function_pool[13358]: TexCoord2fv (offset 105) */ + /* _mesa_function_pool[13960]: TexCoord2fv (offset 105) */ "p\0" "glTexCoord2fv\0" "\0" - /* _mesa_function_pool[13375]: WindowPos4fMESA (will be remapped) */ + /* _mesa_function_pool[13977]: WindowPos4fMESA (will be remapped) */ "ffff\0" "glWindowPos4fMESA\0" "\0" - /* _mesa_function_pool[13399]: TexCoord1sv (offset 101) */ + /* _mesa_function_pool[14001]: TexCoord1sv (offset 101) */ "p\0" "glTexCoord1sv\0" "\0" - /* _mesa_function_pool[13416]: WindowPos3dvMESA (will be remapped) */ + /* _mesa_function_pool[14018]: WindowPos3dvMESA (will be remapped) */ "p\0" "glWindowPos3dv\0" "glWindowPos3dvARB\0" "glWindowPos3dvMESA\0" "\0" - /* _mesa_function_pool[13471]: DepthFunc (offset 245) */ + /* _mesa_function_pool[14073]: DepthFunc (offset 245) */ "i\0" "glDepthFunc\0" "\0" - /* _mesa_function_pool[13486]: PixelMapusv (offset 253) */ + /* _mesa_function_pool[14088]: PixelMapusv (offset 253) */ "iip\0" "glPixelMapusv\0" "\0" - /* _mesa_function_pool[13505]: GetQueryObjecti64vEXT (will be remapped) */ + /* _mesa_function_pool[14107]: GetQueryObjecti64vEXT (will be remapped) */ "iip\0" "glGetQueryObjecti64vEXT\0" "\0" - /* _mesa_function_pool[13534]: MultiTexCoord1dARB (offset 376) */ + /* _mesa_function_pool[14136]: MultiTexCoord1dARB (offset 376) */ "id\0" "glMultiTexCoord1d\0" "glMultiTexCoord1dARB\0" "\0" - /* _mesa_function_pool[13577]: PointParameterivNV (will be remapped) */ + /* _mesa_function_pool[14179]: PointParameterivNV (will be remapped) */ "ip\0" "glPointParameteriv\0" "glPointParameterivNV\0" "\0" - /* _mesa_function_pool[13621]: BlendFunc (offset 241) */ + /* _mesa_function_pool[14223]: BlendFunc (offset 241) */ "ii\0" "glBlendFunc\0" "\0" - /* _mesa_function_pool[13637]: EndTransformFeedbackEXT (will be remapped) */ + /* _mesa_function_pool[14239]: EndTransformFeedbackEXT (will be remapped) */ "\0" "glEndTransformFeedbackEXT\0" "glEndTransformFeedback\0" "\0" - /* _mesa_function_pool[13688]: Uniform2fvARB (will be remapped) */ + /* _mesa_function_pool[14290]: Uniform2fvARB (will be remapped) */ "iip\0" "glUniform2fv\0" "glUniform2fvARB\0" "\0" - /* _mesa_function_pool[13722]: BufferParameteriAPPLE (will be remapped) */ + /* _mesa_function_pool[14324]: BufferParameteriAPPLE (will be remapped) */ "iii\0" "glBufferParameteriAPPLE\0" "\0" - /* _mesa_function_pool[13751]: MultiTexCoord3dvARB (offset 393) */ + /* _mesa_function_pool[14353]: MultiTexCoord3dvARB (offset 393) */ "ip\0" "glMultiTexCoord3dv\0" "glMultiTexCoord3dvARB\0" "\0" - /* _mesa_function_pool[13796]: ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[14398]: ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (dynamic) */ "pppp\0" "glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[13852]: DeleteObjectARB (will be remapped) */ + /* _mesa_function_pool[14454]: DeleteObjectARB (will be remapped) */ "i\0" "glDeleteObjectARB\0" "\0" - /* _mesa_function_pool[13873]: MatrixIndexPointerARB (dynamic) */ + /* _mesa_function_pool[14475]: MatrixIndexPointerARB (dynamic) */ "iiip\0" "glMatrixIndexPointerARB\0" "\0" - /* _mesa_function_pool[13903]: ProgramNamedParameter4dvNV (will be remapped) */ + /* _mesa_function_pool[14505]: ProgramNamedParameter4dvNV (will be remapped) */ "iipp\0" "glProgramNamedParameter4dvNV\0" "\0" - /* _mesa_function_pool[13938]: Tangent3fvEXT (dynamic) */ + /* _mesa_function_pool[14540]: Tangent3fvEXT (dynamic) */ "p\0" "glTangent3fvEXT\0" "\0" - /* _mesa_function_pool[13957]: Flush (offset 217) */ + /* _mesa_function_pool[14559]: Flush (offset 217) */ "\0" "glFlush\0" "\0" - /* _mesa_function_pool[13967]: Color4uiv (offset 38) */ + /* _mesa_function_pool[14569]: Color4uiv (offset 38) */ "p\0" "glColor4uiv\0" "\0" - /* _mesa_function_pool[13982]: VertexAttribI4iEXT (will be remapped) */ + /* _mesa_function_pool[14584]: VertexAttribI4iEXT (will be remapped) */ "iiiii\0" "glVertexAttribI4iEXT\0" + "glVertexAttribI4i\0" "\0" - /* _mesa_function_pool[14010]: GenVertexArrays (will be remapped) */ + /* _mesa_function_pool[14630]: GenVertexArrays (will be remapped) */ "ip\0" "glGenVertexArrays\0" "\0" - /* _mesa_function_pool[14032]: Uniform3uivEXT (will be remapped) */ + /* _mesa_function_pool[14652]: Uniform3uivEXT (will be remapped) */ "iip\0" "glUniform3uivEXT\0" + "glUniform3uiv\0" "\0" - /* _mesa_function_pool[14054]: RasterPos3sv (offset 77) */ + /* _mesa_function_pool[14688]: RasterPos3sv (offset 77) */ "p\0" "glRasterPos3sv\0" "\0" - /* _mesa_function_pool[14072]: BindFramebufferEXT (will be remapped) */ + /* _mesa_function_pool[14706]: BindFramebufferEXT (will be remapped) */ "ii\0" "glBindFramebuffer\0" "glBindFramebufferEXT\0" "\0" - /* _mesa_function_pool[14115]: ReferencePlaneSGIX (dynamic) */ + /* _mesa_function_pool[14749]: ReferencePlaneSGIX (dynamic) */ "p\0" "glReferencePlaneSGIX\0" "\0" - /* _mesa_function_pool[14139]: PushAttrib (offset 219) */ + /* _mesa_function_pool[14773]: PushAttrib (offset 219) */ "i\0" "glPushAttrib\0" "\0" - /* _mesa_function_pool[14155]: RasterPos2i (offset 66) */ + /* _mesa_function_pool[14789]: RasterPos2i (offset 66) */ "ii\0" "glRasterPos2i\0" "\0" - /* _mesa_function_pool[14173]: ValidateProgramARB (will be remapped) */ + /* _mesa_function_pool[14807]: ValidateProgramARB (will be remapped) */ "i\0" "glValidateProgram\0" "glValidateProgramARB\0" "\0" - /* _mesa_function_pool[14215]: TexParameteriv (offset 181) */ + /* _mesa_function_pool[14849]: TexParameteriv (offset 181) */ "iip\0" "glTexParameteriv\0" "\0" - /* _mesa_function_pool[14237]: UnlockArraysEXT (will be remapped) */ + /* _mesa_function_pool[14871]: UnlockArraysEXT (will be remapped) */ "\0" "glUnlockArraysEXT\0" "\0" - /* _mesa_function_pool[14257]: TexCoord2fColor3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[14891]: TexCoord2fColor3fVertex3fSUN (dynamic) */ "ffffffff\0" "glTexCoord2fColor3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[14298]: WindowPos3fvMESA (will be remapped) */ + /* _mesa_function_pool[14932]: WindowPos3fvMESA (will be remapped) */ "p\0" "glWindowPos3fv\0" "glWindowPos3fvARB\0" "glWindowPos3fvMESA\0" "\0" - /* _mesa_function_pool[14353]: RasterPos2f (offset 64) */ + /* _mesa_function_pool[14987]: RasterPos2f (offset 64) */ "ff\0" "glRasterPos2f\0" "\0" - /* _mesa_function_pool[14371]: VertexAttrib1svNV (will be remapped) */ + /* _mesa_function_pool[15005]: VertexAttrib1svNV (will be remapped) */ "ip\0" "glVertexAttrib1svNV\0" "\0" - /* _mesa_function_pool[14395]: RasterPos2d (offset 62) */ + /* _mesa_function_pool[15029]: RasterPos2d (offset 62) */ "dd\0" "glRasterPos2d\0" "\0" - /* _mesa_function_pool[14413]: RasterPos3fv (offset 73) */ + /* _mesa_function_pool[15047]: RasterPos3fv (offset 73) */ "p\0" "glRasterPos3fv\0" "\0" - /* _mesa_function_pool[14431]: CopyTexSubImage3D (offset 373) */ + /* _mesa_function_pool[15065]: CopyTexSubImage3D (offset 373) */ "iiiiiiiii\0" "glCopyTexSubImage3D\0" "glCopyTexSubImage3DEXT\0" "\0" - /* _mesa_function_pool[14485]: VertexAttrib2dARB (will be remapped) */ + /* _mesa_function_pool[15119]: VertexAttrib2dARB (will be remapped) */ "idd\0" "glVertexAttrib2d\0" "glVertexAttrib2dARB\0" "\0" - /* _mesa_function_pool[14527]: Color4ub (offset 35) */ + /* _mesa_function_pool[15161]: Color4ub (offset 35) */ "iiii\0" "glColor4ub\0" "\0" - /* _mesa_function_pool[14544]: GetInteger64v (will be remapped) */ + /* _mesa_function_pool[15178]: GetInteger64v (will be remapped) */ "ip\0" "glGetInteger64v\0" "\0" - /* _mesa_function_pool[14564]: TextureColorMaskSGIS (dynamic) */ + /* _mesa_function_pool[15198]: TextureColorMaskSGIS (dynamic) */ "iiii\0" "glTextureColorMaskSGIS\0" "\0" - /* _mesa_function_pool[14593]: RasterPos2s (offset 68) */ + /* _mesa_function_pool[15227]: RasterPos2s (offset 68) */ "ii\0" "glRasterPos2s\0" "\0" - /* _mesa_function_pool[14611]: GetColorTable (offset 343) */ + /* _mesa_function_pool[15245]: GetColorTable (offset 343) */ "iiip\0" "glGetColorTable\0" "glGetColorTableSGI\0" "glGetColorTableEXT\0" "\0" - /* _mesa_function_pool[14671]: SelectBuffer (offset 195) */ + /* _mesa_function_pool[15305]: SelectBuffer (offset 195) */ "ip\0" "glSelectBuffer\0" "\0" - /* _mesa_function_pool[14690]: Indexiv (offset 49) */ + /* _mesa_function_pool[15324]: Indexiv (offset 49) */ "p\0" "glIndexiv\0" "\0" - /* _mesa_function_pool[14703]: TexCoord3i (offset 114) */ + /* _mesa_function_pool[15337]: TexCoord3i (offset 114) */ "iii\0" "glTexCoord3i\0" "\0" - /* _mesa_function_pool[14721]: CopyColorTable (offset 342) */ + /* _mesa_function_pool[15355]: CopyColorTable (offset 342) */ "iiiii\0" "glCopyColorTable\0" "glCopyColorTableSGI\0" "\0" - /* _mesa_function_pool[14765]: GetHistogramParameterfv (offset 362) */ + /* _mesa_function_pool[15399]: GetHistogramParameterfv (offset 362) */ "iip\0" "glGetHistogramParameterfv\0" "glGetHistogramParameterfvEXT\0" "\0" - /* _mesa_function_pool[14825]: Frustum (offset 289) */ + /* _mesa_function_pool[15459]: Frustum (offset 289) */ "dddddd\0" "glFrustum\0" "\0" - /* _mesa_function_pool[14843]: GetString (offset 275) */ + /* _mesa_function_pool[15477]: GetString (offset 275) */ "i\0" "glGetString\0" "\0" - /* _mesa_function_pool[14858]: ColorPointervINTEL (dynamic) */ + /* _mesa_function_pool[15492]: ColorPointervINTEL (dynamic) */ "iip\0" "glColorPointervINTEL\0" "\0" - /* _mesa_function_pool[14884]: TexEnvf (offset 184) */ + /* _mesa_function_pool[15518]: TexEnvf (offset 184) */ "iif\0" "glTexEnvf\0" "\0" - /* _mesa_function_pool[14899]: TexCoord3d (offset 110) */ + /* _mesa_function_pool[15533]: TexCoord3d (offset 110) */ "ddd\0" "glTexCoord3d\0" "\0" - /* _mesa_function_pool[14917]: AlphaFragmentOp1ATI (will be remapped) */ + /* _mesa_function_pool[15551]: AlphaFragmentOp1ATI (will be remapped) */ "iiiiii\0" "glAlphaFragmentOp1ATI\0" "\0" - /* _mesa_function_pool[14947]: TexCoord3f (offset 112) */ + /* _mesa_function_pool[15581]: TexCoord3f (offset 112) */ "fff\0" "glTexCoord3f\0" "\0" - /* _mesa_function_pool[14965]: MultiTexCoord3ivARB (offset 397) */ + /* _mesa_function_pool[15599]: MultiTexCoord3ivARB (offset 397) */ "ip\0" "glMultiTexCoord3iv\0" "glMultiTexCoord3ivARB\0" "\0" - /* _mesa_function_pool[15010]: MultiTexCoord2sARB (offset 390) */ + /* _mesa_function_pool[15644]: MultiTexCoord2sARB (offset 390) */ "iii\0" "glMultiTexCoord2s\0" "glMultiTexCoord2sARB\0" "\0" - /* _mesa_function_pool[15054]: VertexAttrib1dvARB (will be remapped) */ + /* _mesa_function_pool[15688]: VertexAttrib1dvARB (will be remapped) */ "ip\0" "glVertexAttrib1dv\0" "glVertexAttrib1dvARB\0" "\0" - /* _mesa_function_pool[15097]: DeleteTextures (offset 327) */ + /* _mesa_function_pool[15731]: DeleteTextures (offset 327) */ "ip\0" "glDeleteTextures\0" "glDeleteTexturesEXT\0" "\0" - /* _mesa_function_pool[15138]: TexCoordPointerEXT (will be remapped) */ + /* _mesa_function_pool[15772]: TexCoordPointerEXT (will be remapped) */ "iiiip\0" "glTexCoordPointerEXT\0" "\0" - /* _mesa_function_pool[15166]: TexSubImage4DSGIS (dynamic) */ + /* _mesa_function_pool[15800]: TexSubImage4DSGIS (dynamic) */ "iiiiiiiiiiiip\0" "glTexSubImage4DSGIS\0" "\0" - /* _mesa_function_pool[15201]: TexCoord3s (offset 116) */ + /* _mesa_function_pool[15835]: TexCoord3s (offset 116) */ "iii\0" "glTexCoord3s\0" "\0" - /* _mesa_function_pool[15219]: GetTexLevelParameteriv (offset 285) */ + /* _mesa_function_pool[15853]: GetTexLevelParameteriv (offset 285) */ "iiip\0" "glGetTexLevelParameteriv\0" "\0" - /* _mesa_function_pool[15250]: DrawArraysInstanced (will be remapped) */ - "iiii\0" - "glDrawArraysInstanced\0" - "glDrawArraysInstancedARB\0" - "glDrawArraysInstancedEXT\0" - "\0" - /* _mesa_function_pool[15328]: CombinerStageParameterfvNV (dynamic) */ + /* _mesa_function_pool[15884]: CombinerStageParameterfvNV (dynamic) */ "iip\0" "glCombinerStageParameterfvNV\0" "\0" - /* _mesa_function_pool[15362]: StopInstrumentsSGIX (dynamic) */ + /* _mesa_function_pool[15918]: StopInstrumentsSGIX (dynamic) */ "i\0" "glStopInstrumentsSGIX\0" "\0" - /* _mesa_function_pool[15387]: TexCoord4fColor4fNormal3fVertex4fSUN (dynamic) */ + /* _mesa_function_pool[15943]: TexCoord4fColor4fNormal3fVertex4fSUN (dynamic) */ "fffffffffffffff\0" "glTexCoord4fColor4fNormal3fVertex4fSUN\0" "\0" - /* _mesa_function_pool[15443]: ClearAccum (offset 204) */ + /* _mesa_function_pool[15999]: ClearAccum (offset 204) */ "ffff\0" "glClearAccum\0" "\0" - /* _mesa_function_pool[15462]: DeformSGIX (dynamic) */ + /* _mesa_function_pool[16018]: DeformSGIX (dynamic) */ "i\0" "glDeformSGIX\0" "\0" - /* _mesa_function_pool[15478]: GetVertexAttribfvARB (will be remapped) */ + /* _mesa_function_pool[16034]: GetVertexAttribfvARB (will be remapped) */ "iip\0" "glGetVertexAttribfv\0" "glGetVertexAttribfvARB\0" "\0" - /* _mesa_function_pool[15526]: SecondaryColor3ivEXT (will be remapped) */ + /* _mesa_function_pool[16082]: SecondaryColor3ivEXT (will be remapped) */ "p\0" "glSecondaryColor3iv\0" "glSecondaryColor3ivEXT\0" "\0" - /* _mesa_function_pool[15572]: TexCoord4iv (offset 123) */ + /* _mesa_function_pool[16128]: TexCoord4iv (offset 123) */ "p\0" "glTexCoord4iv\0" "\0" - /* _mesa_function_pool[15589]: VertexAttribI4uiEXT (will be remapped) */ + /* _mesa_function_pool[16145]: VertexAttribI4uiEXT (will be remapped) */ "iiiii\0" "glVertexAttribI4uiEXT\0" + "glVertexAttribI4ui\0" "\0" - /* _mesa_function_pool[15618]: UniformMatrix4x2fv (will be remapped) */ + /* _mesa_function_pool[16193]: GetFragmentMaterialfvSGIX (dynamic) */ + "iip\0" + "glGetFragmentMaterialfvSGIX\0" + "\0" + /* _mesa_function_pool[16226]: UniformMatrix4x2fv (will be remapped) */ "iiip\0" "glUniformMatrix4x2fv\0" "\0" - /* _mesa_function_pool[15645]: GetDetailTexFuncSGIS (dynamic) */ + /* _mesa_function_pool[16253]: GetDetailTexFuncSGIS (dynamic) */ "ip\0" "glGetDetailTexFuncSGIS\0" "\0" - /* _mesa_function_pool[15672]: GetCombinerStageParameterfvNV (dynamic) */ + /* _mesa_function_pool[16280]: GetCombinerStageParameterfvNV (dynamic) */ "iip\0" "glGetCombinerStageParameterfvNV\0" "\0" - /* _mesa_function_pool[15709]: PolygonOffset (offset 319) */ + /* _mesa_function_pool[16317]: PolygonOffset (offset 319) */ "ff\0" "glPolygonOffset\0" "\0" - /* _mesa_function_pool[15729]: BindVertexArray (will be remapped) */ + /* _mesa_function_pool[16337]: BindVertexArray (will be remapped) */ "i\0" "glBindVertexArray\0" "\0" - /* _mesa_function_pool[15750]: Color4ubVertex2fvSUN (dynamic) */ + /* _mesa_function_pool[16358]: Color4ubVertex2fvSUN (dynamic) */ "pp\0" "glColor4ubVertex2fvSUN\0" "\0" - /* _mesa_function_pool[15777]: Rectd (offset 86) */ + /* _mesa_function_pool[16385]: Rectd (offset 86) */ "dddd\0" "glRectd\0" "\0" - /* _mesa_function_pool[15791]: TexFilterFuncSGIS (dynamic) */ + /* _mesa_function_pool[16399]: TexFilterFuncSGIS (dynamic) */ "iiip\0" "glTexFilterFuncSGIS\0" "\0" - /* _mesa_function_pool[15817]: SampleMaskSGIS (will be remapped) */ + /* _mesa_function_pool[16425]: SampleMaskSGIS (will be remapped) */ "fi\0" "glSampleMaskSGIS\0" "glSampleMaskEXT\0" "\0" - /* _mesa_function_pool[15854]: VertexAttribI4ubvEXT (will be remapped) */ + /* _mesa_function_pool[16462]: VertexAttribI4ubvEXT (will be remapped) */ "ip\0" "glVertexAttribI4ubvEXT\0" + "glVertexAttribI4ubv\0" "\0" - /* _mesa_function_pool[15881]: GetAttribLocationARB (will be remapped) */ + /* _mesa_function_pool[16509]: GetAttribLocationARB (will be remapped) */ "ip\0" "glGetAttribLocation\0" "glGetAttribLocationARB\0" "\0" - /* _mesa_function_pool[15928]: RasterPos3i (offset 74) */ + /* _mesa_function_pool[16556]: RasterPos3i (offset 74) */ "iii\0" "glRasterPos3i\0" "\0" - /* _mesa_function_pool[15947]: VertexAttrib4ubvARB (will be remapped) */ + /* _mesa_function_pool[16575]: VertexAttrib4ubvARB (will be remapped) */ "ip\0" "glVertexAttrib4ubv\0" "glVertexAttrib4ubvARB\0" "\0" - /* _mesa_function_pool[15992]: DetailTexFuncSGIS (dynamic) */ + /* _mesa_function_pool[16620]: DetailTexFuncSGIS (dynamic) */ "iip\0" "glDetailTexFuncSGIS\0" "\0" - /* _mesa_function_pool[16017]: Normal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[16645]: Normal3fVertex3fSUN (dynamic) */ "ffffff\0" "glNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[16047]: CopyTexImage2D (offset 324) */ + /* _mesa_function_pool[16675]: CopyTexImage2D (offset 324) */ "iiiiiiii\0" "glCopyTexImage2D\0" "glCopyTexImage2DEXT\0" "\0" - /* _mesa_function_pool[16094]: GetBufferPointervARB (will be remapped) */ + /* _mesa_function_pool[16722]: GetBufferPointervARB (will be remapped) */ "iip\0" "glGetBufferPointerv\0" "glGetBufferPointervARB\0" "\0" - /* _mesa_function_pool[16142]: ProgramEnvParameter4fARB (will be remapped) */ + /* _mesa_function_pool[16770]: ProgramEnvParameter4fARB (will be remapped) */ "iiffff\0" "glProgramEnvParameter4fARB\0" "glProgramParameter4fNV\0" "\0" - /* _mesa_function_pool[16200]: Uniform3ivARB (will be remapped) */ + /* _mesa_function_pool[16828]: Uniform3ivARB (will be remapped) */ "iip\0" "glUniform3iv\0" "glUniform3ivARB\0" "\0" - /* _mesa_function_pool[16234]: Lightfv (offset 160) */ + /* _mesa_function_pool[16862]: Lightfv (offset 160) */ "iip\0" "glLightfv\0" "\0" - /* _mesa_function_pool[16249]: PrimitiveRestartIndexNV (will be remapped) */ + /* _mesa_function_pool[16877]: PrimitiveRestartIndexNV (will be remapped) */ "i\0" "glPrimitiveRestartIndexNV\0" + "glPrimitiveRestartIndex\0" "\0" - /* _mesa_function_pool[16278]: ClearDepth (offset 208) */ + /* _mesa_function_pool[16930]: ClearDepth (offset 208) */ "d\0" "glClearDepth\0" "\0" - /* _mesa_function_pool[16294]: GetFenceivNV (will be remapped) */ + /* _mesa_function_pool[16946]: GetFenceivNV (will be remapped) */ "iip\0" "glGetFenceivNV\0" "\0" - /* _mesa_function_pool[16314]: WindowPos4dvMESA (will be remapped) */ + /* _mesa_function_pool[16966]: WindowPos4dvMESA (will be remapped) */ "p\0" "glWindowPos4dvMESA\0" "\0" - /* _mesa_function_pool[16336]: ColorSubTable (offset 346) */ + /* _mesa_function_pool[16988]: ColorSubTable (offset 346) */ "iiiiip\0" "glColorSubTable\0" "glColorSubTableEXT\0" "\0" - /* _mesa_function_pool[16379]: Color4fv (offset 30) */ + /* _mesa_function_pool[17031]: Color4fv (offset 30) */ "p\0" "glColor4fv\0" "\0" - /* _mesa_function_pool[16393]: MultiTexCoord4ivARB (offset 405) */ + /* _mesa_function_pool[17045]: MultiTexCoord4ivARB (offset 405) */ "ip\0" "glMultiTexCoord4iv\0" "glMultiTexCoord4ivARB\0" "\0" - /* _mesa_function_pool[16438]: DrawElementsInstanced (will be remapped) */ - "iiipi\0" - "glDrawElementsInstanced\0" - "glDrawElementsInstancedARB\0" - "glDrawElementsInstancedEXT\0" + /* _mesa_function_pool[17090]: ProgramLocalParameters4fvEXT (will be remapped) */ + "iiip\0" + "glProgramLocalParameters4fvEXT\0" "\0" - /* _mesa_function_pool[16523]: ColorPointer (offset 308) */ + /* _mesa_function_pool[17127]: ColorPointer (offset 308) */ "iiip\0" "glColorPointer\0" "\0" - /* _mesa_function_pool[16544]: Rects (offset 92) */ + /* _mesa_function_pool[17148]: Rects (offset 92) */ "iiii\0" "glRects\0" "\0" - /* _mesa_function_pool[16558]: GetMapAttribParameterfvNV (dynamic) */ + /* _mesa_function_pool[17162]: GetMapAttribParameterfvNV (dynamic) */ "iiip\0" "glGetMapAttribParameterfvNV\0" "\0" - /* _mesa_function_pool[16592]: CreateShaderProgramEXT (will be remapped) */ + /* _mesa_function_pool[17196]: CreateShaderProgramEXT (will be remapped) */ "ip\0" "glCreateShaderProgramEXT\0" "\0" - /* _mesa_function_pool[16621]: ActiveProgramEXT (will be remapped) */ + /* _mesa_function_pool[17225]: ActiveProgramEXT (will be remapped) */ "i\0" "glActiveProgramEXT\0" "\0" - /* _mesa_function_pool[16643]: Lightiv (offset 162) */ + /* _mesa_function_pool[17247]: Lightiv (offset 162) */ "iip\0" "glLightiv\0" "\0" - /* _mesa_function_pool[16658]: VertexAttrib4sARB (will be remapped) */ + /* _mesa_function_pool[17262]: VertexAttrib4sARB (will be remapped) */ "iiiii\0" "glVertexAttrib4s\0" "glVertexAttrib4sARB\0" "\0" - /* _mesa_function_pool[16702]: GetQueryObjectuivARB (will be remapped) */ + /* _mesa_function_pool[17306]: GetQueryObjectuivARB (will be remapped) */ "iip\0" "glGetQueryObjectuiv\0" "glGetQueryObjectuivARB\0" "\0" - /* _mesa_function_pool[16750]: GetTexParameteriv (offset 283) */ + /* _mesa_function_pool[17354]: GetTexParameteriv (offset 283) */ "iip\0" "glGetTexParameteriv\0" "\0" - /* _mesa_function_pool[16775]: MapParameterivNV (dynamic) */ + /* _mesa_function_pool[17379]: MapParameterivNV (dynamic) */ "iip\0" "glMapParameterivNV\0" "\0" - /* _mesa_function_pool[16799]: GenRenderbuffersEXT (will be remapped) */ + /* _mesa_function_pool[17403]: GenRenderbuffersEXT (will be remapped) */ "ip\0" "glGenRenderbuffers\0" "glGenRenderbuffersEXT\0" "\0" - /* _mesa_function_pool[16844]: VertexAttrib2dvARB (will be remapped) */ + /* _mesa_function_pool[17448]: ClearBufferfv (will be remapped) */ + "iip\0" + "glClearBufferfv\0" + "\0" + /* _mesa_function_pool[17469]: VertexAttrib2dvARB (will be remapped) */ "ip\0" "glVertexAttrib2dv\0" "glVertexAttrib2dvARB\0" "\0" - /* _mesa_function_pool[16887]: EdgeFlagPointerEXT (will be remapped) */ + /* _mesa_function_pool[17512]: EdgeFlagPointerEXT (will be remapped) */ "iip\0" "glEdgeFlagPointerEXT\0" "\0" - /* _mesa_function_pool[16913]: VertexAttribs2svNV (will be remapped) */ + /* _mesa_function_pool[17538]: VertexAttribs2svNV (will be remapped) */ "iip\0" "glVertexAttribs2svNV\0" "\0" - /* _mesa_function_pool[16939]: WeightbvARB (dynamic) */ + /* _mesa_function_pool[17564]: WeightbvARB (dynamic) */ "ip\0" "glWeightbvARB\0" "\0" - /* _mesa_function_pool[16957]: VertexAttrib2fvARB (will be remapped) */ + /* _mesa_function_pool[17582]: VertexAttrib2fvARB (will be remapped) */ "ip\0" "glVertexAttrib2fv\0" "glVertexAttrib2fvARB\0" "\0" - /* _mesa_function_pool[17000]: GetBufferParameterivARB (will be remapped) */ + /* _mesa_function_pool[17625]: GetBufferParameterivARB (will be remapped) */ "iip\0" "glGetBufferParameteriv\0" "glGetBufferParameterivARB\0" "\0" - /* _mesa_function_pool[17054]: Rectdv (offset 87) */ + /* _mesa_function_pool[17679]: Rectdv (offset 87) */ "pp\0" "glRectdv\0" "\0" - /* _mesa_function_pool[17067]: ListParameteriSGIX (dynamic) */ + /* _mesa_function_pool[17692]: ListParameteriSGIX (dynamic) */ "iii\0" "glListParameteriSGIX\0" "\0" - /* _mesa_function_pool[17093]: ReplacementCodeuiColor4fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[17718]: ReplacementCodeuiColor4fNormal3fVertex3fSUN (dynamic) */ "iffffffffff\0" "glReplacementCodeuiColor4fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[17152]: InstrumentsBufferSGIX (dynamic) */ + /* _mesa_function_pool[17777]: InstrumentsBufferSGIX (dynamic) */ "ip\0" "glInstrumentsBufferSGIX\0" "\0" - /* _mesa_function_pool[17180]: VertexAttrib4NivARB (will be remapped) */ + /* _mesa_function_pool[17805]: VertexAttrib4NivARB (will be remapped) */ "ip\0" "glVertexAttrib4Niv\0" "glVertexAttrib4NivARB\0" "\0" - /* _mesa_function_pool[17225]: GetAttachedShaders (will be remapped) */ + /* _mesa_function_pool[17850]: DrawArraysInstancedARB (will be remapped) */ + "iiii\0" + "glDrawArraysInstancedARB\0" + "glDrawArraysInstancedEXT\0" + "glDrawArraysInstanced\0" + "\0" + /* _mesa_function_pool[17928]: GetAttachedShaders (will be remapped) */ "iipp\0" "glGetAttachedShaders\0" "\0" - /* _mesa_function_pool[17252]: GenVertexArraysAPPLE (will be remapped) */ + /* _mesa_function_pool[17955]: GenVertexArraysAPPLE (will be remapped) */ "ip\0" "glGenVertexArraysAPPLE\0" "\0" - /* _mesa_function_pool[17279]: Materialiv (offset 172) */ + /* _mesa_function_pool[17982]: ClearBufferfi (will be remapped) */ + "iifi\0" + "glClearBufferfi\0" + "\0" + /* _mesa_function_pool[18004]: Materialiv (offset 172) */ "iip\0" "glMaterialiv\0" "\0" - /* _mesa_function_pool[17297]: PushClientAttrib (offset 335) */ + /* _mesa_function_pool[18022]: PushClientAttrib (offset 335) */ "i\0" "glPushClientAttrib\0" "\0" - /* _mesa_function_pool[17319]: ProgramEnvParameters4fvEXT (will be remapped) */ + /* _mesa_function_pool[18044]: ProgramEnvParameters4fvEXT (will be remapped) */ "iiip\0" "glProgramEnvParameters4fvEXT\0" "\0" - /* _mesa_function_pool[17354]: TexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[18079]: TexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */ "pppp\0" "glTexCoord2fColor4fNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[17400]: WindowPos2iMESA (will be remapped) */ + /* _mesa_function_pool[18125]: WindowPos2iMESA (will be remapped) */ "ii\0" "glWindowPos2i\0" "glWindowPos2iARB\0" "glWindowPos2iMESA\0" "\0" - /* _mesa_function_pool[17453]: SecondaryColor3fvEXT (will be remapped) */ + /* _mesa_function_pool[18178]: SecondaryColor3fvEXT (will be remapped) */ "p\0" "glSecondaryColor3fv\0" "glSecondaryColor3fvEXT\0" "\0" - /* _mesa_function_pool[17499]: PolygonMode (offset 174) */ + /* _mesa_function_pool[18224]: PolygonMode (offset 174) */ "ii\0" "glPolygonMode\0" "\0" - /* _mesa_function_pool[17517]: CompressedTexSubImage1DARB (will be remapped) */ + /* _mesa_function_pool[18242]: CompressedTexSubImage1DARB (will be remapped) */ "iiiiiip\0" "glCompressedTexSubImage1D\0" "glCompressedTexSubImage1DARB\0" "\0" - /* _mesa_function_pool[17581]: VertexAttribI1iEXT (will be remapped) */ + /* _mesa_function_pool[18306]: VertexAttribI1iEXT (will be remapped) */ "ii\0" "glVertexAttribI1iEXT\0" + "glVertexAttribI1i\0" "\0" - /* _mesa_function_pool[17606]: GetVertexAttribivNV (will be remapped) */ + /* _mesa_function_pool[18349]: GetVertexAttribivNV (will be remapped) */ "iip\0" "glGetVertexAttribivNV\0" "\0" - /* _mesa_function_pool[17633]: GetProgramStringARB (will be remapped) */ + /* _mesa_function_pool[18376]: GetProgramStringARB (will be remapped) */ "iip\0" "glGetProgramStringARB\0" "\0" - /* _mesa_function_pool[17660]: VertexAttribIPointerEXT (will be remapped) */ + /* _mesa_function_pool[18403]: VertexAttribIPointerEXT (will be remapped) */ "iiiip\0" "glVertexAttribIPointerEXT\0" + "glVertexAttribIPointer\0" "\0" - /* _mesa_function_pool[17693]: TexBumpParameterfvATI (will be remapped) */ + /* _mesa_function_pool[18459]: TexBumpParameterfvATI (will be remapped) */ "ip\0" "glTexBumpParameterfvATI\0" "\0" - /* _mesa_function_pool[17721]: CompileShaderARB (will be remapped) */ + /* _mesa_function_pool[18487]: CompileShaderARB (will be remapped) */ "i\0" "glCompileShader\0" "glCompileShaderARB\0" "\0" - /* _mesa_function_pool[17759]: DeleteShader (will be remapped) */ + /* _mesa_function_pool[18525]: DeleteShader (will be remapped) */ "i\0" "glDeleteShader\0" "\0" - /* _mesa_function_pool[17777]: DisableClientState (offset 309) */ + /* _mesa_function_pool[18543]: DisableClientState (offset 309) */ "i\0" "glDisableClientState\0" "\0" - /* _mesa_function_pool[17801]: TexGeni (offset 192) */ + /* _mesa_function_pool[18567]: TexGeni (offset 192) */ "iii\0" "glTexGeni\0" "\0" - /* _mesa_function_pool[17816]: TexGenf (offset 190) */ + /* _mesa_function_pool[18582]: TexGenf (offset 190) */ "iif\0" "glTexGenf\0" "\0" - /* _mesa_function_pool[17831]: Uniform3fARB (will be remapped) */ + /* _mesa_function_pool[18597]: Uniform3fARB (will be remapped) */ "ifff\0" "glUniform3f\0" "glUniform3fARB\0" "\0" - /* _mesa_function_pool[17864]: TexGend (offset 188) */ + /* _mesa_function_pool[18630]: TexGend (offset 188) */ "iid\0" "glTexGend\0" "\0" - /* _mesa_function_pool[17879]: ListParameterfvSGIX (dynamic) */ + /* _mesa_function_pool[18645]: ListParameterfvSGIX (dynamic) */ "iip\0" "glListParameterfvSGIX\0" "\0" - /* _mesa_function_pool[17906]: GetPolygonStipple (offset 274) */ + /* _mesa_function_pool[18672]: GetPolygonStipple (offset 274) */ "p\0" "glGetPolygonStipple\0" "\0" - /* _mesa_function_pool[17929]: Tangent3dvEXT (dynamic) */ + /* _mesa_function_pool[18695]: Tangent3dvEXT (dynamic) */ "p\0" "glTangent3dvEXT\0" "\0" - /* _mesa_function_pool[17948]: BindBufferOffsetEXT (will be remapped) */ + /* _mesa_function_pool[18714]: BindBufferOffsetEXT (will be remapped) */ "iiii\0" "glBindBufferOffsetEXT\0" "\0" - /* _mesa_function_pool[17976]: WindowPos3sMESA (will be remapped) */ + /* _mesa_function_pool[18742]: WindowPos3sMESA (will be remapped) */ "iii\0" "glWindowPos3s\0" "glWindowPos3sARB\0" "glWindowPos3sMESA\0" "\0" - /* _mesa_function_pool[18030]: VertexAttrib2svNV (will be remapped) */ + /* _mesa_function_pool[18796]: VertexAttrib2svNV (will be remapped) */ "ip\0" "glVertexAttrib2svNV\0" "\0" - /* _mesa_function_pool[18054]: DisableIndexedEXT (will be remapped) */ + /* _mesa_function_pool[18820]: DisableIndexedEXT (will be remapped) */ "ii\0" "glDisableIndexedEXT\0" + "glDisablei\0" "\0" - /* _mesa_function_pool[18078]: BindBufferBaseEXT (will be remapped) */ + /* _mesa_function_pool[18855]: BindBufferBaseEXT (will be remapped) */ "iii\0" "glBindBufferBaseEXT\0" "glBindBufferBase\0" "\0" - /* _mesa_function_pool[18120]: TexCoord2fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[18897]: TexCoord2fVertex3fvSUN (dynamic) */ "pp\0" "glTexCoord2fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[18149]: WindowPos4sMESA (will be remapped) */ + /* _mesa_function_pool[18926]: WindowPos4sMESA (will be remapped) */ "iiii\0" "glWindowPos4sMESA\0" "\0" - /* _mesa_function_pool[18173]: VertexAttrib4NuivARB (will be remapped) */ + /* _mesa_function_pool[18950]: VertexAttrib4NuivARB (will be remapped) */ "ip\0" "glVertexAttrib4Nuiv\0" "glVertexAttrib4NuivARB\0" "\0" - /* _mesa_function_pool[18220]: ClientActiveTextureARB (offset 375) */ + /* _mesa_function_pool[18997]: ClientActiveTextureARB (offset 375) */ "i\0" "glClientActiveTexture\0" "glClientActiveTextureARB\0" "\0" - /* _mesa_function_pool[18270]: PixelTexGenSGIX (will be remapped) */ + /* _mesa_function_pool[19047]: PixelTexGenSGIX (will be remapped) */ "i\0" "glPixelTexGenSGIX\0" "\0" - /* _mesa_function_pool[18291]: ReplacementCodeusvSUN (dynamic) */ + /* _mesa_function_pool[19068]: ReplacementCodeusvSUN (dynamic) */ "p\0" "glReplacementCodeusvSUN\0" "\0" - /* _mesa_function_pool[18318]: Uniform4fARB (will be remapped) */ + /* _mesa_function_pool[19095]: Uniform4fARB (will be remapped) */ "iffff\0" "glUniform4f\0" "glUniform4fARB\0" "\0" - /* _mesa_function_pool[18352]: Color4sv (offset 34) */ + /* _mesa_function_pool[19129]: Color4sv (offset 34) */ "p\0" "glColor4sv\0" "\0" - /* _mesa_function_pool[18366]: FlushMappedBufferRange (will be remapped) */ + /* _mesa_function_pool[19143]: FlushMappedBufferRange (will be remapped) */ "iii\0" "glFlushMappedBufferRange\0" "\0" - /* _mesa_function_pool[18396]: IsProgramNV (will be remapped) */ + /* _mesa_function_pool[19173]: IsProgramNV (will be remapped) */ "i\0" "glIsProgramARB\0" "glIsProgramNV\0" "\0" - /* _mesa_function_pool[18428]: FlushMappedBufferRangeAPPLE (will be remapped) */ + /* _mesa_function_pool[19205]: FlushMappedBufferRangeAPPLE (will be remapped) */ "iii\0" "glFlushMappedBufferRangeAPPLE\0" "\0" - /* _mesa_function_pool[18463]: PixelZoom (offset 246) */ + /* _mesa_function_pool[19240]: PixelZoom (offset 246) */ "ff\0" "glPixelZoom\0" "\0" - /* _mesa_function_pool[18479]: ReplacementCodePointerSUN (dynamic) */ + /* _mesa_function_pool[19256]: ReplacementCodePointerSUN (dynamic) */ "iip\0" "glReplacementCodePointerSUN\0" "\0" - /* _mesa_function_pool[18512]: ProgramEnvParameter4dARB (will be remapped) */ + /* _mesa_function_pool[19289]: ProgramEnvParameter4dARB (will be remapped) */ "iidddd\0" "glProgramEnvParameter4dARB\0" "glProgramParameter4dNV\0" "\0" - /* _mesa_function_pool[18570]: ColorTableParameterfv (offset 340) */ + /* _mesa_function_pool[19347]: ColorTableParameterfv (offset 340) */ "iip\0" "glColorTableParameterfv\0" "glColorTableParameterfvSGI\0" "\0" - /* _mesa_function_pool[18626]: FragmentLightModelfSGIX (dynamic) */ + /* _mesa_function_pool[19403]: FragmentLightModelfSGIX (dynamic) */ "if\0" "glFragmentLightModelfSGIX\0" "\0" - /* _mesa_function_pool[18656]: Binormal3bvEXT (dynamic) */ + /* _mesa_function_pool[19433]: Binormal3bvEXT (dynamic) */ "p\0" "glBinormal3bvEXT\0" "\0" - /* _mesa_function_pool[18676]: PixelMapuiv (offset 252) */ + /* _mesa_function_pool[19453]: PixelMapuiv (offset 252) */ "iip\0" "glPixelMapuiv\0" "\0" - /* _mesa_function_pool[18695]: Color3dv (offset 12) */ + /* _mesa_function_pool[19472]: Color3dv (offset 12) */ "p\0" "glColor3dv\0" "\0" - /* _mesa_function_pool[18709]: IsTexture (offset 330) */ + /* _mesa_function_pool[19486]: IsTexture (offset 330) */ "i\0" "glIsTexture\0" "glIsTextureEXT\0" "\0" - /* _mesa_function_pool[18739]: VertexWeightfvEXT (dynamic) */ + /* _mesa_function_pool[19516]: VertexWeightfvEXT (dynamic) */ "p\0" "glVertexWeightfvEXT\0" "\0" - /* _mesa_function_pool[18762]: VertexAttrib1dARB (will be remapped) */ + /* _mesa_function_pool[19539]: VertexAttrib1dARB (will be remapped) */ "id\0" "glVertexAttrib1d\0" "glVertexAttrib1dARB\0" "\0" - /* _mesa_function_pool[18803]: ImageTransformParameterivHP (dynamic) */ + /* _mesa_function_pool[19580]: ImageTransformParameterivHP (dynamic) */ "iip\0" "glImageTransformParameterivHP\0" "\0" - /* _mesa_function_pool[18838]: TexCoord4i (offset 122) */ + /* _mesa_function_pool[19615]: TexCoord4i (offset 122) */ "iiii\0" "glTexCoord4i\0" "\0" - /* _mesa_function_pool[18857]: DeleteQueriesARB (will be remapped) */ + /* _mesa_function_pool[19634]: DeleteQueriesARB (will be remapped) */ "ip\0" "glDeleteQueries\0" "glDeleteQueriesARB\0" "\0" - /* _mesa_function_pool[18896]: Color4ubVertex2fSUN (dynamic) */ + /* _mesa_function_pool[19673]: Color4ubVertex2fSUN (dynamic) */ "iiiiff\0" "glColor4ubVertex2fSUN\0" "\0" - /* _mesa_function_pool[18926]: FragmentColorMaterialSGIX (dynamic) */ + /* _mesa_function_pool[19703]: FragmentColorMaterialSGIX (dynamic) */ "ii\0" "glFragmentColorMaterialSGIX\0" "\0" - /* _mesa_function_pool[18958]: CurrentPaletteMatrixARB (dynamic) */ + /* _mesa_function_pool[19735]: CurrentPaletteMatrixARB (dynamic) */ "i\0" "glCurrentPaletteMatrixARB\0" "\0" - /* _mesa_function_pool[18987]: GetMapdv (offset 266) */ + /* _mesa_function_pool[19764]: GetMapdv (offset 266) */ "iip\0" "glGetMapdv\0" "\0" - /* _mesa_function_pool[19003]: ObjectPurgeableAPPLE (will be remapped) */ + /* _mesa_function_pool[19780]: ObjectPurgeableAPPLE (will be remapped) */ "iii\0" "glObjectPurgeableAPPLE\0" "\0" - /* _mesa_function_pool[19031]: SamplePatternSGIS (will be remapped) */ + /* _mesa_function_pool[19808]: GetStringi (will be remapped) */ + "ii\0" + "glGetStringi\0" + "\0" + /* _mesa_function_pool[19825]: SamplePatternSGIS (will be remapped) */ "i\0" "glSamplePatternSGIS\0" "glSamplePatternEXT\0" "\0" - /* _mesa_function_pool[19073]: PixelStoref (offset 249) */ + /* _mesa_function_pool[19867]: PixelStoref (offset 249) */ "if\0" "glPixelStoref\0" "\0" - /* _mesa_function_pool[19091]: IsQueryARB (will be remapped) */ + /* _mesa_function_pool[19885]: IsQueryARB (will be remapped) */ "i\0" "glIsQuery\0" "glIsQueryARB\0" "\0" - /* _mesa_function_pool[19117]: ReplacementCodeuiColor4ubVertex3fSUN (dynamic) */ + /* _mesa_function_pool[19911]: ReplacementCodeuiColor4ubVertex3fSUN (dynamic) */ "iiiiifff\0" "glReplacementCodeuiColor4ubVertex3fSUN\0" "\0" - /* _mesa_function_pool[19166]: PixelStorei (offset 250) */ + /* _mesa_function_pool[19960]: PixelStorei (offset 250) */ "ii\0" "glPixelStorei\0" "\0" - /* _mesa_function_pool[19184]: VertexAttrib4usvARB (will be remapped) */ + /* _mesa_function_pool[19978]: VertexAttrib4usvARB (will be remapped) */ "ip\0" "glVertexAttrib4usv\0" "glVertexAttrib4usvARB\0" "\0" - /* _mesa_function_pool[19229]: LinkProgramARB (will be remapped) */ + /* _mesa_function_pool[20023]: LinkProgramARB (will be remapped) */ "i\0" "glLinkProgram\0" "glLinkProgramARB\0" "\0" - /* _mesa_function_pool[19263]: VertexAttrib2fNV (will be remapped) */ + /* _mesa_function_pool[20057]: VertexAttrib2fNV (will be remapped) */ "iff\0" "glVertexAttrib2fNV\0" "\0" - /* _mesa_function_pool[19287]: ShaderSourceARB (will be remapped) */ + /* _mesa_function_pool[20081]: ShaderSourceARB (will be remapped) */ "iipp\0" "glShaderSource\0" "glShaderSourceARB\0" "\0" - /* _mesa_function_pool[19326]: FragmentMaterialiSGIX (dynamic) */ + /* _mesa_function_pool[20120]: FragmentMaterialiSGIX (dynamic) */ "iii\0" "glFragmentMaterialiSGIX\0" "\0" - /* _mesa_function_pool[19355]: EvalCoord2dv (offset 233) */ + /* _mesa_function_pool[20149]: EvalCoord2dv (offset 233) */ "p\0" "glEvalCoord2dv\0" "\0" - /* _mesa_function_pool[19373]: VertexAttrib3svARB (will be remapped) */ + /* _mesa_function_pool[20167]: VertexAttrib3svARB (will be remapped) */ "ip\0" "glVertexAttrib3sv\0" "glVertexAttrib3svARB\0" "\0" - /* _mesa_function_pool[19416]: ColorMaterial (offset 151) */ + /* _mesa_function_pool[20210]: ColorMaterial (offset 151) */ "ii\0" "glColorMaterial\0" "\0" - /* _mesa_function_pool[19436]: CompressedTexSubImage3DARB (will be remapped) */ + /* _mesa_function_pool[20230]: CompressedTexSubImage3DARB (will be remapped) */ "iiiiiiiiiip\0" "glCompressedTexSubImage3D\0" "glCompressedTexSubImage3DARB\0" "\0" - /* _mesa_function_pool[19504]: WindowPos2ivMESA (will be remapped) */ + /* _mesa_function_pool[20298]: WindowPos2ivMESA (will be remapped) */ "p\0" "glWindowPos2iv\0" "glWindowPos2ivARB\0" "glWindowPos2ivMESA\0" "\0" - /* _mesa_function_pool[19559]: IsFramebufferEXT (will be remapped) */ + /* _mesa_function_pool[20353]: IsFramebufferEXT (will be remapped) */ "i\0" "glIsFramebuffer\0" "glIsFramebufferEXT\0" "\0" - /* _mesa_function_pool[19597]: Uniform4ivARB (will be remapped) */ + /* _mesa_function_pool[20391]: Uniform4ivARB (will be remapped) */ "iip\0" "glUniform4iv\0" "glUniform4ivARB\0" "\0" - /* _mesa_function_pool[19631]: GetVertexAttribdvARB (will be remapped) */ + /* _mesa_function_pool[20425]: GetVertexAttribdvARB (will be remapped) */ "iip\0" "glGetVertexAttribdv\0" "glGetVertexAttribdvARB\0" "\0" - /* _mesa_function_pool[19679]: TexBumpParameterivATI (will be remapped) */ + /* _mesa_function_pool[20473]: TexBumpParameterivATI (will be remapped) */ "ip\0" "glTexBumpParameterivATI\0" "\0" - /* _mesa_function_pool[19707]: GetSeparableFilter (offset 359) */ + /* _mesa_function_pool[20501]: GetSeparableFilter (offset 359) */ "iiippp\0" "glGetSeparableFilter\0" "glGetSeparableFilterEXT\0" "\0" - /* _mesa_function_pool[19760]: Binormal3dEXT (dynamic) */ + /* _mesa_function_pool[20554]: Binormal3dEXT (dynamic) */ "ddd\0" "glBinormal3dEXT\0" "\0" - /* _mesa_function_pool[19781]: SpriteParameteriSGIX (dynamic) */ + /* _mesa_function_pool[20575]: SpriteParameteriSGIX (dynamic) */ "ii\0" "glSpriteParameteriSGIX\0" "\0" - /* _mesa_function_pool[19808]: RequestResidentProgramsNV (will be remapped) */ + /* _mesa_function_pool[20602]: RequestResidentProgramsNV (will be remapped) */ "ip\0" "glRequestResidentProgramsNV\0" "\0" - /* _mesa_function_pool[19840]: TagSampleBufferSGIX (dynamic) */ + /* _mesa_function_pool[20634]: TagSampleBufferSGIX (dynamic) */ "\0" "glTagSampleBufferSGIX\0" "\0" - /* _mesa_function_pool[19864]: TransformFeedbackVaryingsEXT (will be remapped) */ + /* _mesa_function_pool[20658]: TransformFeedbackVaryingsEXT (will be remapped) */ "iipi\0" "glTransformFeedbackVaryingsEXT\0" "glTransformFeedbackVaryings\0" "\0" - /* _mesa_function_pool[19929]: FeedbackBuffer (offset 194) */ + /* _mesa_function_pool[20723]: FeedbackBuffer (offset 194) */ "iip\0" "glFeedbackBuffer\0" "\0" - /* _mesa_function_pool[19951]: RasterPos2iv (offset 67) */ + /* _mesa_function_pool[20745]: RasterPos2iv (offset 67) */ "p\0" "glRasterPos2iv\0" "\0" - /* _mesa_function_pool[19969]: TexImage1D (offset 182) */ + /* _mesa_function_pool[20763]: TexImage1D (offset 182) */ "iiiiiiip\0" "glTexImage1D\0" "\0" - /* _mesa_function_pool[19992]: ListParameterivSGIX (dynamic) */ + /* _mesa_function_pool[20786]: ListParameterivSGIX (dynamic) */ "iip\0" "glListParameterivSGIX\0" "\0" - /* _mesa_function_pool[20019]: MultiDrawElementsEXT (will be remapped) */ + /* _mesa_function_pool[20813]: MultiDrawElementsEXT (will be remapped) */ "ipipi\0" "glMultiDrawElements\0" "glMultiDrawElementsEXT\0" "\0" - /* _mesa_function_pool[20069]: Color3s (offset 17) */ + /* _mesa_function_pool[20863]: Color3s (offset 17) */ "iii\0" "glColor3s\0" "\0" - /* _mesa_function_pool[20084]: Uniform1ivARB (will be remapped) */ + /* _mesa_function_pool[20878]: Uniform1ivARB (will be remapped) */ "iip\0" "glUniform1iv\0" "glUniform1ivARB\0" "\0" - /* _mesa_function_pool[20118]: WindowPos2sMESA (will be remapped) */ + /* _mesa_function_pool[20912]: WindowPos2sMESA (will be remapped) */ "ii\0" "glWindowPos2s\0" "glWindowPos2sARB\0" "glWindowPos2sMESA\0" "\0" - /* _mesa_function_pool[20171]: WeightusvARB (dynamic) */ + /* _mesa_function_pool[20965]: WeightusvARB (dynamic) */ "ip\0" "glWeightusvARB\0" "\0" - /* _mesa_function_pool[20190]: TexCoordPointer (offset 320) */ + /* _mesa_function_pool[20984]: TexCoordPointer (offset 320) */ "iiip\0" "glTexCoordPointer\0" "\0" - /* _mesa_function_pool[20214]: FogCoordPointerEXT (will be remapped) */ + /* _mesa_function_pool[21008]: FogCoordPointerEXT (will be remapped) */ "iip\0" "glFogCoordPointer\0" "glFogCoordPointerEXT\0" "\0" - /* _mesa_function_pool[20258]: IndexMaterialEXT (dynamic) */ + /* _mesa_function_pool[21052]: IndexMaterialEXT (dynamic) */ "ii\0" "glIndexMaterialEXT\0" "\0" - /* _mesa_function_pool[20281]: Color3i (offset 15) */ + /* _mesa_function_pool[21075]: Color3i (offset 15) */ "iii\0" "glColor3i\0" "\0" - /* _mesa_function_pool[20296]: FrontFace (offset 157) */ + /* _mesa_function_pool[21090]: FrontFace (offset 157) */ "i\0" "glFrontFace\0" "\0" - /* _mesa_function_pool[20311]: EvalCoord2d (offset 232) */ + /* _mesa_function_pool[21105]: EvalCoord2d (offset 232) */ "dd\0" "glEvalCoord2d\0" "\0" - /* _mesa_function_pool[20329]: SecondaryColor3ubvEXT (will be remapped) */ + /* _mesa_function_pool[21123]: SecondaryColor3ubvEXT (will be remapped) */ "p\0" "glSecondaryColor3ubv\0" "glSecondaryColor3ubvEXT\0" "\0" - /* _mesa_function_pool[20377]: EvalCoord2f (offset 234) */ + /* _mesa_function_pool[21171]: EvalCoord2f (offset 234) */ "ff\0" "glEvalCoord2f\0" "\0" - /* _mesa_function_pool[20395]: VertexAttrib4dvARB (will be remapped) */ + /* _mesa_function_pool[21189]: VertexAttrib4dvARB (will be remapped) */ "ip\0" "glVertexAttrib4dv\0" "glVertexAttrib4dvARB\0" "\0" - /* _mesa_function_pool[20438]: BindAttribLocationARB (will be remapped) */ + /* _mesa_function_pool[21232]: BindAttribLocationARB (will be remapped) */ "iip\0" "glBindAttribLocation\0" "glBindAttribLocationARB\0" "\0" - /* _mesa_function_pool[20488]: Color3b (offset 9) */ + /* _mesa_function_pool[21282]: Color3b (offset 9) */ "iii\0" "glColor3b\0" "\0" - /* _mesa_function_pool[20503]: MultiTexCoord2dARB (offset 384) */ + /* _mesa_function_pool[21297]: MultiTexCoord2dARB (offset 384) */ "idd\0" "glMultiTexCoord2d\0" "glMultiTexCoord2dARB\0" "\0" - /* _mesa_function_pool[20547]: ExecuteProgramNV (will be remapped) */ + /* _mesa_function_pool[21341]: ExecuteProgramNV (will be remapped) */ "iip\0" "glExecuteProgramNV\0" "\0" - /* _mesa_function_pool[20571]: Color3f (offset 13) */ + /* _mesa_function_pool[21365]: Color3f (offset 13) */ "fff\0" "glColor3f\0" "\0" - /* _mesa_function_pool[20586]: LightEnviSGIX (dynamic) */ + /* _mesa_function_pool[21380]: LightEnviSGIX (dynamic) */ "ii\0" "glLightEnviSGIX\0" "\0" - /* _mesa_function_pool[20606]: Color3d (offset 11) */ + /* _mesa_function_pool[21400]: Color3d (offset 11) */ "ddd\0" "glColor3d\0" "\0" - /* _mesa_function_pool[20621]: Normal3dv (offset 55) */ + /* _mesa_function_pool[21415]: Normal3dv (offset 55) */ "p\0" "glNormal3dv\0" "\0" - /* _mesa_function_pool[20636]: Lightf (offset 159) */ + /* _mesa_function_pool[21430]: Lightf (offset 159) */ "iif\0" "glLightf\0" "\0" - /* _mesa_function_pool[20650]: ReplacementCodeuiSUN (dynamic) */ + /* _mesa_function_pool[21444]: ReplacementCodeuiSUN (dynamic) */ "i\0" "glReplacementCodeuiSUN\0" "\0" - /* _mesa_function_pool[20676]: MatrixMode (offset 293) */ + /* _mesa_function_pool[21470]: MatrixMode (offset 293) */ "i\0" "glMatrixMode\0" "\0" - /* _mesa_function_pool[20692]: GetPixelMapusv (offset 273) */ + /* _mesa_function_pool[21486]: GetPixelMapusv (offset 273) */ "ip\0" "glGetPixelMapusv\0" "\0" - /* _mesa_function_pool[20713]: Lighti (offset 161) */ + /* _mesa_function_pool[21507]: Lighti (offset 161) */ "iii\0" "glLighti\0" "\0" - /* _mesa_function_pool[20727]: VertexAttribPointerNV (will be remapped) */ + /* _mesa_function_pool[21521]: VertexAttribPointerNV (will be remapped) */ "iiiip\0" "glVertexAttribPointerNV\0" "\0" - /* _mesa_function_pool[20758]: ProgramLocalParameters4fvEXT (will be remapped) */ - "iiip\0" - "glProgramLocalParameters4fvEXT\0" - "\0" - /* _mesa_function_pool[20795]: GetBooleanIndexedvEXT (will be remapped) */ + /* _mesa_function_pool[21552]: GetBooleanIndexedvEXT (will be remapped) */ "iip\0" "glGetBooleanIndexedvEXT\0" + "glGetBooleani_v\0" "\0" - /* _mesa_function_pool[20824]: GetFramebufferAttachmentParameterivEXT (will be remapped) */ + /* _mesa_function_pool[21597]: GetFramebufferAttachmentParameterivEXT (will be remapped) */ "iiip\0" "glGetFramebufferAttachmentParameteriv\0" "glGetFramebufferAttachmentParameterivEXT\0" "\0" - /* _mesa_function_pool[20909]: PixelTransformParameterfEXT (dynamic) */ + /* _mesa_function_pool[21682]: PixelTransformParameterfEXT (dynamic) */ "iif\0" "glPixelTransformParameterfEXT\0" "\0" - /* _mesa_function_pool[20944]: MultiTexCoord4dvARB (offset 401) */ + /* _mesa_function_pool[21717]: MultiTexCoord4dvARB (offset 401) */ "ip\0" "glMultiTexCoord4dv\0" "glMultiTexCoord4dvARB\0" "\0" - /* _mesa_function_pool[20989]: PixelTransformParameteriEXT (dynamic) */ + /* _mesa_function_pool[21762]: PixelTransformParameteriEXT (dynamic) */ "iii\0" "glPixelTransformParameteriEXT\0" "\0" - /* _mesa_function_pool[21024]: GetDoublev (offset 260) */ + /* _mesa_function_pool[21797]: GetDoublev (offset 260) */ "ip\0" "glGetDoublev\0" "\0" - /* _mesa_function_pool[21041]: MultMatrixd (offset 295) */ + /* _mesa_function_pool[21814]: MultMatrixd (offset 295) */ "p\0" "glMultMatrixd\0" "\0" - /* _mesa_function_pool[21058]: MultMatrixf (offset 294) */ + /* _mesa_function_pool[21831]: MultMatrixf (offset 294) */ "p\0" "glMultMatrixf\0" "\0" - /* _mesa_function_pool[21075]: VertexAttribI4bvEXT (will be remapped) */ + /* _mesa_function_pool[21848]: VertexAttribI4bvEXT (will be remapped) */ "ip\0" "glVertexAttribI4bvEXT\0" + "glVertexAttribI4bv\0" "\0" - /* _mesa_function_pool[21101]: TexCoord2fColor4ubVertex3fSUN (dynamic) */ + /* _mesa_function_pool[21893]: TexCoord2fColor4ubVertex3fSUN (dynamic) */ "ffiiiifff\0" "glTexCoord2fColor4ubVertex3fSUN\0" "\0" - /* _mesa_function_pool[21144]: Uniform1iARB (will be remapped) */ + /* _mesa_function_pool[21936]: Uniform1iARB (will be remapped) */ "ii\0" "glUniform1i\0" "glUniform1iARB\0" "\0" - /* _mesa_function_pool[21175]: VertexAttribPointerARB (will be remapped) */ + /* _mesa_function_pool[21967]: VertexAttribPointerARB (will be remapped) */ "iiiiip\0" "glVertexAttribPointer\0" "glVertexAttribPointerARB\0" "\0" - /* _mesa_function_pool[21230]: VertexAttrib3sNV (will be remapped) */ + /* _mesa_function_pool[22022]: VertexAttrib3sNV (will be remapped) */ "iiii\0" "glVertexAttrib3sNV\0" "\0" - /* _mesa_function_pool[21255]: SharpenTexFuncSGIS (dynamic) */ + /* _mesa_function_pool[22047]: SharpenTexFuncSGIS (dynamic) */ "iip\0" "glSharpenTexFuncSGIS\0" "\0" - /* _mesa_function_pool[21281]: MultiTexCoord4fvARB (offset 403) */ + /* _mesa_function_pool[22073]: MultiTexCoord4fvARB (offset 403) */ "ip\0" "glMultiTexCoord4fv\0" "glMultiTexCoord4fvARB\0" "\0" - /* _mesa_function_pool[21326]: Uniform2uiEXT (will be remapped) */ + /* _mesa_function_pool[22118]: Uniform2uiEXT (will be remapped) */ "iii\0" "glUniform2uiEXT\0" + "glUniform2ui\0" "\0" - /* _mesa_function_pool[21347]: UniformMatrix2x3fv (will be remapped) */ + /* _mesa_function_pool[22152]: UniformMatrix2x3fv (will be remapped) */ "iiip\0" "glUniformMatrix2x3fv\0" "\0" - /* _mesa_function_pool[21374]: TrackMatrixNV (will be remapped) */ + /* _mesa_function_pool[22179]: TrackMatrixNV (will be remapped) */ "iiii\0" "glTrackMatrixNV\0" "\0" - /* _mesa_function_pool[21396]: CombinerParameteriNV (will be remapped) */ + /* _mesa_function_pool[22201]: CombinerParameteriNV (will be remapped) */ "ii\0" "glCombinerParameteriNV\0" "\0" - /* _mesa_function_pool[21423]: DeleteAsyncMarkersSGIX (dynamic) */ + /* _mesa_function_pool[22228]: DeleteAsyncMarkersSGIX (dynamic) */ "ii\0" "glDeleteAsyncMarkersSGIX\0" "\0" - /* _mesa_function_pool[21452]: ReplacementCodeusSUN (dynamic) */ + /* _mesa_function_pool[22257]: ReplacementCodeusSUN (dynamic) */ "i\0" "glReplacementCodeusSUN\0" "\0" - /* _mesa_function_pool[21478]: IsAsyncMarkerSGIX (dynamic) */ + /* _mesa_function_pool[22283]: IsAsyncMarkerSGIX (dynamic) */ "i\0" "glIsAsyncMarkerSGIX\0" "\0" - /* _mesa_function_pool[21501]: FrameZoomSGIX (dynamic) */ + /* _mesa_function_pool[22306]: FrameZoomSGIX (dynamic) */ "i\0" "glFrameZoomSGIX\0" "\0" - /* _mesa_function_pool[21520]: Normal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[22325]: Normal3fVertex3fvSUN (dynamic) */ "pp\0" "glNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[21547]: RasterPos4sv (offset 85) */ + /* _mesa_function_pool[22352]: RasterPos4sv (offset 85) */ "p\0" "glRasterPos4sv\0" "\0" - /* _mesa_function_pool[21565]: VertexAttrib4NsvARB (will be remapped) */ + /* _mesa_function_pool[22370]: VertexAttrib4NsvARB (will be remapped) */ "ip\0" "glVertexAttrib4Nsv\0" "glVertexAttrib4NsvARB\0" "\0" - /* _mesa_function_pool[21610]: VertexAttrib3fvARB (will be remapped) */ + /* _mesa_function_pool[22415]: VertexAttrib3fvARB (will be remapped) */ "ip\0" "glVertexAttrib3fv\0" "glVertexAttrib3fvARB\0" "\0" - /* _mesa_function_pool[21653]: ClearColor (offset 206) */ + /* _mesa_function_pool[22458]: ClearColor (offset 206) */ "ffff\0" "glClearColor\0" "\0" - /* _mesa_function_pool[21672]: GetSynciv (will be remapped) */ + /* _mesa_function_pool[22477]: GetSynciv (will be remapped) */ "iiipp\0" "glGetSynciv\0" "\0" - /* _mesa_function_pool[21691]: ClearColorIiEXT (will be remapped) */ + /* _mesa_function_pool[22496]: ClearColorIiEXT (will be remapped) */ "iiii\0" "glClearColorIiEXT\0" "\0" - /* _mesa_function_pool[21715]: DeleteFramebuffersEXT (will be remapped) */ + /* _mesa_function_pool[22520]: DeleteFramebuffersEXT (will be remapped) */ "ip\0" "glDeleteFramebuffers\0" "glDeleteFramebuffersEXT\0" "\0" - /* _mesa_function_pool[21764]: GlobalAlphaFactorsSUN (dynamic) */ + /* _mesa_function_pool[22569]: GlobalAlphaFactorsSUN (dynamic) */ "i\0" "glGlobalAlphaFactorsSUN\0" "\0" - /* _mesa_function_pool[21791]: IsEnabledIndexedEXT (will be remapped) */ + /* _mesa_function_pool[22596]: IsEnabledIndexedEXT (will be remapped) */ "ii\0" "glIsEnabledIndexedEXT\0" + "glIsEnabledi\0" "\0" - /* _mesa_function_pool[21817]: TexEnviv (offset 187) */ + /* _mesa_function_pool[22635]: TexEnviv (offset 187) */ "iip\0" "glTexEnviv\0" "\0" - /* _mesa_function_pool[21833]: TexSubImage3D (offset 372) */ + /* _mesa_function_pool[22651]: TexSubImage3D (offset 372) */ "iiiiiiiiiip\0" "glTexSubImage3D\0" "glTexSubImage3DEXT\0" "\0" - /* _mesa_function_pool[21881]: Tangent3fEXT (dynamic) */ + /* _mesa_function_pool[22699]: Tangent3fEXT (dynamic) */ "fff\0" "glTangent3fEXT\0" "\0" - /* _mesa_function_pool[21901]: SecondaryColor3uivEXT (will be remapped) */ + /* _mesa_function_pool[22719]: SecondaryColor3uivEXT (will be remapped) */ "p\0" "glSecondaryColor3uiv\0" "glSecondaryColor3uivEXT\0" "\0" - /* _mesa_function_pool[21949]: MatrixIndexubvARB (dynamic) */ + /* _mesa_function_pool[22767]: MatrixIndexubvARB (dynamic) */ "ip\0" "glMatrixIndexubvARB\0" "\0" - /* _mesa_function_pool[21973]: Color4fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[22791]: Color4fNormal3fVertex3fSUN (dynamic) */ "ffffffffff\0" "glColor4fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[22014]: PixelTexGenParameterfSGIS (will be remapped) */ + /* _mesa_function_pool[22832]: PixelTexGenParameterfSGIS (will be remapped) */ "if\0" "glPixelTexGenParameterfSGIS\0" "\0" - /* _mesa_function_pool[22046]: CreateShader (will be remapped) */ + /* _mesa_function_pool[22864]: CreateShader (will be remapped) */ "i\0" "glCreateShader\0" "\0" - /* _mesa_function_pool[22064]: GetColorTableParameterfv (offset 344) */ + /* _mesa_function_pool[22882]: GetColorTableParameterfv (offset 344) */ "iip\0" "glGetColorTableParameterfv\0" "glGetColorTableParameterfvSGI\0" "glGetColorTableParameterfvEXT\0" "\0" - /* _mesa_function_pool[22156]: FragmentLightModelfvSGIX (dynamic) */ + /* _mesa_function_pool[22974]: FragmentLightModelfvSGIX (dynamic) */ "ip\0" "glFragmentLightModelfvSGIX\0" "\0" - /* _mesa_function_pool[22187]: Bitmap (offset 8) */ + /* _mesa_function_pool[23005]: Bitmap (offset 8) */ "iiffffp\0" "glBitmap\0" "\0" - /* _mesa_function_pool[22205]: MultiTexCoord3fARB (offset 394) */ + /* _mesa_function_pool[23023]: MultiTexCoord3fARB (offset 394) */ "ifff\0" "glMultiTexCoord3f\0" "glMultiTexCoord3fARB\0" "\0" - /* _mesa_function_pool[22250]: GetTexLevelParameterfv (offset 284) */ + /* _mesa_function_pool[23068]: GetTexLevelParameterfv (offset 284) */ "iiip\0" "glGetTexLevelParameterfv\0" "\0" - /* _mesa_function_pool[22281]: GetPixelTexGenParameterfvSGIS (will be remapped) */ + /* _mesa_function_pool[23099]: GetPixelTexGenParameterfvSGIS (will be remapped) */ "ip\0" "glGetPixelTexGenParameterfvSGIS\0" "\0" - /* _mesa_function_pool[22317]: GenFramebuffersEXT (will be remapped) */ + /* _mesa_function_pool[23135]: GenFramebuffersEXT (will be remapped) */ "ip\0" "glGenFramebuffers\0" "glGenFramebuffersEXT\0" "\0" - /* _mesa_function_pool[22360]: GetProgramParameterdvNV (will be remapped) */ + /* _mesa_function_pool[23178]: VertexAttribDivisor (will be remapped) */ + "ii\0" + "glVertexAttribDivisor\0" + "\0" + /* _mesa_function_pool[23204]: GetProgramParameterdvNV (will be remapped) */ "iiip\0" "glGetProgramParameterdvNV\0" "\0" - /* _mesa_function_pool[22392]: Vertex2sv (offset 133) */ + /* _mesa_function_pool[23236]: Vertex2sv (offset 133) */ "p\0" "glVertex2sv\0" "\0" - /* _mesa_function_pool[22407]: GetIntegerv (offset 263) */ + /* _mesa_function_pool[23251]: GetIntegerv (offset 263) */ "ip\0" "glGetIntegerv\0" "\0" - /* _mesa_function_pool[22425]: IsVertexArrayAPPLE (will be remapped) */ + /* _mesa_function_pool[23269]: IsVertexArrayAPPLE (will be remapped) */ "i\0" "glIsVertexArray\0" "glIsVertexArrayAPPLE\0" "\0" - /* _mesa_function_pool[22465]: FragmentLightfvSGIX (dynamic) */ + /* _mesa_function_pool[23309]: FragmentLightfvSGIX (dynamic) */ "iip\0" "glFragmentLightfvSGIX\0" "\0" - /* _mesa_function_pool[22492]: DetachShader (will be remapped) */ + /* _mesa_function_pool[23336]: DetachShader (will be remapped) */ "ii\0" "glDetachShader\0" "\0" - /* _mesa_function_pool[22511]: VertexAttrib4NubARB (will be remapped) */ + /* _mesa_function_pool[23355]: VertexAttrib4NubARB (will be remapped) */ "iiiii\0" "glVertexAttrib4Nub\0" "glVertexAttrib4NubARB\0" "\0" - /* _mesa_function_pool[22559]: GetProgramEnvParameterfvARB (will be remapped) */ + /* _mesa_function_pool[23403]: GetProgramEnvParameterfvARB (will be remapped) */ "iip\0" "glGetProgramEnvParameterfvARB\0" "\0" - /* _mesa_function_pool[22594]: GetTrackMatrixivNV (will be remapped) */ + /* _mesa_function_pool[23438]: GetTrackMatrixivNV (will be remapped) */ "iiip\0" "glGetTrackMatrixivNV\0" "\0" - /* _mesa_function_pool[22621]: VertexAttrib3svNV (will be remapped) */ + /* _mesa_function_pool[23465]: VertexAttrib3svNV (will be remapped) */ "ip\0" "glVertexAttrib3svNV\0" "\0" - /* _mesa_function_pool[22645]: Uniform4fvARB (will be remapped) */ + /* _mesa_function_pool[23489]: Uniform4fvARB (will be remapped) */ "iip\0" "glUniform4fv\0" "glUniform4fvARB\0" "\0" - /* _mesa_function_pool[22679]: MultTransposeMatrixfARB (will be remapped) */ + /* _mesa_function_pool[23523]: MultTransposeMatrixfARB (will be remapped) */ "p\0" "glMultTransposeMatrixf\0" "glMultTransposeMatrixfARB\0" "\0" - /* _mesa_function_pool[22731]: GetTexEnviv (offset 277) */ + /* _mesa_function_pool[23575]: GetTexEnviv (offset 277) */ "iip\0" "glGetTexEnviv\0" "\0" - /* _mesa_function_pool[22750]: ColorFragmentOp1ATI (will be remapped) */ + /* _mesa_function_pool[23594]: ColorFragmentOp1ATI (will be remapped) */ "iiiiiii\0" "glColorFragmentOp1ATI\0" "\0" - /* _mesa_function_pool[22781]: GetUniformfvARB (will be remapped) */ + /* _mesa_function_pool[23625]: GetUniformfvARB (will be remapped) */ "iip\0" "glGetUniformfv\0" "glGetUniformfvARB\0" "\0" - /* _mesa_function_pool[22819]: EGLImageTargetRenderbufferStorageOES (will be remapped) */ + /* _mesa_function_pool[23663]: EGLImageTargetRenderbufferStorageOES (will be remapped) */ "ip\0" "glEGLImageTargetRenderbufferStorageOES\0" "\0" - /* _mesa_function_pool[22862]: VertexAttribI2ivEXT (will be remapped) */ + /* _mesa_function_pool[23706]: VertexAttribI2ivEXT (will be remapped) */ "ip\0" "glVertexAttribI2ivEXT\0" + "glVertexAttribI2iv\0" "\0" - /* _mesa_function_pool[22888]: PopClientAttrib (offset 334) */ + /* _mesa_function_pool[23751]: PopClientAttrib (offset 334) */ "\0" "glPopClientAttrib\0" "\0" - /* _mesa_function_pool[22908]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[23771]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */ "iffffffffffff\0" "glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[22979]: DetachObjectARB (will be remapped) */ + /* _mesa_function_pool[23842]: DetachObjectARB (will be remapped) */ "ii\0" "glDetachObjectARB\0" "\0" - /* _mesa_function_pool[23001]: VertexBlendARB (dynamic) */ + /* _mesa_function_pool[23864]: VertexBlendARB (dynamic) */ "i\0" "glVertexBlendARB\0" "\0" - /* _mesa_function_pool[23021]: WindowPos3iMESA (will be remapped) */ + /* _mesa_function_pool[23884]: WindowPos3iMESA (will be remapped) */ "iii\0" "glWindowPos3i\0" "glWindowPos3iARB\0" "glWindowPos3iMESA\0" "\0" - /* _mesa_function_pool[23075]: SeparableFilter2D (offset 360) */ + /* _mesa_function_pool[23938]: SeparableFilter2D (offset 360) */ "iiiiiipp\0" "glSeparableFilter2D\0" "glSeparableFilter2DEXT\0" "\0" - /* _mesa_function_pool[23128]: ProgramParameteriARB (will be remapped) */ + /* _mesa_function_pool[23991]: ProgramParameteriARB (will be remapped) */ "iii\0" "glProgramParameteriARB\0" "\0" - /* _mesa_function_pool[23156]: Map1d (offset 220) */ + /* _mesa_function_pool[24019]: Map1d (offset 220) */ "iddiip\0" "glMap1d\0" "\0" - /* _mesa_function_pool[23172]: Map1f (offset 221) */ + /* _mesa_function_pool[24035]: Map1f (offset 221) */ "iffiip\0" "glMap1f\0" "\0" - /* _mesa_function_pool[23188]: CompressedTexImage2DARB (will be remapped) */ + /* _mesa_function_pool[24051]: CompressedTexImage2DARB (will be remapped) */ "iiiiiiip\0" "glCompressedTexImage2D\0" "glCompressedTexImage2DARB\0" "\0" - /* _mesa_function_pool[23247]: ArrayElement (offset 306) */ + /* _mesa_function_pool[24110]: ArrayElement (offset 306) */ "i\0" "glArrayElement\0" "glArrayElementEXT\0" "\0" - /* _mesa_function_pool[23283]: TexImage2D (offset 183) */ + /* _mesa_function_pool[24146]: TexImage2D (offset 183) */ "iiiiiiiip\0" "glTexImage2D\0" "\0" - /* _mesa_function_pool[23307]: DepthBoundsEXT (will be remapped) */ + /* _mesa_function_pool[24170]: DepthBoundsEXT (will be remapped) */ "dd\0" "glDepthBoundsEXT\0" "\0" - /* _mesa_function_pool[23328]: ProgramParameters4fvNV (will be remapped) */ + /* _mesa_function_pool[24191]: ProgramParameters4fvNV (will be remapped) */ "iiip\0" "glProgramParameters4fvNV\0" "\0" - /* _mesa_function_pool[23359]: DeformationMap3fSGIX (dynamic) */ + /* _mesa_function_pool[24222]: DeformationMap3fSGIX (dynamic) */ "iffiiffiiffiip\0" "glDeformationMap3fSGIX\0" "\0" - /* _mesa_function_pool[23398]: GetProgramivNV (will be remapped) */ + /* _mesa_function_pool[24261]: GetProgramivNV (will be remapped) */ "iip\0" "glGetProgramivNV\0" "\0" - /* _mesa_function_pool[23420]: GetFragDataLocationEXT (will be remapped) */ + /* _mesa_function_pool[24283]: GetFragDataLocationEXT (will be remapped) */ "ip\0" "glGetFragDataLocationEXT\0" + "glGetFragDataLocation\0" "\0" - /* _mesa_function_pool[23449]: GetMinmaxParameteriv (offset 366) */ + /* _mesa_function_pool[24334]: GetMinmaxParameteriv (offset 366) */ "iip\0" "glGetMinmaxParameteriv\0" "glGetMinmaxParameterivEXT\0" "\0" - /* _mesa_function_pool[23503]: PixelTransferf (offset 247) */ + /* _mesa_function_pool[24388]: PixelTransferf (offset 247) */ "if\0" "glPixelTransferf\0" "\0" - /* _mesa_function_pool[23524]: CopyTexImage1D (offset 323) */ + /* _mesa_function_pool[24409]: CopyTexImage1D (offset 323) */ "iiiiiii\0" "glCopyTexImage1D\0" "glCopyTexImage1DEXT\0" "\0" - /* _mesa_function_pool[23570]: PushMatrix (offset 298) */ + /* _mesa_function_pool[24455]: PushMatrix (offset 298) */ "\0" "glPushMatrix\0" "\0" - /* _mesa_function_pool[23585]: Fogiv (offset 156) */ + /* _mesa_function_pool[24470]: Fogiv (offset 156) */ "ip\0" "glFogiv\0" "\0" - /* _mesa_function_pool[23597]: TexCoord1dv (offset 95) */ + /* _mesa_function_pool[24482]: TexCoord1dv (offset 95) */ "p\0" "glTexCoord1dv\0" "\0" - /* _mesa_function_pool[23614]: AlphaFragmentOp3ATI (will be remapped) */ + /* _mesa_function_pool[24499]: AlphaFragmentOp3ATI (will be remapped) */ "iiiiiiiiiiii\0" "glAlphaFragmentOp3ATI\0" "\0" - /* _mesa_function_pool[23650]: PixelTransferi (offset 248) */ + /* _mesa_function_pool[24535]: PixelTransferi (offset 248) */ "ii\0" "glPixelTransferi\0" "\0" - /* _mesa_function_pool[23671]: GetVertexAttribdvNV (will be remapped) */ + /* _mesa_function_pool[24556]: GetVertexAttribdvNV (will be remapped) */ "iip\0" "glGetVertexAttribdvNV\0" "\0" - /* _mesa_function_pool[23698]: VertexAttrib3fvNV (will be remapped) */ + /* _mesa_function_pool[24583]: VertexAttrib3fvNV (will be remapped) */ "ip\0" "glVertexAttrib3fvNV\0" "\0" - /* _mesa_function_pool[23722]: Rotatef (offset 300) */ + /* _mesa_function_pool[24607]: Rotatef (offset 300) */ "ffff\0" "glRotatef\0" "\0" - /* _mesa_function_pool[23738]: GetFinalCombinerInputParameterivNV (will be remapped) */ + /* _mesa_function_pool[24623]: GetFinalCombinerInputParameterivNV (will be remapped) */ "iip\0" "glGetFinalCombinerInputParameterivNV\0" "\0" - /* _mesa_function_pool[23780]: Vertex3i (offset 138) */ + /* _mesa_function_pool[24665]: Vertex3i (offset 138) */ "iii\0" "glVertex3i\0" "\0" - /* _mesa_function_pool[23796]: Vertex3f (offset 136) */ + /* _mesa_function_pool[24681]: Vertex3f (offset 136) */ "fff\0" "glVertex3f\0" "\0" - /* _mesa_function_pool[23812]: Clear (offset 203) */ + /* _mesa_function_pool[24697]: Clear (offset 203) */ "i\0" "glClear\0" "\0" - /* _mesa_function_pool[23823]: Vertex3d (offset 134) */ + /* _mesa_function_pool[24708]: Vertex3d (offset 134) */ "ddd\0" "glVertex3d\0" "\0" - /* _mesa_function_pool[23839]: GetMapParameterivNV (dynamic) */ + /* _mesa_function_pool[24724]: GetMapParameterivNV (dynamic) */ "iip\0" "glGetMapParameterivNV\0" "\0" - /* _mesa_function_pool[23866]: Uniform4iARB (will be remapped) */ + /* _mesa_function_pool[24751]: Uniform4iARB (will be remapped) */ "iiiii\0" "glUniform4i\0" "glUniform4iARB\0" "\0" - /* _mesa_function_pool[23900]: ReadBuffer (offset 254) */ + /* _mesa_function_pool[24785]: ReadBuffer (offset 254) */ "i\0" "glReadBuffer\0" "\0" - /* _mesa_function_pool[23916]: ConvolutionParameteri (offset 352) */ + /* _mesa_function_pool[24801]: ConvolutionParameteri (offset 352) */ "iii\0" "glConvolutionParameteri\0" "glConvolutionParameteriEXT\0" "\0" - /* _mesa_function_pool[23972]: Ortho (offset 296) */ + /* _mesa_function_pool[24857]: Ortho (offset 296) */ "dddddd\0" "glOrtho\0" "\0" - /* _mesa_function_pool[23988]: Binormal3sEXT (dynamic) */ + /* _mesa_function_pool[24873]: Binormal3sEXT (dynamic) */ "iii\0" "glBinormal3sEXT\0" "\0" - /* _mesa_function_pool[24009]: ListBase (offset 6) */ + /* _mesa_function_pool[24894]: ListBase (offset 6) */ "i\0" "glListBase\0" "\0" - /* _mesa_function_pool[24023]: Vertex3s (offset 140) */ + /* _mesa_function_pool[24908]: Vertex3s (offset 140) */ "iii\0" "glVertex3s\0" "\0" - /* _mesa_function_pool[24039]: ConvolutionParameterf (offset 350) */ + /* _mesa_function_pool[24924]: ConvolutionParameterf (offset 350) */ "iif\0" "glConvolutionParameterf\0" "glConvolutionParameterfEXT\0" "\0" - /* _mesa_function_pool[24095]: GetColorTableParameteriv (offset 345) */ + /* _mesa_function_pool[24980]: GetColorTableParameteriv (offset 345) */ "iip\0" "glGetColorTableParameteriv\0" "glGetColorTableParameterivSGI\0" "glGetColorTableParameterivEXT\0" "\0" - /* _mesa_function_pool[24187]: ProgramEnvParameter4dvARB (will be remapped) */ + /* _mesa_function_pool[25072]: ProgramEnvParameter4dvARB (will be remapped) */ "iip\0" "glProgramEnvParameter4dvARB\0" "glProgramParameter4dvNV\0" "\0" - /* _mesa_function_pool[24244]: ShadeModel (offset 177) */ + /* _mesa_function_pool[25129]: ShadeModel (offset 177) */ "i\0" "glShadeModel\0" "\0" - /* _mesa_function_pool[24260]: VertexAttribs2fvNV (will be remapped) */ + /* _mesa_function_pool[25145]: VertexAttribs2fvNV (will be remapped) */ "iip\0" "glVertexAttribs2fvNV\0" "\0" - /* _mesa_function_pool[24286]: Rectiv (offset 91) */ + /* _mesa_function_pool[25171]: Rectiv (offset 91) */ "pp\0" "glRectiv\0" "\0" - /* _mesa_function_pool[24299]: UseProgramObjectARB (will be remapped) */ + /* _mesa_function_pool[25184]: UseProgramObjectARB (will be remapped) */ "i\0" "glUseProgram\0" "glUseProgramObjectARB\0" "\0" - /* _mesa_function_pool[24337]: GetMapParameterfvNV (dynamic) */ + /* _mesa_function_pool[25222]: GetMapParameterfvNV (dynamic) */ "iip\0" "glGetMapParameterfvNV\0" "\0" - /* _mesa_function_pool[24364]: EndConditionalRenderNV (will be remapped) */ + /* _mesa_function_pool[25249]: EndConditionalRenderNV (will be remapped) */ "\0" "glEndConditionalRenderNV\0" + "glEndConditionalRender\0" "\0" - /* _mesa_function_pool[24391]: PassTexCoordATI (will be remapped) */ + /* _mesa_function_pool[25299]: PassTexCoordATI (will be remapped) */ "iii\0" "glPassTexCoordATI\0" "\0" - /* _mesa_function_pool[24414]: DeleteProgram (will be remapped) */ + /* _mesa_function_pool[25322]: DeleteProgram (will be remapped) */ "i\0" "glDeleteProgram\0" "\0" - /* _mesa_function_pool[24433]: Tangent3ivEXT (dynamic) */ + /* _mesa_function_pool[25341]: Tangent3ivEXT (dynamic) */ "p\0" "glTangent3ivEXT\0" "\0" - /* _mesa_function_pool[24452]: Tangent3dEXT (dynamic) */ + /* _mesa_function_pool[25360]: Tangent3dEXT (dynamic) */ "ddd\0" "glTangent3dEXT\0" "\0" - /* _mesa_function_pool[24472]: SecondaryColor3dvEXT (will be remapped) */ + /* _mesa_function_pool[25380]: SecondaryColor3dvEXT (will be remapped) */ "p\0" "glSecondaryColor3dv\0" "glSecondaryColor3dvEXT\0" "\0" - /* _mesa_function_pool[24518]: Vertex2fv (offset 129) */ + /* _mesa_function_pool[25426]: Vertex2fv (offset 129) */ "p\0" "glVertex2fv\0" "\0" - /* _mesa_function_pool[24533]: MultiDrawArraysEXT (will be remapped) */ + /* _mesa_function_pool[25441]: MultiDrawArraysEXT (will be remapped) */ "ippi\0" "glMultiDrawArrays\0" "glMultiDrawArraysEXT\0" "\0" - /* _mesa_function_pool[24578]: BindRenderbufferEXT (will be remapped) */ + /* _mesa_function_pool[25486]: BindRenderbufferEXT (will be remapped) */ "ii\0" "glBindRenderbuffer\0" "glBindRenderbufferEXT\0" "\0" - /* _mesa_function_pool[24623]: MultiTexCoord4dARB (offset 400) */ + /* _mesa_function_pool[25531]: MultiTexCoord4dARB (offset 400) */ "idddd\0" "glMultiTexCoord4d\0" "glMultiTexCoord4dARB\0" "\0" - /* _mesa_function_pool[24669]: FramebufferTextureFaceARB (will be remapped) */ + /* _mesa_function_pool[25577]: FramebufferTextureFaceARB (will be remapped) */ "iiiii\0" "glFramebufferTextureFaceARB\0" "\0" - /* _mesa_function_pool[24704]: Vertex3sv (offset 141) */ + /* _mesa_function_pool[25612]: Vertex3sv (offset 141) */ "p\0" "glVertex3sv\0" "\0" - /* _mesa_function_pool[24719]: SecondaryColor3usEXT (will be remapped) */ + /* _mesa_function_pool[25627]: SecondaryColor3usEXT (will be remapped) */ "iii\0" "glSecondaryColor3us\0" "glSecondaryColor3usEXT\0" "\0" - /* _mesa_function_pool[24767]: ProgramLocalParameter4fvARB (will be remapped) */ + /* _mesa_function_pool[25675]: ProgramLocalParameter4fvARB (will be remapped) */ "iip\0" "glProgramLocalParameter4fvARB\0" "\0" - /* _mesa_function_pool[24802]: DeleteProgramsNV (will be remapped) */ + /* _mesa_function_pool[25710]: DeleteProgramsNV (will be remapped) */ "ip\0" "glDeleteProgramsARB\0" "glDeleteProgramsNV\0" "\0" - /* _mesa_function_pool[24845]: EvalMesh1 (offset 236) */ + /* _mesa_function_pool[25753]: EvalMesh1 (offset 236) */ "iii\0" "glEvalMesh1\0" "\0" - /* _mesa_function_pool[24862]: PauseTransformFeedback (will be remapped) */ + /* _mesa_function_pool[25770]: PauseTransformFeedback (will be remapped) */ "\0" "glPauseTransformFeedback\0" "\0" - /* _mesa_function_pool[24889]: MultiTexCoord1sARB (offset 382) */ + /* _mesa_function_pool[25797]: MultiTexCoord1sARB (offset 382) */ "ii\0" "glMultiTexCoord1s\0" "glMultiTexCoord1sARB\0" "\0" - /* _mesa_function_pool[24932]: ReplacementCodeuiColor3fVertex3fSUN (dynamic) */ + /* _mesa_function_pool[25840]: ReplacementCodeuiColor3fVertex3fSUN (dynamic) */ "iffffff\0" "glReplacementCodeuiColor3fVertex3fSUN\0" "\0" - /* _mesa_function_pool[24979]: GetVertexAttribPointervNV (will be remapped) */ + /* _mesa_function_pool[25887]: GetVertexAttribPointervNV (will be remapped) */ "iip\0" "glGetVertexAttribPointerv\0" "glGetVertexAttribPointervARB\0" "glGetVertexAttribPointervNV\0" "\0" - /* _mesa_function_pool[25067]: VertexAttribs1fvNV (will be remapped) */ + /* _mesa_function_pool[25975]: VertexAttribs1fvNV (will be remapped) */ "iip\0" "glVertexAttribs1fvNV\0" "\0" - /* _mesa_function_pool[25093]: MultiTexCoord1dvARB (offset 377) */ + /* _mesa_function_pool[26001]: MultiTexCoord1dvARB (offset 377) */ "ip\0" "glMultiTexCoord1dv\0" "glMultiTexCoord1dvARB\0" "\0" - /* _mesa_function_pool[25138]: Uniform2iARB (will be remapped) */ + /* _mesa_function_pool[26046]: Uniform2iARB (will be remapped) */ "iii\0" "glUniform2i\0" "glUniform2iARB\0" "\0" - /* _mesa_function_pool[25170]: Vertex2iv (offset 131) */ + /* _mesa_function_pool[26078]: Vertex2iv (offset 131) */ "p\0" "glVertex2iv\0" "\0" - /* _mesa_function_pool[25185]: GetProgramStringNV (will be remapped) */ + /* _mesa_function_pool[26093]: GetProgramStringNV (will be remapped) */ "iip\0" "glGetProgramStringNV\0" "\0" - /* _mesa_function_pool[25211]: ColorPointerEXT (will be remapped) */ + /* _mesa_function_pool[26119]: ColorPointerEXT (will be remapped) */ "iiiip\0" "glColorPointerEXT\0" "\0" - /* _mesa_function_pool[25236]: LineWidth (offset 168) */ + /* _mesa_function_pool[26144]: LineWidth (offset 168) */ "f\0" "glLineWidth\0" "\0" - /* _mesa_function_pool[25251]: MapBufferARB (will be remapped) */ + /* _mesa_function_pool[26159]: MapBufferARB (will be remapped) */ "ii\0" "glMapBuffer\0" "glMapBufferARB\0" "\0" - /* _mesa_function_pool[25282]: MultiDrawElementsBaseVertex (will be remapped) */ + /* _mesa_function_pool[26190]: MultiDrawElementsBaseVertex (will be remapped) */ "ipipip\0" "glMultiDrawElementsBaseVertex\0" "\0" - /* _mesa_function_pool[25320]: TexParameterIuivEXT (will be remapped) */ + /* _mesa_function_pool[26228]: TexParameterIuivEXT (will be remapped) */ "iip\0" "glTexParameterIuivEXT\0" + "glTexParameterIuiv\0" "\0" - /* _mesa_function_pool[25347]: Binormal3svEXT (dynamic) */ + /* _mesa_function_pool[26274]: Binormal3svEXT (dynamic) */ "p\0" "glBinormal3svEXT\0" "\0" - /* _mesa_function_pool[25367]: ApplyTextureEXT (dynamic) */ + /* _mesa_function_pool[26294]: ApplyTextureEXT (dynamic) */ "i\0" "glApplyTextureEXT\0" "\0" - /* _mesa_function_pool[25388]: TexGendv (offset 189) */ + /* _mesa_function_pool[26315]: GetBufferParameteri64v (will be remapped) */ + "iip\0" + "glGetBufferParameteri64v\0" + "\0" + /* _mesa_function_pool[26345]: TexGendv (offset 189) */ "iip\0" "glTexGendv\0" "\0" - /* _mesa_function_pool[25404]: VertexAttribI3iEXT (will be remapped) */ + /* _mesa_function_pool[26361]: VertexAttribI3iEXT (will be remapped) */ "iiii\0" "glVertexAttribI3iEXT\0" + "glVertexAttribI3i\0" "\0" - /* _mesa_function_pool[25431]: EnableIndexedEXT (will be remapped) */ + /* _mesa_function_pool[26406]: EnableIndexedEXT (will be remapped) */ "ii\0" "glEnableIndexedEXT\0" + "glEnablei\0" "\0" - /* _mesa_function_pool[25454]: TextureMaterialEXT (dynamic) */ + /* _mesa_function_pool[26439]: TextureMaterialEXT (dynamic) */ "ii\0" "glTextureMaterialEXT\0" "\0" - /* _mesa_function_pool[25479]: TextureLightEXT (dynamic) */ + /* _mesa_function_pool[26464]: TextureLightEXT (dynamic) */ "i\0" "glTextureLightEXT\0" "\0" - /* _mesa_function_pool[25500]: ResetMinmax (offset 370) */ + /* _mesa_function_pool[26485]: ResetMinmax (offset 370) */ "i\0" "glResetMinmax\0" "glResetMinmaxEXT\0" "\0" - /* _mesa_function_pool[25534]: SpriteParameterfSGIX (dynamic) */ + /* _mesa_function_pool[26519]: SpriteParameterfSGIX (dynamic) */ "if\0" "glSpriteParameterfSGIX\0" "\0" - /* _mesa_function_pool[25561]: EnableClientState (offset 313) */ + /* _mesa_function_pool[26546]: EnableClientState (offset 313) */ "i\0" "glEnableClientState\0" "\0" - /* _mesa_function_pool[25584]: VertexAttrib4sNV (will be remapped) */ + /* _mesa_function_pool[26569]: VertexAttrib4sNV (will be remapped) */ "iiiii\0" "glVertexAttrib4sNV\0" "\0" - /* _mesa_function_pool[25610]: GetConvolutionParameterfv (offset 357) */ + /* _mesa_function_pool[26595]: GetConvolutionParameterfv (offset 357) */ "iip\0" "glGetConvolutionParameterfv\0" "glGetConvolutionParameterfvEXT\0" "\0" - /* _mesa_function_pool[25674]: VertexAttribs4dvNV (will be remapped) */ + /* _mesa_function_pool[26659]: VertexAttribs4dvNV (will be remapped) */ "iip\0" "glVertexAttribs4dvNV\0" "\0" - /* _mesa_function_pool[25700]: VertexAttrib4dARB (will be remapped) */ + /* _mesa_function_pool[26685]: VertexAttrib4dARB (will be remapped) */ "idddd\0" "glVertexAttrib4d\0" "glVertexAttrib4dARB\0" "\0" - /* _mesa_function_pool[25744]: GetTexBumpParameterfvATI (will be remapped) */ + /* _mesa_function_pool[26729]: GetTexBumpParameterfvATI (will be remapped) */ "ip\0" "glGetTexBumpParameterfvATI\0" "\0" - /* _mesa_function_pool[25775]: ProgramNamedParameter4dNV (will be remapped) */ + /* _mesa_function_pool[26760]: ProgramNamedParameter4dNV (will be remapped) */ "iipdddd\0" "glProgramNamedParameter4dNV\0" "\0" - /* _mesa_function_pool[25812]: GetMaterialfv (offset 269) */ + /* _mesa_function_pool[26797]: GetMaterialfv (offset 269) */ "iip\0" "glGetMaterialfv\0" "\0" - /* _mesa_function_pool[25833]: VertexWeightfEXT (dynamic) */ + /* _mesa_function_pool[26818]: VertexWeightfEXT (dynamic) */ "f\0" "glVertexWeightfEXT\0" "\0" - /* _mesa_function_pool[25855]: Binormal3fEXT (dynamic) */ + /* _mesa_function_pool[26840]: Binormal3fEXT (dynamic) */ "fff\0" "glBinormal3fEXT\0" "\0" - /* _mesa_function_pool[25876]: CallList (offset 2) */ + /* _mesa_function_pool[26861]: CallList (offset 2) */ "i\0" "glCallList\0" "\0" - /* _mesa_function_pool[25890]: Materialfv (offset 170) */ + /* _mesa_function_pool[26875]: Materialfv (offset 170) */ "iip\0" "glMaterialfv\0" "\0" - /* _mesa_function_pool[25908]: TexCoord3fv (offset 113) */ + /* _mesa_function_pool[26893]: TexCoord3fv (offset 113) */ "p\0" "glTexCoord3fv\0" "\0" - /* _mesa_function_pool[25925]: FogCoordfvEXT (will be remapped) */ + /* _mesa_function_pool[26910]: FogCoordfvEXT (will be remapped) */ "p\0" "glFogCoordfv\0" "glFogCoordfvEXT\0" "\0" - /* _mesa_function_pool[25957]: MultiTexCoord1ivARB (offset 381) */ + /* _mesa_function_pool[26942]: MultiTexCoord1ivARB (offset 381) */ "ip\0" "glMultiTexCoord1iv\0" "glMultiTexCoord1ivARB\0" "\0" - /* _mesa_function_pool[26002]: SecondaryColor3ubEXT (will be remapped) */ + /* _mesa_function_pool[26987]: SecondaryColor3ubEXT (will be remapped) */ "iii\0" "glSecondaryColor3ub\0" "glSecondaryColor3ubEXT\0" "\0" - /* _mesa_function_pool[26050]: MultiTexCoord2ivARB (offset 389) */ + /* _mesa_function_pool[27035]: MultiTexCoord2ivARB (offset 389) */ "ip\0" "glMultiTexCoord2iv\0" "glMultiTexCoord2ivARB\0" "\0" - /* _mesa_function_pool[26095]: FogFuncSGIS (dynamic) */ + /* _mesa_function_pool[27080]: FogFuncSGIS (dynamic) */ "ip\0" "glFogFuncSGIS\0" "\0" - /* _mesa_function_pool[26113]: CopyTexSubImage2D (offset 326) */ + /* _mesa_function_pool[27098]: CopyTexSubImage2D (offset 326) */ "iiiiiiii\0" "glCopyTexSubImage2D\0" "glCopyTexSubImage2DEXT\0" "\0" - /* _mesa_function_pool[26166]: GetObjectParameterivARB (will be remapped) */ + /* _mesa_function_pool[27151]: GetObjectParameterivARB (will be remapped) */ "iip\0" "glGetObjectParameterivARB\0" "\0" - /* _mesa_function_pool[26197]: Color3iv (offset 16) */ + /* _mesa_function_pool[27182]: Color3iv (offset 16) */ "p\0" "glColor3iv\0" "\0" - /* _mesa_function_pool[26211]: TexCoord4fVertex4fSUN (dynamic) */ + /* _mesa_function_pool[27196]: TexCoord4fVertex4fSUN (dynamic) */ "ffffffff\0" "glTexCoord4fVertex4fSUN\0" "\0" - /* _mesa_function_pool[26245]: DrawElements (offset 311) */ + /* _mesa_function_pool[27230]: DrawElements (offset 311) */ "iiip\0" "glDrawElements\0" "\0" - /* _mesa_function_pool[26266]: BindVertexArrayAPPLE (will be remapped) */ + /* _mesa_function_pool[27251]: BindVertexArrayAPPLE (will be remapped) */ "i\0" "glBindVertexArrayAPPLE\0" "\0" - /* _mesa_function_pool[26292]: GetProgramLocalParameterdvARB (will be remapped) */ + /* _mesa_function_pool[27277]: GetProgramLocalParameterdvARB (will be remapped) */ "iip\0" "glGetProgramLocalParameterdvARB\0" "\0" - /* _mesa_function_pool[26329]: GetHistogramParameteriv (offset 363) */ + /* _mesa_function_pool[27314]: GetHistogramParameteriv (offset 363) */ "iip\0" "glGetHistogramParameteriv\0" "glGetHistogramParameterivEXT\0" "\0" - /* _mesa_function_pool[26389]: MultiTexCoord1iARB (offset 380) */ + /* _mesa_function_pool[27374]: MultiTexCoord1iARB (offset 380) */ "ii\0" "glMultiTexCoord1i\0" "glMultiTexCoord1iARB\0" "\0" - /* _mesa_function_pool[26432]: GetConvolutionFilter (offset 356) */ + /* _mesa_function_pool[27417]: GetConvolutionFilter (offset 356) */ "iiip\0" "glGetConvolutionFilter\0" "glGetConvolutionFilterEXT\0" "\0" - /* _mesa_function_pool[26487]: GetProgramivARB (will be remapped) */ + /* _mesa_function_pool[27472]: GetProgramivARB (will be remapped) */ "iip\0" "glGetProgramivARB\0" "\0" - /* _mesa_function_pool[26510]: BlendFuncSeparateEXT (will be remapped) */ + /* _mesa_function_pool[27495]: BlendFuncSeparateEXT (will be remapped) */ "iiii\0" "glBlendFuncSeparate\0" "glBlendFuncSeparateEXT\0" "glBlendFuncSeparateINGR\0" "\0" - /* _mesa_function_pool[26583]: MapBufferRange (will be remapped) */ + /* _mesa_function_pool[27568]: MapBufferRange (will be remapped) */ "iiii\0" "glMapBufferRange\0" "\0" - /* _mesa_function_pool[26606]: ProgramParameters4dvNV (will be remapped) */ + /* _mesa_function_pool[27591]: ProgramParameters4dvNV (will be remapped) */ "iiip\0" "glProgramParameters4dvNV\0" "\0" - /* _mesa_function_pool[26637]: TexCoord2fColor3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[27622]: TexCoord2fColor3fVertex3fvSUN (dynamic) */ "ppp\0" "glTexCoord2fColor3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[26674]: EvalPoint2 (offset 239) */ + /* _mesa_function_pool[27659]: EvalPoint2 (offset 239) */ "ii\0" "glEvalPoint2\0" "\0" - /* _mesa_function_pool[26691]: Uniform1uivEXT (will be remapped) */ + /* _mesa_function_pool[27676]: Uniform1uivEXT (will be remapped) */ "iip\0" "glUniform1uivEXT\0" + "glUniform1uiv\0" "\0" - /* _mesa_function_pool[26713]: EvalPoint1 (offset 237) */ + /* _mesa_function_pool[27712]: EvalPoint1 (offset 237) */ "i\0" "glEvalPoint1\0" "\0" - /* _mesa_function_pool[26729]: Binormal3dvEXT (dynamic) */ + /* _mesa_function_pool[27728]: Binormal3dvEXT (dynamic) */ "p\0" "glBinormal3dvEXT\0" "\0" - /* _mesa_function_pool[26749]: PopMatrix (offset 297) */ + /* _mesa_function_pool[27748]: PopMatrix (offset 297) */ "\0" "glPopMatrix\0" "\0" - /* _mesa_function_pool[26763]: FinishFenceNV (will be remapped) */ + /* _mesa_function_pool[27762]: FinishFenceNV (will be remapped) */ "i\0" "glFinishFenceNV\0" "\0" - /* _mesa_function_pool[26782]: GetFogFuncSGIS (dynamic) */ + /* _mesa_function_pool[27781]: GetFogFuncSGIS (dynamic) */ "p\0" "glGetFogFuncSGIS\0" "\0" - /* _mesa_function_pool[26802]: GetUniformLocationARB (will be remapped) */ + /* _mesa_function_pool[27801]: GetUniformLocationARB (will be remapped) */ "ip\0" "glGetUniformLocation\0" "glGetUniformLocationARB\0" "\0" - /* _mesa_function_pool[26851]: SecondaryColor3fEXT (will be remapped) */ + /* _mesa_function_pool[27850]: SecondaryColor3fEXT (will be remapped) */ "fff\0" "glSecondaryColor3f\0" "glSecondaryColor3fEXT\0" "\0" - /* _mesa_function_pool[26897]: GetTexGeniv (offset 280) */ + /* _mesa_function_pool[27896]: GetTexGeniv (offset 280) */ "iip\0" "glGetTexGeniv\0" "\0" - /* _mesa_function_pool[26916]: CombinerInputNV (will be remapped) */ + /* _mesa_function_pool[27915]: CombinerInputNV (will be remapped) */ "iiiiii\0" "glCombinerInputNV\0" "\0" - /* _mesa_function_pool[26942]: VertexAttrib3sARB (will be remapped) */ + /* _mesa_function_pool[27941]: VertexAttrib3sARB (will be remapped) */ "iiii\0" "glVertexAttrib3s\0" "glVertexAttrib3sARB\0" "\0" - /* _mesa_function_pool[26985]: IsTransformFeedback (will be remapped) */ + /* _mesa_function_pool[27984]: IsTransformFeedback (will be remapped) */ "i\0" "glIsTransformFeedback\0" "\0" - /* _mesa_function_pool[27010]: ReplacementCodeuiNormal3fVertex3fvSUN (dynamic) */ + /* _mesa_function_pool[28009]: ReplacementCodeuiNormal3fVertex3fvSUN (dynamic) */ "ppp\0" "glReplacementCodeuiNormal3fVertex3fvSUN\0" "\0" - /* _mesa_function_pool[27055]: Map2d (offset 222) */ + /* _mesa_function_pool[28054]: Map2d (offset 222) */ "iddiiddiip\0" "glMap2d\0" "\0" - /* _mesa_function_pool[27075]: Map2f (offset 223) */ + /* _mesa_function_pool[28074]: Map2f (offset 223) */ "iffiiffiip\0" "glMap2f\0" "\0" - /* _mesa_function_pool[27095]: ProgramStringARB (will be remapped) */ + /* _mesa_function_pool[28094]: ProgramStringARB (will be remapped) */ "iiip\0" "glProgramStringARB\0" "\0" - /* _mesa_function_pool[27120]: Vertex4s (offset 148) */ + /* _mesa_function_pool[28119]: Vertex4s (offset 148) */ "iiii\0" "glVertex4s\0" "\0" - /* _mesa_function_pool[27137]: TexCoord4fVertex4fvSUN (dynamic) */ + /* _mesa_function_pool[28136]: TexCoord4fVertex4fvSUN (dynamic) */ "pp\0" "glTexCoord4fVertex4fvSUN\0" "\0" - /* _mesa_function_pool[27166]: FragmentLightModelivSGIX (dynamic) */ + /* _mesa_function_pool[28165]: FragmentLightModelivSGIX (dynamic) */ "ip\0" "glFragmentLightModelivSGIX\0" "\0" - /* _mesa_function_pool[27197]: VertexAttrib1fNV (will be remapped) */ + /* _mesa_function_pool[28196]: VertexAttrib1fNV (will be remapped) */ "if\0" "glVertexAttrib1fNV\0" "\0" - /* _mesa_function_pool[27220]: Vertex4f (offset 144) */ + /* _mesa_function_pool[28219]: Vertex4f (offset 144) */ "ffff\0" "glVertex4f\0" "\0" - /* _mesa_function_pool[27237]: EvalCoord1d (offset 228) */ + /* _mesa_function_pool[28236]: EvalCoord1d (offset 228) */ "d\0" "glEvalCoord1d\0" "\0" - /* _mesa_function_pool[27254]: Vertex4d (offset 142) */ + /* _mesa_function_pool[28253]: Vertex4d (offset 142) */ "dddd\0" "glVertex4d\0" "\0" - /* _mesa_function_pool[27271]: RasterPos4dv (offset 79) */ + /* _mesa_function_pool[28270]: RasterPos4dv (offset 79) */ "p\0" "glRasterPos4dv\0" "\0" - /* _mesa_function_pool[27289]: UseShaderProgramEXT (will be remapped) */ + /* _mesa_function_pool[28288]: UseShaderProgramEXT (will be remapped) */ "ii\0" "glUseShaderProgramEXT\0" "\0" - /* _mesa_function_pool[27315]: FragmentLightfSGIX (dynamic) */ + /* _mesa_function_pool[28314]: FragmentLightfSGIX (dynamic) */ "iif\0" "glFragmentLightfSGIX\0" "\0" - /* _mesa_function_pool[27341]: GetCompressedTexImageARB (will be remapped) */ + /* _mesa_function_pool[28340]: GetCompressedTexImageARB (will be remapped) */ "iip\0" "glGetCompressedTexImage\0" "glGetCompressedTexImageARB\0" "\0" - /* _mesa_function_pool[27397]: GetTexGenfv (offset 279) */ + /* _mesa_function_pool[28396]: GetTexGenfv (offset 279) */ "iip\0" "glGetTexGenfv\0" "\0" - /* _mesa_function_pool[27416]: Vertex4i (offset 146) */ + /* _mesa_function_pool[28415]: Vertex4i (offset 146) */ "iiii\0" "glVertex4i\0" "\0" - /* _mesa_function_pool[27433]: VertexWeightPointerEXT (dynamic) */ + /* _mesa_function_pool[28432]: VertexWeightPointerEXT (dynamic) */ "iiip\0" "glVertexWeightPointerEXT\0" "\0" - /* _mesa_function_pool[27464]: GetHistogram (offset 361) */ + /* _mesa_function_pool[28463]: GetHistogram (offset 361) */ "iiiip\0" "glGetHistogram\0" "glGetHistogramEXT\0" "\0" - /* _mesa_function_pool[27504]: ActiveStencilFaceEXT (will be remapped) */ + /* _mesa_function_pool[28503]: ActiveStencilFaceEXT (will be remapped) */ "i\0" "glActiveStencilFaceEXT\0" "\0" - /* _mesa_function_pool[27530]: StencilFuncSeparateATI (will be remapped) */ + /* _mesa_function_pool[28529]: StencilFuncSeparateATI (will be remapped) */ "iiii\0" "glStencilFuncSeparateATI\0" "\0" - /* _mesa_function_pool[27561]: Materialf (offset 169) */ + /* _mesa_function_pool[28560]: Materialf (offset 169) */ "iif\0" "glMaterialf\0" "\0" - /* _mesa_function_pool[27578]: GetShaderSourceARB (will be remapped) */ + /* _mesa_function_pool[28577]: GetShaderSourceARB (will be remapped) */ "iipp\0" "glGetShaderSource\0" "glGetShaderSourceARB\0" "\0" - /* _mesa_function_pool[27623]: IglooInterfaceSGIX (dynamic) */ + /* _mesa_function_pool[28622]: IglooInterfaceSGIX (dynamic) */ "ip\0" "glIglooInterfaceSGIX\0" "\0" - /* _mesa_function_pool[27648]: Materiali (offset 171) */ + /* _mesa_function_pool[28647]: Materiali (offset 171) */ "iii\0" "glMateriali\0" "\0" - /* _mesa_function_pool[27665]: VertexAttrib4dNV (will be remapped) */ + /* _mesa_function_pool[28664]: VertexAttrib4dNV (will be remapped) */ "idddd\0" "glVertexAttrib4dNV\0" "\0" - /* _mesa_function_pool[27691]: MultiModeDrawElementsIBM (will be remapped) */ + /* _mesa_function_pool[28690]: MultiModeDrawElementsIBM (will be remapped) */ "ppipii\0" "glMultiModeDrawElementsIBM\0" "\0" - /* _mesa_function_pool[27726]: Indexsv (offset 51) */ + /* _mesa_function_pool[28725]: Indexsv (offset 51) */ "p\0" "glIndexsv\0" "\0" - /* _mesa_function_pool[27739]: MultiTexCoord4svARB (offset 407) */ + /* _mesa_function_pool[28738]: MultiTexCoord4svARB (offset 407) */ "ip\0" "glMultiTexCoord4sv\0" "glMultiTexCoord4svARB\0" "\0" - /* _mesa_function_pool[27784]: LightModelfv (offset 164) */ + /* _mesa_function_pool[28783]: LightModelfv (offset 164) */ "ip\0" "glLightModelfv\0" "\0" - /* _mesa_function_pool[27803]: TexCoord2dv (offset 103) */ + /* _mesa_function_pool[28802]: TexCoord2dv (offset 103) */ "p\0" "glTexCoord2dv\0" "\0" - /* _mesa_function_pool[27820]: GenQueriesARB (will be remapped) */ + /* _mesa_function_pool[28819]: GenQueriesARB (will be remapped) */ "ip\0" "glGenQueries\0" "glGenQueriesARB\0" "\0" - /* _mesa_function_pool[27853]: EvalCoord1dv (offset 229) */ + /* _mesa_function_pool[28852]: EvalCoord1dv (offset 229) */ "p\0" "glEvalCoord1dv\0" "\0" - /* _mesa_function_pool[27871]: ReplacementCodeuiVertex3fSUN (dynamic) */ + /* _mesa_function_pool[28870]: ReplacementCodeuiVertex3fSUN (dynamic) */ "ifff\0" "glReplacementCodeuiVertex3fSUN\0" "\0" - /* _mesa_function_pool[27908]: Translated (offset 303) */ + /* _mesa_function_pool[28907]: Translated (offset 303) */ "ddd\0" "glTranslated\0" "\0" - /* _mesa_function_pool[27926]: Translatef (offset 304) */ + /* _mesa_function_pool[28925]: Translatef (offset 304) */ "fff\0" "glTranslatef\0" "\0" - /* _mesa_function_pool[27944]: Uniform3uiEXT (will be remapped) */ + /* _mesa_function_pool[28943]: Uniform3uiEXT (will be remapped) */ "iiii\0" "glUniform3uiEXT\0" + "glUniform3ui\0" "\0" - /* _mesa_function_pool[27966]: StencilMask (offset 209) */ + /* _mesa_function_pool[28978]: StencilMask (offset 209) */ "i\0" "glStencilMask\0" "\0" - /* _mesa_function_pool[27983]: Tangent3iEXT (dynamic) */ + /* _mesa_function_pool[28995]: Tangent3iEXT (dynamic) */ "iii\0" "glTangent3iEXT\0" "\0" - /* _mesa_function_pool[28003]: GetLightiv (offset 265) */ + /* _mesa_function_pool[29015]: GetLightiv (offset 265) */ "iip\0" "glGetLightiv\0" "\0" - /* _mesa_function_pool[28021]: DrawMeshArraysSUN (dynamic) */ + /* _mesa_function_pool[29033]: DrawMeshArraysSUN (dynamic) */ "iiii\0" "glDrawMeshArraysSUN\0" "\0" - /* _mesa_function_pool[28047]: IsList (offset 287) */ + /* _mesa_function_pool[29059]: IsList (offset 287) */ "i\0" "glIsList\0" "\0" - /* _mesa_function_pool[28059]: IsSync (will be remapped) */ + /* _mesa_function_pool[29071]: IsSync (will be remapped) */ "i\0" "glIsSync\0" "\0" - /* _mesa_function_pool[28071]: RenderMode (offset 196) */ + /* _mesa_function_pool[29083]: RenderMode (offset 196) */ "i\0" "glRenderMode\0" "\0" - /* _mesa_function_pool[28087]: GetMapControlPointsNV (dynamic) */ + /* _mesa_function_pool[29099]: GetMapControlPointsNV (dynamic) */ "iiiiiip\0" "glGetMapControlPointsNV\0" "\0" - /* _mesa_function_pool[28120]: DrawBuffersARB (will be remapped) */ + /* _mesa_function_pool[29132]: DrawBuffersARB (will be remapped) */ "ip\0" "glDrawBuffers\0" "glDrawBuffersARB\0" "glDrawBuffersATI\0" "\0" - /* _mesa_function_pool[28172]: ProgramLocalParameter4fARB (will be remapped) */ + /* _mesa_function_pool[29184]: ClearBufferiv (will be remapped) */ + "iip\0" + "glClearBufferiv\0" + "\0" + /* _mesa_function_pool[29205]: ProgramLocalParameter4fARB (will be remapped) */ "iiffff\0" "glProgramLocalParameter4fARB\0" "\0" - /* _mesa_function_pool[28209]: SpriteParameterivSGIX (dynamic) */ + /* _mesa_function_pool[29242]: SpriteParameterivSGIX (dynamic) */ "ip\0" "glSpriteParameterivSGIX\0" "\0" - /* _mesa_function_pool[28237]: ProvokingVertexEXT (will be remapped) */ + /* _mesa_function_pool[29270]: ProvokingVertexEXT (will be remapped) */ "i\0" "glProvokingVertexEXT\0" "glProvokingVertex\0" "\0" - /* _mesa_function_pool[28279]: MultiTexCoord1fARB (offset 378) */ + /* _mesa_function_pool[29312]: MultiTexCoord1fARB (offset 378) */ "if\0" "glMultiTexCoord1f\0" "glMultiTexCoord1fARB\0" "\0" - /* _mesa_function_pool[28322]: LoadName (offset 198) */ + /* _mesa_function_pool[29355]: LoadName (offset 198) */ "i\0" "glLoadName\0" "\0" - /* _mesa_function_pool[28336]: VertexAttribs4ubvNV (will be remapped) */ + /* _mesa_function_pool[29369]: VertexAttribs4ubvNV (will be remapped) */ "iip\0" "glVertexAttribs4ubvNV\0" "\0" - /* _mesa_function_pool[28363]: WeightsvARB (dynamic) */ + /* _mesa_function_pool[29396]: WeightsvARB (dynamic) */ "ip\0" "glWeightsvARB\0" "\0" - /* _mesa_function_pool[28381]: Uniform1fvARB (will be remapped) */ + /* _mesa_function_pool[29414]: Uniform1fvARB (will be remapped) */ "iip\0" "glUniform1fv\0" "glUniform1fvARB\0" "\0" - /* _mesa_function_pool[28415]: CopyTexSubImage1D (offset 325) */ + /* _mesa_function_pool[29448]: CopyTexSubImage1D (offset 325) */ "iiiiii\0" "glCopyTexSubImage1D\0" "glCopyTexSubImage1DEXT\0" "\0" - /* _mesa_function_pool[28466]: CullFace (offset 152) */ + /* _mesa_function_pool[29499]: CullFace (offset 152) */ "i\0" "glCullFace\0" "\0" - /* _mesa_function_pool[28480]: BindTexture (offset 307) */ + /* _mesa_function_pool[29513]: BindTexture (offset 307) */ "ii\0" "glBindTexture\0" "glBindTextureEXT\0" "\0" - /* _mesa_function_pool[28515]: BeginFragmentShaderATI (will be remapped) */ + /* _mesa_function_pool[29548]: BeginFragmentShaderATI (will be remapped) */ "\0" "glBeginFragmentShaderATI\0" "\0" - /* _mesa_function_pool[28542]: MultiTexCoord4fARB (offset 402) */ + /* _mesa_function_pool[29575]: MultiTexCoord4fARB (offset 402) */ "iffff\0" "glMultiTexCoord4f\0" "glMultiTexCoord4fARB\0" "\0" - /* _mesa_function_pool[28588]: VertexAttribs3svNV (will be remapped) */ + /* _mesa_function_pool[29621]: VertexAttribs3svNV (will be remapped) */ "iip\0" "glVertexAttribs3svNV\0" "\0" - /* _mesa_function_pool[28614]: StencilFunc (offset 243) */ + /* _mesa_function_pool[29647]: StencilFunc (offset 243) */ "iii\0" "glStencilFunc\0" "\0" - /* _mesa_function_pool[28633]: CopyPixels (offset 255) */ + /* _mesa_function_pool[29666]: CopyPixels (offset 255) */ "iiiii\0" "glCopyPixels\0" "\0" - /* _mesa_function_pool[28653]: Rectsv (offset 93) */ + /* _mesa_function_pool[29686]: Rectsv (offset 93) */ "pp\0" "glRectsv\0" "\0" - /* _mesa_function_pool[28666]: ReplacementCodeuivSUN (dynamic) */ + /* _mesa_function_pool[29699]: ReplacementCodeuivSUN (dynamic) */ "p\0" "glReplacementCodeuivSUN\0" "\0" - /* _mesa_function_pool[28693]: EnableVertexAttribArrayARB (will be remapped) */ + /* _mesa_function_pool[29726]: EnableVertexAttribArrayARB (will be remapped) */ "i\0" "glEnableVertexAttribArray\0" "glEnableVertexAttribArrayARB\0" "\0" - /* _mesa_function_pool[28751]: NormalPointervINTEL (dynamic) */ + /* _mesa_function_pool[29784]: NormalPointervINTEL (dynamic) */ "ip\0" "glNormalPointervINTEL\0" "\0" - /* _mesa_function_pool[28777]: CopyConvolutionFilter2D (offset 355) */ + /* _mesa_function_pool[29810]: CopyConvolutionFilter2D (offset 355) */ "iiiiii\0" "glCopyConvolutionFilter2D\0" "glCopyConvolutionFilter2DEXT\0" "\0" - /* _mesa_function_pool[28840]: WindowPos3ivMESA (will be remapped) */ + /* _mesa_function_pool[29873]: WindowPos3ivMESA (will be remapped) */ "p\0" "glWindowPos3iv\0" "glWindowPos3ivARB\0" "glWindowPos3ivMESA\0" "\0" - /* _mesa_function_pool[28895]: CopyBufferSubData (will be remapped) */ + /* _mesa_function_pool[29928]: CopyBufferSubData (will be remapped) */ "iiiii\0" "glCopyBufferSubData\0" "\0" - /* _mesa_function_pool[28922]: NormalPointer (offset 318) */ + /* _mesa_function_pool[29955]: NormalPointer (offset 318) */ "iip\0" "glNormalPointer\0" "\0" - /* _mesa_function_pool[28943]: TexParameterfv (offset 179) */ + /* _mesa_function_pool[29976]: TexParameterfv (offset 179) */ "iip\0" "glTexParameterfv\0" "\0" - /* _mesa_function_pool[28965]: IsBufferARB (will be remapped) */ + /* _mesa_function_pool[29998]: IsBufferARB (will be remapped) */ "i\0" "glIsBuffer\0" "glIsBufferARB\0" "\0" - /* _mesa_function_pool[28993]: WindowPos4iMESA (will be remapped) */ + /* _mesa_function_pool[30026]: WindowPos4iMESA (will be remapped) */ "iiii\0" "glWindowPos4iMESA\0" "\0" - /* _mesa_function_pool[29017]: VertexAttrib4uivARB (will be remapped) */ + /* _mesa_function_pool[30050]: VertexAttrib4uivARB (will be remapped) */ "ip\0" "glVertexAttrib4uiv\0" "glVertexAttrib4uivARB\0" "\0" - /* _mesa_function_pool[29062]: Tangent3bvEXT (dynamic) */ + /* _mesa_function_pool[30095]: Tangent3bvEXT (dynamic) */ "p\0" "glTangent3bvEXT\0" "\0" - /* _mesa_function_pool[29081]: VertexAttribI3uivEXT (will be remapped) */ + /* _mesa_function_pool[30114]: VertexAttribI3uivEXT (will be remapped) */ "ip\0" "glVertexAttribI3uivEXT\0" + "glVertexAttribI3uiv\0" "\0" - /* _mesa_function_pool[29108]: UniformMatrix3x4fv (will be remapped) */ + /* _mesa_function_pool[30161]: UniformMatrix3x4fv (will be remapped) */ "iiip\0" "glUniformMatrix3x4fv\0" "\0" - /* _mesa_function_pool[29135]: ClipPlane (offset 150) */ + /* _mesa_function_pool[30188]: ClipPlane (offset 150) */ "ip\0" "glClipPlane\0" "\0" - /* _mesa_function_pool[29151]: Recti (offset 90) */ + /* _mesa_function_pool[30204]: Recti (offset 90) */ "iiii\0" "glRecti\0" "\0" - /* _mesa_function_pool[29165]: VertexAttribI3ivEXT (will be remapped) */ + /* _mesa_function_pool[30218]: VertexAttribI3ivEXT (will be remapped) */ "ip\0" "glVertexAttribI3ivEXT\0" + "glVertexAttribI3iv\0" "\0" - /* _mesa_function_pool[29191]: DrawRangeElementsBaseVertex (will be remapped) */ + /* _mesa_function_pool[30263]: DrawRangeElementsBaseVertex (will be remapped) */ "iiiiipi\0" "glDrawRangeElementsBaseVertex\0" "\0" - /* _mesa_function_pool[29230]: TexCoordPointervINTEL (dynamic) */ + /* _mesa_function_pool[30302]: TexCoordPointervINTEL (dynamic) */ "iip\0" "glTexCoordPointervINTEL\0" "\0" - /* _mesa_function_pool[29259]: DeleteBuffersARB (will be remapped) */ + /* _mesa_function_pool[30331]: DeleteBuffersARB (will be remapped) */ "ip\0" "glDeleteBuffers\0" "glDeleteBuffersARB\0" "\0" - /* _mesa_function_pool[29298]: PixelTransformParameterfvEXT (dynamic) */ + /* _mesa_function_pool[30370]: PixelTransformParameterfvEXT (dynamic) */ "iip\0" "glPixelTransformParameterfvEXT\0" "\0" - /* _mesa_function_pool[29334]: PrimitiveRestartNV (will be remapped) */ + /* _mesa_function_pool[30406]: PrimitiveRestartNV (will be remapped) */ "\0" "glPrimitiveRestartNV\0" "\0" - /* _mesa_function_pool[29357]: WindowPos4fvMESA (will be remapped) */ + /* _mesa_function_pool[30429]: WindowPos4fvMESA (will be remapped) */ "p\0" "glWindowPos4fvMESA\0" "\0" - /* _mesa_function_pool[29379]: GetPixelMapuiv (offset 272) */ + /* _mesa_function_pool[30451]: GetPixelMapuiv (offset 272) */ "ip\0" "glGetPixelMapuiv\0" "\0" - /* _mesa_function_pool[29400]: Rectf (offset 88) */ + /* _mesa_function_pool[30472]: Rectf (offset 88) */ "ffff\0" "glRectf\0" "\0" - /* _mesa_function_pool[29414]: VertexAttrib1sNV (will be remapped) */ + /* _mesa_function_pool[30486]: VertexAttrib1sNV (will be remapped) */ "ii\0" "glVertexAttrib1sNV\0" "\0" - /* _mesa_function_pool[29437]: Indexfv (offset 47) */ + /* _mesa_function_pool[30509]: Indexfv (offset 47) */ "p\0" "glIndexfv\0" "\0" - /* _mesa_function_pool[29450]: SecondaryColor3svEXT (will be remapped) */ + /* _mesa_function_pool[30522]: SecondaryColor3svEXT (will be remapped) */ "p\0" "glSecondaryColor3sv\0" "glSecondaryColor3svEXT\0" "\0" - /* _mesa_function_pool[29496]: LoadTransposeMatrixfARB (will be remapped) */ + /* _mesa_function_pool[30568]: LoadTransposeMatrixfARB (will be remapped) */ "p\0" "glLoadTransposeMatrixf\0" "glLoadTransposeMatrixfARB\0" "\0" - /* _mesa_function_pool[29548]: GetPointerv (offset 329) */ + /* _mesa_function_pool[30620]: GetPointerv (offset 329) */ "ip\0" "glGetPointerv\0" "glGetPointervEXT\0" "\0" - /* _mesa_function_pool[29583]: Tangent3bEXT (dynamic) */ + /* _mesa_function_pool[30655]: Tangent3bEXT (dynamic) */ "iii\0" "glTangent3bEXT\0" "\0" - /* _mesa_function_pool[29603]: CombinerParameterfNV (will be remapped) */ + /* _mesa_function_pool[30675]: CombinerParameterfNV (will be remapped) */ "if\0" "glCombinerParameterfNV\0" "\0" - /* _mesa_function_pool[29630]: IndexMask (offset 212) */ + /* _mesa_function_pool[30702]: IndexMask (offset 212) */ "i\0" "glIndexMask\0" "\0" - /* _mesa_function_pool[29645]: BindProgramNV (will be remapped) */ + /* _mesa_function_pool[30717]: BindProgramNV (will be remapped) */ "ii\0" "glBindProgramARB\0" "glBindProgramNV\0" "\0" - /* _mesa_function_pool[29682]: VertexAttrib4svARB (will be remapped) */ + /* _mesa_function_pool[30754]: VertexAttrib4svARB (will be remapped) */ "ip\0" "glVertexAttrib4sv\0" "glVertexAttrib4svARB\0" "\0" - /* _mesa_function_pool[29725]: GetFloatv (offset 262) */ + /* _mesa_function_pool[30797]: GetFloatv (offset 262) */ "ip\0" "glGetFloatv\0" "\0" - /* _mesa_function_pool[29741]: CreateDebugObjectMESA (dynamic) */ + /* _mesa_function_pool[30813]: CreateDebugObjectMESA (dynamic) */ "\0" "glCreateDebugObjectMESA\0" "\0" - /* _mesa_function_pool[29767]: GetShaderiv (will be remapped) */ + /* _mesa_function_pool[30839]: GetShaderiv (will be remapped) */ "iip\0" "glGetShaderiv\0" "\0" - /* _mesa_function_pool[29786]: ClientWaitSync (will be remapped) */ + /* _mesa_function_pool[30858]: ClientWaitSync (will be remapped) */ "iii\0" "glClientWaitSync\0" "\0" - /* _mesa_function_pool[29808]: TexCoord4s (offset 124) */ + /* _mesa_function_pool[30880]: TexCoord4s (offset 124) */ "iiii\0" "glTexCoord4s\0" "\0" - /* _mesa_function_pool[29827]: TexCoord3sv (offset 117) */ + /* _mesa_function_pool[30899]: TexCoord3sv (offset 117) */ "p\0" "glTexCoord3sv\0" "\0" - /* _mesa_function_pool[29844]: BindFragmentShaderATI (will be remapped) */ + /* _mesa_function_pool[30916]: BindFragmentShaderATI (will be remapped) */ "i\0" "glBindFragmentShaderATI\0" "\0" - /* _mesa_function_pool[29871]: PopAttrib (offset 218) */ + /* _mesa_function_pool[30943]: PopAttrib (offset 218) */ "\0" "glPopAttrib\0" "\0" - /* _mesa_function_pool[29885]: Fogfv (offset 154) */ + /* _mesa_function_pool[30957]: Fogfv (offset 154) */ "ip\0" "glFogfv\0" "\0" - /* _mesa_function_pool[29897]: UnmapBufferARB (will be remapped) */ + /* _mesa_function_pool[30969]: UnmapBufferARB (will be remapped) */ "i\0" "glUnmapBuffer\0" "glUnmapBufferARB\0" "\0" - /* _mesa_function_pool[29931]: InitNames (offset 197) */ + /* _mesa_function_pool[31003]: InitNames (offset 197) */ "\0" "glInitNames\0" "\0" - /* _mesa_function_pool[29945]: Normal3sv (offset 61) */ + /* _mesa_function_pool[31017]: Normal3sv (offset 61) */ "p\0" "glNormal3sv\0" "\0" - /* _mesa_function_pool[29960]: Minmax (offset 368) */ + /* _mesa_function_pool[31032]: Minmax (offset 368) */ "iii\0" "glMinmax\0" "glMinmaxEXT\0" "\0" - /* _mesa_function_pool[29986]: TexCoord4d (offset 118) */ + /* _mesa_function_pool[31058]: TexCoord4d (offset 118) */ "dddd\0" "glTexCoord4d\0" "\0" - /* _mesa_function_pool[30005]: DeformationMap3dSGIX (dynamic) */ + /* _mesa_function_pool[31077]: DeformationMap3dSGIX (dynamic) */ "iddiiddiiddiip\0" "glDeformationMap3dSGIX\0" "\0" - /* _mesa_function_pool[30044]: TexCoord4f (offset 120) */ + /* _mesa_function_pool[31116]: TexCoord4f (offset 120) */ "ffff\0" "glTexCoord4f\0" "\0" - /* _mesa_function_pool[30063]: FogCoorddvEXT (will be remapped) */ + /* _mesa_function_pool[31135]: FogCoorddvEXT (will be remapped) */ "p\0" "glFogCoorddv\0" "glFogCoorddvEXT\0" "\0" - /* _mesa_function_pool[30095]: FinishTextureSUNX (dynamic) */ + /* _mesa_function_pool[31167]: FinishTextureSUNX (dynamic) */ "\0" "glFinishTextureSUNX\0" "\0" - /* _mesa_function_pool[30117]: GetFragmentLightfvSGIX (dynamic) */ + /* _mesa_function_pool[31189]: GetFragmentLightfvSGIX (dynamic) */ "iip\0" "glGetFragmentLightfvSGIX\0" "\0" - /* _mesa_function_pool[30147]: Binormal3fvEXT (dynamic) */ + /* _mesa_function_pool[31219]: Binormal3fvEXT (dynamic) */ "p\0" "glBinormal3fvEXT\0" "\0" - /* _mesa_function_pool[30167]: GetBooleanv (offset 258) */ + /* _mesa_function_pool[31239]: GetBooleanv (offset 258) */ "ip\0" "glGetBooleanv\0" "\0" - /* _mesa_function_pool[30185]: ColorFragmentOp3ATI (will be remapped) */ + /* _mesa_function_pool[31257]: ColorFragmentOp3ATI (will be remapped) */ "iiiiiiiiiiiii\0" "glColorFragmentOp3ATI\0" "\0" - /* _mesa_function_pool[30222]: Hint (offset 158) */ + /* _mesa_function_pool[31294]: Hint (offset 158) */ "ii\0" "glHint\0" "\0" - /* _mesa_function_pool[30233]: Color4dv (offset 28) */ + /* _mesa_function_pool[31305]: Color4dv (offset 28) */ "p\0" "glColor4dv\0" "\0" - /* _mesa_function_pool[30247]: VertexAttrib2svARB (will be remapped) */ + /* _mesa_function_pool[31319]: VertexAttrib2svARB (will be remapped) */ "ip\0" "glVertexAttrib2sv\0" "glVertexAttrib2svARB\0" "\0" - /* _mesa_function_pool[30290]: AreProgramsResidentNV (will be remapped) */ + /* _mesa_function_pool[31362]: AreProgramsResidentNV (will be remapped) */ "ipp\0" "glAreProgramsResidentNV\0" "\0" - /* _mesa_function_pool[30319]: WindowPos3svMESA (will be remapped) */ + /* _mesa_function_pool[31391]: WindowPos3svMESA (will be remapped) */ "p\0" "glWindowPos3sv\0" "glWindowPos3svARB\0" "glWindowPos3svMESA\0" "\0" - /* _mesa_function_pool[30374]: CopyColorSubTable (offset 347) */ + /* _mesa_function_pool[31446]: CopyColorSubTable (offset 347) */ "iiiii\0" "glCopyColorSubTable\0" "glCopyColorSubTableEXT\0" "\0" - /* _mesa_function_pool[30424]: WeightdvARB (dynamic) */ + /* _mesa_function_pool[31496]: WeightdvARB (dynamic) */ "ip\0" "glWeightdvARB\0" "\0" - /* _mesa_function_pool[30442]: DeleteRenderbuffersEXT (will be remapped) */ + /* _mesa_function_pool[31514]: DeleteRenderbuffersEXT (will be remapped) */ "ip\0" "glDeleteRenderbuffers\0" "glDeleteRenderbuffersEXT\0" "\0" - /* _mesa_function_pool[30493]: VertexAttrib4NubvARB (will be remapped) */ + /* _mesa_function_pool[31565]: VertexAttrib4NubvARB (will be remapped) */ "ip\0" "glVertexAttrib4Nubv\0" "glVertexAttrib4NubvARB\0" "\0" - /* _mesa_function_pool[30540]: VertexAttrib3dvNV (will be remapped) */ + /* _mesa_function_pool[31612]: VertexAttrib3dvNV (will be remapped) */ "ip\0" "glVertexAttrib3dvNV\0" "\0" - /* _mesa_function_pool[30564]: GetObjectParameterfvARB (will be remapped) */ + /* _mesa_function_pool[31636]: GetObjectParameterfvARB (will be remapped) */ "iip\0" "glGetObjectParameterfvARB\0" "\0" - /* _mesa_function_pool[30595]: Vertex4iv (offset 147) */ + /* _mesa_function_pool[31667]: Vertex4iv (offset 147) */ "p\0" "glVertex4iv\0" "\0" - /* _mesa_function_pool[30610]: GetProgramEnvParameterdvARB (will be remapped) */ + /* _mesa_function_pool[31682]: GetProgramEnvParameterdvARB (will be remapped) */ "iip\0" "glGetProgramEnvParameterdvARB\0" "\0" - /* _mesa_function_pool[30645]: TexCoord4dv (offset 119) */ + /* _mesa_function_pool[31717]: TexCoord4dv (offset 119) */ "p\0" "glTexCoord4dv\0" "\0" - /* _mesa_function_pool[30662]: LockArraysEXT (will be remapped) */ + /* _mesa_function_pool[31734]: LockArraysEXT (will be remapped) */ "ii\0" "glLockArraysEXT\0" "\0" - /* _mesa_function_pool[30682]: Begin (offset 7) */ + /* _mesa_function_pool[31754]: Begin (offset 7) */ "i\0" "glBegin\0" "\0" - /* _mesa_function_pool[30693]: LightModeli (offset 165) */ + /* _mesa_function_pool[31765]: LightModeli (offset 165) */ "ii\0" "glLightModeli\0" "\0" - /* _mesa_function_pool[30711]: VertexAttribI4ivEXT (will be remapped) */ + /* _mesa_function_pool[31783]: VertexAttribI4ivEXT (will be remapped) */ "ip\0" "glVertexAttribI4ivEXT\0" + "glVertexAttribI4iv\0" "\0" - /* _mesa_function_pool[30737]: Rectfv (offset 89) */ + /* _mesa_function_pool[31828]: Rectfv (offset 89) */ "pp\0" "glRectfv\0" "\0" - /* _mesa_function_pool[30750]: LightModelf (offset 163) */ + /* _mesa_function_pool[31841]: LightModelf (offset 163) */ "if\0" "glLightModelf\0" "\0" - /* _mesa_function_pool[30768]: GetTexParameterfv (offset 282) */ + /* _mesa_function_pool[31859]: GetTexParameterfv (offset 282) */ "iip\0" "glGetTexParameterfv\0" "\0" - /* _mesa_function_pool[30793]: GetLightfv (offset 264) */ + /* _mesa_function_pool[31884]: GetLightfv (offset 264) */ "iip\0" "glGetLightfv\0" "\0" - /* _mesa_function_pool[30811]: PixelTransformParameterivEXT (dynamic) */ + /* _mesa_function_pool[31902]: PixelTransformParameterivEXT (dynamic) */ "iip\0" "glPixelTransformParameterivEXT\0" "\0" - /* _mesa_function_pool[30847]: BinormalPointerEXT (dynamic) */ + /* _mesa_function_pool[31938]: BinormalPointerEXT (dynamic) */ "iip\0" "glBinormalPointerEXT\0" "\0" - /* _mesa_function_pool[30873]: VertexAttrib1dNV (will be remapped) */ + /* _mesa_function_pool[31964]: VertexAttrib1dNV (will be remapped) */ "id\0" "glVertexAttrib1dNV\0" "\0" - /* _mesa_function_pool[30896]: GetCombinerInputParameterivNV (will be remapped) */ + /* _mesa_function_pool[31987]: GetCombinerInputParameterivNV (will be remapped) */ "iiiip\0" "glGetCombinerInputParameterivNV\0" "\0" - /* _mesa_function_pool[30935]: Disable (offset 214) */ + /* _mesa_function_pool[32026]: Disable (offset 214) */ "i\0" "glDisable\0" "\0" - /* _mesa_function_pool[30948]: MultiTexCoord2fvARB (offset 387) */ + /* _mesa_function_pool[32039]: MultiTexCoord2fvARB (offset 387) */ "ip\0" "glMultiTexCoord2fv\0" "glMultiTexCoord2fvARB\0" "\0" - /* _mesa_function_pool[30993]: GetRenderbufferParameterivEXT (will be remapped) */ + /* _mesa_function_pool[32084]: GetRenderbufferParameterivEXT (will be remapped) */ "iip\0" "glGetRenderbufferParameteriv\0" "glGetRenderbufferParameterivEXT\0" "\0" - /* _mesa_function_pool[31059]: CombinerParameterivNV (will be remapped) */ + /* _mesa_function_pool[32150]: CombinerParameterivNV (will be remapped) */ "ip\0" "glCombinerParameterivNV\0" "\0" - /* _mesa_function_pool[31087]: GenFragmentShadersATI (will be remapped) */ + /* _mesa_function_pool[32178]: GenFragmentShadersATI (will be remapped) */ "i\0" "glGenFragmentShadersATI\0" "\0" - /* _mesa_function_pool[31114]: DrawArrays (offset 310) */ + /* _mesa_function_pool[32205]: DrawArrays (offset 310) */ "iii\0" "glDrawArrays\0" "glDrawArraysEXT\0" "\0" - /* _mesa_function_pool[31148]: WeightuivARB (dynamic) */ + /* _mesa_function_pool[32239]: WeightuivARB (dynamic) */ "ip\0" "glWeightuivARB\0" "\0" - /* _mesa_function_pool[31167]: VertexAttrib2sARB (will be remapped) */ + /* _mesa_function_pool[32258]: VertexAttrib2sARB (will be remapped) */ "iii\0" "glVertexAttrib2s\0" "glVertexAttrib2sARB\0" "\0" - /* _mesa_function_pool[31209]: ColorMask (offset 210) */ + /* _mesa_function_pool[32300]: ColorMask (offset 210) */ "iiii\0" "glColorMask\0" "\0" - /* _mesa_function_pool[31227]: GenAsyncMarkersSGIX (dynamic) */ + /* _mesa_function_pool[32318]: GenAsyncMarkersSGIX (dynamic) */ "i\0" "glGenAsyncMarkersSGIX\0" "\0" - /* _mesa_function_pool[31252]: Tangent3svEXT (dynamic) */ + /* _mesa_function_pool[32343]: Tangent3svEXT (dynamic) */ "p\0" "glTangent3svEXT\0" "\0" - /* _mesa_function_pool[31271]: GetListParameterivSGIX (dynamic) */ + /* _mesa_function_pool[32362]: GetListParameterivSGIX (dynamic) */ "iip\0" "glGetListParameterivSGIX\0" "\0" - /* _mesa_function_pool[31301]: BindBufferARB (will be remapped) */ + /* _mesa_function_pool[32392]: BindBufferARB (will be remapped) */ "ii\0" "glBindBuffer\0" "glBindBufferARB\0" "\0" - /* _mesa_function_pool[31334]: GetInfoLogARB (will be remapped) */ + /* _mesa_function_pool[32425]: GetInfoLogARB (will be remapped) */ "iipp\0" "glGetInfoLogARB\0" "\0" - /* _mesa_function_pool[31356]: RasterPos4iv (offset 83) */ + /* _mesa_function_pool[32447]: RasterPos4iv (offset 83) */ "p\0" "glRasterPos4iv\0" "\0" - /* _mesa_function_pool[31374]: Enable (offset 215) */ + /* _mesa_function_pool[32465]: Enable (offset 215) */ "i\0" "glEnable\0" "\0" - /* _mesa_function_pool[31386]: LineStipple (offset 167) */ + /* _mesa_function_pool[32477]: LineStipple (offset 167) */ "ii\0" "glLineStipple\0" "\0" - /* _mesa_function_pool[31404]: VertexAttribs4svNV (will be remapped) */ + /* _mesa_function_pool[32495]: VertexAttribs4svNV (will be remapped) */ "iip\0" "glVertexAttribs4svNV\0" "\0" - /* _mesa_function_pool[31430]: EdgeFlagPointerListIBM (dynamic) */ + /* _mesa_function_pool[32521]: EdgeFlagPointerListIBM (dynamic) */ "ipi\0" "glEdgeFlagPointerListIBM\0" "\0" - /* _mesa_function_pool[31460]: UniformMatrix3x2fv (will be remapped) */ + /* _mesa_function_pool[32551]: UniformMatrix3x2fv (will be remapped) */ "iiip\0" "glUniformMatrix3x2fv\0" "\0" - /* _mesa_function_pool[31487]: GetMinmaxParameterfv (offset 365) */ + /* _mesa_function_pool[32578]: GetMinmaxParameterfv (offset 365) */ "iip\0" "glGetMinmaxParameterfv\0" "glGetMinmaxParameterfvEXT\0" "\0" - /* _mesa_function_pool[31541]: VertexAttrib1fvARB (will be remapped) */ + /* _mesa_function_pool[32632]: VertexAttrib1fvARB (will be remapped) */ "ip\0" "glVertexAttrib1fv\0" "glVertexAttrib1fvARB\0" "\0" - /* _mesa_function_pool[31584]: GenBuffersARB (will be remapped) */ + /* _mesa_function_pool[32675]: GenBuffersARB (will be remapped) */ "ip\0" "glGenBuffers\0" "glGenBuffersARB\0" "\0" - /* _mesa_function_pool[31617]: VertexAttribs1svNV (will be remapped) */ + /* _mesa_function_pool[32708]: VertexAttribs1svNV (will be remapped) */ "iip\0" "glVertexAttribs1svNV\0" "\0" - /* _mesa_function_pool[31643]: Vertex3fv (offset 137) */ + /* _mesa_function_pool[32734]: Vertex3fv (offset 137) */ "p\0" "glVertex3fv\0" "\0" - /* _mesa_function_pool[31658]: GetTexBumpParameterivATI (will be remapped) */ + /* _mesa_function_pool[32749]: GetTexBumpParameterivATI (will be remapped) */ "ip\0" "glGetTexBumpParameterivATI\0" "\0" - /* _mesa_function_pool[31689]: Binormal3bEXT (dynamic) */ + /* _mesa_function_pool[32780]: Binormal3bEXT (dynamic) */ "iii\0" "glBinormal3bEXT\0" "\0" - /* _mesa_function_pool[31710]: FragmentMaterialivSGIX (dynamic) */ + /* _mesa_function_pool[32801]: FragmentMaterialivSGIX (dynamic) */ "iip\0" "glFragmentMaterialivSGIX\0" "\0" - /* _mesa_function_pool[31740]: IsRenderbufferEXT (will be remapped) */ + /* _mesa_function_pool[32831]: IsRenderbufferEXT (will be remapped) */ "i\0" "glIsRenderbuffer\0" "glIsRenderbufferEXT\0" "\0" - /* _mesa_function_pool[31780]: GenProgramsNV (will be remapped) */ + /* _mesa_function_pool[32871]: GenProgramsNV (will be remapped) */ "ip\0" "glGenProgramsARB\0" "glGenProgramsNV\0" "\0" - /* _mesa_function_pool[31817]: VertexAttrib4dvNV (will be remapped) */ + /* _mesa_function_pool[32908]: VertexAttrib4dvNV (will be remapped) */ "ip\0" "glVertexAttrib4dvNV\0" "\0" - /* _mesa_function_pool[31841]: EndFragmentShaderATI (will be remapped) */ + /* _mesa_function_pool[32932]: EndFragmentShaderATI (will be remapped) */ "\0" "glEndFragmentShaderATI\0" "\0" - /* _mesa_function_pool[31866]: Binormal3iEXT (dynamic) */ + /* _mesa_function_pool[32957]: Binormal3iEXT (dynamic) */ "iii\0" "glBinormal3iEXT\0" "\0" - /* _mesa_function_pool[31887]: WindowPos2fMESA (will be remapped) */ + /* _mesa_function_pool[32978]: WindowPos2fMESA (will be remapped) */ "ff\0" "glWindowPos2f\0" "glWindowPos2fARB\0" @@ -4648,578 +4739,589 @@ static const char _mesa_function_pool[] = /* these functions need to be remapped */ static const struct gl_function_pool_remap MESA_remap_table_functions[] = { - { 1513, AttachShader_remap_index }, - { 9449, CreateProgram_remap_index }, - { 22046, CreateShader_remap_index }, - { 24414, DeleteProgram_remap_index }, - { 17759, DeleteShader_remap_index }, - { 22492, DetachShader_remap_index }, - { 17225, GetAttachedShaders_remap_index }, - { 4594, GetProgramInfoLog_remap_index }, - { 387, GetProgramiv_remap_index }, - { 6124, GetShaderInfoLog_remap_index }, - { 29767, GetShaderiv_remap_index }, - { 12750, IsProgram_remap_index }, - { 11722, IsShader_remap_index }, - { 9553, StencilFuncSeparate_remap_index }, - { 3727, StencilMaskSeparate_remap_index }, - { 7206, StencilOpSeparate_remap_index }, - { 21347, UniformMatrix2x3fv_remap_index }, - { 2724, UniformMatrix2x4fv_remap_index }, - { 31460, UniformMatrix3x2fv_remap_index }, - { 29108, UniformMatrix3x4fv_remap_index }, - { 15618, UniformMatrix4x2fv_remap_index }, - { 3101, UniformMatrix4x3fv_remap_index }, - { 15250, DrawArraysInstanced_remap_index }, - { 16438, DrawElementsInstanced_remap_index }, - { 9467, LoadTransposeMatrixdARB_remap_index }, - { 29496, LoadTransposeMatrixfARB_remap_index }, - { 5277, MultTransposeMatrixdARB_remap_index }, - { 22679, MultTransposeMatrixfARB_remap_index }, - { 198, SampleCoverageARB_remap_index }, - { 5490, CompressedTexImage1DARB_remap_index }, - { 23188, CompressedTexImage2DARB_remap_index }, - { 3790, CompressedTexImage3DARB_remap_index }, - { 17517, CompressedTexSubImage1DARB_remap_index }, - { 1963, CompressedTexSubImage2DARB_remap_index }, - { 19436, CompressedTexSubImage3DARB_remap_index }, - { 27341, GetCompressedTexImageARB_remap_index }, - { 3635, DisableVertexAttribArrayARB_remap_index }, - { 28693, EnableVertexAttribArrayARB_remap_index }, - { 30610, GetProgramEnvParameterdvARB_remap_index }, - { 22559, GetProgramEnvParameterfvARB_remap_index }, - { 26292, GetProgramLocalParameterdvARB_remap_index }, - { 7648, GetProgramLocalParameterfvARB_remap_index }, - { 17633, GetProgramStringARB_remap_index }, - { 26487, GetProgramivARB_remap_index }, - { 19631, GetVertexAttribdvARB_remap_index }, - { 15478, GetVertexAttribfvARB_remap_index }, - { 9333, GetVertexAttribivARB_remap_index }, - { 18512, ProgramEnvParameter4dARB_remap_index }, - { 24187, ProgramEnvParameter4dvARB_remap_index }, - { 16142, ProgramEnvParameter4fARB_remap_index }, - { 8533, ProgramEnvParameter4fvARB_remap_index }, - { 3753, ProgramLocalParameter4dARB_remap_index }, - { 12460, ProgramLocalParameter4dvARB_remap_index }, - { 28172, ProgramLocalParameter4fARB_remap_index }, - { 24767, ProgramLocalParameter4fvARB_remap_index }, - { 27095, ProgramStringARB_remap_index }, - { 18762, VertexAttrib1dARB_remap_index }, - { 15054, VertexAttrib1dvARB_remap_index }, - { 3928, VertexAttrib1fARB_remap_index }, - { 31541, VertexAttrib1fvARB_remap_index }, - { 6732, VertexAttrib1sARB_remap_index }, - { 2137, VertexAttrib1svARB_remap_index }, - { 14485, VertexAttrib2dARB_remap_index }, - { 16844, VertexAttrib2dvARB_remap_index }, - { 1532, VertexAttrib2fARB_remap_index }, - { 16957, VertexAttrib2fvARB_remap_index }, - { 31167, VertexAttrib2sARB_remap_index }, - { 30247, VertexAttrib2svARB_remap_index }, - { 10760, VertexAttrib3dARB_remap_index }, - { 8214, VertexAttrib3dvARB_remap_index }, - { 1619, VertexAttrib3fARB_remap_index }, - { 21610, VertexAttrib3fvARB_remap_index }, - { 26942, VertexAttrib3sARB_remap_index }, - { 19373, VertexAttrib3svARB_remap_index }, - { 4620, VertexAttrib4NbvARB_remap_index }, - { 17180, VertexAttrib4NivARB_remap_index }, - { 21565, VertexAttrib4NsvARB_remap_index }, - { 22511, VertexAttrib4NubARB_remap_index }, - { 30493, VertexAttrib4NubvARB_remap_index }, - { 18173, VertexAttrib4NuivARB_remap_index }, - { 2974, VertexAttrib4NusvARB_remap_index }, - { 10354, VertexAttrib4bvARB_remap_index }, - { 25700, VertexAttrib4dARB_remap_index }, - { 20395, VertexAttrib4dvARB_remap_index }, - { 10894, VertexAttrib4fARB_remap_index }, - { 11298, VertexAttrib4fvARB_remap_index }, - { 9746, VertexAttrib4ivARB_remap_index }, - { 16658, VertexAttrib4sARB_remap_index }, - { 29682, VertexAttrib4svARB_remap_index }, - { 15947, VertexAttrib4ubvARB_remap_index }, - { 29017, VertexAttrib4uivARB_remap_index }, - { 19184, VertexAttrib4usvARB_remap_index }, - { 21175, VertexAttribPointerARB_remap_index }, - { 31301, BindBufferARB_remap_index }, - { 6439, BufferDataARB_remap_index }, - { 1434, BufferSubDataARB_remap_index }, - { 29259, DeleteBuffersARB_remap_index }, - { 31584, GenBuffersARB_remap_index }, - { 17000, GetBufferParameterivARB_remap_index }, - { 16094, GetBufferPointervARB_remap_index }, - { 1387, GetBufferSubDataARB_remap_index }, - { 28965, IsBufferARB_remap_index }, - { 25251, MapBufferARB_remap_index }, - { 29897, UnmapBufferARB_remap_index }, - { 294, BeginQueryARB_remap_index }, - { 18857, DeleteQueriesARB_remap_index }, - { 11612, EndQueryARB_remap_index }, - { 27820, GenQueriesARB_remap_index }, - { 1855, GetQueryObjectivARB_remap_index }, - { 16702, GetQueryObjectuivARB_remap_index }, - { 1676, GetQueryivARB_remap_index }, - { 19091, IsQueryARB_remap_index }, - { 7824, AttachObjectARB_remap_index }, - { 17721, CompileShaderARB_remap_index }, - { 3043, CreateProgramObjectARB_remap_index }, - { 6384, CreateShaderObjectARB_remap_index }, - { 13852, DeleteObjectARB_remap_index }, - { 22979, DetachObjectARB_remap_index }, - { 11370, GetActiveUniformARB_remap_index }, - { 9008, GetAttachedObjectsARB_remap_index }, - { 9315, GetHandleARB_remap_index }, - { 31334, GetInfoLogARB_remap_index }, - { 30564, GetObjectParameterfvARB_remap_index }, - { 26166, GetObjectParameterivARB_remap_index }, - { 27578, GetShaderSourceARB_remap_index }, - { 26802, GetUniformLocationARB_remap_index }, - { 22781, GetUniformfvARB_remap_index }, - { 12055, GetUniformivARB_remap_index }, - { 19229, LinkProgramARB_remap_index }, - { 19287, ShaderSourceARB_remap_index }, - { 7106, Uniform1fARB_remap_index }, - { 28381, Uniform1fvARB_remap_index }, - { 21144, Uniform1iARB_remap_index }, - { 20084, Uniform1ivARB_remap_index }, - { 2086, Uniform2fARB_remap_index }, - { 13688, Uniform2fvARB_remap_index }, - { 25138, Uniform2iARB_remap_index }, - { 2206, Uniform2ivARB_remap_index }, - { 17831, Uniform3fARB_remap_index }, - { 9038, Uniform3fvARB_remap_index }, - { 6030, Uniform3iARB_remap_index }, - { 16200, Uniform3ivARB_remap_index }, - { 18318, Uniform4fARB_remap_index }, - { 22645, Uniform4fvARB_remap_index }, - { 23866, Uniform4iARB_remap_index }, - { 19597, Uniform4ivARB_remap_index }, - { 7876, UniformMatrix2fvARB_remap_index }, + { 1577, AttachShader_remap_index }, + { 9902, CreateProgram_remap_index }, + { 22864, CreateShader_remap_index }, + { 25322, DeleteProgram_remap_index }, + { 18525, DeleteShader_remap_index }, + { 23336, DetachShader_remap_index }, + { 17928, GetAttachedShaders_remap_index }, + { 4869, GetProgramInfoLog_remap_index }, + { 405, GetProgramiv_remap_index }, + { 6542, GetShaderInfoLog_remap_index }, + { 30839, GetShaderiv_remap_index }, + { 13311, IsProgram_remap_index }, + { 12263, IsShader_remap_index }, + { 10006, StencilFuncSeparate_remap_index }, + { 3921, StencilMaskSeparate_remap_index }, + { 7624, StencilOpSeparate_remap_index }, + { 22152, UniformMatrix2x3fv_remap_index }, + { 2847, UniformMatrix2x4fv_remap_index }, + { 32551, UniformMatrix3x2fv_remap_index }, + { 30161, UniformMatrix3x4fv_remap_index }, + { 16226, UniformMatrix4x2fv_remap_index }, + { 3263, UniformMatrix4x3fv_remap_index }, + { 5030, ClampColor_remap_index }, + { 17982, ClearBufferfi_remap_index }, + { 17448, ClearBufferfv_remap_index }, + { 29184, ClearBufferiv_remap_index }, + { 13516, ClearBufferuiv_remap_index }, + { 19808, GetStringi_remap_index }, + { 2788, TexBuffer_remap_index }, + { 938, FramebufferTexture_remap_index }, + { 26315, GetBufferParameteri64v_remap_index }, + { 10106, GetInteger64i_v_remap_index }, + { 23178, VertexAttribDivisor_remap_index }, + { 9920, LoadTransposeMatrixdARB_remap_index }, + { 30568, LoadTransposeMatrixfARB_remap_index }, + { 5608, MultTransposeMatrixdARB_remap_index }, + { 23523, MultTransposeMatrixfARB_remap_index }, + { 216, SampleCoverageARB_remap_index }, + { 5834, CompressedTexImage1DARB_remap_index }, + { 24051, CompressedTexImage2DARB_remap_index }, + { 3984, CompressedTexImage3DARB_remap_index }, + { 18242, CompressedTexSubImage1DARB_remap_index }, + { 2050, CompressedTexSubImage2DARB_remap_index }, + { 20230, CompressedTexSubImage3DARB_remap_index }, + { 28340, GetCompressedTexImageARB_remap_index }, + { 3829, DisableVertexAttribArrayARB_remap_index }, + { 29726, EnableVertexAttribArrayARB_remap_index }, + { 31682, GetProgramEnvParameterdvARB_remap_index }, + { 23403, GetProgramEnvParameterfvARB_remap_index }, + { 27277, GetProgramLocalParameterdvARB_remap_index }, + { 8066, GetProgramLocalParameterfvARB_remap_index }, + { 18376, GetProgramStringARB_remap_index }, + { 27472, GetProgramivARB_remap_index }, + { 20425, GetVertexAttribdvARB_remap_index }, + { 16034, GetVertexAttribfvARB_remap_index }, + { 9765, GetVertexAttribivARB_remap_index }, + { 19289, ProgramEnvParameter4dARB_remap_index }, + { 25072, ProgramEnvParameter4dvARB_remap_index }, + { 16770, ProgramEnvParameter4fARB_remap_index }, + { 8965, ProgramEnvParameter4fvARB_remap_index }, + { 3947, ProgramLocalParameter4dARB_remap_index }, + { 13021, ProgramLocalParameter4dvARB_remap_index }, + { 29205, ProgramLocalParameter4fARB_remap_index }, + { 25675, ProgramLocalParameter4fvARB_remap_index }, + { 28094, ProgramStringARB_remap_index }, + { 19539, VertexAttrib1dARB_remap_index }, + { 15688, VertexAttrib1dvARB_remap_index }, + { 4122, VertexAttrib1fARB_remap_index }, + { 32632, VertexAttrib1fvARB_remap_index }, + { 7150, VertexAttrib1sARB_remap_index }, + { 2224, VertexAttrib1svARB_remap_index }, + { 15119, VertexAttrib2dARB_remap_index }, + { 17469, VertexAttrib2dvARB_remap_index }, + { 1596, VertexAttrib2fARB_remap_index }, + { 17582, VertexAttrib2fvARB_remap_index }, + { 32258, VertexAttrib2sARB_remap_index }, + { 31319, VertexAttrib2svARB_remap_index }, + { 11268, VertexAttrib3dARB_remap_index }, + { 8632, VertexAttrib3dvARB_remap_index }, + { 1683, VertexAttrib3fARB_remap_index }, + { 22415, VertexAttrib3fvARB_remap_index }, + { 27941, VertexAttrib3sARB_remap_index }, + { 20167, VertexAttrib3svARB_remap_index }, + { 4895, VertexAttrib4NbvARB_remap_index }, + { 17805, VertexAttrib4NivARB_remap_index }, + { 22370, VertexAttrib4NsvARB_remap_index }, + { 23355, VertexAttrib4NubARB_remap_index }, + { 31565, VertexAttrib4NubvARB_remap_index }, + { 18950, VertexAttrib4NuivARB_remap_index }, + { 3136, VertexAttrib4NusvARB_remap_index }, + { 10846, VertexAttrib4bvARB_remap_index }, + { 26685, VertexAttrib4dARB_remap_index }, + { 21189, VertexAttrib4dvARB_remap_index }, + { 11422, VertexAttrib4fARB_remap_index }, + { 11826, VertexAttrib4fvARB_remap_index }, + { 10222, VertexAttrib4ivARB_remap_index }, + { 17262, VertexAttrib4sARB_remap_index }, + { 30754, VertexAttrib4svARB_remap_index }, + { 16575, VertexAttrib4ubvARB_remap_index }, + { 30050, VertexAttrib4uivARB_remap_index }, + { 19978, VertexAttrib4usvARB_remap_index }, + { 21967, VertexAttribPointerARB_remap_index }, + { 32392, BindBufferARB_remap_index }, + { 6857, BufferDataARB_remap_index }, + { 1498, BufferSubDataARB_remap_index }, + { 30331, DeleteBuffersARB_remap_index }, + { 32675, GenBuffersARB_remap_index }, + { 17625, GetBufferParameterivARB_remap_index }, + { 16722, GetBufferPointervARB_remap_index }, + { 1451, GetBufferSubDataARB_remap_index }, + { 29998, IsBufferARB_remap_index }, + { 26159, MapBufferARB_remap_index }, + { 30969, UnmapBufferARB_remap_index }, + { 312, BeginQueryARB_remap_index }, + { 19634, DeleteQueriesARB_remap_index }, + { 12153, EndQueryARB_remap_index }, + { 28819, GenQueriesARB_remap_index }, + { 1942, GetQueryObjectivARB_remap_index }, + { 17306, GetQueryObjectuivARB_remap_index }, + { 1740, GetQueryivARB_remap_index }, + { 19885, IsQueryARB_remap_index }, + { 8242, AttachObjectARB_remap_index }, + { 18487, CompileShaderARB_remap_index }, + { 3205, CreateProgramObjectARB_remap_index }, + { 6802, CreateShaderObjectARB_remap_index }, + { 14454, DeleteObjectARB_remap_index }, + { 23842, DetachObjectARB_remap_index }, + { 11898, GetActiveUniformARB_remap_index }, + { 9440, GetAttachedObjectsARB_remap_index }, + { 9747, GetHandleARB_remap_index }, + { 32425, GetInfoLogARB_remap_index }, + { 31636, GetObjectParameterfvARB_remap_index }, + { 27151, GetObjectParameterivARB_remap_index }, + { 28577, GetShaderSourceARB_remap_index }, + { 27801, GetUniformLocationARB_remap_index }, + { 23625, GetUniformfvARB_remap_index }, + { 12596, GetUniformivARB_remap_index }, + { 20023, LinkProgramARB_remap_index }, + { 20081, ShaderSourceARB_remap_index }, + { 7524, Uniform1fARB_remap_index }, + { 29414, Uniform1fvARB_remap_index }, + { 21936, Uniform1iARB_remap_index }, + { 20878, Uniform1ivARB_remap_index }, + { 2173, Uniform2fARB_remap_index }, + { 14290, Uniform2fvARB_remap_index }, + { 26046, Uniform2iARB_remap_index }, + { 2293, Uniform2ivARB_remap_index }, + { 18597, Uniform3fARB_remap_index }, + { 9470, Uniform3fvARB_remap_index }, + { 6396, Uniform3iARB_remap_index }, + { 16828, Uniform3ivARB_remap_index }, + { 19095, Uniform4fARB_remap_index }, + { 23489, Uniform4fvARB_remap_index }, + { 24751, Uniform4iARB_remap_index }, + { 20391, Uniform4ivARB_remap_index }, + { 8294, UniformMatrix2fvARB_remap_index }, { 17, UniformMatrix3fvARB_remap_index }, - { 2584, UniformMatrix4fvARB_remap_index }, - { 24299, UseProgramObjectARB_remap_index }, - { 14173, ValidateProgramARB_remap_index }, - { 20438, BindAttribLocationARB_remap_index }, - { 4665, GetActiveAttribARB_remap_index }, - { 15881, GetAttribLocationARB_remap_index }, - { 28120, DrawBuffersARB_remap_index }, - { 12565, RenderbufferStorageMultisample_remap_index }, - { 12995, FramebufferTextureARB_remap_index }, - { 24669, FramebufferTextureFaceARB_remap_index }, - { 23128, ProgramParameteriARB_remap_index }, - { 18366, FlushMappedBufferRange_remap_index }, - { 26583, MapBufferRange_remap_index }, - { 15729, BindVertexArray_remap_index }, - { 14010, GenVertexArrays_remap_index }, - { 28895, CopyBufferSubData_remap_index }, - { 29786, ClientWaitSync_remap_index }, - { 2503, DeleteSync_remap_index }, - { 6773, FenceSync_remap_index }, - { 14544, GetInteger64v_remap_index }, - { 21672, GetSynciv_remap_index }, - { 28059, IsSync_remap_index }, - { 8956, WaitSync_remap_index }, - { 3603, DrawElementsBaseVertex_remap_index }, - { 29191, DrawRangeElementsBaseVertex_remap_index }, - { 25282, MultiDrawElementsBaseVertex_remap_index }, - { 4799, BindTransformFeedback_remap_index }, - { 3070, DeleteTransformFeedbacks_remap_index }, - { 6063, DrawTransformFeedback_remap_index }, - { 9175, GenTransformFeedbacks_remap_index }, - { 26985, IsTransformFeedback_remap_index }, - { 24862, PauseTransformFeedback_remap_index }, - { 5197, ResumeTransformFeedback_remap_index }, - { 5085, PolygonOffsetEXT_remap_index }, - { 22281, GetPixelTexGenParameterfvSGIS_remap_index }, - { 4187, GetPixelTexGenParameterivSGIS_remap_index }, - { 22014, PixelTexGenParameterfSGIS_remap_index }, - { 606, PixelTexGenParameterfvSGIS_remap_index }, - { 12093, PixelTexGenParameteriSGIS_remap_index }, - { 13169, PixelTexGenParameterivSGIS_remap_index }, - { 15817, SampleMaskSGIS_remap_index }, - { 19031, SamplePatternSGIS_remap_index }, - { 25211, ColorPointerEXT_remap_index }, - { 16887, EdgeFlagPointerEXT_remap_index }, - { 5684, IndexPointerEXT_remap_index }, - { 5764, NormalPointerEXT_remap_index }, - { 15138, TexCoordPointerEXT_remap_index }, - { 6562, VertexPointerEXT_remap_index }, - { 3405, PointParameterfEXT_remap_index }, - { 7413, PointParameterfvEXT_remap_index }, - { 30662, LockArraysEXT_remap_index }, - { 14237, UnlockArraysEXT_remap_index }, - { 1203, SecondaryColor3bEXT_remap_index }, - { 7572, SecondaryColor3bvEXT_remap_index }, - { 9923, SecondaryColor3dEXT_remap_index }, - { 24472, SecondaryColor3dvEXT_remap_index }, - { 26851, SecondaryColor3fEXT_remap_index }, - { 17453, SecondaryColor3fvEXT_remap_index }, - { 452, SecondaryColor3iEXT_remap_index }, - { 15526, SecondaryColor3ivEXT_remap_index }, - { 9581, SecondaryColor3sEXT_remap_index }, - { 29450, SecondaryColor3svEXT_remap_index }, - { 26002, SecondaryColor3ubEXT_remap_index }, - { 20329, SecondaryColor3ubvEXT_remap_index }, - { 12315, SecondaryColor3uiEXT_remap_index }, - { 21901, SecondaryColor3uivEXT_remap_index }, - { 24719, SecondaryColor3usEXT_remap_index }, - { 12388, SecondaryColor3usvEXT_remap_index }, - { 11241, SecondaryColorPointerEXT_remap_index }, - { 24533, MultiDrawArraysEXT_remap_index }, - { 20019, MultiDrawElementsEXT_remap_index }, - { 20214, FogCoordPointerEXT_remap_index }, - { 4336, FogCoorddEXT_remap_index }, - { 30063, FogCoorddvEXT_remap_index }, - { 4428, FogCoordfEXT_remap_index }, - { 25925, FogCoordfvEXT_remap_index }, - { 18270, PixelTexGenSGIX_remap_index }, - { 26510, BlendFuncSeparateEXT_remap_index }, - { 6474, FlushVertexArrayRangeNV_remap_index }, - { 5034, VertexArrayRangeNV_remap_index }, - { 26916, CombinerInputNV_remap_index }, - { 2029, CombinerOutputNV_remap_index }, - { 29603, CombinerParameterfNV_remap_index }, - { 4927, CombinerParameterfvNV_remap_index }, - { 21396, CombinerParameteriNV_remap_index }, - { 31059, CombinerParameterivNV_remap_index }, - { 6850, FinalCombinerInputNV_remap_index }, - { 9381, GetCombinerInputParameterfvNV_remap_index }, - { 30896, GetCombinerInputParameterivNV_remap_index }, - { 13270, GetCombinerOutputParameterfvNV_remap_index }, - { 13098, GetCombinerOutputParameterivNV_remap_index }, - { 6219, GetFinalCombinerInputParameterfvNV_remap_index }, - { 23738, GetFinalCombinerInputParameterivNV_remap_index }, - { 12033, ResizeBuffersMESA_remap_index }, - { 10587, WindowPos2dMESA_remap_index }, - { 996, WindowPos2dvMESA_remap_index }, - { 31887, WindowPos2fMESA_remap_index }, - { 7517, WindowPos2fvMESA_remap_index }, - { 17400, WindowPos2iMESA_remap_index }, - { 19504, WindowPos2ivMESA_remap_index }, - { 20118, WindowPos2sMESA_remap_index }, - { 5404, WindowPos2svMESA_remap_index }, - { 7342, WindowPos3dMESA_remap_index }, - { 13416, WindowPos3dvMESA_remap_index }, - { 498, WindowPos3fMESA_remap_index }, - { 14298, WindowPos3fvMESA_remap_index }, - { 23021, WindowPos3iMESA_remap_index }, - { 28840, WindowPos3ivMESA_remap_index }, - { 17976, WindowPos3sMESA_remap_index }, - { 30319, WindowPos3svMESA_remap_index }, - { 10538, WindowPos4dMESA_remap_index }, - { 16314, WindowPos4dvMESA_remap_index }, - { 13375, WindowPos4fMESA_remap_index }, - { 29357, WindowPos4fvMESA_remap_index }, - { 28993, WindowPos4iMESA_remap_index }, - { 11836, WindowPos4ivMESA_remap_index }, - { 18149, WindowPos4sMESA_remap_index }, - { 3021, WindowPos4svMESA_remap_index }, - { 13137, MultiModeDrawArraysIBM_remap_index }, - { 27691, MultiModeDrawElementsIBM_remap_index }, - { 11640, DeleteFencesNV_remap_index }, - { 26763, FinishFenceNV_remap_index }, - { 3527, GenFencesNV_remap_index }, - { 16294, GetFenceivNV_remap_index }, - { 7809, IsFenceNV_remap_index }, - { 13025, SetFenceNV_remap_index }, - { 3984, TestFenceNV_remap_index }, - { 30290, AreProgramsResidentNV_remap_index }, - { 29645, BindProgramNV_remap_index }, - { 24802, DeleteProgramsNV_remap_index }, - { 20547, ExecuteProgramNV_remap_index }, - { 31780, GenProgramsNV_remap_index }, - { 22360, GetProgramParameterdvNV_remap_index }, - { 9985, GetProgramParameterfvNV_remap_index }, - { 25185, GetProgramStringNV_remap_index }, - { 23398, GetProgramivNV_remap_index }, - { 22594, GetTrackMatrixivNV_remap_index }, - { 24979, GetVertexAttribPointervNV_remap_index }, - { 23671, GetVertexAttribdvNV_remap_index }, - { 8851, GetVertexAttribfvNV_remap_index }, - { 17606, GetVertexAttribivNV_remap_index }, - { 18396, IsProgramNV_remap_index }, - { 8934, LoadProgramNV_remap_index }, - { 26606, ProgramParameters4dvNV_remap_index }, - { 23328, ProgramParameters4fvNV_remap_index }, - { 19808, RequestResidentProgramsNV_remap_index }, - { 21374, TrackMatrixNV_remap_index }, - { 30873, VertexAttrib1dNV_remap_index }, - { 12936, VertexAttrib1dvNV_remap_index }, - { 27197, VertexAttrib1fNV_remap_index }, - { 2328, VertexAttrib1fvNV_remap_index }, - { 29414, VertexAttrib1sNV_remap_index }, - { 14371, VertexAttrib1svNV_remap_index }, - { 4570, VertexAttrib2dNV_remap_index }, - { 12851, VertexAttrib2dvNV_remap_index }, - { 19263, VertexAttrib2fNV_remap_index }, - { 12436, VertexAttrib2fvNV_remap_index }, - { 5594, VertexAttrib2sNV_remap_index }, - { 18030, VertexAttrib2svNV_remap_index }, - { 10735, VertexAttrib3dNV_remap_index }, - { 30540, VertexAttrib3dvNV_remap_index }, - { 9797, VertexAttrib3fNV_remap_index }, - { 23698, VertexAttrib3fvNV_remap_index }, - { 21230, VertexAttrib3sNV_remap_index }, - { 22621, VertexAttrib3svNV_remap_index }, - { 27665, VertexAttrib4dNV_remap_index }, - { 31817, VertexAttrib4dvNV_remap_index }, - { 4237, VertexAttrib4fNV_remap_index }, - { 8984, VertexAttrib4fvNV_remap_index }, - { 25584, VertexAttrib4sNV_remap_index }, - { 1345, VertexAttrib4svNV_remap_index }, - { 4728, VertexAttrib4ubNV_remap_index }, - { 760, VertexAttrib4ubvNV_remap_index }, - { 20727, VertexAttribPointerNV_remap_index }, - { 2180, VertexAttribs1dvNV_remap_index }, - { 25067, VertexAttribs1fvNV_remap_index }, - { 31617, VertexAttribs1svNV_remap_index }, - { 9822, VertexAttribs2dvNV_remap_index }, - { 24260, VertexAttribs2fvNV_remap_index }, - { 16913, VertexAttribs2svNV_remap_index }, - { 4955, VertexAttribs3dvNV_remap_index }, - { 2060, VertexAttribs3fvNV_remap_index }, - { 28588, VertexAttribs3svNV_remap_index }, - { 25674, VertexAttribs4dvNV_remap_index }, - { 5008, VertexAttribs4fvNV_remap_index }, - { 31404, VertexAttribs4svNV_remap_index }, - { 28336, VertexAttribs4ubvNV_remap_index }, - { 25744, GetTexBumpParameterfvATI_remap_index }, - { 31658, GetTexBumpParameterivATI_remap_index }, - { 17693, TexBumpParameterfvATI_remap_index }, - { 19679, TexBumpParameterivATI_remap_index }, - { 14917, AlphaFragmentOp1ATI_remap_index }, - { 10397, AlphaFragmentOp2ATI_remap_index }, - { 23614, AlphaFragmentOp3ATI_remap_index }, - { 28515, BeginFragmentShaderATI_remap_index }, - { 29844, BindFragmentShaderATI_remap_index }, - { 22750, ColorFragmentOp1ATI_remap_index }, - { 4115, ColorFragmentOp2ATI_remap_index }, - { 30185, ColorFragmentOp3ATI_remap_index }, - { 5154, DeleteFragmentShaderATI_remap_index }, - { 31841, EndFragmentShaderATI_remap_index }, - { 31087, GenFragmentShadersATI_remap_index }, - { 24391, PassTexCoordATI_remap_index }, - { 6542, SampleMapATI_remap_index }, - { 6315, SetFragmentShaderConstantATI_remap_index }, - { 345, PointParameteriNV_remap_index }, - { 13577, PointParameterivNV_remap_index }, - { 27504, ActiveStencilFaceEXT_remap_index }, - { 26266, BindVertexArrayAPPLE_remap_index }, - { 2631, DeleteVertexArraysAPPLE_remap_index }, - { 17252, GenVertexArraysAPPLE_remap_index }, - { 22425, IsVertexArrayAPPLE_remap_index }, - { 801, GetProgramNamedParameterdvNV_remap_index }, - { 3368, GetProgramNamedParameterfvNV_remap_index }, - { 25775, ProgramNamedParameter4dNV_remap_index }, - { 13903, ProgramNamedParameter4dvNV_remap_index }, - { 8467, ProgramNamedParameter4fNV_remap_index }, - { 11206, ProgramNamedParameter4fvNV_remap_index }, - { 16249, PrimitiveRestartIndexNV_remap_index }, - { 29334, PrimitiveRestartNV_remap_index }, - { 23307, DepthBoundsEXT_remap_index }, - { 1095, BlendEquationSeparateEXT_remap_index }, - { 14072, BindFramebufferEXT_remap_index }, - { 24578, BindRenderbufferEXT_remap_index }, - { 9231, CheckFramebufferStatusEXT_remap_index }, - { 21715, DeleteFramebuffersEXT_remap_index }, - { 30442, DeleteRenderbuffersEXT_remap_index }, - { 12875, FramebufferRenderbufferEXT_remap_index }, - { 13042, FramebufferTexture1DEXT_remap_index }, - { 11000, FramebufferTexture2DEXT_remap_index }, - { 10640, FramebufferTexture3DEXT_remap_index }, - { 22317, GenFramebuffersEXT_remap_index }, - { 16799, GenRenderbuffersEXT_remap_index }, - { 6261, GenerateMipmapEXT_remap_index }, - { 20824, GetFramebufferAttachmentParameterivEXT_remap_index }, - { 30993, GetRenderbufferParameterivEXT_remap_index }, - { 19559, IsFramebufferEXT_remap_index }, - { 31740, IsRenderbufferEXT_remap_index }, - { 7756, RenderbufferStorageEXT_remap_index }, - { 677, BlitFramebufferEXT_remap_index }, - { 13722, BufferParameteriAPPLE_remap_index }, - { 18428, FlushMappedBufferRangeAPPLE_remap_index }, - { 1751, BindFragDataLocationEXT_remap_index }, - { 23420, GetFragDataLocationEXT_remap_index }, - { 10100, GetUniformuivEXT_remap_index }, - { 2810, GetVertexAttribIivEXT_remap_index }, - { 4001, GetVertexAttribIuivEXT_remap_index }, - { 11486, Uniform1uiEXT_remap_index }, - { 26691, Uniform1uivEXT_remap_index }, - { 21326, Uniform2uiEXT_remap_index }, - { 4093, Uniform2uivEXT_remap_index }, - { 27944, Uniform3uiEXT_remap_index }, - { 14032, Uniform3uivEXT_remap_index }, - { 3305, Uniform4uiEXT_remap_index }, - { 8257, Uniform4uivEXT_remap_index }, - { 17581, VertexAttribI1iEXT_remap_index }, - { 920, VertexAttribI1ivEXT_remap_index }, - { 2429, VertexAttribI1uiEXT_remap_index }, - { 12184, VertexAttribI1uivEXT_remap_index }, + { 2690, UniformMatrix4fvARB_remap_index }, + { 25184, UseProgramObjectARB_remap_index }, + { 14807, ValidateProgramARB_remap_index }, + { 21232, BindAttribLocationARB_remap_index }, + { 4940, GetActiveAttribARB_remap_index }, + { 16509, GetAttribLocationARB_remap_index }, + { 29132, DrawBuffersARB_remap_index }, + { 17850, DrawArraysInstancedARB_remap_index }, + { 6457, DrawElementsInstancedARB_remap_index }, + { 13126, RenderbufferStorageMultisample_remap_index }, + { 13597, FramebufferTextureARB_remap_index }, + { 25577, FramebufferTextureFaceARB_remap_index }, + { 23991, ProgramParameteriARB_remap_index }, + { 19143, FlushMappedBufferRange_remap_index }, + { 27568, MapBufferRange_remap_index }, + { 16337, BindVertexArray_remap_index }, + { 14630, GenVertexArrays_remap_index }, + { 29928, CopyBufferSubData_remap_index }, + { 30858, ClientWaitSync_remap_index }, + { 2609, DeleteSync_remap_index }, + { 7191, FenceSync_remap_index }, + { 15178, GetInteger64v_remap_index }, + { 22477, GetSynciv_remap_index }, + { 29071, IsSync_remap_index }, + { 9388, WaitSync_remap_index }, + { 3797, DrawElementsBaseVertex_remap_index }, + { 30263, DrawRangeElementsBaseVertex_remap_index }, + { 26190, MultiDrawElementsBaseVertex_remap_index }, + { 5091, BindTransformFeedback_remap_index }, + { 3232, DeleteTransformFeedbacks_remap_index }, + { 6429, DrawTransformFeedback_remap_index }, + { 9607, GenTransformFeedbacks_remap_index }, + { 27984, IsTransformFeedback_remap_index }, + { 25770, PauseTransformFeedback_remap_index }, + { 5528, ResumeTransformFeedback_remap_index }, + { 5396, PolygonOffsetEXT_remap_index }, + { 23099, GetPixelTexGenParameterfvSGIS_remap_index }, + { 4417, GetPixelTexGenParameterivSGIS_remap_index }, + { 22832, PixelTexGenParameterfSGIS_remap_index }, + { 624, PixelTexGenParameterfvSGIS_remap_index }, + { 12634, PixelTexGenParameteriSGIS_remap_index }, + { 13771, PixelTexGenParameterivSGIS_remap_index }, + { 16425, SampleMaskSGIS_remap_index }, + { 19825, SamplePatternSGIS_remap_index }, + { 26119, ColorPointerEXT_remap_index }, + { 17512, EdgeFlagPointerEXT_remap_index }, + { 6050, IndexPointerEXT_remap_index }, + { 6130, NormalPointerEXT_remap_index }, + { 15772, TexCoordPointerEXT_remap_index }, + { 6980, VertexPointerEXT_remap_index }, + { 3599, PointParameterfEXT_remap_index }, + { 7831, PointParameterfvEXT_remap_index }, + { 31734, LockArraysEXT_remap_index }, + { 14871, UnlockArraysEXT_remap_index }, + { 1267, SecondaryColor3bEXT_remap_index }, + { 7990, SecondaryColor3bvEXT_remap_index }, + { 10399, SecondaryColor3dEXT_remap_index }, + { 25380, SecondaryColor3dvEXT_remap_index }, + { 27850, SecondaryColor3fEXT_remap_index }, + { 18178, SecondaryColor3fvEXT_remap_index }, + { 470, SecondaryColor3iEXT_remap_index }, + { 16082, SecondaryColor3ivEXT_remap_index }, + { 10034, SecondaryColor3sEXT_remap_index }, + { 30522, SecondaryColor3svEXT_remap_index }, + { 26987, SecondaryColor3ubEXT_remap_index }, + { 21123, SecondaryColor3ubvEXT_remap_index }, + { 12876, SecondaryColor3uiEXT_remap_index }, + { 22719, SecondaryColor3uivEXT_remap_index }, + { 25627, SecondaryColor3usEXT_remap_index }, + { 12949, SecondaryColor3usvEXT_remap_index }, + { 11769, SecondaryColorPointerEXT_remap_index }, + { 25441, MultiDrawArraysEXT_remap_index }, + { 20813, MultiDrawElementsEXT_remap_index }, + { 21008, FogCoordPointerEXT_remap_index }, + { 4566, FogCoorddEXT_remap_index }, + { 31135, FogCoorddvEXT_remap_index }, + { 4683, FogCoordfEXT_remap_index }, + { 26910, FogCoordfvEXT_remap_index }, + { 19047, PixelTexGenSGIX_remap_index }, + { 27495, BlendFuncSeparateEXT_remap_index }, + { 6892, FlushVertexArrayRangeNV_remap_index }, + { 5345, VertexArrayRangeNV_remap_index }, + { 27915, CombinerInputNV_remap_index }, + { 2116, CombinerOutputNV_remap_index }, + { 30675, CombinerParameterfNV_remap_index }, + { 5219, CombinerParameterfvNV_remap_index }, + { 22201, CombinerParameteriNV_remap_index }, + { 32150, CombinerParameterivNV_remap_index }, + { 7268, FinalCombinerInputNV_remap_index }, + { 9813, GetCombinerInputParameterfvNV_remap_index }, + { 31987, GetCombinerInputParameterivNV_remap_index }, + { 13872, GetCombinerOutputParameterfvNV_remap_index }, + { 13700, GetCombinerOutputParameterivNV_remap_index }, + { 6637, GetFinalCombinerInputParameterfvNV_remap_index }, + { 24623, GetFinalCombinerInputParameterivNV_remap_index }, + { 12574, ResizeBuffersMESA_remap_index }, + { 11095, WindowPos2dMESA_remap_index }, + { 1060, WindowPos2dvMESA_remap_index }, + { 32978, WindowPos2fMESA_remap_index }, + { 7935, WindowPos2fvMESA_remap_index }, + { 18125, WindowPos2iMESA_remap_index }, + { 20298, WindowPos2ivMESA_remap_index }, + { 20912, WindowPos2sMESA_remap_index }, + { 5748, WindowPos2svMESA_remap_index }, + { 7760, WindowPos3dMESA_remap_index }, + { 14018, WindowPos3dvMESA_remap_index }, + { 516, WindowPos3fMESA_remap_index }, + { 14932, WindowPos3fvMESA_remap_index }, + { 23884, WindowPos3iMESA_remap_index }, + { 29873, WindowPos3ivMESA_remap_index }, + { 18742, WindowPos3sMESA_remap_index }, + { 31391, WindowPos3svMESA_remap_index }, + { 11046, WindowPos4dMESA_remap_index }, + { 16966, WindowPos4dvMESA_remap_index }, + { 13977, WindowPos4fMESA_remap_index }, + { 30429, WindowPos4fvMESA_remap_index }, + { 30026, WindowPos4iMESA_remap_index }, + { 12377, WindowPos4ivMESA_remap_index }, + { 18926, WindowPos4sMESA_remap_index }, + { 3183, WindowPos4svMESA_remap_index }, + { 13739, MultiModeDrawArraysIBM_remap_index }, + { 28690, MultiModeDrawElementsIBM_remap_index }, + { 12181, DeleteFencesNV_remap_index }, + { 27762, FinishFenceNV_remap_index }, + { 3721, GenFencesNV_remap_index }, + { 16946, GetFenceivNV_remap_index }, + { 8227, IsFenceNV_remap_index }, + { 13627, SetFenceNV_remap_index }, + { 4178, TestFenceNV_remap_index }, + { 31362, AreProgramsResidentNV_remap_index }, + { 30717, BindProgramNV_remap_index }, + { 25710, DeleteProgramsNV_remap_index }, + { 21341, ExecuteProgramNV_remap_index }, + { 32871, GenProgramsNV_remap_index }, + { 23204, GetProgramParameterdvNV_remap_index }, + { 10461, GetProgramParameterfvNV_remap_index }, + { 26093, GetProgramStringNV_remap_index }, + { 24261, GetProgramivNV_remap_index }, + { 23438, GetTrackMatrixivNV_remap_index }, + { 25887, GetVertexAttribPointervNV_remap_index }, + { 24556, GetVertexAttribdvNV_remap_index }, + { 9283, GetVertexAttribfvNV_remap_index }, + { 18349, GetVertexAttribivNV_remap_index }, + { 19173, IsProgramNV_remap_index }, + { 9366, LoadProgramNV_remap_index }, + { 27591, ProgramParameters4dvNV_remap_index }, + { 24191, ProgramParameters4fvNV_remap_index }, + { 20602, RequestResidentProgramsNV_remap_index }, + { 22179, TrackMatrixNV_remap_index }, + { 31964, VertexAttrib1dNV_remap_index }, + { 13538, VertexAttrib1dvNV_remap_index }, + { 28196, VertexAttrib1fNV_remap_index }, + { 2415, VertexAttrib1fvNV_remap_index }, + { 30486, VertexAttrib1sNV_remap_index }, + { 15005, VertexAttrib1svNV_remap_index }, + { 4845, VertexAttrib2dNV_remap_index }, + { 13431, VertexAttrib2dvNV_remap_index }, + { 20057, VertexAttrib2fNV_remap_index }, + { 12997, VertexAttrib2fvNV_remap_index }, + { 5960, VertexAttrib2sNV_remap_index }, + { 18796, VertexAttrib2svNV_remap_index }, + { 11243, VertexAttrib3dNV_remap_index }, + { 31612, VertexAttrib3dvNV_remap_index }, + { 10273, VertexAttrib3fNV_remap_index }, + { 24583, VertexAttrib3fvNV_remap_index }, + { 22022, VertexAttrib3sNV_remap_index }, + { 23465, VertexAttrib3svNV_remap_index }, + { 28664, VertexAttrib4dNV_remap_index }, + { 32908, VertexAttrib4dvNV_remap_index }, + { 4467, VertexAttrib4fNV_remap_index }, + { 9416, VertexAttrib4fvNV_remap_index }, + { 26569, VertexAttrib4sNV_remap_index }, + { 1409, VertexAttrib4svNV_remap_index }, + { 5003, VertexAttrib4ubNV_remap_index }, + { 778, VertexAttrib4ubvNV_remap_index }, + { 21521, VertexAttribPointerNV_remap_index }, + { 2267, VertexAttribs1dvNV_remap_index }, + { 25975, VertexAttribs1fvNV_remap_index }, + { 32708, VertexAttribs1svNV_remap_index }, + { 10298, VertexAttribs2dvNV_remap_index }, + { 25145, VertexAttribs2fvNV_remap_index }, + { 17538, VertexAttribs2svNV_remap_index }, + { 5247, VertexAttribs3dvNV_remap_index }, + { 2147, VertexAttribs3fvNV_remap_index }, + { 29621, VertexAttribs3svNV_remap_index }, + { 26659, VertexAttribs4dvNV_remap_index }, + { 5319, VertexAttribs4fvNV_remap_index }, + { 32495, VertexAttribs4svNV_remap_index }, + { 29369, VertexAttribs4ubvNV_remap_index }, + { 26729, GetTexBumpParameterfvATI_remap_index }, + { 32749, GetTexBumpParameterivATI_remap_index }, + { 18459, TexBumpParameterfvATI_remap_index }, + { 20473, TexBumpParameterivATI_remap_index }, + { 15551, AlphaFragmentOp1ATI_remap_index }, + { 10889, AlphaFragmentOp2ATI_remap_index }, + { 24499, AlphaFragmentOp3ATI_remap_index }, + { 29548, BeginFragmentShaderATI_remap_index }, + { 30916, BindFragmentShaderATI_remap_index }, + { 23594, ColorFragmentOp1ATI_remap_index }, + { 4345, ColorFragmentOp2ATI_remap_index }, + { 31257, ColorFragmentOp3ATI_remap_index }, + { 5485, DeleteFragmentShaderATI_remap_index }, + { 32932, EndFragmentShaderATI_remap_index }, + { 32178, GenFragmentShadersATI_remap_index }, + { 25299, PassTexCoordATI_remap_index }, + { 6960, SampleMapATI_remap_index }, + { 6733, SetFragmentShaderConstantATI_remap_index }, + { 363, PointParameteriNV_remap_index }, + { 14179, PointParameterivNV_remap_index }, + { 28503, ActiveStencilFaceEXT_remap_index }, + { 27251, BindVertexArrayAPPLE_remap_index }, + { 2737, DeleteVertexArraysAPPLE_remap_index }, + { 17955, GenVertexArraysAPPLE_remap_index }, + { 23269, IsVertexArrayAPPLE_remap_index }, + { 819, GetProgramNamedParameterdvNV_remap_index }, + { 3562, GetProgramNamedParameterfvNV_remap_index }, + { 26760, ProgramNamedParameter4dNV_remap_index }, + { 14505, ProgramNamedParameter4dvNV_remap_index }, + { 8899, ProgramNamedParameter4fNV_remap_index }, + { 11734, ProgramNamedParameter4fvNV_remap_index }, + { 16877, PrimitiveRestartIndexNV_remap_index }, + { 30406, PrimitiveRestartNV_remap_index }, + { 24170, DepthBoundsEXT_remap_index }, + { 1159, BlendEquationSeparateEXT_remap_index }, + { 14706, BindFramebufferEXT_remap_index }, + { 25486, BindRenderbufferEXT_remap_index }, + { 9663, CheckFramebufferStatusEXT_remap_index }, + { 22520, DeleteFramebuffersEXT_remap_index }, + { 31514, DeleteRenderbuffersEXT_remap_index }, + { 13455, FramebufferRenderbufferEXT_remap_index }, + { 13644, FramebufferTexture1DEXT_remap_index }, + { 11528, FramebufferTexture2DEXT_remap_index }, + { 11148, FramebufferTexture3DEXT_remap_index }, + { 23135, GenFramebuffersEXT_remap_index }, + { 17403, GenRenderbuffersEXT_remap_index }, + { 6679, GenerateMipmapEXT_remap_index }, + { 21597, GetFramebufferAttachmentParameterivEXT_remap_index }, + { 32084, GetRenderbufferParameterivEXT_remap_index }, + { 20353, IsFramebufferEXT_remap_index }, + { 32831, IsRenderbufferEXT_remap_index }, + { 8174, RenderbufferStorageEXT_remap_index }, + { 695, BlitFramebufferEXT_remap_index }, + { 14324, BufferParameteriAPPLE_remap_index }, + { 19205, FlushMappedBufferRangeAPPLE_remap_index }, + { 1815, BindFragDataLocationEXT_remap_index }, + { 24283, GetFragDataLocationEXT_remap_index }, + { 10576, GetUniformuivEXT_remap_index }, + { 2933, GetVertexAttribIivEXT_remap_index }, + { 4195, GetVertexAttribIuivEXT_remap_index }, + { 12014, Uniform1uiEXT_remap_index }, + { 27676, Uniform1uivEXT_remap_index }, + { 22118, Uniform2uiEXT_remap_index }, + { 4309, Uniform2uivEXT_remap_index }, + { 28943, Uniform3uiEXT_remap_index }, + { 14652, Uniform3uivEXT_remap_index }, + { 3486, Uniform4uiEXT_remap_index }, + { 8675, Uniform4uivEXT_remap_index }, + { 18306, VertexAttribI1iEXT_remap_index }, + { 965, VertexAttribI1ivEXT_remap_index }, + { 2516, VertexAttribI1uiEXT_remap_index }, + { 12725, VertexAttribI1uivEXT_remap_index }, { 81, VertexAttribI2iEXT_remap_index }, - { 22862, VertexAttribI2ivEXT_remap_index }, - { 4981, VertexAttribI2uiEXT_remap_index }, - { 4473, VertexAttribI2uivEXT_remap_index }, - { 25404, VertexAttribI3iEXT_remap_index }, - { 29165, VertexAttribI3ivEXT_remap_index }, - { 3178, VertexAttribI3uiEXT_remap_index }, - { 29081, VertexAttribI3uivEXT_remap_index }, - { 21075, VertexAttribI4bvEXT_remap_index }, - { 13982, VertexAttribI4iEXT_remap_index }, - { 30711, VertexAttribI4ivEXT_remap_index }, - { 12797, VertexAttribI4svEXT_remap_index }, - { 15854, VertexAttribI4ubvEXT_remap_index }, - { 15589, VertexAttribI4uiEXT_remap_index }, - { 5108, VertexAttribI4uivEXT_remap_index }, - { 10803, VertexAttribI4usvEXT_remap_index }, - { 17660, VertexAttribIPointerEXT_remap_index }, - { 2865, FramebufferTextureLayerEXT_remap_index }, - { 5329, ColorMaskIndexedEXT_remap_index }, - { 18054, DisableIndexedEXT_remap_index }, - { 25431, EnableIndexedEXT_remap_index }, - { 20795, GetBooleanIndexedvEXT_remap_index }, - { 10430, GetIntegerIndexedvEXT_remap_index }, - { 21791, IsEnabledIndexedEXT_remap_index }, - { 21691, ClearColorIiEXT_remap_index }, - { 3255, ClearColorIuiEXT_remap_index }, - { 9420, GetTexParameterIivEXT_remap_index }, - { 5564, GetTexParameterIuivEXT_remap_index }, - { 2839, TexParameterIivEXT_remap_index }, - { 25320, TexParameterIuivEXT_remap_index }, - { 4366, BeginConditionalRenderNV_remap_index }, - { 24364, EndConditionalRenderNV_remap_index }, - { 8878, BeginTransformFeedbackEXT_remap_index }, - { 18078, BindBufferBaseEXT_remap_index }, - { 17948, BindBufferOffsetEXT_remap_index }, - { 11661, BindBufferRangeEXT_remap_index }, - { 13637, EndTransformFeedbackEXT_remap_index }, - { 10282, GetTransformFeedbackVaryingEXT_remap_index }, - { 19864, TransformFeedbackVaryingsEXT_remap_index }, - { 28237, ProvokingVertexEXT_remap_index }, - { 10230, GetTexParameterPointervAPPLE_remap_index }, - { 4755, TextureRangeAPPLE_remap_index }, - { 11072, GetObjectParameterivAPPLE_remap_index }, - { 19003, ObjectPurgeableAPPLE_remap_index }, - { 5358, ObjectUnpurgeableAPPLE_remap_index }, - { 16621, ActiveProgramEXT_remap_index }, - { 16592, CreateShaderProgramEXT_remap_index }, - { 27289, UseShaderProgramEXT_remap_index }, - { 27530, StencilFuncSeparateATI_remap_index }, - { 17319, ProgramEnvParameters4fvEXT_remap_index }, - { 20758, ProgramLocalParameters4fvEXT_remap_index }, - { 13505, GetQueryObjecti64vEXT_remap_index }, - { 9848, GetQueryObjectui64vEXT_remap_index }, - { 22819, EGLImageTargetRenderbufferStorageOES_remap_index }, - { 11579, EGLImageTargetTexture2DOES_remap_index }, + { 23706, VertexAttribI2ivEXT_remap_index }, + { 5273, VertexAttribI2uiEXT_remap_index }, + { 4728, VertexAttribI2uivEXT_remap_index }, + { 26361, VertexAttribI3iEXT_remap_index }, + { 30218, VertexAttribI3ivEXT_remap_index }, + { 3340, VertexAttribI3uiEXT_remap_index }, + { 30114, VertexAttribI3uivEXT_remap_index }, + { 21848, VertexAttribI4bvEXT_remap_index }, + { 14584, VertexAttribI4iEXT_remap_index }, + { 31783, VertexAttribI4ivEXT_remap_index }, + { 13358, VertexAttribI4svEXT_remap_index }, + { 16462, VertexAttribI4ubvEXT_remap_index }, + { 16145, VertexAttribI4uiEXT_remap_index }, + { 5419, VertexAttribI4uivEXT_remap_index }, + { 11311, VertexAttribI4usvEXT_remap_index }, + { 18403, VertexAttribIPointerEXT_remap_index }, + { 3027, FramebufferTextureLayerEXT_remap_index }, + { 5660, ColorMaskIndexedEXT_remap_index }, + { 18820, DisableIndexedEXT_remap_index }, + { 26406, EnableIndexedEXT_remap_index }, + { 21552, GetBooleanIndexedvEXT_remap_index }, + { 10922, GetIntegerIndexedvEXT_remap_index }, + { 22596, IsEnabledIndexedEXT_remap_index }, + { 22496, ClearColorIiEXT_remap_index }, + { 3436, ClearColorIuiEXT_remap_index }, + { 9852, GetTexParameterIivEXT_remap_index }, + { 5908, GetTexParameterIuivEXT_remap_index }, + { 2983, TexParameterIivEXT_remap_index }, + { 26228, TexParameterIuivEXT_remap_index }, + { 4596, BeginConditionalRenderNV_remap_index }, + { 25249, EndConditionalRenderNV_remap_index }, + { 9310, BeginTransformFeedbackEXT_remap_index }, + { 18855, BindBufferBaseEXT_remap_index }, + { 18714, BindBufferOffsetEXT_remap_index }, + { 12202, BindBufferRangeEXT_remap_index }, + { 14239, EndTransformFeedbackEXT_remap_index }, + { 10774, GetTransformFeedbackVaryingEXT_remap_index }, + { 20658, TransformFeedbackVaryingsEXT_remap_index }, + { 29270, ProvokingVertexEXT_remap_index }, + { 10722, GetTexParameterPointervAPPLE_remap_index }, + { 5047, TextureRangeAPPLE_remap_index }, + { 11600, GetObjectParameterivAPPLE_remap_index }, + { 19780, ObjectPurgeableAPPLE_remap_index }, + { 5702, ObjectUnpurgeableAPPLE_remap_index }, + { 17225, ActiveProgramEXT_remap_index }, + { 17196, CreateShaderProgramEXT_remap_index }, + { 28288, UseShaderProgramEXT_remap_index }, + { 28529, StencilFuncSeparateATI_remap_index }, + { 18044, ProgramEnvParameters4fvEXT_remap_index }, + { 17090, ProgramLocalParameters4fvEXT_remap_index }, + { 14107, GetQueryObjecti64vEXT_remap_index }, + { 10324, GetQueryObjectui64vEXT_remap_index }, + { 23663, EGLImageTargetRenderbufferStorageOES_remap_index }, + { 12120, 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 */ - { 2549, _gloffset_BlendColor }, + { 2655, _gloffset_BlendColor }, /* from GL_EXT_blend_minmax */ - { 10697, _gloffset_BlendEquation }, + { 11205, _gloffset_BlendEquation }, /* from GL_EXT_color_subtable */ - { 16336, _gloffset_ColorSubTable }, - { 30374, _gloffset_CopyColorSubTable }, + { 16988, _gloffset_ColorSubTable }, + { 31446, _gloffset_CopyColorSubTable }, /* from GL_EXT_convolution */ - { 239, _gloffset_ConvolutionFilter1D }, - { 2367, _gloffset_CopyConvolutionFilter1D }, - { 3864, _gloffset_GetConvolutionParameteriv }, - { 8105, _gloffset_ConvolutionFilter2D }, - { 8293, _gloffset_ConvolutionParameteriv }, - { 8753, _gloffset_ConvolutionParameterfv }, - { 19707, _gloffset_GetSeparableFilter }, - { 23075, _gloffset_SeparableFilter2D }, - { 23916, _gloffset_ConvolutionParameteri }, - { 24039, _gloffset_ConvolutionParameterf }, - { 25610, _gloffset_GetConvolutionParameterfv }, - { 26432, _gloffset_GetConvolutionFilter }, - { 28777, _gloffset_CopyConvolutionFilter2D }, + { 257, _gloffset_ConvolutionFilter1D }, + { 2454, _gloffset_CopyConvolutionFilter1D }, + { 4058, _gloffset_GetConvolutionParameteriv }, + { 8523, _gloffset_ConvolutionFilter2D }, + { 8725, _gloffset_ConvolutionParameteriv }, + { 9185, _gloffset_ConvolutionParameterfv }, + { 20501, _gloffset_GetSeparableFilter }, + { 23938, _gloffset_SeparableFilter2D }, + { 24801, _gloffset_ConvolutionParameteri }, + { 24924, _gloffset_ConvolutionParameterf }, + { 26595, _gloffset_GetConvolutionParameterfv }, + { 27417, _gloffset_GetConvolutionFilter }, + { 29810, _gloffset_CopyConvolutionFilter2D }, /* from GL_EXT_copy_texture */ - { 14431, _gloffset_CopyTexSubImage3D }, - { 16047, _gloffset_CopyTexImage2D }, - { 23524, _gloffset_CopyTexImage1D }, - { 26113, _gloffset_CopyTexSubImage2D }, - { 28415, _gloffset_CopyTexSubImage1D }, + { 15065, _gloffset_CopyTexSubImage3D }, + { 16675, _gloffset_CopyTexImage2D }, + { 24409, _gloffset_CopyTexImage1D }, + { 27098, _gloffset_CopyTexSubImage2D }, + { 29448, _gloffset_CopyTexSubImage1D }, /* from GL_EXT_draw_range_elements */ - { 9090, _gloffset_DrawRangeElements }, + { 9522, _gloffset_DrawRangeElements }, /* from GL_EXT_histogram */ - { 838, _gloffset_Histogram }, - { 3328, _gloffset_ResetHistogram }, - { 9519, _gloffset_GetMinmax }, - { 14765, _gloffset_GetHistogramParameterfv }, - { 23449, _gloffset_GetMinmaxParameteriv }, - { 25500, _gloffset_ResetMinmax }, - { 26329, _gloffset_GetHistogramParameteriv }, - { 27464, _gloffset_GetHistogram }, - { 29960, _gloffset_Minmax }, - { 31487, _gloffset_GetMinmaxParameterfv }, + { 856, _gloffset_Histogram }, + { 3522, _gloffset_ResetHistogram }, + { 9972, _gloffset_GetMinmax }, + { 15399, _gloffset_GetHistogramParameterfv }, + { 24334, _gloffset_GetMinmaxParameteriv }, + { 26485, _gloffset_ResetMinmax }, + { 27314, _gloffset_GetHistogramParameteriv }, + { 28463, _gloffset_GetHistogram }, + { 31032, _gloffset_Minmax }, + { 32578, _gloffset_GetMinmaxParameterfv }, /* from GL_EXT_paletted_texture */ - { 7967, _gloffset_ColorTable }, - { 14611, _gloffset_GetColorTable }, - { 22064, _gloffset_GetColorTableParameterfv }, - { 24095, _gloffset_GetColorTableParameteriv }, + { 8385, _gloffset_ColorTable }, + { 15245, _gloffset_GetColorTable }, + { 22882, _gloffset_GetColorTableParameterfv }, + { 24980, _gloffset_GetColorTableParameteriv }, /* from GL_EXT_subtexture */ - { 6688, _gloffset_TexSubImage1D }, - { 10157, _gloffset_TexSubImage2D }, + { 7106, _gloffset_TexSubImage1D }, + { 10649, _gloffset_TexSubImage2D }, /* from GL_EXT_texture3D */ - { 1710, _gloffset_TexImage3D }, - { 21833, _gloffset_TexSubImage3D }, + { 1774, _gloffset_TexImage3D }, + { 22651, _gloffset_TexSubImage3D }, /* from GL_EXT_texture_object */ - { 3128, _gloffset_PrioritizeTextures }, - { 7137, _gloffset_AreTexturesResident }, - { 12960, _gloffset_GenTextures }, - { 15097, _gloffset_DeleteTextures }, - { 18709, _gloffset_IsTexture }, - { 28480, _gloffset_BindTexture }, + { 3290, _gloffset_PrioritizeTextures }, + { 7555, _gloffset_AreTexturesResident }, + { 13562, _gloffset_GenTextures }, + { 15731, _gloffset_DeleteTextures }, + { 19486, _gloffset_IsTexture }, + { 29513, _gloffset_BindTexture }, /* from GL_EXT_vertex_array */ - { 23247, _gloffset_ArrayElement }, - { 29548, _gloffset_GetPointerv }, - { 31114, _gloffset_DrawArrays }, + { 24110, _gloffset_ArrayElement }, + { 30620, _gloffset_GetPointerv }, + { 32205, _gloffset_DrawArrays }, /* from GL_SGI_color_table */ - { 7255, _gloffset_ColorTableParameteriv }, - { 7967, _gloffset_ColorTable }, - { 14611, _gloffset_GetColorTable }, - { 14721, _gloffset_CopyColorTable }, - { 18570, _gloffset_ColorTableParameterfv }, - { 22064, _gloffset_GetColorTableParameterfv }, - { 24095, _gloffset_GetColorTableParameteriv }, + { 7673, _gloffset_ColorTableParameteriv }, + { 8385, _gloffset_ColorTable }, + { 15245, _gloffset_GetColorTable }, + { 15355, _gloffset_CopyColorTable }, + { 19347, _gloffset_ColorTableParameterfv }, + { 22882, _gloffset_GetColorTableParameterfv }, + { 24980, _gloffset_GetColorTableParameteriv }, /* from GL_VERSION_1_3 */ - { 407, _gloffset_MultiTexCoord3sARB }, - { 639, _gloffset_ActiveTextureARB }, - { 4031, _gloffset_MultiTexCoord1fvARB }, - { 5789, _gloffset_MultiTexCoord3dARB }, - { 5834, _gloffset_MultiTexCoord2iARB }, - { 5958, _gloffset_MultiTexCoord2svARB }, - { 7923, _gloffset_MultiTexCoord2fARB }, - { 9878, _gloffset_MultiTexCoord3fvARB }, - { 10459, _gloffset_MultiTexCoord4sARB }, - { 11120, _gloffset_MultiTexCoord2dvARB }, - { 11522, _gloffset_MultiTexCoord1svARB }, - { 11894, _gloffset_MultiTexCoord3svARB }, - { 11955, _gloffset_MultiTexCoord4iARB }, - { 12705, _gloffset_MultiTexCoord3iARB }, - { 13534, _gloffset_MultiTexCoord1dARB }, - { 13751, _gloffset_MultiTexCoord3dvARB }, - { 14965, _gloffset_MultiTexCoord3ivARB }, - { 15010, _gloffset_MultiTexCoord2sARB }, - { 16393, _gloffset_MultiTexCoord4ivARB }, - { 18220, _gloffset_ClientActiveTextureARB }, - { 20503, _gloffset_MultiTexCoord2dARB }, - { 20944, _gloffset_MultiTexCoord4dvARB }, - { 21281, _gloffset_MultiTexCoord4fvARB }, - { 22205, _gloffset_MultiTexCoord3fARB }, - { 24623, _gloffset_MultiTexCoord4dARB }, - { 24889, _gloffset_MultiTexCoord1sARB }, - { 25093, _gloffset_MultiTexCoord1dvARB }, - { 25957, _gloffset_MultiTexCoord1ivARB }, - { 26050, _gloffset_MultiTexCoord2ivARB }, - { 26389, _gloffset_MultiTexCoord1iARB }, - { 27739, _gloffset_MultiTexCoord4svARB }, - { 28279, _gloffset_MultiTexCoord1fARB }, - { 28542, _gloffset_MultiTexCoord4fARB }, - { 30948, _gloffset_MultiTexCoord2fvARB }, + { 425, _gloffset_MultiTexCoord3sARB }, + { 657, _gloffset_ActiveTextureARB }, + { 4247, _gloffset_MultiTexCoord1fvARB }, + { 6155, _gloffset_MultiTexCoord3dARB }, + { 6200, _gloffset_MultiTexCoord2iARB }, + { 6324, _gloffset_MultiTexCoord2svARB }, + { 8341, _gloffset_MultiTexCoord2fARB }, + { 10354, _gloffset_MultiTexCoord3fvARB }, + { 10967, _gloffset_MultiTexCoord4sARB }, + { 11648, _gloffset_MultiTexCoord2dvARB }, + { 12063, _gloffset_MultiTexCoord1svARB }, + { 12435, _gloffset_MultiTexCoord3svARB }, + { 12496, _gloffset_MultiTexCoord4iARB }, + { 13266, _gloffset_MultiTexCoord3iARB }, + { 14136, _gloffset_MultiTexCoord1dARB }, + { 14353, _gloffset_MultiTexCoord3dvARB }, + { 15599, _gloffset_MultiTexCoord3ivARB }, + { 15644, _gloffset_MultiTexCoord2sARB }, + { 17045, _gloffset_MultiTexCoord4ivARB }, + { 18997, _gloffset_ClientActiveTextureARB }, + { 21297, _gloffset_MultiTexCoord2dARB }, + { 21717, _gloffset_MultiTexCoord4dvARB }, + { 22073, _gloffset_MultiTexCoord4fvARB }, + { 23023, _gloffset_MultiTexCoord3fARB }, + { 25531, _gloffset_MultiTexCoord4dARB }, + { 25797, _gloffset_MultiTexCoord1sARB }, + { 26001, _gloffset_MultiTexCoord1dvARB }, + { 26942, _gloffset_MultiTexCoord1ivARB }, + { 27035, _gloffset_MultiTexCoord2ivARB }, + { 27374, _gloffset_MultiTexCoord1iARB }, + { 28738, _gloffset_MultiTexCoord4svARB }, + { 29312, _gloffset_MultiTexCoord1fARB }, + { 29575, _gloffset_MultiTexCoord4fARB }, + { 32039, _gloffset_MultiTexCoord2fvARB }, { -1, -1 } }; @@ -5227,7 +5329,7 @@ static const struct gl_function_remap MESA_alt_functions[] = { #if defined(need_GL_3DFX_tbuffer) static const struct gl_function_remap GL_3DFX_tbuffer_functions[] = { - { 8811, -1 }, /* TbufferMask3DFX */ + { 9243, -1 }, /* TbufferMask3DFX */ { -1, -1 } }; #endif @@ -5298,7 +5400,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[] = { - { 11858, -1 }, /* FramebufferTextureLayer */ + { 12399, -1 }, /* FramebufferTextureLayer */ { -1, -1 } }; #endif @@ -5312,11 +5414,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[] = { - { 3579, -1 }, /* MatrixIndexusvARB */ - { 12526, -1 }, /* MatrixIndexuivARB */ - { 13873, -1 }, /* MatrixIndexPointerARB */ - { 18958, -1 }, /* CurrentPaletteMatrixARB */ - { 21949, -1 }, /* MatrixIndexubvARB */ + { 3773, -1 }, /* MatrixIndexusvARB */ + { 13087, -1 }, /* MatrixIndexuivARB */ + { 14475, -1 }, /* MatrixIndexPointerARB */ + { 19735, -1 }, /* CurrentPaletteMatrixARB */ + { 22767, -1 }, /* MatrixIndexubvARB */ { -1, -1 } }; #endif @@ -5393,16 +5495,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[] = { - { 2309, -1 }, /* WeightubvARB */ - { 6149, -1 }, /* WeightivARB */ - { 10562, -1 }, /* WeightPointerARB */ - { 13252, -1 }, /* WeightfvARB */ - { 16939, -1 }, /* WeightbvARB */ - { 20171, -1 }, /* WeightusvARB */ - { 23001, -1 }, /* VertexBlendARB */ - { 28363, -1 }, /* WeightsvARB */ - { 30424, -1 }, /* WeightdvARB */ - { 31148, -1 }, /* WeightuivARB */ + { 2396, -1 }, /* WeightubvARB */ + { 6567, -1 }, /* WeightivARB */ + { 11070, -1 }, /* WeightPointerARB */ + { 13854, -1 }, /* WeightfvARB */ + { 17564, -1 }, /* WeightbvARB */ + { 20965, -1 }, /* WeightusvARB */ + { 23864, -1 }, /* VertexBlendARB */ + { 29396, -1 }, /* WeightsvARB */ + { 31496, -1 }, /* WeightdvARB */ + { 32239, -1 }, /* WeightuivARB */ { -1, -1 } }; #endif @@ -5472,7 +5574,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[] = { - { 2549, _gloffset_BlendColor }, + { 2655, _gloffset_BlendColor }, { -1, -1 } }; #endif @@ -5493,15 +5595,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[] = { - { 10697, _gloffset_BlendEquation }, + { 11205, _gloffset_BlendEquation }, { -1, -1 } }; #endif #if defined(need_GL_EXT_color_subtable) static const struct gl_function_remap GL_EXT_color_subtable_functions[] = { - { 16336, _gloffset_ColorSubTable }, - { 30374, _gloffset_CopyColorSubTable }, + { 16988, _gloffset_ColorSubTable }, + { 31446, _gloffset_CopyColorSubTable }, { -1, -1 } }; #endif @@ -5515,66 +5617,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[] = { - { 239, _gloffset_ConvolutionFilter1D }, - { 2367, _gloffset_CopyConvolutionFilter1D }, - { 3864, _gloffset_GetConvolutionParameteriv }, - { 8105, _gloffset_ConvolutionFilter2D }, - { 8293, _gloffset_ConvolutionParameteriv }, - { 8753, _gloffset_ConvolutionParameterfv }, - { 19707, _gloffset_GetSeparableFilter }, - { 23075, _gloffset_SeparableFilter2D }, - { 23916, _gloffset_ConvolutionParameteri }, - { 24039, _gloffset_ConvolutionParameterf }, - { 25610, _gloffset_GetConvolutionParameterfv }, - { 26432, _gloffset_GetConvolutionFilter }, - { 28777, _gloffset_CopyConvolutionFilter2D }, + { 257, _gloffset_ConvolutionFilter1D }, + { 2454, _gloffset_CopyConvolutionFilter1D }, + { 4058, _gloffset_GetConvolutionParameteriv }, + { 8523, _gloffset_ConvolutionFilter2D }, + { 8725, _gloffset_ConvolutionParameteriv }, + { 9185, _gloffset_ConvolutionParameterfv }, + { 20501, _gloffset_GetSeparableFilter }, + { 23938, _gloffset_SeparableFilter2D }, + { 24801, _gloffset_ConvolutionParameteri }, + { 24924, _gloffset_ConvolutionParameterf }, + { 26595, _gloffset_GetConvolutionParameterfv }, + { 27417, _gloffset_GetConvolutionFilter }, + { 29810, _gloffset_CopyConvolutionFilter2D }, { -1, -1 } }; #endif #if defined(need_GL_EXT_coordinate_frame) static const struct gl_function_remap GL_EXT_coordinate_frame_functions[] = { - { 10017, -1 }, /* TangentPointerEXT */ - { 12013, -1 }, /* Binormal3ivEXT */ - { 12658, -1 }, /* Tangent3sEXT */ - { 13938, -1 }, /* Tangent3fvEXT */ - { 17929, -1 }, /* Tangent3dvEXT */ - { 18656, -1 }, /* Binormal3bvEXT */ - { 19760, -1 }, /* Binormal3dEXT */ - { 21881, -1 }, /* Tangent3fEXT */ - { 23988, -1 }, /* Binormal3sEXT */ - { 24433, -1 }, /* Tangent3ivEXT */ - { 24452, -1 }, /* Tangent3dEXT */ - { 25347, -1 }, /* Binormal3svEXT */ - { 25855, -1 }, /* Binormal3fEXT */ - { 26729, -1 }, /* Binormal3dvEXT */ - { 27983, -1 }, /* Tangent3iEXT */ - { 29062, -1 }, /* Tangent3bvEXT */ - { 29583, -1 }, /* Tangent3bEXT */ - { 30147, -1 }, /* Binormal3fvEXT */ - { 30847, -1 }, /* BinormalPointerEXT */ - { 31252, -1 }, /* Tangent3svEXT */ - { 31689, -1 }, /* Binormal3bEXT */ - { 31866, -1 }, /* Binormal3iEXT */ + { 10493, -1 }, /* TangentPointerEXT */ + { 12554, -1 }, /* Binormal3ivEXT */ + { 13219, -1 }, /* Tangent3sEXT */ + { 14540, -1 }, /* Tangent3fvEXT */ + { 18695, -1 }, /* Tangent3dvEXT */ + { 19433, -1 }, /* Binormal3bvEXT */ + { 20554, -1 }, /* Binormal3dEXT */ + { 22699, -1 }, /* Tangent3fEXT */ + { 24873, -1 }, /* Binormal3sEXT */ + { 25341, -1 }, /* Tangent3ivEXT */ + { 25360, -1 }, /* Tangent3dEXT */ + { 26274, -1 }, /* Binormal3svEXT */ + { 26840, -1 }, /* Binormal3fEXT */ + { 27728, -1 }, /* Binormal3dvEXT */ + { 28995, -1 }, /* Tangent3iEXT */ + { 30095, -1 }, /* Tangent3bvEXT */ + { 30655, -1 }, /* Tangent3bEXT */ + { 31219, -1 }, /* Binormal3fvEXT */ + { 31938, -1 }, /* BinormalPointerEXT */ + { 32343, -1 }, /* Tangent3svEXT */ + { 32780, -1 }, /* Binormal3bEXT */ + { 32957, -1 }, /* Binormal3iEXT */ { -1, -1 } }; #endif #if defined(need_GL_EXT_copy_texture) static const struct gl_function_remap GL_EXT_copy_texture_functions[] = { - { 14431, _gloffset_CopyTexSubImage3D }, - { 16047, _gloffset_CopyTexImage2D }, - { 23524, _gloffset_CopyTexImage1D }, - { 26113, _gloffset_CopyTexSubImage2D }, - { 28415, _gloffset_CopyTexSubImage1D }, + { 15065, _gloffset_CopyTexSubImage3D }, + { 16675, _gloffset_CopyTexImage2D }, + { 24409, _gloffset_CopyTexImage1D }, + { 27098, _gloffset_CopyTexSubImage2D }, + { 29448, _gloffset_CopyTexSubImage1D }, { -1, -1 } }; #endif #if defined(need_GL_EXT_cull_vertex) static const struct gl_function_remap GL_EXT_cull_vertex_functions[] = { - { 8442, -1 }, /* CullParameterdvEXT */ - { 11165, -1 }, /* CullParameterfvEXT */ + { 8874, -1 }, /* CullParameterdvEXT */ + { 11693, -1 }, /* CullParameterfvEXT */ { -1, -1 } }; #endif @@ -5602,7 +5704,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[] = { - { 9090, _gloffset_DrawRangeElements }, + { 9522, _gloffset_DrawRangeElements }, { -1, -1 } }; #endif @@ -5651,39 +5753,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[] = { - { 838, _gloffset_Histogram }, - { 3328, _gloffset_ResetHistogram }, - { 9519, _gloffset_GetMinmax }, - { 14765, _gloffset_GetHistogramParameterfv }, - { 23449, _gloffset_GetMinmaxParameteriv }, - { 25500, _gloffset_ResetMinmax }, - { 26329, _gloffset_GetHistogramParameteriv }, - { 27464, _gloffset_GetHistogram }, - { 29960, _gloffset_Minmax }, - { 31487, _gloffset_GetMinmaxParameterfv }, + { 856, _gloffset_Histogram }, + { 3522, _gloffset_ResetHistogram }, + { 9972, _gloffset_GetMinmax }, + { 15399, _gloffset_GetHistogramParameterfv }, + { 24334, _gloffset_GetMinmaxParameteriv }, + { 26485, _gloffset_ResetMinmax }, + { 27314, _gloffset_GetHistogramParameteriv }, + { 28463, _gloffset_GetHistogram }, + { 31032, _gloffset_Minmax }, + { 32578, _gloffset_GetMinmaxParameterfv }, { -1, -1 } }; #endif #if defined(need_GL_EXT_index_func) static const struct gl_function_remap GL_EXT_index_func_functions[] = { - { 10951, -1 }, /* IndexFuncEXT */ + { 11479, -1 }, /* IndexFuncEXT */ { -1, -1 } }; #endif #if defined(need_GL_EXT_index_material) static const struct gl_function_remap GL_EXT_index_material_functions[] = { - { 20258, -1 }, /* IndexMaterialEXT */ + { 21052, -1 }, /* IndexMaterialEXT */ { -1, -1 } }; #endif #if defined(need_GL_EXT_light_texture) static const struct gl_function_remap GL_EXT_light_texture_functions[] = { - { 25367, -1 }, /* ApplyTextureEXT */ - { 25454, -1 }, /* TextureMaterialEXT */ - { 25479, -1 }, /* TextureLightEXT */ + { 26294, -1 }, /* ApplyTextureEXT */ + { 26439, -1 }, /* TextureMaterialEXT */ + { 26464, -1 }, /* TextureLightEXT */ { -1, -1 } }; #endif @@ -5704,20 +5806,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[] = { - { 7967, _gloffset_ColorTable }, - { 14611, _gloffset_GetColorTable }, - { 22064, _gloffset_GetColorTableParameterfv }, - { 24095, _gloffset_GetColorTableParameteriv }, + { 8385, _gloffset_ColorTable }, + { 15245, _gloffset_GetColorTable }, + { 22882, _gloffset_GetColorTableParameterfv }, + { 24980, _gloffset_GetColorTableParameteriv }, { -1, -1 } }; #endif #if defined(need_GL_EXT_pixel_transform) static const struct gl_function_remap GL_EXT_pixel_transform_functions[] = { - { 20909, -1 }, /* PixelTransformParameterfEXT */ - { 20989, -1 }, /* PixelTransformParameteriEXT */ - { 29298, -1 }, /* PixelTransformParameterfvEXT */ - { 30811, -1 }, /* PixelTransformParameterivEXT */ + { 21682, -1 }, /* PixelTransformParameterfEXT */ + { 21762, -1 }, /* PixelTransformParameteriEXT */ + { 30370, -1 }, /* PixelTransformParameterfvEXT */ + { 31902, -1 }, /* PixelTransformParameterivEXT */ { -1, -1 } }; #endif @@ -5766,16 +5868,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[] = { - { 6688, _gloffset_TexSubImage1D }, - { 10157, _gloffset_TexSubImage2D }, + { 7106, _gloffset_TexSubImage1D }, + { 10649, _gloffset_TexSubImage2D }, { -1, -1 } }; #endif #if defined(need_GL_EXT_texture3D) static const struct gl_function_remap GL_EXT_texture3D_functions[] = { - { 1710, _gloffset_TexImage3D }, - { 21833, _gloffset_TexSubImage3D }, + { 1774, _gloffset_TexImage3D }, + { 22651, _gloffset_TexSubImage3D }, { -1, -1 } }; #endif @@ -5796,19 +5898,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[] = { - { 3128, _gloffset_PrioritizeTextures }, - { 7137, _gloffset_AreTexturesResident }, - { 12960, _gloffset_GenTextures }, - { 15097, _gloffset_DeleteTextures }, - { 18709, _gloffset_IsTexture }, - { 28480, _gloffset_BindTexture }, + { 3290, _gloffset_PrioritizeTextures }, + { 7555, _gloffset_AreTexturesResident }, + { 13562, _gloffset_GenTextures }, + { 15731, _gloffset_DeleteTextures }, + { 19486, _gloffset_IsTexture }, + { 29513, _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[] = { - { 13202, -1 }, /* TextureNormalEXT */ + { 13804, -1 }, /* TextureNormalEXT */ { -1, -1 } }; #endif @@ -5830,30 +5932,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[] = { - { 23247, _gloffset_ArrayElement }, - { 29548, _gloffset_GetPointerv }, - { 31114, _gloffset_DrawArrays }, + { 24110, _gloffset_ArrayElement }, + { 30620, _gloffset_GetPointerv }, + { 32205, _gloffset_DrawArrays }, { -1, -1 } }; #endif #if defined(need_GL_EXT_vertex_weighting) static const struct gl_function_remap GL_EXT_vertex_weighting_functions[] = { - { 18739, -1 }, /* VertexWeightfvEXT */ - { 25833, -1 }, /* VertexWeightfEXT */ - { 27433, -1 }, /* VertexWeightPointerEXT */ + { 19516, -1 }, /* VertexWeightfvEXT */ + { 26818, -1 }, /* VertexWeightfEXT */ + { 28432, -1 }, /* VertexWeightPointerEXT */ { -1, -1 } }; #endif #if defined(need_GL_HP_image_transform) static const struct gl_function_remap GL_HP_image_transform_functions[] = { - { 2240, -1 }, /* GetImageTransformParameterfvHP */ - { 3545, -1 }, /* ImageTransformParameterfHP */ - { 9711, -1 }, /* ImageTransformParameterfvHP */ - { 11420, -1 }, /* ImageTransformParameteriHP */ - { 11748, -1 }, /* GetImageTransformParameterivHP */ - { 18803, -1 }, /* ImageTransformParameterivHP */ + { 2327, -1 }, /* GetImageTransformParameterfvHP */ + { 3739, -1 }, /* ImageTransformParameterfHP */ + { 10187, -1 }, /* ImageTransformParameterfvHP */ + { 11948, -1 }, /* ImageTransformParameteriHP */ + { 12289, -1 }, /* GetImageTransformParameterivHP */ + { 19580, -1 }, /* ImageTransformParameterivHP */ { -1, -1 } }; #endif @@ -5867,14 +5969,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[] = { - { 4149, -1 }, /* SecondaryColorPointerListIBM */ - { 5655, -1 }, /* NormalPointerListIBM */ - { 7311, -1 }, /* FogCoordPointerListIBM */ - { 7618, -1 }, /* VertexPointerListIBM */ - { 11341, -1 }, /* ColorPointerListIBM */ - { 12765, -1 }, /* TexCoordPointerListIBM */ - { 13224, -1 }, /* IndexPointerListIBM */ - { 31430, -1 }, /* EdgeFlagPointerListIBM */ + { 4379, -1 }, /* SecondaryColorPointerListIBM */ + { 6021, -1 }, /* NormalPointerListIBM */ + { 7729, -1 }, /* FogCoordPointerListIBM */ + { 8036, -1 }, /* VertexPointerListIBM */ + { 11869, -1 }, /* ColorPointerListIBM */ + { 13326, -1 }, /* TexCoordPointerListIBM */ + { 13826, -1 }, /* IndexPointerListIBM */ + { 32521, -1 }, /* EdgeFlagPointerListIBM */ { -1, -1 } }; #endif @@ -5888,10 +5990,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[] = { - { 12125, -1 }, /* VertexPointervINTEL */ - { 14858, -1 }, /* ColorPointervINTEL */ - { 28751, -1 }, /* NormalPointervINTEL */ - { 29230, -1 }, /* TexCoordPointervINTEL */ + { 12666, -1 }, /* VertexPointervINTEL */ + { 15492, -1 }, /* ColorPointervINTEL */ + { 29784, -1 }, /* NormalPointervINTEL */ + { 30302, -1 }, /* TexCoordPointervINTEL */ { -1, -1 } }; #endif @@ -5905,10 +6007,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[] = { - { 1574, -1 }, /* GetDebugLogLengthMESA */ - { 3280, -1 }, /* ClearDebugLogMESA */ - { 4310, -1 }, /* GetDebugLogMESA */ - { 29741, -1 }, /* CreateDebugObjectMESA */ + { 1638, -1 }, /* GetDebugLogLengthMESA */ + { 3461, -1 }, /* ClearDebugLogMESA */ + { 4540, -1 }, /* GetDebugLogMESA */ + { 30813, -1 }, /* CreateDebugObjectMESA */ { -1, -1 } }; #endif @@ -5929,15 +6031,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[] = { - { 6350, -1 }, /* GetMapAttribParameterivNV */ - { 8073, -1 }, /* MapControlPointsNV */ - { 8172, -1 }, /* MapParameterfvNV */ - { 10140, -1 }, /* EvalMapsNV */ - { 16558, -1 }, /* GetMapAttribParameterfvNV */ - { 16775, -1 }, /* MapParameterivNV */ - { 23839, -1 }, /* GetMapParameterivNV */ - { 24337, -1 }, /* GetMapParameterfvNV */ - { 28087, -1 }, /* GetMapControlPointsNV */ + { 6768, -1 }, /* GetMapAttribParameterivNV */ + { 8491, -1 }, /* MapControlPointsNV */ + { 8590, -1 }, /* MapParameterfvNV */ + { 10632, -1 }, /* EvalMapsNV */ + { 17162, -1 }, /* GetMapAttribParameterfvNV */ + { 17379, -1 }, /* MapParameterivNV */ + { 24724, -1 }, /* GetMapParameterivNV */ + { 25222, -1 }, /* GetMapParameterfvNV */ + { 29099, -1 }, /* GetMapControlPointsNV */ { -1, -1 } }; #endif @@ -5979,8 +6081,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[] = { - { 15328, -1 }, /* CombinerStageParameterfvNV */ - { 15672, -1 }, /* GetCombinerStageParameterfvNV */ + { 15884, -1 }, /* CombinerStageParameterfvNV */ + { 16280, -1 }, /* GetCombinerStageParameterfvNV */ { -1, -1 } }; #endif @@ -6008,23 +6110,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[] = { - { 8279, -1 }, /* HintPGI */ + { 8711, -1 }, /* HintPGI */ { -1, -1 } }; #endif #if defined(need_GL_SGIS_detail_texture) static const struct gl_function_remap GL_SGIS_detail_texture_functions[] = { - { 15645, -1 }, /* GetDetailTexFuncSGIS */ - { 15992, -1 }, /* DetailTexFuncSGIS */ + { 16253, -1 }, /* GetDetailTexFuncSGIS */ + { 16620, -1 }, /* DetailTexFuncSGIS */ { -1, -1 } }; #endif #if defined(need_GL_SGIS_fog_function) static const struct gl_function_remap GL_SGIS_fog_function_functions[] = { - { 26095, -1 }, /* FogFuncSGIS */ - { 26782, -1 }, /* GetFogFuncSGIS */ + { 27080, -1 }, /* FogFuncSGIS */ + { 27781, -1 }, /* GetFogFuncSGIS */ { -1, -1 } }; #endif @@ -6052,112 +6154,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[] = { - { 6411, -1 }, /* GetSharpenTexFuncSGIS */ - { 21255, -1 }, /* SharpenTexFuncSGIS */ + { 6829, -1 }, /* GetSharpenTexFuncSGIS */ + { 22047, -1 }, /* SharpenTexFuncSGIS */ { -1, -1 } }; #endif #if defined(need_GL_SGIS_texture4D) static const struct gl_function_remap GL_SGIS_texture4D_functions[] = { - { 946, -1 }, /* TexImage4DSGIS */ - { 15166, -1 }, /* TexSubImage4DSGIS */ + { 1010, -1 }, /* TexImage4DSGIS */ + { 15800, -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[] = { - { 14564, -1 }, /* TextureColorMaskSGIS */ + { 15198, -1 }, /* TextureColorMaskSGIS */ { -1, -1 } }; #endif #if defined(need_GL_SGIS_texture_filter4) static const struct gl_function_remap GL_SGIS_texture_filter4_functions[] = { - { 6588, -1 }, /* GetTexFilterFuncSGIS */ - { 15791, -1 }, /* TexFilterFuncSGIS */ + { 7006, -1 }, /* GetTexFilterFuncSGIS */ + { 16399, -1 }, /* TexFilterFuncSGIS */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_async) static const struct gl_function_remap GL_SGIX_async_functions[] = { - { 3206, -1 }, /* AsyncMarkerSGIX */ - { 4289, -1 }, /* FinishAsyncSGIX */ - { 5135, -1 }, /* PollAsyncSGIX */ - { 21423, -1 }, /* DeleteAsyncMarkersSGIX */ - { 21478, -1 }, /* IsAsyncMarkerSGIX */ - { 31227, -1 }, /* GenAsyncMarkersSGIX */ + { 3387, -1 }, /* AsyncMarkerSGIX */ + { 4519, -1 }, /* FinishAsyncSGIX */ + { 5466, -1 }, /* PollAsyncSGIX */ + { 22228, -1 }, /* DeleteAsyncMarkersSGIX */ + { 22283, -1 }, /* IsAsyncMarkerSGIX */ + { 32318, -1 }, /* GenAsyncMarkersSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_flush_raster) static const struct gl_function_remap GL_SGIX_flush_raster_functions[] = { - { 6965, -1 }, /* FlushRasterSGIX */ + { 7383, -1 }, /* FlushRasterSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_fragment_lighting) static const struct gl_function_remap GL_SGIX_fragment_lighting_functions[] = { - { 2519, -1 }, /* FragmentMaterialfvSGIX */ - { 5059, -1 }, /* FragmentLightiSGIX */ - { 6091, -1 }, /* GetFragmentMaterialfvSGIX */ - { 7685, -1 }, /* FragmentMaterialfSGIX */ - { 7846, -1 }, /* GetFragmentLightivSGIX */ - { 8705, -1 }, /* FragmentLightModeliSGIX */ - { 10203, -1 }, /* FragmentLightivSGIX */ - { 10505, -1 }, /* GetFragmentMaterialivSGIX */ - { 18626, -1 }, /* FragmentLightModelfSGIX */ - { 18926, -1 }, /* FragmentColorMaterialSGIX */ - { 19326, -1 }, /* FragmentMaterialiSGIX */ - { 20586, -1 }, /* LightEnviSGIX */ - { 22156, -1 }, /* FragmentLightModelfvSGIX */ - { 22465, -1 }, /* FragmentLightfvSGIX */ - { 27166, -1 }, /* FragmentLightModelivSGIX */ - { 27315, -1 }, /* FragmentLightfSGIX */ - { 30117, -1 }, /* GetFragmentLightfvSGIX */ - { 31710, -1 }, /* FragmentMaterialivSGIX */ + { 2625, -1 }, /* FragmentMaterialfvSGIX */ + { 5370, -1 }, /* FragmentLightiSGIX */ + { 8103, -1 }, /* FragmentMaterialfSGIX */ + { 8264, -1 }, /* GetFragmentLightivSGIX */ + { 9137, -1 }, /* FragmentLightModeliSGIX */ + { 10695, -1 }, /* FragmentLightivSGIX */ + { 11013, -1 }, /* GetFragmentMaterialivSGIX */ + { 16193, -1 }, /* GetFragmentMaterialfvSGIX */ + { 19403, -1 }, /* FragmentLightModelfSGIX */ + { 19703, -1 }, /* FragmentColorMaterialSGIX */ + { 20120, -1 }, /* FragmentMaterialiSGIX */ + { 21380, -1 }, /* LightEnviSGIX */ + { 22974, -1 }, /* FragmentLightModelfvSGIX */ + { 23309, -1 }, /* FragmentLightfvSGIX */ + { 28165, -1 }, /* FragmentLightModelivSGIX */ + { 28314, -1 }, /* FragmentLightfSGIX */ + { 31189, -1 }, /* GetFragmentLightfvSGIX */ + { 32801, -1 }, /* FragmentMaterialivSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_framezoom) static const struct gl_function_remap GL_SGIX_framezoom_functions[] = { - { 21501, -1 }, /* FrameZoomSGIX */ + { 22306, -1 }, /* FrameZoomSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_igloo_interface) static const struct gl_function_remap GL_SGIX_igloo_interface_functions[] = { - { 27623, -1 }, /* IglooInterfaceSGIX */ + { 28622, -1 }, /* IglooInterfaceSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_instruments) static const struct gl_function_remap GL_SGIX_instruments_functions[] = { - { 2682, -1 }, /* ReadInstrumentsSGIX */ - { 6167, -1 }, /* PollInstrumentsSGIX */ - { 10077, -1 }, /* GetInstrumentsSGIX */ - { 12363, -1 }, /* StartInstrumentsSGIX */ - { 15362, -1 }, /* StopInstrumentsSGIX */ - { 17152, -1 }, /* InstrumentsBufferSGIX */ + { 2805, -1 }, /* ReadInstrumentsSGIX */ + { 6585, -1 }, /* PollInstrumentsSGIX */ + { 10553, -1 }, /* GetInstrumentsSGIX */ + { 12924, -1 }, /* StartInstrumentsSGIX */ + { 15918, -1 }, /* StopInstrumentsSGIX */ + { 17777, -1 }, /* InstrumentsBufferSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_list_priority) static const struct gl_function_remap GL_SGIX_list_priority_functions[] = { - { 1177, -1 }, /* ListParameterfSGIX */ - { 2927, -1 }, /* GetListParameterfvSGIX */ - { 17067, -1 }, /* ListParameteriSGIX */ - { 17879, -1 }, /* ListParameterfvSGIX */ - { 19992, -1 }, /* ListParameterivSGIX */ - { 31271, -1 }, /* GetListParameterivSGIX */ + { 1241, -1 }, /* ListParameterfSGIX */ + { 3089, -1 }, /* GetListParameterfvSGIX */ + { 17692, -1 }, /* ListParameteriSGIX */ + { 18645, -1 }, /* ListParameterfvSGIX */ + { 20786, -1 }, /* ListParameterivSGIX */ + { 32362, -1 }, /* GetListParameterivSGIX */ { -1, -1 } }; #endif @@ -6171,134 +6273,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[] = { - { 3491, -1 }, /* LoadIdentityDeformationMapSGIX */ - { 15462, -1 }, /* DeformSGIX */ - { 23359, -1 }, /* DeformationMap3fSGIX */ - { 30005, -1 }, /* DeformationMap3dSGIX */ + { 3685, -1 }, /* LoadIdentityDeformationMapSGIX */ + { 16018, -1 }, /* DeformSGIX */ + { 24222, -1 }, /* DeformationMap3fSGIX */ + { 31077, -1 }, /* DeformationMap3dSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_reference_plane) static const struct gl_function_remap GL_SGIX_reference_plane_functions[] = { - { 14115, -1 }, /* ReferencePlaneSGIX */ + { 14749, -1 }, /* ReferencePlaneSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGIX_sprite) static const struct gl_function_remap GL_SGIX_sprite_functions[] = { - { 9203, -1 }, /* SpriteParameterfvSGIX */ - { 19781, -1 }, /* SpriteParameteriSGIX */ - { 25534, -1 }, /* SpriteParameterfSGIX */ - { 28209, -1 }, /* SpriteParameterivSGIX */ + { 9635, -1 }, /* SpriteParameterfvSGIX */ + { 20575, -1 }, /* SpriteParameteriSGIX */ + { 26519, -1 }, /* SpriteParameterfSGIX */ + { 29242, -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[] = { - { 19840, -1 }, /* TagSampleBufferSGIX */ + { 20634, -1 }, /* TagSampleBufferSGIX */ { -1, -1 } }; #endif #if defined(need_GL_SGI_color_table) static const struct gl_function_remap GL_SGI_color_table_functions[] = { - { 7255, _gloffset_ColorTableParameteriv }, - { 7967, _gloffset_ColorTable }, - { 14611, _gloffset_GetColorTable }, - { 14721, _gloffset_CopyColorTable }, - { 18570, _gloffset_ColorTableParameterfv }, - { 22064, _gloffset_GetColorTableParameterfv }, - { 24095, _gloffset_GetColorTableParameteriv }, + { 7673, _gloffset_ColorTableParameteriv }, + { 8385, _gloffset_ColorTable }, + { 15245, _gloffset_GetColorTable }, + { 15355, _gloffset_CopyColorTable }, + { 19347, _gloffset_ColorTableParameterfv }, + { 22882, _gloffset_GetColorTableParameterfv }, + { 24980, _gloffset_GetColorTableParameteriv }, { -1, -1 } }; #endif #if defined(need_GL_SUNX_constant_data) static const struct gl_function_remap GL_SUNX_constant_data_functions[] = { - { 30095, -1 }, /* FinishTextureSUNX */ + { 31167, -1 }, /* FinishTextureSUNX */ { -1, -1 } }; #endif #if defined(need_GL_SUN_global_alpha) static const struct gl_function_remap GL_SUN_global_alpha_functions[] = { - { 3227, -1 }, /* GlobalAlphaFactorubSUN */ - { 4543, -1 }, /* GlobalAlphaFactoriSUN */ - { 6192, -1 }, /* GlobalAlphaFactordSUN */ - { 9287, -1 }, /* GlobalAlphaFactoruiSUN */ - { 9668, -1 }, /* GlobalAlphaFactorbSUN */ - { 12678, -1 }, /* GlobalAlphaFactorfSUN */ - { 12823, -1 }, /* GlobalAlphaFactorusSUN */ - { 21764, -1 }, /* GlobalAlphaFactorsSUN */ + { 3408, -1 }, /* GlobalAlphaFactorubSUN */ + { 4818, -1 }, /* GlobalAlphaFactoriSUN */ + { 6610, -1 }, /* GlobalAlphaFactordSUN */ + { 9719, -1 }, /* GlobalAlphaFactoruiSUN */ + { 10144, -1 }, /* GlobalAlphaFactorbSUN */ + { 13239, -1 }, /* GlobalAlphaFactorfSUN */ + { 13403, -1 }, /* GlobalAlphaFactorusSUN */ + { 22569, -1 }, /* GlobalAlphaFactorsSUN */ { -1, -1 } }; #endif #if defined(need_GL_SUN_mesh_array) static const struct gl_function_remap GL_SUN_mesh_array_functions[] = { - { 28021, -1 }, /* DrawMeshArraysSUN */ + { 29033, -1 }, /* DrawMeshArraysSUN */ { -1, -1 } }; #endif #if defined(need_GL_SUN_triangle_list) static const struct gl_function_remap GL_SUN_triangle_list_functions[] = { - { 4263, -1 }, /* ReplacementCodeubSUN */ - { 6003, -1 }, /* ReplacementCodeubvSUN */ - { 18291, -1 }, /* ReplacementCodeusvSUN */ - { 18479, -1 }, /* ReplacementCodePointerSUN */ - { 20650, -1 }, /* ReplacementCodeuiSUN */ - { 21452, -1 }, /* ReplacementCodeusSUN */ - { 28666, -1 }, /* ReplacementCodeuivSUN */ + { 4493, -1 }, /* ReplacementCodeubSUN */ + { 6369, -1 }, /* ReplacementCodeubvSUN */ + { 19068, -1 }, /* ReplacementCodeusvSUN */ + { 19256, -1 }, /* ReplacementCodePointerSUN */ + { 21444, -1 }, /* ReplacementCodeuiSUN */ + { 22257, -1 }, /* ReplacementCodeusSUN */ + { 29699, -1 }, /* ReplacementCodeuivSUN */ { -1, -1 } }; #endif #if defined(need_GL_SUN_vertex) static const struct gl_function_remap GL_SUN_vertex_functions[] = { - { 1051, -1 }, /* ReplacementCodeuiColor3fVertex3fvSUN */ - { 1249, -1 }, /* TexCoord4fColor4fNormal3fVertex4fvSUN */ - { 1475, -1 }, /* TexCoord2fColor4ubVertex3fvSUN */ - { 1782, -1 }, /* ReplacementCodeuiVertex3fvSUN */ - { 1916, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fvSUN */ - { 2455, -1 }, /* ReplacementCodeuiNormal3fVertex3fSUN */ - { 2751, -1 }, /* Color4ubVertex3fvSUN */ - { 4397, -1 }, /* Color4ubVertex3fSUN */ - { 4500, -1 }, /* TexCoord2fVertex3fSUN */ - { 4827, -1 }, /* TexCoord2fColor4fNormal3fVertex3fSUN */ - { 5239, -1 }, /* TexCoord2fNormal3fVertex3fvSUN */ - { 5898, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN */ - { 6643, -1 }, /* ReplacementCodeuiColor4ubVertex3fvSUN */ - { 7002, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fSUN */ - { 7714, -1 }, /* TexCoord2fNormal3fVertex3fSUN */ - { 8504, -1 }, /* Color3fVertex3fSUN */ - { 9627, -1 }, /* Color3fVertex3fvSUN */ - { 10042, -1 }, /* Color4fNormal3fVertex3fvSUN */ - { 10830, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN */ - { 12226, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fvSUN */ - { 13796, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN */ - { 14257, -1 }, /* TexCoord2fColor3fVertex3fSUN */ - { 15387, -1 }, /* TexCoord4fColor4fNormal3fVertex4fSUN */ - { 15750, -1 }, /* Color4ubVertex2fvSUN */ - { 16017, -1 }, /* Normal3fVertex3fSUN */ - { 17093, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fSUN */ - { 17354, -1 }, /* TexCoord2fColor4fNormal3fVertex3fvSUN */ - { 18120, -1 }, /* TexCoord2fVertex3fvSUN */ - { 18896, -1 }, /* Color4ubVertex2fSUN */ - { 19117, -1 }, /* ReplacementCodeuiColor4ubVertex3fSUN */ - { 21101, -1 }, /* TexCoord2fColor4ubVertex3fSUN */ - { 21520, -1 }, /* Normal3fVertex3fvSUN */ - { 21973, -1 }, /* Color4fNormal3fVertex3fSUN */ - { 22908, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN */ - { 24932, -1 }, /* ReplacementCodeuiColor3fVertex3fSUN */ - { 26211, -1 }, /* TexCoord4fVertex4fSUN */ - { 26637, -1 }, /* TexCoord2fColor3fVertex3fvSUN */ - { 27010, -1 }, /* ReplacementCodeuiNormal3fVertex3fvSUN */ - { 27137, -1 }, /* TexCoord4fVertex4fvSUN */ - { 27871, -1 }, /* ReplacementCodeuiVertex3fSUN */ + { 1115, -1 }, /* ReplacementCodeuiColor3fVertex3fvSUN */ + { 1313, -1 }, /* TexCoord4fColor4fNormal3fVertex4fvSUN */ + { 1539, -1 }, /* TexCoord2fColor4ubVertex3fvSUN */ + { 1869, -1 }, /* ReplacementCodeuiVertex3fvSUN */ + { 2003, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fvSUN */ + { 2561, -1 }, /* ReplacementCodeuiNormal3fVertex3fSUN */ + { 2874, -1 }, /* Color4ubVertex3fvSUN */ + { 4652, -1 }, /* Color4ubVertex3fSUN */ + { 4775, -1 }, /* TexCoord2fVertex3fSUN */ + { 5119, -1 }, /* TexCoord2fColor4fNormal3fVertex3fSUN */ + { 5570, -1 }, /* TexCoord2fNormal3fVertex3fvSUN */ + { 6264, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN */ + { 7061, -1 }, /* ReplacementCodeuiColor4ubVertex3fvSUN */ + { 7420, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fSUN */ + { 8132, -1 }, /* TexCoord2fNormal3fVertex3fSUN */ + { 8936, -1 }, /* Color3fVertex3fSUN */ + { 10080, -1 }, /* Color3fVertex3fvSUN */ + { 10518, -1 }, /* Color4fNormal3fVertex3fvSUN */ + { 11358, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN */ + { 12787, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fvSUN */ + { 14398, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN */ + { 14891, -1 }, /* TexCoord2fColor3fVertex3fSUN */ + { 15943, -1 }, /* TexCoord4fColor4fNormal3fVertex4fSUN */ + { 16358, -1 }, /* Color4ubVertex2fvSUN */ + { 16645, -1 }, /* Normal3fVertex3fSUN */ + { 17718, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fSUN */ + { 18079, -1 }, /* TexCoord2fColor4fNormal3fVertex3fvSUN */ + { 18897, -1 }, /* TexCoord2fVertex3fvSUN */ + { 19673, -1 }, /* Color4ubVertex2fSUN */ + { 19911, -1 }, /* ReplacementCodeuiColor4ubVertex3fSUN */ + { 21893, -1 }, /* TexCoord2fColor4ubVertex3fSUN */ + { 22325, -1 }, /* Normal3fVertex3fvSUN */ + { 22791, -1 }, /* Color4fNormal3fVertex3fSUN */ + { 23771, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN */ + { 25840, -1 }, /* ReplacementCodeuiColor3fVertex3fSUN */ + { 27196, -1 }, /* TexCoord4fVertex4fSUN */ + { 27622, -1 }, /* TexCoord2fColor3fVertex3fvSUN */ + { 28009, -1 }, /* ReplacementCodeuiNormal3fVertex3fvSUN */ + { 28136, -1 }, /* TexCoord4fVertex4fvSUN */ + { 28870, -1 }, /* ReplacementCodeuiVertex3fSUN */ { -1, -1 } }; #endif @@ -6306,40 +6408,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[] = { - { 407, _gloffset_MultiTexCoord3sARB }, - { 639, _gloffset_ActiveTextureARB }, - { 4031, _gloffset_MultiTexCoord1fvARB }, - { 5789, _gloffset_MultiTexCoord3dARB }, - { 5834, _gloffset_MultiTexCoord2iARB }, - { 5958, _gloffset_MultiTexCoord2svARB }, - { 7923, _gloffset_MultiTexCoord2fARB }, - { 9878, _gloffset_MultiTexCoord3fvARB }, - { 10459, _gloffset_MultiTexCoord4sARB }, - { 11120, _gloffset_MultiTexCoord2dvARB }, - { 11522, _gloffset_MultiTexCoord1svARB }, - { 11894, _gloffset_MultiTexCoord3svARB }, - { 11955, _gloffset_MultiTexCoord4iARB }, - { 12705, _gloffset_MultiTexCoord3iARB }, - { 13534, _gloffset_MultiTexCoord1dARB }, - { 13751, _gloffset_MultiTexCoord3dvARB }, - { 14965, _gloffset_MultiTexCoord3ivARB }, - { 15010, _gloffset_MultiTexCoord2sARB }, - { 16393, _gloffset_MultiTexCoord4ivARB }, - { 18220, _gloffset_ClientActiveTextureARB }, - { 20503, _gloffset_MultiTexCoord2dARB }, - { 20944, _gloffset_MultiTexCoord4dvARB }, - { 21281, _gloffset_MultiTexCoord4fvARB }, - { 22205, _gloffset_MultiTexCoord3fARB }, - { 24623, _gloffset_MultiTexCoord4dARB }, - { 24889, _gloffset_MultiTexCoord1sARB }, - { 25093, _gloffset_MultiTexCoord1dvARB }, - { 25957, _gloffset_MultiTexCoord1ivARB }, - { 26050, _gloffset_MultiTexCoord2ivARB }, - { 26389, _gloffset_MultiTexCoord1iARB }, - { 27739, _gloffset_MultiTexCoord4svARB }, - { 28279, _gloffset_MultiTexCoord1fARB }, - { 28542, _gloffset_MultiTexCoord4fARB }, - { 30948, _gloffset_MultiTexCoord2fvARB }, + { 425, _gloffset_MultiTexCoord3sARB }, + { 657, _gloffset_ActiveTextureARB }, + { 4247, _gloffset_MultiTexCoord1fvARB }, + { 6155, _gloffset_MultiTexCoord3dARB }, + { 6200, _gloffset_MultiTexCoord2iARB }, + { 6324, _gloffset_MultiTexCoord2svARB }, + { 8341, _gloffset_MultiTexCoord2fARB }, + { 10354, _gloffset_MultiTexCoord3fvARB }, + { 10967, _gloffset_MultiTexCoord4sARB }, + { 11648, _gloffset_MultiTexCoord2dvARB }, + { 12063, _gloffset_MultiTexCoord1svARB }, + { 12435, _gloffset_MultiTexCoord3svARB }, + { 12496, _gloffset_MultiTexCoord4iARB }, + { 13266, _gloffset_MultiTexCoord3iARB }, + { 14136, _gloffset_MultiTexCoord1dARB }, + { 14353, _gloffset_MultiTexCoord3dvARB }, + { 15599, _gloffset_MultiTexCoord3ivARB }, + { 15644, _gloffset_MultiTexCoord2sARB }, + { 17045, _gloffset_MultiTexCoord4ivARB }, + { 18997, _gloffset_ClientActiveTextureARB }, + { 21297, _gloffset_MultiTexCoord2dARB }, + { 21717, _gloffset_MultiTexCoord4dvARB }, + { 22073, _gloffset_MultiTexCoord4fvARB }, + { 23023, _gloffset_MultiTexCoord3fARB }, + { 25531, _gloffset_MultiTexCoord4dARB }, + { 25797, _gloffset_MultiTexCoord1sARB }, + { 26001, _gloffset_MultiTexCoord1dvARB }, + { 26942, _gloffset_MultiTexCoord1ivARB }, + { 27035, _gloffset_MultiTexCoord2ivARB }, + { 27374, _gloffset_MultiTexCoord1iARB }, + { 28738, _gloffset_MultiTexCoord4svARB }, + { 29312, _gloffset_MultiTexCoord1fARB }, + { 29575, _gloffset_MultiTexCoord4fARB }, + { 32039, _gloffset_MultiTexCoord2fvARB }, { -1, -1 } }; #endif @@ -6386,3 +6488,17 @@ static const struct gl_function_remap GL_VERSION_3_1_functions[] = { }; #endif +#if defined(need_GL_VERSION_3_2) +/* functions defined in MESA_remap_table_functions are excluded */ +static const struct gl_function_remap GL_VERSION_3_2_functions[] = { + { -1, -1 } +}; +#endif + +#if defined(need_GL_VERSION_3_3) +/* functions defined in MESA_remap_table_functions are excluded */ +static const struct gl_function_remap GL_VERSION_3_3_functions[] = { + { -1, -1 } +}; +#endif + diff --git a/src/mesa/main/renderbuffer.h b/src/mesa/main/renderbuffer.h index 8791369dbee..62e812f93a2 100644 --- a/src/mesa/main/renderbuffer.h +++ b/src/mesa/main/renderbuffer.h @@ -27,8 +27,8 @@ #define RENDERBUFFER_H #include "glheader.h" -#include "mtypes.h" +struct gl_context; struct gl_framebuffer; struct gl_renderbuffer; diff --git a/src/mesa/main/scissor.h b/src/mesa/main/scissor.h index bd909019db2..da9385e2b95 100644 --- a/src/mesa/main/scissor.h +++ b/src/mesa/main/scissor.h @@ -27,8 +27,9 @@ #define SCISSOR_H -#include "main/mtypes.h" +#include "glheader.h" +struct gl_context; extern void GLAPIENTRY _mesa_Scissor( GLint x, GLint y, GLsizei width, GLsizei height ); diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c index 030236e7350..96df58d35c2 100644 --- a/src/mesa/main/shaderapi.c +++ b/src/mesa/main/shaderapi.c @@ -95,7 +95,7 @@ _mesa_init_shader_state(struct gl_context *ctx) * are generated by the GLSL compiler. */ struct gl_shader_compiler_options options; - GLuint i; + gl_shader_type sh; memset(&options, 0, sizeof(options)); options.MaxUnrollIterations = 32; @@ -103,8 +103,8 @@ _mesa_init_shader_state(struct gl_context *ctx) /* Default pragma settings */ options.DefaultPragmas.Optimize = GL_TRUE; - for(i = 0; i < MESA_SHADER_TYPES; ++i) - memcpy(&ctx->ShaderCompilerOptions[i], &options, sizeof(options)); + for (sh = 0; sh < MESA_SHADER_TYPES; ++sh) + memcpy(&ctx->ShaderCompilerOptions[sh], &options, sizeof(options)); ctx->Shader.Flags = get_shader_flags(); } diff --git a/src/mesa/main/shaderapi.h b/src/mesa/main/shaderapi.h index df78351411c..e4b477660dc 100644 --- a/src/mesa/main/shaderapi.h +++ b/src/mesa/main/shaderapi.h @@ -28,8 +28,10 @@ #include "glheader.h" -#include "mtypes.h" +struct _glapi_table; +struct gl_context; +struct gl_shader_program; extern GLint _mesa_sizeof_glsl_type(GLenum type); diff --git a/src/mesa/main/shaderobj.c b/src/mesa/main/shaderobj.c index b6594cbe6f0..216bbce0032 100644 --- a/src/mesa/main/shaderobj.c +++ b/src/mesa/main/shaderobj.c @@ -291,6 +291,7 @@ _mesa_free_shader_program_data(struct gl_context *ctx, struct gl_shader_program *shProg) { GLuint i; + gl_shader_type sh; assert(shProg->Type == GL_SHADER_PROGRAM_MESA); @@ -326,10 +327,10 @@ _mesa_free_shader_program_data(struct gl_context *ctx, shProg->TransformFeedback.NumVarying = 0; - for (i = 0; i < MESA_SHADER_TYPES; i++) { - if (shProg->_LinkedShaders[i] != NULL) { - ctx->Driver.DeleteShader(ctx, shProg->_LinkedShaders[i]); - shProg->_LinkedShaders[i] = NULL; + for (sh = 0; sh < MESA_SHADER_TYPES; sh++) { + if (shProg->_LinkedShaders[sh] != NULL) { + ctx->Driver.DeleteShader(ctx, shProg->_LinkedShaders[sh]); + shProg->_LinkedShaders[sh] = NULL; } } } diff --git a/src/mesa/main/shaderobj.h b/src/mesa/main/shaderobj.h index 346a5b75175..de7c998cf0e 100644 --- a/src/mesa/main/shaderobj.h +++ b/src/mesa/main/shaderobj.h @@ -98,7 +98,7 @@ extern void _mesa_free_shader_state(struct gl_context *ctx); -static INLINE GLuint +static INLINE gl_shader_type _mesa_shader_type_to_index(GLenum v) { switch (v) { @@ -110,7 +110,7 @@ _mesa_shader_type_to_index(GLenum v) return MESA_SHADER_GEOMETRY; default: ASSERT(0 && "bad value in _mesa_shader_type_to_index()"); - return ~0; + return MESA_SHADER_TYPES; } } diff --git a/src/mesa/main/shared.h b/src/mesa/main/shared.h index 43f8a388e6f..768d69f6942 100644 --- a/src/mesa/main/shared.h +++ b/src/mesa/main/shared.h @@ -25,7 +25,7 @@ #ifndef SHARED_H #define SHARED_H -#include "mtypes.h" +struct gl_context; struct gl_shared_state * _mesa_alloc_shared_state(struct gl_context *ctx); diff --git a/src/mesa/main/stencil.h b/src/mesa/main/stencil.h index 38a7183a811..b772bfd6e6f 100644 --- a/src/mesa/main/stencil.h +++ b/src/mesa/main/stencil.h @@ -32,8 +32,9 @@ #define STENCIL_H -#include "mtypes.h" +#include "glheader.h" +struct gl_context; extern void GLAPIENTRY _mesa_ClearStencil( GLint s ); diff --git a/src/mesa/main/syncobj.h b/src/mesa/main/syncobj.h index f3c0046cf3d..51de9bf4809 100644 --- a/src/mesa/main/syncobj.h +++ b/src/mesa/main/syncobj.h @@ -31,9 +31,13 @@ #ifndef SYNCOBJ_H #define SYNCOBJ_H -#include "main/mtypes.h" +#include "glheader.h" +#include "mfeatures.h" +struct _glapi_table; struct dd_function_table; +struct gl_context; +struct gl_sync_object; #if FEATURE_ARB_sync diff --git a/src/mesa/main/texcompress.h b/src/mesa/main/texcompress.h index 83856429c54..19b08bbadf6 100644 --- a/src/mesa/main/texcompress.h +++ b/src/mesa/main/texcompress.h @@ -25,8 +25,11 @@ #ifndef TEXCOMPRESS_H #define TEXCOMPRESS_H -#include "mtypes.h" #include "formats.h" +#include "glheader.h" +#include "mfeatures.h" + +struct gl_context; #if _HAVE_FULL_GL diff --git a/src/mesa/main/texcompress_s3tc.h b/src/mesa/main/texcompress_s3tc.h index d0a5b186b71..74a0343b9b9 100644 --- a/src/mesa/main/texcompress_s3tc.h +++ b/src/mesa/main/texcompress_s3tc.h @@ -25,9 +25,13 @@ #ifndef TEXCOMPRESS_S3TC_H #define TEXCOMPRESS_S3TC_H -#include "main/mtypes.h" +#include "compiler.h" +#include "glheader.h" +#include "mfeatures.h" #include "texstore.h" +struct gl_context; +struct gl_texture_image; #if FEATURE_texture_s3tc diff --git a/src/mesa/main/texenvprogram.h b/src/mesa/main/texenvprogram.h index abfb916d21b..22e30a51943 100644 --- a/src/mesa/main/texenvprogram.h +++ b/src/mesa/main/texenvprogram.h @@ -27,7 +27,7 @@ #define TEXENVPROGRAM_H -#include "mtypes.h" +struct gl_context; extern struct gl_fragment_program * _mesa_get_fixed_func_fragment_program(struct gl_context *ctx); diff --git a/src/mesa/main/texfetch.c b/src/mesa/main/texfetch.c index aa3a6961b64..372ef2654a7 100644 --- a/src/mesa/main/texfetch.c +++ b/src/mesa/main/texfetch.c @@ -823,17 +823,11 @@ void _mesa_set_fetch_functions(struct gl_texture_image *texImage, GLuint dims) { ASSERT(dims == 1 || dims == 2 || dims == 3); - ASSERT(texImage->TexFormat); - if (!texImage->FetchTexelf) { - texImage->FetchTexelf = - _mesa_get_texel_fetch_func(texImage->TexFormat, dims); - } + texImage->FetchTexelf = + _mesa_get_texel_fetch_func(texImage->TexFormat, dims); - /* now check if we need to use a float/chan adaptor */ - if (!texImage->FetchTexelc) { - texImage->FetchTexelc = fetch_texel_float_to_chan; - } + texImage->FetchTexelc = fetch_texel_float_to_chan; ASSERT(texImage->FetchTexelc); ASSERT(texImage->FetchTexelf); diff --git a/src/mesa/main/texformat.h b/src/mesa/main/texformat.h index 8bd15076753..3cf09213ac4 100644 --- a/src/mesa/main/texformat.h +++ b/src/mesa/main/texformat.h @@ -27,9 +27,9 @@ #define TEXFORMAT_H -#include "mtypes.h" #include "formats.h" +struct gl_context; extern gl_format _mesa_choose_tex_format( struct gl_context *ctx, GLint internalFormat, diff --git a/src/mesa/main/texgetimage.c b/src/mesa/main/texgetimage.c index 879ac529a01..c94f88e16e6 100644 --- a/src/mesa/main/texgetimage.c +++ b/src/mesa/main/texgetimage.c @@ -120,10 +120,15 @@ get_tex_depth(struct gl_context *ctx, GLuint dimensions, const GLint height = texImage->Height; const GLint depth = texImage->Depth; GLint img, row, col; + GLfloat *depthRow = (GLfloat *) malloc(width * sizeof(GLfloat)); + + if (!depthRow) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "glGetTexImage"); + return; + } for (img = 0; img < depth; img++) { for (row = 0; row < height; row++) { - GLfloat depthRow[MAX_WIDTH]; void *dest = _mesa_image_address(dimensions, &ctx->Pack, pixels, width, height, format, type, img, row, 0); @@ -135,6 +140,8 @@ get_tex_depth(struct gl_context *ctx, GLuint dimensions, _mesa_pack_depth_span(ctx, width, dest, type, depthRow, &ctx->Pack); } } + + free(depthRow); } @@ -244,6 +251,12 @@ get_tex_srgb(struct gl_context *ctx, GLuint dimensions, const GLint depth = texImage->Depth; const GLbitfield transferOps = 0x0; GLint img, row; + GLfloat (*rgba)[4] = (GLfloat (*)[4]) malloc(4 * width * sizeof(GLfloat)); + + if (!rgba) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "glGetTexImage"); + return; + } for (img = 0; img < depth; img++) { for (row = 0; row < height; row++) { @@ -251,7 +264,6 @@ get_tex_srgb(struct gl_context *ctx, GLuint dimensions, width, height, format, type, img, row, 0); - GLfloat rgba[MAX_WIDTH][4]; GLint col; /* convert row to RGBA format */ @@ -279,6 +291,8 @@ get_tex_srgb(struct gl_context *ctx, GLuint dimensions, &ctx->Pack, transferOps); } } + + free(rgba); } @@ -314,13 +328,18 @@ get_tex_rgba(struct gl_context *ctx, GLuint dimensions, */ GLbitfield transferOps = 0x0; GLint img, row; + GLfloat (*rgba)[4] = (GLfloat (*)[4]) malloc(4 * width * sizeof(GLfloat)); + + if (!rgba) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "glGetTexImage"); + return; + } for (img = 0; img < depth; img++) { for (row = 0; row < height; row++) { void *dest = _mesa_image_address(dimensions, &ctx->Pack, pixels, width, height, format, type, img, row, 0); - GLfloat rgba[MAX_WIDTH][4]; GLint col; GLenum dataType = _mesa_get_format_datatype(texImage->TexFormat); @@ -364,6 +383,8 @@ get_tex_rgba(struct gl_context *ctx, GLuint dimensions, &ctx->Pack, transferOps); } } + + free(rgba); } diff --git a/src/mesa/main/texgetimage.h b/src/mesa/main/texgetimage.h index 81a3bbbd9a7..ef420ddabf5 100644 --- a/src/mesa/main/texgetimage.h +++ b/src/mesa/main/texgetimage.h @@ -27,7 +27,11 @@ #ifndef TEXGETIMAGE_H #define TEXGETIMAGE_H -#include "mtypes.h" +#include "glheader.h" + +struct gl_context; +struct gl_texture_image; +struct gl_texture_object; extern void _mesa_get_teximage(struct gl_context *ctx, GLenum target, GLint level, diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c index 2e9410f2717..c5ae63052a7 100644 --- a/src/mesa/main/teximage.c +++ b/src/mesa/main/teximage.c @@ -596,7 +596,8 @@ _mesa_free_texture_image_data(struct gl_context *ctx, * Free the texture image structure and the associated image data. */ void -_mesa_delete_texture_image( struct gl_context *ctx, struct gl_texture_image *texImage ) +_mesa_delete_texture_image(struct gl_context *ctx, + struct gl_texture_image *texImage) { /* Free texImage->Data and/or any other driver-specific texture * image storage. @@ -635,7 +636,49 @@ _mesa_is_proxy_texture(GLenum target) /** - * Get the texture object that corresponds to the target of the given texture unit. + * Return the proxy target which corresponds to the given texture target + */ +static GLenum +get_proxy_target(GLenum target) +{ + switch (target) { + case GL_TEXTURE_1D: + case GL_PROXY_TEXTURE_1D: + return GL_PROXY_TEXTURE_1D; + case GL_TEXTURE_2D: + case GL_PROXY_TEXTURE_2D: + return GL_PROXY_TEXTURE_2D; + case GL_TEXTURE_3D: + case GL_PROXY_TEXTURE_3D: + return GL_PROXY_TEXTURE_3D; + case GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB: + case GL_TEXTURE_CUBE_MAP_ARB: + case GL_PROXY_TEXTURE_CUBE_MAP_ARB: + return GL_PROXY_TEXTURE_CUBE_MAP_ARB; + case GL_TEXTURE_RECTANGLE_NV: + case GL_PROXY_TEXTURE_RECTANGLE_NV: + return GL_PROXY_TEXTURE_RECTANGLE_NV; + case GL_TEXTURE_1D_ARRAY_EXT: + case GL_PROXY_TEXTURE_1D_ARRAY_EXT: + return GL_PROXY_TEXTURE_1D_ARRAY_EXT; + case GL_TEXTURE_2D_ARRAY_EXT: + case GL_PROXY_TEXTURE_2D_ARRAY_EXT: + return GL_PROXY_TEXTURE_2D_ARRAY_EXT; + default: + _mesa_problem(NULL, "unexpected target in get_proxy_target()"); + return 0; + } +} + + +/** + * Get the texture object that corresponds to the target of the given + * texture unit. * * \param ctx GL context. * \param texUnit texture unit. @@ -646,7 +689,8 @@ _mesa_is_proxy_texture(GLenum target) * \sa gl_texture_unit. */ struct gl_texture_object * -_mesa_select_tex_object(struct gl_context *ctx, const struct gl_texture_unit *texUnit, +_mesa_select_tex_object(struct gl_context *ctx, + const struct gl_texture_unit *texUnit, GLenum target) { switch (target) { @@ -723,7 +767,8 @@ _mesa_get_current_tex_object(struct gl_context *ctx, GLenum target) * \return pointer to the texture image structure, or NULL on failure. */ struct gl_texture_image * -_mesa_select_tex_image(struct gl_context *ctx, const struct gl_texture_object *texObj, +_mesa_select_tex_image(struct gl_context *ctx, + const struct gl_texture_object *texObj, GLenum target, GLint level) { const GLuint face = _mesa_tex_target_to_face(target); @@ -883,6 +928,45 @@ _mesa_max_texture_levels(struct gl_context *ctx, GLenum target) } +/** + * Return number of dimensions per mipmap level for the given texture target. + */ +static GLint +get_texture_dimensions(GLenum target) +{ + switch (target) { + case GL_TEXTURE_1D: + case GL_PROXY_TEXTURE_1D: + return 1; + case GL_TEXTURE_2D: + case GL_TEXTURE_RECTANGLE: + case GL_TEXTURE_CUBE_MAP: + case GL_PROXY_TEXTURE_2D: + case GL_PROXY_TEXTURE_RECTANGLE: + case GL_PROXY_TEXTURE_CUBE_MAP: + case GL_TEXTURE_CUBE_MAP_POSITIVE_X: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: + case GL_TEXTURE_1D_ARRAY: + case GL_PROXY_TEXTURE_1D_ARRAY: + return 2; + case GL_TEXTURE_3D: + case GL_PROXY_TEXTURE_3D: + case GL_TEXTURE_2D_ARRAY: + case GL_PROXY_TEXTURE_2D_ARRAY: + return 3; + default: + _mesa_problem(NULL, "invalid target 0x%x in get_texture_dimensions()", + target); + return 2; + } +} + + + #if 000 /* not used anymore */ /* @@ -988,6 +1072,7 @@ clear_teximage_fields(struct gl_texture_image *img) * \param depth image depth. * \param border image border. * \param internalFormat internal format. + * \param format the actual hardware format (one of MESA_FORMAT_*) * * Fills in the fields of \p img with the given information. * Note: width, height and depth include the border. @@ -996,9 +1081,10 @@ void _mesa_init_teximage_fields(struct gl_context *ctx, GLenum target, struct gl_texture_image *img, GLsizei width, GLsizei height, GLsizei depth, - GLint border, GLenum internalFormat) + GLint border, GLenum internalFormat, + gl_format format) { - GLint i; + GLint i, dims; ASSERT(img); ASSERT(width >= 0); @@ -1069,8 +1155,11 @@ _mesa_init_teximage_fields(struct gl_context *ctx, GLenum target, img->DepthScale = (GLfloat) img->Depth; } - img->FetchTexelc = NULL; - img->FetchTexelf = NULL; + img->TexFormat = format; + + dims = get_texture_dimensions(target); + + _mesa_set_fetch_functions(img, dims); } @@ -1084,7 +1173,8 @@ _mesa_init_teximage_fields(struct gl_context *ctx, GLenum target, * fields are cleared so that its parent object will test incomplete. */ void -_mesa_clear_texture_image(struct gl_context *ctx, struct gl_texture_image *texImage) +_mesa_clear_texture_image(struct gl_context *ctx, + struct gl_texture_image *texImage) { ctx->Driver.FreeTexImageData(ctx, texImage); clear_teximage_fields(texImage); @@ -1129,94 +1219,110 @@ _mesa_test_proxy_teximage(struct gl_context *ctx, GLenum target, GLint level, switch (target) { case GL_PROXY_TEXTURE_1D: maxSize = 1 << (ctx->Const.MaxTextureLevels - 1); - if (width < 2 * border || width > 2 + maxSize || - (!ctx->Extensions.ARB_texture_non_power_of_two && - width >0 && !_mesa_is_pow_two(width - 2 * border)) || - level >= ctx->Const.MaxTextureLevels) { - /* bad width or level */ + if (width < 2 * border || width > 2 + maxSize) + return GL_FALSE; + if (level >= ctx->Const.MaxTextureLevels) return GL_FALSE; + if (!ctx->Extensions.ARB_texture_non_power_of_two) { + if (width > 0 && !_mesa_is_pow_two(width - 2 * border)) + return GL_FALSE; } return GL_TRUE; + case GL_PROXY_TEXTURE_2D: maxSize = 1 << (ctx->Const.MaxTextureLevels - 1); - if (width < 2 * border || width > 2 + maxSize || - (!ctx->Extensions.ARB_texture_non_power_of_two && - width > 0 && !_mesa_is_pow_two(width - 2 * border)) || - height < 2 * border || height > 2 + maxSize || - (!ctx->Extensions.ARB_texture_non_power_of_two && - height > 0 && !_mesa_is_pow_two(height - 2 * border)) || - level >= ctx->Const.MaxTextureLevels) { - /* bad width or height or level */ + if (width < 2 * border || width > 2 + maxSize) + return GL_FALSE; + if (height < 2 * border || height > 2 + maxSize) + return GL_FALSE; + if (level >= ctx->Const.MaxTextureLevels) return GL_FALSE; + if (!ctx->Extensions.ARB_texture_non_power_of_two) { + if (width > 0 && !_mesa_is_pow_two(width - 2 * border)) + return GL_FALSE; + if (height > 0 && !_mesa_is_pow_two(height - 2 * border)) + return GL_FALSE; } return GL_TRUE; + case GL_PROXY_TEXTURE_3D: maxSize = 1 << (ctx->Const.Max3DTextureLevels - 1); - if (width < 2 * border || width > 2 + maxSize || - (!ctx->Extensions.ARB_texture_non_power_of_two && - width > 0 && !_mesa_is_pow_two(width - 2 * border)) || - height < 2 * border || height > 2 + maxSize || - (!ctx->Extensions.ARB_texture_non_power_of_two && - height > 0 && !_mesa_is_pow_two(height - 2 * border)) || - depth < 2 * border || depth > 2 + maxSize || - (!ctx->Extensions.ARB_texture_non_power_of_two && - depth > 0 && !_mesa_is_pow_two(depth - 2 * border)) || - level >= ctx->Const.Max3DTextureLevels) { - /* bad width or height or depth or level */ + if (width < 2 * border || width > 2 + maxSize) + return GL_FALSE; + if (height < 2 * border || height > 2 + maxSize) + return GL_FALSE; + if (depth < 2 * border || depth > 2 + maxSize) return GL_FALSE; + if (level >= ctx->Const.Max3DTextureLevels) + return GL_FALSE; + if (!ctx->Extensions.ARB_texture_non_power_of_two) { + if (width > 0 && !_mesa_is_pow_two(width - 2 * border)) + return GL_FALSE; + if (height > 0 && !_mesa_is_pow_two(height - 2 * border)) + return GL_FALSE; + if (depth > 0 && !_mesa_is_pow_two(depth - 2 * border)) + return GL_FALSE; } return GL_TRUE; + case GL_PROXY_TEXTURE_RECTANGLE_NV: - if (width < 0 || width > ctx->Const.MaxTextureRectSize || - height < 0 || height > ctx->Const.MaxTextureRectSize || - level != 0) { - /* bad width or height or level */ + maxSize = ctx->Const.MaxTextureRectSize; + if (width < 0 || width > maxSize) + return GL_FALSE; + if (height < 0 || height > maxSize) + return GL_FALSE; + if (level != 0) return GL_FALSE; - } return GL_TRUE; + case GL_PROXY_TEXTURE_CUBE_MAP_ARB: maxSize = 1 << (ctx->Const.MaxCubeTextureLevels - 1); - if (width < 2 * border || width > 2 + maxSize || - (!ctx->Extensions.ARB_texture_non_power_of_two && - width > 0 && !_mesa_is_pow_two(width - 2 * border)) || - height < 2 * border || height > 2 + maxSize || - (!ctx->Extensions.ARB_texture_non_power_of_two && - height > 0 && !_mesa_is_pow_two(height - 2 * border)) || - level >= ctx->Const.MaxCubeTextureLevels) { - /* bad width or height */ + if (width < 2 * border || width > 2 + maxSize) + return GL_FALSE; + if (height < 2 * border || height > 2 + maxSize) return GL_FALSE; + if (level >= ctx->Const.MaxCubeTextureLevels) + return GL_FALSE; + if (!ctx->Extensions.ARB_texture_non_power_of_two) { + if (width > 0 && !_mesa_is_pow_two(width - 2 * border)) + return GL_FALSE; + if (height > 0 && !_mesa_is_pow_two(height - 2 * border)) + return GL_FALSE; } return GL_TRUE; + case GL_PROXY_TEXTURE_1D_ARRAY_EXT: maxSize = 1 << (ctx->Const.MaxTextureLevels - 1); - if (width < 2 * border || width > 2 + maxSize || - (!ctx->Extensions.ARB_texture_non_power_of_two && - width > 0 && !_mesa_is_pow_two(width - 2 * border)) || - level >= ctx->Const.MaxTextureLevels) { - /* bad width or level */ + if (width < 2 * border || width > 2 + maxSize) return GL_FALSE; - } - - if (height < 1 || height > ctx->Const.MaxArrayTextureLayers) { + if (height < 1 || height > ctx->Const.MaxArrayTextureLayers) + return GL_FALSE; + if (level >= ctx->Const.MaxTextureLevels) return GL_FALSE; + if (!ctx->Extensions.ARB_texture_non_power_of_two) { + if (width > 0 && !_mesa_is_pow_two(width - 2 * border)) + return GL_FALSE; } return GL_TRUE; + case GL_PROXY_TEXTURE_2D_ARRAY_EXT: maxSize = 1 << (ctx->Const.MaxTextureLevels - 1); - if (width < 2 * border || width > 2 + maxSize || - (!ctx->Extensions.ARB_texture_non_power_of_two && - width > 0 && !_mesa_is_pow_two(width - 2 * border)) || - height < 2 * border || height > 2 + maxSize || - (!ctx->Extensions.ARB_texture_non_power_of_two && - height > 0 && !_mesa_is_pow_two(height - 2 * border)) || - level >= ctx->Const.MaxTextureLevels) { - /* bad width or height or level */ + if (width < 2 * border || width > 2 + maxSize) return GL_FALSE; - } - if (depth < 1 || depth > ctx->Const.MaxArrayTextureLayers) { + if (height < 2 * border || height > 2 + maxSize) + return GL_FALSE; + if (depth < 1 || depth > ctx->Const.MaxArrayTextureLayers) + return GL_FALSE; + if (level >= ctx->Const.MaxTextureLevels) return GL_FALSE; + if (!ctx->Extensions.ARB_texture_non_power_of_two) { + if (width > 0 && !_mesa_is_pow_two(width - 2 * border)) + return GL_FALSE; + if (height > 0 && !_mesa_is_pow_two(height - 2 * border)) + return GL_FALSE; } return GL_TRUE; + default: _mesa_problem(ctx, "Invalid target in _mesa_test_proxy_teximage"); return GL_FALSE; @@ -1225,15 +1331,37 @@ _mesa_test_proxy_teximage(struct gl_context *ctx, GLenum target, GLint level, /** - * Helper function to determine whether a target supports compressed textures + * Check if the memory used by the texture would exceed the driver's limit. + * This lets us support a max 3D texture size of 8K (for example) but + * prevents allocating a full 8K x 8K x 8K texture. + * XXX this could be rolled into the proxy texture size test (above) but + * we don't have the actual texture internal format at that point. */ static GLboolean -target_can_be_compressed(struct gl_context *ctx, GLenum target) +legal_texture_size(struct gl_context *ctx, gl_format format, + GLint width, GLint height, GLint depth) { + uint64_t bytes = _mesa_format_image_size64(format, width, height, depth); + uint64_t mbytes = bytes / (1024 * 1024); /* convert to MB */ + return mbytes <= (uint64_t) ctx->Const.MaxTextureMbytes; +} + + + +/** + * Helper function to determine whether a target and specific compression + * format are supported. + */ +static GLboolean +target_can_be_compressed(const struct gl_context *ctx, GLenum target, + GLenum intFormat) +{ + (void) intFormat; /* not used yet */ + switch (target) { case GL_TEXTURE_2D: case GL_PROXY_TEXTURE_2D: - return GL_TRUE; + return GL_TRUE; /* true for any compressed format so far */ case GL_PROXY_TEXTURE_CUBE_MAP: case GL_TEXTURE_CUBE_MAP_POSITIVE_X: case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: @@ -1252,15 +1380,118 @@ target_can_be_compressed(struct gl_context *ctx, GLenum target) /** + * Check if the given texture target value is legal for a + * glTexImage1/2/3D call. + */ +static GLboolean +legal_teximage_target(struct gl_context *ctx, GLuint dims, GLenum target) +{ + switch (dims) { + case 1: + switch (target) { + case GL_TEXTURE_1D: + case GL_PROXY_TEXTURE_1D: + return GL_TRUE; + default: + return GL_FALSE; + } + case 2: + switch (target) { + case GL_TEXTURE_2D: + case GL_PROXY_TEXTURE_2D: + return GL_TRUE; + case GL_PROXY_TEXTURE_CUBE_MAP: + case GL_TEXTURE_CUBE_MAP_POSITIVE_X: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: + return ctx->Extensions.ARB_texture_cube_map; + case GL_TEXTURE_RECTANGLE_NV: + case GL_PROXY_TEXTURE_RECTANGLE_NV: + return ctx->Extensions.NV_texture_rectangle; + case GL_TEXTURE_1D_ARRAY_EXT: + case GL_PROXY_TEXTURE_1D_ARRAY_EXT: + return ctx->Extensions.MESA_texture_array; + default: + return GL_FALSE; + } + case 3: + switch (target) { + case GL_TEXTURE_3D: + case GL_PROXY_TEXTURE_3D: + return GL_TRUE; + case GL_TEXTURE_2D_ARRAY_EXT: + case GL_PROXY_TEXTURE_2D_ARRAY_EXT: + return ctx->Extensions.MESA_texture_array; + default: + return GL_FALSE; + } + default: + _mesa_problem(ctx, "invalid dims=%u in legal_teximage_target()", dims); + return GL_FALSE; + } +} + + +/** + * Check if the given texture target value is legal for a + * glTexSubImage, glCopyTexSubImage or glCopyTexImage call. + * The difference compared to legal_teximage_target() above is that + * proxy targets are not supported. + */ +static GLboolean +legal_texsubimage_target(struct gl_context *ctx, GLuint dims, GLenum target) +{ + switch (dims) { + case 1: + return target == GL_TEXTURE_1D; + case 2: + switch (target) { + case GL_TEXTURE_2D: + return GL_TRUE; + case GL_TEXTURE_CUBE_MAP_POSITIVE_X: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_X: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Y: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y: + case GL_TEXTURE_CUBE_MAP_POSITIVE_Z: + case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z: + return ctx->Extensions.ARB_texture_cube_map; + case GL_TEXTURE_RECTANGLE_NV: + return ctx->Extensions.NV_texture_rectangle; + case GL_TEXTURE_1D_ARRAY_EXT: + return ctx->Extensions.MESA_texture_array; + default: + return GL_FALSE; + } + case 3: + switch (target) { + case GL_TEXTURE_3D: + return GL_TRUE; + case GL_TEXTURE_2D_ARRAY_EXT: + return ctx->Extensions.MESA_texture_array; + default: + return GL_FALSE; + } + default: + _mesa_problem(ctx, "invalid dims=%u in legal_texsubimage_target()", + dims); + return GL_FALSE; + } +} + + +/** * Test the glTexImage[123]D() parameters for errors. * * \param ctx GL context. + * \param dimensions texture image dimensions (must be 1, 2 or 3). * \param target texture target given by the user. * \param level image level given by the user. * \param internalFormat internal format given by the user. * \param format pixel data format given by the user. * \param type pixel data type given by the user. - * \param dimensions texture image dimensions (must be 1, 2 or 3). * \param width image width given by the user. * \param height image height given by the user. * \param depth image depth given by the user. @@ -1269,21 +1500,21 @@ target_can_be_compressed(struct gl_context *ctx, GLenum target) * \return GL_TRUE if an error was detected, or GL_FALSE if no errors. * * Verifies each of the parameters against the constants specified in - * __struct gl_contextRec::Const and the supported extensions, and according to the - * OpenGL specification. + * __struct gl_contextRec::Const and the supported extensions, and according + * to the OpenGL specification. */ static GLboolean -texture_error_check( struct gl_context *ctx, GLenum target, +texture_error_check( struct gl_context *ctx, + GLuint dimensions, GLenum target, GLint level, GLint internalFormat, GLenum format, GLenum type, - GLuint dimensions, GLint width, GLint height, GLint depth, GLint border ) { - const GLboolean isProxy = _mesa_is_proxy_texture(target); + const GLenum proxyTarget = get_proxy_target(target); + const GLboolean isProxy = target == proxyTarget; GLboolean sizeOK = GL_TRUE; GLboolean colorFormat, indexFormat; - GLenum proxy_target; /* Basic level check (more checking in ctx->Driver.TestProxyTexImage) */ if (level < 0 || level >= MAX_TEXTURE_LEVELS) { @@ -1313,71 +1544,16 @@ texture_error_check( struct gl_context *ctx, GLenum target, return GL_TRUE; } - /* Check target and call ctx->Driver.TestProxyTexImage() to check the - * level, width, height and depth. - */ - if (dimensions == 1) { - if (target == GL_PROXY_TEXTURE_1D || target == GL_TEXTURE_1D) { - proxy_target = GL_PROXY_TEXTURE_1D; - height = 1; - depth = 1; - } - else { - _mesa_error( ctx, GL_INVALID_ENUM, "glTexImage1D(target)" ); - return GL_TRUE; - } - } - else if (dimensions == 2) { - depth = 1; - if (target == GL_PROXY_TEXTURE_2D || target == GL_TEXTURE_2D) { - proxy_target = GL_PROXY_TEXTURE_2D; - } - else if (target == GL_PROXY_TEXTURE_CUBE_MAP_ARB || - (target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB && - target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB)) { - if (!ctx->Extensions.ARB_texture_cube_map) { - _mesa_error(ctx, GL_INVALID_ENUM, "glTexImage2D(target)"); - return GL_TRUE; - } - proxy_target = GL_PROXY_TEXTURE_CUBE_MAP_ARB; - sizeOK = (width == height); - } - else if (target == GL_PROXY_TEXTURE_RECTANGLE_NV || - target == GL_TEXTURE_RECTANGLE_NV) { - if (!ctx->Extensions.NV_texture_rectangle) { - _mesa_error(ctx, GL_INVALID_ENUM, "glTexImage2D(target)"); - return GL_TRUE; - } - proxy_target = GL_PROXY_TEXTURE_RECTANGLE_NV; - } - else if (target == GL_PROXY_TEXTURE_1D_ARRAY_EXT || - target == GL_TEXTURE_1D_ARRAY_EXT) { - proxy_target = GL_PROXY_TEXTURE_1D_ARRAY_EXT; - } - else { - _mesa_error(ctx, GL_INVALID_ENUM, "glTexImage2D(target)"); - return GL_TRUE; - } - } - else if (dimensions == 3) { - if (target == GL_PROXY_TEXTURE_3D || target == GL_TEXTURE_3D) { - proxy_target = GL_PROXY_TEXTURE_3D; - } - else if (target == GL_PROXY_TEXTURE_2D_ARRAY_EXT || - target == GL_TEXTURE_2D_ARRAY_EXT) { - proxy_target = GL_PROXY_TEXTURE_2D_ARRAY_EXT; - } - else { - _mesa_error( ctx, GL_INVALID_ENUM, "glTexImage3D(target)" ); - return GL_TRUE; - } - } - else { - _mesa_problem( ctx, "bad dims in texture_error_check" ); - return GL_TRUE; + /* Do this simple check before calling the TestProxyTexImage() function */ + if (proxyTarget == GL_PROXY_TEXTURE_CUBE_MAP_ARB) { + sizeOK = (width == height); } - sizeOK = sizeOK && ctx->Driver.TestProxyTexImage(ctx, proxy_target, level, + /* + * Use the proxy texture driver hook to see if the size/level/etc are + * legal. + */ + sizeOK = sizeOK && ctx->Driver.TestProxyTexImage(ctx, proxyTarget, level, internalFormat, format, type, width, height, depth, border); @@ -1482,9 +1658,10 @@ texture_error_check( struct gl_context *ctx, GLenum target, /* additional checks for compressed textures */ if (_mesa_is_compressed_format(ctx, internalFormat)) { - if (!target_can_be_compressed(ctx, target) && !isProxy) { - _mesa_error(ctx, GL_INVALID_ENUM, - "glTexImage%dD(target)", dimensions); + if (!target_can_be_compressed(ctx, target, internalFormat)) { + if (!isProxy) + _mesa_error(ctx, GL_INVALID_ENUM, + "glTexImage%dD(target)", dimensions); return GL_TRUE; } if (border != 0) { @@ -1532,8 +1709,8 @@ texture_error_check( struct gl_context *ctx, GLenum target, * \return GL_TRUE if an error was detected, or GL_FALSE if no errors. * * Verifies each of the parameters against the constants specified in - * __struct gl_contextRec::Const and the supported extensions, and according to the - * OpenGL specification. + * __struct gl_contextRec::Const and the supported extensions, and according + * to the OpenGL specification. */ static GLboolean subtexture_error_check( struct gl_context *ctx, GLuint dimensions, @@ -1542,61 +1719,13 @@ subtexture_error_check( struct gl_context *ctx, GLuint dimensions, GLint width, GLint height, GLint depth, GLenum format, GLenum type ) { - /* Check target */ - if (dimensions == 1) { - if (target != GL_TEXTURE_1D) { - _mesa_error( ctx, GL_INVALID_ENUM, "glTexSubImage1D(target)" ); - return GL_TRUE; - } - } - else if (dimensions == 2) { - if (target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB && - target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB) { - if (!ctx->Extensions.ARB_texture_cube_map) { - _mesa_error( ctx, GL_INVALID_ENUM, "glTexSubImage2D(target)" ); - return GL_TRUE; - } - } - else if (target == GL_TEXTURE_RECTANGLE_NV) { - if (!ctx->Extensions.NV_texture_rectangle) { - _mesa_error( ctx, GL_INVALID_ENUM, "glTexSubImage2D(target)" ); - return GL_TRUE; - } - } - else if (target == GL_TEXTURE_1D_ARRAY_EXT) { - if (!ctx->Extensions.MESA_texture_array) { - _mesa_error( ctx, GL_INVALID_ENUM, "glTexSubImage2D(target)" ); - return GL_TRUE; - } - } - else if (target != GL_TEXTURE_2D) { - _mesa_error( ctx, GL_INVALID_ENUM, "glTexSubImage2D(target)" ); - return GL_TRUE; - } - } - else if (dimensions == 3) { - if (target == GL_TEXTURE_2D_ARRAY_EXT) { - if (!ctx->Extensions.MESA_texture_array) { - _mesa_error( ctx, GL_INVALID_ENUM, "glTexSubImage3D(target)" ); - return GL_TRUE; - } - } - else if (target != GL_TEXTURE_3D) { - _mesa_error( ctx, GL_INVALID_ENUM, "glTexSubImage3D(target)" ); - return GL_TRUE; - } - } - else { - _mesa_problem( ctx, "invalid dims in texture_error_check" ); - return GL_TRUE; - } - /* Basic level check */ if (level < 0 || level >= MAX_TEXTURE_LEVELS) { _mesa_error(ctx, GL_INVALID_ENUM, "glTexSubImage2D(level=%d)", level); return GL_TRUE; } + /* Check for negative sizes */ if (width < 0) { _mesa_error(ctx, GL_INVALID_VALUE, "glTexSubImage%dD(width=%d)", dimensions, width); @@ -1683,13 +1812,6 @@ subtexture_error_check2( struct gl_context *ctx, GLuint dimensions, if (_mesa_is_format_compressed(destTex->TexFormat)) { GLuint bw, bh; - if (!target_can_be_compressed(ctx, target)) { - _mesa_error(ctx, GL_INVALID_ENUM, - "glTexSubImage%dD(target=%s)", dimensions, - _mesa_lookup_enum_by_nr(target)); - return GL_TRUE; - } - /* do tests which depend on compression block size */ _mesa_get_format_block_size(destTex->TexFormat, &bw, &bh); @@ -1732,18 +1854,26 @@ subtexture_error_check2( struct gl_context *ctx, GLuint dimensions, * \return GL_TRUE if an error was detected, or GL_FALSE if no errors. * * Verifies each of the parameters against the constants specified in - * __struct gl_contextRec::Const and the supported extensions, and according to the - * OpenGL specification. + * __struct gl_contextRec::Const and the supported extensions, and according + * to the OpenGL specification. */ static GLboolean copytexture_error_check( struct gl_context *ctx, GLuint dimensions, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border ) { - GLenum type; + const GLenum proxyTarget = get_proxy_target(target); + const GLenum type = GL_FLOAT; GLboolean sizeOK; GLint format; + /* check target */ + if (!legal_texsubimage_target(ctx, dimensions, target)) { + _mesa_error(ctx, GL_INVALID_ENUM, "glCopyTexImage%uD(target=%s)", + dimensions, _mesa_lookup_enum_by_nr(target)); + return GL_TRUE; + } + /* Basic level check (more checking in ctx->Driver.TestProxyTexImage) */ if (level < 0 || level >= MAX_TEXTURE_LEVELS) { _mesa_error(ctx, GL_INVALID_VALUE, @@ -1781,75 +1911,14 @@ copytexture_error_check( struct gl_context *ctx, GLuint dimensions, return GL_TRUE; } - /* NOTE: the format and type aren't really significant for - * TestProxyTexImage(). Only the internalformat really matters. - */ - type = GL_FLOAT; + /* Do size, level checking */ + sizeOK = (proxyTarget == GL_PROXY_TEXTURE_CUBE_MAP_ARB) + ? (width == height) : 1; - /* Check target and call ctx->Driver.TestProxyTexImage() to check the - * level, width, height and depth. - */ - if (dimensions == 1) { - if (target == GL_TEXTURE_1D) { - sizeOK = ctx->Driver.TestProxyTexImage(ctx, GL_PROXY_TEXTURE_1D, - level, internalFormat, - format, type, - width, 1, 1, border); - } - else { - _mesa_error( ctx, GL_INVALID_ENUM, "glCopyTexImage1D(target)" ); - return GL_TRUE; - } - } - else if (dimensions == 2) { - if (target == GL_TEXTURE_2D) { - sizeOK = ctx->Driver.TestProxyTexImage(ctx, GL_PROXY_TEXTURE_2D, - level, internalFormat, - format, type, - width, height, 1, border); - } - else if (target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB && - target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB) { - if (!ctx->Extensions.ARB_texture_cube_map) { - _mesa_error( ctx, GL_INVALID_ENUM, "glCopyTexImage2D(target)" ); - return GL_TRUE; - } - sizeOK = (width == height) && - ctx->Driver.TestProxyTexImage(ctx, GL_PROXY_TEXTURE_CUBE_MAP_ARB, - level, internalFormat, format, type, - width, height, 1, border); - } - else if (target == GL_TEXTURE_RECTANGLE_NV) { - if (!ctx->Extensions.NV_texture_rectangle) { - _mesa_error( ctx, GL_INVALID_ENUM, "glCopyTexImage2D(target)" ); - return GL_TRUE; - } - sizeOK = ctx->Driver.TestProxyTexImage(ctx, - GL_PROXY_TEXTURE_RECTANGLE_NV, - level, internalFormat, - format, type, - width, height, 1, border); - } - else if (target == GL_TEXTURE_1D_ARRAY_EXT) { - if (!ctx->Extensions.MESA_texture_array) { - _mesa_error(ctx, GL_INVALID_ENUM, "glCopyTexImage2D(target)"); - return GL_TRUE; - } - sizeOK = ctx->Driver.TestProxyTexImage(ctx, - GL_PROXY_TEXTURE_1D_ARRAY_EXT, - level, internalFormat, - format, type, - width, height, 1, border); - } - else { - _mesa_error( ctx, GL_INVALID_ENUM, "glCopyTexImage2D(target)" ); - return GL_TRUE; - } - } - else { - _mesa_problem(ctx, "invalid dimensions in copytexture_error_check"); - return GL_TRUE; - } + sizeOK = sizeOK && ctx->Driver.TestProxyTexImage(ctx, proxyTarget, level, + internalFormat, format, + type, width, height, + 1, border); if (!sizeOK) { if (dimensions == 1) { @@ -1865,7 +1934,7 @@ copytexture_error_check( struct gl_context *ctx, GLuint dimensions, } if (_mesa_is_compressed_format(ctx, internalFormat)) { - if (!target_can_be_compressed(ctx, target)) { + if (!target_can_be_compressed(ctx, target, internalFormat)) { _mesa_error(ctx, GL_INVALID_ENUM, "glCopyTexImage%dD(target)", dimensions); return GL_TRUE; @@ -1924,45 +1993,11 @@ copytexsubimage_error_check1( struct gl_context *ctx, GLuint dimensions, } } - /* Check target */ - if (dimensions == 1) { - if (target != GL_TEXTURE_1D) { - _mesa_error( ctx, GL_INVALID_ENUM, "glCopyTexSubImage1D(target)" ); - return GL_TRUE; - } - } - else if (dimensions == 2) { - if (target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB && - target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB) { - if (!ctx->Extensions.ARB_texture_cube_map) { - _mesa_error( ctx, GL_INVALID_ENUM, "glCopyTexSubImage2D(target)" ); - return GL_TRUE; - } - } - else if (target == GL_TEXTURE_RECTANGLE_NV) { - if (!ctx->Extensions.NV_texture_rectangle) { - _mesa_error( ctx, GL_INVALID_ENUM, "glCopyTexSubImage2D(target)" ); - return GL_TRUE; - } - } - else if (target == GL_TEXTURE_1D_ARRAY_EXT) { - if (!ctx->Extensions.MESA_texture_array) { - _mesa_error( ctx, GL_INVALID_ENUM, "glCopyTexSubImage2D(target)" ); - return GL_TRUE; - } - } - else if (target != GL_TEXTURE_2D) { - _mesa_error( ctx, GL_INVALID_ENUM, "glCopyTexSubImage2D(target)" ); - return GL_TRUE; - } - } - else if (dimensions == 3) { - if (((target != GL_TEXTURE_2D_ARRAY_EXT) || - (!ctx->Extensions.MESA_texture_array)) - && (target != GL_TEXTURE_3D)) { - _mesa_error( ctx, GL_INVALID_ENUM, "glCopyTexSubImage3D(target)" ); - return GL_TRUE; - } + /* check target (proxies not allowed) */ + if (!legal_texsubimage_target(ctx, dimensions, target)) { + _mesa_error(ctx, GL_INVALID_ENUM, "glCopyTexSubImage%uD(target=%s)", + dimensions, _mesa_lookup_enum_by_nr(target)); + return GL_TRUE; } /* Check level */ @@ -2051,11 +2086,6 @@ copytexsubimage_error_check2( struct gl_context *ctx, GLuint dimensions, } if (_mesa_is_format_compressed(teximage->TexFormat)) { - if (!target_can_be_compressed(ctx, target)) { - _mesa_error(ctx, GL_INVALID_ENUM, - "glCopyTexSubImage%dD(target)", dimensions); - return GL_TRUE; - } /* offset must be multiple of 4 */ if ((xoffset & 3) || (yoffset & 3)) { _mesa_error(ctx, GL_INVALID_VALUE, @@ -2257,13 +2287,14 @@ override_internal_format(GLenum internalFormat, GLint width, GLint height) * for efficient texture memory layout/allocation. In particular, this * comes up during automatic mipmap generation. */ -void +gl_format _mesa_choose_texture_format(struct gl_context *ctx, struct gl_texture_object *texObj, - struct gl_texture_image *texImage, GLenum target, GLint level, GLenum internalFormat, GLenum format, GLenum type) { + gl_format f; + /* see if we've already chosen a format for the previous level */ if (level > 0) { struct gl_texture_image *prevImage = @@ -2275,102 +2306,60 @@ _mesa_choose_texture_format(struct gl_context *ctx, prevImage->Width > 0 && prevImage->InternalFormat == internalFormat) { /* use the same format */ - texImage->TexFormat = prevImage->TexFormat; - return; + ASSERT(prevImage->TexFormat != MESA_FORMAT_NONE); + return prevImage->TexFormat; } } /* choose format from scratch */ - texImage->TexFormat = ctx->Driver.ChooseTextureFormat(ctx, internalFormat, - format, type); - ASSERT(texImage->TexFormat != MESA_FORMAT_NONE); + f = ctx->Driver.ChooseTextureFormat(ctx, internalFormat, format, type); + ASSERT(f != MESA_FORMAT_NONE); + return f; } - -/* - * Called from the API. Note that width includes the border. +/** + * Common code to implement all the glTexImage1D/2D/3D functions. */ -void GLAPIENTRY -_mesa_TexImage1D( GLenum target, GLint level, GLint internalFormat, - GLsizei width, GLint border, GLenum format, - GLenum type, const GLvoid *pixels ) +static void +teximage(struct gl_context *ctx, GLuint dims, + GLenum target, GLint level, GLint internalFormat, + GLsizei width, GLsizei height, GLsizei depth, + GLint border, GLenum format, GLenum type, + const GLvoid *pixels) { - GET_CURRENT_CONTEXT(ctx); + GLboolean error; + ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) - _mesa_debug(ctx, "glTexImage1D %s %d %s %d %d %s %s %p\n", + _mesa_debug(ctx, "glTexImage%uD %s %d %s %d %d %d %d %s %s %p\n", + dims, _mesa_lookup_enum_by_nr(target), level, - _mesa_lookup_enum_by_nr(internalFormat), width, border, + _mesa_lookup_enum_by_nr(internalFormat), + width, height, depth, border, _mesa_lookup_enum_by_nr(format), _mesa_lookup_enum_by_nr(type), pixels); - internalFormat = override_internal_format(internalFormat, width, 1); - - if (target == GL_TEXTURE_1D) { - /* non-proxy target */ - struct gl_texture_object *texObj; - struct gl_texture_image *texImage; - const GLuint face = _mesa_tex_target_to_face(target); - - if (texture_error_check(ctx, target, level, internalFormat, - format, type, 1, width, 1, 1, border)) { - return; /* error was recorded */ - } - - if (ctx->NewState & _MESA_NEW_TRANSFER_STATE) - _mesa_update_state(ctx); - - texObj = _mesa_get_current_tex_object(ctx, target); - _mesa_lock_texture(ctx, texObj); - { - texImage = _mesa_get_tex_image(ctx, texObj, target, level); - if (!texImage) { - _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage1D"); - } - else { - if (texImage->Data) { - ctx->Driver.FreeTexImageData( ctx, texImage ); - } - - ASSERT(texImage->Data == NULL); - - clear_teximage_fields(texImage); /* not really needed, but helpful */ - _mesa_init_teximage_fields(ctx, target, texImage, - width, 1, 1, - border, internalFormat); - - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, format, type); - - /* Give the texture to the driver. <pixels> may be null. */ - ASSERT(ctx->Driver.TexImage1D); - ctx->Driver.TexImage1D(ctx, target, level, internalFormat, - width, border, format, type, pixels, - &ctx->Unpack, texObj, texImage); + internalFormat = override_internal_format(internalFormat, width, height); - ASSERT(texImage->TexFormat); + /* target error checking */ + if (!legal_teximage_target(ctx, dims, target)) { + _mesa_error(ctx, GL_INVALID_ENUM, "glTexImage%uD(target=%s)", + dims, _mesa_lookup_enum_by_nr(target)); + return; + } - _mesa_set_fetch_functions(texImage, 1); + /* general error checking */ + error = texture_error_check(ctx, dims, target, level, internalFormat, + format, type, width, height, depth, border); - check_gen_mipmap(ctx, target, texObj, level); + if (_mesa_is_proxy_texture(target)) { + /* Proxy texture: just clear or set state depending on error checking */ + struct gl_texture_image *texImage = + _mesa_get_proxy_tex_image(ctx, target, level); - update_fbo_texture(ctx, texObj, face, level); - - /* state update */ - texObj->_Complete = GL_FALSE; - ctx->NewState |= _NEW_TEXTURE; - } - } - _mesa_unlock_texture(ctx, texObj); - } - else if (target == GL_PROXY_TEXTURE_1D) { - /* Proxy texture: check for errors and update proxy state */ - struct gl_texture_image *texImage; - texImage = _mesa_get_proxy_tex_image(ctx, target, level); - if (texture_error_check(ctx, target, level, internalFormat, - format, type, 1, width, 1, 1, border)) { + if (error) { /* when error, clear all proxy texture image parameters */ if (texImage) clear_teximage_fields(texImage); @@ -2379,54 +2368,28 @@ _mesa_TexImage1D( GLenum target, GLint level, GLint internalFormat, /* no error, set the tex image parameters */ struct gl_texture_object *texObj = _mesa_get_current_tex_object(ctx, target); - ASSERT(texImage); - _mesa_init_teximage_fields(ctx, target, texImage, - width, 1, 1, - border, internalFormat); - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, format, type); + gl_format texFormat = _mesa_choose_texture_format(ctx, texObj, + target, level, + internalFormat, + format, type); + + if (legal_texture_size(ctx, texFormat, width, height, depth)) { + _mesa_init_teximage_fields(ctx, target, texImage, width, height, + depth, border, internalFormat, + texFormat); + } + else if (texImage) { + clear_teximage_fields(texImage); + } } } else { - _mesa_error( ctx, GL_INVALID_ENUM, "glTexImage1D(target)" ); - return; - } -} - - -void GLAPIENTRY -_mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat, - GLsizei width, GLsizei height, GLint border, - GLenum format, GLenum type, - const GLvoid *pixels ) -{ - GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - - if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) - _mesa_debug(ctx, "glTexImage2D %s %d %s %d %d %d %s %s %p\n", - _mesa_lookup_enum_by_nr(target), level, - _mesa_lookup_enum_by_nr(internalFormat), width, height, - border, _mesa_lookup_enum_by_nr(format), - _mesa_lookup_enum_by_nr(type), pixels); - - internalFormat = override_internal_format(internalFormat, width, height); - - if (target == GL_TEXTURE_2D || - (ctx->Extensions.ARB_texture_cube_map && - target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB && - target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB) || - (ctx->Extensions.NV_texture_rectangle && - target == GL_TEXTURE_RECTANGLE_NV) || - (ctx->Extensions.MESA_texture_array && - target == GL_TEXTURE_1D_ARRAY_EXT)) { /* non-proxy target */ + const GLuint face = _mesa_tex_target_to_face(target); struct gl_texture_object *texObj; struct gl_texture_image *texImage; - const GLuint face = _mesa_tex_target_to_face(target); - if (texture_error_check(ctx, target, level, internalFormat, - format, type, 2, width, height, 1, border)) { + if (error) { return; /* error was recorded */ } @@ -2434,78 +2397,97 @@ _mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat, _mesa_update_state(ctx); texObj = _mesa_get_current_tex_object(ctx, target); + _mesa_lock_texture(ctx, texObj); { texImage = _mesa_get_tex_image(ctx, texObj, target, level); + if (!texImage) { - _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage2D"); + _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage%uD", dims); } else { + gl_format texFormat; + if (texImage->Data) { ctx->Driver.FreeTexImageData( ctx, texImage ); } ASSERT(texImage->Data == NULL); - clear_teximage_fields(texImage); /* not really needed, but helpful */ - _mesa_init_teximage_fields(ctx, target, texImage, - width, height, 1, - border, internalFormat); - - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, format, type); - - /* Give the texture to the driver. <pixels> may be null. */ - ASSERT(ctx->Driver.TexImage2D); - ctx->Driver.TexImage2D(ctx, target, level, internalFormat, - width, height, border, format, type, - pixels, &ctx->Unpack, texObj, texImage); - - ASSERT(texImage->TexFormat); - - _mesa_set_fetch_functions(texImage, 2); + texFormat = _mesa_choose_texture_format(ctx, texObj, target, level, + internalFormat, format, + type); + + if (legal_texture_size(ctx, texFormat, width, height, depth)) { + _mesa_init_teximage_fields(ctx, target, texImage, + width, height, depth, + border, internalFormat, texFormat); + + /* Give the texture to the driver. <pixels> may be null. */ + ASSERT(ctx->Driver.TexImage3D); + switch (dims) { + case 1: + ctx->Driver.TexImage1D(ctx, target, level, internalFormat, + width, border, format, + type, pixels, &ctx->Unpack, texObj, + texImage); + break; + case 2: + ctx->Driver.TexImage2D(ctx, target, level, internalFormat, + width, height, border, format, + type, pixels, &ctx->Unpack, texObj, + texImage); + break; + case 3: + ctx->Driver.TexImage3D(ctx, target, level, internalFormat, + width, height, depth, border, format, + type, pixels, &ctx->Unpack, texObj, + texImage); + break; + default: + _mesa_problem(ctx, "invalid dims=%u in teximage()", dims); + } - check_gen_mipmap(ctx, target, texObj, level); + check_gen_mipmap(ctx, target, texObj, level); - update_fbo_texture(ctx, texObj, face, level); + update_fbo_texture(ctx, texObj, face, level); - /* state update */ - texObj->_Complete = GL_FALSE; - ctx->NewState |= _NEW_TEXTURE; + /* state update */ + texObj->_Complete = GL_FALSE; + ctx->NewState |= _NEW_TEXTURE; + } + else { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage%uD", dims); + } } } _mesa_unlock_texture(ctx, texObj); } - else if (target == GL_PROXY_TEXTURE_2D || - (target == GL_PROXY_TEXTURE_CUBE_MAP_ARB && - ctx->Extensions.ARB_texture_cube_map) || - (target == GL_PROXY_TEXTURE_RECTANGLE_NV && - ctx->Extensions.NV_texture_rectangle) || - (ctx->Extensions.MESA_texture_array && - target == GL_PROXY_TEXTURE_1D_ARRAY_EXT)) { - /* Proxy texture: check for errors and update proxy state */ - struct gl_texture_image *texImage; - texImage = _mesa_get_proxy_tex_image(ctx, target, level); - if (texture_error_check(ctx, target, level, internalFormat, - format, type, 2, width, height, 1, border)) { - /* when error, clear all proxy texture image parameters */ - if (texImage) - clear_teximage_fields(texImage); - } - else { - /* no error, set the tex image parameters */ - struct gl_texture_object *texObj = - _mesa_get_current_tex_object(ctx, target); - _mesa_init_teximage_fields(ctx, target, texImage, - width, height, 1, - border, internalFormat); - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, format, type); - } - } - else { - _mesa_error( ctx, GL_INVALID_ENUM, "glTexImage2D(target)" ); - return; - } +} + + +/* + * Called from the API. Note that width includes the border. + */ +void GLAPIENTRY +_mesa_TexImage1D( GLenum target, GLint level, GLint internalFormat, + GLsizei width, GLint border, GLenum format, + GLenum type, const GLvoid *pixels ) +{ + GET_CURRENT_CONTEXT(ctx); + teximage(ctx, 1, target, level, internalFormat, width, 1, 1, + border, format, type, pixels); +} + + +void GLAPIENTRY +_mesa_TexImage2D( GLenum target, GLint level, GLint internalFormat, + GLsizei width, GLsizei height, GLint border, + GLenum format, GLenum type, + const GLvoid *pixels ) +{ + GET_CURRENT_CONTEXT(ctx); + teximage(ctx, 2, target, level, internalFormat, width, height, 1, + border, format, type, pixels); } @@ -2520,101 +2502,8 @@ _mesa_TexImage3D( GLenum target, GLint level, GLint internalFormat, const GLvoid *pixels ) { GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - - if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) - _mesa_debug(ctx, "glTexImage3D %s %d %s %d %d %d %d %s %s %p\n", - _mesa_lookup_enum_by_nr(target), level, - _mesa_lookup_enum_by_nr(internalFormat), width, height, - depth, border, _mesa_lookup_enum_by_nr(format), - _mesa_lookup_enum_by_nr(type), pixels); - - internalFormat = override_internal_format(internalFormat, width, height); - - if (target == GL_TEXTURE_3D || - (ctx->Extensions.MESA_texture_array && - target == GL_TEXTURE_2D_ARRAY_EXT)) { - /* non-proxy target */ - struct gl_texture_object *texObj; - struct gl_texture_image *texImage; - const GLuint face = _mesa_tex_target_to_face(target); - - if (texture_error_check(ctx, target, level, (GLint) internalFormat, - format, type, 3, width, height, depth, border)) { - return; /* error was recorded */ - } - - if (ctx->NewState & _MESA_NEW_TRANSFER_STATE) - _mesa_update_state(ctx); - - texObj = _mesa_get_current_tex_object(ctx, target); - _mesa_lock_texture(ctx, texObj); - { - texImage = _mesa_get_tex_image(ctx, texObj, target, level); - if (!texImage) { - _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage3D"); - } - else { - if (texImage->Data) { - ctx->Driver.FreeTexImageData( ctx, texImage ); - } - - ASSERT(texImage->Data == NULL); - clear_teximage_fields(texImage); /* not really needed, but helpful */ - _mesa_init_teximage_fields(ctx, target, texImage, - width, height, depth, - border, internalFormat); - - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, format, type); - - /* Give the texture to the driver. <pixels> may be null. */ - ASSERT(ctx->Driver.TexImage3D); - ctx->Driver.TexImage3D(ctx, target, level, internalFormat, - width, height, depth, border, format, type, - pixels, &ctx->Unpack, texObj, texImage); - - ASSERT(texImage->TexFormat); - - _mesa_set_fetch_functions(texImage, 3); - - check_gen_mipmap(ctx, target, texObj, level); - - update_fbo_texture(ctx, texObj, face, level); - - /* state update */ - texObj->_Complete = GL_FALSE; - ctx->NewState |= _NEW_TEXTURE; - } - } - _mesa_unlock_texture(ctx, texObj); - } - else if (target == GL_PROXY_TEXTURE_3D || - (ctx->Extensions.MESA_texture_array && - target == GL_PROXY_TEXTURE_2D_ARRAY_EXT)) { - /* Proxy texture: check for errors and update proxy state */ - struct gl_texture_image *texImage; - texImage = _mesa_get_proxy_tex_image(ctx, target, level); - if (texture_error_check(ctx, target, level, internalFormat, - format, type, 3, width, height, depth, border)) { - /* when error, clear all proxy texture image parameters */ - if (texImage) - clear_teximage_fields(texImage); - } - else { - /* no error, set the tex image parameters */ - struct gl_texture_object *texObj = - _mesa_get_current_tex_object(ctx, target); - _mesa_init_teximage_fields(ctx, target, texImage, width, height, - depth, border, internalFormat); - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, format, type); - } - } - else { - _mesa_error( ctx, GL_INVALID_ENUM, "glTexImage3D(target)" ); - return; - } + teximage(ctx, 3, target, level, internalFormat, width, height, depth, + border, format, type, pixels); } @@ -2677,51 +2566,92 @@ _mesa_EGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image) #endif -void GLAPIENTRY -_mesa_TexSubImage1D( GLenum target, GLint level, - GLint xoffset, GLsizei width, - GLenum format, GLenum type, - const GLvoid *pixels ) + +/** + * Implement all the glTexSubImage1/2/3D() functions. + */ +static void +texsubimage(struct gl_context *ctx, GLuint dims, GLenum target, GLint level, + GLint xoffset, GLint yoffset, GLint zoffset, + GLsizei width, GLsizei height, GLsizei depth, + GLenum format, GLenum type, const GLvoid *pixels ) { struct gl_texture_object *texObj; struct gl_texture_image *texImage; - GET_CURRENT_CONTEXT(ctx); + ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) - _mesa_debug(ctx, "glTexSubImage1D %s %d %d %d %s %s %p\n", + _mesa_debug(ctx, "glTexSubImage%uD %s %d %d %d %d %d %d %d %s %s %p\n", + dims, _mesa_lookup_enum_by_nr(target), level, - xoffset, width, _mesa_lookup_enum_by_nr(format), + xoffset, yoffset, zoffset, width, height, depth, + _mesa_lookup_enum_by_nr(format), _mesa_lookup_enum_by_nr(type), pixels); + /* check target (proxies not allowed) */ + if (!legal_texsubimage_target(ctx, dims, target)) { + _mesa_error(ctx, GL_INVALID_ENUM, "glTexSubImage%uD(target=%s)", + dims, _mesa_lookup_enum_by_nr(target)); + return; + } + if (ctx->NewState & _MESA_NEW_TRANSFER_STATE) _mesa_update_state(ctx); - if (subtexture_error_check(ctx, 1, target, level, xoffset, 0, 0, - width, 1, 1, format, type)) { + if (subtexture_error_check(ctx, dims, target, level, xoffset, yoffset, zoffset, + width, height, depth, format, type)) { return; /* error was detected */ } - texObj = _mesa_get_current_tex_object(ctx, target); - assert(texObj); _mesa_lock_texture(ctx, texObj); { texImage = _mesa_select_tex_image(ctx, texObj, target, level); - if (subtexture_error_check2(ctx, 1, target, level, xoffset, 0, 0, - width, 1, 1, format, type, texImage)) { + if (subtexture_error_check2(ctx, dims, target, level, + xoffset, yoffset, zoffset, + width, height, depth, + format, type, texImage)) { /* error was recorded */ } - else if (width > 0) { - /* If we have a border, xoffset=-1 is legal. Bias by border width */ - xoffset += texImage->Border; + else if (width > 0 && height > 0 && height > 0) { + /* If we have a border, offset=-1 is legal. Bias by border width. */ + switch (dims) { + case 3: + zoffset += texImage->Border; + /* fall-through */ + case 2: + yoffset += texImage->Border; + /* fall-through */ + case 1: + xoffset += texImage->Border; + } - ASSERT(ctx->Driver.TexSubImage1D); - ctx->Driver.TexSubImage1D(ctx, target, level, xoffset, width, - format, type, pixels, &ctx->Unpack, - texObj, texImage); + switch (dims) { + case 1: + ctx->Driver.TexSubImage1D(ctx, target, level, + xoffset, width, + format, type, pixels, + &ctx->Unpack, texObj, texImage ); + break; + case 2: + ctx->Driver.TexSubImage2D(ctx, target, level, + xoffset, yoffset, width, height, + format, type, pixels, + &ctx->Unpack, texObj, texImage ); + break; + case 3: + ctx->Driver.TexSubImage3D(ctx, target, level, + xoffset, yoffset, zoffset, + width, height, depth, + format, type, pixels, + &ctx->Unpack, texObj, texImage ); + break; + default: + _mesa_problem(ctx, "unexpected dims in subteximage()"); + } check_gen_mipmap(ctx, target, texObj, level); @@ -2733,58 +2663,31 @@ _mesa_TexSubImage1D( GLenum target, GLint level, void GLAPIENTRY +_mesa_TexSubImage1D( GLenum target, GLint level, + GLint xoffset, GLsizei width, + GLenum format, GLenum type, + const GLvoid *pixels ) +{ + GET_CURRENT_CONTEXT(ctx); + texsubimage(ctx, 1, target, level, + xoffset, 0, 0, + width, 1, 1, + format, type, pixels); +} + + +void GLAPIENTRY _mesa_TexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels ) { - struct gl_texture_object *texObj; - struct gl_texture_image *texImage; GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - - if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) - _mesa_debug(ctx, "glTexSubImage2D %s %d %d %d %d %d %s %s %p\n", - _mesa_lookup_enum_by_nr(target), level, - xoffset, yoffset, width, height, - _mesa_lookup_enum_by_nr(format), - _mesa_lookup_enum_by_nr(type), pixels); - - if (ctx->NewState & _MESA_NEW_TRANSFER_STATE) - _mesa_update_state(ctx); - - if (subtexture_error_check(ctx, 2, target, level, xoffset, yoffset, 0, - width, height, 1, format, type)) { - return; /* error was detected */ - } - - texObj = _mesa_get_current_tex_object(ctx, target); - - _mesa_lock_texture(ctx, texObj); - { - texImage = _mesa_select_tex_image(ctx, texObj, target, level); - - if (subtexture_error_check2(ctx, 2, target, level, xoffset, yoffset, 0, - width, height, 1, format, type, texImage)) { - /* error was recorded */ - } - else if (width > 0 && height >= 0) { - /* If we have a border, xoffset=-1 is legal. Bias by border width */ - xoffset += texImage->Border; - yoffset += texImage->Border; - - ASSERT(ctx->Driver.TexSubImage2D); - ctx->Driver.TexSubImage2D(ctx, target, level, xoffset, yoffset, - width, height, format, type, pixels, - &ctx->Unpack, texObj, texImage); - - check_gen_mipmap(ctx, target, texObj, level); - - ctx->NewState |= _NEW_TEXTURE; - } - } - _mesa_unlock_texture(ctx, texObj); + texsubimage(ctx, 2, target, level, + xoffset, yoffset, 0, + width, height, 1, + format, type, pixels); } @@ -2796,84 +2699,41 @@ _mesa_TexSubImage3D( GLenum target, GLint level, GLenum format, GLenum type, const GLvoid *pixels ) { - struct gl_texture_object *texObj; - struct gl_texture_image *texImage; GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - - if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) - _mesa_debug(ctx, "glTexSubImage3D %s %d %d %d %d %d %d %d %s %s %p\n", - _mesa_lookup_enum_by_nr(target), level, - xoffset, yoffset, zoffset, width, height, depth, - _mesa_lookup_enum_by_nr(format), - _mesa_lookup_enum_by_nr(type), pixels); - - if (ctx->NewState & _MESA_NEW_TRANSFER_STATE) - _mesa_update_state(ctx); - - if (subtexture_error_check(ctx, 3, target, level, xoffset, yoffset, zoffset, - width, height, depth, format, type)) { - return; /* error was detected */ - } - - texObj = _mesa_get_current_tex_object(ctx, target); - - _mesa_lock_texture(ctx, texObj); - { - texImage = _mesa_select_tex_image(ctx, texObj, target, level); - - if (subtexture_error_check2(ctx, 3, target, level, - xoffset, yoffset, zoffset, - width, height, depth, - format, type, texImage)) { - /* error was recorded */ - } - else if (width > 0 && height > 0 && height > 0) { - /* If we have a border, xoffset=-1 is legal. Bias by border width */ - xoffset += texImage->Border; - yoffset += texImage->Border; - zoffset += texImage->Border; - - ASSERT(ctx->Driver.TexSubImage3D); - ctx->Driver.TexSubImage3D(ctx, target, level, - xoffset, yoffset, zoffset, - width, height, depth, - format, type, pixels, - &ctx->Unpack, texObj, texImage ); - - check_gen_mipmap(ctx, target, texObj, level); - - ctx->NewState |= _NEW_TEXTURE; - } - } - _mesa_unlock_texture(ctx, texObj); + texsubimage(ctx, 3, target, level, + xoffset, yoffset, zoffset, + width, height, depth, + format, type, pixels); } -void GLAPIENTRY -_mesa_CopyTexImage1D( GLenum target, GLint level, - GLenum internalFormat, - GLint x, GLint y, - GLsizei width, GLint border ) +/** + * Implement the glCopyTexImage1/2D() functions. + */ +static void +copyteximage(struct gl_context *ctx, GLuint dims, + GLenum target, GLint level, GLenum internalFormat, + GLint x, GLint y, GLsizei width, GLsizei height, GLint border ) { struct gl_texture_object *texObj; struct gl_texture_image *texImage; const GLuint face = _mesa_tex_target_to_face(target); - GET_CURRENT_CONTEXT(ctx); + ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) - _mesa_debug(ctx, "glCopyTexImage1D %s %d %s %d %d %d %d\n", + _mesa_debug(ctx, "glCopyTexImage%uD %s %d %s %d %d %d %d %d\n", + dims, _mesa_lookup_enum_by_nr(target), level, _mesa_lookup_enum_by_nr(internalFormat), - x, y, width, border); + x, y, width, height, border); if (ctx->NewState & NEW_COPY_TEX_STATE) _mesa_update_state(ctx); - if (copytexture_error_check(ctx, 1, target, level, internalFormat, - width, 1, border)) + if (copytexture_error_check(ctx, dims, target, level, internalFormat, + width, height, border)) return; texObj = _mesa_get_current_tex_object(ctx, target); @@ -2881,38 +2741,46 @@ _mesa_CopyTexImage1D( GLenum target, GLint level, _mesa_lock_texture(ctx, texObj); { texImage = _mesa_get_tex_image(ctx, texObj, target, level); + if (!texImage) { - _mesa_error(ctx, GL_OUT_OF_MEMORY, "glCopyTexImage1D"); + _mesa_error(ctx, GL_OUT_OF_MEMORY, "glCopyTexImage%uD", dims); } else { + gl_format texFormat; + if (texImage->Data) { ctx->Driver.FreeTexImageData( ctx, texImage ); } ASSERT(texImage->Data == NULL); - clear_teximage_fields(texImage); /* not really needed, but helpful */ - _mesa_init_teximage_fields(ctx, target, texImage, width, 1, 1, - border, internalFormat); - - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, GL_NONE, GL_NONE); + texFormat = _mesa_choose_texture_format(ctx, texObj, target, level, + internalFormat, GL_NONE, + GL_NONE); - ASSERT(ctx->Driver.CopyTexImage1D); - ctx->Driver.CopyTexImage1D(ctx, target, level, internalFormat, - x, y, width, border); - - ASSERT(texImage->TexFormat); + if (legal_texture_size(ctx, texFormat, width, height, 1)) { + _mesa_init_teximage_fields(ctx, target, texImage, width, height, 1, + border, internalFormat, texFormat); - _mesa_set_fetch_functions(texImage, 1); + ASSERT(ctx->Driver.CopyTexImage2D); + if (dims == 1) + ctx->Driver.CopyTexImage1D(ctx, target, level, internalFormat, + x, y, width, border); + else + ctx->Driver.CopyTexImage2D(ctx, target, level, internalFormat, + x, y, width, height, border); - check_gen_mipmap(ctx, target, texObj, level); + check_gen_mipmap(ctx, target, texObj, level); - update_fbo_texture(ctx, texObj, face, level); + update_fbo_texture(ctx, texObj, face, level); - /* state update */ - texObj->_Complete = GL_FALSE; - ctx->NewState |= _NEW_TEXTURE; + /* state update */ + texObj->_Complete = GL_FALSE; + ctx->NewState |= _NEW_TEXTURE; + } + else { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "glCopyTexImage%uD", dims); + } } } _mesa_unlock_texture(ctx, texObj); @@ -2921,95 +2789,52 @@ _mesa_CopyTexImage1D( GLenum target, GLint level, void GLAPIENTRY -_mesa_CopyTexImage2D( GLenum target, GLint level, GLenum internalFormat, - GLint x, GLint y, GLsizei width, GLsizei height, - GLint border ) +_mesa_CopyTexImage1D( GLenum target, GLint level, + GLenum internalFormat, + GLint x, GLint y, + GLsizei width, GLint border ) { - struct gl_texture_object *texObj; - struct gl_texture_image *texImage; - const GLuint face = _mesa_tex_target_to_face(target); GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - - if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) - _mesa_debug(ctx, "glCopyTexImage2D %s %d %s %d %d %d %d %d\n", - _mesa_lookup_enum_by_nr(target), level, - _mesa_lookup_enum_by_nr(internalFormat), - x, y, width, height, border); - - if (ctx->NewState & NEW_COPY_TEX_STATE) - _mesa_update_state(ctx); - - if (copytexture_error_check(ctx, 2, target, level, internalFormat, - width, height, border)) - return; - - texObj = _mesa_get_current_tex_object(ctx, target); - - _mesa_lock_texture(ctx, texObj); - { - texImage = _mesa_get_tex_image(ctx, texObj, target, level); - - if (!texImage) { - _mesa_error(ctx, GL_OUT_OF_MEMORY, "glCopyTexImage2D"); - } - else { - if (texImage->Data) { - ctx->Driver.FreeTexImageData( ctx, texImage ); - } - - ASSERT(texImage->Data == NULL); - - clear_teximage_fields(texImage); /* not really needed, but helpful */ - _mesa_init_teximage_fields(ctx, target, texImage, - width, height, 1, - border, internalFormat); - - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, GL_NONE, GL_NONE); - - ASSERT(ctx->Driver.CopyTexImage2D); - ctx->Driver.CopyTexImage2D(ctx, target, level, internalFormat, - x, y, width, height, border); - - ASSERT(texImage->TexFormat); - - _mesa_set_fetch_functions(texImage, 2); + copyteximage(ctx, 1, target, level, internalFormat, x, y, width, 1, border); +} - check_gen_mipmap(ctx, target, texObj, level); - update_fbo_texture(ctx, texObj, face, level); - /* state update */ - texObj->_Complete = GL_FALSE; - ctx->NewState |= _NEW_TEXTURE; - } - } - _mesa_unlock_texture(ctx, texObj); +void GLAPIENTRY +_mesa_CopyTexImage2D( GLenum target, GLint level, GLenum internalFormat, + GLint x, GLint y, GLsizei width, GLsizei height, + GLint border ) +{ + GET_CURRENT_CONTEXT(ctx); + copyteximage(ctx, 2, target, level, internalFormat, + x, y, width, height, border); } -void GLAPIENTRY -_mesa_CopyTexSubImage1D( GLenum target, GLint level, - GLint xoffset, GLint x, GLint y, GLsizei width ) + +/** + * Implementation for glCopyTexSubImage1/2/3D() functions. + */ +static void +copytexsubimage(struct gl_context *ctx, GLuint dims, GLenum target, GLint level, + GLint xoffset, GLint yoffset, GLint zoffset, + GLint x, GLint y, GLsizei width, GLsizei height) { struct gl_texture_object *texObj; struct gl_texture_image *texImage; - GLint yoffset = 0; - GLsizei height = 1; - GET_CURRENT_CONTEXT(ctx); ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) - _mesa_debug(ctx, "glCopyTexSubImage1D %s %d %d %d %d %d\n", + _mesa_debug(ctx, "glCopyTexSubImage%uD %s %d %d %d %d %d %d %d %d\n", + dims, _mesa_lookup_enum_by_nr(target), - level, xoffset, x, y, width); + level, xoffset, yoffset, zoffset, x, y, width, height); if (ctx->NewState & NEW_COPY_TEX_STATE) _mesa_update_state(ctx); - if (copytexsubimage_error_check1(ctx, 1, target, level)) + if (copytexsubimage_error_check1(ctx, dims, target, level)) return; texObj = _mesa_get_current_tex_object(ctx, target); @@ -3018,19 +2843,43 @@ _mesa_CopyTexSubImage1D( GLenum target, GLint level, { texImage = _mesa_select_tex_image(ctx, texObj, target, level); - if (copytexsubimage_error_check2(ctx, 1, target, level, - xoffset, 0, 0, width, 1, texImage)) { - /* error was recorded */ + if (copytexsubimage_error_check2(ctx, dims, target, level, xoffset, yoffset, + zoffset, width, height, texImage)) { + /* error was recored */ } else { - /* If we have a border, xoffset=-1 is legal. Bias by border width */ - xoffset += texImage->Border; + /* If we have a border, offset=-1 is legal. Bias by border width. */ + switch (dims) { + case 3: + zoffset += texImage->Border; + /* fall-through */ + case 2: + yoffset += texImage->Border; + /* fall-through */ + case 1: + xoffset += texImage->Border; + } if (_mesa_clip_copytexsubimage(ctx, &xoffset, &yoffset, &x, &y, &width, &height)) { - ASSERT(ctx->Driver.CopyTexSubImage1D); - ctx->Driver.CopyTexSubImage1D(ctx, target, level, - xoffset, x, y, width); + switch (dims) { + case 1: + ctx->Driver.CopyTexSubImage1D(ctx, target, level, + xoffset, x, y, width); + break; + case 2: + ctx->Driver.CopyTexSubImage2D(ctx, target, level, + xoffset, yoffset, + x, y, width, height); + break; + case 3: + ctx->Driver.CopyTexSubImage3D(ctx, target, level, + xoffset, yoffset, zoffset, + x, y, width, height); + break; + default: + _mesa_problem(ctx, "bad dims in copytexsubimage()"); + } check_gen_mipmap(ctx, target, texObj, level); @@ -3042,57 +2891,24 @@ _mesa_CopyTexSubImage1D( GLenum target, GLint level, } +void GLAPIENTRY +_mesa_CopyTexSubImage1D( GLenum target, GLint level, + GLint xoffset, GLint x, GLint y, GLsizei width ) +{ + GET_CURRENT_CONTEXT(ctx); + copytexsubimage(ctx, 1, target, level, xoffset, 0, 0, x, y, width, 1); +} + + void GLAPIENTRY _mesa_CopyTexSubImage2D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height ) { - struct gl_texture_object *texObj; - struct gl_texture_image *texImage; GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - - if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) - _mesa_debug(ctx, "glCopyTexSubImage2D %s %d %d %d %d %d %d %d\n", - _mesa_lookup_enum_by_nr(target), - level, xoffset, yoffset, x, y, width, height); - - if (ctx->NewState & NEW_COPY_TEX_STATE) - _mesa_update_state(ctx); - - if (copytexsubimage_error_check1(ctx, 2, target, level)) - return; - - texObj = _mesa_get_current_tex_object(ctx, target); - - _mesa_lock_texture(ctx, texObj); - { - texImage = _mesa_select_tex_image(ctx, texObj, target, level); - - if (copytexsubimage_error_check2(ctx, 2, target, level, - xoffset, yoffset, 0, - width, height, texImage)) { - /* error was recorded */ - } - else { - /* If we have a border, xoffset=-1 is legal. Bias by border width */ - xoffset += texImage->Border; - yoffset += texImage->Border; - - if (_mesa_clip_copytexsubimage(ctx, &xoffset, &yoffset, &x, &y, - &width, &height)) { - ASSERT(ctx->Driver.CopyTexSubImage2D); - ctx->Driver.CopyTexSubImage2D(ctx, target, level, xoffset, yoffset, - x, y, width, height); - - check_gen_mipmap(ctx, target, texObj, level); - - ctx->NewState |= _NEW_TEXTURE; - } - } - } - _mesa_unlock_texture(ctx, texObj); + copytexsubimage(ctx, 2, target, level, xoffset, yoffset, 0, x, y, + width, height); } @@ -3102,52 +2918,9 @@ _mesa_CopyTexSubImage3D( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height ) { - struct gl_texture_object *texObj; - struct gl_texture_image *texImage; GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - - if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) - _mesa_debug(ctx, "glCopyTexSubImage3D %s %d %d %d %d %d %d %d %d\n", - _mesa_lookup_enum_by_nr(target), - level, xoffset, yoffset, zoffset, x, y, width, height); - - if (ctx->NewState & NEW_COPY_TEX_STATE) - _mesa_update_state(ctx); - - if (copytexsubimage_error_check1(ctx, 3, target, level)) - return; - - texObj = _mesa_get_current_tex_object(ctx, target); - - _mesa_lock_texture(ctx, texObj); - { - texImage = _mesa_select_tex_image(ctx, texObj, target, level); - - if (copytexsubimage_error_check2(ctx, 3, target, level, xoffset, yoffset, - zoffset, width, height, texImage)) { - /* error was recored */ - } - else { - /* If we have a border, xoffset=-1 is legal. Bias by border width */ - xoffset += texImage->Border; - yoffset += texImage->Border; - zoffset += texImage->Border; - - if (_mesa_clip_copytexsubimage(ctx, &xoffset, &yoffset, &x, &y, - &width, &height)) { - ASSERT(ctx->Driver.CopyTexSubImage3D); - ctx->Driver.CopyTexSubImage3D(ctx, target, level, - xoffset, yoffset, zoffset, - x, y, width, height); - - check_gen_mipmap(ctx, target, texObj, level); - - ctx->NewState |= _NEW_TEXTURE; - } - } - } - _mesa_unlock_texture(ctx, texObj); + copytexsubimage(ctx, 3, target, level, xoffset, yoffset, zoffset, + x, y, width, height); } @@ -3192,45 +2965,18 @@ compressed_texture_error_check(struct gl_context *ctx, GLint dimensions, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize) { - GLint expectedSize, maxLevels = 0, maxTextureSize; + const GLenum proxyTarget = get_proxy_target(target); + const GLint maxLevels = _mesa_max_texture_levels(ctx, target); + GLint expectedSize; - if (dimensions == 1) { - /* 1D compressed textures not allowed */ - return GL_INVALID_ENUM; - } - else if (dimensions == 2) { - if (target == GL_PROXY_TEXTURE_2D) { - maxLevels = ctx->Const.MaxTextureLevels; - } - else if (target == GL_TEXTURE_2D) { - maxLevels = ctx->Const.MaxTextureLevels; - } - else if (target == GL_PROXY_TEXTURE_CUBE_MAP_ARB) { - if (!ctx->Extensions.ARB_texture_cube_map) - return GL_INVALID_ENUM; /*target*/ - maxLevels = ctx->Const.MaxCubeTextureLevels; - } - else if (target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB && - target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB) { - if (!ctx->Extensions.ARB_texture_cube_map) - return GL_INVALID_ENUM; /*target*/ - maxLevels = ctx->Const.MaxCubeTextureLevels; - } - else { - return GL_INVALID_ENUM; /*target*/ - } - } - else if (dimensions == 3) { - /* 3D compressed textures not allowed */ - return GL_INVALID_ENUM; - } - else { - assert(0); + /* check level */ + if (level < 0 || level >= maxLevels) + return GL_INVALID_VALUE; + + if (!target_can_be_compressed(ctx, target, internalFormat)) { return GL_INVALID_ENUM; } - maxTextureSize = 1 << (maxLevels - 1); - /* This will detect any invalid internalFormat value */ if (!_mesa_is_compressed_format(ctx, internalFormat)) return GL_INVALID_ENUM; @@ -3239,47 +2985,51 @@ compressed_texture_error_check(struct gl_context *ctx, GLint dimensions, if (_mesa_base_tex_format(ctx, internalFormat) < 0) return GL_INVALID_ENUM; + /* No compressed formats support borders at this time */ if (border != 0) return GL_INVALID_VALUE; - /* - * XXX We should probably use the proxy texture error check function here. - */ - if (width < 1 || width > maxTextureSize || - (!ctx->Extensions.ARB_texture_non_power_of_two && !_mesa_is_pow_two(width))) - return GL_INVALID_VALUE; - - if ((height < 1 || height > maxTextureSize || - (!ctx->Extensions.ARB_texture_non_power_of_two && !_mesa_is_pow_two(height))) - && dimensions > 1) - return GL_INVALID_VALUE; - - if ((depth < 1 || depth > maxTextureSize || - (!ctx->Extensions.ARB_texture_non_power_of_two && !_mesa_is_pow_two(depth))) - && dimensions > 2) - return GL_INVALID_VALUE; - /* For cube map, width must equal height */ if (target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB && target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB && width != height) return GL_INVALID_VALUE; - if (level < 0 || level >= maxLevels) - return GL_INVALID_VALUE; + /* check image size against compression block size */ + { + gl_format texFormat = + ctx->Driver.ChooseTextureFormat(ctx, internalFormat, + GL_NONE, GL_NONE); + GLuint bw, bh; - expectedSize = compressed_tex_size(width, height, depth, internalFormat); - if (expectedSize != imageSize) - return GL_INVALID_VALUE; + _mesa_get_format_block_size(texFormat, &bw, &bh); + if ((width > bw && width % bw > 0) || + (height > bh && height % bh > 0)) { + /* + * Per GL_ARB_texture_compression: GL_INVALID_OPERATION is + * generated [...] if any parameter combinations are not + * supported by the specific compressed internal format. + */ + return GL_INVALID_OPERATION; + } + } -#if FEATURE_EXT_texture_sRGB - if ((internalFormat == GL_COMPRESSED_SRGB_S3TC_DXT1_EXT || - internalFormat == GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT || - internalFormat == GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT || - internalFormat == GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT) - && border != 0) { + /* check image sizes */ + if (!ctx->Driver.TestProxyTexImage(ctx, proxyTarget, level, + internalFormat, GL_NONE, GL_NONE, + width, height, depth, border)) { + /* See error comment above */ return GL_INVALID_OPERATION; } -#endif + + /* check image size in bytes */ + expectedSize = compressed_tex_size(width, height, depth, internalFormat); + if (expectedSize != imageSize) { + /* Per GL_ARB_texture_compression: GL_INVALID_VALUE is generated [...] + * if <imageSize> is not consistent with the format, dimensions, and + * contents of the specified image. + */ + return GL_INVALID_VALUE; + } return GL_NO_ERROR; } @@ -3421,156 +3171,101 @@ compressed_subtexture_error_check2(struct gl_context *ctx, GLuint dims, } - -void GLAPIENTRY -_mesa_CompressedTexImage1DARB(GLenum target, GLint level, - GLenum internalFormat, GLsizei width, - GLint border, GLsizei imageSize, - const GLvoid *data) +/** + * Implementation of the glCompressedTexImage1/2/3D() functions. + */ +static void +compressedteximage(struct gl_context *ctx, GLuint dims, + GLenum target, GLint level, + GLenum internalFormat, GLsizei width, + GLsizei height, GLsizei depth, GLint border, + GLsizei imageSize, const GLvoid *data) { - GET_CURRENT_CONTEXT(ctx); + GLenum error; + ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) - _mesa_debug(ctx, "glCompressedTexImage1DARB %s %d %s %d %d %d %p\n", + _mesa_debug(ctx, + "glCompressedTexImage%uDARB %s %d %s %d %d %d %d %d %p\n", + dims, _mesa_lookup_enum_by_nr(target), level, _mesa_lookup_enum_by_nr(internalFormat), - width, border, imageSize, data); - - if (target == GL_TEXTURE_1D) { - /* non-proxy target */ - struct gl_texture_object *texObj; - struct gl_texture_image *texImage; - GLenum error = compressed_texture_error_check(ctx, 1, target, level, - internalFormat, width, 1, 1, border, imageSize); - if (error) { - _mesa_error(ctx, error, "glCompressedTexImage1D"); - return; - } - - texObj = _mesa_get_current_tex_object(ctx, target); - - _mesa_lock_texture(ctx, texObj); - { - texImage = _mesa_get_tex_image(ctx, texObj, target, level); - if (!texImage) { - _mesa_error(ctx, GL_OUT_OF_MEMORY, "glCompressedTexImage1D"); - } - else { - if (texImage->Data) { - ctx->Driver.FreeTexImageData( ctx, texImage ); - } - ASSERT(texImage->Data == NULL); - - _mesa_init_teximage_fields(ctx, target, texImage, width, 1, 1, - border, internalFormat); - - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, GL_NONE, GL_NONE); + width, height, depth, border, imageSize, data); - ASSERT(ctx->Driver.CompressedTexImage1D); - ctx->Driver.CompressedTexImage1D(ctx, target, level, - internalFormat, width, border, - imageSize, data, - texObj, texImage); + /* check target */ + if (!legal_teximage_target(ctx, dims, target)) { + _mesa_error(ctx, GL_INVALID_ENUM, "glCompressedTexImage%uD(target=%s)", + dims, _mesa_lookup_enum_by_nr(target)); + return; + } - _mesa_set_fetch_functions(texImage, 1); + error = compressed_texture_error_check(ctx, dims, target, level, + internalFormat, width, height, depth, + border, imageSize); - check_gen_mipmap(ctx, target, texObj, level); +#if FEATURE_ES + /* XXX this is kind of a hack */ + if (error) { + _mesa_error(ctx, error, "glTexImage2D"); + return; + } - /* state update */ - texObj->_Complete = GL_FALSE; - ctx->NewState |= _NEW_TEXTURE; - } + if (dims == 2) { + switch (internalFormat) { + case GL_PALETTE4_RGB8_OES: + case GL_PALETTE4_RGBA8_OES: + case GL_PALETTE4_R5_G6_B5_OES: + case GL_PALETTE4_RGBA4_OES: + case GL_PALETTE4_RGB5_A1_OES: + case GL_PALETTE8_RGB8_OES: + case GL_PALETTE8_RGBA8_OES: + case GL_PALETTE8_R5_G6_B5_OES: + case GL_PALETTE8_RGBA4_OES: + case GL_PALETTE8_RGB5_A1_OES: + _mesa_cpal_compressed_teximage2d(target, level, internalFormat, + width, height, imageSize, data); + return; } - _mesa_unlock_texture(ctx, texObj); } - else if (target == GL_PROXY_TEXTURE_1D) { - /* Proxy texture: check for errors and update proxy state */ - GLenum error = compressed_texture_error_check(ctx, 1, target, level, - internalFormat, width, 1, 1, border, imageSize); +#endif + + if (_mesa_is_proxy_texture(target)) { + /* Proxy texture: just check for errors and update proxy state */ + struct gl_texture_image *texImage; + if (!error) { - ASSERT(ctx->Driver.TestProxyTexImage); - error = !(*ctx->Driver.TestProxyTexImage)(ctx, target, level, - internalFormat, GL_NONE, GL_NONE, - width, 1, 1, border); + struct gl_texture_object *texObj = + _mesa_get_current_tex_object(ctx, target); + gl_format texFormat = + _mesa_choose_texture_format(ctx, texObj, target, level, + internalFormat, GL_NONE, GL_NONE); + if (!legal_texture_size(ctx, texFormat, width, height, depth)) { + error = GL_OUT_OF_MEMORY; + } } - if (error) { - /* if error, clear all proxy texture image parameters */ - struct gl_texture_image *texImage; - texImage = _mesa_get_proxy_tex_image(ctx, target, level); - if (texImage) + + texImage = _mesa_get_proxy_tex_image(ctx, target, level); + if (texImage) { + if (error) { + /* if error, clear all proxy texture image parameters */ clear_teximage_fields(texImage); - } - else { - /* store the teximage parameters */ - struct gl_texture_object *texObj; - struct gl_texture_image *texImage; - - texObj = _mesa_get_current_tex_object(ctx, target); - - _mesa_lock_texture(ctx, texObj); - { - texImage = _mesa_select_tex_image(ctx, texObj, target, level); - _mesa_init_teximage_fields(ctx, target, texImage, width, 1, 1, - border, internalFormat); - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, GL_NONE, GL_NONE); - } - _mesa_unlock_texture(ctx, texObj); + } + else { + /* no error: store the teximage parameters */ + _mesa_init_teximage_fields(ctx, target, texImage, width, height, + depth, border, internalFormat, + MESA_FORMAT_NONE); + } } } else { - _mesa_error(ctx, GL_INVALID_ENUM, "glCompressedTexImage1D(target)"); - return; - } -} - -void GLAPIENTRY -_mesa_CompressedTexImage2DARB(GLenum target, GLint level, - GLenum internalFormat, GLsizei width, - GLsizei height, GLint border, GLsizei imageSize, - const GLvoid *data) -{ - GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - - if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) - _mesa_debug(ctx, "glCompressedTexImage2DARB %s %d %s %d %d %d %d %p\n", - _mesa_lookup_enum_by_nr(target), level, - _mesa_lookup_enum_by_nr(internalFormat), - width, height, border, imageSize, data); - -#if FEATURE_ES - switch (internalFormat) { - case GL_PALETTE4_RGB8_OES: - case GL_PALETTE4_RGBA8_OES: - case GL_PALETTE4_R5_G6_B5_OES: - case GL_PALETTE4_RGBA4_OES: - case GL_PALETTE4_RGB5_A1_OES: - case GL_PALETTE8_RGB8_OES: - case GL_PALETTE8_RGBA8_OES: - case GL_PALETTE8_R5_G6_B5_OES: - case GL_PALETTE8_RGBA4_OES: - case GL_PALETTE8_RGB5_A1_OES: - _mesa_cpal_compressed_teximage2d(target, level, internalFormat, - width, height, imageSize, data); - return; - } -#endif - - if (target == GL_TEXTURE_2D || - (ctx->Extensions.ARB_texture_cube_map && - target >= GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB && - target <= GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB)) { /* non-proxy target */ struct gl_texture_object *texObj; struct gl_texture_image *texImage; - GLenum error = compressed_texture_error_check(ctx, 2, target, level, - internalFormat, width, height, 1, border, imageSize); if (error) { - _mesa_error(ctx, error, "glCompressedTexImage2D"); + _mesa_error(ctx, error, "glCompressedTexImage%uD", dims); return; } @@ -3580,186 +3275,105 @@ _mesa_CompressedTexImage2DARB(GLenum target, GLint level, { texImage = _mesa_get_tex_image(ctx, texObj, target, level); if (!texImage) { - _mesa_error(ctx, GL_OUT_OF_MEMORY, "glCompressedTexImage2D"); + _mesa_error(ctx, GL_OUT_OF_MEMORY, + "glCompressedTexImage%uD", dims); } else { + gl_format texFormat; + if (texImage->Data) { ctx->Driver.FreeTexImageData( ctx, texImage ); } ASSERT(texImage->Data == NULL); - _mesa_init_teximage_fields(ctx, target, texImage, width, height, 1, - border, internalFormat); - - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, GL_NONE, GL_NONE); - - ASSERT(ctx->Driver.CompressedTexImage2D); - ctx->Driver.CompressedTexImage2D(ctx, target, level, - internalFormat, width, height, - border, imageSize, data, - texObj, texImage); - - _mesa_set_fetch_functions(texImage, 2); + texFormat = _mesa_choose_texture_format(ctx, texObj, target, level, + internalFormat, GL_NONE, + GL_NONE); + + if (legal_texture_size(ctx, texFormat, width, height, depth)) { + _mesa_init_teximage_fields(ctx, target, texImage, + width, height, depth, + border, internalFormat, texFormat); + + switch (dims) { + case 1: + ASSERT(ctx->Driver.CompressedTexImage1D); + ctx->Driver.CompressedTexImage1D(ctx, target, level, + internalFormat, + width, + border, imageSize, data, + texObj, texImage); + break; + case 2: + ASSERT(ctx->Driver.CompressedTexImage2D); + ctx->Driver.CompressedTexImage2D(ctx, target, level, + internalFormat, + width, height, + border, imageSize, data, + texObj, texImage); + break; + case 3: + ASSERT(ctx->Driver.CompressedTexImage3D); + ctx->Driver.CompressedTexImage3D(ctx, target, level, + internalFormat, + width, height, depth, + border, imageSize, data, + texObj, texImage); + break; + default: + _mesa_problem(ctx, "bad dims in compressedteximage"); + } - check_gen_mipmap(ctx, target, texObj, level); + check_gen_mipmap(ctx, target, texObj, level); - /* state update */ - texObj->_Complete = GL_FALSE; - ctx->NewState |= _NEW_TEXTURE; + /* state update */ + texObj->_Complete = GL_FALSE; + ctx->NewState |= _NEW_TEXTURE; + } + else { + _mesa_error(ctx, GL_OUT_OF_MEMORY, + "glCompressedTexImage%uD", dims); + } } } _mesa_unlock_texture(ctx, texObj); } - else if (target == GL_PROXY_TEXTURE_2D || - (target == GL_PROXY_TEXTURE_CUBE_MAP_ARB && - ctx->Extensions.ARB_texture_cube_map)) { - /* Proxy texture: check for errors and update proxy state */ - GLenum error = compressed_texture_error_check(ctx, 2, target, level, - internalFormat, width, height, 1, border, imageSize); - if (!error) { - ASSERT(ctx->Driver.TestProxyTexImage); - error = !(*ctx->Driver.TestProxyTexImage)(ctx, target, level, - internalFormat, GL_NONE, GL_NONE, - width, height, 1, border); - } - if (error) { - /* if error, clear all proxy texture image parameters */ - struct gl_texture_image *texImage; - texImage = _mesa_get_proxy_tex_image(ctx, target, level); - if (texImage) - clear_teximage_fields(texImage); - } - else { - /* store the teximage parameters */ - struct gl_texture_object *texObj; - struct gl_texture_image *texImage; - - texObj = _mesa_get_current_tex_object(ctx, target); - - _mesa_lock_texture(ctx, texObj); - { - texImage = _mesa_select_tex_image(ctx, texObj, target, level); - _mesa_init_teximage_fields(ctx, target, texImage, width, height, 1, - border, internalFormat); - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, GL_NONE, GL_NONE); - } - _mesa_unlock_texture(ctx, texObj); - } - } - else { - _mesa_error(ctx, GL_INVALID_ENUM, "glCompressedTexImage2D(target)"); - return; - } } void GLAPIENTRY -_mesa_CompressedTexImage3DARB(GLenum target, GLint level, +_mesa_CompressedTexImage1DARB(GLenum target, GLint level, GLenum internalFormat, GLsizei width, - GLsizei height, GLsizei depth, GLint border, - GLsizei imageSize, const GLvoid *data) + GLint border, GLsizei imageSize, + const GLvoid *data) { GET_CURRENT_CONTEXT(ctx); - ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); - - if (MESA_VERBOSE & (VERBOSE_API|VERBOSE_TEXTURE)) - _mesa_debug(ctx, "glCompressedTexImage3DARB %s %d %s %d %d %d %d %d %p\n", - _mesa_lookup_enum_by_nr(target), level, - _mesa_lookup_enum_by_nr(internalFormat), - width, height, depth, border, imageSize, data); - - if (target == GL_TEXTURE_3D) { - /* non-proxy target */ - struct gl_texture_object *texObj; - struct gl_texture_image *texImage; - GLenum error = compressed_texture_error_check(ctx, 3, target, level, - internalFormat, width, height, depth, border, imageSize); - if (error) { - _mesa_error(ctx, error, "glCompressedTexImage3D"); - return; - } - - texObj = _mesa_get_current_tex_object(ctx, target); - - _mesa_lock_texture(ctx, texObj); - { - texImage = _mesa_get_tex_image(ctx, texObj, target, level); - if (!texImage) { - _mesa_error(ctx, GL_OUT_OF_MEMORY, "glCompressedTexImage3D"); - } - else { - if (texImage->Data) { - ctx->Driver.FreeTexImageData( ctx, texImage ); - } - ASSERT(texImage->Data == NULL); - - _mesa_init_teximage_fields(ctx, target, texImage, - width, height, depth, - border, internalFormat); - - /* Choose actual texture format */ - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, GL_NONE, GL_NONE); + compressedteximage(ctx, 1, target, level, internalFormat, + width, 1, 1, border, imageSize, data); +} - ASSERT(ctx->Driver.CompressedTexImage3D); - ctx->Driver.CompressedTexImage3D(ctx, target, level, - internalFormat, - width, height, depth, - border, imageSize, data, - texObj, texImage); - _mesa_set_fetch_functions(texImage, 3); +void GLAPIENTRY +_mesa_CompressedTexImage2DARB(GLenum target, GLint level, + GLenum internalFormat, GLsizei width, + GLsizei height, GLint border, GLsizei imageSize, + const GLvoid *data) +{ + GET_CURRENT_CONTEXT(ctx); + compressedteximage(ctx, 2, target, level, internalFormat, + width, height, 1, border, imageSize, data); +} - check_gen_mipmap(ctx, target, texObj, level); - /* state update */ - texObj->_Complete = GL_FALSE; - ctx->NewState |= _NEW_TEXTURE; - } - } - _mesa_unlock_texture(ctx, texObj); - } - else if (target == GL_PROXY_TEXTURE_3D) { - /* Proxy texture: check for errors and update proxy state */ - GLenum error = compressed_texture_error_check(ctx, 3, target, level, - internalFormat, width, height, depth, border, imageSize); - if (!error) { - ASSERT(ctx->Driver.TestProxyTexImage); - error = !(*ctx->Driver.TestProxyTexImage)(ctx, target, level, - internalFormat, GL_NONE, GL_NONE, - width, height, depth, border); - } - if (error) { - /* if error, clear all proxy texture image parameters */ - struct gl_texture_image *texImage; - texImage = _mesa_get_proxy_tex_image(ctx, target, level); - if (texImage) - clear_teximage_fields(texImage); - } - else { - /* store the teximage parameters */ - struct gl_texture_object *texObj; - struct gl_texture_image *texImage; - - texObj = _mesa_get_current_tex_object(ctx, target); - - _mesa_lock_texture(ctx, texObj); - { - texImage = _mesa_select_tex_image(ctx, texObj, target, level); - _mesa_init_teximage_fields(ctx, target, texImage, width, height, - depth, border, internalFormat); - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, GL_NONE, GL_NONE); - } - _mesa_unlock_texture(ctx, texObj); - } - } - else { - _mesa_error(ctx, GL_INVALID_ENUM, "glCompressedTexImage3D(target)"); - return; - } +void GLAPIENTRY +_mesa_CompressedTexImage3DARB(GLenum target, GLint level, + GLenum internalFormat, GLsizei width, + GLsizei height, GLsizei depth, GLint border, + GLsizei imageSize, const GLvoid *data) +{ + GET_CURRENT_CONTEXT(ctx); + compressedteximage(ctx, 3, target, level, internalFormat, + width, height, depth, border, imageSize, data); } @@ -3869,5 +3483,3 @@ _mesa_CompressedTexSubImage3DARB(GLenum target, GLint level, GLint xoffset, compressed_tex_sub_image(3, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data); } - - diff --git a/src/mesa/main/teximage.h b/src/mesa/main/teximage.h index d4317c301b7..5bb9d492e93 100644 --- a/src/mesa/main/teximage.h +++ b/src/mesa/main/teximage.h @@ -33,6 +33,7 @@ #include "mtypes.h" +#include "formats.h" extern void * @@ -69,13 +70,13 @@ extern void _mesa_init_teximage_fields(struct gl_context *ctx, GLenum target, struct gl_texture_image *img, GLsizei width, GLsizei height, GLsizei depth, - GLint border, GLenum internalFormat); + GLint border, GLenum internalFormat, + gl_format format); -extern void +extern gl_format _mesa_choose_texture_format(struct gl_context *ctx, struct gl_texture_object *texObj, - struct gl_texture_image *texImage, GLenum target, GLint level, GLenum internalFormat, GLenum format, GLenum type); diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c index 13267609614..5bc5639dbf7 100644 --- a/src/mesa/main/texobj.c +++ b/src/mesa/main/texobj.c @@ -181,12 +181,11 @@ finish_texture_init(struct gl_context *ctx, GLenum target, * \param texObj the texture object to delete. */ void -_mesa_delete_texture_object( struct gl_context *ctx, struct gl_texture_object *texObj ) +_mesa_delete_texture_object(struct gl_context *ctx, + struct gl_texture_object *texObj) { GLuint i, face; - (void) ctx; - /* Set Target to an invalid value. With some assertions elsewhere * we can try to detect possible use of deleted textures. */ @@ -197,9 +196,9 @@ _mesa_delete_texture_object( struct gl_context *ctx, struct gl_texture_object *t /* free the texture images */ for (face = 0; face < 6; face++) { for (i = 0; i < MAX_TEXTURE_LEVELS; i++) { - if (texObj->Image[face][i]) { - _mesa_delete_texture_image( ctx, texObj->Image[face][i] ); - } + if (texObj->Image[face][i]) { + _mesa_delete_texture_image( ctx, texObj->Image[face][i] ); + } } } @@ -212,7 +211,6 @@ _mesa_delete_texture_object( struct gl_context *ctx, struct gl_texture_object *t - /** * Copy texture object state from one texture object to another. * Use for glPush/PopAttrib. @@ -257,7 +255,7 @@ _mesa_copy_texture_object( struct gl_texture_object *dest, /** - * Clear all texture images of the given texture object. + * Free all texture images of the given texture object. * * \param ctx GL context. * \param t texture object. @@ -265,7 +263,8 @@ _mesa_copy_texture_object( struct gl_texture_object *dest, * \sa _mesa_clear_texture_image(). */ void -_mesa_clear_texture_object(struct gl_context *ctx, struct gl_texture_object *texObj) +_mesa_clear_texture_object(struct gl_context *ctx, + struct gl_texture_object *texObj) { GLuint i, j; @@ -373,15 +372,12 @@ _mesa_reference_texobj(struct gl_texture_object **ptr, /** - * Report why a texture object is incomplete. - * - * \param t texture object. - * \param why string describing why it's incomplete. - * - * \note For debug purposes only. + * Mark a texture object as incomplete. + * \param t texture object + * \param fmt... string describing why it's incomplete (for debugging). */ static void -incomplete(const struct gl_texture_object *t, const char *fmt, ...) +incomplete(struct gl_texture_object *t, const char *fmt, ...) { #if 0 va_list args; @@ -393,6 +389,7 @@ incomplete(const struct gl_texture_object *t, const char *fmt, ...) printf("Texture Obj %d incomplete because: %s\n", t->Name, s); #endif + t->_Complete = GL_FALSE; } @@ -422,14 +419,12 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx, */ if ((baseLevel < 0) || (baseLevel >= MAX_TEXTURE_LEVELS)) { incomplete(t, "base level = %d is invalid", baseLevel); - t->_Complete = GL_FALSE; return; } /* Always need the base level image */ if (!t->Image[0][baseLevel]) { incomplete(t, "Image[baseLevel=%d] == NULL", baseLevel); - t->_Complete = GL_FALSE; return; } @@ -438,7 +433,6 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx, t->Image[0][baseLevel]->Height == 0 || t->Image[0][baseLevel]->Depth == 0) { incomplete(t, "texture width = 0"); - t->_Complete = GL_FALSE; return; } @@ -449,7 +443,7 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx, maxLevels = ctx->Const.MaxTextureLevels; } else if ((t->Target == GL_TEXTURE_2D) || - (t->Target == GL_TEXTURE_2D_ARRAY_EXT)) { + (t->Target == GL_TEXTURE_2D_ARRAY_EXT)) { maxLog2 = MAX2(t->Image[0][baseLevel]->WidthLog2, t->Image[0][baseLevel]->HeightLog2); maxLevels = ctx->Const.MaxTextureLevels; @@ -489,13 +483,12 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx, const GLuint h = t->Image[0][baseLevel]->Height2; GLuint face; for (face = 1; face < 6; face++) { - if (t->Image[face][baseLevel] == NULL || - t->Image[face][baseLevel]->Width2 != w || - t->Image[face][baseLevel]->Height2 != h) { - t->_Complete = GL_FALSE; - incomplete(t, "Cube face missing or mismatched size"); - return; - } + if (t->Image[face][baseLevel] == NULL || + t->Image[face][baseLevel]->Width2 != w || + t->Image[face][baseLevel]->Height2 != h) { + incomplete(t, "Cube face missing or mismatched size"); + return; + } } } @@ -509,7 +502,6 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx, GLint maxLevel = t->_MaxLevel; if (minLevel > maxLevel) { - t->_Complete = GL_FALSE; incomplete(t, "minLevel > maxLevel"); return; } @@ -518,12 +510,10 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx, for (i = minLevel; i <= maxLevel; i++) { if (t->Image[0][i]) { if (t->Image[0][i]->TexFormat != t->Image[0][baseLevel]->TexFormat) { - t->_Complete = GL_FALSE; incomplete(t, "Format[i] != Format[baseLevel]"); return; } if (t->Image[0][i]->Border != t->Image[0][baseLevel]->Border) { - t->_Complete = GL_FALSE; incomplete(t, "Border[i] != Border[baseLevel]"); return; } @@ -541,12 +531,10 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx, } if (i >= minLevel && i <= maxLevel) { if (!t->Image[0][i]) { - t->_Complete = GL_FALSE; incomplete(t, "1D Image[0][i] == NULL"); return; } if (t->Image[0][i]->Width2 != width ) { - t->_Complete = GL_FALSE; incomplete(t, "1D Image[0][i] bad width"); return; } @@ -570,17 +558,14 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx, } if (i >= minLevel && i <= maxLevel) { if (!t->Image[0][i]) { - t->_Complete = GL_FALSE; incomplete(t, "2D Image[0][i] == NULL"); return; } if (t->Image[0][i]->Width2 != width) { - t->_Complete = GL_FALSE; incomplete(t, "2D Image[0][i] bad width"); return; } if (t->Image[0][i]->Height2 != height) { - t->_Complete = GL_FALSE; incomplete(t, "2D Image[0][i] bad height"); return; } @@ -595,7 +580,7 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx, GLuint width = t->Image[0][baseLevel]->Width2; GLuint height = t->Image[0][baseLevel]->Height2; GLuint depth = t->Image[0][baseLevel]->Depth2; - for (i = baseLevel + 1; i < maxLevels; i++) { + for (i = baseLevel + 1; i < maxLevels; i++) { if (width > 1) { width /= 2; } @@ -608,26 +593,21 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx, if (i >= minLevel && i <= maxLevel) { if (!t->Image[0][i]) { incomplete(t, "3D Image[0][i] == NULL"); - t->_Complete = GL_FALSE; return; } if (t->Image[0][i]->_BaseFormat == GL_DEPTH_COMPONENT) { - t->_Complete = GL_FALSE; incomplete(t, "GL_DEPTH_COMPONENT only works with 1/2D tex"); return; } if (t->Image[0][i]->Width2 != width) { - t->_Complete = GL_FALSE; incomplete(t, "3D Image[0][i] bad width"); return; } if (t->Image[0][i]->Height2 != height) { - t->_Complete = GL_FALSE; incomplete(t, "3D Image[0][i] bad height"); return; } if (t->Image[0][i]->Depth2 != depth) { - t->_Complete = GL_FALSE; incomplete(t, "3D Image[0][i] bad depth"); return; } @@ -641,7 +621,7 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx, /* make sure 6 cube faces are consistant */ GLuint width = t->Image[0][baseLevel]->Width2; GLuint height = t->Image[0][baseLevel]->Height2; - for (i = baseLevel + 1; i < maxLevels; i++) { + for (i = baseLevel + 1; i < maxLevels; i++) { if (width > 1) { width /= 2; } @@ -653,20 +633,17 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx, for (face = 0; face < 6; face++) { /* check that we have images defined */ if (!t->Image[face][i]) { - t->_Complete = GL_FALSE; incomplete(t, "CubeMap Image[n][i] == NULL"); return; } /* Don't support GL_DEPTH_COMPONENT for cube maps */ if (t->Image[face][i]->_BaseFormat == GL_DEPTH_COMPONENT) { - t->_Complete = GL_FALSE; incomplete(t, "GL_DEPTH_COMPONENT only works with 1/2D tex"); return; } /* check that all six images have same size */ - if (t->Image[face][i]->Width2!=width || - t->Image[face][i]->Height2!=height) { - t->_Complete = GL_FALSE; + if (t->Image[face][i]->Width2 != width || + t->Image[face][i]->Height2 != height) { incomplete(t, "CubeMap Image[n][i] bad size"); return; } @@ -689,6 +666,44 @@ _mesa_test_texobj_completeness( const struct gl_context *ctx, /** + * Check if the given cube map texture is "cube complete" as defined in + * the OpenGL specification. + */ +GLboolean +_mesa_cube_complete(const struct gl_texture_object *texObj) +{ + const GLint baseLevel = texObj->BaseLevel; + const struct gl_texture_image *img0, *img; + GLuint face; + + if (texObj->Target != GL_TEXTURE_CUBE_MAP) + return GL_FALSE; + + if ((baseLevel < 0) || (baseLevel >= MAX_TEXTURE_LEVELS)) + return GL_FALSE; + + /* check first face */ + img0 = texObj->Image[0][baseLevel]; + if (!img0 || + img0->Width < 1 || + img0->Width != img0->Height) + return GL_FALSE; + + /* check remaining faces vs. first face */ + for (face = 1; face < 6; face++) { + img = texObj->Image[face][baseLevel]; + if (!img || + img->Width != img0->Width || + img->Height != img0->Height || + img->TexFormat != img0->TexFormat) + return GL_FALSE; + } + + return GL_TRUE; +} + + +/** * Mark a texture object dirty. It forces the object to be incomplete * and optionally forces the context to re-validate its state. * @@ -720,6 +735,7 @@ _mesa_get_fallback_texture(struct gl_context *ctx) static GLubyte texels[8 * 8][4]; struct gl_texture_object *texObj; struct gl_texture_image *texImage; + gl_format texFormat; GLuint i; for (i = 0; i < 8 * 8; i++) { @@ -738,12 +754,13 @@ _mesa_get_fallback_texture(struct gl_context *ctx) /* create level[0] texture image */ texImage = _mesa_get_tex_image(ctx, texObj, GL_TEXTURE_2D, 0); + texFormat = ctx->Driver.ChooseTextureFormat(ctx, GL_RGBA, GL_RGBA, + GL_UNSIGNED_BYTE); + /* init the image fields */ _mesa_init_teximage_fields(ctx, GL_TEXTURE_2D, texImage, - 8, 8, 1, 0, GL_RGBA); + 8, 8, 1, 0, GL_RGBA, texFormat); - texImage->TexFormat = - ctx->Driver.ChooseTextureFormat(ctx, GL_RGBA, GL_RGBA, GL_UNSIGNED_BYTE); ASSERT(texImage->TexFormat != MESA_FORMAT_NONE); /* set image data */ @@ -831,7 +848,8 @@ _mesa_GenTextures( GLsizei n, GLuint *textures ) * read framebuffer. If so, Unbind it. */ static void -unbind_texobj_from_fbo(struct gl_context *ctx, struct gl_texture_object *texObj) +unbind_texobj_from_fbo(struct gl_context *ctx, + struct gl_texture_object *texObj) { const GLuint n = (ctx->DrawBuffer == ctx->ReadBuffer) ? 1 : 2; GLuint i; @@ -856,7 +874,8 @@ unbind_texobj_from_fbo(struct gl_context *ctx, struct gl_texture_object *texObj) * unbind it if so (revert to default textures). */ static void -unbind_texobj_from_texunits(struct gl_context *ctx, struct gl_texture_object *texObj) +unbind_texobj_from_texunits(struct gl_context *ctx, + struct gl_texture_object *texObj) { GLuint u, tex; @@ -904,7 +923,7 @@ _mesa_DeleteTextures( GLsizei n, const GLuint *textures) = _mesa_lookup_texture(ctx, textures[i]); if (delObj) { - _mesa_lock_texture(ctx, delObj); + _mesa_lock_texture(ctx, delObj); /* Check if texture is bound to any framebuffer objects. * If so, unbind. @@ -917,7 +936,7 @@ _mesa_DeleteTextures( GLsizei n, const GLuint *textures) */ unbind_texobj_from_texunits(ctx, delObj); - _mesa_unlock_texture(ctx, delObj); + _mesa_unlock_texture(ctx, delObj); ctx->NewState |= _NEW_TEXTURE; @@ -1029,7 +1048,7 @@ _mesa_BindTexture( GLenum target, GLuint texName ) } else { /* if this is a new texture id, allocate a texture object now */ - newTexObj = (*ctx->Driver.NewTextureObject)(ctx, texName, target); + newTexObj = (*ctx->Driver.NewTextureObject)(ctx, texName, target); if (!newTexObj) { _mesa_error(ctx, GL_OUT_OF_MEMORY, "glBindTexture"); return; @@ -1112,6 +1131,8 @@ _mesa_PrioritizeTextures( GLsizei n, const GLuint *texName, ctx->NewState |= _NEW_TEXTURE; } + + /** * See if textures are loaded in texture memory. * @@ -1157,23 +1178,24 @@ _mesa_AreTexturesResident(GLsizei n, const GLuint *texName, if (!ctx->Driver.IsTextureResident || ctx->Driver.IsTextureResident(ctx, t)) { /* The texture is resident */ - if (!allResident) - residences[i] = GL_TRUE; + if (!allResident) + residences[i] = GL_TRUE; } else { /* The texture is not resident */ if (allResident) { - allResident = GL_FALSE; - for (j = 0; j < i; j++) - residences[j] = GL_TRUE; - } - residences[i] = GL_FALSE; + allResident = GL_FALSE; + for (j = 0; j < i; j++) + residences[j] = GL_TRUE; + } + residences[i] = GL_FALSE; } } return allResident; } + /** * See if a name corresponds to a texture. * @@ -1234,5 +1256,3 @@ _mesa_unlock_context_textures( struct gl_context *ctx ) } /*@}*/ - - diff --git a/src/mesa/main/texobj.h b/src/mesa/main/texobj.h index 821b35caa36..2461b063efd 100644 --- a/src/mesa/main/texobj.h +++ b/src/mesa/main/texobj.h @@ -32,8 +32,9 @@ #define TEXTOBJ_H -#include "mtypes.h" +#include "glheader.h" +struct gl_context; /** * \name Internal functions @@ -68,6 +69,9 @@ extern void _mesa_test_texobj_completeness( const struct gl_context *ctx, struct gl_texture_object *obj ); +extern GLboolean +_mesa_cube_complete(const struct gl_texture_object *texObj); + extern void _mesa_dirty_texobj(struct gl_context *ctx, struct gl_texture_object *texObj, GLboolean invalidate_state); diff --git a/src/mesa/main/texrender.h b/src/mesa/main/texrender.h index 5e68fb03b57..cacd091160e 100644 --- a/src/mesa/main/texrender.h +++ b/src/mesa/main/texrender.h @@ -1,7 +1,9 @@ #ifndef TEXRENDER_H #define TEXRENDER_H -#include "mtypes.h" +struct gl_context; +struct gl_framebuffer; +struct gl_renderbuffer_attachment; extern void _mesa_render_texture(struct gl_context *ctx, diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c index fd7476d2273..89677c519e5 100644 --- a/src/mesa/main/texstore.c +++ b/src/mesa/main/texstore.c @@ -4080,14 +4080,14 @@ _mesa_validate_pbo_teximage(struct gl_context *ctx, GLuint dimensions, } if (!_mesa_validate_pbo_access(dimensions, unpack, width, height, depth, format, type, pixels)) { - _mesa_error(ctx, GL_INVALID_OPERATION, funcName, "(invalid PBO access"); + _mesa_error(ctx, GL_INVALID_OPERATION, funcName, "(invalid PBO access)"); return NULL; } buf = (GLubyte *) ctx->Driver.MapBuffer(ctx, GL_PIXEL_UNPACK_BUFFER_EXT, GL_READ_ONLY_ARB, unpack->BufferObj); if (!buf) { - _mesa_error(ctx, GL_INVALID_OPERATION, funcName, "(PBO is mapped"); + _mesa_error(ctx, GL_INVALID_OPERATION, funcName, "(PBO is mapped)"); return NULL; } @@ -4117,7 +4117,7 @@ _mesa_validate_pbo_compressed_teximage(struct gl_context *ctx, if ((const GLubyte *) pixels + imageSize > ((const GLubyte *) 0) + packing->BufferObj->Size) { /* out of bounds read! */ - _mesa_error(ctx, GL_INVALID_OPERATION, funcName, "(invalid PBO access"); + _mesa_error(ctx, GL_INVALID_OPERATION, funcName, "(invalid PBO access)"); return NULL; } @@ -4448,7 +4448,8 @@ _mesa_store_texsubimage3d(struct gl_context *ctx, GLenum target, GLint level, * Fallback for Driver.CompressedTexImage1D() */ void -_mesa_store_compressed_teximage1d(struct gl_context *ctx, GLenum target, GLint level, +_mesa_store_compressed_teximage1d(struct gl_context *ctx, + GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLsizei imageSize, const GLvoid *data, @@ -4471,7 +4472,8 @@ _mesa_store_compressed_teximage1d(struct gl_context *ctx, GLenum target, GLint l * Fallback for Driver.CompressedTexImage2D() */ void -_mesa_store_compressed_teximage2d(struct gl_context *ctx, GLenum target, GLint level, +_mesa_store_compressed_teximage2d(struct gl_context *ctx, + GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLsizei imageSize, const GLvoid *data, @@ -4515,7 +4517,8 @@ _mesa_store_compressed_teximage2d(struct gl_context *ctx, GLenum target, GLint l * Fallback for Driver.CompressedTexImage3D() */ void -_mesa_store_compressed_teximage3d(struct gl_context *ctx, GLenum target, GLint level, +_mesa_store_compressed_teximage3d(struct gl_context *ctx, + GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint depth, GLint border, diff --git a/src/mesa/main/transformfeedback.h b/src/mesa/main/transformfeedback.h index 752cd4e201f..b0d5b70f2b7 100644 --- a/src/mesa/main/transformfeedback.h +++ b/src/mesa/main/transformfeedback.h @@ -25,8 +25,13 @@ #ifndef TRANSFORM_FEEDBACK_H #define TRANSFORM_FEEDBACK_H -#include "main/mtypes.h" +#include "compiler.h" +#include "glheader.h" +#include "mfeatures.h" +struct _glapi_table; +struct dd_function_table; +struct gl_context; extern void _mesa_init_transform_feedback(struct gl_context *ctx); diff --git a/src/mesa/main/varray.c b/src/mesa/main/varray.c index 340c3fe1d39..32bf95e3ed1 100644 --- a/src/mesa/main/varray.c +++ b/src/mesa/main/varray.c @@ -127,8 +127,8 @@ update_array(struct gl_context *ctx, GLsizei elementSize; GLenum format = GL_RGBA; - if (ctx->API != API_OPENGLES) { - /* fixed point arrays / data is only allowed with OpenGL ES 1.x */ + 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; } @@ -297,7 +297,8 @@ _mesa_TexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *ptr) { GLbitfield legalTypes = (SHORT_BIT | INT_BIT | - HALF_BIT | FLOAT_BIT | DOUBLE_BIT); + HALF_BIT | FLOAT_BIT | DOUBLE_BIT | + FIXED_BIT); GET_CURRENT_CONTEXT(ctx); const GLuint unit = ctx->Array.ActiveTexture; ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx); diff --git a/src/mesa/main/varray.h b/src/mesa/main/varray.h index fb96478cfc3..af9324134ec 100644 --- a/src/mesa/main/varray.h +++ b/src/mesa/main/varray.h @@ -28,7 +28,11 @@ #define VARRAY_H -#include "mtypes.h" +#include "glheader.h" +#include "mfeatures.h" + +struct gl_client_array; +struct gl_context; #if _HAVE_FULL_GL diff --git a/src/mesa/main/viewport.h b/src/mesa/main/viewport.h index ccfa37588b8..909ff92eee5 100644 --- a/src/mesa/main/viewport.h +++ b/src/mesa/main/viewport.h @@ -28,7 +28,8 @@ #define VIEWPORT_H #include "glheader.h" -#include "mtypes.h" + +struct gl_context; extern void GLAPIENTRY _mesa_Viewport(GLint x, GLint y, GLsizei width, GLsizei height); diff --git a/src/mesa/main/vtxfmt.c b/src/mesa/main/vtxfmt.c index 8ec6bb3b7cc..8a72641862b 100644 --- a/src/mesa/main/vtxfmt.c +++ b/src/mesa/main/vtxfmt.c @@ -103,8 +103,8 @@ install_vtxfmt( struct _glapi_table *tab, const GLvertexformat *vfmt ) SET_DrawElementsBaseVertex(tab, vfmt->DrawElementsBaseVertex); SET_DrawRangeElementsBaseVertex(tab, vfmt->DrawRangeElementsBaseVertex); SET_MultiDrawElementsBaseVertex(tab, vfmt->MultiDrawElementsBaseVertex); - SET_DrawArraysInstanced(tab, vfmt->DrawArraysInstanced); - SET_DrawElementsInstanced(tab, vfmt->DrawElementsInstanced); + SET_DrawArraysInstancedARB(tab, vfmt->DrawArraysInstanced); + SET_DrawElementsInstancedARB(tab, vfmt->DrawElementsInstanced); /* GL_NV_vertex_program */ SET_VertexAttrib1fNV(tab, vfmt->VertexAttrib1fNV); diff --git a/src/mesa/math/m_debug_clip.c b/src/mesa/math/m_debug_clip.c index e97afafac3c..bbad6ef024b 100644 --- a/src/mesa/math/m_debug_clip.c +++ b/src/mesa/math/m_debug_clip.c @@ -208,6 +208,24 @@ ALIGN16(static GLfloat, d[TEST_COUNT][4]); ALIGN16(static GLfloat, r[TEST_COUNT][4]); +/** + * Check if X, Y or Z component of the coordinate is close to W, in terms + * of the clip test. + */ +static GLboolean +xyz_close_to_w(const GLfloat c[4]) +{ + float k = 0.0001; + return (fabs(c[0] - c[3]) < k || + fabs(c[1] - c[3]) < k || + fabs(c[2] - c[3]) < k || + fabs(-c[0] - c[3]) < k || + fabs(-c[1] - c[3]) < k || + fabs(-c[2] - c[3]) < k); +} + + + static int test_cliptest_function( clip_func func, int np, int psize, long *cycles ) { @@ -281,9 +299,18 @@ static int test_cliptest_function( clip_func func, int np, } for ( i = 0 ; i < TEST_COUNT ; i++ ) { if ( dm[i] != rm[i] ) { + GLfloat *c = source->start; + STRIDE_F(c, source->stride * i); + if (psize == 4 && xyz_close_to_w(c)) { + /* The coordinate is very close to the clip plane. The clipmask + * may vary depending on code path, but that's OK. + */ + continue; + } printf( "\n-----------------------------\n" ); - printf( "(i = %i)\n", i ); - printf( "dm = 0x%02x rm = 0x%02x\n", dm[i], rm[i] ); + printf( "mask[%d] = 0x%02x ref mask[%d] = 0x%02x\n", i, dm[i], i,rm[i] ); + printf(" coord = %f, %f, %f, %f\n", + c[0], c[1], c[2], c[3]); return 0; } } diff --git a/src/mesa/program/arbprogparse.h b/src/mesa/program/arbprogparse.h index 08e25a1c168..4c0c3007205 100644 --- a/src/mesa/program/arbprogparse.h +++ b/src/mesa/program/arbprogparse.h @@ -26,7 +26,11 @@ #ifndef ARBPROGPARSE_H #define ARBPROGPARSE_H -#include "main/mtypes.h" +#include "main/glheader.h" + +struct gl_context; +struct gl_fragment_program; +struct gl_vertex_program; extern void _mesa_parse_arb_vertex_program(struct gl_context *ctx, GLenum target, diff --git a/src/mesa/program/ir_to_mesa.cpp b/src/mesa/program/ir_to_mesa.cpp index f45bbf55821..490c4cab7ab 100644 --- a/src/mesa/program/ir_to_mesa.cpp +++ b/src/mesa/program/ir_to_mesa.cpp @@ -65,7 +65,7 @@ static int swizzle_for_size(int size); typedef struct ir_to_mesa_src_reg { ir_to_mesa_src_reg(int file, int index, const glsl_type *type) { - this->file = file; + this->file = (gl_register_file) file; this->index = index; if (type && (type->is_scalar() || type->is_vector() || type->is_matrix())) this->swizzle = swizzle_for_size(type->vector_elements); @@ -84,7 +84,7 @@ typedef struct ir_to_mesa_src_reg { this->reladdr = NULL; } - int file; /**< PROGRAM_* from Mesa */ + gl_register_file file; /**< PROGRAM_* from Mesa */ int index; /**< temporary index, VERT_ATTRIB_*, FRAG_ATTRIB_*, etc. */ GLuint swizzle; /**< SWIZZLE_XYZWONEZERO swizzles from Mesa. */ int negate; /**< NEGATE_XYZW mask from mesa */ @@ -123,6 +123,7 @@ public: /** Pointer to the ir source this tree came from for debugging */ ir_instruction *ir; GLboolean cond_update; + bool saturate; int sampler; /**< sampler index */ int tex_target; /**< One of TEXTURE_*_INDEX */ GLboolean tex_shadow; @@ -132,13 +133,13 @@ public: class variable_storage : public exec_node { public: - variable_storage(ir_variable *var, int file, int index) + variable_storage(ir_variable *var, gl_register_file file, int index) : file(file), index(index), var(var) { /* empty */ } - int file; + gl_register_file file; int index; ir_variable *var; /* variable that maps to this, if any */ }; @@ -282,8 +283,17 @@ public: ir_to_mesa_src_reg src0, ir_to_mesa_src_reg src1); + void emit_scs(ir_instruction *ir, enum prog_opcode op, + ir_to_mesa_dst_reg dst, + const ir_to_mesa_src_reg &src); + GLboolean try_emit_mad(ir_expression *ir, int mul_operand); + GLboolean try_emit_sat(ir_expression *ir); + + void emit_swz(ir_expression *ir); + + bool process_move_condition(ir_rvalue *ir); void *mem_ctx; }; @@ -473,6 +483,10 @@ ir_to_mesa_visitor::ir_to_mesa_emit_scalar_op2(ir_instruction *ir, GLuint src0_swiz = GET_SWZ(src0.swizzle, i); GLuint src1_swiz = GET_SWZ(src1.swizzle, i); for (j = i + 1; j < 4; j++) { + /* If there is another enabled component in the destination that is + * derived from the same inputs, generate its value on this pass as + * well. + */ if (!(done_mask & (1 << j)) && GET_SWZ(src0.swizzle, j) == src0_swiz && GET_SWZ(src1.swizzle, j) == src1_swiz) { @@ -506,6 +520,102 @@ ir_to_mesa_visitor::ir_to_mesa_emit_scalar_op1(ir_instruction *ir, ir_to_mesa_emit_scalar_op2(ir, op, dst, src0, undef); } +/** + * Emit an OPCODE_SCS instruction + * + * The \c SCS opcode functions a bit differently than the other Mesa (or + * ARB_fragment_program) opcodes. Instead of splatting its result across all + * four components of the destination, it writes one value to the \c x + * component and another value to the \c y component. + * + * \param ir IR instruction being processed + * \param op Either \c OPCODE_SIN or \c OPCODE_COS depending on which + * value is desired. + * \param dst Destination register + * \param src Source register + */ +void +ir_to_mesa_visitor::emit_scs(ir_instruction *ir, enum prog_opcode op, + ir_to_mesa_dst_reg dst, + const ir_to_mesa_src_reg &src) +{ + /* Vertex programs cannot use the SCS opcode. + */ + if (this->prog->Target == GL_VERTEX_PROGRAM_ARB) { + ir_to_mesa_emit_scalar_op1(ir, op, dst, src); + return; + } + + const unsigned component = (op == OPCODE_SIN) ? 0 : 1; + const unsigned scs_mask = (1U << component); + int done_mask = ~dst.writemask; + ir_to_mesa_src_reg tmp; + + assert(op == OPCODE_SIN || op == OPCODE_COS); + + /* If there are compnents in the destination that differ from the component + * that will be written by the SCS instrution, we'll need a temporary. + */ + if (scs_mask != unsigned(dst.writemask)) { + tmp = get_temp(glsl_type::vec4_type); + } + + for (unsigned i = 0; i < 4; i++) { + unsigned this_mask = (1U << i); + ir_to_mesa_src_reg src0 = src; + + if ((done_mask & this_mask) != 0) + continue; + + /* The source swizzle specified which component of the source generates + * sine / cosine for the current component in the destination. The SCS + * instruction requires that this value be swizzle to the X component. + * Replace the current swizzle with a swizzle that puts the source in + * the X component. + */ + unsigned src0_swiz = GET_SWZ(src.swizzle, i); + + src0.swizzle = MAKE_SWIZZLE4(src0_swiz, src0_swiz, + src0_swiz, src0_swiz); + for (unsigned j = i + 1; j < 4; j++) { + /* If there is another enabled component in the destination that is + * derived from the same inputs, generate its value on this pass as + * well. + */ + if (!(done_mask & (1 << j)) && + GET_SWZ(src0.swizzle, j) == src0_swiz) { + this_mask |= (1 << j); + } + } + + if (this_mask != scs_mask) { + ir_to_mesa_instruction *inst; + ir_to_mesa_dst_reg tmp_dst = ir_to_mesa_dst_reg_from_src(tmp); + + /* Emit the SCS instruction. + */ + inst = ir_to_mesa_emit_op1(ir, OPCODE_SCS, tmp_dst, src0); + inst->dst_reg.writemask = scs_mask; + + /* Move the result of the SCS instruction to the desired location in + * the destination. + */ + tmp.swizzle = MAKE_SWIZZLE4(component, component, + component, component); + inst = ir_to_mesa_emit_op1(ir, OPCODE_SCS, dst, tmp); + inst->dst_reg.writemask = this_mask; + } else { + /* Emit the SCS instruction to write directly to the destination. + */ + ir_to_mesa_instruction *inst = + ir_to_mesa_emit_op1(ir, OPCODE_SCS, dst, src0); + inst->dst_reg.writemask = scs_mask; + } + + done_mask |= this_mask; + } +} + struct ir_to_mesa_src_reg ir_to_mesa_visitor::src_reg_for_float(float val) { @@ -831,6 +941,32 @@ ir_to_mesa_visitor::try_emit_mad(ir_expression *ir, int mul_operand) return true; } +GLboolean +ir_to_mesa_visitor::try_emit_sat(ir_expression *ir) +{ + /* Saturates were only introduced to vertex programs in + * NV_vertex_program3, so don't give them to drivers in the VP. + */ + if (this->prog->Target == GL_VERTEX_PROGRAM_ARB) + return false; + + ir_rvalue *sat_src = ir->as_rvalue_to_saturate(); + if (!sat_src) + return false; + + sat_src->accept(this); + ir_to_mesa_src_reg src = this->result; + + this->result = get_temp(ir->type); + ir_to_mesa_instruction *inst; + inst = ir_to_mesa_emit_op1(ir, OPCODE_MOV, + ir_to_mesa_dst_reg_from_src(this->result), + src); + inst->saturate = true; + + return true; +} + void ir_to_mesa_visitor::reladdr_to_temp(ir_instruction *ir, ir_to_mesa_src_reg *reg, int *num_reladdr) @@ -852,10 +988,127 @@ ir_to_mesa_visitor::reladdr_to_temp(ir_instruction *ir, } void +ir_to_mesa_visitor::emit_swz(ir_expression *ir) +{ + /* Assume that the vector operator is in a form compatible with OPCODE_SWZ. + * This means that each of the operands is either an immediate value of -1, + * 0, or 1, or is a component from one source register (possibly with + * negation). + */ + uint8_t components[4] = { 0 }; + bool negate[4] = { false }; + ir_variable *var = NULL; + + for (unsigned i = 0; i < ir->type->vector_elements; i++) { + ir_rvalue *op = ir->operands[i]; + + assert(op->type->is_scalar()); + + while (op != NULL) { + switch (op->ir_type) { + case ir_type_constant: { + + assert(op->type->is_scalar()); + + const ir_constant *const c = op->as_constant(); + if (c->is_one()) { + components[i] = SWIZZLE_ONE; + } else if (c->is_zero()) { + components[i] = SWIZZLE_ZERO; + } else if (c->is_negative_one()) { + components[i] = SWIZZLE_ONE; + negate[i] = true; + } else { + assert(!"SWZ constant must be 0.0 or 1.0."); + } + + op = NULL; + break; + } + + case ir_type_dereference_variable: { + ir_dereference_variable *const deref = + (ir_dereference_variable *) op; + + assert((var == NULL) || (deref->var == var)); + components[i] = SWIZZLE_X; + var = deref->var; + op = NULL; + break; + } + + case ir_type_expression: { + ir_expression *const expr = (ir_expression *) op; + + assert(expr->operation == ir_unop_neg); + negate[i] = true; + + op = expr->operands[0]; + break; + } + + case ir_type_swizzle: { + ir_swizzle *const swiz = (ir_swizzle *) op; + + components[i] = swiz->mask.x; + op = swiz->val; + break; + } + + default: + assert(!"Should not get here."); + return; + } + } + } + + assert(var != NULL); + + ir_dereference_variable *const deref = + new(mem_ctx) ir_dereference_variable(var); + + this->result.file = PROGRAM_UNDEFINED; + deref->accept(this); + if (this->result.file == PROGRAM_UNDEFINED) { + ir_print_visitor v; + printf("Failed to get tree for expression operand:\n"); + deref->accept(&v); + exit(1); + } + + ir_to_mesa_src_reg src; + + src = this->result; + src.swizzle = MAKE_SWIZZLE4(components[0], + components[1], + components[2], + components[3]); + src.negate = ((unsigned(negate[0]) << 0) + | (unsigned(negate[1]) << 1) + | (unsigned(negate[2]) << 2) + | (unsigned(negate[3]) << 3)); + + /* Storage for our result. Ideally for an assignment we'd be using the + * actual storage for the result here, instead. + */ + const ir_to_mesa_src_reg result_src = get_temp(ir->type); + ir_to_mesa_dst_reg result_dst = ir_to_mesa_dst_reg_from_src(result_src); + + /* Limit writes to the channels that will be used by result_src later. + * This does limit this temp's use as a temporary for multi-instruction + * sequences. + */ + result_dst.writemask = (1 << ir->type->vector_elements) - 1; + + ir_to_mesa_emit_op1(ir, OPCODE_SWZ, result_dst, src); + this->result = result_src; +} + +void ir_to_mesa_visitor::visit(ir_expression *ir) { unsigned int operand; - struct ir_to_mesa_src_reg op[2]; + struct ir_to_mesa_src_reg op[Elements(ir->operands)]; struct ir_to_mesa_src_reg result_src; struct ir_to_mesa_dst_reg result_dst; @@ -867,6 +1120,13 @@ ir_to_mesa_visitor::visit(ir_expression *ir) if (try_emit_mad(ir, 0)) return; } + if (try_emit_sat(ir)) + return; + + if (ir->operation == ir_quadop_vector) { + this->emit_swz(ir); + return; + } for (operand = 0; operand < ir->get_num_operands(); operand++) { this->result.file = PROGRAM_UNDEFINED; @@ -940,6 +1200,12 @@ ir_to_mesa_visitor::visit(ir_expression *ir) case ir_unop_cos: ir_to_mesa_emit_scalar_op1(ir, OPCODE_COS, result_dst, op[0]); break; + case ir_unop_sin_reduced: + emit_scs(ir, OPCODE_SIN, result_dst, op[0]); + break; + case ir_unop_cos_reduced: + emit_scs(ir, OPCODE_COS, result_dst, op[0]); + break; case ir_unop_dFdx: ir_to_mesa_emit_op1(ir, OPCODE_DDX, result_dst, op[0]); @@ -1058,10 +1324,6 @@ ir_to_mesa_visitor::visit(ir_expression *ir) ir->operands[0]->type->vector_elements); break; - case ir_binop_cross: - ir_to_mesa_emit_op2(ir, OPCODE_XPD, result_dst, op[0], op[1]); - break; - case ir_unop_sqrt: /* sqrt(x) = x * rsq(x). */ ir_to_mesa_emit_scalar_op1(ir, OPCODE_RSQ, result_dst, op[0]); @@ -1123,6 +1385,12 @@ ir_to_mesa_visitor::visit(ir_expression *ir) case ir_unop_round_even: assert(!"GLSL 1.30 features unsupported"); break; + + case ir_quadop_vector: + /* This operation should have already been handled. + */ + assert(!"Should not get here."); + break; } this->result = result_src; @@ -1301,7 +1569,13 @@ ir_to_mesa_visitor::visit(ir_dereference_record *ir) break; offset += type_size(struct_type->fields.structure[i].type); } - this->result.swizzle = swizzle_for_size(ir->type->vector_elements); + + /* If the type is smaller than a vec4, replicate the last channel out. */ + if (ir->type->is_scalar() || ir->type->is_vector()) + this->result.swizzle = swizzle_for_size(ir->type->vector_elements); + else + this->result.swizzle = SWIZZLE_NOOP; + this->result.index += offset; } @@ -1330,6 +1604,93 @@ get_assignment_lhs(ir_dereference *ir, ir_to_mesa_visitor *v) return ir_to_mesa_dst_reg_from_src(v->result); } +/** + * Process the condition of a conditional assignment + * + * Examines the condition of a conditional assignment to generate the optimal + * first operand of a \c CMP instruction. If the condition is a relational + * operator with 0 (e.g., \c ir_binop_less), the value being compared will be + * used as the source for the \c CMP instruction. Otherwise the comparison + * is processed to a boolean result, and the boolean result is used as the + * operand to the CMP instruction. + */ +bool +ir_to_mesa_visitor::process_move_condition(ir_rvalue *ir) +{ + ir_rvalue *src_ir = ir; + bool negate = true; + bool switch_order = false; + + ir_expression *const expr = ir->as_expression(); + if ((expr != NULL) && (expr->get_num_operands() == 2)) { + bool zero_on_left = false; + + if (expr->operands[0]->is_zero()) { + src_ir = expr->operands[1]; + zero_on_left = true; + } else if (expr->operands[1]->is_zero()) { + src_ir = expr->operands[0]; + zero_on_left = false; + } + + /* a is - 0 + - 0 + + * (a < 0) T F F ( a < 0) T F F + * (0 < a) F F T (-a < 0) F F T + * (a <= 0) T T F (-a < 0) F F T (swap order of other operands) + * (0 <= a) F T T ( a < 0) T F F (swap order of other operands) + * (a > 0) F F T (-a < 0) F F T + * (0 > a) T F F ( a < 0) T F F + * (a >= 0) F T T ( a < 0) T F F (swap order of other operands) + * (0 >= a) T T F (-a < 0) F F T (swap order of other operands) + * + * Note that exchanging the order of 0 and 'a' in the comparison simply + * means that the value of 'a' should be negated. + */ + if (src_ir != ir) { + switch (expr->operation) { + case ir_binop_less: + switch_order = false; + negate = zero_on_left; + break; + + case ir_binop_greater: + switch_order = false; + negate = !zero_on_left; + break; + + case ir_binop_lequal: + switch_order = true; + negate = !zero_on_left; + break; + + case ir_binop_gequal: + switch_order = true; + negate = zero_on_left; + break; + + default: + /* This isn't the right kind of comparison afterall, so make sure + * the whole condition is visited. + */ + src_ir = ir; + break; + } + } + } + + src_ir->accept(this); + + /* We use the OPCODE_CMP (a < 0 ? b : c) for conditional moves, and the + * condition we produced is 0.0 or 1.0. By flipping the sign, we can + * choose which value OPCODE_CMP produces without an extra instruction + * computing the condition. + */ + if (negate) + this->result.negate = ~this->result.negate; + + return switch_order; +} + void ir_to_mesa_visitor::visit(ir_assignment *ir) { @@ -1389,20 +1750,18 @@ ir_to_mesa_visitor::visit(ir_assignment *ir) assert(r.file != PROGRAM_UNDEFINED); if (ir->condition) { - ir_to_mesa_src_reg condition; - - ir->condition->accept(this); - condition = this->result; + const bool switch_order = this->process_move_condition(ir->condition); + ir_to_mesa_src_reg condition = this->result; - /* We use the OPCODE_CMP (a < 0 ? b : c) for conditional moves, - * and the condition we produced is 0.0 or 1.0. By flipping the - * sign, we can choose which value OPCODE_CMP produces without - * an extra computing the condition. - */ - condition.negate = ~condition.negate; for (i = 0; i < type_size(ir->lhs->type); i++) { - ir_to_mesa_emit_op3(ir, OPCODE_CMP, l, - condition, r, ir_to_mesa_src_reg_from_dst(l)); + if (switch_order) { + ir_to_mesa_emit_op3(ir, OPCODE_CMP, l, + condition, ir_to_mesa_src_reg_from_dst(l), r); + } else { + ir_to_mesa_emit_op3(ir, OPCODE_CMP, l, + condition, r, ir_to_mesa_src_reg_from_dst(l)); + } + l.index++; r.index++; } @@ -1813,9 +2172,14 @@ ir_to_mesa_visitor::visit(ir_discard *ir) { struct gl_fragment_program *fp = (struct gl_fragment_program *)this->prog; - assert(ir->condition == NULL); /* FINISHME */ + if (ir->condition) { + ir->condition->accept(this); + this->result.negate = ~this->result.negate; + ir_to_mesa_emit_op1(ir, OPCODE_KIL, ir_to_mesa_undef_dst, this->result); + } else { + ir_to_mesa_emit_op0(ir, OPCODE_KIL_NV); + } - ir_to_mesa_emit_op0(ir, OPCODE_KIL_NV); fp->UsesKill = GL_TRUE; } @@ -1886,7 +2250,7 @@ mesa_src_reg_from_ir_src_reg(ir_to_mesa_src_reg reg) struct prog_src_register mesa_reg; mesa_reg.File = reg.file; - assert(reg.index < (1 << INST_INDEX_BITS) - 1); + assert(reg.index < (1 << INST_INDEX_BITS)); mesa_reg.Index = reg.index; mesa_reg.Swizzle = reg.swizzle; mesa_reg.RelAddr = reg.reladdr != NULL; @@ -2256,8 +2620,9 @@ set_uniform_initializers(struct gl_context *ctx, /** * Convert a shader's GLSL IR into a Mesa gl_program. */ -struct gl_program * -get_mesa_program(struct gl_context *ctx, struct gl_shader_program *shader_program, +static struct gl_program * +get_mesa_program(struct gl_context *ctx, + struct gl_shader_program *shader_program, struct gl_shader *shader) { ir_to_mesa_visitor v; @@ -2280,6 +2645,10 @@ get_mesa_program(struct gl_context *ctx, struct gl_shader_program *shader_progra target = GL_FRAGMENT_PROGRAM_ARB; target_string = "fragment"; break; + case GL_GEOMETRY_SHADER: + target = GL_GEOMETRY_PROGRAM_NV; + target_string = "geometry"; + break; default: assert(!"should not be reached"); return NULL; @@ -2355,6 +2724,8 @@ get_mesa_program(struct gl_context *ctx, struct gl_shader_program *shader_progra mesa_inst->Opcode = inst->op; mesa_inst->CondUpdate = inst->cond_update; + if (inst->saturate) + mesa_inst->SaturateMode = SATURATE_ZERO_ONE; mesa_inst->DstReg.File = inst->dst_reg.file; mesa_inst->DstReg.Index = inst->dst_reg.index; mesa_inst->DstReg.CondMask = inst->dst_reg.cond_mask; @@ -2401,6 +2772,15 @@ get_mesa_program(struct gl_context *ctx, struct gl_shader_program *shader_progra mesa_inst++; i++; + + if (!shader_program->LinkStatus) + break; + } + + if (!shader_program->LinkStatus) { + free(mesa_instructions); + _mesa_reference_program(ctx, &shader->Program, NULL); + return NULL; } set_branchtargets(&v, mesa_instructions, num_instructions); @@ -2475,16 +2855,20 @@ _mesa_ir_link_shader(struct gl_context *ctx, struct gl_shader_program *prog) /* Lowering */ do_mat_op_to_vec(ir); - do_mod_to_fract(ir); - do_div_to_mul_rcp(ir); - do_explog_to_explog2(ir); + lower_instructions(ir, (MOD_TO_FRACT | DIV_TO_MUL_RCP | EXP_TO_EXP2 + | LOG_TO_LOG2 + | ((options->EmitNoPow) ? POW_TO_EXP2 : 0))); progress = do_lower_jumps(ir, true, true, options->EmitNoMainReturn, options->EmitNoCont, options->EmitNoLoops) || progress; progress = do_common_optimization(ir, true, options->MaxUnrollIterations) || progress; - if (options->EmitNoIfs) + progress = lower_quadop_vector(ir, true) || progress; + + if (options->EmitNoIfs) { + progress = lower_discard(ir) || progress; progress = do_if_to_cond_assign(ir) || progress; + } if (options->EmitNoNoise) progress = lower_noise(ir) || progress; @@ -2510,30 +2894,40 @@ _mesa_ir_link_shader(struct gl_context *ctx, struct gl_shader_program *prog) for (unsigned i = 0; i < MESA_SHADER_TYPES; i++) { struct gl_program *linked_prog; - bool ok = true; if (prog->_LinkedShaders[i] == NULL) continue; linked_prog = get_mesa_program(ctx, prog, prog->_LinkedShaders[i]); - switch (prog->_LinkedShaders[i]->Type) { - case GL_VERTEX_SHADER: - _mesa_reference_vertprog(ctx, &prog->VertexProgram, - (struct gl_vertex_program *)linked_prog); - ok = ctx->Driver.ProgramStringNotify(ctx, GL_VERTEX_PROGRAM_ARB, - linked_prog); - break; - case GL_FRAGMENT_SHADER: - _mesa_reference_fragprog(ctx, &prog->FragmentProgram, - (struct gl_fragment_program *)linked_prog); - ok = ctx->Driver.ProgramStringNotify(ctx, GL_FRAGMENT_PROGRAM_ARB, - linked_prog); - break; - } - if (!ok) { - return GL_FALSE; + if (linked_prog) { + bool ok = true; + + switch (prog->_LinkedShaders[i]->Type) { + case GL_VERTEX_SHADER: + _mesa_reference_vertprog(ctx, &prog->VertexProgram, + (struct gl_vertex_program *)linked_prog); + ok = ctx->Driver.ProgramStringNotify(ctx, GL_VERTEX_PROGRAM_ARB, + linked_prog); + break; + case GL_FRAGMENT_SHADER: + _mesa_reference_fragprog(ctx, &prog->FragmentProgram, + (struct gl_fragment_program *)linked_prog); + ok = ctx->Driver.ProgramStringNotify(ctx, GL_FRAGMENT_PROGRAM_ARB, + linked_prog); + break; + case GL_GEOMETRY_SHADER: + _mesa_reference_geomprog(ctx, &prog->GeometryProgram, + (struct gl_geometry_program *)linked_prog); + ok = ctx->Driver.ProgramStringNotify(ctx, GL_GEOMETRY_PROGRAM_NV, + linked_prog); + break; + } + if (!ok) { + return GL_FALSE; + } } + _mesa_reference_program(ctx, &linked_prog, NULL); } @@ -2651,6 +3045,7 @@ _mesa_glsl_link_shader(struct gl_context *ctx, struct gl_shader_program *prog) prog->Varying = _mesa_new_parameter_list(); _mesa_reference_vertprog(ctx, &prog->VertexProgram, NULL); _mesa_reference_fragprog(ctx, &prog->FragmentProgram, NULL); + _mesa_reference_geomprog(ctx, &prog->GeometryProgram, NULL); if (prog->LinkStatus) { link_shaders(ctx, prog); diff --git a/src/mesa/program/ir_to_mesa.h b/src/mesa/program/ir_to_mesa.h index 7197615f949..7410e149735 100644 --- a/src/mesa/program/ir_to_mesa.h +++ b/src/mesa/program/ir_to_mesa.h @@ -25,8 +25,11 @@ extern "C" { #endif -#include "main/config.h" -#include "main/mtypes.h" +#include "main/glheader.h" + +struct gl_context; +struct gl_shader; +struct gl_shader_program; void _mesa_glsl_compile_shader(struct gl_context *ctx, struct gl_shader *sh); void _mesa_glsl_link_shader(struct gl_context *ctx, struct gl_shader_program *prog); diff --git a/src/mesa/program/nvfragparse.h b/src/mesa/program/nvfragparse.h index 3e85dd2c30b..088e7527d5b 100644 --- a/src/mesa/program/nvfragparse.h +++ b/src/mesa/program/nvfragparse.h @@ -30,7 +30,10 @@ #ifndef NVFRAGPARSE_H #define NVFRAGPARSE_H -#include "main/mtypes.h" +#include "main/glheader.h" + +struct gl_context; +struct gl_fragment_program; extern void _mesa_parse_nv_fragment_program(struct gl_context *ctx, GLenum target, diff --git a/src/mesa/program/nvvertparse.h b/src/mesa/program/nvvertparse.h index e98e867320f..7318e149416 100644 --- a/src/mesa/program/nvvertparse.h +++ b/src/mesa/program/nvvertparse.h @@ -29,7 +29,10 @@ #ifndef NVVERTPARSE_H #define NVVERTPARSE_H -#include "main/mtypes.h" +#include "main/glheader.h" + +struct gl_context; +struct gl_vertex_program; extern void _mesa_parse_nv_vertex_program(struct gl_context *ctx, GLenum target, diff --git a/src/mesa/program/prog_cache.h b/src/mesa/program/prog_cache.h index 4907ae3030e..01673348279 100644 --- a/src/mesa/program/prog_cache.h +++ b/src/mesa/program/prog_cache.h @@ -30,8 +30,9 @@ #define PROG_CACHE_H -#include "main/mtypes.h" +#include "main/glheader.h" +struct gl_context; /** Opaque type */ struct gl_program_cache; diff --git a/src/mesa/program/prog_execute.c b/src/mesa/program/prog_execute.c index 1d97a077f52..dd15e9a1ccd 100644 --- a/src/mesa/program/prog_execute.c +++ b/src/mesa/program/prog_execute.c @@ -1670,6 +1670,18 @@ _mesa_execute_program(struct gl_context * ctx, fetch_texel(ctx, machine, inst, texcoord, lodBias, color); + if (DEBUG_PROG) { + printf("TXB (%g, %g, %g, %g) = texture[%d][%g %g %g %g]" + " bias %g\n", + color[0], color[1], color[2], color[3], + inst->TexSrcUnit, + texcoord[0], + texcoord[1], + texcoord[2], + texcoord[3], + lodBias); + } + store_vector4(inst, machine, color); } break; diff --git a/src/mesa/program/prog_instruction.h b/src/mesa/program/prog_instruction.h index ca90de7ce1c..a383828e344 100644 --- a/src/mesa/program/prog_instruction.h +++ b/src/mesa/program/prog_instruction.h @@ -247,7 +247,7 @@ typedef enum prog_opcode { * Number of bits for the src/dst register Index field. * This limits the size of temp/uniform register files. */ -#define INST_INDEX_BITS 10 +#define INST_INDEX_BITS 11 /** diff --git a/src/mesa/program/prog_optimize.h b/src/mesa/program/prog_optimize.h index 00f1080449b..463f5fc51c4 100644 --- a/src/mesa/program/prog_optimize.h +++ b/src/mesa/program/prog_optimize.h @@ -27,9 +27,10 @@ #include "main/config.h" -#include "main/mtypes.h" +#include "main/glheader.h" +struct gl_context; struct gl_program; struct prog_instruction; diff --git a/src/mesa/program/prog_print.c b/src/mesa/program/prog_print.c index 79c01020eb2..abebf392c0a 100644 --- a/src/mesa/program/prog_print.c +++ b/src/mesa/program/prog_print.c @@ -42,8 +42,8 @@ /** * Return string name for given program/register file. */ -static const char * -file_string(gl_register_file f, gl_prog_print_mode mode) +const char * +_mesa_register_file_name(gl_register_file f) { switch (f) { case PROGRAM_TEMPORARY: @@ -275,7 +275,8 @@ reg_string(gl_register_file f, GLint index, gl_prog_print_mode mode, switch (mode) { case PROG_PRINT_DEBUG: - sprintf(str, "%s[%s%d]", file_string(f, mode), addr, index); + sprintf(str, "%s[%s%d]", + _mesa_register_file_name(f), addr, index); if (hasIndex2) { int offset = strlen(str); const char *addr2 = relAddr2 ? "ADDR+" : ""; @@ -497,7 +498,7 @@ fprint_dst_reg(FILE * f, #if 0 fprintf(f, "%s[%d]%s", - file_string((gl_register_file) dstReg->File, mode), + _mesa_register_file_name((gl_register_file) dstReg->File), dstReg->Index, _mesa_writemask_string(dstReg->WriteMask)); #endif @@ -522,7 +523,7 @@ fprint_src_reg(FILE *f, abs); #if 0 fprintf(f, "%s[%d]%s", - file_string((gl_register_file) srcReg->File, mode), + _mesa_register_file_name((gl_register_file) srcReg->File), srcReg->Index, _mesa_swizzle_string(srcReg->Swizzle, srcReg->Negate, GL_FALSE)); @@ -615,8 +616,7 @@ _mesa_fprint_instruction_opt(FILE *f, if (inst->SrcReg[0].File != PROGRAM_UNDEFINED) { fprintf(f, ", "); fprintf(f, "%s[%d]%s", - file_string((gl_register_file) inst->SrcReg[0].File, - mode), + _mesa_register_file_name((gl_register_file) inst->SrcReg[0].File), inst->SrcReg[0].Index, _mesa_swizzle_string(inst->SrcReg[0].Swizzle, inst->SrcReg[0].Negate, GL_FALSE)); @@ -632,8 +632,7 @@ _mesa_fprint_instruction_opt(FILE *f, fprintf(f, " "); fprint_dst_reg(f, &inst->DstReg, mode, prog); fprintf(f, ", %s[%d], %s", - file_string((gl_register_file) inst->SrcReg[0].File, - mode), + _mesa_register_file_name((gl_register_file) inst->SrcReg[0].File), inst->SrcReg[0].Index, _mesa_swizzle_string(inst->SrcReg[0].Swizzle, inst->SrcReg[0].Negate, GL_TRUE)); @@ -964,7 +963,6 @@ static void _mesa_fprint_parameter_list(FILE *f, const struct gl_program_parameter_list *list) { - const gl_prog_print_mode mode = PROG_PRINT_DEBUG; GLuint i; if (!list) @@ -978,7 +976,7 @@ _mesa_fprint_parameter_list(FILE *f, const GLfloat *v = list->ParameterValues[i]; fprintf(f, "param[%d] sz=%d %s %s = {%.3g, %.3g, %.3g, %.3g}", i, param->Size, - file_string(list->Parameters[i].Type, mode), + _mesa_register_file_name(list->Parameters[i].Type), param->Name, v[0], v[1], v[2], v[3]); if (param->Flags & PROG_PARAM_BIT_CENTROID) fprintf(f, " Centroid"); diff --git a/src/mesa/program/prog_print.h b/src/mesa/program/prog_print.h index f080b3fd2e6..d962087db38 100644 --- a/src/mesa/program/prog_print.h +++ b/src/mesa/program/prog_print.h @@ -47,6 +47,9 @@ typedef enum { } gl_prog_print_mode; +extern const char * +_mesa_register_file_name(gl_register_file f); + extern void _mesa_print_vp_inputs(GLbitfield inputs); diff --git a/src/mesa/program/prog_statevars.c b/src/mesa/program/prog_statevars.c index baac29ff0dd..c310acb01d4 100644 --- a/src/mesa/program/prog_statevars.c +++ b/src/mesa/program/prog_statevars.c @@ -572,6 +572,24 @@ _mesa_fetch_state(struct gl_context *ctx, const gl_state_index state[], value[3] = 0.0F; return; + case STATE_FB_WPOS_Y_TRANSFORM: + /* A driver may negate this conditional by using ZW swizzle + * instead of XY (based on e.g. some other state). */ + if (ctx->DrawBuffer->Name != 0) { + /* Identity (XY) followed by flipping Y upside down (ZW). */ + value[0] = 1.0F; + value[1] = 0.0F; + value[2] = -1.0F; + value[3] = (GLfloat) (ctx->DrawBuffer->Height - 1); + } else { + /* Flipping Y upside down (XY) followed by identity (ZW). */ + value[0] = -1.0F; + value[1] = (GLfloat) (ctx->DrawBuffer->Height - 1); + value[2] = 1.0F; + value[3] = 0.0F; + } + return; + case STATE_ROT_MATRIX_0: { const int unit = (int) state[2]; @@ -695,6 +713,7 @@ _mesa_program_state_flags(const gl_state_index state[STATE_LENGTH]) return _NEW_PIXEL; case STATE_FB_SIZE: + case STATE_FB_WPOS_Y_TRANSFORM: return _NEW_BUFFERS; default: @@ -900,6 +919,9 @@ append_token(char *dst, gl_state_index k) case STATE_FB_SIZE: append(dst, "FbSize"); break; + case STATE_FB_WPOS_Y_TRANSFORM: + append(dst, "FbWposYTransform"); + break; case STATE_ROT_MATRIX_0: append(dst, "rotMatrixRow0"); break; @@ -1046,7 +1068,9 @@ _mesa_program_state_string(const gl_state_index state[STATE_LENGTH]) * Loop over all the parameters in a parameter list. If the parameter * is a GL state reference, look up the current value of that state * variable and put it into the parameter's Value[4] array. - * This would be called at glBegin time when using a fragment program. + * Other parameter types never change or are explicitly set by the user + * with glUniform() or glProgramParameter(), etc. + * This would be called at glBegin time. */ void _mesa_load_state_parameters(struct gl_context *ctx, @@ -1057,12 +1081,10 @@ _mesa_load_state_parameters(struct gl_context *ctx, if (!paramList) return; - /*assert(ctx->Driver.NeedFlush == 0);*/ - for (i = 0; i < paramList->NumParameters; i++) { if (paramList->Parameters[i].Type == PROGRAM_STATE_VAR) { _mesa_fetch_state(ctx, - (gl_state_index *) paramList->Parameters[i].StateIndexes, + paramList->Parameters[i].StateIndexes, paramList->ParameterValues[i]); } } diff --git a/src/mesa/program/prog_statevars.h b/src/mesa/program/prog_statevars.h index 6e5be53630c..f2407af9c87 100644 --- a/src/mesa/program/prog_statevars.h +++ b/src/mesa/program/prog_statevars.h @@ -25,8 +25,10 @@ #ifndef PROG_STATEVARS_H #define PROG_STATEVARS_H -#include "main/mtypes.h" +#include "main/glheader.h" +struct gl_context; +struct gl_program_parameter_list; /** * Number of STATE_* values we need to address any GL state. @@ -117,6 +119,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_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.c b/src/mesa/program/program.c index 4cacde9aed1..9ffa49bb013 100644 --- a/src/mesa/program/program.c +++ b/src/mesa/program/program.c @@ -917,6 +917,103 @@ _mesa_find_free_register(const GLboolean used[], } + +/** + * Check if the given register index is valid (doesn't exceed implementation- + * dependent limits). + * \return GL_TRUE if OK, GL_FALSE if bad index + */ +GLboolean +_mesa_valid_register_index(const struct gl_context *ctx, + gl_shader_type shaderType, + gl_register_file file, GLint index) +{ + const struct gl_program_constants *c; + + switch (shaderType) { + case MESA_SHADER_VERTEX: + c = &ctx->Const.VertexProgram; + break; + case MESA_SHADER_FRAGMENT: + c = &ctx->Const.FragmentProgram; + break; + case MESA_SHADER_GEOMETRY: + c = &ctx->Const.GeometryProgram; + break; + default: + _mesa_problem(ctx, + "unexpected shader type in _mesa_valid_register_index()"); + return GL_FALSE; + } + + switch (file) { + case PROGRAM_UNDEFINED: + return GL_TRUE; /* XXX or maybe false? */ + + case PROGRAM_TEMPORARY: + return index >= 0 && index < c->MaxTemps; + + case PROGRAM_ENV_PARAM: + return index >= 0 && index < c->MaxEnvParams; + + case PROGRAM_LOCAL_PARAM: + return index >= 0 && index < c->MaxLocalParams; + + case PROGRAM_NAMED_PARAM: + return index >= 0 && index < c->MaxParameters; + + case PROGRAM_UNIFORM: + case PROGRAM_STATE_VAR: + /* aka constant buffer */ + return index >= 0 && index < c->MaxUniformComponents / 4; + + case PROGRAM_CONSTANT: + /* constant buffer w/ possible relative negative addressing */ + return (index > (int) c->MaxUniformComponents / -4 && + index < c->MaxUniformComponents / 4); + + case PROGRAM_INPUT: + if (index < 0) + return GL_FALSE; + + switch (shaderType) { + case MESA_SHADER_VERTEX: + return index < VERT_ATTRIB_GENERIC0 + c->MaxAttribs; + case MESA_SHADER_FRAGMENT: + return index < FRAG_ATTRIB_VAR0 + ctx->Const.MaxVarying; + case MESA_SHADER_GEOMETRY: + return index < GEOM_ATTRIB_VAR0 + ctx->Const.MaxVarying; + default: + return GL_FALSE; + } + + case PROGRAM_OUTPUT: + if (index < 0) + return GL_FALSE; + + switch (shaderType) { + case MESA_SHADER_VERTEX: + return index < VERT_RESULT_VAR0 + ctx->Const.MaxVarying; + case MESA_SHADER_FRAGMENT: + return index < FRAG_RESULT_DATA0 + ctx->Const.MaxDrawBuffers; + case MESA_SHADER_GEOMETRY: + return index < GEOM_RESULT_VAR0 + ctx->Const.MaxVarying; + default: + return GL_FALSE; + } + + case PROGRAM_ADDRESS: + return index >= 0 && index < c->MaxAddressRegs; + + default: + _mesa_problem(ctx, + "unexpected register file in _mesa_valid_register_index()"); + return GL_FALSE; + } +} + + + /** * "Post-process" a GPU program. This is intended to be used for debugging. * Example actions include no-op'ing instructions or changing instruction diff --git a/src/mesa/program/program.h b/src/mesa/program/program.h index 70cc2c3aaed..ce37b95bf82 100644 --- a/src/mesa/program/program.h +++ b/src/mesa/program/program.h @@ -165,6 +165,12 @@ extern GLint _mesa_find_free_register(const GLboolean used[], GLuint maxRegs, GLuint firstReg); + +extern GLboolean +_mesa_valid_register_index(const struct gl_context *ctx, + gl_shader_type shaderType, + gl_register_file file, GLint index); + extern void _mesa_postprocess_program(struct gl_context *ctx, struct gl_program *prog); diff --git a/src/mesa/program/symbol_table.c b/src/mesa/program/symbol_table.c index 09e7cb44ef3..004f1f8fa7b 100644 --- a/src/mesa/program/symbol_table.c +++ b/src/mesa/program/symbol_table.c @@ -336,12 +336,12 @@ _mesa_symbol_table_add_symbol(struct _mesa_symbol_table *table, check_symbol_table(table); if (hdr == NULL) { - hdr = calloc(1, sizeof(*hdr)); - hdr->name = strdup(name); + hdr = calloc(1, sizeof(*hdr)); + hdr->name = strdup(name); - hash_table_insert(table->ht, hdr, hdr->name); - hdr->next = table->hdr; - table->hdr = hdr; + hash_table_insert(table->ht, hdr, hdr->name); + hdr->next = table->hdr; + table->hdr = hdr; } check_symbol_table(table); @@ -376,6 +376,81 @@ _mesa_symbol_table_add_symbol(struct _mesa_symbol_table *table, } +int +_mesa_symbol_table_add_global_symbol(struct _mesa_symbol_table *table, + int name_space, const char *name, + void *declaration) +{ + struct symbol_header *hdr; + struct symbol *sym; + struct symbol *curr; + struct scope_level *top_scope; + + check_symbol_table(table); + + hdr = find_symbol(table, name); + + check_symbol_table(table); + + if (hdr == NULL) { + hdr = calloc(1, sizeof(*hdr)); + hdr->name = strdup(name); + + hash_table_insert(table->ht, hdr, hdr->name); + hdr->next = table->hdr; + table->hdr = hdr; + } + + check_symbol_table(table); + + /* If the symbol already exists in this namespace at this scope, it cannot + * be added to the table. + */ + for (sym = hdr->symbols + ; (sym != NULL) && (sym->name_space != name_space) + ; sym = sym->next_with_same_name) { + /* empty */ + } + + if (sym && sym->depth == 0) + return -1; + + /* Find the top-level scope */ + for (top_scope = table->current_scope + ; top_scope->next != NULL + ; top_scope = top_scope->next) { + /* empty */ + } + + sym = calloc(1, sizeof(*sym)); + sym->next_with_same_scope = top_scope->symbols; + sym->hdr = hdr; + sym->name_space = name_space; + sym->data = declaration; + + assert(sym->hdr == hdr); + + /* Since next_with_same_name is ordered by scope, we need to append the + * new symbol to the _end_ of the list. + */ + if (hdr->symbols == NULL) { + hdr->symbols = sym; + } else { + for (curr = hdr->symbols + ; curr->next_with_same_name != NULL + ; curr = curr->next_with_same_name) { + /* empty */ + } + curr->next_with_same_name = sym; + } + top_scope->symbols = sym; + + check_symbol_table(table); + return 0; +} + + + struct _mesa_symbol_table * _mesa_symbol_table_ctor(void) { diff --git a/src/mesa/program/symbol_table.h b/src/mesa/program/symbol_table.h index 1d570fc1a09..f9d91649bbc 100644 --- a/src/mesa/program/symbol_table.h +++ b/src/mesa/program/symbol_table.h @@ -33,6 +33,10 @@ extern void _mesa_symbol_table_pop_scope(struct _mesa_symbol_table *table); extern int _mesa_symbol_table_add_symbol(struct _mesa_symbol_table *symtab, int name_space, const char *name, void *declaration); +extern int _mesa_symbol_table_add_global_symbol( + struct _mesa_symbol_table *symtab, int name_space, const char *name, + void *declaration); + extern int _mesa_symbol_table_symbol_scope(struct _mesa_symbol_table *table, int name_space, const char *name); diff --git a/src/mesa/state_tracker/st_atom_constbuf.c b/src/mesa/state_tracker/st_atom_constbuf.c index 8d1dc792bc8..f1d08a3e166 100644 --- a/src/mesa/state_tracker/st_atom_constbuf.c +++ b/src/mesa/state_tracker/st_atom_constbuf.c @@ -66,6 +66,11 @@ void st_upload_constants( struct st_context *st, if (params && params->NumParameters) { const uint paramBytes = params->NumParameters * sizeof(GLfloat) * 4; + /* Update the constants which come from fixed-function state, such as + * transformation matrices, fog factors, etc. The rest of the values in + * the parameters list are explicitly set by the user with glUniform, + * glProgramParameter(), etc. + */ _mesa_load_state_parameters(st->ctx, params); /* We always need to get a new buffer, to keep the drivers simple and diff --git a/src/mesa/state_tracker/st_atom_framebuffer.c b/src/mesa/state_tracker/st_atom_framebuffer.c index 036bc60049a..2843b7b1764 100644 --- a/src/mesa/state_tracker/st_atom_framebuffer.c +++ b/src/mesa/state_tracker/st_atom_framebuffer.c @@ -51,7 +51,7 @@ static void update_renderbuffer_surface(struct st_context *st, struct st_renderbuffer *strb) { - struct pipe_screen *screen = st->pipe->screen; + struct pipe_context *pipe = st->pipe; struct pipe_resource *resource = strb->rtt->pt; int rtt_width = strb->Base.Width; int rtt_height = strb->Base.Height; @@ -65,15 +65,19 @@ update_renderbuffer_surface(struct st_context *st, for (level = 0; level <= resource->last_level; level++) { if (u_minify(resource->width0, level) == rtt_width && u_minify(resource->height0, level) == rtt_height) { + struct pipe_surface surf_tmpl; + memset(&surf_tmpl, 0, sizeof(surf_tmpl)); + surf_tmpl.format = resource->format; + surf_tmpl.usage = PIPE_BIND_RENDER_TARGET; + surf_tmpl.u.tex.level = level; + surf_tmpl.u.tex.first_layer = strb->rtt_face + strb->rtt_slice; + surf_tmpl.u.tex.last_layer = strb->rtt_face + strb->rtt_slice; pipe_surface_reference(&strb->surface, NULL); - strb->surface = screen->get_tex_surface(screen, - resource, - strb->rtt_face, - level, - strb->rtt_slice, - PIPE_BIND_RENDER_TARGET); + strb->surface = pipe->create_surface(pipe, + resource, + &surf_tmpl); #if 0 printf("-- alloc new surface %d x %d into tex %p\n", strb->surface->width, strb->surface->height, diff --git a/src/mesa/state_tracker/st_atom_pixeltransfer.c b/src/mesa/state_tracker/st_atom_pixeltransfer.c index 6be03376d01..378b30e57cc 100644 --- a/src/mesa/state_tracker/st_atom_pixeltransfer.c +++ b/src/mesa/state_tracker/st_atom_pixeltransfer.c @@ -122,8 +122,8 @@ load_color_map_texture(struct gl_context *ctx, struct pipe_resource *pt) uint i, j; transfer = pipe_get_transfer(st_context(ctx)->pipe, - pt, 0, 0, 0, PIPE_TRANSFER_WRITE, - 0, 0, texSize, texSize); + pt, 0, 0, PIPE_TRANSFER_WRITE, + 0, 0, texSize, texSize); dest = (uint *) pipe_transfer_map(pipe, transfer); /* Pack four 1D maps into a 2D texture: diff --git a/src/mesa/state_tracker/st_atom_sampler.c b/src/mesa/state_tracker/st_atom_sampler.c index f147d768084..b67068df373 100644 --- a/src/mesa/state_tracker/st_atom_sampler.c +++ b/src/mesa/state_tracker/st_atom_sampler.c @@ -121,6 +121,18 @@ static void xlate_border_color(const GLfloat *colorIn, GLenum baseFormat, GLfloat *colorOut) { switch (baseFormat) { + case GL_RED: + colorOut[0] = colorIn[0]; + colorOut[1] = 0.0F; + colorOut[2] = 0.0F; + colorOut[3] = 1.0F; + break; + case GL_RG: + colorOut[0] = colorIn[0]; + colorOut[1] = colorIn[1]; + colorOut[2] = 0.0F; + colorOut[3] = 1.0F; + break; case GL_RGB: colorOut[0] = colorIn[0]; colorOut[1] = colorIn[1]; diff --git a/src/mesa/state_tracker/st_atom_shader.c b/src/mesa/state_tracker/st_atom_shader.c index 05442ef91b5..c311d043931 100644 --- a/src/mesa/state_tracker/st_atom_shader.c +++ b/src/mesa/state_tracker/st_atom_shader.c @@ -50,99 +50,6 @@ #include "st_program.h" - -/** - * Translate fragment program if needed. - */ -static void -translate_fp(struct st_context *st, - struct st_fragment_program *stfp) -{ - if (!stfp->tgsi.tokens) { - assert(stfp->Base.Base.NumInstructions > 0); - - st_translate_fragment_program(st, stfp); - } -} - -/* - * Translate geometry program if needed. - */ -static void -translate_gp(struct st_context *st, - struct st_geometry_program *stgp) -{ - if (!stgp->tgsi.tokens) { - assert(stgp->Base.Base.NumInstructions > 1); - - st_translate_geometry_program(st, stgp); - } -} - -/** - * Find a translated vertex program that corresponds to stvp and - * has outputs matched to stfp's inputs. - * This performs vertex and fragment translation (to TGSI) when needed. - */ -static struct st_vp_varient * -find_translated_vp(struct st_context *st, - struct st_vertex_program *stvp ) -{ - struct st_vp_varient *vpv; - struct st_vp_varient_key key; - - /* Nothing in our key yet. This will change: - */ - memset(&key, 0, sizeof key); - - /* When this is true, we will add an extra input to the vertex - * shader translation (for edgeflags), an extra output with - * edgeflag semantics, and extend the vertex shader to pass through - * the input to the output. We'll need to use similar logic to set - * up the extra vertex_element input for edgeflags. - * _NEW_POLYGON, ST_NEW_EDGEFLAGS_DATA - */ - key.passthrough_edgeflags = (st->vertdata_edgeflags && ( - st->ctx->Polygon.FrontMode != GL_FILL || - st->ctx->Polygon.BackMode != GL_FILL)); - - - /* Do we need to throw away old translations after a change in the - * GL program string? - */ - if (stvp->serialNo != stvp->lastSerialNo) { - /* These may have changed if the program string changed. - */ - st_prepare_vertex_program( st, stvp ); - - /* We are now up-to-date: - */ - stvp->lastSerialNo = stvp->serialNo; - } - - /* See if we've got a translated vertex program whose outputs match - * the fragment program's inputs. - */ - for (vpv = stvp->varients; vpv; vpv = vpv->next) { - if (memcmp(&vpv->key, &key, sizeof key) == 0) { - break; - } - } - - /* No? Perform new translation here. */ - if (!vpv) { - vpv = st_translate_vertex_program(st, stvp, &key); - if (!vpv) - return NULL; - - vpv->next = stvp->varients; - stvp->varients = vpv; - } - - return vpv; -} - - /** * Return pointer to a pass-through fragment shader. * This shader is used when a texture is missing/incomplete. @@ -167,12 +74,16 @@ static void update_fp( struct st_context *st ) { struct st_fragment_program *stfp; + struct st_fp_variant_key key; assert(st->ctx->FragmentProgram._Current); stfp = st_fragment_program(st->ctx->FragmentProgram._Current); assert(stfp->Base.Base.Target == GL_FRAGMENT_PROGRAM_ARB); - translate_fp(st, stfp); + memset(&key, 0, sizeof(key)); + key.st = st; + + st->fp_variant = st_get_fp_variant(st, stfp, &key); st_reference_fragprog(st, &st->fp, stfp); @@ -182,7 +93,8 @@ update_fp( struct st_context *st ) cso_set_fragment_shader_handle(st->cso_context, fs); } else { - cso_set_fragment_shader_handle(st->cso_context, stfp->driver_shader); + cso_set_fragment_shader_handle(st->cso_context, + st->fp_variant->driver_shader); } } @@ -206,6 +118,7 @@ static void update_vp( struct st_context *st ) { struct st_vertex_program *stvp; + struct st_vp_variant_key key; /* find active shader and params -- Should be covered by * ST_NEW_VERTEX_PROGRAM @@ -214,12 +127,26 @@ update_vp( struct st_context *st ) stvp = st_vertex_program(st->ctx->VertexProgram._Current); assert(stvp->Base.Base.Target == GL_VERTEX_PROGRAM_ARB); - st->vp_varient = find_translated_vp(st, stvp); + memset(&key, 0, sizeof key); + key.st = st; /* variants are per-context */ + + /* When this is true, we will add an extra input to the vertex + * shader translation (for edgeflags), an extra output with + * edgeflag semantics, and extend the vertex shader to pass through + * the input to the output. We'll need to use similar logic to set + * up the extra vertex_element input for edgeflags. + * _NEW_POLYGON, ST_NEW_EDGEFLAGS_DATA + */ + key.passthrough_edgeflags = (st->vertdata_edgeflags && ( + st->ctx->Polygon.FrontMode != GL_FILL || + st->ctx->Polygon.BackMode != GL_FILL)); + + st->vp_variant = st_get_vp_variant(st, stvp, &key); st_reference_vertprog(st, &st->vp, stvp); cso_set_vertex_shader_handle(st->cso_context, - st->vp_varient->driver_shader); + st->vp_variant->driver_shader); st->vertex_result_to_slot = stvp->result_to_output; } @@ -231,14 +158,16 @@ const struct st_tracked_state st_update_vp = { _NEW_POLYGON, /* mesa */ ST_NEW_VERTEX_PROGRAM | ST_NEW_EDGEFLAGS_DATA /* st */ }, - update_vp /* update */ + update_vp /* update */ }; + + static void update_gp( struct st_context *st ) { - struct st_geometry_program *stgp; + struct st_gp_variant_key key; if (!st->ctx->GeometryProgram._Current) { cso_set_geometry_shader_handle(st->cso_context, NULL); @@ -248,18 +177,22 @@ update_gp( struct st_context *st ) stgp = st_geometry_program(st->ctx->GeometryProgram._Current); assert(stgp->Base.Base.Target == MESA_GEOMETRY_PROGRAM); - translate_gp(st, stgp); + memset(&key, 0, sizeof(key)); + key.st = st; + + st->gp_variant = st_get_gp_variant(st, stgp, &key); st_reference_geomprog(st, &st->gp, stgp); - cso_set_geometry_shader_handle(st->cso_context, stgp->driver_shader); + cso_set_geometry_shader_handle(st->cso_context, + st->gp_variant->driver_shader); } const struct st_tracked_state st_update_gp = { - "st_update_gp", /* name */ - { /* dirty */ - 0, /* mesa */ - ST_NEW_GEOMETRY_PROGRAM /* st */ + "st_update_gp", /* name */ + { /* dirty */ + 0, /* mesa */ + ST_NEW_GEOMETRY_PROGRAM /* st */ }, - update_gp /* update */ + update_gp /* update */ }; diff --git a/src/mesa/state_tracker/st_cb_accum.c b/src/mesa/state_tracker/st_cb_accum.c index 6c5caf42e35..a76ae92dc3d 100644 --- a/src/mesa/state_tracker/st_cb_accum.c +++ b/src/mesa/state_tracker/st_cb_accum.c @@ -138,10 +138,10 @@ accum_accum(struct st_context *st, GLfloat value, debug_printf("%s: fallback processing\n", __FUNCTION__); color_trans = pipe_get_transfer(st->pipe, - color_strb->texture, - 0, 0, 0, - PIPE_TRANSFER_READ, xpos, ypos, - width, height); + color_strb->texture, + 0, 0, + PIPE_TRANSFER_READ, xpos, ypos, + width, height); buf = (GLfloat *) malloc(width * height * 4 * sizeof(GLfloat)); @@ -187,9 +187,9 @@ accum_load(struct st_context *st, GLfloat value, debug_printf("%s: fallback processing\n", __FUNCTION__); color_trans = pipe_get_transfer(st->pipe, color_strb->texture, - 0, 0, 0, - PIPE_TRANSFER_READ, xpos, ypos, - width, height); + 0, 0, + PIPE_TRANSFER_READ, xpos, ypos, + width, height); buf = (GLfloat *) malloc(width * height * 4 * sizeof(GLfloat)); @@ -241,12 +241,12 @@ accum_return(struct gl_context *ctx, GLfloat value, usage = PIPE_TRANSFER_READ_WRITE; else usage = PIPE_TRANSFER_WRITE; - + color_trans = pipe_get_transfer(st_context(ctx)->pipe, - color_strb->texture, 0, 0, 0, - usage, - xpos, ypos, - width, height); + color_strb->texture, 0, 0, + usage, + xpos, ypos, + width, height); if (usage & PIPE_TRANSFER_READ) pipe_get_tile_rgba(pipe, color_trans, 0, 0, width, height, buf); diff --git a/src/mesa/state_tracker/st_cb_accum.h b/src/mesa/state_tracker/st_cb_accum.h index b8c9c350031..050a21483e4 100644 --- a/src/mesa/state_tracker/st_cb_accum.h +++ b/src/mesa/state_tracker/st_cb_accum.h @@ -30,7 +30,11 @@ #define ST_CB_ACCUM_H -#include "main/mtypes.h" +#include "main/mfeatures.h" + +struct dd_function_table; +struct gl_context; +struct gl_renderbuffer; #if FEATURE_accum diff --git a/src/mesa/state_tracker/st_cb_bitmap.c b/src/mesa/state_tracker/st_cb_bitmap.c index 3c0ee6c2883..516346c8c7a 100644 --- a/src/mesa/state_tracker/st_cb_bitmap.c +++ b/src/mesa/state_tracker/st_cb_bitmap.c @@ -185,48 +185,47 @@ find_free_bit(uint bitfield) /** * Combine basic bitmap fragment program with the user-defined program. + * \param st current context + * \param fpIn the incoming fragment program + * \param fpOut the new fragment program which does fragment culling + * \param bitmap_sampler sampler number for the bitmap texture */ -static struct st_fragment_program * -combined_bitmap_fragment_program(struct gl_context *ctx) +void +st_make_bitmap_fragment_program(struct st_context *st, + struct gl_fragment_program *fpIn, + struct gl_fragment_program **fpOut, + GLuint *bitmap_sampler) { - struct st_context *st = st_context(ctx); - struct st_fragment_program *stfp = st->fp; - - if (!stfp->bitmap_program) { - /* - * Generate new program which is the user-defined program prefixed - * with the bitmap sampler/kill instructions. - */ - struct st_fragment_program *bitmap_prog; - uint sampler; - - sampler = find_free_bit(st->fp->Base.Base.SamplersUsed); - bitmap_prog = make_bitmap_fragment_program(ctx, sampler); + struct st_fragment_program *bitmap_prog; + struct gl_program *newProg; + uint sampler; - stfp->bitmap_program = (struct st_fragment_program *) - _mesa_combine_programs(ctx, - &bitmap_prog->Base.Base, &stfp->Base.Base); - stfp->bitmap_program->bitmap_sampler = sampler; + /* + * Generate new program which is the user-defined program prefixed + * with the bitmap sampler/kill instructions. + */ + sampler = find_free_bit(fpIn->Base.SamplersUsed); + bitmap_prog = make_bitmap_fragment_program(st->ctx, sampler); - /* done with this after combining */ - st_reference_fragprog(st, &bitmap_prog, NULL); + newProg = _mesa_combine_programs(st->ctx, + &bitmap_prog->Base.Base, + &fpIn->Base); + /* done with this after combining */ + st_reference_fragprog(st, &bitmap_prog, NULL); #if 0 - { - struct gl_program *p = &stfp->bitmap_program->Base.Base; - printf("Combined bitmap program:\n"); - _mesa_print_program(p); - printf("InputsRead: 0x%x\n", p->InputsRead); - printf("OutputsWritten: 0x%x\n", p->OutputsWritten); - _mesa_print_parameter_list(p->Parameters); - } -#endif - - /* translate to TGSI tokens */ - st_translate_fragment_program(st, stfp->bitmap_program); + { + printf("Combined bitmap program:\n"); + _mesa_print_program(newProg); + printf("InputsRead: 0x%x\n", newProg->InputsRead); + printf("OutputsWritten: 0x%x\n", newProg->OutputsWritten); + _mesa_print_parameter_list(newProg->Parameters); } +#endif - return stfp->bitmap_program; + /* return results */ + *fpOut = (struct gl_fragment_program *) newProg; + *bitmap_sampler = sampler; } @@ -283,9 +282,9 @@ make_bitmap_texture(struct gl_context *ctx, GLsizei width, GLsizei height, return NULL; } - transfer = pipe_get_transfer(st->pipe, pt, 0, 0, 0, - PIPE_TRANSFER_WRITE, - 0, 0, width, height); + transfer = pipe_get_transfer(st->pipe, pt, 0, 0, + PIPE_TRANSFER_WRITE, + 0, 0, width, height); dest = pipe_transfer_map(pipe, transfer); @@ -349,7 +348,8 @@ setup_bitmap_vertex_data(struct st_context *st, bool normalized, if (!st->bitmap.vbuf) { st->bitmap.vbuf = pipe_buffer_create(pipe->screen, PIPE_BIND_VERTEX_BUFFER, - max_slots * sizeof(st->bitmap.vertices)); + max_slots * + sizeof(st->bitmap.vertices)); } /* Positions are in clip coords since we need to do clipping in case @@ -389,10 +389,11 @@ setup_bitmap_vertex_data(struct st_context *st, bool normalized, /* put vertex data into vbuf */ pipe_buffer_write_nooverlap(st->pipe, - st->bitmap.vbuf, - st->bitmap.vbuf_slot * sizeof st->bitmap.vertices, - sizeof st->bitmap.vertices, - st->bitmap.vertices); + st->bitmap.vbuf, + st->bitmap.vbuf_slot + * sizeof(st->bitmap.vertices), + sizeof st->bitmap.vertices, + st->bitmap.vertices); return st->bitmap.vbuf_slot++ * sizeof st->bitmap.vertices; } @@ -411,11 +412,16 @@ draw_bitmap_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z, struct st_context *st = st_context(ctx); struct pipe_context *pipe = st->pipe; struct cso_context *cso = st->cso_context; - struct st_fragment_program *stfp; + struct st_fp_variant *fpv; + struct st_fp_variant_key key; GLuint maxSize; GLuint offset; - stfp = combined_bitmap_fragment_program(ctx); + memset(&key, 0, sizeof(key)); + key.st = st; + key.bitmap = GL_TRUE; + + fpv = st_get_fp_variant(st, st->fp, &key); /* As an optimization, Mesa's fragment programs will sometimes get the * primary color from a statevar/constant rather than a varying variable. @@ -428,7 +434,7 @@ draw_bitmap_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z, GLfloat colorSave[4]; COPY_4V(colorSave, ctx->Current.Attrib[VERT_ATTRIB_COLOR0]); COPY_4V(ctx->Current.Attrib[VERT_ATTRIB_COLOR0], color); - st_upload_constants(st, stfp->Base.Base.Parameters, PIPE_SHADER_FRAGMENT); + st_upload_constants(st, fpv->parameters, PIPE_SHADER_FRAGMENT); COPY_4V(ctx->Current.Attrib[VERT_ATTRIB_COLOR0], colorSave); } @@ -437,7 +443,8 @@ draw_bitmap_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z, /* XXX if the bitmap is larger than the max texture size, break * it up into chunks. */ - maxSize = 1 << (pipe->screen->get_param(pipe->screen, PIPE_CAP_MAX_TEXTURE_2D_LEVELS) - 1); + maxSize = 1 << (pipe->screen->get_param(pipe->screen, + PIPE_CAP_MAX_TEXTURE_2D_LEVELS) - 1); assert(width <= (GLsizei)maxSize); assert(height <= (GLsizei)maxSize); @@ -454,7 +461,7 @@ draw_bitmap_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z, cso_set_rasterizer(cso, &st->bitmap.rasterizer); /* fragment shader state: TEX lookup program */ - cso_set_fragment_shader_handle(cso, stfp->driver_shader); + cso_set_fragment_shader_handle(cso, fpv->driver_shader); /* vertex shader state: position + texcoord pass-through */ cso_set_vertex_shader_handle(cso, st->bitmap.vs); @@ -462,21 +469,22 @@ draw_bitmap_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z, /* user samplers, plus our bitmap sampler */ { struct pipe_sampler_state *samplers[PIPE_MAX_SAMPLERS]; - uint num = MAX2(stfp->bitmap_sampler + 1, st->state.num_samplers); + uint num = MAX2(fpv->bitmap_sampler + 1, st->state.num_samplers); uint i; for (i = 0; i < st->state.num_samplers; i++) { samplers[i] = &st->state.samplers[i]; } - samplers[stfp->bitmap_sampler] = &st->bitmap.samplers[sv->texture->target != PIPE_TEXTURE_RECT]; + samplers[fpv->bitmap_sampler] = + &st->bitmap.samplers[sv->texture->target != PIPE_TEXTURE_RECT]; cso_set_samplers(cso, num, (const struct pipe_sampler_state **) samplers); } /* user textures, plus the bitmap texture */ { struct pipe_sampler_view *sampler_views[PIPE_MAX_SAMPLERS]; - uint num = MAX2(stfp->bitmap_sampler + 1, st->state.num_textures); + uint num = MAX2(fpv->bitmap_sampler + 1, st->state.num_textures); memcpy(sampler_views, st->state.sampler_views, sizeof(sampler_views)); - sampler_views[stfp->bitmap_sampler] = sv; + sampler_views[fpv->bitmap_sampler] = sv; cso_set_fragment_sampler_views(cso, num, sampler_views); } @@ -504,7 +512,9 @@ draw_bitmap_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z, z = z * 2.0 - 1.0; /* draw textured quad */ - offset = setup_bitmap_vertex_data(st, sv->texture->target != PIPE_TEXTURE_RECT, x, y, width, height, z, color); + offset = setup_bitmap_vertex_data(st, + sv->texture->target != PIPE_TEXTURE_RECT, + x, y, width, height, z, color); util_draw_vertex_buffer(pipe, st->bitmap.vbuf, offset, PIPE_PRIM_TRIANGLE_FAN, @@ -573,6 +583,9 @@ print_cache(const struct bitmap_cache *cache) } +/** + * Create gallium pipe_transfer object for the bitmap cache. + */ static void create_cache_trans(struct st_context *st) { @@ -585,10 +598,10 @@ create_cache_trans(struct st_context *st) /* Map the texture transfer. * Subsequent glBitmap calls will write into the texture image. */ - cache->trans = pipe_get_transfer(st->pipe, cache->texture, 0, 0, 0, - PIPE_TRANSFER_WRITE, 0, 0, - BITMAP_CACHE_WIDTH, - BITMAP_CACHE_HEIGHT); + cache->trans = pipe_get_transfer(st->pipe, cache->texture, 0, 0, + PIPE_TRANSFER_WRITE, 0, 0, + BITMAP_CACHE_WIDTH, + BITMAP_CACHE_HEIGHT); cache->buffer = pipe_transfer_map(pipe, cache->trans); /* init image to all 0xff */ @@ -651,7 +664,9 @@ st_flush_bitmap_cache(struct st_context *st) } } -/* Flush bitmap cache and release vertex buffer. + +/** + * Flush bitmap cache and release vertex buffer. */ void st_flush_bitmap( struct st_context *st ) @@ -737,7 +752,8 @@ accum_bitmap(struct st_context *st, * Called via ctx->Driver.Bitmap() */ static void -st_Bitmap(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, +st_Bitmap(struct gl_context *ctx, GLint x, GLint y, + GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, const GLubyte *bitmap ) { struct st_context *st = st_context(ctx); @@ -764,7 +780,8 @@ st_Bitmap(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei heigh pt = make_bitmap_texture(ctx, width, height, unpack, bitmap); if (pt) { - struct pipe_sampler_view *sv = st_create_texture_sampler_view(st->pipe, pt); + struct pipe_sampler_view *sv = + st_create_texture_sampler_view(st->pipe, pt); assert(pt->target == PIPE_TEXTURE_2D || pt->target == PIPE_TEXTURE_RECT); @@ -814,15 +831,18 @@ st_init_bitmap(struct st_context *st) st->bitmap.rasterizer.gl_rasterization_rules = 1; /* find a usable texture format */ - if (screen->is_format_supported(screen, PIPE_FORMAT_I8_UNORM, PIPE_TEXTURE_2D, 0, + if (screen->is_format_supported(screen, PIPE_FORMAT_I8_UNORM, + PIPE_TEXTURE_2D, 0, PIPE_BIND_SAMPLER_VIEW, 0)) { st->bitmap.tex_format = PIPE_FORMAT_I8_UNORM; } - else if (screen->is_format_supported(screen, PIPE_FORMAT_A8_UNORM, PIPE_TEXTURE_2D, 0, + else if (screen->is_format_supported(screen, PIPE_FORMAT_A8_UNORM, + PIPE_TEXTURE_2D, 0, PIPE_BIND_SAMPLER_VIEW, 0)) { st->bitmap.tex_format = PIPE_FORMAT_A8_UNORM; } - else if (screen->is_format_supported(screen, PIPE_FORMAT_L8_UNORM, PIPE_TEXTURE_2D, 0, + else if (screen->is_format_supported(screen, PIPE_FORMAT_L8_UNORM, + PIPE_TEXTURE_2D, 0, PIPE_BIND_SAMPLER_VIEW, 0)) { st->bitmap.tex_format = PIPE_FORMAT_L8_UNORM; } @@ -845,8 +865,6 @@ st_destroy_bitmap(struct st_context *st) struct pipe_context *pipe = st->pipe; struct bitmap_cache *cache = st->bitmap.cache; - - if (st->bitmap.vs) { cso_delete_vertex_shader(st->cso_context, st->bitmap.vs); st->bitmap.vs = NULL; diff --git a/src/mesa/state_tracker/st_cb_bitmap.h b/src/mesa/state_tracker/st_cb_bitmap.h index d04b2b67795..2bd63b9b741 100644 --- a/src/mesa/state_tracker/st_cb_bitmap.h +++ b/src/mesa/state_tracker/st_cb_bitmap.h @@ -34,6 +34,8 @@ struct dd_function_table; struct st_context; +struct gl_fragment_program; +struct st_fragment_program; #if FEATURE_drawpix @@ -47,6 +49,12 @@ extern void st_destroy_bitmap(struct st_context *st); extern void +st_make_bitmap_fragment_program(struct st_context *st, + struct gl_fragment_program *fpIn, + struct gl_fragment_program **fpOut, + GLuint *bitmap_sampler); + +extern void st_flush_bitmap_cache(struct st_context *st); /* Flush bitmap cache and release vertex buffer. Needed at end of diff --git a/src/mesa/state_tracker/st_cb_blit.c b/src/mesa/state_tracker/st_cb_blit.c index af41835326a..06cee520b37 100644 --- a/src/mesa/state_tracker/st_cb_blit.c +++ b/src/mesa/state_tracker/st_cb_blit.c @@ -115,17 +115,14 @@ st_BlitFramebuffer(struct gl_context *ctx, st_texture_object(srcAtt->Texture); struct st_renderbuffer *dstRb = st_renderbuffer(drawFB->_ColorDrawBuffers[0]); - struct pipe_subresource srcSub; struct pipe_surface *dstSurf = dstRb->surface; if (!srcObj->pt) return; - srcSub.face = srcAtt->CubeMapFace; - srcSub.level = srcAtt->TextureLevel; - - util_blit_pixels(st->blit, srcObj->pt, srcSub, - srcX0, srcY0, srcX1, srcY1, srcAtt->Zoffset, + util_blit_pixels(st->blit, srcObj->pt, srcAtt->TextureLevel, + srcX0, srcY0, srcX1, srcY1, + srcAtt->Zoffset + srcAtt->CubeMapFace, dstSurf, dstX0, dstY0, dstX1, dstY1, 0.0, pFilter); } @@ -136,14 +133,11 @@ st_BlitFramebuffer(struct gl_context *ctx, st_renderbuffer(drawFB->_ColorDrawBuffers[0]); struct pipe_surface *srcSurf = srcRb->surface; struct pipe_surface *dstSurf = dstRb->surface; - struct pipe_subresource srcSub; - - srcSub.face = srcSurf->face; - srcSub.level = srcSurf->level; util_blit_pixels(st->blit, - srcRb->texture, srcSub, srcX0, srcY0, srcX1, srcY1, - srcSurf->zslice, + srcRb->texture, srcSurf->u.tex.level, + srcX0, srcY0, srcX1, srcY1, + srcSurf->u.tex.first_layer, dstSurf, dstX0, dstY0, dstX1, dstY1, 0.0, pFilter); } @@ -176,11 +170,11 @@ st_BlitFramebuffer(struct gl_context *ctx, /* Blitting depth and stencil values between combined * depth/stencil buffers. This is the ideal case for such buffers. */ - util_blit_pixels(st->blit, srcDepthRb->texture, - u_subresource(srcDepthRb->surface->face, - srcDepthRb->surface->level), + util_blit_pixels(st->blit, + srcDepthRb->texture, + srcDepthRb->surface->u.tex.level, srcX0, srcY0, srcX1, srcY1, - srcDepthRb->surface->zslice, + srcDepthRb->surface->u.tex.first_layer, dstDepthSurf, dstX0, dstY0, dstX1, dstY1, 0.0, pFilter); } @@ -189,10 +183,9 @@ st_BlitFramebuffer(struct gl_context *ctx, if (mask & GL_DEPTH_BUFFER_BIT) { util_blit_pixels(st->blit, srcDepthRb->texture, - u_subresource(srcDepthRb->surface->face, - srcDepthRb->surface->level), + srcDepthRb->surface->u.tex.level, srcX0, srcY0, srcX1, srcY1, - srcDepthRb->surface->zslice, + srcDepthRb->surface->u.tex.first_layer, dstDepthSurf, dstX0, dstY0, dstX1, dstY1, 0.0, pFilter); } diff --git a/src/mesa/state_tracker/st_cb_bufferobjects.c b/src/mesa/state_tracker/st_cb_bufferobjects.c index 27540c36ce7..8b60f9040d0 100644 --- a/src/mesa/state_tracker/st_cb_bufferobjects.c +++ b/src/mesa/state_tracker/st_cb_bufferobjects.c @@ -211,6 +211,13 @@ st_bufferobj_data(struct gl_context *ctx, /** + * Dummy data whose's pointer is used for zero size buffers or ranges. + */ +static long st_bufferobj_zero_length = 0; + + + +/** * Called via glMapBufferARB(). */ static void * @@ -233,10 +240,16 @@ st_bufferobj_map(struct gl_context *ctx, GLenum target, GLenum access, break; } - obj->Pointer = pipe_buffer_map(st_context(ctx)->pipe, - st_obj->buffer, - flags, - &st_obj->transfer); + /* Handle zero-size buffers here rather than in drivers */ + if (obj->Size == 0) { + obj->Pointer = &st_bufferobj_zero_length; + } + else { + obj->Pointer = pipe_buffer_map(st_context(ctx)->pipe, + st_obj->buffer, + flags, + &st_obj->transfer); + } if (obj->Pointer) { obj->Offset = 0; @@ -247,13 +260,6 @@ st_bufferobj_map(struct gl_context *ctx, GLenum target, GLenum access, /** - * Dummy data whose's pointer is used for zero length ranges. - */ -static long -st_bufferobj_zero_length_range = 0; - - -/** * Called via glMapBufferRange(). */ static void * @@ -273,6 +279,12 @@ st_bufferobj_map_range(struct gl_context *ctx, GLenum target, if (access & GL_MAP_FLUSH_EXPLICIT_BIT) flags |= PIPE_TRANSFER_FLUSH_EXPLICIT; + + if (access & GL_MAP_INVALIDATE_RANGE_BIT) + flags |= PIPE_TRANSFER_DISCARD; + + if (access & GL_MAP_INVALIDATE_BUFFER_BIT) + flags |= PIPE_TRANSFER_DISCARD; if (access & GL_MAP_UNSYNCHRONIZED_BIT) flags |= PIPE_TRANSFER_UNSYNCHRONIZED; @@ -293,7 +305,7 @@ st_bufferobj_map_range(struct gl_context *ctx, GLenum target, * length range from the pipe driver. */ if (!length) { - obj->Pointer = &st_bufferobj_zero_length_range; + obj->Pointer = &st_bufferobj_zero_length; } else { obj->Pointer = pipe_buffer_map_range(pipe, diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c index 122d8f07654..1fc47688e4a 100644 --- a/src/mesa/state_tracker/st_cb_drawpixels.c +++ b/src/mesa/state_tracker/st_cb_drawpixels.c @@ -94,88 +94,61 @@ is_passthrough_program(const struct gl_fragment_program *prog) /** * Make fragment shader for glDraw/CopyPixels. This shader is made * by combining the pixel transfer shader with the user-defined shader. - * \return pointer to Gallium driver fragment shader + * \param fpIn the current/incoming fragment program + * \param fpOut returns the combined fragment program */ -static void * -combined_drawpix_fragment_program(struct gl_context *ctx) +void +st_make_drawpix_fragment_program(struct st_context *st, + struct gl_fragment_program *fpIn, + struct gl_fragment_program **fpOut) { - struct st_context *st = st_context(ctx); - struct st_fragment_program *stfp; + struct gl_program *newProg; - if (st->pixel_xfer.program->serialNo == st->pixel_xfer.xfer_prog_sn - && st->fp->serialNo == st->pixel_xfer.user_prog_sn) { - /* the pixel tranfer program has not changed and the user-defined - * program has not changed, so re-use the combined program. - */ - stfp = st->pixel_xfer.combined_prog; + if (is_passthrough_program(fpIn)) { + newProg = (struct gl_program *) _mesa_clone_fragment_program(st->ctx, + &st->pixel_xfer.program->Base); } else { - /* Concatenate the pixel transfer program with the current user- - * defined program. - */ - if (is_passthrough_program(&st->fp->Base)) { - stfp = (struct st_fragment_program *) - _mesa_clone_fragment_program(ctx, &st->pixel_xfer.program->Base); - } - else { #if 0 - printf("Base program:\n"); - _mesa_print_program(&st->fp->Base.Base); - printf("DrawPix program:\n"); - _mesa_print_program(&st->pixel_xfer.program->Base.Base); + /* debug */ + printf("Base program:\n"); + _mesa_print_program(&fpIn->Base); + printf("DrawPix program:\n"); + _mesa_print_program(&st->pixel_xfer.program->Base.Base); #endif - stfp = (struct st_fragment_program *) - _mesa_combine_programs(ctx, - &st->pixel_xfer.program->Base.Base, - &st->fp->Base.Base); - } + newProg = _mesa_combine_programs(st->ctx, + &st->pixel_xfer.program->Base.Base, + &fpIn->Base); + } #if 0 - { - struct gl_program *p = &stfp->Base.Base; - printf("Combined DrawPixels program:\n"); - _mesa_print_program(p); - printf("InputsRead: 0x%x\n", p->InputsRead); - printf("OutputsWritten: 0x%x\n", p->OutputsWritten); - _mesa_print_parameter_list(p->Parameters); - } + /* debug */ + printf("Combined DrawPixels program:\n"); + _mesa_print_program(newProg); + printf("InputsRead: 0x%x\n", newProg->InputsRead); + printf("OutputsWritten: 0x%x\n", newProg->OutputsWritten); + _mesa_print_parameter_list(newProg->Parameters); #endif - /* translate to TGSI tokens */ - st_translate_fragment_program(st, stfp); - - /* save new program, update serial numbers */ - st->pixel_xfer.xfer_prog_sn = st->pixel_xfer.program->serialNo; - st->pixel_xfer.user_prog_sn = st->fp->serialNo; - st->pixel_xfer.combined_prog_sn = stfp->serialNo; - /* can't reference new program directly, already have a reference on it */ - st_reference_fragprog(st, &st->pixel_xfer.combined_prog, NULL); - st->pixel_xfer.combined_prog = stfp; - } - - /* Ideally we'd have updated the pipe constants during the normal - * st/atom mechanism. But we can't since this is specific to glDrawPixels. - */ - st_upload_constants(st, stfp->Base.Base.Parameters, PIPE_SHADER_FRAGMENT); - - return stfp->driver_shader; + *fpOut = (struct gl_fragment_program *) newProg; } /** - * Create fragment shader that does a TEX() instruction to get a Z and/or + * Create fragment program that does a TEX() instruction to get a Z and/or * stencil value value, then writes to FRAG_RESULT_DEPTH/FRAG_RESULT_STENCIL. * Used for glDrawPixels(GL_DEPTH_COMPONENT / GL_STENCIL_INDEX). * Pass fragment color through as-is. - * \return pointer to the Gallium driver fragment shader + * \return pointer to the gl_fragment program */ -static void * -make_fragment_shader_z_stencil(struct st_context *st, GLboolean write_depth, - GLboolean write_stencil) +struct gl_fragment_program * +st_make_drawpix_z_stencil_program(struct st_context *st, + GLboolean write_depth, + GLboolean write_stencil) { struct gl_context *ctx = st->ctx; struct gl_program *p; - struct st_fragment_program *stp; + struct gl_fragment_program *fp; GLuint ic = 0; const GLuint shaderIndex = write_depth * 2 + write_stencil; @@ -183,7 +156,7 @@ make_fragment_shader_z_stencil(struct st_context *st, GLboolean write_depth, if (st->drawpix.shaders[shaderIndex]) { /* already have the proper shader */ - return st->drawpix.shaders[shaderIndex]->driver_shader; + return st->drawpix.shaders[shaderIndex]; } /* @@ -245,18 +218,15 @@ make_fragment_shader_z_stencil(struct st_context *st, GLboolean write_depth, if (write_stencil) p->SamplersUsed |= 1 << 1; - stp = st_fragment_program((struct gl_fragment_program *) p); + fp = (struct gl_fragment_program *) p; /* save the new shader */ - st->drawpix.shaders[shaderIndex] = stp; + st->drawpix.shaders[shaderIndex] = fp; - st_translate_fragment_program(st, stp); - - return stp->driver_shader; + return fp; } - /** * Create a simple vertex shader that just passes through the * vertex position and texcoord (and optionally, color). @@ -427,9 +397,9 @@ make_texture(struct st_context *st, /* we'll do pixel transfer in a fragment shader */ ctx->_ImageTransferState = 0x0; - transfer = pipe_get_transfer(st->pipe, pt, 0, 0, 0, - PIPE_TRANSFER_WRITE, 0, 0, - width, height); + transfer = pipe_get_transfer(st->pipe, pt, 0, 0, + PIPE_TRANSFER_WRITE, 0, 0, + width, height); /* map texture transfer */ dest = pipe_transfer_map(pipe, transfer); @@ -591,7 +561,6 @@ draw_textured_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z, assert(width <= maxSize); assert(height <= maxSize); - cso_save_depth_stencil_alpha(cso); cso_save_rasterizer(cso); cso_save_viewport(cso); cso_save_samplers(cso); @@ -599,6 +568,10 @@ draw_textured_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z, cso_save_fragment_shader(cso); cso_save_vertex_shader(cso); cso_save_vertex_elements(cso); + if (write_stencil) { + cso_save_depth_stencil_alpha(cso); + cso_save_blend(cso); + } /* rasterizer state: just scissor */ { @@ -609,22 +582,30 @@ draw_textured_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z, cso_set_rasterizer(cso, &rasterizer); } - if (write_depth || write_stencil) - { + if (write_stencil) { + /* Stencil writing bypasses the normal fragment pipeline to + * disable color writing and set stencil test to always pass. + */ struct pipe_depth_stencil_alpha_state dsa; + struct pipe_blend_state blend; + + /* depth/stencil */ memset(&dsa, 0, sizeof(dsa)); + dsa.stencil[0].enabled = 1; + dsa.stencil[0].func = PIPE_FUNC_ALWAYS; + dsa.stencil[0].writemask = ctx->Stencil.WriteMask[0] & 0xff; + dsa.stencil[0].zpass_op = PIPE_STENCIL_OP_REPLACE; if (write_depth) { - dsa.depth.enabled = 1; - dsa.depth.func = PIPE_FUNC_ALWAYS; - dsa.depth.writemask = 1; - } - if (write_stencil) { - dsa.stencil[0].enabled = 1; - dsa.stencil[0].func = PIPE_FUNC_ALWAYS; - dsa.stencil[0].writemask = 0xff; - dsa.stencil[0].zpass_op = PIPE_STENCIL_OP_REPLACE; + /* writing depth+stencil: depth test always passes */ + dsa.depth.enabled = 1; + dsa.depth.writemask = ctx->Depth.Mask; + dsa.depth.func = PIPE_FUNC_ALWAYS; } cso_set_depth_stencil_alpha(cso, &dsa); + + /* blend (colormask) */ + memset(&blend, 0, sizeof(blend)); + cso_set_blend(cso, &blend); } /* fragment shader state: TEX lookup program */ @@ -696,7 +677,6 @@ draw_textured_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z, normalized ? ((GLfloat) height / sv[0]->texture->height0) : (GLfloat)height); /* restore state */ - cso_restore_depth_stencil_alpha(cso); cso_restore_rasterizer(cso); cso_restore_viewport(cso); cso_restore_samplers(cso); @@ -704,6 +684,10 @@ draw_textured_quad(struct gl_context *ctx, GLint x, GLint y, GLfloat z, cso_restore_fragment_shader(cso); cso_restore_vertex_shader(cso); cso_restore_vertex_elements(cso); + if (write_stencil) { + cso_restore_depth_stencil_alpha(cso); + cso_restore_blend(cso); + } } @@ -749,9 +733,9 @@ draw_stencil_pixels(struct gl_context *ctx, GLint x, GLint y, else usage = PIPE_TRANSFER_WRITE; - pt = pipe_get_transfer(st_context(ctx)->pipe, strb->texture, 0, 0, 0, - usage, x, y, - width, height); + pt = pipe_get_transfer(st_context(ctx)->pipe, strb->texture, 0, 0, + usage, x, y, + width, height); stmap = pipe_transfer_map(pipe, pt); @@ -859,6 +843,61 @@ draw_stencil_pixels(struct gl_context *ctx, GLint x, GLint y, /** + * Get fragment program variant for a glDrawPixels or glCopyPixels + * command for RGBA data. + */ +static struct st_fp_variant * +get_color_fp_variant(struct st_context *st) +{ + struct gl_context *ctx = st->ctx; + struct st_fp_variant_key key; + struct st_fp_variant *fpv; + + memset(&key, 0, sizeof(key)); + + key.st = st; + key.drawpixels = 1; + key.scaleAndBias = (ctx->Pixel.RedBias != 0.0 || + ctx->Pixel.RedScale != 1.0 || + ctx->Pixel.GreenBias != 0.0 || + ctx->Pixel.GreenScale != 1.0 || + ctx->Pixel.BlueBias != 0.0 || + ctx->Pixel.BlueScale != 1.0 || + ctx->Pixel.AlphaBias != 0.0 || + ctx->Pixel.AlphaScale != 1.0); + key.pixelMaps = ctx->Pixel.MapColorFlag; + + fpv = st_get_fp_variant(st, st->fp, &key); + + return fpv; +} + + +/** + * Get fragment program variant for a glDrawPixels or glCopyPixels + * command for depth/stencil data. + */ +static struct st_fp_variant * +get_depth_stencil_fp_variant(struct st_context *st, GLboolean write_depth, + GLboolean write_stencil) +{ + struct st_fp_variant_key key; + struct st_fp_variant *fpv; + + memset(&key, 0, sizeof(key)); + + key.st = st; + key.drawpixels = 1; + key.drawpixels_z = write_depth; + key.drawpixels_stencil = write_stencil; + + fpv = st_get_fp_variant(st, st->fp, &key); + + return fpv; +} + + +/** * Called via ctx->Driver.DrawPixels() */ static void @@ -875,6 +914,7 @@ st_DrawPixels(struct gl_context *ctx, GLint x, GLint y, struct pipe_sampler_view *sv[2]; int num_sampler_view = 1; enum pipe_format stencil_format = PIPE_FORMAT_NONE; + struct st_fp_variant *fpv; if (format == GL_DEPTH_STENCIL) write_stencil = write_depth = GL_TRUE; @@ -907,14 +947,25 @@ st_DrawPixels(struct gl_context *ctx, GLint x, GLint y, st_validate_state(st); + /* + * Get vertex/fragment shaders + */ if (write_depth || write_stencil) { - driver_fp = make_fragment_shader_z_stencil(st, write_depth, write_stencil); + fpv = get_depth_stencil_fp_variant(st, write_depth, write_stencil); + + driver_fp = fpv->driver_shader; + driver_vp = make_passthrough_vertex_shader(st, GL_TRUE); + color = ctx->Current.RasterColor; } else { - driver_fp = combined_drawpix_fragment_program(ctx); + fpv = get_color_fp_variant(st); + + driver_fp = fpv->driver_shader; + driver_vp = make_passthrough_vertex_shader(st, GL_FALSE); + color = NULL; if (st->pixel_xfer.pixelmap_enabled) { sv[1] = st->pixel_xfer.pixelmap_sampler_view; @@ -922,6 +973,9 @@ st_DrawPixels(struct gl_context *ctx, GLint x, GLint y, } } + /* update fragment program constants */ + st_upload_constants(st, fpv->parameters, PIPE_SHADER_FRAGMENT); + /* draw with textured quad */ { struct pipe_resource *pt @@ -994,20 +1048,32 @@ copy_stencil_pixels(struct gl_context *ctx, GLint srcx, GLint srcy, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, &ctx->DefaultPacking, buffer); + if (0) { + /* debug code: dump stencil values */ + GLint row, col; + for (row = 0; row < height; row++) { + printf("%3d: ", row); + for (col = 0; col < width; col++) { + printf("%02x ", buffer[col + row * width]); + } + printf("\n"); + } + } + if (util_format_get_component_bits(rbDraw->format, UTIL_FORMAT_COLORSPACE_ZS, 0) != 0) usage = PIPE_TRANSFER_READ_WRITE; else usage = PIPE_TRANSFER_WRITE; - + if (st_fb_orientation(ctx->DrawBuffer) == Y_0_TOP) { dsty = rbDraw->Base.Height - dsty - height; } ptDraw = pipe_get_transfer(st_context(ctx)->pipe, - rbDraw->texture, 0, 0, 0, - usage, dstx, dsty, - width, height); + rbDraw->texture, 0, 0, + usage, dstx, dsty, + width, height); assert(util_format_get_blockwidth(ptDraw->resource->format) == 1); assert(util_format_get_blockheight(ptDraw->resource->format) == 1); @@ -1090,6 +1156,7 @@ st_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy, GLint readX, readY, readW, readH; GLuint sample_count; struct gl_pixelstore_attrib pack = ctx->DefaultPacking; + struct st_fp_variant *fpv; st_validate_state(st); @@ -1099,11 +1166,18 @@ st_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy, return; } + /* + * Get vertex/fragment shaders + */ if (type == GL_COLOR) { rbRead = st_get_color_read_renderbuffer(ctx); color = NULL; - driver_fp = combined_drawpix_fragment_program(ctx); + + fpv = get_color_fp_variant(st); + driver_fp = fpv->driver_shader; + driver_vp = make_passthrough_vertex_shader(st, GL_FALSE); + if (st->pixel_xfer.pixelmap_enabled) { sv[1] = st->pixel_xfer.pixelmap_sampler_view; num_sampler_view++; @@ -1113,10 +1187,17 @@ st_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy, assert(type == GL_DEPTH); rbRead = st_renderbuffer(ctx->ReadBuffer->_DepthBuffer); color = ctx->Current.Attrib[VERT_ATTRIB_COLOR0]; - driver_fp = make_fragment_shader_z_stencil(st, GL_TRUE, GL_FALSE); + + fpv = get_depth_stencil_fp_variant(st, GL_TRUE, GL_FALSE); + driver_fp = fpv->driver_shader; + driver_vp = make_passthrough_vertex_shader(st, GL_TRUE); } + /* update fragment program constants */ + st_upload_constants(st, fpv->parameters, PIPE_SHADER_FRAGMENT); + + if (rbRead->Base.Wrapped) rbRead = st_renderbuffer(rbRead->Base.Wrapped); @@ -1183,27 +1264,24 @@ st_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy, /* Make temporary texture which is a copy of the src region. */ if (srcFormat == texFormat) { - struct pipe_subresource srcsub, dstsub; - srcsub.face = 0; - srcsub.level = 0; - dstsub.face = 0; - dstsub.level = 0; - /* copy source framebuffer surface into mipmap/texture */ + struct pipe_box src_box; + u_box_2d(readX, readY, readW, readH, &src_box); + /* copy source framebuffer surface into mipmap/texture */ pipe->resource_copy_region(pipe, pt, /* dest tex */ - dstsub, + 0, pack.SkipPixels, pack.SkipRows, 0, /* dest pos */ rbRead->texture, /* src tex */ - srcsub, - readX, readY, 0, readW, readH); /* src region */ + 0, + &src_box); } else { /* CPU-based fallback/conversion */ struct pipe_transfer *ptRead = - pipe_get_transfer(st->pipe, rbRead->texture, 0, 0, 0, - PIPE_TRANSFER_READ, - readX, readY, readW, readH); + pipe_get_transfer(st->pipe, rbRead->texture, 0, 0, + PIPE_TRANSFER_READ, + readX, readY, readW, readH); struct pipe_transfer *ptTex; enum pipe_transfer_usage transfer_usage; @@ -1215,8 +1293,8 @@ st_CopyPixels(struct gl_context *ctx, GLint srcx, GLint srcy, else transfer_usage = PIPE_TRANSFER_WRITE; - ptTex = pipe_get_transfer(st->pipe, pt, 0, 0, 0, transfer_usage, - 0, 0, width, height); + ptTex = pipe_get_transfer(st->pipe, pt, 0, 0, transfer_usage, + 0, 0, width, height); /* copy image from ptRead surface to ptTex surface */ if (type == GL_COLOR) { @@ -1271,7 +1349,7 @@ st_destroy_drawpix(struct st_context *st) for (i = 0; i < Elements(st->drawpix.shaders); i++) { if (st->drawpix.shaders[i]) - st_reference_fragprog(st, &st->drawpix.shaders[i], NULL); + _mesa_reference_fragprog(st->ctx, &st->drawpix.shaders[i], NULL); } st_reference_fragprog(st, &st->pixel_xfer.combined_prog, NULL); diff --git a/src/mesa/state_tracker/st_cb_drawpixels.h b/src/mesa/state_tracker/st_cb_drawpixels.h index 575f169e08e..8f73e626240 100644 --- a/src/mesa/state_tracker/st_cb_drawpixels.h +++ b/src/mesa/state_tracker/st_cb_drawpixels.h @@ -42,6 +42,16 @@ extern void st_init_drawpixels_functions(struct dd_function_table *functions); extern void st_destroy_drawpix(struct st_context *st); +extern void +st_make_drawpix_fragment_program(struct st_context *st, + struct gl_fragment_program *fpIn, + struct gl_fragment_program **fpOut); + +extern struct gl_fragment_program * +st_make_drawpix_z_stencil_program(struct st_context *st, + GLboolean write_depth, + GLboolean write_stencil); + #else static INLINE void diff --git a/src/mesa/state_tracker/st_cb_eglimage.c b/src/mesa/state_tracker/st_cb_eglimage.c index b39a624a612..c4b84de790c 100644 --- a/src/mesa/state_tracker/st_cb_eglimage.c +++ b/src/mesa/state_tracker/st_cb_eglimage.c @@ -106,6 +106,7 @@ st_bind_surface(struct gl_context *ctx, GLenum target, struct st_texture_object *stObj; struct st_texture_image *stImage; GLenum internalFormat; + gl_format texFormat; /* map pipe format to base format */ if (util_format_get_component_bits(ps->format, UTIL_FORMAT_COLORSPACE_RGB, 3) > 0) @@ -122,10 +123,11 @@ st_bind_surface(struct gl_context *ctx, GLenum target, stObj->surface_based = GL_TRUE; } + texFormat = st_pipe_format_to_mesa_format(ps->format); + _mesa_init_teximage_fields(ctx, target, texImage, - ps->width, ps->height, 1, 0, internalFormat); - texImage->TexFormat = st_pipe_format_to_mesa_format(ps->format); - _mesa_set_fetch_functions(texImage, 2); + ps->width, ps->height, 1, 0, internalFormat, + texFormat); /* FIXME create a non-default sampler view from the pipe_surface? */ pipe_resource_reference(&stObj->pt, ps->texture); diff --git a/src/mesa/state_tracker/st_cb_fbo.c b/src/mesa/state_tracker/st_cb_fbo.c index 9425f07aee6..cd718a31a14 100644 --- a/src/mesa/state_tracker/st_cb_fbo.c +++ b/src/mesa/state_tracker/st_cb_fbo.c @@ -52,6 +52,7 @@ #include "util/u_format.h" #include "util/u_inlines.h" +#include "util/u_surface.h" /** @@ -65,9 +66,11 @@ st_renderbuffer_alloc_storage(struct gl_context * ctx, struct gl_renderbuffer *r GLuint width, GLuint height) { struct st_context *st = st_context(ctx); + struct pipe_context *pipe = st->pipe; struct pipe_screen *screen = st->pipe->screen; struct st_renderbuffer *strb = st_renderbuffer(rb); enum pipe_format format; + struct pipe_surface surf_tmpl; if (strb->format != PIPE_FORMAT_NONE) format = strb->format; @@ -113,6 +116,7 @@ st_renderbuffer_alloc_storage(struct gl_context * ctx, struct gl_renderbuffer *r template.width0 = width; template.height0 = height; template.depth0 = 1; + template.array_size = 1; template.last_level = 0; template.nr_samples = rb->NumSamples; if (util_format_is_depth_or_stencil(format)) { @@ -120,7 +124,7 @@ st_renderbuffer_alloc_storage(struct gl_context * ctx, struct gl_renderbuffer *r } else { template.bind = (PIPE_BIND_DISPLAY_TARGET | - PIPE_BIND_RENDER_TARGET); + PIPE_BIND_RENDER_TARGET); } strb->texture = screen->resource_create(screen, &template); @@ -128,10 +132,11 @@ st_renderbuffer_alloc_storage(struct gl_context * ctx, struct gl_renderbuffer *r if (!strb->texture) return FALSE; - strb->surface = screen->get_tex_surface(screen, - strb->texture, - 0, 0, 0, - template.bind); + memset(&surf_tmpl, 0, sizeof(surf_tmpl)); + u_surface_default_template(&surf_tmpl, strb->texture, template.bind); + strb->surface = pipe->create_surface(pipe, + strb->texture, + &surf_tmpl); if (strb->surface) { assert(strb->surface->texture); assert(strb->surface->format); @@ -327,12 +332,12 @@ st_render_texture(struct gl_context *ctx, { struct st_context *st = st_context(ctx); struct pipe_context *pipe = st->pipe; - struct pipe_screen *screen = pipe->screen; struct st_renderbuffer *strb; struct gl_renderbuffer *rb; struct pipe_resource *pt = st_get_texobj_resource(att->Texture); struct st_texture_object *stObj; const struct gl_texture_image *texImage; + struct pipe_surface surf_tmpl; /* When would this fail? Perhaps assert? */ if (!pt) @@ -381,12 +386,15 @@ st_render_texture(struct gl_context *ctx, assert(strb->rtt_level <= strb->texture->last_level); /* new surface for rendering into the texture */ - strb->surface = screen->get_tex_surface(screen, - strb->texture, - strb->rtt_face, - strb->rtt_level, - strb->rtt_slice, - PIPE_BIND_RENDER_TARGET); + memset(&surf_tmpl, 0, sizeof(surf_tmpl)); + surf_tmpl.format = strb->texture->format; + surf_tmpl.usage = PIPE_BIND_RENDER_TARGET; + surf_tmpl.u.tex.level = strb->rtt_level; + surf_tmpl.u.tex.first_layer = strb->rtt_face + strb->rtt_slice; + surf_tmpl.u.tex.last_layer = strb->rtt_face + strb->rtt_slice; + strb->surface = pipe->create_surface(pipe, + strb->texture, + &surf_tmpl); strb->format = pt->format; diff --git a/src/mesa/state_tracker/st_cb_program.c b/src/mesa/state_tracker/st_cb_program.c index 4d83fcc6ccb..32694975d17 100644 --- a/src/mesa/state_tracker/st_cb_program.c +++ b/src/mesa/state_tracker/st_cb_program.c @@ -46,16 +46,13 @@ #include "st_cb_program.h" -static GLuint SerialNo = 1; - /** * Called via ctx->Driver.BindProgram() to bind an ARB vertex or * fragment program. */ -static void st_bind_program( struct gl_context *ctx, - GLenum target, - struct gl_program *prog ) +static void +st_bind_program(struct gl_context *ctx, GLenum target, struct gl_program *prog) { struct st_context *st = st_context(ctx); @@ -77,7 +74,8 @@ static void st_bind_program( struct gl_context *ctx, * Called via ctx->Driver.UseProgram() to bind a linked GLSL program * (vertex shader + fragment shader). */ -static void st_use_program( struct gl_context *ctx, struct gl_shader_program *shProg) +static void +st_use_program(struct gl_context *ctx, struct gl_shader_program *shProg) { struct st_context *st = st_context(ctx); @@ -87,48 +85,28 @@ static void st_use_program( struct gl_context *ctx, struct gl_shader_program *sh } - /** * Called via ctx->Driver.NewProgram() to allocate a new vertex or * fragment program. */ -static struct gl_program *st_new_program( struct gl_context *ctx, - GLenum target, - GLuint id ) +static struct gl_program * +st_new_program(struct gl_context *ctx, GLenum target, GLuint id) { switch (target) { case GL_VERTEX_PROGRAM_ARB: { struct st_vertex_program *prog = ST_CALLOC_STRUCT(st_vertex_program); - - prog->serialNo = SerialNo++; - - return _mesa_init_vertex_program( ctx, - &prog->Base, - target, - id ); + return _mesa_init_vertex_program(ctx, &prog->Base, target, id); } case GL_FRAGMENT_PROGRAM_ARB: case GL_FRAGMENT_PROGRAM_NV: { struct st_fragment_program *prog = ST_CALLOC_STRUCT(st_fragment_program); - - prog->serialNo = SerialNo++; - - return _mesa_init_fragment_program( ctx, - &prog->Base, - target, - id ); + return _mesa_init_fragment_program(ctx, &prog->Base, target, id); } case MESA_GEOMETRY_PROGRAM: { struct st_geometry_program *prog = ST_CALLOC_STRUCT(st_geometry_program); - - prog->serialNo = SerialNo++; - - return _mesa_init_geometry_program( ctx, - &prog->Base, - target, - id ); + return _mesa_init_geometry_program(ctx, &prog->Base, target, id); } default: @@ -138,7 +116,10 @@ static struct gl_program *st_new_program( struct gl_context *ctx, } -void +/** + * Called via ctx->Driver.DeleteProgram() + */ +static void st_delete_program(struct gl_context *ctx, struct gl_program *prog) { struct st_context *st = st_context(ctx); @@ -147,17 +128,15 @@ st_delete_program(struct gl_context *ctx, struct gl_program *prog) case GL_VERTEX_PROGRAM_ARB: { struct st_vertex_program *stvp = (struct st_vertex_program *) prog; - st_vp_release_varients( st, stvp ); + st_release_vp_variants( st, stvp ); } break; case MESA_GEOMETRY_PROGRAM: { - struct st_geometry_program *stgp = (struct st_geometry_program *) prog; + struct st_geometry_program *stgp = + (struct st_geometry_program *) prog; - if (stgp->driver_shader) { - cso_delete_geometry_shader(st->cso_context, stgp->driver_shader); - stgp->driver_shader = NULL; - } + st_release_gp_variants(st, stgp); if (stgp->tgsi.tokens) { st_free_tokens((void *) stgp->tgsi.tokens); @@ -167,23 +146,15 @@ st_delete_program(struct gl_context *ctx, struct gl_program *prog) break; case GL_FRAGMENT_PROGRAM_ARB: { - struct st_fragment_program *stfp = (struct st_fragment_program *) prog; + struct st_fragment_program *stfp = + (struct st_fragment_program *) prog; - if (stfp->driver_shader) { - cso_delete_fragment_shader(st->cso_context, stfp->driver_shader); - stfp->driver_shader = NULL; - } + st_release_fp_variants(st, stfp); if (stfp->tgsi.tokens) { st_free_tokens(stfp->tgsi.tokens); stfp->tgsi.tokens = NULL; } - - if (stfp->bitmap_program) { - struct gl_program *prg = &stfp->bitmap_program->Base.Base; - _mesa_reference_program(ctx, &prg, NULL); - stfp->bitmap_program = NULL; - } } break; default: @@ -195,15 +166,25 @@ st_delete_program(struct gl_context *ctx, struct gl_program *prog) } -static GLboolean st_is_program_native( struct gl_context *ctx, - GLenum target, - struct gl_program *prog ) +/** + * Called via ctx->Driver.IsProgramNative() + */ +static GLboolean +st_is_program_native(struct gl_context *ctx, + GLenum target, + struct gl_program *prog) { return GL_TRUE; } -static GLboolean st_program_string_notify( struct gl_context *ctx, +/** + * Called via ctx->Driver.ProgramStringNotify() + * Called when the program's text/code is changed. We have to free + * all shader variants and corresponding gallium shaders when this happens. + */ +static GLboolean +st_program_string_notify( struct gl_context *ctx, GLenum target, struct gl_program *prog ) { @@ -212,12 +193,7 @@ static GLboolean st_program_string_notify( struct gl_context *ctx, if (target == GL_FRAGMENT_PROGRAM_ARB) { struct st_fragment_program *stfp = (struct st_fragment_program *) prog; - stfp->serialNo++; - - if (stfp->driver_shader) { - cso_delete_fragment_shader(st->cso_context, stfp->driver_shader); - stfp->driver_shader = NULL; - } + st_release_fp_variants(st, stfp); if (stfp->tgsi.tokens) { st_free_tokens(stfp->tgsi.tokens); @@ -230,12 +206,7 @@ static GLboolean st_program_string_notify( struct gl_context *ctx, else if (target == MESA_GEOMETRY_PROGRAM) { struct st_geometry_program *stgp = (struct st_geometry_program *) prog; - stgp->serialNo++; - - if (stgp->driver_shader) { - cso_delete_geometry_shader(st->cso_context, stgp->driver_shader); - stgp->driver_shader = NULL; - } + st_release_gp_variants(st, stgp); if (stgp->tgsi.tokens) { st_free_tokens((void *) stgp->tgsi.tokens); @@ -248,9 +219,7 @@ static GLboolean st_program_string_notify( struct gl_context *ctx, else if (target == GL_VERTEX_PROGRAM_ARB) { struct st_vertex_program *stvp = (struct st_vertex_program *) prog; - stvp->serialNo++; - - st_vp_release_varients( st, stvp ); + st_release_vp_variants( st, stvp ); if (st->vp == stvp) st->dirty.st |= ST_NEW_VERTEX_PROGRAM; @@ -261,8 +230,11 @@ static GLboolean st_program_string_notify( struct gl_context *ctx, } - -void st_init_program_functions(struct dd_function_table *functions) +/** + * Plug in the program and shader-related device driver functions. + */ +void +st_init_program_functions(struct dd_function_table *functions) { functions->BindProgram = st_bind_program; functions->UseProgram = st_use_program; diff --git a/src/mesa/state_tracker/st_cb_program.h b/src/mesa/state_tracker/st_cb_program.h index 004afb6d812..091a4439c48 100644 --- a/src/mesa/state_tracker/st_cb_program.h +++ b/src/mesa/state_tracker/st_cb_program.h @@ -29,15 +29,10 @@ #define ST_CB_PROGRAM_H -#include "main/mtypes.h" - struct dd_function_table; extern void st_init_program_functions(struct dd_function_table *functions); -extern void -st_delete_program(struct gl_context *ctx, struct gl_program *prog); - #endif diff --git a/src/mesa/state_tracker/st_cb_readpixels.c b/src/mesa/state_tracker/st_cb_readpixels.c index bcd46ac9d54..0507be74578 100644 --- a/src/mesa/state_tracker/st_cb_readpixels.c +++ b/src/mesa/state_tracker/st_cb_readpixels.c @@ -80,7 +80,7 @@ st_read_stencil_pixels(struct gl_context *ctx, GLint x, GLint y, /* Create a read transfer from the renderbuffer's texture */ pt = pipe_get_transfer(pipe, strb->texture, - 0, 0, 0, /* face, level, zslice */ + 0, 0, PIPE_TRANSFER_READ, x, y, width, height); @@ -236,7 +236,7 @@ st_fast_readpixels(struct gl_context *ctx, struct st_renderbuffer *strb, } trans = pipe_get_transfer(pipe, strb->texture, - 0, 0, 0, /* face, level, zslice */ + 0, 0, PIPE_TRANSFER_READ, x, y, width, height); if (!trans) { @@ -328,7 +328,7 @@ st_readpixels(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei h { struct st_context *st = st_context(ctx); struct pipe_context *pipe = st->pipe; - GLfloat temp[MAX_WIDTH][4]; + GLfloat (*temp)[4]; const GLbitfield transferOps = ctx->_ImageTransferState; GLsizei i, j; GLint yStep, dfStride; @@ -381,6 +381,13 @@ st_readpixels(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei h return; } + /* allocate temp pixel row buffer */ + temp = (GLfloat (*)[4]) malloc(4 * width * sizeof(GLfloat)); + if (!temp) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "glReadPixels"); + return; + } + if (format == GL_RGBA && type == GL_FLOAT) { /* write tile(row) directly into user's buffer */ df = (GLfloat *) _mesa_image_address2d(&clippedPacking, dest, width, @@ -400,7 +407,7 @@ st_readpixels(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei h /* Create a read transfer from the renderbuffer's texture */ trans = pipe_get_transfer(pipe, strb->texture, - 0, 0, 0, /* face, level, zslice */ + 0, 0, PIPE_TRANSFER_READ, x, y, width, height); @@ -533,6 +540,8 @@ st_readpixels(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei h } } + free(temp); + pipe->transfer_destroy(pipe, trans); _mesa_unmap_pbo_dest(ctx, &clippedPacking); diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c index 4c2f7d78960..866426a7549 100644 --- a/src/mesa/state_tracker/st_cb_texture.c +++ b/src/mesa/state_tracker/st_cb_texture.c @@ -63,7 +63,7 @@ #include "util/u_surface.h" #include "util/u_sampler.h" #include "util/u_math.h" - +#include "util/u_box.h" #define DBG if (0) printf @@ -431,7 +431,7 @@ compress_with_blit(struct gl_context * ctx, struct pipe_resource *src_tex; struct pipe_sampler_view view_templ; struct pipe_sampler_view *src_view; - struct pipe_surface *dst_surface; + struct pipe_surface *dst_surface, surf_tmpl; struct pipe_transfer *tex_xfer; void *map; @@ -441,9 +441,13 @@ compress_with_blit(struct gl_context * ctx, } /* get destination surface (in the compressed texture) */ - dst_surface = screen->get_tex_surface(screen, stImage->pt, - stImage->face, stImage->level, 0, - 0 /* flags */); + memset(&surf_tmpl, 0, sizeof(surf_tmpl)); + surf_tmpl.format = stImage->pt->format; + surf_tmpl.usage = PIPE_BIND_RENDER_TARGET; + surf_tmpl.u.tex.level = stImage->level; + surf_tmpl.u.tex.first_layer = stImage->face; + surf_tmpl.u.tex.last_layer = stImage->face; + dst_surface = pipe->create_surface(pipe, stImage->pt, &surf_tmpl); if (!dst_surface) { /* can't render into this format (or other problem) */ return GL_FALSE; @@ -464,6 +468,7 @@ compress_with_blit(struct gl_context * ctx, templ.width0 = width; templ.height0 = height; templ.depth0 = 1; + templ.array_size = 1; templ.last_level = 0; templ.usage = PIPE_USAGE_DEFAULT; templ.bind = PIPE_BIND_SAMPLER_VIEW; @@ -475,9 +480,9 @@ compress_with_blit(struct gl_context * ctx, /* Put user's tex data into the temporary texture */ tex_xfer = pipe_get_transfer(st_context(ctx)->pipe, src_tex, - 0, 0, 0, /* face, level are zero */ - PIPE_TRANSFER_WRITE, - 0, 0, width, height); /* x, y, w, h */ + 0, 0, /* layer, level are zero */ + PIPE_TRANSFER_WRITE, + 0, 0, width, height); /* x, y, w, h */ map = pipe_transfer_map(pipe, tex_xfer); _mesa_texstore(ctx, 2, GL_RGBA, mesa_format, @@ -549,14 +554,18 @@ st_TexImage(struct gl_context * ctx, /* switch to "normal" */ if (stObj->surface_based) { + gl_format texFormat; + _mesa_clear_texture_object(ctx, texObj); pipe_resource_reference(&stObj->pt, NULL); /* oops, need to init this image again */ + texFormat = _mesa_choose_texture_format(ctx, texObj, target, level, + internalFormat, format, type); + _mesa_init_teximage_fields(ctx, target, texImage, - width, height, depth, border, internalFormat); - _mesa_choose_texture_format(ctx, texObj, texImage, target, level, - internalFormat, format, type); + width, height, depth, border, + internalFormat, texFormat); stObj->surface_based = GL_FALSE; } @@ -853,7 +862,6 @@ decompress_with_blit(struct gl_context * ctx, GLenum target, GLint level, { struct st_context *st = st_context(ctx); struct pipe_context *pipe = st->pipe; - struct pipe_screen *screen = pipe->screen; struct st_texture_image *stImage = st_texture_image(texImage); struct st_texture_object *stObj = st_texture_object(texObj); struct pipe_sampler_view *src_view = @@ -867,7 +875,7 @@ decompress_with_blit(struct gl_context * ctx, GLenum target, GLint level, PIPE_BIND_TRANSFER_READ); /* create temp / dest surface */ - if (!util_create_rgba_surface(screen, width, height, bind, + if (!util_create_rgba_surface(pipe, width, height, bind, &dst_texture, &dst_surface)) { _mesa_problem(ctx, "util_create_rgba_surface() failed " "in decompress_with_blit()"); @@ -887,9 +895,9 @@ decompress_with_blit(struct gl_context * ctx, GLenum target, GLint level, /* map the dst_surface so we can read from it */ tex_xfer = pipe_get_transfer(st_context(ctx)->pipe, - dst_texture, 0, 0, 0, - PIPE_TRANSFER_READ, - 0, 0, width, height); + dst_texture, 0, 0, + PIPE_TRANSFER_READ, + 0, 0, width, height); pixels = _mesa_map_pbo_dest(ctx, &ctx->Pack, pixels); @@ -1306,7 +1314,7 @@ fallback_copy_texsubimage(struct gl_context *ctx, GLenum target, GLint level, struct pipe_transfer *src_trans; GLvoid *texDest; enum pipe_transfer_usage transfer_usage; - + if (ST_DEBUG & DEBUG_FALLBACK) debug_printf("%s: fallback processing\n", __FUNCTION__); @@ -1317,11 +1325,11 @@ fallback_copy_texsubimage(struct gl_context *ctx, GLenum target, GLint level, } src_trans = pipe_get_transfer(st_context(ctx)->pipe, - strb->texture, - 0, 0, 0, - PIPE_TRANSFER_READ, - srcX, srcY, - width, height); + strb->texture, + 0, 0, + PIPE_TRANSFER_READ, + srcX, srcY, + width, height); if ((baseFormat == GL_DEPTH_COMPONENT || baseFormat == GL_DEPTH_STENCIL) && @@ -1330,7 +1338,8 @@ fallback_copy_texsubimage(struct gl_context *ctx, GLenum target, GLint level, else transfer_usage = PIPE_TRANSFER_WRITE; - texDest = st_texture_image_map(st, stImage, 0, transfer_usage, + /* XXX this used to ignore destZ param */ + texDest = st_texture_image_map(st, stImage, destZ, transfer_usage, destX, destY, width, height); if (baseFormat == GL_DEPTH_COMPONENT || @@ -1588,27 +1597,23 @@ st_copy_texsubimage(struct gl_context *ctx, if (matching_base_formats && src_format == dest_format && - !do_flip) + !do_flip) { /* use surface_copy() / blit */ - struct pipe_subresource subdst, subsrc; - subdst.face = stImage->face; - subdst.level = stImage->level; - subsrc.face = strb->surface->face; - subsrc.level = strb->surface->level; + struct pipe_box src_box; + u_box_2d_zslice(srcX, srcY, strb->surface->u.tex.first_layer, + width, height, &src_box); /* for resource_copy_region(), y=0=top, always */ pipe->resource_copy_region(pipe, /* dest */ stImage->pt, - subdst, - destX, destY, destZ, + stImage->level, + destX, destY, destZ + stImage->face, /* src */ strb->texture, - subsrc, - srcX, srcY, strb->surface->zslice, - /* size */ - width, height); + strb->surface->u.tex.level, + &src_box); use_fallback = GL_FALSE; } else if (format_writemask && @@ -1624,12 +1629,16 @@ st_copy_texsubimage(struct gl_context *ctx, 0)) { /* draw textured quad to do the copy */ GLint srcY0, srcY1; - struct pipe_subresource subsrc; + struct pipe_surface surf_tmpl; + memset(&surf_tmpl, 0, sizeof(surf_tmpl)); + surf_tmpl.format = stImage->pt->format; + surf_tmpl.usage = PIPE_BIND_RENDER_TARGET; + surf_tmpl.u.tex.level = stImage->level; + surf_tmpl.u.tex.first_layer = stImage->face + destZ; + surf_tmpl.u.tex.last_layer = stImage->face + destZ; - dest_surface = screen->get_tex_surface(screen, stImage->pt, - stImage->face, stImage->level, - destZ, - PIPE_BIND_RENDER_TARGET); + dest_surface = pipe->create_surface(pipe, stImage->pt, + &surf_tmpl); if (do_flip) { srcY1 = strb->Base.Height - srcY - height; @@ -1639,15 +1648,13 @@ st_copy_texsubimage(struct gl_context *ctx, srcY0 = srcY; srcY1 = srcY0 + height; } - subsrc.face = strb->surface->face; - subsrc.level = strb->surface->level; util_blit_pixels_writemask(st->blit, strb->texture, - subsrc, + strb->surface->u.tex.level, srcX, srcY0, srcX + width, srcY1, - strb->surface->zslice, + strb->surface->u.tex.first_layer, dest_surface, destX, destY, destX + width, destY + height, @@ -1848,8 +1855,9 @@ st_finalize_texture(struct gl_context *ctx, * will match. */ if (firstImage->pt && + stObj->pt && firstImage->pt != stObj->pt && - firstImage->pt->last_level >= stObj->lastLevel) { + firstImage->pt->last_level >= stObj->pt->last_level) { pipe_resource_reference(&stObj->pt, firstImage->pt); pipe_sampler_view_reference(&stObj->sampler_view, NULL); } @@ -1950,7 +1958,7 @@ st_get_default_texture(struct st_context *st) _mesa_init_teximage_fields(st->ctx, target, texImg, 16, 16, 1, 0, /* w, h, d, border */ - GL_RGBA); + GL_RGBA, MESA_FORMAT_RGBA8888); st_TexImage(st->ctx, 2, target, 0, GL_RGBA, /* level, intformat */ diff --git a/src/mesa/state_tracker/st_context.c b/src/mesa/state_tracker/st_context.c index d0dcdd4e29b..21bb91f47a8 100644 --- a/src/mesa/state_tracker/st_context.c +++ b/src/mesa/state_tracker/st_context.c @@ -170,6 +170,11 @@ struct st_context *st_create_context(gl_api api, struct pipe_context *pipe, struct gl_context *shareCtx = share ? share->ctx : NULL; struct dd_function_table funcs; + /* Sanity checks */ + assert(MESA_SHADER_VERTEX == PIPE_SHADER_VERTEX); + assert(MESA_SHADER_FRAGMENT == PIPE_SHADER_FRAGMENT); + assert(MESA_SHADER_GEOMETRY == PIPE_SHADER_GEOMETRY); + memset(&funcs, 0, sizeof(funcs)); st_init_driver_functions(&funcs); @@ -239,14 +244,16 @@ void st_destroy_context( struct st_context *st ) pipe->set_index_buffer(pipe, NULL); for (i = 0; i < PIPE_SHADER_TYPES; i++) { - pipe->set_constant_buffer(pipe, PIPE_SHADER_VERTEX, 0, NULL); - pipe_resource_reference(&st->state.constants[PIPE_SHADER_VERTEX], NULL); + pipe->set_constant_buffer(pipe, i, 0, NULL); + pipe_resource_reference(&st->state.constants[i], NULL); } _mesa_delete_program_cache(st->ctx, st->pixel_xfer.cache); _vbo_DestroyContext(st->ctx); + st_destroy_program_variants(st); + _mesa_free_context_data(ctx); st_destroy_context_priv(st); diff --git a/src/mesa/state_tracker/st_context.h b/src/mesa/state_tracker/st_context.h index d342c0cff1e..68b52286d94 100644 --- a/src/mesa/state_tracker/st_context.h +++ b/src/mesa/state_tracker/st_context.h @@ -130,7 +130,9 @@ struct st_context struct st_fragment_program *fp; /**< Currently bound fragment program */ struct st_geometry_program *gp; /**< Currently bound geometry program */ - struct st_vp_varient *vp_varient; + struct st_vp_variant *vp_variant; + struct st_fp_variant *fp_variant; + struct st_gp_variant *gp_variant; struct gl_texture_object *default_texture; @@ -160,7 +162,7 @@ struct st_context /** for glDraw/CopyPixels */ struct { - struct st_fragment_program *shaders[4]; + struct gl_fragment_program *shaders[4]; void *vert_shaders[2]; /**< ureg shaders */ } drawpix; diff --git a/src/mesa/state_tracker/st_debug.c b/src/mesa/state_tracker/st_debug.c index df32491d044..e1e373d07d4 100644 --- a/src/mesa/state_tracker/st_debug.c +++ b/src/mesa/state_tracker/st_debug.c @@ -89,8 +89,8 @@ st_print_current(void) } #endif - if (st->vp->varients) - tgsi_dump( st->vp->varients[0].tgsi.tokens, 0 ); + if (st->vp->variants) + tgsi_dump( st->vp->variants[0].tgsi.tokens, 0 ); if (st->vp->Base.Base.Parameters) _mesa_print_parameter_list(st->vp->Base.Base.Parameters); diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c index 61a0e1b0877..f4bf1802390 100644 --- a/src/mesa/state_tracker/st_draw.c +++ b/src/mesa/state_tracker/st_draw.c @@ -241,7 +241,7 @@ st_pipe_vertex_format(GLenum type, GLuint size, GLenum format, */ static GLboolean is_interleaved_arrays(const struct st_vertex_program *vp, - const struct st_vp_varient *vpv, + const struct st_vp_variant *vpv, const struct gl_client_array **arrays, GLboolean *userSpace) { @@ -297,7 +297,7 @@ is_interleaved_arrays(const struct st_vertex_program *vp, */ static void get_arrays_bounds(const struct st_vertex_program *vp, - const struct st_vp_varient *vpv, + const struct st_vp_variant *vpv, const struct gl_client_array **arrays, GLuint max_index, const GLubyte **low, const GLubyte **high) @@ -343,7 +343,7 @@ get_arrays_bounds(const struct st_vertex_program *vp, static void setup_interleaved_attribs(struct gl_context *ctx, const struct st_vertex_program *vp, - const struct st_vp_varient *vpv, + const struct st_vp_variant *vpv, const struct gl_client_array **arrays, GLuint max_index, GLboolean userSpace, @@ -409,7 +409,7 @@ setup_interleaved_attribs(struct gl_context *ctx, static void setup_non_interleaved_attribs(struct gl_context *ctx, const struct st_vertex_program *vp, - const struct st_vp_varient *vpv, + const struct st_vp_variant *vpv, const struct gl_client_array **arrays, GLuint max_index, GLboolean *userSpace, @@ -617,7 +617,7 @@ st_draw_vbo(struct gl_context *ctx, struct st_context *st = st_context(ctx); struct pipe_context *pipe = st->pipe; const struct st_vertex_program *vp; - const struct st_vp_varient *vpv; + const struct st_vp_variant *vpv; struct pipe_vertex_buffer vbuffer[PIPE_MAX_SHADER_INPUTS]; GLuint attr; struct pipe_vertex_element velements[PIPE_MAX_ATTRIBS]; @@ -650,7 +650,7 @@ st_draw_vbo(struct gl_context *ctx, /* must get these after state validation! */ vp = st->vp; - vpv = st->vp_varient; + vpv = st->vp_variant; #if 0 if (MESA_VERBOSE & VERBOSE_GLSL) { diff --git a/src/mesa/state_tracker/st_draw_feedback.c b/src/mesa/state_tracker/st_draw_feedback.c index 7f392fc4916..0a6cebb84cc 100644 --- a/src/mesa/state_tracker/st_draw_feedback.c +++ b/src/mesa/state_tracker/st_draw_feedback.c @@ -123,10 +123,10 @@ st_feedback_draw_vbo(struct gl_context *ctx, /* must get these after state validation! */ vp = st->vp; - vs = &st->vp_varient->tgsi; + vs = &st->vp_variant->tgsi; - if (!st->vp_varient->draw_shader) { - st->vp_varient->draw_shader = draw_create_vertex_shader(draw, vs); + if (!st->vp_variant->draw_shader) { + st->vp_variant->draw_shader = draw_create_vertex_shader(draw, vs); } /* @@ -139,7 +139,7 @@ st_feedback_draw_vbo(struct gl_context *ctx, draw_set_viewport_state(draw, &st->state.viewport); draw_set_clip_state(draw, &st->state.clip); draw_set_rasterizer_state(draw, &st->state.rasterizer, NULL); - draw_bind_vertex_shader(draw, st->vp_varient->draw_shader); + draw_bind_vertex_shader(draw, st->vp_variant->draw_shader); set_feedback_vertex_format(ctx); /* loop over TGSI shader inputs to determine vertex buffer diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index 132749130af..62c9ce7273d 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -67,7 +67,7 @@ void st_init_limits(struct st_context *st) { struct pipe_screen *screen = st->pipe->screen; struct gl_constants *c = &st->ctx->Const; - unsigned i; + gl_shader_type sh; c->MaxTextureLevels = _min(screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_2D_LEVELS), @@ -137,11 +137,12 @@ void st_init_limits(struct st_context *st) /* Quads always follow GL provoking rules. */ c->QuadsFollowProvokingVertexConvention = GL_FALSE; - for(i = 0; i < MESA_SHADER_TYPES; ++i) { - struct gl_shader_compiler_options *options = &st->ctx->ShaderCompilerOptions[i]; + for (sh = 0; sh < MESA_SHADER_TYPES; ++sh) { + struct gl_shader_compiler_options *options = + &st->ctx->ShaderCompilerOptions[sh]; struct gl_program_constants *pc; - switch(i) - { + + switch (sh) { case PIPE_SHADER_FRAGMENT: pc = &c->FragmentProgram; break; @@ -156,36 +157,37 @@ void st_init_limits(struct st_context *st) continue; } - pc->MaxNativeInstructions = screen->get_shader_param(screen, i, PIPE_SHADER_CAP_MAX_INSTRUCTIONS); - pc->MaxNativeAluInstructions = screen->get_shader_param(screen, i, PIPE_SHADER_CAP_MAX_ALU_INSTRUCTIONS); - pc->MaxNativeTexInstructions = screen->get_shader_param(screen, i, PIPE_SHADER_CAP_MAX_TEX_INSTRUCTIONS); - pc->MaxNativeTexIndirections = screen->get_shader_param(screen, i, PIPE_SHADER_CAP_MAX_TEX_INDIRECTIONS); - pc->MaxNativeAttribs = screen->get_shader_param(screen, i, PIPE_SHADER_CAP_MAX_INPUTS); - pc->MaxNativeTemps = screen->get_shader_param(screen, i, PIPE_SHADER_CAP_MAX_TEMPS); - pc->MaxNativeAddressRegs = screen->get_shader_param(screen, i, PIPE_SHADER_CAP_MAX_ADDRS); - pc->MaxNativeParameters = screen->get_shader_param(screen, i, PIPE_SHADER_CAP_MAX_CONSTS); + pc->MaxNativeInstructions = screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_INSTRUCTIONS); + pc->MaxNativeAluInstructions = screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_ALU_INSTRUCTIONS); + pc->MaxNativeTexInstructions = screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_TEX_INSTRUCTIONS); + pc->MaxNativeTexIndirections = screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_TEX_INDIRECTIONS); + pc->MaxNativeAttribs = screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_INPUTS); + pc->MaxNativeTemps = screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_TEMPS); + 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); options->EmitNoNoise = TRUE; /* TODO: make these more fine-grained if anyone needs it */ - options->EmitNoIfs = !screen->get_shader_param(screen, i, PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH); - options->EmitNoFunctions = !screen->get_shader_param(screen, i, PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH); - options->EmitNoLoops = !screen->get_shader_param(screen, i, PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH); - options->EmitNoMainReturn = !screen->get_shader_param(screen, i, PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH); + options->EmitNoIfs = !screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH); + options->EmitNoLoops = !screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_CONTROL_FLOW_DEPTH); + options->EmitNoFunctions = !screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_SUBROUTINES); + options->EmitNoMainReturn = !screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_SUBROUTINES); - options->EmitNoCont = !screen->get_shader_param(screen, i, PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED); + options->EmitNoCont = !screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_TGSI_CONT_SUPPORTED); - options->EmitNoIndirectInput = !screen->get_shader_param(screen, i, + options->EmitNoIndirectInput = !screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_INDIRECT_INPUT_ADDR); - options->EmitNoIndirectOutput = !screen->get_shader_param(screen, i, + options->EmitNoIndirectOutput = !screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_INDIRECT_OUTPUT_ADDR); - options->EmitNoIndirectTemp = !screen->get_shader_param(screen, i, + options->EmitNoIndirectTemp = !screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_INDIRECT_TEMP_ADDR); - options->EmitNoIndirectUniform = !screen->get_shader_param(screen, i, + options->EmitNoIndirectUniform = !screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_INDIRECT_CONST_ADDR); if(options->EmitNoLoops) - options->MaxUnrollIterations = MIN2(screen->get_shader_param(screen, i, PIPE_SHADER_CAP_MAX_INSTRUCTIONS), 65536); + options->MaxUnrollIterations = MIN2(screen->get_shader_param(screen, sh, PIPE_SHADER_CAP_MAX_INSTRUCTIONS), 65536); } /* PIPE_CAP_MAX_FS_INPUTS specifies the number of COLORn + GENERICn inputs @@ -298,6 +300,8 @@ void st_init_extensions(struct st_context *st) ctx->Extensions.ARB_vertex_shader = GL_TRUE; ctx->Extensions.ARB_shader_objects = GL_TRUE; ctx->Extensions.ARB_shading_language_100 = GL_TRUE; + ctx->Extensions.ARB_explicit_attrib_location = GL_TRUE; + ctx->Extensions.EXT_separate_shader_objects = GL_TRUE; } if (screen->get_param(screen, PIPE_CAP_TEXTURE_MIRROR_REPEAT) > 0) { @@ -339,6 +343,7 @@ void st_init_extensions(struct st_context *st) if (screen->get_param(screen, PIPE_CAP_OCCLUSION_QUERY)) { ctx->Extensions.ARB_occlusion_query = GL_TRUE; + ctx->Extensions.ARB_occlusion_query2 = GL_TRUE; } if (screen->get_param(screen, PIPE_CAP_TIMER_QUERY)) { ctx->Extensions.EXT_timer_query = GL_TRUE; @@ -438,7 +443,9 @@ void st_init_extensions(struct st_context *st) #endif 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; +#endif } if (screen->get_param(screen, PIPE_CAP_PRIMITIVE_RESTART)) { diff --git a/src/mesa/state_tracker/st_gen_mipmap.c b/src/mesa/state_tracker/st_gen_mipmap.c index fe31418ddd1..c5f6008a222 100644 --- a/src/mesa/state_tracker/st_gen_mipmap.c +++ b/src/mesa/state_tracker/st_gen_mipmap.c @@ -29,7 +29,6 @@ #include "main/imports.h" #include "main/mipmap.h" #include "main/teximage.h" -#include "main/texformat.h" #include "pipe/p_context.h" #include "pipe/p_defines.h" @@ -80,11 +79,15 @@ st_render_mipmap(struct st_context *st, const uint face = _mesa_tex_target_to_face(target); assert(psv->texture == stObj->pt); - assert(target != GL_TEXTURE_3D); /* not done yet */ +#if 0 + assert(target != GL_TEXTURE_3D); /* implemented but untested */ +#endif /* check if we can render in the texture's format */ - if (!screen->is_format_supported(screen, psv->format, psv->texture->target, 0, - PIPE_BIND_RENDER_TARGET, 0)) { + /* XXX should probably kill this and always use util_gen_mipmap + since this implements a sw fallback as well */ + if (!screen->is_format_supported(screen, psv->format, psv->texture->target, + 0, PIPE_BIND_RENDER_TARGET, 0)) { return FALSE; } @@ -162,12 +165,12 @@ fallback_generate_mipmap(struct gl_context *ctx, GLenum target, struct pipe_resource *pt = st_get_texobj_resource(texObj); const uint baseLevel = texObj->BaseLevel; const uint lastLevel = pt->last_level; - const uint face = _mesa_tex_target_to_face(target), zslice = 0; + const uint face = _mesa_tex_target_to_face(target); uint dstLevel; GLenum datatype; GLuint comps; GLboolean compressed; - + if (ST_DEBUG & DEBUG_FALLBACK) debug_printf("%s: fallback processing\n", __FUNCTION__); @@ -199,16 +202,15 @@ fallback_generate_mipmap(struct gl_context *ctx, GLenum target, ubyte *dstData; int srcStride, dstStride; - srcTrans = pipe_get_transfer(st_context(ctx)->pipe, pt, face, - srcLevel, zslice, - PIPE_TRANSFER_READ, 0, 0, - srcWidth, srcHeight); - + srcTrans = pipe_get_transfer(st_context(ctx)->pipe, pt, srcLevel, + face, + PIPE_TRANSFER_READ, 0, 0, + srcWidth, srcHeight); - dstTrans = pipe_get_transfer(st_context(ctx)->pipe, pt, face, - dstLevel, zslice, - PIPE_TRANSFER_WRITE, 0, 0, - dstWidth, dstHeight); + dstTrans = pipe_get_transfer(st_context(ctx)->pipe, pt, dstLevel, + face, + PIPE_TRANSFER_WRITE, 0, 0, + dstWidth, dstHeight); srcData = (ubyte *) pipe_transfer_map(pipe, srcTrans); dstData = (ubyte *) pipe_transfer_map(pipe, dstTrans); @@ -216,6 +218,8 @@ fallback_generate_mipmap(struct gl_context *ctx, GLenum target, srcStride = srcTrans->stride / util_format_get_blocksize(srcTrans->resource->format); dstStride = dstTrans->stride / util_format_get_blocksize(dstTrans->resource->format); + /* this cannot work correctly for 3d since it does + not respect layerStride. */ if (compressed) { const enum pipe_format format = pt->format; const uint bw = util_format_get_blockwidth(format); @@ -366,6 +370,12 @@ st_generate_mipmap(struct gl_context *ctx, GLenum target, pt = stObj->pt; } + else { + /* Make sure that the base texture image data is present in the + * texture buffer. + */ + st_finalize_texture(ctx, st->pipe, texObj); + } assert(pt->last_level >= lastLevel); @@ -373,6 +383,8 @@ st_generate_mipmap(struct gl_context *ctx, GLenum target, * use the software fallback. */ if (!st_render_mipmap(st, target, stObj, baseLevel, lastLevel)) { + /* since the util code actually also has a fallback, should + probably make it never fail and kill this */ fallback_generate_mipmap(ctx, target, texObj); } @@ -400,9 +412,8 @@ st_generate_mipmap(struct gl_context *ctx, GLenum target, /* initialize new image */ _mesa_init_teximage_fields(ctx, target, dstImage, dstWidth, dstHeight, - dstDepth, border, srcImage->InternalFormat); - - dstImage->TexFormat = srcImage->TexFormat; + dstDepth, border, srcImage->InternalFormat, + srcImage->TexFormat); stImage = st_texture_image(dstImage); stImage->level = dstLevel; diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c index 183477a3f31..0307b48978b 100644 --- a/src/mesa/state_tracker/st_manager.c +++ b/src/mesa/state_tracker/st_manager.c @@ -34,13 +34,13 @@ #include "util/u_pointer.h" #include "util/u_inlines.h" #include "util/u_atomic.h" +#include "util/u_surface.h" #include "main/mtypes.h" #include "main/context.h" #include "main/texobj.h" #include "main/teximage.h" #include "main/texstate.h" -#include "main/texfetch.h" #include "main/framebuffer.h" #include "main/fbobject.h" #include "main/renderbuffer.h" @@ -143,7 +143,7 @@ buffer_index_to_attachment(gl_buffer_index index) static void st_framebuffer_validate(struct st_framebuffer *stfb, struct st_context *st) { - struct pipe_screen *screen = st->pipe->screen; + struct pipe_context *pipe = st->pipe; struct pipe_resource *textures[ST_ATTACHMENT_COUNT]; uint width, height; unsigned i; @@ -161,7 +161,7 @@ st_framebuffer_validate(struct st_framebuffer *stfb, struct st_context *st) for (i = 0; i < stfb->num_statts; i++) { struct st_renderbuffer *strb; - struct pipe_surface *ps; + struct pipe_surface *ps, surf_tmpl; gl_buffer_index idx; if (!textures[i]) @@ -180,8 +180,10 @@ st_framebuffer_validate(struct st_framebuffer *stfb, struct st_context *st) continue; } - ps = screen->get_tex_surface(screen, textures[i], 0, 0, 0, - PIPE_BIND_RENDER_TARGET); + memset(&surf_tmpl, 0, sizeof(surf_tmpl)); + u_surface_default_template(&surf_tmpl, textures[i], + PIPE_BIND_RENDER_TARGET); + ps = pipe->create_surface(pipe, textures[i], &surf_tmpl); if (ps) { pipe_surface_reference(&strb->surface, ps); pipe_resource_reference(&strb->texture, ps->texture); @@ -556,6 +558,8 @@ st_context_teximage(struct st_context_iface *stctxi, enum st_texture_type target texImage = _mesa_get_tex_image(ctx, texObj, target, level); stImage = st_texture_image(texImage); if (tex) { + gl_format texFormat; + /* * XXX When internal_format and tex->format differ, st_finalize_texture * needs to allocate a new texture with internal_format and copy the @@ -573,11 +577,13 @@ st_context_teximage(struct st_context_iface *stctxi, enum st_texture_type target internalFormat = GL_RGBA; else internalFormat = GL_RGB; + + texFormat = st_ChooseTextureFormat(ctx, internalFormat, + GL_RGBA, GL_UNSIGNED_BYTE); + _mesa_init_teximage_fields(ctx, target, texImage, - tex->width0, tex->height0, 1, 0, internalFormat); - texImage->TexFormat = st_ChooseTextureFormat(ctx, internalFormat, - GL_RGBA, GL_UNSIGNED_BYTE); - _mesa_set_fetch_functions(texImage, 2); + tex->width0, tex->height0, 1, 0, + internalFormat, texFormat); width = tex->width0; height = tex->height0; @@ -611,6 +617,26 @@ st_context_teximage(struct st_context_iface *stctxi, enum st_texture_type target } static void +st_context_copy(struct st_context_iface *stctxi, + struct st_context_iface *stsrci, unsigned mask) +{ + struct st_context *st = (struct st_context *) stctxi; + struct st_context *src = (struct st_context *) stsrci; + + _mesa_copy_context(src->ctx, st->ctx, mask); +} + +static boolean +st_context_share(struct st_context_iface *stctxi, + struct st_context_iface *stsrci) +{ + struct st_context *st = (struct st_context *) stctxi; + struct st_context *src = (struct st_context *) stsrci; + + return _mesa_share_state(st->ctx, src->ctx); +} + +static void st_context_destroy(struct st_context_iface *stctxi) { struct st_context *st = (struct st_context *) stctxi; @@ -677,7 +703,8 @@ st_api_create_context(struct st_api *stapi, struct st_manager *smapi, st_context_notify_invalid_framebuffer; st->iface.flush = st_context_flush; st->iface.teximage = st_context_teximage; - st->iface.copy = NULL; + st->iface.copy = st_context_copy; + st->iface.share = st_context_share; st->iface.st_context_private = (void *) smapi; return &st->iface; @@ -789,6 +816,7 @@ st_manager_flush_frontbuffer(struct st_context *st) /** * Return the surface of an EGLImage. + * FIXME: I think this should operate on resources, not surfaces */ struct pipe_surface * st_manager_get_egl_image_surface(struct st_context *st, @@ -797,7 +825,7 @@ st_manager_get_egl_image_surface(struct st_context *st, struct st_manager *smapi = (struct st_manager *) st->iface.st_context_private; struct st_egl_image stimg; - struct pipe_surface *ps; + struct pipe_surface *ps, surf_tmpl; if (!smapi || !smapi->get_egl_image) return NULL; @@ -806,8 +834,13 @@ st_manager_get_egl_image_surface(struct st_context *st, if (!smapi->get_egl_image(smapi, eglimg, &stimg)) return NULL; - ps = smapi->screen->get_tex_surface(smapi->screen, - stimg.texture, stimg.face, stimg.level, stimg.zslice, usage); + memset(&surf_tmpl, 0, sizeof(surf_tmpl)); + surf_tmpl.format = stimg.texture->format; + surf_tmpl.usage = usage; + surf_tmpl.u.tex.level = stimg.level; + surf_tmpl.u.tex.first_layer = stimg.layer; + surf_tmpl.u.tex.last_layer = stimg.layer; + ps = st->pipe->create_surface(st->pipe, stimg.texture, &surf_tmpl); pipe_resource_reference(&stimg.texture, NULL); return ps; @@ -865,6 +898,7 @@ st_manager_add_color_renderbuffer(struct st_context *st, struct gl_framebuffer * } static const struct st_api st_gl_api = { + "Mesa " MESA_VERSION_STRING, ST_API_OPENGL, #if FEATURE_GL ST_PROFILE_DEFAULT_MASK | diff --git a/src/mesa/state_tracker/st_mesa_to_tgsi.c b/src/mesa/state_tracker/st_mesa_to_tgsi.c index c5c239b2c95..f848462310e 100644 --- a/src/mesa/state_tracker/st_mesa_to_tgsi.c +++ b/src/mesa/state_tracker/st_mesa_to_tgsi.c @@ -760,10 +760,13 @@ emit_adjusted_wpos( struct st_translate *t, /** * Emit the TGSI instructions for inverting the WPOS y coordinate. + * This code is unavoidable because it also depends on whether + * a FBO is bound (STATE_FB_WPOS_Y_TRANSFORM). */ static void -emit_inverted_wpos( struct st_translate *t, - const struct gl_program *program ) +emit_wpos_inversion( struct st_translate *t, + const struct gl_program *program, + boolean invert) { struct ureg_program *ureg = t->ureg; @@ -771,17 +774,17 @@ emit_inverted_wpos( struct st_translate *t, * Need to replace instances of INPUT[WPOS] with temp T * where T = INPUT[WPOS] by y is inverted. */ - static const gl_state_index winSizeState[STATE_LENGTH] - = { STATE_INTERNAL, STATE_FB_SIZE, 0, 0, 0 }; + static const gl_state_index wposTransformState[STATE_LENGTH] + = { STATE_INTERNAL, STATE_FB_WPOS_Y_TRANSFORM, 0, 0, 0 }; /* XXX: note we are modifying the incoming shader here! Need to * do this before emitting the constant decls below, or this * will be missed: */ - unsigned winHeightConst = _mesa_add_state_reference(program->Parameters, - winSizeState); + unsigned wposTransConst = _mesa_add_state_reference(program->Parameters, + wposTransformState); - struct ureg_src winsize = ureg_DECL_constant( ureg, winHeightConst ); + struct ureg_src wpostrans = ureg_DECL_constant( ureg, wposTransConst ); struct ureg_dst wpos_temp; struct ureg_src wpos_input = t->inputs[t->inputMapping[FRAG_ATTRIB_WPOS]]; @@ -794,12 +797,23 @@ emit_inverted_wpos( struct st_translate *t, ureg_MOV( ureg, wpos_temp, wpos_input ); } - /* SUB wpos_temp.y, winsize_const, wpos_input - */ - ureg_SUB( ureg, - ureg_writemask(wpos_temp, TGSI_WRITEMASK_Y ), - winsize, - wpos_input); + if (invert) { + /* MAD wpos_temp.y, wpos_input, wpostrans.xxxx, wpostrans.yyyy + */ + ureg_MAD( ureg, + ureg_writemask(wpos_temp, TGSI_WRITEMASK_Y ), + wpos_input, + ureg_scalar(wpostrans, 0), + ureg_scalar(wpostrans, 1)); + } else { + /* MAD wpos_temp.y, wpos_input, wpostrans.zzzz, wpostrans.wwww + */ + ureg_MAD( ureg, + ureg_writemask(wpos_temp, TGSI_WRITEMASK_Y ), + wpos_input, + ureg_scalar(wpostrans, 2), + ureg_scalar(wpostrans, 3)); + } /* Use wpos_temp as position input from here on: */ @@ -861,8 +875,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 */ - if (invert) - emit_inverted_wpos(t, program); + emit_wpos_inversion(t, program, invert); } diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c index 76799287fe1..cfdc96b9dbe 100644 --- a/src/mesa/state_tracker/st_program.c +++ b/src/mesa/state_tracker/st_program.c @@ -32,7 +32,9 @@ #include "main/imports.h" +#include "main/hash.h" #include "main/mtypes.h" +#include "program/prog_parameter.h" #include "program/prog_print.h" #include "program/programopt.h" @@ -44,6 +46,8 @@ #include "tgsi/tgsi_ureg.h" #include "st_debug.h" +#include "st_cb_bitmap.h" +#include "st_cb_drawpixels.h" #include "st_context.h" #include "st_program.h" #include "st_mesa_to_tgsi.h" @@ -52,34 +56,109 @@ /** + * Delete a vertex program variant. Note the caller must unlink + * the variant from the linked list. + */ +static void +delete_vp_variant(struct st_context *st, struct st_vp_variant *vpv) +{ + if (vpv->driver_shader) + cso_delete_vertex_shader(st->cso_context, vpv->driver_shader); + +#if FEATURE_feedback || FEATURE_rastpos + if (vpv->draw_shader) + draw_delete_vertex_shader( st->draw, vpv->draw_shader ); +#endif + + if (vpv->tgsi.tokens) + st_free_tokens(vpv->tgsi.tokens); + + FREE( vpv ); +} + + + +/** * Clean out any old compilations: */ void -st_vp_release_varients( struct st_context *st, +st_release_vp_variants( struct st_context *st, struct st_vertex_program *stvp ) { - struct st_vp_varient *vpv; + struct st_vp_variant *vpv; - for (vpv = stvp->varients; vpv; ) { - struct st_vp_varient *next = vpv->next; + for (vpv = stvp->variants; vpv; ) { + struct st_vp_variant *next = vpv->next; + delete_vp_variant(st, vpv); + vpv = next; + } - if (vpv->driver_shader) - cso_delete_vertex_shader(st->cso_context, vpv->driver_shader); - -#if FEATURE_feedback || FEATURE_rastpos - if (vpv->draw_shader) - draw_delete_vertex_shader( st->draw, vpv->draw_shader ); -#endif + stvp->variants = NULL; +} + + + +/** + * Delete a fragment program variant. Note the caller must unlink + * the variant from the linked list. + */ +static void +delete_fp_variant(struct st_context *st, struct st_fp_variant *fpv) +{ + if (fpv->driver_shader) + cso_delete_fragment_shader(st->cso_context, fpv->driver_shader); - if (vpv->tgsi.tokens) - st_free_tokens(vpv->tgsi.tokens); + FREE(fpv); +} + + +/** + * Free all variants of a fragment program. + */ +void +st_release_fp_variants(struct st_context *st, struct st_fragment_program *stfp) +{ + struct st_fp_variant *fpv; + + for (fpv = stfp->variants; fpv; ) { + struct st_fp_variant *next = fpv->next; + delete_fp_variant(st, fpv); + fpv = next; + } + + stfp->variants = NULL; +} + + +/** + * Delete a geometry program variant. Note the caller must unlink + * the variant from the linked list. + */ +static void +delete_gp_variant(struct st_context *st, struct st_gp_variant *gpv) +{ + if (gpv->driver_shader) + cso_delete_geometry_shader(st->cso_context, gpv->driver_shader); - FREE( vpv ); + FREE(gpv); +} - vpv = next; + +/** + * Free all variants of a geometry program. + */ +void +st_release_gp_variants(struct st_context *st, struct st_geometry_program *stgp) +{ + struct st_gp_variant *gpv; + + for (gpv = stgp->variants; gpv; ) { + struct st_gp_variant *next = gpv->next; + delete_gp_variant(st, gpv); + gpv = next; } - stvp->varients = NULL; + stgp->variants = NULL; } @@ -92,7 +171,7 @@ st_vp_release_varients( struct st_context *st, * \param tokensOut destination for TGSI tokens * \return pointer to cached pipe_shader object. */ -void +static void st_prepare_vertex_program(struct st_context *st, struct st_vertex_program *stvp) { @@ -196,17 +275,22 @@ st_prepare_vertex_program(struct st_context *st, } -struct st_vp_varient * +/** + * Translate a vertex program to create a new variant. + */ +static struct st_vp_variant * st_translate_vertex_program(struct st_context *st, struct st_vertex_program *stvp, - const struct st_vp_varient_key *key) + const struct st_vp_variant_key *key) { - struct st_vp_varient *vpv = CALLOC_STRUCT(st_vp_varient); + struct st_vp_variant *vpv = CALLOC_STRUCT(st_vp_variant); struct pipe_context *pipe = st->pipe; struct ureg_program *ureg; enum pipe_error error; unsigned num_outputs; + st_prepare_vertex_program( st, stvp ); + _mesa_remove_output_reads(&stvp->Base.Base, PROGRAM_OUTPUT); _mesa_remove_output_reads(&stvp->Base.Base, PROGRAM_VARYING); @@ -216,6 +300,8 @@ st_translate_vertex_program(struct st_context *st, return NULL; } + vpv->key = *key; + vpv->num_inputs = stvp->num_inputs; num_outputs = stvp->num_outputs; if (key->passthrough_edgeflags) { @@ -229,23 +315,22 @@ st_translate_vertex_program(struct st_context *st, debug_printf("\n"); } - error = - st_translate_mesa_program(st->ctx, - TGSI_PROCESSOR_VERTEX, - ureg, - &stvp->Base.Base, - /* inputs */ - vpv->num_inputs, - stvp->input_to_index, - NULL, /* input semantic name */ - NULL, /* input semantic index */ - NULL, - /* outputs */ - num_outputs, - stvp->result_to_output, - stvp->output_semantic_name, - stvp->output_semantic_index, - key->passthrough_edgeflags ); + error = st_translate_mesa_program(st->ctx, + TGSI_PROCESSOR_VERTEX, + ureg, + &stvp->Base.Base, + /* inputs */ + vpv->num_inputs, + stvp->input_to_index, + NULL, /* input semantic name */ + NULL, /* input semantic index */ + NULL, + /* outputs */ + num_outputs, + stvp->result_to_output, + stvp->output_semantic_name, + stvp->output_semantic_index, + key->passthrough_edgeflags ); if (error) goto fail; @@ -275,201 +360,310 @@ fail: } +/** + * Find/create a vertex program variant. + */ +struct st_vp_variant * +st_get_vp_variant(struct st_context *st, + struct st_vertex_program *stvp, + const struct st_vp_variant_key *key) +{ + struct st_vp_variant *vpv; + + /* Search for existing variant */ + for (vpv = stvp->variants; vpv; vpv = vpv->next) { + if (memcmp(&vpv->key, key, sizeof(*key)) == 0) { + break; + } + } + + if (!vpv) { + /* create now */ + vpv = st_translate_vertex_program(st, stvp, key); + if (vpv) { + /* insert into list */ + vpv->next = stvp->variants; + stvp->variants = vpv; + } + } + + return vpv; +} + /** - * Translate a Mesa fragment shader into a TGSI shader. - * \return pointer to cached pipe_shader object. + * Translate a Mesa fragment shader into a TGSI shader using extra info in + * the key. + * \return new fragment program variant */ -void +static struct st_fp_variant * st_translate_fragment_program(struct st_context *st, - struct st_fragment_program *stfp ) + struct st_fragment_program *stfp, + const struct st_fp_variant_key *key) { struct pipe_context *pipe = st->pipe; - GLuint outputMapping[FRAG_RESULT_MAX]; - GLuint inputMapping[FRAG_ATTRIB_MAX]; - GLuint interpMode[PIPE_MAX_SHADER_INPUTS]; /* XXX size? */ - GLuint attr; - enum pipe_error error; - const GLbitfield inputsRead = stfp->Base.Base.InputsRead; - struct ureg_program *ureg; + struct st_fp_variant *variant = CALLOC_STRUCT(st_fp_variant); - ubyte input_semantic_name[PIPE_MAX_SHADER_INPUTS]; - ubyte input_semantic_index[PIPE_MAX_SHADER_INPUTS]; - uint fs_num_inputs = 0; + if (!variant) + return NULL; - ubyte fs_output_semantic_name[PIPE_MAX_SHADER_OUTPUTS]; - ubyte fs_output_semantic_index[PIPE_MAX_SHADER_OUTPUTS]; - uint fs_num_outputs = 0; + assert(!(key->bitmap && key->drawpixels)); - _mesa_remove_output_reads(&stfp->Base.Base, PROGRAM_OUTPUT); + if (key->bitmap) { + /* glBitmap drawing */ + struct gl_fragment_program *fp; - /* - * Convert Mesa program inputs to TGSI input register semantics. - */ - for (attr = 0; attr < FRAG_ATTRIB_MAX; attr++) { - if (inputsRead & (1 << attr)) { - const GLuint slot = fs_num_inputs++; + st_make_bitmap_fragment_program(st, &stfp->Base, + &fp, &variant->bitmap_sampler); - inputMapping[attr] = slot; + variant->parameters = _mesa_clone_parameter_list(fp->Base.Parameters); + stfp = st_fragment_program(fp); + } + else if (key->drawpixels) { + /* glDrawPixels drawing */ + struct gl_fragment_program *fp; - switch (attr) { - case FRAG_ATTRIB_WPOS: - input_semantic_name[slot] = TGSI_SEMANTIC_POSITION; - input_semantic_index[slot] = 0; - interpMode[slot] = TGSI_INTERPOLATE_LINEAR; - break; - case FRAG_ATTRIB_COL0: - input_semantic_name[slot] = TGSI_SEMANTIC_COLOR; - input_semantic_index[slot] = 0; - interpMode[slot] = TGSI_INTERPOLATE_LINEAR; - break; - case FRAG_ATTRIB_COL1: - input_semantic_name[slot] = TGSI_SEMANTIC_COLOR; - input_semantic_index[slot] = 1; - interpMode[slot] = TGSI_INTERPOLATE_LINEAR; - break; - case FRAG_ATTRIB_FOGC: - input_semantic_name[slot] = TGSI_SEMANTIC_FOG; - input_semantic_index[slot] = 0; - interpMode[slot] = TGSI_INTERPOLATE_PERSPECTIVE; - break; - case FRAG_ATTRIB_FACE: - input_semantic_name[slot] = TGSI_SEMANTIC_FACE; - input_semantic_index[slot] = 0; - interpMode[slot] = TGSI_INTERPOLATE_CONSTANT; - break; - /* In most cases, there is nothing special about these - * inputs, so adopt a convention to use the generic - * semantic name and the mesa FRAG_ATTRIB_ number as the - * index. - * - * All that is required is that the vertex shader labels - * its own outputs similarly, and that the vertex shader - * generates at least every output required by the - * fragment shader plus fixed-function hardware (such as - * BFC). - * - * There is no requirement that semantic indexes start at - * zero or be restricted to a particular range -- nobody - * should be building tables based on semantic index. - */ - case FRAG_ATTRIB_PNTC: - case FRAG_ATTRIB_TEX0: - case FRAG_ATTRIB_TEX1: - case FRAG_ATTRIB_TEX2: - case FRAG_ATTRIB_TEX3: - case FRAG_ATTRIB_TEX4: - case FRAG_ATTRIB_TEX5: - case FRAG_ATTRIB_TEX6: - case FRAG_ATTRIB_TEX7: - case FRAG_ATTRIB_VAR0: - default: - /* Actually, let's try and zero-base this just for - * readability of the generated TGSI. - */ - assert(attr >= FRAG_ATTRIB_TEX0); - input_semantic_index[slot] = (attr - FRAG_ATTRIB_TEX0); - input_semantic_name[slot] = TGSI_SEMANTIC_GENERIC; - if (attr == FRAG_ATTRIB_PNTC) - interpMode[slot] = TGSI_INTERPOLATE_LINEAR; - else - interpMode[slot] = TGSI_INTERPOLATE_PERSPECTIVE; - break; - } + if (key->drawpixels_z || key->drawpixels_stencil) { + fp = st_make_drawpix_z_stencil_program(st, key->drawpixels_z, + key->drawpixels_stencil); } else { - inputMapping[attr] = -1; + /* RGBA */ + st_make_drawpix_fragment_program(st, &stfp->Base, &fp); + variant->parameters = _mesa_clone_parameter_list(fp->Base.Parameters); } + stfp = st_fragment_program(fp); } - /* - * Semantics and mapping for outputs - */ - { - uint numColors = 0; - GLbitfield64 outputsWritten = stfp->Base.Base.OutputsWritten; - - /* if z is written, emit that first */ - if (outputsWritten & BITFIELD64_BIT(FRAG_RESULT_DEPTH)) { - fs_output_semantic_name[fs_num_outputs] = TGSI_SEMANTIC_POSITION; - fs_output_semantic_index[fs_num_outputs] = 0; - outputMapping[FRAG_RESULT_DEPTH] = fs_num_outputs; - fs_num_outputs++; - outputsWritten &= ~(1 << FRAG_RESULT_DEPTH); - } + if (!stfp->tgsi.tokens) { + /* need to translate Mesa instructions to TGSI now */ + GLuint outputMapping[FRAG_RESULT_MAX]; + GLuint inputMapping[FRAG_ATTRIB_MAX]; + GLuint interpMode[PIPE_MAX_SHADER_INPUTS]; /* XXX size? */ + GLuint attr; + enum pipe_error error; + const GLbitfield inputsRead = stfp->Base.Base.InputsRead; + struct ureg_program *ureg; - if (outputsWritten & BITFIELD64_BIT(FRAG_RESULT_STENCIL)) { - fs_output_semantic_name[fs_num_outputs] = TGSI_SEMANTIC_STENCIL; - fs_output_semantic_index[fs_num_outputs] = 0; - outputMapping[FRAG_RESULT_STENCIL] = fs_num_outputs; - fs_num_outputs++; - outputsWritten &= ~(1 << FRAG_RESULT_STENCIL); - } + ubyte input_semantic_name[PIPE_MAX_SHADER_INPUTS]; + ubyte input_semantic_index[PIPE_MAX_SHADER_INPUTS]; + uint fs_num_inputs = 0; + + ubyte fs_output_semantic_name[PIPE_MAX_SHADER_OUTPUTS]; + ubyte fs_output_semantic_index[PIPE_MAX_SHADER_OUTPUTS]; + uint fs_num_outputs = 0; + + + _mesa_remove_output_reads(&stfp->Base.Base, PROGRAM_OUTPUT); + + /* + * Convert Mesa program inputs to TGSI input register semantics. + */ + for (attr = 0; attr < FRAG_ATTRIB_MAX; attr++) { + if (inputsRead & (1 << attr)) { + const GLuint slot = fs_num_inputs++; + + inputMapping[attr] = slot; - /* handle remaning outputs (color) */ - for (attr = 0; attr < FRAG_RESULT_MAX; attr++) { - if (outputsWritten & BITFIELD64_BIT(attr)) { switch (attr) { - case FRAG_RESULT_DEPTH: - case FRAG_RESULT_STENCIL: - /* handled above */ - assert(0); + case FRAG_ATTRIB_WPOS: + input_semantic_name[slot] = TGSI_SEMANTIC_POSITION; + input_semantic_index[slot] = 0; + interpMode[slot] = TGSI_INTERPOLATE_LINEAR; + break; + case FRAG_ATTRIB_COL0: + input_semantic_name[slot] = TGSI_SEMANTIC_COLOR; + input_semantic_index[slot] = 0; + interpMode[slot] = TGSI_INTERPOLATE_LINEAR; + break; + case FRAG_ATTRIB_COL1: + input_semantic_name[slot] = TGSI_SEMANTIC_COLOR; + input_semantic_index[slot] = 1; + interpMode[slot] = TGSI_INTERPOLATE_LINEAR; + break; + case FRAG_ATTRIB_FOGC: + input_semantic_name[slot] = TGSI_SEMANTIC_FOG; + input_semantic_index[slot] = 0; + interpMode[slot] = TGSI_INTERPOLATE_PERSPECTIVE; + break; + case FRAG_ATTRIB_FACE: + input_semantic_name[slot] = TGSI_SEMANTIC_FACE; + input_semantic_index[slot] = 0; + interpMode[slot] = TGSI_INTERPOLATE_CONSTANT; break; + /* In most cases, there is nothing special about these + * inputs, so adopt a convention to use the generic + * semantic name and the mesa FRAG_ATTRIB_ number as the + * index. + * + * All that is required is that the vertex shader labels + * its own outputs similarly, and that the vertex shader + * generates at least every output required by the + * fragment shader plus fixed-function hardware (such as + * BFC). + * + * There is no requirement that semantic indexes start at + * zero or be restricted to a particular range -- nobody + * should be building tables based on semantic index. + */ + case FRAG_ATTRIB_PNTC: + case FRAG_ATTRIB_TEX0: + case FRAG_ATTRIB_TEX1: + case FRAG_ATTRIB_TEX2: + case FRAG_ATTRIB_TEX3: + case FRAG_ATTRIB_TEX4: + case FRAG_ATTRIB_TEX5: + case FRAG_ATTRIB_TEX6: + case FRAG_ATTRIB_TEX7: + case FRAG_ATTRIB_VAR0: default: - assert(attr == FRAG_RESULT_COLOR || - (FRAG_RESULT_DATA0 <= attr && attr < FRAG_RESULT_MAX)); - fs_output_semantic_name[fs_num_outputs] = TGSI_SEMANTIC_COLOR; - fs_output_semantic_index[fs_num_outputs] = numColors; - outputMapping[attr] = fs_num_outputs; - numColors++; + /* Actually, let's try and zero-base this just for + * readability of the generated TGSI. + */ + assert(attr >= FRAG_ATTRIB_TEX0); + input_semantic_index[slot] = (attr - FRAG_ATTRIB_TEX0); + input_semantic_name[slot] = TGSI_SEMANTIC_GENERIC; + if (attr == FRAG_ATTRIB_PNTC) + interpMode[slot] = TGSI_INTERPOLATE_LINEAR; + else + interpMode[slot] = TGSI_INTERPOLATE_PERSPECTIVE; break; } + } + else { + inputMapping[attr] = -1; + } + } + /* + * Semantics and mapping for outputs + */ + { + uint numColors = 0; + GLbitfield64 outputsWritten = stfp->Base.Base.OutputsWritten; + + /* if z is written, emit that first */ + if (outputsWritten & BITFIELD64_BIT(FRAG_RESULT_DEPTH)) { + fs_output_semantic_name[fs_num_outputs] = TGSI_SEMANTIC_POSITION; + fs_output_semantic_index[fs_num_outputs] = 0; + outputMapping[FRAG_RESULT_DEPTH] = fs_num_outputs; fs_num_outputs++; + outputsWritten &= ~(1 << FRAG_RESULT_DEPTH); + } + + if (outputsWritten & BITFIELD64_BIT(FRAG_RESULT_STENCIL)) { + fs_output_semantic_name[fs_num_outputs] = TGSI_SEMANTIC_STENCIL; + fs_output_semantic_index[fs_num_outputs] = 0; + outputMapping[FRAG_RESULT_STENCIL] = fs_num_outputs; + fs_num_outputs++; + outputsWritten &= ~(1 << FRAG_RESULT_STENCIL); + } + + /* handle remaning outputs (color) */ + for (attr = 0; attr < FRAG_RESULT_MAX; attr++) { + if (outputsWritten & BITFIELD64_BIT(attr)) { + switch (attr) { + case FRAG_RESULT_DEPTH: + case FRAG_RESULT_STENCIL: + /* handled above */ + assert(0); + break; + default: + assert(attr == FRAG_RESULT_COLOR || + (FRAG_RESULT_DATA0 <= attr && attr < FRAG_RESULT_MAX)); + fs_output_semantic_name[fs_num_outputs] = TGSI_SEMANTIC_COLOR; + fs_output_semantic_index[fs_num_outputs] = numColors; + outputMapping[attr] = fs_num_outputs; + numColors++; + break; + } + + fs_num_outputs++; + } } } - } - ureg = ureg_create( TGSI_PROCESSOR_FRAGMENT ); - if (ureg == NULL) - return; + ureg = ureg_create( TGSI_PROCESSOR_FRAGMENT ); + if (ureg == NULL) + return NULL; - if (ST_DEBUG & DEBUG_MESA) { - _mesa_print_program(&stfp->Base.Base); - _mesa_print_program_parameters(st->ctx, &stfp->Base.Base); - debug_printf("\n"); + if (ST_DEBUG & DEBUG_MESA) { + _mesa_print_program(&stfp->Base.Base); + _mesa_print_program_parameters(st->ctx, &stfp->Base.Base); + debug_printf("\n"); + } + + error = st_translate_mesa_program(st->ctx, + TGSI_PROCESSOR_FRAGMENT, + ureg, + &stfp->Base.Base, + /* inputs */ + fs_num_inputs, + inputMapping, + input_semantic_name, + input_semantic_index, + interpMode, + /* outputs */ + fs_num_outputs, + outputMapping, + fs_output_semantic_name, + fs_output_semantic_index, FALSE ); + + stfp->tgsi.tokens = ureg_get_tokens( ureg, NULL ); + ureg_destroy( ureg ); } - error = - st_translate_mesa_program(st->ctx, - TGSI_PROCESSOR_FRAGMENT, - ureg, - &stfp->Base.Base, - /* inputs */ - fs_num_inputs, - inputMapping, - input_semantic_name, - input_semantic_index, - interpMode, - /* outputs */ - fs_num_outputs, - outputMapping, - fs_output_semantic_name, - fs_output_semantic_index, FALSE ); - - stfp->tgsi.tokens = ureg_get_tokens( ureg, NULL ); - ureg_destroy( ureg ); - stfp->driver_shader = pipe->create_fs_state(pipe, &stfp->tgsi); + /* fill in variant */ + variant->driver_shader = pipe->create_fs_state(pipe, &stfp->tgsi); + variant->key = *key; if (ST_DEBUG & DEBUG_TGSI) { tgsi_dump( stfp->tgsi.tokens, 0/*TGSI_DUMP_VERBOSE*/ ); debug_printf("\n"); } + + return variant; } -void + +/** + * Translate fragment program if needed. + */ +struct st_fp_variant * +st_get_fp_variant(struct st_context *st, + struct st_fragment_program *stfp, + const struct st_fp_variant_key *key) +{ + struct st_fp_variant *fpv; + + /* Search for existing variant */ + for (fpv = stfp->variants; fpv; fpv = fpv->next) { + if (memcmp(&fpv->key, key, sizeof(*key)) == 0) { + break; + } + } + + if (!fpv) { + /* create new */ + fpv = st_translate_fragment_program(st, stfp, key); + if (fpv) { + /* insert into list */ + fpv->next = stfp->variants; + stfp->variants = fpv; + } + } + + return fpv; +} + + +/** + * Translate a geometry program to create a new variant. + */ +static struct st_gp_variant * st_translate_geometry_program(struct st_context *st, - struct st_geometry_program *stgp) + struct st_geometry_program *stgp, + const struct st_gp_variant_key *key) { GLuint inputMapping[GEOM_ATTRIB_MAX]; GLuint outputMapping[GEOM_RESULT_MAX]; @@ -492,12 +686,19 @@ st_translate_geometry_program(struct st_context *st, GLuint maxSlot = 0; struct ureg_program *ureg; + struct st_gp_variant *gpv; + + gpv = CALLOC_STRUCT(st_gp_variant); + if (!gpv) + return NULL; + _mesa_remove_output_reads(&stgp->Base.Base, PROGRAM_OUTPUT); _mesa_remove_output_reads(&stgp->Base.Base, PROGRAM_VARYING); ureg = ureg_create( TGSI_PROCESSOR_GEOMETRY ); if (ureg == NULL) { - return; + FREE(gpv); + return NULL; } /* which vertex output goes to the first geometry input */ @@ -527,7 +728,7 @@ st_translate_geometry_program(struct st_context *st, } else ++gs_builtin_inputs; -#if 1 +#if 0 debug_printf("input map at %d = %d\n", slot + gs_array_offset, stgp->input_map[slot + gs_array_offset]); #endif @@ -669,37 +870,35 @@ st_translate_geometry_program(struct st_context *st, st_free_tokens(stgp->tgsi.tokens); stgp->tgsi.tokens = NULL; } - if (stgp->driver_shader) { - cso_delete_geometry_shader(st->cso_context, stgp->driver_shader); - stgp->driver_shader = NULL; - } ureg_property_gs_input_prim(ureg, stgp->Base.InputType); ureg_property_gs_output_prim(ureg, stgp->Base.OutputType); ureg_property_gs_max_vertices(ureg, stgp->Base.VerticesOut); - error = st_translate_mesa_program(st->ctx, - TGSI_PROCESSOR_GEOMETRY, - ureg, - &stgp->Base.Base, - /* inputs */ - gs_num_inputs, - inputMapping, - stgp->input_semantic_name, - stgp->input_semantic_index, - NULL, - /* outputs */ - gs_num_outputs, - outputMapping, - gs_output_semantic_name, - gs_output_semantic_index, - FALSE); - + error = st_translate_mesa_program(st->ctx, + TGSI_PROCESSOR_GEOMETRY, + ureg, + &stgp->Base.Base, + /* inputs */ + gs_num_inputs, + inputMapping, + stgp->input_semantic_name, + stgp->input_semantic_index, + NULL, + /* outputs */ + gs_num_outputs, + outputMapping, + gs_output_semantic_name, + gs_output_semantic_index, + FALSE); stgp->num_inputs = gs_num_inputs; stgp->tgsi.tokens = ureg_get_tokens( ureg, NULL ); ureg_destroy( ureg ); - stgp->driver_shader = pipe->create_gs_state(pipe, &stgp->tgsi); + + /* fill in new variant */ + gpv->driver_shader = pipe->create_gs_state(pipe, &stgp->tgsi); + gpv->key = *key; if ((ST_DEBUG & DEBUG_TGSI) && (ST_DEBUG & DEBUG_MESA)) { _mesa_print_program(&stgp->Base.Base); @@ -710,8 +909,44 @@ st_translate_geometry_program(struct st_context *st, tgsi_dump(stgp->tgsi.tokens, 0); debug_printf("\n"); } + + return gpv; } + +/** + * Get/create geometry program variant. + */ +struct st_gp_variant * +st_get_gp_variant(struct st_context *st, + struct st_geometry_program *stgp, + const struct st_gp_variant_key *key) +{ + struct st_gp_variant *gpv; + + /* Search for existing variant */ + for (gpv = stgp->variants; gpv; gpv = gpv->next) { + if (memcmp(&gpv->key, key, sizeof(*key)) == 0) { + break; + } + } + + if (!gpv) { + /* create new */ + gpv = st_translate_geometry_program(st, stgp, key); + if (gpv) { + /* insert into list */ + gpv->next = stgp->variants; + stgp->variants = gpv; + } + } + + return gpv; +} + + + + /** * Debug- print current shader text */ @@ -757,3 +992,155 @@ st_print_shaders(struct gl_context *ctx) } } } + + +/** + * Vert/Geom/Frag programs have per-context variants. Free all the + * variants attached to the given program which match the given context. + */ +static void +destroy_program_variants(struct st_context *st, struct gl_program *program) +{ + if (!program) + return; + + switch (program->Target) { + case GL_VERTEX_PROGRAM_ARB: + { + struct st_vertex_program *stvp = (struct st_vertex_program *) program; + struct st_vp_variant *vpv, **prevPtr = &stvp->variants; + + for (vpv = stvp->variants; vpv; ) { + struct st_vp_variant *next = vpv->next; + if (vpv->key.st == st) { + /* unlink from list */ + *prevPtr = next; + /* destroy this variant */ + delete_vp_variant(st, vpv); + } + else { + prevPtr = &vpv->next; + } + vpv = next; + } + } + break; + case GL_FRAGMENT_PROGRAM_ARB: + { + struct st_fragment_program *stfp = + (struct st_fragment_program *) program; + struct st_fp_variant *fpv, **prevPtr = &stfp->variants; + + for (fpv = stfp->variants; fpv; ) { + struct st_fp_variant *next = fpv->next; + if (fpv->key.st == st) { + /* unlink from list */ + *prevPtr = next; + /* destroy this variant */ + delete_fp_variant(st, fpv); + } + else { + prevPtr = &fpv->next; + } + fpv = next; + } + } + break; + case MESA_GEOMETRY_PROGRAM: + { + struct st_geometry_program *stgp = + (struct st_geometry_program *) program; + struct st_gp_variant *gpv, **prevPtr = &stgp->variants; + + for (gpv = stgp->variants; gpv; ) { + struct st_gp_variant *next = gpv->next; + if (gpv->key.st == st) { + /* unlink from list */ + *prevPtr = next; + /* destroy this variant */ + delete_gp_variant(st, gpv); + } + else { + prevPtr = &gpv->next; + } + gpv = next; + } + } + break; + default: + _mesa_problem(NULL, "Unexpected program target in " + "destroy_program_variants_cb()"); + } +} + + +/** + * Callback for _mesa_HashWalk. Free all the shader's program variants + * which match the given context. + */ +static void +destroy_shader_program_variants_cb(GLuint key, void *data, void *userData) +{ + struct st_context *st = (struct st_context *) userData; + struct gl_shader *shader = (struct gl_shader *) data; + + switch (shader->Type) { + case GL_SHADER_PROGRAM_MESA: + { + struct gl_shader_program *shProg = (struct gl_shader_program *) data; + GLuint i; + + for (i = 0; i < shProg->NumShaders; i++) { + destroy_program_variants(st, shProg->Shaders[i]->Program); + } + + destroy_program_variants(st, (struct gl_program *) + shProg->VertexProgram); + destroy_program_variants(st, (struct gl_program *) + shProg->FragmentProgram); + destroy_program_variants(st, (struct gl_program *) + shProg->GeometryProgram); + } + break; + case GL_VERTEX_SHADER: + case GL_FRAGMENT_SHADER: + case GL_GEOMETRY_SHADER: + { + destroy_program_variants(st, shader->Program); + } + break; + default: + assert(0); + } +} + + +/** + * Callback for _mesa_HashWalk. Free all the program variants which match + * the given context. + */ +static void +destroy_program_variants_cb(GLuint key, void *data, void *userData) +{ + struct st_context *st = (struct st_context *) userData; + struct gl_program *program = (struct gl_program *) data; + destroy_program_variants(st, program); +} + + +/** + * Walk over all shaders and programs to delete any variants which + * belong to the given context. + * This is called during context tear-down. + */ +void +st_destroy_program_variants(struct st_context *st) +{ + /* ARB vert/frag program */ + _mesa_HashWalk(st->ctx->Shared->Programs, + destroy_program_variants_cb, st); + + /* GLSL vert/frag/geom shaders */ + _mesa_HashWalk(st->ctx->Shared->ShaderObjects, + destroy_shader_program_variants_cb, st); +} diff --git a/src/mesa/state_tracker/st_program.h b/src/mesa/state_tracker/st_program.h index 72dbc715fe1..c4244df939e 100644 --- a/src/mesa/state_tracker/st_program.h +++ b/src/mesa/state_tracker/st_program.h @@ -40,26 +40,61 @@ #include "st_context.h" +/** Fragment program variant key */ +struct st_fp_variant_key +{ + struct st_context *st; /**< variants are per-context */ + + /** for glBitmap */ + GLuint bitmap:1; /**< glBitmap variant? */ + + /** for glDrawPixels */ + GLuint drawpixels:1; /**< glDrawPixels variant */ + GLuint scaleAndBias:1; /**< glDrawPixels w/ scale and/or bias? */ + GLuint pixelMaps:1; /**< glDrawPixels w/ pixel lookup map? */ + GLuint drawpixels_z:1; /**< glDrawPixels(GL_DEPTH) */ + GLuint drawpixels_stencil:1; /**< glDrawPixels(GL_STENCIL) */ +}; + + +/** + * Variant of a fragment program. + */ +struct st_fp_variant +{ + /** Parameters which generated this version of fragment program */ + struct st_fp_variant_key key; + + /** Driver's compiled shader */ + void *driver_shader; + + /** For glBitmap variants */ + struct gl_program_parameter_list *parameters; + uint bitmap_sampler; + + /** next in linked list */ + struct st_fp_variant *next; +}; + + /** * Derived from Mesa gl_fragment_program: */ struct st_fragment_program { struct gl_fragment_program Base; - GLuint serialNo; struct pipe_shader_state tgsi; - void *driver_shader; - /** Program prefixed with glBitmap prologue */ - struct st_fragment_program *bitmap_program; - uint bitmap_sampler; + struct st_fp_variant *variants; }; -struct st_vp_varient_key +/** Vertex program variant key */ +struct st_vp_variant_key { + struct st_context *st; /**< variants are per-context */ boolean passthrough_edgeflags; }; @@ -68,12 +103,12 @@ struct st_vp_varient_key * This represents a vertex program, especially translated to match * the inputs of a particular fragment shader. */ -struct st_vp_varient +struct st_vp_variant { /* Parameters which generated this translated version of a vertex * shader: */ - struct st_vp_varient_key key; + struct st_vp_variant_key key; /** * TGSI tokens (to later generate a 'draw' module shader for @@ -88,9 +123,9 @@ struct st_vp_varient struct draw_vertex_shader *draw_shader; /** Next in linked list */ - struct st_vp_varient *next; + struct st_vp_variant *next; - /** similar to that in st_vertex_program, but with information about edgeflags too */ + /** similar to that in st_vertex_program, but with edgeflags info too */ GLuint num_inputs; }; @@ -101,7 +136,6 @@ struct st_vp_varient struct st_vertex_program { struct gl_vertex_program Base; /**< The Mesa vertex program */ - GLuint serialNo, lastSerialNo; /** maps a Mesa VERT_ATTRIB_x to a packed TGSI input index */ GLuint input_to_index[VERT_ATTRIB_MAX]; @@ -115,18 +149,41 @@ struct st_vertex_program ubyte output_semantic_index[VERT_RESULT_MAX]; GLuint num_outputs; - /** List of translated varients of this vertex program. + /** List of translated variants of this vertex program. */ - struct st_vp_varient *varients; + struct st_vp_variant *variants; +}; + + + +/** Geometry program variant key */ +struct st_gp_variant_key +{ + struct st_context *st; /**< variants are per-context */ + /* no other fields yet */ +}; + + +/** + * Geometry program variant. + */ +struct st_gp_variant +{ + /* Parameters which generated this translated version of a vertex */ + struct st_gp_variant_key key; + + void *driver_shader; + + struct st_gp_variant *next; }; + /** * Derived from Mesa gl_geometry_program: */ struct st_geometry_program { struct gl_geometry_program Base; /**< The Mesa geometry program */ - GLuint serialNo; /** map GP input back to VP output */ GLuint input_map[PIPE_MAX_SHADER_INPUTS]; @@ -145,9 +202,12 @@ struct st_geometry_program ubyte input_semantic_index[PIPE_MAX_SHADER_INPUTS]; struct pipe_shader_state tgsi; - void *driver_shader; + + struct st_gp_variant *variants; }; + + static INLINE struct st_fragment_program * st_fragment_program( struct gl_fragment_program *fp ) { @@ -162,9 +222,9 @@ st_vertex_program( struct gl_vertex_program *vp ) } static INLINE struct st_geometry_program * -st_geometry_program( struct gl_geometry_program *vp ) +st_geometry_program( struct gl_geometry_program *gp ) { - return (struct st_geometry_program *)vp; + return (struct st_geometry_program *)gp; } static INLINE void @@ -198,32 +258,43 @@ st_reference_fragprog(struct st_context *st, } -extern void -st_translate_fragment_program(struct st_context *st, - struct st_fragment_program *fp); +extern struct st_vp_variant * +st_get_vp_variant(struct st_context *st, + struct st_vertex_program *stvp, + const struct st_vp_variant_key *key); + + +extern struct st_fp_variant * +st_get_fp_variant(struct st_context *st, + struct st_fragment_program *stfp, + const struct st_fp_variant_key *key); + + +extern struct st_gp_variant * +st_get_gp_variant(struct st_context *st, + struct st_geometry_program *stgp, + const struct st_gp_variant_key *key); + + extern void -st_translate_geometry_program(struct st_context *st, - struct st_geometry_program *stgp); +st_release_vp_variants( struct st_context *st, + struct st_vertex_program *stvp ); -/* Called after program string change, discard all previous - * compilation results. - */ extern void -st_prepare_vertex_program(struct st_context *st, - struct st_vertex_program *stvp); +st_release_fp_variants( struct st_context *st, + struct st_fragment_program *stfp ); -extern struct st_vp_varient * -st_translate_vertex_program(struct st_context *st, - struct st_vertex_program *stvp, - const struct st_vp_varient_key *key); +extern void +st_release_gp_variants(struct st_context *st, + struct st_geometry_program *stgp); -void -st_vp_release_varients( struct st_context *st, - struct st_vertex_program *stvp ); extern void st_print_shaders(struct gl_context *ctx); +extern void +st_destroy_program_variants(struct st_context *st); + #endif diff --git a/src/mesa/state_tracker/st_texture.c b/src/mesa/state_tracker/st_texture.c index c6cf2ba061b..155ea39f18c 100644 --- a/src/mesa/state_tracker/st_texture.c +++ b/src/mesa/state_tracker/st_texture.c @@ -84,6 +84,7 @@ st_texture_create(struct st_context *st, pt.width0 = width0; pt.height0 = height0; pt.depth0 = depth0; + pt.array_size = (target == PIPE_TEXTURE_CUBE ? 6 : 1); pt.usage = PIPE_USAGE_DEFAULT; pt.bind = bind; pt.flags = 0; @@ -136,7 +137,7 @@ st_texture_match_image(const struct pipe_resource *pt, */ GLubyte * st_texture_image_map(struct st_context *st, struct st_texture_image *stImage, - GLuint zoffset, enum pipe_transfer_usage usage, + GLuint zoffset, enum pipe_transfer_usage usage, GLuint x, GLuint y, GLuint w, GLuint h) { struct pipe_context *pipe = st->pipe; @@ -144,9 +145,9 @@ st_texture_image_map(struct st_context *st, struct st_texture_image *stImage, DBG("%s \n", __FUNCTION__); - stImage->transfer = pipe_get_transfer(st->pipe, pt, stImage->face, - stImage->level, zoffset, - usage, x, y, w, h); + stImage->transfer = pipe_get_transfer(st->pipe, pt, stImage->level, + stImage->face + zoffset, + usage, x, y, w, h); if (stImage->transfer) return pipe_transfer_map(pipe, stImage->transfer); @@ -219,10 +220,10 @@ st_texture_image_data(struct st_context *st, DBG("%s\n", __FUNCTION__); for (i = 0; i < depth; i++) { - dst_transfer = pipe_get_transfer(st->pipe, dst, face, level, i, - PIPE_TRANSFER_WRITE, 0, 0, - u_minify(dst->width0, level), - u_minify(dst->height0, level)); + dst_transfer = pipe_get_transfer(st->pipe, dst, level, face + i, + PIPE_TRANSFER_WRITE, 0, 0, + u_minify(dst->width0, level), + u_minify(dst->height0, level)); st_surface_data(pipe, dst_transfer, 0, 0, /* dstx, dsty */ @@ -230,7 +231,7 @@ st_texture_image_data(struct st_context *st, src_row_stride, 0, 0, /* source x, y */ u_minify(dst->width0, level), - u_minify(dst->height0, level)); /* width, height */ + u_minify(dst->height0, level)); /* width, height */ pipe->transfer_destroy(pipe, dst_transfer); @@ -245,14 +246,10 @@ st_texture_image_data(struct st_context *st, static void print_center_pixel(struct pipe_context *pipe, struct pipe_resource *src) { - struct pipe_subresource rect; struct pipe_transfer *xfer; struct pipe_box region; ubyte *map; - rect.face = 0; - rect.level = 0; - region.x = src->width0 / 2; region.y = src->height0 / 2; region.z = 0; @@ -260,7 +257,7 @@ print_center_pixel(struct pipe_context *pipe, struct pipe_resource *src) region.height = 1; region.depth = 1; - xfer = pipe->get_transfer(pipe, src, rect, PIPE_TRANSFER_READ, ®ion); + xfer = pipe->get_transfer(pipe, src, 0, PIPE_TRANSFER_READ, ®ion); map = pipe->transfer_map(pipe, xfer); printf("center pixel: %d %d %d %d\n", map[0], map[1], map[2], map[3]); @@ -282,22 +279,26 @@ st_texture_image_copy(struct pipe_context *pipe, struct pipe_resource *src, GLuint srcLevel, GLuint face) { - GLuint width = u_minify(dst->width0, dstLevel); - GLuint height = u_minify(dst->height0, dstLevel); - GLuint depth = u_minify(dst->depth0, dstLevel); - struct pipe_subresource dstsub, srcsub; + GLuint width = u_minify(dst->width0, dstLevel); + GLuint height = u_minify(dst->height0, dstLevel); + GLuint depth = u_minify(dst->depth0, dstLevel); + struct pipe_box src_box; GLuint i; assert(u_minify(src->width0, srcLevel) == width); assert(u_minify(src->height0, srcLevel) == height); assert(u_minify(src->depth0, srcLevel) == depth); - dstsub.face = face; - dstsub.level = dstLevel; - srcsub.face = face; - srcsub.level = srcLevel; + src_box.x = 0; + src_box.y = 0; + src_box.width = width; + src_box.height = height; + src_box.depth = 1; /* Loop over 3D image slices */ - for (i = 0; i < depth; i++) { + /* could (and probably should) use "true" 3d box here - + but drivers can't quite handle it yet */ + for (i = face; i < face + depth; i++) { + src_box.z = i; if (0) { print_center_pixel(pipe, src); @@ -305,12 +306,11 @@ st_texture_image_copy(struct pipe_context *pipe, pipe->resource_copy_region(pipe, dst, - dstsub, + dstLevel, 0, 0, i,/* destX, Y, Z */ src, - srcsub, - 0, 0, i,/* srcX, Y, Z */ - width, height); + srcLevel, + &src_box); } } diff --git a/src/mesa/swrast/s_blend.c b/src/mesa/swrast/s_blend.c index 1a550c445d3..d61baba0f33 100644 --- a/src/mesa/swrast/s_blend.c +++ b/src/mesa/swrast/s_blend.c @@ -819,7 +819,16 @@ static void blend_general(struct gl_context *ctx, GLuint n, const GLubyte mask[], void *src, const void *dst, GLenum chanType) { - GLfloat rgbaF[MAX_WIDTH][4], destF[MAX_WIDTH][4]; + GLfloat (*rgbaF)[4], (*destF)[4]; + + rgbaF = (GLfloat (*)[4]) malloc(4 * n * sizeof(GLfloat)); + destF = (GLfloat (*)[4]) malloc(4 * n * sizeof(GLfloat)); + if (!rgbaF || !destF) { + free(rgbaF); + free(destF); + _mesa_error(ctx, GL_OUT_OF_MEMORY, "blending"); + return; + } if (chanType == GL_UNSIGNED_BYTE) { GLubyte (*rgba)[4] = (GLubyte (*)[4]) src; @@ -883,6 +892,9 @@ blend_general(struct gl_context *ctx, GLuint n, const GLubyte mask[], blend_general_float(ctx, n, mask, (GLfloat (*)[4]) src, (GLfloat (*)[4]) dst, chanType); } + + free(rgbaF); + free(destF); } diff --git a/src/mesa/swrast/s_drawpix.c b/src/mesa/swrast/s_drawpix.c index 4e9b5307cc7..4d0666898b4 100644 --- a/src/mesa/swrast/s_drawpix.c +++ b/src/mesa/swrast/s_drawpix.c @@ -720,13 +720,16 @@ _swrast_DrawPixels( struct gl_context *ctx, if (swrast->NewState) _swrast_validate_derived( ctx ); - pixels = _mesa_map_pbo_source(ctx, unpack, pixels); - if (!pixels) { - swrast_render_finish(ctx); - _mesa_set_vp_override(ctx, save_vp_override); - return; - } + pixels = _mesa_map_pbo_source(ctx, unpack, pixels); + if (!pixels) { + swrast_render_finish(ctx); + _mesa_set_vp_override(ctx, save_vp_override); + return; + } + /* + * By time we get here, all error checking should have been done. + */ switch (format) { case GL_STENCIL_INDEX: draw_stencil_pixels( ctx, x, y, width, height, type, unpack, pixels ); @@ -734,27 +737,12 @@ _swrast_DrawPixels( struct gl_context *ctx, case GL_DEPTH_COMPONENT: draw_depth_pixels( ctx, x, y, width, height, type, unpack, pixels ); break; - case GL_COLOR_INDEX: - case GL_RED: - case GL_GREEN: - case GL_BLUE: - case GL_ALPHA: - case GL_LUMINANCE: - case GL_LUMINANCE_ALPHA: - case GL_RGB: - case GL_BGR: - case GL_RGBA: - case GL_BGRA: - case GL_ABGR_EXT: - draw_rgba_pixels(ctx, x, y, width, height, format, type, unpack, pixels); - break; case GL_DEPTH_STENCIL_EXT: - draw_depth_stencil_pixels(ctx, x, y, width, height, - type, unpack, pixels); + draw_depth_stencil_pixels(ctx, x, y, width, height, type, unpack, pixels); break; default: - _mesa_problem(ctx, "unexpected format 0x%x in _swrast_DrawPixels", format); - /* don't return yet, clean-up */ + /* all other formats should be color formats */ + draw_rgba_pixels(ctx, x, y, width, height, format, type, unpack, pixels); } swrast_render_finish(ctx); diff --git a/src/mesa/swrast/s_readpix.c b/src/mesa/swrast/s_readpix.c index 5e6356c0d54..9fe0752a37f 100644 --- a/src/mesa/swrast/s_readpix.c +++ b/src/mesa/swrast/s_readpix.c @@ -476,49 +476,33 @@ _swrast_ReadPixels( struct gl_context *ctx, _swrast_validate_derived( ctx ); /* Do all needed clipping here, so that we can forget about it later */ - if (!_mesa_clip_readpixels(ctx, &x, &y, &width, &height, &clippedPacking)) { - /* The ReadPixels region is totally outside the window bounds */ - swrast_render_finish(ctx); - return; - } - - pixels = _mesa_map_pbo_dest(ctx, &clippedPacking, pixels); - if (!pixels) - return; - - switch (format) { - case GL_STENCIL_INDEX: - read_stencil_pixels(ctx, x, y, width, height, type, pixels, + if (_mesa_clip_readpixels(ctx, &x, &y, &width, &height, &clippedPacking)) { + + pixels = _mesa_map_pbo_dest(ctx, &clippedPacking, pixels); + + if (pixels) { + switch (format) { + case GL_STENCIL_INDEX: + read_stencil_pixels(ctx, x, y, width, height, type, pixels, + &clippedPacking); + break; + case GL_DEPTH_COMPONENT: + read_depth_pixels(ctx, x, y, width, height, type, pixels, + &clippedPacking); + break; + case GL_DEPTH_STENCIL_EXT: + read_depth_stencil_pixels(ctx, x, y, width, height, type, pixels, + &clippedPacking); + break; + default: + /* all other formats should be color formats */ + read_rgba_pixels(ctx, x, y, width, height, format, type, pixels, &clippedPacking); - break; - case GL_DEPTH_COMPONENT: - read_depth_pixels(ctx, x, y, width, height, type, pixels, - &clippedPacking); - break; - case GL_RED: - case GL_GREEN: - case GL_BLUE: - case GL_ALPHA: - case GL_RGB: - case GL_LUMINANCE: - case GL_LUMINANCE_ALPHA: - case GL_RGBA: - case GL_BGR: - case GL_BGRA: - case GL_ABGR_EXT: - read_rgba_pixels(ctx, x, y, width, height, - format, type, pixels, &clippedPacking); - break; - case GL_DEPTH_STENCIL_EXT: - read_depth_stencil_pixels(ctx, x, y, width, height, - type, pixels, &clippedPacking); - break; - default: - _mesa_problem(ctx, "unexpected format 0x%x in _swrast_ReadPixels", format); - /* don't return yet, clean-up */ + } + + _mesa_unmap_pbo_dest(ctx, &clippedPacking); + } } swrast_render_finish(ctx); - - _mesa_unmap_pbo_dest(ctx, &clippedPacking); } diff --git a/src/mesa/swrast/s_texcombine.c b/src/mesa/swrast/s_texcombine.c index 1836d074aee..99c44413fbe 100644 --- a/src/mesa/swrast/s_texcombine.c +++ b/src/mesa/swrast/s_texcombine.c @@ -86,10 +86,28 @@ texture_combine( struct gl_context *ctx, GLuint unit, GLuint n, const GLfloat scaleA = (GLfloat) (1 << combine->ScaleShiftA); const GLuint numArgsRGB = combine->_NumArgsRGB; const GLuint numArgsA = combine->_NumArgsA; - GLfloat ccolor[MAX_COMBINER_TERMS][MAX_WIDTH][4]; /* temp color buffers */ - GLfloat rgba[MAX_WIDTH][4]; + float4_array ccolor[4], rgba; GLuint i, term; + /* alloc temp pixel buffers */ + rgba = (float4_array) malloc(4 * n * sizeof(GLfloat)); + if (!rgba) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "texture_combine"); + return; + } + + for (i = 0; i < numArgsRGB || i < numArgsA; i++) { + ccolor[i] = (float4_array) malloc(4 * n * sizeof(GLfloat)); + if (!ccolor[i]) { + while (i) { + free(ccolor[i]); + i--; + } + _mesa_error(ctx, GL_OUT_OF_MEMORY, "texture_combine"); + return; + } + } + for (i = 0; i < n; i++) { rgba[i][RCOMP] = CHAN_TO_FLOAT(rgbaChan[i][RCOMP]); rgba[i][GCOMP] = CHAN_TO_FLOAT(rgbaChan[i][GCOMP]); @@ -163,7 +181,7 @@ texture_combine( struct gl_context *ctx, GLuint unit, GLuint n, const GLuint srcUnit = srcRGB - GL_TEXTURE0; ASSERT(srcUnit < ctx->Const.MaxTextureUnits); if (!ctx->Texture.Unit[srcUnit]._ReallyEnabled) - return; + goto end; argRGB[term] = get_texel_array(swrast, srcUnit); } } @@ -253,7 +271,7 @@ texture_combine( struct gl_context *ctx, GLuint unit, GLuint n, const GLuint srcUnit = srcA - GL_TEXTURE0; ASSERT(srcUnit < ctx->Const.MaxTextureUnits); if (!ctx->Texture.Unit[srcUnit]._ReallyEnabled) - return; + goto end; argA[term] = get_texel_array(swrast, srcUnit); } } @@ -411,7 +429,7 @@ texture_combine( struct gl_context *ctx, GLuint unit, GLuint n, rgba[i][BCOMP] = 0.0; rgba[i][ACOMP] = 1.0; } - return; /* no alpha processing */ + goto end; /* no alpha processing */ default: _mesa_problem(ctx, "invalid combine mode"); } @@ -519,6 +537,12 @@ texture_combine( struct gl_context *ctx, GLuint unit, GLuint n, UNCLAMPED_FLOAT_TO_CHAN(rgbaChan[i][BCOMP], rgba[i][BCOMP]); UNCLAMPED_FLOAT_TO_CHAN(rgbaChan[i][ACOMP], rgba[i][ACOMP]); } + +end: + for (i = 0; i < numArgsRGB || i < numArgsA; i++) { + free(ccolor[i]); + } + free(rgba); } @@ -559,9 +583,16 @@ void _swrast_texture_span( struct gl_context *ctx, SWspan *span ) { SWcontext *swrast = SWRAST_CONTEXT(ctx); - GLfloat primary_rgba[MAX_WIDTH][4]; + float4_array primary_rgba; GLuint unit; + primary_rgba = (float4_array) malloc(span->end * 4 * sizeof(GLfloat)); + + if (!primary_rgba) { + _mesa_error(ctx, GL_OUT_OF_MEMORY, "texture_span"); + return; + } + ASSERT(span->end <= MAX_WIDTH); /* @@ -706,4 +737,6 @@ _swrast_texture_span( struct gl_context *ctx, SWspan *span ) span->array->rgba ); } } + + free(primary_rgba); } diff --git a/src/mesa/swrast/s_texfilter.c b/src/mesa/swrast/s_texfilter.c index ec281776d0d..539d878ddb4 100644 --- a/src/mesa/swrast/s_texfilter.c +++ b/src/mesa/swrast/s_texfilter.c @@ -1371,6 +1371,7 @@ opt_sample_rgb_2d(struct gl_context *ctx, rgba[k][RCOMP] = UBYTE_TO_FLOAT(texel[2]); rgba[k][GCOMP] = UBYTE_TO_FLOAT(texel[1]); rgba[k][BCOMP] = UBYTE_TO_FLOAT(texel[0]); + rgba[k][ACOMP] = 1.0F; } } diff --git a/src/mesa/tnl/t_vb_program.c b/src/mesa/tnl/t_vb_program.c index 76f8fde3f52..94372bbafbc 100644 --- a/src/mesa/tnl/t_vb_program.c +++ b/src/mesa/tnl/t_vb_program.c @@ -67,6 +67,8 @@ struct vp_stage_data { GLvector4f ndcCoords; /**< normalized device coords */ GLubyte *clipmask; /**< clip flags */ GLubyte ormask, andmask; /**< for clipping */ + + struct gl_program_machine machine; }; @@ -311,7 +313,7 @@ run_vp( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) struct vp_stage_data *store = VP_STAGE_DATA(stage); struct vertex_buffer *VB = &tnl->vb; struct gl_vertex_program *program = ctx->VertexProgram._Current; - struct gl_program_machine machine; + struct gl_program_machine *machine = &store->machine; GLuint outputs[VERT_RESULT_MAX], numOutputs; GLuint i, j; @@ -339,7 +341,7 @@ run_vp( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) for (i = 0; i < VB->Count; i++) { GLuint attr; - init_machine(ctx, &machine); + init_machine(ctx, machine); #if 0 printf("Input %d: %f, %f, %f, %f\n", i, @@ -372,23 +374,23 @@ run_vp( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) check_float(data[2]); check_float(data[3]); #endif - COPY_CLEAN_4V(machine.VertAttribs[attr], size, data); + COPY_CLEAN_4V(machine->VertAttribs[attr], size, data); } } /* execute the program */ - _mesa_execute_program(ctx, &program->Base, &machine); + _mesa_execute_program(ctx, &program->Base, machine); /* copy the output registers into the VB->attribs arrays */ for (j = 0; j < numOutputs; j++) { const GLuint attr = outputs[j]; #ifdef NAN_CHECK - check_float(machine.Outputs[attr][0]); - check_float(machine.Outputs[attr][1]); - check_float(machine.Outputs[attr][2]); - check_float(machine.Outputs[attr][3]); + check_float(machine->Outputs[attr][0]); + check_float(machine->Outputs[attr][1]); + check_float(machine->Outputs[attr][2]); + check_float(machine->Outputs[attr][3]); #endif - COPY_4V(store->results[attr].data[i], machine.Outputs[attr]); + COPY_4V(store->results[attr].data[i], machine->Outputs[attr]); } /* FOGC is a special case. Fragment shader expects (f,0,0,1) */ @@ -398,14 +400,14 @@ run_vp( struct gl_context *ctx, struct tnl_pipeline_stage *stage ) store->results[VERT_RESULT_FOGC].data[i][3] = 1.0; } #ifdef NAN_CHECK - ASSERT(machine.Outputs[0][3] != 0.0F); + ASSERT(machine->Outputs[0][3] != 0.0F); #endif #if 0 printf("HPOS: %f %f %f %f\n", - machine.Outputs[0][0], - machine.Outputs[0][1], - machine.Outputs[0][2], - machine.Outputs[0][3]); + machine->Outputs[0][0], + machine->Outputs[0][1], + machine->Outputs[0][2], + machine->Outputs[0][3]); #endif } @@ -501,7 +503,7 @@ init_vp(struct gl_context *ctx, struct tnl_pipeline_stage *stage) const GLuint size = VB->Size; GLuint i; - stage->privatePtr = MALLOC(sizeof(*store)); + stage->privatePtr = CALLOC(sizeof(*store)); store = VP_STAGE_DATA(stage); if (!store) return GL_FALSE; diff --git a/src/mesa/vbo/vbo.h b/src/mesa/vbo/vbo.h index 7b8da8eb843..79f76655354 100644 --- a/src/mesa/vbo/vbo.h +++ b/src/mesa/vbo/vbo.h @@ -40,7 +40,8 @@ struct _mesa_prim { GLuint begin:1; GLuint end:1; GLuint weak:1; - GLuint pad:20; + GLuint no_current_update:1; + GLuint pad:19; GLuint start; GLuint count; @@ -128,42 +129,42 @@ void vbo_set_draw_func(struct gl_context *ctx, vbo_draw_func func); void GLAPIENTRY -_vbo_Color4f(GLfloat r, GLfloat g, GLfloat b, GLfloat a); +_es_Color4f(GLfloat r, GLfloat g, GLfloat b, GLfloat a); void GLAPIENTRY -_vbo_Normal3f(GLfloat x, GLfloat y, GLfloat z); +_es_Normal3f(GLfloat x, GLfloat y, GLfloat z); void GLAPIENTRY -_vbo_MultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); +_es_MultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); void GLAPIENTRY -_vbo_Materialfv(GLenum face, GLenum pname, const GLfloat *params); +_es_Materialfv(GLenum face, GLenum pname, const GLfloat *params); void GLAPIENTRY -_vbo_Materialf(GLenum face, GLenum pname, GLfloat param); +_es_Materialf(GLenum face, GLenum pname, GLfloat param); void GLAPIENTRY -_vbo_VertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +_es_VertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); void GLAPIENTRY -_vbo_VertexAttrib1f(GLuint indx, GLfloat x); +_es_VertexAttrib1f(GLuint indx, GLfloat x); void GLAPIENTRY -_vbo_VertexAttrib1fv(GLuint indx, const GLfloat* values); +_es_VertexAttrib1fv(GLuint indx, const GLfloat* values); void GLAPIENTRY -_vbo_VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y); +_es_VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y); void GLAPIENTRY -_vbo_VertexAttrib2fv(GLuint indx, const GLfloat* values); +_es_VertexAttrib2fv(GLuint indx, const GLfloat* values); void GLAPIENTRY -_vbo_VertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z); +_es_VertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z); void GLAPIENTRY -_vbo_VertexAttrib3fv(GLuint indx, const GLfloat* values); +_es_VertexAttrib3fv(GLuint indx, const GLfloat* values); void GLAPIENTRY -_vbo_VertexAttrib4fv(GLuint indx, const GLfloat* values); +_es_VertexAttrib4fv(GLuint indx, const GLfloat* values); #endif diff --git a/src/mesa/vbo/vbo_exec_api.c b/src/mesa/vbo/vbo_exec_api.c index 9b2d59f9e4c..fb981ccc3bc 100644 --- a/src/mesa/vbo/vbo_exec_api.c +++ b/src/mesa/vbo/vbo_exec_api.c @@ -369,8 +369,6 @@ static void vbo_exec_fixup_vertex( struct gl_context *ctx, } -#if FEATURE_beginend - /* */ #define ATTR( A, N, V0, V1, V2, V3 ) \ @@ -411,7 +409,7 @@ do { \ #include "vbo_attrib_tmp.h" - +#if FEATURE_beginend #if FEATURE_evaluators @@ -706,30 +704,6 @@ static void vbo_exec_vtxfmt_init( struct vbo_exec_context *exec ) #else /* FEATURE_beginend */ -#define ATTR( A, N, V0, V1, V2, V3 ) \ -do { \ - struct vbo_exec_context *exec = &vbo_context(ctx)->exec; \ - \ - /* FLUSH_UPDATE_CURRENT needs to be set manually */ \ - exec->ctx->Driver.NeedFlush |= FLUSH_UPDATE_CURRENT; \ - \ - if (exec->vtx.active_sz[A] != N) \ - vbo_exec_fixup_vertex(ctx, A, N); \ - \ - { \ - GLfloat *dest = exec->vtx.attrptr[A]; \ - if (N>0) dest[0] = V0; \ - if (N>1) dest[1] = V1; \ - if (N>2) dest[2] = V2; \ - if (N>3) dest[3] = V3; \ - } \ -} while (0) - -#define ERROR() _mesa_error( ctx, GL_INVALID_ENUM, __FUNCTION__ ) -#define TAG(x) vbo_##x - -#include "vbo_attrib_tmp.h" - static void vbo_exec_vtxfmt_init( struct vbo_exec_context *exec ) { /* silence warnings */ @@ -998,35 +972,35 @@ static void reset_attrfv( struct vbo_exec_context *exec ) void GLAPIENTRY -_vbo_Color4f(GLfloat r, GLfloat g, GLfloat b, GLfloat a) +_es_Color4f(GLfloat r, GLfloat g, GLfloat b, GLfloat a) { vbo_Color4f(r, g, b, a); } void GLAPIENTRY -_vbo_Normal3f(GLfloat x, GLfloat y, GLfloat z) +_es_Normal3f(GLfloat x, GLfloat y, GLfloat z) { vbo_Normal3f(x, y, z); } void GLAPIENTRY -_vbo_MultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) +_es_MultiTexCoord4f(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q) { vbo_MultiTexCoord4f(target, s, t, r, q); } void GLAPIENTRY -_vbo_Materialfv(GLenum face, GLenum pname, const GLfloat *params) +_es_Materialfv(GLenum face, GLenum pname, const GLfloat *params) { vbo_Materialfv(face, pname, params); } void GLAPIENTRY -_vbo_Materialf(GLenum face, GLenum pname, GLfloat param) +_es_Materialf(GLenum face, GLenum pname, GLfloat param) { GLfloat p[4]; p[0] = param; @@ -1035,57 +1009,71 @@ _vbo_Materialf(GLenum face, GLenum pname, GLfloat param) } +/** + * A special version of glVertexAttrib4f that does not treat index 0 as + * VBO_ATTRIB_POS. + */ +static void +VertexAttrib4f_nopos(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +{ + GET_CURRENT_CONTEXT(ctx); + if (index < MAX_VERTEX_GENERIC_ATTRIBS) + ATTR(VBO_ATTRIB_GENERIC0 + index, 4, x, y, z, w); + else + ERROR(); +} + void GLAPIENTRY -_vbo_VertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) +_es_VertexAttrib4f(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w) { - vbo_VertexAttrib4fARB(index, x, y, z, w); + VertexAttrib4f_nopos(index, x, y, z, w); } void GLAPIENTRY -_vbo_VertexAttrib1f(GLuint indx, GLfloat x) +_es_VertexAttrib1f(GLuint indx, GLfloat x) { - vbo_VertexAttrib1fARB(indx, x); + VertexAttrib4f_nopos(indx, x, 0.0f, 0.0f, 1.0f); } void GLAPIENTRY -_vbo_VertexAttrib1fv(GLuint indx, const GLfloat* values) +_es_VertexAttrib1fv(GLuint indx, const GLfloat* values) { - vbo_VertexAttrib1fvARB(indx, values); + VertexAttrib4f_nopos(indx, values[0], 0.0f, 0.0f, 1.0f); } void GLAPIENTRY -_vbo_VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y) +_es_VertexAttrib2f(GLuint indx, GLfloat x, GLfloat y) { - vbo_VertexAttrib2fARB(indx, x, y); + VertexAttrib4f_nopos(indx, x, y, 0.0f, 1.0f); } void GLAPIENTRY -_vbo_VertexAttrib2fv(GLuint indx, const GLfloat* values) +_es_VertexAttrib2fv(GLuint indx, const GLfloat* values) { - vbo_VertexAttrib2fvARB(indx, values); + VertexAttrib4f_nopos(indx, values[0], values[1], 0.0f, 1.0f); } void GLAPIENTRY -_vbo_VertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z) +_es_VertexAttrib3f(GLuint indx, GLfloat x, GLfloat y, GLfloat z) { - vbo_VertexAttrib3fARB(indx, x, y, z); + VertexAttrib4f_nopos(indx, x, y, z, 1.0f); } void GLAPIENTRY -_vbo_VertexAttrib3fv(GLuint indx, const GLfloat* values) +_es_VertexAttrib3fv(GLuint indx, const GLfloat* values) { - vbo_VertexAttrib3fvARB(indx, values); + VertexAttrib4f_nopos(indx, values[0], values[1], values[2], 1.0f); } void GLAPIENTRY -_vbo_VertexAttrib4fv(GLuint indx, const GLfloat* values) +_es_VertexAttrib4fv(GLuint indx, const GLfloat* values) { - vbo_VertexAttrib4fvARB(indx, values); + VertexAttrib4f_nopos(indx, values[0], values[1], values[2], values[3]); } diff --git a/src/mesa/vbo/vbo_save.h b/src/mesa/vbo/vbo_save.h index f5a407ced14..23cbea2afc1 100644 --- a/src/mesa/vbo/vbo_save.h +++ b/src/mesa/vbo/vbo_save.h @@ -96,7 +96,9 @@ struct vbo_save_vertex_list { */ #define VBO_SAVE_BUFFER_SIZE (8*1024) /* dwords */ #define VBO_SAVE_PRIM_SIZE 128 -#define VBO_SAVE_PRIM_WEAK 0x40 +#define VBO_SAVE_PRIM_MODE_MASK 0x3f +#define VBO_SAVE_PRIM_WEAK 0x40 +#define VBO_SAVE_PRIM_NO_CURRENT_UPDATE 0x80 #define VBO_SAVE_FALLBACK 0x10000000 diff --git a/src/mesa/vbo/vbo_save_api.c b/src/mesa/vbo/vbo_save_api.c index 817d478e2ac..bf5ceda78f8 100644 --- a/src/mesa/vbo/vbo_save_api.c +++ b/src/mesa/vbo/vbo_save_api.c @@ -294,26 +294,30 @@ static void _save_compile_vertex_list( struct gl_context *ctx ) node->vertex_store->refcount++; node->prim_store->refcount++; - - node->current_size = node->vertex_size - node->attrsz[0]; - node->current_data = NULL; - - if (node->current_size) { - /* If the malloc fails, we just pull the data out of the VBO - * later instead. - */ - node->current_data = MALLOC( node->current_size * sizeof(GLfloat) ); - if (node->current_data) { - const char *buffer = (const char *)save->vertex_store->buffer; - unsigned attr_offset = node->attrsz[0] * sizeof(GLfloat); - unsigned vertex_offset = 0; - - if (node->count) - vertex_offset = (node->count-1) * node->vertex_size * sizeof(GLfloat); - - memcpy( node->current_data, - buffer + node->buffer_offset + vertex_offset + attr_offset, - node->current_size * sizeof(GLfloat) ); + if (node->prim[0].no_current_update) { + node->current_size = 0; + node->current_data = NULL; + } else { + node->current_size = node->vertex_size - node->attrsz[0]; + node->current_data = NULL; + + if (node->current_size) { + /* If the malloc fails, we just pull the data out of the VBO + * later instead. + */ + node->current_data = MALLOC( node->current_size * sizeof(GLfloat) ); + if (node->current_data) { + const char *buffer = (const char *)save->vertex_store->buffer; + unsigned attr_offset = node->attrsz[0] * sizeof(GLfloat); + unsigned vertex_offset = 0; + + if (node->count) + vertex_offset = (node->count-1) * node->vertex_size * sizeof(GLfloat); + + memcpy( node->current_data, + buffer + node->buffer_offset + vertex_offset + attr_offset, + node->current_size * sizeof(GLfloat) ); + } } } @@ -397,6 +401,7 @@ static void _save_wrap_buffers( struct gl_context *ctx ) GLint i = save->prim_count - 1; GLenum mode; GLboolean weak; + GLboolean no_current_update; assert(i < (GLint) save->prim_max); assert(i >= 0); @@ -407,6 +412,7 @@ static void _save_wrap_buffers( struct gl_context *ctx ) save->prim[i].start); mode = save->prim[i].mode; weak = save->prim[i].weak; + no_current_update = save->prim[i].no_current_update; /* store the copied vertices, and allocate a new list. */ @@ -416,6 +422,7 @@ static void _save_wrap_buffers( struct gl_context *ctx ) */ save->prim[0].mode = mode; save->prim[0].weak = weak; + save->prim[0].no_current_update = no_current_update; save->prim[0].begin = 0; save->prim[0].end = 0; save->prim[0].pad = 0; @@ -770,10 +777,11 @@ GLboolean vbo_save_NotifyBegin( struct gl_context *ctx, GLenum mode ) GLuint i = save->prim_count++; assert(i < save->prim_max); - save->prim[i].mode = mode & ~VBO_SAVE_PRIM_WEAK; + save->prim[i].mode = mode & VBO_SAVE_PRIM_MODE_MASK; save->prim[i].begin = 1; save->prim[i].end = 0; save->prim[i].weak = (mode & VBO_SAVE_PRIM_WEAK) ? 1 : 0; + save->prim[i].no_current_update = (mode & VBO_SAVE_PRIM_NO_CURRENT_UPDATE) ? 1 : 0; save->prim[i].pad = 0; save->prim[i].start = save->vert_count; save->prim[i].count = 0; @@ -934,7 +942,7 @@ static void GLAPIENTRY _save_OBE_DrawArrays(GLenum mode, GLint start, GLsizei co _ae_map_vbos( ctx ); - vbo_save_NotifyBegin( ctx, mode | VBO_SAVE_PRIM_WEAK ); + vbo_save_NotifyBegin( ctx, mode | VBO_SAVE_PRIM_WEAK | VBO_SAVE_PRIM_NO_CURRENT_UPDATE); for (i = 0; i < count; i++) CALL_ArrayElement(GET_DISPATCH(), (start + i)); @@ -960,7 +968,7 @@ static void GLAPIENTRY _save_OBE_DrawElements(GLenum mode, GLsizei count, GLenum if (_mesa_is_bufferobj(ctx->Array.ElementArrayBufferObj)) indices = ADD_POINTERS(ctx->Array.ElementArrayBufferObj->Pointer, indices); - vbo_save_NotifyBegin( ctx, mode | VBO_SAVE_PRIM_WEAK ); + vbo_save_NotifyBegin( ctx, mode | VBO_SAVE_PRIM_WEAK | VBO_SAVE_PRIM_NO_CURRENT_UPDATE ); switch (type) { case GL_UNSIGNED_BYTE: |