summaryrefslogtreecommitdiffstats
path: root/src/mesa
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/SConscript5
-rw-r--r--src/mesa/drivers/common/meta.c33
-rw-r--r--src/mesa/drivers/dri/Makefile.template5
-rw-r--r--src/mesa/drivers/dri/common/spantmp2.h122
-rw-r--r--src/mesa/drivers/dri/i915/i830_vtbl.c5
-rw-r--r--src/mesa/drivers/dri/i915/i915_context.c1
-rw-r--r--src/mesa/drivers/dri/i915/i915_fragprog.c16
-rw-r--r--src/mesa/drivers/dri/i915/i915_vtbl.c5
-rw-r--r--src/mesa/drivers/dri/i965/Makefile1
-rw-r--r--src/mesa/drivers/dri/i965/brw_cc.c25
-rw-r--r--src/mesa/drivers/dri/i965/brw_context.c3
-rw-r--r--src/mesa/drivers/dri/i965/brw_context.h2
-rw-r--r--src/mesa/drivers/dri/i965/brw_curbe.c22
-rw-r--r--src/mesa/drivers/dri/i965/brw_defines.h18
-rw-r--r--src/mesa/drivers/dri/i965/brw_disasm.c3
-rw-r--r--src/mesa/drivers/dri/i965/brw_draw.c5
-rw-r--r--src/mesa/drivers/dri/i965/brw_eu.c35
-rw-r--r--src/mesa/drivers/dri/i965/brw_eu.h6
-rw-r--r--src/mesa/drivers/dri/i965/brw_eu_emit.c314
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs.cpp460
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs.h67
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_channel_expressions.cpp33
-rw-r--r--src/mesa/drivers/dri/i965/brw_gs.c17
-rw-r--r--src/mesa/drivers/dri/i965/brw_misc_state.c50
-rw-r--r--src/mesa/drivers/dri/i965/brw_program.c1
-rw-r--r--src/mesa/drivers/dri/i965/brw_state.h3
-rw-r--r--src/mesa/drivers/dri/i965/brw_state_batch.c4
-rw-r--r--src/mesa/drivers/dri/i965/brw_state_dump.c52
-rw-r--r--src/mesa/drivers/dri/i965/brw_state_upload.c2
-rw-r--r--src/mesa/drivers/dri/i965/brw_structs.h31
-rw-r--r--src/mesa/drivers/dri/i965/brw_vs.c7
-rw-r--r--src/mesa/drivers/dri/i965/brw_vs.h1
-rw-r--r--src/mesa/drivers/dri/i965/brw_vs_emit.c369
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm.c132
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm.h33
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_emit.c172
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_fp.c19
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_glsl.c1035
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_iz.c32
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_pass0.c2
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_pass1.c4
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_pass2.c45
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_sampler_state.c41
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_state.c2
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_surface_state.c176
-rw-r--r--src/mesa/drivers/dri/i965/gen6_cc.c92
-rw-r--r--src/mesa/drivers/dri/i965/gen6_clip_state.c4
-rw-r--r--src/mesa/drivers/dri/i965/gen6_sf_state.c89
-rw-r--r--src/mesa/drivers/dri/i965/gen6_urb.c2
-rw-r--r--src/mesa/drivers/dri/i965/gen6_vs_state.c25
-rw-r--r--src/mesa/drivers/dri/i965/gen6_wm_state.c31
-rw-r--r--src/mesa/drivers/dri/intel/intel_batchbuffer.c57
-rw-r--r--src/mesa/drivers/dri/intel/intel_batchbuffer.h21
-rw-r--r--src/mesa/drivers/dri/intel/intel_blit.c110
-rw-r--r--src/mesa/drivers/dri/intel/intel_blit.h2
-rw-r--r--src/mesa/drivers/dri/intel/intel_context.c11
-rw-r--r--src/mesa/drivers/dri/intel/intel_context.h4
-rw-r--r--src/mesa/drivers/dri/intel/intel_fbo.c159
-rw-r--r--src/mesa/drivers/dri/intel/intel_screen.c40
-rw-r--r--src/mesa/drivers/dri/intel/intel_span.c82
-rw-r--r--src/mesa/drivers/dri/intel/intel_span.h4
-rw-r--r--src/mesa/drivers/dri/intel/intel_tex.h1
-rw-r--r--src/mesa/drivers/dri/intel/intel_tex_copy.c73
-rw-r--r--src/mesa/drivers/dri/intel/intel_tex_format.c35
-rw-r--r--src/mesa/drivers/dri/intel/intel_tex_image.c19
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_class.h4961
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_context.c2
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_texture.c5
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_util.h6
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_vbo_t.c1
-rw-r--r--src/mesa/drivers/dri/nouveau/nv01_2d.xml.h1343
-rw-r--r--src/mesa/drivers/dri/nouveau/nv04_3d.xml.h738
-rw-r--r--src/mesa/drivers/dri/nouveau/nv04_context.c2
-rw-r--r--src/mesa/drivers/dri/nouveau/nv04_context.h1
-rw-r--r--src/mesa/drivers/dri/nouveau/nv04_render.c2
-rw-r--r--src/mesa/drivers/dri/nouveau/nv04_state_fb.c8
-rw-r--r--src/mesa/drivers/dri/nouveau/nv04_state_frag.c7
-rw-r--r--src/mesa/drivers/dri/nouveau/nv04_state_raster.c7
-rw-r--r--src/mesa/drivers/dri/nouveau/nv04_state_tex.c3
-rw-r--r--src/mesa/drivers/dri/nouveau/nv04_surface.c16
-rw-r--r--src/mesa/drivers/dri/nouveau/nv10_3d.xml.h1619
-rw-r--r--src/mesa/drivers/dri/nouveau/nv10_context.c127
-rw-r--r--src/mesa/drivers/dri/nouveau/nv10_render.c42
-rw-r--r--src/mesa/drivers/dri/nouveau/nv10_state_fb.c45
-rw-r--r--src/mesa/drivers/dri/nouveau/nv10_state_frag.c36
-rw-r--r--src/mesa/drivers/dri/nouveau/nv10_state_polygon.c47
-rw-r--r--src/mesa/drivers/dri/nouveau/nv10_state_raster.c53
-rw-r--r--src/mesa/drivers/dri/nouveau/nv10_state_tex.c64
-rw-r--r--src/mesa/drivers/dri/nouveau/nv10_state_tnl.c90
-rw-r--r--src/mesa/drivers/dri/nouveau/nv20_3d.xml.h2076
-rw-r--r--src/mesa/drivers/dri/nouveau/nv20_context.c231
-rw-r--r--src/mesa/drivers/dri/nouveau/nv20_render.c46
-rw-r--r--src/mesa/drivers/dri/nouveau/nv20_state_fb.c30
-rw-r--r--src/mesa/drivers/dri/nouveau/nv20_state_frag.c16
-rw-r--r--src/mesa/drivers/dri/nouveau/nv20_state_polygon.c4
-rw-r--r--src/mesa/drivers/dri/nouveau/nv20_state_raster.c7
-rw-r--r--src/mesa/drivers/dri/nouveau/nv20_state_tex.c81
-rw-r--r--src/mesa/drivers/dri/nouveau/nv20_state_tnl.c102
-rw-r--r--src/mesa/drivers/dri/nouveau/nv_m2mf.xml.h155
-rw-r--r--src/mesa/drivers/dri/nouveau/nv_object.xml.h268
-rw-r--r--src/mesa/drivers/dri/r200/r200_maos_arrays.c1
-rw-r--r--src/mesa/drivers/dri/r200/r200_texstate.c22
-rw-r--r--src/mesa/drivers/dri/r300/compiler/r300_fragprog_emit.c3
-rw-r--r--src/mesa/drivers/dri/r300/compiler/r300_fragprog_swizzle.c6
-rw-r--r--src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c38
-rw-r--r--src/mesa/drivers/dri/r300/compiler/r3xx_vertprog.c25
-rw-r--r--src/mesa/drivers/dri/r300/compiler/r500_fragprog.c1
-rw-r--r--src/mesa/drivers/dri/r300/compiler/r500_fragprog_emit.c8
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_code.h2
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_compiler.c103
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_compiler.h23
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.c207
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_compiler_util.h31
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c381
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h18
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_dataflow_swizzles.c1
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_opcodes.c12
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_opcodes.h3
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_optimize.c73
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_pair_regalloc.c31
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_pair_schedule.c364
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_pair_translate.c5
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_program.c115
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_program.h53
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_program_alu.c165
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_program_constants.h5
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_program_pair.c50
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_program_pair.h10
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_program_print.c1
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c2
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_remove_constants.c8
-rw-r--r--src/mesa/drivers/dri/r300/compiler/radeon_rename_regs.c103
-rw-r--r--src/mesa/drivers/dri/r300/r300_texstate.c21
-rw-r--r--src/mesa/drivers/dri/r600/evergreen_chip.c6
-rw-r--r--src/mesa/drivers/dri/r600/evergreen_state.c8
-rw-r--r--src/mesa/drivers/dri/r600/evergreen_tex.c22
-rw-r--r--src/mesa/drivers/dri/r600/r600_context.c11
-rw-r--r--src/mesa/drivers/dri/r600/r600_texstate.c14
-rw-r--r--src/mesa/drivers/dri/r600/r700_assembler.c66
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_chipset.h6
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_common_context.c17
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_mipmap_tree.h2
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_screen.c24
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_texstate.c20
-rw-r--r--src/mesa/drivers/dri/sis/server/sis_dri.h9
-rw-r--r--src/mesa/drivers/dri/swrast/swrast.c12
-rw-r--r--src/mesa/drivers/dri/tdfx/tdfx_context.h4
-rw-r--r--src/mesa/drivers/dri/unichrome/server/via_dri.h2
-rw-r--r--src/mesa/drivers/windows/gdi/InitCritSections.cpp5
-rw-r--r--src/mesa/drivers/x11/glxheader.h8
-rw-r--r--src/mesa/drivers/x11/xm_api.c176
-rw-r--r--src/mesa/drivers/x11/xm_buffer.c19
-rw-r--r--src/mesa/drivers/x11/xm_dd.c55
-rw-r--r--src/mesa/drivers/x11/xm_glide.c8
-rw-r--r--src/mesa/drivers/x11/xm_image.c94
-rw-r--r--src/mesa/drivers/x11/xm_line.c4
-rw-r--r--src/mesa/drivers/x11/xm_span.c23
-rw-r--r--src/mesa/drivers/x11/xmesa.h17
-rw-r--r--src/mesa/drivers/x11/xmesaP.h18
-rw-r--r--src/mesa/main/APIspec.xml52
-rw-r--r--src/mesa/main/api_exec.c9
-rw-r--r--src/mesa/main/clear.c2
-rw-r--r--src/mesa/main/compiler.h4
-rw-r--r--src/mesa/main/config.h34
-rw-r--r--src/mesa/main/context.c51
-rw-r--r--src/mesa/main/core.h2
-rw-r--r--src/mesa/main/dlist.c8
-rw-r--r--src/mesa/main/enums.c7345
-rw-r--r--src/mesa/main/extensions.c10
-rw-r--r--src/mesa/main/fbobject.c14
-rw-r--r--src/mesa/main/formats.c34
-rw-r--r--src/mesa/main/formats.h4
-rw-r--r--src/mesa/main/get.c46
-rw-r--r--src/mesa/main/glapidispatch.h1850
-rw-r--r--src/mesa/main/image.c2
-rw-r--r--src/mesa/main/imports.c3
-rw-r--r--src/mesa/main/imports.h6
-rw-r--r--src/mesa/main/mipmap.c4
-rw-r--r--src/mesa/main/mtypes.h24
-rw-r--r--src/mesa/main/nvprogram.c8
-rw-r--r--src/mesa/main/nvprogram.h6
-rw-r--r--src/mesa/main/pack.c169
-rw-r--r--src/mesa/main/pack.h14
-rw-r--r--src/mesa/main/points.h4
-rw-r--r--src/mesa/main/polygon.h3
-rw-r--r--src/mesa/main/queryobj.c39
-rw-r--r--src/mesa/main/rastpos.h5
-rw-r--r--src/mesa/main/readpix.h3
-rw-r--r--src/mesa/main/remap_helper.h3980
-rw-r--r--src/mesa/main/renderbuffer.h2
-rw-r--r--src/mesa/main/scissor.h3
-rw-r--r--src/mesa/main/shaderapi.c6
-rw-r--r--src/mesa/main/shaderapi.h4
-rw-r--r--src/mesa/main/shaderobj.c9
-rw-r--r--src/mesa/main/shaderobj.h4
-rw-r--r--src/mesa/main/shared.h2
-rw-r--r--src/mesa/main/stencil.h3
-rw-r--r--src/mesa/main/syncobj.h6
-rw-r--r--src/mesa/main/texcompress.h5
-rw-r--r--src/mesa/main/texcompress_s3tc.h6
-rw-r--r--src/mesa/main/texenvprogram.h2
-rw-r--r--src/mesa/main/texfetch.c12
-rw-r--r--src/mesa/main/texformat.h2
-rw-r--r--src/mesa/main/texgetimage.c27
-rw-r--r--src/mesa/main/texgetimage.h6
-rw-r--r--src/mesa/main/teximage.c2094
-rw-r--r--src/mesa/main/teximage.h7
-rw-r--r--src/mesa/main/texobj.c148
-rw-r--r--src/mesa/main/texobj.h6
-rw-r--r--src/mesa/main/texrender.h4
-rw-r--r--src/mesa/main/texstore.c15
-rw-r--r--src/mesa/main/transformfeedback.h7
-rw-r--r--src/mesa/main/varray.c7
-rw-r--r--src/mesa/main/varray.h6
-rw-r--r--src/mesa/main/viewport.h3
-rw-r--r--src/mesa/main/vtxfmt.c4
-rw-r--r--src/mesa/math/m_debug_clip.c31
-rw-r--r--src/mesa/program/arbprogparse.h6
-rw-r--r--src/mesa/program/ir_to_mesa.cpp491
-rw-r--r--src/mesa/program/ir_to_mesa.h7
-rw-r--r--src/mesa/program/nvfragparse.h5
-rw-r--r--src/mesa/program/nvvertparse.h5
-rw-r--r--src/mesa/program/prog_cache.h3
-rw-r--r--src/mesa/program/prog_execute.c12
-rw-r--r--src/mesa/program/prog_instruction.h2
-rw-r--r--src/mesa/program/prog_optimize.h3
-rw-r--r--src/mesa/program/prog_print.c20
-rw-r--r--src/mesa/program/prog_print.h3
-rw-r--r--src/mesa/program/prog_statevars.c30
-rw-r--r--src/mesa/program/prog_statevars.h5
-rw-r--r--src/mesa/program/program.c97
-rw-r--r--src/mesa/program/program.h6
-rw-r--r--src/mesa/program/symbol_table.c85
-rw-r--r--src/mesa/program/symbol_table.h4
-rw-r--r--src/mesa/state_tracker/st_atom_constbuf.c5
-rw-r--r--src/mesa/state_tracker/st_atom_framebuffer.c18
-rw-r--r--src/mesa/state_tracker/st_atom_pixeltransfer.c4
-rw-r--r--src/mesa/state_tracker/st_atom_sampler.c12
-rw-r--r--src/mesa/state_tracker/st_atom_shader.c145
-rw-r--r--src/mesa/state_tracker/st_cb_accum.c24
-rw-r--r--src/mesa/state_tracker/st_cb_accum.h6
-rw-r--r--src/mesa/state_tracker/st_cb_bitmap.c146
-rw-r--r--src/mesa/state_tracker/st_cb_bitmap.h8
-rw-r--r--src/mesa/state_tracker/st_cb_blit.c31
-rw-r--r--src/mesa/state_tracker/st_cb_bufferobjects.c36
-rw-r--r--src/mesa/state_tracker/st_cb_drawpixels.c296
-rw-r--r--src/mesa/state_tracker/st_cb_drawpixels.h10
-rw-r--r--src/mesa/state_tracker/st_cb_eglimage.c8
-rw-r--r--src/mesa/state_tracker/st_cb_fbo.c32
-rw-r--r--src/mesa/state_tracker/st_cb_program.c112
-rw-r--r--src/mesa/state_tracker/st_cb_program.h5
-rw-r--r--src/mesa/state_tracker/st_cb_readpixels.c17
-rw-r--r--src/mesa/state_tracker/st_cb_texture.c100
-rw-r--r--src/mesa/state_tracker/st_context.c11
-rw-r--r--src/mesa/state_tracker/st_context.h6
-rw-r--r--src/mesa/state_tracker/st_debug.c4
-rw-r--r--src/mesa/state_tracker/st_draw.c12
-rw-r--r--src/mesa/state_tracker/st_draw_feedback.c8
-rw-r--r--src/mesa/state_tracker/st_extensions.c53
-rw-r--r--src/mesa/state_tracker/st_gen_mipmap.c47
-rw-r--r--src/mesa/state_tracker/st_manager.c60
-rw-r--r--src/mesa/state_tracker/st_mesa_to_tgsi.c43
-rw-r--r--src/mesa/state_tracker/st_program.c819
-rw-r--r--src/mesa/state_tracker/st_program.h139
-rw-r--r--src/mesa/state_tracker/st_texture.c54
-rw-r--r--src/mesa/swrast/s_blend.c14
-rw-r--r--src/mesa/swrast/s_drawpix.c36
-rw-r--r--src/mesa/swrast/s_readpix.c66
-rw-r--r--src/mesa/swrast/s_texcombine.c45
-rw-r--r--src/mesa/swrast/s_texfilter.c1
-rw-r--r--src/mesa/tnl/t_vb_program.c32
-rw-r--r--src/mesa/vbo/vbo.h29
-rw-r--r--src/mesa/vbo/vbo_exec_api.c84
-rw-r--r--src/mesa/vbo/vbo_save.h4
-rw-r--r--src/mesa/vbo/vbo_save_api.c54
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(&regs[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, &region);
+ xfer = pipe->get_transfer(pipe, src, 0, PIPE_TRANSFER_READ, &region);
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: